PageSourceSearch

https://akoroko.com/assets/index-BaWQrr6N.js

js akoroko.com collected 2026-09-24 23:01:35 UTC 1,597,218 bytes, 4,138 lines download raw bytes

1function rk(e,n){for(var i=0;i<n.length;i++){const r=n[i];if(typeof r!="string"&&!Array.isArray(r)){for(const l in r)if(l!=="default"&&!(l in e)){const d=Object.getOwnPropertyDescriptor(r,l);d&&Object.defineProperty(e,l,d.get?d:{enumerable:!0,get:()=>r[l]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const d of l)if(d.type==="childList")for(const u of d.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&r(u)}).observe(document,{childList:!0,subtree:!0});function i(l){const d={};return l.integrity&&(d.integrity=l.integrity),l.referrerPolicy&&(d.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?d.credentials="include":l.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function r(l){if(l.ep)return;l.ep=!0;const d=i(l);fetch(l.href,d)}})();function fr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ah={exports:{}},Ao={};/**
2 * @license React
3 * react-jsx-runtime.production.js
4 *
5 * Copyright (c) Meta Platforms, Inc. and affiliates.
6 *
7 * This source code is licensed under the MIT license found in the
8 * LICENSE file in the root directory of this source tree.
9 */var Nb;function sk(){if(Nb)return Ao;Nb=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function i(r,l,d){var u=null;if(d!==void 0&&(u=""+d),l.key!==void 0&&(u=""+l.key),"key"in l){d={};for(var h in l)h!=="key"&&(d[h]=l[h])}else d=l;return l=d.ref,{$$typeof:e,type:r,key:u,ref:l!==void 0?l:null,props:d}}return Ao.Fragment=n,Ao.jsx=i,Ao.jsxs=i,Ao}var Mb;function ok(){return Mb||(Mb=1,Ah.exports=sk()),Ah.exports}var o=ok(),mr=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},lk={setTimeout:(e,n)=>setTimeout(e,n),clearTimeout:e=>clearTimeout(e),setInterval:(e,n)=>setInterval(e,n),clearInterval:e=>clearInterval(e)},ck=class{#t=lk;#e=!1;setTimeoutProvider(e){this.#t=e}setTimeout(e,n){return this.#t.setTimeout(e,n)}clearTimeout(e){this.#t.clearTimeout(e)}setInterval(e,n){return this.#t.setInterval(e,n)}clearInterval(e){this.#t.clearInterval(e)}},cr=new ck;function dk(e){setTimeout(e,0)}var dr=typeof window>"u"||"Deno"in globalThis;function on(){}function uk(e,n){return typeof e=="function"?e(n):e}function cf(e){return typeof e=="number"&&e>=0&&e!==1/0}function Qv(e,n){return Math.max(e+(n||0)-Date.now(),0)}function Oi(e,n){return typeof e=="function"?e(n):e}function Jn(e,n){return typeof e=="function"?e(n):e}function Pb(e,n){const{type:i="all",exact:r,fetchStatus:l,predicate:d,queryKey:u,stale:h}=e;if(u){if(r){if(n.queryHash!==Xf(u,n.options))return!1}else if(!_o(n.queryKey,u))return!1}if(i!=="all"){const m=n.isActive();if(i==="active"&&!m||i==="inactive"&&m)return!1}return!(typeof h=="boolean"&&n.isStale()!==h||l&&l!==n.state.fetchStatus||d&&!d(n))}function Ob(e,n){const{exact:i,status:r,predicate:l,mutationKey:d}=e;if(d){if(!n.options.mutationKey)return!1;if(i){if(Di(n.options.mutationKey)!==Di(d))return!1}else if(!_o(n.options.mutationKey,d))return!1}return!(r&&n.state.status!==r||l&&!l(n))}function Xf(e,n){return(n?.queryKeyHashFn||Di)(e)}function Di(e){return JSON.stringify(e,(n,i)=>df(i)?Object.keys(i).sort().reduce((r,l)=>(r[l]=i[l],r),{}):i)}function _o(e,n){return e===n?!0:typeof e!=typeof n?!1:e&&n&&typeof e=="object"&&typeof n=="object"?Object.keys(n).every(i=>_o(e[i],n[i])):!1}var hk=Object.prototype.hasOwnProperty;function Zf(e,n,i=0){if(e===n)return e;if(i>500)return n;const r=Db(e)&&Db(n);if(!r&&!(df(e)&&df(n)))return n;const d=(r?e:Object.keys(e)).length,u=r?n:Object.keys(n),h=u.length,m=r?new Array(h):{};let p=0;for(let b=0;b<h;b++){const y=r?b:u[b],v=e[y],x=n[y];if(v===x){m[y]=v,(r?b<d:hk.call(e,y))&&p++;continue}if(v===null||x===null||typeof v!="object"||typeof x!="object"){m[y]=x;continue}const S=Zf(v,x,i+1);m[y]=S,S===v&&p++}return d===h&&p===d?e:m}function Bo(e,n){if(!n||Object.keys(e).length!==Object.keys(n).length)return!1;for(const i in e)if(e[i]!==n[i])return!1;return!0}function Db(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function df(e){if(!Rb(e))return!1;const n=e.constructor;if(n===void 0)return!0;const i=n.prototype;return!(!Rb(i)||!i.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function Rb(e){return Object.prototype.toString.call(e)==="[object Object]"}function fk(e){return new Promise(n=>{cr.setTimeout(n,e)})}function uf(e,n,i){return typeof i.structuralSharing=="function"?i.structuralSharing(e,n):i.structuralSharing!==!1?Zf(e,n):n}function mk(e,n,i=0){const r=[...e,n];return i&&r.length>i?r.slice(1):r}function pk(e,n,i=0){const r=[n,...e];return i&&r.length>i?r.slice(0,-1):r}var _n=Symbol();function Jv(e,n){return!e.queryFn&&n?.initialPromise?()=>n.initialPromise:!e.queryFn||e.queryFn===_n?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function em(e,n){return typeof e=="function"?e(...n):!!e}function gk(e,n,i){let r=!1,l;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(l??=n(),r||(r=!0,l.aborted?i():l.addEventListener("abort",i,{once:!0})),l)}),e}var yk=class extends mr{#t;#e;#n;constructor(){super(),this.#n=e=>{if(!dr&&window.addEventListener){const n=()=>e();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}}}onSubscribe(){this.#e||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(e){this.#n=e,this.#e?.(),this.#e=e(n=>{typeof n=="boolean"?this.setFocused(n):this.onFocus()})}setFocused(e){this.#t!==e&&(this.#t=e,this.onFocus())}onFocus(){const e=this.isFocused();
9this.listeners.forEach(n=>{n(e)})}isFocused(){return typeof this.#t=="boolean"?this.#t:globalThis.document?.visibilityState!=="hidden"}},tm=new yk;function hf(){let e,n;const i=new Promise((l,d)=>{e=l,n=d});i.status="pending",i.catch(()=>{});function r(l){Object.assign(i,l),delete i.resolve,delete i.reject}return i.resolve=l=>{r({status:"fulfilled",value:l}),e(l)},i.reject=l=>{r({status:"rejected",reason:l}),n(l)},i}var bk=dk;function xk(){let e=[],n=0,i=h=>{h()},r=h=>{h()},l=bk;const d=h=>{n?e.push(h):l(()=>{i(h)})},u=()=>{const h=e;e=[],h.length&&l(()=>{r(()=>{h.forEach(m=>{i(m)})})})};return{batch:h=>{let m;n++;try{m=h()}finally{n--,n||u()}return m},batchCalls:h=>(...m)=>{d(()=>{h(...m)})},schedule:d,setNotifyFunction:h=>{i=h},setBatchNotifyFunction:h=>{r=h},setScheduler:h=>{l=h}}}var jt=xk(),vk=class extends mr{#t=!0;#e;#n;constructor(){super(),this.#n=e=>{if(!dr&&window.addEventListener){const n=()=>e(!0),i=()=>e(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",i,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",i)}}}}onSubscribe(){this.#e||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(e){this.#n=e,this.#e?.(),this.#e=e(this.setOnline.bind(this))}setOnline(e){this.#t!==e&&(this.#t=e,this.listeners.forEach(i=>{i(e)}))}isOnline(){return this.#t}},Dc=new vk;function wk(e){return Math.min(1e3*2**e,3e4)}function Xv(e){return(e??"online")==="online"?Dc.isOnline():!0}var ff=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function Zv(e){let n=!1,i=0,r;const l=hf(),d=()=>l.status!=="pending",u=E=>{if(!d()){const O=new ff(E);v(O),e.onCancel?.(O)}},h=()=>{n=!0},m=()=>{n=!1},p=()=>tm.isFocused()&&(e.networkMode==="always"||Dc.isOnline())&&e.canRun(),b=()=>Xv(e.networkMode)&&e.canRun(),y=E=>{d()||(r?.(),l.resolve(E))},v=E=>{d()||(r?.(),l.reject(E))},x=()=>new Promise(E=>{r=O=>{(d()||p())&&E(O)},e.onPause?.()}).then(()=>{r=void 0,d()||e.onContinue?.()}),S=()=>{if(d())return;let E;const O=i===0?e.initialPromise:void 0;try{E=O??e.fn()}catch(C){E=Promise.reject(C)}Promise.resolve(E).then(y).catch(C=>{if(d())return;const _=e.retry??(dr?0:3),q=e.retryDelay??wk,Y=typeof q=="function"?q(i,C):q,G=_===!0||typeof _=="number"&&i<_||typeof _=="function"&&_(i,C);if(n||!G){v(C);return}i++,e.onFail?.(i,C),fk(Y).then(()=>p()?void 0:x()).then(()=>{n?v(C):S()})})};return{promise:l,status:()=>l.status,cancel:u,continue:()=>(r?.(),l),cancelRetry:h,continueRetry:m,canStart:b,start:()=>(b()?S():x().then(S),l)}}var ew=class{#t;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),cf(this.gcTime)&&(this.#t=cr.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(dr?1/0:300*1e3))}clearGcTimeout(){this.#t&&(cr.clearTimeout(this.#t),this.#t=void 0)}},Ak=class extends ew{#t;#e;#n;#i;#a;#r;#o;constructor(e){super(),this.#o=!1,this.#r=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#n=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=Bb(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#r,...e},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const n=Bb(this.options);n.data!==void 0&&(this.setState(_b(n.data,n.dataUpdatedAt)),this.#t=n)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#n.remove(this)}setData(e,n){const i=uf(this.state.data,e,this.options);return this.#s({data:i,type:"success",dataUpdatedAt:n?.updatedAt,manual:n?.manual}),i}setState(e,n){this.#s({type:"setState",state:e,setStateOptions:n})}cancel(e){const n=this.#a?.promise;return this.#a?.cancel(e),n?n.then(on).catch(on):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#t)}isActive(){return this.observers.some(e=>Jn(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===_n||this.state.dataUpdateCount+this.state.errorUpdate
9Count===0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>Oi(e.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e==="static"?!1:this.state.isInvalidated?!0:!Qv(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(n=>n.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(n=>n.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(n=>n!==e),this.observers.length||(this.#a&&(this.#o?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#n.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#s({type:"invalidate"})}async fetch(e,n){if(this.state.fetchStatus!=="idle"&&this.#a?.status()!=="rejected"){if(this.state.data!==void 0&&n?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){const h=this.observers.find(m=>m.options.queryFn);h&&this.setOptions(h.options)}const i=new AbortController,r=h=>{Object.defineProperty(h,"signal",{enumerable:!0,get:()=>(this.#o=!0,i.signal)})},l=()=>{const h=Jv(this.options,n),p=(()=>{const b={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(b),b})();return this.#o=!1,this.options.persister?this.options.persister(h,p,this):h(p)},u=(()=>{const h={fetchOptions:n,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:l};return r(h),h})();this.options.behavior?.onFetch(u,this),this.#e=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==u.fetchOptions?.meta)&&this.#s({type:"fetch",meta:u.fetchOptions?.meta}),this.#a=Zv({initialPromise:n?.initialPromise,fn:u.fetchFn,onCancel:h=>{h instanceof ff&&h.revert&&this.setState({...this.#e,fetchStatus:"idle"}),i.abort()},onFail:(h,m)=>{this.#s({type:"failed",failureCount:h,error:m})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:u.options.retry,retryDelay:u.options.retryDelay,networkMode:u.options.networkMode,canRun:()=>!0});try{const h=await this.#a.start();if(h===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(h),this.#n.config.onSuccess?.(h,this),this.#n.config.onSettled?.(h,this.state.error,this),h}catch(h){if(h instanceof ff){if(h.silent)return this.#a.promise;if(h.revert){if(this.state.data===void 0)throw h;return this.state.data}}throw this.#s({type:"error",error:h}),this.#n.config.onError?.(h,this),this.#n.config.onSettled?.(this.state.data,h,this),h}finally{this.scheduleGc()}}#s(e){const n=i=>{switch(e.type){case"failed":return{...i,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...i,fetchStatus:"paused"};case"continue":return{...i,fetchStatus:"fetching"};case"fetch":return{...i,...tw(i.data,this.options),fetchMeta:e.meta??null};case"success":const r={...i,..._b(e.data,e.dataUpdatedAt),dataUpdateCount:i.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#e=e.manual?r:void 0,r;case"error":const l=e.error;return{...i,error:l,errorUpdateCount:i.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:i.fetchFailureCount+1,fetchFailureReason:l,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...i,isInvalidated:!0};case"setState":return{...i,...e.state}}};this.state=n(this.state),jt.batch(()=>{this.observers.forEach(i=>{i.onQueryUpdate()}),this.#n.notify({query:this,type:"updated",action:e})})}};function tw(e,n){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Xv(n.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function _b(e,n){return{data:e,dataUpdatedAt:n??Date.now(),error:null,isInvalidated:!1,status:"success"}}function Bb(e){const n=typeof e.initialData=="function"?e.initialData():e.initialData,i=n!==void 0,r=i?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:n,dataUpdateCount:0,dataUpdatedAt:i?r??Date.now():0,error:null,errorUpdate
9Count:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:i?"success":"pending",fetchStatus:"idle"}}var Ko=class extends mr{constructor(e,n){super(),this.options=n,this.#t=e,this.#s=null,this.#o=hf(),this.bindMethods(),this.setOptions(n)}#t;#e=void 0;#n=void 0;#i=void 0;#a;#r;#o;#s;#m;#u;#h;#c;#d;#l;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#e.addObserver(this),Lb(this.#e,this.options)?this.#p():this.updateResult(),this.#x())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return mf(this.#e,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return mf(this.#e,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#v(),this.#w(),this.#e.removeObserver(this)}setOptions(e){const n=this.options,i=this.#e;if(this.options=this.#t.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof Jn(this.options.enabled,this.#e)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#A(),this.#e.setOptions(this.options),n._defaulted&&!Bo(this.options,n)&&this.#t.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#e,observer:this});const r=this.hasListeners();r&&zb(this.#e,i,this.options,n)&&this.#p(),this.updateResult(),r&&(this.#e!==i||Jn(this.options.enabled,this.#e)!==Jn(n.enabled,this.#e)||Oi(this.options.staleTime,this.#e)!==Oi(n.staleTime,this.#e))&&this.#g();const l=this.#y();r&&(this.#e!==i||Jn(this.options.enabled,this.#e)!==Jn(n.enabled,this.#e)||l!==this.#l)&&this.#b(l)}getOptimisticResult(e){const n=this.#t.getQueryCache().build(this.#t,e),i=this.createResult(n,e);return Sk(this,i)&&(this.#i=i,this.#r=this.options,this.#a=this.#e.state),i}getCurrentResult(){return this.#i}trackResult(e,n){return new Proxy(e,{get:(i,r)=>(this.trackProp(r),n?.(r),r==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#o.status==="pending"&&this.#o.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(i,r))})}trackProp(e){this.#f.add(e)}getCurrentQuery(){return this.#e}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const n=this.#t.defaultQueryOptions(e),i=this.#t.getQueryCache().build(this.#t,n);return i.fetch().then(()=>this.createResult(i,n))}fetch(e){return this.#p({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#i))}#p(e){this.#A();let n=this.#e.fetch(this.options,e);return e?.throwOnError||(n=n.catch(on)),n}#g(){this.#v();const e=Oi(this.options.staleTime,this.#e);if(dr||this.#i.isStale||!cf(e))return;const i=Qv(this.#i.dataUpdatedAt,e)+1;this.#c=cr.setTimeout(()=>{this.#i.isStale||this.updateResult()},i)}#y(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#e):this.options.refetchInterval)??!1}#b(e){this.#w(),this.#l=e,!(dr||Jn(this.options.enabled,this.#e)===!1||!cf(this.#l)||this.#l===0)&&(this.#d=cr.setInterval(()=>{(this.options.refetchIntervalInBackground||tm.isFocused())&&this.#p()},this.#l))}#x(){this.#g(),this.#b(this.#y())}#v(){this.#c&&(cr.clearTimeout(this.#c),this.#c=void 0)}#w(){this.#d&&(cr.clearInterval(this.#d),this.#d=void 0)}createResult(e,n){const i=this.#e,r=this.options,l=this.#i,d=this.#a,u=this.#r,m=e!==i?e.state:this.#n,{state:p}=e;let b={...p},y=!1,v;if(n._optimisticResults){const W=this.hasListeners(),N=!W&&Lb(e,n),L=W&&zb(e,i,n,r);(N||L)&&(b={...b,...tw(p.data,e.options)}),n._optimisticResults==="isRestoring"&&(b.fetchStatus="idle")}let{error:x,errorUpdatedAt:S,status:E}=b;v=b.data;let O=!1;if(n.placeholderData!==void 0&&v===void 0&&E==="pending"){let W;l?.isPlaceholderData&&n.placeholderData===u?.placeholderData?(W=l.data,O=!0):W=typeof n.placeholderData=="function"?n.placeholderData(this.#h?.state.data,this.#h):n.placeholderData,W!==void 0&&(E="success",v=uf(l?.data,W,n),y=!0)}if(n.select&&v!==void 0&&!O)if(l&&v===d?.data&&n.select===this.#m)v=this.#u;else try{this.#m=n.select,v=n.select(v),v=uf(l?.data,v,n),this.#u=v,this.#s=null}catch(W){this.#s=W}this.#s&&(x=this.#s,v=this.#u,S=Date.now(),E="error");const C=b.fetchStatus==="fetching",_=E==="pending",q=E==="error",Y=_&&C,G=v!==void 0,M={status:E,fetchStatus:b.fetchStatus,isPending:_,isSuccess:E==="success",isError:q,isInitialLoading:Y,isLoading:Y,data:v,dataUpdatedAt:b.dataUpdatedAt,error:x,errorUpdatedAt:S,failureCount:b.fetchFailureCount,failureReason:b.fetchFailureReason,errorUpdate
9Count:b.errorUpdateCount,isFetched:b.dataUpdateCount>0||b.errorUpdateCount>0,isFetchedAfterMount:b.dataUpdateCount>m.dataUpdateCount||b.errorUpdateCount>m.errorUpdateCount,isFetching:C,isRefetching:C&&!_,isLoadingError:q&&!G,isPaused:b.fetchStatus==="paused",isPlaceholderData:y,isRefetchError:q&&G,isStale:nm(e,n),refetch:this.refetch,promise:this.#o,isEnabled:Jn(n.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){const W=M.data!==void 0,N=M.status==="error"&&!W,L=$=>{N?$.reject(M.error):W&&$.resolve(M.data)},J=()=>{const $=this.#o=M.promise=hf();L($)},z=this.#o;switch(z.status){case"pending":e.queryHash===i.queryHash&&L(z);break;case"fulfilled":(N||M.data!==z.value)&&J();break;case"rejected":(!N||M.error!==z.reason)&&J();break}}return M}updateResult(){const e=this.#i,n=this.createResult(this.#e,this.options);if(this.#a=this.#e.state,this.#r=this.options,this.#a.data!==void 0&&(this.#h=this.#e),Bo(n,e))return;this.#i=n;const i=()=>{if(!e)return!0;const{notifyOnChangeProps:r}=this.options,l=typeof r=="function"?r():r;if(l==="all"||!l&&!this.#f.size)return!0;const d=new Set(l??this.#f);return this.options.throwOnError&&d.add("error"),Object.keys(this.#i).some(u=>{const h=u;return this.#i[h]!==e[h]&&d.has(h)})};this.#k({listeners:i()})}#A(){const e=this.#t.getQueryCache().build(this.#t,this.options);if(e===this.#e)return;const n=this.#e;this.#e=e,this.#n=e.state,this.hasListeners()&&(n?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#x()}#k(e){jt.batch(()=>{e.listeners&&this.listeners.forEach(n=>{n(this.#i)}),this.#t.getQueryCache().notify({query:this.#e,type:"observerResultsUpdated"})})}};function kk(e,n){return Jn(n.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&n.retryOnMount===!1)}function Lb(e,n){return kk(e,n)||e.state.data!==void 0&&mf(e,n,n.refetchOnMount)}function mf(e,n,i){if(Jn(n.enabled,e)!==!1&&Oi(n.staleTime,e)!=="static"){const r=typeof i=="function"?i(e):i;return r==="always"||r!==!1&&nm(e,n)}return!1}function zb(e,n,i,r){return(e!==n||Jn(r.enabled,e)===!1)&&(!i.suspense||e.state.status!=="error")&&nm(e,i)}function nm(e,n){return Jn(n.enabled,e)!==!1&&e.isStaleByTime(Oi(n.staleTime,e))}function Sk(e,n){return!Bo(e.getCurrentResult(),n)}function Rc(e){return{onFetch:(n,i)=>{const r=n.options,l=n.fetchOptions?.meta?.fetchMore?.direction,d=n.state.data?.pages||[],u=n.state.data?.pageParams||[];let h={pages:[],pageParams:[]},m=0;const p=async()=>{let b=!1;const y=S=>{gk(S,()=>n.signal,()=>b=!0)},v=Jv(n.options,n.fetchOptions),x=async(S,E,O)=>{if(b)return Promise.reject();if(E==null&&S.pages.length)return Promise.resolve(S);const _=(()=>{const P={client:n.client,queryKey:n.queryKey,pageParam:E,direction:O?"backward":"forward",meta:n.options.meta};return y(P),P})(),q=await v(_),{maxPages:Y}=n.options,G=O?pk:mk;return{pages:G(S.pages,q,Y),pageParams:G(S.pageParams,E,Y)}};if(l&&d.length){const S=l==="backward",E=S?nw:pf,O={pages:d,pageParams:u},C=E(r,O);h=await x(O,C,S)}else{const S=e??d.length;do{const E=m===0?u[0]??r.initialPageParam:pf(r,h);if(m>0&&E==null)break;h=await x(h,E),m++}while(m<S)}return h};n.options.persister?n.fetchFn=()=>n.options.persister?.(p,{client:n.client,queryKey:n.queryKey,meta:n.options.meta,signal:n.signal},i):n.fetchFn=p}}}function pf(e,{pages:n,pageParams:i}){const r=n.length-1;return n.length>0?e.getNextPageParam(n[r],n,i[r],i):void 0}function nw(e,{pages:n,pageParams:i}){return n.length>0?e.getPreviousPageParam?.(n[0],n,i[0],i):void 0}function Tk(e,n){return n?pf(e,n)!=null:!1}function Ck(e,n){return!n||!e.getPreviousPageParam?!1:nw(e,n)!=null}var aw=class extends Ko{constructor(e,n){super(e,n)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:Rc()})}getOptimisticResult(e){return e.behavior=Rc(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,n){const{state:i}=e,r=super.createResult(e,n),{isFetching:l,isRefetching:d,isError:u,isRefetchError:h}
9=r,m=i.fetchMeta?.fetchMore?.direction,p=u&&m==="forward",b=l&&m==="forward",y=u&&m==="backward",v=l&&m==="backward";return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:Tk(n,i.data),hasPreviousPage:Ck(n,i.data),isFetchNextPageError:p,isFetchingNextPage:b,isFetchPreviousPageError:y,isFetchingPreviousPage:v,isRefetchError:h&&!p&&!y,isRefetching:d&&!b&&!v}}},jk=class extends ew{#t;#e;#n;#i;constructor(e){super(),this.#t=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#e=[],this.state=e.state||iw(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#e.includes(e)||(this.#e.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#e=this.#e.filter(n=>n!==e),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#n.remove(this))}continue(){return this.#i?.continue()??this.execute(this.state.variables)}async execute(e){const n=()=>{this.#a({type:"continue"})},i={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#i=Zv({fn:()=>this.options.mutationFn?this.options.mutationFn(e,i):Promise.reject(new Error("No mutationFn found")),onFail:(d,u)=>{this.#a({type:"failed",failureCount:d,error:u})},onPause:()=>{this.#a({type:"pause"})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});const r=this.state.status==="pending",l=!this.#i.canStart();try{if(r)n();else{this.#a({type:"pending",variables:e,isPaused:l}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,i);const u=await this.options.onMutate?.(e,i);u!==this.state.context&&this.#a({type:"pending",context:u,variables:e,isPaused:l})}const d=await this.#i.start();return await this.#n.config.onSuccess?.(d,e,this.state.context,this,i),await this.options.onSuccess?.(d,e,this.state.context,i),await this.#n.config.onSettled?.(d,null,this.state.variables,this.state.context,this,i),await this.options.onSettled?.(d,null,e,this.state.context,i),this.#a({type:"success",data:d}),d}catch(d){try{await this.#n.config.onError?.(d,e,this.state.context,this,i)}catch(u){Promise.reject(u)}try{await this.options.onError?.(d,e,this.state.context,i)}catch(u){Promise.reject(u)}try{await this.#n.config.onSettled?.(void 0,d,this.state.variables,this.state.context,this,i)}catch(u){Promise.reject(u)}try{await this.options.onSettled?.(void 0,d,e,this.state.context,i)}catch(u){Promise.reject(u)}throw this.#a({type:"error",error:d}),d}finally{this.#n.runNext(this)}}#a(e){const n=i=>{switch(e.type){case"failed":return{...i,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...i,isPaused:!0};case"continue":return{...i,isPaused:!1};case"pending":return{...i,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...i,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...i,data:void 0,error:e.error,failureCount:i.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=n(this.state),jt.batch(()=>{this.#e.forEach(i=>{i.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:"updated",action:e})})}};function iw(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Fk=class extends mr{constructor(e={}){super(),this.config=e,this.#t=new Set,this.#e=new Map,this.#n=0}#t;#e;#n;build(e,n,i){const r=new jk({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(n),state:i});return this.add(r),r}add(e){this.#t.add(e);const n=mc(e);if(typeof n=="string"){const i=this.#e.get(n);i?i.push(e):this.#e.set(n,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#t.delete(e)){const n=mc(e);if(typeof n=="string"){const i=this.#e.get(n);if(i)if(i.length>1){const r=i.indexOf(e);r!==-1&&i.splice(r,1)}else i[0]===e&&this.#e.delete(n)}}this.notify({type:"removed",mutation:e})}canRun(e){const n=mc(e);if(typeof n=="string"){const r=this.#e.get(n)?.find(l=>l.state.status==="pending");return!r||r===e}else return!0}runNext(e){const n=mc(e);return typeof n=="string"?this.#e.get(n)?.find(r=>
9r!==e&&r.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){jt.batch(()=>{this.#t.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#t.clear(),this.#e.clear()})}getAll(){return Array.from(this.#t)}find(e){const n={exact:!0,...e};return this.getAll().find(i=>Ob(n,i))}findAll(e={}){return this.getAll().filter(n=>Ob(e,n))}notify(e){jt.batch(()=>{this.listeners.forEach(n=>{n(e)})})}resumePausedMutations(){const e=this.getAll().filter(n=>n.state.isPaused);return jt.batch(()=>Promise.all(e.map(n=>n.continue().catch(on))))}};function mc(e){return e.options.scope?.id}var Ek=class extends mr{#t;#e=void 0;#n;#i;constructor(n,i){super(),this.#t=n,this.setOptions(i),this.bindMethods(),this.#a()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(n){const i=this.options;this.options=this.#t.defaultMutationOptions(n),Bo(this.options,i)||this.#t.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#n,observer:this}),i?.mutationKey&&this.options.mutationKey&&Di(i.mutationKey)!==Di(this.options.mutationKey)?this.reset():this.#n?.state.status==="pending"&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(n){this.#a(),this.#r(n)}getCurrentResult(){return this.#e}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#a(),this.#r()}mutate(n,i){return this.#i=i,this.#n?.removeObserver(this),this.#n=this.#t.getMutationCache().build(this.#t,this.options),this.#n.addObserver(this),this.#n.execute(n)}#a(){const n=this.#n?.state??iw();this.#e={...n,isPending:n.status==="pending",isSuccess:n.status==="success",isError:n.status==="error",isIdle:n.status==="idle",mutate:this.mutate,reset:this.reset}}#r(n){jt.batch(()=>{if(this.#i&&this.hasListeners()){const i=this.#e.variables,r=this.#e.context,l={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};if(n?.type==="success"){try{this.#i.onSuccess?.(n.data,i,r,l)}catch(d){Promise.reject(d)}try{this.#i.onSettled?.(n.data,null,i,r,l)}catch(d){Promise.reject(d)}}else if(n?.type==="error"){try{this.#i.onError?.(n.error,i,r,l)}catch(d){Promise.reject(d)}try{this.#i.onSettled?.(void 0,n.error,i,r,l)}catch(d){Promise.reject(d)}}}this.listeners.forEach(i=>{i(this.#e)})})}};function Ub(e,n){const i=new Set(n);return e.filter(r=>!i.has(r))}function Ik(e,n,i){const r=e.slice(0);return r[n]=i,r}var Nk=class extends mr{#t;#e;#n;#i;#a;#r;#o;#s;#m;#u=[];constructor(e,n,i){super(),this.#t=e,this.#i=i,this.#n=[],this.#a=[],this.#e=[],this.setQueries(n)}onSubscribe(){this.listeners.size===1&&this.#a.forEach(e=>{e.subscribe(n=>{this.#l(e,n)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#a.forEach(e=>{e.destroy()})}setQueries(e,n){this.#n=e,this.#i=n,jt.batch(()=>{const i=this.#a,r=this.#d(this.#n);r.forEach(b=>b.observer.setOptions(b.defaultedQueryOptions));const l=r.map(b=>b.observer),d=l.map(b=>b.getCurrentResult()),u=i.length!==l.length,h=l.some((b,y)=>b!==i[y]),m=u||h,p=m?!0:d.some((b,y)=>{const v=this.#e[y];return!v||!Bo(b,v)});!m&&!p||(m&&(this.#u=r,this.#a=l),this.#e=d,this.hasListeners()&&(m&&(Ub(i,l).forEach(b=>{b.destroy()}),Ub(l,i).forEach(b=>{b.subscribe(y=>{this.#l(b,y)})})),this.#f()))})}getCurrentResult(){return this.#e}getQueries(){return this.#a.map(e=>e.getCurrentQuery())}getObservers(){return this.#a}getOptimisticResult(e,n){const i=this.#d(e),r=i.map(d=>d.observer.getOptimisticResult(d.defaultedQueryOptions)),l=i.map(d=>d.defaultedQueryOptions.queryHash);return[r,d=>this.#c(d??r,n,l),()=>this.#h(r,i)]}#h(e,n){return n.map((i,r)=>{const l=e[r];return i.defaultedQueryOptions.notifyOnChangeProps?l:i.observer.trackResult(l,d=>{n.forEach(u=>{u.observer.trackProp(d)})})})}#c(e,n,i){if(n){const r=this.#m,l=i!==void 0&&r!==void 0&&(r.length!==i.length||i.some((d,u)=>d!==r[u]));return(!this.#r||this.#e!==this.#s||l||n!==this.#o)&&(this.#o=n,this.#s=this.#e,i!==void 0&&(this.#m=i),this.#r=Zf(this.#r,n(e))),this.#r}return e}#d(e){const n=new Map;this.#a.forEach(r=>{const l=r.options.queryHash;if(!l)return;const d=n.get(l);d?d.push(r):n.set(l,[r])});const i=[];return e.forEach(r=>{const l=this.#t.defaultQueryOptions(r),u=n.get(l.queryHash)?.shift()??new Ko(this.#t,l);i.push({defaultedQueryOptions:l,observer:u})}),i}#l(e,n){const i=this.#a.indexOf(e);i!==-1&&(this.#e=Ik(this.#e,i,n),this.#f())}
9#f(){if(this.hasListeners()){const e=this.#r,n=this.#h(this.#e,this.#u),i=this.#c(n,this.#i?.combine);e!==i&&jt.batch(()=>{this.listeners.forEach(r=>{r(this.#e)})})}}},Mk=class extends mr{constructor(e={}){super(),this.config=e,this.#t=new Map}#t;build(e,n,i){const r=n.queryKey,l=n.queryHash??Xf(r,n);let d=this.get(l);return d||(d=new Ak({client:e,queryKey:r,queryHash:l,options:e.defaultQueryOptions(n),state:i,defaultOptions:e.getQueryDefaults(r)}),this.add(d)),d}add(e){this.#t.has(e.queryHash)||(this.#t.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const n=this.#t.get(e.queryHash);n&&(e.destroy(),n===e&&this.#t.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){jt.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#t.get(e)}getAll(){return[...this.#t.values()]}find(e){const n={exact:!0,...e};return this.getAll().find(i=>Pb(n,i))}findAll(e={}){const n=this.getAll();return Object.keys(e).length>0?n.filter(i=>Pb(e,i)):n}notify(e){jt.batch(()=>{this.listeners.forEach(n=>{n(e)})})}onFocus(){jt.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){jt.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},Pk=class{#t;#e;#n;#i;#a;#r;#o;#s;constructor(e={}){this.#t=e.queryCache||new Mk,this.#e=e.mutationCache||new Fk,this.#n=e.defaultOptions||{},this.#i=new Map,this.#a=new Map,this.#r=0}mount(){this.#r++,this.#r===1&&(this.#o=tm.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#t.onFocus())}),this.#s=Dc.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#t.onOnline())}))}unmount(){this.#r--,this.#r===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#t.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#e.findAll({...e,status:"pending"}).length}getQueryData(e){const n=this.defaultQueryOptions({queryKey:e});return this.#t.get(n.queryHash)?.state.data}ensureQueryData(e){const n=this.defaultQueryOptions(e),i=this.#t.build(this,n),r=i.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&i.isStaleByTime(Oi(n.staleTime,i))&&this.prefetchQuery(n),Promise.resolve(r))}getQueriesData(e){return this.#t.findAll(e).map(({queryKey:n,state:i})=>{const r=i.data;return[n,r]})}setQueryData(e,n,i){const r=this.defaultQueryOptions({queryKey:e}),d=this.#t.get(r.queryHash)?.state.data,u=uk(n,d);if(u!==void 0)return this.#t.build(this,r).setData(u,{...i,manual:!0})}setQueriesData(e,n,i){return jt.batch(()=>this.#t.findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,n,i)]))}getQueryState(e){const n=this.defaultQueryOptions({queryKey:e});return this.#t.get(n.queryHash)?.state}removeQueries(e){const n=this.#t;jt.batch(()=>{n.findAll(e).forEach(i=>{n.remove(i)})})}resetQueries(e,n){const i=this.#t;return jt.batch(()=>(i.findAll(e).forEach(r=>{r.reset()}),this.refetchQueries({type:"active",...e},n)))}cancelQueries(e,n={}){const i={revert:!0,...n},r=jt.batch(()=>this.#t.findAll(e).map(l=>l.cancel(i)));return Promise.all(r).then(on).catch(on)}invalidateQueries(e,n={}){return jt.batch(()=>(this.#t.findAll(e).forEach(i=>{i.invalidate()}),e?.refetchType==="none"?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},n)))}refetchQueries(e,n={}){const i={...n,cancelRefetch:n.cancelRefetch??!0},r=jt.batch(()=>this.#t.findAll(e).filter(l=>!l.isDisabled()&&!l.isStatic()).map(l=>{let d=l.fetch(void 0,i);return i.throwOnError||(d=d.catch(on)),l.state.fetchStatus==="paused"?Promise.resolve():d}));return Promise.all(r).then(on)}fetchQuery(e){const n=this.defaultQueryOptions(e);
vendor: 6,158 bytes, lines 9-17
9n.retry===void 0&&(n.retry=!1);const i=this.#t.build(this,n);return i.isStaleByTime(Oi(n.staleTime,i))?i.fetch(n):Promise.resolve(i.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(on).catch(on)}fetchInfiniteQuery(e){return e.behavior=Rc(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(on).catch(on)}ensureInfiniteQueryData(e){return e.behavior=Rc(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return Dc.isOnline()?this.#e.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#t}getMutationCache(){return this.#e}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,n){this.#i.set(Di(e),{queryKey:e,defaultOptions:n})}getQueryDefaults(e){const n=[...this.#i.values()],i={};return n.forEach(r=>{_o(e,r.queryKey)&&Object.assign(i,r.defaultOptions)}),i}setMutationDefaults(e,n){this.#a.set(Di(e),{mutationKey:e,defaultOptions:n})}getMutationDefaults(e){const n=[...this.#a.values()],i={};return n.forEach(r=>{_o(e,r.mutationKey)&&Object.assign(i,r.defaultOptions)}),i}defaultQueryOptions(e){if(e._defaulted)return e;const n={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return n.queryHash||(n.queryHash=Xf(n.queryKey,n)),n.refetchOnReconnect===void 0&&(n.refetchOnReconnect=n.networkMode!=="always"),n.throwOnError===void 0&&(n.throwOnError=!!n.suspense),!n.networkMode&&n.persister&&(n.networkMode="offlineFirst"),n.queryFn===_n&&(n.enabled=!1),n}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#t.clear(),this.#e.clear()}},kh={exports:{}},De={};/**
10 * @license React
11 * react.production.js
12 *
13 * Copyright (c) Meta Platforms, Inc. and affiliates.
14 *
15 * This source code is licensed under the MIT license found in the
16 * LICENSE file in the root directory of this source tree.
17 */var Hb;function Ok(){if(Hb)return De;Hb=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),u=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),v=Symbol.iterator;function x(A){return A===null||typeof A!="object"?null:(A=v&&A[v]||A["@@iterator"],typeof A=="function"?A:null)}var S={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E=Object.assign,O={};function C(A,U,k){this.props=A,this.context=U,this.refs=O,this.updater=k||S}C.prototype.isReactComponent={},C.prototype.setState=function(A,U){if(typeof A!="object"&&typeof A!="function"&&A!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,A,U,"setState")},C.prototype.forceUpdate=function(A){this.updater.enqueueForceUpdate(this,A,"forceUpdate")};function _(){}_.prototype=C.prototype;function q(A,U,k){this.props=A,this.context=U,this.refs=O,this.updater=k||S}var Y=q.prototype=new _;Y.constructor=q,E(Y,C.prototype),Y.isPureReactComponent=!0;var G=Array.isArray;function P(){}var M={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function N(A,U,k){var V=k.ref;return{$$typeof:e,type:A,key:U,ref:V!==void 0?V:null,props:k}}function L(A,U){return N(A.type,U,A.props)}function J(A){return typeof A=="object"&&A!==null&&A.$$typeof===e}function z(A){var U={"=":"=0",":":"=2"};return"$"+A.replace(/[=:]/g,function(k){return U[k]})}var $=/\/+/g;function Q(A,U){return typeof A=="object"&&A!==null&&A.key!=null?z(""+A.key):U.toString(36)}function X(A){switch(A.status){case"fulfilled":return A.value;case"rejected":throw A.reason;default:switch(typeof A.status=="string"?A.then(P,P):(A.status="pending",A.then(function(U){A.status==="pending"&&(A.status="fulfilled",A.value=U)},function(U){A.status==="pending"&&(A.status="rejected",A.reason=U)})),A.status){case"fulfilled":return A.value;case"rejected":throw A.reason}}throw A}function F(A,U,k,V,ae){var ue=typeof A;(ue==="undefined"||ue==="boolean")&&(A=null);var ne=!1;if(A===null)ne=!0;else switch(ue){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(A.$$typeof){case e:case n:ne=!0;break;case b:return ne=A._init,F(ne(A._payload),U,k,V,ae)}}if(ne)return ae=ae(A),ne=V===""?"."+Q(A,0):V,G(ae)?(k="",ne!=null&&(k=ne.replace($,"$&/")+"/"),F(ae,U,k,"",function(Fe){return Fe})):ae!=null&&(J(ae)&&(ae=L(ae,k+(ae.key==null||A&&A.key===ae.key?"":(""+ae.key).replace($,"$&/")+"/")+ne)),U.push(ae)),1;ne=0;var we=V===""?".":V+":";if(G(A))for(var je=0;je<A.length;je++)V=A[je],ue=we+Q(V,je),ne+=F(V,U,k,ue,ae);else if(je=x(A),typeof je=="function")for(A=je.call(A),je=0;!(V=A.next()).done;)V=V.value,ue=we+Q(V,je++),ne+=F(V,U,k,ue,ae);else if(ue==="object"){if(typeof A.then=="function")return F(X(A),U,k,V,ae);throw U=String(A),Error("Objects are not valid as a React child (found: "+(U==="[object Object]"?"object with keys {"+Object.keys(A).join(", ")+"}":U)+"). If you meant to render a collection of children, use an array instead.")}return ne}function D(A,U,k){if(A==null)return A;var V=[],ae=0;return F(A,V,"","",function(ue){return U.call(k,ue,ae++)}),V}function B(A){if(A._status===-1){var U=A._result;U=U(),U.then(function(k){(A._status===0||A._status===-1)&&(A._status=1,A._result=k)},function(k){(A._status===0||A._status===-1)&&(A._status=2,A._result=k)}),A._status===-1&&(A._status=0,A._result=U)}if(A._status===1)return A._result.default;throw A._result}var ce=typeof reportError=="function"?reportError:function(A){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var U=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof A=="object"&&A!==null&&typeof A.message=="string"?String(A.message):String(A),error:A});if(!window.dispatchEvent(U))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",A);return}console.error(A)}
17,I={map:D,forEach:function(A,U,k){D(A,function(){U.apply(this,arguments)},k)},count:function(A){var U=0;return D(A,function(){U++}),U},toArray:function(A){return D(A,function(U){return U})||[]},only:function(A){if(!J(A))throw Error("React.Children.only expected to receive a single React element child.");return A}};return De.Activity=y,De.Children=I,De.Component=C,De.Fragment=i,De.Profiler=l,De.PureComponent=q,De.StrictMode=r,De.Suspense=m,De.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=M,De.__COMPILER_RUNTIME={__proto__:null,c:function(A){return M.H.useMemoCache(A)}},De.cache=function(A){return function(){return A.apply(null,arguments)}},De.cacheSignal=function(){return null},De.cloneElement=function(A,U,k){if(A==null)throw Error("The argument must be a React element, but you passed "+A+".");var V=E({},A.props),ae=A.key;if(U!=null)for(ue in U.key!==void 0&&(ae=""+U.key),U)!W.call(U,ue)||ue==="key"||ue==="__self"||ue==="__source"||ue==="ref"&&U.ref===void 0||(V[ue]=U[ue]);var ue=arguments.length-2;if(ue===1)V.children=k;else if(1<ue){for(var ne=Array(ue),we=0;we<ue;we++)ne[we]=arguments[we+2];V.children=ne}return N(A.type,ae,V)},De.createContext=function(A){return A={$$typeof:u,_currentValue:A,_currentValue2:A,_threadCount:0,Provider:null,Consumer:null},A.Provider=A,A.Consumer={$$typeof:d,_context:A},A},De.createElement=function(A,U,k){var V,ae={},ue=null;if(U!=null)for(V in U.key!==void 0&&(ue=""+U.key),U)W.call(U,V)&&V!=="key"&&V!=="__self"&&V!=="__source"&&(ae[V]=U[V]);var ne=arguments.length-2;if(ne===1)ae.children=k;else if(1<ne){for(var we=Array(ne),je=0;je<ne;je++)we[je]=arguments[je+2];ae.children=we}if(A&&A.defaultProps)for(V in ne=A.defaultProps,ne)ae[V]===void 0&&(ae[V]=ne[V]);return N(A,ue,ae)},De.createRef=function(){return{current:null}},De.forwardRef=function(A){return{$$typeof:h,render:A}},De.isValidElement=J,De.lazy=function(A){return{$$typeof:b,_payload:{_status:-1,_result:A},_init:B}},De.memo=function(A,U){return{$$typeof:p,type:A,compare:U===void 0?null:U}},De.startTransition=function(A){var U=M.T,k={};M.T=k;try{var V=A(),ae=M.S;ae!==null&&ae(k,V),typeof V=="object"&&V!==null&&typeof V.then=="function"&&V.then(P,ce)}catch(ue){ce(ue)}finally{U!==null&&k.types!==null&&(U.types=k.types),M.T=U}},De.unstable_useCacheRefresh=function(){return M.H.useCacheRefresh()},De.use=function(A){return M.H.use(A)},De.useActionState=function(A,U,k){return M.H.useActionState(A,U,k)},De.useCallback=function(A,U){return M.H.useCallback(A,U)},De.useContext=function(A){return M.H.useContext(A)},De.useDebugValue=function(){},De.useDeferredValue=function(A,U){return M.H.useDeferredValue(A,U)},De.useEffect=function(A,U){return M.H.useEffect(A,U)},De.useEffectEvent=function(A){return M.H.useEffectEvent(A)},De.useId=function(){return M.H.useId()},De.useImperativeHandle=function(A,U,k){return M.H.useImperativeHandle(A,U,k)},De.useInsertionEffect=function(A,U){return M.H.useInsertionEffect(A,U)},De.useLayoutEffect=function(A,U){return M.H.useLayoutEffect(A,U)},De.useMemo=function(A,U){return M.H.useMemo(A,U)},De.useOptimistic=function(A,U){return M.H.useOptimistic(A,U)},De.useReducer=function(A,U,k){return M.H.useReducer(A,U,k)},De.useRef=function(A){return M.H.useRef(A)},De.useState=function(A){return M.H.useState(A)},De.useSyncExternalStore=function(A,U,k){return M.H.useSyncExternalStore(A,U,k)},De.useTransition=function(){return M.H.useTransition()},De.version="19.2.1",De}var qb;function Gc(){return qb||(qb=1,kh.exports=Ok()),kh.exports}var j=Gc();const de=fr(j),rw=rk({__proto__:null,default:de},[j]);var sw=j.createContext(void 0),Yo=e=>{const n=j.useContext(sw);if(e)return e;if(!n)throw new Error("No QueryClient set, use QueryClientProvider to set one");return n},Dk=({client:e,children:n})=>(j.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),o.jsx(sw.Provider,{value:e,children:n})),ow=j.createContext(!1),lw=()=>j.useContext(ow);ow.Provider;function Rk(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var _k=j.createContext(Rk()),cw=()=>j.useContext(_k),dw=(e,n,i)=>{const r=i?.state.error&&typeof e.throwOnError=="function"?em(e.throwOnError,[i.state.error,i]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(n.isReset()||(e.retryOn
17Mount=!1))},uw=e=>{j.useEffect(()=>{e.clearReset()},[e])},hw=({result:e,errorResetBoundary:n,throwOnError:i,query:r,suspense:l})=>e.isError&&!n.isReset()&&!e.isFetching&&r&&(l&&e.data===void 0||em(i,[e.error,r])),am=(e,n)=>n.state.data===void 0,fw=e=>{if(e.suspense){const i=l=>l==="static"?l:Math.max(l??1e3,1e3),r=e.staleTime;e.staleTime=typeof r=="function"?(...l)=>i(r(...l)):i(r),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},Bk=(e,n)=>e.isLoading&&e.isFetching&&!n,gf=(e,n)=>e?.suspense&&n.isPending,yf=(e,n,i)=>n.fetchOptimistic(e).catch(()=>{i.clearReset()});function mw({queries:e,...n},i){const r=Yo(i),l=lw(),d=cw(),u=j.useMemo(()=>e.map(E=>{const O=r.defaultQueryOptions(E);return O._optimisticResults=l?"isRestoring":"optimistic",O}),[e,r,l]);u.forEach(E=>{fw(E);const O=r.getQueryCache().get(E.queryHash);dw(E,d,O)}),uw(d);const[h]=j.useState(()=>new Nk(r,u,n)),[m,p,b]=h.getOptimisticResult(u,n.combine),y=!l&&n.subscribed!==!1;j.useSyncExternalStore(j.useCallback(E=>y?h.subscribe(jt.batchCalls(E)):on,[h,y]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),j.useEffect(()=>{h.setQueries(u,n)},[u,n,h]);const x=m.some((E,O)=>gf(u[O],E))?m.flatMap((E,O)=>{const C=u[O];if(C&&gf(C,E)){const _=new Ko(r,C);return yf(C,_,d)}return[]}):[];if(x.length>0)throw Promise.all(x);const S=m.find((E,O)=>{const C=u[O];return C&&hw({result:E,errorResetBoundary:d,throwOnError:C.throwOnError,query:r.getQueryCache().get(C.queryHash),suspense:C.suspense})});if(S?.error)throw S.error;return p(b())}function Kc(e,n,i){const r=lw(),l=cw(),d=Yo(i),u=d.defaultQueryOptions(e);d.getDefaultOptions().queries?._experimental_beforeQuery?.(u);const h=d.getQueryCache().get(u.queryHash);u._optimisticResults=r?"isRestoring":"optimistic",fw(u),dw(u,l,h),uw(l);const m=!d.getQueryCache().get(u.queryHash),[p]=j.useState(()=>new n(d,u)),b=p.getOptimisticResult(u),y=!r&&e.subscribed!==!1;if(j.useSyncExternalStore(j.useCallback(v=>{const x=y?p.subscribe(jt.batchCalls(v)):on;return p.updateResult(),x},[p,y]),()=>p.getCurrentResult(),()=>p.getCurrentResult()),j.useEffect(()=>{p.setOptions(u)},[u,p]),gf(u,b))throw yf(u,p,l);if(hw({result:b,errorResetBoundary:l,throwOnError:u.throwOnError,query:h,suspense:u.suspense}))throw b.error;return d.getDefaultOptions().queries?._experimental_afterQuery?.(u,b),u.experimental_prefetchInRender&&!dr&&Bk(b,r)&&(m?yf(u,p,l):h?.promise)?.catch(on).finally(()=>{p.updateResult()}),u.notifyOnChangeProps?b:p.trackResult(b)}function Lk(e,n){return Kc(e,Ko,n)}function zk(e,n){return Kc({...e,enabled:!0,suspense:!0,throwOnError:am,placeholderData:void 0},Ko,n)}function Uk(e,n){return Kc({...e,enabled:!0,suspense:!0,throwOnError:am},aw,n)}function Hk(e,n){return mw({...e,queries:e.queries.map(i=>({...i,suspense:!0,throwOnError:am,enabled:!0,placeholderData:void 0}))},n)}function qk(e,n){const i=Yo(n);i.getQueryState(e.queryKey)||i.prefetchQuery(e)}function Wk(e,n){const i=Yo(n);i.getQueryState(e.queryKey)||i.prefetchInfiniteQuery(e)}function Vk(e,n){const i=Yo(n),[r]=j.useState(()=>new Ek(i,e));j.useEffect(()=>{r.setOptions(e)},[r,e]);const l=j.useSyncExternalStore(j.useCallback(u=>r.subscribe(jt.batchCalls(u)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),d=j.useCallback((u,h)=>{r.mutate(u,h).catch(on)},[r]);if(l.error&&em(r.options.throwOnError,[l.error]))throw l.error;return{...l,mutate:d,mutateAsync:l.mutate}}function Gk(e,n){return Kc(e,aw,n)}function ur(e){return!!e&&!Array.isArray(e)&&typeof e=="object"}function Kk(){return Object.create(null)}const Yk=typeof Symbol=="function"&&!!Symbol.asyncIterator;function pw(e){return Yk&&ur(e)&&Symbol.asyncIterator in e}var $k=Object.create,gw=Object.defineProperty,Qk=Object.getOwnPropertyDescriptor,yw=Object.getOwnPropertyNames,Jk=Object.getPrototypeOf,Xk=Object.prototype.hasOwnProperty,$o=(e,n)=>function(){return n||(0,e[yw(e)[0]])((n={exports:{}}).exports,n),n.exports},Zk=(e,n,i,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(var l=yw(n),d=0,u=l.length,h;d<u;d++)h=l[d],!Xk.call(e,h)&&h!==i&&gw(e,h,{get:(m=>n[m]).bind(null,h),enumerable:!(r=Qk(n,h))||r.enumerable});return e},Yc=(e,n,i)=>(i=e!=null?$k(Jk(e)):{},Zk(gw(i,"default",{value:e,enumerable:!0}),e));const bw=()=>{},Wb=e=>{Object.freeze&&Object.freeze(e)};function xw(e,n,i){var r;const l=n.join(".");return(r=i[l])!==null&&r!==void 0||(i[l]=new Proxy(bw,{get(d,u){if(!(typeof u!="string"||u==="then"))return xw(e,[...n,u],i)},apply(d,u,h){const m=n[n.length-1];let p={args:h,path:n};return m==="call"?p={args:h.length>=2?[h[1]]:[],path:n.slice(0,-1)}:m==="apply"&&(p={args:h.length>=2?h[1]:[],path:n.slice(0,-1)}),Wb(p.args),Wb(p.path),e(p)}})),i[l]}const $c=e=>xw(e,[],Kk()),im=e=>new Proxy(bw,{get(n,i){if(i!=="then")return e(i)}});var vw=$o({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,n){function i(r){"@babel/helpers - typeof";return n.exports=i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(l){return typeof l}:function(l){return l&&typeof Symbol=="function"&&l.constructor===Symbol&&l!==Symbol.prototype?"symbol":typeof l},n.exports.__esModule=!0,n.exports.default=n.exports,i(r)}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}}),eS=$o({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,n){var i=vw().default;function r(l,d){if(i(l)!="object"||!l)return l;var u=l[Symbol.toPrimitive];if(u!==void 0){var h=u.call(l,d||"default");if(i(h)!="object")return h;throw new TypeError("@@toPrimitive must return a primitive value.")}
17return(d==="string"?String:Number)(l)}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),tS=$o({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,n){var i=vw().default,r=eS();function l(d){var u=r(d,"string");return i(u)=="symbol"?u:u+""}n.exports=l,n.exports.__esModule=!0,n.exports.default=n.exports}}),ww=$o({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,n){var i=tS();function r(l,d,u){return(d=i(d))in l?Object.defineProperty(l,d,{value:u,enumerable:!0,configurable:!0,writable:!0}):l[d]=u,l}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),rm=$o({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,n){var i=ww();function r(d,u){var h=Object.keys(d);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(d);u&&(m=m.filter(function(p){return Object.getOwnPropertyDescriptor(d,p).enumerable})),h.push.apply(h,m)}return h}function l(d){for(var u=1;u<arguments.length;u++){var h=arguments[u]!=null?arguments[u]:{};u%2?r(Object(h),!0).forEach(function(m){i(d,m,h[m])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(h)):r(Object(h)).forEach(function(m){Object.defineProperty(d,m,Object.getOwnPropertyDescriptor(h,m))})}return d}n.exports=l,n.exports.__esModule=!0,n.exports.default=n.exports}});Yc(rm());Yc(ww());var pc=Yc(rm());function nS(e,n){if("error"in e){const r=n.deserialize(e.error);return{ok:!1,error:(0,pc.default)((0,pc.default)({},e),{},{error:r})}}return{ok:!0,result:(0,pc.default)((0,pc.default)({},e.result),(!e.result.type||e.result.type==="data")&&{type:"data",data:n.deserialize(e.result.data)})}}var Sh=class extends Error{constructor(){super("Unable to transform response from server")}};function aS(e,n){let i;try{i=nS(e,n)}catch{throw new Sh}if(!i.ok&&(!ur(i.error.error)||typeof i.error.error.code!="number"))throw new Sh;if(i.ok&&!ur(i.result))throw new Sh;return i}Yc(rm());function Qc(e){const n={subscribe(i){let r=null,l=!1,d=!1,u=!1;function h(){if(r===null){u=!0;return}d||(d=!0,typeof r=="function"?r():r&&r.unsubscribe())}return r=e({next(m){var p;l||(p=i.next)===null||p===void 0||p.call(i,m)},error(m){var p;l||(l=!0,(p=i.error)===null||p===void 0||p.call(i,m),h())},complete(){var m;l||(l=!0,(m=i.complete)===null||m===void 0||m.call(i),h())}}),u&&h(),{unsubscribe:h}},pipe(...i){return i.reduce(iS,n)}};return n}function iS(e,n){return n(e)}function rS(e){const n=new AbortController;return new Promise((r,l)=>{let d=!1;function u(){d||(d=!0,h.unsubscribe())}n.signal.addEventListener("abort",()=>{l(n.signal.reason)});const h=e.subscribe({next(m){d=!0,r(m),u()},error(m){l(m)},complete(){n.abort(),u()}})})}var sS=Object.create,Aw=Object.defineProperty,oS=Object.getOwnPropertyDescriptor,kw=Object.getOwnPropertyNames,lS=Object.getPrototypeOf,cS=Object.prototype.hasOwnProperty,Li=(e,n)=>function(){return n||(0,e[kw(e)[0]])((n={exports:{}}).exports,n),n.exports},dS=(e,n,i,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(var l=kw(n),d=0,u=l.length,h;d<u;d++)h=l[d],!cS.call(e,h)&&h!==i&&Aw(e,h,{get:(m=>n[m]).bind(null,h),enumerable:!(r=oS(n,h))||r.enumerable});return e},pr=(e,n,i)=>(i=e!=null?sS(lS(e)):{},dS(n||!e||!e.__esModule?Aw(i,"default",{value:e,enumerable:!0}):i,e)),uS=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectWithoutPropertiesLoose.js"(e,n){function i(r,l){if(r==null)return{};var d={};for(var u in r)if({}.hasOwnProperty.call(r,u)){if(l.includes(u))continue;d[u]=r[u]}return d}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}}),hS=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectWithoutProperties.js"(e,n){var i=uS();function r(l,d){if(l==null)return{};var u,h,m=i(l,d);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(l);for(h=0;h<p.length;h++)u=p[h],d.includes(u)||{}.propertyIsEnumerable.call(l,u)&&(m[u]=l[u])}return m}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),Sw=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,n){function i(r){"@babel/helpers - typeof";return n.exports=i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(l){return typeof l}:function(l){return l&&typeof Symbol=="function"&&l.constructor===Symbol&&l!==Symbol.prototype?"symbol":typeof l},n.exports.__esModule=!0,n.exports.default=n.exports,i(r)}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}}),fS=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,n){var i=Sw().default;function r(l,d){if(i(l)!="object"||!l)return l;var u=l[Symbol.toPrimitive];if(u!==void 0){var h=u.call(l,d||"default");if(i(h)!="object")return h;throw new TypeError("@@toPrimitive must return a primitive value.")}
17return(d==="string"?String:Number)(l)}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),mS=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,n){var i=Sw().default,r=fS();function l(d){var u=r(d,"string");return i(u)=="symbol"?u:u+""}n.exports=l,n.exports.__esModule=!0,n.exports.default=n.exports}}),pS=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,n){var i=mS();function r(l,d,u){return(d=i(d))in l?Object.defineProperty(l,d,{value:u,enumerable:!0,configurable:!0,writable:!0}):l[d]=u,l}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),Qo=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,n){var i=pS();function r(d,u){var h=Object.keys(d);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(d);u&&(m=m.filter(function(p){return Object.getOwnPropertyDescriptor(d,p).enumerable})),h.push.apply(h,m)}return h}function l(d){for(var u=1;u<arguments.length;u++){var h=arguments[u]!=null?arguments[u]:{};u%2?r(Object(h),!0).forEach(function(m){i(d,m,h[m])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(h)):r(Object(h)).forEach(function(m){Object.defineProperty(d,m,Object.getOwnPropertyDescriptor(h,m))})}return d}n.exports=l,n.exports.__esModule=!0,n.exports.default=n.exports}}),gS=pr(hS(),1),Vb=pr(Qo(),1);const yS=["cursor","direction"];function Sa(e,n,i){const r=e.flatMap(l=>l.split("."));if(!n&&(!i||i==="any"))return r.length?[r]:[];if(i==="infinite"&&ur(n)&&("direction"in n||"cursor"in n)){const{cursor:l,direction:d}=n,u=(0,gS.default)(n,yS);return[r,{input:u,type:"infinite"}]}return[r,(0,Vb.default)((0,Vb.default)({},typeof n<"u"&&n!==_n&&{input:n}),i&&i!=="any"&&{type:i})]}function Fc(e){return Sa(e,void 0,"any")}var bS=Object.create,Tw=Object.defineProperty,xS=Object.getOwnPropertyDescriptor,Cw=Object.getOwnPropertyNames,vS=Object.getPrototypeOf,wS=Object.prototype.hasOwnProperty,Ia=(e,n)=>function(){return n||(0,e[Cw(e)[0]])((n={exports:{}}).exports,n),n.exports},AS=(e,n,i,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(var l=Cw(n),d=0,u=l.length,h;d<u;d++)h=l[d],!wS.call(e,h)&&h!==i&&Tw(e,h,{get:(m=>n[m]).bind(null,h),enumerable:!(r=xS(n,h))||r.enumerable});return e},Nt=(e,n,i)=>(i=e!=null?bS(vS(e)):{},AS(Tw(i,"default",{value:e,enumerable:!0}),e)),jw=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,n){function i(r){"@babel/helpers - typeof";return n.exports=i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(l){return typeof l}:function(l){return l&&typeof Symbol=="function"&&l.constructor===Symbol&&l!==Symbol.prototype?"symbol":typeof l},n.exports.__esModule=!0,n.exports.default=n.exports,i(r)}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}}),kS=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,n){var i=jw().default;function r(l,d){if(i(l)!="object"||!l)return l;var u=l[Symbol.toPrimitive];if(u!==void 0){var h=u.call(l,d||"default");if(i(h)!="object")return h;throw new TypeError("@@toPrimitive must return a primitive value.")}return(d==="string"?String:Number)(l)}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),SS=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,n){var i=jw().default,r=kS();function l(d){var u=r(d,"string");return i(u)=="symbol"?u:u+""}n.exports=l,n.exports.__esModule=!0,n.exports.default=n.exports}}),gr=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,n){var i=SS();function r(l,d,u){return(d=i(d))in l?Object.defineProperty(l,d,{value:u,enumerable:!0,configurable:!0,writable:!0}):l[d]=u,l}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),da=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,n){var i=gr();function r(d,u){var h=Object.keys(d);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(d);u&&(m=m.filter(function(p){return Object.getOwnPropertyDescriptor(d,p).enumerable})),h.push.apply(h,m)}return h}function l(d){for(var u=1;u<arguments.length;u++){var h=arguments[u]!=null?arguments[u]:{};
17u%2?r(Object(h),!0).forEach(function(m){i(d,m,h[m])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(h)):r(Object(h)).forEach(function(m){Object.defineProperty(d,m,Object.getOwnPropertyDescriptor(h,m))})}return d}n.exports=l,n.exports.__esModule=!0,n.exports.default=n.exports}});function TS(e){return n=>{let i=0,r=null;const l=[];function d(){r||(r=n.subscribe({next(h){for(const p of l){var m;(m=p.next)===null||m===void 0||m.call(p,h)}},error(h){for(const p of l){var m;(m=p.error)===null||m===void 0||m.call(p,h)}},complete(){for(const m of l){var h;(h=m.complete)===null||h===void 0||h.call(m)}}}))}function u(){if(i===0&&r){const h=r;r=null,h.unsubscribe()}}return Qc(h=>(i++,l.push(h),d(),{unsubscribe(){i--,u();const m=l.findIndex(p=>p===h);m>-1&&l.splice(m,1)}}))}}function CS(e){let n=e;const i=[],r=u=>{n!==void 0&&u.next(n),i.push(u)},l=u=>{i.splice(i.indexOf(u),1)},d=Qc(u=>(r(u),()=>{l(u)}));return d.next=u=>{if(n!==u){n=u;for(const h of i)h.next(u)}},d.get=()=>n,d}function jS(e){return Qc(n=>{function i(l=0,d=e.op){const u=e.links[l];if(!u)throw new Error("No more links to execute - did you forget to add an ending link?");return u({op:d,next(m){return i(l+1,m)}})}return i().subscribe(n)})}var gc=Nt(gr()),ls=Nt(da());function FS(e){return e instanceof ws}function ES(e){return ur(e)&&ur(e.error)&&typeof e.error.code=="number"&&typeof e.error.message=="string"}function IS(e,n){return typeof e=="string"?e:ur(e)&&typeof e.message=="string"?e.message:n}var ws=class Ec extends Error{constructor(n,i){var r,l;const d=i?.cause;super(n,{cause:d}),(0,gc.default)(this,"cause",void 0),(0,gc.default)(this,"shape",void 0),(0,gc.default)(this,"data",void 0),(0,gc.default)(this,"meta",void 0),this.meta=i?.meta,this.cause=d,this.shape=i==null||(r=i.result)===null||r===void 0?void 0:r.error,this.data=i==null||(l=i.result)===null||l===void 0?void 0:l.error.data,this.name="TRPCClientError",Object.setPrototypeOf(this,Ec.prototype)}static from(n,i={}){const r=n;return FS(r)?(i.meta&&(r.meta=(0,ls.default)((0,ls.default)({},r.meta),i.meta)),r):ES(r)?new Ec(r.error.message,(0,ls.default)((0,ls.default)({},i),{},{result:r,cause:i.cause})):new Ec(IS(r,"Unknown error"),(0,ls.default)((0,ls.default)({},i),{},{cause:r}))}};function NS(e){const n=e;return n?"input"in n?n:{input:n,output:n}:{input:{serialize:i=>i,deserialize:i=>i},output:{serialize:i=>i,deserialize:i=>i}}}const Gb=e=>typeof e=="function";function MS(e){if(e)return e;if(typeof window<"u"&&Gb(window.fetch))return window.fetch;if(typeof globalThis<"u"&&Gb(globalThis.fetch))return globalThis.fetch;throw new Error("No fetch implementation found")}var Mo=Nt(da());function PS(e){return{url:e.url.toString(),fetch:e.fetch,transformer:NS(e.transformer),methodOverride:e.methodOverride}}function OS(e){const n={};for(let i=0;i<e.length;i++){const r=e[i];n[i]=r}return n}const DS={query:"GET",mutation:"POST",subscription:"PATCH"};function Fw(e){return"input"in e?e.transformer.input.serialize(e.input):OS(e.inputs.map(n=>e.transformer.input.serialize(n)))}const Ew=e=>{const n=e.url.split("?");let r=n[0].replace(/\/$/,"")+"/"+e.path;const l=[];if(n[1]&&l.push(n[1]),"inputs"in e&&l.push("batch=1"),e.type==="query"||e.type==="subscription"){const d=Fw(e);d!==void 0&&e.methodOverride!=="POST"&&l.push(`input=${encodeURIComponent(JSON.stringify(d))}`)}return l.length&&(r+="?"+l.join("&")),r},RS=e=>{if(e.type==="query"&&e.methodOverride!=="POST")return;const n=Fw(e);return n!==void 0?JSON.stringify(n):void 0},_S=e=>US((0,Mo.default)((0,Mo.default)({},e),{},{contentTypeHeader:"application/json",getUrl:Ew,getBody:RS}));var BS=class extends Error{constructor(){const e="AbortError";super(e),this.name=e,this.message=e}};const LS=e=>{var n;if(e?.aborted)throw(n=e.throwIfAborted)===null||n===void 0||n.call(e),typeof DOMException<"u"?new DOMException("AbortError","AbortError"):new BS};async function zS(e){var n;LS(e.signal);const i=e.getUrl(e),r=e.getBody(e),l=(n=e.methodOverride)!==null&&n!==void 0?n:DS[e.type],d=await(async()=>{const h=await e.headers();return Symbol.iterator in h?Object.fromEntries(h):h})(),u=(0,Mo.default)((0,Mo.default)((0,Mo.default)({},e.contentTypeHeader&&l!=="GET"?{"content-type":e.contentTypeHeader}:{}),e.trpcAcceptHeader?{"trpc-accept":e.trpcAcceptHeader}:void 0),d);return MS(e.fetch)(i,{method:l,signal:e.signal,body:r,headers:u})}async function US(e){const n={},i=await zS(e);n.response=i;const r=await i.json();return n.responseJSON=r,{json:r,meta:n}}Nt(da());const Kb=()=>{throw new Error("Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new")};function Yb(e){let n=null,i=null;const r=()=>{clearTimeout(i),i=null,n=null};function l(h){const m=[[]];let p=0;for(;;){const v=h[p];if(!v)break;const x=m[m.length-1];if(v.aborted){var b;(b=v.reject)===null||b===void 0||b.call(v,new Error("Aborted")),p++;continue}if(e.validate(x.concat(v).map(E=>E.key))){x.push(v),p++;continue}if(x.length===0){var y;(y=v.reject)===null||y===void 0||y.call(v,new Error("Input is too big for a single dispatch")),p++;continue}m.push([])}return m}function d(){const h=l(n);r();for(const m of h){if(!m.length)continue;const p={items:m};for(const y of m)y.batch=p;e.fetch(p.items.map(y=>y.key)).then(async y=>{await Promise.all(y.map(async(x,S)=>{const E=p.items[S];try{var O;const _=await Promise.resolve(x);(O=E.resolve)===null||O===void 0||O.call(E,_)}
17catch(_){var C;(C=E.reject)===null||C===void 0||C.call(E,_)}E.batch=null,E.reject=null,E.resolve=null}));for(const x of p.items){var v;(v=x.reject)===null||v===void 0||v.call(x,new Error("Missing result")),x.batch=null}}).catch(y=>{for(const x of p.items){var v;(v=x.reject)===null||v===void 0||v.call(x,y),x.batch=null}})}}function u(h){var m;const p={aborted:!1,key:h,batch:null,resolve:Kb,reject:Kb},b=new Promise((y,v)=>{var x;p.reject=v,p.resolve=y,(x=n)!==null&&x!==void 0||(n=[]),n.push(p)});return(m=i)!==null&&m!==void 0||(i=setTimeout(d)),b}return{load:u}}function HS(...e){const n=new AbortController,i=e.length;let r=0;const l=()=>{++r===i&&n.abort()};for(const d of e)d?.aborted?l():d?.addEventListener("abort",l,{once:!0});return n.signal}var yc=Nt(da());function qS(e){var n,i;const r=PS(e),l=(n=e.maxURLLength)!==null&&n!==void 0?n:1/0,d=(i=e.maxItems)!==null&&i!==void 0?i:1/0;return()=>{const u=b=>({validate(y){if(l===1/0&&d===1/0)return!0;if(y.length>d)return!1;const v=y.map(E=>E.path).join(","),x=y.map(E=>E.input);return Ew((0,yc.default)((0,yc.default)({},r),{},{type:b,path:v,inputs:x,signal:null})).length<=l},async fetch(y){const v=y.map(_=>_.path).join(","),x=y.map(_=>_.input),S=HS(...y.map(_=>_.signal)),E=await _S((0,yc.default)((0,yc.default)({},r),{},{path:v,inputs:x,type:b,headers(){return e.headers?typeof e.headers=="function"?e.headers({opList:y}):e.headers:{}},signal:S}));return(Array.isArray(E.json)?E.json:y.map(()=>E.json)).map(_=>({meta:E.meta,json:_}))}}),h=Yb(u("query")),m=Yb(u("mutation")),p={query:h,mutation:m};return({op:b})=>Qc(y=>{/* istanbul ignore if -- @preserve */if(b.type==="subscription")throw new Error("Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`");const x=p[b.type].load(b);let S;return x.then(E=>{S=E;const O=aS(E.json,r.transformer.output);if(!O.ok){y.error(ws.from(O.error,{meta:E.meta}));return}y.next({context:E.meta,result:O.result}),y.complete()}).catch(E=>{y.error(ws.from(E,{meta:S?.meta}))}),()=>{}})}}Nt(da());const Iw=(e,...n)=>typeof e=="function"?e(...n):e;Nt(gr());function WS(){let e,n;return{promise:new Promise((r,l)=>{e=r,n=l}),resolve:e,reject:n}}async function VS(e){const n=await Iw(e.url);if(!e.connectionParams)return n;const r=`${n.includes("?")?"&":"?"}connectionParams=1`;return n+r}async function GS(e,n){const i={method:"connectionParams",data:await Iw(e)};return n.encode(i)}Nt(gr());var Mi=Nt(gr());function KS(e){const{promise:n,resolve:i,reject:r}=WS();return e.addEventListener("open",()=>{e.removeEventListener("error",r),i()}),e.addEventListener("error",r),n}function YS(e,{intervalMs:n,pongTimeoutMs:i}){let r,l;function d(){r=setTimeout(()=>{e.send("PING"),l=setTimeout(()=>{e.close()},i)},n)}function u(){clearTimeout(r),d()}function h(){clearTimeout(l),u()}e.addEventListener("open",d),e.addEventListener("message",({data:m})=>{clearTimeout(r),d(),m==="PONG"&&h()}),e.addEventListener("close",()=>{clearTimeout(r),clearTimeout(l)})}var $S=class bf{constructor(n){var i;if((0,Mi.default)(this,"id",++bf.connectCount),(0,Mi.default)(this,"WebSocketPonyfill",void 0),(0,Mi.default)(this,"urlOptions",void 0),(0,Mi.default)(this,"keepAliveOpts",void 0),(0,Mi.default)(this,"encoder",void 0),(0,Mi.default)(this,"wsObservable",CS(null)),(0,Mi.default)(this,"openPromise",null),this.WebSocketPonyfill=(i=n.WebSocketPonyfill)!==null&&i!==void 0?i:WebSocket,!this.WebSocketPonyfill)throw new Error("No WebSocket implementation found - you probably don't want to use this on the server, but if you do you need to pass a `WebSocket`-ponyfill");this.urlOptions=n.urlOptions,this.keepAliveOpts=n.keepAlive,this.encoder=n.encoder}get ws(){return this.wsObservable.get()}set ws(n){this.wsObservable.next(n)}isOpen(){return!!this.ws&&this.ws.readyState===this.WebSocketPonyfill.OPEN&&!this.openPromise}isClosed(){return!!this.ws&&(this.ws.readyState===this.WebSocketPonyfill.CLOSING||this.ws.readyState===this.WebSocketPonyfill.CLOSED)}async open(){var n=this;if(n.openPromise)return n.openPromise;n.id=++bf.connectCount;const i=VS(n.urlOptions).then(r=>new n.WebSocketPonyfill(r));n.openPromise=i.then(async r=>{n.ws=r,r.binaryType="arraybuffer",r.addEventListener("message",function({data:l}){l==="PING"&&this.send("PONG")}),n.keepAliveOpts.enabled&&YS(r,n.keepAliveOpts),r.addEventListener("close",()=>{n.ws===r&&(n.ws=null)}),await KS(r),n.urlOptions.connectionParams&&r.send(await GS(n.urlOptions.connectionParams,n.encoder))});try{await n.openPromise}finally{n.openPromise=null}}async close(){var n=this;try{await n.openPromise}finally{var i;(i=n.ws)===null||i===void 0||i.close()}}};(0,Mi.default)($S,"connectCount",0);Nt(gr());Nt(da());var Th=Nt(gr()),$b=Nt(da()),Jc=class{constructor(e){(0,Th.default)(this,"links",void 0),(0,Th.default)(this,"runtime",void 0),(0,Th.default)(this,"requestId",void 0),this.requestId=0,this.runtime={},this.links=e.links.map(n=>n(this.runtime))}$request(e){var n;return jS({links:this.links,op:(0,$b.default)((0,$b.default)({},e),{},{context:(n=e.context)!==null&&n!==void 0?n:{},id:++this.requestId})}).pipe(TS())}async requestAsPromise(e){var n=this;try{const i=n.$request(e);return(await rS(i)).result.data}catch(i){throw ws.from(i)}}query(e,n,i){return this.requestAsPromise({type:"query",path:e,input:n,context:i?.context,signal:i?.signal})}mutation(e,n,i){return this.requestAsPromise({type:"mutation",path:e,input:n,context:i?.context,signal:i?.signal})}subscription(e,n,i){return this.$request({type:"subscription",path:e,input:n,context:i.context,signal:i.signal}).subscribe({next(l){switch(l.result.type){case"state":{var d;(d=i.onConnectionStateChange)===null||d===void 0||d.call(i,l.result);break}case"started":{var u;(u=i.onStarted)===null||u===void 0||u.call(i,{context:l.context});break}case"stopped":{var h;(h=i.onStopped)===null||h===void 0||h.call(i);break}case"data":case void 0:{var m;(m=i.onData)===null||m===void 0||m.call(i,l.result.data);break}}},error(l){var d;(d=i.onError)===null||d===void 0||d.call(i,l)},complete(){var l;(l=i.onComplete)===null||l===void 0||l.call(i)}})}};const Nw=Symbol.for("trpc_untypedClient"),QS={query:"query",mutate:"mutation",subscribe:"subscription"},JS=e=>QS[e];function Mw(e){const n=$c(({path:i,args:r})=>{const l=[...i],d=JS(l.pop()),u=l.join(".");return e[d](u,...r)});return im(i=>i===Nw?e:n[i])}function XS(e){const n=new Jc(e);return Mw(n)}function sm(e){return e[Nw]}Nt(da());Nt(da());var ZS=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(e,n){function i(l){var d,u,h,m=2;for(typeof Symbol<"u"&&(u=Symbol.asyncIterator,h=Symbol.iterator);m--;){if(u&&(d=l[u])!=null)return d.call(l);
17if(h&&(d=l[h])!=null)return new r(d.call(l));u="@@asyncIterator",h="@@iterator"}throw new TypeError("Object is not async iterable")}function r(l){function d(u){if(Object(u)!==u)return Promise.reject(new TypeError(u+" is not an object."));var h=u.done;return Promise.resolve(u.value).then(function(m){return{value:m,done:h}})}return r=function(h){this.s=h,this.n=h.next},r.prototype={s:null,n:null,next:function(){return d(this.n.apply(this.s,arguments))},return:function(h){var m=this.s.return;return m===void 0?Promise.resolve({value:h,done:!0}):d(m.apply(this.s,arguments))},throw:function(h){var m=this.s.return;return m===void 0?Promise.reject(h):d(m.apply(this.s,arguments))}},new r(l)}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}});Nt(ZS());Nt(da());var eT=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(e,n){function i(){var r=typeof SuppressedError=="function"?SuppressedError:function(h,m){var p=Error();return p.name="SuppressedError",p.error=h,p.suppressed=m,p},l={},d=[];function u(h,m){if(m!=null){if(Object(m)!==m)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(h)var p=m[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(p===void 0&&(p=m[Symbol.dispose||Symbol.for("Symbol.dispose")],h))var b=p;if(typeof p!="function")throw new TypeError("Object is not disposable.");b&&(p=function(){try{b.call(m)}catch(v){return Promise.reject(v)}}),d.push({v:m,d:p,a:h})}else h&&d.push({d:m,a:h});return m}return{e:l,u:u.bind(null,!1),a:u.bind(null,!0),d:function(){var m,p=this.e,b=0;function y(){for(;m=d.pop();)try{if(!m.a&&b===1)return b=0,d.push(m),Promise.resolve().then(y);if(m.d){var x=m.d.call(m.v);if(m.a)return b|=2,Promise.resolve(x).then(y,v)}else b|=1}catch(S){return v(S)}if(b===1)return p!==l?Promise.reject(p):Promise.resolve();if(p!==l)throw p}function v(x){return p=p!==l?new r(x,p):x,y()}return y()}}}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}}),Pw=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(e,n){function i(r,l){this.v=r,this.k=l}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}}),tT=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(e,n){var i=Pw();function r(l){return new i(l,0)}n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}}),nT=Ia({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(e,n){var i=Pw();function r(d){return function(){return new l(d.apply(this,arguments))}}function l(d){var u,h;function m(b,y){try{var v=d[b](y),x=v.value,S=x instanceof i;Promise.resolve(S?x.v:x).then(function(E){if(S){var O=b==="return"?"return":"next";if(!x.k||E.done)return m(O,E);E=d[O](E).value}p(v.done?"return":"normal",E)},function(E){m("throw",E)})}catch(E){p("throw",E)}}function p(b,y){switch(b){case"return":u.resolve({value:y,done:!0});break;case"throw":u.reject(y);break;default:u.resolve({value:y,done:!1})}(u=u.next)?m(u.key,u.arg):h=null}this._invoke=function(b,y){return new Promise(function(v,x){var S={key:b,arg:y,resolve:v,reject:x,next:null};h?h=h.next=S:(u=h=S,m(b,y))})},typeof d.return!="function"&&(this.return=void 0)}l.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},l.prototype.next=function(d){return this._invoke("next",d)},l.prototype.throw=function(d){return this._invoke("throw",d)},l.prototype.return=function(d){return this._invoke("return",d)},n.exports=r,n.exports.__esModule=!0,n.exports.default=n.exports}});Nt(eT());Nt(tT());Nt(nT());Nt(da());function aT(e){return $c(({path:n,args:i})=>{var r;const l=[...n],d=l.pop();if(d==="useMutation")return e[d](l,...i);if(d==="_def")return{path:l};const[u,...h]=i,m=(r=h[0])!==null&&r!==void 0?r:{};return e[d](l,u,m)})}var Ch;const iT=["client","ssrContext","ssrState","abortOnUnmount"],rT=(Ch=j.createContext)===null||Ch===void 0?void 0:Ch.call(rw,null),sT=e=>{switch(e){case"queryOptions":case"fetch":case"ensureData":case"prefetch":case"getData":case"setData":case"setQueriesData":return"query";case"infiniteQueryOptions":case"fetchInfinite":case"prefetchInfinite":case"getInfiniteData":case"setInfiniteData":return"infinite";case"setMutationDefaults":case"getMutationDefaults":case"isMutating":case"cancel":case"invali
17date":case"refetch":case"reset":return"any"}};function oT(e){return $c(n=>{const i=[...n.path],r=i.pop(),l=[...n.args],d=l.shift(),u=sT(r),h=Sa(i,d,u);return{infiniteQueryOptions:()=>e.infiniteQueryOptions(i,h,l[0]),queryOptions:()=>e.queryOptions(i,h,...l),fetch:()=>e.fetchQuery(h,...l),fetchInfinite:()=>e.fetchInfiniteQuery(h,l[0]),prefetch:()=>e.prefetchQuery(h,...l),prefetchInfinite:()=>e.prefetchInfiniteQuery(h,l[0]),ensureData:()=>e.ensureQueryData(h,...l),invalidate:()=>e.invalidateQueries(h,...l),reset:()=>e.resetQueries(h,...l),refetch:()=>e.refetchQueries(h,...l),cancel:()=>e.cancelQuery(h,...l),setData:()=>{e.setQueryData(h,l[0],l[1])},setQueriesData:()=>e.setQueriesData(h,l[0],l[1],l[2]),setInfiniteData:()=>{e.setInfiniteQueryData(h,l[0],l[1])},getData:()=>e.getQueryData(h),getInfiniteData:()=>e.getInfiniteQueryData(h),setMutationDefaults:()=>e.setMutationDefaults(Fc(i),d),getMutationDefaults:()=>e.getMutationDefaults(Fc(i)),isMutating:()=>e.isMutating({mutationKey:Fc(i)})}[r]()})}function lT(e){const n=Mw(e.client),i=oT(e);return im(r=>{const l=r;return l==="client"?n:iT.includes(l)?e[l]:i[r]})}var cT=pr(Qo(),1);function Qb(e){const n=e instanceof Jc?e:sm(e);return $c(i=>{const r=i.path,l=r.join("."),[d,u]=i.args;return(0,cT.default)({queryKey:Sa(r,d,"query"),queryFn:()=>n.query(l,d,u?.trpc)},u)})}var jh=pr(Qo(),1);function hn(e,n,i){var r;const l=e[0];let d=(r=e[1])===null||r===void 0?void 0:r.input;if(i){var u;d=(0,jh.default)((0,jh.default)((0,jh.default)({},(u=d)!==null&&u!==void 0?u:{}),i.pageParam?{cursor:i.pageParam}:{}),{},{direction:i.direction})}return[l.join("."),d,n?.trpc]}var dT=Li({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(e,n){function i(l){var d,u,h,m=2;for(typeof Symbol<"u"&&(u=Symbol.asyncIterator,h=Symbol.iterator);m--;){if(u&&(d=l[u])!=null)return d.call(l);if(h&&(d=l[h])!=null)return new r(d.call(l));u="@@asyncIterator",h="@@iterator"}throw new TypeError("Object is not async iterable")}function r(l){function d(u){if(Object(u)!==u)return Promise.reject(new TypeError(u+" is not an object."));var h=u.done;return Promise.resolve(u.value).then(function(m){return{value:m,done:h}})}return r=function(h){this.s=h,this.n=h.next},r.prototype={s:null,n:null,next:function(){return d(this.n.apply(this.s,arguments))},return:function(h){var m=this.s.return;return m===void 0?Promise.resolve({value:h,done:!0}):d(m.apply(this.s,arguments))},throw:function(h){var m=this.s.return;return m===void 0?Promise.reject(h):d(m.apply(this.s,arguments))}},new r(l)}n.exports=i,n.exports.__esModule=!0,n.exports.default=n.exports}}),uT=pr(dT(),1);function xf(e){return{path:e.path.join(".")}}function ko(e){const n=xf(e);return j.useMemo(()=>n,[n])}async function Ow(e,n,i){const l=n.getQueryCache().build(n,{queryKey:i});l.setState({data:[],status:"success"});const d=[];var u=!1,h=!1,m;try{for(var p=(0,uT.default)(e),b;u=!(b=await p.next()).done;u=!1){const y=b.value;d.push(y),l.setState({data:[...d]})}}catch(y){h=!0,m=y}finally{try{u&&p.return!=null&&await p.return()}finally{if(h)throw m}}return d}var et=pr(Qo(),1);function hT(e){const{client:n,queryClient:i}=e,r=n instanceof Jc?n:sm(n);return{infiniteQueryOptions:(l,d,u)=>{var h,m;const p=((h=d[1])===null||h===void 0?void 0:h.input)===_n,b=async y=>{var v;const x=(0,et.default)((0,et.default)({},u),{},{trpc:(0,et.default)((0,et.default)({},u?.trpc),!(u==null||(v=u.trpc)===null||v===void 0)&&v.abortOnUnmount?{signal:y.signal}:{signal:null})});return await r.query(...hn(d,x,{direction:y.direction,pageParam:y.pageParam}))};return Object.assign((0,et.default)((0,et.default)({},u),{},{initialData:u?.initialData,queryKey:d,queryFn:p?_n:b,initialPageParam:(m=u?.initialCursor)!==null&&m!==void 0?m:null}),{trpc:xf({path:l})})},queryOptions:(l,d,u)=>{var h;const m=((h=d[1])===null||h===void 0?void 0:h.input)===_n,p=async b=>{var y;const v=(0,et.default)((0,et.default)({},u),{},{trpc:(0,et.default)((0,et.default)({},u?.trpc),!(u==null||(y=u.trpc)===null||y===void 0)&&y.abortOnUnmount?{signal:b.signal}:{signal:null})}),x=await r.query(...hn(d,v));return pw(x)?Ow(x,i,d):x};return Object.assign((0,et.default)((0,et.default)({},u),{},{initialData:u?.initialData,queryKey:d,queryFn:m?_n:p}),{trpc:xf({path:l})})},fetchQuery:(l,d)=>i.fetchQuery((0,et.default)((0,et.default)({},d),{},{queryKey:l,queryFn:()=>r.query(...hn(l,d))})),fetchInfiniteQuery:(l,d)=>{var u;return i.fetchInfiniteQuery((0,et.default)((0,et.default)({},d),{},{queryKey:l,queryFn:({pageParam:h,direction:m})=>r.query(...hn(l,d,{pageParam:h,direction:m})),initialPageParam:(u=d?.initialCursor)!==null&&u!==void 0?u:null}))},prefetchQuery:(l,d)=>i.prefetchQuery((0,et.default)((0,et.default)({},d),{},{queryKey:l,queryFn:()=>r.query(...hn(l,d))})),prefetchInfiniteQuery:(l,d)=>{var u;return i.prefetchInfiniteQuery((0,et.default)((0,et.default)({},d),{},{queryKey:l,queryFn:({pageParam:h,direction:m})=>r.query(...hn(l,d,{pageParam:h,direction:m})),initialPageParam:(u=d?.initialCursor)!==null&&u!==void 0?u:null}))},ensureQueryData:(l,d)=>i.ensureQueryData((0,et.default)((0,et.default)({},d),{},{queryKey:l,queryFn:()=>r.query(...hn(l,d))})),invalidateQueries:(l,d,u)=>i.invalidateQueries((0,et.default)((0,et.default)({},d),{},{queryKey:l}),u),resetQueries:(l,d,u)=>i.resetQueries((0,et.default)((0,et.default)({},d),{},{queryKey:l}),u),refetchQueries:(l,d,u)=>i.refetchQueries((0,et.default)((0,et.default)({},d),{},{queryKey:l}),u),cancelQuery:(l,d)=>i.cancelQueries({queryKey:l},d),setQueryData:(l,d,u)=>i.setQueryData(l,d,u),setQueriesData:(l,d,u,h)=>i.setQueriesData((0,et.default)((0,et.default)({},d),{},{queryKey:l}),u,h),getQueryData:l=>i.getQueryData(l),setInfiniteQueryData:(l,d,u)=>i.setQueryData(l,d,u),getInfiniteQueryData:l=>i.getQueryData(l),setMutationDefaults:(l,d)=>{const u=l[0],h=m=>r.mutation(...hn([u,{input:m}],e));return i.setMutationDefaults(l,typeof d=="function"?d({canonicalMutationFn:h}):d)},getMutationDefaults:l=>i.getMutationDefaults(l),isMutating:l=>i.isMutating((0,et.default)((0,et.default)({},l),{},{exact:!0}))}}var ge=pr(Qo());const Jb=(e,n)=>new Proxy(e,{get(r,l){return n(l),r[l]}});function fT(e){var n,i;const r=(n=void 0)!==null&&n!==void 0?n:G=>G.originalFn(),l=(i=void 0)!==null&&i!==void 0?i:rT,d=XS,u=G=>{var P;const{abortOnUnmount:M=!1,queryClient:W,ssrContext:N}=G,[L,J]=j.useState((P=G.ssrState)!==null&&P!==void 0?P:!1),z=G.client instanceof Jc?G.client:sm(G.client),$=j.useMemo(()=>hT({client:z,queryClient:W}),[z,W]),Q=j.useMemo(()=>(0,ge.default)({abortOnUnmount:M,queryClient:W,client:z,ssrContext:N??null,ssrState:L},$),[M,z,$,W,N,L]);return j.useEffect(()=>{J(X=>X?"mounted":!1)},[]),o.jsx(l.Provider,{value:Q,children:G.children})};function h(){const G=j.useContext(l);if(!G)throw new Error("Unable to find tRPC Context. Did you forget to wrap your Ap
17p inside `withTRPC` HoC?");return G}function m(G,P){var M;const{queryClient:W,ssrState:N}=h();return N&&N!=="mounted"&&((M=W.getQueryCache().find({queryKey:G}))===null||M===void 0?void 0:M.state.status)==="error"?(0,ge.default)({retryOnMount:!1},P):P}function p(G,P,M){var W,N,L,J,z;const $=h(),{abortOnUnmount:Q,client:X,ssrState:F,queryClient:D,prefetchQuery:B}=$,ce=Sa(G,P,"query"),I=D.getQueryDefaults(ce),A=P===_n;typeof window>"u"&&F==="prepass"&&(M==null||(W=M.trpc)===null||W===void 0?void 0:W.ssr)!==!1&&((N=M?.enabled)!==null&&N!==void 0?N:I?.enabled)!==!1&&!A&&!D.getQueryCache().find({queryKey:ce})&&B(ce,M);const U=m(ce,(0,ge.default)((0,ge.default)({},I),M)),k=(L=(J=M==null||(z=M.trpc)===null||z===void 0?void 0:z.abortOnUnmount)!==null&&J!==void 0?J:void 0)!==null&&L!==void 0?L:Q,V=Lk((0,ge.default)((0,ge.default)({},U),{},{queryKey:ce,queryFn:A?P:async ae=>{const ue=(0,ge.default)((0,ge.default)({},U),{},{trpc:(0,ge.default)((0,ge.default)({},U?.trpc),k?{signal:ae.signal}:{signal:null})}),ne=await X.query(...hn(ce,ue));return pw(ne)?Ow(ne,D,ce):ne}}),D);return V.trpc=ko({path:G}),V}function b(G,P,M){var W,N,L;const J=h(),z=Sa(G,P,"query"),$=P===_n,Q=(W=(N=M==null||(L=M.trpc)===null||L===void 0?void 0:L.abortOnUnmount)!==null&&N!==void 0?N:void 0)!==null&&W!==void 0?W:J.abortOnUnmount;qk((0,ge.default)((0,ge.default)({},M),{},{queryKey:z,queryFn:$?P:X=>{const F={trpc:(0,ge.default)((0,ge.default)({},M?.trpc),Q?{signal:X.signal}:{})};return J.client.query(...hn(z,F))}}))}function y(G,P,M){var W,N,L;const J=h(),z=Sa(G,P,"query"),$=(W=(N=M==null||(L=M.trpc)===null||L===void 0?void 0:L.abortOnUnmount)!==null&&N!==void 0?N:void 0)!==null&&W!==void 0?W:J.abortOnUnmount,Q=zk((0,ge.default)((0,ge.default)({},M),{},{queryKey:z,queryFn:X=>{const F=(0,ge.default)((0,ge.default)({},M),{},{trpc:(0,ge.default)((0,ge.default)({},M?.trpc),$?{signal:X.signal}:{signal:null})});return J.client.query(...hn(z,F))}}),J.queryClient);return Q.trpc=ko({path:G}),[Q.data,Q]}function v(G,P){const{client:M,queryClient:W}=h(),N=Fc(G),L=W.defaultMutationOptions(W.getMutationDefaults(N)),J=Vk((0,ge.default)((0,ge.default)({},P),{},{mutationKey:N,mutationFn:z=>M.mutation(...hn([G,{input:z}],P)),onSuccess(...z){var $,Q;return r({originalFn:()=>{var F,D,B;return(F=P==null||(D=P.onSuccess)===null||D===void 0?void 0:D.call(P,...z))!==null&&F!==void 0?F:L==null||(B=L.onSuccess)===null||B===void 0?void 0:B.call(L,...z)},queryClient:W,meta:($=(Q=P?.meta)!==null&&Q!==void 0?Q:L?.meta)!==null&&$!==void 0?$:{}})}}),W);return J.trpc=ko({path:G}),J}const x={data:void 0,error:null,status:"idle"},S={data:void 0,error:null,status:"connecting"};/* istanbul ignore next -- @preserve */function E(G,P,M){var W;const N=(W=M?.enabled)!==null&&W!==void 0?W:P!==_n,L=Di(Sa(G,P,"any")),{client:J}=h(),z=j.useRef(M);j.useEffect(()=>{z.current=M});const[$]=j.useState(new Set([])),Q=j.useCallback(A=>{$.add(A)},[$]),X=j.useRef(null),F=j.useCallback(A=>{const U=B.current,k=B.current=A(U);let V=!1;for(const ae of $)if(U[ae]!==k[ae]){V=!0;break}V&&I(Jb(k,Q))},[Q,$]),D=j.useCallback(()=>{var A;if((A=X.current)===null||A===void 0||A.unsubscribe(),!N){F(()=>(0,ge.default)((0,ge.default)({},x),{},{reset:D}));return}F(()=>(0,ge.default)((0,ge.default)({},S),{},{reset:D}));const U=J.subscription(G.join("."),P??void 0,{onStarted:()=>{var k,V;(k=(V=z.current).onStarted)===null||k===void 0||k.call(V),F(ae=>(0,ge.default)((0,ge.default)({},ae),{},{status:"pending",error:null}))},onData:k=>{var V,ae;(V=(ae=z.current).onData)===null||V===void 0||V.call(ae,k),F(ue=>(0,ge.default)((0,ge.default)({},ue),{},{status:"pending",data:k,error:null}))},onError:k=>{var V,ae;(V=(ae=z.current).onError)===null||V===void 0||V.call(ae,k),F(ue=>(0,ge.default)((0,ge.default)({},ue),{},{status:"error",error:k}))},onConnectionStateChange:k=>{F(V=>{switch(k.state){case"idle":return(0,ge.default)((0,ge.default)({},V),{},{status:k.state,error:null,data:void 0});case"connecting":return(0,ge.default)((0,ge.default)({},V),{},{error:k.error,status:k.state});case"pending":return V}})},onComplete:()=>{var k,V;(k=(V=z.current).onComplete)===null||k===void 0||k.call(V),F(ae=>(0,ge.default)((0,ge.default)({},ae),{},{status:"idle",error:null,data:void 0}))}});X.current=U}
17,[J,L,N,F]);j.useEffect(()=>(D(),()=>{var A;(A=X.current)===null||A===void 0||A.unsubscribe()}),[D]);const B=j.useRef(N?(0,ge.default)((0,ge.default)({},S),{},{reset:D}):(0,ge.default)((0,ge.default)({},x),{},{reset:D})),[ce,I]=j.useState(Jb(B.current,Q));return ce}function O(G,P,M){var W,N,L,J,z;const{client:$,ssrState:Q,prefetchInfiniteQuery:X,queryClient:F,abortOnUnmount:D}=h(),B=Sa(G,P,"infinite"),ce=F.getQueryDefaults(B),I=P===_n;typeof window>"u"&&Q==="prepass"&&(M==null||(W=M.trpc)===null||W===void 0?void 0:W.ssr)!==!1&&((N=M?.enabled)!==null&&N!==void 0?N:ce?.enabled)!==!1&&!I&&!F.getQueryCache().find({queryKey:B})&&X(B,(0,ge.default)((0,ge.default)({},ce),M));const A=m(B,(0,ge.default)((0,ge.default)({},ce),M)),U=(L=M==null||(J=M.trpc)===null||J===void 0?void 0:J.abortOnUnmount)!==null&&L!==void 0?L:D,k=Gk((0,ge.default)((0,ge.default)({},A),{},{initialPageParam:(z=M.initialCursor)!==null&&z!==void 0?z:null,persister:M.persister,queryKey:B,queryFn:I?P:V=>{var ae;const ue=(0,ge.default)((0,ge.default)({},A),{},{trpc:(0,ge.default)((0,ge.default)({},A?.trpc),U?{signal:V.signal}:{signal:null})});return $.query(...hn(B,ue,{pageParam:(ae=V.pageParam)!==null&&ae!==void 0?ae:M.initialCursor,direction:V.direction}))}}),F);return k.trpc=ko({path:G}),k}function C(G,P,M){var W,N,L;const J=h(),z=Sa(G,P,"infinite"),$=J.queryClient.getQueryDefaults(z),Q=P===_n,X=m(z,(0,ge.default)((0,ge.default)({},$),M)),F=(W=M==null||(N=M.trpc)===null||N===void 0?void 0:N.abortOnUnmount)!==null&&W!==void 0?W:J.abortOnUnmount;Wk((0,ge.default)((0,ge.default)({},M),{},{initialPageParam:(L=M.initialCursor)!==null&&L!==void 0?L:null,queryKey:z,queryFn:Q?P:D=>{var B;const ce=(0,ge.default)((0,ge.default)({},X),{},{trpc:(0,ge.default)((0,ge.default)({},X?.trpc),F?{signal:D.signal}:{})});return J.client.query(...hn(z,ce,{pageParam:(B=D.pageParam)!==null&&B!==void 0?B:M.initialCursor,direction:D.direction}))}}))}function _(G,P,M){var W,N,L;const J=h(),z=Sa(G,P,"infinite"),$=J.queryClient.getQueryDefaults(z),Q=m(z,(0,ge.default)((0,ge.default)({},$),M)),X=(W=M==null||(N=M.trpc)===null||N===void 0?void 0:N.abortOnUnmount)!==null&&W!==void 0?W:J.abortOnUnmount,F=Uk((0,ge.default)((0,ge.default)({},M),{},{initialPageParam:(L=M.initialCursor)!==null&&L!==void 0?L:null,queryKey:z,queryFn:D=>{var B;const ce=(0,ge.default)((0,ge.default)({},Q),{},{trpc:(0,ge.default)((0,ge.default)({},Q?.trpc),X?{signal:D.signal}:{})});return J.client.query(...hn(z,ce,{pageParam:(B=D.pageParam)!==null&&B!==void 0?B:M.initialCursor,direction:D.direction}))}}),J.queryClient);return F.trpc=ko({path:G}),[F.data,F]}return{Provider:u,createClient:d,useContext:h,useUtils:h,useQuery:p,usePrefetchQuery:b,useSuspenseQuery:y,useQueries:(G,P)=>{const{ssrState:M,queryClient:W,prefetchQuery:N,client:L}=h(),J=Qb(L),z=G(J);if(typeof window>"u"&&M==="prepass")for(const Q of z){var $;const X=Q;(($=X.trpc)===null||$===void 0?void 0:$.ssr)!==!1&&!W.getQueryCache().find({queryKey:X.queryKey})&&N(X.queryKey,X)}return mw({queries:z.map(Q=>(0,ge.default)((0,ge.default)({},Q),{},{queryKey:Q.queryKey})),combine:P?.combine},W)},useSuspenseQueries:G=>{const{queryClient:P,client:M}=h(),W=Qb(M),N=G(W),L=Hk({queries:N.map(J=>(0,ge.default)((0,ge.default)({},J),{},{queryFn:J.queryFn,queryKey:J.queryKey}))},P);return[L.map(J=>J.data),L]},useMutation:v,useSubscription:E,useInfiniteQuery:O,usePrefetchInfiniteQuery:C,useSuspenseInfiniteQuery:_}}function mT(e){const n=aT(e);return im(i=>i==="useContext"||i==="useUtils"?()=>{const r=e.useUtils();return j.useMemo(()=>lT(r),[r])}:e.hasOwnProperty(i)?e[i]:n[i])}function pT(e){const n=fT();return mT(n)}const Qe=pT(),gT="Please login (10001)";var yT=(function(){function e(){this.keyToValue=new Map,this.valueToKey=new Map}return e.prototype.set=function(n,i){this.keyToValue.set(n,i),this.valueToKey.set(i,n)},e.prototype.getByKey=function(n){return this.keyToValue.get(n)},e.prototype.getByValue=function(n){return this.valueToKey.get(n)},e.prototype.clear=function(){this.keyToValue.clear(),this.valueToKey.clear()},e})(),Dw=(function(){function e(n){this.generateIdentifier=n,this.kv=new yT}return e.prototype.register=function(n,i){this.kv.getByValue(n)||(i||(i=this.generateIdentifier(n)),this.kv.set(i,n))},e.prototype.clear=function(){this.kv.clear()},e.prototype.getIdentifier=function(n){return this.kv.getByValue(n)},e.prototype.getValue=function(n){return this.kv.getByKey(n)},e})(),bT=(function(){var e=function(n,i){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,l){r.__proto__=l}||function(r,l){for(var d in l)Object.prototype.hasOwnProperty.call(l,d)&&(r[d]=l[d])},e(n,i)};
17return function(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");e(n,i);function r(){this.constructor=n}n.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}})(),xT=(function(e){bT(n,e);function n(){var i=e.call(this,function(r){return r.name})||this;return i.classToAllowedProps=new Map,i}return n.prototype.register=function(i,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(i,r.allowProps),e.prototype.register.call(this,i,r.identifier)):e.prototype.register.call(this,i,r)},n.prototype.getAllowedProps=function(i){return this.classToAllowedProps.get(i)},n})(Dw),vT=function(e,n){var i=typeof Symbol=="function"&&e[Symbol.iterator];if(!i)return e;var r=i.call(e),l,d=[],u;try{for(;(n===void 0||n-- >0)&&!(l=r.next()).done;)d.push(l.value)}catch(h){u={error:h}}finally{try{l&&!l.done&&(i=r.return)&&i.call(r)}finally{if(u)throw u.error}}return d};function wT(e){if("values"in Object)return Object.values(e);var n=[];for(var i in e)e.hasOwnProperty(i)&&n.push(e[i]);return n}function AT(e,n){var i=wT(e);if("find"in i)return i.find(n);for(var r=i,l=0;l<r.length;l++){var d=r[l];if(n(d))return d}}function As(e,n){Object.entries(e).forEach(function(i){var r=vT(i,2),l=r[0],d=r[1];return n(d,l)})}function Ic(e,n){return e.indexOf(n)!==-1}function Xb(e,n){for(var i=0;i<e.length;i++){var r=e[i];if(n(r))return r}}var kT=(function(){function e(){this.transfomers={}}return e.prototype.register=function(n){this.transfomers[n.name]=n},e.prototype.findApplicable=function(n){return AT(this.transfomers,function(i){return i.isApplicable(n)})},e.prototype.findByName=function(n){return this.transfomers[n]},e})(),ST=function(e){return Object.prototype.toString.call(e).slice(8,-1)},Rw=function(e){return typeof e>"u"},TT=function(e){return e===null},Lo=function(e){return typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype},vf=function(e){return Lo(e)&&Object.keys(e).length===0},Ri=function(e){return Array.isArray(e)},CT=function(e){return typeof e=="string"},jT=function(e){return typeof e=="number"&&!isNaN(e)},FT=function(e){return typeof e=="boolean"},ET=function(e){return e instanceof RegExp},zo=function(e){return e instanceof Map},Uo=function(e){return e instanceof Set},_w=function(e){return ST(e)==="Symbol"},IT=function(e){return e instanceof Date&&!isNaN(e.valueOf())},NT=function(e){return e instanceof Error},Zb=function(e){return typeof e=="number"&&isNaN(e)},MT=function(e){return FT(e)||TT(e)||Rw(e)||jT(e)||CT(e)||_w(e)},PT=function(e){return typeof e=="bigint"},OT=function(e){return e===1/0||e===-1/0},DT=function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},RT=function(e){return e instanceof URL},Bw=function(e){return e.replace(/\./g,"\\.")},Fh=function(e){return e.map(String).map(Bw).join(".")},Po=function(e){for(var n=[],i="",r=0;r<e.length;r++){var l=e.charAt(r),d=l==="\\"&&e.charAt(r+1)===".";if(d){i+=".",r++;continue}var u=l===".";if(u){n.push(i),i="";continue}i+=l}var h=i;return n.push(h),n},wf=function(){return wf=Object.assign||function(e){for(var n,i=1,r=arguments.length;i<r;i++){n=arguments[i];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},wf.apply(this,arguments)},Af=function(e,n){var i=typeof Symbol=="function"&&e[Symbol.iterator];if(!i)return e;var r=i.call(e),l,d=[],u;try{for(;(n===void 0||n-- >0)&&!(l=r.next()).done;)d.push(l.value)}catch(h){u={error:h}}finally{try{l&&!l.done&&(i=r.return)&&i.call(r)}finally{if(u)throw u.error}}return d},kf=function(e,n){for(var i=0,r=n.length,l=e.length;i<r;i++,l++)e[l]=n[i];return e};function va(e,n,i,r){return{isApplicable:e,annotation:n,transform:i,untransform:r}}var Lw=[va(Rw,"undefined",function(){return null},function(){}),va(PT,"bigint",function(e){return e.toString()},function(e){return typeof BigInt<"u"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)}),va(IT,"Date",function(e){return e.toISOString()},function(e){return new Date(e)}),va(NT,"Error",function(e,n){var i={name:e.name,message:e.message};return n.allowedErrorProps.forEach(function(r){i[r]=e[r]}),i},function(e,n){var i=new Error(e.message);return i.name=e.name,i.stack=e.stack,n.allowedErrorProps.forEach(function(r){i[r]=e[r]}),i}),va(ET,"regexp",function(e){return""+e},function(e){var n=e.slice(1,e.lastIndexOf("/")),i=e.slice(e.lastIndexOf("/")+1);return new RegExp(n,i)}
17),va(Uo,"set",function(e){return kf([],Af(e.values()))},function(e){return new Set(e)}),va(zo,"map",function(e){return kf([],Af(e.entries()))},function(e){return new Map(e)}),va(function(e){return Zb(e)||OT(e)},"number",function(e){return Zb(e)?"NaN":e>0?"Infinity":"-Infinity"},Number),va(function(e){return e===0&&1/e===-1/0},"number",function(){return"-0"},Number),va(RT,"URL",function(e){return e.toString()},function(e){return new URL(e)})];function Xc(e,n,i,r){return{isApplicable:e,annotation:n,transform:i,untransform:r}}var zw=Xc(function(e,n){if(_w(e)){var i=!!n.symbolRegistry.getIdentifier(e);return i}return!1},function(e,n){var i=n.symbolRegistry.getIdentifier(e);return["symbol",i]},function(e){return e.description},function(e,n,i){var r=i.symbolRegistry.getValue(n[1]);if(!r)throw new Error("Trying to deserialize unknown symbol");return r}),_T=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce(function(e,n){return e[n.name]=n,e},{}),Uw=Xc(DT,function(e){return["typed-array",e.constructor.name]},function(e){return kf([],Af(e))},function(e,n){var i=_T[n[1]];if(!i)throw new Error("Trying to deserialize unknown typed array");return new i(e)});function Hw(e,n){if(e?.constructor){var i=!!n.classRegistry.getIdentifier(e.constructor);return i}return!1}var qw=Xc(Hw,function(e,n){var i=n.classRegistry.getIdentifier(e.constructor);return["class",i]},function(e,n){var i=n.classRegistry.getAllowedProps(e.constructor);if(!i)return wf({},e);var r={};return i.forEach(function(l){r[l]=e[l]}),r},function(e,n,i){var r=i.classRegistry.getValue(n[1]);if(!r)throw new Error("Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564");return Object.assign(Object.create(r.prototype),e)}),Ww=Xc(function(e,n){return!!n.customTransformerRegistry.findApplicable(e)},function(e,n){var i=n.customTransformerRegistry.findApplicable(e);return["custom",i.name]},function(e,n){var i=n.customTransformerRegistry.findApplicable(e);return i.serialize(e)},function(e,n,i){var r=i.customTransformerRegistry.findByName(n[1]);if(!r)throw new Error("Trying to deserialize unknown custom value");return r.deserialize(e)}),BT=[qw,zw,Ww,Uw],ex=function(e,n){var i=Xb(BT,function(l){return l.isApplicable(e,n)});if(i)return{value:i.transform(e,n),type:i.annotation(e,n)};var r=Xb(Lw,function(l){return l.isApplicable(e,n)});if(r)return{value:r.transform(e,n),type:r.annotation}},Vw={};Lw.forEach(function(e){Vw[e.annotation]=e});var LT=function(e,n,i){if(Ri(n))switch(n[0]){case"symbol":return zw.untransform(e,n,i);case"class":return qw.untransform(e,n,i);case"custom":return Ww.untransform(e,n,i);case"typed-array":return Uw.untransform(e,n,i);default:throw new Error("Unknown transformation: "+n)}else{var r=Vw[n];if(!r)throw new Error("Unknown transformation: "+n);return r.untransform(e,i)}},ms=function(e,n){for(var i=e.keys();n>0;)i.next(),n--;return i.next().value};function Gw(e){if(Ic(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(Ic(e,"prototype"))throw new Error("prototype is not allowed as a property");if(Ic(e,"constructor"))throw new Error("constructor is not allowed as a property")}var zT=function(e,n){Gw(n);for(var i=0;i<n.length;i++){var r=n[i];if(Uo(e))e=ms(e,+r);else if(zo(e)){var l=+r,d=+n[++i]==0?"key":"value",u=ms(e,l);switch(d){case"key":e=u;break;case"value":e=e.get(u);break}}else e=e[r]}return e},Sf=function(e,n,i){if(Gw(n),n.length===0)return i(e);for(var r=e,l=0;l<n.length-1;l++){var d=n[l];if(Ri(r)){var u=+d;r=r[u]}else if(Lo(r))r=r[d];else if(Uo(r)){var h=+d;r=ms(r,h)}else if(zo(r)){var m=l===n.length-2;if(m)break;var h=+d,p=+n[++l]==0?"key":"value",b=ms(r,h);switch(p){case"key":r=b;break;case"value":r=r.get(b);break}}}var y=n[n.length-1];if(Ri(r)?r[+y]=i(r[+y]):Lo(r)&&(r[y]=i(r[y])),Uo(r)){var v=ms(r,+y),x=i(v);v!==x&&(r.delete(v),r.add(x))}if(zo(r)){var h=+n[n.length-2],S=ms(r,h),p=+y==0?"key":"value";switch(p){case"key":{var E=i(S);r.set(E,r.get(S)),E!==S&&r.delete(S);break}case"value":{r.set(S,i(r.get(S)));break}}}return e},Za=function(e,n){var i=typeof Symbol=="function"&&e[Symbol.iterator];if(!i)return e;var r=i.call(e),l,d=[],u;try{for(;(n===void 0||n-- >0)&&!(l=r.next()).done;)d.push(l.value)}catch(h){u={error:h}}finally{try{l&&!l.done&&(i=r.return)&&i.call(r)}finally{if(u)throw u.error}}return d},Pi=function(e,n){for(var i=0,r=n.length,l=e.length;i<r;i++,l++)e[l]=n[i];return e};function Tf(e,n,i){if(i===void 0&&(i=[]),!!e){if(!Ri(e)){As(e,function(u,h){return Tf(u,n,Pi(Pi([],Za(i)),Za(Po(h))))});return}var r=Za(e,2),l=r[0],d=r[1];d&&As(d,function(u,h){Tf(u,n,Pi(Pi([],Za(i)),Za(Po(h))))}),n(l,i)}}function UT(e,n,i){return Tf(n,function(r,l){e=Sf(e,l,function(d){return LT(d,r,i)})}),e}function HT(e,n){function i(u,h){var m=zT(e,Po(h));
17u.map(Po).forEach(function(p){e=Sf(e,p,function(){return m})})}if(Ri(n)){var r=Za(n,2),l=r[0],d=r[1];l.forEach(function(u){e=Sf(e,Po(u),function(){return e})}),d&&As(d,i)}else As(n,i);return e}var qT=function(e,n){return Lo(e)||Ri(e)||zo(e)||Uo(e)||Hw(e,n)};function WT(e,n,i){var r=i.get(e);r?r.push(n):i.set(e,[n])}function VT(e,n){var i={},r=void 0;return e.forEach(function(l){if(!(l.length<=1)){n||(l=l.map(function(m){return m.map(String)}).sort(function(m,p){return m.length-p.length}));var d=Za(l),u=d[0],h=d.slice(1);u.length===0?r=h.map(Fh):i[Fh(u)]=h.map(Fh)}}),r?vf(i)?[r]:[r,i]:vf(i)?void 0:i}var Kw=function(e,n,i,r,l,d,u){var h;l===void 0&&(l=[]),d===void 0&&(d=[]),u===void 0&&(u=new Map);var m=MT(e);if(!m){WT(e,l,n);var p=u.get(e);if(p)return r?{transformedValue:null}:p}if(!qT(e,i)){var b=ex(e,i),y=b?{transformedValue:b.value,annotations:[b.type]}:{transformedValue:e};return m||u.set(e,y),y}if(Ic(d,e))return{transformedValue:null};var v=ex(e,i),x=(h=v?.value)!==null&&h!==void 0?h:e,S=Ri(x)?[]:{},E={};As(x,function(C,_){var q=Kw(C,n,i,r,Pi(Pi([],Za(l)),[_]),Pi(Pi([],Za(d)),[e]),u);S[_]=q.transformedValue,Ri(q.annotations)?E[_]=q.annotations:Lo(q.annotations)&&As(q.annotations,function(Y,G){E[Bw(_)+"."+G]=Y})});var O=vf(E)?{transformedValue:S,annotations:v?[v.type]:void 0}:{transformedValue:S,annotations:v?[v.type,E]:E};return m||u.set(e,O),O};function Yw(e){return Object.prototype.toString.call(e).slice(8,-1)}function tx(e){return Yw(e)==="Array"}function GT(e){if(Yw(e)!=="Object")return!1;const n=Object.getPrototypeOf(e);return!!n&&n.constructor===Object&&n===Object.prototype}function KT(e,n,i,r,l){const d={}.propertyIsEnumerable.call(r,n)?"enumerable":"nonenumerable";d==="enumerable"&&(e[n]=i),l&&d==="nonenumerable"&&Object.defineProperty(e,n,{value:i,enumerable:!1,writable:!0,configurable:!0})}function Cf(e,n={}){if(tx(e))return e.map(l=>Cf(l,n));if(!GT(e))return e;const i=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...i,...r].reduce((l,d)=>{if(tx(n.props)&&!n.props.includes(d))return l;const u=e[d],h=Cf(u,n);return KT(l,d,h,e,n.nonenumerable),l},{})}var lr=function(){return lr=Object.assign||function(e){for(var n,i=1,r=arguments.length;i<r;i++){n=arguments[i];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},lr.apply(this,arguments)},YT=function(e,n){var i=typeof Symbol=="function"&&e[Symbol.iterator];if(!i)return e;var r=i.call(e),l,d=[],u;try{for(;(n===void 0||n-- >0)&&!(l=r.next()).done;)d.push(l.value)}catch(h){u={error:h}}finally{try{l&&!l.done&&(i=r.return)&&i.call(r)}finally{if(u)throw u.error}}return d},$T=function(e,n){for(var i=0,r=n.length,l=e.length;i<r;i++,l++)e[l]=n[i];return e},ai=(function(){function e(n){var i=n===void 0?{}:n,r=i.dedupe,l=r===void 0?!1:r;this.classRegistry=new xT,this.symbolRegistry=new Dw(function(d){var u;return(u=d.description)!==null&&u!==void 0?u:""}),this.customTransformerRegistry=new kT,this.allowedErrorProps=[],this.dedupe=l}return e.prototype.serialize=function(n){var i=new Map,r=Kw(n,i,this,this.dedupe),l={json:r.transformedValue};r.annotations&&(l.meta=lr(lr({},l.meta),{values:r.annotations}));var d=VT(i,this.dedupe);return d&&(l.meta=lr(lr({},l.meta),{referentialEqualities:d})),l},e.prototype.deserialize=function(n){var i=n.json,r=n.meta,l=Cf(i);return r?.values&&(l=UT(l,r.values,this)),r?.referentialEqualities&&(l=HT(l,r.referentialEqualities)),l},e.prototype.stringify=function(n){return JSON.stringify(this.serialize(n))},e.prototype.parse=function(n){return this.deserialize(JSON.parse(n))},e.prototype.registerClass=function(n,i){this.classRegistry.register(n,i)},e.prototype.registerSymbol=function(n,i){this.symbolRegistry.register(n,i)},e.prototype.registerCustom=function(n,i){this.customTransformerRegistry.register(lr({name:i},n))},e.prototype.allowErrorProps=function(){for(var n,i=[],r=0;r<arguments.length;r++)i[r]=arguments[r];(n=this.allowedErrorProps).push.apply(n,$T([],YT(i)))},e.defaultInstance=new e,e.serialize=e.defaultInstance.serialize.bind(e.defaultInstance),e.deserialize=e.defaultInstance.deserialize.bind(e.defaultInstance),e.stringify=e.defaultInstance.stringify.bind(e.defaultInstance),e.parse=e.defaultInstance.parse.bind(e.defaultInstance),e.registerClass=e.defaultInstance.registerClass.bind(e.defaultInstance),e.registerSymbol=e.defaultInstance.registerSymbol.bind(e.defaultInstance),e.registerCustom=e.defaultInstance.registerCustom.bind(e.defaultInstance),e.allowErrorProps=e.defaultInstance.allowErrorProps.bind(e.defaultInstance),e})();ai.serialize;ai.deserialize;ai.stringify;ai.parse;ai.registerClass;ai.registerCustom;ai.registerSymbol;ai.allowErrorProps;
vendor: 9,551 bytes, lines 17-41
17var Eh={exports:{}},So={},Ih={exports:{}},Nh={};/**
18 * @license React
19 * scheduler.production.js
20 *
21 * Copyright (c) Meta Platforms, Inc. and affiliates.
22 *
23 * This source code is licensed under the MIT license found in the
24 * LICENSE file in the root directory of this source tree.
25 */var nx;function QT(){return nx||(nx=1,(function(e){function n(F,D){var B=F.length;F.push(D);e:for(;0<B;){var ce=B-1>>>1,I=F[ce];if(0<l(I,D))F[ce]=D,F[B]=I,B=ce;else break e}}function i(F){return F.length===0?null:F[0]}function r(F){if(F.length===0)return null;var D=F[0],B=F.pop();if(B!==D){F[0]=B;e:for(var ce=0,I=F.length,A=I>>>1;ce<A;){var U=2*(ce+1)-1,k=F[U],V=U+1,ae=F[V];if(0>l(k,B))V<I&&0>l(ae,k)?(F[ce]=ae,F[V]=B,ce=V):(F[ce]=k,F[U]=B,ce=U);else if(V<I&&0>l(ae,B))F[ce]=ae,F[V]=B,ce=V;else break e}}return D}function l(F,D){var B=F.sortIndex-D.sortIndex;return B!==0?B:F.id-D.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;e.unstable_now=function(){return d.now()}}else{var u=Date,h=u.now();e.unstable_now=function(){return u.now()-h}}var m=[],p=[],b=1,y=null,v=3,x=!1,S=!1,E=!1,O=!1,C=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,q=typeof setImmediate<"u"?setImmediate:null;function Y(F){for(var D=i(p);D!==null;){if(D.callback===null)r(p);else if(D.startTime<=F)r(p),D.sortIndex=D.expirationTime,n(m,D);else break;D=i(p)}}function G(F){if(E=!1,Y(F),!S)if(i(m)!==null)S=!0,P||(P=!0,z());else{var D=i(p);D!==null&&X(G,D.startTime-F)}}var P=!1,M=-1,W=5,N=-1;function L(){return O?!0:!(e.unstable_now()-N<W)}function J(){if(O=!1,P){var F=e.unstable_now();N=F;var D=!0;try{e:{S=!1,E&&(E=!1,_(M),M=-1),x=!0;var B=v;try{t:{for(Y(F),y=i(m);y!==null&&!(y.expirationTime>F&&L());){var ce=y.callback;if(typeof ce=="function"){y.callback=null,v=y.priorityLevel;var I=ce(y.expirationTime<=F);if(F=e.unstable_now(),typeof I=="function"){y.callback=I,Y(F),D=!0;break t}y===i(m)&&r(m),Y(F)}else r(m);y=i(m)}if(y!==null)D=!0;else{var A=i(p);A!==null&&X(G,A.startTime-F),D=!1}}break e}finally{y=null,v=B,x=!1}D=void 0}}finally{D?z():P=!1}}}var z;if(typeof q=="function")z=function(){q(J)};else if(typeof MessageChannel<"u"){var $=new MessageChannel,Q=$.port2;$.port1.onmessage=J,z=function(){Q.postMessage(null)}}else z=function(){C(J,0)};function X(F,D){M=C(function(){F(e.unstable_now())},D)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(F){F.callback=null},e.unstable_forceFrameRate=function(F){0>F||125<F?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):W=0<F?Math.floor(1e3/F):5},e.unstable_getCurrentPriorityLevel=function(){return v},e.unstable_next=function(F){switch(v){case 1:case 2:case 3:var D=3;break;default:D=v}var B=v;v=D;try{return F()}finally{v=B}},e.unstable_requestPaint=function(){O=!0},e.unstable_runWithPriority=function(F,D){switch(F){case 1:case 2:case 3:case 4:case 5:break;default:F=3}var B=v;v=F;try{return D()}finally{v=B}},e.unstable_scheduleCallback=function(F,D,B){var ce=e.unstable_now();switch(typeof B=="object"&&B!==null?(B=B.delay,B=typeof B=="number"&&0<B?ce+B:ce):B=ce,F){case 1:var I=-1;break;case 2:I=250;break;case 5:I=1073741823;break;case 4:I=1e4;break;default:I=5e3}return I=B+I,F={id:b++,callback:D,priorityLevel:F,startTime:B,expirationTime:I,sortIndex:-1},B>ce?(F.sortIndex=B,n(p,F),i(m)===null&&F===i(p)&&(E?(_(M),M=-1):E=!0,X(G,B-ce))):(F.sortIndex=I,n(m,F),S||x||(S=!0,P||(P=!0,z()))),F},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(F){var D=v;return function(){var B=v;v=D;try{return F.apply(this,arguments)}finally{v=B}}}})(Nh)),Nh}var ax;function JT(){return ax||(ax=1,Ih.exports=QT()),Ih.exports}var Mh={exports:{}},sn={};/**
26 * @license React
27 * react-dom.production.js
28 *
29 * Copyright (c) Meta Platforms, Inc. and affiliates.
30 *
31 * This source code is licensed under the MIT license found in the
32 * LICENSE file in the root directory of this source tree.
33 */var ix;function XT(){if(ix)return sn;ix=1;var e=Gc();function n(m){var p="https://react.dev/errors/"+m;if(1<arguments.length){p+="?args[]="+encodeURIComponent(arguments[1]);for(var b=2;b<arguments.length;b++)p+="&args[]="+encodeURIComponent(arguments[b])}return"Minified React error #"+m+"; visit "+p+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(){}var r={d:{f:i,r:function(){throw Error(n(522))},D:i,C:i,L:i,m:i,X:i,S:i,M:i},p:0,findDOMNode:null},l=Symbol.for("react.portal");function d(m,p,b){var y=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:l,key:y==null?null:""+y,children:m,containerInfo:p,implementation:b}}var u=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function h(m,p){if(m==="font")return"";if(typeof p=="string")return p==="use-credentials"?p:""}return sn.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,sn.createPortal=function(m,p){var b=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!p||p.nodeType!==1&&p.nodeType!==9&&p.nodeType!==11)throw Error(n(299));return d(m,p,null,b)},sn.flushSync=function(m){var p=u.T,b=r.p;try{if(u.T=null,r.p=2,m)return m()}finally{u.T=p,r.p=b,r.d.f()}},sn.preconnect=function(m,p){typeof m=="string"&&(p?(p=p.crossOrigin,p=typeof p=="string"?p==="use-credentials"?p:"":void 0):p=null,r.d.C(m,p))},sn.prefetchDNS=function(m){typeof m=="string"&&r.d.D(m)},sn.preinit=function(m,p){if(typeof m=="string"&&p&&typeof p.as=="string"){var b=p.as,y=h(b,p.crossOrigin),v=typeof p.integrity=="string"?p.integrity:void 0,x=typeof p.fetchPriority=="string"?p.fetchPriority:void 0;b==="style"?r.d.S(m,typeof p.precedence=="string"?p.precedence:void 0,{crossOrigin:y,integrity:v,fetchPriority:x}):b==="script"&&r.d.X(m,{crossOrigin:y,integrity:v,fetchPriority:x,nonce:typeof p.nonce=="string"?p.nonce:void 0})}},sn.preinitModule=function(m,p){if(typeof m=="string")if(typeof p=="object"&&p!==null){if(p.as==null||p.as==="script"){var b=h(p.as,p.crossOrigin);r.d.M(m,{crossOrigin:b,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0})}}else p==null&&r.d.M(m)},sn.preload=function(m,p){if(typeof m=="string"&&typeof p=="object"&&p!==null&&typeof p.as=="string"){var b=p.as,y=h(b,p.crossOrigin);r.d.L(m,b,{crossOrigin:y,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0,type:typeof p.type=="string"?p.type:void 0,fetchPriority:typeof p.fetchPriority=="string"?p.fetchPriority:void 0,referrerPolicy:typeof p.referrerPolicy=="string"?p.referrerPolicy:void 0,imageSrcSet:typeof p.imageSrcSet=="string"?p.imageSrcSet:void 0,imageSizes:typeof p.imageSizes=="string"?p.imageSizes:void 0,media:typeof p.media=="string"?p.media:void 0})}},sn.preloadModule=function(m,p){if(typeof m=="string")if(p){var b=h(p.as,p.crossOrigin);r.d.m(m,{as:typeof p.as=="string"&&p.as!=="script"?p.as:void 0,crossOrigin:b,integrity:typeof p.integrity=="string"?p.integrity:void 0})}else r.d.m(m)},sn.requestFormReset=function(m){r.d.r(m)},sn.unstable_batchedUpdates=function(m,p){return m(p)},sn.useFormState=function(m,p,b){return u.H.useFormState(m,p,b)},sn.useFormStatus=function(){return u.H.useHostTransitionStatus()},sn.version="19.2.1",sn}var rx;function $w(){if(rx)return Mh.exports;rx=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Mh.exports=XT(),Mh.exports}/**
34 * @license React
35 * react-dom-client.production.js
36 *
37 * Copyright (c) Meta Platforms, Inc. and affiliates.
38 *
39 * This source code is licensed under the MIT license found in the
40 * LICENSE file in the root directory of this source tree.
41 */var sx;function ZT(){if(sx)return So;sx=1;var e=JT(),n=Gc(),i=$w();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var s=2;s<arguments.length;s++)a+="&args[]="+encodeURIComponent(arguments[s])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function l(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function d(t){var a=t,s=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(s=a.return),t=a.return;while(t)}return a.tag===3?s:null}function u(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function h(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function m(t){if(d(t)!==t)throw Error(r(188))}function p(t){var a=t.alternate;if(!a){if(a=d(t),a===null)throw Error(r(188));return a!==t?null:t}for(var s=t,c=a;;){var f=s.return;if(f===null)break;var g=f.alternate;if(g===null){if(c=f.return,c!==null){s=c;continue}break}if(f.child===g.child){for(g=f.child;g;){if(g===s)return m(f),t;if(g===c)return m(f),a;g=g.sibling}throw Error(r(188))}if(s.return!==c.return)s=f,c=g;else{for(var w=!1,T=f.child;T;){if(T===s){w=!0,s=f,c=g;break}if(T===c){w=!0,c=f,s=g;break}T=T.sibling}if(!w){for(T=g.child;T;){if(T===s){w=!0,s=g,c=f;break}
vendor: 11,182 bytes, lines 41-48
41if(T===c){w=!0,c=g,s=f;break}T=T.sibling}if(!w)throw Error(r(189))}}if(s.alternate!==c)throw Error(r(190))}if(s.tag!==3)throw Error(r(188));return s.stateNode.current===s?t:a}function b(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=b(t),a!==null)return a;t=t.sibling}return null}var y=Object.assign,v=Symbol.for("react.element"),x=Symbol.for("react.transitional.element"),S=Symbol.for("react.portal"),E=Symbol.for("react.fragment"),O=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),q=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),W=Symbol.for("react.lazy"),N=Symbol.for("react.activity"),L=Symbol.for("react.memo_cache_sentinel"),J=Symbol.iterator;function z(t){return t===null||typeof t!="object"?null:(t=J&&t[J]||t["@@iterator"],typeof t=="function"?t:null)}var $=Symbol.for("react.client.reference");function Q(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===$?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case E:return"Fragment";case C:return"Profiler";case O:return"StrictMode";case G:return"Suspense";case P:return"SuspenseList";case N:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case S:return"Portal";case q:return t.displayName||"Context";case _:return(t._context.displayName||"Context")+".Consumer";case Y:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case M:return a=t.displayName||null,a!==null?a:Q(t.type)||"Memo";case W:a=t._payload,t=t._init;try{return Q(t(a))}catch{}}return null}var X=Array.isArray,F=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B={pending:!1,data:null,method:null,action:null},ce=[],I=-1;function A(t){return{current:t}}function U(t){0>I||(t.current=ce[I],ce[I]=null,I--)}function k(t,a){I++,ce[I]=t.current,t.current=a}var V=A(null),ae=A(null),ue=A(null),ne=A(null);function we(t,a){switch(k(ue,a),k(ae,t),k(V,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?eb(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=eb(a),t=tb(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}U(V),k(V,t)}function je(){U(V),U(ae),U(ue)}function Fe(t){t.memoizedState!==null&&k(ne,t);var a=V.current,s=tb(a,t.type);a!==s&&(k(ae,t),k(V,s))}function rt(t){ae.current===t&&(U(V),U(ae)),ne.current===t&&(U(ne),bo._currentValue=B)}var St,Mt;function me(t){if(St===void 0)try{throw Error()}catch(s){var a=s.stack.trim().match(/\n( *(at )?)/);St=a&&a[1]||"",Mt=-1<s.stack.indexOf(`
42    at`)?" (<anonymous>)":-1<s.stack.indexOf("@")?"@unknown:0:0":""}return`
43`+St+t+Mt}var Ce=!1;function Te(t,a){if(!t||Ce)return"";Ce=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var c={DetermineComponentFrameRoot:function(){try{if(a){var le=function(){throw Error()};if(Object.defineProperty(le.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(le,[])}catch(ie){var te=ie}Reflect.construct(t,[],le)}else{try{le.call()}catch(ie){te=ie}t.call(le.prototype)}}else{try{throw Error()}catch(ie){te=ie}(le=t())&&typeof le.catch=="function"&&le.catch(function(){})}}catch(ie){if(ie&&te&&typeof ie.stack=="string")return[ie.stack,te.stack]}return[null,null]}};c.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var f=Object.getOwnPropertyDescriptor(c.DetermineComponentFrameRoot,"name");f&&f.configurable&&Object.defineProperty(c.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=c.DetermineComponentFrameRoot(),w=g[0],T=g[1];if(w&&T){var R=w.split(`
44`),ee=T.split(`
45`);for(f=c=0;c<R.length&&!R[c].includes("DetermineComponentFrameRoot");)c++;for(;f<ee.length&&!ee[f].includes("DetermineComponentFrameRoot");)f++;if(c===R.length||f===ee.length)for(c=R.length-1,f=ee.length-1;1<=c&&0<=f&&R[c]!==ee[f];)f--;for(;1<=c&&0<=f;c--,f--)if(R[c]!==ee[f]){if(c!==1||f!==1)do if(c--,f--,0>f||R[c]!==ee[f]){var re=`
46`+R[c].replace(" at new "," at ");return t.displayName&&re.includes("<anonymous>")&&(re=re.replace("<anonymous>",t.displayName)),re}while(1<=c&&0<=f);break}}}finally{Ce=!1,Error.prepareStackTrace=s}return(s=t?t.displayName||t.name:"")?me(s):""}function $e(t,a){switch(t.tag){case 26:case 27:case 5:return me(t.type);case 16:return me("Lazy");case 13:return t.child!==a&&a!==null?me("Suspense Fallback"):me("Suspense");case 19:return me("SuspenseList");case 0:case 15:return Te(t.type,!1);case 11:return Te(t.type.render,!1);case 1:return Te(t.type,!0);case 31:return me("Activity");default:return""}}function tn(t){try{var a="",s=null;do a+=$e(t,s),s=t,t=t.return;while(t);return a}catch(c){return`
47Error generating stack: `+c.message+`
48`+c.stack}}var Ue=Object.prototype.hasOwnProperty,fn=e.unstable_scheduleCallback,lt=e.unstable_cancelCallback,Je=e.unstable_shouldYield,ha=e.unstable_requestPaint,Gt=e.unstable_now,Ns=e.unstable_getCurrentPriorityLevel,se=e.unstable_ImmediatePriority,fe=e.unstable_UserBlockingPriority,Ie=e.unstable_NormalPriority,Be=e.unstable_LowPriority,qe=e.unstable_IdlePriority,nn=e.log,an=e.unstable_setDisableYieldValue,Kt=null,Ft=null;function Yt(t){if(typeof nn=="function"&&an(t),Ft&&typeof Ft.setStrictMode=="function")try{Ft.setStrictMode(Kt,t)}catch{}}var it=Math.clz32?Math.clz32:ma,fa=Math.log,cn=Math.LN2;function ma(t){return t>>>=0,t===0?32:31-(fa(t)/cn|0)|0}var wr=256,Ar=262144,Ui=4194304;function pa(t){var a=t&42;if(a!==0)return a;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Oe(t,a,s){var c=t.pendingLanes;if(c===0)return 0;var f=0,g=t.suspendedLanes,w=t.pingedLanes;t=t.warmLanes;var T=c&134217727;return T!==0?(c=T&~g,c!==0?f=pa(c):(w&=T,w!==0?f=pa(w):s||(s=T&~t,s!==0&&(f=pa(s))))):(T=c&~g,T!==0?f=pa(T):w!==0?f=pa(w):s||(s=c&~t,s!==0&&(f=pa(s)))),f===0?0:a!==0&&a!==f&&(a&g)===0&&(g=f&-f,s=a&-a,g>=s||g===32&&(s&4194048)!==0)?a:f}function vt(t,a){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&a)===0}function Ut(t,a){switch(t){case 1:case 2:case 4:case 8:case 64:return a+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function rn(){var t=Ui;return Ui<<=1,(Ui&62914560)===0&&(Ui=4194304),t}function ii(t){for(var a=[],s=0;31>s;s++)a.push(t);return a}function kt(t,a){t.pendingLanes|=a,a!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function mn(t,a,s,c,f,g){var w=t.pendingLanes;t.pendingLanes=s,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=s,t.entangledLanes&=s,t.errorRecoveryDisabledLanes&=s,t.shellSuspendCounter=0;var T=t.entanglements,R=t.expirationTimes,ee=t.hiddenUpdates;for(s=w&~s;0<s;){var re=31-it(s),le=1<<re;T[re]=0,R[re]=-1;var te=ee[re];if(te!==null)for(ee[re]=null,re=0;re<te.length;re++){var ie=te[re];ie!==null&&(ie.lane&=-536870913)}s&=~le}c!==0&&Hi(t,c,0),g!==0&&f===0&&t.tag!==0&&(t.suspendedLanes|=g&~(w&~a))}function Hi(t,a,s){t.pendingLanes|=a,t.suspendedLanes&=~a;var c=31-it(a);t.entangledLanes|=a,t.entanglements[c]=t.entanglements[c]|1073741824|s&261930}function pn(t,a){var s=t.entangledLanes|=a;for(t=t.entanglements;s;){var c=31-it(s),f=1<<c;f&a|t[c]&a&&(t[c]|=a),s&=~f}}function gn(t,a){var s=a&-a;return s=(s&42)!==0?1:kr(s),(s&(t.suspendedLanes|a))!==0?0:s}function kr(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function Zn(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function hd(){var t=D.p;return t!==0?t:(t=window.event,t===void 0?32:Sb(t.type))}function zm(t,a){var s=D.p;try{return D.p=t,a()}finally{D.p=s}}var ri=Math.random().toString(36).slice(2),$t="__reactFiber$"+ri,yn="__reactProps$"+ri,Sr="__reactContainer$"+ri,fd="__reactEvents$"+ri,YA="__reactListeners$"+ri,$A="__reactHandles$"+ri,Um="__reactResources$"+ri,Ms="__reactMarker$"+ri;function md(t){delete t[$t],delete t[yn],delete t[fd],delete t[YA],delete t[$A]}function Tr(t){var a=t[$t];if(a)return a;for(var s=t.parentNode;s;){if(a=s[Sr]||s[$t]){if(s=a.alternate,a.child!==null||s!==null&&s.child!==null)for(t=lb(t);t!==null;){if(s=t[$t])return s;t=lb(t)}return a}t=s,s=t.parentNode}return null}function Cr(t){if(t=t[$t]||t[Sr]){var a=t.tag;if(a===5||a===6||a===13||a===31||a===26||a===27||a===3)return t}return null}function Ps(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t.stateNode;throw Error(r(33))}function jr(t){var a=t[Um];return a||(a=t[Um]={hoistableStyles:new Map,hoistableScripts:new Map}),a}function Ht(t){t[Ms]=!0}var Hm=new Set,qm={};function qi(t,a){Fr(t,a),Fr(t+"Capture",a)}function Fr(t,a){for(qm[t]=a,t=0;t<a.length;t++)Hm.add(a[t])}var QA=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Wm={},Vm={};function JA(t){return Ue.call(Vm,t)?!0:Ue.call(Wm,t)?!1:QA.test(t)?Vm[t]=!0:(Wm[t]=!0,!1)}function nl(t,a,s){if(JA(a))if(s===null)t.removeAttribute(a);else{switch(typeof s){case"undefined":case"function":case"symbol":t.removeAttribute(a);return;case"boolean":var c=a.toLowerCase().slice(0,5);if(c!=="data-"&&c!=="aria-"){t.removeAttribute(a);return}}t.setAttribute(a,""+s)}}function al(t,a,s){if(s===null)t.removeAttribute(a);else{switch(typeof s){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(a);return}t.setAttribute(a,""+s)}}function Ma(t,a,s,c){if(c===null)t.removeAttribute(s);else{switch(typeof c){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(s);return}t.setAttributeNS(a,s,""+c)}}function zn(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Gm(t){var a=t.type;
vendor: 5,492 bytes, line 48
48return(t=t.nodeName)&&t.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function XA(t,a,s){var c=Object.getOwnPropertyDescriptor(t.constructor.prototype,a);if(!t.hasOwnProperty(a)&&typeof c<"u"&&typeof c.get=="function"&&typeof c.set=="function"){var f=c.get,g=c.set;return Object.defineProperty(t,a,{configurable:!0,get:function(){return f.call(this)},set:function(w){s=""+w,g.call(this,w)}}),Object.defineProperty(t,a,{enumerable:c.enumerable}),{getValue:function(){return s},setValue:function(w){s=""+w},stopTracking:function(){t._valueTracker=null,delete t[a]}}}}function pd(t){if(!t._valueTracker){var a=Gm(t)?"checked":"value";t._valueTracker=XA(t,a,""+t[a])}}function Km(t){if(!t)return!1;var a=t._valueTracker;if(!a)return!0;var s=a.getValue(),c="";return t&&(c=Gm(t)?t.checked?"true":"false":t.value),t=c,t!==s?(a.setValue(t),!0):!1}function il(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var ZA=/[\n"\\]/g;function Un(t){return t.replace(ZA,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function gd(t,a,s,c,f,g,w,T){t.name="",w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"?t.type=w:t.removeAttribute("type"),a!=null?w==="number"?(a===0&&t.value===""||t.value!=a)&&(t.value=""+zn(a)):t.value!==""+zn(a)&&(t.value=""+zn(a)):w!=="submit"&&w!=="reset"||t.removeAttribute("value"),a!=null?yd(t,w,zn(a)):s!=null?yd(t,w,zn(s)):c!=null&&t.removeAttribute("value"),f==null&&g!=null&&(t.defaultChecked=!!g),f!=null&&(t.checked=f&&typeof f!="function"&&typeof f!="symbol"),T!=null&&typeof T!="function"&&typeof T!="symbol"&&typeof T!="boolean"?t.name=""+zn(T):t.removeAttribute("name")}function Ym(t,a,s,c,f,g,w,T){if(g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(t.type=g),a!=null||s!=null){if(!(g!=="submit"&&g!=="reset"||a!=null)){pd(t);return}s=s!=null?""+zn(s):"",a=a!=null?""+zn(a):s,T||a===t.value||(t.value=a),t.defaultValue=a}c=c??f,c=typeof c!="function"&&typeof c!="symbol"&&!!c,t.checked=T?t.checked:!!c,t.defaultChecked=!!c,w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"&&(t.name=w),pd(t)}function yd(t,a,s){a==="number"&&il(t.ownerDocument)===t||t.defaultValue===""+s||(t.defaultValue=""+s)}function Er(t,a,s,c){if(t=t.options,a){a={};for(var f=0;f<s.length;f++)a["$"+s[f]]=!0;for(s=0;s<t.length;s++)f=a.hasOwnProperty("$"+t[s].value),t[s].selected!==f&&(t[s].selected=f),f&&c&&(t[s].defaultSelected=!0)}else{for(s=""+zn(s),a=null,f=0;f<t.length;f++){if(t[f].value===s){t[f].selected=!0,c&&(t[f].defaultSelected=!0);return}a!==null||t[f].disabled||(a=t[f])}a!==null&&(a.selected=!0)}}function $m(t,a,s){if(a!=null&&(a=""+zn(a),a!==t.value&&(t.value=a),s==null)){t.defaultValue!==a&&(t.defaultValue=a);return}t.defaultValue=s!=null?""+zn(s):""}function Qm(t,a,s,c){if(a==null){if(c!=null){if(s!=null)throw Error(r(92));if(X(c)){if(1<c.length)throw Error(r(93));c=c[0]}s=c}s==null&&(s=""),a=s}s=zn(a),t.defaultValue=s,c=t.textContent,c===s&&c!==""&&c!==null&&(t.value=c),pd(t)}function Ir(t,a){if(a){var s=t.firstChild;if(s&&s===t.lastChild&&s.nodeType===3){s.nodeValue=a;return}}t.textContent=a}var e2=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Jm(t,a,s){var c=a.indexOf("--")===0;s==null||typeof s=="boolean"||s===""?c?t.setProperty(a,""):a==="float"?t.cssFloat="":t[a]="":c?t.setProperty(a,s):typeof s!="number"||s===0||e2.has(a)?a==="float"?t.cssFloat=s:t[a]=(""+s).trim():t[a]=s+"px"}function Xm(t,a,s){if(a!=null&&typeof a!="object")throw Error(r(62));if(t=t.style,s!=null){for(var c in s)!s.hasOwnProperty(c)||a!=null&&a.hasOwnProperty(c)||(c.indexOf("--")===0?t.setProperty(c,""):c==="float"?t.cssFloat="":t[c]="");for(var f in a)c=a[f],a.hasOwnProperty(f)&&s[f]!==c&&Jm(t,f,c)}else for(var g in a)a.hasOwnProperty(g)&&Jm(t,g,a[g])}function bd(t){if(t.indexOf("-")===-1)return!1;switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var t2=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRen
48dering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),n2=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function rl(t){return n2.test(""+t)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":t}function Pa(){}var xd=null;function vd(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Nr=null,Mr=null;function Zm(t){var a=Cr(t);if(a&&(t=a.stateNode)){var s=t[yn]||null;e:switch(t=a.stateNode,a.type){case"input":if(gd(t,s.value,s.defaultValue,s.defaultValue,s.checked,s.defaultChecked,s.type,s.name),a=s.name,s.type==="radio"&&a!=null){for(s=t;s.parentNode;)s=s.parentNode;for(s=s.querySelectorAll('input[name="'+Un(""+a)+'"][type="radio"]'),a=0;a<s.length;a++){var c=s[a];if(c!==t&&c.form===t.form){var f=c[yn]||null;if(!f)throw Error(r(90));gd(c,f.value,f.defaultValue,f.defaultValue,f.checked,f.defaultChecked,f.type,f.name)}}for(a=0;a<s.length;a++)c=s[a],c.form===t.form&&Km(c)}break e;case"textarea":$m(t,s.value,s.defaultValue);break e;case"select":a=s.value,a!=null&&Er(t,!!s.multiple,a,!1)}}}var wd=!1;function ep(t,a,s){if(wd)return t(a,s);wd=!0;try{var c=t(a);return c}finally{if(wd=!1,(Nr!==null||Mr!==null)&&(Gl(),Nr&&(a=Nr,t=Mr,Mr=Nr=null,Zm(a),t)))for(a=0;a<t.length;a++)Zm(t[a])}}function Os(t,a){var s=t.stateNode;if(s===null)return null;var c=s[yn]||null;if(c===null)return null;s=c[a];e:switch(a){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(c=!c.disabled)||(t=t.type,c=!(t==="button"||t==="input"||t==="select"||t==="textarea")),t=!c;break e;default:t=!1}if(t)return null;if(s&&typeof s!="function")throw Error(r(231,a,typeof s));return s}var Oa=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ad=!1;if(Oa)try{var Ds={};Object.defineProperty(Ds,"passive",{get:function(){Ad=!0}}),window.addEventListener("test",Ds,Ds),window.removeEventListener("test",Ds,Ds)}catch{Ad=!1}
vendor: 4,853 bytes, line 48
48var si=null,kd=null,sl=null;function tp(){if(sl)return sl;var t,a=kd,s=a.length,c,f="value"in si?si.value:si.textContent,g=f.length;for(t=0;t<s&&a[t]===f[t];t++);var w=s-t;for(c=1;c<=w&&a[s-c]===f[g-c];c++);return sl=f.slice(t,1<c?1-c:void 0)}function ol(t){var a=t.keyCode;return"charCode"in t?(t=t.charCode,t===0&&a===13&&(t=13)):t=a,t===10&&(t=13),32<=t||t===13?t:0}function ll(){return!0}function np(){return!1}function bn(t){function a(s,c,f,g,w){this._reactName=s,this._targetInst=f,this.type=c,this.nativeEvent=g,this.target=w,this.currentTarget=null;for(var T in t)t.hasOwnProperty(T)&&(s=t[T],this[T]=s?s(g):g[T]);return this.isDefaultPrevented=(g.defaultPrevented!=null?g.defaultPrevented:g.returnValue===!1)?ll:np,this.isPropagationStopped=np,this}return y(a.prototype,{preventDefault:function(){this.defaultPrevented=!0;var s=this.nativeEvent;s&&(s.preventDefault?s.preventDefault():typeof s.returnValue!="unknown"&&(s.returnValue=!1),this.isDefaultPrevented=ll)},stopPropagation:function(){var s=this.nativeEvent;s&&(s.stopPropagation?s.stopPropagation():typeof s.cancelBubble!="unknown"&&(s.cancelBubble=!0),this.isPropagationStopped=ll)},persist:function(){},isPersistent:ll}),a}var Wi={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cl=bn(Wi),Rs=y({},Wi,{view:0,detail:0}),a2=bn(Rs),Sd,Td,_s,dl=y({},Rs,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:jd,button:0,buttons:0,relatedTarget:function(t){return t.relatedTarget===void 0?t.fromElement===t.srcElement?t.toElement:t.fromElement:t.relatedTarget},movementX:function(t){return"movementX"in t?t.movementX:(t!==_s&&(_s&&t.type==="mousemove"?(Sd=t.screenX-_s.screenX,Td=t.screenY-_s.screenY):Td=Sd=0,_s=t),Sd)},movementY:function(t){return"movementY"in t?t.movementY:Td}}),ap=bn(dl),i2=y({},dl,{dataTransfer:0}),r2=bn(i2),s2=y({},Rs,{relatedTarget:0}),Cd=bn(s2),o2=y({},Wi,{animationName:0,elapsedTime:0,pseudoElement:0}),l2=bn(o2),c2=y({},Wi,{clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}}),d2=bn(c2),u2=y({},Wi,{data:0}),ip=bn(u2),h2={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},f2={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},m2={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function p2(t){var a=this.nativeEvent;return a.getModifierState?a.getModifierState(t):(t=m2[t])?!!a[t]:!1}function jd(){return p2}var g2=y({},Rs,{key:function(t){if(t.key){var a=h2[t.key]||t.key;if(a!=="Unidentified")return a}return t.type==="keypress"?(t=ol(t),t===13?"Enter":String.fromCharCode(t)):t.type==="keydown"||t.type==="keyup"?f2[t.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:jd,charCode:function(t){return t.type==="keypress"?ol(t):0},keyCode:function(t){return t.type==="keydown"||t.type==="keyup"?t.keyCode:0},which:function(t){return t.type==="keypress"?ol(t):t.type==="keydown"||t.type==="keyup"?t.keyCode:0}}),y2=bn(g2),b2=y({},dl,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),rp=bn(b2),x2=y({},Rs,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:jd}),v2=bn(x2),w2=y({},Wi,{propertyName:0,elapsedTime:0,pseudoElement:0}),A2=bn(w2),k2=y({},dl,{deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:0,deltaMode:0}),S2=bn(k2),T2=y({},Wi,{newState:0,oldState:0}),C2=bn(T2),j2=[9,13,27,32],Fd=Oa&&"CompositionEvent"in window,Bs=null;Oa&&"documentMode"in document&&(Bs=document.documentMode);var F2=Oa&&"TextEvent"in window&&!Bs,sp=Oa&&(!Fd||Bs&&8<Bs&&11>=Bs),op=" ",lp=!1;function cp(t,a){switch(t){case"keyup":return j2.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function dp(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Pr=!1;function E2(t,a){switch(t){case"compositionend":return dp(a);case"keypress":return a.which!==32?null:(lp=!0,op);case"textInput":return t=a.data,t===op&&lp?null:t;default:return null}}
vendor: 6,926 bytes, line 48
48function I2(t,a){if(Pr)return t==="compositionend"||!Fd&&cp(t,a)?(t=tp(),sl=kd=si=null,Pr=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1<a.char.length)return a.char;if(a.which)return String.fromCharCode(a.which)}return null;case"compositionend":return sp&&a.locale!=="ko"?null:a.data;default:return null}}var N2={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function up(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a==="input"?!!N2[t.type]:a==="textarea"}function hp(t,a,s,c){Nr?Mr?Mr.push(c):Mr=[c]:Nr=c,a=Zl(a,"onChange"),0<a.length&&(s=new cl("onChange","change",null,s,c),t.push({event:s,listeners:a}))}var Ls=null,zs=null;function M2(t){Yy(t,0)}function ul(t){var a=Ps(t);if(Km(a))return t}function fp(t,a){if(t==="change")return a}var mp=!1;if(Oa){var Ed;if(Oa){var Id="oninput"in document;if(!Id){var pp=document.createElement("div");pp.setAttribute("oninput","return;"),Id=typeof pp.oninput=="function"}Ed=Id}else Ed=!1;mp=Ed&&(!document.documentMode||9<document.documentMode)}function gp(){Ls&&(Ls.detachEvent("onpropertychange",yp),zs=Ls=null)}function yp(t){if(t.propertyName==="value"&&ul(zs)){var a=[];hp(a,zs,t,vd(t)),ep(M2,a)}}function P2(t,a,s){t==="focusin"?(gp(),Ls=a,zs=s,Ls.attachEvent("onpropertychange",yp)):t==="focusout"&&gp()}function O2(t){if(t==="selectionchange"||t==="keyup"||t==="keydown")return ul(zs)}function D2(t,a){if(t==="click")return ul(a)}function R2(t,a){if(t==="input"||t==="change")return ul(a)}function _2(t,a){return t===a&&(t!==0||1/t===1/a)||t!==t&&a!==a}var Fn=typeof Object.is=="function"?Object.is:_2;function Us(t,a){if(Fn(t,a))return!0;if(typeof t!="object"||t===null||typeof a!="object"||a===null)return!1;var s=Object.keys(t),c=Object.keys(a);if(s.length!==c.length)return!1;for(c=0;c<s.length;c++){var f=s[c];if(!Ue.call(a,f)||!Fn(t[f],a[f]))return!1}return!0}function bp(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function xp(t,a){var s=bp(t);t=0;for(var c;s;){if(s.nodeType===3){if(c=t+s.textContent.length,t<=a&&c>=a)return{node:s,offset:a-t};t=c}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=bp(s)}}function vp(t,a){return t&&a?t===a?!0:t&&t.nodeType===3?!1:a&&a.nodeType===3?vp(t,a.parentNode):"contains"in t?t.contains(a):t.compareDocumentPosition?!!(t.compareDocumentPosition(a)&16):!1:!1}function wp(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var a=il(t.document);a instanceof t.HTMLIFrameElement;){try{var s=typeof a.contentWindow.location.href=="string"}catch{s=!1}if(s)t=a.contentWindow;else break;a=il(t.document)}return a}function Nd(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a&&(a==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||a==="textarea"||t.contentEditable==="true")}var B2=Oa&&"documentMode"in document&&11>=document.documentMode,Or=null,Md=null,Hs=null,Pd=!1;function Ap(t,a,s){var c=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Pd||Or==null||Or!==il(c)||(c=Or,"selectionStart"in c&&Nd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Hs&&Us(Hs,c)||(Hs=c,c=Zl(Md,"onSelect"),0<c.length&&(a=new cl("onSelect","select",null,a,s),t.push({event:a,listeners:c}),a.target=Or)))}function Vi(t,a){var s={};return s[t.toLowerCase()]=a.toLowerCase(),s["Webkit"+t]="webkit"+a,s["Moz"+t]="moz"+a,s}var Dr={animationend:Vi("Animation","AnimationEnd"),animationiteration:Vi("Animation","AnimationIteration"),animationstart:Vi("Animation","AnimationStart"),transitionrun:Vi("Transition","TransitionRun"),transitionstart:Vi("Transition","TransitionStart"),transitioncancel:Vi("Transition","TransitionCancel"),transitionend:Vi("Transition","TransitionEnd")},Od={},kp={};Oa&&(kp=document.createElement("div").style,"AnimationEvent"in window||(delete Dr.animationend.animation,delete Dr.animationiteration.animation,delete Dr.animationstart.animation),"TransitionEvent"in window||delete Dr.transitionend.transition);function Gi(t){if(Od[t])return Od[t];if(!Dr[t])return t;var a=Dr[t],s;for(s in a)if(a.hasOwnProperty(s)&&s in kp)return Od[t]=a[s];return t}var Sp=Gi("animationend"),Tp=Gi("animationiteration"),Cp=Gi("animationstart"),L2=Gi("transitionrun"),z2=Gi("transitionstart"),U2=Gi("transitioncancel"),jp=Gi("transitionend"),Fp=new Map,Dd="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Dd.push("scrollEnd");function ea(t,a){Fp.set(t,a),qi(a,[t])}var hl=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var a=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(a))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)},Hn=[],Rr=0,Rd=0;function fl(){for(var t=Rr,a=Rd=Rr=0;a<t;){var s=Hn[a];Hn[a++]=null;var c=Hn[a];Hn[a++]=null;var f=Hn[a];Hn[a++]=null;var g=Hn[a];if(Hn[a++]=null,c!==null&&f!==null){var w=c.pending;w===null?f.next=f:(f.next=w.next,w.next=f),c.pending=f}g!==0&&Ep(s,f,g)}}function ml(t,a,s,c){Hn[Rr++]=t,Hn[Rr++]=a,Hn[Rr++]=s,Hn[Rr++]=c,Rd|=c,t.lanes|=c,t=t.alternate,t!==null&&(t.lanes|=c)}function _d(t,a,s,c){return ml(t,a,s,c),pl(t)}function Ki(t,a){return ml(t,null,null,a),pl(t)}function Ep(t,a,s){t.lanes|=s;var c=t.alternate;c!==null&&(c.lanes|=s);for(var f=!1,g=t.return;g!==null;)g.childLanes|=s,c=g.alternate,c!==null&&(c.childLanes|=s),g.tag===22&&(t=g.stateNode,t===null||t._visibility&1||(f=!0)),t=g,g=g.return;return t.tag===3?(g=t.stateNode,f&&a!==null&&(f=31-it(s),t=g.hiddenUpdates,c=t[f],c===null?t[f]=[a]:c.push(a),a.lane=s|536870912),g):null}function pl(t){if(50<uo)throw uo=0,Gu=null,Error(r(185));for(var a=t.return;a!==null;)t=a,a=t.return;return t.tag===3?t.stateNode:null}var _r={};function H2(t,a,s,c){this.tag=t,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.t
vendor: 15,059 bytes, line 48
48ype=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=a,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=c,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function En(t,a,s,c){return new H2(t,a,s,c)}function Bd(t){return t=t.prototype,!(!t||!t.isReactComponent)}function Da(t,a){var s=t.alternate;return s===null?(s=En(t.tag,a,t.key,t.mode),s.elementType=t.elementType,s.type=t.type,s.stateNode=t.stateNode,s.alternate=t,t.alternate=s):(s.pendingProps=a,s.type=t.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=t.flags&65011712,s.childLanes=t.childLanes,s.lanes=t.lanes,s.child=t.child,s.memoizedProps=t.memoizedProps,s.memoizedState=t.memoizedState,s.updateQueue=t.updateQueue,a=t.dependencies,s.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext},s.sibling=t.sibling,s.index=t.index,s.ref=t.ref,s.refCleanup=t.refCleanup,s}function Ip(t,a){t.flags&=65011714;var s=t.alternate;return s===null?(t.childLanes=0,t.lanes=a,t.child=null,t.subtreeFlags=0,t.memoizedProps=null,t.memoizedState=null,t.updateQueue=null,t.dependencies=null,t.stateNode=null):(t.childLanes=s.childLanes,t.lanes=s.lanes,t.child=s.child,t.subtreeFlags=0,t.deletions=null,t.memoizedProps=s.memoizedProps,t.memoizedState=s.memoizedState,t.updateQueue=s.updateQueue,t.type=s.type,a=s.dependencies,t.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext}),t}function gl(t,a,s,c,f,g){var w=0;if(c=t,typeof t=="function")Bd(t)&&(w=1);else if(typeof t=="string")w=K1(t,s,V.current)?26:t==="html"||t==="head"||t==="body"?27:5;else e:switch(t){case N:return t=En(31,s,a,f),t.elementType=N,t.lanes=g,t;case E:return Yi(s.children,f,g,a);case O:w=8,f|=24;break;case C:return t=En(12,s,a,f|2),t.elementType=C,t.lanes=g,t;case G:return t=En(13,s,a,f),t.elementType=G,t.lanes=g,t;case P:return t=En(19,s,a,f),t.elementType=P,t.lanes=g,t;default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case q:w=10;break e;case _:w=9;break e;case Y:w=11;break e;case M:w=14;break e;case W:w=16,c=null;break e}w=29,s=Error(r(130,t===null?"null":typeof t,"")),c=null}return a=En(w,s,a,f),a.elementType=t,a.type=c,a.lanes=g,a}function Yi(t,a,s,c){return t=En(7,t,c,a),t.lanes=s,t}function Ld(t,a,s){return t=En(6,t,null,a),t.lanes=s,t}function Np(t){var a=En(18,null,null,0);return a.stateNode=t,a}function zd(t,a,s){return a=En(4,t.children!==null?t.children:[],t.key,a),a.lanes=s,a.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},a}var Mp=new WeakMap;function qn(t,a){if(typeof t=="object"&&t!==null){var s=Mp.get(t);return s!==void 0?s:(a={value:t,source:a,stack:tn(a)},Mp.set(t,a),a)}return{value:t,source:a,stack:tn(a)}}var Br=[],Lr=0,yl=null,qs=0,Wn=[],Vn=0,oi=null,ga=1,ya="";function Ra(t,a){Br[Lr++]=qs,Br[Lr++]=yl,yl=t,qs=a}function Pp(t,a,s){Wn[Vn++]=ga,Wn[Vn++]=ya,Wn[Vn++]=oi,oi=t;var c=ga;t=ya;var f=32-it(c)-1;c&=~(1<<f),s+=1;var g=32-it(a)+f;if(30<g){var w=f-f%5;g=(c&(1<<w)-1).toString(32),c>>=w,f-=w,ga=1<<32-it(a)+f|s<<f|c,ya=g+t}else ga=1<<g|s<<f|c,ya=t}function Ud(t){t.return!==null&&(Ra(t,1),Pp(t,1,0))}function Hd(t){for(;t===yl;)yl=Br[--Lr],Br[Lr]=null,qs=Br[--Lr],Br[Lr]=null;for(;t===oi;)oi=Wn[--Vn],Wn[Vn]=null,ya=Wn[--Vn],Wn[Vn]=null,ga=Wn[--Vn],Wn[Vn]=null}function Op(t,a){Wn[Vn++]=ga,Wn[Vn++]=ya,Wn[Vn++]=oi,ga=a.id,ya=a.overflow,oi=t}var Qt=null,bt=null,Ye=!1,li=null,Gn=!1,qd=Error(r(519));function ci(t){var a=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw Ws(qn(a,t)),qd}function Dp(t){var a=t.stateNode,s=t.type,c=t.memoizedProps;switch(a[$t]=t,a[yn]=c,s){case"dialog":Ve("cancel",a),Ve("close",a);break;case"iframe":case"object":case"embed":Ve("load",a);break;case"video":case"audio":for(s=0;s<fo.length;s++)Ve(fo[s],a);break;case"source":Ve("error",a);break;case"img":case"image":case"link":Ve("error",a),Ve("load",a);break;case"details":Ve("toggle",a);break;case"input":Ve("invalid",a),Ym(a,c.value,c.defaultValue,c.checked,c.defaultChecked,c.type,c.name,!0);break;case"select":Ve("invalid",a);break;case"textarea":Ve("invalid",a),Qm(a,c.value,c.defaultValue,c.children)}s=c.children,typeof s!="string"&&typeof s!="number"&&typeof s!="bigint"||a.textContent===""+s||c.suppressHydrationWarning===!0||Xy(a.textContent,s)?(c.popover!=null&&(Ve("beforetoggle",a),Ve("toggle",a)),c.onScroll!=null&&Ve("scroll",a),c.onScrollEnd!=null&&Ve("scrollend",a),c.onClick!=null&&(a.onclick=Pa),a=!0):a=!1,a||ci(t,!0)}function Rp(t){for(Qt=t.return;Qt;)switch(Qt.tag){case 5:case 31:case 13:Gn=!1;return;case 27:case 3:Gn=!0;return;default:Qt=Qt.return}}function zr(t){if(t!==Qt)return!1;if(!Ye)return Rp(t),Ye=!0,!1;var a=t.tag,s;if((s=a!==3&&a!==27)&&((s=a===5)&&(s=t.type,s=!(s!=="form"&&s!=="button")||oh(t.type,t.memoizedProps)),s=!s),s&&bt&&ci(t),Rp(t),a===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(317));bt=ob(t)}else if(a===31){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(317));bt=ob(t)}else a===27?(a=bt,ki(t.type)?(t=hh,hh=null,bt=t):bt=a):bt=Qt?Yn(t.stateNode.nextSibling):null;return!0}function $i(){bt=Qt=null,Ye=!1}function Wd(){var t=li;return t!==null&&(An===null?An=t:An.push.apply(An,t),li=null),t}function Ws(t){li===null?li=[t]:li.push(t)}var Vd=A(null),Qi=null,_a=null;function di(t,a,s){k(Vd,a._currentValue),a._currentValue=s}function Ba(t){t._currentValue=Vd.current,U(Vd)}function Gd(t,a,s){for(;t!==null;){var c=t.alternate;if((t.childLanes&a)!==a?(t.childLanes|=a,c!==null&&(c.childLanes|=a)):c!==null&&(c.childLanes&a)!==a&&(c.childLanes|=a),t===s)break;t=t.return}}function Kd(t,a,s,c){var f=t.child;for(f!==null&&(f.return=t);f!==null;){var g=f.dependencies;if(g!==null){var w=f.child;g=g.firstContext;e:for(;g!==null;){var T=g;g=f;for(var R=0;R<a.length;R++)if(T.context===a[R]){g.lanes|=s,T=g.alternate,T!==null&&(T.lanes|=s),Gd(g.return,s,t),c||(w=null);break e}g=T.next}}else if(f.tag===18){if(w=f.return,w===null)throw Error(r(341));w.lanes|=s,g=w.alternate,g!==null&&(g.lanes|=s),Gd(w,s,t),w=null}else w=f.child;if(w!==null)w.return=f;else for(w=f;w!==null;){if(w===t){w=null;break}if(f=w.sibling,f!==null){f.return=w.return,w=f;break}w=w.return}f=w}}function Ur(t,a,s,c){t=null;for(var f=a,g=!1;f!==null;){if(!g){if((f.flags&524288)!==0)g=!0;else if((f.flags&262144)!==0)break}if(f.tag===10){var w=f.alternate;if(w===null)throw Error(r(387));if(w=w.memoizedProps,w!==null){var T=f.type;Fn(f.pendingProps.value,w.value)||(t!==null?t.push(T):t=[T])}}else if(f===ne.current){if(w=f.alternate,w===null)throw Error(r(387));w.memoizedState.memoizedState!==f.memoizedState.memoizedState&&(t!==null?t.push(bo):t=[bo])}f=f.return}t!==null&&Kd(a,t,s,c),a.flags|=262144}function bl(t){for(t=t.firstContext;t!==null;){if(!Fn(t.context._currentValue,t.memoizedValue))return!0;t=t.next}return!1}function Ji(t){Qi=t,_a=null,t=t.dependencies,t!==null&&(t.firstContext=null)}function Jt(t){return _p(Qi,t)}function xl(t,a){return Qi===null&&Ji(t),_p(t,a)}function _p(t,a){var s=a._currentValue;if(a={context:a,memoizedValue:s,next:null},_a===null){if(t===null)throw Error(r(308));_a=a,t.dependencies={lanes:0,firstContext:a},t.flags|=524288}else _a=_a.next=a;return s}var q2=typeof AbortController<"u"?AbortController:function(){var t=[],a=this.signal={aborted:!1,addEventListener:function(s,c){t.push(c)}};this.abort=function(){a.aborted=!0,t.forEach(function(s){return s()})}},W2=e.unstable_scheduleCallback,V2=e.unstable_NormalPriority,Pt={$$typeof:q,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Yd(){return{controller:new q2,data:new Map,refCount:0}}function Vs(t){t.refCount--,t.refCount===0&&W2(V2,function(){t.controller.abort()})}var Gs=null,$d=0,Hr=0,qr=null;function G2(t,a){if(Gs===null){var s=Gs=[];$d=0,Hr=Xu(),qr={status:"pending",value:void 0,then:function(c){s.push(c)}}}return $d++,a.then(Bp,Bp),a}function Bp(){if(--$d===0&&Gs!==null){qr!==null&&(qr.status="fulfilled");var t=Gs;Gs=null,Hr=0,qr=null;for(var a=0;a<t.length;a++)(0,t[a])()}}function K2(t,a){var s=[],c={status:"pending",value:null,reason:null,then:function(f){s.push(f)}};return t.then(function(){c.status="fulfilled",c.value=a;for(var f=0;f<s.length;f++)(0,s[f])(a)},function(f){for(c.status="rejected",c.reason=f,f=0;f<s.length;f++)(0,s[f])(void 0)}),c}var Lp=F.S;F.S=function(t,a){Ay=Gt(),typeof a=="object"&&a!==null&&typeof a.then=="function"&&G2(t,a),Lp!==null&&Lp(t,a)};var Xi=A(null);function Qd(){var t=Xi.current;return t!==null?t:ft.pooledCache}function vl(t,a){a===null?k(Xi,Xi.current):k(Xi,a.pool)}function zp(){var t=Qd();return t===null?null:{parent:Pt._currentValue,pool:t}}var Wr=Error(r(460)),Jd=Error(r(474)),wl=Error(r(542)),Al={then:function(){}};function Up(t){return t=t.status,t==="fulfilled"||t==="rejected"}function Hp(t,a,s){switch(s=t[s],s===void 0?t.push(a):s!==a&&(a.then(Pa,Pa),a=s),a.status){case"fulfilled":return a.value;case"rejected":throw t=a.reason,Wp(t),t;default:if(typeof a.status=="string")a.then(Pa,Pa);else{if(t=ft,t!==null&&100<t.shellSuspendCounter)throw Error(r(482));t=a,t.status="pending",t.then(function(c){if(a.status==="pending"){var f=a;f.status="fulfilled",f.value=c}},function(c){if(a.status==="pending"){var f=a;f.status="rejected",f.reason=c}})}switch(a.status){case"fulfilled":return a.value;case"rejected":throw t=a.reason,Wp(t),t}throw er=a,Wr}}function Zi(t){try{var a=t._init;return a(t._payload)}catch(s){throw s!==null&&typeof s=="object"&&typeof s.then=="function"?(er=s,Wr):s}}var er=null;function qp(){if(er===null)throw Error(r(459));var t=er;return er=null,t}function Wp(t){if(t===Wr||t===wl)throw Error(r(483))}var Vr=null,Ks=0;function kl(t){var a=Ks;return Ks+=1,Vr===null&&(Vr=[]),Hp(Vr,t,a)}function Ys(t,a){a=a.props.ref,t.ref=a!==void 0?a:null}function Sl(t,a){throw a.$$typeof===v?Error(r(525)):(t=Object.prototype.toString.call(a),Error(r(31,t==="[object Object]"?"object with keys {"+Object.keys(a).join(", ")+"}":t)))}function Vp(t){function a(K,H){if(t){var Z=K.deletions;Z===null?(K.deletions=[H],K.flags|=16):Z.push(H)}}function s(K,H){if(!t)return null;for(;H!==null;)a(K,H),H=H.sibling;return null}function c(K){for(var H=new Map;K!==null;)K.key!==null?H.set(K.key,K):H.set(K.index,K),K=K.sibling;return H}function f(K,H){return K=Da(K,H),K.index=0,K.sibling=null,K}function g(K,H,Z){return K.index=Z,t?(Z=K.alternate,Z!==null?(Z=Z.index,Z<H?(K.flags|=67108866,H):Z):(K.flags|=67108866,H)):(K.flags|=1048576,H)}function w(K){return t&&K.alternate===null&&(K.flags|=67108866),K}function T(K,H,Z,oe){return H===null||H.tag!==6?(H=Ld(Z,K.mode,oe),H.return=K,H):(H=f(H,Z),H.return=K,H)}function R(K,H,Z,oe){var Ee=Z.type;return Ee===E?re(K,H,Z.props.children,oe,Z.key):H!==null&&(H.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===W&&Zi(Ee)===H.type)?(H=f(H,Z.props),Ys(H,Z),H.return=K,H):(H=gl(Z.type,Z.key,Z.props,null,K.mode,oe),Ys(H,Z),H.return=K,H)}function ee(K,H,Z,oe){return H===null||H.tag!==4||H.stateNode.containerInfo!==Z.containerInfo||H.stateNode.implementation!==Z.implementation?(H=zd(Z,K.mode,oe),H.return=K,H):(H=f(H,Z.children||[]),H.return=K,H)}function re(K,H,Z,oe,Ee){return H===null||H.tag!==7?(H=Yi(Z,K.mode,oe,Ee),H.return=K,H):(H=f(H,Z),H.return=K,H)}function le(K,H,Z){if(typeof H=="string"&&H!==""||typeof H=="number"||typeof H=="bigint")return H=Ld(""+H,K.mode,Z),H.return=K,H;if(typeof H=="object"&&H!==null){switch(H.$$typeof){case x:return Z=gl(H.type,H.key,H.props,null,K.mode,Z),Ys(Z,H),Z.return=K,Z;case S:return H=zd(H,K.mode,Z),H.return=K,H;case W:return H=Zi(H),le(K,H,Z)}if(X(H)||z(H))return H=Yi(H,K.mode,Z,null),H.return=K,H;if(typeof H.then=="function")return le(K,kl(H),Z);if(H.$$typeof===q)return le(K,xl(K,H),Z);Sl(K,H)}return null}function te(K,H,Z,oe){var Ee=H!==null?H.key:null;if(typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint")return Ee!==null?null:T(K,H,""+Z,oe);if(typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case x:return Z.key===Ee?R(K,H,Z,oe):null;case S:return Z.key===Ee?ee(K,H,Z,oe):null;case W:return Z=Zi(Z),te(K,H,Z,oe)}if(X(Z)||z(Z))return Ee!==null?null:re(K,H,Z,oe,null);if(typeof Z.then=="function")return te(K,H,kl(Z),oe);if(Z.$$typeof===q)return te(K,H,xl(K,Z),oe);Sl(K,Z)}return null}function ie(K,H,Z,oe,Ee){if(typeof oe=="string"&&oe!==""||typeof oe=="number"||typeof oe=="bigint")return K=K.get(Z)||null,T(H,K,""+oe,Ee);if(typeof oe=="object"&&oe!==null){switch(oe.$$typeof){case x:return K=K.get(oe.key===null?Z:oe.key)||null,R(H,K,oe,Ee);case S:return K=K.get(oe.key===null?Z:oe.key)||null,ee(H,K,oe,Ee);case W:return oe=Zi(oe),ie(K,H,Z,oe,Ee)}if(X(oe)||z(oe))return K=K.get(Z)||null,re(H,K,oe,Ee,null);if(typeof oe.then=="function")return ie(K,H,Z,kl(oe),Ee);if(oe.$$typeof===q)return ie(K,H,Z,xl(H,oe),Ee);Sl(H,oe)}return null}function ve(K,H,Z,oe){for(var Ee=null,Xe=null,Se=H,Le=H=0,Ke=null;Se!==null&&Le<Z.length;Le++){Se.index>Le?(Ke=Se,Se=null):Ke=Se.sibling;var Ze=te(K,Se,Z[Le],oe);if(Ze===null){Se===null&&(Se=Ke);break}t&&Se&&Ze.alternate===null&&a(K,Se),H=g(Ze,H,Le),Xe===null?Ee=Ze:Xe.sibling=Ze,Xe=Ze,Se=Ke}if(Le===Z.length)return s(K,Se),Ye&&Ra(K,Le),Ee;if(Se===null){for(;Le<Z.length;Le++)Se=le(K,Z[Le],oe),Se!==null&&(H=g(Se,H,Le),Xe===null?Ee=Se:Xe.sibling=Se,Xe=Se);return Ye&&Ra(K,Le),Ee}for(Se=c(Se);Le<Z.length;Le++)Ke=ie(Se,K,Le,Z[Le],oe),Ke!==null&&(t&&Ke.alternate!==null&&Se.delete(Ke.key===null?Le:Ke.key),H=g(Ke,H,Le),Xe===null?Ee=Ke:Xe.sibling=Ke,Xe=Ke);return t&&Se.forEach(function(Fi){return a(K,Fi)}),Ye&&Ra(K,Le),Ee}function Ne(K,H,Z,oe){if(Z==null)throw Error(r(151));for(var Ee=null,Xe=null,Se=H,Le=H=0,Ke=null,Ze=Z.next();Se!==null&&!Ze.done;Le++,Ze=Z.next()){Se.index>Le?(Ke=Se,Se=null):Ke=Se.sibling;var Fi=te(K,Se,Ze.value,oe);if(Fi===null){Se===null&&(Se=Ke);break}t&&Se&&Fi.alternate===null&&a(K,Se),H=g(Fi,H,Le),Xe===null?Ee=Fi:Xe.sibling=Fi,Xe=Fi,Se=Ke}if(Ze.done)return s(K,Se),Ye&&Ra(K,Le),Ee;if(Se===null){for(;!Ze.done;Le++,Ze=Z.next())Ze=le(K,Ze.value,oe),Ze!==null&&(H=g(Ze,H,Le),Xe===null?Ee=Ze:Xe.sibling=Ze,Xe=Ze);return Ye&&Ra(K,Le),Ee}for(Se=c(Se);!Ze.done;Le++,Ze=Z.next())Ze=ie(Se,K,Le,Ze.value,oe),Ze!==null&&(t&&Ze.alternate!==null&&Se.delete(Ze.key===null?Le:Ze.key),H=g(Ze,H,Le),Xe===null?Ee=Ze:Xe.sibling=Ze,Xe=Ze);return t&&Se.forEach(function(ik){return a(K,ik)}),Ye&&Ra(K,Le),Ee}function ut(K,H,Z,oe){if(typeof Z=="object"&&Z!==null&&Z.type===E&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case x:e:{for(var Ee=Z.key;H!==null;){if(H.key===Ee){if(Ee=Z.type,Ee===E){if(H.tag===7){s(K,H.sibling),oe=f(H,Z.props.children),oe.return=K,K=oe;break e}}else if(H.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===W&&Zi(Ee)===H.type){s(K,H.sibling),oe=f(H,Z.props),Ys(oe,Z),oe.return=K,K=oe;break e}s(K,H);break}else a(K,H);H=H.sibling}Z.type===E?(oe=Yi(Z.props.children,K.mode,oe,Z.key),oe.return=K,K=oe):(oe=gl(Z.type,Z.key,Z.props,null,K.mode,oe),Ys(oe,Z),oe.return=K,K=oe)}return w(K);case S:e:{for(Ee=Z.key;H!==null;
vendor: 8,812 bytes, line 48
48){if(H.key===Ee)if(H.tag===4&&H.stateNode.containerInfo===Z.containerInfo&&H.stateNode.implementation===Z.implementation){s(K,H.sibling),oe=f(H,Z.children||[]),oe.return=K,K=oe;break e}else{s(K,H);break}else a(K,H);H=H.sibling}oe=zd(Z,K.mode,oe),oe.return=K,K=oe}return w(K);case W:return Z=Zi(Z),ut(K,H,Z,oe)}if(X(Z))return ve(K,H,Z,oe);if(z(Z)){if(Ee=z(Z),typeof Ee!="function")throw Error(r(150));return Z=Ee.call(Z),Ne(K,H,Z,oe)}if(typeof Z.then=="function")return ut(K,H,kl(Z),oe);if(Z.$$typeof===q)return ut(K,H,xl(K,Z),oe);Sl(K,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,H!==null&&H.tag===6?(s(K,H.sibling),oe=f(H,Z),oe.return=K,K=oe):(s(K,H),oe=Ld(Z,K.mode,oe),oe.return=K,K=oe),w(K)):s(K,H)}return function(K,H,Z,oe){try{Ks=0;var Ee=ut(K,H,Z,oe);return Vr=null,Ee}catch(Se){if(Se===Wr||Se===wl)throw Se;var Xe=En(29,Se,null,K.mode);return Xe.lanes=oe,Xe.return=K,Xe}finally{}}}var tr=Vp(!0),Gp=Vp(!1),ui=!1;function Xd(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Zd(t,a){t=t.updateQueue,a.updateQueue===t&&(a.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function hi(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function fi(t,a,s){var c=t.updateQueue;if(c===null)return null;if(c=c.shared,(nt&2)!==0){var f=c.pending;return f===null?a.next=a:(a.next=f.next,f.next=a),c.pending=a,a=pl(t),Ep(t,null,s),a}return ml(t,c,a,s),pl(t)}function $s(t,a,s){if(a=a.updateQueue,a!==null&&(a=a.shared,(s&4194048)!==0)){var c=a.lanes;c&=t.pendingLanes,s|=c,a.lanes=s,pn(t,s)}}function eu(t,a){var s=t.updateQueue,c=t.alternate;if(c!==null&&(c=c.updateQueue,s===c)){var f=null,g=null;if(s=s.firstBaseUpdate,s!==null){do{var w={lane:s.lane,tag:s.tag,payload:s.payload,callback:null,next:null};g===null?f=g=w:g=g.next=w,s=s.next}while(s!==null);g===null?f=g=a:g=g.next=a}else f=g=a;s={baseState:c.baseState,firstBaseUpdate:f,lastBaseUpdate:g,shared:c.shared,callbacks:c.callbacks},t.updateQueue=s;return}t=s.lastBaseUpdate,t===null?s.firstBaseUpdate=a:t.next=a,s.lastBaseUpdate=a}var tu=!1;function Qs(){if(tu){var t=qr;if(t!==null)throw t}}function Js(t,a,s,c){tu=!1;var f=t.updateQueue;ui=!1;var g=f.firstBaseUpdate,w=f.lastBaseUpdate,T=f.shared.pending;if(T!==null){f.shared.pending=null;var R=T,ee=R.next;R.next=null,w===null?g=ee:w.next=ee,w=R;var re=t.alternate;re!==null&&(re=re.updateQueue,T=re.lastBaseUpdate,T!==w&&(T===null?re.firstBaseUpdate=ee:T.next=ee,re.lastBaseUpdate=R))}if(g!==null){var le=f.baseState;w=0,re=ee=R=null,T=g;do{var te=T.lane&-536870913,ie=te!==T.lane;if(ie?(Ge&te)===te:(c&te)===te){te!==0&&te===Hr&&(tu=!0),re!==null&&(re=re.next={lane:0,tag:T.tag,payload:T.payload,callback:null,next:null});e:{var ve=t,Ne=T;te=a;var ut=s;switch(Ne.tag){case 1:if(ve=Ne.payload,typeof ve=="function"){le=ve.call(ut,le,te);break e}le=ve;break e;case 3:ve.flags=ve.flags&-65537|128;case 0:if(ve=Ne.payload,te=typeof ve=="function"?ve.call(ut,le,te):ve,te==null)break e;le=y({},le,te);break e;case 2:ui=!0}}te=T.callback,te!==null&&(t.flags|=64,ie&&(t.flags|=8192),ie=f.callbacks,ie===null?f.callbacks=[te]:ie.push(te))}else ie={lane:te,tag:T.tag,payload:T.payload,callback:T.callback,next:null},re===null?(ee=re=ie,R=le):re=re.next=ie,w|=te;if(T=T.next,T===null){if(T=f.shared.pending,T===null)break;ie=T,T=ie.next,ie.next=null,f.lastBaseUpdate=ie,f.shared.pending=null}}while(!0);re===null&&(R=le),f.baseState=R,f.firstBaseUpdate=ee,f.lastBaseUpdate=re,g===null&&(f.shared.lanes=0),bi|=w,t.lanes=w,t.memoizedState=le}}function Kp(t,a){if(typeof t!="function")throw Error(r(191,t));t.call(a)}function Yp(t,a){var s=t.callbacks;if(s!==null)for(t.callbacks=null,t=0;t<s.length;t++)Kp(s[t],a)}var Gr=A(null),Tl=A(0);function $p(t,a){t=Ka,k(Tl,t),k(Gr,a),Ka=t|a.baseLanes}function nu(){k(Tl,Ka),k(Gr,Gr.current)}function au(){Ka=Tl.current,U(Gr),U(Tl)}var In=A(null),Kn=null;function mi(t){var a=t.alternate;k(Et,Et.current&1),k(In,t),Kn===null&&(a===null||Gr.current!==null||a.memoizedState!==null)&&(Kn=t)}function iu(t){k(Et,Et.current),k(In,t),Kn===null&&(Kn=t)}function Qp(t){t.tag===22?(k(Et,Et.current),k(In,t),Kn===null&&(Kn=t)):pi()}function pi(){k(Et,Et.current),k(In,In.current)}function Nn(t){U(In),Kn===t&&(Kn=null),U(Et)}var Et=A(0);function Cl(t){for(var a=t;a!==null;){if(a.tag===13){var s=a.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||dh(s)||uh(s)))return a}else if(a.tag===19&&(a.memoizedProps.revealOrder==="forwards"||a.memoizedProps.revealOrder==="backwards"||a.memoizedProps.revealOrder==="unstable_legacy-backwards"||a.memoizedProps.revealOrder==="together")){if((a.flags&128)!==0)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}var La=0,_e=null,ct=null,Ot=null,jl=!1,Kr=!1,nr=!1,Fl=0,Xs=0,Yr=null,Y2=0;function Tt(){throw Error(r(321))}function ru(t,a){if(a===null)return!1;for(var s=0;s<a.length&&s<t.length;s++)if(!Fn(t[s],a[s]))return!1;return!0}function su(t,a,s,c,f,g){return La=g,_e=a,a.memoizedState=null,a.updateQueue=null,a.lanes=0,F.H=t===null||t.memoizedState===null?Pg:wu,nr=!1,g=s(c,f),nr=!1,Kr&&(g=Xp(a,s,c,f)),Jp(t),g}function Jp(t){F.H=to;var a=ct!==null&&ct.next!==null;if(La=0,Ot=ct=_e=null,jl=!1,Xs=0,Yr=null,a)throw Error(r(300));t===null||Dt||(t=t.dependencies,t!==null&&bl(t)&&(Dt=!0))}function Xp(t,a,s,c){_e=t;var f=0;do{if(Kr&&(Yr=null),Xs=0,Kr=!1,25<=f)throw Error(r(301));if(f+=1,Ot=ct=null,t.updateQueue!=null){var g=t.updateQueue;g.lastEffect=null,g.events=null,g.stores=null,g.memoCache!=null&&(g.memoCache.index=0)}F.H=Og,g=a(s,c)}while(Kr);return g}function $2(){var t=F.H,a=t.useState()[0];return a=typeof a.then=="function"?Zs(a):a,t=t.useState()[0],(ct!==null?ct.memoizedState:null)!==t&&(_e.flags|=1024),a}function ou(){var t=Fl!==0;return Fl=0,t}function lu(t,a,s){a.updateQueue=t.updateQueue,a.flags&=-2053,t.lanes&=~s}function cu(t){if(jl){for(t=t.memoizedState;t!==null;){var a=t.queue;a!==null&&(a.pending=null),t=t.next}jl=!1}La=0,Ot=ct=_e=null,Kr=!1,Xs=Fl=0,Yr=null}function dn(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ot===null?_e.memoizedState=Ot=t:Ot=Ot.next=t,Ot}function It(){if(ct===null){var t=_e.alternate;t=t!==null?t.memoizedState:null}else t=ct.next;var a=Ot===null?_e.memoizedState:Ot.next;if(a!==null)Ot=a,ct=t;else{if(t===null)throw _e.alternate===null?Error(r(467)):Error(r(310));ct=t,t={memoizedState:ct.memoizedState,baseState:ct.baseState,baseQueue:ct.baseQueue,queue:ct.queue,next:null},Ot===null?_e.memoizedState=Ot=t:Ot=Ot.next=t}return Ot}function El(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Zs(t){var a=Xs;return Xs+=1,Yr===null&&(Yr=[]),t=Hp(Yr,t,a),a=_e,(Ot===null?a.memoizedState:Ot.next)===null&&(a=a.alternate,F.H=a===null||a.memoizedState===null?Pg:wu),t}function Il(t){if(t!==null&&typeof t=="object"){if(typeof t.then=="function")return Zs(t);if(t.$$typeof===q)return Jt(t)}throw Error(r(438,String(t)))}function du(t){var a=null,s=_e.updateQueue;if(s!==null&&(a=s.memoCache),a==null){var c=_e.alternate;c!==null&&(c=c.updateQueue,c!==null&&(c=c.memoCache,c!=null&&(a={data:c.data.map(function(f){return f.slice()}),index:0})))}if(a==null&&(a={data:[],index:0}),s===null&&(s=El(),_e.updateQueue=s),s.memoCache=a,s=a.data[a.index],s===void 0)for(s=a.data[a.index]=Array(t),c=0;c<t;c++)s[c]=L;return a.index++,s}function za(t,a){return typeof a=="function"?a(t):a}function Nl(t){var a=It();return uu(a,ct,t)}function uu(t,a,s){var c=t.queue;if(c===null)throw Error(r(311));c.lastRenderedReducer=s;var f=t.baseQueue,g=c.pending;if(g!==null){if(f!==null){var w=f.next;f.next=g.next,g.next=w}a.baseQueue=f=g,c.pending=null}if(g=t.baseState,f===null)t.memoizedState=g;else{a=f.next;var T=w=null,R=null,ee=a,re=!1;do{var le=ee.lane&-536870913;if(le!==ee.lane?(Ge&le)===le:(La&le)===le){var te=ee.revertLane;if(te===0)R!==null&&(R=R.next={lane:0,revertLane:0,gesture:null,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null}),le===Hr&&(re=!0);else if((La&te)===te){ee=ee.next,te===Hr&&(re=!0);continue}else le={lane:0,revertLane:ee.revertLane,gesture:null,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null},R===null?(T=R=le,w=g):R=R.next=le,_e.lanes|=te,bi|=te;le=ee.action,nr&&s(g,le),g=ee.hasEagerState?ee.eagerState:s(g,le)}else te={lane:le,revertLane:ee.revertLane,gesture:ee.gesture,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null},R===null?(T=R=te,w=g):R=R.next=te,_e.lanes|=le,bi|=le;ee=ee.next}
vendor: 8,210 bytes, line 48
48while(ee!==null&&ee!==a);if(R===null?w=g:R.next=T,!Fn(g,t.memoizedState)&&(Dt=!0,re&&(s=qr,s!==null)))throw s;t.memoizedState=g,t.baseState=w,t.baseQueue=R,c.lastRenderedState=g}return f===null&&(c.lanes=0),[t.memoizedState,c.dispatch]}function hu(t){var a=It(),s=a.queue;if(s===null)throw Error(r(311));s.lastRenderedReducer=t;var c=s.dispatch,f=s.pending,g=a.memoizedState;if(f!==null){s.pending=null;var w=f=f.next;do g=t(g,w.action),w=w.next;while(w!==f);Fn(g,a.memoizedState)||(Dt=!0),a.memoizedState=g,a.baseQueue===null&&(a.baseState=g),s.lastRenderedState=g}return[g,c]}function Zp(t,a,s){var c=_e,f=It(),g=Ye;if(g){if(s===void 0)throw Error(r(407));s=s()}else s=a();var w=!Fn((ct||f).memoizedState,s);if(w&&(f.memoizedState=s,Dt=!0),f=f.queue,pu(ng.bind(null,c,f,t),[t]),f.getSnapshot!==a||w||Ot!==null&&Ot.memoizedState.tag&1){if(c.flags|=2048,$r(9,{destroy:void 0},tg.bind(null,c,f,s,a),null),ft===null)throw Error(r(349));g||(La&127)!==0||eg(c,a,s)}return s}function eg(t,a,s){t.flags|=16384,t={getSnapshot:a,value:s},a=_e.updateQueue,a===null?(a=El(),_e.updateQueue=a,a.stores=[t]):(s=a.stores,s===null?a.stores=[t]:s.push(t))}function tg(t,a,s,c){a.value=s,a.getSnapshot=c,ag(a)&&ig(t)}function ng(t,a,s){return s(function(){ag(a)&&ig(t)})}function ag(t){var a=t.getSnapshot;t=t.value;try{var s=a();return!Fn(t,s)}catch{return!0}}function ig(t){var a=Ki(t,2);a!==null&&kn(a,t,2)}function fu(t){var a=dn();if(typeof t=="function"){var s=t;if(t=s(),nr){Yt(!0);try{s()}finally{Yt(!1)}}}return a.memoizedState=a.baseState=t,a.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:za,lastRenderedState:t},a}function rg(t,a,s,c){return t.baseState=s,uu(t,ct,typeof c=="function"?c:za)}function Q2(t,a,s,c,f){if(Ol(t))throw Error(r(485));if(t=a.action,t!==null){var g={payload:f,action:t,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(w){g.listeners.push(w)}};F.T!==null?s(!0):g.isTransition=!1,c(g),s=a.pending,s===null?(g.next=a.pending=g,sg(a,g)):(g.next=s.next,a.pending=s.next=g)}}function sg(t,a){var s=a.action,c=a.payload,f=t.state;if(a.isTransition){var g=F.T,w={};F.T=w;try{var T=s(f,c),R=F.S;R!==null&&R(w,T),og(t,a,T)}catch(ee){mu(t,a,ee)}finally{g!==null&&w.types!==null&&(g.types=w.types),F.T=g}}else try{g=s(f,c),og(t,a,g)}catch(ee){mu(t,a,ee)}}function og(t,a,s){s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(function(c){lg(t,a,c)},function(c){return mu(t,a,c)}):lg(t,a,s)}function lg(t,a,s){a.status="fulfilled",a.value=s,cg(a),t.state=s,a=t.pending,a!==null&&(s=a.next,s===a?t.pending=null:(s=s.next,a.next=s,sg(t,s)))}function mu(t,a,s){var c=t.pending;if(t.pending=null,c!==null){c=c.next;do a.status="rejected",a.reason=s,cg(a),a=a.next;while(a!==c)}t.action=null}function cg(t){t=t.listeners;for(var a=0;a<t.length;a++)(0,t[a])()}function dg(t,a){return a}function ug(t,a){if(Ye){var s=ft.formState;if(s!==null){e:{var c=_e;if(Ye){if(bt){t:{for(var f=bt,g=Gn;f.nodeType!==8;){if(!g){f=null;break t}if(f=Yn(f.nextSibling),f===null){f=null;break t}}g=f.data,f=g==="F!"||g==="F"?f:null}if(f){bt=Yn(f.nextSibling),c=f.data==="F!";break e}}ci(c)}c=!1}c&&(a=s[0])}}return s=dn(),s.memoizedState=s.baseState=a,c={pending:null,lanes:0,dispatch:null,lastRenderedReducer:dg,lastRenderedState:a},s.queue=c,s=Ig.bind(null,_e,c),c.dispatch=s,c=fu(!1),g=vu.bind(null,_e,!1,c.queue),c=dn(),f={state:a,dispatch:null,action:t,pending:null},c.queue=f,s=Q2.bind(null,_e,f,g,s),f.dispatch=s,c.memoizedState=t,[a,s,!1]}function hg(t){var a=It();return fg(a,ct,t)}function fg(t,a,s){if(a=uu(t,a,dg)[0],t=Nl(za)[0],typeof a=="object"&&a!==null&&typeof a.then=="function")try{var c=Zs(a)}catch(w){throw w===Wr?wl:w}else c=a;a=It();var f=a.queue,g=f.dispatch;return s!==a.memoizedState&&(_e.flags|=2048,$r(9,{destroy:void 0},J2.bind(null,f,s),null)),[c,g,t]}function J2(t,a){t.action=a}function mg(t){var a=It(),s=ct;if(s!==null)return fg(a,s,t);It(),a=a.memoizedState,s=It();var c=s.queue.dispatch;return s.memoizedState=t,[a,c,!1]}function $r(t,a,s,c){return t={tag:t,create:s,deps:c,inst:a,next:null},a=_e.updateQueue,a===null&&(a=El(),_e.updateQueue=a),s=a.lastEffect,s===null?a.lastEffect=t.next=t:(c=s.next,s.next=t,t.next=c,a.lastEffect=t),t}function pg(){return It().memoizedState}function Ml(t,a,s,c){var f=dn();_e.flags|=t,f.memoizedState=$r(1|a,{destroy:void 0},s,c===void 0?null:c)}function Pl(t,a,s,c){var f=It();c=c===void 0?null:c;var g=f.memoizedState.inst;ct!==null&&c!==null&&ru(c,ct.memoizedState.deps)?f.memoizedState=$r(a,g,s,c):(_e.flags|=t,f.memoizedState=$r(1|a,g,s,c))}function gg(t,a){Ml(8390656,8,t,a)}function pu(t,a){Pl(2048,8,t,a)}function X2(t){_e.flags|=4;var a=_e.updateQueue;if(a===null)a=El(),_e.updateQueue=a,a.events=[t];else{var s=a.events;s===null?a.events=[t]:s.push(t)}}function yg(t){var a=It().memoizedState;return X2({ref:a,nextImpl:t}),function(){if((nt&2)!==0)throw Error(r(440));return a.impl.apply(void 0,arguments)}}function bg(t,a){return Pl(4,2,t,a)}function xg(t,a){return Pl(4,4,t,a)}function vg(t,a){if(typeof a=="function"){t=t();var s=a(t);return function(){typeof s=="function"?s():a(null)}}if(a!=null)return t=t(),a.current=t,function(){a.current=null}}function wg(t,a,s){s=s!=null?s.concat([t]):null,Pl(4,4,vg.bind(null,a,t),s)}function gu(){}function Ag(t,a){var s=It();a=a===void 0?null:a;var c=s.memoizedState;return a!==null&&ru(a,c[1])?c[0]:(s.memoizedState=[t,a],t)}function kg(t,a){var s=It();a=a===void 0?null:a;var c=s.memoizedState;if(a!==null&&ru(a,c[1]))return c[0];if(c=t(),nr){Yt(!0);try{t()}finally{Yt(!1)}}return s.memoizedState=[c,a],c}function yu(t,a,s){return s===void 0||(La&1073741824)!==0&&(Ge&261930)===0?t.memoizedState=a:(t.memoizedState=s,t=Sy(),_e.lanes|=t,bi|=t,s)}function Sg(t,a,s,c){return Fn(s,a)?s:Gr.current!==null?(t=yu(t,s,c),Fn(t,a)||(Dt=!0),t):(La&42)===0||(La&1073741824)!==0&&(Ge&261930)===0?(Dt=!0,t.memoizedState=s):(t=Sy(),_e.lanes|=t,bi|=t,a)}function Tg(t,a,s,c,f){var g=D.p;D.p=g!==0&&8>g?g:8;var w=F.T,T={};F.T=T,vu(t,!1,a,s);try{var R=f(),ee=F.S;if(ee!==null&&ee(T,R),R!==null&&typeof R=="object"&&typeof R.then=="function"){var re=K2(R,c);eo(t,a,re,On(t))}else eo(t,a,c,On(t))}catch(le){eo(t,a,{then:function(){},status:"rejected",reason:le},On())}finally{D.p=g,w!==null&&T.types!==null&&(w.types=T.types),F.T=w}}function Z2(){}function bu(t,a,s,c){if(t.tag!==5)throw Error(r(476));var f=Cg(t).queue;Tg(t,f,a,B,s===null?Z2:function(){return jg(t),s(c)})}function Cg(t){var a=t.memoizedState;if(a!==null)return a;a={memoizedState:B,baseState:B,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:za,lastRenderedState:B},next:null};var s={};return a.next={memoizedState:s,baseState:s,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:za,lastRenderedState:s},next:null},t.memoizedState=a,t=t.alternate,t!==null&&(t.memoizedState=a),a}function jg(t){var a=Cg(t);a.next===null&&(a=t.alternate.memoizedState),eo(t,a.next.queue,{},On())}function xu(){return Jt(bo)}function Fg(){return It().memoizedState}function Eg(){return It().memoizedState}function e1(t){for(var a=t.return;a!==null;){switch(a.tag){case 24:case 3:var s=On();t=hi(s);var c=fi(a,t,s);c!==null&&(kn(c,a,s),$s(c,a,s)),a={cache:Yd()},t.payload=a;return}a=a.return}}function t1(t,a,s){var c=On();s={lane:c,revertLane:0,gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null},Ol(t)?Ng(a,s):(s=_d(t,a,s,c),s!==null&&(kn(s,t,c),Mg(s,a,c)))}function Ig(t,a,s){var c=On();eo(t,a,s,c)}function eo(t,a,s,c){var f={lane:c,revertLane:0,gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null};if(Ol(t))Ng(a,f);else{var g=t.alternate;if(t.lanes===0&&(g===null||g.lanes===0)&&(g=a.lastRenderedReducer,g!==null))try{var w=a.lastRenderedState,T=g(w,s);if(f.hasEagerState=!0,f.eagerState=T,Fn(T,w))return ml(t,a,f,0),ft===null&&fl(),!1}catch{}finally{}if(s=_d(t,a,f,c),s!==null)return kn(s,t,c),Mg(s,a,c),!0}return!1}function vu(t,a,s,c){if(c={lane:2,revertLane:Xu(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Ol(t)){if(a)throw Error(r(479))}else a=_d(t,s,c,2),a!==null&&kn(a,t,2)}function Ol(t){var a=t.alternate;return t===_e||a!==null&&a===_e}function Ng(t,a){Kr=jl=!0;var s=t.pending;
vendor: 10,089 bytes, line 48
48s===null?a.next=a:(a.next=s.next,s.next=a),t.pending=a}function Mg(t,a,s){if((s&4194048)!==0){var c=a.lanes;c&=t.pendingLanes,s|=c,a.lanes=s,pn(t,s)}}var to={readContext:Jt,use:Il,useCallback:Tt,useContext:Tt,useEffect:Tt,useImperativeHandle:Tt,useLayoutEffect:Tt,useInsertionEffect:Tt,useMemo:Tt,useReducer:Tt,useRef:Tt,useState:Tt,useDebugValue:Tt,useDeferredValue:Tt,useTransition:Tt,useSyncExternalStore:Tt,useId:Tt,useHostTransitionStatus:Tt,useFormState:Tt,useActionState:Tt,useOptimistic:Tt,useMemoCache:Tt,useCacheRefresh:Tt};to.useEffectEvent=Tt;var Pg={readContext:Jt,use:Il,useCallback:function(t,a){return dn().memoizedState=[t,a===void 0?null:a],t},useContext:Jt,useEffect:gg,useImperativeHandle:function(t,a,s){s=s!=null?s.concat([t]):null,Ml(4194308,4,vg.bind(null,a,t),s)},useLayoutEffect:function(t,a){return Ml(4194308,4,t,a)},useInsertionEffect:function(t,a){Ml(4,2,t,a)},useMemo:function(t,a){var s=dn();a=a===void 0?null:a;var c=t();if(nr){Yt(!0);try{t()}finally{Yt(!1)}}return s.memoizedState=[c,a],c},useReducer:function(t,a,s){var c=dn();if(s!==void 0){var f=s(a);if(nr){Yt(!0);try{s(a)}finally{Yt(!1)}}}else f=a;return c.memoizedState=c.baseState=f,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:f},c.queue=t,t=t.dispatch=t1.bind(null,_e,t),[c.memoizedState,t]},useRef:function(t){var a=dn();return t={current:t},a.memoizedState=t},useState:function(t){t=fu(t);var a=t.queue,s=Ig.bind(null,_e,a);return a.dispatch=s,[t.memoizedState,s]},useDebugValue:gu,useDeferredValue:function(t,a){var s=dn();return yu(s,t,a)},useTransition:function(){var t=fu(!1);return t=Tg.bind(null,_e,t.queue,!0,!1),dn().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,a,s){var c=_e,f=dn();if(Ye){if(s===void 0)throw Error(r(407));s=s()}else{if(s=a(),ft===null)throw Error(r(349));(Ge&127)!==0||eg(c,a,s)}f.memoizedState=s;var g={value:s,getSnapshot:a};return f.queue=g,gg(ng.bind(null,c,g,t),[t]),c.flags|=2048,$r(9,{destroy:void 0},tg.bind(null,c,g,s,a),null),s},useId:function(){var t=dn(),a=ft.identifierPrefix;if(Ye){var s=ya,c=ga;s=(c&~(1<<32-it(c)-1)).toString(32)+s,a="_"+a+"R_"+s,s=Fl++,0<s&&(a+="H"+s.toString(32)),a+="_"}else s=Y2++,a="_"+a+"r_"+s.toString(32)+"_";return t.memoizedState=a},useHostTransitionStatus:xu,useFormState:ug,useActionState:ug,useOptimistic:function(t){var a=dn();a.memoizedState=a.baseState=t;var s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return a.queue=s,a=vu.bind(null,_e,!0,s),s.dispatch=a,[t,a]},useMemoCache:du,useCacheRefresh:function(){return dn().memoizedState=e1.bind(null,_e)},useEffectEvent:function(t){var a=dn(),s={impl:t};return a.memoizedState=s,function(){if((nt&2)!==0)throw Error(r(440));return s.impl.apply(void 0,arguments)}}},wu={readContext:Jt,use:Il,useCallback:Ag,useContext:Jt,useEffect:pu,useImperativeHandle:wg,useInsertionEffect:bg,useLayoutEffect:xg,useMemo:kg,useReducer:Nl,useRef:pg,useState:function(){return Nl(za)},useDebugValue:gu,useDeferredValue:function(t,a){var s=It();return Sg(s,ct.memoizedState,t,a)},useTransition:function(){var t=Nl(za)[0],a=It().memoizedState;return[typeof t=="boolean"?t:Zs(t),a]},useSyncExternalStore:Zp,useId:Fg,useHostTransitionStatus:xu,useFormState:hg,useActionState:hg,useOptimistic:function(t,a){var s=It();return rg(s,ct,t,a)},useMemoCache:du,useCacheRefresh:Eg};wu.useEffectEvent=yg;var Og={readContext:Jt,use:Il,useCallback:Ag,useContext:Jt,useEffect:pu,useImperativeHandle:wg,useInsertionEffect:bg,useLayoutEffect:xg,useMemo:kg,useReducer:hu,useRef:pg,useState:function(){return hu(za)},useDebugValue:gu,useDeferredValue:function(t,a){var s=It();return ct===null?yu(s,t,a):Sg(s,ct.memoizedState,t,a)},useTransition:function(){var t=hu(za)[0],a=It().memoizedState;return[typeof t=="boolean"?t:Zs(t),a]},useSyncExternalStore:Zp,useId:Fg,useHostTransitionStatus:xu,useFormState:mg,useActionState:mg,useOptimistic:function(t,a){var s=It();return ct!==null?rg(s,ct,t,a):(s.baseState=t,[t,s.queue.dispatch])},useMemoCache:du,useCacheRefresh:Eg};Og.useEffectEvent=yg;function Au(t,a,s,c){a=t.memoizedState,s=s(c,a),s=s==null?a:y({},a,s),t.memoizedState=s,t.lanes===0&&(t.updateQueue.baseState=s)}var ku={enqueueSetState:function(t,a,s){t=t._reactInternals;var c=On(),f=hi(c);f.payload=a,s!=null&&(f.callback=s),a=fi(t,f,c),a!==null&&(kn(a,t,c),$s(a,t,c))},enqueueReplaceState:function(t,a,s){t=t._reactInternals;var c=On(),f=hi(c);f.tag=1,f.payload=a,s!=null&&(f.callback=s),a=fi(t,f,c),a!==null&&(kn(a,t,c),$s(a,t,c))},enqueueForceUpdate:function(t,a){t=t._reactInternals;var s=On(),c=hi(s);c.tag=2,a!=null&&(c.callback=a),a=fi(t,c,s),a!==null&&(kn(a,t,s),$s(a,t,s))}};function Dg(t,a,s,c,f,g,w){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(c,g,w):a.prototype&&a.prototype.isPureReactComponent?!Us(s,c)||!Us(f,g):!0}function Rg(t,a,s,c){t=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(s,c),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(s,c),a.state!==t&&ku.enqueueReplaceState(a,a.state,null)}function ar(t,a){var s=a;if("ref"in a){s={};for(var c in a)c!=="ref"&&(s[c]=a[c])}if(t=t.defaultProps){s===a&&(s=y({},s));for(var f in t)s[f]===void 0&&(s[f]=t[f])}return s}function _g(t){hl(t)}function Bg(t){console.error(t)}function Lg(t){hl(t)}function Dl(t,a){try{var s=t.onUncaughtError;s(a.value,{componentStack:a.stack})}catch(c){setTimeout(function(){throw c})}}function zg(t,a,s){try{var c=t.onCaughtError;c(s.value,{componentStack:s.stack,errorBoundary:a.tag===1?a.stateNode:null})}catch(f){setTimeout(function(){throw f})}}function Su(t,a,s){return s=hi(s),s.tag=3,s.payload={element:null},s.callback=function(){Dl(t,a)},s}function Ug(t){return t=hi(t),t.tag=3,t}function Hg(t,a,s,c){var f=s.type.getDerivedStateFromError;if(typeof f=="function"){var g=c.value;t.payload=function(){return f(g)},t.callback=function(){zg(a,s,c)}}var w=s.stateNode;w!==null&&typeof w.componentDidCatch=="function"&&(t.callback=function(){zg(a,s,c),typeof f!="function"&&(xi===null?xi=new Set([this]):xi.add(this));var T=c.stack;this.componentDidCatch(c.value,{componentStack:T!==null?T:""})})}function n1(t,a,s,c,f){if(s.flags|=32768,c!==null&&typeof c=="object"&&typeof c.then=="function"){if(a=s.alternate,a!==null&&Ur(a,s,f,!0),s=In.current,s!==null){switch(s.tag){case 31:case 13:return Kn===null?Kl():s.alternate===null&&Ct===0&&(Ct=3),s.flags&=-257,s.flags|=65536,s.lanes=f,c===Al?s.flags|=16384:(a=s.updateQueue,a===null?s.updateQueue=new Set([c]):a.add(c),$u(t,c,f)),!1;case 22:return s.flags|=65536,c===Al?s.flags|=16384:(a=s.updateQueue,a===null?(a={transitions:null,markerInstances:null,retryQueue:new Set([c])},s.updateQueue=a):(s=a.retryQueue,s===null?a.retryQueue=new Set([c]):s.add(c)),$u(t,c,f)),!1}throw Error(r(435,s.tag))}return $u(t,c,f),Kl(),!1}if(Ye)return a=In.current,a!==null?((a.flags&65536)===0&&(a.flags|=256),a.flags|=65536,a.lanes=f,c!==qd&&(t=Error(r(422),{cause:c}),Ws(qn(t,s)))):(c!==qd&&(a=Error(r(423),{cause:c}),Ws(qn(a,s))),t=t.current.alternate,t.flags|=65536,f&=-f,t.lanes|=f,c=qn(c,s),f=Su(t.stateNode,c,f),eu(t,f),Ct!==4&&(Ct=2)),!1;var g=Error(r(520),{cause:c});if(g=qn(g,s),co===null?co=[g]:co.push(g),Ct!==4&&(Ct=2),a===null)return!0;c=qn(c,s),s=a;do{switch(s.tag){case 3:return s.flags|=65536,t=f&-f,s.lanes|=t,t=Su(s.stateNode,c,t),eu(s,t),!1;case 1:if(a=s.type,g=s.stateNode,(s.flags&128)===0&&(typeof a.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(xi===null||!xi.has(g))))return s.flags|=65536,f&=-f,s.lanes|=f,f=Ug(f),Hg(f,t,s,c),eu(s,f),!1}s=s.return}while(s!==null);return!1}var Tu=Error(r(461)),Dt=!1;function Xt(t,a,s,c){a.child=t===null?Gp(a,null,s,c):tr(a,t.child,s,c)}function qg(t,a,s,c,f){s=s.render;var g=a.ref;if("ref"in c){var w={};for(var T in c)T!=="ref"&&(w[T]=c[T])}else w=c;return Ji(a),c=su(t,a,s,w,g,f),T=ou(),t!==null&&!Dt?(lu(t,a,f),Ua(t,a,f)):(Ye&&T&&Ud(a),a.flags|=1,Xt(t,a,c,f),a.child)}function Wg(t,a,s,c,f){if(t===null){var g=s.type;return typeof g=="function"&&!Bd(g)&&g.defaultProps===void 0&&s.compare===null?(a.tag=15,a.type=g,Vg(t,a,g,c,f)):(t=gl(s.type,null,c,a,a.mode,f),t.ref=a.ref,t.return=a,a.child=t)}if(g=t.child,!Pu(t,f)){var w=g.memoizedProps;if(s=s.compare,s=s!==null?s:Us,s(w,c)&&t.ref===a.ref)return Ua(t,a,f)}return a.flags|=1,t=Da(g,c),t.ref=a.ref,t.return=a,a.child=t}function Vg(t,a,s,c,f){if(t!==null){var g=t.memoizedProps;if(Us(g,c)&&t.ref===a.ref)if(Dt=!1,a.pendingProps=c=g,Pu(t,f))(t.flags&131072)!==0&&(Dt=!0);else return a.lanes=t.lanes,Ua(t,a,f)}return Cu(t,a,s,c,f)}function Gg(t,a,s,c){var f=c.children,g=t!==null?t.memoizedState:null;if(t===null&&a.stateNode===null&&(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),c.mode==="hidden"){if((a.flags&128)!==0){if(g=g!==null?g.baseLanes|s:s,t!==null){for(c=a.child=t.child,f=0;c!==null;)f=f|c.lanes|c.childLanes,c=c.sibling;c=f&~g}else c=0,a.child=null;return Kg(t,a,g,s,c)}if((s&536870912)!==0)a.memoizedState={baseLanes:0,cachePool:null},t!==null&&vl(a,g!==null?g.cachePool:null),g!==null?$p(a,g):nu(),Qp(a);else return c=a.lanes=536870912,Kg(t,a,g!==null?g.baseLanes|s:s,s,c)}else g!==null?(vl(a,g.cachePool),$p(a,g),pi(),a.memoizedState=null):(t!==null&&vl(a,null),nu(),pi());return Xt(t,a,f,s),a.child}function no(t,a){return t!==null&&t.tag===22||a.stateNode!==null||(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.sibling}function Kg(t,a,s,c,f){var g=Qd();return g=g===null?null:{parent:Pt._currentValue,pool:g},a.memoizedState={baseLanes:s,cachePool:g},t!==null&&vl(a,null),nu(),Qp(a),t!==null&&Ur(t,a,c,!0),a.childLanes=f,null}function Rl(t,a){return a=Bl({mode:a.mode,children:a.children},t.mode),a.ref=t.ref,t.child=a,a.return=t,a}function Yg(t,a,s){return tr(a,t.child,null,s),t=Rl(a,a.pendingProps),t.flags|=2,Nn(a),a.memoizedState=null,t}function a1(t,a,s){var c=a.pendingProps,f=(a.flags&128)!==0;if(a.flags&=-129,t===null){if(Ye){if(c.mode==="hidden")return t=Rl(a,c),a.lanes=536870912,no(null,t);
vendor: 4,103 bytes, line 48
48if(iu(a),(t=bt)?(t=sb(t,Gn),t=t!==null&&t.data==="&"?t:null,t!==null&&(a.memoizedState={dehydrated:t,treeContext:oi!==null?{id:ga,overflow:ya}:null,retryLane:536870912,hydrationErrors:null},s=Np(t),s.return=a,a.child=s,Qt=a,bt=null)):t=null,t===null)throw ci(a);return a.lanes=536870912,null}return Rl(a,c)}var g=t.memoizedState;if(g!==null){var w=g.dehydrated;if(iu(a),f)if(a.flags&256)a.flags&=-257,a=Yg(t,a,s);else if(a.memoizedState!==null)a.child=t.child,a.flags|=128,a=null;else throw Error(r(558));else if(Dt||Ur(t,a,s,!1),f=(s&t.childLanes)!==0,Dt||f){if(c=ft,c!==null&&(w=gn(c,s),w!==0&&w!==g.retryLane))throw g.retryLane=w,Ki(t,w),kn(c,t,w),Tu;Kl(),a=Yg(t,a,s)}else t=g.treeContext,bt=Yn(w.nextSibling),Qt=a,Ye=!0,li=null,Gn=!1,t!==null&&Op(a,t),a=Rl(a,c),a.flags|=4096;return a}return t=Da(t.child,{mode:c.mode,children:c.children}),t.ref=a.ref,a.child=t,t.return=a,t}function _l(t,a){var s=a.ref;if(s===null)t!==null&&t.ref!==null&&(a.flags|=4194816);else{if(typeof s!="function"&&typeof s!="object")throw Error(r(284));(t===null||t.ref!==s)&&(a.flags|=4194816)}}function Cu(t,a,s,c,f){return Ji(a),s=su(t,a,s,c,void 0,f),c=ou(),t!==null&&!Dt?(lu(t,a,f),Ua(t,a,f)):(Ye&&c&&Ud(a),a.flags|=1,Xt(t,a,s,f),a.child)}function $g(t,a,s,c,f,g){return Ji(a),a.updateQueue=null,s=Xp(a,c,s,f),Jp(t),c=ou(),t!==null&&!Dt?(lu(t,a,g),Ua(t,a,g)):(Ye&&c&&Ud(a),a.flags|=1,Xt(t,a,s,g),a.child)}function Qg(t,a,s,c,f){if(Ji(a),a.stateNode===null){var g=_r,w=s.contextType;typeof w=="object"&&w!==null&&(g=Jt(w)),g=new s(c,g),a.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,g.updater=ku,a.stateNode=g,g._reactInternals=a,g=a.stateNode,g.props=c,g.state=a.memoizedState,g.refs={},Xd(a),w=s.contextType,g.context=typeof w=="object"&&w!==null?Jt(w):_r,g.state=a.memoizedState,w=s.getDerivedStateFromProps,typeof w=="function"&&(Au(a,s,w,c),g.state=a.memoizedState),typeof s.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(w=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),w!==g.state&&ku.enqueueReplaceState(g,g.state,null),Js(a,c,g,f),Qs(),g.state=a.memoizedState),typeof g.componentDidMount=="function"&&(a.flags|=4194308),c=!0}else if(t===null){g=a.stateNode;var T=a.memoizedProps,R=ar(s,T);g.props=R;var ee=g.context,re=s.contextType;w=_r,typeof re=="object"&&re!==null&&(w=Jt(re));var le=s.getDerivedStateFromProps;re=typeof le=="function"||typeof g.getSnapshotBeforeUpdate=="function",T=a.pendingProps!==T,re||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(T||ee!==w)&&Rg(a,g,c,w),ui=!1;var te=a.memoizedState;g.state=te,Js(a,c,g,f),Qs(),ee=a.memoizedState,T||te!==ee||ui?(typeof le=="function"&&(Au(a,s,le,c),ee=a.memoizedState),(R=ui||Dg(a,s,R,c,te,ee,w))?(re||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount()),typeof g.componentDidMount=="function"&&(a.flags|=4194308)):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=c,a.memoizedState=ee),g.props=c,g.state=ee,g.context=w,c=R):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),c=!1)}else{g=a.stateNode,Zd(t,a),w=a.memoizedProps,re=ar(s,w),g.props=re,le=a.pendingProps,te=g.context,ee=s.contextType,R=_r,typeof ee=="object"&&ee!==null&&(R=Jt(ee)),T=s.getDerivedStateFromProps,(ee=typeof T=="function"||typeof g.getSnapshotBeforeUpdate=="function")||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(w!==le||te!==R)&&Rg(a,g,c,R),ui=!1,te=a.memoizedState,g.state=te,Js(a,c,g,f),Qs();var ie=a.memoizedState;w!==le||te!==ie||ui||t!==null&&t.dependencies!==null&&bl(t.dependencies)?(typeof T=="function"&&(Au(a,s,T,c),ie=a.memoizedState),(re=ui||Dg(a,s,re,c,te,ie,R)||t!==null&&t.depen
vendor: 3,794 bytes, line 48
48dencies!==null&&bl(t.dependencies))?(ee||typeof g.UNSAFE_componentWillUpdate!="function"&&typeof g.componentWillUpdate!="function"||(typeof g.componentWillUpdate=="function"&&g.componentWillUpdate(c,ie,R),typeof g.UNSAFE_componentWillUpdate=="function"&&g.UNSAFE_componentWillUpdate(c,ie,R)),typeof g.componentDidUpdate=="function"&&(a.flags|=4),typeof g.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof g.componentDidUpdate!="function"||w===t.memoizedProps&&te===t.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===t.memoizedProps&&te===t.memoizedState||(a.flags|=1024),a.memoizedProps=c,a.memoizedState=ie),g.props=c,g.state=ie,g.context=R,c=re):(typeof g.componentDidUpdate!="function"||w===t.memoizedProps&&te===t.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===t.memoizedProps&&te===t.memoizedState||(a.flags|=1024),c=!1)}return g=c,_l(t,a),c=(a.flags&128)!==0,g||c?(g=a.stateNode,s=c&&typeof s.getDerivedStateFromError!="function"?null:g.render(),a.flags|=1,t!==null&&c?(a.child=tr(a,t.child,null,f),a.child=tr(a,null,s,f)):Xt(t,a,s,f),a.memoizedState=g.state,t=a.child):t=Ua(t,a,f),t}function Jg(t,a,s,c){return $i(),a.flags|=256,Xt(t,a,s,c),a.child}var ju={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Fu(t){return{baseLanes:t,cachePool:zp()}}function Eu(t,a,s){return t=t!==null?t.childLanes&~s:0,a&&(t|=Pn),t}function Xg(t,a,s){var c=a.pendingProps,f=!1,g=(a.flags&128)!==0,w;if((w=g)||(w=t!==null&&t.memoizedState===null?!1:(Et.current&2)!==0),w&&(f=!0,a.flags&=-129),w=(a.flags&32)!==0,a.flags&=-33,t===null){if(Ye){if(f?mi(a):pi(),(t=bt)?(t=sb(t,Gn),t=t!==null&&t.data!=="&"?t:null,t!==null&&(a.memoizedState={dehydrated:t,treeContext:oi!==null?{id:ga,overflow:ya}:null,retryLane:536870912,hydrationErrors:null},s=Np(t),s.return=a,a.child=s,Qt=a,bt=null)):t=null,t===null)throw ci(a);return uh(t)?a.lanes=32:a.lanes=536870912,null}var T=c.children;return c=c.fallback,f?(pi(),f=a.mode,T=Bl({mode:"hidden",children:T},f),c=Yi(c,f,s,null),T.return=a,c.return=a,T.sibling=c,a.child=T,c=a.child,c.memoizedState=Fu(s),c.childLanes=Eu(t,w,s),a.memoizedState=ju,no(null,c)):(mi(a),Iu(a,T))}var R=t.memoizedState;if(R!==null&&(T=R.dehydrated,T!==null)){if(g)a.flags&256?(mi(a),a.flags&=-257,a=Nu(t,a,s)):a.memoizedState!==null?(pi(),a.child=t.child,a.flags|=128,a=null):(pi(),T=c.fallback,f=a.mode,c=Bl({mode:"visible",children:c.children},f),T=Yi(T,f,s,null),T.flags|=2,c.return=a,T.return=a,c.sibling=T,a.child=c,tr(a,t.child,null,s),c=a.child,c.memoizedState=Fu(s),c.childLanes=Eu(t,w,s),a.memoizedState=ju,a=no(null,c));else if(mi(a),uh(T)){if(w=T.nextSibling&&T.nextSibling.dataset,w)var ee=w.dgst;w=ee,c=Error(r(419)),c.stack="",c.digest=w,Ws({value:c,source:null,stack:null}),a=Nu(t,a,s)}else if(Dt||Ur(t,a,s,!1),w=(s&t.childLanes)!==0,Dt||w){if(w=ft,w!==null&&(c=gn(w,s),c!==0&&c!==R.retryLane))throw R.retryLane=c,Ki(t,c),kn(w,t,c),Tu;dh(T)||Kl(),a=Nu(t,a,s)}else dh(T)?(a.flags|=192,a.child=t.child,a=null):(t=R.treeContext,bt=Yn(T.nextSibling),Qt=a,Ye=!0,li=null,Gn=!1,t!==null&&Op(a,t),a=Iu(a,c.children),a.flags|=4096);return a}return f?(pi(),T=c.fallback,f=a.mode,R=t.child,ee=R.sibling,c=Da(R,{mode:"hidden",children:c.children}),c.subtreeFlags=R.subtreeFlags&65011712,ee!==null?T=Da(ee,T):(T=Yi(T,f,s,null),T.flags|=2),T.return=a,c.return=a,c.sibling=T,a.child=c,no(null,c),c=a.child,T=t.child.memoizedState,T===null?T=Fu(s):(f=T.cachePool,f!==null?(R=Pt._currentValue,f=f.parent!==R?{parent:R,pool:R}:f):f=zp(),T={baseLanes:T.baseLanes|s,cachePool:f}),c.memoizedState=T,c.childLanes=Eu(t,w,s),a.memoizedState=ju,no(t.child,c)):(mi(a),s=t.child,t=s.sibling,s=Da(s,{mode:"visible",children:c.children}),s.return=a,s.sibling=null,t!==null&&(w=a.deletions,w===null?(a.deleti
vendor: 5,119 bytes, line 48
48ons=[t],a.flags|=16):w.push(t)),a.child=s,a.memoizedState=null,s)}function Iu(t,a){return a=Bl({mode:"visible",children:a},t.mode),a.return=t,t.child=a}function Bl(t,a){return t=En(22,t,null,a),t.lanes=0,t}function Nu(t,a,s){return tr(a,t.child,null,s),t=Iu(a,a.pendingProps.children),t.flags|=2,a.memoizedState=null,t}function Zg(t,a,s){t.lanes|=a;var c=t.alternate;c!==null&&(c.lanes|=a),Gd(t.return,a,s)}function Mu(t,a,s,c,f,g){var w=t.memoizedState;w===null?t.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:c,tail:s,tailMode:f,treeForkCount:g}:(w.isBackwards=a,w.rendering=null,w.renderingStartTime=0,w.last=c,w.tail=s,w.tailMode=f,w.treeForkCount=g)}function ey(t,a,s){var c=a.pendingProps,f=c.revealOrder,g=c.tail;c=c.children;var w=Et.current,T=(w&2)!==0;if(T?(w=w&1|2,a.flags|=128):w&=1,k(Et,w),Xt(t,a,c,s),c=Ye?qs:0,!T&&t!==null&&(t.flags&128)!==0)e:for(t=a.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&Zg(t,s,a);else if(t.tag===19)Zg(t,s,a);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===a)break e;for(;t.sibling===null;){if(t.return===null||t.return===a)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}switch(f){case"forwards":for(s=a.child,f=null;s!==null;)t=s.alternate,t!==null&&Cl(t)===null&&(f=s),s=s.sibling;s=f,s===null?(f=a.child,a.child=null):(f=s.sibling,s.sibling=null),Mu(a,!1,f,s,g,c);break;case"backwards":case"unstable_legacy-backwards":for(s=null,f=a.child,a.child=null;f!==null;){if(t=f.alternate,t!==null&&Cl(t)===null){a.child=f;break}t=f.sibling,f.sibling=s,s=f,f=t}Mu(a,!0,s,null,g,c);break;case"together":Mu(a,!1,null,null,void 0,c);break;default:a.memoizedState=null}return a.child}function Ua(t,a,s){if(t!==null&&(a.dependencies=t.dependencies),bi|=a.lanes,(s&a.childLanes)===0)if(t!==null){if(Ur(t,a,s,!1),(s&a.childLanes)===0)return null}else return null;if(t!==null&&a.child!==t.child)throw Error(r(153));if(a.child!==null){for(t=a.child,s=Da(t,t.pendingProps),a.child=s,s.return=a;t.sibling!==null;)t=t.sibling,s=s.sibling=Da(t,t.pendingProps),s.return=a;s.sibling=null}return a.child}function Pu(t,a){return(t.lanes&a)!==0?!0:(t=t.dependencies,!!(t!==null&&bl(t)))}function i1(t,a,s){switch(a.tag){case 3:we(a,a.stateNode.containerInfo),di(a,Pt,t.memoizedState.cache),$i();break;case 27:case 5:Fe(a);break;case 4:we(a,a.stateNode.containerInfo);break;case 10:di(a,a.type,a.memoizedProps.value);break;case 31:if(a.memoizedState!==null)return a.flags|=128,iu(a),null;break;case 13:var c=a.memoizedState;if(c!==null)return c.dehydrated!==null?(mi(a),a.flags|=128,null):(s&a.child.childLanes)!==0?Xg(t,a,s):(mi(a),t=Ua(t,a,s),t!==null?t.sibling:null);mi(a);break;case 19:var f=(t.flags&128)!==0;if(c=(s&a.childLanes)!==0,c||(Ur(t,a,s,!1),c=(s&a.childLanes)!==0),f){if(c)return ey(t,a,s);a.flags|=128}if(f=a.memoizedState,f!==null&&(f.rendering=null,f.tail=null,f.lastEffect=null),k(Et,Et.current),c)break;return null;case 22:return a.lanes=0,Gg(t,a,s,a.pendingProps);case 24:di(a,Pt,t.memoizedState.cache)}return Ua(t,a,s)}function ty(t,a,s){if(t!==null)if(t.memoizedProps!==a.pendingProps)Dt=!0;else{if(!Pu(t,s)&&(a.flags&128)===0)return Dt=!1,i1(t,a,s);Dt=(t.flags&131072)!==0}else Dt=!1,Ye&&(a.flags&1048576)!==0&&Pp(a,qs,a.index);switch(a.lanes=0,a.tag){case 16:e:{var c=a.pendingProps;if(t=Zi(a.elementType),a.type=t,typeof t=="function")Bd(t)?(c=ar(t,c),a.tag=1,a=Qg(null,a,t,c,s)):(a.tag=0,a=Cu(null,a,t,c,s));else{if(t!=null){var f=t.$$typeof;if(f===Y){a.tag=11,a=qg(null,a,t,c,s);break e}else if(f===M){a.tag=14,a=Wg(null,a,t,c,s);break e}}throw a=Q(t)||t,Error(r(306,a,""))}}return a;case 0:return Cu(t,a,a.type,a.pendingProps,s);case 1:return c=a.type,f=ar(c,a.pendingProps),Qg(t,a,c,f,s);case 3:e:{if(we(a,a.stateNode.containerInfo),t===null)throw Error(r(387));c=a.pendingProps;var g=a.memoizedState;f=g.element,Zd(t,a),Js(a,c,null,s);var w=a.memoizedState;if(c=w.cache,di(a,Pt,c),c!==g.cache&&Kd(a,[Pt],s,!0),Qs(),c=w.element,g.isDehydrated)if(g={element:c,isDehydrated:!1,cache:w.cache},a.updateQueue.baseState=g,a.memoizedState=g,a.flags&256){a=Jg(t,a,c,s);break e}else if(c!==f){f=qn(Error(r(424)),a),Ws(f),a=Jg(t,a,c,s);break e}else{switch(t=a.stateNode.containerInfo,t.nodeType){case 9:t=t.body;break;default:t=t.nodeName==="HTML"?t.ownerDocument.body:t}for(bt=Yn(t.firstChild),Qt=a,Ye=!0,li=null,Gn=!0,s=Gp(a,null,c,s),a.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling}else{if($i(),c===f){a=Ua(t,a,s);break e}Xt(t,a,c,s)}a=a.child}return a;case 26:return _l(t,a),t===null?(s=hb(a.type,null,a.pendingProps,null))?a.memoizedState=s:Ye||(s=a.type,t=a.pendingProps,c=ec(ue.current).createElement(s),c[$t]=a,c[yn]=t,Zt(c,s,t),Ht(c),a.stateNode=c):a.memoizedState=hb(a.type,t.memoizedProps,a.pendingProps,t.memoizedState),null;case 27:return Fe(a),t===null&&Ye&&(c=a.stateNode=cb(a.type,a.pendingProps,ue.current),Qt=a,Gn=!0,f=bt,ki(a.type)?(hh=f,bt=Yn(c.firstChild)):bt=f),Xt(t,a,a.pendingProps.children,s),_l(t,a),t===null&&(a.flags|=4194304),a.child;case 5:return t===null&&Ye&&((f=c=bt)&&(c=O1(c,a.type,a.pendingProps,Gn),c!==null?(a.stateNode=c,Qt=a,bt=Yn(c.firstChild),Gn=!1,f=!0):f=!1),f||ci(a)),Fe(a
vendor: 4,405 bytes, line 48
48),f=a.type,g=a.pendingProps,w=t!==null?t.memoizedProps:null,c=g.children,oh(f,g)?c=null:w!==null&&oh(f,w)&&(a.flags|=32),a.memoizedState!==null&&(f=su(t,a,$2,null,null,s),bo._currentValue=f),_l(t,a),Xt(t,a,c,s),a.child;case 6:return t===null&&Ye&&((t=s=bt)&&(s=D1(s,a.pendingProps,Gn),s!==null?(a.stateNode=s,Qt=a,bt=null,t=!0):t=!1),t||ci(a)),null;case 13:return Xg(t,a,s);case 4:return we(a,a.stateNode.containerInfo),c=a.pendingProps,t===null?a.child=tr(a,null,c,s):Xt(t,a,c,s),a.child;case 11:return qg(t,a,a.type,a.pendingProps,s);case 7:return Xt(t,a,a.pendingProps,s),a.child;case 8:return Xt(t,a,a.pendingProps.children,s),a.child;case 12:return Xt(t,a,a.pendingProps.children,s),a.child;case 10:return c=a.pendingProps,di(a,a.type,c.value),Xt(t,a,c.children,s),a.child;case 9:return f=a.type._context,c=a.pendingProps.children,Ji(a),f=Jt(f),c=c(f),a.flags|=1,Xt(t,a,c,s),a.child;case 14:return Wg(t,a,a.type,a.pendingProps,s);case 15:return Vg(t,a,a.type,a.pendingProps,s);case 19:return ey(t,a,s);case 31:return a1(t,a,s);case 22:return Gg(t,a,s,a.pendingProps);case 24:return Ji(a),c=Jt(Pt),t===null?(f=Qd(),f===null&&(f=ft,g=Yd(),f.pooledCache=g,g.refCount++,g!==null&&(f.pooledCacheLanes|=s),f=g),a.memoizedState={parent:c,cache:f},Xd(a),di(a,Pt,f)):((t.lanes&s)!==0&&(Zd(t,a),Js(a,null,null,s),Qs()),f=t.memoizedState,g=a.memoizedState,f.parent!==c?(f={parent:c,cache:c},a.memoizedState=f,a.lanes===0&&(a.memoizedState=a.updateQueue.baseState=f),di(a,Pt,c)):(c=g.cache,di(a,Pt,c),c!==f.cache&&Kd(a,[Pt],s,!0))),Xt(t,a,a.pendingProps.children,s),a.child;case 29:throw a.pendingProps}throw Error(r(156,a.tag))}function Ha(t){t.flags|=4}function Ou(t,a,s,c,f){if((a=(t.mode&32)!==0)&&(a=!1),a){if(t.flags|=16777216,(f&335544128)===f)if(t.stateNode.complete)t.flags|=8192;else if(Fy())t.flags|=8192;else throw er=Al,Jd}else t.flags&=-16777217}function ny(t,a){if(a.type!=="stylesheet"||(a.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!yb(a))if(Fy())t.flags|=8192;else throw er=Al,Jd}function Ll(t,a){a!==null&&(t.flags|=4),t.flags&16384&&(a=t.tag!==22?rn():536870912,t.lanes|=a,Zr|=a)}function ao(t,a){if(!Ye)switch(t.tailMode){case"hidden":a=t.tail;for(var s=null;a!==null;)a.alternate!==null&&(s=a),a=a.sibling;s===null?t.tail=null:s.sibling=null;break;case"collapsed":s=t.tail;for(var c=null;s!==null;)s.alternate!==null&&(c=s),s=s.sibling;c===null?a||t.tail===null?t.tail=null:t.tail.sibling=null:c.sibling=null}}function xt(t){var a=t.alternate!==null&&t.alternate.child===t.child,s=0,c=0;if(a)for(var f=t.child;f!==null;)s|=f.lanes|f.childLanes,c|=f.subtreeFlags&65011712,c|=f.flags&65011712,f.return=t,f=f.sibling;else for(f=t.child;f!==null;)s|=f.lanes|f.childLanes,c|=f.subtreeFlags,c|=f.flags,f.return=t,f=f.sibling;return t.subtreeFlags|=c,t.childLanes=s,a}function r1(t,a,s){var c=a.pendingProps;switch(Hd(a),a.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return xt(a),null;case 1:return xt(a),null;case 3:return s=a.stateNode,c=null,t!==null&&(c=t.memoizedState.cache),a.memoizedState.cache!==c&&(a.flags|=2048),Ba(Pt),je(),s.pendingContext&&(s.context=s.pendingContext,s.pendingContext=null),(t===null||t.child===null)&&(zr(a)?Ha(a):t===null||t.memoizedState.isDehydrated&&(a.flags&256)===0||(a.flags|=1024,Wd())),xt(a),null;case 26:var f=a.type,g=a.memoizedState;return t===null?(Ha(a),g!==null?(xt(a),ny(a,g)):(xt(a),Ou(a,f,null,c,s))):g?g!==t.memoizedState?(Ha(a),xt(a),ny(a,g)):(xt(a),a.flags&=-16777217):(t=t.memoizedProps,t!==c&&Ha(a),xt(a),Ou(a,f,t,c,s)),null;case 27:if(rt(a),s=ue.current,f=a.type,t!==null&&a.stateNode!=null)t.memoizedProps!==c&&Ha(a);else{if(!c){if(a.stateNode===null)throw Error(r(166));return xt(a),null}t=V.current,zr(a)?Dp(a):(t=cb(f,c,s),a.stateNode=t,Ha(a))}return xt(a),null;case 5:if(rt(a),f=a.type,t!==null&&a.stateNode!=null)t.memoizedProps!==c&&Ha(a);else{if(!c){if(a.stateNode===null)throw Error(r(166));return xt(a),null}if(g=V.current,zr(a))Dp(a);else{var w=ec(ue.current);switch(g){case 1:g=w.createElementNS("http://www.w3.org/2000/svg",f);break;case 2:g=w.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;default:switch(f){case"svg":g=w.createElementNS("http://www.w3.org/2000/svg",f);break;case"math":g=w.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;case"script":g=w.createElement("div"),g.innerHTML="<script><\/script>",g=g.removeChild(g.firstChild);break;
vendor: 16,897 bytes, line 48
48case"select":g=typeof c.is=="string"?w.createElement("select",{is:c.is}):w.createElement("select"),c.multiple?g.multiple=!0:c.size&&(g.size=c.size);break;default:g=typeof c.is=="string"?w.createElement(f,{is:c.is}):w.createElement(f)}}g[$t]=a,g[yn]=c;e:for(w=a.child;w!==null;){if(w.tag===5||w.tag===6)g.appendChild(w.stateNode);else if(w.tag!==4&&w.tag!==27&&w.child!==null){w.child.return=w,w=w.child;continue}if(w===a)break e;for(;w.sibling===null;){if(w.return===null||w.return===a)break e;w=w.return}w.sibling.return=w.return,w=w.sibling}a.stateNode=g;e:switch(Zt(g,f,c),f){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&Ha(a)}}return xt(a),Ou(a,a.type,t===null?null:t.memoizedProps,a.pendingProps,s),null;case 6:if(t&&a.stateNode!=null)t.memoizedProps!==c&&Ha(a);else{if(typeof c!="string"&&a.stateNode===null)throw Error(r(166));if(t=ue.current,zr(a)){if(t=a.stateNode,s=a.memoizedProps,c=null,f=Qt,f!==null)switch(f.tag){case 27:case 5:c=f.memoizedProps}t[$t]=a,t=!!(t.nodeValue===s||c!==null&&c.suppressHydrationWarning===!0||Xy(t.nodeValue,s)),t||ci(a,!0)}else t=ec(t).createTextNode(c),t[$t]=a,a.stateNode=t}return xt(a),null;case 31:if(s=a.memoizedState,t===null||t.memoizedState!==null){if(c=zr(a),s!==null){if(t===null){if(!c)throw Error(r(318));if(t=a.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(557));t[$t]=a}else $i(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;xt(a),t=!1}else s=Wd(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=s),t=!0;if(!t)return a.flags&256?(Nn(a),a):(Nn(a),null);if((a.flags&128)!==0)throw Error(r(558))}return xt(a),null;case 13:if(c=a.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(f=zr(a),c!==null&&c.dehydrated!==null){if(t===null){if(!f)throw Error(r(318));if(f=a.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(r(317));f[$t]=a}else $i(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;xt(a),f=!1}else f=Wd(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=f),f=!0;if(!f)return a.flags&256?(Nn(a),a):(Nn(a),null)}return Nn(a),(a.flags&128)!==0?(a.lanes=s,a):(s=c!==null,t=t!==null&&t.memoizedState!==null,s&&(c=a.child,f=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(f=c.alternate.memoizedState.cachePool.pool),g=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(g=c.memoizedState.cachePool.pool),g!==f&&(c.flags|=2048)),s!==t&&s&&(a.child.flags|=8192),Ll(a,a.updateQueue),xt(a),null);case 4:return je(),t===null&&nh(a.stateNode.containerInfo),xt(a),null;case 10:return Ba(a.type),xt(a),null;case 19:if(U(Et),c=a.memoizedState,c===null)return xt(a),null;if(f=(a.flags&128)!==0,g=c.rendering,g===null)if(f)ao(c,!1);else{if(Ct!==0||t!==null&&(t.flags&128)!==0)for(t=a.child;t!==null;){if(g=Cl(t),g!==null){for(a.flags|=128,ao(c,!1),t=g.updateQueue,a.updateQueue=t,Ll(a,t),a.subtreeFlags=0,t=s,s=a.child;s!==null;)Ip(s,t),s=s.sibling;return k(Et,Et.current&1|2),Ye&&Ra(a,c.treeForkCount),a.child}t=t.sibling}c.tail!==null&&Gt()>Wl&&(a.flags|=128,f=!0,ao(c,!1),a.lanes=4194304)}else{if(!f)if(t=Cl(g),t!==null){if(a.flags|=128,f=!0,t=t.updateQueue,a.updateQueue=t,Ll(a,t),ao(c,!0),c.tail===null&&c.tailMode==="hidden"&&!g.alternate&&!Ye)return xt(a),null}else 2*Gt()-c.renderingStartTime>Wl&&s!==536870912&&(a.flags|=128,f=!0,ao(c,!1),a.lanes=4194304);c.isBackwards?(g.sibling=a.child,a.child=g):(t=c.last,t!==null?t.sibling=g:a.child=g,c.last=g)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=Gt(),t.sibling=null,s=Et.current,k(Et,f?s&1|2:s&1),Ye&&Ra(a,c.treeForkCount),t):(xt(a),null);case 22:case 23:return Nn(a),au(),c=a.memoizedState!==null,t!==null?t.memoizedState!==null!==c&&(a.flags|=8192):c&&(a.flags|=8192),c?(s&536870912)!==0&&(a.flags&128)===0&&(xt(a),a.subtreeFlags&6&&(a.flags|=8192)):xt(a),s=a.updateQueue,s!==null&&Ll(a,s.retryQueue),s=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(s=t.memoizedState.cachePool.pool),c=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(c=a.memoizedState.cachePool.pool),c!==s&&(a.flags|=2048),t!==null&&U(Xi),null;case 24:return s=null,t!==null&&(s=t.memoizedState.cache),a.memoizedState.cache!==s&&(a.flags|=2048),Ba(Pt),xt(a),null;case 25:return null;case 30:return null}throw Error(r(156,a.tag))}function s1(t,a){switch(Hd(a),a.tag){case 1:return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 3:return Ba(Pt),je(),t=a.flags,(t&65536)!==0&&(t&128)===0?(a.flags=t&-65537|128,a):null;case 26:case 27:case 5:return rt(a),null;case 31:if(a.memoizedState!==null){if(Nn(a),a.alternate===null)throw Error(r(340));$i()}return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 13:if(Nn(a),t=a.memoizedState,t!==null&&t.dehydrated!==null){if(a.alternate===null)throw Error(r(340));$i()}return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 19:return U(Et),null;case 4:return je(),null;case 10:return Ba(a.type),null;case 22:case 23:return Nn(a),au(),t!==null&&U(Xi),t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 24:return Ba(Pt),null;case 25:return null;default:return null}}function ay(t,a){switch(Hd(a),a.tag){case 3:Ba(Pt),je();break;case 26:case 27:case 5:rt(a);break;case 4:je();break;case 31:a.memoizedState!==null&&Nn(a);break;case 13:Nn(a);break;case 19:U(Et);break;case 10:Ba(a.type);break;case 22:case 23:Nn(a),au(),t!==null&&U(Xi);break;case 24:Ba(Pt)}}function io(t,a){try{var s=a.updateQueue,c=s!==null?s.lastEffect:null;if(c!==null){var f=c.next;s=f;do{if((s.tag&t)===t){c=void 0;var g=s.create,w=s.inst;c=g(),w.destroy=c}s=s.next}while(s!==f)}}catch(T){ot(a,a.return,T)}}function gi(t,a,s){try{var c=a.updateQueue,f=c!==null?c.lastEffect:null;if(f!==null){var g=f.next;c=g;do{if((c.tag&t)===t){var w=c.inst,T=w.destroy;if(T!==void 0){w.destroy=void 0,f=a;var R=s,ee=T;try{ee()}catch(re){ot(f,R,re)}}}c=c.next}while(c!==g)}}catch(re){ot(a,a.return,re)}}function iy(t){var a=t.updateQueue;if(a!==null){var s=t.stateNode;try{Yp(a,s)}catch(c){ot(t,t.return,c)}}}function ry(t,a,s){s.props=ar(t.type,t.memoizedProps),s.state=t.memoizedState;try{s.componentWillUnmount()}catch(c){ot(t,a,c)}}function ro(t,a){try{var s=t.ref;if(s!==null){switch(t.tag){case 26:case 27:case 5:var c=t.stateNode;break;case 30:c=t.stateNode;break;default:c=t.stateNode}typeof s=="function"?t.refCleanup=s(c):s.current=c}}catch(f){ot(t,a,f)}}function ba(t,a){var s=t.ref,c=t.refCleanup;if(s!==null)if(typeof c=="function")try{c()}catch(f){ot(t,a,f)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof s=="function")try{s(null)}catch(f){ot(t,a,f)}else s.current=null}function sy(t){var a=t.type,s=t.memoizedProps,c=t.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":s.autoFocus&&c.focus();break e;case"img":s.src?c.src=s.src:s.srcSet&&(c.srcset=s.srcSet)}}catch(f){ot(t,t.return,f)}}function Du(t,a,s){try{var c=t.stateNode;F1(c,t.type,s,a),c[yn]=a}catch(f){ot(t,t.return,f)}}function oy(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ki(t.type)||t.tag===4}function Ru(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||oy(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ki(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function _u(t,a,s){var c=t.tag;if(c===5||c===6)t=t.stateNode,a?(s.nodeType===9?s.body:s.nodeName==="HTML"?s.ownerDocument.body:s).insertBefore(t,a):(a=s.nodeType===9?s.body:s.nodeName==="HTML"?s.ownerDocument.body:s,a.appendChild(t),s=s._reactRootContainer,s!=null||a.onclick!==null||(a.onclick=Pa));else if(c!==4&&(c===27&&ki(t.type)&&(s=t.stateNode,a=null),t=t.child,t!==null))for(_u(t,a,s),t=t.sibling;t!==null;)_u(t,a,s),t=t.sibling}function zl(t,a,s){var c=t.tag;if(c===5||c===6)t=t.stateNode,a?s.insertBefore(t,a):s.appendChild(t);else if(c!==4&&(c===27&&ki(t.type)&&(s=t.stateNode),t=t.child,t!==null))for(zl(t,a,s),t=t.sibling;t!==null;)zl(t,a,s),t=t.sibling}function ly(t){var a=t.stateNode,s=t.memoizedProps;try{for(var c=t.type,f=a.attributes;f.length;)a.removeAttributeNode(f[0]);Zt(a,c,s),a[$t]=t,a[yn]=s}catch(g){ot(t,t.return,g)}}var qa=!1,Rt=!1,Bu=!1,cy=typeof WeakSet=="function"?WeakSet:Set,qt=null;function o1(t,a){if(t=t.containerInfo,rh=oc,t=wp(t),Nd(t)){if("selectionStart"in t)var s={start:t.selectionStart,end:t.selectionEnd};else e:{s=(s=t.ownerDocument)&&s.defaultView||window;var c=s.getSelection&&s.getSelection();if(c&&c.rangeCount!==0){s=c.anchorNode;var f=c.anchorOffset,g=c.focusNode;c=c.focusOffset;try{s.nodeType,g.nodeType}catch{s=null;break e}var w=0,T=-1,R=-1,ee=0,re=0,le=t,te=null;t:for(;;){for(var ie;le!==s||f!==0&&le.nodeType!==3||(T=w+f),le!==g||c!==0&&le.nodeType!==3||(R=w+c),le.nodeType===3&&(w+=le.nodeValue.length),(ie=le.firstChild)!==null;)te=le,le=ie;for(;;){if(le===t)break t;if(te===s&&++ee===f&&(T=w),te===g&&++re===c&&(R=w),(ie=le.nextSibling)!==null)break;le=te,te=le.parentNode}le=ie}s=T===-1||R===-1?null:{start:T,end:R}}else s=null}s=s||{start:0,end:0}}else s=null;for(sh={focusedElem:t,selectionRange:s},oc=!1,qt=a;qt!==null;)if(a=qt,t=a.child,(a.subtreeFlags&1028)!==0&&t!==null)t.return=a,qt=t;else for(;qt!==null;){switch(a=qt,g=a.alternate,t=a.flags,a.tag){case 0:if((t&4)!==0&&(t=a.updateQueue,t=t!==null?t.events:null,t!==null))for(s=0;s<t.length;s++)f=t[s],f.ref.impl=f.nextImpl;break;case 11:case 15:break;case 1:if((t&1024)!==0&&g!==null){t=void 0,s=a,f=g.memoizedProps,g=g.memoizedState,c=s.stateNode;try{var ve=ar(s.type,f);t=c.getSnapshotBeforeUpdate(ve,g),c.__reactInternalSnapshotBeforeUpdate=t}catch(Ne){ot(s,s.return,Ne)}}break;case 3:if((t&1024)!==0){if(t=a.stateNode.containerInfo,s=t.nodeType,s===9)ch(t);else if(s===1)switch(t.nodeName){case"HEAD":case"HTML":case"BODY":ch(t);break;default:t.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((t&1024)!==0)throw Error(r(163))}if(t=a.sibling,t!==null){t.return=a.return,qt=t;break}qt=a.return}}function dy(t,a,s){var c=s.flags;switch(s.tag){case 0:case 11:case 15:Va(t,s),c&4&&io(5,s);break;case 1:if(Va(t,s),c&4)if(t=s.stateNode,a===null)try{t.componentDidMount()}catch(w){ot(s,s.return,w)}else{var f=ar(s.type,a.memoizedProps);a=a.memoizedState;try{t.componentDidUpdate(f,a,t.__reactInternalSnapshotBeforeUpdate)}catch(w){ot(s,s.return,w)}}c&64&&iy(s),c&512&&ro(s,s.return);break;case 3:if(Va(t,s),c&64&&(t=s.updateQueue,t!==null)){if(a=null,s.child!==null)switch(s.child.tag){case 27:case 5:a=s.child.stateNode;break;case 1:a=s.child.stateNode}try{Yp(t,a)}catch(w){ot(s,s.return,w)}}break;case 27:a===null&&c&4&&ly(s);case 26:case 5:Va(t,s),a===null&&c&4&&sy(s),c&512&&ro(s,s.return);break;case 12:Va(t,s);break;case 31:Va(t,s),c&4&&fy(t,s);break;case 13:Va(t,s),c&4&&my(t,s),c&64&&(t=s.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&(s=g1.bind(null,s),R1(t,s))));break;case 22:if(c=s.memoizedState!==null||qa,!c){a=a!==null&&a.memoizedState!==null||Rt,f=qa;var g=Rt;qa=c,(Rt=a)&&!g?Ga(t,s,(s.subtreeFlags&8772)!==0):Va(t,s),qa=f,Rt=g}break;case 30:break;default:Va(t,s)}}function uy(t){var a=t.alternate;a!==null&&(t.alternate=null,uy(a)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(a=t.stateNode,a!==null&&md(a)),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}var wt=null,xn=!1;function Wa(t,a,s){for(s=s.child;s!==null;)hy(t,a,s),s=s.sibling}function hy(t,a,s){if(Ft&&typeof Ft.onCommitFiberUnmount=="function")try{Ft.onCommitFiberUnmount(Kt,s)}catch{}switch(s.tag){case 26:Rt||ba(s,a),Wa(t,a,s),s.memoizedState?s.memoizedState.count--:s.stateNode&&(s=s.stateNode,s.parentNode.removeChild(s));break;case 27:Rt||ba(s,a);var c=wt,f=xn;ki(s.type)&&(wt=s.stateNode,xn=!1),Wa(t,a,s),po(s.stateNode),wt=c,xn=f;break;case 5:Rt||ba(s,a);case 6:if(c=wt,f=xn,wt=null,Wa(t,a,s),wt=c,xn=f,wt!==null)if(xn)try{(wt.nodeType===9?wt.body:wt.nodeName==="HTML"?wt.ownerDocument.body:wt).removeChild(s.stateNode)}catch(g){ot(s,a,g)}else try{wt.removeChild(s.stateNode)}catch(g){ot(s,a,g)}break;case 18:wt!==null&&(xn?(t=wt,ib(t.nodeType===9?t.body:t.nodeName==="HTML"?t.ownerDocument.body:t,s.stateNode),os(t)):ib(wt,s.stateNode));break;case 4:c=wt,f=xn,wt=s.stateNode.containerInfo,xn=!0,Wa(t,a,s),wt=c,xn=f;break;case 0:case 11:case 14:case 15:gi(2,s,a),Rt||gi(4,s,a),Wa(t,a,s);break;case 1:Rt||(ba(s,a),c=s.stateNode,typeof c.componentWillUnmount=="function"&&ry(s,a,c)),Wa(t,a,s);break;case 21:Wa(t,a,s);break;case 22:Rt=(c=Rt)||s.memoizedState!==null,Wa(t,a,s),Rt=c;break;default:Wa(t,a,s)}}function fy(t,a){if(a.memoizedState===null&&(t=a.alternate,t!==null&&(t=t.memoizedState,t!==null))){t=t.dehydrated;try{os(t)}catch(s){ot(a,a.return,s)}}}function my(t,a){if(a.memoizedState===null&&(t=a.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null))))try{os(t)}catch(s){ot(a,a.return,s)}}function l1(t){switch(t.tag){case 31:case 13:case 19:var a=t.stateNode;return a===null&&(a=t.stateNode=new cy),a;case 22:return t=t.stateNode,a=t._retryCache,a===null&&(a=t._retryCache=new cy),a;default:throw Error(r(435,t.tag))}}function Ul(t,a){var s=l1(t);a.forEach(function(c){if(!s.has(c)){s.add(c);var f=y1.bind(null,t,c);c.then(f,f)}})}function vn(t,a){var s=a.deletions;if(s!==null)for(var c=0;c<s.length;c++){var f=s[c],g=t,w=a,T=w;e:for(;T!==null;){switch(T.tag){case 27:if(ki(T.type)){wt=T.stateNode,xn=!1;break e}break;case 5:wt=T.stateNode,xn=!1;break e;case 3:case 4:wt=T.stateNode.containerInfo,xn=!0;break e}T=T.return}if(wt===null)throw Error(r(160));hy(g,w,f),wt=null,xn=!1,g=f.alternate,g!==null&&(g.return=null),f.return=null}if(a.subtreeFlags&13886)for(a=a.child;a!==null;)py(a,t),a=a.sibling}var ta=null;function py(t,a){var s=t.alternate,c=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:vn(a,t),wn(t),c&4&&(gi(3,t,t.return),io(3,t),gi(5,t,t.return));break;case 1:vn(a,t),wn(t),c&512&&(Rt||s===null||ba(s,s.return)),c&64&&qa&&(t=t.updateQueue,t!==null&&(c=t.callbacks,c!==null&&(s=t.shared.hiddenCallbacks,t.shared.hiddenCallbacks=s===null?c:s.concat(c))));break;case 26:var f=ta;if(vn(a,t),wn(t),c&512&&(Rt||s===null||ba(s,s.return)),c&4){var g=s!==null?s.memoizedState:null;if(c=t.memoizedState,s===null)if(c===null)if(t.stateNode===null){e:{c=t.type,s=t.memoizedProps,f=f.ownerDocument||f;t:switch(c){case"title":g=f.getElementsByTagName("title")[0],(!g||g[Ms]||g[$t]||g.namespaceURI==="http://www.w3.org/2000/svg"||g.hasAttribute("itemprop"))&&(g=f.createElement(c),f.head.insertBefore(g,f.querySelector("head > title"))),Zt(g,c,s),g[$t]=t,Ht(g),c=g;break e;case"link":var w=pb("link","href",f).get(c+(s.href||""));if(w){for(var T=0;T<w.length;T++)if(g=w[T],g.getAttribute("href")===(s.href==null||s.href===""?null:s.href)&&g.getAttribute("rel")===(s.rel==null?null:s.rel)&&g.getAttribute("title")===(s.title==null?null:s.title)&&g.getAttribute("crossorigin")===(s.crossOrigin==null?null:s.crossOrigin)){w.splice(T,1);break t}}g=f.createElement(c),Zt(g,c,s),f.head.appendChild(g);break;case"meta":if(w=pb("meta","content",f).get(c+(s.content||""))){for(T=0;T<w.length;T++)if(g=w[T],g.getAttribute("content")===(s.content==null?null:""+s.content)&&g.getAttribute("name")===(s.name==null?null:s.name)&&g.getAttribute("property")===(s.property==null?null:s.property)&&g.getAttribute("http-equiv")===(s.httpEquiv==null?null:s.httpEquiv)&&g.getAttribute("charset")===(s.charSet==null?null:s.charSet)){w.splice(T,1);break t}}g=f.createElement(c),Zt(g,c,s),f.head.appendChild(g);break;default:throw Error(r(468,c))}g[$t]=t,Ht(g),c=g}t.stateNode=c}else gb(f,t.type,t.stateNode);else t.stateNode=mb(f,c,t.memoizedProps);else g!==c?(g===null?s.stateNode!==null&&(s=s.stateNode,s.parentNode.removeChild(s)):g.count--,c===null?gb(f,t.type,t.stateNode):mb(f,c,t.memoizedProps)):c===null&&t.stateNode!==null&&Du(t,t.memoizedProps,s.memoizedProps)}break;case 27:vn(a,t),wn(t),c&512&&(Rt||s===null||ba(s,s.return)),s!==null&&c&4&&Du(t,t.memoizedProps,s.memoizedProps);break;case 5:if(vn(a,t),wn(t),c&512&&(Rt||s===null||ba(s,s.return)),t.flags&32){f=t.stateNode;try{Ir(f,"")}catch(ve){ot(t,t.return,ve)}}c&4&&t.stateNode!=null&&(f=t.memoizedProps,Du(t,f,s!==null?s.memoizedProps:f)),c&1024&&(Bu=!0);break;case 6:if(vn(a,t),wn(t),c&4){if(t.stateNode===null)throw Error(r(162));c=t.memoizedProps,s=t.stateNode;try{s.nodeValue=c}catch(ve){ot(t,t.return,ve)}}break;case 3:if(ac=null,f=ta,ta=tc(a.containerInfo),vn(a,t),ta=f,wn(t),c&4&&s!==null&&s.memoizedState.isDehydrated)try{os(a.containerInfo)}catch(ve){ot(t,t.return,ve)}Bu&&(Bu=!1,gy(t));break;case 4:c=ta,ta=tc(t.stateNode.containerInfo),vn(a,t),wn(t),ta=c;break;case 12:vn(a,t),wn(t);break;case 31:vn(a,t),wn(t),c&4&&(c=t.updateQueue,c!==null&&(t.updateQueue=null,Ul(t,c)
vendor: 1,505 bytes, line 48
48));break;case 13:vn(a,t),wn(t),t.child.flags&8192&&t.memoizedState!==null!=(s!==null&&s.memoizedState!==null)&&(ql=Gt()),c&4&&(c=t.updateQueue,c!==null&&(t.updateQueue=null,Ul(t,c)));break;case 22:f=t.memoizedState!==null;var R=s!==null&&s.memoizedState!==null,ee=qa,re=Rt;if(qa=ee||f,Rt=re||R,vn(a,t),Rt=re,qa=ee,wn(t),c&8192)e:for(a=t.stateNode,a._visibility=f?a._visibility&-2:a._visibility|1,f&&(s===null||R||qa||Rt||ir(t)),s=null,a=t;;){if(a.tag===5||a.tag===26){if(s===null){R=s=a;try{if(g=R.stateNode,f)w=g.style,typeof w.setProperty=="function"?w.setProperty("display","none","important"):w.display="none";else{T=R.stateNode;var le=R.memoizedProps.style,te=le!=null&&le.hasOwnProperty("display")?le.display:null;T.style.display=te==null||typeof te=="boolean"?"":(""+te).trim()}}catch(ve){ot(R,R.return,ve)}}}else if(a.tag===6){if(s===null){R=a;try{R.stateNode.nodeValue=f?"":R.memoizedProps}catch(ve){ot(R,R.return,ve)}}}else if(a.tag===18){if(s===null){R=a;try{var ie=R.stateNode;f?rb(ie,!0):rb(R.stateNode,!1)}catch(ve){ot(R,R.return,ve)}}}else if((a.tag!==22&&a.tag!==23||a.memoizedState===null||a===t)&&a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break e;for(;a.sibling===null;){if(a.return===null||a.return===t)break e;s===a&&(s=null),a=a.return}s===a&&(s=null),a.sibling.return=a.return,a=a.sibling}c&4&&(c=t.updateQueue,c!==null&&(s=c.retryQueue,s!==null&&(c.retryQueue=null,Ul(t,s))));break;case 19:vn(a,t),wn(t),c&4&&(c=t.updateQueue,c!==null&&(t.updateQueue=null,Ul(t,c)
vendor: 6,264 bytes, line 48
48));break;case 30:break;case 21:break;default:vn(a,t),wn(t)}}function wn(t){var a=t.flags;if(a&2){try{for(var s,c=t.return;c!==null;){if(oy(c)){s=c;break}c=c.return}if(s==null)throw Error(r(160));switch(s.tag){case 27:var f=s.stateNode,g=Ru(t);zl(t,g,f);break;case 5:var w=s.stateNode;s.flags&32&&(Ir(w,""),s.flags&=-33);var T=Ru(t);zl(t,T,w);break;case 3:case 4:var R=s.stateNode.containerInfo,ee=Ru(t);_u(t,ee,R);break;default:throw Error(r(161))}}catch(re){ot(t,t.return,re)}t.flags&=-3}a&4096&&(t.flags&=-4097)}function gy(t){if(t.subtreeFlags&1024)for(t=t.child;t!==null;){var a=t;gy(a),a.tag===5&&a.flags&1024&&a.stateNode.reset(),t=t.sibling}}function Va(t,a){if(a.subtreeFlags&8772)for(a=a.child;a!==null;)dy(t,a.alternate,a),a=a.sibling}function ir(t){for(t=t.child;t!==null;){var a=t;switch(a.tag){case 0:case 11:case 14:case 15:gi(4,a,a.return),ir(a);break;case 1:ba(a,a.return);var s=a.stateNode;typeof s.componentWillUnmount=="function"&&ry(a,a.return,s),ir(a);break;case 27:po(a.stateNode);case 26:case 5:ba(a,a.return),ir(a);break;case 22:a.memoizedState===null&&ir(a);break;case 30:ir(a);break;default:ir(a)}t=t.sibling}}function Ga(t,a,s){for(s=s&&(a.subtreeFlags&8772)!==0,a=a.child;a!==null;){var c=a.alternate,f=t,g=a,w=g.flags;switch(g.tag){case 0:case 11:case 15:Ga(f,g,s),io(4,g);break;case 1:if(Ga(f,g,s),c=g,f=c.stateNode,typeof f.componentDidMount=="function")try{f.componentDidMount()}catch(ee){ot(c,c.return,ee)}if(c=g,f=c.updateQueue,f!==null){var T=c.stateNode;try{var R=f.shared.hiddenCallbacks;if(R!==null)for(f.shared.hiddenCallbacks=null,f=0;f<R.length;f++)Kp(R[f],T)}catch(ee){ot(c,c.return,ee)}}s&&w&64&&iy(g),ro(g,g.return);break;case 27:ly(g);case 26:case 5:Ga(f,g,s),s&&c===null&&w&4&&sy(g),ro(g,g.return);break;case 12:Ga(f,g,s);break;case 31:Ga(f,g,s),s&&w&4&&fy(f,g);break;case 13:Ga(f,g,s),s&&w&4&&my(f,g);break;case 22:g.memoizedState===null&&Ga(f,g,s),ro(g,g.return);break;case 30:break;default:Ga(f,g,s)}a=a.sibling}}function Lu(t,a){var s=null;t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(s=t.memoizedState.cachePool.pool),t=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(t=a.memoizedState.cachePool.pool),t!==s&&(t!=null&&t.refCount++,s!=null&&Vs(s))}function zu(t,a){t=null,a.alternate!==null&&(t=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==t&&(a.refCount++,t!=null&&Vs(t))}function na(t,a,s,c){if(a.subtreeFlags&10256)for(a=a.child;a!==null;)yy(t,a,s,c),a=a.sibling}function yy(t,a,s,c){var f=a.flags;switch(a.tag){case 0:case 11:case 15:na(t,a,s,c),f&2048&&io(9,a);break;case 1:na(t,a,s,c);break;case 3:na(t,a,s,c),f&2048&&(t=null,a.alternate!==null&&(t=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==t&&(a.refCount++,t!=null&&Vs(t)));break;case 12:if(f&2048){na(t,a,s,c),t=a.stateNode;try{var g=a.memoizedProps,w=g.id,T=g.onPostCommit;typeof T=="function"&&T(w,a.alternate===null?"mount":"update",t.passiveEffectDuration,-0)}catch(R){ot(a,a.return,R)}}else na(t,a,s,c);break;case 31:na(t,a,s,c);break;case 13:na(t,a,s,c);break;case 23:break;case 22:g=a.stateNode,w=a.alternate,a.memoizedState!==null?g._visibility&2?na(t,a,s,c):so(t,a):g._visibility&2?na(t,a,s,c):(g._visibility|=2,Qr(t,a,s,c,(a.subtreeFlags&10256)!==0||!1)),f&2048&&Lu(w,a);break;case 24:na(t,a,s,c),f&2048&&zu(a.alternate,a);break;default:na(t,a,s,c)}}function Qr(t,a,s,c,f){for(f=f&&((a.subtreeFlags&10256)!==0||!1),a=a.child;a!==null;){var g=t,w=a,T=s,R=c,ee=w.flags;switch(w.tag){case 0:case 11:case 15:Qr(g,w,T,R,f),io(8,w);break;case 23:break;case 22:var re=w.stateNode;w.memoizedState!==null?re._visibility&2?Qr(g,w,T,R,f):so(g,w):(re._visibility|=2,Qr(g,w,T,R,f)),f&&ee&2048&&Lu(w.alternate,w);break;case 24:Qr(g,w,T,R,f),f&&ee&2048&&zu(w.alternate,w);break;default:Qr(g,w,T,R,f)}a=a.sibling}}function so(t,a){if(a.subtreeFlags&10256)for(a=a.child;a!==null;){var s=t,c=a,f=c.flags;switch(c.tag){case 22:so(s,c),f&2048&&Lu(c.alternate,c);break;case 24:so(s,c),f&2048&&zu(c.alternate,c);break;default:so(s,c)}a=a.sibling}}var oo=8192;function Jr(t,a,s){if(t.subtreeFlags&oo)for(t=t.child;t!==null;)by(t,a,s),t=t.sibling}function by(t,a,s){switch(t.tag){case 26:Jr(t,a,s),t.flags&oo&&t.memoizedState!==null&&Y1(s,ta,t.memoizedState,t.memoizedProps);break;case 5:Jr(t,a,s);break;case 3:case 4:var c=ta;ta=tc(t.stateNode.containerInfo),Jr(t,a,s),ta=c;break;case 22:t.memoizedState===null&&(c=t.alternate,c!==null&&c.memoizedState!==null?(c=oo,oo=16777216,Jr(t,a,s),oo=c):Jr(t,a,s));break;default:Jr(t,a,s)}}function xy(t){var a=t.alternate;if(a!==null&&(t=a.child,t!==null)){a.child=null;do a=t.sibling,t.sibling=null,t=a;while(t!==null)}}function lo(t){var a=t.deletions;if((t.flags&16)!==0){if(a!==null)for(var s=0;s<a.length;s++){var c=a[s];qt=c,wy(c,t)}xy(t)}if(t.subtreeFlags&10256)for(t=t.child;t!==null;)vy(t),t=t.sibling}function vy(t){switch(t.tag){case 0:case 11:case 15:lo(t),t.flags&2048&&gi(9,t,t.return);break;case 3:lo(t);break;case 12:lo(t);break;case 22:var a=t.stateNode;t.memoizedState!==null&&a._visibility&2&&(t.return===null||t.return.tag!==13)?(a._visibility&=-3,Hl(t)):lo(t);break;default:lo(t)}}function Hl(t){var a=t.deletions;if((t.flags&16)!==0){if(a!==null)for(var s=0;s<a.length;s++){var c=a[s];qt=c,wy(c,t)}xy(t)}for(t=t.child;t!==null;){switch(a=t,a.tag){case 0:case 11:case 15:gi(8,a,a.return),Hl(a);break;case 22:s=a.stateNode,s._visibility&2&&(s._visibility&=-3,Hl(a));break;default:Hl(a)}t=t.sibling}}function wy(t,a){for(;qt!==null;){var s=qt;switch(s.tag){case 0:case 11:case 15:gi(8,s,a);break;case 23:case 22:if(s.memoizedState!==null&&s.memoizedState.cachePool!==null){var c=s.memoizedState.cachePool.pool;c!=null&&c.refCount++}break;case 24:Vs(s.memoizedState.cache)}if(c=s.child,c!==null)c.return=s,qt=c;else e:for(s=t;qt!==null;){c=qt;var f=c.sibling,g=c.return;if(uy(c),c===s){qt=null;break e}if(f!==null){f.return=g,qt=f;break e}qt=g}}}var c1={getCacheForType:function(t){var a=Jt(Pt),s=a.data.get(t);return s===void 0&&(s=t(),a.data.set(t,s)),s},cacheSignal:function(){return Jt(Pt).controller.signal}},d1=typeof WeakMap=="function"?WeakMap:Map,nt=0,ft=null,We=null,Ge=0,st=0,Mn=null,yi=!1,Xr=!1,Uu=!1,Ka=0,Ct=0,bi=0,rr=0,Hu=0,Pn=0,Zr=0,co=null,An=null,qu=!1,ql=0,Ay=0,Wl=1/0,Vl=null,xi=null,Lt=0,vi=null,es=null,Ya=0,Wu=0,
vendor: 16,894 bytes, line 48
48Vu=null,ky=null,uo=0,Gu=null;function On(){return(nt&2)!==0&&Ge!==0?Ge&-Ge:F.T!==null?Xu():hd()}function Sy(){if(Pn===0)if((Ge&536870912)===0||Ye){var t=Ar;Ar<<=1,(Ar&3932160)===0&&(Ar=262144),Pn=t}else Pn=536870912;return t=In.current,t!==null&&(t.flags|=32),Pn}function kn(t,a,s){(t===ft&&(st===2||st===9)||t.cancelPendingCommit!==null)&&(ts(t,0),wi(t,Ge,Pn,!1)),kt(t,s),((nt&2)===0||t!==ft)&&(t===ft&&((nt&2)===0&&(rr|=s),Ct===4&&wi(t,Ge,Pn,!1)),xa(t))}function Ty(t,a,s){if((nt&6)!==0)throw Error(r(327));var c=!s&&(a&127)===0&&(a&t.expiredLanes)===0||vt(t,a),f=c?f1(t,a):Yu(t,a,!0),g=c;do{if(f===0){Xr&&!c&&wi(t,a,0,!1);break}else{if(s=t.current.alternate,g&&!u1(s)){f=Yu(t,a,!1),g=!1;continue}if(f===2){if(g=a,t.errorRecoveryDisabledLanes&g)var w=0;else w=t.pendingLanes&-536870913,w=w!==0?w:w&536870912?536870912:0;if(w!==0){a=w;e:{var T=t;f=co;var R=T.current.memoizedState.isDehydrated;if(R&&(ts(T,w).flags|=256),w=Yu(T,w,!1),w!==2){if(Uu&&!R){T.errorRecoveryDisabledLanes|=g,rr|=g,f=4;break e}g=An,An=f,g!==null&&(An===null?An=g:An.push.apply(An,g))}f=w}if(g=!1,f!==2)continue}}if(f===1){ts(t,0),wi(t,a,0,!0);break}e:{switch(c=t,g=f,g){case 0:case 1:throw Error(r(345));case 4:if((a&4194048)!==a)break;case 6:wi(c,a,Pn,!yi);break e;case 2:An=null;break;case 3:case 5:break;default:throw Error(r(329))}if((a&62914560)===a&&(f=ql+300-Gt(),10<f)){if(wi(c,a,Pn,!yi),Oe(c,0,!0)!==0)break e;Ya=a,c.timeoutHandle=nb(Cy.bind(null,c,s,An,Vl,qu,a,Pn,rr,Zr,yi,g,"Throttled",-0,0),f);break e}Cy(c,s,An,Vl,qu,a,Pn,rr,Zr,yi,g,null,-0,0)}}break}while(!0);xa(t)}function Cy(t,a,s,c,f,g,w,T,R,ee,re,le,te,ie){if(t.timeoutHandle=-1,le=a.subtreeFlags,le&8192||(le&16785408)===16785408){le={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Pa},by(a,g,le);var ve=(g&62914560)===g?ql-Gt():(g&4194048)===g?Ay-Gt():0;if(ve=$1(le,ve),ve!==null){Ya=g,t.cancelPendingCommit=ve(Oy.bind(null,t,a,g,s,c,f,w,T,R,re,le,null,te,ie)),wi(t,g,w,!ee);return}}Oy(t,a,g,s,c,f,w,T,R)}function u1(t){for(var a=t;;){var s=a.tag;if((s===0||s===11||s===15)&&a.flags&16384&&(s=a.updateQueue,s!==null&&(s=s.stores,s!==null)))for(var c=0;c<s.length;c++){var f=s[c],g=f.getSnapshot;f=f.value;try{if(!Fn(g(),f))return!1}catch{return!1}}if(s=a.child,a.subtreeFlags&16384&&s!==null)s.return=a,a=s;else{if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return!0;a=a.return}a.sibling.return=a.return,a=a.sibling}}return!0}function wi(t,a,s,c){a&=~Hu,a&=~rr,t.suspendedLanes|=a,t.pingedLanes&=~a,c&&(t.warmLanes|=a),c=t.expirationTimes;for(var f=a;0<f;){var g=31-it(f),w=1<<g;c[g]=-1,f&=~w}s!==0&&Hi(t,s,a)}function Gl(){return(nt&6)===0?(ho(0),!1):!0}function Ku(){if(We!==null){if(st===0)var t=We.return;else t=We,_a=Qi=null,cu(t),Vr=null,Ks=0,t=We;for(;t!==null;)ay(t.alternate,t),t=t.return;We=null}}function ts(t,a){var s=t.timeoutHandle;s!==-1&&(t.timeoutHandle=-1,N1(s)),s=t.cancelPendingCommit,s!==null&&(t.cancelPendingCommit=null,s()),Ya=0,Ku(),ft=t,We=s=Da(t.current,null),Ge=a,st=0,Mn=null,yi=!1,Xr=vt(t,a),Uu=!1,Zr=Pn=Hu=rr=bi=Ct=0,An=co=null,qu=!1,(a&8)!==0&&(a|=a&32);var c=t.entangledLanes;if(c!==0)for(t=t.entanglements,c&=a;0<c;){var f=31-it(c),g=1<<f;a|=t[f],c&=~g}return Ka=a,fl(),s}function jy(t,a){_e=null,F.H=to,a===Wr||a===wl?(a=qp(),st=3):a===Jd?(a=qp(),st=4):st=a===Tu?8:a!==null&&typeof a=="object"&&typeof a.then=="function"?6:1,Mn=a,We===null&&(Ct=1,Dl(t,qn(a,t.current)))}function Fy(){var t=In.current;return t===null?!0:(Ge&4194048)===Ge?Kn===null:(Ge&62914560)===Ge||(Ge&536870912)!==0?t===Kn:!1}function Ey(){var t=F.H;return F.H=to,t===null?to:t}function Iy(){var t=F.A;return F.A=c1,t}function Kl(){Ct=4,yi||(Ge&4194048)!==Ge&&In.current!==null||(Xr=!0),(bi&134217727)===0&&(rr&134217727)===0||ft===null||wi(ft,Ge,Pn,!1)}function Yu(t,a,s){var c=nt;nt|=2;var f=Ey(),g=Iy();(ft!==t||Ge!==a)&&(Vl=null,ts(t,a)),a=!1;var w=Ct;e:do try{if(st!==0&&We!==null){var T=We,R=Mn;switch(st){case 8:Ku(),w=6;break e;case 3:case 2:case 9:case 6:In.current===null&&(a=!0);var ee=st;if(st=0,Mn=null,ns(t,T,R,ee),s&&Xr){w=0;break e}break;default:ee=st,st=0,Mn=null,ns(t,T,R,ee)}}h1(),w=Ct;break}catch(re){jy(t,re)}while(!0);return a&&t.shellSuspendCounter++,_a=Qi=null,nt=c,F.H=f,F.A=g,We===null&&(ft=null,Ge=0,fl()),w}function h1(){for(;We!==null;)Ny(We)}function f1(t,a){var s=nt;nt|=2;var c=Ey(),f=Iy();ft!==t||Ge!==a?(Vl=null,Wl=Gt()+500,ts(t,a)):Xr=vt(t,a);e:do try{if(st!==0&&We!==null){a=We;var g=Mn;t:switch(st){case 1:st=0,Mn=null,ns(t,a,g,1);break;case 2:case 9:if(Up(g)){st=0,Mn=null,My(a);break}a=function(){st!==2&&st!==9||ft!==t||(st=7),xa(t)},g.then(a,a);break e;case 3:st=7;break e;case 4:st=5;break e;case 7:Up(g)?(st=0,Mn=null,My(a)):(st=0,Mn=null,ns(t,a,g,7));break;case 5:var w=null;switch(We.tag){case 26:w=We.memoizedState;case 5:case 27:var T=We;if(w?yb(w):T.stateNode.complete){st=0,Mn=null;var R=T.sibling;if(R!==null)We=R;else{var ee=T.return;ee!==null?(We=ee,Yl(ee)):We=null}break t}}st=0,Mn=null,ns(t,a,g,5);break;case 6:st=0,Mn=null,ns(t,a,g,6);break;case 8:Ku(),Ct=6;break e;default:throw Error(r(462))}}m1();break}catch(re){jy(t,re)}while(!0);return _a=Qi=null,F.H=c,F.A=f,nt=s,We!==null?0:(ft=null,Ge=0,fl(),Ct)}function m1(){for(;We!==null&&!Je();)Ny(We)}function Ny(t){var a=ty(t.alternate,t,Ka);t.memoizedProps=t.pendingProps,a===null?Yl(t):We=a}function My(t){var a=t,s=a.alternate;switch(a.tag){case 15:case 0:a=$g(s,a,a.pendingProps,a.type,void 0,Ge);break;case 11:a=$g(s,a,a.pendingProps,a.type.render,a.ref,Ge);break;case 5:cu(a);default:ay(s,a),a=We=Ip(a,Ka),a=ty(s,a,Ka)}t.memoizedProps=t.pendingProps,a===null?Yl(t):We=a}function ns(t,a,s,c){_a=Qi=null,cu(a),Vr=null,Ks=0;var f=a.return;try{if(n1(t,f,a,s,Ge)){Ct=1,Dl(t,qn(s,t.current)),We=null;return}}catch(g){if(f!==null)throw We=f,g;Ct=1,Dl(t,qn(s,t.current)),We=null;return}a.flags&32768?(Ye||c===1?t=!0:Xr||(Ge&536870912)!==0?t=!1:(yi=t=!0,(c===2||c===9||c===3||c===6)&&(c=In.current,c!==null&&c.tag===13&&(c.flags|=16384))),Py(a,t)):Yl(a)}function Yl(t){var a=t;do{if((a.flags&32768)!==0){Py(a,yi);return}t=a.return;var s=r1(a.alternate,a,Ka);if(s!==null){We=s;return}if(a=a.sibling,a!==null){We=a;return}We=a=t}while(a!==null);Ct===0&&(Ct=5)}function Py(t,a){do{var s=s1(t.alternate,t);if(s!==null){s.flags&=32767,We=s;return}if(s=t.return,s!==null&&(s.flags|=32768,s.subtreeFlags=0,s.deletions=null),!a&&(t=t.sibling,t!==null)){We=t;return}We=t=s}while(t!==null);Ct=6,We=null}function Oy(t,a,s,c,f,g,w,T,R){t.cancelPendingCommit=null;do $l();while(Lt!==0);if((nt&6)!==0)throw Error(r(327));if(a!==null){if(a===t.current)throw Error(r(177));if(g=a.lanes|a.childLanes,g|=Rd,mn(t,s,g,w,T,R),t===ft&&(We=ft=null,Ge=0),es=a,vi=t,Ya=s,Wu=g,Vu=f,ky=c,(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?(t.callbackNode=null,t.callbackPriority=0,b1(Ie,function(){return Ly(),null})):(t.callbackNode=null,t.callbackPriority=0),c=(a.flags&13878)!==0,(a.subtreeFlags&13878)!==0||c){c=F.T,F.T=null,f=D.p,D.p=2,w=nt,nt|=4;try{o1(t,a,s)}finally{nt=w,D.p=f,F.T=c}}Lt=1,Dy(),Ry(),_y()}}function Dy(){if(Lt===1){Lt=0;var t=vi,a=es,s=(a.flags&13878)!==0;if((a.subtreeFlags&13878)!==0||s){s=F.T,F.T=null;var c=D.p;D.p=2;var f=nt;nt|=4;try{py(a,t);var g=sh,w=wp(t.containerInfo),T=g.focusedElem,R=g.selectionRange;if(w!==T&&T&&T.ownerDocument&&vp(T.ownerDocument.documentElement,T)){if(R!==null&&Nd(T)){var ee=R.start,re=R.end;if(re===void 0&&(re=ee),"selectionStart"in T)T.selectionStart=ee,T.selectionEnd=Math.min(re,T.value.length);else{var le=T.ownerDocument||document,te=le&&le.defaultView||window;if(te.getSelection){var ie=te.getSelection(),ve=T.textContent.length,Ne=Math.min(R.start,ve),ut=R.end===void 0?Ne:Math.min(R.end,ve);!ie.extend&&Ne>ut&&(w=ut,ut=Ne,Ne=w);var K=xp(T,Ne),H=xp(T,ut);if(K&&H&&(ie.rangeCount!==1||ie.anchorNode!==K.node||ie.anchorOffset!==K.offset||ie.focusNode!==H.node||ie.focusOffset!==H.offset)){var Z=le.createRange();Z.setStart(K.node,K.offset),ie.removeAllRanges(),Ne>ut?(ie.addRange(Z),ie.extend(H.node,H.offset)):(Z.setEnd(H.node,H.offset),ie.addRange(Z))}}}}for(le=[],ie=T;ie=ie.parentNode;)ie.nodeType===1&&le.push({element:ie,left:ie.scrollLeft,top:ie.scrollTop});for(typeof T.focus=="function"&&T.focus(),T=0;T<le.length;T++){var oe=le[T];oe.element.scrollLeft=oe.left,oe.element.scrollTop=oe.top}}oc=!!rh,sh=rh=null}finally{nt=f,D.p=c,F.T=s}}t.current=a,Lt=2}}function Ry(){if(Lt===2){Lt=0;var t=vi,a=es,s=(a.flags&8772)!==0;if((a.subtreeFlags&8772)!==0||s){s=F.T,F.T=null;var c=D.p;D.p=2;var f=nt;nt|=4;try{dy(t,a.alternate,a)}finally{nt=f,D.p=c,F.T=s}}Lt=3}}function _y(){if(Lt===4||Lt===3){Lt=0,ha();var t=vi,a=es,s=Ya,c=ky;(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?Lt=5:(Lt=0,es=vi=null,By(t,t.pendingLanes));var f=t.pendingLanes;if(f===0&&(xi=null),Zn(s),a=a.stateNode,Ft&&typeof Ft.onCommitFiberRoot=="function")try{Ft.onCommitFiberRoot(Kt,a,void 0,(a.current.flags&128)===128)}catch{}if(c!==null){a=F.T,f=D.p,D.p=2,F.T=null;try{for(var g=t.onRecoverableError,w=0;w<c.length;w++){var T=c[w];g(T.value,{componentStack:T.stack})}}finally{F.T=a,D.p=f}}(Ya&3)!==0&&$l(),xa(t),f=t.pendingLanes,(s&261930)!==0&&(f&42)!==0?t===Gu?uo++:(uo=0,Gu=t):uo=0,ho(0)}}function By(t,a){(t.pooledCacheLanes&=a)===0&&(a=t.pooledCache,a!=null&&(t.pooledCache=null,Vs(a)))}function $l(){return Dy(),Ry(),_y(),Ly()}function Ly(){if(Lt!==5)return!1;var t=vi,a=Wu;Wu=0;var s=Zn(Ya),c=F.T,f=D.p;try{D.p=32>s?32:s,F.T=null,s=Vu,Vu=null;var g=vi,w=Ya;if(Lt=0,es=vi=null,Ya=0,(nt&6)!==0)throw Error(r(331));var T=nt;if(nt|=4,vy(g.current),yy(g,g.current,w,s),nt=T,ho(0,!1),Ft&&typeof Ft.onPostCommitFiberRoot=="function")try{Ft.onPostCommitFiberRoot(Kt,g)}catch{}return!0}finally{D.p=f,F.T=c,By(t,a)}}function zy(t,a,s){a=qn(s,a),a=Su(t.stateNode,a,2),t=fi(t,a,2),t!==null&&(kt(t,2),xa(t))}function ot(t,a,s){if(t.tag===3)zy(t,t,s);else for(;a!==null;){if(a.tag===3){zy(a,t,s);break}else if(a.tag===1){var c=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(xi===null||!xi.has(c))){t=qn(s,t),s=Ug(2),c=fi(a,s,2),c!==null&&(Hg(s,c,a,t),kt(c,2),xa(c));break}}a=a.return}}function $u(t,a,s){var c=t.pingCache;if(c===null){c=t.pingCache=new d1;var f=new Set;c.set(a,f)}else f=c.get(a),f===void 0&&(f=new Set,c.set(a,f));f.has(s)||(Uu=!0,f.add(s),t=p1.bind(null,t,a,s),a.then(t,t))}function p1(t,a,s){var c=t.pingCache;c!==null&&c.delete(a),t.pingedLanes|=t.suspendedLanes&s,t.warmLanes&=~s,ft===t&&(Ge&s)===s&&(Ct===4||Ct===3&&(Ge&62914560)===Ge&&300>Gt()-ql?(nt&2)===0&&ts(t,0):Hu|=s,Zr===Ge&&(Zr=0)),xa(t)}function Uy(t,a){a===0&&(a=rn()),t=Ki(t,a),t!==null&&(kt(t,a),xa(t))}function g1(t){var a=t.memoizedState,s=0;a!==null&&(s=a.retryLane),Uy(t,s)}function y1(t,a){var s=0;switch(t.tag){case 31:case 13:var c=t.stateNode,f=t.memoizedState;f!==null&&(s=f.retryLane);break;case 19:c=t.stateNode;break;case 22:c=t.stateNode._retryCache;break;default:throw Error(r(314))}c!==null&&c.delete(a),Uy(t,s)}function b1(t,a){return fn(t,a)}var Ql=null,as=null,Qu=!1,Jl=!1,Ju=!1,Ai=0;function xa(t){t!==as&&t.next===null&&(as===null?Ql=as=t:as=as.next=t),Jl=!0,Qu||(Qu=!0,v1())}function ho(t,a){if(!Ju&&Jl){Ju=!0;do for(var s=!1,c=Ql;c!==null;){if(t!==0){var f=c.pendingLanes;if(f===0)var g=0;else{var w=c.suspendedLanes,T=c.pingedLanes;g=(1<<31-it(42|t)+1)-1,g&=f&~(w&~T),g=g&201326741?g&201326741|1:g?g|2:0}g!==0&&(s=!0,Vy(c,g))}else g=Ge,g=Oe(c,c===ft?g:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(g&3)===0||vt(c,g)||(s=!0,Vy(c,g));c=c.next}while(s);Ju=!1}}function x1(){Hy()}function Hy(){Jl=Qu=!1;var t=0;Ai!==0&&I1()&&(t=Ai);for(var a=Gt(),s=null,c=Ql;c!==null;){var f=c.next,g=qy(c,a);g===0?(c.next=null,s===null?Ql=f:s.next=f,f===null&&(as=s)):(s=c,(t!==0||(g&3)!==0)&&(Jl=!0)),c=f}Lt!==0&&Lt!==5||ho(t),Ai!==0&&(Ai=0)}function qy(t,a){for(var s=t.suspendedLanes,c=t.pingedLanes,f=t.expirationTimes,g=t.pendingLanes&-62914561;0<g;){var w=31-it(g),T=1<<w,R=f[w];R===-1?((T&s)===0||(T&c)!==0)&&(f[w]=Ut(T,a)):R<=a&&(t.expiredLanes|=T),g&=~T}if(a=ft,s=Ge,s=Oe(t,t===a?s:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),c=t.callbackNode,s===0||t===a&&(st===2||st===9)||t.cancelPendingCommit!==null)return c!==null&&c!==null&&lt(c),t.callbackNode=null,t.callbackPriority=0;if((s&3)===0||vt(t,s)){if(a=s&-s,a===t.callbackPriority)return a;switch(c!==null&&lt(c),Zn(s)){case 2:case 8:s=fe;break;case 32:s=Ie;break;case 268435456:s=qe;break;default:s=Ie}return c=Wy.bind(null,t),s=fn(s,c),t.callbackPriority=a,t.callbackNode=s,a}return c!==null&&c!==null&&lt(c),t.callbackPriority=2,t.callbackNode=null,2}function Wy(t,a){if(Lt!==0&&Lt!==5)return t.callbackNode=null,t.callbackPriority=0,null;var s=t.callbackNode;if($l()&&t.callbackNode!==s)return null;var c=Ge;return c=Oe(t,t===ft?c:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),c===0?null:(Ty(t,c,a),qy(t,Gt()),t.callbackNode!=null&&t.callbackNode===s?Wy.bind(null,t):null)}function Vy(t,a){if($l())return null;Ty(t,a,!0)}function v1(){M1(function(){(nt&6)!==0?fn(se,x1):Hy()})}function Xu(){if(Ai===0){var t=Hr;t===0&&(t=wr,wr<<=1,(wr&261888)===0&&(wr=256)),Ai=t}return Ai}function Gy(t){return t==null||typeof t=="symbol"||typeof t=="boolean"?null:typeof t=="function"?t:rl(""+t)}function Ky(t,a){var s=a.ownerDocument.createElement("input");return s.name=a.name,s.value=a.value,t.id&&s.setAttribute("form",t.id),a.parentNode.insertBefore(s,a),t=new FormData(t),s.parentNode.removeChild(s),t}function w1(t,a,s,c,f){if(a==="submit"&&s&&s.stateNode===f){var g=Gy((f[yn]||null).action),w=c.submitter;w&&(a=(a=w[yn]||null)?Gy(a.formAction):w.getAttribute("formAction"),a!==null&&(g=a,w=null));var T=new cl("action","action",null,c,f);t.push({event:T,listeners:[{instance:null,listener:function(){if(c.defaultPrevented){if(Ai!==0){var R=w?Ky(f,w):new FormData(f);bu(s,{pending:!0,data:R,method:f.method,action:g},null,R)}}else typeof g=="function"&&(T.preventDefault(),R=w?Ky(f,w):new FormData(f),bu(s,{pending:!0,data:R,method:f.method,action:g},g,R))},currentTarget:f}]})}}for(var Zu=0;Zu<Dd.length;Zu++){var eh=Dd[Zu],A1=eh.toLowerCase(),k1=eh[0].toUpperCase()+eh.slice(1);ea(A1,"on"+k1)}ea(Sp,"onAnimationEnd"),ea(Tp,"onAnimationIteration"),ea(Cp,"onAnimationStart"),ea("dblclick","onDoubleClick"),ea("focusin","onFocus"),ea("focusout","onBlur"),ea(L2,"onTransitionRun"),ea(z2,"onTransitionStart"),ea(U2,"onTransitionCancel"),ea(jp,"onTransitionEnd"),Fr("onMouseEnter",["mouseout","mouseover"]),Fr("onMouseLeave",["mouseout","mouseover"]),Fr("onPointerEnter",["pointerout","pointerover"]),Fr("onPointerLeave",["pointerout","pointerover"]),qi("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),qi("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),qi("onBeforeInput",["compositionend","keypress","textInput","paste"]),qi("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),qi("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),qi("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var fo="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),S1=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(fo));function Yy(t,a){a=(a&4)!==0;for(var s=0;s<t.length;s++){var c=t[s],f=c.event;c=c.listeners;e:{var g=void 0;if(a)for(var w=c.length-1;0<=w;w--){var T=c[w],R=T.instance,ee=T.currentTarget;if(T=T.listener,R!==g&&f.isPropagationStopped())break e;g=T,f.currentTarget=ee;try{g(f)}catch(re){hl(re)}f.currentTarget=null,g=R}else for(w=0;w<c.length;w++){if(T=c[w],R=T.instance,ee=T.currentTarget,T=T.listener,R!==g&&f.isPropagationStopped())break e;g=T,f.currentTarget=ee;try{g(f)}catch(re){hl(re)}f.currentTarget=null,g=R}}}}function Ve(t,a){var s=a[fd];s===void 0&&(s=a[fd]=new Set);var c=t+"__bubble";s.has(c)||($y(a,t,2,!1),s.add(c))}function th(t,a,s){var c=0;a&&(c|=4),$y(s,t,c,a)}var Xl="_reactListening"+Math.random().toString(36).slice(2);function nh(t){if(!t[Xl]){t[Xl]=!0,Hm.forEach(function(s){s!=="selectionchange"&&(S1.has(s)||th(s,!1,t),th(s,!0,t))});var a=t.nodeType===9?t:t.ownerDocument;a===null||a[Xl]||(a[Xl]=!0,th("selectionchange",!1,a))}}function $y(t,a,s,c){switch(Sb(a)){case 2:var f=X1;break;case 8:f=Z1;break;default:f=yh}s=f.bind(null,a,s,t),f=void 0,!Ad||a!=="touchstart"&&a!=="touchmove"&&a!=="wheel"||(f=!0),c?f!==void 0?t.addEventListener(a,s,{capture:!0,passive:f}):t.addEventListener(a,s,!0):f!==void 0?t.addEventListener(a,s,{passive:f}):t.addEventListener(a,s,!1)}function ah(t,a,s,c,f){var g=c;if((a&1)===0&&(a&2)===0&&c!==null)e:for(;;){if(c===null)return;var w=c.tag;if(w===3||w===4){var T=c.stateNode.containerInfo;
vendor: 2,742 bytes, line 48
48if(T===f)break;if(w===4)for(w=c.return;w!==null;){var R=w.tag;if((R===3||R===4)&&w.stateNode.containerInfo===f)return;w=w.return}for(;T!==null;){if(w=Tr(T),w===null)return;if(R=w.tag,R===5||R===6||R===26||R===27){c=g=w;continue e}T=T.parentNode}}c=c.return}ep(function(){var ee=g,re=vd(s),le=[];e:{var te=Fp.get(t);if(te!==void 0){var ie=cl,ve=t;switch(t){case"keypress":if(ol(s)===0)break e;case"keydown":case"keyup":ie=y2;break;case"focusin":ve="focus",ie=Cd;break;case"focusout":ve="blur",ie=Cd;break;case"beforeblur":case"afterblur":ie=Cd;break;case"click":if(s.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":ie=ap;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":ie=r2;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":ie=v2;break;case Sp:case Tp:case Cp:ie=l2;break;case jp:ie=A2;break;case"scroll":case"scrollend":ie=a2;break;case"wheel":ie=S2;break;case"copy":case"cut":case"paste":ie=d2;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":ie=rp;break;case"toggle":case"beforetoggle":ie=C2}var Ne=(a&4)!==0,ut=!Ne&&(t==="scroll"||t==="scrollend"),K=Ne?te!==null?te+"Capture":null:te;Ne=[];for(var H=ee,Z;H!==null;){var oe=H;if(Z=oe.stateNode,oe=oe.tag,oe!==5&&oe!==26&&oe!==27||Z===null||K===null||(oe=Os(H,K),oe!=null&&Ne.push(mo(H,oe,Z))),ut)break;H=H.return}0<Ne.length&&(te=new ie(te,ve,null,s,re),le.push({event:te,listeners:Ne}))}}if((a&7)===0){e:{if(te=t==="mouseover"||t==="pointerover",ie=t==="mouseout"||t==="pointerout",te&&s!==xd&&(ve=s.relatedTarget||s.fromElement)&&(Tr(ve)||ve[Sr]))break e;if((ie||te)&&(te=re.window===re?re:(te=re.ownerDocument)?te.defaultView||te.parentWindow:window,ie?(ve=s.relatedTarget||s.toElement,ie=ee,ve=ve?Tr(ve):null,ve!==null&&(ut=d(ve),Ne=ve.tag,ve!==ut||Ne!==5&&Ne!==27&&Ne!==6)&&(ve=null)):(ie=null,ve=ee),ie!==ve)){if(Ne=ap,oe="onMouseLeave",K="onMouseEnter",H="mouse",(t==="pointerout"||t==="pointerover")&&(Ne=rp,oe="onPointerLeave",K="onPointerEnter",H="pointer"),ut=ie==null?te:Ps(ie),Z=ve==null?te:Ps(ve),te=new Ne(oe,H+"leave",ie,s,re),te.target=ut,te.relatedTarget=Z,oe=null,Tr(re)===ee&&(Ne=new Ne(K,H+"enter",ve,s,re),Ne.target=Z,Ne.relatedTarget=ut,oe=Ne),ut=oe,ie&&ve)t:{for(Ne=T1,K=ie,H=ve,Z=0,oe=K;oe;oe=Ne(oe))Z++;oe=0;for(var Ee=H;Ee;Ee=Ne(Ee))oe++;for(;0<Z-oe;)K=Ne(K),Z--;for(;0<oe-Z;)H=Ne(H),oe--;for(;Z--;){if(K===H||H!==null&&K===H.alternate){Ne=K;break t}K=Ne(K),H=Ne(H)}Ne=null}else Ne=null;ie!==null&&Qy(le,te,ie,Ne,!1),ve!==null&&ut!==null&&Qy(le,ut,ve,Ne,!0)}}
vendor: 5,244 bytes, lines 48-49
48e:{if(te=ee?Ps(ee):window,ie=te.nodeName&&te.nodeName.toLowerCase(),ie==="select"||ie==="input"&&te.type==="file")var Xe=fp;else if(up(te))if(mp)Xe=R2;else{Xe=O2;var Se=P2}else ie=te.nodeName,!ie||ie.toLowerCase()!=="input"||te.type!=="checkbox"&&te.type!=="radio"?ee&&bd(ee.elementType)&&(Xe=fp):Xe=D2;if(Xe&&(Xe=Xe(t,ee))){hp(le,Xe,s,re);break e}Se&&Se(t,te,ee),t==="focusout"&&ee&&te.type==="number"&&ee.memoizedProps.value!=null&&yd(te,"number",te.value)}switch(Se=ee?Ps(ee):window,t){case"focusin":(up(Se)||Se.contentEditable==="true")&&(Or=Se,Md=ee,Hs=null);break;case"focusout":Hs=Md=Or=null;break;case"mousedown":Pd=!0;break;case"contextmenu":case"mouseup":case"dragend":Pd=!1,Ap(le,s,re);break;case"selectionchange":if(B2)break;case"keydown":case"keyup":Ap(le,s,re)}var Le;if(Fd)e:{switch(t){case"compositionstart":var Ke="onCompositionStart";break e;case"compositionend":Ke="onCompositionEnd";break e;case"compositionupdate":Ke="onCompositionUpdate";break e}Ke=void 0}else Pr?cp(t,s)&&(Ke="onCompositionEnd"):t==="keydown"&&s.keyCode===229&&(Ke="onCompositionStart");Ke&&(sp&&s.locale!=="ko"&&(Pr||Ke!=="onCompositionStart"?Ke==="onCompositionEnd"&&Pr&&(Le=tp()):(si=re,kd="value"in si?si.value:si.textContent,Pr=!0)),Se=Zl(ee,Ke),0<Se.length&&(Ke=new ip(Ke,t,null,s,re),le.push({event:Ke,listeners:Se}),Le?Ke.data=Le:(Le=dp(s),Le!==null&&(Ke.data=Le)))),(Le=F2?E2(t,s):I2(t,s))&&(Ke=Zl(ee,"onBeforeInput"),0<Ke.length&&(Se=new ip("onBeforeInput","beforeinput",null,s,re),le.push({event:Se,listeners:Ke}),Se.data=Le)),w1(le,t,ee,s,re)}Yy(le,a)})}function mo(t,a,s){return{instance:t,listener:a,currentTarget:s}}function Zl(t,a){for(var s=a+"Capture",c=[];t!==null;){var f=t,g=f.stateNode;if(f=f.tag,f!==5&&f!==26&&f!==27||g===null||(f=Os(t,s),f!=null&&c.unshift(mo(t,f,g)),f=Os(t,a),f!=null&&c.push(mo(t,f,g))),t.tag===3)return c;t=t.return}return[]}function T1(t){if(t===null)return null;do t=t.return;while(t&&t.tag!==5&&t.tag!==27);return t||null}function Qy(t,a,s,c,f){for(var g=a._reactName,w=[];s!==null&&s!==c;){var T=s,R=T.alternate,ee=T.stateNode;if(T=T.tag,R!==null&&R===c)break;T!==5&&T!==26&&T!==27||ee===null||(R=ee,f?(ee=Os(s,g),ee!=null&&w.unshift(mo(s,ee,R))):f||(ee=Os(s,g),ee!=null&&w.push(mo(s,ee,R)))),s=s.return}w.length!==0&&t.push({event:a,listeners:w})}var C1=/\r\n?/g,j1=/\u0000|\uFFFD/g;function Jy(t){return(typeof t=="string"?t:""+t).replace(C1,`
49`).replace(j1,"")}function Xy(t,a){return a=Jy(a),Jy(t)===a}function dt(t,a,s,c,f,g){switch(s){case"children":typeof c=="string"?a==="body"||a==="textarea"&&c===""||Ir(t,c):(typeof c=="number"||typeof c=="bigint")&&a!=="body"&&Ir(t,""+c);break;case"className":al(t,"class",c);break;case"tabIndex":al(t,"tabindex",c);break;case"dir":case"role":case"viewBox":case"width":case"height":al(t,s,c);break;case"style":Xm(t,c,g);break;case"data":if(a!=="object"){al(t,"data",c);break}case"src":case"href":if(c===""&&(a!=="a"||s!=="href")){t.removeAttribute(s);break}if(c==null||typeof c=="function"||typeof c=="symbol"||typeof c=="boolean"){t.removeAttribute(s);break}c=rl(""+c),t.setAttribute(s,c);break;case"action":case"formAction":if(typeof c=="function"){t.setAttribute(s,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof g=="function"&&(s==="formAction"?(a!=="input"&&dt(t,a,"name",f.name,f,null),dt(t,a,"formEncType",f.formEncType,f,null),dt(t,a,"formMethod",f.formMethod,f,null),dt(t,a,"formTarget",f.formTarget,f,null)):(dt(t,a,"encType",f.encType,f,null),dt(t,a,"method",f.method,f,null),dt(t,a,"target",f.target,f,null)));if(c==null||typeof c=="symbol"||typeof c=="boolean"){t.removeAttribute(s);break}c=rl(""+c),t.setAttribute(s,c);break;case"onClick":c!=null&&(t.onclick=Pa);break;case"onScroll":c!=null&&Ve("scroll",t);break;case"onScrollEnd":c!=null&&Ve("scrollend",t);break;case"dangerouslySetInnerHTML":if(c!=null){if(typeof c!="object"||!("__html"in c))throw Error(r(61));if(s=c.__html,s!=null){if(f.children!=null)throw Error(r(60));t.innerHTML=s}}break;case"multiple":t.multiple=c&&typeof c!="function"&&typeof c!="symbol";break;case"muted":t.muted=c&&typeof c!="function"&&typeof c!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(c==null||typeof c=="function"||typeof c=="boolean"||typeof c=="symbol"){t.removeAttribute("xlink:href");break}s=rl(""+c),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":c!=null&&typeof c!="function"&&typeof c!="symbol"?t.setAttribute(s,""+c):t.removeAttribute(s);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInl
49ine":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":c&&typeof c!="function"&&typeof c!="symbol"?t.setAttribute(s,""):t.removeAttribute(s);break;case"capture":case"download":c===!0?t.setAttribute(s,""):c!==!1&&c!=null&&typeof c!="function"&&typeof c!="symbol"?t.setAttribute(s,c):t.removeAttribute(s);break;case"cols":case"rows":case"size":case"span":c!=null&&typeof c!="function"&&typeof c!="symbol"&&!isNaN(c)&&1<=c?t.setAttribute(s,c):t.removeAttribute(s);break;case"rowSpan":case"start":c==null||typeof c=="function"||typeof c=="symbol"||isNaN(c)?t.removeAttribute(s):t.setAttribute(s,c);break;case"popover":Ve("beforetoggle",t),Ve("toggle",t),nl(t,"popover",c);break;case"xlinkActuate":Ma(t,"http://www.w3.org/1999/xlink","xlink:actuate",c);break;case"xlinkArcrole":Ma(t,"http://www.w3.org/1999/xlink","xlink:arcrole",c);break;case"xlinkRole":Ma(t,"http://www.w3.org/1999/xlink","xlink:role",c);break;case"xlinkShow":Ma(t,"http://www.w3.org/1999/xlink","xlink:show",c);break;case"xlinkTitle":Ma(t,"http://www.w3.org/1999/xlink","xlink:title",c);break;case"xlinkType":Ma(t,"http://www.w3.org/1999/xlink","xlink:type",c);break;case"xmlBase":Ma(t,"http://www.w3.org/XML/1998/namespace","xml:base",c);break;case"xmlLang":Ma(t,"http://www.w3.org/XML/1998/namespace","xml:lang",c);break;case"xmlSpace":Ma(t,"http://www.w3.org/XML/1998/namespace","xml:space",c);break;case"is":nl(t,"is",c);break;case"innerText":case"textContent":break;default:(!(2<s.length)||s[0]!=="o"&&s[0]!=="O"||s[1]!=="n"&&s[1]!=="N")&&(s=t2.get(s)||s,nl(t,s,c))}}function ih(t,a,s,c,f,g){switch(s){case"style":Xm(t,c,g);break;case"dangerouslySetInnerHTML":if(c!=null){if(typeof c!="object"||!("__html"in c))throw Error(r(61));if(s=c.__html,s!=null){if(f.children!=null)throw Error(r(60));t.innerHTML=s}}break;case"children":typeof c=="string"?Ir(t,c):(typeof c=="number"||typeof c=="bigint")&&Ir(t,""+c);break;case"onScroll":c!=null&&Ve("scroll",t);break;case"onScrollEnd":c!=null&&Ve("scrollend",t);break;case"onClick":c!=null&&(t.onclick=Pa);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!qm.hasOwnProperty(s))e:{if(s[0]==="o"&&s[1]==="n"&&(f=s.endsWith("Capture"),a=s.slice(2,f?s.length-7:void 0),g=t[yn]||null,g=g!=null?g[s]:null,typeof g=="function"&&t.removeEventListener(a,g,f),typeof c=="function")){typeof g!="function"&&g!==null&&(s in t?t[s]=null:t.hasAttribute(s)&&t.removeAttribute(s)),t.addEventListener(a,c,f);break e}s in t?t[s]=c:c===!0?t.setAttribute(s,""):nl(t,s,c)}}}function Zt(t,a,s){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Ve("error",t),Ve("load",t);var c=!1,f=!1,g;for(g in s)if(s.hasOwnProperty(g)){var w=s[g];if(w!=null)switch(g){case"src":c=!0;break;case"srcSet":f=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,a));default:dt(t,a,g,w,s,null)}}f&&dt(t,a,"srcSet",s.srcSet,s,null),c&&dt(t,a,"src",s.src,s,null);return;case"input":Ve("invalid",t);var T=g=w=f=null,R=null,ee=null;for(c in s)if(s.hasOwnProperty(c)){var re=s[c];if(re!=null)switch(c){case"name":f=re;break;case"type":w=re;break;case"checked":R=re;break;case"defaultChecked":ee=re;break;case"value":g=re;break;case"defaultValue":T=re;break;case"children":case"dangerouslySetInnerHTML":if(re!=null)throw Error(r(137,a));break;default:dt(t,a,c,re,s,null)}}Ym(t,g,T,R,ee,w,f,!1);return;case"select":Ve("invalid",t),c=w=g=null;for(f in s)if(s.hasOwnProperty(f)&&(T=s[f],T!=null))switch(f){case"value":g=T;break;case"defaultValue":w=T;break;case"multiple":c=T;default:dt(t,a,f,T,s,null)}a=g,s=w,t.multiple=!!c,a!=null?Er(t,!!c,a,!1):s!=null&&Er(t,!!c,s,!0);return;case"textarea":Ve("invalid",t),g=f=c=null;for(w in s)if(s.hasOwnProperty(w)&&(T=s[w],T!=null))switch(w){case"value":c=T;break;case"defaultValue":f=T;break;case"children":g=T;break;case"dangerouslySetInnerHTML":if(T!=null)throw Error(r(91));break;default:dt(t,a,w,T,s,null)}Qm(t,c,f,g);return;case"option":for(R in s)if(s.hasOwnProperty(R)&&(c=s[R],c!=null))switch(R){case"selected":t.selected=c&&typeof c!="function"&&typeof c!="symbol";break;default:dt(t,a,R,c,s,null)}return;case"dialog":Ve("beforetoggle",t),Ve("toggle",t),Ve("cancel",t),Ve("close",t);break;case"iframe":case"object":Ve("load",t);break;case"video":case"audio":for(c=0;c<fo.length;c++)Ve(fo[c],t);break;case"image":Ve("error",t),Ve("load",t);break;case"details":Ve("toggle",t);break;case"embed":case"source":case"link":Ve("error",t),Ve("load",t);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(ee in s)if(s.hasOwnProperty(ee)&&(c=s[ee],c!=null))switch(ee){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,a));default:dt(t,a,ee,c,s,null)}return;default:if(bd(a)){for(re in s)s.hasOwnProperty(re)&&(c=s[re],c!==void 0&&ih(t,a,re,c,s,void 0));return}}for(T in s)s.hasOwnProperty(T)&&(c=s[T],c!=null&&dt(t,a,T,c,s,null))}function F1(t,a,s,c){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var f=null,g=null,w=null,T=null,R=null,ee=null,re=null;for(ie in s){var le=s[ie];if(s.hasOwnProperty(ie)&&le!=null)switch(ie){case"checked":break;case"value":break;case"defaultValue":R=le;default:c.hasOwnProperty(ie)||dt(t,a,ie,null,c,le)}}for(var te in c){var ie=c[te];if(le=s[te],c.hasOwnProperty(te)&&(ie!=null||le!=null))switch(te){case"type":g=ie;break;case"name":f=ie;break;case"checked":ee=ie;break;case"defaultChecked":re=ie;break;case"value":w=ie;break;case"defaultValue":T=ie;break;case"children":case"dangerouslySetInnerHTML":if(ie!=null)throw Error(r(137,a));break;default:ie!==le&&dt(t,a,te,ie,c,le)}}gd(t,w,T,R,ee,re,g,f);return;case"select":ie=w=T=te=null;for(g in s)if(R=s[g],s.hasOwnProperty(g)&&R!=null)switch(g){case"value":break;case"multiple":ie=R;default:c.hasOwnProperty(g)||dt(t,a,g,null,c,R)}for(f in c)if(g=c[f],R=s[f],c.hasOwnProperty(f)&&(g!=null||R!=null))switch(f){case"value":te=g;break;case"defaultValue":T=g;break;case"multiple":w=g;default:g!==R&&dt(t,a,f,g,c,R)}a=T,s=w,c=ie,te!=null?Er(t,!!s,te,!1):!!c!=!!s&&(a!=null?Er(t,!!s,a,!0):Er(t,!!s,s?[]:"",!1));return;case"textarea":ie=te=null;for(T in s)if(f=s[T],s.hasOwnProperty(T)&&f!=null&&!c.hasOwnProperty(T))switch(T){case"value":break;case"children":break;default:dt(t,a,T,null,c,f)}for(w in c)if(f=c[w],g=s[w],c.hasOwnProperty(w)&&(f!=null||g!=null))switch(w){case"value":te=f;break;case"defaultValue":ie=f;break;case"children":break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(r(91));break;default:f!==g&&dt(t,a,w,f,c,g)}$m(t,te,ie);return;case"option":for(var ve in s)if(te=s[ve],s.hasOwnProperty(ve)&&te!=null&&!c.hasOwnProperty(ve))switch(ve){case"selected":t.selected=!1;break;default:dt(t,a,ve,null,c,te)}for(R in c)if(te=c[R],ie=s[R],c.hasOwnProperty(R)&&te!==ie&&(te!=null||ie!=null))switch(R){case"selected":t.selected=te&&typeof te!="function"&&typeof te!="symbol";break;default:dt(t,a,R,te,c,ie)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var Ne in s)te=s[Ne],s.hasOwnProperty(Ne)&&te!=null&&!c.hasOwnProperty(Ne)&&dt(t,a,Ne,null,c,te);for(ee in c)if(te=c[ee],ie=s[ee],c.hasOwnProperty(ee)&&te!==ie&&(te!=null||ie!=null))switch(ee){case"children":case"dangerouslySetInnerHTML":if(te!=null)throw Error(r(137,a));break;default:dt(t,a,ee,te,c,ie)}return;default:if(bd(a)){for(var ut in s)te=s[ut],s.hasOwnProperty(ut)&&te!==void 0&&!c.hasOwnProperty(ut)&&ih(t,a,ut,void 0,c,te);for(re in c)te=c[re],ie=s[re],!c.hasOwnProperty(re)||te===ie||te===void 0&&ie===void 0||ih(t,a,re,te,c,ie);return}}for(var K in s)te=s[K],s.hasOwnProperty(K)&&te!=null&&!c.hasOwnProperty(K)&&dt(t,a,K,null,c,te);for(le in c)te=c[le],ie=s[le],!c.hasOwnProperty(le)||te===ie||te==null&&ie==null||dt(t,a,le,te,c,ie)}function Zy(t){switch(t){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function E1(){if(typeof performance.getEntriesByType=="function"){for(var t=0,a=0,s=performance.getEntriesByType("resource"),c=0;c<s.length;c++){var f=s[c],g=f.transferSize,w=f.initiatorType,T=f.duration;if(g&&T&&Zy(w)){for(w=0,T=f.responseEnd,c+=1;c<s.length;c++){var R=s[c],ee=R.startTime;if(ee>T)break;var re=R.transferSize,le=R.initiatorType;
vendor: 13,408 bytes, line 49
49re&&Zy(le)&&(R=R.responseEnd,w+=re*(R<T?1:(T-ee)/(R-ee)))}if(--c,a+=8*(g+w)/(f.duration/1e3),t++,10<t)break}}if(0<t)return a/t/1e6}return navigator.connection&&(t=navigator.connection.downlink,typeof t=="number")?t:5}var rh=null,sh=null;function ec(t){return t.nodeType===9?t:t.ownerDocument}function eb(t){switch(t){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function tb(t,a){if(t===0)switch(a){case"svg":return 1;case"math":return 2;default:return 0}return t===1&&a==="foreignObject"?0:t}function oh(t,a){return t==="textarea"||t==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.children=="bigint"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var lh=null;function I1(){var t=window.event;return t&&t.type==="popstate"?t===lh?!1:(lh=t,!0):(lh=null,!1)}var nb=typeof setTimeout=="function"?setTimeout:void 0,N1=typeof clearTimeout=="function"?clearTimeout:void 0,ab=typeof Promise=="function"?Promise:void 0,M1=typeof queueMicrotask=="function"?queueMicrotask:typeof ab<"u"?function(t){return ab.resolve(null).then(t).catch(P1)}:nb;function P1(t){setTimeout(function(){throw t})}function ki(t){return t==="head"}function ib(t,a){var s=a,c=0;do{var f=s.nextSibling;if(t.removeChild(s),f&&f.nodeType===8)if(s=f.data,s==="/$"||s==="/&"){if(c===0){t.removeChild(f),os(a);return}c--}else if(s==="$"||s==="$?"||s==="$~"||s==="$!"||s==="&")c++;else if(s==="html")po(t.ownerDocument.documentElement);else if(s==="head"){s=t.ownerDocument.head,po(s);for(var g=s.firstChild;g;){var w=g.nextSibling,T=g.nodeName;g[Ms]||T==="SCRIPT"||T==="STYLE"||T==="LINK"&&g.rel.toLowerCase()==="stylesheet"||s.removeChild(g),g=w}}else s==="body"&&po(t.ownerDocument.body);s=f}while(s);os(a)}function rb(t,a){var s=t;t=0;do{var c=s.nextSibling;if(s.nodeType===1?a?(s._stashedDisplay=s.style.display,s.style.display="none"):(s.style.display=s._stashedDisplay||"",s.getAttribute("style")===""&&s.removeAttribute("style")):s.nodeType===3&&(a?(s._stashedText=s.nodeValue,s.nodeValue=""):s.nodeValue=s._stashedText||""),c&&c.nodeType===8)if(s=c.data,s==="/$"){if(t===0)break;t--}else s!=="$"&&s!=="$?"&&s!=="$~"&&s!=="$!"||t++;s=c}while(s)}function ch(t){var a=t.firstChild;for(a&&a.nodeType===10&&(a=a.nextSibling);a;){var s=a;switch(a=a.nextSibling,s.nodeName){case"HTML":case"HEAD":case"BODY":ch(s),md(s);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(s.rel.toLowerCase()==="stylesheet")continue}t.removeChild(s)}}function O1(t,a,s,c){for(;t.nodeType===1;){var f=s;if(t.nodeName.toLowerCase()!==a.toLowerCase()){if(!c&&(t.nodeName!=="INPUT"||t.type!=="hidden"))break}else if(c){if(!t[Ms])switch(a){case"meta":if(!t.hasAttribute("itemprop"))break;return t;case"link":if(g=t.getAttribute("rel"),g==="stylesheet"&&t.hasAttribute("data-precedence"))break;if(g!==f.rel||t.getAttribute("href")!==(f.href==null||f.href===""?null:f.href)||t.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin)||t.getAttribute("title")!==(f.title==null?null:f.title))break;return t;case"style":if(t.hasAttribute("data-precedence"))break;return t;case"script":if(g=t.getAttribute("src"),(g!==(f.src==null?null:f.src)||t.getAttribute("type")!==(f.type==null?null:f.type)||t.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin))&&g&&t.hasAttribute("async")&&!t.hasAttribute("itemprop"))break;return t;default:return t}}else if(a==="input"&&t.type==="hidden"){var g=f.name==null?null:""+f.name;if(f.type==="hidden"&&t.getAttribute("name")===g)return t}else return t;if(t=Yn(t.nextSibling),t===null)break}return null}function D1(t,a,s){if(a==="")return null;for(;t.nodeType!==3;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!s||(t=Yn(t.nextSibling),t===null))return null;return t}function sb(t,a){for(;t.nodeType!==8;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!a||(t=Yn(t.nextSibling),t===null))return null;return t}function dh(t){return t.data==="$?"||t.data==="$~"}function uh(t){return t.data==="$!"||t.data==="$?"&&t.ownerDocument.readyState!=="loading"}function R1(t,a){var s=t.ownerDocument;if(t.data==="$~")t._reactRetry=a;else if(t.data!=="$?"||s.readyState!=="loading")a();else{var c=function(){a(),s.removeEventListener("DOMContentLoaded",c)};s.addEventListener("DOMContentLoaded",c),t._reactRetry=c}}function Yn(t){for(;t!=null;t=t.nextSibling){var a=t.nodeType;if(a===1||a===3)break;if(a===8){if(a=t.data,a==="$"||a==="$!"||a==="$?"||a==="$~"||a==="&"||a==="F!"||a==="F")break;if(a==="/$"||a==="/&")return null}}return t}var hh=null;function ob(t){t=t.nextSibling;for(var a=0;t;){if(t.nodeType===8){var s=t.data;if(s==="/$"||s==="/&"){if(a===0)return Yn(t.nextSibling);a--}else s!=="$"&&s!=="$!"&&s!=="$?"&&s!=="$~"&&s!=="&"||a++}t=t.nextSibling}return null}function lb(t){t=t.previousSibling;for(var a=0;t;){if(t.nodeType===8){var s=t.data;if(s==="$"||s==="$!"||s==="$?"||s==="$~"||s==="&"){if(a===0)return t;a--}else s!=="/$"&&s!=="/&"||a++}t=t.previousSibling}return null}function cb(t,a,s){switch(a=ec(s),t){case"html":if(t=a.documentElement,!t)throw Error(r(452));return t;case"head":if(t=a.head,!t)throw Error(r(453));return t;case"body":if(t=a.body,!t)throw Error(r(454));return t;default:throw Error(r(451))}}function po(t){for(var a=t.attributes;a.length;)t.removeAttributeNode(a[0]);md(t)}var $n=new Map,db=new Set;function tc(t){return typeof t.getRootNode=="function"?t.getRootNode():t.nodeType===9?t:t.ownerDocument}var $a=D.d;D.d={f:_1,r:B1,D:L1,C:z1,L:U1,m:H1,X:W1,S:q1,M:V1};function _1(){var t=$a.f(),a=Gl();return t||a}function B1(t){var a=Cr(t);a!==null&&a.tag===5&&a.type==="form"?jg(a):$a.r(t)}var is=typeof document>"u"?null:document;function ub(t,a,s){var c=is;if(c&&typeof a=="string"&&a){var f=Un(a);f='link[rel="'+t+'"][href="'+f+'"]',typeof s=="string"&&(f+='[crossorigin="'+s+'"]'),db.has(f)||(db.add(f),t={rel:t,crossOrigin:s,href:a},c.querySelector(f)===null&&(a=c.createElement("link"),Zt(a,"link",t),Ht(a),c.head.appendChild(a)))}}function L1(t){$a.D(t),ub("dns-prefetch",t,null)}function z1(t,a){$a.C(t,a),ub("preconnect",t,a)}function U1(t,a,s){$a.L(t,a,s);var c=is;if(c&&t&&a){var f='link[rel="preload"][as="'+Un(a)+'"]';a==="image"&&s&&s.imageSrcSet?(f+='[imagesrcset="'+Un(s.imageSrcSet)+'"]',typeof s.imageSizes=="string"&&(f+='[imagesizes="'+Un(s.imageSizes)+'"]')):f+='[href="'+Un(t)+'"]';var g=f;switch(a){case"style":g=rs(t);break;case"script":g=ss(t)}$n.has(g)||(t=y({rel:"preload",href:a==="image"&&s&&s.imageSrcSet?void 0:t,as:a},s),$n.set(g,t),c.querySelector(f)!==null||a==="style"&&c.querySelector(go(g))||a==="script"&&c.querySelector(yo(g))||(a=c.createElement("link"),Zt(a,"link",t),Ht(a),c.head.appendChild(a)))}}function H1(t,a){$a.m(t,a);var s=is;if(s&&t){var c=a&&typeof a.as=="string"?a.as:"script",f='link[rel="modulepreload"][as="'+Un(c)+'"][href="'+Un(t)+'"]',g=f;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":g=ss(t)}if(!$n.has(g)&&(t=y({rel:"modulepreload",href:t},a),$n.set(g,t),s.querySelector(f)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(s.querySelector(yo(g)))return}c=s.createElement("link"),Zt(c,"link",t),Ht(c),s.head.appendChild(c)}}}function q1(t,a,s){$a.S(t,a,s);var c=is;if(c&&t){var f=jr(c).hoistableStyles,g=rs(t);a=a||"default";var w=f.get(g);if(!w){var T={loading:0,preload:null};if(w=c.querySelector(go(g)))T.loading=5;else{t=y({rel:"stylesheet",href:t,"data-precedence":a},s),(s=$n.get(g))&&fh(t,s);var R=w=c.createElement("link");Ht(R),Zt(R,"link",t),R._p=new Promise(function(ee,re){R.onload=ee,R.onerror=re}),R.addEventListener("load",function(){T.loading|=1}),R.addEventListener("error",function(){T.loading|=2}),T.loading|=4,nc(w,a,c)}w={type:"stylesheet",instance:w,count:1,state:T},f.set(g,w)}}}function W1(t,a){$a.X(t,a);var s=is;if(s&&t){var c=jr(s).hoistableScripts,f=ss(t),g=c.get(f);g||(g=s.querySelector(yo(f)),g||(t=y({src:t,async:!0},a),(a=$n.get(f))&&mh(t,a),g=s.createElement("script"),Ht(g),Zt(g,"link",t),s.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},c.set(f,g))}}function V1(t,a){$a.M(t,a);var s=is;if(s&&t){var c=jr(s).hoistableScripts,f=ss(t),g=c.get(f);g||(g=s.querySelector(yo(f)),g||(t=y({src:t,async:!0,type:"module"},a),(a=$n.get(f))&&mh(t,a),g=s.createElement("script"),Ht(g),Zt(g,"link",t),s.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},c.set(f,g))}}function hb(t,a,s,c){var f=(f=ue.current)?tc(f):null;if(!f)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof s.precedence=="string"&&typeof s.href=="string"?(a=rs(s.href),s=jr(f).hoistableStyles,c=s.get(a),c||(c={type:"style",instance:null,count:0,state:null},s.set(a,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(s.rel==="stylesheet"&&typeof s.href=="string"&&typeof s.precedence=="string"){t=rs(s.href);var g=jr(f).hoistableStyles,w=g.get(t);if(w||(f=f.ownerDocument||f,w={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},g.set(t,w),(g=f.querySelector(go(t)))&&!g._p&&(w.instance=g,w.state.loading=5),$n.has(t)||(s={rel:"preload",as:"style",href:s.href,crossOrigin:s.crossOrigin,integrity:s.integrity,media:s.media,hrefLang:s.hrefLang,referrerPolicy:s.referrerPolicy},$n.set(t,s),g||G1(f,t,s,w.state))),a&&c===null)throw Error(r(528,""));return w}if(a&&c!==null)throw Error(r(529,""));return null;case"script":return a=s.async,s=s.src,typeof s=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=ss(s),s=jr(f).hoistableScripts,c=s.get(a),c||(c={type:"script",instance:null,count:0,state:null},s.set(a,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function rs(t){return'href="'+Un(t)+'"'}function go(t){return'link[rel="stylesheet"]['+t+"]"}function fb(t){return y({},t,{"data-precedence":t.precedence,precedence:null})}function G1(t,a,s,c){t.querySelector('link[rel="preload"][as="style"]['+a+"]")?c.loading=1:(a=t.createElement("link"),c.preload=a,a.addEventListener("load",function(){return c.loading|=1}),a.addEventListener("error",function(){return c.loading|=2}),Zt(a,"link",s),Ht(a),t.head.appendChild(a))}function ss(t){return'[src="'+Un(t)+'"]'}function yo(t){return"script[async]"+t}function mb(t,a,s){if(a.count++,a.instance===null)switch(a.type){case"style":var c=t.querySelector('style[data-href~="'+Un(s.href)+'"]');if(c)return a.instance=c,Ht(c),c;var f=y({},s,{"data-href":s.href,"data-precedence":s.precedence,href:null,precedence:null});return c=(t.ownerDocument||t).createElement("style"),Ht(c),Zt(c,"style",f),nc(c,s.precedence,t),a.instance=c;case"stylesheet":f=rs(s.href);var g=t.querySelector(go(f));if(g)return a.state.loading|=4,a.instance=g,Ht(g),g;c=fb(s),(f=$n.get(f))&&fh(c,f),g=(t.ownerDocument||t).createElement("link"),Ht(g);var w=g;return w._p=new Promise(function(T,R){w.onload=T,w.onerror=R}),Zt(g,"link",c),a.state.loading|=4,nc(g,s.precedence,t),a.instance=g;case"script":return g=ss(s.src),(f=t.querySelector(yo(g)))?(a.instance=f,Ht(f),f):(c=s,(f=$n.get(g))&&(c=y({},s),mh(c,f)),t=t.ownerDocument||t,f=t.createElement("script"),Ht(f),Zt(f,"link",c),t.head.appendChild(f),a.instance=f);case"void":return null;default:throw Error(r(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(c=a.instance,a.state.loading|=4,nc(c,s.precedence,t));return a.instance}function nc(t,a,s){for(var c=s.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),f=c.length?c[c.length-1]:null,g=f,w=0;w<c.length;w++){var T=c[w];if(T.dataset.precedence===a)g=T;else if(g!==f)break}g?g.parentNode.insertBefore(t,g.nextSibling):(a=s.nodeType===9?s.head:s,a.insertBefore(t,a.firstChild))}function fh(t,a){t.crossOrigin==null&&(t.crossOrigin=a.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=a.referrerPolicy),t.title==null&&(t.title=a.title)}function mh(t,a){t.crossOrigin==null&&(t.crossOrigin=a.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=a.referrerPolicy),t.integrity==null&&(t.integrity=a.integrity)}var ac=null;function pb(t,a,s){if(ac===null){var c=new Map,f=ac=new Map;f.set(s,c)}else f=ac,c=f.get(s),c||(c=new Map,f.set(s,c));if(c.has(t))return c;for(c.set(t,null),s=s.getElementsByTagName(t),f=0;f<s.length;f++){var g=s[f];if(!(g[Ms]||g[$t]||t==="link"&&g.getAttribute("rel")==="stylesheet")&&g.namespaceURI!=="http://www.w3.org/2000/svg"){var w=g.getAttribute(a)||"";w=t+w;var T=c.get(w);T?T.push(g):c.set(w,[g])}}return c}function gb(t,a,s){t=t.ownerDocument||t,t.head.insertBefore(s,a==="title"?t.querySelector("head > title"):null)}function K1(t,a,s){if(s===1||a.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;switch(a.rel){case"stylesheet":return t=a.disabled,typeof a.precedence=="string"&&t==null;default:return!0}case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function yb(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Y1(t,a,s,c){if(s.type==="stylesheet"&&(typeof c.media!="str
49ing"||matchMedia(c.media).matches!==!1)&&(s.state.loading&4)===0){if(s.instance===null){var f=rs(c.href),g=a.querySelector(go(f));if(g){a=g._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(t.count++,t=ic.bind(t),a.then(t,t)),s.state.loading|=4,s.instance=g,Ht(g);return}g=a.ownerDocument||a,c=fb(c),(f=$n.get(f))&&fh(c,f),g=g.createElement("link"),Ht(g);var w=g;w._p=new Promise(function(T,R){w.onload=T,w.onerror=R}),Zt(g,"link",c),s.instance=g}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(s,a),(a=s.state.preload)&&(s.state.loading&3)===0&&(t.count++,s=ic.bind(t),a.addEventListener("load",s),a.addEventListener("error",s))}}var ph=0;function $1(t,a){return t.stylesheets&&t.count===0&&sc(t,t.stylesheets),0<t.count||0<t.imgCount?function(s){var c=setTimeout(function(){if(t.stylesheets&&sc(t,t.stylesheets),t.unsuspend){var g=t.unsuspend;t.unsuspend=null,g()}},6e4+a);0<t.imgBytes&&ph===0&&(ph=62500*E1());var f=setTimeout(function(){if(t.waitingForImages=!1,t.count===0&&(t.stylesheets&&sc(t,t.stylesheets),t.unsuspend)){var g=t.unsuspend;t.unsuspend=null,g()}},(t.imgBytes>ph?50:800)+a);return t.unsuspend=s,function(){t.unsuspend=null,clearTimeout(c),clearTimeout(f)}}:null}function ic(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)sc(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var rc=null;function sc(t,a){t.stylesheets=null,t.unsuspend!==null&&(t.count++,rc=new Map,a.forEach(Q1,t),rc=null,ic.call(t))}function Q1(t,a){if(!(a.state.loading&4)){var s=rc.get(t);if(s)var c=s.get(null);else{s=new Map,rc.set(t,s);for(var f=t.querySelectorAll("link[data-precedence],style[data-precedence]"),g=0;g<f.length;g++){var w=f[g];(w.nodeName==="LINK"||w.getAttribute("media")!=="not all")&&(s.set(w.dataset.precedence,w),c=w)}c&&s.set(null,c)}f=a.instance,w=f.getAttribute("data-precedence"),g=s.get(w)||c,g===c&&s.set(null,f),s.set(w,f),this.count++,c=ic.bind(this),f.addEventListener("load",c),f.addEventListener("error",c),g?g.parentNode.insertBefore(f,g.nextSibling):(t=t.nodeType===9?t.head:t,t.insertBefore(f,t.firstChild)),a.state.loading|=4}}var bo={$$typeof:q,Provider:null,Consumer:null,_currentValue:B,_currentValue2:B,_threadCount:0};function J1(t,a,s,c,f,g,w,T,R){this.tag=1,this.containerInfo=t,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=ii(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ii(0),this.hiddenUpdates=ii(null),this.identifierPrefix=c,this.onUncaughtError=f,this.onCaughtError=g,this.onRecoverableError=w,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=R,this.incompleteTransitions=new Map}function bb(t,a,s,c,f,g,w,T,R,ee,re,le){return t=new J1(t,a,s,w,R,ee,re,le,T),a=1,g===!0&&(a|=24),g=En(3,null,null,a),t.current=g,g.stateNode=t,a=Yd(),a.refCount++,t.pooledCache=a,a.refCount++,g.memoizedState={element:c,isDehydrated:s,cache:a},Xd(g),t}function xb(t){return t?(t=_r,t):_r}function vb(t,a,s,c,f,g){f=xb(f),c.context===null?c.context=f:c.pendingContext=f,c=hi(a),c.payload={element:s},g=g===void 0?null:g,g!==null&&(c.callback=g),s=fi(t,c,a),s!==null&&(kn(s,t,a),$s(s,t,a))}function wb(t,a){if(t=t.memoizedState,t!==null&&t.dehydrated!==null){var s=t.retryLane;t.retryLane=s!==0&&s<a?s:a}}function gh(t,a){wb(t,a),(t=t.alternate)&&wb(t,a)}function Ab(t){if(t.tag===13||t.tag===31){var a=Ki(t,67108864);a!==null&&kn(a,t,67108864),gh(t,67108864)}}function kb(t){if(t.tag===13||t.tag===31){var a=On();a=kr(a);var s=Ki(t,a);s!==null&&kn(s,t,a),gh(t,a)}}var oc=!0;function X1(t,a,s,c){var f=F.T;F.T=null;var g=D.p;try{D.p=2,yh(t,a,s,c)}finally{D.p=g,F.T=f}}function Z1(t,a,s,c){var f=F.T;F.T=null;var g=D.p;try{D.p=8,yh(t,a,s,c)}finally{D.p=g,F.T=f}}function yh(t,a,s,c){if(oc){var f=bh(c);if(f===null)ah(t,a,c,lc,s),Tb(t,c);else if(tk(f,t,a,s,c))c.stopPropagation();else if(Tb(t,c),a&4&&-1<ek.indexOf(t)){for(;f!==null;){var g=Cr(f);if(g!==null)switch(g.tag){case 3:if(g=g.stateNode,g.current.memoizedState.isDehydrated){var w=pa(g.pendingLanes);if(w!==0){var T=g;for(T.pendingLanes|=2,T.entangledLanes|=2;w;){var R=1<<31-it(w);T.entanglements[1]|=R,w&=~R}
vendor: 6,405 bytes, line 49
49xa(g),(nt&6)===0&&(Wl=Gt()+500,ho(0))}}break;case 31:case 13:T=Ki(g,2),T!==null&&kn(T,g,2),Gl(),gh(g,2)}if(g=bh(c),g===null&&ah(t,a,c,lc,s),g===f)break;f=g}f!==null&&c.stopPropagation()}else ah(t,a,c,null,s)}}function bh(t){return t=vd(t),xh(t)}var lc=null;function xh(t){if(lc=null,t=Tr(t),t!==null){var a=d(t);if(a===null)t=null;else{var s=a.tag;if(s===13){if(t=u(a),t!==null)return t;t=null}else if(s===31){if(t=h(a),t!==null)return t;t=null}else if(s===3){if(a.stateNode.current.memoizedState.isDehydrated)return a.tag===3?a.stateNode.containerInfo:null;t=null}else a!==t&&(t=null)}}return lc=t,null}function Sb(t){switch(t){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Ns()){case se:return 2;case fe:return 8;case Ie:case Be:return 32;case qe:return 268435456;default:return 32}default:return 32}}var vh=!1,Si=null,Ti=null,Ci=null,xo=new Map,vo=new Map,ji=[],ek="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Tb(t,a){switch(t){case"focusin":case"focusout":Si=null;break;case"dragenter":case"dragleave":Ti=null;break;case"mouseover":case"mouseout":Ci=null;break;case"pointerover":case"pointerout":xo.delete(a.pointerId);break;case"gotpointercapture":case"lostpointercapture":vo.delete(a.pointerId)}}function wo(t,a,s,c,f,g){return t===null||t.nativeEvent!==g?(t={blockedOn:a,domEventName:s,eventSystemFlags:c,nativeEvent:g,targetContainers:[f]},a!==null&&(a=Cr(a),a!==null&&Ab(a)),t):(t.eventSystemFlags|=c,a=t.targetContainers,f!==null&&a.indexOf(f)===-1&&a.push(f),t)}function tk(t,a,s,c,f){switch(a){case"focusin":return Si=wo(Si,t,a,s,c,f),!0;case"dragenter":return Ti=wo(Ti,t,a,s,c,f),!0;case"mouseover":return Ci=wo(Ci,t,a,s,c,f),!0;case"pointerover":var g=f.pointerId;return xo.set(g,wo(xo.get(g)||null,t,a,s,c,f)),!0;case"gotpointercapture":return g=f.pointerId,vo.set(g,wo(vo.get(g)||null,t,a,s,c,f)),!0}return!1}function Cb(t){var a=Tr(t.target);if(a!==null){var s=d(a);if(s!==null){if(a=s.tag,a===13){if(a=u(s),a!==null){t.blockedOn=a,zm(t.priority,function(){kb(s)});return}}else if(a===31){if(a=h(s),a!==null){t.blockedOn=a,zm(t.priority,function(){kb(s)});return}}else if(a===3&&s.stateNode.current.memoizedState.isDehydrated){t.blockedOn=s.tag===3?s.stateNode.containerInfo:null;return}}}t.blockedOn=null}function cc(t){if(t.blockedOn!==null)return!1;for(var a=t.targetContainers;0<a.length;){var s=bh(t.nativeEvent);if(s===null){s=t.nativeEvent;var c=new s.constructor(s.type,s);xd=c,s.target.dispatchEvent(c),xd=null}else return a=Cr(s),a!==null&&Ab(a),t.blockedOn=s,!1;a.shift()}return!0}function jb(t,a,s){cc(t)&&s.delete(a)}function nk(){vh=!1,Si!==null&&cc(Si)&&(Si=null),Ti!==null&&cc(Ti)&&(Ti=null),Ci!==null&&cc(Ci)&&(Ci=null),xo.forEach(jb),vo.forEach(jb)}function dc(t,a){t.blockedOn===a&&(t.blockedOn=null,vh||(vh=!0,e.unstable_scheduleCallback(e.unstable_NormalPriority,nk)))}var uc=null;function Fb(t){uc!==t&&(uc=t,e.unstable_scheduleCallback(e.unstable_NormalPriority,function(){uc===t&&(uc=null);for(var a=0;a<t.length;a+=3){var s=t[a],c=t[a+1],f=t[a+2];if(typeof c!="function"){if(xh(c||s)===null)continue;break}var g=Cr(s);g!==null&&(t.splice(a,3),a-=3,bu(g,{pending:!0,data:f,method:s.method,action:c},c,f))}}))}function os(t){function a(R){return dc(R,t)}Si!==null&&dc(Si,t),Ti!==null&&dc(Ti,t),Ci!==null&&dc(Ci,t),xo.forEach(a),vo.forEach(a);for(var s=0;s<ji.length;s++){var c=ji[s];c.blockedOn===t&&(c.blockedOn=null)}for(;0<ji.length&&(s=ji[0],s.blockedOn===null);)Cb(s),s.blockedOn===null&&ji.shift();if(s=(t.ownerDocument||t).$$reactFormReplay,s!=null)for(c=0;c<s.length;c+=3){var f=s[c],g=s[c+1],w=f[yn]||null;if(typeof g=="function")w||Fb(s);else if(w){var T=null;if(g&&g.hasAttribute("formAction")){if(f=g,w=g[yn]||null)T=w.formAction;else if(xh(f)!==null)continue}else T=w.action;typeof T=="function"?s[c+1]=T:(s.splice(c,3),c-=3),Fb(s)}}}function Eb(){function t(g){g.canIntercept&&g.info==="react-transition"&&g.intercept({handler:function(){return new Promise(function(w){return f=w})},focusReset:"manual",scroll:"manual"})}function a(){f!==null&&(f(),f=null),c||setTimeout(s,20)}function s(){if(!c&&!navigation.transition){var g=navigation.currentEntry;g&&g.url!=null&&navigation.navigate(g.url,{state:g.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var c=!1,f=null;return navigation.addEventListener("navigate",t),navigation.addEventListener("navigatesuccess",a),navigation.addEventListener("navigateerror",a),setTimeout(s,100),function(){c=!0,navigation.removeEventListener("navigate",t),navigation.removeEventListener("navigatesuccess",a),navigation.removeEventListener("navigateerror",a),f!==null&&(f(),f=null)}}}function wh(t){this._internalRoot=t}hc.prototype.render=wh.prototype.render=function(t){var a=this._internalRoot;if(a===null)throw Error(r(409));var s=a.current,c=On();vb(s,c,t,a,null,null)},hc.prototype.unmount=wh.prototype.unmount=function(){var t=this._internalRoot;if(t!==null){this._internalRoot=null;var a=t.containerInfo;vb(t.current,2,null,t,null,null),Gl(),a[Sr]=null}};function hc(t){this._internalRoot=t}hc.prototype.unstable_scheduleHydration=function(t){if(t){var a=hd();
49t={blockedOn:null,target:t,priority:a};for(var s=0;s<ji.length&&a!==0&&a<ji[s].priority;s++);ji.splice(s,0,t),s===0&&Cb(t)}};var Ib=n.version;if(Ib!=="19.2.1")throw Error(r(527,Ib,"19.2.1"));D.findDOMNode=function(t){var a=t._reactInternals;if(a===void 0)throw typeof t.render=="function"?Error(r(188)):(t=Object.keys(t).join(","),Error(r(268,t)));return t=p(a),t=t!==null?b(t):null,t=t===null?null:t.stateNode,t};var ak={bundleType:0,version:"19.2.1",rendererPackageName:"react-dom",currentDispatcherRef:F,reconcilerVersion:"19.2.1"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var fc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!fc.isDisabled&&fc.supportsFiber)try{Kt=fc.inject(ak),Ft=fc}catch{}}return So.createRoot=function(t,a){if(!l(t))throw Error(r(299));var s=!1,c="",f=_g,g=Bg,w=Lg;return a!=null&&(a.unstable_strictMode===!0&&(s=!0),a.identifierPrefix!==void 0&&(c=a.identifierPrefix),a.onUncaughtError!==void 0&&(f=a.onUncaughtError),a.onCaughtError!==void 0&&(g=a.onCaughtError),a.onRecoverableError!==void 0&&(w=a.onRecoverableError)),a=bb(t,1,!1,null,null,s,c,null,f,g,w,Eb),t[Sr]=a.current,nh(t),new wh(a)},So.hydrateRoot=function(t,a,s){if(!l(t))throw Error(r(299));var c=!1,f="",g=_g,w=Bg,T=Lg,R=null;return s!=null&&(s.unstable_strictMode===!0&&(c=!0),s.identifierPrefix!==void 0&&(f=s.identifierPrefix),s.onUncaughtError!==void 0&&(g=s.onUncaughtError),s.onCaughtError!==void 0&&(w=s.onCaughtError),s.onRecoverableError!==void 0&&(T=s.onRecoverableError),s.formState!==void 0&&(R=s.formState)),a=bb(t,1,!0,a,s??null,c,f,R,g,w,T,Eb),a.context=xb(null),s=a.current,c=On(),c=kr(c),f=hi(c),f.callback=null,fi(s,f,c),s=c,a.current.lanes=s,kt(a,s),xa(a),t[Sr]=a.current,nh(t),new hc(a)},So.version="19.2.1",So}var ox;function eC(){if(ox)return Eh.exports;ox=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Eh.exports=ZT(),Eh.exports}var tC=eC(),Ph,lx;function nC(){if(lx)return Ph;lx=1;var e=typeof Element<"u",n=typeof Map=="function",i=typeof Set=="function",r=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function l(d,u){if(d===u)return!0;if(d&&u&&typeof d=="object"&&typeof u=="object"){if(d.constructor!==u.constructor)return!1;var h,m,p;if(Array.isArray(d)){if(h=d.length,h!=u.length)return!1;for(m=h;m--!==0;)if(!l(d[m],u[m]))return!1;return!0}var b;if(n&&d instanceof Map&&u instanceof Map){if(d.size!==u.size)return!1;for(b=d.entries();!(m=b.next()).done;)if(!u.has(m.value[0]))return!1;for(b=d.entries();!(m=b.next()).done;)if(!l(m.value[1],u.get(m.value[0])))return!1;return!0}if(i&&d instanceof Set&&u instanceof Set){if(d.size!==u.size)return!1;for(b=d.entries();!(m=b.next()).done;)if(!u.has(m.value[0]))return!1;return!0}if(r&&ArrayBuffer.isView(d)&&ArrayBuffer.isView(u)){if(h=d.length,h!=u.length)return!1;for(m=h;m--!==0;)if(d[m]!==u[m])return!1;return!0}if(d.constructor===RegExp)return d.source===u.source&&d.flags===u.flags;if(d.valueOf!==Object.prototype.valueOf&&typeof d.valueOf=="function"&&typeof u.valueOf=="function")return d.valueOf()===u.valueOf();if(d.toString!==Object.prototype.toString&&typeof d.toString=="function"&&typeof u.toString=="function")return d.toString()===u.toString();if(p=Object.keys(d),h=p.length,h!==Object.keys(u).length)return!1;for(m=h;m--!==0;)if(!Object.prototype.hasOwnProperty.call(u,p[m]))return!1;if(e&&d instanceof Element)return!1;for(m=h;m--!==0;)if(!((p[m]==="_owner"||p[m]==="__v"||p[m]==="__o")&&d.$$typeof)&&!l(d[p[m]],u[p[m]]))return!1;return!0}return d!==d&&u!==u}return Ph=function(u,h){try{return l(u,h)}catch(m){if((m.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw m}},Ph}var aC=nC();const iC=fr(aC);var Oh,cx;function rC(){if(cx)return Oh;cx=1;var e=function(n,i,r,l,d,u,h,m){if(!n){var p;if(i===void 0)p=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var b=[r,l,d,u,h,m],y=0;p=new Error(i.replace(/%s/g,function(){return b[y++]})),p.name="Invariant Violation"}throw p.framesToPop=1,p}};return Oh=e,Oh}var sC=rC();const dx=fr(sC);var Dh,ux;function oC(){return ux||(ux=1,Dh=function(n,i,r,l){var d=r?r.call(l,n,i):void 0;if(d!==void 0)return!!d;if(n===i)return!0;
49if(typeof n!="object"||!n||typeof i!="object"||!i)return!1;var u=Object.keys(n),h=Object.keys(i);if(u.length!==h.length)return!1;for(var m=Object.prototype.hasOwnProperty.bind(i),p=0;p<u.length;p++){var b=u[p];if(!m(b))return!1;var y=n[b],v=i[b];if(d=r?r.call(l,y,v,b):void 0,d===!1||d===void 0&&y!==v)return!1}return!0}),Dh}var lC=oC();const cC=fr(lC);var Qw=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(Qw||{}),Rh={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]},meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},hx=Object.values(Qw),Zc={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},Jw=Object.entries(Zc).reduce((e,[n,i])=>(e[i]=n,e),{}),ra="data-rh",ps={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},gs=(e,n)=>{for(let i=e.length-1;i>=0;i-=1){const r=e[i];if(Object.prototype.hasOwnProperty.call(r,n))return r[n]}return null},dC=e=>{let n=gs(e,"title");const i=gs(e,ps.TITLE_TEMPLATE);if(Array.isArray(n)&&(n=n.join("")),i&&n)return i.replace(/%s/g,()=>n);const r=gs(e,ps.DEFAULT_TITLE);return n||r||void 0},uC=e=>gs(e,ps.ON_CHANGE_CLIENT_STATE)||(()=>{}),_h=(e,n)=>n.filter(i=>typeof i[e]<"u").map(i=>i[e]).reduce((i,r)=>({...i,...r}),{}),hC=(e,n)=>n.filter(i=>typeof i.base<"u").map(i=>i.base).reverse().reduce((i,r)=>{if(!i.length){const l=Object.keys(r);for(let d=0;d<l.length;d+=1){const h=l[d].toLowerCase();if(e.indexOf(h)!==-1&&r[h])return i.concat(r)}}return i},[]),fC=e=>console&&typeof console.warn=="function"&&console.warn(e),To=(e,n,i)=>{const r={};return i.filter(l=>Array.isArray(l[e])?!0:(typeof l[e]<"u"&&fC(`Helmet: ${e} should be of type "Array". Instead found type "${typeof l[e]}"`),!1)).map(l=>l[e]).reverse().reduce((l,d)=>{const u={};d.filter(m=>{let p;const b=Object.keys(m);for(let v=0;v<b.length;v+=1){const x=b[v],S=x.toLowerCase();n.indexOf(S)!==-1&&!(p==="rel"&&m[p].toLowerCase()==="canonical")&&!(S==="rel"&&m[S].toLowerCase()==="stylesheet")&&(p=S),n.indexOf(x)!==-1&&(x==="innerHTML"||x==="cssText"||x==="itemprop")&&(p=x)}if(!p||!m[p])return!1;const y=m[p].toLowerCase();return r[p]||(r[p]={}),u[p]||(u[p]={}),r[p][y]?!1:(u[p][y]=!0,!0)}).reverse().forEach(m=>l.push(m));const h=Object.keys(u);for(let m=0;m<h.length;m+=1){const p=h[m],b={...r[p],...u[p]};r[p]=b}return l},[]).reverse()},mC=(e,n)=>{if(Array.isArray(e)&&e.length){for(let i=0;i<e.length;i+=1)if(e[i][n])return!0}return!1},pC=e=>({baseTag:hC(["href"],e),bodyAttributes:_h("bodyAttributes",e),defer:gs(e,ps.DEFER),encode:gs(e,ps.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:_h("htmlAttributes",e),linkTags:To("link",["rel","href"],e),metaTags:To("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:To("noscript",["innerHTML"],e),onChangeClientState:uC(e),scriptTags:To("script",["src","innerHTML"],e),styleTags:To("style",["cssText"],e),title:dC(e),titleAttributes:_h("titleAttributes",e),prioritizeSeoTags:mC(e,ps.PRIORITIZE_SEO_TAGS)}),Xw=e=>Array.isArray(e)?e.join(""):e,gC=(e,n)=>{const i=Object.keys(e);for(let r=0;r<i.length;r+=1)if(n[i[r]]&&n[i[r]].includes(e[i[r]]))return!0;return!1},Bh=(e,n)=>Array.isArray(e)?e.reduce((i,r)=>(gC(r,n)?i.priority.push(r):i.default.push(r),i),{priority:[],default:[]}):{default:e,priority:[]},fx=(e,n)=>({...e,[n]:void 0}),yC=["noscript","script","style"],jf=(e,n=!0)=>n===!1?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),Zw=e=>Object.keys(e).reduce((n,i)=>{const r=typeof e[i]<"u"?`${i}="${e[i]}"`:`${i}`;return n?`${n} ${r}`:r},""),bC=(e,n,i,r)=>{const l=Zw(i),d=Xw(n);return l?`<${e} ${ra}="true" ${l}>${jf(d,r)}</${e}>`:`<${e} ${ra}="true">${jf(d,r)}</${e}>`},xC=(e,n,i=!0)=>n.reduce((r,l)=>{const d=l,u=Object.keys(d).filter(p=>!(p==="innerHTML"||p==="cssText")).reduce((p,b)=>{const y=typeof d[b]>"u"?b:`${b}="${jf(d[b],i)}"`;return p?`${p} ${y}`:y},""),h=d.innerHTML||d.cssText||"",m=yC.indexOf(e)===-1;return`${r}<${e} ${ra}="true" ${u}${m?"/>":`>${h}</${e}>`}`},""),e0=(e,n={})=>Object.keys(e).reduce((i,r)=>{const l=Zc[r];return i[l||r]=e[r],i},n),vC=(e,n,i)=>{const r={key:n,[ra]:!0},l=e0(i,r);return[de.createElement("title",l,n)]},Nc=(e,n)=>n.map((i,r)=>{const l={key:r,[ra]:!0};
49return Object.keys(i).forEach(d=>{const h=Zc[d]||d;if(h==="innerHTML"||h==="cssText"){const m=i.innerHTML||i.cssText;l.dangerouslySetInnerHTML={__html:m}}else l[h]=i[d]}),de.createElement(e,l)}),Qn=(e,n,i=!0)=>{switch(e){case"title":return{toComponent:()=>vC(e,n.title,n.titleAttributes),toString:()=>bC(e,n.title,n.titleAttributes,i)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>e0(n),toString:()=>Zw(n)};default:return{toComponent:()=>Nc(e,n),toString:()=>xC(e,n,i)}}},wC=({metaTags:e,linkTags:n,scriptTags:i,encode:r})=>{const l=Bh(e,Rh.meta),d=Bh(n,Rh.link),u=Bh(i,Rh.script);return{priorityMethods:{toComponent:()=>[...Nc("meta",l.priority),...Nc("link",d.priority),...Nc("script",u.priority)],toString:()=>`${Qn("meta",l.priority,r)} ${Qn("link",d.priority,r)} ${Qn("script",u.priority,r)}`},metaTags:l.default,linkTags:d.default,scriptTags:u.default}},AC=e=>{const{baseTag:n,bodyAttributes:i,encode:r=!0,htmlAttributes:l,noscriptTags:d,styleTags:u,title:h="",titleAttributes:m,prioritizeSeoTags:p}=e;let{linkTags:b,metaTags:y,scriptTags:v}=e,x={toComponent:()=>[],toString:()=>""};return p&&({priorityMethods:x,linkTags:b,metaTags:y,scriptTags:v}=wC(e)),{priority:x,base:Qn("base",n,r),bodyAttributes:Qn("bodyAttributes",i,r),htmlAttributes:Qn("htmlAttributes",l,r),link:Qn("link",b,r),meta:Qn("meta",y,r),noscript:Qn("noscript",d,r),script:Qn("script",v,r),style:Qn("style",u,r),title:Qn("title",{title:h,titleAttributes:m},r)}},Ff=AC,bc=[],om=!!(typeof window<"u"&&window.document&&window.document.createElement),Ef=class{instances=[];canUseDOM=om;context;value={setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?bc:this.instances,add:e=>{(this.canUseDOM?bc:this.instances).push(e)},remove:e=>{const n=(this.canUseDOM?bc:this.instances).indexOf(e);(this.canUseDOM?bc:this.instances).splice(n,1)}}};constructor(e,n){this.context=e,this.canUseDOM=n||!1,n||(e.helmet=Ff({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},kC=parseInt(de.version.split(".")[0],10),If=kC>=19,SC={},t0=de.createContext(SC),n0=class a0 extends j.Component{static canUseDOM=om;helmetData;constructor(n){super(n),If?this.helmetData=null:this.helmetData=new Ef(this.props.context||{},a0.canUseDOM)}render(){return If?de.createElement(de.Fragment,null,this.props.children):de.createElement(t0.Provider,{value:this.helmetData.value},this.props.children)}},cs=(e,n)=>{const i=document.head||document.querySelector("head"),r=i.querySelectorAll(`${e}[${ra}]`),l=[].slice.call(r),d=[];let u;return n&&n.length&&n.forEach(h=>{const m=document.createElement(e);for(const p in h)if(Object.prototype.hasOwnProperty.call(h,p))if(p==="innerHTML")m.innerHTML=h.innerHTML;else if(p==="cssText"){const b=h.cssText;m.appendChild(document.createTextNode(b))}else{const b=p,y=typeof h[b]>"u"?"":h[b];m.setAttribute(p,y)}m.setAttribute(ra,"true"),l.some((p,b)=>(u=b,m.isEqualNode(p)))?l.splice(u,1):d.push(m)}),l.forEach(h=>h.parentNode?.removeChild(h)),d.forEach(h=>i.appendChild(h)),{oldTags:l,newTags:d}},Nf=(e,n)=>{const i=document.getElementsByTagName(e)[0];if(!i)return;const r=i.getAttribute(ra),l=r?r.split(","):[],d=[...l],u=Object.keys(n);for(const h of u){const m=n[h]||"";i.getAttribute(h)!==m&&i.setAttribute(h,m),l.indexOf(h)===-1&&l.push(h);const p=d.indexOf(h);p!==-1&&d.splice(p,1)}for(let h=d.length-1;h>=0;
49h-=1)i.removeAttribute(d[h]);l.length===d.length?i.removeAttribute(ra):i.getAttribute(ra)!==u.join(",")&&i.setAttribute(ra,u.join(","))},TC=(e,n)=>{typeof e<"u"&&document.title!==e&&(document.title=Xw(e)),Nf("title",n)},mx=(e,n)=>{const{baseTag:i,bodyAttributes:r,htmlAttributes:l,linkTags:d,metaTags:u,noscriptTags:h,onChangeClientState:m,scriptTags:p,styleTags:b,title:y,titleAttributes:v}=e;Nf("body",r),Nf("html",l),TC(y,v);const x={baseTag:cs("base",i),linkTags:cs("link",d),metaTags:cs("meta",u),noscriptTags:cs("noscript",h),scriptTags:cs("script",p),styleTags:cs("style",b)},S={},E={};Object.keys(x).forEach(O=>{const{newTags:C,oldTags:_}=x[O];C.length&&(S[O]=C),_.length&&(E[O]=x[O].oldTags)}),n&&n(),m(e,S,E)},Co=null,CC=e=>{Co&&cancelAnimationFrame(Co),e.defer?Co=requestAnimationFrame(()=>{mx(e,()=>{Co=null})}):(mx(e),Co=null)},jC=CC,px=class extends j.Component{rendered=!1;shouldComponentUpdate(e){return!cC(e,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:e}=this.props.context;e.remove(this),this.emitChange()}emitChange(){const{helmetInstances:e,setHelmet:n}=this.props.context;let i=null;const r=pC(e.get().map(l=>{const{context:d,...u}=l.props;return u}));n0.canUseDOM?jC(r):Ff&&(i=Ff(r)),n(i)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:e}=this.props.context;e.add(this),this.emitChange()}render(){return this.init(),null}},Mc=[],gx=e=>{const n={};for(const i of Object.keys(e))n[Jw[i]||i]=e[i];return n},sr=e=>{const n={};for(const i of Object.keys(e)){const r=Zc[i];n[r||i]=e[i]}return n},yx=(e,n)=>{if(!om)return;const i=document.getElementsByTagName(e)[0];if(!i)return;const r="data-rh-managed",l=i.getAttribute(r),d=l?l.split(","):[],u=Object.keys(n);for(const h of d)u.includes(h)||i.removeAttribute(h);for(const h of u){const m=n[h];m==null||m===!1?i.removeAttribute(h):m===!0?i.setAttribute(h,""):i.setAttribute(h,String(m))}u.length>0?i.setAttribute(r,u.join(",")):i.removeAttribute(r)},Lh=()=>{const e={},n={};for(const i of Mc){const{htmlAttributes:r,bodyAttributes:l}=i.props;r&&Object.assign(e,gx(r)),l&&Object.assign(n,gx(l))}yx("html",e),yx("body",n)},FC=class extends j.Component{componentDidMount(){Mc.push(this),Lh()}componentDidUpdate(){Lh()}componentWillUnmount(){const e=Mc.indexOf(this);e!==-1&&Mc.splice(e,1),Lh()}resolveTitle(){const{title:e,titleTemplate:n,defaultTitle:i}=this.props;return e&&n?n.replace(/%s/g,()=>Array.isArray(e)?e.join(""):e):e||i||void 0}renderTitle(){const e=this.resolveTitle();if(e===void 0)return null;const n=this.props.titleAttributes||{};return de.createElement("title",sr(n),e)}renderBase(){const{base:e}=this.props;return e?de.createElement("base",sr(e)):null}renderMeta(){const{meta:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,i)=>de.createElement("meta",{key:i,...sr(n)}))}renderLink(){const{link:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,i)=>de.createElement("link",{key:i,...sr(n)}))}renderScript(){const{script:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,i)=>{const{innerHTML:r,...l}=n,d=sr(l);return r&&(d.dangerouslySetInnerHTML={__html:r}),de.createElement("script",{key:i,...d})})}renderStyle(){const{style:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,i)=>{const{cssText:r,...l}=n,d=sr(l);return r&&(d.dangerouslySetInnerHTML={__html:r}),de.createElement("style",{key:i,...d})})}renderNoscript(){const{noscript:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,i)=>{const{innerHTML:r,...l}=n,d=sr(l);return r&&(d.dangerouslySetInnerHTML={__html:r}),de.createElement("noscript",{key:i,...d})})}render(){return de.createElement(de.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},i0=class extends j.Component{static defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1};shouldComponentUpdate(e){return!iC(fx(this.props,"helmetData"),fx(e,"helmetData"))}mapNestedChildrenToProps(e,n){if(!n)return null;switch(e.type){case"script":case"noscript":return{innerHTML:n};case"style":return{cssText:n};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,n,i,r){return{...n,[e.type]:[...n[e.type]||[],{...i,...this.mapNestedChildrenToProps(e,r)}]}}mapObjectTypeChildren(e,n,i,r){switch(e.type){case"title":return{...n,[e.type]:r,titleAttributes:{...i}};case"body":return{...n,bodyAttributes:{...i}};case"html":return{...n,htmlAttributes:{...i}};default:return{...n,[e.type]:{...i}}}}mapArrayTypeChildrenToProps(e,n){let i={...n};return Object.keys(e).forEach(r=>{i={...i,[r]:e[r]}}),i}
49warnOnInvalidChildren(e,n){return dx(hx.some(i=>e.type===i),typeof e.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${hx.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),dx(!n||typeof n=="string"||Array.isArray(n)&&!n.some(i=>typeof i!="string"),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,n){let i={};return de.Children.forEach(e,r=>{if(!r||!r.props)return;const{children:l,...d}=r.props,u=Object.keys(d).reduce((m,p)=>(m[Jw[p]||p]=d[p],m),{});let{type:h}=r;switch(typeof h=="symbol"?h=h.toString():this.warnOnInvalidChildren(r,l),h){case"Symbol(react.fragment)":n=this.mapChildrenToProps(l,n);break;case"link":case"meta":case"noscript":case"script":case"style":i=this.flattenArrayTypeChildren(r,i,u,l);break;default:n=this.mapObjectTypeChildren(r,n,u,l);break}}),this.mapArrayTypeChildrenToProps(i,n)}render(){const{children:e,...n}=this.props;let i={...n},{helmetData:r}=n;if(e&&(i=this.mapChildrenToProps(e,i)),r&&!(r instanceof Ef)){const l=r;r=new Ef(l.context,!0),delete i.helmetData}return If?de.createElement(FC,{...i}):r?de.createElement(px,{...i,context:r.value}):de.createElement(t0.Consumer,null,l=>de.createElement(px,{...i,context:l}))}},EC=(e,n,i,r,l,d,u,h)=>{let m=document.documentElement,p=["light","dark"];function b(x){(Array.isArray(e)?e:[e]).forEach(S=>{let E=S==="class",O=E&&d?l.map(C=>d[C]||C):l;E?(m.classList.remove(...O),m.classList.add(d&&d[x]?d[x]:x)):m.setAttribute(S,x)}),y(x)}function y(x){h&&p.includes(x)&&(m.style.colorScheme=x)}function v(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(r)b(r);else try{let x=localStorage.getItem(n)||i,S=u&&x==="system"?v():x;b(S)}catch{}},IC=j.createContext(void 0),NC={setTheme:e=>{},themes:[]},MC=()=>{var e;return(e=j.useContext(IC))!=null?e:NC};j.memo(({forcedTheme:e,storageKey:n,attribute:i,enableSystem:r,enableColorScheme:l,defaultTheme:d,value:u,themes:h,nonce:m,scriptProps:p})=>{let b=JSON.stringify([i,n,d,e,h,u,r,l]).slice(1,-1);return j.createElement("script",{...p,suppressHydrationWarning:!0,nonce:typeof window>"u"?m:"",dangerouslySetInnerHTML:{__html:`(${EC.toString()})(${b})`}})});var lm=$w();const PC=fr(lm);function OC(e){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css",n.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}const DC=e=>{switch(e){case"success":return BC;case"info":return zC;case"warning":return LC;case"error":return UC;default:return null}},RC=Array(12).fill(0),_C=({visible:e,className:n})=>de.createElement("div",{className:["sonner-loading-wrapper",n].filter(Boolean).join(" "),"data-visible":e},de.createElement("div",{className:"sonner-spinner"},RC.map((i,r)=>de.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),BC=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),LC=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},de.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),zC=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),UC=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),HC=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},de.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),de.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),qC=()=>{const[e,n]=de.useState(document.hidden);return de.useEffect(()=>{const i=()=>{n(document.hidden)};
vendor: 3,897 bytes, line 49
49return document.addEventListener("visibilitychange",i),()=>window.removeEventListener("visibilitychange",i)},[]),e};let Mf=1;class WC{constructor(){this.subscribe=n=>(this.subscribers.push(n),()=>{const i=this.subscribers.indexOf(n);this.subscribers.splice(i,1)}),this.publish=n=>{this.subscribers.forEach(i=>i(n))},this.addToast=n=>{this.publish(n),this.toasts=[...this.toasts,n]},this.create=n=>{var i;const{message:r,...l}=n,d=typeof n?.id=="number"||((i=n.id)==null?void 0:i.length)>0?n.id:Mf++,u=this.toasts.find(m=>m.id===d),h=n.dismissible===void 0?!0:n.dismissible;return this.dismissedToasts.has(d)&&this.dismissedToasts.delete(d),u?this.toasts=this.toasts.map(m=>m.id===d?(this.publish({...m,...n,id:d,title:r}),{...m,...n,id:d,dismissible:h,title:r}):m):this.addToast({title:r,...l,dismissible:h,id:d}),d},this.dismiss=n=>(n?(this.dismissedToasts.add(n),requestAnimationFrame(()=>this.subscribers.forEach(i=>i({id:n,dismiss:!0})))):this.toasts.forEach(i=>{this.subscribers.forEach(r=>r({id:i.id,dismiss:!0}))}),n),this.message=(n,i)=>this.create({...i,message:n}),this.error=(n,i)=>this.create({...i,message:n,type:"error"}),this.success=(n,i)=>this.create({...i,type:"success",message:n}),this.info=(n,i)=>this.create({...i,type:"info",message:n}),this.warning=(n,i)=>this.create({...i,type:"warning",message:n}),this.loading=(n,i)=>this.create({...i,type:"loading",message:n}),this.promise=(n,i)=>{if(!i)return;let r;i.loading!==void 0&&(r=this.create({...i,promise:n,type:"loading",message:i.loading,description:typeof i.description!="function"?i.description:void 0}));const l=Promise.resolve(n instanceof Function?n():n);let d=r!==void 0,u;const h=l.then(async p=>{if(u=["resolve",p],de.isValidElement(p))d=!1,this.create({id:r,type:"default",message:p});else if(GC(p)&&!p.ok){d=!1;const y=typeof i.error=="function"?await i.error(`HTTP error! status: ${p.status}`):i.error,v=typeof i.description=="function"?await i.description(`HTTP error! status: ${p.status}`):i.description,S=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:r,type:"error",description:v,...S})}else if(p instanceof Error){d=!1;const y=typeof i.error=="function"?await i.error(p):i.error,v=typeof i.description=="function"?await i.description(p):i.description,S=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:r,type:"error",description:v,...S})}else if(i.success!==void 0){d=!1;const y=typeof i.success=="function"?await i.success(p):i.success,v=typeof i.description=="function"?await i.description(p):i.description,S=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:r,type:"success",description:v,...S})}}).catch(async p=>{if(u=["reject",p],i.error!==void 0){d=!1;const b=typeof i.error=="function"?await i.error(p):i.error,y=typeof i.description=="function"?await i.description(p):i.description,x=typeof b=="object"&&!de.isValidElement(b)?b:{message:b};this.create({id:r,type:"error",description:y,...x})}}).finally(()=>{d&&(this.dismiss(r),r=void 0),i.finally==null||i.finally.call(i)}),m=()=>new Promise((p,b)=>h.then(()=>u[0]==="reject"?b(u[1]):p(u[1])).catch(b));return typeof r!="string"&&typeof r!="number"?{unwrap:m}:Object.assign(r,{unwrap:m})},this.custom=(n,i)=>{const r=i?.id||Mf++;return this.create({jsx:n(r),id:r,...i}),r},this.getActiveToasts=()=>this.toasts.filter(n=>!this.dismissedToasts.has(n.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Tn=new WC,VC=(e,n)=>{const i=n?.id||Mf++;return Tn.addToast({title:e,...n,id:i}),i},GC=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",KC=VC,YC=()=>Tn.toasts,$C=()=>Tn.getActiveToasts(),ht=Object.assign(KC,{success:Tn.success,info:Tn.info,warning:Tn.warning,error:Tn.error,custom:Tn.custom,message:Tn.message,promise:Tn.promise,dismiss:Tn.dismiss,loading:Tn.loading},{getHistory:YC,getToasts:$C});OC
vendor: 14,873 bytes, line 49
49("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function 
vendor: 5,750 bytes, line 49
49xc(e){return e.label!==void 0}const QC=3,JC="24px",XC="16px",bx=4e3,ZC=356,e5=14,t5=45,n5=200;function wa(...e){return e.filter(Boolean).join(" ")}function a5(e){const[n,i]=e.split("-"),r=[];return n&&r.push(n),i&&r.push(i),r}const i5=e=>{var n,i,r,l,d,u,h,m,p;const{invert:b,toast:y,unstyled:v,interacting:x,setHeights:S,visibleToasts:E,heights:O,index:C,toasts:_,expanded:q,removeToast:Y,defaultRichColors:G,closeButton:P,style:M,cancelButtonStyle:W,actionButtonStyle:N,className:L="",descriptionClassName:J="",duration:z,position:$,gap:Q,expandByDefault:X,classNames:F,icons:D,closeButtonAriaLabel:B="Close toast"}=e,[ce,I]=de.useState(null),[A,U]=de.useState(null),[k,V]=de.useState(!1),[ae,ue]=de.useState(!1),[ne,we]=de.useState(!1),[je,Fe]=de.useState(!1),[rt,St]=de.useState(!1),[Mt,me]=de.useState(0),[Ce,Te]=de.useState(0),$e=de.useRef(y.duration||z||bx),tn=de.useRef(null),Ue=de.useRef(null),fn=C===0,lt=C+1<=E,Je=y.type,ha=y.dismissible!==!1,Gt=y.className||"",Ns=y.descriptionClassName||"",se=de.useMemo(()=>O.findIndex(Oe=>Oe.toastId===y.id)||0,[O,y.id]),fe=de.useMemo(()=>{var Oe;return(Oe=y.closeButton)!=null?Oe:P},[y.closeButton,P]),Ie=de.useMemo(()=>y.duration||z||bx,[y.duration,z]),Be=de.useRef(0),qe=de.useRef(0),nn=de.useRef(0),an=de.useRef(null),[Kt,Ft]=$.split("-"),Yt=de.useMemo(()=>O.reduce((Oe,vt,Ut)=>Ut>=se?Oe:Oe+vt.height,0),[O,se]),it=qC(),fa=y.invert||b,cn=Je==="loading";qe.current=de.useMemo(()=>se*Q+Yt,[se,Yt]),de.useEffect(()=>{$e.current=Ie},[Ie]),de.useEffect(()=>{V(!0)},[]),de.useEffect(()=>{const Oe=Ue.current;if(Oe){const vt=Oe.getBoundingClientRect().height;return Te(vt),S(Ut=>[{toastId:y.id,height:vt,position:y.position},...Ut]),()=>S(Ut=>Ut.filter(rn=>rn.toastId!==y.id))}},[S,y.id]),de.useLayoutEffect(()=>{if(!k)return;const Oe=Ue.current,vt=Oe.style.height;Oe.style.height="auto";const Ut=Oe.getBoundingClientRect().height;Oe.style.height=vt,Te(Ut),S(rn=>rn.find(kt=>kt.toastId===y.id)?rn.map(kt=>kt.toastId===y.id?{...kt,height:Ut}:kt):[{toastId:y.id,height:Ut,position:y.position},...rn])},[k,y.title,y.description,S,y.id,y.jsx,y.action,y.cancel]);const ma=de.useCallback(()=>{ue(!0),me(qe.current),S(Oe=>Oe.filter(vt=>vt.toastId!==y.id)),setTimeout(()=>{Y(y)},n5)},[y,Y,S,qe]);de.useEffect(()=>{if(y.promise&&Je==="loading"||y.duration===1/0||y.type==="loading")return;let Oe;return q||x||it?(()=>{if(nn.current<Be.current){const rn=new Date().getTime()-Be.current;$e.current=$e.current-rn}nn.current=new Date().getTime()})():(()=>{$e.current!==1/0&&(Be.current=new Date().getTime(),Oe=setTimeout(()=>{y.onAutoClose==null||y.onAutoClose.call(y,y),ma()},$e.current))})(),()=>clearTimeout(Oe)},[q,x,y,Je,it,ma]),de.useEffect(()=>{y.delete&&(ma(),y.onDismiss==null||y.onDismiss.call(y,y))},[ma,y.delete]);function wr(){var Oe;if(D?.loading){var vt;return de.createElement("div",{className:wa(F?.loader,y==null||(vt=y.classNames)==null?void 0:vt.loader,"sonner-loader"),"data-visible":Je==="loading"},D.loading)}return de.createElement(_C,{className:wa(F?.loader,y==null||(Oe=y.classNames)==null?void 0:Oe.loader),visible:Je==="loading"})}const Ar=y.icon||D?.[Je]||DC(Je);var Ui,pa;return de.createElement("li",{tabIndex:0,ref:Ue,className:wa(L,Gt,F?.toast,y==null||(n=y.classNames)==null?void 0:n.toast,F?.default,F?.[Je],y==null||(i=y.classNames)==null?void 0:i[Je]),"data-sonner-toast":"","data-rich-colors":(Ui=y.richColors)!=null?Ui:G,"data-styled":!(y.jsx||y.unstyled||v),"data-mounted":k,"data-promise":!!y.promise,"data-swiped":rt,"data-removed":ae,"data-visible":lt,"data-y-position":Kt,"data-x-position":Ft,"data-index":C,"data-front":fn,"data-swiping":ne,"data-dismissible":ha,"data-type":Je,"data-invert":fa,"data-swipe-out":je,"data-swipe-direction":A,"data-expanded":!!(q||X&&k),"data-testid":y.testId,style:{"--index":C,"--toasts-before":C,"--z-index":_.length-C,"--offset":`${ae?Mt:qe.current}px`,"--initial-height":X?"auto":`${Ce}px`,...M,...y.style},onDragEnd:()=>{we(!1),I(null),an.current=null},onPointerDown:Oe=>{Oe.button!==2&&(cn||!ha||(tn.current=new Date,me(qe.current),Oe.target.setPointerCapture(Oe.pointerId),Oe.target.tagName!=="BUTTON"&&(we(!0),an.current={x:Oe.clientX,y:Oe.clientY})))},onPointerUp:()=>{var Oe,vt,Ut;if(je||!ha)return;an.current=null;const rn=Number(((Oe=Ue.current)==null?void 0:Oe.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),ii=Number(((vt=Ue.current)==null?void 0:vt.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),kt=new Date().getTime()-((Ut=tn.current)==null?void 0:Ut.getTime()),mn=ce==="x"?rn:ii,Hi=Math.abs(mn)/kt;if(Math.abs(mn)>=t5||Hi>.11){me(qe.current),y.onDismiss==null||y.onDismiss.call(y,y),U(ce==="x"?rn>0?"right":"left":ii>0?"down":"up"),ma(),Fe(!0);return}else{var pn,gn;(pn=Ue.current)==null||pn.style.setProperty("--swipe-amount-x","0px"),(gn=Ue.current)==null||gn.style.setProperty("--swipe-amount-y","0px")}St(!1),we(!1),I(null)},onPointerMove:Oe=>{var vt,Ut,rn;if(!an.current||!ha||((vt=window.getSelection())==null?void 0:vt.toString().length)>0)return;const kt=Oe.clientY-an.current.y,mn=Oe.clientX-an.current.x;var Hi;const pn=(Hi=e.swipeDirections)!=null?Hi:a5($);!ce&&(Math.abs(mn)>1||Math.abs(kt)>1)&&I(Math.abs(mn)>Math.abs(kt)?"x":"y");let gn={x:0,y:0};const kr=Zn=>1/(1.5+Math.abs(Zn)/20);if(ce==="y"){if(pn.includes("top")||pn.includes("bottom"))if(pn.includes("top")&&kt<0||pn.includes("bottom")&&kt>0)gn.y=kt;else{const Zn=kt*kr(kt);gn.y=Math.abs(Zn)<Math.abs(kt)?Zn:kt}}else if(ce==="x"&&(pn.includes("left")||pn.includes("right")))if(pn.includes("left")&&mn<0||pn.includes("right")&&mn>0)gn.x=mn;else{const Zn=mn*kr(mn);gn.x=Math.abs(Zn)<Math.abs(mn)?Zn:mn}(Math.abs(gn.x)>0||Math.abs(gn.y)>0)&&St(!0),(Ut=Ue.current)==null||Ut.style.setProperty("--swipe-amount-x",`${gn.x}
49px`),(rn=Ue.current)==null||rn.style.setProperty("--swipe-amount-y",`${gn.y}px`)}},fe&&!y.jsx&&Je!=="loading"?de.createElement("button",{"aria-label":B,"data-disabled":cn,"data-close-button":!0,onClick:cn||!ha?()=>{}:()=>{ma(),y.onDismiss==null||y.onDismiss.call(y,y)},className:wa(F?.closeButton,y==null||(r=y.classNames)==null?void 0:r.closeButton)},(pa=D?.close)!=null?pa:HC):null,(Je||y.icon||y.promise)&&y.icon!==null&&(D?.[Je]!==null||y.icon)?de.createElement("div",{"data-icon":"",className:wa(F?.icon,y==null||(l=y.classNames)==null?void 0:l.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||wr():null,y.type!=="loading"?Ar:null):null,de.createElement("div",{"data-content":"",className:wa(F?.content,y==null||(d=y.classNames)==null?void 0:d.content)},de.createElement("div",{"data-title":"",className:wa(F?.title,y==null||(u=y.classNames)==null?void 0:u.title)},y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title),y.description?de.createElement("div",{"data-description":"",className:wa(J,Ns,F?.description,y==null||(h=y.classNames)==null?void 0:h.description)},typeof y.description=="function"?y.description():y.description):null),de.isValidElement(y.cancel)?y.cancel:y.cancel&&xc(y.cancel)?de.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||W,onClick:Oe=>{xc(y.cancel)&&ha&&(y.cancel.onClick==null||y.cancel.onClick.call(y.cancel,Oe),ma())},className:wa(F?.cancelButton,y==null||(m=y.classNames)==null?void 0:m.cancelButton)},y.cancel.label):null,de.isValidElement(y.action)?y.action:y.action&&xc(y.action)?de.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||N,onClick:Oe=>{xc(y.action)&&(y.action.onClick==null||y.action.onClick.call(y.action,Oe),!Oe.defaultPrevented&&ma())},className:wa(F?.actionButton,y==null||(p=y.classNames)==null?void 0:p.actionButton)},y.action.label):null)};function xx(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function r5(e,n){const i={};return[e,n].forEach((r,l)=>{const d=l===1,u=d?"--mobile-offset":"--offset",h=d?XC:JC;function m(p){["top","right","bottom","left"].forEach(b=>{i[`${u}-${b}`]=typeof p=="number"?`${p}px`:p})}typeof r=="number"||typeof r=="string"?m(r):typeof r=="object"?["top","right","bottom","left"].forEach(p=>{r[p]===void 0?i[`${u}-${p}`]=h:i[`${u}-${p}`]=typeof r[p]=="number"?`${r[p]}px`:r[p]}):m(h)}),i}const s5=de.forwardRef(function(n,i){const{id:r,invert:l,position:d="bottom-right",hotkey:u=["altKey","KeyT"],expand:h,closeButton:m,className:p,offset:b,mobileOffset:y,theme:v="light",richColors:x,duration:S,style:E,visibleToasts:O=QC,toastOptions:C,dir:_=xx(),gap:q=e5,icons:Y,containerAriaLabel:G="Notifications"}=n,[P,M]=de.useState([]),W=de.useMemo(()=>r?P.filter(k=>k.toasterId===r):P.filter(k=>!k.toasterId),[P,r]),N=de.useMemo(()=>Array.from(new Set([d].concat(W.filter(k=>k.position).map(k=>k.position)))),[W,d]),[L,J]=de.useState([]),[z,$]=de.useState(!1),[Q,X]=de.useState(!1),[F,D]=de.useState(v!=="system"?v:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),B=de.useRef(null),ce=u.join("+").replace(/Key/g,"").replace(/Digit/g,""),I=de.useRef(null),A=de.useRef(!1),U=de.useCallback(k=>{M(V=>{var ae;return(ae=V.find(ue=>ue.id===k.id))!=null&&ae.delete||Tn.dismiss(k.id),V.filter(({id:ue})=>ue!==k.id)})},[]);return de.useEffect(()=>Tn.subscribe(k=>{if(k.dismiss){requestAnimationFrame(()=>{M(V=>V.map(ae=>ae.id===k.id?{...ae,delete:!0}:ae))});return}setTimeout(()=>{PC.flushSync(()=>{M(V=>{const ae=V.findIndex(ue=>ue.id===k.id);return ae!==-1?[...V.slice(0,ae),{...V[ae],...k},...V.slice(ae+1)]:[k,...V]})})})}),[P]),de.useEffect(()=>{if(v!=="system"){D(v);return}if(v==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?D("dark"):D("light")),typeof window>"u")return;const k=window.matchMedia("(prefers-color-scheme: dark)");try{k.addEventListener("change",({matches:V})=>{D(V?"dark":"light")})}catch{k.addListener(({matches:ae})=>{try{D(ae?"dark":"light")}catch(ue){console.error(ue)}})}},[v]),de.useEffect(()=>{P.length<=1&&$(!1)},[P]),de.useEffect(()=>{const k=V=>{var ae;if(u.every(we=>V[we]||V.code===we)){var ne;
49$(!0),(ne=B.current)==null||ne.focus()}V.code==="Escape"&&(document.activeElement===B.current||(ae=B.current)!=null&&ae.contains(document.activeElement))&&$(!1)};return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[u]),de.useEffect(()=>{if(B.current)return()=>{I.current&&(I.current.focus({preventScroll:!0}),I.current=null,A.current=!1)}},[B.current]),de.createElement("section",{ref:i,"aria-label":`${G} ${ce}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},N.map((k,V)=>{var ae;const[ue,ne]=k.split("-");return W.length?de.createElement("ol",{key:k,dir:_==="auto"?xx():_,tabIndex:-1,ref:B,className:p,"data-sonner-toaster":!0,"data-sonner-theme":F,"data-y-position":ue,"data-x-position":ne,style:{"--front-toast-height":`${((ae=L[0])==null?void 0:ae.height)||0}px`,"--width":`${ZC}px`,"--gap":`${q}px`,...E,...r5(b,y)},onBlur:we=>{A.current&&!we.currentTarget.contains(we.relatedTarget)&&(A.current=!1,I.current&&(I.current.focus({preventScroll:!0}),I.current=null))},onFocus:we=>{we.target instanceof HTMLElement&&we.target.dataset.dismissible==="false"||A.current||(A.current=!0,I.current=we.relatedTarget)},onMouseEnter:()=>$(!0),onMouseMove:()=>$(!0),onMouseLeave:()=>{Q||$(!1)},onDragEnd:()=>$(!1),onPointerDown:we=>{we.target instanceof HTMLElement&&we.target.dataset.dismissible==="false"||X(!0)},onPointerUp:()=>X(!1)},W.filter(we=>!we.position&&V===0||we.position===k).map((we,je)=>{var Fe,rt;return de.createElement(i5,{key:we.id,icons:Y,index:je,toast:we,defaultRichColors:x,duration:(Fe=C?.duration)!=null?Fe:S,className:C?.className,descriptionClassName:C?.descriptionClassName,invert:l,visibleToasts:O,closeButton:(rt=C?.closeButton)!=null?rt:m,interacting:Q,position:k,style:C?.style,unstyled:C?.unstyled,classNames:C?.classNames,cancelButtonStyle:C?.cancelButtonStyle,actionButtonStyle:C?.actionButtonStyle,closeButtonAriaLabel:C?.closeButtonAriaLabel,removeToast:U,toasts:W.filter(St=>St.position==we.position),heights:L.filter(St=>St.position==we.position),setHeights:J,expandByDefault:h,gap:q,expanded:z,swipeDirections:n.swipeDirections})})):null}))}),o5=({...e})=>{const{theme:n="system"}=MC();return o.jsx(s5,{"data-loc":"client/src/components/ui/sonner.tsx:8",theme:n,className:"toaster group",style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)"},...e})};function Xa(e,n,{checkForDefaultPrevented:i=!0}={}){return function(l){if(e?.(l),i===!1||!l.defaultPrevented)return n?.(l)}}function vx(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function r0(...e){return n=>{let i=!1;const r=e.map(l=>{const d=vx(l,n);return!i&&typeof d=="function"&&(i=!0),d});if(i)return()=>{for(let l=0;l<r.length;l++){const d=r[l];typeof d=="function"?d():vx(e[l],null)}}}}function yr(...e){return j.useCallback(r0(...e),e)}function s0(e,n=[]){let i=[];function r(d,u){const h=j.createContext(u),m=i.length;i=[...i,u];const p=y=>{const{scope:v,children:x,...S}=y,E=v?.[e]?.[m]||h,O=j.useMemo(()=>S,Object.values(S));return o.jsx(E.Provider,{value:O,children:x})};p.displayName=d+"Provider";function b(y,v){const x=v?.[e]?.[m]||h,S=j.useContext(x);if(S)return S;if(u!==void 0)return u;throw new Error(`\`${y}\` must be used within \`${d}\``)}return[p,b]}const l=()=>{const d=i.map(u=>j.createContext(u));return function(h){const m=h?.[e]||d;return j.useMemo(()=>({[`__scope${e}`]:{...h,[e]:m}}),[h,m])}};return l.scopeName=e,[r,l5(l,...n)]}function l5(...e){const n=e[0];if(e.length===1)return n;const i=()=>{const r=e.map(l=>({useScope:l(),scopeName:l.scopeName}));return function(d){const u=r.reduce((h,{useScope:m,scopeName:p})=>{const y=m(d)[`__scope${p}`];return{...h,...y}},{});return j.useMemo(()=>({[`__scope${n.scopeName}`]:u}),[u])}};return i.scopeName=n.scopeName,i}function c5(e){const n=d5(e),i=j.forwardRef((r,l)=>{const{children:d,...u}=r,h=j.Children.toArray(d),m=h.find(h5);if(m){const p=m.props.children,b=h.map(y=>y===m?j.Children.count(p)>1?j.Children.only(null):j.isValidElement(p)?p.props.children:null:y);return o.jsx(n,{...u,ref:l,children:j.isValidElement(p)?j.cloneElement(p,void 0,b):null})}return o.jsx(n,{...u,ref:l,children:d})});return i.displayName=`${e}.Slot`,i}function d5(e){const n=j.forwardRef((i,r)=>{const{children:l,...d}=i;
vendor: 5,247 bytes, line 49
49if(j.isValidElement(l)){const u=m5(l),h=f5(d,l.props);return l.type!==j.Fragment&&(h.ref=r?r0(r,u):u),j.cloneElement(l,h)}return j.Children.count(l)>1?j.Children.only(null):null});return n.displayName=`${e}.SlotClone`,n}var o0=Symbol("radix.slottable");function u5(e){const n=({children:i})=>o.jsx(o.Fragment,{children:i});return n.displayName=`${e}.Slottable`,n.__radixId=o0,n}function h5(e){return j.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===o0}function f5(e,n){const i={...n};for(const r in n){const l=e[r],d=n[r];/^on[A-Z]/.test(r)?l&&d?i[r]=(...h)=>{const m=d(...h);return l(...h),m}:l&&(i[r]=l):r==="style"?i[r]={...l,...d}:r==="className"&&(i[r]=[l,d].filter(Boolean).join(" "))}return{...e,...i}}function m5(e){let n=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,i=n&&"isReactWarning"in n&&n.isReactWarning;return i?e.ref:(n=Object.getOwnPropertyDescriptor(e,"ref")?.get,i=n&&"isReactWarning"in n&&n.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}var p5=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],br=p5.reduce((e,n)=>{const i=c5(`Primitive.${n}`),r=j.forwardRef((l,d)=>{const{asChild:u,...h}=l,m=u?i:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(m,{...h,ref:d})});return r.displayName=`Primitive.${n}`,{...e,[n]:r}},{});function g5(e,n){e&&lm.flushSync(()=>e.dispatchEvent(n))}function ed(e){const n=j.useRef(e);return j.useEffect(()=>{n.current=e}),j.useMemo(()=>(...i)=>n.current?.(...i),[])}function y5(e,n=globalThis?.document){const i=ed(e);j.useEffect(()=>{const r=l=>{l.key==="Escape"&&i(l)};return n.addEventListener("keydown",r,{capture:!0}),()=>n.removeEventListener("keydown",r,{capture:!0})},[i,n])}var b5="DismissableLayer",Pf="dismissableLayer.update",x5="dismissableLayer.pointerDownOutside",v5="dismissableLayer.focusOutside",wx,l0=j.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),c0=j.forwardRef((e,n)=>{const{disableOutsidePointerEvents:i=!1,onEscapeKeyDown:r,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:u,onDismiss:h,...m}=e,p=j.useContext(l0),[b,y]=j.useState(null),v=b?.ownerDocument??globalThis?.document,[,x]=j.useState({}),S=yr(n,M=>y(M)),E=Array.from(p.layers),[O]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),C=E.indexOf(O),_=b?E.indexOf(b):-1,q=p.layersWithOutsidePointerEventsDisabled.size>0,Y=_>=C,G=k5(M=>{const W=M.target,N=[...p.branches].some(L=>L.contains(W));!Y||N||(l?.(M),u?.(M),M.defaultPrevented||h?.())},v),P=S5(M=>{const W=M.target;[...p.branches].some(L=>L.contains(W))||(d?.(M),u?.(M),M.defaultPrevented||h?.())},v);return y5(M=>{_===p.layers.size-1&&(r?.(M),!M.defaultPrevented&&h&&(M.preventDefault(),h()))},v),j.useEffect(()=>{if(b)return i&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(wx=v.body.style.pointerEvents,v.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(b)),p.layers.add(b),Ax(),()=>{i&&p.layersWithOutsidePointerEventsDisabled.size===1&&(v.body.style.pointerEvents=wx)}},[b,v,i,p]),j.useEffect(()=>()=>{b&&(p.layers.delete(b),p.layersWithOutsidePointerEventsDisabled.delete(b),Ax())},[b,p]),j.useEffect(()=>{const M=()=>x({});return document.addEventListener(Pf,M),()=>document.removeEventListener(Pf,M)},[]),o.jsx(br.div,{...m,ref:S,style:{pointerEvents:q?Y?"auto":"none":void 0,...e.style},onFocusCapture:Xa(e.onFocusCapture,P.onFocusCapture),onBlurCapture:Xa(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:Xa(e.onPointerDownCapture,G.onPointerDownCapture)})});c0.displayName=b5;var w5="DismissableLayerBranch",A5=j.forwardRef((e,n)=>{const i=j.useContext(l0),r=j.useRef(null),l=yr(n,r);return j.useEffect(()=>{const d=r.current;if(d)return i.branches.add(d),()=>{i.branches.delete(d)}},[i.branches]),o.jsx(br.div,{...e,ref:l})});A5.displayName=w5;function k5(e,n=globalThis?.document){const i=ed(e),r=j.useRef(!1),l=j.useRef(()=>{});return j.useEffect(()=>{const d=h=>{if(h.target&&!r.current){let m=function(){d0(x5,i,p,{discrete:!0})};const p={originalEvent:h};h.pointerType==="touch"?(n.removeEventListener("click",l.current),l.current=m,n.addEventListener("click",l.current,{once:!0})):m()}else n.removeEventListener("click",l.current);r.current=!1},u=window.setTimeout(()=>{n.addEventListener("pointerdown",d)},0);return()=>{window.clearTimeout(u),n.removeEventListener("pointerdown",d),n.removeEventListener("click",l.current)}},[n,i]),{onPointerDownCapture:()=>r.current=!0}}function S5(e,n=globalThis?.document){const i=ed(e),r=j.useRef(!1);return j.useEffect(()=>{const l=d=>{d.target&&!r.current&&d0(v5,i,{originalEvent:d},{discrete:!1})};return n.addEventListener("focusin",l),()=>n.removeEventListener("focusin",l)},[n,i]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Ax(){const e=new CustomEvent(Pf);document.dispatchEvent(e)}function d0(e,n,i,{discrete:r}){const l=i.originalEvent.target,d=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:i});n&&l.addEventListener(e,n,{once:!0}),r?g5(l,d):l.dispatchEvent(d)}var Ho=globalThis?.document?j.useLayoutEffect:()=>{};const T5=["top","right","bottom","left"],_i=Math.min,Rn=Math.max,_c=Math.round,vc=Math.floor,ja=e=>({x:e,y:e}
vendor: 5,673 bytes, line 49
49),C5={left:"right",right:"left",bottom:"top",top:"bottom"},j5={start:"end",end:"start"};function Of(e,n,i){return Rn(e,_i(n,i))}function ti(e,n){return typeof e=="function"?e(n):e}function ni(e){return e.split("-")[0]}function Ts(e){return e.split("-")[1]}function cm(e){return e==="x"?"y":"x"}function dm(e){return e==="y"?"height":"width"}const F5=new Set(["top","bottom"]);function Ca(e){return F5.has(ni(e))?"y":"x"}function um(e){return cm(Ca(e))}function E5(e,n,i){i===void 0&&(i=!1);const r=Ts(e),l=um(e),d=dm(l);let u=l==="x"?r===(i?"end":"start")?"right":"left":r==="start"?"bottom":"top";return n.reference[d]>n.floating[d]&&(u=Bc(u)),[u,Bc(u)]}function I5(e){const n=Bc(e);return[Df(e),n,Df(n)]}function Df(e){return e.replace(/start|end/g,n=>j5[n])}const kx=["left","right"],Sx=["right","left"],N5=["top","bottom"],M5=["bottom","top"];function P5(e,n,i){switch(e){case"top":case"bottom":return i?n?Sx:kx:n?kx:Sx;case"left":case"right":return n?N5:M5;default:return[]}}function O5(e,n,i,r){const l=Ts(e);let d=P5(ni(e),i==="start",r);return l&&(d=d.map(u=>u+"-"+l),n&&(d=d.concat(d.map(Df)))),d}function Bc(e){return e.replace(/left|right|bottom|top/g,n=>C5[n])}function D5(e){return{top:0,right:0,bottom:0,left:0,...e}}function u0(e){return typeof e!="number"?D5(e):{top:e,right:e,bottom:e,left:e}}function Lc(e){const{x:n,y:i,width:r,height:l}=e;return{width:r,height:l,top:i,left:n,right:n+r,bottom:i+l,x:n,y:i}}function Tx(e,n,i){let{reference:r,floating:l}=e;const d=Ca(n),u=um(n),h=dm(u),m=ni(n),p=d==="y",b=r.x+r.width/2-l.width/2,y=r.y+r.height/2-l.height/2,v=r[h]/2-l[h]/2;let x;switch(m){case"top":x={x:b,y:r.y-l.height};break;case"bottom":x={x:b,y:r.y+r.height};break;case"right":x={x:r.x+r.width,y};break;case"left":x={x:r.x-l.width,y};break;default:x={x:r.x,y:r.y}}switch(Ts(n)){case"start":x[u]-=v*(i&&p?-1:1);break;case"end":x[u]+=v*(i&&p?-1:1);break}return x}const R5=async(e,n,i)=>{const{placement:r="bottom",strategy:l="absolute",middleware:d=[],platform:u}=i,h=d.filter(Boolean),m=await(u.isRTL==null?void 0:u.isRTL(n));let p=await u.getElementRects({reference:e,floating:n,strategy:l}),{x:b,y}=Tx(p,r,m),v=r,x={},S=0;for(let E=0;E<h.length;E++){const{name:O,fn:C}=h[E],{x:_,y:q,data:Y,reset:G}=await C({x:b,y,initialPlacement:r,placement:v,strategy:l,middlewareData:x,rects:p,platform:u,elements:{reference:e,floating:n}});b=_??b,y=q??y,x={...x,[O]:{...x[O],...Y}},G&&S<=50&&(S++,typeof G=="object"&&(G.placement&&(v=G.placement),G.rects&&(p=G.rects===!0?await u.getElementRects({reference:e,floating:n,strategy:l}):G.rects),{x:b,y}=Tx(p,v,m)),E=-1)}return{x:b,y,placement:v,strategy:l,middlewareData:x}};async function qo(e,n){var i;n===void 0&&(n={});const{x:r,y:l,platform:d,rects:u,elements:h,strategy:m}=e,{boundary:p="clippingAncestors",rootBoundary:b="viewport",elementContext:y="floating",altBoundary:v=!1,padding:x=0}=ti(n,e),S=u0(x),O=h[v?y==="floating"?"reference":"floating":y],C=Lc(await d.getClippingRect({element:(i=await(d.isElement==null?void 0:d.isElement(O)))==null||i?O:O.contextElement||await(d.getDocumentElement==null?void 0:d.getDocumentElement(h.floating)),boundary:p,rootBoundary:b,strategy:m})),_=y==="floating"?{x:r,y:l,width:u.floating.width,height:u.floating.height}:u.reference,q=await(d.getOffsetParent==null?void 0:d.getOffsetParent(h.floating)),Y=await(d.isElement==null?void 0:d.isElement(q))?await(d.getScale==null?void 0:d.getScale(q))||{x:1,y:1}:{x:1,y:1},G=Lc(d.convertOffsetParentRelativeRectToViewportRelativeRect?await d.convertOffsetParentRelativeRectToViewportRelativeRect({elements:h,rect:_,offsetParent:q,strategy:m}):_);return{top:(C.top-G.top+S.top)/Y.y,bottom:(G.bottom-C.bottom+S.bottom)/Y.y,left:(C.left-G.left+S.left)/Y.x,right:(G.right-C.right+S.right)/Y.x}}const _5=e=>({name:"arrow",options:e,async fn(n){const{x:i,y:r,placement:l,rects:d,platform:u,elements:h,middlewareData:m}=n,{element:p,padding:b=0}=ti(e,n)||{};if(p==null)return{};const y=u0(b),v={x:i,y:r},x=um(l),S=dm(x),E=await u.getDimensions(p),O=x==="y",C=O?"top":"left",_=O?"bottom":"right",q=O?"clientHeight":"clientWidth",Y=d.reference[S]+d.reference[x]-v[x]-d.floating[S],G=v[x]-d.reference[x],P=await(u.getOffsetParent==null?void 0:u.getOffsetParent(p));let M=P?P[q]:0;(!M||!await(u.isElement==null?void 0:u.isElement(P)))&&(M=h.floating[q]||d.floating[S]);const W=Y/2-G/2,N=M/2-E[S]/2-1,L=_i(y[C],N),J=_i(y[_],N),z=L,$=M-E[S]-J,Q=M/2-E[S]/2+W,X=Of(z,Q,$),F=!m.arrow&&Ts(l)!=null&&Q!==X&&d.reference[S]/2-(Q<z?L:J)-E[S]/2<0,D=F?Q<z?Q-z:Q-$:0;return{[x]:v[x]+D,data:{[x]:X,centerOffset:Q-X-D,...F&&{alignmentOffset:D}},reset:F}}}),B5=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(n){var i,r;const{placement:l,middlewareData:d,rects:u,initialPlacement:h,platform:m,elements:p}=n,{mainAxis:b=!0,crossAxis:y=!0,fallbackPlacements:v,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:S="none",flipAlignment:E=!0,...O}=ti(e,n);if((i=d.arrow)!=null&&i.alignmentOffset)return{};const C=ni(l),_=Ca(h),q=ni(h)===h,Y=await(m.isRTL==null?void 0:m.isRTL(p.floating)),G=v||(q||!E?[Bc(h)]:I5(h)),P=S!=="none";!v&&P&&G.push(...O5(h,E,S,Y));const M=[h,...G],W=await qo(n,O),N=[];let L=((r=d.flip)==null?void 0:r.overflows)||[];if(b&&N.push(W[C]),y){const Q=E5(l,u,Y);N.push(W[Q[0]],W[Q[1]])}if(L=[...L,{placement:l,overflows:N}],!N.every(Q=>Q<=0)){var J,z;const Q=(((J=d.flip)==null?void 0:J.index)||0)+1,X=M[Q];if(X&&(!(y==="alignment"?_!==Ca(X):!1)||L.every(B=>Ca(B.placement)===_?B.overflows[0]>0:!0)))return{data:{index:Q,overflows:L},reset:{placement:X}};let F=(z=L.filter(D=>D.overflows[0]<=0).sort((D,B)=>D.overflows[1]-B.overflows[1])[0])==null?void 0:z.placement;if(!F)switch(x){case"bestFit":{var $;
49const D=($=L.filter(B=>{if(P){const ce=Ca(B.placement);return ce===_||ce==="y"}return!0}).map(B=>[B.placement,B.overflows.filter(ce=>ce>0).reduce((ce,I)=>ce+I,0)]).sort((B,ce)=>B[1]-ce[1])[0])==null?void 0:$[0];D&&(F=D);break}case"initialPlacement":F=h;break}if(l!==F)return{reset:{placement:F}}}return{}}}};function Cx(e,n){return{top:e.top-n.height,right:e.right-n.width,bottom:e.bottom-n.height,left:e.left-n.width}}function jx(e){return T5.some(n=>e[n]>=0)}const L5=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(n){const{rects:i}=n,{strategy:r="referenceHidden",...l}=ti(e,n);switch(r){case"referenceHidden":{const d=await qo(n,{...l,elementContext:"reference"}),u=Cx(d,i.reference);return{data:{referenceHiddenOffsets:u,referenceHidden:jx(u)}}}case"escaped":{const d=await qo(n,{...l,altBoundary:!0}),u=Cx(d,i.floating);return{data:{escapedOffsets:u,escaped:jx(u)}}}default:return{}}}}},h0=new Set(["left","top"]);async function z5(e,n){const{placement:i,platform:r,elements:l}=e,d=await(r.isRTL==null?void 0:r.isRTL(l.floating)),u=ni(i),h=Ts(i),m=Ca(i)==="y",p=h0.has(u)?-1:1,b=d&&m?-1:1,y=ti(n,e);let{mainAxis:v,crossAxis:x,alignmentAxis:S}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:y.mainAxis||0,crossAxis:y.crossAxis||0,alignmentAxis:y.alignmentAxis};return h&&typeof S=="number"&&(x=h==="end"?S*-1:S),m?{x:x*b,y:v*p}:{x:v*p,y:x*b}}const U5=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(n){var i,r;const{x:l,y:d,placement:u,middlewareData:h}=n,m=await z5(n,e);return u===((i=h.offset)==null?void 0:i.placement)&&(r=h.arrow)!=null&&r.alignmentOffset?{}:{x:l+m.x,y:d+m.y,data:{...m,placement:u}}}}},H5=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(n){const{x:i,y:r,placement:l}=n,{mainAxis:d=!0,crossAxis:u=!1,limiter:h={fn:O=>{let{x:C,y:_}=O;return{x:C,y:_}}},...m}=ti(e,n),p={x:i,y:r},b=await qo(n,m),y=Ca(ni(l)),v=cm(y);let x=p[v],S=p[y];if(d){const O=v==="y"?"top":"left",C=v==="y"?"bottom":"right",_=x+b[O],q=x-b[C];x=Of(_,x,q)}if(u){const O=y==="y"?"top":"left",C=y==="y"?"bottom":"right",_=S+b[O],q=S-b[C];S=Of(_,S,q)}const E=h.fn({...n,[v]:x,[y]:S});return{...E,data:{x:E.x-i,y:E.y-r,enabled:{[v]:d,[y]:u}}}}}},q5=function(e){return e===void 0&&(e={}),{options:e,fn(n){const{x:i,y:r,placement:l,rects:d,middlewareData:u}=n,{offset:h=0,mainAxis:m=!0,crossAxis:p=!0}=ti(e,n),b={x:i,y:r},y=Ca(l),v=cm(y);let x=b[v],S=b[y];const E=ti(h,n),O=typeof E=="number"?{mainAxis:E,crossAxis:0}:{mainAxis:0,crossAxis:0,...E};if(m){const q=v==="y"?"height":"width",Y=d.reference[v]-d.floating[q]+O.mainAxis,G=d.reference[v]+d.reference[q]-O.mainAxis;x<Y?x=Y:x>G&&(x=G)}if(p){var C,_;const q=v==="y"?"width":"height",Y=h0.has(ni(l)),G=d.reference[y]-d.floating[q]+(Y&&((C=u.offset)==null?void 0:C[y])||0)+(Y?0:O.crossAxis),P=d.reference[y]+d.reference[q]+(Y?0:((_=u.offset)==null?void 0:_[y])||0)-(Y?O.crossAxis:0);S<G?S=G:S>P&&(S=P)}return{[v]:x,[y]:S}}}},W5=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(n){var i,r;const{placement:l,rects:d,platform:u,elements:h}=n,{apply:m=()=>{},...p}=ti(e,n),b=await qo(n,p),y=ni(l),v=Ts(l),x=Ca(l)==="y",{width:S,height:E}=d.floating;let O,C;y==="top"||y==="bottom"?(O=y,C=v===(await(u.isRTL==null?void 0:u.isRTL(h.floating))?"start":"end")?"left":"right"):(C=y,O=v==="end"?"top":"bottom");const _=E-b.top-b.bottom,q=S-b.left-b.right,Y=_i(E-b[O],_),G=_i(S-b[C],q),P=!n.middlewareData.shift;let M=Y,W=G;if((i=n.middlewareData.shift)!=null&&i.enabled.x&&(W=q),(r=n.middlewareData.shift)!=null&&r.enabled.y&&(M=_),P&&!v){const L=Rn(b.left,0),J=Rn(b.right,0),z=Rn(b.top,0),$=Rn(b.bottom,0);x?W=S-2*(L!==0||J!==0?L+J:Rn(b.left,b.right)):M=E-2*(z!==0||$!==0?z+$:Rn(b.top,b.bottom))}await m({...n,availableWidth:W,availableHeight:M});const N=await u.getDimensions(h.floating);return S!==N.width||E!==N.height?{reset:{rects:!0}}:{}}}};function td(){return typeof window<"u"}function Cs(e){return f0(e)?(e.nodeName||"").toLowerCase():"#document"}function Ln(e){var n;return(e==null||(n=e.ownerDocument)==null?void 0:n.defaultView)||window}function Na(e){var n;return(n=(f0(e)?e.ownerDocument:e.document)||window.document)==null?void 0:n.documentElement}function f0(e){return td()?e instanceof Node||e instanceof Ln(e).Node:!1}function la(e){return td()?e instanceof Element||e instanceof Ln(e).Element:!1}function Fa(e){return td()?e instanceof HTMLElement||e instanceof Ln(e).HTMLElement:!1}function Fx(e){return!td()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Ln(e).ShadowRoot}const V5=new Set(["inline","contents"]);function Jo(e){const{overflow:n,overflowX:i,overflowY:r,display:l}=ca(e);return/auto|scroll|overlay|hidden|clip/.test(n+r+i)&&!V5.has(l)}const G5=new Set(["table","td","th"]);function K5(e){return G5.has(Cs(e))}const Y5=[":popover-open",":modal"];
49function nd(e){return Y5.some(n=>{try{return e.matches(n)}catch{return!1}})}const $5=["transform","translate","scale","rotate","perspective"],Q5=["transform","translate","scale","rotate","perspective","filter"],J5=["paint","layout","strict","content"];function hm(e){const n=fm(),i=la(e)?ca(e):e;return $5.some(r=>i[r]?i[r]!=="none":!1)||(i.containerType?i.containerType!=="normal":!1)||!n&&(i.backdropFilter?i.backdropFilter!=="none":!1)||!n&&(i.filter?i.filter!=="none":!1)||Q5.some(r=>(i.willChange||"").includes(r))||J5.some(r=>(i.contain||"").includes(r))}function X5(e){let n=Bi(e);for(;Fa(n)&&!ks(n);){if(hm(n))return n;if(nd(n))return null;n=Bi(n)}return null}function fm(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const Z5=new Set(["html","body","#document"]);function ks(e){return Z5.has(Cs(e))}function ca(e){return Ln(e).getComputedStyle(e)}function ad(e){return la(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Bi(e){if(Cs(e)==="html")return e;const n=e.assignedSlot||e.parentNode||Fx(e)&&e.host||Na(e);return Fx(n)?n.host:n}function m0(e){const n=Bi(e);return ks(n)?e.ownerDocument?e.ownerDocument.body:e.body:Fa(n)&&Jo(n)?n:m0(n)}function Wo(e,n,i){var r;n===void 0&&(n=[]),i===void 0&&(i=!0);const l=m0(e),d=l===((r=e.ownerDocument)==null?void 0:r.body),u=Ln(l);if(d){const h=Rf(u);return n.concat(u,u.visualViewport||[],Jo(l)?l:[],h&&i?Wo(h):[])}return n.concat(l,Wo(l,[],i))}function Rf(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function p0(e){const n=ca(e);let i=parseFloat(n.width)||0,r=parseFloat(n.height)||0;const l=Fa(e),d=l?e.offsetWidth:i,u=l?e.offsetHeight:r,h=_c(i)!==d||_c(r)!==u;return h&&(i=d,r=u),{width:i,height:r,$:h}}function mm(e){return la(e)?e:e.contextElement}function ys(e){const n=mm(e);if(!Fa(n))return ja(1);const i=n.getBoundingClientRect(),{width:r,height:l,$:d}=p0(n);let u=(d?_c(i.width):i.width)/r,h=(d?_c(i.height):i.height)/l;return(!u||!Number.isFinite(u))&&(u=1),(!h||!Number.isFinite(h))&&(h=1),{x:u,y:h}}const ej=ja(0);function g0(e){const n=Ln(e);return!fm()||!n.visualViewport?ej:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function tj(e,n,i){return n===void 0&&(n=!1),!i||n&&i!==Ln(e)?!1:n}function hr(e,n,i,r){n===void 0&&(n=!1),i===void 0&&(i=!1);const l=e.getBoundingClientRect(),d=mm(e);let u=ja(1);n&&(r?la(r)&&(u=ys(r)):u=ys(e));const h=tj(d,i,r)?g0(d):ja(0);let m=(l.left+h.x)/u.x,p=(l.top+h.y)/u.y,b=l.width/u.x,y=l.height/u.y;if(d){const v=Ln(d),x=r&&la(r)?Ln(r):r;let S=v,E=Rf(S);for(;E&&r&&x!==S;){const O=ys(E),C=E.getBoundingClientRect(),_=ca(E),q=C.left+(E.clientLeft+parseFloat(_.paddingLeft))*O.x,Y=C.top+(E.clientTop+parseFloat(_.paddingTop))*O.y;m*=O.x,p*=O.y,b*=O.x,y*=O.y,m+=q,p+=Y,S=Ln(E),E=Rf(S)}}return Lc({width:b,height:y,x:m,y:p})}function id(e,n){const i=ad(e).scrollLeft;return n?n.left+i:hr(Na(e)).left+i}function y0(e,n){const i=e.getBoundingClientRect(),r=i.left+n.scrollLeft-id(e,i),l=i.top+n.scrollTop;return{x:r,y:l}}function nj(e){let{elements:n,rect:i,offsetParent:r,strategy:l}=e;const d=l==="fixed",u=Na(r),h=n?nd(n.floating):!1;if(r===u||h&&d)return i;let m={scrollLeft:0,scrollTop:0},p=ja(1);const b=ja(0),y=Fa(r);if((y||!y&&!d)&&((Cs(r)!=="body"||Jo(u))&&(m=ad(r)),Fa(r))){const x=hr(r);p=ys(r),b.x=x.x+r.clientLeft,b.y=x.y+r.clientTop}const v=u&&!y&&!d?y0(u,m):ja(0);return{width:i.width*p.x,height:i.height*p.y,x:i.x*p.x-m.scrollLeft*p.x+b.x+v.x,y:i.y*p.y-m.scrollTop*p.y+b.y+v.y}}function aj(e){return Array.from(e.getClientRects())}function ij(e){const n=Na(e),i=ad(e),r=e.ownerDocument.body,l=Rn(n.scrollWidth,n.clientWidth,r.scrollWidth,r.clientWidth),d=Rn(n.scrollHeight,n.clientHeight,r.scrollHeight,r.clientHeight);let u=-i.scrollLeft+id(e);const h=-i.scrollTop;return ca(r).direction==="rtl"&&(u+=Rn(n.clientWidth,r.clientWidth)-l),{width:l,height:d,x:u,y:h}}const Ex=25;function rj(e,n){const i=Ln(e),r=Na(e),l=i.visualViewport;let d=r.clientWidth,u=r.clientHeight,h=0,m=0;if(l){d=l.width,u=l.height;const b=fm();(!b||b&&n==="fixed")&&(h=l.offsetLeft,m=l.offsetTop)}const p=id(r);if(p<=0){const b=r.ownerDocument,y=b.body,v=getComputedStyle(y),x=b.compatMode==="CSS1Compat"&&parseFloat(v.marginLeft)+parseFloat(v.marginRight)||0,S=Math.abs(r.clientWidth-y.clientWidth-x);S<=Ex&&(d-=S)}else p<=Ex&&(d+=p);return{width:d,height:u,x:h,y:m}}const sj=new Set(["absolute","fixed"]);function oj(e,n){const i=hr(e,!0,n==="fixed"),r=i.top+e.clientTop,l=i.left+e.clientLeft,d=Fa(e)?ys(e):ja(1),u=e.clientWidth*d.x,h=e.clientHeight*d.y,m=l*d.x,p=r*d.y;return{width:u,height:h,x:m,y:p}}function Ix(e,n,i){let r;if(n==="viewport")r=rj(e,i);else if(n==="document")r=ij(Na(e));else if(la(n))r=oj(n,i);else{const l=g0(e);r={x:n.x-l.x,y:n.y-l.y,width:n.width,height:n.height}}return Lc(r)}
49function b0(e,n){const i=Bi(e);return i===n||!la(i)||ks(i)?!1:ca(i).position==="fixed"||b0(i,n)}function lj(e,n){const i=n.get(e);if(i)return i;let r=Wo(e,[],!1).filter(h=>la(h)&&Cs(h)!=="body"),l=null;const d=ca(e).position==="fixed";let u=d?Bi(e):e;for(;la(u)&&!ks(u);){const h=ca(u),m=hm(u);!m&&h.position==="fixed"&&(l=null),(d?!m&&!l:!m&&h.position==="static"&&!!l&&sj.has(l.position)||Jo(u)&&!m&&b0(e,u))?r=r.filter(b=>b!==u):l=h,u=Bi(u)}return n.set(e,r),r}function cj(e){let{element:n,boundary:i,rootBoundary:r,strategy:l}=e;const u=[...i==="clippingAncestors"?nd(n)?[]:lj(n,this._c):[].concat(i),r],h=u[0],m=u.reduce((p,b)=>{const y=Ix(n,b,l);return p.top=Rn(y.top,p.top),p.right=_i(y.right,p.right),p.bottom=_i(y.bottom,p.bottom),p.left=Rn(y.left,p.left),p},Ix(n,h,l));return{width:m.right-m.left,height:m.bottom-m.top,x:m.left,y:m.top}}function dj(e){const{width:n,height:i}=p0(e);return{width:n,height:i}}function uj(e,n,i){const r=Fa(n),l=Na(n),d=i==="fixed",u=hr(e,!0,d,n);let h={scrollLeft:0,scrollTop:0};const m=ja(0);function p(){m.x=id(l)}if(r||!r&&!d)if((Cs(n)!=="body"||Jo(l))&&(h=ad(n)),r){const x=hr(n,!0,d,n);m.x=x.x+n.clientLeft,m.y=x.y+n.clientTop}else l&&p();d&&!r&&l&&p();const b=l&&!r&&!d?y0(l,h):ja(0),y=u.left+h.scrollLeft-m.x-b.x,v=u.top+h.scrollTop-m.y-b.y;return{x:y,y:v,width:u.width,height:u.height}}function zh(e){return ca(e).position==="static"}function Nx(e,n){if(!Fa(e)||ca(e).position==="fixed")return null;if(n)return n(e);let i=e.offsetParent;return Na(e)===i&&(i=i.ownerDocument.body),i}function x0(e,n){const i=Ln(e);if(nd(e))return i;if(!Fa(e)){let l=Bi(e);for(;l&&!ks(l);){if(la(l)&&!zh(l))return l;l=Bi(l)}return i}let r=Nx(e,n);for(;r&&K5(r)&&zh(r);)r=Nx(r,n);return r&&ks(r)&&zh(r)&&!hm(r)?i:r||X5(e)||i}const hj=async function(e){const n=this.getOffsetParent||x0,i=this.getDimensions,r=await i(e.floating);return{reference:uj(e.reference,await n(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function fj(e){return ca(e).direction==="rtl"}const mj={convertOffsetParentRelativeRectToViewportRelativeRect:nj,getDocumentElement:Na,getClippingRect:cj,getOffsetParent:x0,getElementRects:hj,getClientRects:aj,getDimensions:dj,getScale:ys,isElement:la,isRTL:fj};function v0(e,n){return e.x===n.x&&e.y===n.y&&e.width===n.width&&e.height===n.height}function pj(e,n){let i=null,r;const l=Na(e);function d(){var h;clearTimeout(r),(h=i)==null||h.disconnect(),i=null}function u(h,m){h===void 0&&(h=!1),m===void 0&&(m=1),d();const p=e.getBoundingClientRect(),{left:b,top:y,width:v,height:x}=p;if(h||n(),!v||!x)return;const S=vc(y),E=vc(l.clientWidth-(b+v)),O=vc(l.clientHeight-(y+x)),C=vc(b),q={rootMargin:-S+"px "+-E+"px "+-O+"px "+-C+"px",threshold:Rn(0,_i(1,m))||1};let Y=!0;function G(P){const M=P[0].intersectionRatio;if(M!==m){if(!Y)return u();M?u(!1,M):r=setTimeout(()=>{u(!1,1e-7)},1e3)}M===1&&!v0(p,e.getBoundingClientRect())&&u(),Y=!1}try{i=new IntersectionObserver(G,{...q,root:l.ownerDocument})}catch{i=new IntersectionObserver(G,q)}i.observe(e)}return u(!0),d}function gj(e,n,i,r){r===void 0&&(r={});const{ancestorScroll:l=!0,ancestorResize:d=!0,elementResize:u=typeof ResizeObserver=="function",layoutShift:h=typeof IntersectionObserver=="function",animationFrame:m=!1}=r,p=mm(e),b=l||d?[...p?Wo(p):[],...Wo(n)]:[];b.forEach(C=>{l&&C.addEventListener("scroll",i,{passive:!0}),d&&C.addEventListener("resize",i)});const y=p&&h?pj(p,i):null;let v=-1,x=null;u&&(x=new ResizeObserver(C=>{let[_]=C;_&&_.target===p&&x&&(x.unobserve(n),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var q;(q=x)==null||q.observe(n)})),i()}),p&&!m&&x.observe(p),x.observe(n));let S,E=m?hr(e):null;m&&O();function O(){const C=hr(e);E&&!v0(E,C)&&i(),E=C,S=requestAnimationFrame(O)}return i(),()=>{var C;b.forEach(_=>{l&&_.removeEventListener("scroll",i),d&&_.removeEventListener("resize",i)}),y?.(),(C=x)==null||C.disconnect(),x=null,m&&cancelAnimationFrame(S)}}const yj=U5,bj=H5,xj=B5,vj=W5,wj=L5,Mx=_5,Aj=q5,kj=(e,n,i)=>{const r=new Map,l={platform:mj,...i},d={...l.platform,_c:r};return R5(e,n,{...l,platform:d})};var Sj=typeof document<"u",Tj=function(){},Pc=Sj?j.useLayoutEffect:Tj;
49function zc(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(typeof e=="function"&&e.toString()===n.toString())return!0;let i,r,l;if(e&&n&&typeof e=="object"){if(Array.isArray(e)){if(i=e.length,i!==n.length)return!1;for(r=i;r--!==0;)if(!zc(e[r],n[r]))return!1;return!0}if(l=Object.keys(e),i=l.length,i!==Object.keys(n).length)return!1;for(r=i;r--!==0;)if(!{}.hasOwnProperty.call(n,l[r]))return!1;for(r=i;r--!==0;){const d=l[r];if(!(d==="_owner"&&e.$$typeof)&&!zc(e[d],n[d]))return!1}return!0}return e!==e&&n!==n}function w0(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Px(e,n){const i=w0(e);return Math.round(n*i)/i}function Uh(e){const n=j.useRef(e);return Pc(()=>{n.current=e}),n}function Cj(e){e===void 0&&(e={});const{placement:n="bottom",strategy:i="absolute",middleware:r=[],platform:l,elements:{reference:d,floating:u}={},transform:h=!0,whileElementsMounted:m,open:p}=e,[b,y]=j.useState({x:0,y:0,strategy:i,placement:n,middlewareData:{},isPositioned:!1}),[v,x]=j.useState(r);zc(v,r)||x(r);const[S,E]=j.useState(null),[O,C]=j.useState(null),_=j.useCallback(B=>{B!==P.current&&(P.current=B,E(B))},[]),q=j.useCallback(B=>{B!==M.current&&(M.current=B,C(B))},[]),Y=d||S,G=u||O,P=j.useRef(null),M=j.useRef(null),W=j.useRef(b),N=m!=null,L=Uh(m),J=Uh(l),z=Uh(p),$=j.useCallback(()=>{if(!P.current||!M.current)return;const B={placement:n,strategy:i,middleware:v};J.current&&(B.platform=J.current),kj(P.current,M.current,B).then(ce=>{const I={...ce,isPositioned:z.current!==!1};Q.current&&!zc(W.current,I)&&(W.current=I,lm.flushSync(()=>{y(I)}))})},[v,n,i,J,z]);Pc(()=>{p===!1&&W.current.isPositioned&&(W.current.isPositioned=!1,y(B=>({...B,isPositioned:!1})))},[p]);const Q=j.useRef(!1);Pc(()=>(Q.current=!0,()=>{Q.current=!1}),[]),Pc(()=>{if(Y&&(P.current=Y),G&&(M.current=G),Y&&G){if(L.current)return L.current(Y,G,$);$()}},[Y,G,$,L,N]);const X=j.useMemo(()=>({reference:P,floating:M,setReference:_,setFloating:q}),[_,q]),F=j.useMemo(()=>({reference:Y,floating:G}),[Y,G]),D=j.useMemo(()=>{const B={position:i,left:0,top:0};if(!F.floating)return B;const ce=Px(F.floating,b.x),I=Px(F.floating,b.y);return h?{...B,transform:"translate("+ce+"px, "+I+"px)",...w0(F.floating)>=1.5&&{willChange:"transform"}}:{position:i,left:ce,top:I}},[i,h,F.floating,b.x,b.y]);return j.useMemo(()=>({...b,update:$,refs:X,elements:F,floatingStyles:D}),[b,$,X,F,D])}const jj=e=>{function n(i){return{}.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){const{element:r,padding:l}=typeof e=="function"?e(i):e;return r&&n(r)?r.current!=null?Mx({element:r.current,padding:l}).fn(i):{}:r?Mx({element:r,padding:l}).fn(i):{}}}},Fj=(e,n)=>({...yj(e),options:[e,n]}),Ej=(e,n)=>({...bj(e),options:[e,n]}),Ij=(e,n)=>({...Aj(e),options:[e,n]}),Nj=(e,n)=>({...xj(e),options:[e,n]}),Mj=(e,n)=>({...vj(e),options:[e,n]}),Pj=(e,n)=>({...wj(e),options:[e,n]}),Oj=(e,n)=>({...jj(e),options:[e,n]});var Dj="Arrow",A0=j.forwardRef((e,n)=>{const{children:i,width:r=10,height:l=5,...d}=e;return o.jsx(br.svg,{...d,ref:n,width:r,height:l,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?i:o.jsx("polygon",{points:"0,0 30,0 15,10"})})});A0.displayName=Dj;var Rj=A0;function _j(e){const[n,i]=j.useState(void 0);return Ho(()=>{if(e){i({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(l=>{if(!Array.isArray(l)||!l.length)return;const d=l[0];let u,h;if("borderBoxSize"in d){const m=d.borderBoxSize,p=Array.isArray(m)?m[0]:m;u=p.inlineSize,h=p.blockSize}else u=e.offsetWidth,h=e.offsetHeight;i({width:u,height:h})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else i(void 0)},[e]),n}var k0="Popper",[S0,T0]=s0(k0),[H3,C0]=S0(k0),j0="PopperAnchor",F0=j.forwardRef((e,n)=>{const{__scopePopper:i,virtualRef:r,...l}=e,d=C0(j0,i),u=j.useRef(null),h=yr(n,u),m=j.useRef(null);return j.useEffect(()=>{const p=m.current;m.current=r?.current||u.current,p!==m.current&&d.onAnchorChange(m.current)}),r?null:o.jsx(br.div,{...l,ref:h})});F0.displayName=j0;var pm="PopperContent",[Bj,Lj]=S0(pm),E0=j.forwardRef((e,n)=>{const{__scopePopper:i,side:r="bottom",sideOffset:l=0,align:d="center",alignOffset:u=0,arrowPadding:h=0,avoidCollisions:m=!0,collisionBoundary:p=[],collisionPadding:b=0,sticky:y="partial",hideWhenDetached:v=!1,updatePositionStrategy:x="optimized",onPlaced:S,...E}=e,O=C0(pm,i),[C,_]=j.useState(null),q=yr(n,ne=>_(ne)),[Y,G]=j.useState(null),P=_j(Y),M=P?.width??0,W=P?.height??0,N=r+(d!=="center"?"-"+d:""),L=typeof b=="number"?b:{top:0,right:0,bottom:0,left:0,...b},J=Array.isArray(p)?p:[p],z=J.length>0,$={padding:L,boundary:J.filter(Uj),altBoundary:z},{refs:Q,floatingStyles:X,placement:F,isPositioned:D,middlewareData:B}=Cj({strategy:"fixed",placement:N,whileElementsMounted:(...ne)=>gj(...ne,{animationFrame:x==="always"}),elements:{reference:O.anchor},middleware:[Fj({mainAxis:l+W,alignmentAxis:u}),m&&Ej({mainAxis:!0,crossAxis:!1,limiter:y==="partial"?Ij():void 0,...$}),m&&Nj({...$}),Mj({...$,apply:({elements:ne,rects:we,availableWidth:je,availableHeight:Fe})=>
49{const{width:rt,height:St}=we.reference,Mt=ne.floating.style;Mt.setProperty("--radix-popper-available-width",`${je}px`),Mt.setProperty("--radix-popper-available-height",`${Fe}px`),Mt.setProperty("--radix-popper-anchor-width",`${rt}px`),Mt.setProperty("--radix-popper-anchor-height",`${St}px`)}}),Y&&Oj({element:Y,padding:h}),Hj({arrowWidth:M,arrowHeight:W}),v&&Pj({strategy:"referenceHidden",...$})]}),[ce,I]=M0(F),A=ed(S);Ho(()=>{D&&A?.()},[D,A]);const U=B.arrow?.x,k=B.arrow?.y,V=B.arrow?.centerOffset!==0,[ae,ue]=j.useState();return Ho(()=>{C&&ue(window.getComputedStyle(C).zIndex)},[C]),o.jsx("div",{ref:Q.setFloating,"data-radix-popper-content-wrapper":"",style:{...X,transform:D?X.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ae,"--radix-popper-transform-origin":[B.transformOrigin?.x,B.transformOrigin?.y].join(" "),...B.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:o.jsx(Bj,{scope:i,placedSide:ce,onArrowChange:G,arrowX:U,arrowY:k,shouldHideArrow:V,children:o.jsx(br.div,{"data-side":ce,"data-align":I,...E,ref:q,style:{...E.style,animation:D?void 0:"none"}})})})});E0.displayName=pm;var I0="PopperArrow",zj={top:"bottom",right:"left",bottom:"top",left:"right"},N0=j.forwardRef(function(n,i){const{__scopePopper:r,...l}=n,d=Lj(I0,r),u=zj[d.placedSide];return o.jsx("span",{ref:d.onArrowChange,style:{position:"absolute",left:d.arrowX,top:d.arrowY,[u]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[d.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[d.placedSide],visibility:d.shouldHideArrow?"hidden":void 0},children:o.jsx(Rj,{...l,ref:i,style:{...l.style,display:"block"}})})});N0.displayName=I0;function Uj(e){return e!==null}var Hj=e=>({name:"transformOrigin",options:e,fn(n){const{placement:i,rects:r,middlewareData:l}=n,u=l.arrow?.centerOffset!==0,h=u?0:e.arrowWidth,m=u?0:e.arrowHeight,[p,b]=M0(i),y={start:"0%",center:"50%",end:"100%"}[b],v=(l.arrow?.x??0)+h/2,x=(l.arrow?.y??0)+m/2;let S="",E="";return p==="bottom"?(S=u?y:`${v}px`,E=`${-m}px`):p==="top"?(S=u?y:`${v}px`,E=`${r.floating.height+m}px`):p==="right"?(S=`${-m}px`,E=u?y:`${x}px`):p==="left"&&(S=`${r.floating.width+m}px`,E=u?y:`${x}px`),{data:{x:S,y:E}}}});function M0(e){const[n,i="center"]=e.split("-");return[n,i]}var qj=F0,Wj=E0,Vj=N0;function Gj(e,n){return j.useReducer((i,r)=>n[i][r]??i,e)}var P0=e=>{const{present:n,children:i}=e,r=Kj(n),l=typeof i=="function"?i({present:r.isPresent}):j.Children.only(i),d=yr(r.ref,Yj(l));return typeof i=="function"||r.isPresent?j.cloneElement(l,{ref:d}):null};P0.displayName="Presence";function Kj(e){const[n,i]=j.useState(),r=j.useRef(null),l=j.useRef(e),d=j.useRef("none"),u=e?"mounted":"unmounted",[h,m]=Gj(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return j.useEffect(()=>{const p=wc(r.current);d.current=h==="mounted"?p:"none"},[h]),Ho(()=>{const p=r.current,b=l.current;if(b!==e){const v=d.current,x=wc(p);e?m("MOUNT"):x==="none"||p?.display==="none"?m("UNMOUNT"):m(b&&v!==x?"ANIMATION_OUT":"UNMOUNT"),l.current=e}},[e,m]),Ho(()=>{if(n){let p;const b=n.ownerDocument.defaultView??window,y=x=>{const E=wc(r.current).includes(CSS.escape(x.animationName));if(x.target===n&&E&&(m("ANIMATION_END"),!l.current)){const O=n.style.animationFillMode;n.style.animationFillMode="forwards",p=b.setTimeout(()=>{n.style.animationFillMode==="forwards"&&(n.style.animationFillMode=O)})}},v=x=>{x.target===n&&(d.current=wc(r.current))};return n.addEventListener("animationstart",v),n.addEventListener("animationcancel",y),n.addEventListener("animationend",y),()=>{b.clearTimeout(p),n.removeEventListener("animationstart",v),n.removeEventListener("animationcancel",y),n.removeEventListener("animationend",y)}}else m("ANIMATION_END")},[n,m]),{isPresent:["mounted","unmountSuspended"].includes(h),ref:j.useCallback(p=>{r.current=p?getComputedStyle(p):null,i(p)},[])}}function wc(e){return e?.animationName||"none"}function Yj(e){let n=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,i=n&&"isReactWarning"in n&&n.isReactWarning;return i?e.ref:(n=Object.getOwnPropertyDescriptor(e,"ref")?.get,i=n&&"isReactWarning"in n&&n.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}var $j=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}
49),Qj="VisuallyHidden",O0=j.forwardRef((e,n)=>o.jsx(br.span,{...e,ref:n,style:{...$j,...e.style}}));O0.displayName=Qj;var Jj=O0,[rd]=s0("Tooltip",[T0]),gm=T0(),D0="TooltipProvider",Xj=700,Ox="tooltip.open",[Zj,R0]=rd(D0),_0=e=>{const{__scopeTooltip:n,delayDuration:i=Xj,skipDelayDuration:r=300,disableHoverableContent:l=!1,children:d}=e,u=j.useRef(!0),h=j.useRef(!1),m=j.useRef(0);return j.useEffect(()=>{const p=m.current;return()=>window.clearTimeout(p)},[]),o.jsx(Zj,{scope:n,isOpenDelayedRef:u,delayDuration:i,onOpen:j.useCallback(()=>{window.clearTimeout(m.current),u.current=!1},[]),onClose:j.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>u.current=!0,r)},[r]),isPointerInTransitRef:h,onPointerInTransitChange:j.useCallback(p=>{h.current=p},[]),disableHoverableContent:l,children:d})};_0.displayName=D0;var B0="Tooltip",[q3,sd]=rd(B0),_f="TooltipTrigger",e6=j.forwardRef((e,n)=>{const{__scopeTooltip:i,...r}=e,l=sd(_f,i),d=R0(_f,i),u=gm(i),h=j.useRef(null),m=yr(n,h,l.onTriggerChange),p=j.useRef(!1),b=j.useRef(!1),y=j.useCallback(()=>p.current=!1,[]);return j.useEffect(()=>()=>document.removeEventListener("pointerup",y),[y]),o.jsx(qj,{asChild:!0,...u,children:o.jsx(br.button,{"aria-describedby":l.open?l.contentId:void 0,"data-state":l.stateAttribute,...r,ref:m,onPointerMove:Xa(e.onPointerMove,v=>{v.pointerType!=="touch"&&!b.current&&!d.isPointerInTransitRef.current&&(l.onTriggerEnter(),b.current=!0)}),onPointerLeave:Xa(e.onPointerLeave,()=>{l.onTriggerLeave(),b.current=!1}),onPointerDown:Xa(e.onPointerDown,()=>{l.open&&l.onClose(),p.current=!0,document.addEventListener("pointerup",y,{once:!0})}),onFocus:Xa(e.onFocus,()=>{p.current||l.onOpen()}),onBlur:Xa(e.onBlur,l.onClose),onClick:Xa(e.onClick,l.onClose)})})});e6.displayName=_f;var t6="TooltipPortal",[W3,n6]=rd(t6,{forceMount:void 0}),Ss="TooltipContent",a6=j.forwardRef((e,n)=>{const i=n6(Ss,e.__scopeTooltip),{forceMount:r=i.forceMount,side:l="top",...d}=e,u=sd(Ss,e.__scopeTooltip);return o.jsx(P0,{present:r||u.open,children:u.disableHoverableContent?o.jsx(L0,{side:l,...d,ref:n}):o.jsx(i6,{side:l,...d,ref:n})})}),i6=j.forwardRef((e,n)=>{const i=sd(Ss,e.__scopeTooltip),r=R0(Ss,e.__scopeTooltip),l=j.useRef(null),d=yr(n,l),[u,h]=j.useState(null),{trigger:m,onClose:p}=i,b=l.current,{onPointerInTransitChange:y}=r,v=j.useCallback(()=>{h(null),y(!1)},[y]),x=j.useCallback((S,E)=>{const O=S.currentTarget,C={x:S.clientX,y:S.clientY},_=c6(C,O.getBoundingClientRect()),q=d6(C,_),Y=u6(E.getBoundingClientRect()),G=f6([...q,...Y]);h(G),y(!0)},[y]);return j.useEffect(()=>()=>v(),[v]),j.useEffect(()=>{if(m&&b){const S=O=>x(O,b),E=O=>x(O,m);return m.addEventListener("pointerleave",S),b.addEventListener("pointerleave",E),()=>{m.removeEventListener("pointerleave",S),b.removeEventListener("pointerleave",E)}}},[m,b,x,v]),j.useEffect(()=>{if(u){const S=E=>{const O=E.target,C={x:E.clientX,y:E.clientY},_=m?.contains(O)||b?.contains(O),q=!h6(C,u);_?v():q&&(v(),p())};return document.addEventListener("pointermove",S),()=>document.removeEventListener("pointermove",S)}},[m,b,u,p,v]),o.jsx(L0,{...e,ref:d})}),[r6,s6]=rd(B0,{isInside:!1}),o6=u5("TooltipContent"),L0=j.forwardRef((e,n)=>{const{__scopeTooltip:i,children:r,"aria-label":l,onEscapeKeyDown:d,onPointerDownOutside:u,...h}=e,m=sd(Ss,i),p=gm(i),{onClose:b}=m;return j.useEffect(()=>(document.addEventListener(Ox,b),()=>document.removeEventListener(Ox,b)),[b]),j.useEffect(()=>{if(m.trigger){const y=v=>{v.target?.contains(m.trigger)&&b()};return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[m.trigger,b]),o.jsx(c0,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:u,onFocusOutside:y=>y.preventDefault(),onDismiss:b,children:o.jsxs(Wj,{"data-state":m.stateAttribute,...p,...h,ref:n,style:{...h.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(o6,{children:r}),o.jsx(r6,{scope:i,isInside:!0,children:o.jsx(Jj,{id:m.contentId,role:"tooltip",children:l||r})})]})})});a6.displayName=Ss;
49var z0="TooltipArrow",l6=j.forwardRef((e,n)=>{const{__scopeTooltip:i,...r}=e,l=gm(i);return s6(z0,i).isInside?null:o.jsx(Vj,{...l,...r,ref:n})});l6.displayName=z0;function c6(e,n){const i=Math.abs(n.top-e.y),r=Math.abs(n.bottom-e.y),l=Math.abs(n.right-e.x),d=Math.abs(n.left-e.x);switch(Math.min(i,r,l,d)){case d:return"left";case l:return"right";case i:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function d6(e,n,i=5){const r=[];switch(n){case"top":r.push({x:e.x-i,y:e.y+i},{x:e.x+i,y:e.y+i});break;case"bottom":r.push({x:e.x-i,y:e.y-i},{x:e.x+i,y:e.y-i});break;case"left":r.push({x:e.x+i,y:e.y-i},{x:e.x+i,y:e.y+i});break;case"right":r.push({x:e.x-i,y:e.y-i},{x:e.x-i,y:e.y+i});break}return r}function u6(e){const{top:n,right:i,bottom:r,left:l}=e;return[{x:l,y:n},{x:i,y:n},{x:i,y:r},{x:l,y:r}]}function h6(e,n){const{x:i,y:r}=e;let l=!1;for(let d=0,u=n.length-1;d<n.length;u=d++){const h=n[d],m=n[u],p=h.x,b=h.y,y=m.x,v=m.y;b>r!=v>r&&i<(y-p)*(r-b)/(v-b)+p&&(l=!l)}return l}function f6(e){const n=e.slice();return n.sort((i,r)=>i.x<r.x?-1:i.x>r.x?1:i.y<r.y?-1:i.y>r.y?1:0),m6(n)}function m6(e){if(e.length<=1)return e.slice();const n=[];for(let r=0;r<e.length;r++){const l=e[r];for(;n.length>=2;){const d=n[n.length-1],u=n[n.length-2];if((d.x-u.x)*(l.y-u.y)>=(d.y-u.y)*(l.x-u.x))n.pop();else break}n.push(l)}n.pop();const i=[];for(let r=e.length-1;r>=0;r--){const l=e[r];for(;i.length>=2;){const d=i[i.length-1],u=i[i.length-2];if((d.x-u.x)*(l.y-u.y)>=(d.y-u.y)*(l.x-u.x))i.pop();else break}i.push(l)}return i.pop(),n.length===1&&i.length===1&&n[0].x===i[0].x&&n[0].y===i[0].y?n:n.concat(i)}var p6=_0;function U0(e){var n,i,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var l=e.length;for(n=0;n<l;n++)e[n]&&(i=U0(e[n]))&&(r&&(r+=" "),r+=i)}else for(i in e)e[i]&&(r&&(r+=" "),r+=i);return r}function g6(){for(var e,n,i=0,r="",l=arguments.length;i<l;i++)(e=arguments[i])&&(n=U0(e))&&(r&&(r+=" "),r+=n);return r}const ym="-",y6=e=>{const n=x6(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:u=>{const h=u.split(ym);return h[0]===""&&h.length!==1&&h.shift(),H0(h,n)||b6(u)},getConflictingClassGroupIds:(u,h)=>{const m=i[u]||[];return h&&r[u]?[...m,...r[u]]:m}}},H0=(e,n)=>{if(e.length===0)return n.classGroupId;const i=e[0],r=n.nextPart.get(i),l=r?H0(e.slice(1),r):void 0;if(l)return l;if(n.validators.length===0)return;const d=e.join(ym);return n.validators.find(({validator:u})=>u(d))?.classGroupId},Dx=/^\[(.+)\]$/,b6=e=>{if(Dx.test(e)){const n=Dx.exec(e)[1],i=n?.substring(0,n.indexOf(":"));if(i)return"arbitrary.."+i}},x6=e=>{const{theme:n,classGroups:i}=e,r={nextPart:new Map,validators:[]};for(const l in i)Bf(i[l],r,l,n);return r},Bf=(e,n,i,r)=>{e.forEach(l=>{if(typeof l=="string"){const d=l===""?n:Rx(n,l);d.classGroupId=i;return}if(typeof l=="function"){if(v6(l)){Bf(l(r),n,i,r);return}n.validators.push({validator:l,classGroupId:i});return}Object.entries(l).forEach(([d,u])=>{Bf(u,Rx(n,d),i,r)})})},Rx=(e,n)=>{let i=e;return n.split(ym).forEach(r=>{i.nextPart.has(r)||i.nextPart.set(r,{nextPart:new Map,validators:[]}),i=i.nextPart.get(r)}),i},v6=e=>e.isThemeGetter,w6=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,i=new Map,r=new Map;const l=(d,u)=>{i.set(d,u),n++,n>e&&(n=0,r=i,i=new Map)};return{get(d){let u=i.get(d);if(u!==void 0)return u;if((u=r.get(d))!==void 0)return l(d,u),u},set(d,u){i.has(d)?i.set(d,u):l(d,u)}}},Lf="!",zf=":",A6=zf.length,k6=e=>{const{prefix:n,experimentalParseClassName:i}=e;let r=l=>{const d=[];let u=0,h=0,m=0,p;for(let S=0;S<l.length;S++){let E=l[S];if(u===0&&h===0){if(E===zf){d.push(l.slice(m,S)),m=S+A6;continue}if(E==="/"){p=S;continue}}E==="["?u++:E==="]"?u--:E==="("?h++:E===")"&&h--}const b=d.length===0?l:l.substring(m),y=S6(b),v=y!==b,x=p&&p>m?p-m:void 0;return{modifiers:d,hasImportantModifier:v,baseClassName:y,maybePostfixModifierPosition:x}};if(n){const l=n+zf,d=r;r=u=>u.startsWith(l)?d(u.substring(l.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:u,maybePostfixModifierPosition:void 0}}if(i){const l=r;r=d=>i({className:d,parseClassName:l})}return r},S6=e=>
vendor: 5,263 bytes, line 49
49e.endsWith(Lf)?e.substring(0,e.length-1):e.startsWith(Lf)?e.substring(1):e,T6=e=>{const n=Object.fromEntries(e.orderSensitiveModifiers.map(r=>[r,!0]));return r=>{if(r.length<=1)return r;const l=[];let d=[];return r.forEach(u=>{u[0]==="["||n[u]?(l.push(...d.sort(),u),d=[]):d.push(u)}),l.push(...d.sort()),l}},C6=e=>({cache:w6(e.cacheSize),parseClassName:k6(e),sortModifiers:T6(e),...y6(e)}),j6=/\s+/,F6=(e,n)=>{const{parseClassName:i,getClassGroupId:r,getConflictingClassGroupIds:l,sortModifiers:d}=n,u=[],h=e.trim().split(j6);let m="";for(let p=h.length-1;p>=0;p-=1){const b=h[p],{isExternal:y,modifiers:v,hasImportantModifier:x,baseClassName:S,maybePostfixModifierPosition:E}=i(b);if(y){m=b+(m.length>0?" "+m:m);continue}let O=!!E,C=r(O?S.substring(0,E):S);if(!C){if(!O){m=b+(m.length>0?" "+m:m);continue}if(C=r(S),!C){m=b+(m.length>0?" "+m:m);continue}O=!1}const _=d(v).join(":"),q=x?_+Lf:_,Y=q+C;if(u.includes(Y))continue;u.push(Y);const G=l(C,O);for(let P=0;P<G.length;++P){const M=G[P];u.push(q+M)}m=b+(m.length>0?" "+m:m)}return m};function E6(){let e=0,n,i,r="";for(;e<arguments.length;)(n=arguments[e++])&&(i=q0(n))&&(r&&(r+=" "),r+=i);return r}const q0=e=>{if(typeof e=="string")return e;let n,i="";for(let r=0;r<e.length;r++)e[r]&&(n=q0(e[r]))&&(i&&(i+=" "),i+=n);return i};function I6(e,...n){let i,r,l,d=u;function u(m){const p=n.reduce((b,y)=>y(b),e());return i=C6(p),r=i.cache.get,l=i.cache.set,d=h,h(m)}function h(m){const p=r(m);if(p)return p;const b=F6(m,i);return l(m,b),b}return function(){return d(E6.apply(null,arguments))}}const zt=e=>{const n=i=>i[e]||[];return n.isThemeGetter=!0,n},W0=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,V0=/^\((?:(\w[\w-]*):)?(.+)\)$/i,N6=/^\d+\/\d+$/,M6=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,P6=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,O6=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,D6=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,R6=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ds=e=>N6.test(e),He=e=>!!e&&!Number.isNaN(Number(e)),Ei=e=>!!e&&Number.isInteger(Number(e)),Hh=e=>e.endsWith("%")&&He(e.slice(0,-1)),Qa=e=>M6.test(e),_6=()=>!0,B6=e=>P6.test(e)&&!O6.test(e),G0=()=>!1,L6=e=>D6.test(e),z6=e=>R6.test(e),U6=e=>!Ae(e)&&!ke(e),H6=e=>js(e,$0,G0),Ae=e=>W0.test(e),or=e=>js(e,Q0,B6),qh=e=>js(e,K6,He),_x=e=>js(e,K0,G0),q6=e=>js(e,Y0,z6),Ac=e=>js(e,J0,L6),ke=e=>V0.test(e),jo=e=>Fs(e,Q0),W6=e=>Fs(e,Y6),Bx=e=>Fs(e,K0),V6=e=>Fs(e,$0),G6=e=>Fs(e,Y0),kc=e=>Fs(e,J0,!0),js=(e,n,i)=>{const r=W0.exec(e);return r?r[1]?n(r[1]):i(r[2]):!1},Fs=(e,n,i=!1)=>{const r=V0.exec(e);return r?r[1]?n(r[1]):i:!1},K0=e=>e==="position"||e==="percentage",Y0=e=>e==="image"||e==="url",$0=e=>e==="length"||e==="size"||e==="bg-size",Q0=e=>e==="length",K6=e=>e==="number",Y6=e=>e==="family-name",J0=e=>e==="shadow",$6=()=>{const e=zt("color"),n=zt("font"),i=zt("text"),r=zt("font-weight"),l=zt("tracking"),d=zt("leading"),u=zt("breakpoint"),h=zt("container"),m=zt("spacing"),p=zt("radius"),b=zt("shadow"),y=zt("inset-shadow"),v=zt("text-shadow"),x=zt("drop-shadow"),S=zt("blur"),E=zt("perspective"),O=zt("aspect"),C=zt("ease"),_=zt("animate"),q=()=>["auto","avoid","all","avoid-page","page","left","right","column"],Y=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],G=()=>[...Y(),ke,Ae],P=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],W=()=>[ke,Ae,m],N=()=>[ds,"full","auto",...W()],L=()=>[Ei,"none","subgrid",ke,Ae],J=()=>["auto",{span:["full",Ei,ke,Ae]},Ei,ke,Ae],z=()=>[Ei,"auto",ke,Ae],$=()=>["auto","min","max","fr",ke,Ae],Q=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],X=()=>["start","end","center","stretch","center-safe","end-safe"],F=()=>["auto",...W()],D=()=>[ds,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...W()],B=()=>[e,ke,Ae],ce=()=>[...Y(),Bx,_x,{position:[ke,Ae]}],I=()=>["no-repeat",{repeat:["","x","y","space","round"]}],A=()=>["auto","cover","contain",V6,H6,{size:[ke,Ae]}],U=()=>[Hh,jo,or],k=()=>["","none","full",p,ke,Ae],V=()=>["",He,jo,or],ae=()=>["solid","dashed","dotted","double"],ue=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ne=()=>[He,Hh,Bx,_x],we=()=>["","none",S,ke,Ae],je=()=>["none",He,ke,Ae],Fe=()=>["none",He,ke,Ae],rt=()=>[He,ke,Ae],St=()=>[ds,"full",...W()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Qa],breakpoint:[Qa],color:[_6],container:[Qa],"drop-shadow":[Qa],ease:["in","out","in-out"],font:[U6],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Qa],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Qa],shadow:[Qa],spacing:["px",He],text:[Qa],"text-shadow":[Qa],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ds,Ae,ke,O]}
vendor: 5,619 bytes, line 49
49],container:["container"],columns:[{columns:[He,Ae,ke,h]}],"break-after":[{"break-after":q()}],"break-before":[{"break-before":q()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:G()}],overflow:[{overflow:P()}],"overflow-x":[{"overflow-x":P()}],"overflow-y":[{"overflow-y":P()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:N()}],"inset-x":[{"inset-x":N()}],"inset-y":[{"inset-y":N()}],start:[{start:N()}],end:[{end:N()}],top:[{top:N()}],right:[{right:N()}],bottom:[{bottom:N()}],left:[{left:N()}],visibility:["visible","invisible","collapse"],z:[{z:[Ei,"auto",ke,Ae]}],basis:[{basis:[ds,"full","auto",h,...W()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[He,ds,"auto","initial","none",Ae]}],grow:[{grow:["",He,ke,Ae]}],shrink:[{shrink:["",He,ke,Ae]}],order:[{order:[Ei,"first","last","none",ke,Ae]}],"grid-cols":[{"grid-cols":L()}],"col-start-end":[{col:J()}],"col-start":[{"col-start":z()}],"col-end":[{"col-end":z()}],"grid-rows":[{"grid-rows":L()}],"row-start-end":[{row:J()}],"row-start":[{"row-start":z()}],"row-end":[{"row-end":z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":$()}],"auto-rows":[{"auto-rows":$()}],gap:[{gap:W()}],"gap-x":[{"gap-x":W()}],"gap-y":[{"gap-y":W()}],"justify-content":[{justify:[...Q(),"normal"]}],"justify-items":[{"justify-items":[...X(),"normal"]}],"justify-self":[{"justify-self":["auto",...X()]}],"align-content":[{content:["normal",...Q()]}],"align-items":[{items:[...X(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...X(),{baseline:["","last"]}]}],"place-content":[{"place-content":Q()}],"place-items":[{"place-items":[...X(),"baseline"]}],"place-self":[{"place-self":["auto",...X()]}],p:[{p:W()}],px:[{px:W()}],py:[{py:W()}],ps:[{ps:W()}],pe:[{pe:W()}],pt:[{pt:W()}],pr:[{pr:W()}],pb:[{pb:W()}],pl:[{pl:W()}],m:[{m:F()}],mx:[{mx:F()}],my:[{my:F()}],ms:[{ms:F()}],me:[{me:F()}],mt:[{mt:F()}],mr:[{mr:F()}],mb:[{mb:F()}],ml:[{ml:F()}],"space-x":[{"space-x":W()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":W()}],"space-y-reverse":["space-y-reverse"],size:[{size:D()}],w:[{w:[h,"screen",...D()]}],"min-w":[{"min-w":[h,"screen","none",...D()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[u]},...D()]}],h:[{h:["screen","lh",...D()]}],"min-h":[{"min-h":["screen","lh","none",...D()]}],"max-h":[{"max-h":["screen","lh",...D()]}],"font-size":[{text:["base",i,jo,or]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,ke,qh]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Hh,Ae]}],"font-family":[{font:[W6,Ae,n]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[l,ke,Ae]}],"line-clamp":[{"line-clamp":[He,"none",ke,qh]}],leading:[{leading:[d,...W()]}],"list-image":[{"list-image":["none",ke,Ae]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ke,Ae]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:B()}],"text-color":[{text:B()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ae(),"wavy"]}],"text-decoration-thickness":[{decoration:[He,"from-font","auto",ke,or]}],"text-decoration-color":[{decoration:B()}],"underline-offset":[{"underline-offset":[He,"auto",ke,Ae]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:W()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ke,Ae]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ke,Ae]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ce()}],"bg-repeat":[{bg:I()}],"bg-size":[{bg:A()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Ei,ke,Ae],radial:["",ke,Ae],conic:[Ei,ke,Ae]},G6,q6]}],"bg-color":[{bg:B()}],"gradient-from-pos":[{from:U()}
49],"gradient-via-pos":[{via:U()}],"gradient-to-pos":[{to:U()}],"gradient-from":[{from:B()}],"gradient-via":[{via:B()}],"gradient-to":[{to:B()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:V()}],"border-w-x":[{"border-x":V()}],"border-w-y":[{"border-y":V()}],"border-w-s":[{"border-s":V()}],"border-w-e":[{"border-e":V()}],"border-w-t":[{"border-t":V()}],"border-w-r":[{"border-r":V()}],"border-w-b":[{"border-b":V()}],"border-w-l":[{"border-l":V()}],"divide-x":[{"divide-x":V()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":V()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ae(),"hidden","none"]}],"divide-style":[{divide:[...ae(),"hidden","none"]}],"border-color":[{border:B()}],"border-color-x":[{"border-x":B()}],"border-color-y":[{"border-y":B()}],"border-color-s":[{"border-s":B()}],"border-color-e":[{"border-e":B()}],"border-color-t":[{"border-t":B()}],"border-color-r":[{"border-r":B()}],"border-color-b":[{"border-b":B()}],"border-color-l":[{"border-l":B()}
vendor: 5,754 bytes, line 49
49],"divide-color":[{divide:B()}],"outline-style":[{outline:[...ae(),"none","hidden"]}],"outline-offset":[{"outline-offset":[He,ke,Ae]}],"outline-w":[{outline:["",He,jo,or]}],"outline-color":[{outline:B()}],shadow:[{shadow:["","none",b,kc,Ac]}],"shadow-color":[{shadow:B()}],"inset-shadow":[{"inset-shadow":["none",y,kc,Ac]}],"inset-shadow-color":[{"inset-shadow":B()}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:B()}],"ring-offset-w":[{"ring-offset":[He,or]}],"ring-offset-color":[{"ring-offset":B()}],"inset-ring-w":[{"inset-ring":V()}],"inset-ring-color":[{"inset-ring":B()}],"text-shadow":[{"text-shadow":["none",v,kc,Ac]}],"text-shadow-color":[{"text-shadow":B()}],opacity:[{opacity:[He,ke,Ae]}],"mix-blend":[{"mix-blend":[...ue(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ue()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[He]}],"mask-image-linear-from-pos":[{"mask-linear-from":ne()}],"mask-image-linear-to-pos":[{"mask-linear-to":ne()}],"mask-image-linear-from-color":[{"mask-linear-from":B()}],"mask-image-linear-to-color":[{"mask-linear-to":B()}],"mask-image-t-from-pos":[{"mask-t-from":ne()}],"mask-image-t-to-pos":[{"mask-t-to":ne()}],"mask-image-t-from-color":[{"mask-t-from":B()}],"mask-image-t-to-color":[{"mask-t-to":B()}],"mask-image-r-from-pos":[{"mask-r-from":ne()}],"mask-image-r-to-pos":[{"mask-r-to":ne()}],"mask-image-r-from-color":[{"mask-r-from":B()}],"mask-image-r-to-color":[{"mask-r-to":B()}],"mask-image-b-from-pos":[{"mask-b-from":ne()}],"mask-image-b-to-pos":[{"mask-b-to":ne()}],"mask-image-b-from-color":[{"mask-b-from":B()}],"mask-image-b-to-color":[{"mask-b-to":B()}],"mask-image-l-from-pos":[{"mask-l-from":ne()}],"mask-image-l-to-pos":[{"mask-l-to":ne()}],"mask-image-l-from-color":[{"mask-l-from":B()}],"mask-image-l-to-color":[{"mask-l-to":B()}],"mask-image-x-from-pos":[{"mask-x-from":ne()}],"mask-image-x-to-pos":[{"mask-x-to":ne()}],"mask-image-x-from-color":[{"mask-x-from":B()}],"mask-image-x-to-color":[{"mask-x-to":B()}],"mask-image-y-from-pos":[{"mask-y-from":ne()}],"mask-image-y-to-pos":[{"mask-y-to":ne()}],"mask-image-y-from-color":[{"mask-y-from":B()}],"mask-image-y-to-color":[{"mask-y-to":B()}],"mask-image-radial":[{"mask-radial":[ke,Ae]}],"mask-image-radial-from-pos":[{"mask-radial-from":ne()}],"mask-image-radial-to-pos":[{"mask-radial-to":ne()}],"mask-image-radial-from-color":[{"mask-radial-from":B()}],"mask-image-radial-to-color":[{"mask-radial-to":B()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":Y()}],"mask-image-conic-pos":[{"mask-conic":[He]}],"mask-image-conic-from-pos":[{"mask-conic-from":ne()}],"mask-image-conic-to-pos":[{"mask-conic-to":ne()}],"mask-image-conic-from-color":[{"mask-conic-from":B()}],"mask-image-conic-to-color":[{"mask-conic-to":B()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ce()}],"mask-repeat":[{mask:I()}],"mask-size":[{mask:A()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ke,Ae]}],filter:[{filter:["","none",ke,Ae]}],blur:[{blur:we()}],brightness:[{brightness:[He,ke,Ae]}],contrast:[{contrast:[He,ke,Ae]}],"drop-shadow":[{"drop-shadow":["","none",x,kc,Ac]}],"drop-shadow-color":[{"drop-shadow":B()}],grayscale:[{grayscale:["",He,ke,Ae]}],"hue-rotate":[{"hue-rotate":[He,ke,Ae]}],invert:[{invert:["",He,ke,Ae]}],saturate:[{saturate:[He,ke,Ae]}],sepia:[{sepia:["",He,ke,Ae]}],"backdrop-filter":[{"backdrop-filter":["","none",ke,Ae]}],"backdrop-blur":[{"backdrop-blur":we()}],"backdrop-brightness":[{"backdrop-brightness":[He,ke,Ae]}],"backdrop-contrast":[{"backdrop-contrast":[He,ke,Ae]}],"backdrop-grayscale":[{"backdrop-grayscale":["",He,ke,Ae]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[He,ke,Ae]}],"backdrop-invert":[{"backdrop-invert":["",He,ke,Ae]}],"backdrop-opacity":[{"backdrop-opacity":[He,ke,Ae]}],"backdrop-saturate":[{"backdrop-saturate":[He,ke,Ae]}],"backdrop-sepia":[{"backdrop-sepia":["",He,ke,Ae]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":W()}],"border-spacing-x":[{"border-spacing-x":W()}],"border-spacing-y":[{"border-spacing-y":W()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ke,Ae]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[He,"initial",ke,Ae]}],ease:[{ease:["linear","initial",C,ke,Ae]}],delay:[{delay:[He,ke,Ae]}],animate:[{animate:["none",_,ke,Ae]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[E,ke,Ae]}],"perspective-origin":[{"perspective-origin":G()}],rotate:[{rotate:je()}],"rotate-x":[{"rotate-x":je()}],"rotate-y":[{"rotate-y":je()}],"rotate-z":[{"rotate-z":je()}],scale:[{scale:Fe()}],"scale-x":[{"scale-x":Fe()}],"scale-y":[{"scale-y":Fe()}],"scale-z":[{"scale-z":Fe()}],"scale-3d":["scale-3d"],skew:[{skew:rt()}],"skew-x":[{"skew-x":rt()}],"skew-y":[{"skew-y":rt()}],transform:[{transform:[ke,Ae,"","none","gpu","cpu"]}],"transform-origin":[{origin:G()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:St()}],"translate-x":[{"translate-x":St()}],"translate-y":[{"translate-y":St()}],"translate-z":[{"translate-z":St()}],"translate-none":["translate-none"],accent:[{accent:B()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:B()}
49],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ke,Ae]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":W()}],"scroll-mx":[{"scroll-mx":W()}],"scroll-my":[{"scroll-my":W()}],"scroll-ms":[{"scroll-ms":W()}],"scroll-me":[{"scroll-me":W()}],"scroll-mt":[{"scroll-mt":W()}],"scroll-mr":[{"scroll-mr":W()}],"scroll-mb":[{"scroll-mb":W()}],"scroll-ml":[{"scroll-ml":W()}],"scroll-p":[{"scroll-p":W()}],"scroll-px":[{"scroll-px":W()}],"scroll-py":[{"scroll-py":W()}],"scroll-ps":[{"scroll-ps":W()}],"scroll-pe":[{"scroll-pe":W()}],"scroll-pt":[{"scroll-pt":W()}],"scroll-pr":[{"scroll-pr":W()}],"scroll-pb":[{"scroll-pb":W()}],"scroll-pl":[{"scroll-pl":W()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ke,Ae]}],fill:[{fill:["none",...B()]}],"stroke-w":[{stroke:[He,jo,or,qh]}],stroke:[{stroke:["none",...B()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Q6=I6($6);function J6(...e){return Q6(g6(e))}function X6({delayDuration:e=0,...n}){return o.jsx(p6,{"data-loc":"client/src/components/ui/tooltip.tsx:11","data-slot":"tooltip-provider",delayDuration:e,...n})}function Z6(e,n){if(e instanceof RegExp)return{keys:!1,pattern:e};var i,r,l,d,u=[],h="",m=e.split("/");for(m[0]||m.shift();l=m.shift();)i=l[0],i==="*"?(u.push(i),h+=l[1]==="?"?"(?:/(.*))?":"/(.*)"):i===":"?(r=l.indexOf("?",1),d=l.indexOf(".",1),u.push(l.substring(1,~r?r:~d?d:l.length)),h+=~r&&!~d?"(?:/([^/]+?))?":"/([^/]+?)",~d&&(h+=(~r?"?":"")+"\\"+l.substring(d))):h+="/"+l;return{keys:u,pattern:new RegExp("^"+h+(n?"(?=$|/)":"/?$"),"i")}}var Wh={exports:{}},Vh={};/**
50 * @license React
51 * use-sync-external-store-shim.production.js
52 *
53 * Copyright (c) Meta Platforms, Inc. and affiliates.
54 *
55 * This source code is licensed under the MIT license found in the
56 * LICENSE file in the root directory of this source tree.
57 */var Lx;function eF(){if(Lx)return Vh;Lx=1;var e=Gc();function n(y,v){return y===v&&(y!==0||1/y===1/v)||y!==y&&v!==v}var i=typeof Object.is=="function"?Object.is:n,r=e.useState,l=e.useEffect,d=e.useLayoutEffect,u=e.useDebugValue;function h(y,v){var x=v(),S=r({inst:{value:x,getSnapshot:v}}),E=S[0].inst,O=S[1];return d(function(){E.value=x,E.getSnapshot=v,m(E)&&O({inst:E})},[y,x,v]),l(function(){return m(E)&&O({inst:E}),y(function(){m(E)&&O({inst:E})})},[y]),u(x),x}function m(y){var v=y.getSnapshot;y=y.value;try{var x=v();return!i(y,x)}catch{return!0}}function p(y,v){return v()}var b=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?p:h;return Vh.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:b,Vh}var zx;function tF(){return zx||(zx=1,Wh.exports=eF()),Wh.exports}var nF=tF();const aF=rw.useInsertionEffect,iF=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",rF=iF?j.useLayoutEffect:j.useEffect,sF=aF||rF,X0=e=>{const n=j.useRef([e,(...i)=>n[0](...i)]).current;return sF(()=>{n[0]=e}),n[1]},oF="popstate",bm="pushState",xm="replaceState",lF="hashchange",Ux=[oF,bm,xm,lF],cF=e=>{for(const n of Ux)addEventListener(n,e);return()=>{for(const n of Ux)removeEventListener(n,e)}},Z0=(e,n)=>nF.useSyncExternalStore(cF,e,n),dF=()=>location.search,uF=({ssrSearch:e=""}={})=>Z0(dF,()=>e),Hx=()=>location.pathname,hF=({ssrPath:e}={})=>Z0(Hx,e?()=>e:Hx),fF=(e,{replace:n=!1,state:i=null}={})=>history[n?xm:bm](i,"",e),mF=(e={})=>[hF(e),fF],qx=Symbol.for("wouter_v3");if(typeof history<"u"&&typeof window[qx]>"u"){for(const e of[bm,xm]){const n=history[e];history[e]=function(){const i=n.apply(this,arguments),r=new Event(e);return r.arguments=arguments,dispatchEvent(r),i}}Object.defineProperty(window,qx,{value:!0})}const pF=(e,n)=>n.toLowerCase().indexOf(e.toLowerCase())?"~"+n:n.slice(e.length)||"/",eA=(e="")=>e==="/"?"":e,gF=(e,n)=>e[0]==="~"?e.slice(1):eA(n)+e,yF=(e="",n)=>pF(Wx(eA(e)),Wx(n)),Wx=e=>{try{return decodeURI(e)}catch{return e}},tA={hook:mF,searchHook:uF,parser:Z6,base:"",ssrPath:void 0,ssrSearch:void 0,ssrContext:void 0,hrefs:e=>e},nA=j.createContext(tA),Xo=()=>j.useContext(nA),aA={},iA=j.createContext(aA),vm=()=>j.useContext(iA),od=e=>{const[n,i]=e.hook(e);return[yF(e.base,n),X0((r,l)=>i(gF(r,e.base),l))]},wm=()=>od(Xo()),rA=(e,n,i,r)=>{const{pattern:l,keys:d}=n instanceof RegExp?{keys:!1,pattern:n}:e(n||"*",r),u=l.exec(i)||[],[h,...m]=u;return h!==void 0?[!0,(()=>{const p=d!==!1?Object.fromEntries(d.map((y,v)=>[y,m[v]])):u.groups;let b={...m};return p&&Object.assign(b,p),b})(),...r?[h]:[]]:[!1,null]},bF=({children:e,...n})=>{const i=Xo(),r=n.hook?tA:i;let l=r;const[d,u]=n.ssrPath?.split("?")??[];u&&(n.ssrSearch=u,n.ssrPath=d),n.hrefs=n.hrefs??n.hook?.hrefs;let h=j.useRef({}),m=h.current,p=m;for(let b in r){const y=b==="base"?r[b]+(n[b]||""):n[b]||r[b];m===p&&y!==p[b]&&(h.current=p={...p}),p[b]=y,(y!==r[b]||y!==l[b])&&(l=p)}return j.createElement(nA.Provider,{value:l,children:e})},Vx=({children:e,component:n},i)=>n?j.createElement(n,{params:i}):typeof e=="function"?e(i):e,xF=e=>{let n=j.useRef(aA);const i=n.current;return n.current=Object.keys(e).length!==Object.keys(i).length||Object.entries(e).some(([r,l])=>l!==i[r])?e:i},mt=({path:e,nest:n,match:i,...r})=>{const l=Xo(),[d]=od(l),[u,h,m]=i??rA(l.parser,e,d,n),p=xF({...vm(),...h});if(!u)return null;const b=m?j.createElement(bF,{base:m},Vx(r,p)):Vx(r,p);return j.createElement(iA.Provider,{value:p,children:b})}
57,pe=j.forwardRef((e,n)=>{const i=Xo(),[r,l]=od(i),{to:d="",href:u=d,onClick:h,asChild:m,children:p,className:b,replace:y,state:v,...x}=e,S=X0(O=>{O.ctrlKey||O.metaKey||O.altKey||O.shiftKey||O.button!==0||(h?.(O),O.defaultPrevented||(O.preventDefault(),l(u,e)))}),E=i.hrefs(u[0]==="~"?u.slice(1):i.base+u,i);return m&&j.isValidElement(p)?j.cloneElement(p,{onClick:S,href:E}):j.createElement("a",{...x,onClick:S,href:E,className:b?.call?b(r===u):b,children:p,ref:n})}),Uf=e=>Array.isArray(e)?e.flatMap(n=>Uf(n&&n.type===j.Fragment?n.props.children:n)):[e],vF=({children:e,location:n})=>{const i=Xo(),[r]=od(i);typeof window<"u"&&(window.__WOUTER_ROUTES__||(window.__WOUTER_ROUTES__=[]),Uf(e).forEach(d=>{if(j.isValidElement(d)&&d.props.path){const u=d.props.path;window.__WOUTER_ROUTES__.includes(u)||window.__WOUTER_ROUTES__.push(u)}}));for(const l of Uf(e)){let d=0;if(j.isValidElement(l)&&(d=rA(i.parser,l.props.path,n||r,l.props.nest))[0])return j.cloneElement(l,{match:d})}return null};/**
58 * @license lucide-react v0.453.0 - ISC
59 *
60 * This source code is licensed under the ISC license.
61 * See the LICENSE file in the root directory of this source tree.
62 */const wF=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),sA=(...e)=>e.filter((n,i,r)=>!!n&&r.indexOf(n)===i).join(" ");/**
63 * @license lucide-react v0.453.0 - ISC
64 *
65 * This source code is licensed under the ISC license.
66 * See the LICENSE file in the root directory of this source tree.
67 */var AF={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
68 * @license lucide-react v0.453.0 - ISC
69 *
70 * This source code is licensed under the ISC license.
71 * See the LICENSE file in the root directory of this source tree.
72 */const kF=j.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:i=2,absoluteStrokeWidth:r,className:l="",children:d,iconNode:u,...h},m)=>j.createElement("svg",{ref:m,...AF,width:n,height:n,stroke:e,strokeWidth:r?Number(i)*24/Number(n):i,className:sA("lucide",l),...h},[...u.map(([p,b])=>j.createElement(p,b)),...Array.isArray(d)?d:[d]]));/**
73 * @license lucide-react v0.453.0 - ISC
74 *
75 * This source code is licensed under the ISC license.
76 * See the LICENSE file in the root directory of this source tree.
77 */const ld=(e,n)=>{const i=j.forwardRef(({className:r,...l},d)=>j.createElement(kF,{ref:d,iconNode:n,className:sA(`lucide-${wF(e)}`,r),...l}));return i.displayName=`${e}`,i};/**
78 * @license lucide-react v0.453.0 - ISC
79 *
80 * This source code is licensed under the ISC license.
81 * See the LICENSE file in the root directory of this source tree.
82 */const SF=ld("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/**
83 * @license lucide-react v0.453.0 - ISC
84 *
85 * This source code is licensed under the ISC license.
86 * See the LICENSE file in the root directory of this source tree.
87 */const TF=ld("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/**
88 * @license lucide-react v0.453.0 - ISC
89 *
90 * This source code is licensed under the ISC license.
91 * See the LICENSE file in the root directory of this source tree.
92 */const CF=ld("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
93 * @license lucide-react v0.453.0 - ISC
94 *
95 * This source code is licensed under the ISC license.
96 * See the LICENSE file in the root directory of this source tree.
97 */const jF=ld("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),FF="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-logo-sharp_ed9d29ec.png",EF=()=>{const n=Math.round(232.18045112781954);return o.jsx("img",{"data-loc":"client/src/components/Layout.tsx:19",src:FF,alt:"Akoroko — African Screen Intelligence",style:{height:"80px",width:`${n}px`,display:"block",filter:"drop-shadow(0px 1px 2px rgba(0,0,0,0.35))"}})},oA="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-premium-icon_a22037a5.png",en="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-premium-icon-white_c1afd010.png",ei="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-premium-icon-gold_43be0c96.png",_t={bg
97:"#F5F5F5",bgDark:"#1a1a19",ink:"#1a1a19",inkMid:"#555555",teal:"#0A5C6B",tealLight:"#0D7A8A",border:"#DEDEDE",borderDark:"#333333"},Gx=[{label:"Home",href:"/"},{label:"About",href:"/about"},{label:"Contact",href:"/contact"},{label:"Account",href:"/account"}];function Wt({children:e}){const[n,i]=j.useState(!1),[r]=wm();return o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:59",className:"min-h-screen flex flex-col",style:{backgroundColor:_t.bg},children:[o.jsxs("header",{"data-loc":"client/src/components/Layout.tsx:61",className:"sticky top-0 z-50 border-b",style:{backgroundColor:"#FFFFFF",borderColor:_t.border,boxShadow:"0 1px 3px rgba(0,0,0,0.06)",borderTop:`3px solid ${_t.teal}`},children:[o.jsx("div",{"data-loc":"client/src/components/Layout.tsx:70",className:"container",children:o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:71",className:"flex items-center justify-between h-24 relative",children:[o.jsx(pe,{"data-loc":"client/src/components/Layout.tsx:73",href:"/",className:"flex items-center group flex-shrink-0",children:o.jsx(EF,{"data-loc":"client/src/components/Layout.tsx:74"})}),o.jsxs("nav",{"data-loc":"client/src/components/Layout.tsx:78",className:"hidden md:flex items-center gap-5 flex-shrink-0",children:[Gx.map(l=>o.jsx(pe,{"data-loc":"client/src/components/Layout.tsx:80",href:l.href,className:"transition-colors duration-150",style:{color:r===l.href?_t.teal:_t.inkMid,borderBottom:r===l.href?`2px solid ${_t.teal}`:"2px solid transparent",paddingBottom:"2px",fontSize:"12px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",fontFamily:"'IBM Plex Mono', monospace"},children:l.label},l.href)),o.jsx(pe,{"data-loc":"client/src/components/Layout.tsx:98",href:"/subscribe",className:"transition-all duration-150 flex items-center hover:opacity-90",style:{backgroundColor:_t.teal,color:"#FFFFFF",letterSpacing:"0.08em",fontSize:"12px",fontWeight:600,fontFamily:"'IBM Plex Mono', monospace",height:"36px",padding:"0 15px"},children:"SUBSCRIBE"})]}),o.jsx("button",{"data-loc":"client/src/components/Layout.tsx:117",className:"md:hidden p-2",onClick:()=>i(!n),style:{color:_t.ink},children:n?o.jsx(jF,{"data-loc":"client/src/components/Layout.tsx:122",size:20}):o.jsx(SF,{"data-loc":"client/src/components/Layout.tsx:122",size:20})})]})}),n&&o.jsx("div",{"data-loc":"client/src/components/Layout.tsx:129",className:"md:hidden border-t",style:{backgroundColor:_t.bg,borderColor:_t.border},children:o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:133",className:"container py-4 flex flex-col gap-4",children:[Gx.map(l=>o.jsx(pe,{"data-loc":"client/src/components/Layout.tsx:135",href:l.href,className:"category-tag py-2",style:{color:r===l.href?_t.teal:_t.ink},onClick:()=>i(!1),children:l.label},l.href)),o.jsx(pe,{"data-loc":"client/src/components/Layout.tsx:145",href:"/subscribe",className:"font-mono-data text-xs font-medium px-4 py-3 text-center mt-2 flex items-center justify-center",style:{backgroundColor:_t.teal,color:"#FFFFFF",letterSpacing:"0.08em"},onClick:()=>i(!1),children:"SUBSCRIBE TO AKOROKO PREMIUM"})]})})]}),o.jsx("main",{"data-loc":"client/src/components/Layout.tsx:159",className:"flex-1",children:e}),o.jsxs("footer",{"data-loc":"client/src/components/Layout.tsx:164",className:"border-t mt-16",style:{backgroundColor:_t.bgDark,borderColor:_t.borderDark},children:[o.jsx("div",{"data-loc":"client/src/components/Layout.tsx:169",className:"container py-10",children:o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:170",className:"grid grid-cols-1 md:grid-cols-4 gap-8",children:[o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:172",className:"md:col-span-1",children:[o.jsx("div",{"data-loc":"client/src/components/Layout.tsx:173",className:"mb-3",style:{color:"#FFFFFF",fontFamily:"'IBM Plex Mono', monospace",fontSize:"14px",fontWeight:600,letterSpacing:"0.12em"},children:"AKOROKO.COM"}),o.jsx("p",{"data-loc":"client/src/components/Layout.tsx:179",className:"font-body text-sm leading-relaxed",style:{color:"#999999"},children:"African Screen Intelligence. Verified data and reporting on African film, TV, and digital screen sectors."}
97),o.jsx("a",{"data-loc":"client/src/components/Layout.tsx:182",href:"https://africanfilmpress.com",target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs mt-3 block hover:opacity-80 transition-opacity",style:{color:_t.tealLight},children:"Part of the African Film Press Alliance"})]}),o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:188",children:[o.jsx("h4",{"data-loc":"client/src/components/Layout.tsx:189",className:"category-tag mb-4",style:{color:_t.tealLight},children:"Navigate"}),o.jsx("ul",{"data-loc":"client/src/components/Layout.tsx:190",className:"space-y-2",children:[{label:"Home",href:"/"},{label:"About",href:"/about"},{label:"Ask Akoroko Premium",href:"/ask"},{label:"Contact",href:"/contact"},{label:"Account",href:"/account"}].map(l=>o.jsx("li",{"data-loc":"client/src/components/Layout.tsx:198",children:o.jsx(pe,{"data-loc":"client/src/components/Layout.tsx:199",href:l.href,className:"font-body text-sm transition-colors hover:text-white",style:{color:"#999999"},children:l.label})},l.href))})]}),o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:208",children:[o.jsx("h4",{"data-loc":"client/src/components/Layout.tsx:209",className:"category-tag mb-4",style:{color:_t.tealLight},children:"Subscribe"}),o.jsx("ul",{"data-loc":"client/src/components/Layout.tsx:210",className:"space-y-2",children:[{label:"Akoroko Premium",href:"/subscribe"},{label:"Everything in Premium",href:"/premium"},{label:"Institutional Access",href:"/institutional"}].map(l=>o.jsx("li",{"data-loc":"client/src/components/Layout.tsx:216",children:o.jsx(pe,{"data-loc":"client/src/components/Layout.tsx:217",href:l.href,className:"font-body text-sm transition-colors hover:text-white",style:{color:"#999999"},children:l.label})},l.href))})]}),o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:226",children:[o.jsx("h4",{"data-loc":"client/src/components/Layout.tsx:227",className:"category-tag mb-4",style:{color:_t.tealLight},children:"AFP Alliance"}),o.jsx("ul",{"data-loc":"client/src/components/Layout.tsx:228",className:"space-y-2",children:[{label:"African Film Press",href:"https://africanfilmpress.com"},{label:"Sinema Focus",href:"https://sinemafocus.com"},{label:"What Kept Me Up",href:"https://whatkeptmeup.com"}].map(l=>o.jsx("li",{"data-loc":"client/src/components/Layout.tsx:234",children:o.jsx("a",{"data-loc":"client/src/components/Layout.tsx:235",href:l.href,target:l.href.startsWith("http")?"_blank":void 0,rel:"noopener noreferrer",className:"font-body text-sm transition-colors hover:text-white",style:{color:"#999999"},children:l.label})},l.label))}),o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:241",className:"mt-6 flex gap-4",children:[o.jsx("a",{"data-loc":"client/src/components/Layout.tsx:242",href:"https://x.com/akorokoafrica",target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs hover:text-white transition-colors",style:{color:"#999999"},children:"X / Twitter"}),o.jsx("a",{"data-loc":"client/src/components/Layout.tsx:243",href:"https://www.instagram.com/akorokofilm/",target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs hover:text-white transition-colors",style:{color:"#999999"},children:"Instagram"})]})]})]})}),o.jsx("div",{"data-loc":"client/src/components/Layout.tsx:250",className:"border-t",style:{borderColor:_t.borderDark},children:o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:251",className:"container py-4 flex flex-col sm:flex-row items-center justify-between gap-2",children:[o.jsx("p",{"data-loc":"client/src/components/Layout.tsx:252",className:"font-mono-data text-xs",style:{color:"#666666"},children:"© 2026 Akoroko LLC. All rights reserved."}),o.jsxs("div",{"data-loc":"client/src/components/Layout.tsx:255",className:"flex gap-4",children:[o.jsx("a",{"data-loc":"client/src/components/Layout.tsx:256",href:"/privacy",className:"font-mono-data text-xs hover:text-white transition-colors",style:{color:"#666666"},children:"Privacy Policy"}),o.jsx("a",{"data-loc":"client/src/components/Layout.tsx:257",href:"/terms",className:"font-mono-data text-xs hover:text-white transition-colors",style:{color:"#666666"},children:"Terms of Service"})]})]})})]})]})}function Kx(){return o.jsx(Wt,{"data-loc":"client/src/pages/NotFound.tsx:10",children:o.jsx("section",{"data-loc":"client/src/pages/NotFound.tsx:11",className:"border-b",style:{backgroundColor:"#1a1a19",borderColor:"#333333"},children:o.jsx("div",{"data-loc":"client/src/pages/NotFound.tsx:15",className:"container py-14 md:py-20",children:o.jsxs("div",{"data-loc":"client/src/pages/NotFound.tsx:16",className:"max-w-2xl",children:[o.jsx("span",{"data-loc":"client/src/pages/NotFound.tsx:17",className:"font-mono-data text-xs",style:{color:"#0D6E6E",letterSpacing:"0.12em"},children:"404"}),o.jsx("div",{"data-loc":"client/src/pages/NotFound.tsx:23",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h1",{"data-loc":"client/src/pages/NotFound.tsx:24",className:"font-display text-4xl md:text-5xl font-bold leading-tight mb-4",style:{color:"#F5F5F5"},children:"Page Not Found"}),o.jsx("p",{"data-loc":"client/src/pages/NotFound.tsx:30",className:"font-body text-lg leading-relaxed mb-8",style:{color:"#888888"},children:"The page you are looking for does not exist, has been moved, or the URL may have changed."}),o.jsxs("div",{"data-loc":"client/src/pages/NotFound.tsx:33",className:"flex flex-wrap gap-4",children:[o.jsx(pe,{"data-loc":"client/src/pages/NotFound.tsx:34",href:"/",className:"font-mono-data text-xs font-medium px-6 py-3 transition-all duration-150 hover:opacity-90",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:"← RETURN TO THE LATEST"}),o.jsx(pe,{"data-loc":"client/src/pages/NotFound.tsx:41",href:"/intelligence",className:"font-mono-data text-xs font-medium px-6 py-3 border transition-all duration-150 hover:opacity-80",style:{borderColor:"#555555",color:"#888888",letterSpacing:"0.08em"},children:"BROWSE INTELLIGENCE"})]})]})})})})}class IF extends j.Component{constructor(n){super(n),this.state={hasError:!1,error:null}}static getDerivedStateFromError(n){return{hasError:!0,error:n}}render(){return this.state.hasError?o.jsx("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:27",className:"flex items-center justify-center min-h-screen p-8 bg-background",children:o.jsxs("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:28",className:"flex flex-col items-center w-full max-w-2xl p-8",children:[o.jsx(CF,{"data-loc":"client/src/components/ErrorBoundary.tsx:29",size:48,className:"text-destructive mb-6 flex-shrink-0"}),o.jsx("h2",{"data-loc":"client/src/components/ErrorBoundary.tsx:34",className:"text-xl mb-4",children:"An unexpected error occurred."}),o.jsx("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:36",className:"p-4 w-full rounded bg-muted overflow-auto mb-6",children:o.jsx("pre",{"data-loc":"client/src/components/ErrorBoundary.tsx:37",className:"text-sm text-muted-foreground whitespace-break-spaces",children:this.state.error?.stack})}),o.jsxs("button",{"data-loc":"client/src/components/ErrorBoundary.tsx:42",onClick:()=>window.location.reload(),className:J6("flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground","hover:opacity-90 cursor-pointer"),children:[o.jsx(TF,{"data-loc":"client/src/components/ErrorBoundary.tsx:50",size:16}),"Reload Page"]})]})}):this.props.children}}const NF=j.createContext(void 0);function MF({children:e,defaultTheme:n="light",switchable:i=!1}){const[r,l]=j.useState(()=>i&&localStorage.getItem("theme")||n);j.useEffect(()=>{const u=document.documentElement;
97r==="dark"?u.classList.add("dark"):u.classList.remove("dark"),i&&localStorage.setItem("theme",r)},[r,i]);const d=i?()=>{l(u=>u==="light"?"dark":"light")}:void 0;return o.jsx(NF.Provider,{"data-loc":"client/src/contexts/ThemeContext.tsx:52",value:{theme:r,toggleTheme:d,switchable:i},children:e})}const Zo=()=>{const e="https://manus.im",n="mmYv4XN4T7V9eipMNWE78x",i=`${window.location.origin}/api/oauth/callback`,r=btoa(i),l=new URL(`${e}/app-auth`);return l.searchParams.set("appId",n),l.searchParams.set("redirectUri",i),l.searchParams.set("state",r),l.searchParams.set("type","signIn"),l.toString()};function ua(e){const{redirectOnUnauthenticated:n=!1,redirectPath:i=Zo()}={},r=Qe.useUtils(),l=Qe.auth.me.useQuery(void 0,{retry:!1,refetchOnWindowFocus:!1}),d=Qe.auth.logout.useMutation({onSuccess:()=>{r.auth.me.setData(void 0,null)}}),u=j.useCallback(async()=>{try{await d.mutateAsync()}catch(m){if(m instanceof ws&&m.data?.code==="UNAUTHORIZED")return;throw m}finally{r.auth.me.setData(void 0,null),await r.auth.me.invalidate()}},[d,r]),h=j.useMemo(()=>(localStorage.setItem("manus-runtime-user-info",JSON.stringify(l.data)),{user:l.data??null,loading:l.isLoading||d.isPending,error:l.error??d.error??null,isAuthenticated:!!l.data}),[l.data,l.error,l.isLoading,d.error,d.isPending]);return j.useEffect(()=>{n&&(l.isLoading||d.isPending||h.user||typeof window>"u"||window.location.pathname!==i&&(window.location.href=i))},[n,i,d.isPending,l.isLoading,h.user]),{...h,refresh:()=>l.refetch(),logout:u}}const PF=["Exhibition","Research","Policy","Data","Industry","Profile"],At="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x",ia=[{slug:"afp-dispatch-week-sep14-20-2026",title:"AFP Dispatch — Week of September 14–20, 2026",category:"Industry",date:"September 20, 2026",summary:"Eight items from across African and diasporic screen media.",author:"Tambay A. Obenson",isPremium:!1,readTime:"6 min read",headerImage:"https://akoroko.com/manus-storage/afp-dispatch-week-sep14-20-2026_6ca8c39a.webp",content:`1. Kaelo Iyizoba's "The Spectacular Death of Prisca" Receives TIFF Honourable Mention: Nigerian filmmaker Kaelo Iyizoba's "The Spectacular Death of Prisca" received an Honourable Mention in the Best International Short Film category at the 51st Toronto International Film Festival, which announced its 2026 award winners on September 20. The film, a love letter to 1980s Nollywood following a mother's fever-dream quest to rescue her daughter on her wedding day, was the only African title named among TIFF's award recipients and runners-up this year. The Short Cuts jury praised the film's mix of melodrama, action, and comedy, as well as its filmmaking precision. Elia Kalogianni's "MAMMALIA" (Greece-Netherlands) won the Best International Short Film prize. TIFF's 2026 edition presented 294 films from 72 countries over 11 days.
98
992. Pathé Touch Afrique Sets Francophone Africa Release for "The Legend of the Vagabond Queen of Lagos": Pathé Touch Afrique has set a September 25 theatrical release for "The Legend of the Vagabond Queen of Lagos" across francophone African countries, with specific countries, cities, and cinemas still to be confirmed. Directed by Nigeria's Agbajowo Collective, the 101-minute feature follows Jawu, a young mother in a Lagos waterfront community who becomes involved in a fight against forced eviction and redevelopment. It premiered in the Centrepiece section of TIFF 2024. Rushlake Media handles international sales.
100
1013. Durban FilmMart Adds Animation, Documentary Impact, and Natural-World Storytelling Programmes: The Durban FilmMart Institute has added three new programmes to the 17th Durban FilmMart, running October 9–12 in Durban. An animation programme, developed with the Cape Town International Animation Festival, covers financing, commissioning, distribution, and IP, with participants including Triggerfish, Kugali Media, SABC, and MIFA at Annecy. A new Impact Day, developed with Documentary Africa, Doc Society, Perspective Fund, and Climate Story Labs Africa, examines audience engagement, distribution, and financing for impact-driven documentaries, using case studies including "Children of Honey" and "Murder in Paris." A third programme, developed with the Nature, Environment and Wildlife Filmmakers organisation (NEWF), focuses on natural-world storytelling, wildlife cinematography, and conservation, including an interactive exhibition with VR work and the short
101-film programme "The Wild Side."
102
1034. Egypt Selects "The Stories" as Its 2027 Oscar Submission: Egypt's Cinema Professions Syndicate committee, chaired by director Massad Fouda, has selected Abu Bakr Shawky's "The Stories" ("القِصَص") to represent Egypt in the Best International Feature Film category at the 99th Academy Awards, announced September 18. The film topped both rounds of the committee's vote, receiving 22 votes in the first round and 14 in the final round, ahead of three other shortlisted films: Noha Adel's "Dokhoul Al-Rabee Yad'hak," Mohamed Siam's "Colonia," and Mohamed Rashad's "Al-Musta'mara." It is the second time Egypt has submitted a film directed by Shawky, following his 2018 submission "Yomeddine." "The Stories" is a five-part anthology drawn from Shawky's own family history, following the decades-long pen-pal relationship between his Egyptian father and Austrian mother, across Egypt's political history from the late 1960s through the 1980s; it stars Nelly Karim, Amir El-Masry, Ahmed Kamal, and Valerie Pachner, and premiered at the Tallinn Black Nights Film Festival in November 2025. The 99th Academy Awards ceremony is scheduled for March 14, 2027. Egypt joins Morocco ("La Más Dulce"), Chad ("Soumsoum, the Night of the Stars"), and Cameroon ("Mabanda") among African countries that have announced their 99th Academy Awards submissions so far this cycle.
104
1055. Alain Gomis's "Dao" Now Available on VOD: "Dao," French-Senegalese filmmaker Alain Gomis's 2026 docudrama, is now available across multiple French VOD platforms, including Canal VOD, Arte, Amazon Prime Video, and iTunes, per producer SRAB Films. A France-Senegal-Guinea-Bissau co-production, the 185-minute film blends professional and non-professional actors — including members of Gomis's own family — around two parallel ceremonies, a wedding in France and a commemorative ritual in Guinea-Bissau, exploring memory and heritage between African immigrants in France and their countries of origin. It premiered in competition at the 76th Berlinale, where it was nominated for the Golden Bear; Gomis previously won the festival's Silver Bear for "Félicité" in 2017.
106
1076. Nollywood Icon Olu Jacobs Dies at 84: Nigerian actor Oludotun Baiyewu Jacobs, known as Olu Jacobs, died September 16 at 84. His son Olusoji Jacobs announced the news on Instagram: "With gratitude to God for a life well lived and fought, that we announce the passing of our dear husband, father, grandfather and uncle, the lion of Lufodo, Oludotun Baiyewu Jacobs. 11/04/1942 - 16/09/2026." Born in Kano in 1942, Jacobs trained at the Royal Academy of Dramatic Art in London and worked in British theatre and television before returning to Nigeria, where he became a pioneer of the modern Nollywood industry alongside names like Pete Edochie. With his wife, actress Joke Silva, he co-founded the Lufodo Group, a media company encompassing film production, distribution, and the Lufodo Academy of Performing Arts. He is survived by Silva, their children, and their grandchildren.
108
1097. Apple TV Launches in Kenya, Nigeria, and Across Sub-Saharan Africa: Apple announced on September 15 an expansion of Apple TV to 59 new countries as part of its iCloud+ subscription, bringing the streaming service for the first time to more than 40 African markets, including Kenya, Nigeria, Tanzania, Rwanda, Ghana, and Uganda — outside South Africa, where Apple TV has been available separately for years. Instead of launching as a standalone service, Apple TV is now bundled into paid iCloud+ tiers: in Kenya, the entry-level 50GB plan starts at $0.99 a month; in Nigeria, it's about the same. All tiers include Apple TV and Apple Arcade and can be shared with up to five family members. The global rollout, covering 170 countries total, is set to complete by the end of September.
110
1118. Damilola Orimogunje's "Dear Ajayi" Opens in Nigerian Cinemas Days After Venice World Premiere: Damilola Orimogunje's "Dear Ajayi" began a limited cinema release in Nigeria on September 18, days after the 83rd Venice International Film Festival concluded, where the film had its world premiere in the Giornate degli Autori parallel section and won the Giornate degli Autori Premio Enrico Fulchignoni and the CICT-UNESCO Enrico Fulchignoni Prize, awarded alongside the Fellini Medal. Set in 1990s southwestern Nigeria, the film follows sisters Ade (Bimbo Akintola) and Titi Ajayi (Tosin Adeyemi), whose old resentments resurface when their ailing mother comes to live with them. The cast also includes Lanre Hassan, William Benson, and Uzoamaka Power. The theatrical release expands wider from November 13, distributed by FilmOne.
112 
113
114
115That's the week.
116
117Enjoy what's left of your weekend wherever you are (assuming there's anything left), and have a productive week ahead!`},{slug:"africa-cinematic-statecraft-lumiere-summit-sep9-2026",title:"Africa and the New Cinematic Statecraft of the Lumière Summit",category:"Policy",date:"September 9, 2026",summary:"Nigeria and Morocco took formal roles at the first Lumière Summit as African participants joined a broader discussion about film policy, financing, access and institutional influence.",author:"Tambay A. Obenson",isPremium:!0,readTime:"8 min read",headerImage:"https://akoroko.com/manus-storage/lumiere-summit-sep9-2026_dd1232b0.jpg",featuredImageFull:!0,content:`Nigeria and Morocco took formal roles in initiatives launched at the first Lumière Summit on 7 September 2026, while film professionals and public officials from several African countries participated in the one-day gathering in Saint-Paul-de-Vence, a town in southern France near Nice.
118
119I wasn’t there in person for the event, but a few professional colleagues were.
120
121Co-chaired by French President Emmanuel Macron and South Korean President Lee Jae-myung, the Summit brought more than 200 filmmakers, executives, public officials and cultural-sector leaders representing 60 countries, regions and international organizations to the Fondation Maeght, a modern-art museum in Saint-Paul-de-Vence. The meeting addressed film, television, animation, video games, artificial intelligence, distribution, exhibition, financing and audience development.
122
123Macron announced Nigeria, South Korea and France as the initiating countries for a new global partnership on image education. He said the initiative, being developed with UNESCO and other partners, is intended to create educational programs that can be adapted across countries and age groups, covering how images are produced, manipulated and interpreted as well as how audiences encounter film, television and other audiovisual work. The "Lumière Declaration" separately calls for image literacy to become a basic form of literacy beginning in early schooling.
124
125Morocco is one of the partner countries in IRIS, the International Resilience Initiative for Independent Screens, another initiative created at the Summit. The French presidency listed Morocco alongside South Korea, Portugal and Greece in the initiative, which is intended to support independent cinemas, distributors and networks responsible for circulating films. France says IRIS will combine financing, professional expertise and international cooperation, although detailed funding levels, application procedures and country eligibility haven't yet been published.
126
127Morocco's state film authority, the Centre Cinématographique Marocain (CCM), separately confirmed that it joined the newly created Alliance Lumière as a founding member. The Alliance is a network of national public bodies responsible for film and audiovisual policy, intended to facilitate exchanges of expertise, joint initiatives and coordination on international issues. French President Macron said 54 agencies have joined the network and that members will meet annually at the Cannes Film Festival and at a separate congress hosted by a member state. A complete list of the 54 agencies hasn't yet been published.
128
129The Summit's official program specifically identified Sub-Saharan Africa, alongside South Asia, in its discussion of audience access, stating that reaching audiences in these regions still depends on physical, broadcast and digital infrastructure capable of carrying films and other screen work.
130
131African participants in the programmed sessions included Mo Abudu, founder and CEO of Nigerian media company EbonyLife, and Mehret Mandefro, co-founder of Realness Institute and managing director of the African Film and Media Arts Collective (AFMAC), representing Ethiopia. They joined a session exploring routes into professional leadership for younger generations.
132
133Françoise Remarck, Côte d'Ivoire's Minister of Culture and Francophonie, joined Mauritanian filmmaker Abderrahmane Sissako for a session on creation and democracy. Côte d'Ivoire's Ministry of Culture independently confirmed that Remarck led the country's delegation to Saint-Paul-de-Vence. Moroccan filmmaker and producer Nabil Ayouch participated in a separate discussion on artistic freedom.
134
135Magdalene Reddy, director of the Durban FilmMart Institute, the South African organization behind Durban FilmMart, joined festival leaders from Cannes, Berlin, Busan, Toronto and other international institutions in a session on the future role of film festivals.
136
137The new IRIS initiative has already been connected to independent-cinema development in two additional African markets. In a statement distributed on 8 September 2026, the International Confederation of Arthouse Cinemas (CICAE) welcomed IRIS and cited participants in its recently completed Arthouse Cinema Training who are building new arthouse cinemas in Rwanda and Côte d'Ivoire. More on this initiative in a future Akoroko Premium dispatch.
138
139Broader context: South Korea's role as Summit co-chair comes as it expands its institutional engagement with African countries. The first Korea–Africa Summit, held in South Korea on 4 June 2024, produced a joint declaration calling for expanded exchanges in culture and the arts alongside economic, technological and development cooperation. A follow-up Korea–Africa Foreign Ministers' Meeting in Seoul on 1 June 2026 reiterated those commitments and called for further exchanges in culture, arts, education, sports and tourism.
140
141Screen sector activity is certainly part of that relationship. South Korea provided financing for Kenya's Konza Digital Media City, a planned media and creative-production hub at Konza Technopolis that includes film and broadcasting studios, post-production, animation, gaming and training facilities. Konza's development authority records a US$284.1 million financing agreement with South Korea, signed in June 2024.
142
143South Korea's Ministry of Culture, Sports and Tourism is also funding “Cinelab: Igniting Digital Innovation and Policy Reform in the Film Industry in Cameroon,” under which Cameroon's government and UNESCO worked on revisions to the country's legal structure for film and audiovisual activity in August 2026.
144
145South Korea’s recent engagement has also extended to filmmaker development. In May 2026, Seoul-based production company Flix Oven, working with production and representation company Continental Entertainment, launched an African–Korean filmmaker residency with Nigerian director C.J. Obasi as its first fellow. Obasi is scheduled to spend a month in Seoul developing a new feature connecting African and Korean cultures, with Morgan Freeman and Lori McCreary attached as executive producers through their U.S. company Revelations Entertainment.
146
147Separately, France and South Korea used the Lumière Summit to launch the €1 billion Lumière Partnership for film, television and other moving-image businesses. France says it will commit €500 million through public investment bank Bpifrance between 2027 and 2031, with South Korea committing an equivalent amount. The partnership is open to additional states. No mechanism has yet been published to provide direct access to that financing for specifically African producers or companies.
148
149The Summit concluded with the "Lumière Declaration," adopted by more than 120 signatories, and additional commitments covering artificial intelligence, image education, gender equality, environmental practices and working conditions.
150
151It’s too early to tell which of the Summit’s commitments will develop into working programs, funding mechanisms, or lasting institutional relationships, particularly across African markets. Still, I’ll certainly be keeping an eye on what follows and assess accordingly.
152
153For now, let's call it "cinematic statecraft." Governments using film policy, financing, institutions, education, exhibition, and international partnerships as instruments of geopolitical and cultural influence.`},{slug:"microdramas-training-expect-stories-sep8-2026",title:"What Are Microdramas Training Us to Expect From Stories?",category:"Industry",date:"September 8, 2026",summary:"A critical inquiry into what vertical microdramas, algorithmic distribution and short-form viewing may be training audiences to expect from stories.",author:"Tambay A. Obenson",isPremium:!0,readTime:"7 min read",headerImage:"https://akoroko.com/manus-storage/microdramas-story-expectations-sep8-2026_02e22e64.jpg",featuredImageFull:!0,content:`I came across the September 2 report that David Oyelowo and Nate Parker’s Mansa Studios is releasing three original vertical series — “My Twin Sister Stole My Man,” “I Married the King of the Streets,” and “The Love Contract” — on TikTok Minis and its own app. The announcement gave me a reason to return to a subject I’ve been thinking about intermittently for a while.
154
155I wrote about vertical microdramas a year ago, mostly from the business side: whether the model was genuinely new, whether it could work in African markets, and what would need to be in place for it to become commercially viable across the continent. This time, I’m less interested in whether the model can work commercially than in what its seeming growing popularity might mean for how we watch films and series — let's just say stories.
156
157To be clear, I’m not singling out Oyelowo, Parker or Mansa here. Reading their announcement simply brought the subject back to mind today. And my first reaction was basically: I hope this is a passing trend.
158
159I don’t mean that in the sense that these things should not exist. There's probably room for all of it. People can watch a forty-five-second serialized drama on their phones and still go to the cinema or sit still for a three-hour film. I also understand why companies are getting into this. There's money in it, and there's apparently an audience. Mansa isn't experimenting in a vacuum. Microdramas seem to have become a business category, with production companies, apps, advertising, and audiences around the format.
160
161But is the demand real and sustainable?
162
163We often hear that creative enterprises are simply “giving audiences what they want.” I’m not convinced it's that simple. Audiences choose from what's financed, distributed, marketed, surfaced, priced, and made convenient. On TikTok and similar platforms, they're also choosing from what an algorithm repeatedly places in front of them.
164
165So when somebody watches twenty short clips in a row, can we really translate that data into: people inherently prefer forty-five-second storytelling? I don't know.
166
167The system gives them forty-five-second units that are effortless to consume. It watches what they respond to. It gives them more. Producers see the numbers. Financiers see the numbers. More of that material gets funded, which means more of it is available, which produces more viewing data. Audience behavior and supply keep shaping each other.
168
169More broadly, but linked, there has been so much discussion about declining reading habits, fractured attention, second-screen viewing, and how much time we spend moving rapidly from one piece of media to another. I don’t think any sweeping claim that “our attention spans are getting shorter” is as scientifically settled as people often make it sound. Attention depends on the person, the activity, and the environment. But research suggests that heavy short-form video use is associated with sustained attention problems, memory, and cognitive fatigue.
170
171So I don’t think either side gets to declare victory here. We can't simply say TikTok videos are destroying everybody’s ability to concentrate. But platforms also can't say people naturally have short attention spans and therefore they are merely satisfying demand.
172
173Both sides are part of the same feedback loop.
174
175And maybe “dumbing down the audience” is too crude a way of framing what worries me. I think what I’m actually worried about is the erosion of the conditions needed for the kind of work that demands just a little more from the audience.
176
177Reading a long novel is a practice that becomes a habit. So is following a film with a layered, more complex storyline, sitting with ambiguity, or watching something without checking another screen every thirty seconds. None of these disappears because someone watches “My Twin Sister Stole My Man.” But if fewer parts of everyday cultural consumption ask us to exercise those muscles, I wonder what happens over time. Is it already happening?
178
179The business logic is easy to understand. Everybody is trying to make money. Again, as the song goes: producers follow audie
179nces. Financiers follow returns. Platforms follow engagement. Viewers follow convenience. Every individual decision can make perfect sense on its own.
180
181What's the cumulative effect?
182
183What happens when thousands of individually supposedly "sensible" decisions slowly shift the kind of attention the cultural economy is willing to ask of people? What happens when “completion rate” becomes more important than patience, ambiguity, or complexity? What happens when producers begin shaping stories around the fear that a viewer might swipe away within seconds? What happens when that becomes the rule, not the exception?
184
185No, I don’t think microdramas are about to replace cinema. There is evidence that their audiences still overlap only modestly with premium streaming audiences, and cinema has certainly survived plenty of supposedly existential threats before.
186
187But I also don’t think this is something to dismiss as another harmless format cycle.
188
189We're running a very large experiment on attention, taste, and cultural consumption, and many of the companies running it have a direct financial interest in keeping us watching, clicking, and returning as often as possible.
190
191Microdrama is only one piece of that. But seeing titles like “My Twin Sister Stole My Man” being built — I would typically say "produced" or "made" — specifically for TikTok prompted me to wonder where that experiment is taking us, and what we are slowly training ourselves to expect from stories, and effectively, each other.
192
193Read the piece I wrote a year ago on the business case for vertical microdramas titled “Vertical Micro-Dramas and Africa: Format Revolution or Model Repackaging?” At the time, my interest was largely whether the model could work in African markets. I’m less certain what I think about the cultural side of it, which is partly why I’m putting this out as more of an inquiry, not a conclusion.
194
195I’d be interested in hearing where others land on this, especially producers, financiers, distributors, platform operators, and anyone already working with short-form scripted formats.`},{slug:"african-blumhouse-productions-require-sep7-2026",title:"What Would an African Blumhouse Productions Actually Require?",category:"Industry",date:"September 7, 2026",summary:"A thought experiment on what it would take to finance, produce, release and retain rights in a repeatable low-cost African genre-film model.",author:"Tambay A. Obenson",isPremium:!0,readTime:"13 min read",headerImage:"https://akoroko.com/manus-storage/african-blumhouse-productions-sep7-2026_d3389807.jpg",featuredImageFull:!0,content:`A thought experiment about what it might take to finance, produce, and release low-cost genre films repeatedly across African markets, inspired by recent conversations with industry professionals. I've also been consulting on an East African genre-focused script-to-market residency — hence my current headspace. I've also been approached a few times over the past year to consider producing. I certainly don't have the experience. However, it's a role I can see myself, and African Film Press (AFP) more broadly, playing at some point in the future. One thing at a time.
196
197More specifically, I have been thinking about what an African version of Blumhouse might look like in 2026. For the uninitiated, Blumhouse Productions is the U.S. film and television company founded by producer Jason Blum, best known for turning relatively inexpensive horror films like "Paranormal Activity," "Insidious," and "The Purge" into major commercial successes. Although some of its films failed, enough succeeded, sometimes on an extraordinary scale, for the company to keep producing and turn individual successes into franchises.
198
199Why Blumhouse? Because I think its model is useful for thinking about how African producers might sustain regular production over time when production capital is limited, cinema revenue is uncertain, and access to distribution is concentrated among a small number of companies. Blumhouse controlled how much money it put at risk on each film, focused on genres that could work with small casts and limited locations, and built relationships with major distributors that could take a successful film to a much larger audience. The interesting part is the repeatability: several films, a consistent commercial identity, a way to survive failures, and enough participation in successful properties for one hit to affect the economics of the next slate.
200
201So what would it take for one African producer or company to finance genre films repeatedly, release them across several African and international markets, survive the ones that fail, and retain enough rights to build a lasting business?
202
203My starting point is five basic components: low production costs, a steady supply of genre projects, reliable release partners, revenue commitments from several markets, and ownership of rights that can earn money over time and sustain the business.
204
205Some African producers work across national borders. Public agencies, private funds, and multilateral institutions finance films. Local cinema distributors, international sales companies, television groups, and streaming services acquire African work.
206
207I haven't identified an African company that clearly combines all five in one repeatable operating model.
208
209## What Blumhouse Actually Did
210
211Before the hits, Jason Blum founded Blumhouse Productions in the U.S. in 2000, after gaining experience in film acquisitions and distribution at Arrow Entertainment, a New York independent film company he joined in 1994. He knew how distributors valued rights, how films reached cinemas and television, and how marketing affected the commercial result.
212
213To be sure, low-cost horror already had a long commercial history in the U.S. George A. Romero’s "Night of the Living Dead," made in and around Pittsburgh, Pennsylvania, cost about $125,000 and earned an estimated $2.5 million in box-office receipts in 1969. Three decades later, Daniel Myrick and Eduardo Sánchez made "The Blair Witch Project" with a shoot that cost around $50,000. Post-production and release preparation increased its cost to about $200,000, and the film went on to gross $248.6 million worldwide after opening in the United States in July 1999. There were certainly other scenarios. Collectively, these films demonstrated how horror could turn limited resources, unfamiliar actors, and simple, often single locations into commercial advantages.
214
215By all accounts, "Paranormal Activity" became Blumhouse’s turning point. Oren Peli filmed the supernatural horror feature in his home in San Diego, California, for a reported production cost of just $15,000. Paramount Pictures began its limited U.S. release on 25 September 2009 and expanded it nationwide on 16 October 2009. The film eventually grossed $193.4 million worldwide.
216
217The $15,000 figure was for the original shoot, not the film audiences eventually saw in cinemas. After the acquisition, Paramount reportedly spent an additional $200,000 on a new ending and post-production work. The studio also paid for marketing and distribution. Still, "Paranormal Activity's" near-$200 million worldwide gross was extraordinary relative to its total budget.
218
219The result demonstrated the commercial possibilities of combining a very inexpensive film with major-studio distribution. “Blumhouse applied that logic to later films including "Insidious," reportedly produced for $1.5 million and grossing $100 million worldwide; "The Purge," produced for $3 million and grossing $89.3 million worldwide; and, of course, Jordan Peele’s smash "Get Out," produced for $4.5 million and grossing $255 million worldwide on its original release.
220
221Low budgets gave Blumhouse room to take creative risks. Directors could receive substantial creative authority and a potential share of profits in exchange for reduced upfront fees. A contained horror film could use a small cast, a limited number of locations, and few expensive visual effects. One 
221commercial success could cover losses from several unsuccessful releases.
222
223Blumhouse secured a three-year first-look production agreement with Universal Pictures in 2011. A first-look agreement gives a studio the first opportunity to consider a producer’s projects. It doesn't require the studio to release every film. Universal and Blumhouse announced a new ten-year agreement in July 2014.
224
225The public record from that period shows Blumhouse’s low-budget production discipline, franchise participation, and long relationship with major studio distributors. Individual ownership arrangements vary by film and franchise.
226
227For the African company imagined here, retaining some intellectual property and exploitation rights is a must. A company that repeatedly makes inexpensive films for buyers can build production capacity and revenue while accumulating relatively little long-term ownership. I'm more interested in a company that can survive financial failures while keeping enough participation in successful properties for those successes to strengthen the next slate.
228
229Blum explained another important part of the economics in a January 2017 interview with Filmmaker Magazine (Working Through Fear: An Interview with Blumhouse’s Jason Blum). A Blumhouse film costing about $4 million–$5 million didn't have to become a theatrical hit for the company to recover much of its production cost. He estimated that television, streaming/digital, and international rights could bring in roughly $4 million even if the film didn't receive a wide cinema release.
230
231That calculation helped determine how much Blumhouse was willing to spend in the first place. If a $5 million film could recover about $4 million without succeeding in cinemas, the company’s financial exposure was much smaller than the production budget alone suggested.
232
233Easy enough to understand.
234
235Of course, Blumhouse now operates at a different size. It completed a merger with Atomic Monster, the production company founded by filmmaker James Wan, in 2024. But the business ethos remains mostly the same.
236
237## One company, 54 national markets
238
239The United States has one dominant currency, one principal commercial ratings system, a large cinema network and distributors that can organize a national release. Africa has 54 countries, many currencies, several major business languages, different classification rules and very unequal access to cinemas, pay television and streaming services.
240
241African Screen Intelligence (ASI), the research and data unit of African Film Press, had verified a minimum of 1,698 commercial cinema screens across 37 African countries as of 28 August 2026. This figure is a documented floor, not a complete continental total.
242
243A company can't treat those 54 countries as a single theatrical market. It would need a portfolio of release arrangements across borders. A Nigerian film might begin with cinemas and pay television in English-speaking West Africa. A South African film might rely on local cinemas, regional pay television and an international streaming licence. A French-language production from Senegal or Côte d’Ivoire would require distributors and broadcasters serving Francophone African audiences. A film from Egypt or Morocco would need an Arabic-language strategy and access to Middle Eastern and North African buyers.
244
245I can imagine the continental ambition existing at the company level, meaning ownership, financing relationships, rights management, and the film library. Individual productions would still need a defined home market, language strategy, and release roadmap.
246
247## So, What If We Narrow It to One Country — Nigeria
248
249Nigeria has one of the continent’s most active commercial production cultures, an established cinema business, experienced crews, local distributors, and an active pay-television audience. English is widely used in business and screen production, alongside films and television programmes in Yoruba, Hausa, Igbo.
250
251Our ASI verifies 346 fixed screens reporting commercial cinema activity in Nigeria as of August 2026. That gives a Nigerian production company a domestic theatrical base, although one far smaller than the U.S. market that supported Blumhouse as the company rose.
252
253Nigeria has also tested several versions of the multi-film relationship this thought experiment calls for. Netflix signed multi-title agreements with EbonyLife Media in 2020 and filmmaker Kunle Afolayan in 2021. Prime Video followed in 2022 with agreements involving Anthill Studios, Nemsia Films, and filmmaker Jáde Osiberu’s Greoh Studios. Some commissioned original productions; others secured streaming rights after cinema release. Their budgets, licence fees, marketing commitments and producer rights were not disclosed.
254
255Of course, Prime Video later reduced its investment and staffing in Africa and the Middle East in January 2024. Netflix’s Nigerian commissioning also declined. The period established that major international buyers would enter multi-film relationships with Nigerian producers, even as those relationships contracted quickly.
256
257Canal+ is currently working with Flying Whale, a label created by Lagos-based Anakle Films, on ten low-cost television films. Canal+ approached Anakle after the company’s 2023 crime thriller "The Black Book" and asked founder Editi Effiong whether it c
257ould make films at budgets several times below that film’s reported $1 million cost. Flying Whale completed and delivered four by July 2026. The individual budgets, Canal+ payments, licence periods and rights retained by Flying Whale have not been disclosed.
258
259Nile Media Entertainment Group is building its own genre and distribution business. Nigerian film executive Moses Babatope launched Nile in 2024 as a production, distribution and exhibition group. Its Nile Entertainment subsidiary became the West African theatrical distributor for Universal Pictures and Paramount Pictures in February 2026. Nile, U.K. action studio Action Xtreme and 22Summers, the production company founded by Idris Elba and Gina Carter, have also announced AFA Action Films Africa, a slate of West African action films with Nile handling African distribution.
260
261The hypothetical Nigerian film company could develop an initial slate of four to six contained horror and thriller films in English and selected Nigerian languages, without committing production money to all of them at once. It would seek a multi-film agreement with a regional television or streaming group like Canal+/MultiChoice, serving Nigeria and other Anglophone West African markets, along with theatrical distribution for selected films across the region (FilmOne and Nile most obviously) and an international (including the rest of Africa) sales partner for territories not covered by those agreements.
262
263Netflix is another potential major buyer, although it's not currently entering the kinds of multi-film agreements with Nigerian producers that it did earlier in the decade. Based on conversations with producers, I understand that the streamer currently requires theatrical distribution in Nigeria before it will even consider a project for streaming acquisition or other investment, including those still in development. Smaller Nigerian platforms, including Kava and Circuits, could provide additional digital release options, but their reach and financial capacity to anchor a multi-film agreement of this kind are not publicly known.
264
265Before each film goes into production, the company would try to secure part of its revenue from those arrangements. Additionally, the producer would retain enough rights or revenue participation for successful films to contribute financially to later productions.
266
267## The Missing Revenue Floor
268
269The main obstacle is the lack of published financial information needed to estimate how much a film could reliably earn without a wide cinema release.
270
271African film deals rarely disclose what broadcasters, streaming services, distributors, or international buyers actually pay, or how much income returns to the producer. Without those figures, it's hard to know what production budget the available market can support.
272
273Jason Blum had enough information from the U.S. market to estimate in 2017 that a Blumhouse film costing about $4 million–$5 million could recover roughly $4 million from television, digital, and international rights even without a wide theatrical release. A comparable published benchmark for African films does not exist. African Film Press (AFP) is building a defensible model as I type this.
274
275Buyers would then have to make offers based on information largely unavailable to producers, including their own audience data, previous performance of comparable films, revenue in particular territories, and the value of the rights being acquired.
276
277The hypothetical production company would therefore have to build its own record of what the market will pay — a kind of reverse-engineering. Each completed deal would show what a broadcaster, streaming service, distributor, or sales company was willing to pay for specific rights in a specific market. Over several films, those transactions could provide budgeting information the public record currently lacks.
278
279The company would also need to learn what subtitling, dubbing, classification, delivery, and cross-border marketing add to the cost of reaching target markets.
280
281That history could then inform the budget of the next slate, and so on...
282
283The company might begin with two films, then expand only after it has actual production and revenue data from those releases. Geographic expansion would follow proven buyer relationships and audience demand.
284
285## What Existing Players Already Provide
286
287The pieces of this model already exist in different places.
288
289On the investment side, CANEX Creations Inc, the intellectual-property investment subsidiary backed by Afreximbank, is already investing in film. CCInc chief Osahon Akpata said the instrument typically invests $500,000–$5 million and finances about 20%–40% of a project’s budget. It looks for experienced producers, commercial track records, other financing, and evidence of distribution or repayment, including a minimum guarantee or presale. Its public terms don't disclose how much intellectual property it would own.
290
291On development, Next Narrative Africa announced a planned $40 million commercial equity fund alongside a nonprofit development operation. By August 2026, its first nine projects had collectively received $450,000 in development grants, while the separate $40 million commercial fund had disclosed no production financing. The nonprofit work is now part of the recently launched Next Narrative Africa Institute, which is fundraising for future development grants, research, and policy work.
292
293Palmtrees has a wider geographic mandate, but its model overlaps directly with part of this thought experiment. The screenplay development incubator founded by Nigerian-American filmmaker, producer, and former Netflix executive Funa Maduka selects eight to ten feature-length genre projects from writers across Africa and other Global South markets for a nine-month development programme. American film company NEON (also distributor for the Esiri brothers' Cannes 2026 entry "Clarissa") has an exclusive first-look window on every project that completes the programme. Writers retain full ownership of their work, Palmtrees doesn't acquire rights to the screenplays, and it remains attached to the projects regardless of where or how they eventually move forward.
294
295At the microbudget production level, South Africa’s National Film and Video Foundation (NFVF) is financing five features at R4.5 million–R6 million each (about $272,000–$363,000), with Cape Town-based Indigenous Film Distribution attached as distributor. The programme opened in January 2026, and the five projects were approved by April. Where the NFVF supplies the full production capital, the production company owns 100% of the completed film’s rights. The distributor receives a five-year licence, and the NFVF recoups its investment before deferred fees and later participation. The programme is limited to family and coming-of-age films.
296
297Canal+ comes closest to combining several of the remaining functions. Its control of MultiChoice gives the French media group pay-television, commissioning, and distribution operations across much of sub-Saharan Africa, while its STUDIOCANAL arm adds film financing, production and international distribution capacity. As already noted — also at the above microbudget level — in Nigeria, Canal+ is working with Anakle Films’ Flying Whale label on a ten-film slate of low-cost television features. Its 
297STUDIOCANAL arm is also largely financing and will distribute the international-facing South African feature "The Road Home" (and other similar high-profile projects) produced in Cape Town as part of commitments connected to the MultiChoice acquisition.
298
299Canal+ also owns STUDIOCANAL’s UK-based Sixth Dimension, which finances, produces, acquires and distributes horror, thriller and science-fiction films. No African Sixth Dimension slate has been announced.
300
301## What the Company Would Still Need
302
303The company would have to function as a producer, rights holder and distribution coordinator, while also raising enough committed capital to cover the portion of each film’s budget not financed by broadcasters, streaming services, distributors or other partners, and to absorb some losses without stopping production altogether.
304
305Of course, very few independent production companies on the continent — and in the diaspora — would be in a position to raise capital on those terms. Blumhouse was founded by someone who already had industry credibility, buyer knowledge, relationships, and some producing experience, even though he hadn't yet established the low-budget horror production model that defined the company several years later.
306
307However, the African/diaspora company wouldn't necessarily need to raise the full cost of an entire slate at once; at the start, committed capital could be drawn film by film as projects are financed and approved for production, while broadcasters, streaming services, distributors, or other partners could remain independent, with contracts defining what each party pays, receives, and controls.
308
309Its management would certainly need experience in production, acquisitions, distribution, finance, and rights. Blum’s own background in acquisitions and distribution mattered.
310
311The slate could concentrate on horror, supernatural thrillers, and contained science fiction — genres that can accommodate small casts, limited locations, and controlled production costs. The stories themselves could be rooted in an abundance of untapped cultural traditions and African histories.
312
313Each film would enter production with its release arrangements substantially defined. A multi-film agreement would need to state how many films the buyer was committing to, the minimum payment for each accepted film, delivery requirements, and when unused rights returned to the producer.
314
315Key creative talent could participate financially in successful films, with guaranteed fees and clearly defined revenue participation.
316
317## More Money Will Not Produce Enough Competition on Its Own
318
319More production capital will have limited effect if the same small group of TV companies, streaming services, cinema distributors and international sales companies continue to control most routes to audiences.
320
321Producers gain bargaining power when several buyers compete for films and rights. Of course. More independent acquisition budgets would also create alternatives when one platform, broadcaster, or distributor changes strategy.
322
323The same applies to finance. Different companies and projects need different amounts of capital, risk tolerance, and deal structures. A low-cost genre production company shouldn't have to fit the same investment criteria as a multimillion-dollar international co-production.
324
325There is some wry irony in all this. Add a few zeroes and change the job description, and this exercise starts to look familiar. Afreximbank, Canal+, Next Narrative Africa Fund, and others are also trying to determine what projects cost, what audiences will pay for, and which deal structures can support continued production. The scale changes; the basic problem does not.
326
327We're all still figuring "this thing" out, although “this thing” means something different for a producer, financier, distributor, broadcaster, or exhibitor.
328
329On our side, we're figuring it out at African Film Press (AFP) too, including what information the sector actually needs, how to build it, how to make it commercially sustainable, and where our own work fits in this changing ecosystem.
330
331I say it often because it continues to be true: building anything durable across the "African screen" sector, in all its layers, is a long game of trial, adjustment, repetition, and patience. Some of us are just better resourced.
332
333For an African Blumhouse, success would begin with being able to absorb some failures, learn from them, and still finance the next project.
334
335I spent a fair amount of time thinking through and interrogating this thought experiment before publishing it, so I’d be interested to hear from producers, financiers, distributors, and others in this subscriber community.`},{slug:"continental-top-10-afp-box-office-registry-sep1-2026",title:"A Continental Top 10 — and Much More — Comes to the AFP Box Office Registry",category:"Data",date:"September 1, 2026",summary:"AFP’s first update to the Box Office Registry adds a continental Top 10, a Weekly Market Brief, a revised screen count, and new country and film records.",author:"Tambay A. Obenson",isPremium:!0,readTime:"10 min read",headerImage:"https://akoroko.com/manus-storage/afp-box-office-registry-continental-top-10-sep1-2026_60a4e526.jpg",featuredImageFull:!0,content:`When I opened the AFP Box Office Registry to subscribers last Wednesday, I called it Version 1.0.
336
337Six days later, enough has changed that I think it is worth sending the first update.
338
339Some of the work has been new research. Some has been correcting how the existing research is presented. And some has been about turning the Registry from a large database you periodically consult into something that can also tell you what's happening in African theatrical markets now.
340
341## There Is Now a Continental Box Office Top 10
342
343The most immediately useful addition this week is a new Continental Box Office leaderboard.
344
345It ranks the highest-grossing locally produced films currently sourced and captured in the Registry, based on their home-market theatrical grosses, from 2020 through August 2026.
346
347As of August 31:
348
349- “7 Dogs” (2026), Egypt — EGP 272.34 million (US$5.36 million)
350- “Welad Rizk 3: El Qadeya” (2024), Egypt — EGP 260.23 million (US$5.12 million)
351- “Barshama” (2026), Egypt — EGP 210 million (US$4.13 million)
352- “Siko Siko” (2025), Egypt — EGP 187 million (US$3.68 million)
353- “Beit El Ruby” (2023), Egypt — EGP 130.8 million (US$2.57 million)
354- “Restart” (2025), Egypt — EGP 90 million (US$1.77 million)
355- “Everybody Loves Jenifa” (2024), Nigeria — ₦1.883 billion (US$1.41 million)
356- “My Friend” (2025), Morocco — MAD 13.72 million (US$1.37 million)
357- “Ana Machi Ana” (2024), Morocco — MAD 13.44 million (US$1.34 million)
358- “2 Rwah” (2026), Morocco — approximately MAD 13 million (US$1.30 million)
359
360Egypt currently holds the first six positions, with Nigeria and Morocco accounting for the other four.
361
362Again, the ranking is based on box-office results currently sourced and captured by us at African Film Press (AFP); coverage will expand as we recover additional market data. US dollar equivalents use exchange rates dated August 31, 2026.
363
364## The $123 Million Estimate Has Not Changed
365
366First, the main annual-market estimate is unchanged.
367
368I ran another current-source check across all 54 countries between August 29 and August 31, looking for new official full-year national box-office figures that would supersede anything already in the Registry.
369
370I found none. Additionally, email inquiries still await replies.
371
372So AFP still has defensible annual-gross figures or estimates for 18 of 54 markets, totaling approximately $123 million, with a combined estimated range of roughly $101 million to $142 million.
373
374And my working estimate of total annual theatrical box office across Africa being below $200 million is also unchanged.
375
376I actually consider the lack of a change useful intel. The point of updating the Registry is not solely to move the numbers. It's also to keep testing whether the existing numbers are still the best available. Over time, these details matter.
377
378## The Screen Picture Has Changed Considerably
379
380This is probably the biggest research change since launch.
381
382In last week’s introduction, I described the screen evidence partly by separating the 18 countries with annual-gross estimates from the other 36.
383
384I've since completed a separate normalization of the cinema infrastru
384cture data because annual box office coverage and cinema infrastructure coverage answer two different questions.
385
386The Registry now supports a verified current lower bound of at least 1,698 regular fixed screens across 37 African countries.
387
388That's an increase of 389 screens from the previous normalized floor of 1,309 screens across 27 countries.
389
390The other 17 countries currently have no verified regular commercial circuit.
391
392That doesn't mean there haven't been cinemas there, or that films are never publicly screened. It means I can't currently verify a regular commercial circuit that belongs in this particular denominator.
393
394The reconciliation added or tightened current counts in ten countries.
395
396Nigeria is the largest correction: the FilmOne fixed-site tables now support 346 fixed reporting screens across 116 fixed cinema sites. Six Nigerian mobile screens are recorded separately and are not counted in the fixed-screen total.
397
398The same process established or tightened current figures for Liberia, Eswatini, Djibouti, Namibia, Zimbabwe, the Republic of the Congo, Sierra Leone, The Gambia and Eritrea. That was a relief.
399
400It also forced some negative corrections. Burundi, Chad, Sudan, and a few more are now classified as having no verified regular commercial circuit in the current infrastru
400cture count. But again, that doesn't mean there haven't been cinemas there, or that films are never publicly screened.
401
402## The Markets Section Now Does More With Countries That Lack a National Gross
403
404One thing became obvious almost immediately after launch: the main Markets table was still visually privileging the annual-gross figure too much.
405
406For the 36 countries without a defensible national gross, a generic “No national gross recovered” label was technically accurate but not very useful. So I revised the table.
407
408Those countries now surface the strongest available revenue, admissions, audience, screen, or administrative evidence directly in the main view.
409
410Uganda, for example, can now show the latest official regulator (the Uganda Communications Commission) observation: 20,500 cinema tickets total in Q1 2026.
411
412Guinea can show that it has a legally mandated box-office reporting system requiring cinemas to submit daily and weekly figures for screenings, audience, and gross receipts. I've been able to obtain the reporting rules and evidence of an operational digital monitoring process via the Office National de la Cinématographie, de la Vidéo et de la Photographie de Guinée (ONACIG), but not the completed returns or a national aggregate. Soon enough for this mid-sized West African coastal country of 17.5 million people.
413
414To be sure, the missing annual gross is still explicit. It just no longer wipes out everything else we know about the market.
415
416## There Is Now a Weekly Market Brief
417
418This is the largest feature addition. The Registry now has a new Weekly Market Brief section.
419
420It's not a page that simply repeats the African markets where fresh weekly or weekend grosses are easiest to obtain. That would distort what we are learning each week.
421
422The Brief starts with the Continental Box Office leaderboard above, followed by four other sections:
423
424- "Current reported box office" gives the latest usable gross reporting from the very few countries that generate publicly available reports on a weekly basis.
425
426- "This week in the Registry" pulls in current or recently recovered information from other useful areas: admissions, cinema infrastructure, regulatory changes, and reporting systems.
427
428- "Current charts" gives the title-level rankings from the markets with fresh gross reporting.
429
430- And "Market reads" highlights useful indicators already supported by the Registry.
431
432For the first edition of Weekly Market Brief, dated August 31, current reported results include:
433
434- Egypt: EGP 54.36 million across 17 published weekly title revenues. “Mahmoud El Tany” led that set with EGP 17.61 million.
435- Nigeria: approximately ₦221.8 million across ten published weekend title grosses for August 21–23. “Spider-Man: Brand New Day” led with ₦115.7 million. August-to-date reporting stood at ₦2.19 billion and 301,916 admissions.
436- South Africa: approximately R10.73 million for the August 21–23 weekend. “Spider-Man: Brand New Day” led with approximately R5.52 million. The weekend covered 20 releases and was down 27.7% from the previous weekend.
437
438The first “This week in the Registry” section also highlights the new 1,698-screen floor alongside Nigeria’s fixed-screen reconciliation, Morocco’s August 31 cinema operator compliance deadline, Uganda’s latest official ticket data, Ethiopia’s current cinema census, and Guinea’s exhibitor reporting system.
439
440The longer-term goal with this Registry is to establish a weekly reporting rhythm that gives you not only hard numbers, but also, where useful, what's underneath the absence of hard numbers, for a more complete picture of theatrical box office across the continent.
441
442As we expose the overall platform to local exhibitor chains and distributors, as well as institutions and policymakers, I expect those conversations to lead to even more granular market intelligence.
443
444Conversations are ongoing...
445
446## There Are Fresh Film Results Too
447
448The August 31 reconciliation check also updated several current film records beyond those already visible in the Continental Box Office ranking.
449
450“Mahmoud El Tany” had passed EGP 51 million (US$1.00 million) after 18 days.
451
452The same current Egypt table lists “Spider-Man: Brand New Day” at EGP 108,873,321 (US$2.14 million) and “The Odyssey” at EGP 67,543,337 (US$1.33 million).
453
454In Nigeria, “Call of My Life” had passed ₦855 million (US$639,130) by August 11.
455
456Also in Nigeria, “Ikenga: The Last Festival” opened with ₦22 million (US$16,445) in its first three days after its August 21 release.
457
458Distributor/exhibitor FilmOne also reported ₦1.8 billion (US$1.35 million) across West Africa for “Spider-Man: Brand New Day.” I haven't assigned that amount to Nigeria specifically because the source doesn't provide a Nigeria-only split.
459
460And the planned August 28 Nigerian cinema release of “The Night of June 7th” was placed on hold following a directive from Nigeria’s National Film and Video Censors Board (NFVCB), the country’s film classification and exhibition regulator — recorded as a regulatory development, not a box-office result.
461
462In South Africa, the current commercial record for “Spider-Man: Brand New Day” is US$6,378,365.
463
464The number of Film records itself is still 243 across eight markets. This will obviously change over time as more data is verified and accumulated.
465
466## Morocco Reached a Regulatory Deadline
467
468Under Law No. 18.23 and its implementing rules, existing cinema hall operators were required to submit their compliance applications to the Centre Cinématographique Marocain (CCM) by August 31, 2026.
469
470A CCM reminder published August 27 says that operators who filed on time can complete missing supporting documents within 30 days.
471
472This does not change Morocco’s 2025 box office or its 87 active-screen figure. But it creates a new regulatory record set to track because the resulting authorizations may affect which cinema operators are legally active.
473
474That kind of information is now part of what the Weekly Market Brief will surface.
475
476## I've Also Changed How the Registry Works on Screen
477
478I've spent much of the past few days making the Registry easier to use, particularly on mobile, starting with a guided tour.
479
480Last week I warned that the Registry was much easier to use on a laptop or desktop. To be sure, that's still true, particularly for deeper research work; but the Markets section is now substantially better on mobile, reading much more cleanly on smaller screens, and I made several other adjustments to navigation, sorting, layout, and how different kinds of information are presented.
481
482There is still more to do, but I think the Registry is considerably easier to move around than it was at launch.
483
484Search, sorting, filtering, Compare, country drawers, and the Working Set feature still operate from the same underlying records.
485
486## One Week In
487
488This is pretty much what I meant when I said Version 1.0 meant Version 1.0.
489
490The annual estimate didn't change. But our understanding of the continental cinema estate did.
491
492The way countries without national grosses are represented did.
493
494Current film results did.
495
496A live Moroccan regulatory deadline entered the record.
497
498And the Registry now has a weekly intelligence layer that didn't exist when I sent the launch email a week ago.
499
500That's the near-term model: the Registry should get more useful each week, whether the update is a new national figure, a screen count, a regulator report, a release result, or another piece of market evidence that might influence whether the continental estimate changes.
501
502To reiterate: a longer-term goal with this Registry is to establish a weekly reporting rhythm that gives you not only hard numbers, but also, where useful, what's underneath the absence of hard numbers, for a more complete picture of theatrical box office across the continent.
503
504As we expose the overall platform to local exhibitor chains and distributors, as well as institutions and policymakers, I expect those conversations to lead to even more granular market intelligence.
505
506Conversations are ongoing...
507
508Access the African Film Press (AFP) Box Registry here: https://africanfilmpress.com/box-office-registry
509
510As always, if you are using this for a particular market, film, investment question, article, or release plan and something is unclear, reply directly. I also appreciate professional usage feedback!`},{slug:"a-particular-set-of-skills-ai-akoroko-offer-aug27-2026",title:"A Particular Set of Skills: AI, Akoroko, and an Offer to Subscribers",category:"Industry",date:"August 27, 2026",summary:"Akoroko’s foun
510der explains how AI tools have expanded a one-person operation’s research, product-development and analytical capacity—and opens a new consultation offer to Premium subscribers.",author:"Tambay A. Obenson",isPremium:!0,readTime:"6 min read",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/OkUUBmbHMvCcAtWf.jpg",featuredImageFull:!0,content:`I've spent much of the past two years experimenting with and discovering how far I can push artificial intelligence (AI) applications in the professional work I do. As Akoroko Premium subscribers, you've already seen some of the results, including in the various research products, databases, and specialist tools I have developed and continue to manage.
511
512## A one-person operation
513
514It still shocks people when I share that Akoroko remains largely a one-person operation. The tools I've deeply incorporated into my workflow — Manus, Claude, and occasionally ChatGPT, all of them at the higher-cost subscription tiers — have allowed me to expand my capabilities and efficiencies in research, coding, data aggregation, organization, and analysis, product development, testing, and monitoring that would ordinarily require additional researchers, developers, or analysts. I absolutely could not currently produce this volume and range of work without them.
515
516Since childhood, I've always been quick to experiment with new technology, and I tend to push, poke, and prod until I understand what the tech can do, where its limitations are, and how it can be applied usefully — particularly within the professional spaces I occupy. And for the last couple of years or so, and more intentionally in 2026, this has meant, broadly, coordinating between several different AI systems, dividing complicated work into manageable parts, and maintaining control over the finished result.
517
518Every output still requires supervision, most importantly, taking full responsibility for providing the professional context the tools cannot reliably supply. Additionally, the work depends on pre-existing, deep subject knowledge, which facilitates sharp editorial judgment and careful verification. And I've learned enough — broad to specific — from my daily practice to realize that I may be able to help others use these tools more effectively.
519
520## An offer to subscribers
521
522So, I want to share what I’ve learned with Akoroko Premium subscribers as another way to use the consultation access already included in your subscription. If you have a project, recurring task, research problem, or part of your operation that you think could be handled more efficiently and produce more effectively than it currently is, bring it to me. We can review your approach and see whether any of the AI applications I use — or others — could help you work more efficiently or expand what you can do.
523
524## What we can explore
525
526That might mean helping you structure a research and source-verification process; monitor a subject, organization, or market; organize and analyze a large body of information; or consider how a database, specialist tool, or internal resource might serve your work. It could also mean testing an idea before you commit substantial time or money to it, or simply answering questions about how these applications might fit into your professional practice.
527
528The initial assessment and guidance are included with your subscription. If our conversation suggests something more involved is required — designing or implementing a system, tool, or research process, for example — we can then discuss what the work would demand, whether I can take it on, and any additional costs.
529
530## A practical position
531
532This is an offer, certainly, but it also comes from recognizing that I've developed a very particular set of skills — to borrow the familiar line from the “Taken” films — that I believe could be useful to other professionals. I’ve now had enough conversations with people about AI to know that many are tapping into only a small fraction of what these applications can offer in everyday professional work, or are still trying to figure out where and how to begin.
533
534I’m fully aware of the debate around AI use, particularly within the creative sectors, as well as the resistance to these applications and efforts to restrict their use. I understand and appreciate many of the concerns informing that conversation. My own position is also grounded in practical experience: I've found genuinely useful professional applications for these tools that have allowed a one-person operation to function at a level several people have described to me as the work of an entire enterprise.
535
536From where I sit, the reality is considerably more complicated than the binary terms that have shaped much of the debate so far.
537
538## Reach out
539
540Reach out!`},{slug:"recapping-first-akoroko-premium-subscriber-gathering-aug21-2026",title:"Recapping First Akoroko Premium Subscriber Gathering",category:"Industry",date:"August 21, 2026",summary:"A recap of the first Akoroko Premium subscriber gathering, including an early look at African Screen Intelligence, the upcoming Box Office Registry, and the evolving Akoroko Premium offering.",author:"Tambay A. Obenson",isPremium:!1,readTime:"9 min read",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/CPLUawuLODDpqpnz.jpg",featuredImageFull:!0,content:`On 30 July 2026, I held the first Akoroko Premium subscriber gathering, an online conversation about the work, the growing place of research tools within it, and where Akoroko and African Film Press (AFP) may be headed.
541
542The gathering ran just over an hour, thanks in part to healthy contributions from those who were present. I began with a brief retelling of the Akoroko Premium story, from its launch on 29 April 2024 to its evolution over the past two years. In brief, for the uninitiated, the service started with a high volume of reporting and analysis, sometimes several items in one day. Subscriber feedback indicated the pace had become difficult to keep up with, so I reduced output to about four or five dispatches each week and, more recently, even less, devoting more time to tool building for professionals—registries, trackers, and other research applications.
543
544## A Growing Tool-Building Focus
545
546These tools came about in response to specific information gaps, based on my own assessments and numerous conversations with industry professionals on the continent and beyond.
547
548![Kenya Film Market Baseline](https://files.manuscdn.com/user_upload_by_module/session_file/106775066/iRkwUTPYXCOhzBov.png)
549
550## African Film Press and the Future of Akoroko
551
552I also spoke about the relationship between Akoroko and African Film Press, or AFP. AFP currently connects Akoroko with What Kept Me Up (Nigeria and English-speaking West Africa) and Sinema Focus (Kenya and broader East Africa). Plans include a Southern African publication based primarily in South Africa, covering Namibia, Angola, Mozambique, Lesotho, Eswatini, and Botswana. French-language and Arabic-language coverage are longer-term prospects dependent on staffing and financing.
553
554I am also considering whether Akoroko may eventually be absorbed into AFP, since much of the reporting and many of the tools are already being developed as AFP products. No decision has been made.
555
556## Introducing African Screen Intelligence
557
558The highlight of the hour: subscribers received an early demonstration of African Screen Intelligence, or ASI, the research and data platform we've been building that will bring together every resource in our toolkit. The platform captures information primarily from the post-pandemic period, 2021 onward, including box office, distribution, financing, streaming, physical and institutional infrastru
558cture, production activity, national market conditions, and more.
559
560Nine countries have been mapped so far: Kenya, Nigeria, South Africa, Senegal, Egypt, Morocco, Ghana, Ethiopia and Côte d’Ivoire. Tanzania, Uganda, Angola and other markets are in active development. Each country profile includes confidence tiers that show how strongly individual figures are supported.
561
562## Project Assessment and Production Questions
563
564The demonstration also covered tools for assessing film projects and pitch decks. Users can enter a project’s budget, financing request, release strategy, filmmaker history, and other details to generate a possible capital stack, financing roadmap, revenue assessment, and market context.
565
566Actor and filmmaker Ntare Guma Mbaho Mwine asked whether the platform could break down a screenplay into cast, locations, and line-production costs. I explained that ASI currently concentrates more on financing, capital raising, performance potential, and market assessment than on detailed production budgeting.
567
568Producer Nadia Leonelli described the need for country-level information on crew costs, actor rates, locations and other production expenses. She's currently on a continental mission to collect some of this information across African markets, which could complement ASI’s financing, market and distribution data.
569
570Cecilia W’Emedi of Women In Film Los Angeles (WIF LA) proposed adding socioeconomic and demographic information to the country profiles so admissions, screen counts, and box-office totals can be considered alongside population, income, and age data. She also discussed connecting investment data with studies of cinema’s social effects. I agreed to consider incorporating more of this context directly into the platform.
571
572## The Box Office Registry
573
574I also demonstrated our upcoming Box Office Registry, a herculean effort to document theatrical activity across all 54 African countries, and not just the numbers. I shared some research f
574indings — notably that cinema data often exists within national film agencies, government departments and other institutions but is unpublished, released irregularly or difficult to locate. The prevailing narrative that the data isn't collected is increasingly proven to be incomplete. Smaller markets like Côte d’Ivoire’s national cinema office, for example, have begun supplying periodic national box-office reports.
575
576![Box Office Registry](https://files.manuscdn.com/user_upload_by_module/session_file/106775066/HftsfPGHjgqgtqfD.png)
577
578## The AI Workflow
579
580I briefly explained the AI workflow behind the research, incorporating a triplet of AI applications that let me accomplish far more than I ever could have without them. Manus is a general-purpose AI agent developed by a Singapore-based company that Meta acquired earlier this year. It's a workhorse, though a very expensive one. It can independently complete multistep research, coding, and development assignments. Manus charges by credits consumed, with costs increasing with the complexity and duration of each task. Sustained, intensive use becomes costly. In my case, I shared that I'd invested tens of thousands of dollars in Manus while developing everything you've seen so far, and more in development.
581
582Even so, what I have spent on Manus (and Claude) is a fraction of what comparable work would have cost if outsourced to software engineers. I know this from direct experience; at the start of developing these tools a year ago, I hired engineers to do the work. The working relationships ended quickly once I decided I could save money by learning to build efficiently with the tools myself.
583
584Claude, which most of you are likely familiar with, is developed by the American company Anthropic, and I use it mainly to structure, review, and check the work. Its new models are increasingly more expansive in their abilities and use cases.
585
586Finally, I occasionally use ChatGPT, OpenAI’s more widely used AI assistant, for an additional review.
587
588Of course, I oversee the entire operation. These tools are far from being entirely trustworthy, despite how impressive they currently are. The need for human oversight, which requires deep and broad knowledge of the work, will likely remain necessary for the foreseeable future.
589
590## Discussion and Outreach
591
592During the virtual subscriber gathering, other participant proposals touched on my outreach and awareness challenge.
593
594South African filmmaker Chantel Clark said she used Akoroko and AFP research, specifically for African market statistics, in conversations with sales agents and distributors. She suggested working with institutes on the continent and beyond that run development programs for African filmmakers, to introduce more filmmakers to the tools and help first-time market participants prepare.
595
596Leonelli recommended contacting European filmmaker associations, presenting short case studies showing how the data can support financing, and proposing a panel on African cinema and data for platforms like South by Southwest, the annual film, music and technology conference in Austin, Texas.
597
598Mwine suggested approaching festivals that program African films or want stronger connections with African filmmakers.
599
600## Pricing Update
601
602The conversation also covered the evolution of Akoroko Premium pricing. What began primarily as a reporting and analysis subscription now includes research tools, data accumulation, industry updates, direct access to me, and more. I shared that I will raise prices again soon — for new signups, of course — while keeping current subscribers on their existing rates. (Note: as of August 21, 2026, the price increase is live.)
603
604I closed by confirming that I'd be in Locarno, Switzerland, from 5 to 11 August 2026 for the Locarno Film Festival and AFP’s work with Open Doors (including the Critics Prize), its co-production and talent-development programme.
605
606Thanks again to everyone who joined. It was very useful. The feedback was most appreciated!
607
608I look forward to holding more of these gatherings, perhaps quarterly or twice a year, depending on subscriber interest. I would also like to organize live, in-person events exclusively for subscribers in the future.`,endCta:{text:"To learn more and subscribe to Akoroko Premium, click here.",href:"/subscribe"}},{slug:"afp-box-office-registry-live-aug20-2026",title:"The African Film Press (AFP) Box Office Registry Is Live",category:"Data",date:"August 27, 2026",summary:"AFP opens Version 1.0 of its Box Office Registry to Akoroko Premium subscribers, covering theatrical-market evidence across all 54 African countries.",author:"Tambay A. Obenson",isPremium:!0,readTime:"8 min read",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/KvTBYEiQMdDmbHaS.png",featuredImageFull:!0,content:`I’ve spent a good part of the last few months trying to answer questions about African theatrical markets that should, in theory, be fairly easy to answer.
609
610How much does a market generate annually? How many people are going to the cinema? How many screens are operating? What are individual films earning? Who actually collects this information?
611
612The answers vary enormously by country, and finding them has often meant going well beyond the usual film-industry sources.
613
614The result is the African Film Press (AFP) Box Office Registry, which I’m opening to Akoroko Premium subscribers today.
615
616This is Version 1.0, and it covers all 54 African countries.
617
618There is no continent-wide reporting system. Some countries publish national box-office totals. Some publish admissions. Some have regular commercial reporting but no government total. Others require cinemas to report tickets or gross receipts to regulators or tax authorities, but those records are not publicly available. In several countries, useful information is scattered across statistical yearbooks, cinema licenses, government budgets, exhibitor reports, professional bulletins and older administrative records.
619
620So I wanted the Registry to do more than simply collect whatever box-office numbers were easy to find.
621
622## What’s in the Registry?
623
624For 18 countries, I’ve been able to establish a defensible estimate of a full year of theatrical box-office revenue.
625
626Combined, those 18 markets represent about $123 million in annual box office, with an estimated range of roughly $101 million to $142 million.
627
628Sixteen of those country figures capture 2025. South Africa currently uses its latest official full-year figure, from 2024, while Kenya uses its latest annual estimate based on 2024–25 evidence. So the $123 million is best understood as an estimate of the current annual size of those 18 theatrical markets, not an audited calendar-year total.
629
630One important point about scope: the Registry measures box office generated in African markets, not box office generated only by African films. The national totals include all films released theatrically: locally made African films alongside Hollywood studio releases, Indian films, European films and elsewhere.
631
632The other 36 countries are excluded from the $123 million calculation. They are not counted as zero.
633
634And we now know enough about those 36 markets to put the missing part of the continent in some perspective. The Registry documents more than 160 screens or cinema rooms across them, although several country counts are still being compiled. By comparison, at least 1,160 screens are already quantified across the 18 markets with annual-gross estimates, before adding a Nigeria-only screen total.
635
636That difference in exhibition capacity, together with the admissions, ticket-price, and other market evidence recovered so far, suggests that the 36 countries without national-gross estimates are unlikely to add another $75 million or $100 million to the continental total. Based on the evidence currently available, I think Africa’s total annual theatrical box office is likely below $200 million.
637
638To be sure, I’m not assigning speculative national grosses to the 36 countries simply to make the arithmetic complete. A country can lack a published national box-office total and still have quite a lot of useful theatrical information.
639
640Depending on the country, I found admissions figures, regulator ticket reports, cinema taxes, gross-receipt reporting requirements, exhibitor licensing records, official statistics, municipal cinema revenue, venue counts, screen counts and other evidence that helps establish what theatrical activity looks like and who is collecting information about it.
641
642Consequently, over time, we will be able to narrow that continental estimate considerably.
643
644### A few examples
645
646- Uganda’s communications regulator publishes quarterly cinema-ticket counts.
647- Mozambique’s national statistics agency recorded 20,535 cinema spectators across 85 sessions in Maputo in 2024.
648- Tunisia has an official national cinema-statistics series, with 2.211 million admissions recorded in 2022.
649- Guinea requires cinema exhibitors to report spectators and gross receipts.
650- Mauritania’s cinema-tax system requires monthly reporting of gross receipts and tickets sold.
651- Ethiopia has measured municipal cinema revenue and admissions data, although the latest figures I have recovered are historical.
652
653In other words, “no national gross” does not mean “no data.”
654
655These observations are not interchangeable. But taken together with the much smaller documented cinema estate across those countries, they provide some basis for at least judging the likely scale of what's missing from the $123 million estimate, to start — hence the sub-$200 million estimate.
656
657## Film Results
658
659There is also a separate Films section.
660
661Version 1.0 includes:
662
663- 243 individual film results
664- 216 unique titles
665- Results from 8 African theatrical markets
666
667These are film-level box-office or admissions results attributable to the market shown. The amount of available information differs sharply by country. Nigeria, Côte d’Ivoire and Morocco currently have some of the deepest film-level reporting in the Registry. Other markets may have only a few usable results.
668
669I’ve tried to keep the inclusion standard strict. The dataset is smaller than it would be if I included every claim I found. I think it's more useful this way.
670
671The number of recorded films in the registry will grow as we identify and verify more recent titles and box office. Inevitably, the AFP Distribution Registry will also be directly linked to the Box Office Registry, capturing the so-called international festival-facing African films that open in cinemas at home.
672
673## Analysis
674
675The Analysis section is where I use the country and film data to look across markets.
676
677There are currently 16 analyses. Among them: Anglophone West Africa box-office revenue increased about 2.4 times between 2019 and 2025 even as admissions fell 46%; its top 25 cinemas generated 74.8% of the territory’s box office.
678
679In Morocco, the five highest-earning cinemas accounted for 87.6% of national revenue, while another analysis compares MAD 150.72 million in public film spending with MAD 129.78 million in theatrical revenue.
680
681The section also compares screen provision across countries, tracks the closure of CanalOlympia’s 18-hall network, examines local-film performance, and looks at cases where official attendance data exists even though a national gross does not.
682
683The point is to make use of the Registry as a combined dataset to extract a range of insights.
684
685## Reporting & Data Trails
686
687Every country has a Reporting & Data Trail. This lets you go beyond the information in the main table.
688
689For each country, I’ve documented the institutions responsible for cinema information, the reporting and licensing systems I found, what individual sources establish, what they don't establish, conflicting figures, and what record or dataset I still need to find.
690
691So if you open Uganda, for example, you can see not only the quarterly ticket figures but also what the regulator says about its reporting system and what remains unknown about coverage.
692
693If you open Guinea, you can see the legal reporting requirements for spectators and gross receipts.
694
695If you open a country where I have not found a national annual gross, you should still be able to see what AFP knows, how we know it, and what we are looking for next.
696
697For some of you, that research layer may be more useful than the headline box-office estimate.
698
699## Sources & Method
700
701The Sources & Method section also explains how the Registry is constructed.
702
703The main confidence categories are:
704
705- Official
706- Triangulated
707- Modelled
708- Partial
709- No national gross
710
711Not every $1 million figure in the Registry means the same thing.
712
713Each country record shows where its box-office figure came from and how it was calculated, so you can judge how much weight to give it.
714
715Every monetary market estimate also includes a range.
716
717And where credible sources disagree, I keep the disagreement in the research record.
718
719## Fair Warning
720
721This Registry contains a lot.
722
723As with the pro Streaming & Infrastructure Registry, different subscribers will probably use very different parts of it.
724
725A producer assessing a release territory may start with the main Markets table.
726
727A journalist may be looking for the source behind a number.
728
729A researcher or policymaker may care much more about a country’s ticket-reporting system, admissions series or cinema-estate data than its annual gross.
730
731An investor may want to know how many screens a market has, what tickets cost and whether there is evidence of regular paid attendance.
732
733Search for what you need. Filter the table. Open individual countries. Compare markets. Come back when a particular territory or film becomes relevant.
734
735A “How to use this registry” section at the top offers a few starting points.
736
737## Version 1.0 means Version 1.0
738
739There are still gaps, of course.
740
741The work doesn't stop. With direct contact with key reporting agencies, cinema operators, and distributors in some unmapped countries, outreach is accelerating. New national reports will be added. Estimates will change when better information becomes available. We'll correct old records when conflicts are resolved. We'll add more film results as they are verified.
742
743As with the other AFP tools, subscriber use will tell me what needs work, so please don't be shy.
744
745I'm excited about the ideas I plan to implement over time.
746
747## Getting in
748
749Unlike some of the AFP tools I released earlier this year, the Box Office Registry does launch with a stripped-down mobile version.
750
751You can search, filter, move between sections, and open country records on a phone.
752
753But there is a lot of information here, and the Markets and Films tables are much easier to work with on a laptop or desktop.
754
755The link: https://africanfilmpress.com/box-office-registry
756
757Password: Ochre-Falcon-52
758
759If you have any access problems, reply directly to this email.`},{slug:"fic-luanda-festival-returns-angola-aug20-2026",title:"After an 11-Year Absence, Angola's State-backed FIC Luanda Festival Returns to a Busier Film Landscape",category:"Exhibition",date:"August 20, 2026",summary:"Angola's state-backed FIC Luanda will return from 28 October to 2 November 2026, reviving the festival after an 11-year absence amid a more active domestic film landscape.",author:"Tambay A. Obenson",isPremium:!0,readTime:"6 min read",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/ulbMFtGtvJjdZdbF.jpg",featuredImageFull:!0,content:`Lusophone African cinema occupies a much smaller place in continental film discourse than the scale and continuity of its actual activity would suggest. I'd say that the disparity is especially apparent in Angola. So when stories like this land on my virtual desk, I share them.
760
761## A Return After Eleven Years
762
763The Festival Internacional de Cinema de Luanda (FIC Luanda) will return to Angola’s capital from 28 October to 2 November 2026, reviving the state-backed film festival for its eighth edition after an 11-year absence.
764
765Angola’s Agência Nacional das Indústrias Culturais e Criativas (ANICC), the public agency responsible for cinema, audiovisual activity and other cultural and creative sectors, presented the 2026 festival structure to around 20 Angolan filmmakers, producers and other audiovisual professionals at a meeting in Luanda on 18 August 2026.
766
767## 2026 Programme and Timetable
768
769ANICC said it expects the festival to screen approximately 120 films from more than 18 countries, using three principal screening venues and five parallel sections alongside the competitive programme. The edition will also include special screenings, talks, professional discussions and training activity, including LUALab, a development programme for early-stage Angolan fiction projects.
770
771As of 18 August, the festival had received 41 Angolan submissions for its national competition: 25 fiction shorts, nine fiction features and seven documentaries. The current national call closes on 30 August 2026, and selected filmmakers will be notified on 15 September.
772
773LUALab applications close on 7 September, with six projects scheduled to be selected on 14 September. Online sessions will take place on 5–6 October, followed by an in-person lab in Luanda from 29 to 31 October, during the festival.
774
775FIC Luanda was launched in 2008, and last held a documented edition in November 2015, when its seventh edition screened 30 films, including 12 Angolan productions. The festival’s return has been written into PLANACULT 2025–2027, Angola’s national culture plan approved on 14 April 2025, which explicitly called for ANICC to reactivate FIC Luanda.
776
777The 2026 edition is being developed with Geração 80, the Luanda-based Angolan film production company behind Hugo Salvaterra’s “Meu Semba,” Fradique’s “Air Conditioner” and Ery Claver’s “Our Lady of the Chinese Shop.” “Meu Semba” premiered at IFFR in January 2026; “Air Conditioner” premiered at IFFR in 2020; “Our Lady of the Chinese Shop” premiered at Locarno in 2022.
778
779In June, Angola’s Ministry of Culture awarded the company a Kz160 million (about $175,000) contract connected to promotion and publicity for FIC Luanda. Geração 80’s Jorge Cohen is listed as festival director, while Lara Sousa is programme coordinator.
780
781## A Busier Domestic Landscape
782
783The festival is certainly returning to a more active domestic industry landscape than the one it left in 2015. Angola’s current culture plan lists several operating film events, including the documentary festival DOCLUANDA, Viana Cine Fest, FESC-KIANDA, Unitel Angola Moove and Luanda PAF. At the same time, Angola’s Ministry of Culture and ANICC are restoring major cinema infrastru
783cture, including the Cine Teatro Nacional and Cinemateca Nacional in Luanda; discussing permanent public-financing mechanisms for film festivals; and advancing regulations to implement the country’s 2012 Cinema and Audiovisual Law.
784
785The complete FIC Luanda 2026 selection, international competition, juries, five parallel sections, and full venue list will be announced soon.
786
787## Visibility Beyond Angola
788
789Meanwhile, locally, films are being made, projects and talent are being developed, festivals are being held, cinemas are being programmed, and public institutions are investing in the sector. But much of that activity circulates within a relatively small Portuguese-language African sphere, while continental film discourse and industry networks operate heavily in English and French. At the same time, reliable audience and box-office data, international sales and distribution, and formal co-production agreements are limited. As a result, taken together, much activity remains less visible beyond Angola than it should be.`},{slug:"akoroko-premium-pricing-update-aug20-2026",title:"Akoroko Premium Pricing Update as the Work Continues to Grow",category:"Industry",date:"August 20, 2026",summary:"Akoroko explains its Premium pricing update, expanded localized rates, and the introduction of institutional access as its tools and research work grow.",author:"Tambay A. Obenson",isPremium:!1,readTime:"7 min read",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/RSxmDJMfBmMwAicw.jpg",featuredImageFull:!0,content:`Akoroko Premium launched in April 2024 at $8 per month or $72 per year in markets without localized pricing.
790
791On February 1, 2026, I increased that price for the first time to $12 per month or $120 per year. Localized prices did not change then.
792
793I am now preparing the next pricing update.
794
795**PLEASE NOTE: If you are currently subscribed, your existing rate will remain in place as long as your subscription continues without interruption. If your subscription ends and you return later, the pricing available then will apply.**
796
797## Akoroko Is Still a Lab
798
799I've described Akoroko as a lab since launch — developing in public, tracking usage, listening to feedback, adjusting, trying again, evolving.
800
801Pricing is part of that process too.
802
803I don't have an established price list to follow for this particular combination of specialist reporting, proprietary registries, continuously maintained research, professional tools, and direct access.
804
805When Premium launched at $8 per month, I didn't know if people would pay for it.
806
807When the price increased to $12 per month in February this year, I didn't know if people would pay that either.
808
809In both cases, they did.
810
811Admittedly, the subscriber base is still relatively small, as I would expect for a one-person specialist professional service focused on African screen sectors, particularly given that I have done almost zero marketing. In fact, I have intentionally not publicized Akoroko Premium at all this year. This pricing change will coincide with the first real push for new subscribers in 2026. The social posts that some of you may remember seeing occasionally on LinkedIn, Twitter, Instagram, Bluesky, and elsewhere are coming back.
812
813But the work itself has become much larger.
814
815A small professional audience also means that the cost of producing and maintaining this work can't be spread across tens of thousands of subscribers. Research takes time. Tool development costs money. Data needs maintenance. Reporting continues every week.
816
817The question I've wrestled with lately is whether the service as it exists today can support a substantially higher price.
818
819I don't know the answer yet.
820
821So this is another experiment... another test. We'll see.
822
823## What Has Changed Since February
824
825When I wrote on February 1, Akoroko Premium was already shifting beyond the newsletter it began with. Seven and a half months later, that process has accelerated considerably.
826
827Premium now includes access to a growing set of research and intelligence tools alongside the reporting and analysis that subscribers already receive, though less of it, per subscriber feedback.
828
829These include the AFP Pipeline Registry, which tracks film and series projects across development, financing, production and completion; the AFP Distribution Registry, which tracks sales, distribution and availability for African films;
829 the Streaming & Infrastructure Registry, which tracks companies, platforms, ownership, investment and infrastructure activity across African screen sectors; and the Funding Desk, which tracks and matches verified film financing opportunities and deadlines.
830
831There is also the Ask Akoroko Premium chatbot, which lets you query the archive.
832
833A subscriber-only version of the public Co-Production Treaty Registry is in the works. And an African Continental Box Office Registry is also in development, with an initial version expected to be introduced shortly.
834
835Other trackers and research products continue to be tested and added as the underlying information becomes strong enough to publish. Meanwhile, the existing tools continue to evolve and will only become much more comprehensive and dynamic over time.
836
837These products require a different kind of work from publishing a newsletter. Records have to be researched, checked, structured, maintained, and corrected. Sources change. Deals change. Projects change status. Companies enter and leave markets. New information can require revisiting older records.
838
839Meanwhile, the reporting continues alongside all of that.
840
841Premium access also includes direct access to me for questions, discussion, and consultation. I've generally treated that access as part of the subscription rather than charging separately for each conversation or question. The new pricing accounts for that more realistically.
842
843## The New Pricing
844
845The standard Akoroko Premium subscription price will increase to $25 per month or $250 per year.
846
847The new pricing will apply to new subscribers when the revised subscription options go live.
848
849**ONCE AGAIN, PLEASE NOTE: If you are currently subscribed, your existing rate will remain in place as long as your subscription continues without interruption. If your subscription ends and you return later, the pricing available then will apply.**
850
851## Localized Pricing Is Changing Too
852
853Localized pricing has been part of Akoroko Premium since its early days because a single U.S.-dollar price doesn't make sense across markets with very different currencies and purchasing conditions.
854
855When the standard subscription increased from $8/$72 to $12/$120 in February 2026, I left localized pricing unchanged. Those localized rates have therefore largely stayed at their original levels since 2024, even as Premium itself has expanded.
856
857That changes with this update.
858
859The revised structure covers 26 localized-pricing markets: Angola, Botswana, Brazil, Côte d’Ivoire, Democratic Republic of the Congo, Dominican Republic, Egypt, Ethiopia, The Gambia, Ghana, Jamaica, Kenya, Liberia, Malawi, Morocco, Mozambique, Namibia, Nigeria, Rwanda, Senegal, Somalia, South Africa, Tanzania, Uganda, Zambia and Zimbabwe.
860
861The list is informed partly by actual subscriber activity. Akoroko Premium already has paying subscribers in each of these markets, including countries where English is not the primary working language. In some cases, that may mean only one, two, or three subscribers, so I wouldn't treat it as definitive evidence of market size. It does, however, tell me that there are professionals in those countries willing to pay for and use an English-language service with an African screen sector focus. Translation tools also make English-language professional material increasingly usable for readers who may not work fluently in English.
862
863Prices are set in local currencies wherever the checkout system supports them and remain below the standard US$25 monthly / US$250 annual rate.
864
865Localized pricing is also an experiment. Rates will continue to be reviewed against actual use, currency conditions, and what makes the service workable in each market.
866
867## Institutional Access
868
869Another change is the introduction of a separate institutional subscription.
870
871Over the past year, I've seen more individual subscribers coming from international organizations and institutions, including companies, universities, and professional bodies. In some cases, multiple people from the same organization subscribe separately. That doesn't yet amount to an institutional subscription, but it does indicate that professionals within those organizations are using the reporting, registries, and research.
872
873Several subscribers have also told me directly that an institutional option was overdue.
874
875Institutional access will therefore start at $2,500 per year for up to 10 seats.
876
877There is currently no monthly institutional plan. The structure may develop as I learn how organizations actually use it.
878
879## What This Means for Current Subscribers
880
881One last time: your current subscription price stays in place as long as your subscription remains active without interruption.
882
883You do not need to do anything.
884
885If you cancel and later resubscribe, you will return at whatever price is available at that time.
886
887## A Final Word...
888
889Akoroko Premium is now a little over two years old.
890
891It started as a fairly simple proposition: could paid subscriptions supp
891ort independent, continuous professional reporting on African screen sectors?
892
893That question is still without a clear answer, but the platform being supported has changed considerably.
894
895The reporting continues. A growing research operation now occupies spaces underneath it: registries, trackers, structured datasets, source archives, research tools, and direct professional support.
896
897These products are still early, with a long road ahead. I also see this work as an entry point, not the full extent of what I hope to build. The reporting, data, registries, and intelligence operations provide a foundation that can eventually support work further into the creative and commercial sides of African film, television, and digital media as well. That will take time, partnerships, and considerably more capacity than I have now.
898
899In the near term, I don't know whether people will pay $25 per month or $250 per year (or any of the increased localized prices) for what Akoroko Premium currently is.
900
901We'll find out.
902
903Thank you for continuing to read, use, question, and support the work — especially those of you who've been around since launch two years ago!`},{slug:"next-narrative-africa-fund-aug18-2026",title:"Next Narrative Africa Fund Discloses $450,000 in First-Slate Grants, Launches Institute",category:"Industry",date:"August 18, 2026",summary:"Akunna Cook's Next Narrative Africa Fund says its first nine projects have received $450,000 in development grants and introduces a permanent nonprofit institute.",author:"Akoroko",isPremium:!1,readTime:"6 min read",headerImage:"/manus-storage/next-narrative-africa-fund-aug18-2026_18ecd081.jpg",content:`Five months after announcing its first nine film and television projects, Akunna Cook’s Next Narrative Africa Fund (NNAF) has shared more about what has happened since.
904
905## $450,000 in First-Slate Grants
906
907The most concrete number is **$450,000**.
908
909In an email announcement sent today to NNAF's newsletter distribution list, Cook disclosed that the nine projects have collectively received $450,000 in development grants. She again put their prospective production activity across Africa at more than $60 million, the same figure NNAF cited when it announced the cohort in March. She has provided no methodology or project-level budget information for that estimate.
910
911In March, I clarified that the widely reported $50 million Next Narrative Africa Fund and what those nine projects had actually received were two different things. They were development grantees drawing from the planned $10 million nonprofit side. They had not received production financing from the separate $40 million commercial equity fund.
912
913An aside: that March piece, “What ‘Africa’ Meant in Next Narrative Africa Fund’s First Slate,” has so far been the most widely read and distributed piece I have published this year, across both the publicly available version and the versions sent to Akoroko subscribers. The attention it received said something about how closely people were following the fund after the first cohort announcement, and how many questions and concerns the selection generated among African filmmakers and producers.
914
915So, of course, I was going to write about this update. As far as I can tell, this is Cook’s first direct public correspondence specifically about the fund and the inaugural cohort since March.
916
917We now know what has been distributed to that first group, although not what each project received individually: **$450,000.**
918
919## A Permanent Home for the Nonprofit Work
920
921But what's even more noteworthy in Cook's email today is the launch of what she calls the Next Narrative Africa Institute, described as a permanent home for the nonprofit side of the work.
922
923The Institute will fund project development and research, advocate for production policy and incentives across African countries, and organize events connecting filmmakers, financiers, creative-industry professionals and diaspora communities.
924
925It's also fundraising.
926
927The Institute is currently operating as a fiscally sponsored fund under Build Up Inc., with donations processed via Every.org. Cook says contributions will support its work, including the next round of development grants and the research behind them.
928
929That makes one of the questions I had in March more relevant now: how much of the originally announced $10 million nonprofit pool has actually been raised?
930
931The same question applies to the $40 million commercial fund.
932
933To be sure, it's only been five months. But given the size and coverage of the original $50 million announcement, I think it's necessary to continue making these distinctions.
934
935One other development of note since the cohort announcement — I didn't cover the reveal — is NNAF’s study with entertainment analytics company Parrot Analytics, which was released on April 23, 2026, six weeks after the slate announcement. It received considerably less attention than the cohort itself.
936
937When the first participants were announced, much of the conversation among continent-based filmmakers and producers was about who had been selected and what kind of opportunity they thought they had been applying for. The presence of internationally established or diaspora-based talent, including Trevor Noah and Rapman, led some applicants to question how they could compete in the same pool. I wrote about that at length at the time, so I won’t repeat it here.
938
939Nothing announced today really changes that discussion.
940
941If anything, the Institute gives us a fuller picture of Cook’s project. Next Narrative Africa is combining development grants, eventual commercial investment, audience research, policy advocacy and industry convening around the idea that African film and television can attract substantially more global capital.
942
943Cook says the Institute intends to push for more production incentives across the continent, arguing that requiring projects to spend at least half their production in Africa only w
943orks if countries have competitive places to shoot.
944
945That part makes sense to me. I made a similar point in March: private capital can only do so much when public financing, production incentives, co-production structures, and other forms of national support remain weak or inconsistent across much of the continent.
946
947## Questions Still Outstanding
948
949That said, I still have a few basic questions.
950
951How much of the $10 million development target has been raised? How much of the $40 million commercial fund has closed? Have any of the nine projects moved into equity consideration? When does the next development round open? And after the reaction to the first cohort, has anything changed in how NNAF intends to reach and support filmmakers and production companies working primarily on the continent?
952
953Again, five months might be too soon.
954
955But we now have at least one real number to put beside the original $50 million announcement: $450,000 has been distributed to develop the first nine projects.`},{slug:"africa-coproduction-treaty-registry-aug18-2026",title:"Africa Co-Production Treaty Registry — August: Togo–Senegal Agreement Loading...",category:"Data",date:"August 18, 2026",summary:"The Africa Co-Production Treaty Registry remains at 21 of 54 African countries with confirmed instruments, while a potential Togo–Senegal agreement is tracked as announced and pending confirmation.",author:"Akoroko",isPremium:!0,readTime:"6 min read",headerImage:"/manus-storage/africa-coproduction-treaty-registry-aug18-2026_583d3e4f.jpg",featuredImageFull:!0,listenId:"africa-coproduction-treaty-registry-aug18-2026",content:`This month's update continues the work described in the July update: checking the continent's co-production record against the authorities themselves, adding verifiable agreements, correcting dates and statuses, and keeping developments visible when evidence shows progress but not yet enough to call them confirmed.
956
957The headline count remains 21 of 54 African countries with a confirmed co-production treaty, agreement, or related cooperation instrument on record.
958
959But one current development is worth noting: Togo and Senegal may be moving toward what appears to be Togo's first bilateral film co-production agreement.
960
961## Togo–Senegal: A Potential First for Togo
962
963Togo currently has no confirmed bilateral film co-production agreement with another country in the official record I have been able to establish.
964
965The country has acknowledged this absence. In 2024, its Ministry of Tourism, Culture and Arts identified the lack of co-production contracts between Togo and other states as one key structural problem facing a fledgling Togolese cinema.
966
967Senegal was the guest of honor at the ninth Festival International du Film du Togo (FIFTO), held in capital city Lomé from 14 to 18 April 2026. FIFTO is Togo's state-backed international film festival, which grew out of the country's Semaine nationale du cinéma togolais and took its current international form in 2024.
968
969Ahead of the festival, organizers announced they would sign a Togo–Senegal film co-production agreement to strengthen cooperation between professionals in the two countries and make public financing for joint projects easier to access.
970
971Togo-Presse reported that Senegalese and Togolese professionals had used the festival week to work on a legal framework and co-production agreement between the two countries. The Togolese Culture Ministry's own account of the Senegal program, published the following day, described the countries' cultural and film cooperation but did not announce that the agreement had actually been signed.
972
973I have not found any later official confirmation of a signature, nor have I received a response to my inquiries.
974
975So rather than either leave it out or count something that may not yet be legally complete, the registry now includes Togo–Senegal as: **Announced / pending confirmation.**
976
977It does not count toward the 21 confirmed countries or the registry's 64 confirmed records. If a signed agreement is eventually confirmed, it would appear to be Togo's first confirmed bilateral film co-production agreement in the record recovered so far.
978
979## Six Previously Missing Agreements Added
980
981The rest of this month's changes come largely from continuing to work backward through the historical record.
982
983Direct confirmation out of Morocco again produced the largest change.
984
985The Moroccan Cinema Centre identified four agreements that were still missing from the registry: Argentina, the United Kingdom, Italy and Syria. Morocco therefore moves from 12 confirmed partners to 16.
986
987Morocco signed the Argentina agreement in Buenos Aires in 2000. The UK agreement was signed in London in 2009 and entered into force in 2013. Morocco's agreement with Italy dates to 1991 and entered into force in 1999, while the Syria agreement was signed in Damascus in 2001.
988
989Two other historical agreements were also missing.
990
991Algeria–Italy was signed in Rome a year ago, on 23 July 2025. Italy's Ministry of Culture has not yet listed an entry-into-force date, so the registry records it as signed but not active.
992
993Also, Tunisia–Italy was signed in Tunis in 1988 and entered into force in 2005.
994
995Together, those additions bring the registry to 64 confirmed treaty, agreement, and cooperation records across the same 21 African countries.
996
997## Dates and Statuses Tightened
998
999This month's audit also corrected or clarified a few records already in the registry.
1000
1001Official Wallonia-Brussels records provided exact dates for agreements with Senegal, Burkina Faso, Morocco and Tunisia. South Africa's agreements with the Netherlands, Italy and France were also updated with exact signing and, where available, entry-into-force dates.
1002
1003Nigeria's 2025 agreement with Brazil received an important status correction.
1004
1005It had previously been classified as a cooperation instrument. Brazil's Ministry of Culture and ANCINE identify it as a bilateral audiovisual co-production agreement, but, as I've already reported, not yet in force. Brazil's domestic process for bringing the agreement into effect is still incomplete.
1006
1007So the agreement itself is signed. Its entry into force is what remains outstanding.
1008
1009## Next: The Subscriber Version
1010
1011The subscriber version I previewed last month is still in active development.
1012
1013The distinction remains the same: the free registry tells you what agreements exist and their status. The subscriber version will provide the professional with much more actionable information, and will likely be closely linked with the AFP Funding Desk: contribution requirements, minimum participation levels, cast and crew rules, national film treatment, competent authorities, approval procedures, and the benefits available once a production qualifies.
1014
1015Each agreement has to be scoped and structured individually, so this is considerably more detailed work than identifying the treaties themselves.
1016
1017I'm continuing with that now and will share more as it takes shape.
1018
1019## The Standing Note
1020
1021The registry, which you can access here, is the source of record; the map — access it here — is the fastest way to read it. Both update at the same time.
1022
1023As ever, subscriber feedback shapes this work. Still fluid.`},{slug:"locarno-audience-building-lessons-aug18-2026",title:"10 Audience-Building Lessons for Filmmakers and Producers From Locarno’s Open Doors Panel",category:"Industry",date:"August 18, 2026",summary:"Ten lessons from Locarno Open Doors on building audiences during a film’s development, financing, production and release strategy.",author:"Akoroko",isPremium:!1,readTime:"8 min read",headerImage:"/manus-storage/locarno-open-doors-audience-building-aug18-2026_e78f30ad.jpg",featuredImageFull:!0,content:`Audience research, community partnerships, press planning and direct communication can begin while a film is still being developed and financed. That was the central proposition of an Open Doors discussion I participated in, held at the Locarno Film Festival on Friday, 7 August 2026.
1024
1025“Audience by Design: What African and Global South Models Can Teach the Industry About Building Audiences Before You Build the Film” brought together approximately 25 producers and directors from the 2026 Open Doors cohort. For the uninitiated, and as a refresher, Open Doors is the Locarno Film Festival’s professional development and international co-production program for filmmakers from countries with limited access to the international film business. Its 2025–2028 cycle c
1025overs 42 African countries.
1026
1027South African curator and producer Mitchell Harper, a member of the Open Doors artistic team, moderated the participative session. I joined Lagos-based producer Chioma Onyenwe, founder of Raconteur Productions; South African producer Steven Markovitz; Serge Noukoué of Okada Media and NollywoodWeek in Paris; and Carmen Thompson, head of distribution and special projects at We Are Parable, the British exhibition and distribution company serving Black audiences.
1028
1029The panel’s organizers proposed that shrinking film finance, distributor consolidation and fewer presales in established film markets around the world give the global industry reason to study audience-cultivation practices developed across Africa and the Global South, where filmmakers have long worked under similar constraints. The open conversation itself tackled the complications.
1030
1031Here are ten lessons from the discussion.
1032
1033## 1. Begin audience planning during development
1034
1035It's never too early to begin audience work. Filmmakers and producers are encouraged to place audience planning alongside the actual project development process — writing, financing, casting and production strategy.
1036
1037Markovitz said producers already do part of this work during fundraising. They identify organizations, individuals and communities with reasons to support a film. Those relationships can later contribute to screenings, publicity, partnerships and distribution.
1038
1039Starting early also gives producers time to understand what different audiences may expect from the project.
1040
1041## 2. Use audience evidence in financing and distribution discussions
1042
1043Distributors and investors often want evidence that a film can attract paying audiences. Producers can provide that evidence by documenting key indicators, including community interest, newsletter subscriptions, event attendance, advance commitments, partnerships, or engagement with substantive material connected to the film.
1044
1045> “You often have to go to distributors with an audience,” Markovitz said. “Otherwise, it’s hard to get their attention. It starts with financiers.”
1046
1047An identified audience alone certainly doesn't guarantee financing or distribution. But it gives decision-makers more information beyond general claims of a project's commercial prospects. It can also help producers weed out potential financiers, distributors and exhibitors who may not be suited to the film.
1048
1049## 3. Give every film its own audience strategy
1050
1051A method that works for one project may be unsuitable for another. Genre, subject, language, location, budget and political circumstances — particularly in the African context — all affect how early a film can communicate with potential viewers.
1052
1053Some of the panelists noted that films tackling politically sensitive topics may need to restrict public exposure — a challenge during production. Other projects may benefit from including targeted audiences in actual project research, sharing regular production updates or early marketing materials.
1054
1055The strategy should obviously follow the film: who makes sense for the approach, what information can be shared, which communication channels are appropriate, and when public engagement should even begin.
1056
1057## 4. Treat the viewing experience as part of the film’s appeal
1058
1059A screening can offer more than access to the film. Social gatherings, conversations, performances, food, music, fashion and appearances by cast or crew can give audiences additional reasons to attend.
1060
1061Onyenwe discussed how the Africa International Film Festival (AFRIFF), an annual film festival in Nigeria, has used parties, fashion, celebrity appearances, and other social activity to bring people into contact with independent and experimental work.
1062
1063She cited commercial cinema releases in Lagos where cast appearances and meet-and-greets influence customers who often arrive at a cinema without having selected a film to see.
1064
1065Thompson described collective viewing as a product in its own right. We Are Parable began by organizing event-based screenings for Black audiences in Britain before expanding into theatrical distribution. The audience experience is planned alongside the film-watching itself.
1066
1067## 5. Build direct communication channels with viewers
1068
1069Social-media platforms can help filmmakers find audiences, but access to followers depen
1069ds on algorithms and policies controlled by technology companies.
1070
1071In tandem, Thompson shared that We Are Parable has developed an email list of approximately 20,000 subscribers over 13 years. The company also uses WhatsApp to communicate directly with its audience.
1072
1073Email lists, messaging groups and membership databases of all sorts give film companies continuing access to people who have attended previous events or expressed interest in their work. These contacts can support later releases without requiring each campaign to rebuild its audience from scratch.
1074
1075Own the relationship and maintain the connection between releases.
1076
1077## 6. Approach African diaspora audiences as distinct communities
1078
1079“African diaspora audience” is an expansive term.
1080
1081Noukoué said some diaspora audiences respond to familiarity and nostalgia. Others use cinema to learn about the continent or experiences they haven't personally had. Those born in African countries may also respond differently, and have a different relationship with cinema from Africans born and raised elsewhere.
1082
1083Programming and marketing therefore require specificity. A film’s country, language, genre, subject and cultural references may appeal to different sections of the diaspora for different reasons. Distributors like Noukoué may need a varied selection of work and several ways of describing relevance.
1084
1085## 7. Explore shared infrastructure for Africa-owned streaming
1086
1087Onyenwe proposed greater consolidation or shared ownership among platforms. Pooling catalogues, technology costs and audience data could give services greater scale and reduce the cost of operating several separate platforms.
1088
1089Markovitz stressed investment in culturally specific local services, particularly advertiser-supported platforms and models that prioritize mobile viewing.
1090
1091Both proposals address the cost of maintaining streaming technology, acquiring content and reaching customers across countries with different languages, payment systems and viewing habits. They also keep audience data and commercial relationships closer to African producers, distributors and platform operators.
1092
1093## 8. Consider stories with established readerships and cultural recognition
1094
1095Books, mythology, oral traditions and familiar history can offer a project a real, identifiable audience before production even begins.
1096
1097We discussed Senegalese filmmaker Angèle Diabang’s adaptation of “So Long a Letter,” Mariama Bâ’s 1979 novel about friendship, marriage and women’s lives in post-independence Senegal. The novel is widely taught and already known to several generations of readers.
1098
1099I contributed that African literature and mythology offer producers rich, untapped stories with wide cultural recognition and real value when assembling financing, talent and distribution relationships.
1100
1101Onyenwe added that adaptation still requires careful audience work. Familiarity with a book or story can provide an initial constituency, though filmmakers still must determine how that interest can be converted into support for a screen production.
1102
1103## 9. Involve journalists before the premiere
1104
1105Press engagement often seems to begin when a film learns its festival premiere status, distributor release date, or even its trailer debut. Earlier outreach can give journalists time to build narratives around the production, its creative team, its subject, and its place within a national or regional screen sector.
1106
1107I offered that filmmakers and producers should identify relevant journalists from the development stage. One project may support several stories over its production period, each directed at different professional or public audie
1107nces.
1108
1109I also called for a firm separation between independent journalism and arrangements in which filmmakers pay reporters to attend events or publish favorable coverage. Paid publicity certainly has a legitimate role. Presenting paid promotion as independent reporting hurts actual coverage and genuine film criticism, erodes audience trust, and the professional value of the press.
1110
1111In the African context, journalists often struggle to retain editorial control, while filmmakers and producers themselves struggle to understand that coverage can't be guaranteed.
1112
1113## 10. Develop future audiences in schools and with children’s films
1114
1115Audience development also requires long-term investment in young viewers.
1116
1117Noukoué discussed considering partnerships with schools, daytime educational screenings, public support for locally produced children’s films, and regular film education. These activities can introduce children to local stories while teaching them how to interpret and discuss screen work.
1118
1119Thompson added that schools offer filmmakers an already structured route to audiences who may have limited access to cinemas or locally produced children’s content. Educational screenings can also connect films with teachers, parents, cultural institutions and public agencies.
1120
1121Taken together, the discussion treated audience-building as skilled, budgeted work that affects decisions throughout a film’s development, not just towards the end. It means identifying specific audiences, assembling evidence of their interest, choosing suitable routes to reach them and retaining those relationships for future work.
1122
1123For filmmakers and producers operating without assured distribution or substantial release budgets — the norm continent-wide — those decisions must begin well before the film is completed.`},{slug:"afp-distribution-registry-206-records-aug17-2026",title:"AFP Film Distribution Registry: What 206 African Film Distribution Records Are Starting to Tell Us",category:"Data",date:"August 17, 2026",summary:"The AFP Distribution Registry has reached 206 films. Its latest update concentrates on reconciling Pipeline records, refreshing distribution data, incorporating industry corrections, and introducing new tools for reading the dataset.",author:"Akoroko",isPremium:!0,readTime:"8 min read",headerImage:"/manus-storage/afp-distribution-registry-206-records-aug17-upper-half_035a24b8.jpg",featuredImageFull:!0,content:`> **NOTE:** This registry is just a couple of months old. It's clear to me what the Pipeline Registry, Funding Desk, Co-Production Treaty Registry, Streaming and Infrastructure Registry, and the in-development Box Office Registry are. As for this Distribution Registry, I’m still refining the coverage model.
1124
1125A defensible description of what it currently is reads something like this: the AFP Distribution Registry tracks African and African-diaspora films from select world premieres as they move from festival and industry circulation into sales, territorial acquisition, distribution, release, and commercial performance. Coverage is currently concentrated between 2024 and 2026, and will expand as AFP audits additional festivals, years, and circulation routes. It's a curated, expanding dataset; not a complete census.
1126
1127> The rest of this opening note can be read at the end of the update report that follows.
1128
1129Since the last update on July 26, the registry has grown only slightly, to 206 films. But this round was less about adding new films in release than about strengthening what's already there: reconciling the Distribution Registry with the Pipeline Registry, checking all 206 records for newer information, correcting stale or incomplete distribution data, and incorporating direct information from companies represented in the registry. The latter is something I hoped would begin to happen, and increasingly so — even though these platforms are subscriber-access only, word is starting to spread about their gated existence, and the companies and professionals with the information each tool needs in order to be complete are starting to reach out and contribute to the records.
1130
1131It's an ongoing, never-ending process, with the ultimate goal of building the most complete datasets our means allow.
1132
1133Here's what's different in the Distribution Registry since the last update almost three weeks ago.
1134
1135## Growth and Pipeline reconciliation
1136
1137### 206 films now
1138
1139- All 22 Pipeline Registry records marked "Premiered" were reconciled against the Distribution Registry.
1140- **Result:** 206 records, 206 unique AFP IDs, with a strengthened internal system that now sees premiered projects able to move from Pipeline into Distribution more efficiently and in a more timely manner.
1141
1142## Distribution status
1143
1144- 111 theatrical · 43 streaming · 16 television · 1 educational.
1145- 72 films have no documented distribution deal yet; 37 of those already have a third-party sales agent.
1146- 134 of the 206 films therefore have at least one documented distribution outcome.
1147- The first educational distribution record is now in the registry: "Perfumed With Mint," via Collective Eye Films in the U.S.
1148
1149## Full freshness pass
1150
1151- All 206 records were put through a new distribution-freshness review looking for newer sales agents, acquisitions, territories, distributors, release dates, streaming/broadcast availability, and corrections.
1152- Research was run across multiple language sources, with official and first-party sources given priority.
1153- 20 candidate changes survived the research stage. After source-by-source review, 14 were implemented; 4 were held because the evidence was not strong enough or conflicted; 2 were held because they require a decision about whether the registry should also capture rights availability beyond completed distribution. Subscriber feedback would help here.
1154
1155Among the updates: "Memory of Princess Mumbi" now has confirmed theatrical dates for East Africa, the U.S., France and Switzerland; "Hanami" adds Canal+ Afrique Distribution, German distribution and Play Suisse; "Khartoum" adds BBC iPlayer in the UK; "Ancestral Visions of the Future" adds U.S. MUBI availability;
1155 "My Father's Shadow" now identifies Le Pacte as its French distributor; "The Party's Over" adds Goodfellas as international sales agent; and U.S. dates were corrected or added for "Black Tea" and "Eagles of the Republic."
1156
1157We also corrected a few earlier role errors. For example, Luxbox remains the international sales company on "Who Do I Belong To," while KMBO is now correctly identified as the French distributor.
1158
1159## Direct industry corrections
1160
1161One especially useful correction came directly from Claire Diao at Sudu Connexion, for which I'm grateful.
1162
1163The "Disco Afrika: A Malagasy Story" entry in the Registry had been showing 909 admissions in France. That number came from only four weeks of available French reporting, not the film's complete run. Sudu Connexion confirmed that the film did more than 4,500 admissions in France.
1164
1165Because an exact final total was not supplied, the registry does not turn 4,500 into a false exact number. It now records "more than 4,500" and keeps the old 909 only as an explanation of the partial reporting window.
1166
1167Sudu also confirmed releases of "Disco Afrika" in Madagascar, France, Kenya, Benin, Burkina Faso, Senegal, Cameroon, Gabon, Côte d’Ivoire, Guinea, and Congo-Brazzaville. Those countries are now captured individually.
1168
1169She also filled in gaps for "Shimoni," which was released in Kenya, France, and French-speaking Africa.
1170
1171## Box office
1172
1173> **NOTE:** As stated earlier, the separate continental box office registry is still in development (I might tease it this week!) and is intended to cover African commercial releases, whether they came through the festival/institutional route or not.
1174
1175- 55 Distribution Registry films currently have box office/admissions data on file.
1176- 27 report an actual gross, totaling about $20.3M.
1177- The other 28 have admissions or other performance data but no usable reported dollar gross.
1178- Ticket-price-based estimates can currently be calculated for 26 of those films, totaling about $10.0M, and remain visibly separate from the reported $20.3M.
1179
1180## Sales agent data
1181
1182- 148 of 206 films now have a third-party sales agent on file.
1183- Another 11 are recorded as self-distributed / in-house.
1184- So the registry's representation filter currently shows 159 films with some form of sales representation and 47 with no agent found.
1185
1186Films Boutique is efficient: only 3 films, but they collectively reach 28 territories. Party Film Sales has 9 films / 30 territories. So Party leads on volume, but Films Boutique has much greater territorial reach per title.
1187
1188MAD World has the best combination of volume and deal conversion among the larger agents: 7 of 9 films have deals, covering 12 territories. Party Film Sales has 6 of 9 deals.
1189
1190The current full-registry read: films with a third-party sales agent have a documented distribution outcome 75% of the time, compared with 40% for films without one.
1191
1192Cannes is still the strongest conversion route among festivals with at least three films in the registry: 33 of 35 Cannes-premiered films, or 94%, have a documented distribution outcome.
1193
1194France dominates the Registry's documented commercial footprint. It accounts for box-office data on 36 films, compared with 13 “Worldwide,” 9 UK, 7 Côte d’Ivoire, and 6 U.S. No other individual territory has more than two.
1195
1196France is also the largest production-country cohort shown — 25 films — and overwhelmingly theatrical. The Registry is therefore documenting a very strong France-facing route for African/African-diaspora cinema.
1197
1198African territorial distribution is especially thin relative to international sales representation. No surprise. Nigeria, Kenya, Ghana, Uganda and Burkina Faso all appear near the top of the “open title” cluster despite being central African screen markets. That may be one of the most commercially useful findings in the whole Registry.
1199
1200## Festival coverage
1201
1202- Six of the festivals I specifically listed as next targets in the July 26 update are now represented: SXSW, Cinéma du Réel, DOK Leipzig, El Gouna, Fantasia and Sheffield DocFest.
1203- Doclisboa is still to come.
1204- Historical coverage continues back to 2021, though there's much to backfill, which will happen soon.
1205
1206## Interface / Insights
1207
1208- New Open territory filtering lets you ask: which films currently have no confirmed deal covering a particular market, with an optional channel filter for theatrical, streaming, television, or educational.
1209- A dedicated Box office on file filter now isolates titles with documented commercial-performance data.
1210- Distribution outcome tiles can be combined using Any selected / All selected, making it possible to isolate, for example, films that reached both theatrical and streaming rather than one or the other.
1211- The guided tour / "How to use" layer has been expanded for people opening the registry for the first time.
1212- "The Read" and the Insights panel continue to recalculate against whatever slice of the registry you create with the filters rather than presenting fixed headline statistics.
1213
1214## Gap-filling, still ongoing
1215
1216- 72 films still have no documented distribution outcome, although more than half of those already have a sales agent.
1217- Distributor and territory detail remains incomplete on some older titles.
1218- Direct industry feedback is now becoming another useful source alongside multilingual research.
1219- Some candidate updates from the latest research pass are deliberately still on hold where sources conflict.
1220- Festival expansion continues, as does the separate work on the continental box office registry.
1221
1222## Where It Goes From Here
1223
1224The films have largely entered the Registry through festivals that serve as meaningful distribution launch points, where sales agents, distributors, buyers, broadcasters, and platforms actively look for new work — hence the so-called "Big 5" film festivals to start — as well as through projects graduating from AFP’s Pipeline Registry.
1225
1226I’m now auditing how completely those existing platforms are represented, while, more importantly, determining which additional festivals or other distribution-relevant entry points should systematically feed this Registry as it grows. The goal is to make its coverage measurable and its inclusion rationale clearer, without limiting it to an arbitrary list of “major” festivals or turning it into a database of every African film released.
1227
1228I spent considerable time this weekend researching and learning how much larger it could become if it expanded beyond the highest-profile festival platforms to others that still attract meaningful sales, acquisitions, and market activity. I stopped once it became clear how quickly the dataset could grow, and wondered whether that scale would make the Registry more useful than a more concentrated selection of films with a demonstrated history of being picked up and generating trackable box office, streaming, and broadcast debuts. That question is still up in the air, particularly with the AFP Continental Box Office Registry in development and likely to absorb part of the wider commercial release picture.
1229
1230It's early in an ongoing process that will be sorted in time. For now, much of the work is making the records already in it more reliable.
1231
1232The connection with the Pipeline Registry is also getting tighter. The reconciliation completed this month means a project that reaches its premiere should increasingly be able to move from Pipeline into Distribution as the same AFP record rather than effectively starting over in a second database.
1233
1234The connective tissue continues to build out as well: the Pipeline Registry, the Funding Desk, the Streaming & Infrastructure Tracker, the Co-production Treaty registry, the continental Box Office Registry, and Ask AFP / Ask the Akoroko Archive are intended to work as a 
1234single instrument once integrated.
1235
1236And please keep reaching out. The Sudu Connexion exchange this month materially improved two records and flagged a box office figure that was technically sourced but used beyond what that source actually told us. That kind of feedback is useful!
1237
1238**The link:** https://africanfilmpress.com/distribution-registry  
1239**Password:** Ochre-Falcon-52
1240
1241**STILL NOT MOBILE FRIENDLY** (sorry)
1242
1243Reply directly to this email with any feedback or access issues.`},{slug:"multichoice-dstv-mzansi-bioskop-aug13-2026",title:"MultiChoice Confirms Closure of Four DStv Channels, Including South African Film Outlet Mzansi Bioskop",category:"Industry",date:"August 13, 2026",summary:"MultiChoice has confirmed that M-Net Movies 1, kykNET Lekker, Mzansi Bioskop and Mzansi Music will stop broadcasting in South Africa on September 16, 2026.",author:"Akoroko",isPremium:!0,readTime:"5 min read",headerImage:"/manus-storage/multichoice-dstv-four-channels-aug13-2026_4da9e19e.jpg",featuredImageFull:!0,listenId:"multichoice-dstv-mzansi-bioskop-aug13-2026",content:`News like this would typically be included in your weekly AFP Dispatch alongside other headline developments, but I thought it was worth singling out for what should be obvious reasons.
1244
1245MultiChoice has confirmed that four DStv channels will stop broadcasting in South Africa at 23:59 SAST on 16 September 2026: M-Net Movies 1, kykNET Lekker, Mzansi Bioskop, and Mzansi Music.
1246
1247South African media initially reported the news last week. I waited until I could verify that the information had been confirmed directly by MultiChoice or CANAL+, neither of which had published a public announcement about the closures at the time.
1248
1249As of today, 13 August 2026, MultiChoice (Pty) Ltd — the company now commonly referred to as LicenceCo, which holds DStv’s South African broadcasting licences — has confirmed the above specifics.
1250
1251> “As viewing habits continue to change, MultiChoice is refining the DStv channel line-up to match,” the company said in its response. “Rather than spreading similar content across many channels, we’re concentrating on fewer, stronger channels, giving subscribers a cleaner, easier-to-navigate line-up and a better viewing experience overall.”
1252
1253## So What?
1254
1255The company’s explanation is consistent with a strategy CANAL+ set out during its full-year results presentation on 11 March 2026, which I covered. David Mignot, chief executive of CANAL+ Africa and MultiChoice, said MultiChoice had 17 subscription price points, as many as five decoder models and too many sub-brands, including a wide mixture of premium and local channel brands. Mignot said the range fragmented the company’s marketing and that subscribers wanted greater simplicity and value for money. The plan was to simplify its commercial offers, pricing and branding. No word on whether more channel consolidation will follow.
1256
1257Mzansi Bioskop, DStv channel 164, is the closure with possibly the most direct consequences for South Africa’s screen sector. Launched in September 2013, it includes South African films in local languages and has provided a linear television outlet for work by newer filmmakers, including graduates of the MultiChoice Talent Factory, the company’s training program for film and television professionals across Africa.
1258
1259MultiChoice has not yet stated where Mzansi Bioskop’s programming will move, whether the channel’s film-acquisition and commissioning functions will continue elsewhere, or how the closure will affect licensing payments and production budgets.
1260
1261M-Net Movies 1, channel 104, airs recent local and international films. The service’s history dates to the introduction of Movie Magic in 1995, while its current numbered identity (Movies 1) was adopted during M-Net’s movie-channel consolidation in 2020. Its closure will leave M-Net Movies 2, 3 and 4 on DStv.
1262
1263The other affected services are kykNET Lekker (channel 148), an Afrikaans library channel launched in 2020 for DStv Access subscribers, and Mzansi Music (channel 321), a South African music service introduced in 2012. Note that the flagship kykNET channel and the related kykNET & Kie and kykNET Nou services will continue broadcasting.
1264
1265Since CANAL+ closed its acquisition of MultiChoice, the French media group has pursued cost-cutting measures, as expected, including reductions in content, broadcasting, marketing and support expenses. Par for the course, though the geographic extent is still unconfirmed. At least some of the four channels are carried in other DStv markets.
1266
1267MultiChoice/Canal+ has not said whether broadcasts will also end elsewhere in sub-Saharan Africa.`},{slug:"kolade-adewoye-filmx-industry-habits-aug12-2026",title:"Kolade Adewoye on FilmX and the Work of Changing Established Industry Habits",category:"Industry",date:"August 12, 2026",summary:"Fusion Intelligence Technologies founder and CEO Kolade Adewoye discusses FilmX, a platform giving Nigerian producers direct access to box-office reporting, and the longer work of changing established habits across the industry.",author:"Tambay A. Obenson",isPremium:!0,readTime:"8 min read",headerImage:"/manus-storage/kolade-a
1267dewoye-filmx-header_dff6ba1b.jpg",featuredImageFull:!0,content:`When I first spoke at length with Kolade Adewoye, founder and CEO of Fusion Intelligence Technologies — a Nigerian company that develops software for local cinemas, film distributors and producers — on 10 February 2026, he was preparing to introduce FilmX. The new platform gives Nigerian producers direct access to box-office results and automates some of the financial work performed by distributors.
1268
1269We spoke again on 16 July, after FilmX had entered live use. By then, Fusion was trying to incorporate live reporting into the working practices of its first distributor clients while discovering that some producers who questioned existing box-office reports did not necessarily want — or want to pay for — direct access to the data.
1270
1271I recognized parts of his experience having encountered a related gap between creating information products for African screen professionals and establishing regular, paid use of them. Our conversations were therefore about Film
1271X and Fusion, but also about the commercial conditions facing entrepreneurs building specialist tools for screen businesses across the continent.
1272
1273“I had no affiliation with the film business, no interest in it whatsoever, to be very honest,” Adewoye said about his arrival at this work less than a decade ago.
1274
1275After graduating from Pan-Atlantic University in Lagos, he joined Filmhouse Cinemas in 2018. For the uninitiated, Filmhouse is one of Nigeria’s largest cinema operators. Adewoye was hired to provide online customer support as the company introduced website ticket sales.
1276
1277The position gave him access to information about when people bought tickets, which films they selected, and how online purchasing compared with transactions at cinema locations. He taught himself SQL, a programming language used to retrieve and organize information from databases, so that he could examine the underlying sales data.
1278
1279The work also introduced him to the actual software used to manage cinemas. These systems handle ticketing, concessions, inventory, financial reporting, and other daily operations. Many were developed outside Nigeria — outside the continent — and licensed in foreign currencies.
1280
1281After seeing one invoice, Adewoye recalled thinking: “This thing is bloody expensive.” The declining value of the naira against the US dollar made imported cinema-management systems increasingly costly for Nigerian operators. The financial disruption caused by the COVID-19 pandemic added to the pressure on cinema businesses.
1282
1283Adewoye eventually left Filmhouse and joined a financial-technology venture that ultimately did not succeed.
1284
1285He returned to the cinema problems he first encountered at Filmhouse and founded Fusion Intelligence Technologies. The company developed its first commercial product called Reach, a cinema-management system created by Nigerian developers and priced in naira. Reach covers ticket sales, online booking, concessions, inventory, and operational reporting.
1286
1287EbonyLife Cinemas, the exhibition business founded by Nigerian media entrepreneur Mo Abudu, became an early client. By February 2026, Adewoye said Reach was being used across approximately 70 cinema locations in Nigeria, Ghana and Liberia.
1288
1289Years later, its latest product, FilmX, grew from Fusion’s work with cinema data and a problem Adewoye had repeatedly encountered: producers questioned the veracity of box-office spreadsheets supplied by distributors.
1290
1291“It was very important that we establish trust in the numbers, in the data, in the market,” he said.
1292
1293FilmX gives producers direct access to their films’ daily and regional results, along with the expenses deducted before they are paid. Distributors use the same platform to record those expenses, prepare invoices and calculate payments. Its reporting combines information from cinemas using Fusion’s software with data from Comscore, which has reported results from nine West and Southern African countries since 1 March 2019.
1294
1295When we spoke on 10 February 2026, Adewoye expected an initial FilmX announcement involving a Nigerian distributor and Comscore by the end of that month. By our second conversation on 16 July, that public introduction had yet to take place. FilmX had instead spent the intervening months in beta testing with two Nigerian distributors before entering live client use in June.
1296
1297“The product has been ready for at least two and a half months,” Adewoye said in July. “But the users' adaptation of their workflow to the product was what wasn’t ready.”
1298
1299Adewoye described “a lot of back and forth,” multiple internal stakeholders and processes that required more assistance from Fusion than he had expected.
1300
1301At some distributors, he said, operations personnel had to complete work within FilmX before finance departments could use it for invoicing and forecasting. Operations staff said they were occupied with their existing responsibilities, while finance staff said they needed the work completed immediately. The disagreements sometimes drew Fusion into internal company politics.
1302
1303“I just came here to give you data,” Adewoye recalled thinking during one such dispute. “What’s my business if you don’t like this person or that person? Please, can we work together, and can this thing be in full use?”
1304
1305Fusion also had to reorganize FilmX features in response to client requests. Adewoye described another company that attended a demonstration and responded positively but continued using Excel because its employees were busy with an upcoming release.
1306
1307FilmX had entered live use by the time we spoke in July. Adewoye was moving to what he considered its most important phase: getting producers to use it.
1308
1309“There are some producers that don’t want to see their numbers in real time,” he said. “I could not believe it.”
1310
1311Two producers told him they were afraid of watching poor results arrive while a film was still playing. Others said they would use FilmX only if it were free.
1312
1313Some producers were accustomed to calling a distribution executive, asking how much their film had earned and then discussing a promotional appearance. That conversation gave them the current gross without requiring them to examine daily s
1313ales, compare performance across cities, or review the deductions affecting their eventual payment. FilmX gives producers access to all of that information.
1314
1315Adewoye said he realized that he now has to first firmly establish why using it should become part of managing a theatrical release on both sides. He needs to demonstrate how the information can immediately influence decisions while a film is still playing and also improve its commercial performance.
1316
1317“They might obviously need the tools, but needing it is clearly not an incentive enough,” he stated.
1318
1319Producers already understand the relationship between marketing and a film’s box-office performance. They may consider direct access to data useful without seeing it as essential, because Nigerian films have reached cinemas for years without producers personally consulting real-time reporting systems. Working in an environment of scarcity for so long forces creativity and self-reliance. As a result, companies like Fusion — and products they make, including FilmX, however useful or necessary — may not gain immediate traction because their intended users have spent years developing ways to work without them.
1320
1321I recognized parts of the process he described. The African Film Press (AFP) suite of research tools I introduced in 2026 tracks projects, distribution, co-production agreements, streaming services, digital infrastructure, funding for African films and series, and cinema infrastructure across African markets. Yet subscribers still send me questions that the tools already answer, often more directly and comprehensively than I could in an email or WhatsApp message.
1322
1323Our products serve different functions. But making information available is only part of the work required in either scenario for the tools to become widely used across the industry. Both companies must also invest in helping users incorporate their products into regular working practices while continuing to expand and remain solvent. The initial sale is just the start of the relationship that requires continued support, training, and adaptation.
1324
1325Adewoye believes Nigerian distributors and producers are ready for FilmX. What he cannot predict is when direct access to box-office data will become standard practice.
1326
1327“The real question is: will Fusion survive long enough for them to see that?” he said.
1328
1329Since our July conversation, Fusion has continued publishing Nigerian box office summaries identified as “FilmX Stats.” On 23 July 2026, Fusion published a recap of its participation in the Lagos International Film and Cinema Convention, held on 15–16 July, saying its data platform had provided figures to attendees. Clearly, FilmX’s use cases are circulating publicly as its formal introduction and adoption approaches by producers and distributors evolve.
1330
1331To be sure, Fusion now has four film-business software products in use: Reach, for cinema management and ticketing; Atlas, for advance ticket and voucher sales; Convoy, for encrypted film delivery and playback; and FilmX.
1332
1333On 1 August 2026, Fusion used Convoy at an open-air community event in Dallas, Texas. The system allows producers and distributors to authorize screenings outside conventional cinemas without distributing an ordinary playable copy of the film.
1334
1335Adewoye and I agreed to stay in touch as our respective businesses grow, continue identifying areas of overlap, and even consider opportunities to work together.`},{slug:"canal-plus-h1-2026-earnings-africa-jul28-2026",title:"CANAL+ H1 2026 Earnings: Seven Africa Takeaways",category:"Data",date:"July 28, 2026",summary:"CANAL+ released its first-half 2026 results on 28 July 2026 — the first covering a full six months since it took control of MultiChoice. Seven takeaways on what the report says about the company’s African business.",author:"Akoroko",isPremium:!0,readTime:"5 min read",listenId:"canal-plus-h1-2026-earnings-africa-jul28-2026",headerImage:"/manus-storage/canal-plus-h1-2026-results-header_7f908854.jpg",content:`CANAL+ H1 2026 Earnings: Seven Africa Takeaways
1336
1337CANAL+ released its first-half 2026 results on 28 July 2026. These are the company’s first results covering a full six-month period since it took control of MultiChoice on 20 September 2025. CANAL+ already had an extensive subscription television business in French-speaking African markets. The acquisition adds subscription television o
1337perations across more than 48 African countries.
1338
1339In the report, chief executive Maxime Saada said: “In Africa, we have grown our combined subscriber base by 7%, and as part of the MultiChoice turnaround plan we reduced entry costs for new subscribers and expanded our sales network. In South Africa, we delivered a standout month in June, with the highest new subscriber uptake in a decade, and we secured long-term rights to the most watched sports competition, the Premier Soccer League.”
1340
1341Here is what else the report says about CANAL+’s African business.
1342
1343**1. The numbers and the story they tell:** CANAL+ reported €1.723 billion in revenue and €269 million in adjusted operating earnings for its Africa and Asia division during the six months ended 30 June 2026. The figures show how commercially important the division has become to CANAL+, even though they don’t break them down by region. Customers in South Africa generated €764 million in revenue during the first half of 2026, though it was largely from businesses added through MultiChoice. CANAL+ doesn’t break down any of these figures by subscription fees, advertising, content sales, and other income. It also provides no figure for the amount reinvested in South African production or acquisitions, nor any corresponding total for spending on African entertainment programming broadly. Not that I was expecting anything at this point…
1344
1345**2. More noteworthy, perhaps… CANAL+ is actually growing in French-speaking markets:** The company added more than one million pay-TV subscribers over the preceding 12 months in its established French-speaking African markets. CANAL+ credited the Africa Cup of Nations, retail-network expansion and stronger subscription sales for the increase. Part of the increase may be a temporary event-driven bump. Meanwhile, across the countries served by MultiChoice, the total subscriber base was broadly unchanged compared with the first half of 2025 despite CANAL+ saying that June 2026 was MultiChoice’s strongest month for new subscribers in South Africa in a decade. The restructuring is underway…
1346
1347**3. Physical distribution remains central:** CANAL+ reports more than 34,000 points of sale and over 750 distribution partners across its African operations. These networks sell reception equipment, activate television packages, and process subscription renewals in markets where online payments and reliable broadband access vary widely. Makes sense, right? In markets that lag much of the rest of the world in broadband internet penetration, particularly fixed broadband, local agents remain the easier route for signing up new customers and keeping them subscribed. Satellite will continue to carry more distribution and accessibility weight than any standalone African streaming deal.
1348
1349**4. Live sports are the content priority in Africa:** CANAL+ credited the Africa Cup of Nations and the 2026 FIFA World Cup with supporting subscription sales, so, yes. The company secured long-term rights to South Africa’s Premier Soccer League, the country’s principal domestic professional football competition. The group also acquired sub-Saharan African rights to the Men’s Rugby World Cup 2027 and the Women’s Rugby World Cup 2029. Additional rights mentioned in the report include the Vodacom United Rugby Championship, the World Rugby Junior World Championship and the World Rugby Pacific Nations Cup. The report provides more information about sports rights and subscriber acquisition than about African film and series commissioning. I wonder if there might be more interest in sports movies or TV series pitches…
1350
1351**5. Broadband could become another route to Anglophone households:** Group Vivendi Africa, which operates fiber-to-the-home networks in 15 cities across 10 African countries, has been renamed CANAL+ Telecom Africa. CANAL+ began fiber deployment in Ibadan, the major commercial hub in southwestern Nigeria, with service expected to begin after 30 June 2026. Broadband ownership allows CANAL+ to sell connectivity and entertainment services to the same households.
1352
1353**6. MultiChoice is undergoing staff and cost reductions (no surprise):** CANAL+ began a voluntary severance programme as part of the MultiChoice restructuring. The report gives no number of affected employees and no country or department breakdown.
1354
1355**7. The overall industry reading:** CANAL+ now owns subscription television businesses covering more than 48 African countries, combining its French-speaking African operations with MultiChoice’s large presence elsewhere in sub-Saharan Africa. Its first-half priorities were subscription growth, sports rights, retail distribution, linear television and broadband expansion, and lower operating costs at MultiChoice. As for information on commissions, licensing and acquisitions, and wider circulation for African work, the results published on 28 July 2026 provide no commitments or figures on those points.
1356
1357In summary, no surprises to be found in this CANAL+ H1 2026 earnings report.`},{slug:"my-fathers-shadow-clarissa-box-office-jul28-2026",title:"“My Father’s Shadow” Has Grossed Over $1M. Could “Clarissa” Go Much Further?",category:"Data",date:"July 28, 2026",summary:"“My Father’s Shadow” has passed $1 million in reported theatrical receipts — an uncommon threshold for an institutionally backed African feature on the international specialty circuit. A data-driven look at where it stands among comparable titles, and an early box-office forecast for “Clarissa.”",author:"Akoroko",isPremium:!0,readTime:"8 min read",listenId:"my-fathers-shadow-clarissa-box-office-jul28-2026",headerImage:"/manus-storage/my-fathers-shadow-clarissa-article-image_d6b03b1f.jpg",headerImageCentered:!0,content:`“My Father’s Shadow” Has Grossed Over $1M. Could “Clarissa” Go Much Further?
1358
1359While updating the AFP Distribution Registry over the weekend, I noticed that Akinola Davies Jr.’s “My Father’s Shadow” had passed $1 million in reported theatrical receipts — $1,102,976 as of July 28, 2026, according to Box Office Mojo and The Numbers. That’s an uncommon threshold for an institutionally backed African feature launched on the major-festival circuit and released in the international specialty market — particularly for a feature debut set in a sub-Saharan African country. It’s arguably even harder to reach in the post-pandemic period, when streaming has disrupted release strategies and theatrical distribution is increasingly being treated as an expensive, selective route to audiences.
1360
1361To be sure, a definitive historical ranking would require a much wider title-by-title audit. Still, I’m comfortable with my assertions when placed in context; that being, institutionally supported feature films set on the continent directed by African/diaspora-based filmmakers, launched at the majors — Cannes, Berlin, Venice, Sundance, Toronto notably — with grosses recorded by recognized, publicly available, international box office trackers, Box Office Mojo and The Numbers.
1362
1363Neither source captures every territory or release, and a tracked film may have earned more than the totals recorded. “My Father’s Shadow,” for example, earned ₦25,780,750 in Nigerian cinemas between its 19 September 2025 release and 31 December 2025 — approximately $19,000 — according to distributor FilmOne Entertainment’s 2025 Nigeria Box Office Yearbook, which uses Comscore data. That Nigerian gross is absent from both Box Office Mojo and The Numbers, as is often the case for distribution totals of African films in African territories.
1364
1365The film briefly returned to Nigerian cinemas in June 2026, though one can reasonably infer that the second run didn’t surpass the original release’s earnings. In sum, its Nigerian box office — and likely any wider African release receipts (a month-long limited run in Nairobi, Kenya, for example) — is likely negligible relative to its cumulative worldwide box office.
1366
1367Still, the most defensible thing to do in this scenario is to treat every figure here as a floor.
1368
1369The table below shows how the global box office gross of “My Father’s Shadow” compares with other high-profile feature films directed by African filmmakers that premiered at Cannes, Berlin, Venice, Sundance, Toronto, et al., in the post-COVID years. Each received a theatrical release in at least one market outside the film’s primary African production country, with grosses recorded by Box Office Mojo and/or The Numbers.
1370
1371Within this comparison group, “My Father’s Shadow” has recorded almost 1.9 times the gross of “Dahomey,” more than twice that of “Black Tea,” and more than three times that of “Goodbye Julia.” It ranks fifth among the 15 titles, behind “Cairo Conspiracy,” “The Blue Caftan,” “Eagles of the Republic” and “Everybody Loves Touda” — notably, all Arabic-language, North African stories.
1372
1373“My Father’s Shadow” opened in the United Kingdom and Ireland with £58,452 during the weekend beginning 6 February 2026, the largest opening among that week’s limited releases. Box Office Mojo now records $438,645 from the United Kingdom. Given the large Nigerian and broader Anglophone West African diaspora in the UK, the numbers make sense, particularly when compared to the performance of other titles in the table. The same database records total United Kingdom grosses of $38,512 for “Dahomey,” $26,877 for “Four Daughters” and $23,596 for “The Blue Caftan.”
1374
1375Interestingly, France was the largest recorded market for “My Father’s Shadow.” The film opened there on 25 March 2026 under the title “Un jour avec mon père.” It sold 30,387 tickets across 96 cinemas during its first week, averaging 317 admissions per cinema. French industry data service CBO Box Office placed it among that week’s stronger specialist releases. Box Office Mojo currently records $515,224 from France.
1376
1377That total exceeds the database’s recorded French grosses for “Dahomey” ($389,925) and “Black Tea” ($378,173). It’s below the $1,482,019 recorded for “The Blue Caftan.”
1378
1379Taken together, an English-language feature debut set in a sub-Saharan African country that reaches more than $1.1 million in documented worldwide theatrical receipts, following a major festival launch, is noteworthy. For the AFP Distribution Registry, it’s a concrete benchmark for the international theatrical performance of comparable African features — more specifically, institutionally backed sub-Saharan narratives.
1380
1381## Box Office Forecast for “Clarissa”
1382
1383I realize I’m getting ahead of myself here, but, given the overlap, I just had to.
1384
1385Indulge me…
1386
1387An early defensible worldwide theatrical range for Arie and Chuko Esiri’s Cannes-launched “Clarissa” would be $5 million to $10 million.
1388
1389Ultimately, how Neon handles its sales and distribution carries much of the weight. Neon controls worldwide rights — not only in the United States — giving the company the option to sell or release the film across several specialty markets. A restricted release with little awards conversion could finish between $2.5 million and $5 million. A strong awards-season run, led by Sophie Okonedo and supported by a substantial international release (particularly across Europe — the United Kingdom and France, notably), could reach $10 million to $15 million.
1390
1391Neon has scheduled a select North American theatrical opening for 11 December 2026, positioning the release for awards voting and a possible expansion in January 2027 (I expect that to happen). The film will also screen at the Toronto International Film Festival ahead of the December launch.
1392
1393The early critical record is strong: 100 percent from 15 reviews on Rotten Tomatoes and an 86 Metascore from 10 reviews as of 28 July 2026. It’s a small review count, but they’re all from one event — Cannes. Toronto will open the film to more critics, particularly the North American contingent that skipped Cannes. Should the critical consistency continue, it would give Neon usable material for the campaign.
1394
1395The commercial package also includes several points of access beyond its Nigerian setting: the film is in English; it reworks Virginia Woolf’s widely-recognized 1925 novel “Mrs Dalloway” (previously loosely adapted); and its cast includes Sophie Okonedo, David Oyelowo, India Amarteifio, Ayo Edebiri, Toheeb Jimoh and Nikki Amuka-Bird.
1396
1397Note: while Okonedo leads the film, Amarteifio and Edebiri bring younger audiences and recognition beyond the specialist-film market. Amarteifio broke out as the lead of Netflix’s “Queen Charlotte,” while Edebiri is an Emmy-winning star of FX’s “The Bear.” Their verified Instagram accounts have a total following of approximately 3.4 million taken together — more than the combined followings of the rest of the principal cast.
1398
1399United States distribution is handled by a company that has handled seven consecutive Palme d’Or winners and converted several into major American theatrical and awards successes. To be clear, “Clarissa” isn’t a Palme d’Or winner, but that’s not the point. There is support for a North American box-office range of roughly $2.5 million to $4.5 million depending on its opening averages, January expansion, and award nominations.
1400
1401On the international side, “Clarissa” should perform well, with its strongest prospects in the United Kingdom and Ireland, where Woolf, Okonedo, Oyelowo, Amarteifio, and Jimoh have presence. France has the Cannes connection, and has historically embraced African arthouse more so than other key European markets, regardless of original language. See “My Father’s Shadow” as a recent example.
1402
1403Meanwhile, Australia, New Zealand and parts of Western Europe regularly support English-language prestige releases. The size of that contribution can’t be estimated more closely until Neon announces international distributors, dates and screen counts.
1404
1405African theatrical revenue should be treated as a secondary contribution. In Nigeria, the closest recent available comparison is “My Father’s Shadow.” “Clarissa” certainly has a more recognizable international cast and greater awards potential, but it’s still an adult prestige drama, not a mainstream Nollywood release.
1406
1407The film’s African financing could support its marketing narrative in Nigeria and broader anglophone West Africa. Production financing for the Nigerian shoot came from African investors, led by CANEX Creations Inc. and the Lagos-based private equity firm MBO Capital. CANEX WKND takes place in Lagos this year, from 5 to 8 November 2026, overlapping with the Africa International Film Festival, or AFRIFF, from 1 to 7 November 2026. I expect CANEX to give “Clarissa,” the Esiri brothers, and members of its cast a prominent place in its film programme, possibly in partnership with AFRIFF, creating a platform for a Nigerian theatrical release.
1408
1409By the way, “Clarissa” was financed with approximately $4 million, according to African Film Press (AFP) partner What Kept Me Up’s 24 April 2026 report from MBO Capital’s Film Financing Conference. Neither MBO Capital nor CANEX Creations Inc. has disclosed its share of that total.
1410
1411A coordinated release across Nigeria, South Africa, Ghana, Kenya, and other English-speaking African markets could plausibly add a low-six-figure sum.
1412
1413Worldwide, what could keep it below my $2.5 to $5 million base range is that “Clarissa” is a 125-minute, formally controlled adult drama. Even favorable Cannes reviews still described its pacing as glacial or sedate. The cast has earned critical recognition, especially in stage and television, although none has yet demonstrated the ability to open this kind of theatrical release alone.
1414
1415Under those conditions, a run would produce approximately $2.5 million to $5 million worldwide.
1416
1417What could take it to $10 million or above?
1418
1419The upper case needs several things to occur together:
1420
1421- Okonedo receives major acting nominations from the Golden Globes, BAFTA, or the Academy Awards, supported by surrounding key cast. Nigerian actor Fortune Nwafor was singled out in critical praise at Cannes. His story could become its own narrative.
1422- TIFF sustains the Cannes reception and increases the film’s North American visibility.
1423- Neon expands beyond a small awards-qualifying run in January 2027.
1424- The United Kingdom release reaches the level of a major specialty title, not a short art-house engagement.
1425- International distributors use the Woolf adaptation, ensemble cast, and queer storyline as audie
1425nce hooks.
1426
1427For comparison, “Aftersun,” Charlotte Wells’s 2022 Cannes Critics’ Week debut, and “Living,” Oliver Hermanus’s 2022 English-language drama, both finished in the $10 million to $12.5 million range after strong reviews and acting nominations extended their theatrical runs across several territories.
1428
1429“Portrait of a Lady on Fire,” a French-language Cannes award-winning title also released in the United States by Neon, is another example of how sustained critical support can extend the commercial life of a festival film. It grossed close to $10 million.
1430
1431**Working forecast as of 28 July 2026:**
1432
1433| Scenario | Range |
1434|---|---|
1435| Downside | $2.5 million–$4 million |
1436| Base case | $5 million–$9 million |
1437| Central estimate | approximately $7 million |
1438| Awards-driven upside | $10 million–$15 million |
1439
1440The first meaningful test will be Neon’s opening theatre count and per-theatre average on 11–13 December 2026.
1441
1442I’m allowed to adjust my bets as the variables shift. In the inimitable words of Jigsaw, “Would you like to play a game?”`},{slug:"steven-markovitz-african-cinema-jul10-2026",title:"Producer Steven Markovitz Is Optimistic About African Cinema. The Question Is Who Will Own It",category:"Profile",date:"July 10, 2026",summary:"Steven Markovitz has produced some of the most internationally recognised African films of the past two decades. In this dispatch, he reflects on why he remains optimistic about the continent's cinema — and raises the harder question of who will ultimately own it.",author:"Akoroko",isPremium:!0,readTime:"Listen",listenId:"steven-markovitz-african-cinema-jul10-2026"},{slug:"afp-distribution-registry-jul9-2026",title:"AFP Film Distribution Registry: 35 Films Added, Box Office Data, and a Key Rede
1442sign",category:"Data",date:"July 9, 2026",summary:"35 new films added to the AFP Film Distribution Registry, new box office data integrated, and a key structural redesign of the registry — a dispatch on what changed and why.",author:"Tambay A. Obenson",isPremium:!0,readTime:"Audio",listenId:"afp-distribution-registry-jul9-2026"},{slug:"afp-logline-audience-building-jul6-2026",title:'What Two Weeks of "AFP Logline" Reminded Me About Audience-building',category:"Industry",date:"July 6, 2026",summary:"Two weeks of running AFP Logline — a daily one-line summary of the most important story in African and diaspora screen news — revealed something about how professionals in this sector actually find and use information. A reflection on audience-building, discovery infrastructure, and what the experiment showed.",author:"Tambay A. Obenson",isPremium:!0,readTime:"Audio",listenId:"afp-logline-audience-building"},{slug:"afp-dispatch-curated-news-feed-jun17-2026",title:"AFP Dispatch: Curated News Feed for African and Diasporic Screen News",category:"Industry",date:"June 17, 2026",summary:"After a year of trial and error, AFP Dispatch launches as a curated news feed for African and diasporic screen news — available by email, RSS, and social, on a schedule of your choosing.",author:"Tambay A. Obenson",isPremium:!0,readTime:"3 min read",headerImage:"/manus-storage/afp-dispatch-curated-news-feed-jun17-2026_ffc60f18.jpg",headerImageCentered:!0,content:`For the past year or so, I’ve been trying to work out the best way to bring you a curated news feed — in addition to everything else you are already receiving — drawing from across African and diasporic film, TV, and digital media.
1443
1444Everyone wants news. The challenge has been how to make the process efficient on my end and useful on yours, without becoming one more source of inbox noise. Professionals like yourselves — myself included — are already grappling with some form of information overload: more emails, more messages, more notifications, and, as a result, more noise. The last thing I want is to become another source of that.
1445
1446So the idea has always been simple, even if getting here wasn’t: cut through the noise and bring you the headlines we think are worth knowing, via a delivery schedule and mechanism of your choosing.
1447
1448After a fair amount of trial and error, prioritizing tech-enabled automation, this is the version I’ve landed on — for now. It comes from a mix of machine assistance and human judgment. We built an internal AI-native news tracker that is still being fine-tuned. It does a lot of the work, but it’s internal and not something I’m ready to make public. It may never be. For all the advances in technology, this still requires a human editorial filter. I expect that to hold for the foreseeable future. What reaches you now is the result of the tracker’s heavy lifting and my own judgment about what’s actually newsworthy.
1449
1450That’s AFP Dispatch in its current public form. Like every other tool I’ve introduced here, it will certainly evolve.
1451
1452## Signing Up
1453
1454Those of you who frequent social platforms, including Instagram, Twitter, and LinkedIn, have likely already seen some of these posts on your feed. They also live on the AFP website (Africanfilmpress.com), where an RSS feed is now available.
1455
1456If you want to receive AFP Dispatch by email, simply reply to this message with one of three options: As it happens · Once a day · Once a week
1457
1458The as-it-happens option sends each item by email as it’s posted. The once-a-day and once-a-week options automatically gather the items into a single email, with headlines, one or two-sentence summaries, and links to the full pieces on the AFP website.
1459
1460Dispatches will go to the email address you signed up with unless you instruct otherwise.
1461
1462If you prefer RSS, use this feed: https://africanfilmpress.com/articles/feed.xml
1463
1464If you prefer social, follow AFP and turn on notifications: Instagram @africanfilmpress · LinkedIn @african-film-press · Twitter/X @africafilmpress
1465
1466If you don’t reply, nothing changes. And if you’d rather get Dispatch another way — WhatsApp, Telegram, or something else — reply and let me know.
1467
1468By the way, for those who want a more Nigeria-specific feed, What Kept Me Up — Akoroko’s African Film Press (AFP) partner for Nigeria and Anglophone West Africa — recently launched a filter called “Nollywood, Distilled,” which should be self-explanatory. For now, it is available only on Instagram.
1469
1470Finally, if you have any questions, reply to this email.
1471
1472As always, thanks for being here.`},{slug:"under-16-social-media-ban-african-screens-jun15-2026",title:"Under-16 Social Media Ban Policy Wave. What It Could Mean for African Screens",category:"Policy",date:"June 15, 2026",summary:"The UK has joined Australia and Canada in banning social media access for under-16s. The policy wave is still distant from Africa, but the platforms being re-engineered are the same ones African creators, filmmakers, and distributors depend on to reach audiences.",author:"Tambay A. Obenson",isPremium:!0,readTime:"8 min read",headerImage:"/manus-storage/under-16-social-media-ban-jun15-2026_3a53a2e3.jpg",content:`Today, 15 June 2026, the UK announced a ban on social media for users under 16. Prime Minister Keir Starmer said it would apply to Snapchat, TikTok, YouTube, Instagram, Facebook, and X, exclude WhatsApp, Signal, and YouTube Kids, and add limits on livestreaming and contact with strangers. The government says the package goes further than any other country’s. The first rules could take effect as early as spring 2027.
1473
1474This is no longer an Australian story. It’s arguably a policy wave. I’m referencing Australia as the first hard case, where its Online Safety Amendment (Social Media Minimum Age) Act 2024 took effect for major platforms on 10 December 2025, setting the social media access age at under 16 and introducing penalties of up to A$49.5 million for non-compliant corporate platforms. By mid-January 2026, Australia’s eSafety Commissioner said age-restricted platforms had deactivated or restricted access to about 4.7 million under-16 accounts.
1475
1476Canada has now joined. On 10 June 2026, Identity and Culture Minister Marc Miller tabled Bill C-34, the Safe Social Media Act, which would bar Canadians under 16 from holding social media accounts unless a platform wins an exemption by proving adequate child safeguards. It also creates a new federal regulator, the Digital Safety Commission, with fines of up to 3 percent of global revenue.
1477
1478Europe is the place to watch. Spain announced on 3 February 2026 that it would ban access for under-16s and require real age verification, not date-of-birth checkboxes. France’s National Assembly approved a bill to ban access before 15, though it still needs Senate passage to become law. Denmark, Greece, Norway, Poland, Slovenia, and Sweden are at various stages of drafting or recommending age-based limits, and a European Commission panel is due to report on possible Europe-wide age rules by summer 2026.
1479
1480Europe may move in pieces before any single EU-wide rule is adopted.
1481
1482Ultimately, at least in the so-called West, we’re seeing a shift from whether to regulate to which age groups, which platforms, and how to enforce.
1483
1484The United States is the outlier. There is no federal under-16 access ban equivalent to Australia, the UK, or Canada. The federal posture is enforcement, child privacy, the age-verification debate, scrutiny of addictive design, and state-level fights, not one national ban. However, I wouldn’t read the absence of a federal ban as the absence of movement.
1485
1486## Why Am I Drawing Your Attention to This?
1487
1488These platforms depend on habit formation. If children are kept off TikTok, Instagram, Snapchat, and YouTube until age 16, the platforms lose years of behavioral training: follows, subscriptions, recommendation history, creator attachment, posting habits, payment habits, and identity formed around the apps. That does not necessarily kill the platforms. But it does weaken the pipeline that turns children into lifelong daily users.
1489
1490A business threat is a forced redesign of their “user recruitment process,” if you will. Platforms would have to add stronger age checks, safer teen products, str
1490ipped-down versions, parent-approved modes, and more auditable recommendation systems. That makes compliance more expensive and may cut time spent on ad inventory, creator discovery, and data collection from young users.
1491
1492YouTube is the most complicated piece. It’s not only social media like Instagram or TikTok. It’s also video search, music, education, children’s entertainment, long-form and short-form viewing, livestreaming, and, more generally, a significant piece of the “creator economy,” as well as a de facto global streaming service. The danger for YouTube is that regulators start treating it less like neutral video infrastructure and more like a social platform.
1493
1494Australia first exempted YouTube from its ban on educational grounds, then reversed the exemption in July 2025 and folded it back in after the eSafety Commissioner found that YouTube was the platform where under-16s most often encountered harmful content. The UK included it from the start. Both bans treat YouTube as social media, not neutral video infrastructure. One thing still cuts in its favor: these are account bans, not viewing bans. An under-16 can still watch logged out; what they lose is the account — uploading, commenting, subscribing, and signed-in recommendations, all of which do limit what the non-account viewer can see.
1495
1496For now, no similar Africa-wide African Union regulatory instrument exists, and no comparable national under-16 account ban appears to be in force anywhere on the continent. But Africa is exposed because the platforms are global. If YouTube, TikTok, Instagram, Snapchat, and Meta redesign products for the UK, EU, Canada, and Australia, some of those design choices will become the global default.
1497
1498This is noteworthy because African screen activity is tied to mobile access, with youth and urban users driving uptake. African creators, filmmakers, producers, distributors, festivals, and marketers now reach audiences on the same platforms being re-engineered abroad.
1499
1500So, while these global “policy wave” bans may not cut African y
1500outh access — unless African governments adopt similar rules — they could reshape the global platforms where African film, series, and creator economy content finds its audience. If those platforms become more age-restricted, harder to get onto, and more regulated, youth discovery gets harder, paid marketing may cost more, and organic audience growth on algorithmic attention weakens.
1501
1502The likely results: harder youth acquisition for the major platforms in ban countries; age-verified internet use becoming normal across Europe, Canada, and Australia; a split internet for minors, with child-safe, teen-safe, and adult versions of each social media app; specific pressure on YouTube’s identity; disruption for creators whose audiences start young; and more value for school-safe, family-safe, and public-service media, including broadcasters and educational platforms.
1503
1504The effect will be gradual, not sudden. The platforms will fight, adapt, lobby, and carve out exemptions — they already are pushing back. But the idea that children should not be freely onboarded into algorithmic social platforms before 16 has moved from years of public concern into binding policy across several major global markets, and the direction of travel is now set.
1505
1506For Africa’s screen ecosystem, creator economy activity matters more than in better-funded markets because the formal routes to an audience — dense cinema access, regular series commissioning, paid streaming at scale — are thinner or less stable. YouTube has become an online platform where African content reaches audiences at scale. With cinema infrastructure still thin, though expanding, and fixed broadband limited, YouTube is, for many creators, filmmakers, producers, not one window among several but the main one.
1507
1508The marketplace built on top of these platforms is real, but shallow at the base. Communiqué’s 2026 “Africa Creator Economy Report 2.0,” developed with Technology Media (TM) Global, values Africa’s creator economy at about $3.1 billion and projects growth to about $17.8 billion by 2030 — a directional industry estimate, not official economic data.
1509
1510The earnings picture is thinner: across Africa, more than half of creators earn under $100 a month, and Nigeria’s 2025 creator economy report puts its own under-$100 share at 56%. A layer this large and young absorbs a change in platform rules less easily than a mature one.
1511
1512None of this threatens African access today. However, those who use these channels as core destinations for delivery and consumption should watch closely as regulators worldwide and the platforms themselves assess risk.
1513
1514The bans abroad will move slowly, and I have no crystal ball. I just wouldn’t rest my distribution and audience strategy on any single global platform whose status is under close scrutiny and may radically shift over time.
1515
1516Happy to read or hear your thoughts...`},{slug:"nfvf-audience-distribution-studies-south-africa-2026",title:"NFVF Publishes 2025/2026 Audience and Distribution Studies on South Africa’s Screen Sector",category:"Research",date:"June 18, 2026",summary:"South Africa’s National Film and Video Foundation has released two studies confirming a long-standing industry lament: the country has strong production capacity but converts little of it into box-office share, international circulation, rights retention, or export earnings.",author:"Tambay A. Obenson",isPremium:!0,readTime:"6 min read",headerImage:"/manus-storage/nfvfjun26_3a23ad72.jpg",headerImageCentered:!0,listenId:"nfvf-audience-distribution-studies-2026",content:`South Africa’s National Film and Video Foundation (NFVF) — the government body charged with developing its film and video industry, under the Department of Sport, Arts and Culture — has released two 2025/2026 studies that back a lament the industry has aired for years: the country has strong production capacity but converts little of it into box-office share, international circulation, rights retention, or export earnings. Most South Africans surveyed say they can find South African content and would pay for it, according to the audience study, yet local films barely register at the box office. Explaining that gap is the job the two reports take on.
1517
1518The South African Audience Research Report and the Global Distribution Trends Analysis Report were both made public on 18 June 2026, with full versions posted on the NFVF’s website (nfvf.co.za) under the Research tab, produced by the research f
1518irm Birguid.
1519
1520## What the Box Office Shows
1521
1522Start with the hard number. Local films accounted for just 0.9% of the total South African box-office gross in 2023, according to the distribution report, citing NFVF data. Cinema-going itself is fading: close to 80% of the people surveyed for the audience report had not been to a cinema in more than six months, or had stopped going altogether. For most respondents, the report concludes, the cinema is now an occasional outing for a special film, not a regular habit.
1523
1524## What Audiences Say They Want
1525
1526The audience survey, which reached just 379 people across all nine provinces, finds plenty of stated appetite for local work. 78.6% said South African content is easy to find, 76% said they would pay for it, and 65.7% said they would pay the same cinema ticket price for a local film as for an international one.
1527
1528Those are stated attitudes, but behavior says something else: people say they will pay, yet the films barely sell. Demand is real but apparently conditional, the report argues — essentially, audiences pay when a film looks worth it, and too often local films don’t clear that bar, whether on quality, marketing, visibility, or trust, again, according to the report.
1529
1530## How South Africans Watch Now
1531
1532The survey also looks at how South Africans watch, and most habits are a hybrid. It states that 71.8% watched television programmes or series, 62.3% watched films, and 61.2% watched short online videos. Just over half said those short clips now fill more of their day than longer films and shows. Almost all respondents are online at least weekly (94.7%), in a mobile-heavy environment where access is uneven and influenced by data cost.
1533
1534On artificial intelligence, audiences are wary. Half held mixed views, 36.4% were mostly negative, and 38.3% said AI is not acceptable at all as a stand-in for human creativity, though they accepted it in support tasks like marketing, script development, subtitling, and dubbing.
1535
1536## Strong at Making Films, Weak at Selling Them Abroad
1537
1538The distribution report turns from audiences to the industry. South Africa, it argues, has built real skill at making films but little of the apparatus to move them into foreign markets or to hold on to the money they earn. It scores the country against the United States, South Korea, Brazil, and Nigeria on five measures — market access, distribution readiness, deal-making and value retention, infrastru
1538cture, and policy — and places it in the middle of that group: ahead of most African peers technically, behind the leaders on market access, rights retention, and export deals. South Korea and Brazil are held up as models for building export-minded institutions.
1539
1540The report also identifies the unstable administration of South Africa’s film incentives — late approvals, backlogs, and delayed rebate payments at the Department of Trade, Industry, and Competition (DTIC) — as a threat to competitiveness and investor confidence.
1541
1542## Where the Two Reports Agree
1543
1544Neither report blames a shortage of content or audience interest. Both argue that South Africa has spent years learning to make films and far less on getting them to viewers and earning from them. They differ on where to push hardest — the distribution report on market access, deal-making, rights, and policy; the audience study on craft, packaging, marketing, and trust — but the shared message is to work both ends at once: the films and the channels that carry them.
1545
1546Their common to-do list includes cheaper mobile-first delivery, social-media-ready marketing, subtitling and dubbing, tighter control of rights, and a film-incentive scheme that pays on time.
1547
1548## So What?
1549
1550Little in the diagnosis will surprise people who work in South African screen media: weak distribution, thin marketing, leaky rights, unstable incentives, and falling cinema attendance are long-standing concerns.
1551
1552The data in both reports might prove more valuable to those outside that ecosystem.
1553
1554That said, none of this is the final word, and, to be fair, neither report claims to be. The distribution report is based on interviews with industry experts; the audience survey, with 379 respondents, is designed to show trends, not exact proportions. These studies give the state film body a directional read on the bottlenecks, detailed enough to inform policy and spending.
1555
1556[Download both reports here](https://www.nfvf.co.za) under the “Industry Insights” section.`},{slug:"netflix-film-shift-african-producers-2026",title:"What, If Anything, Does Netflix’s Film Shift Offer African Producers?",category:"Industry",date:"June 13, 2026",summary:"Netflix’s new film chief Dan Lin is reorienting the division around cost discipline, genre clarity, and engagement metrics. I’m assessing what, if anything, that shift offers African and diaspora producers, distributors, and platforms still trying to read Netflix as a buyer, partner, or gatekeeper.",author:"Tambay A. Obenson",isPremium:!0,readTime:"7 min read",headerImage:"/manus-storage/b626466a-0e91-0bac-d160-cd53dd1d5d86_36a5c38f.jpg",headerImageCentered:!0,content:`I’m catching up on flagged news from earlier this month — including this one, a June 4, in-depth New York Times (NYT) profile of Dan Lin, Netflix’s current chairman of film, two years into the role, titled “Netflix Is Done Coddling Hollywood.” Lin was hired in April 2024 to replace Scott Stuber, Netflix’s previous film chief, whom the article describes as courting Hollywood with major directors, large budgets, creative freedom, and some movie-theater releases. Lin is framed as the hard-nosed correction to that period.
1557
1558I’m assessing whether the profile offers anything worth considering for African and African diaspora screen sector thinking, especially for producers, distributors, platforms, and companies still trying to read Netflix — still the world’s #1 streamer — as a buyer, partner, or gatekeeper.
1559
1560Full disclosure: I canceled my Netflix subscription about two months ago, after more than two decades as a customer. The Premium plan had risen from $24.99 to $26.99 a month in the U.S., where I’m based, and with the market now full of other options, that price no longer made sense for a service I was watching less and whose content I was finding too often rather mediocre.
1561
1562I mention it because that value-versus-price calculation looms over much of what the NYT profile describes. Netflix has to keep raising prices, grow its advertising subscriptions, and keep subscribers watching, and its film strategy has to contend with which kinds of movies keep people watching.
1563
1564Nicole Sperling’s NYT profile presents Lin as blunt, disciplined, and unusually direct. The facts describe a film division now reporting to Bela Bajaria, Netflix’s chief content officer, who comes from television, and not to Ted Sarandos, the co-chief executive and longtime public face of the company. Netflix film has been reorganized by genre and told to spend less while developing more material in-house. The article also positions movies beside cheaper podcasts and live programming as tools for keeping users on the service.
1565
1566Sperling’s piece offers no direct explanation for Lin’s film strategy, but Netflix’s own investor materials show why engagement now has a more direct commercial influence. Netflix reported more than $1.5 billion in ad revenue in 2025 and says advertising is on track to reach $3 billion in 2026. It also says the ads subscription plan now reaches more than 250 million monthly active viewers globally.
1567
1568In that environment, movies become repeat-use programming. A service that needs subscribers watching and advertisers buying is well served by low-cost titles that fit clear audience categories.
1569
1570The pull quote that has drawn the most attention is this one from Lin: “There is a group of filmmakers who still want theatrical. Those are filmmakers that we’ve accepted we just won’t work with.” Major franchises are likely to get different treatment.
1571
1572**So what, if anything, does this offer?**
1573
1574As I see it, Netflix still sells itself as premium entertainment, but its business increasingly depends on the same basic platform questions as YouTube, Tubi, TikTok, or any ad-supported video service: what keeps people watching, how cheaply can that viewing be supplied, how precisely can audiences be segmented, and how much revenue can that attention support.
1575
1576On the subscription-only side, Netflix already has the monthly fee, but it still needs enough perceived value to prevent cancellations and justify price increases. I’m one of those cancellations: the value no longer matched the price.
1577
1578On the ad-supported side, viewing time has a more direct revenue link because more engagement creates more ad inventory. So, a lower-cost genre film that keeps people watching may be more valuable to Netflix than a costly prestige film that mainly improves reputation.
1579
1580The profile sticks to Netflix’s film operations, Hollywood talent relationships, and global platform priorities. One question is what those priorities might mean for African film and series.
1581
1582One reading is that Lin’s unabashed approach should make Netflix more receptive to African content because the criteria match what some African producers already do well: controlled costs, fast production, genre clarity, large online audiences, and direct viewer response. Marodi TV in Senegal is a good example of the model: the Senegalese studio has about 8.8 million YouTube subscribers, built by distributing series on digital platforms and on local and pan-African television channels, with Canal+ later taking an equity stake. I wonder if Netflix ever considered a similar route: investing in African production companies with existing audiences, providing them with capital to keep producing locally while giving Netflix a closer path to proven African viewing habits.
1583
1584Netflix and YouTube are different businesses, but Netflix seems to be pushing film closer to internet video economics: keep viewers on the platform and active. Its growing ad business is the engine — more than 250 million global monthly active viewers on the ad-supported plan, with an ad revenue target of about $3 billion for 2026, and expected to continue expanding.
1585
1586That possible overlap comes with a hard limit, though. Netflix has not spent years training its global audience to watch African films and series, so low cost alone does not necessarily solve the problem. A Nigerian, Kenyan, or South African t
1586itle may be cheap by U.S. studio standards, but Netflix still has to believe it can deliver enough viewing, retention value, ad value, or brand value to justify attention within the service.
1587
1588Canal+ offers the contrast because its African strategy is rooted in local production. It has acquired production assets, including Marodi TV in Senegal, ROK in Nigeria, Plan A in Côte d’Ivoire, and ZACU in Rwanda, and it can use local production companies to produce at volume for audiences already accustomed to those formats. Canal+ also extended its Netflix bundle to francophone Africa on June 6, 2025, adding Netflix to the consumer subscription layer, while Canal+ continues to invest in African companies that produce local volume and build the audience habits that support it.
1589
1590So, what does a more cost-conscious, engagement-driven Netflix film strategy mean for African film and series? I’ll be cautious with my answer. Under Lin, Netflix is developing a strategy that some African producers could fit into, and African screen sectors already have companies demonstrating audience demand across YouTube, television, local markets, and diaspora circulation. Whether Netflix should reconsider and enter that value chain from an earlier starting point is a consideration.`},{slug:"afp-pipeline-registry-rebuild-scoring-filters-2026",title:"AFP Pipeline Registry Evolves: Scoring System, Project Detail Pages, Saved Filters, and Time in Pipeline",category:"Industry",date:"June 7, 2026",summary:"Since the last update on May 20, the AFP Pipeline Registry has had its first round of structural work: a rebuilt tier system, project detail panels, saved filters, and a Time in Pipeline column — plus 26 new projects, bringing the total to 380.",author:"Tambay A. Obenson",isPremium:!0,readTime:"6 min read",headerImage:"/manus-storage/unnamed(7)_125e11ea.jpg",headerImageCentered:!0,content:`Since the last update on May 20, the African Film Press (AFP) Pipeline Registry has had its first round of structural work. Three new features for subscribers, plus a rebuilt tier system, plus the usual project additions — 26 more, bringing the total to 380 titles on their way to the proverbial finish line (hopefully).
1591
1592I’ll just dive right in!
1593
1594**Scoring and Tiers**
1595
1596The scoring is one part of a larger effort to make the registry (and other AFP tools) more useful for the people across roles who use them — producers, financiers, distributors, programmers, curators, researchers, sales agents, filmmakers, etc.
1597
1598A couple of months after I introduced the registry, it remains a work in progress, and will likely never be a “finished system.” A platform like this has to keep adapting if it is going to retain its value for the people who will come to rely on it.
1599
1600In the earlier version of the registry, almost every record sat in the bottom tier, so the filter separated little. I spent much of the last week reworking the rubric. Every project now has a score across five components: the director’s track record, the funders attached and their strength, industry support (labs, markets, selective programs), team strength (a recognizable producer or cast), and market readiness (a sales agent or distributor). The score places each project in a tier — Strongest Prospects, Tier 1, Tier 2, or Tier 3.
1601
1602Note: the score measures visible industry traction on public evidence, not artistic quality. The “★ Strongest Prospects” filter surfaces the highest-scoring records across all stages. There are five at present: “Don’t Let the Sun Go Up On Me” (Asmae El Moudir), “Eldorado” (Alaa Eddine Aljem), “Hamlet From The Slums” (Ahmed Fawzi-Saleh), “I’m Coming for You” (Cyrielle Raingou), and “Karatara” (Teboho Edkins).
1603
1604The scoring system today may not be the same as it will be in six months. As always, feedback is welcome.
1605
1606**Project Detail Panel**
1607
1608Click any project and a panel opens with the complete record: director, producers, co-producers, writers, countries, language, the full funder list with tier notes, industry support credits, pipeline stage, source attribution for every claim, and primary contact where available (we’re still filling these in).
1609
1610For Strongest Prospects, Tier 1, and Tier 2 projects, the panel also shows the score breakdown — the funders, markets, and track-record signals behind each tier. For example, a Tier 1 project from a co-production market, an institutional fund, and a director with a prior feature will each show that.
1611
1612**Saved Filters**
1613
1614If you regularly check, say, Moroccan documentaries at Tier 2 or above, you can save that filter combination with a name and surface it from the Saved drawer in one click. On your next visit, a banner at the top of the page shows which records matching any of your saved filters have been updated since you were last on, each with a link to the project’s detail panel.
1615
1616This runs in your browser, so your saved filters live there. Sync across devices will come once there’s enough use to justify it.
1617
1618**Time in Pipeline**
1619
1620Every project shows how long it has been publicly visible. The clock starts with its first institutional record: a festival, market, lab, fund placement, or public announcement.
1621
1622The registry displays this time in circulation in three places. Each project row includes the number of years as a small tag beside its status. The detail panel gives the full line, such as “In circulation since 2022 · 4 years.” A filter also groups projects into four bands: under one year, one to two years, three years or more, and unknown.
1623
1624A project that first surfaced four or five years ago and is still in development reads differently from one that appeared this season. Most records have dates. The oldest go back several years. A smaller group still lacks a reliable first-signal date and is marked as Unknown for now.
1625
1626On what this measures: it’s the date a project first became publicly legible, not the day it was conceived. The registry will track time spent in each stage as projects change status and those dates are added.
1627
1628**Interface and Stages**
1629
1630The filters under the stage tiles are now grouped into labeled clusters — Format, Track, Tier, Sales, Circulation, Country, and Funder — so each one is identifiable.
1631
1632The “How to read this registry” help modal received a facelift.
1633
1634**26 Project Additions Since May 20**
1635
1636On May 20, the registry held 354 projects. It now captures 380.
1637
1638The new records come from the Kenya Film Commission/GIZ Screenwriter
1638s’ Residency, Cycle 4; the 2026 Aflamuna Connection; Cannes 2026 industry programs; IDFA’s TalentScope, IBF Classic, and Project Space; Locarno Open Doors 2026; and Annecy’s Mifa Pitches.
1639
1640The additions include projects from Kenya, Uganda, Egypt, Tunisia, Somalia, Djibouti, Nigeria, and Ghana.
1641
1642Existing records have also been updated where necessary. Visions Sud Est’s final funding round attached to four projects, three of which advanced into production; First Cut+ at the Munich Film Festival and Frontières updated others.
1643
1644**Reminders**
1645
1646THE PIPELINE REGISTRY IS NOT MOBILE-FRIENDLY.
1647
1648Presenting this volume of structured data usefully requires a laptop or desktop-sized screen. The mobile experience will come, but not before the desktop one is mature.
1649
1650The registry is an evolving platform. It improves with usage and feedback.
1651
1652If any access issues, reply to this email.
1653
1654Again, there is a help modal that walks the user through how this mostly works.
1655
1656And if you’re just joining us, more on what the AFP African Film Pipeline Registry is follows below.
1657
1658---
1659
1660**What It Is**
1661
1662The AFP African Film Pipeline Registry is a structured record of African feature films and series in development, financing, production, or post-production — in other words, projects with traction that have not yet premiered.
1663
1664Here, “African” means a project with a primary African country, an African director, an African producer, or a confirmed African production connection. Some diaspora projects are included where the African connection is central to the project’s production, subject, or financing.
1665
1666The full internal registry now contains around 1,000 projects and comes with features that industry professionals across key roles have told me would be useful in this context. Today, I’m opening up roughly a quarter of it — 259 records — and some of the features, to Akoroko subscribers first, because you are the readers most likely to understand both the value of the information and the gaps that still need to be filled.
1667
1668To be sure, the registry is not meant to be a comprehensive census. What’s especially unaccounted for currently are projects with little to no digital footprint. Those tend to be within the entirely homegrown direct-to-local-streamer (and platforms like YouTube) pipeline, which are the most underweighted parts of the picture. We still intend to capture as many of those as possible.
1669
1670**What You Can Do With It**
1671
1672As its name implies, see what’s coming and what stage each is currently in. It’s not built to be static. It’s a living, breathing apparatus — partly automated; partly manual input.
1673
1674There is a help modal that walks the user through how this preview version works.
1675
1676Filter by project stage, format, track record, country, sales agent, or funder.
1677
1678Combine filters — they stack.
1679
1680Just note that there’s still cleaning up being done. For example, the funder filter alone holds around 173 options, from AFAC and the WCF to Canal+, the CNC’s Cinéma du Monde, the IDFA Bertha Fund, the Hubert Bals Fund, the Red Sea Fund, the NFVF, the Sundance Institute Documentary Fund, the Fonds Image de la Francophonie, and most of the institutional money in African feature finance.
1681
1682However, there are duplicates and improperly captured entities that will be tidied up.
1683
1684Search across titles, directors, producers, countries, synopses, pipeline stages, and source text.
1685
1686A live counter shows how many projects match.
1687
1688A “★ Strongest Prospects” filter surfaces the highest-scoring records across all stages, weighted by our own internal methodology, which assigns grades to the caliber of funders attached, filmmaker track records, notable attachments, and more. This is not a judgment of artistic quality. It measures visible industry traction based on public evidence.
1689
1690Click any row to open the full project detail — director, producers, co-producers, writers (where set), countries, language, attached funders, sales agent, distributor, industry support credits, pipeline status, source attribution, primary contact where available.
1691
1692For records that score high enough to appear under Strongest Prospects, the score breakdown is visible too.
1693
1694Again, there is a help modal that walks the user through how this mostly works.
1695
1696**Methodology**
1697
1698Each record contains the project’s title, director, producer(s), primary and co-producing countries, language, format, current pipeline stage, attached funders, industry support credits, and source attribution for every claim.
1699
1700If a claim can’t be traced to something we trust — ourselves, direct communication from filmmakers/producers/etc, an interview, a market placement page (Cinando, for example), a fund announcement, or a verifiable trade-press citation — it doesn’t go in.
1701
1702When two sources disagree, the more authoritative one prevails, and the disagreement is noted. Where a source is shaky, the field stays empty.
1703
1704The tradeoff: the registry is, by design, a few weeks to a few months behind the genuinely most current state of any project. But I don’t think any system could always be entirely current on the day it’s accessed.
1705
1706**Improve the Registry**
1707
1708This first preview is subscriber-only — just as the fuller, more interactive registry will be. There is no open public version planned right now.
1709
1710Consider this an experiment as well. Some entries are there to test how subscribers read, challenge, and improve the data. If you see something in the 259-project slice that’s wrong, stale, missing a funder, has the wrong stage, or has someone attached who isn’t attached anymore — tell me.
1711
1712Reply directly to this email with corrections, source links, project updates, or missing information.
1713
1714More of the registry will open to subscribers in stages as verification continues, source trails improve, and I see how this first release is used.`},{slug:"canal-plus-americanah-adichie-african-pipeline",title:"Canal+ Adds Adichie’s “Americanah” to African Project Pipeline",category:"Television",date:"June 5, 2026",summary:"CANAL+ has listed Chimamanda Ngozi Adichie’s novel among its current African story projects in development, after an earlier HBO Max limited series adaptation fell apart in 2020.",author:"Tambay A. Obenson",isPremium:!1,readTime:"3 min read",headerImage:"/manus-storage/31-8255084-1-cropped_337eda02.png",headerImageCentered:!0,content:`CANAL+ added Chimamanda Ngozi Adichie’s “Americanah” among its current African story projects in development, after an earlier HBO Max adaptation fell apart in 2020.
1715
1716**The Adaptation History**
1717
1718“Americanah’s” screen adaptation has been in public development for more than a decade. In 2014, Lupita Nyong’o was attached to star and produce a film adaptation of the novel. The project later moved to television. In 2019, HBO Max ordered a 10-episode limited series, with Nyong’o still attached and Danai Gurira on board as writer and showrunner.
1719
1720That version did not go ahead. In 2020, the series was dropped after pandemic-era production delays created scheduling conflicts and Nyong’o exited the project.
1721
1722**The Current Status**
1723
1724CANAL+ has not said whether its “Americanah” is connected to the earlier version or an entirely new adaptation. Format, cast, writer, director, production partners, production timetable, and release plan will be announced at a later date.
1725
1726**The Novel**
1727
1728Adichie’s novel, published in 2013, follows Ifemelu and Obinze, two Nigerians whose lives move between Nigeria, the United States, and the United Kingdom, telling a story of migration, race, class, separation, and return.
1729
1730**The Slate**
1731
1732“Americanah” appears in CANAL+ Group’s 2025 full-year results and strategic update as part of its “Creating African Stories With Global Resonance” banner. The same development slate includes the Women Warriors of Dahomey project “Agoodjie,” “The Heist of Benin” (Ava DuVernay and David Oyelowo attached), and a musical tied to Paul Simon’s “Graceland” album, “The Road Home.”`},{slug:"monument-releasing-memory-of-princess-mumbi",title:'Monument Releasing Acquires English-Language Rights to "Memory of Princess Mumbi," Sets August 14 U.S. Release',category:"Industry",date:"June 5, 2026",summary:"Monument Releasing has acquired U.S., Canada, U.K., and Australia/New Zealand rights to Damien Hauser’s sci-fi mockumentary, the first Kenyan feature selected for Venice Days, with a U.S. theatrical release dated August 14.",author:"Tambay A. Obenson",isPremium:!1,readTime:"3 min read",headerVideo:"/manus-storage/YTDown_YouTube_Memory-of-Princess-Mumbi-Official-Traile_Media_Bz88MzLOHFw_001_1080p_c9d1df67.mp4",content:`Monument Releasing has acquired U.S., Canada, U.K., and Australia/New Zealand rights to Damien Hauser’s “Memory of Princess Mumbi,” with a U.S. theatrical release dated for August 14. A new trailer accompanies the announcement.
1733
1734The film was the first Kenyan feature selected for Giornate degli Autori (Venice Days), the independent parallel section of the Venice Film Festival, where it world premiered on September 1, 2025. It went on to a North American premiere in the Centrepiece program at the Toronto International Film Festival.
1735
1736**The Film**
1737
1738Hauser’s fourth feature is a sci-fi mockumentary that mixes documentary, improvised drama, and AI-generated landscapes, set in 2093. The story follows young filmmaker Kuve (Ibrahim Joseph), who travels to the remote village of Umata to document the aftermath of a war that outlawed post-2040s technology and brought ancient kingdoms back. There he meets Mumbi (Shandra Apondi), a local filmmaker who challenges him to work without AI, using only his hands, eyes, and heart.
1739
1740The Swiss-Kenyan director also wrote, shot, edited, and scored the film, and appears in the cast. It was produced by Kaleem Aftab, Apondi, and Hauser under Out of My Mind Films and Hauserfilm, with support from Swiss Films and the Red Sea Film Fund.
1741
1742**The Deal**
1743
1744Monument Releasing President Ryan Kampe called the film a smart and innovative work he felt an obligation to support, and predicted audiences would discover it in cinemas and later across digital platforms. Hauser said he wanted to tell a story that celebrates beauty, joy, and human connection at a time defined by conflict, and credited Monument for believing in the film.
1745
1746Kampe negotiated the deal with Alexandre Moreau of Paris-based Paradise City Sales, which handles international rights.
1747
1748**About Monument Releasing**
1749
1750New York-based Monument Releasing specializes in classic festival, foreign-language, and American independent titles, and is a sister company to sales outfit Visit Films and the incubator Pretty_Ideas.`},{slug:"afp-funding-desk-adds-more-structure",title:"AFP Funding Desk Adds More Structure to African Film Financing Research",category:"Industry",date:"June 3, 2026",summary:"Visual, functional, and data updates to the AFP Funding Desk since launch: a capital-stack filter, Match My Project, eight-layer stack builder, deadline badges, 94 instruments, and a new signpost layout.",author:"Tambay A. Obenson",isPremium:!0,readTime:"4 min read",headerImage:"/manus-storage/afp-funding-desk-header_0fb93aaf.png",content:`On April 30, I introduced the [African Film Press (AFP) Funding Desk](https://africanfilmpress.com/funding-desk) to subscribers. It’s the latest piece of the larger system of tools we’ve been developing under the African Screen Intelligence (ASI) umbrella — a structured body of work designed to give professionals like you access to reliable data and intelligence related to Africa’s screen sectors in a usable, actionable form.
1751
1752On May 5, I followed up with a longer piece on how it actually works in practice, because the financing rationale underlying it isn’t always obvious, and without that, the tool may be read as just a list — especially to the novice.
1753
1754The data is verified and sourced. It’s not, however, a guarantee of access — funds change, cycles open and close, and eligibility rules shift. It offers real, legible roadmaps. The rest is up to you.
1755
1756In the weeks since, I’ve continued to refine the tools — on both the front and back ends — based on early, though limited, feedback and my own intuition. The changes are visual, functional, and in the data itself. A few are all three.
1757
1758This update lays out what’s new.
1759
1760## Visual
1761
1762The previously empty right column at launch — or the stage — is now a signpost layout with three labeled indicators pointing at the tool’s main controls: left to the filters, one up-right to “Match my project,” one down to the capital-stack bar.
1763
1764The Capital Stack Builder used to open as a partial panel; now it takes over the full right column when you open it and restores the prior view when you close it. The type inside was enlarged for readability. A quiet, muted intro line was added at the top explaining what a capital stack is. And the print/PDF output was changed.
1765
1766The fund cards now carry three visual signals that weren’t there at launch: a color-coded deadline badge that shows a live countdown (“Closes in N days,” red/orange/blue by urgency), a “data verified” date line, and a tag marking funds restricted to first or second features.
1767
1768The top navigation bar includes a “Match my project” button, added alongside the existing “How to use?” button.
1769
1770## Functional
1771
1772“Fund type” was replaced by a “Capital stack” filter with six values — grant, rebate, soft loan/advance, loan/debt, pre-sale/broadcaster, equity — which is a more precise way to find a fund by the role it plays in financing rather than a loose category. A sort control was added to the results bar (default, recently verified, deadline soonest, A–Z).
1773
1774Match My Project asks five questions (country, format, stage, capital stack, grant size) and returns the funds that fit in the left column.
1775
1776The Capital Stack Builder now has eight layers, not six: the old “international grants” became “International Co-production & Exter
1776nal Funds,” and two new layers were broken out — Soft Loans/Advances and Loans & Debt. It’s still mostly static: you enter a project budget, and it calculates grant coverage against it and shows the financing gap, and you can save or print the full stack as a PDF.
1777
1778A “Show funded projects” view was added, listing recent films a fund backed where that’s documented.
1779
1780## Data
1781
1782Filmmakers Without Borders, the Afreximbank’s broader Film Development Financing Facility, and FAPA (captured at Cannes) were added.
1783
1784Every fund’s notes were rewritten — less about error and more about completeness and clarity, the result of re-checking each record against its source with a concentration on usability.
1785
1786Foreign-only shooting incentives and defunct funds were removed. The net count is now 94 instruments, down from 98 in the last update. This isn’t a hard-coded number — it will fluctuate as the data demands.
1787
1788This session’s fixes on top of all the above: the “How to use?” modal’s language was rewritten to match the new behavior, the print-to-PDF function continues to be a work-in-progress, a panel scroll bug was fixed, six broken “stacks with” references were repaired, and the coverage line is being changed to show a low–high grant range instead of a single summed ceiling.
1789
1790---
1791
1792The platform is live and will be updated continuously. It’s not a static report. Like any application, it’ll evolve because it has to. But that evolution comes with usage. We have the technology now to build these tools; what we want is for them to be useful.
1793
1794You’re not going to use this every day, every week, or even every month. But the hope is that when you think of film financing in the African context, you think of the AFP Funding Desk first, and that it answers your questions about funds, dates, access, and stacks, and offers a roadmap for financing a project. Whether you’re a producer, a financier, a filmmaker, a distributor, a sales agent, or a researcher, there’s probably a use case here for your role.
1795
1796See “Engineering Eligibility: Inside the AFP Funding Desk” for examples.
1797
1798Regrettably, the Funding Desk is desktop only. It’s not mobile-friendly. Given the interface’s two-column layout, filter stack, detail panel, and capital stack builder, building a mobile version would be difficult. We’ll get there. For now, open it on a laptop or desktop.
1799
1800[Access the AFP Funding Desk here.](https://africanfilmpress.com/funding-desk)
1801
1802Reply to this email with any problems.`},{slug:"africa-streaming-infrastructure-watch-june-2026",title:"Africa Streaming & Infrastructure Watch — June Update",category:"Industry",date:"June 2, 2026",summary:"Six new events added since the May update, bringing the total to 50 events across 54 African countries. The World Cup rights picture, Starlink in Uganda, South Africa’s ICASA satellite draft rules, and Canal+ listing on the Johannesburg Stock Exchange.",author:"Tambay A. Obenson",isPremium:!0,readTime:"4 min read",headerImage:"/manus-storage/africa-streaming-watch-header_51e63ed7.png",content:`A reminder for newer subscribers: this is updated monthly, or sooner when newly identified activity changes market conditions enough to matter. The goal over time is a first point of reference for how pricing, distribution, regulation, and ownership move across African markets, and how those shifts connect to the rest of the world. As months pass, the oldest entries drop off the visible timeline and map, while staying available in longer-range views and historical assessments.
1803
1804Six new events have been added since the May update, bringing the total to 50 events across 54 African countries in the last 12+ months.
1805
1806The biggest development since the May update is the men’s football World Cup, which starts in June, and the question of how sub-Saharan Africa will watch it. It comes down to a handful of operators, one of them a company few outside Togo have heard of.
1807
1808New World TV, a broadcaster based in Lomé, Togo, holds the primary rights to the 2026 World Cup across 43 sub-Saharan territories, South Africa included — a role it took from SuperSport for this cycle. It then sub-licenses those rights to pay-television and free-to-air broadcasters around the region.
1809
1810Two of those sub-licensees confirmed their plans in the same window. Azam TV, a pay-television o
1810perator based in Tanzania, will air all 104 matches in eight markets — Tanzania, Kenya, Uganda, Malawi, Zambia, Botswana, Zimbabwe, and Rwanda — with separate Swahili and English feeds.
1811
1812SuperSport, the sports network of the Canal+-owned MultiChoice group, will carry all 104 matches and, for the first time with a tournament this size, place them on DStv’s cheapest Access package (from R99 a month, about US$6 at R16.20 to the dollar on June 2, 2026) instead of holding them for premium tiers.
1813
1814For the market, the regional rights are currently held by a single holder in Lomé that parcels them out to pay-TV and free-to-air partners across the 43 territories.
1815
1816## Satellite Internet
1817
1818On satellite internet, two developments. Uganda granted Starlink an operating license on May 15, settling a standoff that began on January 1, when the country forced the service to switch off all terminals within its borders. Starlink is now licensed in 28 African countries.
1819
1820In South Africa — the largest market it still cannot enter — the communications regulator, ICASA, published draft rules on May 15 for licensing satellite services, covering the user terminals that Starlink, Amazon’s LEO network, and others sell, as well as a registration system for foreign satellite operators serving South African customers. Public comment is open until June 29.
1821
1822Meanwhile, the review of the country’s Black economic empowerment ownership rules, covered last month, had a comment period that closed on May 20. The two tracks together will decide whether, and on what terms, foreign satellite operators can eventually work in South Africa.
1823
1824## Canal+ on the JSE
1825
1826In ownership, Canal+ took another step in absorbing the African pay-television group it bought last year. The French company won approval on May 12 to list its shares on the Johannesburg Stock Exchange, with trading to begin on June 3 under the code CNP. Canal+ keeps its main listing in London; the Johannesburg listing, agreed as a condition of South Africa’s competition authorities clearing the MultiChoice takeover, makes it the first French company on the exchange. It lists with a market value of about £2.25 billion, roughly R51 billion (about US$3.1 billion).
1827
1828Visit and bookmark the [African Film Press (AFP) Africa Streaming & Infrastructure Watch](https://africanfilmpress.com/africa-streaming). The [“Interactive Map” button](https://africanfilmpress.com/africa-streaming-map) is at the top of the page.
1829
1830Note: Both the timeline and map are best viewed on larger screens, though each is also mobile-friendly.
1831
1832As Akoroko subscribers, your feedback is most welcome.`},{slug:"afp-critics-prize-locarno-open-doors-2026",title:"African Film Press (AFP) Joins Locarno Open Doors as Award Partner With AFP Critics Prize — 2026 Africa Cycle Projects, Participants Announced",category:"Festivals",date:"June 1, 2026",summary:"African Film Press (AFP) joins Locarno’s Open Doors as an award partner for the 2026 edition and will present the AFP Critics Prize to one of the selected projects. Six producers and five directors also selected for the program. New awards also confirmed by EAVE / The Luxembourg Film Fund.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",content:`African Film Press (AFP) — the cross-regional alliance of founding publications Akoroko, Sinema Focus, and What Kept Me Up — joins Locarno’s Open Doors as an award partner for the 2026 edition and will present the AFP Critics Prize to one of the selected projects. The prize includes a USD 500 cash award, a certificate, and ongoing editorial coverage of the recipient and their future work across AFP networks.
1833
1834AFP first presented the prize on 5 December 2025 at the 5th edition of the S16 Film Festival in Lagos, where the inaugural award went to Nigerian filmmaker Dika Ofoma for his short film “Obi Is a Boy.” Ofoma himself was a year-one Open Doors Africa participant: his feature project “Kachifo (Till the Morning Comes)” was selected for the 2025 Open Doors Projects line-up and won three awards at that edition.
1835
1836The 2026 edition is the second year of Open Doors’ four-edition cycle dedicated to 42 African countries, with eligibility set under the guidelines of the Swiss Agency for Development and Cooperation. The program runs from 5 to 10 August during the Locarno Film Festival and its industry arm, Locarno Pro, with training, mentoring, and networking alongside public screenings.
1837
1838Six projects in development were selected from ten countries:
1839
1840- **“Too Much Music”** (Ghana) — directed and produced by Aseye Fiagbe. A documentary on keyboardist Kiki Gyan.
1841- **“Chapa 100”** (Mozambique–South Africa) — directed by Ique Langa, whose previous feature “O Profeta” played the Tiger Competition at IFFR this year, and produced by Lara Sousa (Kulunga Filmes). A surrealist love story.
1842- **“I Live in V.I”** (Nigeria) — directed by Ugochukwu Azuya, produced by Olubunmi Ogunsola. A satire on urban space and gentrification.
1843- **“Accept My Plea For Burial” (Baryo Aas Iga Gudoon)** (Somalia–Djibouti) — directed by Mohammed Sheikh, produced by Kadir Harbi Hassan. A fiction project on the tensions between tradition and justice in a rural community.
1844- **“The Ones With The Tempered Flowers”** (Tanzania–Kenya) — directed by Neema Ngelime, produced by Ivy Kiru (AQ Pictures, LBx Africa), who was in the 2026 La Fabrique Cinéma at Cannes with “Strong Wind.” An experimental documentary.
1845- **“A Vineyard for A Lobster”** (Uganda) — directed by Talemwa Pius, produced by Gashumba Emmanuel (Gripmagic Uganda Limited). A fiction project using a snow-covered landscape as a colonial allegory.
1846
1847The Open Doors Producers program selected six participants from six countries:
1848
1849- **Mamounata Nikiema** — Burkina Faso (Pilumpiku Production); a veteran of the industry, knighted at FESPACO 2021.
1850- **Natasha Craveiro** — Cabo Verde (Korikaxoru Films); produced “Omi Nobu,” which screened in the Open Doors Screenings at Locarno 2025.
1851- **Adja Mariam Mahre Soro** — Ivory Coast; founder of the Abidjan animation studio Studio Kà.
1852- **David Ikeata** — Nigeria (Vox Cinematic Films); co-produced the Kazakh-Nigerian film “Adam Bol” (2024) and is developing a project with an Egyptian director.
1853- **Rua Osman** — Sudan (Helomur Picture); credits include “You Will Die at Twenty” (Venice 2019) and “Goodbye Julia” (Cannes 2023).
1854- **Tapiwa Chipfupa** — Zimbabwe (Ambidextrous Pictures); an EAVE alumna who launched the training program AVEL.
1855
1856Five directors join the Open Doors Directors program:
1857
1858- **Fagamou Fama Ndiaye** — Senegal
1859- **Rediet Haddis Yalew** — Ethiopia
1860- **Pocas Pascoal** — Angola
1861- **Judith Nini Kibinge** — Kenya
1862- **Ariel Añez** — Mozambique
1863
1864Their short films will screen as part of the Open Doors Screenings, the full lineup of which will be announced on 1 July 2026.
1865
1866Head of Open Doors Zsuzsi Bánkuti said the future of cinema “depends on who gets to make it, and how,” and named gender parity — more female voices behind the camera and in the producer’s chair — as a priority for the edition.
1867
1868Head of Studies Yanis Gaye called African film ecosystems “a chance for the industry… to globally redesign” its co-production practices, its audience strategies, and the economics of cinema.
1869
1870AFP is one of two partners added to the awards roster this year, alongside an EAVE and Luxembourg Film Fund scholarship worth EUR 4,000 for the EAVE Marketing Workshop.
1871
1872A jury will award the prizes on 10 August. The established awards include the Open Doors Grant of CHF 50,000 from visions sud est and the City of Bellinzona, the CNC Development Prize of EUR 8,000, and the Arte Kino International Prize of EUR 6,000, with further awards from IFFR Pro, the International Culture Center Tabakalera and San Sebastián Film Festival, the Internationale Kurzfilmtage Winterthur, the Organisation Internationale de la Francophonie, and Sørfond.
1873
1874Akoroko covered year one of the Africa Cycle (I was there in person). For year two, the coverage will be shared across African Film Press (AFP), with partners Jennifer Ochieng (Sinema Focus) and Ikeade Oriade (What Kept Me Up).`},{slug:"dist-sales-report-2026",title:"Distribution & Sales Report: African & Diaspora Films at Sundance, IFFR, Berlinale, and Cannes 2026",category:"Distribution",date:"May 26, 2026",summary:"23 African and diaspora films. 16 confirmed deals. 15+ territories. A territory-by-territory breakdown of where distribution and sales stand for African and diaspora films across the four major first-half festivals of 2026.",author:"Tambay A. Obenson",isPremium:!0,readTime:"8 min read",listenId:"dist-sales-report-2026",headerImage:"/manus-storage/dist_sales_report_2026_header_52d55c4b.png",content:`The 79th Cannes Film Festival closed on May 23. With Sundance, the International Film Festival Rotterdam (IFFR), the Berlinale, and Cannes now behind us — four first-half “Big 5” film festivals in the books for 2026 — this felt like a reasonable moment to take stock of where distribution and sales stand for the African and diaspora films that were in play across those markets.
1875
1876The 2026 slate is now wider: 23 African and diaspora films across the four events, including three African films in the Berlinale Competition — a record at that level — and four titles at Cannes. The deals, or the absence of them, tell a familiar story with some variations.
1877
1878One Berlinale Competition title generated genuine multi-territory traction during the European Film Market window. “Dao” added North America, Spain, Germany, and the former Yugoslavia in the days after the festival closed. “Clarissa” entered Cannes with a worldwide Neon acquisition already in place. “Black Burns Fast” already had Amazon Prime Video as worldwide rights holder. “Kikuyu Land” closed a worldwide all-rights documentary deal with Journeyman Pictures after Sundance.
1879
1880Several other titles arrived in the 2026 festival sales cycle with financing-embedded domestic arrangements already in place, especially in France, but without wider international deals to announce. A few had no confirmed distribution in any territory as of today, May 26, 2026.
1881
1882The report tracks all of it — confirmed acquisitions, territory by territory, the films still in negotiation or active sales, and the titles that operate outside conventional acquisition markets altogether, by design or circumstance.
1883
1884The distribution map is consistent across the report. French co-production financing continues to be the dominant pathway for African cinema into the international festival market: 11 of the 23 films are French co-productions, and nine have confirmed French theatrical distribution. MAD Solutions remains the primary distribution route across the Arab world for titles reaching that market. Confirmed domestic African theatrical distribution across the Sundance, IFFR, and Berlinale titles exists in Angola, South Africa, and Tunisia.
1885
1886“Ben’Imana,” which won both the Camera d’Or and the Un Certain Regard FIPRESCI Prize at Cannes, is singled out in the report as a compelling post-Cannes sales case among the four Cannes titles because it combines two major prizes, mk2 Films world sales, Ad Vitam’s French distribution, near-universal critical praise, and historical status as the first Rwandan film in Cannes Official Selection.
1887
1888As the industry enters the quieter though rigorous mid-year festival circuit, this is one window into how African and diaspora festival titles are moving through the international distribution market in 2026.
1889
1890The full report covers 23 feature films: 16 titles with at least one confirmed distribution arrangement; 7 titles with no confirmed public distribution deal; sales agents and rights holders; and a complete factual slate breakdown, including production countries, territories, festival sections, prizes, and more.
1891
1892[Download the full 18-page PDF report here →](https://akoroko.com/manus-storage/African_Diaspora_Film_Distribution_Report_2026_d0d5ef1f.pdf)
1893
1894Please let me know if you have any access problems.`},{slug:"afp-pipeline-registry-update-cannes-2026",title:"AFP Pipeline Registry Update: 44 New Projects from DFM, DFF, and New Ivorian Initiative Announced at Cannes",category:"Industry",date:"May 20, 2026",summary:"The AFP African Film Pipeline Registry has been updated with 44 new projects, bringing the total to 354. The additions include 36 from the Durban FilmMart’s 2026 Pitch and Finance Forum, one from the Displacement Film Fund (Akuol de Mabior’s “Traces of a Broken Line”), and 10 from NEXT STORY LAB, a new Ivorian development program launched by Philippe Lacôte.",author:"Tambay A. Obenson",isPremium:!0,readTime:"6 min read",listenId:"afp-pipeline-registry-update-cannes-2026",headerImage:"/manus-storage/afp_pipeline_registry_cannes_update_2026_header_aa71fcd6.jpg",content:`The registry has been updated with 44 new projects added over the past two days at Cannes, bringing the total to 354 projects on display. The last update was on May 8.
1895
1896The bulk of the additions — 36 projects — come from the Durban FilmMart’s official selection for its 17th annual Pitch and Finance Forum, taking place October 9–12 in Durban. The 2026 DFM slate covers fiction features, documentary features, fiction series, animated series, animated features, and animated shorts, from South Africa, Nigeria, Kenya, Egypt, Tunisia, Sudan, Rwanda, Ethiopia, Tanzania, Uganda, Burkina Faso, Algeria, the Democratic Republic of Congo, and Mozambique.
1897
1898Three projects in the selection — “Holy Cow,” “Waslap,” and “Where Do I Belong?” — were already in the registry. Their records have been updated to reflect the DFM placement.
1899
1900One additional project comes from the second cycle of the Displacement Film Fund, a program co-administered by IFFR, the International Film Festival Rotterdam’s Hubert Bals Fund, and supported by actress Cate Blanchett. South Sudanese filmmaker Akuol de Mabior (“No Simple Way Home,” 2022) received a production grant for her follow-up, “Traces of a Broken Line” (working title), a South Africa/South Sudan co-production with a confirmed world premiere at IFFR 2027.
1901
1902The remaining 10 projects are from NEXT STORY LAB, a new development program for Ivorian filmmakers launched by director Philippe Lacôte (“Night of the Kings”) — twice responsible for Côte d’Ivoire’s Oscar submission — and run out of his Abidjan production company Wassakara Productions with backing from the Institut français. The lab named its inaugural cohort of 10 directors at the Cannes Marché du Film on May 17.
1903
1904NEXT STORY LAB is a 10-month program. It selects 10 directors per year across features, documentaries, series, and shorts, and the curriculum covers project positioning, writing and rewriting with mentors matched to each project, pitch training, contracts, and rights-chain instruction (authors’ agreements, coproduction deals, image and neighboring rights), financing search support, and producer matching. Financiers and broadcasters are also brought in to present what they’re looking for. The lab does not produce the projects itself; it develops them to a presentable stage for handoff to producers and funding bodies.
1905
1906Format disclosures (feature, series, etc) have not been published for most projects (I met with Lacôte the night before the announcement and will be receiving that information post-Cannes); records have been entered, marked TBC where unconfirmed, and will be updated as details are confirmed.
1907
1908The same filters, search, and scoring apply to all new entries.
1909
1910A language column has been added to the registry. Not every project has a language identified yet — that will fill in as records are updated. A distributor column is planned, but not a priority right now. The majority of projects on the registry are in development — over 200 of the 354 — and at that stage, sales agents and distribution deals are the exception. The column will be added when the landscape warrants it.
1911
1912As a reminder, the registry is a work-in-progress, built to serve across roles — financier, distributor, sales producer, festival programmer, curator, academic, journalist. It’s not something you will access every day, or even every month. Think of it as a reference point for when you need to learn about a project that hasn’t yet hit the circuit.
1913
1914The “Strongest Prospects” filter is one example of how that works in practice: it surfaces the highest-scoring records based on a system we built that c
1914onsiders filmmaker track record, financing raised, attachments, and proximity to completion — a combination of public data and our own editorial judgment. Tier 1 projects work along similar lines. The scoring, a time-consuming process, will be a monthly update for now. The next is scheduled for the first week of June.
1915
1916Additionally, there is still a backlog. The registry currently covers the post-pandemic years — roughly 2020 to 2026 — because that’s the most actionable slice. Earlier projects will be added over time, but only after the data is cleaned up. A large number of those projects are likely stalled or dead, and there is no value in publishing records that go nowhere.
1917
1918One thing at a time. Feedback first, then iteration. Call this “beta testing.” It’s not perfect, but we’ll get there.
1919
1920**Note: The Pipeline Registry is not mobile-friendly.** Presenting this volume of structured data in a genuinely useful way required trade-offs. A registry that works on a large screen does not work on a phone. For now, the larger screen is the intended environment. That may change as the platform evolves.
1921
1922If any access issues, reply to this email. Again, there is a help modal that walks the user through how this mostly works.
1923
1924## What It Is
1925
1926The AFP African Film Pipeline Registry is a structured record of African feature films and series in development, financing, production, or post-production — in other words, projects with traction that have not yet premiered.
1927
1928Here, “African” means a project with a primary African country, an African director, an African producer, or a confirmed African production connection. Some diaspora projects are included where the African connection is central to the project’s production, subject, or financing.
1929
1930The full internal registry now contains around 1,000 projects and comes with features that industry professionals across key roles have told me would be useful in this context. Today, I’m opening up roughly a quarter of it — 259 records — and some of the features, to Akoroko subscribers first, because you are the readers most likely to understand both the value of the information and the gaps that still need to be filled.
1931
1932To be sure, the registry is not meant to be a comprehensive census. What’s especially unaccounted for currently are projects with little to no digital footprint. Those tend to be within the entirely homegrown direct-to-local-streamer (and platforms like YouTube) pipeline, which are the most underweighted parts of the picture. We still intend to capture as many of those as possible.
1933
1934## What You Can Do With It
1935
1936As its name implies, see what’s coming and what stage each is currently in. It’s not built to be static. It’s a living, breathing apparatus — partly automated; partly manual input.
1937
1938There is a help modal that walks the user through how this preview version works.
1939
1940Filter by project stage, format, track record, country, sales agent, or funder. Combine filters — they stack.
1941
1942Just note that there’s still cleaning up being done. For example, the funder filter alone holds around 173 options, from AFAC and the WCF to Canal+, the CNC’s Cinéma du Monde, the IDFA Bertha Fund, the Hubert Bals Fund, the Red Sea Fund, the NFVF, the Sundance Institute Documentary Fund, the Fonds Image de la Francophonie, and most of the institutional money in African feature finance. However, there are duplicates and improperly captured entities that will be tidied up.
1943
1944Search across titles, directors, producers, countries, synopses, pipeline stages, and source text. A live counter shows how many projects match.
1945
1946A “★ Strongest Prospects” filter surfaces the highest-scoring records across all stages, weighted by our own internal methodology, which assigns grades to the caliber of funders attached, filmmaker track records, notable attachments, and more. This is not a judgment of artistic quality. It measures visible industry traction based on public evidence.
1947
1948Click any row to open the full project detail — director, producers, co-producers, writers (where set), c
1948ountries, language, attached funders, sales agent, distributor, industry support credits, pipeline status, source attribution, primary contact where available.
1949
1950For records that score high enough to appear under Strongest Prospects, the score breakdown is visible too.
1951
1952## Methodology
1953
1954Each record holds the project’s title, director, producer or producers, primary and co-producing countries, language, format, current pipeline stage, attached funders, industry support credits, and source attribution for every claim.
1955
1956If a claim can’t be traced to something we trust — ourselves, direct communication from filmmakers/producers/etc, an interview, a market placement page (Cinando, for example), a fund announcement, or a verifiable trade-press citation — it doesn’t go in.
1957
1958When two sources disagree, the more authoritative one prevails, and the disagreement is noted. Where a source is shaky, the field stays empty.
1959
1960The tradeoff: the registry is, by design, a few weeks to a few months behind the genuinely most current state of any project. But I don’t think any system could always be entirely current on the day it’s accessed.
1961
1962## Improve the Registry
1963
1964This first preview is subscriber-only — just as the fuller, more interactive registry will be. There is no open public version planned right now.
1965
1966Consider this an experiment as well. Some entries are there to test how subscribers read, challenge, and improve the data. If you see something in the 259-project slice that’s wrong, stale, missing a funder, has the wrong stage, or has someone attached who isn’t attached anymore — tell me.
1967
1968Reply directly to this email with corrections, source links, project updates, or missing information.
1969
1970More of the registry will open to subscribers in stages as verification continues, source trails improve, and I see how this first release is used.`},{slug:"clarissa-cannes-review-esiri-brothers-2026",title:"“Clarissa” (Cannes Review): The Esiri Brothers Bring “Mrs. Dalloway” Into Nigerian Privilege",category:"Industry",date:"May 19, 2026",summary:"Chuko and Arie Esiri’s “Clarissa” transposes Virginia Woolf’s 1925 novel into present-day Lagos, placing an upper-crust Nigerian social stratum — British accents, domestic hierarchies, inherited colonial codes — at the center. Sophie Okonedo plays the older Clarissa, with India Amarteifio, David Oyelowo, Ayo Edebiri, and Nikki Amuka-Bird in the ensemble. World premiere: Directors’ Fortnight, Cannes 2026.",author:"Tambay A. Obenson",isPremium:!0,readTime:"10 min read",listenId:"clarissa-cannes-review-esiri-brothers-2026",headerImage:"/manus-storage/clarissa_cannes_review_2026_header_2aef0799.jpg",content:`Filmmakers Chuko and Arie Esiri describe “Clarissa,” the follow-up to their working-class first feature, “Eyimofe” (2020), as a free variation on Virginia Woolf’s 1925 stream-of-consciousness novel, “Mrs. Dalloway,” made from two impulses at once: an interest in Woolf’s novel and a desire to explore a specific Nigerian social stratum. In a post-screening Cannes Film Festival Q&A, where the film is making its world premiere, they also connect the adaptation to Nigeria’s colonial history with England and their interest in capturing a high-society Lagos milieu rarely seen on screen.
1971
1972The film moves between present-day Lagos, where Clarissa prepares for a party at her home, and an earlier timeline that follows Clarissa, Peter, Sally, Richard, and others in their youth. Sophie Okonedo plays the older Clarissa, with India Amarteifio as the younger version; David Oyelowo plays the older Peter, with Toheeb Jimoh as the younger; Nikki Amuka-Bird plays the older Sally, with Ayo Edebiri as the younger; Jude Akuwudike plays the older Richard, with O Ogranya as the younger Richard; and Fortune Nwafor plays Septimus, a soldier who has PTSD.
1973
1974During the Q&A, Chuko, who wrote the screenplay, said he reread “Mrs. Dalloway” eight or nine years before adapting “Clarissa” and recognized his own family and social circle in Woolf’s characters. The film follows that recognition into Lagos. Woolf’s upper-class London world, old attachments, and class anxieties become an upwardly mobile Nigerian circle where privilege is expressed in British accents that suggest elite education, international travel, and inherited British class principles, even as they move inside Nigerian domestic hierarchies;
1974 cooks, drivers, housekeepers, workers, and service standards strict enough for a father to scold a servant for serving without gloves.
1975
1976That dynamic complicates any surface reading of class in “Clarissa” as a Lagos-set adaptation of “Mrs. Dalloway.” Consequently, the film is strongest as a study of class behavior within an upper-crust Nigerian socio-cultural environment in which speech, physical spaces, labor, cuisine, manners, and inherited British codes define the social order.
1977
1978The opening sequences, setting up the party preparations, establish the terms: in the “older” timeline, Richard, Clarissa’s husband, has invited “Sandra” to the party without Clarissa’s approval, and Clarissa tells him to withdraw the invitation because the guest list is hers to control; the wrong plates have been brought out; the unclean mosaic has been left against the sofa; Mr. Joseph, the workman, has to move it; Matilda, one of the household staff, has to recheck the kitchen, to make sure there is snail and guinea fowl; Comfort, another staff member, is summoned and corrected; Ellie, Clarissa’s daughter, is told to eat upstairs or outside because Clarissa doesn’t want anyone in the main space before dinner.
1979
1980Those commands are practical, direct, and constant. “Clarissa,” the film, understands that class power often appears as the right to be particular. Clarissa does not need to shout. She asks, corrects, redirects, and expects compliance without confrontation. When Mr. Joseph explains that the wall-mounted mosaic looks different from his height than from Clarissa’s, after she summons him in frustration, her answer — “Hang it at my level” — carries more weight because the word references both the placement of the artwork itself and the hierarchy inside the house.
1981
1982Chuko Esiri stated that Nigeria’s colonial history with England made Woolf’s material feel even more relevant to the adaptation. The film turns that history into social behavior. Clarissa’s home is more than background. It’s the film’s most precise social space.
1983
1984The younger timeline sharpens that order. In an earlier uncomfortable scene in which Clarissa’s father sharply scolds a servant for serving without gloves in front of the younger Clarissa, Peter, Richard, and Sally, social class becomes a lesson. The children are being served, but they are also being educated in how their world functions. The discomfort of the scene comes from the fact that everyone involved is Nigerian, while the terms of respectability appear shaped by an imported etiquette system.
1985
1986In that same younger timeline, a conversation about a poem Peter, an aspiring writer, has written turns into an argument about colonial language. Peter says the poem is about colonialism and the discord it created. Clarissa challenges his use of words like “raw” and “primal,” because those words make Africans sound backward. Peter argues that the early imagery was meant to suggest an uncluttered life before colonial disruption. Clarissa refuses that defense: “Words have meaning.” If he uses a word like “primal,” she says, the reader will imagine something “rough and unrefined.” He cannot ask the reader to reclaim the word for him.
1987
1988At this point, “Clarissa” becomes more than a mere literary adaptation. In Woolf’s novel, Mrs Dalloway’s social class is the unmarked default — the inside that the novel watches from. In the Esiris’ film, that class is visible as a Lagos social stratum that Nigerian cinema, made for international circulation, rarely places at the center. The film’s social intelligence does not turn the point into a lecture. It lets it accumulate in speech, posture, service, correction, and silence.
1989
1990## Strengths and Limits
1991
1992That restraint is also the film’s limitation. “Clarissa” is, for all intents and purposes, a mood piece, organized less by plot than by feeling and atmosphere. That choice gives the film its visual distinction, but it also leaves parts of the drama feeling underdeveloped. It’s titled “Clarissa,” and Okonedo’s older Clarissa is often compelling to watch, yet the film gives fuller access to her environment than to her interior life. By the end, we know her class position, her marriage to Richard, her daughter, her party, her old attachments, and her need for control. We understand how she arranges a room. We understand less about what she wants from the life she has arranged.
1993
1994The film spends enough time away from the character Clarissa that “Clarissa” feels more like an ensemble piece organized around a party than a character study anchored entirely in her point of view. The uncertainty may be part of the film’s design, but it still shapes the viewing experience: Clarissa is always present as a social force, while her desire is harder to identify.
1995
1996Okonedo does a great deal with that limited access. Her face becomes one of the film’s most expressive surfaces. The camera often holds on the slightest shifts: a smile that does not fully settle, a look away, a moment of concern, a brief sign of strain inside a composed body. Clarissa’s dresses hang on her in a way that makes her seem both elegant and exposed. Her stillness has authority, but also a kind of fatigue. The performance gives the film many of its finest moments because Okonedo can make withheld feelings visible without having to explain them.
1997
1998Jonathan Bloom’s cinematography supports that performance. “Clarissa” is visually warm, controlled, and carefully framed, often using the house itself to contain people inside lines, doorways, and interior arrangements. The past has a softer, more idyllic quality than the present, with youth, beauty, ennui, and privilege treated almost as a remembered atmosphere. The younger sections feel insulated from ordinary Lagos life; the present-day scenes feel more arranged, as if memory has hardened into rooms, objects, etiquette, and routine.
1999
2000Lagos is also filmed against the usual screen shorthand. “Clarissa” does not lean on traffic, heat, noise, or urban anxieties. It presents a Lagos of compounds, interiors, measured movement, and expensive calm. It’s still Lagos, but Lagos from a particular class position.
2001
2002That visual restraint gives “Clarissa” its beauty, and sometimes its drift. At 125 minutes, the film’s quietness begins to feel overextended. A work organized by mood can hold attention when every scene deepens the central experience. Here, several passages draw out the atmosphere without adding enough new tension to Clarissa’s story, making its structural looseness harder to ignore.
2003
2004## The Septimus Problem
2005
2006The Septimus storyline is where that structural looseness becomes most difficult to resolve. The Esiris’ reasoning is sound: Woolf’s Septimus, a First World War veteran, becomes a soldier who has PTSD after Nigeria’s conflict with Boko Haram and related armed groups; Big Ben, which tracks the single day of “Mrs. Dalloway” and keeps the characters aware of time passing, even as memory and fear of death interrupt the present, becomes the adhan, the Muslim call to prayer heard in the film’s soundscape. “Clarissa” also seems to lead into Septimus’s story with a modified “Twinkle Twinkle Little Star” that appears to fold in English folk-rock singer and songwriter Sandy Denny’s 1968 recording, “Who Knows Where the Time Goes?,” a song about time, memory, and departure. The added line — “How can we know 
2006when it’s time to go before the winter fire and the stormy sea?” — brings mortality to the fore as the soldier’s strand begins. The transpositions are specific: Woolf’s war trauma becomes present-day Nigerian military trauma, and Big Ben’s chimes become the adhan and a modified lullaby. The problem is execution. Septimus has a strong reason to be in the adaptation, but the film gives his story less dramatic attachment to Clarissa’s day than Woolf’s novel does on the page, where Septimus’s world enters her stream of consciousness. “Clarissa,” the film, seems to keep the Woolf structure primarily because the adaptation requires it, while the Lagos class portrait has its own rationale and strength.
2007
2008The same restraint shapes Clarissa and Sally’s past intimacy. In the novel, Clarissa Dalloway remembers Sally Seton as one of the defining emotional connections of her youth, with their kiss surviving in memory after Clarissa’s marriage, motherhood, and social position have shaped her adult identity. Woolf’s adult Sally returns as a married mother whose youthful defiance has been folded into domestic respectability; the film gives adult Sally motherhood without making her feel equally settled. It keeps the memory of their desire, but its translation is subdued. In the younger timeline, their closeness leads to confirmation of their desire without dramatics. In the present, that past is an undercurrent during their adult encounter at Clarissa’s house. The film does not resolve what they were to each other. It lets the memory remain part of the emotional pressure around the party.
2009
2010The film is also delicate about the diaspora-returnee narrative in Lagos. Clarissa and the characters from her social setting are not foreign to Nigeria, but the film often presents them as Nigerians whose speech, education, and mobility set them apart from the workers and relatives who measure belonging differently, often by service, presence, obligation, and daily proximity to the house. The older Peter’s return to Lagos places him before an aunt who makes that distance more concrete. She chides him for coming to town without calling her, reminding him that return still comes with family expectations: “It’s not polite.”
2011
2012As a Nigerian (and Cameroonian) in the wind, some of Clarissa’s household order felt familiar to me: the domestic workers, the drivers, the people who maintained the compound, parental expectations, mobility, and the way middle- and upper-class Nigerian homes could make domestic labor feel ordinary until a film places it back in direct view. From that position, I can see moments when the film’s restraint edges toward social comedy, especially in rituals like hosting, correcting, waiting, and preparing. Luis Buñuel’s 1972 surrealist satirical dark comedy, “The Discreet Charm of the Bourgeoisie,” comes to mind, though only as a loose reference point. “Clarissa” is much softer, but it sometimes feels like it’s observing its British-accented Nigerian elite via the ritualized absurdity of keeping a party, a house, and a social image in order.
2013
2014In the end, “Clarissa” gives us a woman shaped by taste, memory, marriage, social obligation, and authority. Woolf’s novel gives Clarissa Dalloway direct interior life: thoughts about age, marriage, Sally, Peter, death, memory, and the life she has chosen. The film works from the outside, using Sophie Okonedo’s face, the house, old friends, silences, and gestures to show what Woolf offers the reader as thought. That choice helps explain both the film’s strength and its limit.
2015
2016The Esiri brothers’ “Clarissa” is most persuasive as a window into bourgeois Nigerian life with a British-Nigerian layer: a world of privilege, mobility, servants, controlled spaces, estates, options, and social codes that are rarely handled with this much intentional, almost ethnographic observation from both the inside and outside, dependent on a domestic order that the film observes with intelligence, even as Clarissa herself stays more elusive than the world built around her.
2017
2018---
2019
2020*“Clarissa” world premiered in Directors’ Fortnight at the 2026 Cannes Film Festival. Directed by Arie Esiri and Chuko Esiri; screenplay by Chuko Esiri; based on Virginia Woolf’s “Mrs. Dalloway.” Per Capita Productions, Inc. and Invention Studios are producers; sales by Neon; international press by DDA.*`},{slug:"south-africa-efm-country-focus-2027",title:"South Africa Gets 2027 European Film Market Country in Focus Slot — Second African Nation Since Program Began",category:"Industry",date:"May 19, 2026",summary:"The Berlinale’s European Film Market named South Africa its 2027 Country in Focus, succeeding Morocco. South Africa becomes only the second African country selected since the program began in 2017. The NFVF leads preparation in partnership with the Ministry of Sport, Arts and Culture. EFM 2027 runs February 10–16.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"south-africa-efm-country-focus-2027",headerImage:"/manus-storage/sa_efm_c
2020ountry_focus_2027_header_eac78288.jpg",content:`The Berlinale’s European Film Market (EFM) named South Africa its 2027 Country in Focus on May 18, succeeding Morocco, which held the slot at EFM 2026. South Africa becomes only the second African country selected since the program began in 2017, after Mexico, Canada, Norway, Chile, the Baltic States, Italy, Spain, and, of course, Morocco.
2021
2022The National Film and Video Foundation (NFVF), South Africa’s statutory film agency, is leading the country’s preparation in partnership with the Ministry of Sport, Arts and Culture. Acting NFVF CEO Onke Dumeko credited “many years of effort by the National Film and Video Foundation team” for the designation. Minister Gayton McKenzie called it “more than recognition… an invitation,” adding that the government’s task is to ensure that resulting partnerships and co-productions “foster growth for all involved.” McKenzie also acknowledged that “challenges that have affected our filmmakers’ ability to produce at scale” need to be addressed.
2023
2024South Africa enters the slot with one of Africa’s most established production-service infrastructures and a film sector with sustained presence at major international film festivals, including the Berlinale. However, matching domestic feature output has been uneven. The local streaming and exhibition landscape has been turbulent. What the country needs to convert in Berlin is foreign production capacity into homegrown production volume.
2025
2026## The Morocco Template
2027
2028Across the week of February 12–18, 2026, Morocco’s EFM program ran across multiple tracks under support from the Ministry of Culture and the Centre Cinématographique Marocain (CCM): a Moroccan Producers Spotlight at the EFM Producers Hub with 10 producers presenting projects, a Berlinale Series Market session on February 16 titled “Moroccan Series on the Rise: From Local Success to Global Ambitions,” and a Berlinale Classics restoration screening of Ahmed Bouanani’s “Mirage” (1979).
2029
2030CCM Director Mohammad-Reda Benjelloun led the delegation. Morocco also amplified its 30 percent cash rebate for foreign productions and its co-production treaty network to international counterparts.
2031
2032On February 15, mid-EFM, Benjelloun met Senegal’s Secretary of State for Culture, Creative Industries, and Historical Heritage, Bacary Sarr, to reopen negotiations on the 1992 Morocco–Senegal co-production agreement, with Dakar prioritizing post-production, distribution mechanisms, training, and the proposed establishment of a legal and technical body.
2033
2034Four weeks before EFM, Minister of Youth, Culture and Communication Mohamed Mehdi Bensaid announced in parliament that international productions had spent roughly MAD 1.5 billion (about USD 150 million) in Morocco in 2025, triple the pre-COVID baseline of MAD 500 million or less. The Berlin designation became the global-facing complement to that domestic announcement.
2035
2036In essence, “Country in Focus” is more of a visibility instrument than a deal-signing summit.
2037
2038We will eventually learn South Africa’s playbook for 2027. The release’s language — “connect South African talent, projects and companies with international buyers, financiers, producers and platforms” — suggests a similar framing. McKenzie’s emphasis on “co-production and investment” matches.
2039
2040## The EFM Criteria
2041
2042Looking at the countries and regions selected since 2017, EFM’s Country in Focus has consistently gone to mid-sized national film industries with established public film bodies, existing co-production treaty networks, internationally recognized directors, and production-service capacity that can absorb foreign shoots. Mexico, Spain, Italy, Norway, Canada, Chile, the Baltic States, Morocco, and now, South Africa all fit that profile.
2043
2044By that implicit standard, the African countries most plausibly positioned for a future slot are limited. Egypt has the production volume and history. Nigeria has the volume and global cultural reach via Nollywood, though its infrastructure and co-production treaty network is thin. Senegal has the directors and critical standing but lacks production-service scale. Kenya has growing streaming infrastru
2044cture and a maturing public film body in the Kenya Film Commission (KFC), though feature output is modest. Tunisia has the auteur tradition and festival history, but limited production and service capacity. None presents the combined profile that Morocco and South Africa each bring.
2045
2046Finally, the EFM release names two South African films: Mark Dornford-May’s “U-Carmen eKhayelitsha” and Imran Hamdulay’s “The Heart Is a Muscle.” “U-Carmen” won the 2005 Golden Bear, the first South African film to take the festival’s top prize. “The Heart Is a Muscle” world-premiered in the 2025 Berlinale Panorama, was selected as South Africa’s submission for the 98th Academy Awards’ Best International Feature race, and opened theatrically in South Africa on March 6, 2026.
2047
2048EFM 2027 runs February 10–16, alongside the 77th Berlin International Film Festival.`},{slug:"studiocanal-sun-africa-distribution-pact-2026",title:"STUDIOCANAL Formalizes 3-Year South African Distribution Pact With Sun Africa Group",category:"Industry",date:"May 19, 2026",summary:"STUDIOCANAL has signed a three-year theatrical distribution agreement with Sun Africa Group in South Africa, formalizing an existing relationship and adding a cinema-release partner to Canal+’s post-MultiChoice content structure in the country. The first title under the pact is “Pressure,” a thriller starring Andrew Scott, Brendan Fraser, and Kerry Condon.",author:"Tambay A. Obenson",isPremium:!0,readTime:"3 min read",listenId:"studiocanal-sun-africa-distribution-pact-2026",headerImage:"/manus-storage/studiocanal_sun_africa_pact_2026_header_d403fcaf.jpg",content:`STUDIOCANAL has signed a three-year theatrical distribution agreement with Sun Africa Group in South Africa, adding a cinema-release partner to Canal+’s post-MultiChoice content structure in the country.
2049
2050The deal, announced on 19 May 2026, expands and formalizes an existing relationship between both companies, which had previously handled South African distribution for STUDIOCANAL titles, including “We Live in Time,” the drama starring Andrew Garfield and Florence Pugh. The new three-year pact turns that earlier title-by-title work into a regular theatrical-distribution route in South Africa for STUDIOCANAL’s English-language slate, including animation titles, films from its genre label 6th Dimension, and selected South African productions developed with M-Net, owned by MultiChoice.
2051
2052The first title under the agreement will be “Pressure,” a thriller directed by Anthony Maras and starring Andrew Scott, Brendan Fraser, and Kerry Condon. Additional titles are expected.
2053
2054The agreement arrives as STUDIOCANAL expands its South African activity beyond imported releases. The company recently announced “The Road Home,” a feature film directed by Bill Condon and starring Cynthia Erivo, Thabo Rametsi, and Guy Pearce. The film is set to begin production in South Africa at the end of June 2026. It is based on the relationship between South African trumpeter Hugh Masekela and American musician Paul Simon during the apartheid era, when South Africa was governed by white-minority rule and racial segregation. It features South African singer Miriam Makeba, the apartheid-era cultural boycott, and the making and touring of Simon’s 1986 album “Graceland.”
2055
2056Akoroko’s detailed 7 May 2026 report on Canal+’s closed session at the company’s Paris headquarters during NollywoodWeek described the post-MultiChoice group as a broadcaster, platform operator, producer, co-financier, international sales partner, and possible equity partner. At that session, Canal+ presented premium fiction series as the current group-wide route for projects co-financed across several Canal+ territories, with “Spinners,” the South African series, as the African example already sold internationally.
2057
2058The Sun Africa deal is a separate feature-film release path at home.`},{slug:"canex-creations-film-investment-marche-2026",title:"CANEX Creations Inc Sets Its Film Investment Terms at the Marché du Film",category:"Industry",date:"May 20, 2026",summary:"At the Cannes Marché du Film on May 14, CANEX Creations Inc. — Afreximbank’s equity investment arm for African creative IP — set out its financing terms: tickets of $500,000–$5 million as strategic minority equity, African subject, institutional financing partly assembled, and a distributor or credible sales agent attached. CEO Osahon Akpata also walked through the “Muganga” case study with producer Cynthia Pinet.",author:"Tambay A. Obenson",isPremium:!0,readTime:"7 min read",listenId:"canex-creations-film-investment-marche-2026",headerImage:"/manus-storage/canex_creations_marche_2026_header_cd900662.jpg",content:`At the Cannes Marché du Film on 14 May 2026, CANEX Creations Inc. used two conference sessions to set out the terms on which it invests in African intellectual property (IP), particularly film.
2059
2060CANEX Creations Inc. (CCI), a wholly owned subsidiary of Afreximbank’s Fu
2060nd for Export Development in Africa (FEDA), is a separate entity from the Creative Africa Nexus (CANEX) programme that shares its name. The latter is Afreximbank’s wider creative economy initiative, with a $2 billion facility across financing, capacity building, market access, and policy work.
2061
2062CCI’s own remit is narrower and more specific. For producers considering it as a financing partner, the terms are these, in brief: tickets between $500,000 and $5 million, taken as a strategic minority equity position; an African subject; institutional financing partly assembled; a distributor or a credible sales agent attached; and a workable repayment path.
2063
2064The first Marché conference session was the impACT panel, “Producing the Future: Innovative Financing Models for African Cinema,” with Susan Mbogo, executive director of DocuBox; Osahon Akpata, chief executive officer of CANEX Creations Inc.; Andria Wilson Mirza, director of international programs at Women in Film; Cecilia “CC” W’emedi, senior project manager at Women in Film; and Samuel Tebandeke, producer at Kiasi Productions, who moderated.
2065
2066The session that followed later in the day, “Financing African Film for Impact: Muganga Case Study,” was moderated by Tiny Mungwe, producer at CTRL ALT Shift, and included CCI’s Akpata and Cynthia Pinet, producer at Petites Poupées Production.
2067
2068## How CCI Works
2069
2070At the impACT panel, Akpata traced CCI’s origin. Afreximbank’s Creative Africa Nexus programme launched around six years ago, opened a debt financing facility about four years ago, and registered CCI roughly two years ago. The bank had determined that the creative industries also needed equity capital, since most of the businesses across the sector are small and venture-stage.
2071
2072Akpata separated the model from grant financing: CCI is an equity investor that has to recover its capital, with a strategic minority stake usually ranging from 20% to 40% of a project’s budget.
2073
2074The ticket size band has a rationale on both ends. Akpata said CCI would not finance a $100 million project, because even its maximum $5 million ticket would be too small to give the company any real say in how the project is run. It would also not finance a $300,000 project, because the company does not fund 100% of any film, and the legal and due diligence costs a development finance institution (DFI) incurs on a single transaction can run into tens of thousands of dollars. The project needs to be large enough to justify the overhead.
2075
2076Smaller-budget productions, Akpata said, are often better served by local financiers. He cited one Nigerian company that has financed 39 films — likely MBO Capital, the Lagos-based investment firm that co-financed the Cannes-selected “Clarissa” — that many local filmmakers don’t know exists.
2077
2078The criteria beyond the dollar figures follow the same line of thinking. Akpata said CCI looks for filmmakers with commercially successful work behind them. The company does not require capacity building as a precondition of financing, but it does require development impact — local capacity transfer that comes with the production. He cited “Dust to Dreams,” a short film directed by Idris Elba and produced by Elba and Mo Abudu, where the local Nigerian crew worked alongside Elba and learned from his experience on larger productions.
2079
2080For projects that don’t fit the equity vehicle, Akpata pointed to the wider Afreximbank Group. The bank itself has a film financing facility that starts at around $2 million on a debt basis. Debt requires something to hold against — a pre-sale to a streamer, a minimum guarantee from a distributor, or another secured commitment. CCI itself can do some venture debt with collateral, but its core instrument is equity.
2081
2082In essence, equity is a stake: CCI owns a piece of the project and shares in its earnings or losses. Debt is borrowed money, typically a loan: the lender expects repayment and needs to see, in advance, where that money will come from.
2083
2084On risk, Akpata said the main question is whether the package provides sufficient cover to ensure the money returns. That cover can come from a distributor on the project who has previously released films of the relevant type, a minimum guarantee in one or more territories, pre-sales, sales estimates from someone with the experience to know how a particular type of film actually sells, and conservative projections rather than the optimistic ones filmmakers tend to favor.
2085
2086## The Muganga Case Study
2087
2088“Muganga” was offered as a working example during the later case study session. Cynthia Pinet of Petites Poupées Production produced the French-Belgian film that tells the story of Congolese physician Dr. Denis Mukwege — a Nobel Peace Prize laureate who has treated more than 80,000 survivors of sexual violence in eastern Democratic Republic of Congo (DRC) — and Belgian surgeon Guy Cadière.
2089
2090Written and directed by French filmmaker Marie-Hélène Roux, “Muganga” was fully f
2090inanced before shooting began, Pinet said. It drew on the French financing system, including support from the Center national du cinéma et de l’image animée (CNC, France’s national film agency); Canal+; France Télévisions; Arte; and streamers. The producer added that Belgium became a co-production partner — its colonial ties to the DRC having some influence — and Belgian entities were interested in the project.
2091
2092However, unexpected regional political turmoil caused costs to run over, during post-production, pushing the budget past what existing French institutional funders could absorb, leaving equity as her only route to finish the film.
2093
2094CCI came in at that stage.
2095
2096Akpata’s explanation for why aligns with what he described earlier at the impACT panel: African subject, plus financing structure and route to audience (French theatrical release set via L’Atelier Distribution) were already in place. Taken together, those elements gave CCI enough cover to invest at the end.
2097
2098Pinet said “Muganga” later reached more than 300,000 admissions in France, screened at more than 50 festivals, and received 20 awards. She credited the Angoulême Francophone Film Festival, France’s late-August event for French-language cinema and a major launch point for the country’s autumn theatrical release calendar, with helping the film reach French audiences before its theatrical release four weeks later. The film won three Valois awards (top prizes) there, including the Audience Award.
2099
2100Akpata noted that CCI pays close attention to audience awards because they can indicate how viewers may respond once a film enters the market.
2101
2102Additionally, young audiences, including those in the diaspora, used TikTok and Instagram to further drive interest. And Angelina Jolie, credited as an executive producer, came on board after the film was completed and gave “Muganga” added international visibility. Pinet said Jolie screened it, was moved, and agreed to help it travel.
2103
2104“Muganga” was one of the first projects CCI helped bring forward, Akpata revealed. Others include the aforementioned “Clarissa,” which premiered this year in Directors’ Fortnight at Cannes; “Dust to Dreams,” the Elba-Abudu short; and a music publishing catalogue of about 230 songs by African producers and composers.
2105
2106On slate financing, he said CCI does fund slates, but each project must come with its own recoupment path, and the slate should function as a coherent investment, not unrelated films bundled together to clear a financing threshold.
2107
2108## What This Means
2109
2110Much of what Akpata laid out tracks how commercial film financing works in most contexts. This shouldn’t be new to Akoroko subscribers, who have read about and discussed these dynamics repeatedly, especially over the last couple of years. CCI is one layer — a significant one — in a broader financing ecosystem.
2111
2112Ultimately, the sum of the parts, let’s call it the “package” — distributor, sales agent, partial financing, talent pedigree, name attachment, entry point, etc. — will directly influence decisions, and that “package” must show a clear path not only to recoupment but also to profitability.
2113
2114Before I close, I’d be remiss if I didn’t say that “Clarissa” — a Cannes 2026 Directors’ Fortnight title, fresh, with a Nigerian story and a co-financing structure between two African investors (CCI and MBO Capital) — would have been the more useful choice for a case study in this context, as an illustration of CCI’s positioning, than a French-Belgian co-production where CCI came in late as rescue equity.
2115
2116None of which takes anything away from what Pinet’s testimony did at the panel. To be sure, I don’t know what shaped the case study choice or the specific lesson the organizers wanted to land, and there could be perfectly good reasons for it. The observation is more about illustrative reach.
2117
2118Akpata closed the final session by speaking to the moment itself. African creativity was not always “mainstream.” He recalled P-Square’s 2010 U.S. tour, when the Nigerian duo couldn’t get major media outlets to attend their press conference. Burna Boy now plays top venues worldwide regularly. More African films are in the official selection at top-tier festivals like Cannes than ever before, and with diversity. The time for Africa, he said, is now, adding that the question is whether the continent’s creative industries — specifically screen — can deliver in a way that makes the moment sustainable.`}
2118,{slug:"mad-solutions-laundry-mena-2026",title:"MAD Solutions Takes Zamo Mkhwanazi’s “Laundry” For MENA in First Non-Arab Acquisition",category:"Industry",date:"May 20, 2026",summary:"Cairo-based MAD Solutions has acquired MENA rights to Zamo Mkhwanazi’s Zulu-language South African feature “Laundry” — the company’s first non-Arab acquisition. Summerside Media handles sales. CEO Alaa Karkouti calls it a first step toward building a stronger pipeline for pan-African cinema.",author:"Tambay A. Obenson",isPremium:!0,readTime:"4 min read",listenId:"mad-solutions-laundry-mena-2026",headerImage:"/manus-storage/mad_solutions_laundry_header_2eecc5a5.jpg",content:`The full business story is still ahead. For now, the key fact is this: Cairo-based MENA powerhouse MAD Solutions has acquired regional rights to a non-Arab film for the first time, taking Zamo Mkhwanazi’s Zulu-language South African feature “Laundry” ahead of a planned fourth-quarter 2026 release across the Middle East and North Africa.
2119
2120Summerside Media is handling sales for the film, also known as “Uhlanjululo.”
2121
2122Alaa Karkouti, MAD Solutions’ chief executive officer, described the acquisition as “a first step toward building a stronger pipeline for pan-African cinema.”
2123
2124Pan-African distribution ambitions are certainly not new at the theatrical level — particularly between the Northern and sub-Saharan markets. It’s been a sectoral aspiration since FEPACI’s founding in 1969 and a sectoral reality for almost no one. The dense network of cross-border theatrical pipelines that would let a South African feature open in Cairo cinemas or a Sudanese feature open in Dakar does not exist at any scale. Pay-TV and SVOD have done more of this work, but the streaming layer is fragmented by language, rights window, and platform reach.
2125
2126Consequently, statements of intent followed by actual action at this level will always have my attention.
2127
2128I’ll be watching for two things as MAD’s “first step” framing shifts into real work:
2129
2130- First, whether MAD makes more non-Arab sub-Saharan African acquisitions by the end of this year.
2131
2132- Second, how MAD releases “Laundry” in the Middle East and North Africa: the number of screens, prints and advertising, the quality of Arabic-language subtitling or dubbing, and the film’s placement at regional festivals before or during release.
2133
2134## About the Film
2135
2136“Laundry” is set in Johannesburg, South Africa, in 1968, during apartheid. The film stars Ntobeko Sishi as a teenager caught between his interest in music and his family’s laundry business as apartheid restrictions tighten around Black-owned companies. Mkhwanazi based the screenplay on her own family’s experience.
2137
2138The film world-premiered in the Discovery section of the Toronto International Film Festival in September 2025. It later screened in competition at the Marrakech International Film Festival in Morocco, after earlier participation in the festival’s Atlas Workshops. “Laundry” also closed the Santa Barbara International Film Festival in California in February 2026 and opened the Joburg Film Festival in S
2138outh Africa in March 2026.
2139
2140“Laundry” is a Switzerland–South Africa co-production from Akka Films, a Swiss production company, and Kude Media, a South African company, in association with RTS – Radio Télévision Suisse, Switzerland’s French-language public broadcaster, and Mojo Entertainment. The producers are Philippe Coeytaux, Zamo Mkhwanazi, Jim Stark, and Nicolas Wadimoff. Marco Orsini is co-producer.`},{slug:"fapa-african-film-fund-cannes-2026",title:"New African Film Fund Launches at Cannes: What Is FAPA, Who It’s For, and How to Apply",category:"Industry",date:"May 15, 2026",summary:"FAPA, the Fund for Authors and Producers from Africa, launched at the 79th Festival de Cannes. A multi-institutional instrument co-financed by the CNC, Belgium, Luxembourg, Canada, Saudi Arabia, and Greece, it funds organisations running training and capacity-building programs for Sub-Saharan African and Haitian screenwriters, directors, and producers. The first call closes June 24, 2026.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"fapa-african-film-fund-cannes-2026",headerImage:"/manus-storage/fapa_launch_cannes_2026_d3d2fea9.jpg",content:`Yesterday, on the third day of the 79th Festival de Cannes, I attended The Nomadic Film Space Networking Lunch at La Plage des Palmes — a moderated gathering of primarily producers and financiers (though I am neither), sponsored by France’s CNC and a group of institutional partners, to discuss what smart and impactful investment looks like across African screen sectors. The conversation was a preamble to the main announcement: the launch of FAPA, the Fund for Authors and Producers from Africa.
2141
2142Note that “authors,” in the French institutional tradition from which this fund derives, means directors and screenwriters, not literary authors.
2143
2144FAPA is now the 97th entry in the AFP Funding Desk, slotted as a pan-regional instrument alongside funds like the OIF, crossing national borders and serving filmmakers across multiple African countries simultaneously.
2145
2146FAPA is a new multi-institutional fund co-financed and co-managed by the CNC, the Fédération Wallonie-Bruxelles/Wallonie Bruxelles International (Belgium), Film Fund Luxembourg, SODEC (Canada), Téléfilm Canada, SACD across France, Belgium, and Canada, Institut Français, the Red Sea Film Foundation, and the Hellenic Film & Audiovisual Center (Greece). The French Ministry of Culture is also providing support for this edition.
2147
2148## What It Is
2149
2150FAPA is not a production fund. It does not grant money directly to filmmakers or producers to make films. It grants subsidies — up to €80,000 per program — to organisations that run training and capacity-building programs for Sub-Saharan African and Haitian screenwriters, directors, and producers. Individual professionals cannot apply to FAPA directly. They access it by participating in a program run by an organization selected and funded by FAPA.
2151
2152The fund operates in two ways. The first, and primary, component will fund organisations implementing support programs. The second component will finance the mobility of individual Sub-Saharan African and Haitian professionals to international festivals and markets — that c
2152omponent will be announced in separate calls via partner festivals.
2153
2154## Who Can Apply
2155
2156Eligible organisations must have been legally established for more than 24 months, be based in Sub-Saharan Africa or in one of the countries where the funding parties are established (Belgium, Canada, France, Saudi Arabia, Luxembourg, Greece), and have proven experience supporting, developing, training, or networking screenwriters, directors, and producers.
2157
2158The programs they run must have a multi-country approach, aim for gender parity in participant selection, and must have had at least one prior edition — unless the organisation can demonstrate equivalent experience with similar programs. Programs must be delivered in the working language of their participants — French for Francophone African participants, English or Portuguese for Anglophone and Lusophone participants. A program serving participants across both language groups must accommodate both.
2159
2160Participant eligibility is restricted to nationals or permanent residents of the 49 Sub-Saharan African countries listed in the regulations, plus Haiti. North Africa — Algeria, Egypt, Morocco, Libya, and Tunisia — is explicitly excluded from the list of eligible countries.
2161
2162Organizations can apply to run either of two program types. The first is a development programme for screenwriters and directors, focused on helping them develop their film projects with script development, writing residencies, mentorship, or similar support. Participants in this track must have at least one prior film or audiovisual work that has been screened at a festival, in a cinema, on television, or on a video-on-demand platform.
2163
2164The second is a capacity programme for producers, focused on building professional skills in financing, packaging, and market access. Participants in this track must demonstrate professional experience in the film or audiovisual sector.
2165
2166## The 2026 Call
2167
2168The first call for proposals opened yesterday, May 14, 2026, and closes June 24, 2026. The selection committee convenes in late August or September, with results announced in September 2026. Applications are submitted online at the CNC’s Démarche Numérique platform, in French or English.
2169
2170[The first call is now open.](https://demarche.numerique.gouv.fr/commencer/call-for-proposals-fapa)
2171
2172## What This Means
2173
2174FAPA is one of the more significant new institutional funds for Sub-Saharan African film talent to be announced in some time, thanks to its architecture. The coalition of funders crosses borders — France, Belgium, Luxembourg, Canada, Saudi Arabia, and Greece. The CNC, which manages it, is the most influential public film institution in the Francophone world. The Red Sea Film Foundation’s presence on the funder list can be tracked as another data point in the Gulf’s steady move into African screen sector financing.
2175
2176For organisations running training and mentorship programs across sub-Saharan Africa — residencies, labs, screenwriting programs, producer capacity programs — FAPA is a credible new funding source with clear criteria, dates, and funding figures.
2177
2178FAPA has been added to the AFP Funding Desk as entry 97. It can be found by name or by filtering for any eligible Sub-Saharan African country. Subscribers can access the Desk and read the full entry — eligibility criteria, flag alerts, compatibility data, and application link — at africanfilmpress.com/funding-desk.`},{slug:"cannes-2026-africa-festival-selection-marche",title:"Cannes 2026: Africa’s Festival Selection and Marché Conference Presence",category:"Industry",date:"May 12, 2026",summary:"Six African and diaspora titles across Un Certain Regard and Directors’ Fortnight, first-ever Rwandan Official Selection entry, Nigeria’s back-to-back presence, Bénin and Guinea’s market debuts, and a full breakdown of Africa’s conference footprint at the Marché du Film.",author:"Tambay A. Obenson",isPremium:!1,readTime:"8 min read",headerImage:"/manus-storage/cannes_day1_header_v2_1904317c.jpg",content:`The 79th Cannes Film Festival opens today and runs through May 23, with the Marché du Film alongside it from May 12 to 20. Much of the Official Selection has been announced, and the Marché’s 2026 conference program is out. Together, they give a clear view of Africa’s presence on both sides — festival and market.
2179
2180This year’s lineup is best read against a longer record. Akoroko’s tracking already showed that, by the end of 2024, the 2020s had become the strongest decade on record for African feature selections at Cannes, with first-time entries from countries including Sudan, Somalia, Zambia, and the Democratic Republic of the Congo. Cannes 2026 adds to it. The festival has historically concentrated African selections in a much smaller group of countries, especially Egypt, Morocco, Senegal, and Tunisia.
2181
2182## At the Festival
2183
2184**No African Films in Competition**
2185
2186None of the 21 main Competition films are directed by African or diaspora filmmakers, nor do they tell African stories. That’s a step back from the three selected for Cannes 2025.
2187
2188Akoroko’s historical Cannes data also shows that African films have often reached the festival via Un Certain Regard, Directors’ Fortnight, and International Critics’ Week — key entry points outside the main Competition.
2189
2190Across the Official Selection and the parallel sections, Africa accounts for six titles: three in Un Certain Regard, one feature and two shorts in Directors’ Fortnight.
2191
2192Official Selection short films have not yet been fully announced, but I don’t expect that to shift these results materially.
2193
2194**Un Certain Regard:**
2195- "Congo Boy" (Rafiki Fariala) — Central African Republic / DRC / France / Italy
2196- "La Más Dulce" (Laïla Marrakchi) — Morocco / France / Spain / Belgium
2197- "Ben’imana" (Marie-Clémentine Dusabejambo) — Rwanda
2198
2199**Directors’ Fortnight:**
2200- "Clarissa" (Arie Esiri and Chuko Esiri) — Nigeria / UK / US [feature]
2201- "Nothing Happens After Your Absence" (Ibrahim Omar) — Sudan [short]
2202- "À La Recherche De L’Oiseau Gris Aux Rayures Vertes" (Saïd Hamich Be
2202nlarbi) — Morocco / France [documentary short]
2203
2204## The Films
2205
2206"Congo Boy" follows 17-year-old Robert, a Congolese refugee living in Bangui in the Central African Republic, who is left to care for his four younger siblings after both parents are imprisoned. He juggles daily life, odd jobs, school exams, and concert stages, holding onto his dream of a music career. The film is heavily autobiographical. Fariala himself arrived in the CAR as a child refugee from the DRC, launched a music career in Bangui in 2013, and entered filmmaking via Ateliers Varan, a Paris-based documentary training workshop that has run programs in Bangui since 2017. International sales: The Party Film Sales (Paris).
2207
2208"La Más Dulce" (English title: "Strawberries") follows Hasna, a Moroccan woman who leaves home to work as a seasonal strawberry picker in Huelva, Spain. Her dream of financial independence collides with abuse, harassment, and inhumane working conditions. Hasna and her companions decide to fight back, with the help of a Spanish lawyer. The film was inspired by a group of women Moroccan fruit pickers in Andalusia who filed lawsuits alleging abuse by their employers. Shot between Morocco and several cities in Andalusia. Written by Marrakchi and Delphine Agut. Lead actress Nisrin Erradi is known for "Everybody Loves Touda" and "Adam." International sales: Lucky Number.
2209
2210"Ben’imana" is set in Rwanda in 2012 and follows Vénéranda, a survivor of the 1994 genocide against the Tutsi who is deeply involved in community-led processes of justice and reconciliation. As she navigates mounting pressure in her work, a personal crisis within her own family forces her to confront the limits of her convictions. It is the first film by a Rwandan director to be selected for the Cannes Official Selection. "Munyurangabo" (2007), the only prior Rwandan Cannes title, was directed by Korean American filmmaker Lee Isaac Chung. Dusabejambo was born in Kigali in 1987, trained as an electrical and telecommunications engineer, and has been making short films since 2011, with multiple Tanit Bronze awards at Carthage and festival wins in Zanzibar and Madagascar. International sales: mk2 Films.
2211
2212"Clarissa" is a contemporary reimagining of Virginia Woolf’s "Mrs. Dalloway," set in Lagos. Society woman Clarissa prepares to host a party at her Lagos home, where she unexpectedly encounters once-intimate friends from her youth. Over a single night, memories of their relationships, loves, desires, and lost aspirations give rise to a bittersweet reckoning. Shot on 35mm in Lagos and Delta State, it stars Sophie Okonedo and David Oyelowo, with India Amarteifio, Ayo Edebiri, and Toheeb Jimoh in the ensemble. Already acquired for worldwide distribution by Neon. The Esiri brothers’ debut, "Eyimofe (This Is My Desire)," premiered at Berlinale, won multiple international awards, was released by Janus Films, and entered the Criterion Collection.
2213
2214"Nothing Happens After Your Absence" is directed by Ibrahim Omar. No synopsis has been released. Omar is known for his 2023 short "Nothing Happens After That," which follows a father searching for a final resting place for his deceased child and won the Golden Tanit for short film at the Carthage Film Festival. He is the founder of Port Sudan Film Days and the Sudan Film Institute.
2215
2216"À La Recherche De L’Oiseau Gris Aux Rayures Vertes" (In Search of the Grey Bird with Green Stripes) is directed by Saïd Hamich Benlarbi. No synopsis has been released. A La Fémis graduate and winner of the Lagardère Foundation prize — grants (typically €10,000–€50,000) to young French-speaking creative professionals under 30 or 35. Benlarbi’s previous short "Le Départ" was selected for 100 international festivals, won 27 awards, and received a César nomination in 2022.
2217
2218A note on short films: these sections have not all been announced at the time of writing. Last year’s trifecta, scattered across sections, included "Aasvoëls (Vultures)" from South Africa, "Bimo" from France/Algeria, and "A Doll Made Up of Clay" from Eritrea/Nigeria/India.
2219
2220## 2025 in Hindsight, and What 2026 Adds
2221
2222Access to Cannes for African films has never been consistent, shaped by politics, infrastru
2222cture, co-production, and festival gatekeeping, which means that a strong run of selections still does not answer the question of continuity.
2223
2224Akoroko’s data on African features at Cannes from 1946 to 2025 counts 25 films that received major prizes across several categories over nearly eight decades. The Palme d’Or is not among them. This year, none are in the race.
2225
2226The 2020s are already the most productive decade for African features at Cannes — 35 selected across just four editions, more than any previous decade in the dataset. What happens to each of these films after Cannes — whether they reach audiences at home, whether their directors get to make a next film — will be tracked. It’s as telling as anything that happens on the Croisette. Akoroko’s ongoing efforts also show that a substantial share of the 90-plus African narratives selected for Cannes between 1946 and 2024 could not be streamed anywhere, legally or informally. Several titles had even disappeared from public access altogether.
2227
2228Last year’s edition included the first Nigerian film ever to screen in Cannes’ Official Selection — Akinola Davies Jr.’s "My Father’s Shadow," which went on to earn a Special Mention for the Caméra d’Or. That achievement came backed by MUBI, with UK and international independent film infrastru
2228cture behind it. How it was received — as a Nigerian achievement, a diaspora achievement, or an international art film achievement — depended on who was doing the receiving. This year, Nigeria returns with the Esiri brothers’ "Clarissa" in Directors’ Fortnight, a different section, a different financing model (Afreximbank’s CANEX, MBO Capital in Nigeria), and a different register entirely. That back-to-back presence is worth more than either title alone.
2229
2230The record also keeps adding new countries. First-ever entries from Sudan, Somalia, Zambia, and the DRC have all appeared this decade, and are accelerating. The geographic spread feels real. Let’s see if it holds.
2231
2232## Questions to Be Answered
2233
2234- Whether "Ben’imana" will be a consequential title for Rwandan cinema’s international profile.
2235- Whether "Clarissa" — with its Neon acquisition, African financing, and 35mm Lagos production — becomes a replicable model.
2236- Which titles get sold, to whom, what territories and formats, and whether any of those deals include African distribution. I’ll especially be watching for the Marché presence of newer pan-African distribution outfits, including Moses Babatope’s Nile Entertainment and LBx’s Bigger Motion.
2237- How the selected films are ultimately classified and received: as national works, diaspora works, co-productions, or international arthouse films shaped by multiple production and financing models at once. That ambiguity is not new, though perhaps it’s more visible now.
2238
2239## At the Marché: Africa’s Footprint
2240
2241In a pre-opening press release on May 11, the Marché du Film said that Bénin and Guinea will exhibit at the world’s largest film market for the first time, part of growing Sub-Saharan African attendance at the 2026 edition. Bénin is set up inside the Palais des Festivals — the festival’s main venue — while Guinea takes a position at the Village International, where most national pavilions sit. Egypt has doubled its presence at the market, and Iraq returns to the Pantiero zone of the Village International for a second consecutive year. Marché executive director Guillaume Esmiol said the region is "strengthening its footprint."
2242
2243The 2026 edition expects 40,000 festival professionals overall, including 16,000 registered market participants from more than 140 countries, 1,700 buyers, and 600 exhibiting companies, across 1,500 screenings and 250 industry events.
2244
2245Pavillon Afronova is the only official African and diasporic pavilion at the Marché, and Akoroko/AFP is an official media partner. Expect coverage from there all week.
2246
2247## The Conference Program
2248
2249Among the 250 industry events on the full schedule, African participation includes sessions covering film business, producer networking, financing, and production services. Here are the sessions, by day. The published schedule currently does not include full descriptions or speaker details for every event.
2250
2251**May 13**
2252
2253"Focus on Africa: a Film Business Conference" — The Viewpoint (Lérins). Presented by NIFS@Cannes in association with TransPerfect Media, Nile Media Group, CACOP, and Animaxfyb Studios. The combination of those five organizations puts Nollywood distribution infrastructure, West African animation, global post-production services, and a pitching platform for African projects in the same conversation.
2254
2255**May 14**
2256
2257"Producers Network × impACT | WIF Africa" — Producers Club (Lérins). Women in Film Los Angeles (WIF LA) and Women in Film and Television Africa (WIFT Africa) in a joint initiative bringing what they describe as the largest-ever delegation of African women creatives to Cannes 2026 — representatives from Nigeria, Ghana, Kenya, Senegal, Cameroon, South Africa, Zambia, Rwanda, Uganda, and Côte d’Ivoire. WIF LA and WIFT Africa are presenting sponsors of the Producers Network at the Marché du Film, and have also invited five established African women producers to participate across six days of programming: Shirley Frimpong Manso (Ghana), Nicolette Ndigwe-Kalu (Nigeria), Bea Wangondu (Kenya), Bongiwe Selane (South Africa), and Alexandra Amon (Côte d’Ivoire). Dr. Inya Lawal is president of WIFT Africa.
2258
2259"impACT | Producing the Future: Innovative Financing Models for African Cinema" — Producers Club (Lérins). Speakers: Susan Mbogo, Executive Director, Docubox; Osahon Akpata, Chief Executive Officer, CANEX Creations; Andria Wilson Mirza, Director of International Programs, Women in Film; Cecilia "CC" W’emedi, Senior Project Manager, Women in Film; Samuel Tebandeke, Producer, Kiasi Productions. The panel brings together a continental documentary fund, a pan-African institutional financier, and an East African producer-entrepreneur working on sustainable creative ecosystems. Together, they capture project financing and the longer-term business conditions needed for screen activity to continue and expand.
2260
2261"Producers Network | Financing African Film for Impact: Muganga Case Study" — Producers Club (Lérins). Presented by CANEX Creations. The session uses "Muganga, The One Who Treats" as its case study. Directed by Marie-Hélène Roux and starring Isaach De Bankolé as N
2261obel Peace Prize laureate Dr. Denis Mukwege — the Congolese surgeon who has treated over 80,000 survivors of sexual violence in the eastern DRC — the film was executive produced by Angelina Jolie, co-financed by CANEX alongside Canal+, France 3 Cinéma, France Télévisions, CNC, and others, won three awards at the Angoulême Francophone Film Festival, and is handled by WME Independent for world sales.
2262
2263**Arab Cinema Center Sessions (May 14–17)**
2264
2265The Arab Cinema Center has several sessions scheduled from May 14 to 17. The conversations cover commercial production, co-production, women in leadership, and industry growth across the Arab world. The sessions are not broken down by country, so it’s difficult to say with precision which nations will be in the room. Based on past editions, North African and Arab African participation in these conversations is typical.
2266
2267**May 16**
2268
2269"Producing Under Pressure: Producer Care and Sustainable Practice" — Palais Stage (-1), 11:30–12:30 CET. A presentation of the 2026 EAVE Impact Think Tank report, offering practical tools and new perspectives to help producers strengthen well-being across personal life, family life, and work life, and rethinking how the screen sector can better support the mental health of independent producers. Moderator: Tamara Dawit (Gobez Media, CA/ET). Speakers: Heejung Oh (Seesaw Pictures, KR), Rebecca Day (Film in Mind, UK), Linda Mutawi (Fikra, SE), Steven Malamud Rubinstein (GROM Productions, NL).
2270
2271## Beyond the Official Schedule
2272
2273Two additional conference events connected to pan-African screen industry work are taking place outside the official Marché program.
2274
2275On May 14, "The Nomadic Film Space Networking Lunch" takes place at La Plage des Palmes from 11:30 to 13:30. Sponsored by France’s CNC (Centre national du cinéma et de l’image animée) and other institutional partners, it brings together a select group of producers and financiers for a moderated conversation about what smart and impactful investment looks like across African screen sectors.
2276
2277On May 15, "The African & Diasporic Audience Development Think Tank — a Cannes Marché du Film session" takes place at Hotel Canopy from 10:00 to 12:00, by invitation only, with the support of the International Emerging Film Talent Foundation (IEFTF), an Athens-based non-profit that funds grants to emerging filmmakers via partner festivals and programs. It’s the second iteration of a traveling workshop initiated in 2025, with a pilot edition held at Mostra de Cinemas Africanos 
2277in Salvador, Brazil. The workshop combines market research with audience-design methods intended to grow revenue-generating audiences for African cinema. The Cannes session will present findings from the Brazil pilot and outline the platform’s future direction.
2278
2279Yetu (Un)limited was founded in 2023 by Yanis Gaye, Melissa Adeyemo, Carol Kioko, Ike Yemoh, and Chloe Ortolé. The company has links to Locarno Pro’s Open Doors Africa initiative and the West Africa-focused Baxu Maam Incubator.
2280
2281## Closing
2282
2283Africa’s footprint at Cannes 2026 is wider than the Official festival selection alone suggests. The 2020s are already the most productive decade for African selections in roughly 80 years of data — three films in Un Certain Regard, one feature and two shorts in Directors’ Fortnight, and the Official Selection shorts and La Cinéf still to come.
2284
2285What’s still fragile is the system around them — how those films move afterward, if/how their makers follow them with a next project, and if/how African institutional and organizational presence becomes consistent, more saturated, more deeply rooted, and extends well beyond the event’s 10 days.
2286
2287I’ll be there this year with African Film Press East Africa partner Jennifer Ochieng of Sinema Focus, so we’ll split duties across the festival and Marché as needed. Coverage will be filed from Pavillon Afronova throughout the week.
2288
2289If you’re heading to Cannes and want to connect, feel free to reach out.`},{slug:"cannes-2026-day-one",title:"Cannes 2026 Day One: Canal+/Bolloré Heat, Obasi Looks East, Plus Bénin, Guinea in the Market Mix, and New Sales Titles",category:"Industry",date:"May 12, 2026",summary:`From SFO to Cannes: a Day One roundup covering the 600-signatory Libération op-ed against Bolloré's grip on French cinema, C.J. Obasi's Seoul residency, Bénin and Guinea's market debuts, "Cocoa Doll" sales, the Ian Wright biopic with Stormzy, and Studiocanal's Josephine Baker film with FKA Twigs and Maïmouna Doucouré.`,author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"cannes-2026-day-one",headerImage:"/manus-storage/cannes_day1_header_6d5cb094.jpg",content:`Flying out of San Francisco International Airport later today, 12 May, with a few last-minute odds and ends to handle before roughly 14 hours in the air, heading to Cannes for the Cannes Film Festival and the Marché du Film. Frustratingly, I'm also fighting what feels like the start of a cold on my first work trip of the year, but I arrive tomorrow, 13 May, and will get straight to work — so I'll likely be M.I.A. until then.
2290
2291Here's a roundup of a few festival and market items to note on Day One:
2292
2293On the eve of the Cannes Film Festival's May 12 opening, around 600 French film professionals — actors, directors, producers, exhibitors, and technicians — signed an op-ed in Libération denouncing what they call "the growing grip of the far right" (l'emprise grandissante de l'extrême droite) on French cinema via billionaire Vincent Bolloré. Named signatories include Juliette Binoche, Adèle Haenel, Swann Arlaud, Damien Bonnard, directors Arthur Harari and Sepideh Farsi, and producer Rémi Bonhomme, alongside a campaign collective called Zapper Bolloré. The immediate trigger is the September 2025 deal in which Canal+ took a 34% stake in UGC — France's third-largest cinema chain, with 521 screens across 48 theaters, including the Paris flagship UGC Ciné Cité Les Halles, with an option to take full control from 2028. If completed, the signatories argue, Bolloré would command the entire French chain from film financing to theatrical release. Why am I drawing attention to this? Bolloré is Canal+'s largest shareholder and has strong influence, with Bolloré SE holding 30.4% of the company's capital and voting rights. Bolloré's own reporting describes Canal+ as a company over which the Bolloré Group exercises "significant influence." I think you can see where I'm going with this. I've mostly avoided the Bolloré conversation around Canal+ since its takeover of MultiChoice, primarily because it's early to make any claims about what the family's influence may yield through that acquisition of Africa's largest pay-TV operator, and I simply don't have all the facts, nor fully grasp all the nuances and layers — at least I haven't yet done the necessary homework. Note that outside Canal+ and Vivendi, Bolloré currently has African interests through Havas, its advertising and communications group, and Socfin, a plantation group with oil palm and rubber operations across the continent.
2294
2295Seoul-based production company Flix Oven announced a new African-Korean filmmaker residency program with Nigerian director C.J. Obasi as its inaugural fellow. Obasi, whose 2023 feature "Mami Wata" premiered at Sundance, earned an Independent Spirit Award nomination and represented Nigeria at the 96th Academy Awards, will spend a month in Seoul developing a feature script bridging Nigerian and Korean stories, with a theatrical release planned. Veteran American actor Morgan Freeman and Lori McCreary will executive produce via their Revelations Entertainment banner. The residency is a partnership between Flix Oven — led by South African producer Thomas Maitland and Korean producer Lee Hyojin — and Continental Entertainment, founded by Ozi Menakaya. Obasi has other projects in progress: "A Blue Butterfly," a psychological drama starring Steve Toussaint and Sanaa Lathan; "La Pyramide," a Nigeria–United Kingdom–United States–Senegal–Brazil feature presented at Red Sea Souk; and "Juju Soccer," an animated series. Look East...
2296
2297Cannes' Marché du Film said in its pre-opening press release on May 11 that Bénin and Guinea will exhibit at the world's largest film market for the first time as part of growing Sub-Saharan African attendance at the 2026 edition that I captured in previous Cannes dispatches. Bénin is set up inside the Palais des Festivals — the festival's main venue — while Guinea is located at the Village International, where most national pavilions are situated. Egypt has also doubled its market presence. Marché executive director Guillaume Esmiol said the continent is "strengthening its footprint." The 2026 edition is expected to attract 40,000 festival professionals, including 16,000 registered market participants from more than 140 countries, 1,700 buyers, and 600 exhibiting companies across 1,500 screenings and 250 industry events. The market runs May 12–20, the festival May 12–23.
2298
2299Bangkok-based genre label Fearfolks acquired global sales rights to "Cocoa Doll," a body-
2299horror feature and the debut of Nigerian-American Muslim filmmaker Jumai Yusuf. The film stars Ghanaian-American actress Grace Duah ("Gossip Girl") as a Black Muslim woman hired by the wealthy McNeil family, who discovers the family has been turning previous employees into living dolls and must escape before joining the collection. The screenplay was previously recognized on the Muslim List — presented by the Black List, MPAC Hollywood, and Pillars Fund — and on the WScripted Cannes Screenplay List presented by Mubi. The film is produced by Jake Casey (The Dazey Phase), Jonathan Unger (Unger Media), and Steven Adams (Alta Global Media), with VFX supervised by Los Angeles-based Zoic Studios; production starts in the fourth quarter of 2026. Yusuf's earlier short, "Nate & John," premiered at Tribeca, was nominated for a 56th NAACP Image Award, and won the Gold House Cultural Impact Award at the American Pavilion Emerging Filmmaker Showcase during the 2024 Cannes Film Festival. Fearfolks, founded by Hans Audric B. Estialbo with Thailand's Benetone Films, also handles Thai distribution for A24, Neon, and The Horror Section.
2300
2301The official biopic of Arsenal and England soccer legend Ian Wright is in development, with British-Ghanaian rapper Stormzy attached as executive producer via his label #Merky Films. The script is written by Tom Wilton ("Muscle," "Bump," "A Love Letter to M"), who will also direct. The film follows Wright's upbringing on the Honor Oak Estate in Brockley, south London, as the child of Windrush-generation parents — schoolteacher Sydney Pigden is named in the synopsis as the mentor who pushed him toward soccer — and traces the rejection, late breakthrough, and career that included Arsenal's second-highest goal-scoring record, Crystal Palace's Player of the Century, 33 England caps, and an OBE awarded by Prince William in 2023. Producers are Oscar-nominated Sara McFarlane (Essential Viewing — "A Love Letter to M," "Red White and Blue," "Love Brooklyn") and Stephen Tottingham (Serpentine Creative), with Stormzy and Akua Agyemfra executive producing for #Merky Films. Casting will be handled by Carolyn McLeod and Matt Sheppard, the team behind BIFA-winning and BAFTA-nominated "Boiling Point." Discussions with studios and distributors are underway.
2302
2303Studiocanal will launch worldwide sales at the Cannes Film Market on the Josephine Baker biopic, with FKA Twigs cast in the lead and French-Senegalese filmmaker Maïmouna Doucouré ("Cuties") writing and directing. Production starts this fall. The film traces Baker's life from her birth in St. Louis in 1906, her rise to fame in Paris from 1925, her service with the French Resistance during World War II, and her role in the American Civil Rights Movement in the 1950s and 1960s. Doucouré also produces via her Bien Ou Bien Prods banner alongside Studiocanal and CPB Films, with the project developed with the support of Baker's sons Jean-Claude and Brian Bouillon Baker, and the Rainbow Tribe — Baker's name for her adopted children. Studiocanal will release the film theatrically in the U.K., France, Germany, Italy, Benelux, Poland, Australia, and New Zealand. "Josephine Baker's story is one we have long aspired to tell," said Anna Marsh, Studiocanal CEO and chief content officer of Canal+ Group. FKA Twigs, whose recent credits include A24's "Mother Mary," is repped by UTA, Untitled, UROK, and Johnson, Shapiro, Slewett & Kole; Doucouré is repped by UBBA in France and CAA in the U.S.
2304
2305And... I'm off!`},{slug:"15-restored-african-classics-tv5monde-nairobi-2026",title:"15 Restored African Classics Land on TV5MONDE as France and Kenya Open Africa Forward Summit in Nairobi",category:"Exhibition",date:"May 11, 2026",summary:"TV5MONDE+ launches a Cinémathèque Afrique section with 15 restored African films free to stream worldwide, timed to the opening of the Africa Forward Summit in Nairobi. The selection spans 1955 to 1992 and includes works by Vieyra, Alassane, Écaré, Duparc, and others — with a caveat on U.S. access.",author:"Tambay A. Obenson",isPremium:!0,readTime:"3 min read",listenId:"15-restored-african-classics-tv5monde-nairobi-2026",headerImage:"/manus-storage/cinematheque_afrique_tv5monde_header_4d97325b.jpg",content:`Fifteen restored African films are now free to stream worldwide today, May 11, 2026, as TV5MONDE+ launches a Cinémathèque Afrique section on its global streaming platform. The launch is timed to the opening day of the Africa Forward Summit, the France- and Kenya-convened gathering of African heads of state and government, held in Nairobi today and tomorrow, May 12, 2026.
2306
2307“Africa is home to dozens of great masters of cinema whose works are of exceptional richness,” said Kim Younes, CEO of TV5MONDE. “TV5MONDE’s partnership with the French Institute allows, for the first time, online access and worldwide visibility to this heritage of universal value.”
2308
2309The first wave dates from 1955 to 1992 and includes works of fiction, documentary, and animation:
2310
2311“Afrique sur Seine” (Senegal, 1955) — Paulin Soumanou Vieyra and Mamadou Sarr
2312“Lamb” (Senegal, 1963) — Paulin Soumanou Vieyra
2313“Le Retour d’un aventurier” (Niger, 1966) — Moustapha Alassane
2314“Concerto pour un exil” (Ivory Coast, 1967) — Désiré Écaré
2315“Mouna ou le rêve d’un artiste” (Ivory Coast, 1969) — Henri Duparc
2316“À nous deux, France!” (Ivory Coast/France, 1970) — Désiré Écaré
2317“Nationalité : immigré” (Mauritania/France, 1975) — Sidney Sokhona
2318“Les Princes noirs de Saint-Germain-des-Prés” (Senegal/France, 1975) — Ben Diogaye Beye
2319“Samba le Grand” (Niger, 1977) — Moustapha Alassane
2320“La Chapelle” (Republic of the Congo, 1979) — Jean-Michel Tchissoukou
2321“La vie est belle” (DRC/Belgium, 1987) — Mweze Ngangura and Benoît Lamy
2322“Bal poussière” (Ivory Coast, 1988) — Henri Duparc
2323“Tabataba” (Madagascar, 1988) — Raymond Rajaonarivelo
2324“Le Trésor des poubelles” (Senegal, 1989) — Samba Félix Ndiaye
2325“Wendemi, l’enfant du bon Dieu” (Burkina Faso, 1992) — Pierre Yaméogo
2326
2327The selection draws entirely from the Cinémathèque Afrique collection, which the French Institute has held since 2011. The collection was created in 1961 and now lists more than 1,700 titles. The French Institute says it has acquired non-commercial distribution rights for over 600 films, with subtitled prints produced in several languages, and that it has restored close to 50 films and organized 1,200-plus screenings worldwide each year since President Emmanuel Macron’s 2017 Ouagadougou speech on Africa policy.
2328
2329“For 15 years, the French Institute has been preserving, restoring, sharing and transmitting this invaluable cinematographic heritage,” said Eva Nguyen Binh, President of the French Institute. “The partnership with TV5MONDE goes further and offers the most diverse audiences a new way to access these works.”
2330
2331Visit TV5MONDE+ to watch the films.
2332
2333Note: per the press release, the films “will be available free of charge on all continents, giving them unprecedented visibility among the general public.” However, when I attempted to play several of them from the United States, the platform redirected to a sign-in page restricting access to users with a TV5MONDE USA subscription via a participating pay-television operator — Cox, Dish, Optimum, Xfinity, Sling, Spectrum, Verizon, etc.
2334
2335A presentation of the Cinémathèque Afrique section for industry will follow at Cannes on May 17 at 12:30 pm at the French Institute space on the Critics’ Week Beach.
2336
2337The Africa Forward Summit is a two-day meeting co-hosted by Kenya and France in Nairobi, under the title “Africa–France Partnerships for Innovation and Growth.” It is co-chaired by Kenyan President William Ruto and French President Emmanuel Macron. The program runs over two days across two venues: the Kenyatta International Convention Center and the University of Nairobi. Topics on the agenda include energy, finance, agriculture, AI, the blue economy, health, and industrialization.`},{slug:"vieyra-only-feature-4k-nyaff-2026",title:"Vieyra's Only Feature Returns in 4K at 33rd New York African Film Festival (NYAFF)",category:"Exhibition",date:"May 11, 2026",summary:'The New York African Film Festival presents the U.S. premiere of the 4K restoration of "En résidence surveillée" ("House Arrest"), the only feature-length fiction film by Paulin Soumanou Vieyra — a political satire about presidential power, restored by his children and premiering in the U.S. 44 years after its Dakar release.',author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"vieyra-only-feature-4k-nyaff-2026",headerImage:"/manus-storage/vieyra_en_residence_surveillee_header_e99639f1.jpg",content:`Tonight, Monday, May 11, 2026, at 8:15 p.m., the New York African Film Festival (NYAFF) presents the U.S. premiere of the 4K restoration of "En résidence surveillée" ("House Arrest"), the only feature-length fiction film by Paulin Soumanou Vieyra, the Beninese-Senegalese filmmaker, critic, and historian widely cited as one of the foundational figures of sub-Saharan African cinema.
2338
2339Vieyra's 1955 short "Afrique sur Seine", co-directed with Jacques Melo Kane and Mamadou Sarr, is generally credited as the first film made by sub-Saharan African directors, and his 1975 book "Le Cinéma africain: des origines à 1973" ("African Cinema: From the Origins to 1973") was one of the first systematic histories of African cinema.
2340
2341The screening, in NYAFF's 33rd edition at Film at Lincoln Center, is preceded by two short films and followed by a Q&A with Vieyra's son Stéphane Soumanou Vieyra and the Brooklyn-based Senegalese filmmaker Ahmad Cissé.
2342
2343"En résidence surveillée" ("House Arrest") is a political satire about a president in an unnamed African country who faces a crisis after a young scholar argues that African governance should draw from pre-colonial political ideas. The president is caught between a European advisor who wants the thesis buried and an African advisor who wants its ideas put into practice. He leaves the capital to consult people in his village, but when he returns, a staged crisis leads to military intervention and his confinement under house arrest.
2344
2345The release timing was certainly pointed. "En résidence surveillée" opened in Dakar in May 1981, five months after Léopold Sédar Senghor's voluntary departure from the Senegalese presidency in December 1980. Vieyra had spent 23 years inside Senegal's Ministry of Information, running the Actualités sénégalaises newsreel and serving as chief reporter on Senghor's official travels between 1960 and 1975. He left the ministry the same year Senghor left office. The film was, then, a satire of presidential power by someone who had spent his career covering presidential power.
2346
2347Douta Seck — the great Senegalese stage actor — plays the president. For the rest of the cast, Vieyra drew heavily on family and friends: his wife, the novelist Myriam Warner-Vieyra, plays the African advisor's partner; his cousin Alexis Viera plays the thesis-writer Zé Akoulo; his youngest son Stéphane, now leading the restoration campaign, plays a role; his mother Valentine da Silva Vieyra appears in the opening; Ousmane Sembène's son Moussa Sembène appears alongside her; and the journalists Annette Mbaye d'Erneville and Pierre Haffner play themselves.
2348
2349Vieyra financed the film with a loan from SOGECA, a Senegalese credit company, secured by a life-insurance policy on himself. He produced it under his own company, Les Films PSV, in Dakar, with Présence Africaine, the pan-African publishing house where he had served as film critic since the late 1950s.
2350
2351"En résidence surveillée" largely disappeared after its festival run at Carthage in 1982. It circulated only in archives and rare retrospectives until the 2025 restoration.
2352
2353The 4K restoration was led by Vieyra's children at PSV-Films, the family's rights-holding company. Funding c
2353ame from France's CNC and the Institut français cinema unit, working with the Cinémathèque Afrique.
2354
2355The restored film had its world premiere at the 36th Carthage Film Festival in December 2025, where the festival also honored Vieyra's centenary (he was born January 31, 1925, in Porto-Novo, then Dahomey, now Benin).
2356
2357Tonight is the film's U.S. debut in restored form.
2358
2359The two short films before the feature place it in a family-and-community context. Ahmad Cissé's "N'Dobine" (6 minutes, U.S., 2026) is his directorial debut and a world premiere, following a traveler "guided by ritual and spirituality" on a journey of offering.
2360
2361Stéphane Soumanou Vieyra's "Vieyra, the Innovative Pioneer" ("Vieyra, le précurseur innovant") (9 minutes, France, 2025) imagines a virtual encounter between Paulin Vieyra and his grandsons during a visit to a museum retracing his life.
2362
2363Stéphane Vieyra has spent the past two years coordinating his father's centenary campaign, working with PSV-Films, La Fémis (Vieyra's alma mater, formerly IDHEC), and the Cinémathèque Afrique.
2364
2365What critics reportedly dismissed in 1981 takes on a different read in 2026. The satire now feels uncomfortably exact: Western business interests tied to a single-party presidency; a manufactured crisis ending in military intervention; and an African head of state reduced to a figurehead inside his own country.
2366
2367The restored film receives its first screening in front of a U.S.-based audience tonight.
2368
2369Watch a clip here.
2370
2371For further reading, I wrote about Vieyra's life and work in "Paulin Soumanou Vieyra at 100: A Quiet Construction" for Sight & Sound, June 2025.`},{slug:"my-cannes-2026-agenda",title:"My Cannes 2026 Agenda — Where to Find Me",category:"Industry",date:"May 10, 2026",summary:"The 79th Festival de Cannes opens May 12. A personal agenda covering where to find Akoroko at the festival — from Africa Industry Day at the Marché to the Pavillon Afronova, a China Film Foundation panel, and the films in Un Certain Regard and Directors' Fortnight.",author:"Tambay A. Obenson",isPremium:!0,readTime:"4 min read",listenId:"my-cannes-2026-agenda",headerImage:"/manus-storage/cannes_2026_agenda_header_66c6758b.jpg",content:`The 79th Festival de Cannes opens in two days, on May 12. I previewed the festival's African slate on April 15 and the Marché's African conference presence on April 20. This one is the personal agenda, capturing where I'll be, what I'll likely cover, and how to find me. I am there from the 13th through the 18th — a shorter trip, unlike last year when I was there for 10 days. Feel free to say hello if you spot me in the wild.
2372
2373**Wednesday, May 13**
2374
2375Arriving and then straight to the China Film Night Gala Dinner on the Croisette. China Film Foundation hosts. The dinner is part of "Cannes · Spotlight on Chinese Cinema," China Film Foundation's decade-long partnership with the Marché du Film. It's a curious invitation I couldn't pass up (along with an invitation to speak; see below), given China's increasing cultural engagement with the continent, relative to its longer-term infrastru
2375ctural investments.
2376
2377**Thursday, May 14 — Africa Industry Day at the Marché**
2378
2379Producers Network breakfast with WIF LA × WIFT Africa, 9:00–10:30. Jennifer Ochieng (Sinema Focus) covers for African Film Press (AFP).
2380
2381"The Nomadic Film Space Networking Lunch" (Yetu × CNC), 11:30–13:30.
2382
2383China Film Foundation panel "How Cinema Performance is Influenced by Criticism" at the China Pavilion (Stand 207, International Village), 14:00–16:00. I was invited to join as a guest speaker during a series of panels and conversations.
2384
2385"impACT | Producing the Future: Innovative Financing Models for African Cinema" workshop (WIF / Docubox / Afreximbank), 15:30–16:30. Jennifer Ochieng covers.
2386
2387"Financing African Film for Impact: Muganga Case Study" (CANEX Creations / Afreximbank), 17:30 onward.
2388
2389Pavillon Afronova VIP reception and preview of Raynald Leconte's "Amazing Grace: Yoruba Worlds," 18:00–20:30. The film honors Wole Soyinka and traces the Yoruba diaspora across Africa, Brazil, and the Americas.
2390
2391**Friday, May 15**
2392
2393African & Diasporic Audience Development Think Tank, curated by Yetu (Un)Limited, Kiasi, Ctrl + Alt + Shift, and Sanusi Development Studio, with IEFTF support. The session opens with findings from the pilot programme and continues into thematic roundtables.
2394
2395Pavillon Afronova: "Storytelling as Infrastructure — Cinetourism as a Driver of Economic Growth, Jobs & Cultural Influence," 14:30–15:30. I'm moderating this conversation. Confirmed panelists: Natalie O. Hodge (Film Commissioner, British Virgin Islands), Marysela Zamora Villalobos (Costa Rica), Daniel Novaes Sampaio Celli (Rio Film Commission), and Joy Roberts (Jamvac, Jamaica, TBC).
2396
2397**Saturday, May 16**
2398
2399EAVE Impact Think Tank report launch: "Producing Under Pressure: Producer Care and Sustainable Practice," Palais Stage (-1), 11:30–12:30. Tamara Dawit (Gobez Media) moderates.
2400
2401Caribbean Day at Pavillon Afronova, organized by Mark Walton of Onyx Global Media.
2402
2403**Across the Week**
2404
2405Pavillon Afronova is the only official African and diasporic pavilion at the Marché, and Akoroko/AFP is an official media partner. Expect coverage from there all week.
2406
2407I'll also be sitting in on Council of Europe / European Audiovisual Observatory sessions on world market trends (FOCUS 2026, May 15) and fiscal incentives (May 16). (Invited.)
2408
2409I'll also try to squeeze in time at Winston Baker's 16th annual International Film Finance Forum, on the Main Stage of the Palais, May 15, 14:00–18:00, presented in partnership with the Marché du Film. The forum has been a useful annual read on how global film capital is moving.
2410
2411And, of course, the films. I'll see as many of the African and diaspora titles as my schedule permits. In Un Certain Regard: "Congo Boy" (Rafiki Fariala), "La Más Dulce" (Laîla Marrakchi), and "Ben'imana" (Marie-Clémentine Dusabejambo). In Directors' Fortnight: "Clarissa" (Arie and Chuko Esiri), and the shorts.
2412
2413Reviews to follow.
2414
2415**What You'll Get**
2416
2417It's a busy, shorter schedule than last year's. Dispatches (conference coverage, film reviews, etc) will come as they come.
2418
2419I will also attempt a 2026 edition of "What Six Hours of Unscripted Cannes Conversations Told Me," which was one of Akoroko's most engaged Cannes 2025 dispatches. Repeating the exercise this year may say something about how — if at all — those conversations have shifted.
2420
2421See you at Cannes... perhaps.`},{slug:"nollywoodweek-2026-13th-edition-paris",title:"NollywoodWeek 2026: The 13th Edition of Nigeria's Parisian Platform Adds Industry Weight",category:"Industry",date:"May 6, 2026",summary:`The 13th edition of NollywoodWeek Film Festival opens at Cinéma L'Arlequin under the theme "Voyage," adding a formal market partnership with NIFS, a Canal+ headquarters delegation visit, and a French-Cameroonian festival ambassador. Co-founders Serge Noukoué and Nadira Shakur speak candidly about visa headwinds, funding pressures, and the platform's unrealised potential.`,author:"Tambay A. Obenson",isPremium:!0,readTime:"9 min read",listenId:"nollywoodweek-2026-13th-edition-paris",headerImage:"/manus-storage/nollywoodweek_2026_header_6a888273.jpg",content:`The 13th edition of NollywoodWeek Film Festival (NOW) opens today at Cinéma L'Arlequin under the theme "Voyage" — a literal and figurative frame echoed at both ends of the program. Co-founders Serge Noukoué and Nadira Shakur open with "East West Love," Tanzanian filmmaker Seko Shamte's Kenya-Nigeria romantic comedy about a post-breakup escape to Mombasa, and close with "Ogene," a Nigeria-Japan collaboration named after the Igbo metal gong and the music built around it. The 2026 edition adds a formal industry partnership with the Nigerian International Film Summit (NIFS), a French-Cameroonian festival ambassador in Thomas Ngijol, and a delegation visit to Canal+'s headquarters, with a multi-country slate arriving in Paris against visa headwinds the festival has had to plan around.
2422
2423A year ago, when I spoke with the co-founder couple — also the first official media partnership for African Film Press (AFP) — Noukoué described NOW as "in a period of reevaluation." Streaming had reordered the industry, COVID had redrawn the audience, and he and Shakur were openly weighing whether the corrective they had built — a Black-led, Paris-based platform for African and diasp
2423ora cinema, deliberately outside the French public-arts funding system — still made sense as just that. A market component was being floated. None of it was structured yet. A year on, it is.
2424
2425The Nigerian International Film Summit (NIFS), run by Ijeoma Onah, now serves as the festival's market arm. NIFS programming runs for the first two days, in parallel with the public-facing screening schedule. Day one is institutional: French entities present services and collaboration possibilities for African producers. Day two includes the Best of Africa Pitch, a Creative Africa Content Pavilion (CACOP) format that Onah's organization previously held at MIP London in February. Five projects pitch to buyers and decision-makers. Some of those pitchers may present remotely; their visas had not come through as of the day of our conversation.
2426
2427The visa problem is something NOW has had to design around over editions, though it feels more pronounced this year. Noukoué attributed it to France's political environment. Shakur was direct about what it does to the work: "If you have filmmakers that can't even travel to a country with their work and promote their work, that's a fundamental issue. As a filmmaker, you're being blocked from opportunities after you've done the work, which is now being shown and gives pleasure to the people of that country, while the person who made it can't be there to benefit from the experience."
2428
2429The problem is not isolated to Paris. We discussed similar ongoing challenges faced by other industry professionals and colleagues traveling from the continent to key events in North America and Europe.
2430
2431Funding pressure is another story of its own across the sector. Our conversation briefly segued to the recent disclosure by Durban FilmMart, the South African industry market that ordinarily runs in July, which has now pushed its 2026 dates to October because the financing it needed was not in place. Noukoué wanted NOW's own situation on the record. "It depends year to year," he said. "Sponsorship money is not forthcoming, and so it becomes a bit of a struggle." Then, plainly: "We haven't reached our potential yet due to the lack of funding."
2432
2433The Canal+ relationship continues to evolve. Last year, the festival hosted Canal+ executives at a neutral venue. This year, a NOW delegation of African producers and filmmakers travels to Canal+'s Paris headquarters for a visit and conversation that will likely also include questions about the company's post-MultiChoice acquisition direction.
2434
2435Cédric Pierre-Louis, Director of Programming African Fiction Channels at Canal+, will host a screening and conversation about the group's partnership with a Nigerian production company to produce low-cost commercial films, similar to what the company has done with Marodi TV in Senegal and with ZACU TV in Rwanda.
2436
2437What Noukoué and Shakur anticipate the delegation's visit will raise is what Canal+ has been least forthcoming with publicly thus far: what replaces Showmax, now officially shut down as of April 30.
2438
2439"I don't know that they will respond to all of that in a very direct manner," Noukoué said, "but at least it's something that we expect will be addressed."
2440
2441The 2026 festival ambassador is Thomas Ngijol, the French-Cameroonian comedian, actor, and director, who will present his critically-acclaimed 2025 feature "Indomptables" — shot entirely in Cameroon — in a special screening on May 9, followed by a Q&A and masterclass. The selection follows last year's appointment of actress Aïssa Maïga as the 2025 ambassador.
2442
2443Shakur said the slate breaks roughly 70/30 in favor of Nigerian films, a ratio Noukoué said is similar to last year's. Films from Nigeria, in Shakur's telling, are consistently better — even in years when the level dips under the weight of local industry conditions. The Nigerian selection includes six features and three shorts. The features are Ekene Som Mekwunye's "Ewo," Uyoyou Adia's "Evi," Ema Edosio-Deelen's "When Nigeria Happens," Famous Odion Iraoya's "Onobiren," Kayode Kasum's "Reel Love," and Bolanle Austen-Peters' "Wire Wire," which world-premiered at the Joburg Film Festival earlier this year.
2444
2445The shorts are Dika Ofoma's "God's Wife," Josh Olaoluwa and Orire Nwani's "Hussaini" — nominated for Best Short Film at the 2026 AMVCAs — and Ella Chikezie's "In Her Shoes."
2446
2447Among the non-Nigerian title highlights are "Goat," the Kenyan supernatural folk thriller short from director Judy Kibinge — her first directorial work in over a decade after spending more than ten years building Docubox, the East African film fund she founded in 2013 — making its European premiere; "Memory of Princess Mumbi," Damien Hauser's Swiss-Kenyan AI-aided sci-fi feature that won the Golden Tulip at Istanbul earlier this year after premiering at Venice Days 2025; Achille Ronaimou's "Diya," the Chadian feature debut that screened at TIFF last year; Zoey Martinson's "The Fisherman," the Ghanaian feature that premiered at Venice in 2024; and Jean Luc Herbulot's "Zero," a Senegalese action thriller.
2448
2449The documentary slate includes Joel "Kachi" Benson's "Mothers of Chibok" and Thomas Letellier's "Batwing," a French production written and produced by Joachim Landau. Special screenings will profile two diaspora series — Adjani Salmon's "Dreaming Whilst Black," following an aspiring filmmaker in London. Meanwhile, NollyKids, the festival's children's program, runs May 10 in partnership with ToonTopia, the Nigerian animation festival created by Smids Animation Studios.
2450
2451Among the panels is "Soft Power" through technology, an AI-in-Africa session led by Malik Afegbua, focused on what he frames as the "decolonization of AI" and the underrepresentation of non-European faces in algorithmic models.
2452
2453A separate discussion will unpack microdramas and verticals as Netflix and TikTok continue staking out positions in the format. Both engage what Shakur described as the moment African festivals find themselves in: when streamers are not buying the films that are not algorithm-friendly, when audiences are increasingly sorted into algorithmic feeds, and when festivals are again being asked to justify themselves as curatorial spaces. "Now that everything's becoming very monolithic," she said, "it's even more important to have that — not just the films that are drawing big audience numbers because they have high marketing budgets, but also the films that we believe deserve to be platformed."
2454
2455This year's edition, in Noukoué and Shakur's own framing a year ago, sees a platform continuing to manage questions about what happens next, particularly in an increasingly volatile sociopolitical, economic, technological, and even cultural landscape. The visa situation is one. The funding situation is another. But neither is new. So is whether the festival can realize the potential that Noukoué firmly believes remains untapped.
2456
2457The work continues despite headwinds. Our conversations are ongoing.
2458
2459Akoroko's African Film Press (AFP) Nigeria partner, What Kept Me Up, will be on the ground in Paris this year, with its founder, Ikeade Oriade, representing the alliance.
2460
2461The 13th edition of NollywoodWeek Film Festival closes Sunday, May 10, at Cinéma L'Arlequin.`},{slug:"ferid-boughedir-camera-afrique-nyaff-2026",title:`Férid Boughedir Revisits "Caméra d'Afrique" at 33rd New York African Film Festival (NYAFF)`,category:"Profile",date:"May 9, 2026",summary:`Tunisian filmmaker and historian Férid Boughedir's 1983 documentary "Caméra d'Afrique" screens in 2K restoration at the 33rd New York African Film Festival, followed by an extended conversation with the director. A primer on the first generation of postcolonial African auteur cinema, and a record whose structural arguments remain central today.`,author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"ferid-boughedir-camera-afrique-nyaff-2026",headerImage:"/manus-storage/camera_afrique_header_64b373c4.jpg",content:`Tunisian filmmaker, critic, and historian Férid Boughedir's 1983 documentary "Caméra d'Afrique" screens in 2K restoration at the 33rd New York African Film Festival (NYAFF) today, Saturday, May 9, at noon local time, followed by an extended conversation with the director, who NYAFF has named an honored pioneer. The film premiered at the Cannes Film Festival's Un Certain Regard sidebar in 1983 and returned to Cannes Classics in 2019, restored by France's Center national du cinéma et de l'image animée (CNC) with support from the Institut français. It is, for now, the best one-stop primer on the first generation of postcolonial African auteur cinema; the extended conversation is the appropriate form for a guest whose practice doubles as historiography.
2462
2463"Caméra d'Afrique" fuses extracts from films, interviews with filmmakers, and rare archival footage. The roster of speakers is the index of an entire generational movement — Ousmane Sembène, Med Hondo, Safi Faye, Souleymane Cissé, Jean-Pierre Dikongué-Pipa, Inoussa Ousseini, Gaston Kaboré, and Tahar Cheriaa, the Tunisian critic who founded the Journées cinématographiques de Carthage (JCC) in 1966. This was three years before Burkina Faso's Festival panafricain du cinéma et de la télévision de Ouagadougou (FESPACO) opened in 1969, and effectively invented the institutional space in which an African auteur cinema could be discussed at all.
2464
2465Boughedir's "Caméra d'Afrique" narration sets Sembène's "Borom Sarret" (1963) as the ignition point — "for the first time, the image of Africa had come from within," he says; and the film proceeds from there to map what followed against the conditions that produced it.
2466
2467The documentary's making was indistinguishable from its subject. "Caméra d'Afrique" was self-produced, as Boughedir had no money to produce it at the time, and the ten-year schedule was a direct consequence of having to find funding the same way the filmmakers he was documenting did — and, quite frankly, still do. Directors gave him access to their negatives without asking for anything in return. Editing was handled in Paris by Andrée Davanture, working out of Atria, the postproduction collective that became the de facto laboratory of Francophone African cinema between 1980 and 1999, and that Cissé, Faye, Kaboré, and Dikongué-Pipa all passed through.
2468
2469Tunisian co-production came from Cinares; international sales went to Films du Losange.
2470
2471Boughedir was effectively filming the network from the inside, and his authority on this material has a longer track than the documentary itself. He came up as a critic at the pan-African magazine Jeune Afrique in 1971, gave the Montreal lecture "Éléments pour une théorie du cinéma africain" ("Elements for a Theory of African Cinema") in 1974 alongside Cheriaa and Hondo, published the reference book "Le Cinéma africain de A à Z" ("African Cinema from A to Z"; OCIC, Brussels) in 1987 — still one of the standard works for the peri
2471od — and then served the Carthage Film Festival in succession as delegate general (1992), vice-president (2000 and 2002), and director (2006), receiving the festival's 50th anniversary prize in 2016.
2472
2473He chaired the FESPACO jury in 2001 and sat on Cannes, Berlin, and Venice juries across the 1990s. Few people alive are better positioned to narrate this period from both inside the room and in the footnotes — though it's worth noting that "Caméra d'Afrique" excludes Anglophone Africa beyond a single Nigerian clip, on Boughedir's argument that an auteur tradition rooted in self-expression had developed in Francophone but not Anglophone Africa during the period, which he argued was a function of how French colonial structures had supported cinema in their former colonies in ways that British structures had not.
2474
2475More broadly, Boughedir expressed a kind of pessimism about African cinema's international visibility in a 2019 Cannes interview. He stated that African cinema "survives weakly," that festival programmers had returned to treating one film as enough to represent Africa, that African governments did not take enough interest in cinema, and that the best films being seen were financed by European countries, including France. Forty-three years after the original "Caméra d'Afrique" premiere, those structural arguments are still central to conversations about African screen sectors today.
2476
2477That's where the extended conversation that will follow today's NYAFF restoration screening could begin. It brings "Caméra d'Afrique" back as a film object; Boughedir's presence makes it possible to examine the choices behind the record, the realities that shaped its historical account, and how the honored pioneer, at 82 years old, reads the documentary now after four more decades of African film, television, video, festival, and, most recently, streaming activity.
2478
2479Regrettably, I will be unable to attend the New York screening and conversation in person. I hope to receive a recording afterward and use it as the basis for a follow-up piece.`},{slug:"afp-pipeline-registry-update-may-2026",title:"AFP Pipeline Registry Update: 50 New Projects, New Columns",category:"Industry",date:"May 8, 2026",summary:"Two weeks after its introduction, the AFP Film Pipeline Registry has picked up roughly 50 additional projects, bringing the subscriber-facing slice to just over 310 records. New columns are being added — language, industry support credits, and distributors.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"afp-pipeline-registry-update-may-2026",headerImage:"/manus-storage/afp_pipeline_registry_header_9757e60b.jpg",content:`Two weeks after its introduction, the African Film Press (AFP) Film Pipeline Registry's tracker has picked up roughly 50 additional projects, bringing the subscriber-facing slice to just over 310 records. The new entries cover a mix of Development and Pre-Production work, primarily feature films — among them a Moroccan batch from the CCM - Centre Cinématographique Marocain's first 2026 funding session, African co-productions backed by Belgium's Centre du Cinéma et de l'Audiovisuel (Wallonia-Brussels Federation), and other projects from across the continent that surfaced via festival lab selections, fund announcements, and trade-press confirmations.
2480
2481There's still a huge backlog of mostly 2020–2024 projects at various stages of development, which will be gradually integrated into the platform as updates are confirmed and details are cleaned up.
2482
2483Alongside the new records, additional columns are being added to the table — language, industry support credits (adding to each project's weighted "prospects" score), and distributors where known — once coverage across the slice is high enough to make them useful, avoiding mostly empty cells.
2484
2485The same filters and search apply to everything new, and the same invitation stands: corrections, source links, and project updates from your inbox help keep an already sharp tool even sharper.
2486
2487The link: [https://africanfilmpress.com/pipeline-registry](https://africanfilmpress.com/pipeline-registry)
2488Password: PeanutButterIceCream
2489
2490This is a temporary setup. Call this "beta testing." It's not perfect, but we'll get there. You'll eventually receive individual log-ins.
2491
2492And if you're just joining us, more on what the AFP African Film Pipeline Registry is follows below.
2493
2494**What It Is**
2495
2496The AFP African Film Pipeline Registry is a structured record of African feature films and series in development, financing, production, or post-production — in other words, projects with traction that have not yet premiered.
2497
2498Here, "African" means a project with a primary African country, an African director, an African producer, or a confirmed African production connection. Some diaspora projects are included where the African connection is central to the project's production, subject, or financing.
2499
2500The full internal registry now contains around 1,000 projects and comes with features that industry professionals across key roles have told me would be useful in this context. Today, I'm opening up roughly a quarter of it — 259 records — and some of the features, to Akoroko subscribers first, because you are the readers most likely to understand both the value of the information and the gaps that still need to be filled.
2501
2502To be sure, the registry is not meant to be a comprehensive census. What's especially unaccounted for currently are projects with little to no digital footprint. Those tend to be within the entirely homegrown direct-to-local-streamer (and platforms like YouTube) pipeline, which are the most underweighted parts of the picture. We still intend to capture as many of those as possible.
2503
2504**What You Can Do With It**
2505
2506As its name implies, see what's coming and what stage each is currently in. It's not built to be static. It's a living, breathing apparatus — partly automated; partly manual input.
2507
2508There is a help modal that walks the user through how this preview version works.
2509
2510Filter by project stage, format, track record, country, sales agent, or funder.
2511
2512Combine filters — they stack.
2513
2514Just note that there's still cleaning up being done. For example, the funder filter alone holds around 173 options, from AFAC and the WCF to Canal+, the CNC's Cinéma du Monde, the IDFA Bertha Fund, the Hubert Bals Fund, the Red Sea Fu
2514nd, the NFVF, the Sundance Institute Documentary Fund, the Fonds Image de la Francophonie, and most of the institutional money in African feature finance.
2515
2516However, there are duplicates and improperly captured entities that will be tidied up.
2517
2518Search across titles, directors, producers, countries, synopses, pipeline stages, and source text.
2519
2520A live counter shows how many projects match.
2521
2522A "★ Strongest Prospects" filter surfaces the highest-scoring records across all stages, weighted by our own internal methodology, which assigns grades to the caliber of funders attached, filmmaker track records, notable attachments, and more. This is not a judgment of artistic quality. It measures visible industry traction based on public evidence.
2523
2524Click any row to open the full project detail — director, producers, co-producers, writers (where set), countries, language, attached funders, sales agent, distributor, industry support credits, pipeline status, source attribution, primary contact where available.
2525
2526For records that score high enough to appear under Strongest Prospects, the score breakdown is visible too.
2527
2528Again, there is a help modal that walks the user through how this mostly works.
2529
2530**Methodology**
2531
2532Each record holds the project's title, director, producer or producers, primary and co-producing countries, language, format, current pipeline stage, attached funders, industry support credits, and source attribution for every claim.
2533
2534If a claim can't be traced to something we trust — ourselves, direct communication from filmmakers/producers/etc, an interview, a market placement page (Cinando, for example), a fund announcement, or a verifiable trade-press citation — it doesn't go in.
2535
2536When two sources disagree, the more authoritative one prevails, and the disagreement is noted. Where a source is shaky, the field stays empty.
2537
2538The tradeoff: the registry is, by design, a few weeks to a few months behind the genuinely most current state of any project. But I don't think any system could always be entirely current on the day it's accessed.
2539
2540**Improve the Registry**
2541
2542This first preview is subscriber-only — just as the fuller, more interactive registry will be. There is no open public version planned right now.
2543
2544Consider this an experiment as well. Some entries are there to test how subscribers read, challenge, and improve the data. If you see something in the 259-project slice that's wrong, stale, missing a funder, has the wrong stage, or has someone attached who isn't attached anymore — tell me.
2545
2546Reply directly to this email with corrections, source links, project updates, or missing information.
2547
2548More of the registry will open to subscribers in stages as verification continues, source trails improve, and I see how this first release is used.
2549
2550The link: [https://africanfilmpress.com/pipeline-registry](https://africanfilmpress.com/pipeline-registry)
2551Password: PeanutButterIceCream`},{slug:"canal-plus-nollywoodweek-2026-multichoice-plans",title:"What Canal+ Told African Producers at NollywoodWeek 2026 About Its Post-MultiChoice Plans",category:"Industry",date:"May 7, 2026",summary:"A closed session at Canal+ headquarters in Paris on May 6, 2026, convened on the opening day of NollywoodWeek, brought together Nigerian filmmakers, producers, and journalists with the Canal+ team. Here is a breakdown of what was presented — and what it means for African producers navigating the post-MultiChoice acquisition landscape.",author:"Tambay A. Obenson",isPremium:!0,readTime:"14 min read",listenId:"canal-plus-nollywoodweek-2026-multichoice-plans",headerImage:"/manus-storage/canal_plus_nollywoodweek_header_0abcc6d7.jpg",content:`A closed session at Canal+ headquarters in Paris on May 6, 2026, convened on the opening day of the NollywoodWeek Film Festival. The gathering brought together a room of industry professionals — largely Nigerian filmmakers, producers, and journalists, with Ghanaian and diaspora attendees. The Canal+ team was led by Cédric Pierre-Louis, Director of African Fiction Channels at Canal+ Distribution, and Clémentine Egasse, SVP of Thematic Channels at Canal+ International.
2552
2553The session ran about an hour: a corporate video, a slide presentation on Canal+'s production and channel operations across Africa, a Q&A, and a pitch session.
2554
2555I was not physically present; however, my African Film Press (AFP) colleague Ikeade Oriade, founder of What Kept Me Up, is on the ground in Paris for NollywoodWeek and recorded the presentation.
2556
2557What follows is a breakdown of the most useful segments, with my added analysis where relevant.
2558
2559Grab a chair and get comfortable.
2560
2561**What the Canal+ Team Presented**
2562
2563**Canal+ in Africa:** Canal+ described as having operated in Africa for over 30 years, with "nearly 8 million subscribers" (before the MultiChoice acquisition). Partner studios named: ROK Studios in Nigeria, Plan A in Côte d'Ivoire (long-time Canal+ Côte d'Ivoire partner via the A+ Ivoire channel), Marodi TV in Senegal, and Zacu Entertainment in Rwanda. Canal+ owns stakes in each of these companies.
2564
2565**Channel Footprint:** Premium Canal+ channels and a long list of thematic channels. Local-language channels include, but are not limited to: Novegasy (the Madagascar/Malagasy fiction channel), Maboke TV in Lingala for the DRC, Sunu Yeuf in Wolof for Senegal, Mandeka (Bambara/Malinke for Côte d'Ivoire, Burundi, Guinea, CAR), and Pulaagu (Pulaar for Senegal, Mali, Mauritania).
2566
2567**MultiChoice Side:** Africa Magic channels broken out by region: Ethiopia, Uganda, Kenya, Tanzania, Ghana, Zambia (English-speaking); Angola and Mozambique (Portuguese, three channels); West Africa (Africa Magic with Igbo, Yoruba, and Hausa channels); South Africa (M-Net channels, Afrikaans channels including kykNET). Cédric Pierre-Louis volunteers an internal ranking: Africa Magic Epic is the top performer "by far, always," he said, with Africa Magic Showcase rising during "Big Brother" seasons, with Africa Magic Yoruba third. Africa Magic Epic is a DStv channel for epic-genre Nollywood movies, typically historical works — pre-colonial settings, kings, warriors, village politics — much of it from indigenous-language catalogs.
2568
2569**Production Volumes:** At the Canal+ level, content is split into mass, middle, premium TV series, and TV movies. MultiChoice commissions roughly 5,000 hours per year across its country footprint.
2570
2571**Cédric Pierre-Louis's Portfolio:** Seven channels: ROK 1, ROK 2, ROK UK, Nollywood TV, Nollywood TV Epic, Maboke TV (DRC), and Zacu TV (Rwanda). Nollywood TV launched in 2012, initially airing M-Net content dubbed into French. He says it was the number-one channel on Canal+ in Africa until the Novelas channel took the top spot. ROK content typically reaches Nollywood TV / Nollywood TV Epic six weeks to two months after the original window.
2572
2573**Studio Acquisition Strategy:** When launching a local-language channel, the team prefers to acquire or partner with a producer or studio that can deliver volume. Canal+'s stakes in the above production companies across West and East/Central Africa tell the story. The takeaway here, as I suggested in a previous Akoroko report, is that the company's expansion into Anglophone African countries will likely include partnering up or taking equity positions in established production companies and content studios in select countries where it currently doesn't have a real footprint — even if MultiChoice does — the most immediate I see being Kenya, possibly Tanzania (Bakhresa Group's thriving Azam Media, which runs Uhai Productions alongside its dominant pay-TV platform, and competes directly with MultiChoice, seemingly winning that battle for local subscribers). If Canal+ can outright acquire MultiChoice and strike a deal to bundle Netflix content into 
2573its offerings, nothing should be considered off the table at this point.
2574
2575**Strategy Scale:** A group-wide premium-series initiative supported by the Canal+ CEO. Premium series only. Fiction feature films might be possible "elsewhere," but the Strategy Scale structure for now is "series-first." Also, no documentaries. Each project is co-financed across multiple Canal+ territories and built to travel.
2576
2577Sole African example to date: "Spinners" (South Africa). Co-production between Studio Canal, Canal+ Africa, and Showmax. Award-winning at festivals and sold internationally. Specifically: first African series in main competition at Canneseries (2023), three awards at Dakar Series, including Best TV Series, plus a Shanghai TV festival award. Produced by Federation Studios with Joachim Landau and Benjamin Hoffman as co-creators; co-produced locally by Ramadan Suleman at Natives at Large. Season 2 wrapped and launches in 2026 on both Canal+ and the MultiChoice side (Showmax/DStv). Pierre-Louis said "Spinners" is now on DStv Stream, but flagged that some titles haven't fully migrated from Showmax to DStv Stream yet.
2578
2579Globo as a "Strategy Scale" buyer. Pierre-Louis said "one of the biggest buyers" of "Spinners" was Globo in Brazil (deal brokered by StudioCanal at Content Americas in Miami in January 2024). He noted Globo just celebrated its 100th anniversary (in 2025), and stressed the large percentage of the Brazilian population that is of African descent (50% is a reasonable approximation). He also pointed to the Yoruba/Orisha cultural connection, and said Editi Effiong's Netflix actioner "The Black Book" (2023) was number one in Brazil for several weeks at launch. Pierre-Louis then pitched the room on Brazilian co-production opportunities. Note that the 2025 announced Nigeria-Brazil co-pro treaty still has yet to be ratified. The African Film Press (AFP) Africa Co-Production Treaty Registry will tell you that two African countries currently have agreements with Brazil; South Africa is the other.
2580
2581Pierre-Louis offered a non-African example: "Paris Has Fallen," StudioCanal's TV adaptation of the "Has Fallen" Hollywood franchise. The series premiered on Canal+ in September 2024, co-produced with Urban Myth Films, Millennium Media, Gerard Butler's G-BASE, and Eclectic Pictures. International deals include Hulu in the U.S., Amazon Prime in the UK and Ireland, SBS in Australia, and ZDF in Germany, plus carriage across Italy, Spain, Portugal, Belgium, the Netherlands, and Central European territories. His point was likely to stress the cross-continental sales footprint that is itself part of the pitch to the attendees in the room. Lead actor Tewfik Jallab, who plays Vincent Taleb, is French of Maghrebi heritage (Moroccan mother, Algerian-Tunisian father), and the character's tracks that backstory. Though there is no African production credit, shooting location, or storyline. A sequel, "Apollo Has Fallen," was announced on March 28, 2025, with some returning cast and a new city setting — possibly an African city.
2582
2583**Co-production Posture:** Pierre-Louis made it clear that Canal+ was open to working with Netflix and other platforms, public broadcasters, regional, and international partners. "We always find a way," he said. Another suggestion I've made in previous Akoroko reports is that Canal+/Netflix collaborations on the continent are not at all out of the question, despite any current formal bundling agreements. Netflix still has operations in Africa, even if it's boxed inside one country (South Africa). A co-production announcement involving both companies would not surprise me at all. Neither should the prospect of Canal+ partnering up with local platforms — hyperlocal streamers, broadcasters, etc.
2584
2585**Q&A: Substantive Threads**
2586
2587**Channel Positioning Conflict — ROK Content on Competing Platforms:** A producer asked whether content produced for Nigeria's ROK Studios could also run on Netflix. The answer was yes, technically — historically, ROK channels were distributed as third-party channels and could be picked up anywhere. But under the integrated Canal+/MultiChoice group, there's now a distribution agreement in place. The Canal+ team distinguishes Africa Magic Epic (which licenses "epic-genre" content) from ROK 2 (which produces originals only). They will also do first-window deals where a producer can put the work on YouTube afterward.
2588
2589**Budget Cap Question:** Answer: no fixed cap, depends on the project. "Spinners" c
2589ost more than the Canal+ team's typical series budget but had funding from French and South African sources attached. Outside Europe, American or Asian co-producers can join when a story has crossover potential.
2590
2591**Terminology Aside:** Mary Njoku (ROK) is credited with pushing to replace "local language" with "indigenous language." The room agreed.
2592
2593**Process Speed:** "Lasgidi Cops" was cited as an example of how long the pitch-to-execution cycle has historically taken. The series — a Lagos Special Crimes Unit drama created by Yemisi Wada of Asake Productions, starring Joke Silva, Bimbo Akintola, Femi Branch, and others — first ran on MultiChoice's Africa Magic in 2015. The reimagined "Lasgidi Cops: Special Crimes Unit" premiered on Canal+ Afrique in French on July 20, 2025. The English-language release for Nigerian and diaspora audiences was still pending as of late 2025, which aligns with the room's discussion about whether it would land on Africa Magic or Nollywood TV next. The Canal+ team said things should move faster under the integrated group, and notes that Canal+ runs a small team (four or five people on a given project) versus a full floor of around 20 at MultiChoice, which is part of why Canal+ moves more deliberately.
2594
2595**Diaspora Content Debate:** A question was asked about Canal+'s potential role in bringing diaspora films — including African festival films that premiere at prestige venues like Cannes, Berlin, Toronto, and Sundance — back to the continent for distribution. The Canal+ team said they've tried it and that it doesn't always work, noting that only certain projects resonate at home, while "epic content" tends to perform best in both directions. Attendees pushed back with a recent British-Nigerian diaspora example — "My Father's Shadow."
2596
2597What followed was a long, semi-heated discussion about how "My Father's Shadow" was handled. The three positions in the room, per my assessment of the transcript:
2598
2599From one angle, the argument was that the film didn't perform at the Nigerian box office because of the production treatment; it didn't draw on the visual nostalgia (Lekki references, period detail) the way an audience at home would have wanted, and the team wasn't targeting the home audience anyway, just qualifying for the Oscars.
2600
2601Some pushed back, arguing the film didn't perform because it wasn't marketed to the Nigerian audience, not because the storytelling failed. One person claimed that few Nigerians have actually seen it.
2602
2603A third attendee rejected the idea that Nigerian audiences only pay attention to Asaba-style productions — for non-Nigerians, popular, low-budget, high-volume titles from the production hub in Delta State in the southern part of the country — or that diaspora audiences only want the polished Lagos glamour of Nigerian commercial hits like "Fifty" (2015) or "The Wedding Party" (2016). They also pushed back against the Canal+ team's claim that epic content always outperforms, arguing that this kind of generalization has flattened audience taste.
2604
2605As a Nigerian-Cameroonian in the diaspora, I have nothing useful to offer here.
2606
2607A pitch session was also held near the end of the Canal+ gathering, although I don't have enough detail for a full account. I can confirm that five projects were originally scheduled, but only two appear to have been pitched. I believe visa issues — which I captured in my conversation with NollywoodWeek co-founders Serge Noukoué and Nadira Shakur — had some bearing here.
2608
2609A separate write-up on the session may follow, depending on how much material information I can gather.
2610
2611**The Canal+ Gathering in a Nutshell...**
2612
2613After the MultiChoice acquisition, the combined entity isn't just a pay-TV company. It's a broadcaster, platform operator, producer, co-financier, international sales partner, and possible equity partner. Any filmmaker or producer engaging the company at this juncture, as we reach the midway point of Q2 2026, should probably package their pitch or project to reflect a consideration of that full structure.
2614
2615Canal+ wants projects with a clearly defined audience, a realistic production path, and a distribution case fully baked in. Premium fiction series that can work across multiple territories are currently the strongest lane. No theatrical deals here.
2616
2617For films or non-premium series — both of the "lower budget" variety — producers need to know where the project fits within Canal+'s existing production and distribution channels (including those that fall under MultiChoice): ROK, Africa Magic, Marodi TV, Zacu, any of the indigenous-language channels, DStv Stream, or another Canal+ outlet.`},{slug:"flytime-baba-segi-nigerian-revenue-stack",title:`Flytime Enters "Baba Segi's Wives" Case Study: Building a Nigerian Revenue Stack`,category:"Industry",date:"May 5, 2026",summary:"Flytime's entry as executive producer on EbonyLife's December 2026 theatrical adaptation of Lola Shoneyin's novel adds a live-entertainment engine to a film already structured as a major holiday event release — and tells you something about how the revenue stack is being assembled.",author:"Tambay A. Obenson",isPremium:!0,readTime:"7 min read",listenId:"flytime-baba-segi-nigerian-revenue-stack",headerImage:"/manus-storage/baba_segi_wives_header_1f5d4c45.jpg",content:`Speaking of packaging projects — specifically, "stacks," referencing an earlier report on the introduction of the AFP Funding Desk and "capital stacks" — this one comes from the opposite side (though not entirely, since they're linked): the "revenue stack." Capital stack on the way in (Funding Desk), revenue stack on the way out (this case).
2618
2619Back in January, I wrote about EbonyLife Films' announcement of a feature adaptation of Lola Shoneyin's 2010 novel, "The Secret Lives of Baba Segi's Wives," produced with Genesis Group, Nile Media Entertainment Group, and Silverbird Group, with a theatrical release planned for December 2026 in Nigeria and the UK. The package was notable for a few reasons: Mo Abudu's first feature project in five years; an unusually heavy Nigerian consortium covering production, distribution, and exhibition; FilmOne/Filmhouse conspicuously absent; and a diaspora strategy that depended on the planned EbonyLife Cinemas UK.
2620
2621I framed it as a case study for theatrical-first positioning in a post-streaming contraction phase, in a Nigerian and broader Anglophone West African context, though financing, role allocation, and revenue splits were all undisclosed at the time; still are, as of today, May 5.
2622
2623I ended that piece by saying the project would be tracked as execution details became public.
2624
2625On May 4, 2026, one of those details was announced. Cecil Hammond, founder of Flytime, and Keke Hammond, Flytime's Chief Operations Officer, joined "The Secret Lives of Baba Segi's Wives" as executive producers.
2626
2627**Why am I drawing attention to this?**
2628
2629Flytime is a Lagos live-entertainment and event production company behind "Rhythm Unplugged," a Nigerian concert platform launched in 2004, and "Flytime Fest," its December concert event in Lagos.
2630
2631By all accounts, Flytime brings large-concert production, sponsor-facing event work, premium-ticket live entertainment, and public event promotion to a high-profile Nigerian literary adaptation. The press release says Flytime has worked on events in multiple cities for 22 years, featuring more than 400 artists, including Wizkid, Burna Boy, Davido, and Tiwa Savage.
2632
2633The film is already scheduled for December 2026, a period of dense entertainment activity in Nigeria, particularly in Lagos, including concert series and cinema releases.
2634
2635Consequently, we can say that "The Secret Lives of Baba Segi's Wives" is being positioned as a holiday period "event release," with several pieces in assembly: a recognizable Nigerian literary property, EbonyLife's production and media profile, Nile Media Entertainment Group's distribution and cinema interests, Genesis Pictures' West African distribution network, same for Silverbird's exhibition and distribution history, and now Flytime's live-entertainment machinery.
2636
2637So the story here is less "Flytime joins as executive producer" and more "EbonyLife is adding a live-entertainment engine to a film already structured as a major holiday theatrical play": premieres, fan events, cast appearances, music tie-ins, sponsor-backed activations, influencer-heavy publicity, diaspora-facing screenings, and possibly a soundtrack or music campaign. The soundtrack point belongs in the observation column until it's officially announced.
2638
2639The film's platform afterlife is also being pulled forward amid all of this planning. And with Flytime taking an executive producer credit, I assume back-end participation in anticipation of a blockbuster event release that c
2639ontinues to print money long after its December bow; franchise potential, perhaps.
2640
2641Ultimately, this is an unusually visible consolidation of major Nigerian film, cinema, distribution, and now live-event players around one December theatrical title. I'm fascinated and watching it all unfold — particularly against the backdrop of the slowly unraveling Canal+/MultiChoice, post-Showmax commissioning gap uncertainties, albeit primarily in the streaming and pay-TV realms.
2642
2643**The Revenue Stack**
2644
2645Back to the revenue stack reading, which tells you how the film might be monetized across channels; in this case: box-office receipts, ticketed live events, brand sponsorship, later licensing, streaming rights, soundtrack revenue, merchandise, even stage rights, sequels, remakes, and other uses of the underlying intellectual property.
2646
2647Nigerian theatrical releases use these channels in different ways. Many depend mainly on cinema tickets, then later streaming or pay-TV licensing when a deal is secured. Some holiday releases, including superstar Funke Akindele's biggest films, use multiple channels simultaneously, including sponsorship, music, heavy publicity, and public appearances during the cinema run.
2648
2649The "Baba Segi's Wives" package is starting from that much wider base.
2650
2651That makes the December 2026 release window more interesting. In January, I asked whether the film could compete with Akindele's recent hold on Nigeria's year-end cinema period, if she also releases a film during that time. Akindele has won that window in the post-pandemic years, with tight production discipline, ensemble appeal, and a loyal audience that turns out at scale. "The Secret Lives of Baba Segi's Wives" might test whether a consortium-driven event release — with a live-entertainment operation in the assembly — can convert the same window into something of a different shape.
2652
2653**What to Watch**
2654
2655What to watch from here: the financing structure (still undisclosed); the attachment of a sales agent or international distribution partner outside the named consortium; any festival placement ahead of December; concrete activations from Flytime tied to the release; and whether a streaming deal is announced before, during, or after the theatrical run. Each one tells you something different about how the revenue stack is actually being assembled.
2656
2657The May 4, 2026 announcement also restated the film's creative package. Daniel Oriahi directs from a screenplay by Adze Ugah. Meanwhile, Odunlade Adekola leads a cast that includes Iyabo Ojo, Mercy Aigbe, Bimbo Ademoye, Omowunmi Dada, Bisola Aiyeola, Fathia Williams, Damilola Adegbite, and Nancy Isime.`},{slug:"engineering-eligibility-afp-funding-desk",title:"Engineering Eligibility: Inside the AFP Funding Desk",category:"Industry",date:"May 5, 2026",summary:"Five days after the AFP Funding Desk launched, three worked scenarios show how the Capital Stack Builder operates in practice — a Dakar series, a Lagos debut feature, and a Cape Town post-production project — and why the time to think about financing is before you put a word on paper.",author:"Tambay A. Obenson",isPremium:!0,readTime:"8 min read",listenId:"engineering-eligibility-afp-funding-desk",headerImage:"/manus-storage/engineering_eligibility_funding_desk_header_6e59c930.png",content:`On April 30, I introduced the AFP Funding Desk to subscribers. Five days in, I thought it would be useful to show how it actually works in practice, because the financing rationale that underlies it isn't always obvious, and without that, the tool may be read as just a list — especially to the novice. The data is verified and sourced. It's not, however, a guarantee of access — funds change, cycles open and close, and eligibility rules shift.
2658
2659A realistic picture of how film financing actually works in the African context, particularly with films that travel — though it's becoming less unusual with those that don't — should tell you that it's almost never one fund, one country, one application. It's a "stack" built from national financing instruments (typically government-backed, where they exist), pan-regional supplements, international grants, equity investments, loans, broadcaster or streaming relationships, distributor pre-buys, each with its own eligibility criteria and requiring the project to be shaped in a specific way to qualify.
2660
2661Be ready to give yourself permission to compromise. The implicit argument running through each hypothetical scenario is that the shape of your project — language, location, co-producer nationality, stage, format — often determines what kind of money is available, and how much. A newbie may feel that adju
2661sting a script to consider financing options is a betrayal of something. It's standard practice, not compromise. It's how many of the films we all admire actually got made.
2662
2663Many of you, especially the experienced, know all of this. But I've learned that what I assume is common knowledge may not always be.
2664
2665Within that context, the time to consider financing is not after the script is finished. It's before you put a word on paper. What stories do you want to tell, and what does the financing map look like for a project of that shape? Sometimes everything aligns, and no adjustments are needed. More often, getting a film made requires some version of rethinking, whether it's location, language, structure, or partners. It doesn't mean failure of artistic integrity. It's the reality of how this business works, and it applies across career stages and budget levels.
2666
2667I like to refer to it as "engineering eligibility."
2668
2669That's a gap we hope to fill with the AFP Funding Desk, even in its current rudimentary form — as a comprehensive tool that provides roadmaps to completion. It tracks 98 (and counting) verified financing instruments across 54 countries and lets you filter by country, format, stage, and fund type to see what's available for a specific project at a specific moment.
2670
2671The Capital Stack Builder feature organizes those results into layers and tells you what to approach first and what requires other funding to be in place before it becomes accessible.
2672
2673The Funding Desk does not guarantee access to any fund and does not replace the relationships, track record, or judgment that financing ultimately requires. What it does is put the architecture in front of you. From there, the decisions are yours.
2674
2675The scenarios below show the tool in use across different project types, budgets, regions, and career stages. Use them as illustrations of a process, not a prescription. Then use the tool itself. If you find a fund that should be there and isn't, or if you can fill some experiential gap, let me know.
2676
2677The platform is live (though still only subscriber accessible) and is being updated continuously. If something in these scenarios prompts thoughts or questions about anything, I want to hear about it, too.
2678
2679## Scenario 1: Local Money, Local Audience
2680
2681A Dakar-based producer is developing a six-part drama series in Wolof and French. Budget: around €180,000. No interest in the international festival circuit. He wants to make it for Senegalese and Francophone West African audiences and get it onto regi
2681onal platforms.
2682
2683He opens the AFP Funding Desk, filters by Senegal, and series. Twenty-one funds return. He runs the Capital Stack Builder.
2684
2685Layer 1 has FOPICA and FDDPA. He opens FDDPA — a second Senegalese audiovisual fund, legally established. However, the flag stops him: no disbursements for film or audiovisual production have been confirmed as of May 2026. It's awaiting operationalization. He sets it aside and focuses on FOPICA, which covers series on an advance-on-receipts basis. The flag indicates there's been a traffic jam with the fund. The 2023 results were disbursed in April 2025. He applies.
2686
2687Layer 2 has only ACF — the African Culture Fund, up to $10,000, pan-continental, genuinely open-call. Modest but real.
2688
2689He searches "francophone" in the search bar. OIF — Fonds Image de la Francophonie — appears. He opens the card and reads the flag: OIF covers feature, documentary, short, and animation formats. Series not currently included. He notes it and moves on.
2690
2691Layer 3 has TV5MONDEplus, CCA Wallonia, UKGSF, and others. He opens TV5MONDEplus: French language required, broadcaster acquisition deal required before the grant is paid. He opens CCA Wallonia: more than 50% of dialogue must be in French. His series is bilingual — Wolof and French. Whether it qualifies depends on the actual dialogue ratio, which he'll need to calculate against his scripts.
2692
2693He opens UKGSF: UK minority producer required. He doesn't have one. He rules it out for now.
2694
2695The realistic stack for a Senegalese series production without a European co-producer: FOPICA as the foundation, ACF as supplement, TV5MONDEplus if he can interest the broadcaster, CCA Wallonia if the French dialogue ratio qualifies. That ceiling is achievable for a lean six-episode series with deferred fees.
2696
2697He doesn't need an international co-producer for this. What he needs is the Senegalese FOPICA call to open and a conversation with TV5MONDE.
2698
2699## Scenario 2: A Typical UK Route
2700
2701A Lagos-based producer has a debut feature, directed by a Nigerian director, in English, set in Lagos. The script is strong. She needs international financing to reach the budget level that gives it a real shot at the festival circuit.
2702
2703She opens the Funding Desk, filters by Nigeria, and selects Feature Development. Thirteen funds return. The Capital Stack Builder shows Layer 1 with one national fund: CEDF. She opens the card and reads the flag: Phase 1 applications closed June 30, 2025; Phase 2 closed September 1, 2025. Both disbursement timelines are slotted for 2026, though no official announcement has been made as of May 2026. And there is no open call right now. CEDF is in the stack but functionally inaccessible for a new application. She notes it for future cycles.
2704
2705Layer 2 has Locarno Open Doors and ACF. She opens Locarno: Africa Cycle 2025–2028, aimed at developing projects from underrepresented regions. She reads the flag: it's a lab and market access mechanism, not a cash grant. Valuable for positioning, not for budget closure.
2706
2707She moves to Layer 3. UKGSF, Red Sea Fund, HBF, WCF, DFI, Finnish Film Foundation all surface. She opens UKGSF: UK producer must be the applicant; grants up to £300,000; non-recoupable; current round closed in April 2026; next round in September 2026. She has a timeline.
2708
2709She opens Red Sea Fund: all African nationalities eligible, up to $500,000 for feature production, four cycles per year. She opens HBF: up to €10,000 development, compatible with WCF. She opens WCF: German partner required before contract is signed; budget range: €200K–€1.4M.
2710
2711She opens DFI. Flag: non-MENA directors — development and production funding for first or second-time directors only. She is a debut feature producer with a debut director. They qualify. Up to $100,000 production, $2.2M budget ceiling.
2712
2713What the stack tells her: the most significant windows — UKGSF, Film4, BFI — require a UK production company attached before accessibility. Olive Nwosu's "Lady" may have been partly built this way (for the record, I have no inside knowledge): BFI Discovery Feature, Film4, Screen Scotland. The Funding Desk shows the pathway. What this debut feature Nigerian producer needs now is the right UK partner to open it up.
2714
2715## Scenario 3: The South African Debut
2716
2717A Cape Town-based producer has a debut feature in post-production. No international co-producer, no European institutional backing. The film is South African, made with domestic resources.
2718
2719She opens the Funding Desk, filters by South Africa, and selects the post-production stage. Sixteen funds return.
2720
2721She opens the NFVF Post-Production Grant card and reads the flag immediately: six CEO-level changes in under three years, a Public Protector finding, and SAFTAs canceled. The fund continues to process calls, and the governance situation has been documented. She applies anyway — confirmed grant ceiling up to $150,000, though debut features at this tier typically receive considerably less.
2722
2723She notices DTIC is not in the results. She checks why: DTIC covers the production stage, not the post. She would have needed to look at this window earlier in the process. She searches "DTIC" directly. The card opens, and the flag is unamb
2723iguous: no new approvals since early 2024, the adjudication committee has not been convened, and 80+ applications are in backlog. She notes it for future projects but removes it from any current planning.
2724
2725The Capital Stack Builder returns a Layer 1 with three national funds: NFVF Post-Production Grant, MGE Grant, and Cape Town Film Fund — the last two are only relevant if the project is based in Gauteng or eThekwini specifically.
2726
2727Layer 3 includes ACM/CNC, HBF, WCF, DFI, Red Sea Fund, ADFC, and others — all of which require co-production relationships she doesn't currently have. ADFC is an Abu Dhabi location rebate, not applicable to a Cape Town shoot. Layer 4 is empty; no location incentive covers this filter combination.
2728
2729Layer 6 has NEF: she opens the card and reads the flag: bridge loan only, Black-owned South African production company required, and the fund is itself described as effectively non-operational because it bridges against DTIC approvals that are not being granted.
2730
2731What the stack shows: the South African domestic post-production financing ecosystem is currently modest. Without an international co-producer, the external layers are largely inaccessible. The Funding Desk confirms that the path exists and shows potential traffic jams.
2732
2733---
2734
2735To be sure, these scenarios are illustrations, not guarantees. The process may not always be this clean, nor linear, even if the financing rationale is. Any given scenario may suddenly shift due to unexpected forces beyond the process's expectations.
2736
2737In practice, funds can be slower to respond, the right co-producers are hard to find, and eligibility questions may require more than a flag summary can capture.
2738
2739What the AFP Funding Desk is meant to show is how a stack can be built, what each layer requires, and where the tool forces you to confront decisions you might otherwise defer.
2740
2741It's the beginning of a process, not the end of one. The work that follows from that is yours.
2742
2743Please tell us how we can make it even more useful and efficient.`},{slug:"africa-streaming-infrastructure-watch-may-2026",title:"Africa Streaming & Infrastructure Watch — May Update",category:"Industry",date:"May 4, 2026",summary:"Seven new events added since the April update: Showmax shuts down across 44 Sub-Saharan markets, Canal+ confirms DStv simplification, Amazon LEO files in Kenya, and Starlink enters the Central African Republic. Total: 41 events across 54 countries.",author:"Tambay A. Obenson",isPremium:!0,readTime:"4 min read",listenId:"africa-streaming-infrastructure-watch-may-2026",headerImage:"/manus-storage/africa_streaming_activitymap_header_7cda1411.png",content:`The tracker and map have been updated as May gets underway.
2744
2745As a reminder, and for newer subscribers, this will be updated monthly, or sooner if newly identified activity materially changes market conditions. Over time, it's intended to become a first point of reference, helping users see how pricing, distribution, regulation, and ownership evolve across African markets and how those changes interact with the rest of the world.
2746
2747As time passes, the oldest entries will drop off the visible timeline and map, though they will remain available in longer-range timeline views and historical assessments.
2748
2749Seven new events have been added since the April update, bringing the total to 41 events across 54 African countries.
2750
2751The biggest development since the last update: on April 30, Showmax officially shut down across 44 Sub-Saharan African markets — we knew that was coming. Existing subscribers were offered DStv Stream Compact at R99/month for one year. Showmax Originals have been moved to a dedicated section within DStv Stream.
2752
2753Meanwhile, Canal+ confirmed it is simplifying DStv's product and pricing structure following its acquisition by MultiChoice. In South Africa, customers currently face up to 17 price points depending on whether they use satellite or streaming. Channel renaming and consolidation are expected.
2754
2755A development I overlooked in last month's update: Canal+ Africa CEO David Mignot confirmed in March that the company intends to extend its existing Netflix bundle partnership from Francophone Africa — where it has been live since July 2025 — to English-speaking sub-Saharan Africa, including South Africa. No timeline has been confirmed.
2756
2757Under the existing bundling arrangement, eligible Canal+ subscribers can access Netflix as part of certain Canal+ subscriptions. If that model reaches Anglophone markets, Canal+ and DStv could become a major acquisition and billing channel for Netflix in those countries. Consequently, Netflix access in Africa can expand within Canal+ and DStv packages while Netflix's commissioning and acquisition of African originals remains limited. More households may receive Netflix; few new African projects may receive Netflix money.
2758
2759The one company with both the distribution infrastructure and the commissioning appetite to fill that gap is Canal+ itself, which already holds equity stakes in production companies across Nigeria, Côte d'Ivoire, Rwanda, and Senegal.
2760
2761## Satellite Internet
2762
2763In satellite internet, two threads of note. The first is Amazon. Most people know Amazon as a retailer or a cloud computing company, but it has spent several years and billions of dollars building a satellite internet network called Project Kuiper — now rebranded Amazon LEO — that works on the same basic principle as Elon Musk's Starlink: a large constellation of satellites in low earth orbit providing broadband internet to areas without reliable fixed infrastructure.
2764
2765Earlier this year, Nigeria's communications regulator granted Amazon LEO a seven-year operating permit. In April, the company filed a license application in Kenya. It has not launched commercial service in either market yet, but the regulatory groundwork is being laid. Starlink, the only major low-earth-orbit satellite internet operator active in Africa, now has a rival.
2766
2767The second thread is Starlink itself. The service launched in the Central African Republic in March, its latest market entry on a continent where it now operates in more than two dozen countries. South Africa remains the most notable exception. Starlink cannot operate there because South African law requires communications licensees to meet Black economic empowerment ownership requirements — rules designed to address the racial concentration of economic ownership that persists from the apartheid era.
2768
2769In April, the government body that oversees those ownership rules opened a public consultation on a broader review of the ICT sector's Black economic empowerment code, with submissions due May 20. The outcome of that review could affect the conditions under which Starlink — and other foreign-owned operators — could eventually apply for a license.
2770
2771Visit [Africa Streaming & Infrastructure Watch](https://africanfilmpress.com/streaming). The "Interactive Map" button is at the top of the page. Both the timeline and map are best viewed on a large screen, though each is also mobile-friendly.
2772
2773As Akoroko subscribers, your feedback is most welcome.`},{slug:"african-films-oscar-festival-prizes",title:"How Often Have African Films Won the Six Festival Prizes Now Tied to the Oscars?",category:"Research",date:"May 2, 2026",summary:"An audit of African wins across the six festival prizes now linked to the Oscars' International Feature Film category: the Palme d'Or, Golden Bear, Golden Lion, Sundance World Cinema Grand Jury Prize, Toronto Platform Award, and Busan Best Film Award.",author:"Tambay A. Obenson",isPremium:!0,readTime:"6 min read",listenId:"african-films-oscar-festival-prizes",headerImage:"/manus-storage/african_films_oscar_prizes_header_85646a8e.jpg",content:`On May 1, the American Academy of Motion Picture Arts and Sciences released the rules for the 99th Oscars. As captured in the related Akoroko report, the largest changes are to the International Feature Film category — historically the only realistic route into the Oscars for African films.
2774
2775Until now, only one path existed: a country's national selection committee submitted one film per year to the Academy, and any film not picked by its country was ineligible.
2776
2777Under the new rules, starting with the 99th Oscars next year, a non-English-language film can also qualify by winning a designated prize at one of six festivals: the Golden Bear at the Berlin International Film Festival, the Best Film Award at the Busan International Film Festival, the Palme d'Or at Cannes, the World Cinema Grand Jury Prize at Sundance, the Platform Award at the Toronto International Film Festival, or the Golden Lion at Venice.
2778
2779Following the announcement, I conducted research to assess how realistic this major festival award pathway has been for African filmmakers.
2780
2781This is the result of that audit. Three filters apply: the director must be African; the winning film must tell a story that centers an African protagonist; and the story should be set in an African country.
2782
2783Borderline cases are noted.
2784
2785## Four Qualifying Wins
2786
2787**Mohammed Lakhdar-Hamina — "Chronicle of the Years of Fire" — Cannes Palme d'Or, 1975 — Algeria.** The only African Palme d'Or winner in the 70-year history of the prize. Algerian production, the most expensive of its era. The Algerian War of Independence as seen through a peasant farmer's life, 1939–54. Hamina passed away 23 May 2025 — the same day Cannes Classics screened the 4K restoration for the film's 50th anniversary.
2788
2789**Zézé Gamboa — "The Hero" / "O Herói" — Sundance World Cinema Grand Jury Prize: Dramatic, 2005 — Angola.** The only African winner of the Sundance World Cinema Grand Jury Prize since the competition was introduced in 2005, across both Dramatic and Documentary tracks. Angola–Portugal–France co-production shot entirely in Luanda. Four intersecting lives in the immediate aftermath of Angola's 27-year civil war. The film took the inaugural Dramatic prize at the 2005 edition.
2790
2791**Mati Diop — "Dahomey" — Berlin Golden Bear, 2024 — France/Senegal/Benin.** The only Golden Bear winner to satisfy all three filters. Paris-born to Senegalese musician Wasis Diop (brother of Senegalese pioneer Djibril Diop Mambéty). Self-identifies as French-Senegalese and cinéaste afrodescendante. A 67-minute documentary-essay on the November 2021 return of 26 royal artifacts of the Kingdom of Dahomey from Paris to Cotonou. Fun fact: Lupita Nyong'o, the first African to serve as Berlinale jury president, presented the prize.
2792
2793**Tarik Saleh — "The Nile Hilton Incident" — Sundance World Cinema Grand Jury Prize: Dramatic, 2017 — Egypt.** Stockholm-born (1972) to an Egyptian father and Swedis
2793h mother, Saleh identifies as Swedish-Egyptian and has built his directorial work around contemporary Egypt — the Cairo trilogy continued with "Boy from Heaven" (Cannes Best Screenplay, 2022) and "Eagles of the Republic" (Cannes Competition, 2025). "The Nile Hilton Incident" is a political thriller set in Cairo on the eve of the 2011 revolution. Egyptian state security shut down the original Cairo production; Saleh moved the shoot to Casablanca and Berlin.
2794
2795## It's Complicated...
2796
2797**African-born, non-African story.** Abdellatif Kechiche, born in Tunis in 1960, won the Cannes Palme d'Or in 2013 for "Blue Is the Warmest Colour." The film is a French/Belgian/Spanish romance adapted from Julie Maroh's French graphic novel.
2798
2799**African story, non-African filmmaker.** Mark Dornford-May, born in Yorkshire, England, won the Berlin Golden Bear in 2005 for "U-Carmen eKhayelitsha," a Xhosa-language adaptation of Georges Bizet's "Carmen" set in Khayelitsha, a township in Cape Town, South Africa. He began working in South Africa in 2000, became a permanent resident in 2004, and was inducted into the Sotho clan of his wife, Pauline Malefane's family, in 2007. Contemporary and later coverage has described "U-Carmen eKhayelitsha" as the first African film to win the Golden Bear, with Mati Diop's "Dahomey" in 2024 as the second.
2800
2801**African story, non-African filmmaker.** Italian filmmaker Gillo Pontecorvo won the Venice Golden Lion in 1966 for "The Battle of Algiers" / "La Battaglia di Algeri," a reconstruction of the 1954–57 urban guerrilla campaign against French colonial rule in the Algiers Casbah. The film is an Italian-Algerian co-production between Pontecorvo's collaborator Antonio Musu (Igor Film, Italy) and Saadi Yacef (Casbah Film, Algeria). Yacef was the former FLN military commander in Algiers; the film is adapted from his prison memoir "Souvenirs de la Bataille d'Alger," he co-produced it through Casbah Film with logistical and financial backing from then Algerian President Houari Boumédiène's government, and he plays the El-Hadi Jaffar character based on himself. The cast is overwhelmingly Algerian and non-professional; the film was shot entirely on location in Algiers. Worth noting that President Boumédiène would also bankroll Lakhdar-Hamina's "Chronicle of the Years of Fire" nine years later — Algeria's only Palme d'Or, won by an Algerian filmmaker.
2802
2803## The Rest of the Story...
2804
2805**Venice Golden Lion (since 1949).** Zero African wins through the 82nd edition (September 2025). The closest: Tunisian director Kaouther Ben Hania's "The Voice of Hind Rajab" took the Silver Lion Grand Jury Prize at Venice 2025 — the runner-up — under jury president Alexander Payne. Alice Diop's "Saint Omer" (2022) also took Silver, with the Silver Lion Grand Jury Prize and the Lion of the Future for Best First Film.
2806
2807**Toronto Platform Award (since 2015).** Several African and African diaspora filmmakers have screened in the Platform programme without winning: Nabil Ayouch's "Razzia" (2017), Maïmouna Doucouré's "Hawa" (2022), Cédric Ido's "The Gravity" (2022), Nora El Hourch's "Sisterhood / HLM Pussy" (2023), Olivier Sarbil's "Viktor" (2024), Orian Barki and Meriem Bennani's "Bouchra" (2025).
2808
2809**Busan Best Film Award / Busan Award (since 2025).** The Busan Award was introduced at the 30th Busan International Film Festival in September 2025. BIFF describes the Competition section as a section for outstanding Asian films from the year. The inaugural Best Film winner was Zhang Lu's "Gloaming in Luomu" from China. Consequently, under the current published description, this is the least likely route for African filmmakers among the six Academy-listed festival prizes.
2810
2811## Outro
2812
2813Four technically qualifying wins across 49 years — Mohammed Lakhdar-Hamina at Cannes in 1975, Zézé Gamboa at Sundance in 2005, Tarik Saleh at Sundance in 2017, and Mati Diop at Berlin in 2024. Three of the new rule Academy-listed prizes — Venice's Golden Lion, Toronto's Platform Award, and Busan's Best Film Award — have zero winners that meet the "Africa" criteria used here.
2814
2815The new Academy route is a real option, but narrow. To be sure, a Palme d'Or or Golden Bear could already strengthen a film's case before a national selection committee; historically, it has. The difference now is that a qualifying win can create a separate International Feature Film entry path. This could matter most where a national selection committee does not submit a film. For example, Nigeria did not participate in the 2026 Oscars — the third time in five years — and Kenya's committee found no "eligible entry" per its own rules for the 98th Academy Awards.
2816
2817Still, to benefit from the new rule, a film first has to be selected to compete at Berlin, Busan, Cannes, Sundance, Toronto, or Venice, and then win the qualifying prize. Subsequently, filmmakers, producers, sales agents, festivals, and funders attached to African feature films may have one more reason to pursue main competition slots at these six festivals.
2818
2819International Feature Oscar submissions are due September 30.`},{slug:"oscars-festival-winner-path-non-english-films",title:"Oscars Add a Festival-Winner Path for Non-English-Language Films",category:"Policy",date:"May 1, 2026",summary:"The Academy released rules for the 99th Oscars, adding a second route into the International Feature Film category: winning a top prize at one of six designated festivals, including Cannes, Berlin, Venice, Toronto, Sundance, and Busan.",author:"Tambay A. Obenson",isPremium:!0,readTime:"4 min read",listenId:"oscars-festival-winner-path-non-english-films",headerImage:"/manus-storage/oscars_99th_rules_header_d464d4d8.png",content:`The Academy of Motion Picture Arts and Sciences released the rules for the 99th Oscars on May 1. The changes apply to films with qualifying theatrical releases between January 1 and December 31, 2026, with the ceremony scheduled for early 2027.
2820
2821The largest changes are to the International Feature Film category — historically the only realistic route into the Oscars for non-English-language films. Until now, only one path existed: a country's national selection committee submitted one film per year to the Academy, and any film not picked by its country was ineligible. The system has long been criticized for political interference in committee decisions, inconsistent committee organization across countries, and the absence of any functional submission body in many places, including much of Africa.
2822
2823Starting with the 99th Oscars next year, a non-English-language film can also qualify by winning a designated prize at one of six festivals: the Golden Bear at the Berlin International Film Festival, the Best Film Award at the Busan International Film Festival, the Palme d'Or at Cannes, the World Cinema Grand Jury Prize at Sundance, the Platform Award at the Toronto International Film Festival, or the Golden Lion at Venice.
2824
2825Essentially, top prizes at the "Big 5" film festivals, with Busan in South Korea as the outlier.
2826
2827Furthermore, under the old rules, the nominee was the submitting country, and the country accepted the award. Under the new rules, the film itself is the nominee, and the director accepts on behalf of the creative team, not the country. The director's name will appear on the statuette plaque after the film title and, where applicable, the country or region.
2828
2829The journey for African films seeking Oscar recognition can now also go through this new festival pathway, which requires winning a top prize at a European, North American, or Asian event.
2830
2831Several African countries with active Oscar selection committees declined to submit films for the 98th Academy Awards — notably, Kenya's selection committee found no eligible entr
2831ies, and Nigeria did not submit for the third time in five years. Under the old rules, a film not picked by its country had no other route. The new festival pathway now offers a second option, even if the requirements are stringent.
2832
2833Note that it doesn't change the language rule itself. To qualify for the International Feature category, a film's dialogue must still be more than 50 percent in a language other than English. The threshold has been a recurring obstacle for Anglophone African submissions — Nigeria's first entry, "Lionheart" (2019), was disqualified after the Academy determined that 11 minutes of Igbo in a 95-minute film fell short. The Academy later added Nigerian Pidgin to its list of accepted non-English languages but left the 50 percent rule in place.
2834
2835Changes to other categories include restricting the use of artificial intelligence (AI). Acting nominations are now limited to roles "credited in the film's legal billing and demonstrably performed by humans with their consent." Screenplays must be human-authored to be eligible in the writing categories. The Academy also says it can request more information from any submitter about how generative AI was used on a film.
2836
2837A separate acting rule change allows actors to receive multiple nominations in the same category for different performances, provided both place in the top five votes. The shift brings acting in line with how composers, casting teams, and other crafts are already treated.
2838
2839Several smaller technical changes were also approved. The Casting category will award up to three statuettes per win, up from two. The Cinematography shortlist is fixed at 20 films, replacing the previous range of 10 to 20. Makeup and Hairstyling voters must attend at least one of the two final branch roundtables to be eligible to vote in the preliminary round. All Academy members must view the three-minute before-and-after reels from the Visual Effects Bake-Off to be eligible to vote in the final round. The Original Song rules clarify eligibility for songs placed in the end credits.
2840
2841Submission deadlines begin on August 13, 2026, for animated, documentary, and live action shorts. General entries, Best Picture, animated features, and the Representation and Inclusion Standards entry form open September 17.
2842
2843International Feature submissions are due September 30.`},{slug:"afp-funding-desk-introduction",title:"Introducing: The African Film Press (AFP) Funding Desk",category:"Industry",date:"April 30, 2026",summary:"The AFP Funding Desk is a financing intelligence tool covering 98 verified instruments across 53 countries — national film funds, co-production mechanisms, location incentives, international grants, broadcaster acquisition vehicles, and equity funds.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"afp-funding-desk-introduction",headerImage:"/manus-storage/afp_funding_desk_header_82dc42a2.jpg",content:`In recent weeks, I've started sharing some of the tools we've been developing under the African Screen Intelligence (ASI) umbrella — a structured body of work designed to give professionals like you access to reliable data and intelligence related to Africa's screen sectors in a usable, actionable form.
2844
2845These are tools we've been using internally that we're now building into more accessible versions.
2846
2847You've already seen pieces of this. The Africa Streaming and Infrastructure Watch. The Co-Production Treaty Registry. The Project Pipeline Registry, which I opened to subscribers last week, and even "Ask Akoroko Premium," the Akoroko-specific research tool, which is a version of something more robust that lives inside ASI itself.
2848
2849Each of these is a component of a larger system — interlocked, cross-referenced, and designed to speak to one another within a single platform. Individually, they certainly have their use cases. Together, they're something else.
2850
2851The AFP Funding Desk is the latest piece.
2852
2853## What It Is
2854
2855The AFP Funding Desk is a financing intelligence tool covering 98 verified instruments across 53 countries — national film funds, co-production mechanisms, location incentives, international grants, broadcaster acquisition vehicles, equity funds, and new equity vehicles, with coverage across all 54 African countries and ke
2855y external sources in Europe, North America, and the Gulf.
2856
2857Each instrument comes with: funding ranges in USD, eligible formats and production stages, application cycles, eligibility requirements, access type (open-call, lab-based, relationship, or automatic), and a flag section that surfaces anything a professional needs to know before building a financing plan around a fund — operational breakdowns, governance issues, structural access limitations, critical deadlines, etc.
2858
2859This is version 1.0. It only gets more useful from here.
2860
2861## What You Can Do With It
2862
2863Filter by country, format, production stage, fund type, or grant size. Filters stack.
2864
2865Use the search bar to find funds by name, country, keyword, or any term that appears in a fund's eligibility or detail text.
2866
2867Click any fund in the left column to open its full record on the right — eligibility requirements, key facts, application cycle, contact information, compatibility chips showing which other funds it stacks with, and compatible external sources.
2868
2869Use the "Capital Stack Builder" to generate a layered financing advisory from your current filtered results. It organizes instruments across six layers — domestic anchor, pan-regional, international grants, incentives and rebates, broadcaster pre-sale, and equity — and flags relationship-access instruments that require direct engagement rather than open application. The "Capital Stack Builder" is static for this release. A more interactive version — where you can manually adjust the stack, add or remove instruments, and model different financing scenarios — lives inside ASI.
2870
2871A "Show closed funds" toggle surfaces instruments that are no longer accepting applications, for reference.
2872
2873And if all else fails, a "How to use?" button in the nav bar reopens the onboarding guide at any time.
2874
2875## What It Is Not
2876
2877The Funding Desk is not a comprehensive census of all financing mechanisms on the continent or beyond. Instruments with no verifiable public footprint are not included. Some funds — particularly newer equity vehicles and announced but not yet operational initiatives — are included with explicit flags indicating their status. Nothing goes in without a source trail.
2878
2879This is also not a guarantee of access.
2880
2881Funds change. Cycles open and close. Eligibility rules shift. The data reflects the most current verified information available as of April 2026 and will be updated on an ongoing basis.
2882
2883## Feedback
2884
2885The Funding Desk, the Project Pipeline Registry, the Treaty Registry, the Streaming Tracker, and Ask the Akoroko Archive are now being released as individual tools — imperfect — so I can see how professionals like you use them.
2886
2887We've been in the trenches, so to speak, using each tool in raw form while developing them for public presentation in ways that make sense. It was time to start opening them up to other real-world usage, and your early feedback shapes how these tools evolve.
2888
2889We're certainly making revisions continuously. Outside input from people with real industry knowledge accelerates that considerably.
2890
2891Reply directly to this email whenever you have any usage thoughts to share.
2892
2893## One More Thing
2894
2895Regrettably, the Funding Desk is desktop only.
2896
2897It's not mobile-friendly, and given the interface's two-column layout, filter stack, detail panel, and capital stack builder, a mobile version would be difficult to build. We'll get there. For now, open it on a laptop or desktop.
2898
2899This is subscriber-only. There is no public option planned at this time.
2900
2901To reiterate: this is also version 1.0.
2902
2903However, it still may not be immediately clear how to navigate the feature. Once again, a "How to use?" button in the nav bar reopens the onboarding guide at any time.
2904
2905The link: [https://africanfilmpress.com/funding-desk](https://africanfilmpress.com/funding-desk)
2906
2907Password: PeanutButterIceCream
2908
2909Reply to this email with any access problems.`},{slug:"durban-filmmart-funding-pressures-q4-calendar",title:"Funding Pressures Push Durban FilmMart to Crowded Q4 Calendar",category:"Industry",date:"April 29, 2026",summary:"The Durban FilmMart Institute has moved the 17th edition of its annual market from July to 9–12 October 2026, citing funding challenges. The move joins an increasingly crowded late-year calendar for African film festivals and content markets.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"durban-filmmart-funding-pressures-q4-calendar",headerImage:"/manus-storage/durban_filmmart_header_8a327adb.png",content:`The Durban FilmMart Institute has moved the 17th edition of its annual market from July to 9–12 October 2026, citing funding challenges. The institute, a non-profit, says the viability of the July dates was considerably impacted by the global financial crisis affecting film and arts funding, major changes in key funding partnerships, and the ongoing reduction of local year-on-year funding opportunities — pressures that affect planning and strategic growth, not just one edition.
2910
2911Director Magdalene Reddy stated: "Rescheduling the market has been a difficult decision, but one that the board and management had to take because we remain committed to the pan-African film ecosystem we serve. Despite the uncertainty we face with limited long-term, multi-year support for the annual event, we believe that the space we create for African film professionals must exist and that it is essential to those who believe in the power and impact of African independent film. We encourage all those who never miss a DFM to move with us and join us in October for what they have come to cherish."
2912
2913The financial conditions Reddy describes are certainly not unique to the DFMI and have been documented across the global festival sector in recent years.
2914
2915In 2024 (pre-Akoroko Premium), I covered the UK's Independent Cinema Office (ICO) survey of 49 film festivals from around the world for its "Financial Health of Global Film Festivals" report. Results presented at the International Film Festival Network summit at New Horizons Film Festival in Poland in July 2024 found that 85% of respondents needed further public funding to stay operational; 37% said they could continue operating for a year or less under current conditions; 69% cited rising costs as their main worry; and 25% had made redundancies in the past three years.
2916
2917A few notable announced adjustments have included:
2918
2919- In Toronto, Canada, Hot Docs faced near-collapse in 2024. Ten programmers exited 
2919weeks before the April festival; president Marie Nelson sought emergency support and warned the 2024 edition could be the festival's last; the federal Canadian budget tabled on 16 April excluded the festival entirely; the flagship Hot Docs Ted Rogers Cinema temporarily closed; and Nelson resigned in July 2024. The 2025 edition went ahead with a 14% spending reduction, around CAD $1.6 million in cuts, and a programme of 113 features — down from 168 in 2024 and 214 in 2023.
2920
2921- The Toronto International Film Festival (TIFF) lost its longtime sponsor, Bell, at the end of 2023 and laid off 12 full-time staff in December 2023; the federal Canadian budget tabled in April 2024 allocated CAD $23 million over three years to TIFF for the launch of a new content market in 2026.
2922
2923- London Screenings, the UK's 21-year-old international showcase, will not return after its 2025 edition following the BFI's withdrawal of its £80,000 contribution under the new 2026–29 UK Focus Fund.
2924
2925- Locarno's Open Doors talent-development programme lost 25% of its Swiss government funding from 2025; the funding line is being phased out and will end entirely by 2029 as part of Switzerland's wider cultural reductions, with Visions du Réel also affected.
2926
2927- Rotterdam secured a four-year settlement covering its 2026–29 editions, though Dutch foundations now face heavier application loads because of government and municipal funding reductions across the Netherlands.
2928
2929And others...
2930
2931In a May 2024 survey of the wider picture, Deadline named festivals seeing what it described as flashpoints or upheaval: Sundance, Berlin, Hot Docs, Thessaloniki, IDFA, El Gouna, Cairo, Busan, and Odessa, among others. The disruption appears to have continued into 2026.
2932
2933**A More Crowded Q4 Calendar for African Industry Events**
2934
2935Durban FilmMart's move joins an increasingly crowded late-year calendar for African film festivals, content markets, and project-development activity. The 2026 edition is now scheduled for 9–12 October.
2936
2937- One week later, the El Gouna Film Festival in Egypt opens its 2026 edition, running 15–23 October.
2938
2939- MIP Africa, the film, television, and digital content market within FAME Week Africa in Cape Town, South Africa, runs 28–30 October.
2940
2941- AFRIFF, the Africa International Film Festival in Lagos, Nigeria, lists 1–7 November for its 2026 edition.
2942
2943- Marrakech International Film Festival in Morocco is scheduled for 20–28 November, with its Atlas Workshops industry program.
2944
2945- Mashariki African Film Festival in Kigali, Rwanda, is listed for 23–29 November, with MashaRket operating as its Kigali International Content Market.
2946
2947- S16 (Surreal16) Film Festival in Lagos, Nigeria, is set for 3–6 December with plans for more formal market-related events.
2948
2949- The JCC, the Journées Cinématographiques de Carthage, the long-running Arab and African cinema festival held in Tunis, Tunisia, is part of the late-year African festival calendar, usually unfolding in mid-December. Its 2026 dates have yet to be announced.
2950
2951- Finally, the Red Sea International Film Festival in Jeddah, Saudi Arabia, which runs 3–12 December and continues to attract African participation via the Red Sea Fund's financing and project development cycles for Arab, African, and Asian filmmakers.
2952
2953Programming for the rescheduled Durban FilmMart continues as planned: the Pitch and Finance Forum for live action fiction, documentary, and animation; Talents Durban; and the Industry Programme of panels, masterclasses, and think tanks.
2954
2955The 2026 theme is "Shifting Worlds: Turning Towards Ourselves," which the institute attributes to Ousmane Sembène: "Why be a sunflower and turn toward the sun? I, myself, am the sun." Sessions will cover alternative funding, distribution models, equitable co-production, and partnerships.
2956
2957Delegate registration and full programme details will be announced in due course.`},{slug:"tunisia-archive-push-continental-preservation-turn",title:"Tunisia's Archive Push Adds Weight to a Continental Preservation Turn",category:"Research",date:"April 28, 2026",summary:"Hedi Jellab, Director General of Tunisia's National Archives, reports 3.6 million documents digitized from a holding of 5.2 million boxes, with a film restoration and cinematographic digitization laboratory in development. The announcement is part of a broader pattern of state-led archival work across the continent.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"tunisia-archive-push-continental-preservation-turn",headerImage:"/manus-storage/tunisia_archive_header_34682dee.jpg",content:`Hedi Jellab, Director General of Tunisia's National Archives, told Radio Nationale on April 22 that the institution has digitized 3.6 million documents from a holding of 5.2 million boxes, with a dedicated film restoration and cinematographic digitization laboratory in development. Ecofin Agency reported the announcement on April 24, 2026.
2958
2959Half a million boxes have been digitized to date, including roughly 400,000 documents and files from the beylical period preceding French occupation (roughly 1700–1900). A national inventory has identified more than 2.3 million audiovisual documents, 2 million photographs, and 43,000 sound recordings. Rare pieces date to the 16th century.
2960
2961The collections receive daily transfers from public bodies. 9,000 boxes were moved into the holdings in 2024 alone; between 2000 and 2024, more than 231,000 boxes were integrated.
2962
2963Jellab used the Radio Nationale appearance to restate the legal prompt. Tunisian law protects administrative documents. Any agent found guilty of deliberately destroying or negligently managing archives faces criminal penalties. The National Archives operates inspection programs across ministries and public services with binding recommendations attached.
2964
2965The April announcement follows a December 13, 2025, Radio Nationale appearance in which Jellab reported receiving 127 donations in 2025 from individuals, associations, and organizations, and 2.5 million documents digitized — about 20% of holdings at that point.
2966
2967Akoroko has tracked what appears to be an increase in state-led archival work across the continent over the past 24 months:
2968
2969- Egypt has built the Heritage Restoration Center for Audio-Visual Media in 6th of October City and a new Cinema City digital lab in partnership with the Armed Forces Engineering Authority, with the 46th Cairo International Film Festival presenting more than 20 restored titles in November 2025.
2970
2971- Algeria's National Cinema Sessions, presided over by President Abdelmadjid Tebboune in Algiers in January 2025, named digitization and heritage as one of five core workshops and committed to digitizing film archives as one of four specific government initiatives.
2972
2973- Namibia in October 2025 launched its first coordinated Film Preservation Project, led by the Museums Association of Namibia, the National Archives, and the Namibia Film Commission, and funded by the Carl Schlettwein Stiftung in Basel.
2974
2975- Burkina Faso's African Film Library of Ouagadougou holds more than 12,000 works across formats. In June 2025, a tri-national agreement with the Cinémathèque québécoise and Senegal's IFAN-Cheikh Anta Diop brought nearly 500 digitized Betacam tapes of Eritrean and Rwandan conflict footage under the Cinémathèque Africaine's stewardship. In March 2025, the government created the Agence burkinabè du cinéma et de l'audiovisuel (ABCA), a new state agency overseeing FESPACO and the national film school.
2976
2977- In Nigeria, National Council for Arts and Culture Director-General Obi Asika drew public attention to the FESTAC '77 collection at CBAAC in Lagos in July 2024 — 1,200 reels of 16mm film, plus thousands of journals, records, and photographs. From October 2024 through August 2025, the Goethe-Institut "Post Memory, Post Archive" fellowship took 11 local filmmakers through the National Film, Video, and Sound Archives in Jos, the Institute of African Studies Archives in Ibadan, the National Archives in Abuja, and the Nigerian Film Corporation (NFC) in Lagos. In February 2026, the NFC formalized a partnership with Cinémathèque Suisse and Arsenal Institute for Film and Video Art Berlin to digitize "Kulba Na Barna" (1992), a feature directed by pioneering Hausa-language filmmaker Adamu Halilu, extending an earlier restoration of his "Shaihu Umar" (1976).
2978
2979- The French Institute of South Africa and Electric South have run "Futures_Past" since July 2025, an XR program now in production with six archive partners across three countries — !Khwa ttu San Culture & Education Centre (Yzerfontein, South Africa), the GALA Queer Archive (Johannesburg), Iziko Museums (Cape Town), the National Film, Video, and Sound Archives (Pretoria), the Royal Archives (Matsieng, Lesotho), and Music Crossroads Malawi (Lilongwe) — with public exhibitions scheduled across South Africa, Lesotho, and Malawi from September to December 2026.
2980
2981Tunisia's announcement is broader than all of the above — the audiovisual material is one part of a much larger whole.
2982
2983Furthermore, on the cinematographic front, during a colloquium that Jellab convened at the Archives Nationales in October 2025 — *"Patrimoine audiovisuel tunisien: une mémoire menacée, des défis et des stratégies de sauvegarde"* ("Tunisian Audiovisual Heritage: A Memory Under Threat, Challenges, and Preservation Strategies") — he reported that the Archives had collected 73 films from public institutions and 535 complete films, plus 68 unfinished films, from private institutions, both worldwide.
2984
2985The Archives Nationales is just one of several state holders of Tunisia's audiovisual material. The Presidency holds the largest collection, with more than 231,000 video recordings.
2986
2987Meanwhile, at the Bibliothèque Nationale Tunisienne sit about 23,000 reels.
2988
2989**So What?**
2990
2991I continue to draw attention to these archival efforts — particularly those organized by governments — in part because African screen heritage has often been described 
2991in terms of loss: films and recordings decayed, dispersed across institutions outside the continent, or held beyond easy access for African researchers, filmmakers, programmers, educators, and audiences.
2992
2993Here is recent evidence that pushes back against that narrative while supporting the idea that a broader structural shift may be underway.
2994
2995Tunisia's announcement belongs to a wider set of institutional activities that have been visible since I launched this platform two years ago: restitution movements, restoration projects, archive training, and public programming are making selected African screen materials available for research, exhibition, education, and, in some cases, formal rental — and with an increasing consistency that feels new.`},{slug:"british-council-film-lab-six-takeaways",title:'Six Takeaways From the British Council Film Lab "Financing and Distributing" Conversation I Moderated',category:"Industry",date:"April 28, 2026",summary:"On April 27, I moderated a British Council Film Lab conversation on financing and distributing films in the global market. The panel brought together Sheila Nortley (Producer, Supacell; Executive Producer, Osun Group), Tendeka Matatu (Ex-Head of Africa Film, Netflix; Founder, Ten10 Films), and Melissa Adeyemo (Producer, Eyimofe; Founder, Ominira Studios). Six takeaways from the conversation.",author:"Tambay A. Obenson",isPremium:!0,readTime:"7 min read",listenId:"british-council-film-lab-six-takeaways",headerImage:"/manus-storage/british-council-film-lab-six-takeaways_22e2daea.jpg",content:`On April 27, I moderated a British Council Film Lab — Creative Hustle conversation titled *From Idea to Audience: Financing and Distributing Films in the Global Market*. The session was delivered in partnership with EbonyLife Media and Iconic Steps.
2996
2997The panel brought together three practitioners with direct experience across the full financing and distribution chain:
2998
2999- **Sheila Nortley** — Producer of *Supacell* (Netflix); Executive Producer at Osun Group
3000- **Tendeka Matatu** — Former Head of Africa Film at Netflix; Founder of Ten10 Films
3001- **Melissa Adeyemo** — Producer of *Eyimofe (This Is My Desire)*; Founder of Ominira Studios
3002
3003The conversation ran for approximately 90 minutes and covered co-production structures, streaming platform relationships, festival strategy, and what it actually takes to get an African film in front of a global audience. Here are six takeaways.
3004
3005**1. The gap between financing and distribution is still the defining structural problem.**
3006
3007All three panellists returned to a version of the same observation: it is easier to raise money to make a film than it is to guarantee that the film will reach an audience once made. Tendeka Matatu, drawing on his time leading Netflix's Africa film strategy, noted that the platform's commissioning decisions were shaped as much by distribution confidence as by creative quality — the question was always whether a title could travel, and to where. Sheila Nortley described navigating this from the production side on *Supacell*, where the Netflix relationship was established early enough to shape both the budget and the delivery expectations. For independent producers without that anchor, the gap remains wide.
3008
3009**2. Co-production is a financing tool, not just a creative one — and most African producers are underusing it.**
3010
3011Melissa Adeyemo was direct on this point. *Eyimofe* was a Nigerian-Italian co-production, and the Italian partnership was not incidental — it unlocked financing that would not have been available through a purely Nigerian structure. The panel agreed that African producers frequently approach co-production as a creative or reputational arrangement rather than a financial mechanism, and that this limits what they can build. Tendeka Matatu added that European and North American co-producers are increasingly interested in African stories but often cannot find African partners who have structured their companies to receive that kind of investment.
3012
3013**3. Festival strategy and distribution strategy are not the same thing — and conflating them is costly.**
3014
3015A recurring theme was the tendency to treat a strong festival run as a distribution outcome rather than a distribution starting point. Sheila Nortley described the festival circuit as a visibility tool that creates conditions for distribution conversations — not as distribution itself. Tendeka Matatu noted that several African films with significant festival profiles had struggled to convert that visibility into sustainable revenue, partly because the distribution infrastru
3015cture to support the conversion was not in place before the festival run began. The panel's consensus: distribution planning should begin before the film is finished, not after the festival premiere.
3016
3017**4. Streaming platforms are not a single category — and African producers need to understand the differences.**
3018
3019Tendeka Matatu was careful to distinguish between the different acquisition and commissioning models operating in the market. A platform commissioning original content operates differently from a platform acquiring finished films, which operates differently again from a platform licensing content for a specific territory. Each relationship requires a different negotiating posture, a different rights structure, and a different understanding of what success looks like. African producers who approach all streaming platforms with the same pitch and the same expectations are leaving value on the table.
3020
3021**5. The audience question is underasked at the financing stage.**
3022
3023Melissa Adeyemo raised a point that generated significant discussion: most financing conversations focus on the creative package and the budget, and very few ask the audience question directly — who is this film for, where do they live, how will they find it, and what will they pay to see it? She argued that producers who can answer those questions with specificity are in a stronger position with both institutional funders and commercial partners. Sheila Nortley agreed, noting that the *Supacell* pitch was strengthened by a clear articulation of the audience the series was designed to reach.
3024
3025**6. The infrastructure gap is real, but it is not uniform — and the opportunities are not where most people are looking.**
3026
3027The panel closed on a note of qualified optimism. Tendeka Matatu observed that the distribution infrastructure for African film is genuinely improving in some markets — not uniformly, and not fast enough, but measurably. The opportunities that are emerging are often not in the markets that receive the most attention. Melissa Adeyemo pointed to the growth of local digital platforms in West and East Africa as an underreported development, and to the diaspora audience as a consistently underserved market that several producers are now beginning to address directly. Sheila Nortley noted that the producers who are building sustainable careers are the ones who are treating audience development as a core competency, not an afterthought.
3028
3029*The British Council Film Lab — Creative Hustle programme is delivered in partnership with EbonyLife Media and Iconic Steps.*`},{slug:"afp-african-film-pipeline-registry",title:"Introducing: The AFP African Film Pipeline Registry",category:"Data",date:"April 26, 2026",summary:"The AFP African Film Pipeline Registry is a structured record of African feature films and series in development, financing, production, or post-production. Akoroko subscribers get first access to a 259-project preview slice of the full 1,000-project internal registry.",author:"Tambay A. Obenson",isPremium:!0,readTime:"5 min read",listenId:"afp-african-film-pipeline-registry",headerImage:"/manus-storage/afp-pipeline-registry-header_f71a1644.png",content:`I have teased this registry to subscribers over the past several months as part of the larger African Screen Intelligence work taking shape inside African Film Press (AFP) — including the streaming and pay-TV infrastructure tracker, the co-production treaty tracker, the in-development financing map, and AFP Dispatch, the news product now being developed for industry professionals who need African screen-sector information in a more structured, easily-digested form.
3030
3031Deciding when and how to introduce the registry has not been simple. I could keep working toward a near-perfect version, or open a first slice now, let subscribers use it, and use the feedback to improve the platform.
3032
3033Lately, I've leaned toward the latter: get these tools into use, see what comes back, and keep improving them with consistency, verification, and more complete source trails.
3034
3035**What It Is**
3036
3037The AFP African Film Pipeline Registry is a structured record of African feature films and series in development, financing, production, or post-production — in other words, projects with traction that have not yet premiered.
3038
3039Here, "African" means a project with a primary African country, an African director, an African producer, or a confirmed African production connection. Some diaspora projects are included where the African connection is central to the project's production, subject, or financing.
3040
3041The full internal registry now contains around 1,000 projects and comes with features that industry professionals across key roles have told me would be useful in this context. Today, I'm opening up roughly a quarter of it — 259 records — and some of the features, to Akoroko subscribers first, because you are the readers most likely to understand both the value of the information and the gaps that still need to be filled.
3042
3043To be sure, the registry is not meant to be a comprehensive census. What's especially unaccounted for currently are projects with little to no digital footprint. Those tend to be within the entirely homegrown direct-to-local-streamer (and platforms like YouTube) pipeline, which are the most underweighted parts of the picture. We still intend to capture as many of those as possible.
3044
3045**What You Can Do With It**
3046
3047As its name implies, see what's coming and what stage each is currently in. It's not built to be static. It's a living, breathing apparatus — partly automated; partly manual input.
3048
3049There is a help modal that walks the user through how this preview version works.
3050
3051Filter by project stage, format, track record, country, sales agent, or funder.
3052
3053Combine filters — they stack.
3054
3055Just note that there's still cleaning up being done. For example, the funder filter alone holds around 173 options, from AFAC and the WCF to Canal+, the CNC's Cinéma du Monde, the IDFA Bertha Fund, the Hubert Bals Fund, the Red Sea Fu
3055nd, the NFVF, the Sundance Institute Documentary Fund, the Fonds Image de la Francophonie, and most of the institutional money in African feature finance.
3056
3057However, there are duplicates and improperly captured entities that will be tidied up.
3058
3059Search across titles, directors, producers, countries, synopses, pipeline stages, and source text.
3060
3061A live counter shows how many projects match.
3062
3063A "★ Strongest Prospects" filter surfaces the highest-scoring records across all stages, weighted by our own internal methodology, which assigns grades to the caliber of funders attached, filmmaker track records, notable attachments, and more. This is not a judgment of artistic quality. It measures visible industry traction based on public evidence.
3064
3065Click any row to open the full project detail — director, producers, co-producers, writers (where set), countries, language, attached funders, sales agent, distributor, industry support credits, pipeline status, source attribution, primary contact where available.
3066
3067For records that score high enough to appear under Strongest Prospects, the score breakdown is visible too.
3068
3069Again, there is a help modal that walks the user through how this mostly works.
3070
3071**Methodology**
3072
3073Each record holds the project's title, director, producer or producers, primary and co-producing countries, language, format, current pipeline stage, attached funders, industry support credits, and source attribution for every claim.
3074
3075If a claim can't be traced to something we trust — ourselves, direct communication from filmmakers/producers/etc, an interview, a market placement page (Cinando, for example), a fund announcement, or a verifiable trade-press citation — it doesn't go in.
3076
3077When two sources disagree, the more authoritative one prevails, and the disagreement is noted. Where a source is shaky, the field stays empty.
3078
3079The tradeoff: the registry is, by design, a few weeks to a few months behind the genuinely most current state of any project. But I don't think any system could always be entirely current on the day it's accessed.
3080
3081**Improve the Registry**
3082
3083This first preview is subscriber-only — just as the fuller, more interactive registry will be. There is no open public version planned right now.
3084
3085Consider this an experiment as well. Some entries are there to test how subscribers read, challenge, and improve the data. If you see something in the 259-project slice that's wrong, stale, missing a funder, has the wrong stage, or has someone attached who isn't attached anymore — tell me.
3086
3087Reply directly to this email with corrections, source links, project updates, or missing information.
3088
3089More of the registry will open to subscribers in stages as verification continues, source trails improve, and I see how this first release is used.
3090
3091The link: https://africanfilmpress.com/pipeline-registry
3092
3093Password: PeanutButterIceCream`},{slug:"british-council-film-lab-april-27",title:"I'm Hosting a British Council Film Lab Conversation on Film Financing and Global Distribution, April 27",category:"Industry",date:"April 23, 2026",summary:"On April 27, Tambay A. Obenson will host a British Council Film Lab — Creative Hustle panel conversation on financing and distributing films in the global market, joined by Sheila Nortley (Supacell, Osun Group), Tendeka Matatu (Ten10 Films, ex-Netflix Africa), and Melissa Adeyemo (Eyimofe, Ominira Studios). Delivered in partnership with EbonyLife Media and Iconic Steps.",author:"Akoroko Intelligence",isPremium:!1,readTime:"4 min read",listenId:"british-council-film-lab-april-27",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/KjgaYryiBheQQWoO.jpg",content:`On Sunday, April 27, Tambay A. Obenson — founder of Akoroko LLC — will host a British Council Film Lab panel conversation titled *From Idea to Audience: Financing and Distributing Films in the Global Market*. The session is part of the British Council's Creative Hustle series and will be delivered in partnership with EbonyLife Media and Iconic Steps.
3094
3095**The Panellists**
3096
3097The conversation brings together four practitioners with direct experience across production, financing, and distribution in African and diasp
3097ora markets:
3098
3099- **Sheila Nortley** — Producer of *Supacell* (Netflix UK) and Executive Producer at Osun Group. Nortley is one of the most prominent Black British producers working in the streaming era, with *Supacell* representing a landmark commission for African diaspora storytelling on a global platform.
3100
3101- **Tendeka Matatu** — Founder of Ten10 Films and former Head of Africa Film at Netflix. Matatu oversaw Netflix's African original content strategy during its most active commissioning period on the continent, including *Blood & Water*, *Savage Beauty*, and *Young, Famous & African*.
3102
3103- **Melissa Adeyemo** — Producer of *Eyimofe (This Is My Desire)* and Founder of Ominira Studios. *Eyimofe* won the Tiger Award at the International Film Festival Rotterdam in 2021 and remains one of the most internationally recognised Nigerian independent films of the past decade.
3104
3105**What the Conversation Will Cover**
3106
3107The session is framed around the full journey from development to audience — the financing structures available to African and diaspora filmmakers, the distribution landscape across theatrical, streaming, and broadcast windows, and the strategic decisions that determine whether a film reaches a global audience or remains confined to festival circuits.
3108
3109The panel will draw on direct experience across the value chain: Nortley from the streaming commission side, Matatu from the platform acquisition side, and Adeyemo from the independent production and international sales side.
3110
3111**Context**
3112
3113The British Council Film Lab series is one of the few structured professional development programmes that consistently brings African and diaspora film practitioners into conversation with international industry counterparts. The Creative Hustle strand focuses on the business and craft dimensions of filmmaking — financing models, distribution strategy, and audience development — rather than purely creative development.
3114
3115Delivery partners EbonyLife Media and Iconic Steps bring Nigerian and UK-based industry networks to the event's reach.
3116
3117*The session takes place on April 27, 2026. Registration details available via the British Council and EbonyLife Media channels.*`},{slug:"road-home-canal-studiocanal-south-africa",title:'"The Road Home" Gives the Canal+/Studiocanal South Africa Pipeline Its First Public Title',category:"Industry",date:"April 23, 2026",summary:"A South African production titled The Road Home has emerged as the first publicly identified title from the Canal+/Studiocanal co-production pipeline in South Africa. The project marks a concrete output from the Canal+ Group's expanded African content strategy following its acquisition of MultiChoice.",author:"Akoroko Intelligence",isPremium:!0,readTime:"5 min read",listenId:"road-home-canal-studiocanal-south-africa",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/yjyCNMwjsireUGSX.jpg",content:`A South African production titled *The Road Home* has emerged as the first publicly identified title from the Canal+/Studiocanal co-production pipeline in South Africa — a pipeline that has been in development since Canal+ Group's acquisition of MultiChoice and the subsequent deepening of its African content strategy.
3118
3119The project's cast includes three prominent screen figures whose involvement signals the scale of the production: a leading South African actress known for her work across international and local productions, a South African actor with a significant presence in both film and television, and a European actor whose attachment suggests the international co-production dimension of the project.
3120
3121**The Canal+/Studiocanal South Africa Pipeline**
3122
3123Studiocanal — the production, distribution, and sales subsidiary of Canal+ Group — has been building a co-production framework in South Africa as part of Canal+'s broader African content strategy. The framework is designed to produce content that can travel across Canal+'s global distribution network, from its African pay-TV footprint (now including the MultiChoice/DStv subscriber base) to its European theatrical and streaming windows.
3124
3125South Africa is the anchor market for this pipeline for several reasons: it has the continent's most developed production infrastructure, an established co-production treaty with France (the primary Canal+/Studiocanal home market), a significant English-language production sector that reduces distribution friction in international markets, and a talent pool with existing international credits.
3126
3127**Significance**
3128
3129The emergence of *The Road Home* as a named title is significant for several reasons:
3130
31311. **It is the first concrete output** from a pipeline that has been discussed in strategic terms but had not yet produced a publicly identified project.
3132
31332. **The cast configuration** — South African leads with a European co-star — is consistent with the co-production treaty model, where a minimum percentage of creative and financial participation from each territory is required to access treaty benefits and cross-border funding.
3134
31353. **The timing** coincides with Canal+ Group's consolidation of its African assets following the MultiChoice acquisition, and with Studiocanal's stated intention to increase African co-productions as part of its international content slate.
3136
3137**What This Means for the South African Industry**
3138
3139For South African producers, the Canal+/Studiocanal pipeline represents one of the few routes to a fully-financed co-production with guaranteed international distribution across both African and European windows. The French co-production treaty provides access to CNC support mechanisms in France, which can significantly improve a project's financing structure.
3140
3141*The Road Home* is the first title to make this pipeline visible. Whether it is followed by additional titles in the near term will indicate whether the pipeline is operating as a systematic programme or as a one-off co-production.
3142
3143*Sources: Industry reports, April 2026.*`},{slug:"morocco-new-cinema-law",title:"Morocco's New Cinema Law Lands as the Continent Continues to Rewrite Its Film Rulebook",category:"Policy",date:"April 21, 2026",summary:"Morocco has enacted four ministerial orders completing the legal framework under Law No. 18.23 on the cinematographic industry. The orders, published in Official Bulletin No. 7496 on 2 April 2026, cover production support, co-production criteria, cinema classification, and the reorganisation of the Centre Cinématographique Marocain.",author:"Akoroko Intelligence",isPremium:!0,readTime:"7 min read",listenId:"morocco-new-cinema-law",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/LuwNlwSwoBSDBfss.jpg",content:`On 14 April 2026, the Centre Cinématographique Marocain (CCM) issued a communiqué confirming the completion of the legal framework governing Morocco's cinematographic industry. Four ministerial orders from the Minister of Youth, Culture and Communication were published in Official Bulletin No. 7496 on 2 April 2026, fulfilling the implementing texts required under Law No. 18.23 on the cinematographic industry and the reorganisation of the CCM — promulgated by Dahir No. 1.24.67 on 18 Joumada II 1446 (20 December 2024).
3144  
3145  The CCM communiqué, dated 14 April 2026, describes the four orders as completing *"l'arsenal juridique encadrant l'industrie cinématographique"* — the legal arsenal governing the cinematographic industry.
3146  
3147  **What Law No. 18.23 Does**
3148  
3149  Law No. 18.23 is a comprehensive overhaul of Morocco's cinema legislation. It replaces the previous legal framework governing the CCM and the film industry, updating the regulatory basis for production support, co-production, cinema classification, and the institutional structure of the CCM itself. The law was signed into force in December 2024 after a legislative process that had been in motion for several years.
3150  
3151  The four ministerial orders published in April 2026 are the implementing texts — the regulations that give the law operational effect. Without these orders, the law's provisions could not be applied in practice. Their publication closes the gap between the law's promulgation and its enforcement.
3152  
3153  **The Four Orders**
3154  
3155  The CCM communiqué does not enumerate the four orders by title in the excerpt available, but based on the scope of Law No. 18.23 and the CCM's institutional mandate, the orders are understood to cover:
3156  
3157  1. **Production support criteria** — the conditions under which Moroccan and foreign productions qualify for CCM financial support, including the advance on receipts (*avance sur recettes*) scheme.
3158  2. **Co-production rules** — the criteria for official co-productions, including the minimum Moroccan participation thresholds required to access treaty benefits.
3159  3. **Cinema classification** — the system for rating and classifying films for public exhibition, including age restrictions and content categories.
3160  4. **CCM reorganisation** — the internal structure, governance, and operational mandate of the Centre Cinématographique Marocain under the new law.
3161  
3162  **Context: Morocco's Position in African Film Policy**
3163  
3164  Morocco has one of the most developed institutional frameworks for cinema on the African continent. The CCM, established in 1944 and restructured multiple times since independence, administers production funding, manages the national film ar
3164chive, oversees co-production treaties, and regulates the theatrical exhibition sector. Morocco's *avance sur recettes* scheme — modelled on the French CNC system — has been a primary financing mechanism for Moroccan productions for decades.
3165  
3166  The country's box office reached MAD 127 million ($12.7 million) in 2024, a 42.7% year-on-year increase from 2023's MAD 89 million, according to CCM's Bilan 2024. Total admissions reached 2,181,521 in 2024.
3167  
3168  Morocco is also a significant co-production partner for European and African productions, with active treaties with France, Italy, Spain, Belgium, and several other countries. The update to the co-production rules under Law No. 18.23 will affect how those treaties are applied and what Moroccan participation thresholds look like going forward.
3169  
3170  **Continental Significance**
3171  
3172  Morocco's legislative update is part of a broader pattern across the continent. In the past 18 months, Nigeria has announced a new creative sector fund framework, Kenya has advanced regulatory reforms to its film sector, and Côte d'Ivoire has expanded the mandate of ONAC-CI. The completion of Morocco's legal framework is the most structurally significant of these updates — it is a full legislative overhaul with implementing regulations, not a policy announcement or a fund launch.
3173  
3174  For co-producers, distributors, and financiers working with Moroccan partners, the publication of the four ministerial orders means the new rules are now in effect. The CCM is expected to publish updated application guidelines and support criteria in the coming weeks.
3175  
3176  *Source: Centre Cinématographique Marocain communiqué, 14 April 2026. Official Bulletin No. 7496, 2 April 2026.*`},{slug:"marche-du-film-2026-africas-conference-presence",title:"Marché du Film 2026: Africa's Conference Presence",category:"Industry",date:"April 20, 2026",summary:"The full Marché du Film 2026 conference schedule is live. Here are all the African-connected sessions, by day — from Focus on Africa to the WIFT Africa delegation, the Muganga case study, Arab Cinema Center panels, and two Yetu Unlimited events outside the official programme.",author:"Akoroko Intelligence",isPremium:!0,readTime:"6 min read",listenId:"marche-du-film-2026-africas-conference-presence",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/AgNIkcqUgKzNTTPU.jpg",content:`The full schedule for the Marché du Film 2026 programme, which runs May 12–20 alongside the Cannes Film Festival, went live today. Among the over 250 industry events published across the full schedule, African participation includes sessions covering film business, producer networking, financing, and production services. Here are the sessions by day.
3177  
3178  Note that the published schedule currently does not include full descriptions or speaker details for every event.
3179  
3180  **May 13 — Focus on Africa**
3181  
3182  A film business conference, The Viewpoint, Léron, presented by NIFS at Cannes in association with TransPerfect Media, Nile Media Group, CACOP, and Animax FIB Studios. The combination of those five organisations puts Nollywood distribution infrastructure, West African animation, global post-production services, and a pitching platform for African projects in the same conversation.
3183  
3184  **May 14 — Producers Network: WIF Africa / WIFT Africa Delegation**
3185  
3186  Women in Film Los Angeles (WIFLA) and Women in Film and Television Africa (WIFT Africa) are presenting sponsors of the Producers Network at the Marché du Film and have also invited five established African women producers to participate across six days of programming: Shirley Frimpong-Manso (Ghana), Nicolette Ndigwe Kalu (Nigeria), Beywangondu Nkenya, Bonyiwe Solani (South Africa), and Alexandra Amon (Côte d’Ivoire). Dr. Inya Lawal is president of WIFT Africa.
3187  
3188  **Impact: Producing the Future — Innovative Financing Models for African Cinema**
3189  
3190  The panel brings together a continental documentary fund, a Pan-African institutional financier, and an East African producer-entrepreneur working on sustainable creative ecosystems. Together, they capture project financing and the longer-term business conditions needed for screen activity to continue and expand.
3191  
3192  **Producers Network: Financing African Film for Impact — Muganga Case Study**
3193  
3194  Presented by CanX Creations, the session uses *Muganga (The One Who Treats)* as its case study. Directed by Marie-Hélène Roux and starring Isaac de Bankolé as N
3194obel Peace Prize Laureate Dr. Denis Mukwege — the Congolese surgeon who has treated over 80,000 survivors of sexual violence in the Eastern DRC — the film was executive produced by Angelina Jolie, co-financed by CanX alongside Canal+, France 3 Cinéma, France Télévisions, CNC, and others, won three awards at the Angoulême Francophone Film Festival, and is handled by WME Independent for world sales.
3195  
3196  **May 14–17 — Arab Cinema Center Sessions**
3197  
3198  Sessions scheduled across four days cover commercial production, co-production, women in leadership, and industry growth across the Arab world. The sessions are not broken down by country, so it is difficult to say with precision which nations will be in the room. Based on past editions, North African and broader Arab-African participation in these conversations is typical.
3199  
3200  **Outside the official schedule — Yetu Unlimited**
3201  
3202  Two additional conference events connected to the Pan-African film studio Yetu Unlimited are scheduled for May 14 and 15, outside the official Marché conference pages.
3203  
3204  On **May 14**, the Nomadic Film Space networking lunch takes place at La Plage de Palme from 11:30 to 13:30. Sponsored by France’s CNC and other institutional partners, it brings together a select group of producers and financiers for a moderated conversation about what smart and impactful investment looks like across African screen sectors.
3205  
3206  On **May 15**, the African and Diasporic Audience Development Think Tank takes place at Hotel Canopy from 10:00 to 12:00, by invitation only, with the support of the International Emerging Film Talent Foundation (IEFTF), an Athens-based non-profit that funds grants to emerging filmmakers via partner festivals and programmes. It is the second iteration of a travelling workshop initiated in 2025, with a pilot edition held at Mostra de Cinemas Africanos 
3206in Salvador, Brazil. The workshop combines market research with audience design methods intended to grow revenue-generating audiences for African cinema. The Cannes session will present findings from the Brazil pilot and outline the platform’s future direction.
3207  
3208  Yetu Unlimited was founded in 2023 by Yanis Gueye, Melissa Adeyemo, Carol Kiyoko, Ike Yemo, and Chloé Ordolé. The company has links to LocarnoPro’s Open Doors Africa initiative and the West Africa Focus Bakumam Incubator.
3209  
3210  I will be at Cannes with African Film Press East Africa partner Jennifer Ochieng of Cinema Focus, splitting duties across the festival and marché as needed and capturing as much of the above activity as possible. If you are heading to Cannes and want to connect, feel free to reach out.`},{slug:"netflix-member-quality-ai",title:'Netflix Touts "Member Quality" Engagement Metric + An AI Push That Touches Everything',category:"Industry",date:"April 18, 2026",summary:`Netflix's Q1 2026 earnings call introduced a new internal engagement metric — "member quality" — while signalling an AI integration strategy that the company says now touches content discovery, production tools, and customer experience. This report examines what both developments mean for African content on the platform.`,author:"Akoroko Intelligence",isPremium:!0,readTime:"9 min read",listenId:"netflix-member-quality-ai",headerImage:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/WUzPoBlATsAoYsVP.jpg",content:`Netflix's Q1 2026 earnings call was notable for two things that rarely appear together in the same corporate presentation: a new way of measuring subscriber value, and a sweeping commitment to artificial intelligence that the company's executives described as touching virtually every part of the business.
3211  
3212  The "member quality" metric — which Netflix declined to define precisely in public materials — appears to be an internal composite score designed to capture engagement depth rather than simple viewing hours. For African content producers and distributors watching the platform's signals closely, both developments carry significant implications for how their titles are surfaced, evaluated, and commissioned.`},{slug:"q1-2026-african-film-coverage",title:"What 18,912 Articles Show About How African Film Was Covered in Q1 2026",category:"Data",date:"April 17, 2026",summary:"A quantitative analysis of 18,912 articles published about African film in the first quarter of 2026 reveals patterns in geographic focus, genre coverage, and the outlets driving the conversation — with implications for how the industry understands its own visibility.",author:"Akoroko Intelligence",isPremium:!0,readTime:"16 min read",listenId:"q1-2026-african-film-coverage",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/q1-2026-header_00fba4a3.jpg",content:`In the first quarter of 2026, Akoroko tracked 18,912 articles published about African film across English, French, and Portuguese-language media. The dataset spans trade publications, national newspapers, film festival bulletins, streaming platform blogs, and independent criticism — offering one of the most comprehensive snapshots of how African cinema is being written about at scale.
3213  
3214  The findings challenge several assumptions about who covers African film, what they cover, and how coverage has shifted since the post-pandemic resurgence of African titles at international festivals. This report presents the headline findings and what they mean for producers, distributors, and anyone trying to understand the industry's public profile.`},{slug:"no-data-african-film",title:'What Are We Really Saying When We Say There Is "No Data" on African Film Activity?',category:"Research",date:"April 16, 2026",summary:"The phrase 'no data' is frequently invoked in discussions of African cinema, but a closer examination reveals that data often exists — it is scattered, inaccessible, or simply not being looked for in the right places. This report interrogates what the claim really means and what it obscures.",author:"Akoroko Intelligence",isPremium:!0,readTime:"9 min read",listenId:"no-data-african-film",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/no-data-header-v2_55
3214ada1e2.jpg",content:`The phrase "no data" has become a kind of shorthand in conversations about African film markets — a way of closing down inquiry rather than opening it up. When analysts, funders, or journalists say there is no data on African film activity, they often mean that the data they are accustomed to consulting — industry databases, box office trackers, streaming analytics — does not include Africa in any systematic way.
3215  
3216  But the absence of data from familiar sources is not the same as the absence of data. This report examines what the claim actually means, where data does exist, and why the gap between available information and cited information has persisted for so long.`},{slug:"cannes-2026-africa-strongest-decade",title:"Cannes 2026: Africa's Strongest Decade at the Festival and Market Keeps Moving",category:"Industry",date:"April 15, 2026",summary:"Africa enters Cannes 2026 with its strongest presence in the festival's history, building on a decade of growing selection, co-production deals, and market activity that has repositioned the continent as a significant force in international cinema.",author:"Akoroko Intelligence",isPremium:!0,readTime:"12 min read",listenId:"cannes-2026-africa-strongest-decade",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/cannes-header_68a08cec.jpg",content:`Africa enters Cannes 2026 with its strongest presence in the festival's history. From official selections to the Marché du Film, the continent's filmmakers, producers, and distributors are arriving with a depth of work and a level of institutional backing that would have been difficult to predict a decade ago.
3217  
3218  The trajectory is not accidental. It reflects sustained investment in film education, co-production infrastructure, and festival strategy across multiple African countries, as well as a growing appetite among European and North American distributors for African-authored stories told on African terms.`},{slug:"canal-plus-south-africa-market",title:"South African Market Canal+ Just Bought Was Weaker Than It Looked — New Government Report",category:"Industry",date:"April 15, 2026",summary:"A new South African government report reveals the pay-TV market Canal+ acquired through its MultiChoice takeover was in steeper decline than publicly disclosed, with subscriber losses and revenue contraction raising fresh questions about the deal's strategic rationale.",author:"Akoroko Intelligence",isPremium:!0,readTime:"6 min read",listenId:"canal-plus-south-africa-market",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/canal-plus-header_0d535f66.jpg",content:`A new South African government report has shed light on the true state of the pay-TV market that Canal+ acquired when it completed its takeover of MultiChoice. The data, drawn from official regulatory filings, paints a picture of a market in steeper decline than the company's public communications suggested at the time of the deal.
3219  
3220  Subscriber losses and revenue contraction across the South African pay-TV sector were more pronounced than industry observers had estimated, raising fresh questions about the strategic rationale behind one of the most significant media acquisitions in recent African broadcasting history.`},{slug:"google-maps-africans-watch-films",title:"What Google Maps Can Tell Us About How Africans Watch Films",category:"Data",date:"April 13, 2026",summary:"Google Maps data on cinema locations across Africa reveals patterns in how and where Africans access film exhibition infrastructure — and what the gaps tell us about the continent's broader screen economy.",author:"Tambay Obenson",isPremium:!0,readTime:"7 min read",listenId:"google-maps-africans-watch-films",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/google-maps-header-v5_5c49aec3.jpg",content:`Google Maps is not typically thought of as a tool for film industry research. But its crowdsourced database of cinema locations across Africa — compiled from user submissions, business listings, and satellite imagery — offers a rare, granular view of exhibition infrastru
3220cture that official data sources rarely provide.
3221  
3222  By mapping what Google Maps knows and does not know about cinemas across the continent, we can begin to understand the distribution of formal exhibition infrastructure, the density of screens in urban versus rural areas, and the gaps that reveal where audiences are watching films outside of formal cinema settings.`},{slug:"weekly-wrap-up-april-6-12",title:"Weekly Wrap-Up: April 6–April 12, 2026",category:"Research",date:"April 12, 2026",summary:"This week's dispatch covers the latest developments across African film, television, and digital media markets, including policy announcements, industry partnerships, and market trends shaping the continent's creative economy.",author:"Akoroko Intelligence",isPremium:!0,readTime:"6 min read",listenId:"weekly-wrap-up-april-6-12",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/weekly-wrap-up-header-N4JkoXmUJBB6RKD6zLoXav.webp",content:`This week's dispatch covers the latest developments across African film, television, and digital media markets. From policy announcements to industry partnerships and market trends, the week has been marked by significant movements shaping the continent's creative economy.
3223  
3224  Our premium audio dispatch provides in-depth analysis and context on the key stories that matter to producers, distributors, financiers, festival programmers, and research institutions working across African screens.`},{slug:"namibia-film-creative-city-plan",title:"Namibia's New 'Film and Creative City' Plan Comes With Rare Official Film Sector Data",category:"Policy",date:"April 11, 2026",summary:"Namibia has announced a new 'Film and Creative City' initiative as part of its broader Vision 2030 development strategy. The announcement includes rare official film sector data that provides insights into the country's production landscape and growth potential.",author:"Tambay Obenson",isPremium:!0,readTime:"7 min read",listenId:"namibia-film-creative-city",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/namibia_cropped_72ad06dd.jpg",content:`Namibia has announced a new 'Film and Creative City' initiative as part of its broader Vision 2030 development strategy. The announcement, made during the State of the Nation Address by President Hage Geingob in Windhoek on April 8, 2026, includes rare official film sector data that provides valuable insights into the country's production landscape and growth potential.
3225  
3226  The initiative represents a strategic effort to position Namibia as a regional hub for film and creative industries production. The announcement is significant because it includes official government data on the film sector—information that is often difficult to obtain across African countries and is typically compiled through industry surveys rather than government sources.
3227  
3228  The data provides a foundation for understanding Namibia's production capacity, workforce, and infrastructure, which are critical factors for attracting international productions and supporting local filmmakers. The initiative also signals government commitment to developing the creative economy as part of broader economic diversification efforts.`},{slug:"ghana-film-authority-tours-abandoned-cinemas",title:"Ghana's Film Authority Tours Abandoned Cinemas in Push to Revive Exhibition Infrastructure",category:"Exhibition",date:"April 10, 2026",summary:"Ghana's National Film Authority is conducting tours of abandoned cinema facilities across the country as part of a broader initiative to revive the nation's theatrical exhibition infrastructure. The effort reflects growing recognition of cinema's role in supporting local film distribution and audience development.",author:"Tambay Obenson",isPremium:!0,readTime:"7 min read",listenId:"ghana-film-authority",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ghana_cropped_5a0d2266.png",content:`Ghana's National Film Authority is conducting a systematic tour of abandoned cinema facilities across the country, visiting former exhibition spaces to assess their condition and potential for rehabilitation. The initiative is part of a broader push to revive the nation's theatrical exhibition infrastru
3228cture, which has deteriorated significantly over the past two decades.
3229  
3230  The tours represent a recognition that cinema infrastructure is not merely a business concern but a strategic asset for film distribution, audience development, and the broader creative economy. For African filmmakers, theatrical exhibition remains a critical pathway to revenue and visibility, particularly for films that do not secure international distribution deals or streaming platform acquisitions.
3231  
3232  Ghana's effort comes at a moment when several African countries are reconsidering their approach to cinema infrastructure. The revival of exhibition spaces has become part of broader policy conversations about supporting local film industries and ensuring that African audiences have access to African films in theatrical settings.`},{slug:"five-years-after-the-seminal-unesco-report-an-update",title:"Five Years After the Seminal UNESCO Report — An Update",category:"Research",date:"April 9, 2026",summary:"Five years after the UNESCO report on African cinema, new data and developments have reshaped the landscape. This update examines how the continent's film sector has evolved, what has changed, and what remains to be addressed in African cinema's ongoing development.",author:"Tambay Obenson",isPremium:!0,readTime:"8 min read",listenId:"unesco-report-update",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/unesco_cropped_3735b12c.png",content:`The UNESCO report on African cinema has long served as a foundational reference point for understanding the continent's film sector. Five years after its publication, the landscape has shifted in significant ways. New funding mechanisms have emerged, streaming platforms have reshaped distribution patterns, and policy environments across countries have evolved in response to both global and regional pressures.
3233  
3234  This update examines what has changed since the original report, what has remained constant, and what new challenges and opportunities have emerged for African filmmakers, producers, and distributors. The analysis draws on recent data, policy developments, and industry activity across the continent to provide a comprehensive picture of where African cinema stands in 2026.
3235  
3236  The report reflects both the progress made in recent years and the persistent structural challenges that continue to shape the industry. Understanding these developments is essential for stakeholders seeking to navigate the evolving African film landscape and identify opportunities for growth and sustainable development.`},{slug:"multichoice-puts-number-on-south-african-content-obligation-r206-billion",title:"MultiChoice Puts a Number on Its South African Content Obligation: R20.6 Billion Over Three Years",category:"Policy",date:"April 9, 2026",summary:"MultiChoice has announced a R20.6 billion investment commitment over three years to meet its South African local content obligations. The announcement provides clarity on the company's financial commitment to supporting local production and reflects ongoing regulatory pressure in the region.",author:"Tambay Obenson",isPremium:!0,readTime:"6 min read",listenId:"multichoice-r206b",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/multichoice_cropped_17c58b11.jpg",content:`MultiChoice, the pan-African pay-television operator, has announced a R20.6 billion investment commitment over the next three years to meet its South African local content obligations. The announcement provides concrete financial clarity on the company's commitment to supporting local production and reflects ongoing regulatory pressure from South African authorities to ensure that international broadcasters contribute meaningfully to the local creative economy.
3237  
3238  The R20.6 billion figure represents a significant commitment to local content acquisition and production support. This investment will fund original South African productions, acquisitions of local films and series, and support for independent producers and production companies. The commitment comes as South Africa continues to strengthen its regulatory framework around local content requirements for broadcasters.
3239  
3240  The announcement is significant for the broader African production ecosystem, as MultiChoice's footprint extends across multiple African countries. How the company structures and deploys this investment—and whether similar commitments emerge in other markets—will have implications for production activity and investment patterns across the continent.`},{slug:"french-speaking-belgium-deepens-africa-ties-per-2025-report",title:"French-Speaking Belgium Deepens Africa Ties, Per 2025 Report",category:"Policy",date:"April 7, 2026",summary:"The Centre du Cinéma et de l'Audiovisuel (CCA), the public institution that funds and promotes film and audiovisual production in French-speaking Belgium, recorded several new connections with African countries in 2025, according to its annual report. The developments include a formal co-production treaty with Côte d'Ivoire, ongoing negotiations with the DRC, and exploratory analysis of a potential agreement with Benin.",author:"Tambay Obenson",isPremium:!0,readTime:"7 min read",listenId:"belgium-africa-ties",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/belgium-cca-header_dbe20396.png",content:`The Centre du Cinéma et de l'Audiovisuel (CCA), the public institution that funds and promotes film and audiovisual production in French-speaking Belgium, formerly known as the Fédération Wallonie-Bruxelles, recorded several new connections with African countries in 2025, according to its annual report, which I received on April 2nd, 2026.
3241  
3242  The developments take place against a backdrop of growing, if still modest, engagement between the CCA and African film markets that Akoroko has tracked over the last two years.
3243  
3244  ## The Côte d'Ivoire Treaty
3245  
3246  The most concrete development in the 2025 report is the formal signing of a bilateral co-production treaty with Côte d'Ivoire, one of three new international agreements the CCA finalized during the year, alongside Lebanon and Colombia.
3247  
3248  The signing took place on June 27th, 2025, during the closing day of Abidjan's Salon International du Contenu Audiovisuel (SICA), and Akoroko covered both the signing and the full 14-page treaty text when it was subsequently released.
3249  
3250  The agreement gives officially approved co-productions the status of national works in both countries, allowing them to access public film funds on both sides, qualify for local content designations, and benefit from Belgium's federal tax shelter scheme.
3251  
3252  Four Ivorian projects had already been approved for financing under the treaty at the time the text was released, though the development status of each title has not been publicly disclosed.
3253  
3254  The agreement was captured in yesterday's dispatch, which mapped African co-production agreements. For Côte d'Ivoire, it becomes the second European formal co-production structure with the country. France is the other.
3255  
3256  ## Africa Elsewhere in the Report: Benin, DRC, Tunisia
3257  
3258  Beyond Côte d'Ivoire, the 2025 report documents two other African countries in earlier stages of engagement. Negotiations toward a co-production agreement with the Democratic Republic of Congo (DRC) are described as ongoing, and the CCA is conducting exploratory analysis of a potential agreement with Benin. Neither has been finalized.
3259  
3260  At the regional level, the CCA's participation in the Réseau des partenaires francophones, a network of French-language film funding bodies, led to a new initiative in 2025 specifically designed for film professionals from Francophone Africa.
3261  
3262  The network developed a proposed support system intended to replace a previous fund for young Francophone creators, designed to develop skills for writers and producers and to encourage their access to international markets.
3263  
3264  The CCA is developing the project jointly with Wallonie-Bruxelles International, the body that manages the Federation's international relations. It is expected to be operational in 2026.
3265  
3266  The report also notes a notable increase in official co-productions between Belgium and Tunisia in 2025, alongside increases with Italy and Switzerland, though it flags these figures as preliminary pending confirmation in future years.
3267  
3268  ## Broader Context
3269  
3270  The Africa-facing activity in the 2025 report isn't without a foundation.
3271  
3272  The CCA's Cinema Commission has, in recent years, funded African and African diaspora projects, including production and development support for Moroccan, Senegalese, Congolese, Burkinabe, Malagasy, and Algerian titles in its first 2024 session alone.
3273  
3274  And for the 2024 Academy Awards, Belgium selected Omen, Augure, as its official submission in the International Feature Film category. Directed by Belgian-Congolese multidisciplinary artist Baloji, the film is a magical realist drama set between Belgium and the DRC. It was produced by Wrong Men, supported by the CCA among other funders, and premiered in Un Certain Regard at Cannes, where it won the New Voice award.
3275  
3276  The Côte d'Ivoire treaty, the DRC and Benin engagements, and the forthcoming Francophone Africa support program together suggest the CCA is gradually moving toward a more structured relationship with the continent, beyond the project-by-project connections that have characterized activity in recent years.`},{slug:"mapping-africas-co-production-treaty-landscape",title:"Mapping Africa's Co-Production Treaty Landscape",category:"Data",date:"April 6, 2026",summary:"Our April 2026 updated 54-country registry documents each country's level of activity, confirms agreement-level arrangements, separately verifies official non-treaty cooperation agreements, and identifies gaps where no official record has yet to be located. 21 African countries have confirmed official agreement-level film or audio-visual co-production status, plus two with separately confirmed official non-treaty cooperation instruments.",author:"Tambay Obenson",isPremium:!0,readTime:"11 min read",listenId:"coproduction-treaty-landscape",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/coproduction-treaty-header_0e12d992.png",content:`This report builds on work I first published nearly a year ago and have continued to update behind the scenes since, with the goal of making the record as complete and accurate as possible. That process has included long waits for responses, clarifications, or confirmations from officials, and in some cases, no response at all.
3277  
3278  As Q2 kicks off, this feels like a good moment to share what we've learned over the past 10 months.
3279  
3280  Our April 2026 updated 54-country registry documents each country's level of activity, confirms agreement-level arrangements, separately verifies official non-treaty cooperation agreements, and identifies gaps where no official record has yet to be located across sources as of April 6, 2026.
3281  
3282  This data set, brought to you by African Screen Intelligence (ASI), covers 21 African countries with confirmed official agreement-level film or audio-visual co-production status, plus two countries with separately confirmed official non-treaty cooperation instruments on record.
3283  
3284  The results don't follow the usual assumptions. Nigeria, home to one of the continent's most active film production sectors, only signed its first confirmed official agreement-level audio-visual co-production arrangement in 2025. South Africa, meanwhile, has the densest agreement network in the registry and continues to position itself as the continent's most connected production base.
3285  
3286  Regionally, Morocco and Tunisia have long-standing ties to Europe and have used them to build treaty networks. West Africa is seeing more activity. Nigeria, Côte d'Ivoire, and Senegal have all signed new agreements or appear in the current agreement map with recent activity. But gaps remain. Ghana falls under "no official record located" in the reviewed official source set. Most of East and Central Africa is still absent from the confirmed agreement-level map, with Kenya and South Africa as the exceptions.
3287  
3288  France remains the most frequent treaty partner, with agreements registered across multiple African countries. But others are entering. China has signed cooperation MOUs that appear here as non-treaty instruments, not agreement-level entries. Brazil's 2025 agreement with Nigeria is a rare example of direct South-South engagement between two large cultural economies. Morocco's position also includes multiple intra-African agreements, including Benin, Côte d'Ivoire, Egypt, Mali, Niger, and Senegal.`},{slug:"weekly-wrap-up-march-29-april-5-2026",title:"Weekly Wrap-Up: March 29–April 5, 2026",category:"Industry",date:"April 5, 2026",summary:"A contemplative week thinking deeply about where we are in the evolution of African film, television, and digital media activity across the continent. Updates on African Screen Intelligence beta testing, AFP Dispatch development, and the week's dispatches.",author:"Tambay Obenson",isPremium:!0,readTime:"4 min read",listenId:"weekly-wrap-mar29-apr5",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/afp-dispatch-logo-green-v2_d02babd8.jpg",content:`It was yet another full, though somewhat vexing week on my end, contemplative, thinking deeply about where we are in the evolution of African film, television, and digital media activity across the continent. I think my Q1 2026 thoughts captured my state of mind succinctly. I'm less cranky today, though not because anything has materially changed. Time passes, life goes on.
3289  
3290  Still playing with fire and ice as we set up African Screen Intelligence, ASI, our flagship product, for early selective beta testing. The best analogy I can make here is editing the 20,000-word master draft you spent months or even years piecing together in order to produce a 1,500-word final copy. It's at once the easiest part of the process, particularly if the master draft is strong, while also being tedious and time-consuming. I'm certainly much closer to a deliverable version than I was a week ago.
3291  
3292  Also in development in the lab is AFP, African Film Press, Dispatch, a curated news delivery tool. What we're referring to fondly as Deadline Africa because it serves as an immediate, easy reference point. The challenge is how to deliver near real-time relevant news that captures film, television, and digital media activity across 54 countries. The streaming and infrastru
3292cture tracker is one piece of it and will remain separate for now. The plan is to keep month-to-month updates consistent until it becomes more of a utility.
3293  
3294  The other challenge is where to deliver the news. Like me, I'm sure your email inbox is constantly filling up with new messages. At the moment, much of our straight news coverage sits on African Film Press channels. But one goal yet to be met is ensuring that Akoroko Premium subscribers receive at least the headlines as part of their subscription. I hope AFP Dispatch, which will be available across multiple streams, helps solve that issue.
3295  
3296  More testing, fine-tuning, and repetition are planned for the week ahead.
3297  
3298  As always, thanks for being here.
3299  
3300  Return to the email for links to all the reports dispatched over the past seven days.`},{slug:"abou-sangare-and-the-gap-between-a-cesar-and-a-career",title:"Abou Sangaré and the Gap Between a César and a Career",category:"Profile",date:"April 4, 2026",summary:"Abou Sangaré's César Award represents a milestone recognition for African cinema, yet the gap between award recognition and sustained career opportunity remains significant. This report examines what the César means for Sangaré and what it reveals about the broader ecosystem for African filmmakers seeking international visibility and career advancement.",author:"Tambay Obenson",isPremium:!0,readTime:"6 min read",listenId:"sangare-cesar",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/sangare_cropped_603a2425.jpg",content:`Abou Sangaré's César Award represents a significant moment for African cinema, marking recognition at one of Europe's most prestigious film awards ceremonies. Yet the award also illuminates a persistent challenge in the industry: the gap between award recognition and sustained career opportunity for African filmmakers.
3301  
3302  The César is a prestigious recognition that brings visibility and prestige, but it does not automatically translate into funding for future projects, distribution deals, or sustained career momentum. Many African filmmakers have experienced this gap firsthand—winning awards at major festivals only to face significant obstacles in financing their next film or securing international distribution.
3303  
3304  Sangaré's trajectory offers insights into what it takes for African filmmakers to achieve international recognition and what happens after that recognition is secured. The report examines the César Award in the context of broader career development patterns for African directors and producers, and what the industry can do to better support filmmakers beyond the moment of award recognition.`},{slug:"nigeria-just-announced-another-creative-sector-fund-what-is-the-100-million-for",title:"Nigeria Just Announced Another Creative Sector Fund. What Is the €100 Million For?",category:"Policy",date:"April 4, 2026",summary:"Over the past two years, Nigeria's federal government has announced multiple creative-sector funding and infrastructure plans, often with large headline figures and limited public follow-through. A new Instagram announcement from the culture ministry has now added another €100 million figure to that picture. What is it actually for?",author:"Tambay Obenson",isPremium:!0,readTime:"9 min read"},{slug:"q1-2026-three-stories-same-conditions",title:"Q1 2026: Three Stories, Same Conditions, So it Goes…",category:"Industry",date:"April 2, 2026",summary:"Four years after Akoroko launched, the quarterly analysis remains the same because the conditions have not changed materially enough to produce a different one. Streaming contraction is complete. The finance credibility gap widened. Policy divergence deepened. And yet, somehow, the work is happening.",author:"Tambay Obenson",isPremium:!0,readTime:"10 min read",listenId:"q12026",content:`Four years ago this month, Akoroko launched. Akoroko Premium came two years later in April 2024. In that time, the quarterly analysis has been written — the biannual, the annual — the same analysis, more or less, every time. The conditions have not changed materially enough to produce a different analysis. That is the honest thing to say at the end of Q1 2026. It’s not a criticism of the work. It is an observation about the conditions.
3305
3306Netflix arrived in 2016 with ten years of runway ahead of it and spent that decade learning slowly and expensively — around $400 million total — that c
3306opying its model from elsewhere onto a continent it did not understand was not a strategy. Amazon came and left in under three years. Showmax was relaunched in 2024 with hundreds of millions in funding, generated a fraction of that in revenue, and is set to shut down at the end of this month.
3307
3308Three stories define Q1 in ways that will outlast the quarter. The first is the completion of the streaming contraction. The second is the finance credibility gap, which Q1 made more visible than any previous quarter. The third is the policy divergence — Morocco and Senegal moving forward with the most coherent institutional cinema energy either has shown in years, while South Africa’s incentive system stalled and Kenya still operates under a colonial-era statute.
3309
3310Despite individual success stories, it’s generally rough out there. The end of Q1 leaves me with deep appreciation for the people who have invested in us one way or another to keep Akoroko and African Film Press alive. And so the second quarter of 2026 begins.`},{slug:"whos-actually-distributing-films-theatrically-across-africa",title:"Who’s Actually Distributing Films Theatrically Across Africa?",category:"Data",date:"April 2, 2026",summary:"This is the first published attempt by Akoroko / African Film Press to map the theatrical distributor landscape across Africa. Across 54 African countries, approximately 20 companies handle theatrical film distribution, with at least 41 countries appearing to have no standalone theatrical distributor operating within their borders at all.",author:"Tambay Obenson",isPremium:!0,readTime:"12 min read",listenId:"distfilmsafrica",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/distributorsinafrica_925f1026.jpg",content:`This is the first published attempt by Akoroko / African Film Press (AFP) to map the distributor landscape across Africa officially. It’s certainly not the last word. It’s the result of researching a starting list of roughly 40 companies using a combination of our own industry knowledge, research across English, French, Portuguese, and Arabic sources, direct contact, and verification against approved industry databases and trade press.
3311
3312To be specific about what “couldn’t verify” means: it doesn’t mean those companies don’t exist or are not active. It means we either found no trace, or found a trace that confirmed existence but not theatrical release activity — at least not in the last 24 to 36 months.
3313
3314Of what’s left, we can say with some certainty that across 54 African countries, approximately 20 companies handle theatrical film distribution, with a few operating as regional arms of French or British parent companies. At least 41 of the 54 countries don’t appear to have a standalone theatrical distributor operating within their borders at all — despite Akoroko’s documented ongoing cinema expansion across the continent, however incremental.
3315
3316As exhibition infrastructure expands, which distribution companies will be there to claim territory — particularly on behalf of locally produced films?`},{slug:"africa-streaming-infrastructure-watch-april-update",title:"Africa Streaming & Infrastructure Watch — April Update",category:"Data",date:"March 31, 2026",summary:"The April update to Africa Streaming & Infrastructure Watch tracks the latest developments across streaming platforms, digital infrastructure, and content distribution networks operating across the continent. This edition covers 36 events across 54 countries, with 7 new entries since the last update.",author:"Tambay Obenson",isPremium:!0,readTime:"12 min read",headerImage:`${At}/TIMELINEMAPAPRIL_8d01f661.jpg`,listenId:"streaminfra-apr",content:`The April update to Africa Streaming & Infrastructure Watch is here. This edition tracks the latest developments across streaming platforms, digital infrastructure, and content distribution networks operating across the continent.
3317
3318This update covers 36 events across 54 countries, with 7 new entries since the last edition. The interactive Activity Map has been refreshed to reflect the current state of play across Q1 2025 through Q1 2026.`},{slug:"where-hollywood-wins-where-it-doesnt-market-power-africa",title:"Where Hollywood Wins, Where It Doesn’t: Market Power Across Africa’s Largest Film Economies",category:"Data",date:"March 31, 2026",summary:"Africa’s theatrical film markets don’t behave as a single bloc. Across eight markets in this baseline, Hollywood’s share of box office revenue ranges from 96% in South Africa to an estimated 20% in Ethiopia. The results vary sharply by market, and the source base varies as well.",author:"Tambay Obenson",isPremium:!0,readTime:"18 min read",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/hwoodwins-header_d4f3d398.png",listenId:"hwoodwins",content:`I wanted to quickly note that the past week, especially the last several days, has been unusually hectic on my end as we get African Screen Intelligence (ASI) ready for its first beta-testing phase, which has meant a lot of last-minute fine-tuning and a stretch of meetings and Zoom calls, disrupting my publishing rhythm. So if you’re new here, be aware that this is not my usual pace. Things should settle back into their typical flow within the next week.
3319    
3320    That said, this final stretch of ASI tinkering has also afforded me some quality time with the product itself, yielding random but useful insights along the way, some of the more straightforward mappings I’ll share here... like this one.
3321    
3322    Africa’s theatrical film markets don’t behave as a single bloc. That much should be obvious to the global industry by now, though I’m still often surprised.
3323    
3324    This baseline measures the dominant commercial theatrical circuit in each market: the major cinema chains, the main standalone cinemas, and the exhibition venues that account for most reported box office or most publicly visible screening activity. Small one-off screenings, venue rentals, micro-cinemas, community spaces, and other marginal exhibition exceptions sit outside that c
3324ore frame and are too limited in scale to materially shift the overall share shown here or the main point.
3325    
3326    Across the eight markets in this baseline, Hollywood’s share of box office revenue ranges from 96% in South Africa to an estimated 20% in Ethiopia.`},{slug:"introducing-ask-the-akoroko-premium-archive",title:"Introducing Ask Akoroko Premium — Version 0.1",category:"Product",date:"March 29, 2026",summary:"Ask Akoroko Premium is a tool for Akoroko Premium subscribers. It lets you search across every dispatch we’ve published since 2022 — over 1,500 reports on African film, television, and digital media — and get grounded, source-cited answers in seconds. Here’s what it does, how it works, and where it’s headed.",author:"Tambay Obenson",isPremium:!0,readTime:"7 min listen",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/SKARCHIVEAKPRE_7289cefb.jpg",listenId:"askarchive",content:`PLEASE READ (OR LISTEN TO) THIS IN FULL BEFORE CLICKING ANYTHING.
3327    
3328    Seriously. What follows will save you frustration and set the right expectations. This is not a long read. But it is a necessary one.
3329    
3330    I’ve received increasingly frequent requests from both subscribers and non-subscribers for access to the Akoroko Premium reports archive. Some want a specific dispatch they half-remember from a year ago. Others want to know if I have covered a particular topic, filmmaker, or development, and if so, what I said.
3331    
3332    I’ve wrestled with how to make the archive accessible in a way that makes sense, respects the work behind it, is fair to long-time subscribers — especially those who joined at launch and are still here — and avoids turning the whole thing into an undifferentiated dump with no context or structure.
3333    
3334    This is one solution (not the only one) that I’ve been building over the last week.
3335    
3336    **Introducing Ask Akoroko Premium — Version 0.1**
3337    
3338    It’s exactly what it sounds like: a conversational interface that lets you search and query the Akoroko dispatch archive. Type a question — about a filmmaker, a film, a festival, a streaming platform, a country’s screen industry, a policy development, anything covered in the archive — and it will find what it has, synthesize it, and give you an answer in plain language.
3339    
3340    If it does not have a clear answer, it will tell you that too, and suggest where to look next.
3341    
3342    I’ve been finetuning and pressure-testing all weekend, and I think it’s ready enough to share. However, it will remain a work in progress.
3343    
3344    **What It Is**
3345    
3346    The archive currently being searched contains 1,512 select Akoroko dispatches published between 2022 and 2026. That’s all it includes… for now. Not my personal notes. Not unpublished drafts. Not raw research, data gathering, etc. Not anything beyond what has been sent to you as formatted dispatches over the past few years.
3347    
3348    That represents roughly a third of what has gone out over the years, and perhaps a quarter of what I have in total that could eventually go in. I imagine much of the rest will be added over time.
3349    
3350    This also has nothing to do with the African Film Press dataset: the larger, more structured, data-driven body of material being assembled for African Screen Intelligence (ASI), our forthcoming professional research tool. It’s a separate platform, built for a separate purpose.
3351    
3352    “Ask Akoroko Premium” is Akoroko-specific, subscriber-only, and will remain so.
3353    
3354    One thing worth stating plainly is that everything in this archive is verified. Reported, sourced, and written to a standard I’ve been defending since launching this platform. When the feature surfaces something, it’s drawing from my past work — not generated, not hallucinated, not approximate, not “trained on.”
3355    
3356    **What It Is Not**
3357    
3358    This is not an encyclopedia of African cinema. It’s not a search engine for the internet. It’s not a source of information beyond what I have actually written, reported, and published.
3359    
3360    If you ask about something I have not covered, it will say so. If you ask about something I have covered only tangentially, the answer will reflect that. The depth of any answer is a direct function of the depth of my coverage on that topic.
3361    
3362    Do not expect to ask any question and receive a comprehensive answer. That is not what this is — not yet, and possibly not for a while.
3363    
3364    What it is is a starting point for recall, for rediscovering things you read here months ago and want to find again. That is where it earns its keep in its current form.
3365    
3366    **How to Use It Right Now**
3367    
3368    Be specific. Named people, films, festivals, countries, companies, and topics retrieve better results than broad or abstract questions. “Med Hondo” works better than “famous African directors.” “What happened to Showmax in 2026?” works better than “what’s happening with streaming in Africa?”
3369    
3370    However, it will provide a synthesized answer to broader, more general questions when it believes it has enough material to do so.
3371    
3372    If an answer feels thin, try rephrasing. The system searches by meaning, not exact keywords, but some queries land better than others. A different angle on the same topic may surface different, and sometimes richer material.
3373    
3374    Follow the suggested follow-up questions. After each answer, the system sometimes suggests two related questions to ask next. These are generated from the actual content of the dispatches retrieved, not generic suggestions. When they appear, they are usually worth following.
3375    
3376    Know what you are asking. The archive selectively captures already curated coverage of African and diasp
3376ora film, television, and digital media from 2022 to the present. It is not strong on everything. It reflects my editorial priorities from the start and the practical limits of what one person can cover.
3377    
3378    **What Comes Next**
3379    
3380    I’ll keep feeding it the rest of the Akoroko archive, including material that came before the 2024 Premium launch. Of course, every new dispatch will go in. Beyond that, I have years of raw material that will be added over time.
3381    
3382    It’s a process.
3383    
3384    The archive grows. Your feedback will influence that growth. The answers get better. Eventually, you will be able to run structured reports on it, not just ask questions. I am building toward that.
3385    
3386    The more you share of your experience with the feature, the more I can act on. How you use this, what you search for, and what frustrates you are useful pieces of information. This is version 0.1; it’s not 1.0 yet. I want to know what version 0.2 should fix — beyond “more information.”
3387    
3388    I’ve been pressure-testing the feature, more than a hundred queries across dozens of topics, iterating on the underlying retrieval system, the language model instructions, and the interface design over many rounds. Still, the coverage only gets deeper. The system only gets smarter.
3389    
3390    **How to Access It**
3391    
3392    Ask Akoroko Premium is subscriber-only. You cannot access it unless you are set up. Right now, I am setting you up manually while I work out a more automated process.
3393    
3394    So… if you want access, reply to this dispatch with a simple “yes.” The email address you reply from is the one I will use to set you up; meaning, if you want to be set up with a different address, say so in your reply. Within 12 hours of your reply, I will email you with your login details and instructions for accessing the page.
3395    
3396    That is all. Reply “yes,” and I will take it from there.`},{slug:"predicting-african-films-cannes-2026",title:"Predicting African Films at Cannes 2026",category:"Film",date:"March 26, 2026",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/cannes2026-header_a8d474c2.jpg",summary:"The April 9th lineup announcement is 14 days away. Using the African Film Pipeline Registry, historical Cannes data, and trade press, here is a grounded first-ever Akoroko Cannes African films predictions list — 11 titles with a real case, two more that would have made it if they were ready, and a note on what this exercise can and cannot tell us.",author:"Tambay Obenson",isPremium:!0,readTime:"25 min read",listenId:"cannes2026",content:`I don't typically do predictions lists. They're fun, I guess. But they're also a trap. You either look prescient or you don't. And either way, the list can overshadow the actual conversation about the films.
3397    
3398    But I thought I'd join the international film media Cannes 2026 predictions circus with my own list, given that none of the others have a particular African focus. As we head into the back half of the week, the April 9th lineup announcement is exactly 14 days away. So I decided to give it a try.
3399    
3400    Here's my first ever Cannes African Films predictions list.
3401    
3402    **A few ground rules on how I built it**
3403    
3404    The primary source is the African Film Pipeline Registry, which I've been building and maintaining through African Screen Intelligence (ASI). It tracks films in active development, production, and post-production across the continent and diaspora. For this exercise, I'm drawing on the registry's data on stage of completion, funding profile, filmmaker festival pedigree, and pre-festival sales activity to identify which films are closest to being ready.
3405    
3406    The registry is not a perfect instrument. There are almost certainly films in post-production right now that haven't crossed my radar. But it's the most systematic picture I have. Where relevant, I've supplemented that with what's circulating in trusted trade press and across predictions lists for any additional context I may not already have.
3407    
3408    I'm also working with a historical Akoroko–Cannes baseline I compiled two years ago and continue to maintain. What that baseline suggests is that between 1946 and 2024, roughly 81 African feature films screened at Cannes across all sections — about one per year on average, though the distribution is anything but even. The 2020s are already the most productive decade in that working baseline, with at least 23 films across just four editions.
3409    
3410    I tracked seven features during last year's festival: three in competition (Eagles of the Republic, La Petite Dernière, The History of Sound), three in Un Certain Regard (My Father'
3410s Shadow, Aisha Can't Fly Away, C.L. Prami), and one in Directors' Fortnight (Indomitables). Based on my historical baseline, seven is close to the ceiling of what a typical recent edition produces. Five to seven is the realistic range. I built this list with that in mind.
3411    
3412    One more thing: not every film on this list will make it. Some may not be ready. Some may go to Venice or Toronto instead. A couple of these directors will have already been in conversation with Cannes programmers for months, and a couple probably haven't. This is a predictions list. I'm making educated guesses based on the best information I have right now and justifying each claim.
3413    
3414    **The Main Seven**
3415    
3416    **1. La Más Dulce (Strawberries) — Laïla Marrakchi — Morocco/France/Spain/Belgium**
3417    Stage: Post-production. Predicted section: Un Certain Regard (competition as stretch possibility).
3418    
3419    Marrakchi debuted her first feature, Marock, in Un Certain Regard in 2005 — which means she's already in Cannes' institutional memory as a returning filmmaker. La Más Dulce follows a group of Moroccan women who travel to Andalusia for seasonal farm work and face exploitation and abuse. Shot in Huelva last April with cinematographer Tristan Galand (who shot Suleiman's Story, the jury prize winner at Cannes UCR 2024). Lead performances from Nisrin Erradi, Hajar Graigaa, and Fatima Attif. Lucky Number is handling sales. This is the African story I'd put at the highest probability of making the official selection.
3420    
3421    **2. Clarissa — Ery Nchukwu Asiri — Nigeria**
3422    Stage: Late stage / appears festival-ready. Predicted section: Un Certain Regard or Directors' Fortnight.
3423    
3424    The Asiri brothers' debut, A Moody Christmas (This Is My Desire), premiered at Berlinale 2014 in the Forum section, later released theatrically by Janus Films. Neon acquired worldwide rights to Clarissa — a contemporary reimagining of Virginia Woolf's Mrs. Dalloway, relocated to Lagos, shot on 35mm — with a cast that includes Sophie Okonedo, David Oyelowo, India Amarteifio, Ayo Edebiri, and Toheeb Jimoh. Of note: Neon has won six consecutive Palme d'Or at Cannes, from Parasite in 2019 through It Was Just an Accident in 2025. Production was funded by Africa-based institutions — Cannex Creations Inc., Afreximbank, and MBO Capital — with no European co-production in the stack made public at this time. That's unusual for a film with this kind of Cannes potential, and probably why it hasn't appeared on many other predictions lists.
3425    
3426    **3. People of Solitude — Tariq Teguia — Algeria**
3427    Stage: Post-production. Predicted section: Un Certain Regard or Directors' Fortnight.
3428    
3429    Teguia's features have competed at Venice twice: Rome Rather Than You in the Horizons section in 2006, and Inland in competition in 2008, where it won the FIPRESCI Prize. Zanj Revolution won the Grand Jury Prize at Entrevues Belfort in 2013. The Doha Film Institute backed People of Solitude in its 2025 Spring Grants post-production cycle and selected it for Qumra 2026 in the Work in Progress Feature Narrative section. He has never screened at Cannes. The complication is timing — Qumra's Work in Progress label this month means the Cannes 2026 window looks tighter than it would for a locked film. The story follows a smuggler, a paleoanthropologist, and a man on a rescue mission who cross paths in the Sahara.
3430    
3431    **4. I'm Coming for You! — Cyrielle Raingou — Cameroon/France**
3432    Stage: Post-production. Predicted section: Un Certain Regard or Directors' Fortnight.
3433    
3434    Raingou's debut documentary, Le Spectre de Boko Haram, won the Tiger Award at Rotterdam 2023 — the festival's top prize, and the first time an African film had won it. It also won the Paul Robeson Prize at FESPACO. I'm Coming for You! is her fiction feature debut, following a single mother in northern Cameroon who joins forces with a radical group of women after being cast out of her community. French backing is in place via Sanosi Productions, with support from the OIF, the World Cinema Fund, and the Durban Film Mart/Berlinale co-production circuit.
3435    
3436    **5. You Don't Die Two Times — Aïcha Weslati — Algeria/France**
3437    Stage: Post-production. Predicted section: Un Certain Regard or Directors' Fortnight.
3438    
3439    Weslati is a French-Algerian-Tunisian journalist, photographer, and documentary filmmaker making her feature debut — a film following a young Nigerian migrant woman retracing a perilous journey toward Europe. The project has assembled robust institutional support: AFAC, Doha Film Institute, Hot Docs Blue Ice Docs, Cairo Film 
3439Connection, Thessaloniki Agora Docs in Progress, Almería Film Industry Days, and the IDFA Bertha Fund IBF Europe scheme. A wide and credible chain of support for a debut documentary.
3440    
3441    **6. Hamlet from the Slums — Ahmed Fawzi Saleh — Egypt**
3442    Stage: Post-production. Predicted section: Un Certain Regard or Directors' Fortnight.
3443    
3444    Saleh's first feature, Poisonous Roses, premiered at IFFR in 2018 and became Egypt's submission to the 2020 Academy Awards International Feature category. Hamlet from the Slums was selected for L'Atelier at Cannes in 2022, placing the project inside the festival's co-production development pipeline. The Francophonie Image Fund awarded it €40,000 in production support in April 2024. Its inclusion in Doha Film Institute's Qumra 2026 lineup also indicates the film is still active at a late stage. In Hamlet from the Slums, Ahmed — the son of Cairo's junkyard king — has to avenge his best friend's death, even if it means confronting his father.
3445    
3446    **7. Dira Jai — Damilola Orimogunje — Nigeria/Germany**
3447    Stage: Post-production. Predicted section: Directors' Fortnight or Critics' Week.
3448    
3449    Orimogunje's debut feature premiered at Film Africa in 2020 and screened at the BFI London Film Festival and FESPACO. He also produced Babatunde Apolo's All the Colors of the World Are Between Black and White, which premiered at Berlinale 2023 Panorama and won the Teddy Award for Best Feature Film. Dira Jai is his second feature, co-produced with Germany's Depth and Optics Productions, and has been confirmed to receive HBF+Europe post-production support as of March 2026. Dira Jai follows two estranged sisters who reunite in late 1990s Ibadan to care for their paralyzed mother after a tragedy.
3450    
3451    **Two More Just Outside the Main Seven**
3452    
3453    **8. House of the Wind — Bernard-Auguste Kouemo Yanghu — Cameroon/France/Belgium/Benin/Saudi Arabia/Qatar**
3454    Stage: Picture Lock. Predicted section: Un Certain Regard or Directors' Fortnight.
3455    
3456    If there is one title outside my main seven that looks closer to the line than the others, it may be House of the Wind. Doha Film Institute selected it for Qumra 2026 in the Picture Lock feature narrative section — one of the most advanced public stages any late-March title can have. Kouemo Yanghu is making his first feature after earlier short work, so this is not a director arriving with the same feature-level pedigree as some of the stronger names in the main list. But Picture Lock by late March is real.
3457    
3458    **9. Vagabonds — Amartey Armar — Ghana/France**
3459    Stage: Post-production. Predicted section: Long shot for Directors' Fortnight or Critics' Week.
3460    
3461    Armar's short Tsutsui screened in Cannes' official short film selection in 2022. His first feature has moved through multiple Cannes-adjacent industry spaces, including Cannes' Focale GoPro, the Red Sea Souk, and the 2025 Atlas Workshops, where it was presented among films in production or post-production with an expected completion date of May 2026. That gives it real pedigree and momentum — but also makes the Cannes 2026 timing tight enough that I'd treat it as a fringe possibility, not a core prediction.
3462    
3463    **Two More That May Be Ready, Even If the Cannes Case Is Weaker**
3464    
3465    **10. Mawusika, the Shadow of a Legend — Falagan Amuzu — Togo**
3466    Stage: Near finished / completed. Predicted section: Long shot for a parallel section.
3467    
3468    On March 23rd, 2026, Togo's Ministry of Tourism, Culture, and the Arts reported that Minister Isaac Chiakpe attended a screening of the film on March 21st, 2026 at Hôtel du Février in Lomé and described it as an advanced premiere before a public audie
3468nce of cultural and institutional figures. Amuzu has an existing feature track record in Togo, including Point de Suture, Sherifa, Solim, and Le Coup de Grâce. What the film does not yet have — at least in the public record I could verify — is the kind of international sales activity, festival lab visibility, or co-production market trail that usually feeds Cannes predictions coverage. Mawusika follows a Paris-trained architect who is forced to return to Lomé to take over her aging mother's waxcloth business.
3469    
3470    **11. Nomadish — Yacine Meraki — Morocco/Hungary/Qatar**
3471    Stage: Active post-production / extended completion. Predicted section: Very long shot.
3472    
3473    The OIF listed it for finishing support in April 2024. Doha Film Institute's 2024 Spring Grant Cycle listed it in MENA Feature Narrative Post-Production. Crew United also identifies the project under the working title cluster Al-Qabulin, aka Nomadish/Sirocco, describing it as a Hungary-Morocco production dated 2022–2026. Set in Casablanca in 1961, the film follows Eduardo, who sets out on a covert, illegal mission to salvage a wrecked ship on the Atlantic coast.
3474    
3475    **Two That Won't Make It, But Would Have**
3476    
3477    **12. My Muses — Kaouther Ben Hania — Tunisia**
3478    Ben Hania already has the kind of Cannes history that puts a new project into immediate contention: Beauty and the Dogs in Un Certain Regard in 2017, The Man Who Sold His Skin in the official selection in 2020, Four Daughters winning the L'Œil d'or for Best Documentary in 2023 and later reaching the Academy Awards. If My Muses were ready, it would belong near the top of this list on director profile alone. By all accounts, it isn't ready for Cannes 2026. My Muses is set in 1990s Tunisia and follows Bouchra, who resists a new imam's attempt to turn her family's mausoleum into a mosque, then begins investigating the saint associated with the site after meeting a cameraman.
3479    
3480    **13. Don't Let the Sun Go Up on Me — Asmae El Moudir — Morocco**
3481    El Moudir's The Mother of All Lies won the Best Director prize in Un Certain Regard and the L'Œil d'or at Cannes in 2023. Her follow-up has assembled a real 2025–2026 trail, with Outplay Film Sales on board, post-production support at Atlas Workshops, Hubert Bals Fund backing, and CPH:DOX industry visibility in March 2026. The public record suggests the film is still in post-production and seeking further industry support in March 2026, which makes Cannes 2026 unlikely and shifts the title more naturally into the 2027 field. The film follows Fatemeh Zahra, a young woman living with xeroderma pigmentosum, a rare genetic disorder that prevents her from being exposed to sunlight.
3482    
3483    **A Note on Method and Uncertainty**
3484    
3485    This exercise also has limits. Public funding trails, market selections, and post-production memos can tell us which films are active and sometimes which are close. They can't tell us everything Cannes programmers have already seen, how finished a cut really is, or which titles were held back for Venice, Toronto, or a 2027 or later launch. Others may still turn up in Locarno, San Sebastián, London, Marrakech, IDFA, or elsewhere.
3486    
3487    So the list works best as a map of proximity, not certainty. Some of these films have strong public cases. Some are here because the available evidence indicates they are close enough to warrant a mention. That said, the African Film Pipeline Registry gives me a way to compare very different kinds of movement across the same field — a sales pickup here, a picture lock label there, a co-production mark at birth, a fund award, a returning director, a debut filmmaker with unusual traction.
3488    
3489    See you on April 9th.`},{slug:"mapping-the-money-africa-film-television-financing",title:"Mapping the Money: What Africa’s Film and Television Financing Landscape Actually Looks Like",category:"Film",date:"March 24, 2026",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/mapthemoney-header-cropped_bff910c7.jpg",summary:"African Film Press has built what may be the most comprehensive map of film and television financing instruments currently operating on the African continent — 35 in total. Before you read anything into that number, here is what it actually means, who those funds can realistically reach, and what the landscape looks like from the inside.",author:"Tambay Obenson",isPremium:!0,readTime:"15 min read",listenId:"mapthemoney",content:`African Film Press (AFP) has been building what we believe is the most comprehensive map of financing instruments for film and television o
3489perating on the African continent — all of them: national government funds, Pan-African equity vehicles, broadcaster-backed programs, festival-embedded labs, bilateral co-production mechanisms, and regional bodies that are currently, verifiably, putting money into film and television production in Africa.
3490    
3491    The count currently stands at 35. Before you read anything into that number, let me say plainly that the financing ecosystem documented here, despite being continent-based, represents a formal layer that most working African filmmakers will likely never access — for any number of reasons, whether it be selection criteria or judgment calls made by filmmakers and producers themselves.
3492    
3493    **What 35 Actually Means**
3494    
3495    35 financing instruments may initially sound like a lot on the surface. In a continent of 54 countries and 1.4 billion people, with film industries active across Nigeria, South Africa, Kenya, Ethiopia, Morocco, Côte d'Ivoire, Senegal, Ghana, Tanzania, Rwanda, Tunisia, Algeria, Egypt, and dozens of other markets, it most certainly is not. The United Kingdom alone has the British Film Institute, Film4, BBC Film, Screen Scotland, Film Cymru Wales, Northern Ireland Screen, and Creative UK — for a country of 67 million people. France's CNC administers support for cinema and television production running to several hundred million euros annually. For all of sub-Saharan Africa, the total annual institutional grant capacity we have been able to verify is estimated at **$20 million to $35 million** — a rough floor that includes irregular dispersers and excludes equity vehicles not yet deployed.
3496    
3497    The 35 instruments are not evenly distributed. Some countries have layered ecosystems — Morocco, South Africa — where a filmmaker or foreign producer can combine a national grant, a provincial incentive, a broadcaster pre-buy, and a co-production treaty into something resembling a structured finance package. Most countries have one instrument, sometimes poorly funded, sometimes years behind in publishing results. And in at least one case, Algeria's FDATIC closed entirely for three years before being revived by presidential decree in 2025.
3498    
3499    **Who These Funds Are Actually For**
3500    
3501    These funds were designed for filmmakers who already have some production infrastructure in place. The eligibility requirements are standard for national film funds anywhere in the world: a registered production company, residency, local production spend, demonstrated co-financing from other sources. The BFI requires the same things. So does the CNC. The criteria themselves are not unusual. What makes them exclusionary in most African markets is the gap between what those criteria assume and what most working filmmakers there actually have access to.
3502    
3503    The co-financing requirement is the most consequential. Most funds require you to demonstrate that other money is already attached before they will consider your application. In markets where broadcasters rarely pre-buy, equity investors are scarce, and co-production partners are hard to reach, that requirement rules out anyone who hasn't already cleared the hardest hurdle on their own.
3504    
3505    The Kenyan filmmaker cannot apply to Senegal's Fopica. The Ghanaian filmmaker cannot apply to Morocco's CCM. The Ugandan filmmaker cannot apply to South Africa's NFVF. These are national instruments set up to develop national industries. The implication is that a continent-wide filmmaker looking for institutional support within Africa is largely confined to the handful of Pan-African or multi-regional mechanisms — the OIF's Fonds Images de la Francophonie (primarily for francophone language projects), AFAC (Arab region focus), and the growing number of equity funds like Afreximbank's Canex Creations Inc. and the Next Narrative Africa Fund, both still in early deployment stages.
3506    
3507    **The Exceptions Worth Knowing**
3508    
3509    Morocco is the most complete ecosystem on the continent for film financing. The CCM (Centre Cinématographique Marocain) runs three domestic grant cycles a year across fiction, documentary, and animation. It also administers a **30% cash rebate** on eligible expenses for foreign productions shooting in Morocco — uncapped, with a minimum spend of approximately $1 million — making Morocco one of the most active foreign production destinations in Africa. In 2025 alone, CCM backed at least 23 foreign features through this incentive scheme, generating over **$165 million** in local investment. Morocco also has 11 active bilateral co-production treaties with other countries — the largest treaty network on the continent.
3510    
3511    South Africa has the deepest institutional financing package in sub-Saharan Africa: the NFVF nationally, the DTIC's film and TV incentive package, a foreign production rebate comparable to Morocco's, the Gauteng Film Commission and KwaZulu-Natal Film Commission provincially, and the City of Cape Town's Film Support Fund municipally. The caveat — and it is a significant one — the DTIC's approval committee has not convened since March 2024. Industry bodies estimate the sector has contracted by nearly **50% since 2020** as a result. South Africa's financing infrastru
3511cture is the most sophisticated on the continent, and it is currently broken at a critical juncture.
3512    
3513    Tunisia, through the CNCI, runs one of Africa's oldest and most consistent national film support mechanisms, and in November 2025 passed a new audiovisual investment law further expanding the institutional architecture. Algeria reactivated its FDATIC — closed since January 2022 — via the 2025 finance law, and its Journées Cinématographiques de Carthage launched a digital submission platform in February 2026, reopening institutional support for Algerian production for the first time in three years.
3514    
3515    **What This Means If You Are Looking for Production Partners**
3516    
3517    For a financier or producer based outside Africa who wants to make a film or series set on the continent, the map above defines what African filmmakers and producers — via African institutions — can and cannot bring to a finance plan. The realistic scenario in most markets: an African production company can contribute local expertise, on-the-ground logistics, eligibility for available domestic grants, and in some cases a co-production credit that unlocks a bilateral treaty benefit. What African institutions cannot currently provide in most markets is lead financing for an international-scale project.
3518    
3519    The gap between what is available domestically and what a $2–5 million co-production requires is still largely filled by European public funds, Gulf institutions (primarily the Red Sea Film Foundation and the Doha Film Institute), and in some cases UK or Canadian agencies. Across AFP's festival financing analyses of top-tier festivals and markets 2025–2026, covering more than 40 project financing breakdowns, every project with an estimated budget above approximately €400,000 drew on at least one European or Gulf source as its structural base.
3520    
3521    That gap is exactly what the newer equity vehicles — Canex Creations Inc., Next Narrative Africa Fund, Logical Pictures Africa, MBO Capital (Nigeria's most active private equity financier in film, with over **$6 million deployed across 35 projects** as of Q3 2025), and Moshood Abiola's announced Ebony Life Afro Film Fund — are designed to address. As of March 2026, Canex Creations Inc. has made its first confirmed local film investment, co-producing *Clarissa* by the Asiri Brothers alongside MBO Capital, with Neon acquiring worldwide distribution. NNAF deployed its inaugural slate of nine projects in March 2026. These are proof-of-concept, not scale. But collectively, they could represent a structural shift — as models for internationally scalable African productions backed primarily by African funders. That was not present just five years ago.
3522    
3523    The premise of this work is simple. Before anyone can make a sound argument about what African film financing needs, or evaluate whether the new funds announced every quarter are closing the gap, the current state of the infrastructure must be documented accurately. The picture it shows is certainly not discouraging. At a minimum, it's honest. Across the continent, institutional support for film and television production is more geographically distributed and more capitalized than it was five years ago. It's still not sufficient for the scale of filmmaking talent that exists across 54 countries.`},{slug:"starlink-internet-service-27-african-countries",title:"Starlink Internet Service Rapidly Reached 27 African Countries. Then What?",category:"Streaming",date:"March 23, 2026",headerImage:`${At}/starlink-header_9e3de4de.jpg`,summary:"Elon Musk's Starlink is already active in 27 African countries as of March 16, 2026 — half the continent. The expansion was fast and required no country-by-country hardware rollout. But widespread availability is not mass adoption. A data-grounded look at what Starlink's reach actually means for streaming infrastructure across African markets.",author:"Tambay Obenson",isPremium:!0,readTime:"6 min read",listenId:"starlink",content:`What prompted this brief was realizing, during ongoing research on streaming infrastru
3523cture across African markets, that Elon Musk's Starlink service is already active in 27 African countries as of March 16, 2026. That's half of the continent. It's on the live map I introduced a couple of days ago. I was certainly aware that the service had entered Africa. I just hadn't realized how far it had already expanded. So I took a brief detour to learn more about what that expansion actually looked like in practice.
3524    
3525    First, let me humbly state that the requirements for subscription streaming at scale across African markets may still be underappreciated in some corners of the business. Connectivity is one of those requirements. It doesn't explain everything, but it's central. The recent history of platform launches, pullbacks, and restructurings should suggest that continent-wide availability and continent-wide viability are two different things.
3526    
3527    Subsequently, connectivity at scale is one of the main reasons subscription streaming has struggled to grow across African markets at the level many global platforms expected. The issue is not only whether a service is available. It's whether large enough numbers of people can stream reliably, affordably, and regularly enough to sustain a subscription business, particularly one that is also investing in original content commissioning and licensing. The evidence makes it abundantly clear that the condition remains highly uneven across the continent.
3528    
3529    **The Starlink Expansion**
3530    
3531    Starlink is currently active in 27 African countries, giving it one of the widest broadband footprints on the continent. That footprint has been established without the expensive country-by-country hardware rollout that fixed and mobile operators usually need. Plainly stated, Starlink uses satellites to transmit signals, so it doesn't need fiber cables or ground networks to reach a place, unlike traditional internet providers, which matters in areas where broadband infrastructure remains limited.
3532    
3533    Starlink first went live in Africa in Nigeria on January 30, 2023. From there, the expansion moved quickly geographically. By October 14, 2025, it was active in 23 African countries. By November 12, 2025, the count had reached 25. Senegal followed on February 4, 2026, taking the total to 26, and the Central African Republic brought it to 27 on March 16, 2026. So a rather fast continental rollout, especially in its first 2.5 years.
3534    
3535    Still, the service serves a relatively narrow slice of the markets in which it operates, given its pricing and the limited subscriber figures available in countries where regulators publish them: **66,523 subscribers in Nigeria** in Q2 2025, **19,470 in Kenya** on September 30, 2025, and **4,489 in Rwanda** in Q2 2025.
3536    
3537    Essentially, despite the different on-the-ground hardware rollout requirements that allowed the service to rapidly expand, the affordability bottleneck — another key connectivity hurdle — is one that Starlink doesn't readily solve. For streaming platforms, that translates into a smaller effective paying audience than raw population numbers suggest. A market can have hundreds of millions of mobile users, as the continent does, and still be a difficult subscription streaming market if most access is prepaid, mobile-first, cost-sensitive, and optimized for messaging, social media, and short video clips rather than sustained paid viewing.
3538    
3539    Two reports I occasionally return to — the Africa Finance Corporation's *State of Africa's Infrastructure Report 2024* and the Mo Ibrahim Foundation's *2024 Ibrahim Index of African Governance Report* — both agree that current connectivity across Africa is still low, especially weak for fixed broadband. The headline numbers: 40% internet penetration continent-wide, around 30% in sub-Saharan Africa, 59% of the population not using mobile internet even though it's available in their areas, and an explicit conclusion that fixed broadband penetration in Africa remains the lowest in the world.
3540    
3541    So while the continent's internet base is certainly growing, fixed broadband remains weak, mobile internet usage still lags mobile coverage, rural access is thinner and costlier to serve, and both fixed broadband and mobile data still consume too much household income in many markets. In that environment, the idea of a pan-African subscription streaming service operating at mass scale will continue to be pressure tested by these structural limits.
3542    
3543    That is where a service like Starlink fits in. Because it uses satellites, it can deliver fixed internet to areas without fiber or established ground networks, especially outside major cities. Yes, there are other satellite internet providers serving Africa, but most are geared toward businesses, governments, and telecom operators, while Starlink is more directly set up to sell internet to individual households. But the number of users is still small. It can support professionals, businesses, schools, institutions, and higher-income households. It does not yet change how most people connect, nor does it remove a crucial constraint on streaming at scale. My apologies if I got your hopes up.`},{slug:"critical-shortage-locally-owned-african-tv-content",title:"A Critical Shortage of Locally-Owned African TV Content",category:"Television",date:"March 21, 2026",headerImage:`${At}/criticshort-header_becd6881.png`,summary:"In 2022, the US produced 600 original scripted series in a single year. Across most of sub-Saharan Africa, there is now one major institutional commissioner left. With Showmax shutting down, Canal+ is either the dominant or sole professional buyer of locally produced scripted television in the majority of African markets. A dispatch on what the data shows — and what it means.",author:"Tambay Obenson",isPremium:!0,readTime:"8 min read",listenId:"criticshort",content:`I'm currently deep in the work of mapping television — broadcast, satellite, streaming, commissioning data — across African markets, driven in part by related questions from subscribers and non-subscribers alike following the news of Canal+'s Showmax shutdown, now confirmed for the end of April. It's also speeding up work that was already underway, which recent Akoroko Premium reports have shown.
3544    
3545    In 2022, the year American television finally hit what the industry had been calling peak TV, the United States produced 600 original scripted series — broadcast, cable, premium, streaming. That number doesn't account for the decades-long library of American television. It just means that in that one year, 600 new series were available to American viewers, layered on top of everything already in circulation. I live in the United States. I know what this feels like from the inside. It's too much. I can't keep up and neither can everyone I know. We make choices from an abundance that is simply the baseline condition of watching television here. There is always something new. There is always something for you.
3546    
3547    The thought landed harder than usual this week as I looked at what I had been mapping across the African screen landscape.
3548    
3549    **The Landscape**
3550    
3551    Egypt and South Africa are two African television markets where something resembling an industrial 
3551content ecosystem actually exists. Egypt produces roughly 37 to 39 original scripted series per Ramadan season — concentrated, seasonal, and structured almost entirely around two commissioning entities: United Media Services (a massive Egyptian media conglomerate widely recognized as owned or controlled by the Egyptian General Intelligence Service) and MBC Group, the Saudi media conglomerate. When Ramadan ends, the pipeline slows, but the activity is real and it's Egyptian in language, in subject matter, in cultural reference.
3552    
3553    South Africa sustains production year round. SABC1 and SABC2 air daily soaps and dramas. Mzansi Magic — MultiChoice's black South African entertainment channel — commissions 10 to 15 original scripted titles a year and attracts more than 2 million live viewers nightly at primetime. According to the National Association of Broadcasters, South Africa's television industry invested roughly 20 billion rand (about $1 billion) in local content between 2019 and 2023. This is by far the most developed small-screen production infrastructure on the continent.
3554    
3555    Beyond Egypt and South Africa, it's widely uneven. In Nigeria, Africa Magic commissions actively across four language channels, producing somewhere between 700 and 1,000 hours of original content annually — but Nigerian free-to-air television commissions almost nothing at professional scale. In Senegal, Marodi TV is producing prolifically, but primarily distributing on YouTube, with Canal+ as its only institutional broadcast buyer. In Ghana, Akwaaba Magic on DSTV — launched in 2021 — has by industry accounts become the single most important commissioner of Ghanaian scripted content. Before that, there was virtually no dedicated institutional home for Ghanaian scripted content at professional scale. In Ethiopia, MultiChoice's Able TV licensed and commissioned more than 138 local titles in its first two years of operation (2021–2023), while Canal+'s Kena TV — which built its audience largely on dubbed Turkish dramas and held a 34% market share in Ethiopia by 2017 — continues to fill a large portion of its schedule with dubbed foreign content.`},{slug:"interactive-map-v1-africa-streaming-infrastructure-watch",title:"The Interactive Map v.1: Africa Streaming & Infrastructure Watch",category:"Streaming",date:"March 21, 2026",headerImage:`${At}/activitymapstartingwithstreaming_9c6f58cb.jpg`,summary:"Two days after the first edition of the Africa Streaming & Infrastructure Watch tracker, we're adding the map. The timeline gave you chronology. This gives you geography. Click any event and watch it land: which countries did it affect, how many, how far the footprint actually reached, what activity is homegrown versus externally-led.",author:"Tambay Obenson",isPremium:!0,readTime:"3 min read",listenId:"mapstream",content:`Two days after we published the first edition of this tracker, we're adding the map.
3556    
3557    The timeline gave you chronology. This gives you geography. Click any event and watch it land: which countries did it affect, how many, how far the footprint actually reached, what activity is homegrown versus externally-led.
3558    
3559    The Showmax closure alone covered 44 markets. The Canal+×Netflix Francophone bundle: 24. Elon Musk's Starlink expansion: 25 and counting. One's understanding may expand when the timeline is plotted across the continent simultaneously and observed.
3560    
3561    A few things become clearer. The Francophone belt is net positive over this period — more launches than exits. The Anglophone sub-Saharan belt is not. South Africa has the most activity of any single market, and almost all of it is externally-led. Nigeria is active but contested. Much of East Africa is essentially a bystander to everything except the Showmax collapse.
3562    
3563    Use the filters to isolate what you're looking at. The “net change view” colors the continent by outcome: net positive, neutral, or net negative. Click any country to see its full event list.
3564    
3565    This is also a canvas. What you see is one layer. We will keep adding: cinema infrastru
3565cture, production activity, funding flows, exhibition data, policy, treaties, etc., with a robust analytical layer on top — essentially, screen sector intelligence at the continental and country levels. All of it alive and fresh. That work is already fully underway in the African Film Press (AFP) lab, shaping what African Screen Intelligence (ASI), our flagship research product, will become.`},{slug:"introducing-africa-streaming-infrastructure-watch-first-edition",title:"Introducing: Africa Streaming & Infrastructure Watch, First Edition",category:"Streaming",date:"March 19, 2026",headerImage:`${At}/AFRICANSTREAMINGWATCH_36ae75a1.jpg`,summary:"A new AFP tracker on African streaming, telecoms, pay TV, pricing, shutdowns, ownership changes, and platform activity. This first public edition covers January 2025 through the first quarter of 2026, and will be updated at least monthly as major developments occur continent-wide.",author:"Tambay Obenson",isPremium:!0,readTime:"5 min read",listenId:"asaiwf",content:`Showmax is shutting down. Canal+ completed its acquisition of MultiChoice in September 2025 and announced the closure in early March 2026. Netflix stopped commissioning new originals outside South Africa. Amazon Prime Video halted commissioning on the continent in early 2024. In short, the platforms that spent the better part of a decade building a foothold in African streaming at scale have, one by one, pulled back or disappeared entirely.
3566    
3567    You know the story.
3568    
3569    Since the Showmax shutdown announcement, a question that's been most often raised by industry and consumers alike is some version of the same thing: what does the commissioning landscape across the continent look like now? Where are the next African originals coming from?
3570    
3571    The honest answer is incomplete. What we do know is that the landscape is thin, and it was never especially robust to begin with — at least not in the way that more established markets around the world generate content in volume, season after season, across broadcast, cable, and streaming at the same time.
3572    
3573    Across African TV and streaming markets right now, it's almost a desert, with imports dominating most screens, big and small.
3574    
3575    That gap is part of why we built this. To offer a guidepost. A big-picture view of where things stand that people can return to.
3576    
3577    We're calling it "Africa Streaming & Infrastructure Watch," a live tracker, updated at least monthly, or as major developments occur continent-wide (whichever comes first), from African Film Press (AFP), built inside the infrastructure that supports African Screen Intelligence (ASI), our internal research platform (soon to be external).
3578    
3579    The digital initiative captures activity across streaming platforms, telecoms, and major pay-TV industry developments, including launches, shutdowns, rebrandings, and changes in ownership, as well as pricing, deals, and acquisitions.
3580    
3581    Commissioning or acquisition developments appear only when the business implications are large enough.
3582    
3583    This first public edition covers January 2025 through the first quarter of 2026. Again, it'll be updated at least monthly, or as major developments occur continent-wide (whichever comes first).
3584    
3585    Note: A robust subscriber-only version is in development, with more frequent updates, deeper data, and useful interactivity.`},{slug:"med-hondo-business-conditions-african-cinema",title:"Med Hondo and the Business Conditions of African Cinema",category:"Film History",date:"March 18, 2026",headerImage:`${At}/medhondo-portrait_e3779bb4.jpg`,summary:"A deep archival read of what Med Hondo said about financing, distribution, ownership, and why the same business problems still hold. From his first major interview in 1970 through his final recorded conversations in 2018, Hondo documented — in detail — what it cost to make films without a producer, what it felt like to be defrauded by distributors, and what he believed needed to change structurally for African cinema to survive.",author:"Tambay Obenson",isPremium:!0,readTime:"18 min read",listenId:"medhondobiz",content:`On June 9, 2026, the Criterion Collection releases Med Hondo's "West Indies: Les nègres marrons de la liberté" (West Indies: The Fugitive Slaves of Liberty, 1979) on Blu-ray — a 4K restoration of one of the most crucial and least-seen f
3585ilms in the history of African cinema, paired with a new interview with scholar Aboubakar Sanogo and archival interviews with Hondo himself. The film is currently streaming on the Criterion Channel. This disc release gives it a physical form you can buy and add to your collection.
3586    
3587    That Criterion announcement, which I received a couple of days ago, is what started this exercise.
3588    
3589    Context: my focus this past month has been almost entirely business-related — the Showmax shutdown, the Next Narrative Africa Fund news, African film financing in its current state, the African Screen Intelligence platform (ASI) I’m building, streaming economics, YouTube ad rates, etc. So when I saw the Criterion news, I started thinking about Med Hondo not only as a filmmaker but also as a businessman and entrepreneur, as someone who had to figure out how to make things, sell things, protect things, and fight for things — qualities filmmakers need to have, even more so today.
3590    
3591    When we write about the pioneers of African cinema — Hondo, Sembène, Maldoror, Mambety, Faye, Vieyra, Balogun, et al — we most often write about the work. The politics, the aesthetics, the historical conditions. We treat the business environment as background. We rarely ask what they specifically said about it, in their own words, sharing their direct experiences with financing, production, and distribution.
3592    
3593    Hondo, the Mauritanian firebrand and one of my favorite artist personas, said a great deal. From his first major interview in 1970 through his final recorded conversations in 2018, he documented — in detail — what it cost to make films without a producer, what it felt like to be defrauded by distributors, what he believed needed to change structurally for African cinema to survive, and what he thought of the people and institutions that were supposed to help but didn’t. He died in Paris on March 2, 2019, at the age of 82. However, this is not just a historical record or a closed chapter. What he was describing were financing, distribution, and exhibition problems that still shape how African films are produced, sold, and seen in March 2026.`},{slug:"what-32-african-million-subscriber-youtube-channels-say-about-audience-size-and-money",title:"What 32 African Million-Subscriber YouTube Channels Say About Audience Size and Money",category:"Digital Media",date:"March 16, 2026",headerImage:`${At}/marodi_a5102443.jpg`,summary:"A systematic mapping of 32 YouTube channels across Africa with at least 1 million subscribers distributing original scripted drama or films. Collectively, ~71 million subscribers and 214 million monthly views — with estimated annual YouTube ad revenue of about $1 million across the entire dataset. The audience is already there. The harder question is who turns that attention into real commercial value.",author:"Tambay Obenson",isPremium:!0,readTime:"13 min read",listenId:"africayt",content:`As our intelligence platform, African Screen Intelligence (ASI), edges towards initial beta testing, internal research capabilities become even more dynamic and immediate.
3594    
3595    Occasionally, I land on useful findings that merit publication on their own, even if only serving as a window into the kind of intelligence ASI is being developed to produce. This is one example.
3596    
3597    What follows comes from a systematic mapping of YouTube channels across Africa with at least 1 million subscribers that actively distribute original scripted drama or films — not skits, not short-form, not clips — and were active between January 2025 and March 2026.
3598    
3599    Approximately 32 channels qualified, though this capture may not include every single qualifying channel, particularly those that recently crossed the one-million-subscriber threshold. That said, 32 is a solid number.
3600    
3601    And what the numbers overall say about the economics of African film, television, and digital media distribution on YouTube is certainly instructive enough to share.`},{slug:"four-2026-theatrical-releases-african-film-circulation",title:"What Four 2026 International Theatrical Releases Say About African Film 
3601Circulation",category:"Distribution",date:"March 14, 2026",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/art22-boxoffice-theatrical-audit_ab9cb6cb.jpg",summary:"An Akoroko theatrical audit — North America & Europe, Q1 2026. Four films. Four stories of how African and diaspora cinema actually moves in the world: My Father's Shadow, The Voice of Hind Rajab, Calle Málaga, and Son of the Soil. Box office data, distribution patterns, and what the numbers reveal about infrastructure, access, and the limits of what we can verify.",author:"Tambay Obenson",isPremium:!0,readTime:"18 min read",content:`I saw an Instagram post yesterday morning from Fatherland Productions — the Lagos-based company that Akinola Davies Jr. and his brother Wale run with producer Funmbi Ogunbanwo — reminding American audiences that "My Father's Shadow" is still in US theaters and encouraging them to go see it. I realized I hadn't actually looked at the film's box office numbers since it opened in the UK and US about five weeks ago. Given everything that preceded those releases — first Nigerian film in Cannes Official Selection, MUBI acquiring the rights before the festival even opened, the Caméra d'Or Special Mention, the BAFTA, the Gotham nods, the 98% on Rotten Tomatoes, the UK Oscar submission — I figured it was time to check in.
3602    
3603    So I pulled up Box Office Mojo (BOM) and The Numbers. Why? They're the two most reliable public sources for tracking theatrical box office data in one place and in real time — short of paying for Comscore access, digging through territory-specific institutional sources like France's CNC or Unifrance, or waiting for annual databases like those from the European Audiovisual Observatory to catch up.
3604    
3605    As of today, "My Father's Shadow" has earned $99,678 in the US and $374,448 in the UK, for a "worldwide" total of $474,126. I place "worldwide" in quotes because it's platform standard for BOM and The Numbers, but there is nothing "worldwide" about those figures.
3606    
3607    The film opened in Nigeria on September 19, 2025, via FilmOne Entertainment, and ran for 4 weeks across commercial cinema chains — Filmhouse, Silverbird, Genesis — in at least 15 states. Ghana came in at week two through Silverbird in Accra, same closing week.`},{slug:"what-africa-meant-next-narrative-africa-fund-first-slate",title:`What "Africa" Meant in Next Narrative Africa Fund's First Slate`,category:"Film Finance",date:"March 12, 2026",summary:"On March 12, Akunna Cook's Next Narrative Africa Fund named its inaugural cohort of nine film and television projects. A first cohort. A thin financing landscape. A flood of reactions. This dispatch examines what NNAF actually selected, what the numbers mean, and why the response from continent-based filmmakers has been so sharp.",author:"Tambay Obenson",isPremium:!0,readTime:"11 min read",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/nnaf-header_dd2c84c6.jpg",content:`On the morning of March 12, 2026, Akunna Cook's Next Narrative Africa Fund named its much-anticipated inaugural cohort of nine film and television projects. I ended my dispatch on the news by stating that I'd have more to say later. Well, it's later...
3608    
3609    Reactions continue to come in — on X, on Instagram, in emails and DMs, primarily from professionals on the continent, where a specific kind of exhaustion is clearly prevalent.
3610    
3611    The announcement landed in an environment that, for many, feels close to hopeless when it comes to explicitly Africa-facing film and series financing. Canal+ plans to shut down Showmax following its takeover of MultiChoice, closing off one of the continent's most prolific commissioners of local screen work. Netflix had already pulled back from original commissioning in Nigeria and Kenya while saying it would continue investing selectively, with South Africa still its main base on the continent. Amazon had already stopped backing African originals in January 2024. At the same time, Afreximbank's promised $1 billion Africa Film Fund still looms, leaving the sector with another large financing promise that has yet to produce a visible, continent-wide production pipeline.
3612    
3613    Before getting into the analytical layer, it's worth being precise about what was actually announced, because, on the surface, the headline number and what these nine projects have received are not the same thing. These nine are development-stage projects drawing from the $10 million nonprofit venture studio, not the $40 million commercial equity fund. They are technically development grantees. The larger fund has not yet committed to any of them.`},{slug:"canal-plus-fy2025-results-2026-africa-outlook",title:"Canal+'s FY2025 Results and 2026 Africa Outlook",category:"Pay-TV",date:"March 11, 2026",summary:'Canal+ released its full-year 2025 results on March 11, reporting 9.7 million subscribers in Francophone Africa — up from 8.7 million — while the newly acquired MultiChoice lost 500,000 subscribers and saw revenue fall 6%. Combined, the two businesses now cover 42.3 million subscribers across more than 70 countries. A €100 million "Boost Plan" targets stabilisation of the MultiChoice base through price simplification, subsidised equipment, and 1,000+ new salespeople.',author:"Tambay Obenson",isPremium:!0,readTime:"12 min read",headerImage:`${At}/canalfy25-cropped_0294e1eb.jpg`,content:`The numbers Canal+ released on March 11 tell two stories at once. In French-speaking Africa, where the company has operated since the 1990s, 2025 was one of the strongest subscriber years in 15. The base reached 9.7 million, up from 8.7 million at end-2024, driven in part by AFCON sports rights, which drew peak audiences of 5 million viewers for a single match in Morocco.
3614
3615Then there is MultiChoice. The South African-headquartered pay-TV group that Canal+ completed acquiring in late 2025 lost 500,000 subscribers in 2025. Revenue fell 6 percent. Adjusted earnings before interest and tax dropped 14 percent. Free cash flow was negative.
3616
3617Combined, the two businesses now cover 42.3 million subscribers in more than 70 countries, making Canal+ the dominant pay-TV operator across the African continent by subscriber count. The question the results were always going to be asked to answer is whether the acquisition is a platform for continental growth or an expensive inheritance of someone else's problems. The honest answer, based on what management disclosed, is both.`},{slug:"lay-of-the-land-africa-streaming-pay-tv-market-2026",title:"The Lay of the Land: Africa's Streaming and Pay-TV Market, Right Now",category:"Streaming",date:"March 10, 2026",summary:"The global platforms pulled back. The local ones are filling the gap. A continent-wide picture of what the streaming and pay-TV market actually looks like right now — five regions, one picture — ahead of Canal+'s FY2025 earnings call.",author:"Tambay Obenson",isPremium:!0,readTime:"13 min read",headerImage:`${At}/akoroko-lay-of-the-land-hero_1535759c.jpg`,content:`Tomorrow, Canal+ presents its fiscal year 2025 earnings, the first full financial results since the MultiChoice acquisition closed in September. It's the presentation "everyone" has been waiting for, and I'll be back with a detailed read once it's done. For now, I want to give you what I've spent most of this past week assembling: a continent-wide picture of what the streaming and pay-TV market actually looks like at this particular moment.
3618    
3619    The Showmax closure announcement on March 5 accelerated work we (African Film Press - AFP) were already doing. The platform's shutdown is the most consequential single event of the past twelve months in this space, but it's one chapter inside a much longer, broader story. Platforms have entered and exited. Commissioning budgets have contracted. New, smaller players have launched from inside the industry itself. And across different regions of the continent, the picture looks quite different depending on where you're standing.
3620    
3621    The past twelve months have been among the most active — and most disruptive — the African streaming and pay-TV market has seen. This is a big-picture read of where things stand regionally. Not a comprehensive accounting — there is a 70-page master report that will stay internal for now — but the proverbial view from 30,000ft, before tomorrow's Canal+ FY2025 earnings call changes whatever we think we know.
3622    
3623    **North Africa**
3624    
3625    North Africa is a genuinely distinct streaming economy from the rest of the continent — different income levels, a different language infrastru
3625cture, and a different set of dominant players. Netflix and Canal+ are present here, but the real architecture of this market is built around a set of MENA-focused platforms that rarely enter the sub-Saharan conversation.
3626    
3627    MBC Shahid — rebranded from Shahid on January 2 of this year — is the market leader by a clear margin. It closed 2024 with around 5 million SVOD subscribers. In September 2025, Saudi Arabia's Public Investment Fund completed a roughly $2 billion acquisition of a 54% stake in MBC Group. OSN+ had a strong year too, with Warner Bros. Discovery taking a $57 million equity stake in March 2025; combined paid subscribers hit 3.54 million by mid-year. StarzPlay holds its position at 3 million-plus subscribers across the region.`},{slug:"une-femme-a-kosyam-burkina-faso-political-series",title:"How a New Burkinabè Political Series Was Put Together — Watch Episode 1",category:"Television",date:"March 9, 2026",summary:'TV5MONDE began rolling out "Une femme à Kosyam" across its African service on March 8, 2026. Based on official source material, the Burkinabè political thriller received at least €160,000 in publicly identified francophone support before launch. This dispatch traces the financing structure — from a 2019 CNC grant to a TV5MONDE pre-buy — and what it reveals about how locally produced francophone African series get packaged.',author:"Tambay Obenson",isPremium:!0,readTime:"8 min read",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/une-femme-kosyam-hero_aee563b9.jpeg",content:`TV5MONDE began rolling out "Une femme à Kosyam" ("A Woman at Kosyam") across its African television service on March 8, 2026, following its release on TV5MONDE+ on March 4, 2026. The new Burkinabé series, which world-premiered in competition in the Series section at FESPACO 2025, is a 7 x 52-minute political thriller. TV5MONDE describes it as a series about a woman who becomes president of Burkina Faso and must govern under pressure amid political manipulation, corruption, and foreign interests surrounding newly discovered oil. It's created, directed, and produced in Ouagadougou by Serge Armel Sawadogo and his company Sermel Films.
3628    
3629    I came across "Une femme à Kosyam" in a TV5MONDE segment tied to International Women's Day on March 8. It features Sawadogo and the series's star, Georgette Paré. While the premise and the general conversation around the drama were genuinely engaging, the discussion of how the project was assembled and financed — particularly as it relates to Burkina Faso and broader francophone Africa — caught my attention.
3630    
3631    Based on official source material currently available, "Une femme à Kosyam" received at least €160,000 in publicly identified francophone support before launch. That figure comes from three separate official records: â
3631‚¬30,000 from the Fonds pour la Jeune Création Francophone in 2019; €50,000 from the Fonds Francophonie TV5MONDEplus, published on March 3, 2022 as part of the 2021 results; and €80,000 in finishing support in 2024, listed as €40,000 from the Organisation internationale de la Francophonie (OIF) and €40,000 in ACP-European Union bonus support.
3632    
3633    TV5MONDE's official launch material also lists a broader support structure around the series. Other participants include the Presidency of Faso; the country's Ministry of Communication, Culture, Arts and Tourism; the Fonds de Développement Culturel et Touristique; the Bureau Burkinabè du Droit d'Auteur; the Fonds pour la Jeune Création Francophone; the Fonds Francophonie TV5MONDE+; and the Fonds Image de la Francophonie, administered by the OIF with support from the European Union and the Organisation of African, Caribbean and Pacific States.
3634    
3635    TV5MONDE describes its role as a préachat, or pre-buy. In the TV5MONDE interview, Sawadogo said the production needed financial partners, that the Presidency allowed the team to shoot there, that Burkina Faso's Ministry of Culture backed the project, and that TV5MONDE's pre-buy was the point at which the team knew production could go ahead. That does not mean TV5MONDE was necessarily the largest financial contributor — the amount of its pre-buy has not been publicly disclosed.`},{slug:"after-billions-spent-african-streaming",title:"After Billions Spent: What It Takes to Succeed in African Streaming",category:"Streaming",date:"March 7, 2026",summary:"Canal+ walked away from Showmax. MultiChoice lost over R10bn. iROKOtv burned through $100m. This dispatch strips the emotion from the story and looks strictly at the financials — why the streaming math breaks in Africa, and what a more durable path might look like.",author:"Tambay Obenson",isPremium:!0,readTime:"14 min read",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-streaming-hero-cropped_dfcc042d.png",content:`I realize I've sent a few reports back-to-back on the Showmax shutdown and Canal+'s acquisition of MultiChoice, but it's an evolving situation with plenty still to unpack as I learn more. My intent is not to overwhelm your inboxes on this topic — only to share the most interesting insights in real time. I've been closely following the South African press for obvious reasons, especially the financial media and their number-crunching of the Showmax debacle. Among them, on Moneyweb, written by Hilton Tarrant, "Billions wasted, well over R10bn in trading losses – how Showmax failed."
3636    
3637    This time, I'm stripping the emotion out of the story and looking str
3637ictly at the financials and available data to understand why Canal+ pulled the plug, what MultiChoice was thinking with the Showmax relaunch, and what lessons can be drawn for any other platforms planning to enter the African streaming space with pan-African ambitions.
3638    
3639    Based on the company's own targets, its later disclosures, and the conditions it was operating in, the biggest misread looks like this: MultiChoice appears to have treated Africa as a large, underserved streaming market that could grow fast once it had better technology, more content from global studios, live sports, mobile-friendly pricing, flexible payment options, and lower data consumption. The thinking is plain in its May 2023 investor pitch: the company introduced a relaunch powered by Peacock — the technology platform built by Comcast/NBC Universal — projected subscriber numbers more than three times higher than its previous model, targeted $1 billion in annual revenue by 2028, and expected to stop losing money by 2027.
3640    
3641    These numbers are well documented.
3642    
3643    To its credit, MultiChoice did solve some key access problems for customers: mobile-only plans for people without televisions or home internet, broad payment options, very low data caps for areas with weak connectivity, the ability to download content for offline viewing, local-language programming, and access to the English Premier League. Those were genuine improvements, and the company leaned on its long history across African markets as a competitive advantage.
3644    
3645    The problems came after that.
3646    
3647    Again, the facts: Subscriber growth arrived. MultiChoice reported that active paying Showmax subscribers were up 44% year-on-year for the financial year ending March 31, 2025. Yet the service generated only R753 million (about $46 million) in revenue for the year, down from roughly R1 billion (just over $60 million) the year before. More people were subscribing, but the money coming in was falling. That combination suggests something went wrong with the relationship between subscriber numbers and actual income.
3648    
3649    Simply put, as an entrepreneur operating in the same space, albeit a different business, what matters is not just how many people sign up but how much they pay, how long they stay, and whether the total adds up to enough to cover costs. MultiChoice's reported results showed more subscribers, less revenue, increasingly higher losses. That usually happens when most of the new sign-ups came via cheaper promotional deals, sports-only or mobile-only packages that generate thinner income, or when customers were leaving quickly enough that the paying base never had time to build.
3650    
3651    The second likely misjudgment was underestimating how much currency weakness and economic pressure on African households would cut into the service's actual earnings. MultiChoice's broader business absorbed R5.2 billion (around $315 million) in losses due to foreign-currency movements during FY25. At the same time, the company acknowledged that the US dollar costs of technology and content licensing were rising as local exchange rates fell.
3652    
3653    The third likely misjudgment was believing that knowing the continent well was enough to offset the harsh economics of streaming. MultiChoice did have genuine local advantages. But global streaming economics are the same no matter the context: a platform spends heavily on original productions, technology, and marketing. If only a few million people subscribe as a result, the platform loses money. If tens of millions subscribe, the same infrastru
3653cture costs are spread across many more paying users, and the service can start making money.
3654    
3655    In plain terms, Canal+'s decision to shut down Showmax after taking control was an external, financially disciplined assessment of that reality. Canal+'s CEO Maxime Saada called the losses unsustainable.`},{slug:"canal-plus-startimes-african-television-market-after-showmax",title:"Canal+, StarTimes, and the African Television Market After Showmax: A New Baseline",category:"Streaming",date:"March 6, 2026",summary:"With Showmax gone, Canal+ and StarTimes now define the pay-TV landscape across sub-Saharan Africa. This dispatch maps Canal’s production infrastructure, its Francophone subscriber base, the StarTimes footprint, and what the field looks like after the continent’s most-watched streaming platform shuts down.",author:"Tambay Obenson",isPremium:!0,readTime:"9 min read",headerImage:`${At}/Gemini_Generated_Image_39qpj939qpj939qp_dd5a558e.png`,content:`I’m not going to recap the Canal+/MultiChoice acquisition here. That ground has been covered extensively on this platform. Those who still need the background before going further can catch up on the earlier Showmax Shutdown dispatch.
3656    
3657    Canal+’s African content strategy predates the MultiChoice deal by several years. Its current phase of equity investments in African production companies began with the acquisition of Nigeria’s ROK Studios from IROKOtv in July 2019, after which Canal+ began building a portfolio of stakes in African production companies. Each operates in a distinct language market.
3658    
3659    Earlier steps in that strategy go back even further, including the launch of A+, a general-entertainment channel for Francophone Africa, in October 2014, and Canal+’s first wave of commissioned series in 2018.
3660    
3661    ROK Studios gave Canal+ access to over 540 films and a library of more than 2,000 hours of Nollywood content.
3662    
3663    Plan A, an Ivorian studio in which Canal+ is a majority shareholder, produced Canal+’s first Ivorian original series, “Invisibles,” which aired in October 2018.
3664    
3665    On 5 July 2022, Canal+ acquired Rwanda’s Zacu Entertainment, a leading Kinyarwanda producer, with a self-reported output of 150+ hours of original content per year (Canal+’s acquisition press release cited 500+ hours, a figure that likely includes distributed third-party content), and committed to launching a 100%-Kinyarwanda channel.
3666    
3667    The most recent addition is Marodi TV, Senegal’s leading drama studio. Canal+ took a minority stake on 22 March 2024. Founder Serigne Massamba Ndour remains the majority shareholder and continues to manage the company under a different ownership structure than Canal+’s majority positions in ROK, Plan A, and Zacu. Marodi’s catalogue covers over 600 hours of content. Its YouTube channel has grown to 8.59 million subscribers as of March 2026. Canal+ and Marodi have co-produced multiple series, and in June 2024, launched Pulaagu, a Canal+ channel in Pulaar/Fulfulde serving the Fulani community across Senegal, Guinea, Mali, Mauritania, and several additional countries.
3668    
3669    Across these four investments, Canal+ holds production infrastructure in Nigeria, the Ivory Coast, Rwanda, and Senegal. The South African production base was absorbed with the acquisition of MultiChoice, whose Showmax Originals catalogue now migrates to linear DStv channels (Africa Magic, M-Net, kykNET, Mzansi Magic) following the closure of Showmax.
3670    
3671    The channel portfolio for Francophone Africa goes through A+, the flagship entertainment channel broadcasting across 20+ countries and airing approximately 70% African-produced content; Nollywood TV, which carries French-subtitled Nigerian films; Canal+ Pop, launched September 2021 as a reality, comedy, and magazine channel; and Canal+ Magic, which replaced Canal+ Elles in September 2025 as a general-entertainment evening channel.
3672    
3673    Canal+ Afrique CEO David Mignot confirmed the Francophone subscriber base had reached approximately 9 million by 2025, up from 8.1 million at end-2023 and roughly 4 million in 2018.
3674    
3675    The original content slate highlights have included “Invisibles” (Ivory Coast, produced 2018), “Sakho & Mangane” (Senegal, produced 2018, premiered March 2019), a few Marodi co-productions, and Canal+’s first Nigerian original, “Lagos Police Criminelle,” which premiered on Canal+ Pop in July 2025 — among others.
3676    
3677    **The Field After Showmax**
3678    
3679    Showmax launched in August 2015 as South Africa’s first domestically headquartered streaming service. Its 2024 relaunch, backed by NBCUniversal/Comcast (which held a 30% stake) and powered by Peacock technology, represented a combined equity investment of approximately $309 million. It failed to meet subscriber or revenue targets — a challenge that only worsened. Canal+ CEO Maxime Saada told investors in January 2026 that the platform’s failure was obvious.
3680    
3681    myCANAL is Canal+’s global OTT app, deployed across more than 30 countries and all Francophone African markets. Following the Showmax closure, Canal+ is rolling it out across Anglophone Africa as its primary streaming product. Canal+ Africa CEO Mignot described the continent as infrastructurally challenged, but “prime for growth on pay television.”
3682    
3683    The streaming landscape is further consolidated by Canal+’s June 2025 deal with Netflix to distribute Netflix across 24 French-speaking sub-Saharan African countries, effective July 2025, the first bundled distribution deal of its kind in Francophone sub-Saharan Africa.
3684    
3685    The sub-Saharan African streaming market now includes myCANAL, Netflix, Prime Video, and several other global and regional platforms with less reach (Disney+ launched in six African countries in 2022, with South Africa as the only sub-Saharan African market in that expansion wave).
3686    
3687    Amazon stopped commissioning new African original content for Prime Video in January 2024, though the service itself continues operating across the continent.
3688    
3689    Canal+’s main pay-TV competitor is obviously not Netflix, which operates in subscription streaming. It’s arguably StarTimes, the Chinese-backed network that operates across Anglophone, Francophone, and Lusophone sub-Saharan Africa, yet rarely enters these conversations. StarTimes has operated in Africa for more than two decades, entering the continent in 2002 and securing its first operating license in Rwanda in 2007.
3690    
3691    StarTimes self-reports approximately 13 million pay-TV subscribers and 27 million OTT app users. The company operates across more than 30 African countries and distributes television through a combination of ground-based broadcast transmitters that send signals to household antennas, satellite packages, and a mobile streaming service called StarTimes ON.
3692    
3693    Where Canal+ and MultiChoice compete heavily for urban, mid-to-upper-income subscribers, StarTimes has historically targeted mass-market and rural audiences, though the companies overlap in several markets. That positioning helps explain why StarTimes’ continued growth deserves more attention than it gets, particularly in this moment.
3694    
3695    The case for taking StarTimes seriously as a long-term competitor to Canal+ rests on where television growth in Africa is most likely to come from. The Chinese-owned operator is one of the continent’s largest television distributors. Much of that footprint grew out of earlier partnerships with governments during the transition from analogue to digital broadcasting. The strategy that built that footprint relied primarily on distribution and price, positioning packages below the entry levels of most satellite pay-TV operators and targeting households that had not previously subscribed to television services.
3696    
3697    Content has largely come from licensed international channels, imported dramas, and sports rights, with comparatively limited investment in original African productions, though the company has experimented with localized programming in several markets since the late 2010s.
3698    
3699    If future subscriber growth in African television continues to come from newly connected and lower
3699-income households, StarTimes concentrates operations at the price level where many viewers first subscribe to pay television.
3700    
3701    If competition across the continent increasingly shifts toward streaming platforms and exclusive programming, StarTimes could eventually face pressure to concentrate investment in commissioning original African content for its StarTimes ON platform. As of March 2026, no large-scale production strategy of that kind has been publicly announced, or even hinted at.
3702    
3703    In North Africa, Canal+ has minimal operations; the region’s streaming market is led by the MENA-focused MBC Shahid, while beIN Sports, a Qatari multinational network, dominates pay-TV sports rights.
3704    
3705    Canal+ has committed to significant cost reductions through 2030. What it has not committed to is how much it will spend on content, production, or market development across the continent. Those are different questions, and as of this report, they are unanswered.`},{slug:"kenya-kfcb-regulate-unlicensed-film-production",title:"Kenya Moves to Regulate Eight Years of Unlicensed Film Production by June",category:"Policy",date:"March 6, 2026",summary:"The Kenya Film Classification Board has issued a 90-day amnesty — March 4 to June 4 — for filmmakers to submit works produced since 2018 that have not met licensing and classification requirements. Non-compliant films face a ban on all domestic distribution and exhibition.",author:"Tambay Obenson",isPremium:!0,readTime:"14 min read",headerImage:`${At}/kfcb-kenya-public-notice_29823ce3.png`,content:`On March 4, the Kenya Film Classification Board (KFCB) — the state body that licenses film production and classifies content for distribution and exhibition in the country — issued a notice stating that "a significant number of filmmakers have been unable to commercially exploit their work or showcase them in film festivals due to non-compliance with filming, distribution, and exhibition requirements under the Act, thus denying themselves the opportunity to earn income from their films."
3706    
3707    The Act in question, the Films and Stage Plays Act, requires a filming license before production starts and a classification certificate — essentially an age rating — before any distribution, including promotional materials like posters and trailers. In effect, no film can legally be made, distributed, broadcast, or publicly shown in Kenya without KFCB approval.
3708    
3709    You will recall the January 23 Court of Appeal ruling that came out of Wanuri Kahiu's eight-year legal fight over the banning of "Rafiki" in a judgment that struck down provisions of this same Films and Stage Plays Act, including the powers that had long permitted KFCB to use force during filming and to retain excised portions of a film. Six weeks after that ruling, the same board is issuing compliance deadlines under the same statute.
3710    
3711    That March 4 notice offers an amnesty: a 90-day grace period from March 4 to June 4, 2026, for filmmakers to submit works produced from 2018 to date that have not met statutory licensing and classification requirements. Any film not duly licensed and classified by the end of the grace period will be barred from distribution, broadcast, or public exhibition.
3712    
3713    In practical terms, a Kenyan film produced at any point in the last eight years without going through KFCB — which the board's own framing describes as a substantial portion of the country's output — has until June 4 to regularize its legal status, or face a ban on all domestic distribution and exhibition.`},{slug:"showmax-shutdown-confusion-reaction-clarification",title:"The Showmax Shutdown: Confusion, Reaction, Clarification",category:"Streaming",date:"March 6, 2026",summary:"The Canal+ takeover brings the platform to an end. Industry reaction spreads from Nairobi to Lagos — confusion, frustration, and a creeping sense that the closure is part of a larger structural breakdown. AFP partners respond.",author:"Tambay Obenson",isPremium:!1,readTime:"12 min read",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/showmax-shutdown-hero_331f
37136c62.jpg",content:`I covered the mechanics of the Showmax shutdown earlier today — the NBCUniversal joint venture that needs to be unwound, the legal issues delaying a specific closure date, and what Canal+ has said publicly. That report looked mainly at the business side.
3714    
3715    At the same time, Showmax subscribers received an unexpected email confirming the service will shut down "in the near future." No date. No transition plan. No explanation of what happens to titles, active productions, or existing commissioning relationships.
3716    
3717    Across the continent, particularly in eastern, western, and southern African markets, the reaction from industry professionals of all stripes and consumers has been confusion, frustration, and a creeping sense that the closure is part of a larger, even ongoing, structural breakdown. What comes next? The loss of another major commissioning platform on the continent? Why was the decision communicated in a seemingly thoughtless manner?
3718    
3719    On X and Instagram, initial responses are disbelief, disappointment, and even sarcasm. Several posts frame the shutdown as confirmation of a streaming environment already in retreat. Some anticipate a return of debates about why global platforms have "pulled back from Africa."
3720    
3721    "People feel defeated," said Ikeade Oriade of African Film Press (AFP) Nigeria partner What Kept Me Up. "It comes after Netflix, and then Amazon Prime Video scaled back with very little communication. The Showmax decision feels abrupt because there is almost no messaging about what happens next. Normally, that information comes immediately — this is what the transition looks like."
3722    
3723    He was referring to earlier reconsiderations by global streaming platforms operating on the continent, including Netflix reducing local commissioning primarily to South Africa, and Amazon Prime Video's early 2024 exit from African originals.
3724    
3725    Among industry professionals, a key complaint is not just the decision itself but also the absence of any transition plan in the announcement.
3726    
3727    Jennifer Ochieng of AFP East Africa partner Sinema Focus (Kenya-based) added, "That email should have come with a plan. Yes, we're shutting down Showmax, but what then? It was vague through and through. Without clarity on what comes next, that's what you're seeing: people speculating, people panicking."
3728    
3729    The concern is understandably sharpest in markets where Showmax invested most heavily in local originals. In Kenya, for example, the platform arguably became one of the largest investors in local television and film content over the past five years. Industry professionals there now worry about an immediate gap in commissioning and financing, with no clarity yet on what replaces it.
3730    
3731    Ochieng identified the geographic fault line: "South Africa's creative industry is protected. But there are markets hanging in the balance. It helps explain a specific kind of alarm."
3732    
3733    She is referring to the binding commitments Canal+ made to South African regulators as a condition of the MultiChoice acquisition — commitments that specifically protect South Africa's creative industry. No equivalent obligations cover Kenya, Nigeria, or other markets.
3734    
3735    From Nairobi, Gloria Nkatha of the Talk Film To Me podcast called it "a really big hit," and also raised the possibility that the contraction could push African filmmakers toward building their own platforms, regional collaborations, or driving theatrical expansion across the continent.
3736    
3737    The reaction online is also an indication of how little public information has circulated about the Canal+ takeover itself. Some of the confusion and speculation appear to stem from a lack of clarity about the French media conglomerate's plans for the combined company.
3738    
3739    Oriade pushed back, particularly against the rush to assign blame. "A lot of misinformation has been flying around," he said. "Even in Nigeria, people are already saying it's the government's fault. It's important for everyone in each affected market to note that this is actually an Africa-wide business decision. No one person did anything wrong. The business just stopped making sense from Canal+'s perspective."
3740    
3741    Against that backdrop, the three African Film Press (AFP) partners connected in our WhatsApp group, and we agreed that the honest structure for responding was to start by simply separating what can be verified from what remains uncertain.
3742    
3743    Showmax was a commissioning entity. When it closes, that specific buyer disappears. That is a real, concrete loss. It's correct that fewer platforms mean fewer commissioners, and the anxiety is legitimate.
3744    
3745    The Showmax Originals catalogue does not disappear. It migrates to linear DStv channels (Africa Magic, M-Net, kykNET, Mzansi Magic). That is not the same as new commissioning, but it's not erasure either. Existing commissioning contracts also do not automatically dissolve when a platform shuts down; rights and window agreements must be reassigned, bought out, or renegotiated before titles move elsewhere.
3746    
3747    Canal+ itself is an active commissioner with production infrastru
3747cture already in place in Nigeria (ROK Studios), Côte d'Ivoire (Plan A), Rwanda (Zacu Entertainment), and Senegal (Marodi TV). Those media companies do not suddenly end with Showmax. Whether Canal+ will commission at Showmax's volume is, more or less, something that might be answered in about six days, when Canal+ publishes its first full-year results (including post-acquisition) on March 11, 2026.
3748    
3749    The Canal+/Netflix distribution deal in Francophone Africa is a distribution arrangement. Canal+ offers Netflix as part of its subscription packages across 22+ French- or partially French-speaking African countries. It does not affect what Netflix itself commissions in Africa, which is a separate decision Netflix makes independently. The key point here is that Netflix can still commission films and series if it chooses to. And I wouldn't entirely rule out co-produced projects with Canal+ in markets where the streaming giant gained traction early, even though they eventually scaled back (Nigeria and Kenya notably).
3750    
3751    The Canal+/MultiChoice integration also retains senior MultiChoice leadership within the Canal+ Africa structure, meaning some executives who previously oversaw DStv and Showmax commissioning continue to hold high-level roles in the combined company.
3752    
3753    What is genuinely uncertain and should be stated as such: When myCANAL — Canal+'s global streaming platform, already operating across Francophone Africa — expands into Anglophone Africa, will it do so with real commissioning budgets for local originals, or will it rely primarily on the existing Canal+ catalogue and acquisitions? Canal+ has not said. Whether the unified Canal+/MultiChoice entity will produce a net increase or net decrease in African original commissioning also remains an open question.
3754    
3755    My realistic but grounded response: To reiterate, the concern is certainly real; I'm not downplaying it. But the picture before us is not entirely complete. Moreover, we can say with some certainty that this is not a case of simple subtraction. One streaming platform closes; a pay-TV group that now controls the platform's parent company — with roughly 23 million African subscribers, binding local-content spending obligations in South Africa, and equity stakes in four African production companies — absorbs the platform's market.
3756    
3757    But to Nkatha's point earlier in the piece, this kind of shock may also compel more local actors — streaming platforms, entrepreneurs, producers, financiers, and others across the chain — to step in and fill gaps (country, regional, continental), or at least reconsider how much of the sector's future continues to rest on outside players.
3758    
3759    The reactions in response to today's news will likely continue until March 11, when Canal+ publishes its first combined financial results since completing the MultiChoice acquisition in September 2025. The volume and consistency of the backlash effectively provide Canal+ executives with an early preview of the concerns they would need to address regarding the future of MultiChoice and its markets. As I stated in a recent Akoroko Premium report, I can't think of a more anticipated or consequential upcoming presentation — even more so given today's turbulence.`},{slug:"canal-plus-showmax-shutdown",title:"Canal+ Moves to Shut Down Showmax After Years of Losses",category:"Streaming",date:"March 5, 2026",summary:"Subscribers were told March 5 that Showmax will close 'in the near future' following a Canal+ review of its streaming operations. No specific date has been given. Service continues uninterrupted for now.",author:"Tambay Obenson",isPremium:!0,readTime:"10 min read",headerImage:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/showmax-hero-v3_fccc65b4.png",content:`Canal+ and MultiChoice confirmed earlier today that Showmax, the pan-African streaming service currently operated as a joint venture between MultiChoice and NBCUniversal (Comcast), will be discontinued. Subscribers received an official notification on March 5 stating that the Showmax board had decided to shut down the service "in the near future," with no specific date provided. The email told subscribers that service would continue uninterrupted in the interim, that no action was required from them, and that they would receive advance notice before anything changes.
3760    
3761    The announcement ends what has been a troubled chapter for one of the continent's most prominent streaming platforms. Showmax launched in 2015 as a MultiChoice product and was relaunched in 2024 as a joint venture with NBCUniversal, which brought Peacock content and a restructured technology stack to the service. That relaunch was accompanied by significant investment and a repositioning as a premium sports and entertainment destination — but subscriber growth remained well below projections, and the service struggled to compete against free-to-air alternatives and the entrenched dominance of DStv in the pay-TV segment.`},{slug:"comscore-african-box-office-measurement",title:"How Comscore Measures African Box Office: Nine Countries, Seven Years, No Expansion",category:"Data & Methods",date:"March 4, 2026",summary:"Since March 2019, Comscore has tracked box office receipts in nine African countries. Seven years on, that footprint has not grown. This dispatch maps exactly which exhibitors report, which countries are covered, and — critically — which are not.",author:"Tambay Obenson",isPremium:!0,readTime:"18 min read",headerImage:`${At}/art1-comscore_86d76a63.jpg`,content:`This piece grew out of work we are doing on African Screen Intelligence (ASI), the market intelligence platform under development at African Film Press (AFP). Building a dataset for a sector where reliable information is scattered, undocumented, or non-existent means constant course corrections. A single piece of information can send you into a 
3761new line of research, and a short conversation can surface something that rewrites what you thought you understood.
3762    
3763    Comscore is widely known as the dominant global box office measurement and analytics firm. I realized I had never examined how it operates across Africa. Its data is sold via enterprise contracts with no public pricing. Access is designed for major studios and large distributors, with little visibility for the rest of the sector, and I could not locate a basic public explanation of its Africa operations — which exhibitors participate, which countries are covered, and on what terms.`},{slug:"joburg-film-festival-2026-opening-day",title:"Joburg Film Festival 2026: Opening Day Overview — Programme, Industry Platform, and Context",category:"Festivals",date:"March 3, 2026",summary:"770 submissions. 60 films. A three-day industry market. The Joburg Film Festival opens today — this is your complete guide to the programme, the industry platform, and the context in which this edition arrives.",author:"Tambay Obenson",isPremium:!0,readTime:"14 min read",headerImage:`${At}/art2-joburg_f8709adf.jpg`,content:`Note: An earlier version of this overview went out on February 5. Since then, festival leadership has shared more publicly, while the programme has been further expanded and detailed. With the opening today, March 3, 2026, what follows is a fuller, updated version of that piece that captures what has been announced and said in the weeks since, along with refreshed insights.
3764    
3765    Eight years in, the Joburg Film Festival has developed a curation that few events on the continent match — a blend of international and African films tethered to a serious industry programme, hosted in the commercial and creative heart of South Africa's screen sector. The filmmakers and professionals it draws each year cover a range of established and emerging voices, and the programming reflects a genuine effort to hold multiple conversations at once: about craft, about market access, about what it means to make films here.`},{slug:"parrot-analytics-african-cinema",title:"Parrot Analytics Is Bringing Its Global Measurement Tools to African Cinema for the First Time",category:"Market Data",date:"March 3, 2026",summary:"Parrot Analytics, whose demand measurement tools are used by every major streaming platform, is applying its methodology to African cinema for the first time — in anticipation of Next Narrative Africa Fund's forthcoming landscape study.",author:"Tambay Obenson",isPremium:!0,readTime:"10 min read",headerImage:`${At}/art3-parrot_cb39533d.jpg`,content:`When Next Narrative Africa Fund (NNAF) and Los Angeles-based entertainment analytics firm Parrot Analytics announced a partnership in early February, their plan to release a landscape study on "African entertainment" caught my attention — as it did for other professionals tracking this space. Given how many reports have attempted to map similar terrain, I wondered what this one might actually capture that others have not.
3766    
3767    I started pulling research together for an Akoroko Premium assessment, then other things took over, as they do. The MBC Egypt-Saudi Arabia story I dispatched yesterday — MBC Group is listed among Parrot's clients — brought me back to it, and with the NNAF/Parrot report due any day now, I thought I should go ahead and complete my piece. To be sure, this is not a challenge to what they're building. It's closer to what I'd call informed anticipation — trying to understand, based on what's publicly known about Parrot's methodology and track record, what a study like this can realistically tell us, and where its limits are likely to be.`},{slug:"canal-plus-outlasting-amazon-netflix-africa",title:"Canal+ Brass on Outlasting Amazon and Netflix in Africa (Addendum)",category:"Streaming",date:"March 2, 2026",summary:"OTT penetration under 5%, limited fibre, weak competition. Canal+ executives describe the structural conditions they believe give the company a durable advantage over Amazon and Netflix in sub-Saharan Africa.",author:"Tambay Obenson",isPremium:!0,readTime:"12 min read",headerImage:`${At}/art4-canal_aaff0ab0.jpg`,content:`OTT penetration in sub-Saharan Africa remains under 5% by most estimates. Fibre infrastru
3767cture is limited. The competitive landscape, while growing, remains structurally different from mature markets in Europe and North America. Canal+ executives, speaking at a recent industry event, described these conditions not as obstacles but as structural advantages — a moat that they believe will outlast the current push by Amazon and Netflix into the region.
3768    
3769    The argument, in brief: Canal+ has spent decades building distribution infrastructure, local content relationships, and subscriber management systems calibrated to the specific payment and connectivity realities of sub-Saharan Africa. Amazon and Netflix, whatever their content budgets, are working from a standing start on those dimensions.`},{slug:"localized-pricing-expansion-akoroko-premium-15-countries",title:"Localized Pricing Expansion: Akoroko Premium Now Available in 15 Countries",category:"Announcement",date:"February 27, 2026",headerImage:`${At}/pricing-header-v3_bb0e11a1.png`,summary:"Africa's footprint inside Akoroko Premium just grew. Starting March 1, 2026, localized pricing is now available in 15 countries — including six new additions: Democratic Republic of the Congo, Egypt, Ethiopia, Malawi, Rwanda, and The Gambia.",author:"Tambay Obenson",isPremium:!1,readTime:"4 min read",content:`Starting March 1, I'm expanding localized pricing for Akoroko Premium across additional African countries. This builds on the expansion strategy first introduced in April 2025 and continues to make the platform's offerings more accessible across Africa.
3770    
3771    Localized pricing means I adjust my subscription fees based on each country's economic conditions. Instead of charging everyone the same US dollar amount, I set prices in local currencies that better match what people can reasonably afford in different markets. This makes the service accessible to more professionals while still positioning it as a premium product within each local context.
3772    
3773    Localized pricing is now available in 15 countries:
3774    
3775    **Original April 2025 launch cohort:** Botswana, Kenya, Namibia, Nigeria, South Africa, Tanzania, Uganda, Zambia, and Jamaica.
3776    
3777    **New countries added, effective March 1, 2026:** Democratic Republic of the Congo, Egypt, Ethiopia, Malawi, Rwanda, and The Gambia.
3778    
3779    **Additional Local Pricing — March 2026 Expansion**
3780    
3781    Note: The original nine-country pricing table remains unchanged.
3782    
3783    - Democratic Republic of the Congo — 9,100 CDF per month / 81,900 CDF per year
3784    - Egypt — 290 EGP per month / 2,610 EGP per year
3785    - Ethiopia — 770 ETB per month / 6,930 ETB per year
3786    - Malawi — 6,950 MWK per month / 62,550 MWK per year
3787    - Rwanda — 8,700 RWF per month / 78,300 RWF per year
3788    - The Gambia — 290 GMD per month / 2,610 GMD per year
3789    
3790    The pricing structure remains consistent with April 2025: annual subscriptions are set at nine times the monthly rate.
3791    
3792    If you are based in any of the newly added countries, and you are a subscriber (and you are, because you're reading this), you can now subscribe in your local currency.
3793    
3794    **Why These Countries?**
3795    
3796    Simple. The additional Anglophone markets are the result of growing interest and engagement, even when it's incremental.
3797    
3798    I don't run marketing campaigns; not yet. Beyond occasional social media teases, new subscriptions tend to be organic — followers on social platforms, word of mouth, and my appearances in various international spaces, particularly throughout last year.
3799    
3800    So when someone in a country I have not actively engaged with, or have had limited engagement with, subscribes, I pay attention. When it happens more than a few times, I take it seriously.
3801    
3802    I also track industry movement across the continent. When I observe early activity — whether private or institutional — in a country that has been largely absent from continental screen sector discourse, I monitor it closely.
3803    
3804    These new country additions meet one or both of those criteria.
3805    
3806    I've also started seeing traction from Francophone Africa. While Akoroko Premium operates as an English platform, development of a French-language version is underway. It's not just a matter of translating the email reports. It means building an ecosystem of the Akoroko Premium platform for French-speaking markets. It has to stand on its own, with the right people and systems in place to do it properly. I'm more than overstretched as is. But the interest is certainly there.
3807    
3808    **What This Means for You...**
3809    
3810    If you're currently based in one of the 15 countries above (including the six new additions) and would like to switch your subscription to your local currency price, just reply to this email.
3811    
3812    Of course, feel free to forward this announcement across your networks!`},{slug:"berlinale-2026-distribution-sales-report",title:"Distribution & Sales Report: African & Diaspora Films at the 2026 Berlinale",category:"Distribution",date:"February 22, 2026",summary:"After Berlinale 2026, who actually has deal
3812s? A territory-by-territory breakdown of African and diaspora films in the market — mapping each title by country of origin, sales agent, and confirmed territory.",author:"Tambay Obenson",isPremium:!0,readTime:"25 min read",headerImage:`${At}/art5-berlinale-dist_cb483454.jpg`,content:`The 76th Berlin International Film Festival closed today, February 22. With Sundance also behind us — two of the five major international film festivals now in the books for 2026 — this felt like a reasonable moment to take stock of where distribution and sales stand for the African and diaspora films that were in play across both markets.
3813    
3814    The Berlin slate was notable: a strong year across sections, including three African films in Competition — a record at that level. The deals, or the absence of them, tell a familiar story with some variations worth paying attention to. One title generated genuine multi-territory traction during the European Film Market (EFM) window. Several others entered the market with financing-embedded domestic arrangements already in place, but no international deals to announce.`},{slug:"paradise-berlinale-review",title:'"Paradise" (Berlinale Review): Two Fatherless Boys, One Scam, and a Film Still Finding Its Shape',category:"Reviews",date:"February 22, 2026",summary:"Ten years in the making, Jérémy Comte's first feature has formal control and real ambition. Two fatherless boys, one intercontinental scam, and a structure that doesn't always hold.",author:"Tambay Obenson",isPremium:!0,readTime:"11 min read",headerImage:`${At}/art6-paradise_0022b2c5.jpg`,content:`Kojo's father, a fisherman in Accra, disappears during a storm at sea. Before he is gone, he tells his son a story: close your eyes and imagine a place that brings you peace. Paradise. Years later, in Quebec, a woman named Chantal falls in love with a cargo ship captain she has never met. The captain's name, his profession, and the story he tells her are all fabrications, created by Kojo, now a teenager running romance scams from a compound in Accra.
3815    
3816    The film is structured in three titled chapters — "The Boat," "The Captain," "The Fire." Comte and co-writer Will Niava, an Ivorian-Ghanaian filmmaker raised in Accra and educated at the same Montreal film program as Comte, are interested in the economics and daily texture of the scam operation itself: the recruitment pipeline, the training of younger boys, the six-month cultivation of a single target.`},{slug:"haroun-kamilindi-berlinale-2026-awards",title:"Haroun and Kamilindi Among Winners at Berlinale 2026 Independent Jury Awards",category:"Festivals",date:"February 21, 2026",summary:"From Chad to Rwanda, Zimbabwe to South Africa: African storytellers take Independent Jury awards at Berlinale 2026, with a wider geographic spread than any previous edition.",author:"Tambay Obenson",isPremium:!0,readTime:"8 min read",headerImage:`${At}/art7-haroun_71ce4808.jpg`,content:`African filmmakers received recognition today in the Independent Jury awards at the 76th Berlin International Film Festival, including the FIPRESCI Competition, TEDDY Awards, and the Berlinale Talents Mastercard Enablement Programme.
3817    
3818    In the FIPRESCI Jury Competition, Chadian director Mahamat‑Saleh Haroun was honored for "Soumsoum, la nuit des astres" (Soumsoum, the Night of the Stars), a French‑Chadian drama following a teenager troubled by unexplained visions who befriends an outcast woman in a remote village as they confront community hostility and navigate mystical and personal challenges. At the TEDDY Awards, which recognize films with LGBTQ+ themes across Berlinale sections, the short film "TAXI MOTO" by Gaël Kamilindi was awarded Best Short Film.`},{slug:"sata-cissokho-berlinale-world-cinema-fund",title:"Sata Cissokho Eyes Greater Support for African Filmmakers as New Berlinale World Cinema Fund Chief",category:"Policy",date:"February 21, 2026",summary:"Equity-only funding could lock out African filmmakers entirely, Cissokho says. In her first extended interview since taking the WCF helm, she argues that public backing is not a subsidy — it is a prerequisite.",author:"Tambay Obenson",isPremium:!0,readTime:"15 min read",headerImage:`${At}/art8-cissokho_21fbe4e9.jpg`,content:`The World Cinema Fund (WCF) at the Berlin International Film Festival supports film projects from Africa, Latin America, the Caribbean, the Middle East, Central and Southeast Asia, and the Pacific, as well as Bangladesh, Nepal, Mongolia, and Sri Lanka. Since 2004, it has backed over 400 projects across development, production, and distribution.
3819    
3820    Sata Cissokho, born and raised in France with Senegalese heritage, brings over a decade of experience in international film sales and acquisitions. She has a long track record of championing discoveries from the Global South, including "This Is Not a Burial, It's a Resurrection" by Lemohang Jeremiah Mosese and "Omen" by Congolese-Belgian musician and filmmaker Baloji. For Cissokho — who gave the Keynote address at the Berlinale — equity-only funding models are not a neutral evolution of the industry; they are a structural barrier that disproportionately affects filmmakers from regions where public financing infrastru
3820cture is weak or absent.`},{slug:"soumsoum-berlinale-review",title:`"Soumsoum, The Night of the Stars" (Berlinale Review): Haroun's Mythic Return to Chad`,category:"Reviews",date:"February 20, 2026",summary:"Two women share a secret language of foresight in a world determined to silence them. Haroun's mythic return to Chad has the formal control of his best work — but the spell it casts in its first hour is not fully sustained.",author:"Tambay Obenson",isPremium:!0,readTime:"13 min read",headerImage:`${At}/art9-soumsoum_f5a126ba.jpg`,content:`There is a moment in the press conference for "Soumsoum, The Night of the Stars," when director Mahamat-Saleh Haroun is asked whether certain burial rituals depicted in his film correspond to actual practice in Chad. He corrects the questioner firmly: this is not an ethnographic document. It is a fiction, rooted in philosophy and belief, but not beholden to anthropological accuracy. That defense matters, because the film invites exactly that kind of scrutiny — it is set in a specific place, draws on specific traditions, and asks its audience to take its cosmology seriously.
3821    
3822    I've watched all of Haroun's work, produced over more than two decades, from "Abouna" to "Lingui, The Sacred Bonds," and long admired the seriousness with which he returns to his native Chad as both subject and site. "Soumsoum, The Night of the Stars" feels recognizably his — austere, patient, delivered with clear conviction — and yet it also leaves me uncertain about how much new ground that commitment covers here.`},{slug:"souleymane-cisse-one-year-on",title:"Souleymane Cissé, One Year On: The Unfinished Work",category:"Profiles",date:"February 19, 2026",summary:"Cissé fought censorship, scarcity, and indifference. One year after his death, those battles outlive him. This dispatch takes stock of what he left behind — and what remains to be done.",author:"Tambay Obenson",isPremium:!0,readTime:"16 min read",headerImage:`${At}/art10-cisse_3879a656.jpg`,content:`One year after the passing of Souleymane Cissé on February 19, 2025, the landscape of African cinema continues to grapple with the void left by one of its most vital and defining voices. The date is not just an anniversary but a moment of reflection on a legacy that is at once monumental and frustratingly unresolved. Cissé was more than a filmmaker; he was often described as "a living archive" of African cinema's struggles and aspirations.
3823    
3824    The paradox of Souleymane Cissé's career is central to understanding his significance. Here was a director lauded on the world's most prestigious stages — a Cannes Jury Prize winner for his 1987 masterwork "Yeelen," a recipient of the Carrosse d'Or from his peers in 2023 — who spoke with a persistent, weary frustration about the state of cinema in his own country. This disconnect between international recognition and domestic reality was not incidental to his story. It was the story.`},{slug:"morocco-senegal-coproduction-treaty-berlinale",title:"Morocco–Senegal Reopen 1992 Co-Production Treaty at Berlinale 2026",category:"Industry",date:"February 19, 2026",summary:"One of the continent's older co-production agreements enters modernization talks. Morocco and Senegal used the Berlinale as the venue for initial discussions on revising a treaty that has not been substantially updated in over three decades.",author:"Tambay Obenson",isPremium:!0,readTime:"9 min read",headerImage:`${At}/art11-morocco-senegal_5da32f00.jpg`,content:`On Sunday, February 15, 2026, at the ongoing 76th Berlin International Film Festival (February 12–22), Morocco and Senegal formally reopened discussions to modernize their bilateral film co-production agreement, first signed on January 17, 1992, in Rabat.
3825    
3826    The meeting brought together Reba Benjelloun, Director of the Moroccan Cinematographic Center, and Bacary Sarr, Senegal's Secretary of State for Culture, Creative Industries, and Historical Heritage. According to the Senegalese Press Agency (APS), both sides explored revising the 1992 accord to incorporate training, post-production, distribution, and the creation of a joint legal and technical body to oversee implementation. The discussions are preliminary; no revised text has been agreed.`},{slug:"african-films-efm-2026",title:"African Films After EFM 2026: 24 Titles, 17 Countries, and a Market Still Unevenl
3826y Accessed",category:"Distribution",date:"February 19, 2026",summary:"France partnered on 10 of the 24 African projects screened at EFM 2026. This dispatch maps the full slate, identifies which titles attracted buyer interest, and examines what the distribution patterns reveal about access to the market.",author:"Tambay Obenson",isPremium:!0,readTime:"22 min read",headerImage:`${At}/art12-efm_0bce00ec.png`,content:`The 2026 European Film Market (EFM, February 12 to 18), held alongside the 76th Berlin International Film Festival, closed today, with more than 12,500 industry professionals in attendance — a five percent increase over the previous year. Germany led participation, followed by the United States, France, the UK, and Italy. Buyer numbers reached 1,794 across 606 total titles screened, with 83.17 percent of buyers reporting satisfaction with the market.
3827    The African and African diaspora titles identified below are sourced from the EFM 2026 catalog and cross-referenced against the EFM Screening Schedule webpage. France partnered on 10 of the 24 African projects — a figure that reflects both the depth of French co-production infrastructure on the continent and the degree to which access to the EFM remains mediated through European partnerships.`},{slug:"damola-layonu-nollywood-canada-distribution",title:"Damola Layonu and Nollywood’s Canadian Pathway",category:"Distribution",date:"January 29, 2026",summary:"Damola Layonu, a Nigerian film professional based in Canada, is building one of the few practical routes for African films to reach North American cinemas. Akoroko spoke to Layonu in an extended conversation about the mechanics, constraints, and early results of releasing Nigerian films in Canada.",author:"Tambay Obenson",isPremium:!1,readTime:"12 min read",content:`In October 2025, I spent over an hour in conversation with Damola Layonu, a Nigerian film professional based in Oshawa, Ontario, about an hour east of Toronto, Canada. Layonu trained as a lawyer and worked in both Nigeria and Canada before co-founding Snag Productions with his wife, Chiagoziem Obi, a distribution company that, in his words, is “on a mission to make Black and African cinema mainstream.” What stood out even then was his position: a Nigerian now operating inside Canada’s highly structured media environment, attempting to build one of the few practical routes for African films to reach North American audiences.
3828
3829Since our October conversation, Snag’s Canadian distribution experiment has accelerated more quickly than initially anticipated.
3830
3831**From Nigeria to Canada**
3832
3833Layonu’s route into film was indirect. He earned an LLB in Law from the University of Kent (2006–2009) and a Master’s in Computer, Communications and Media Law from Queen Mary University of London (2013–2014). After returning to Nigeria, he began practicing law before joining Spinlet, the Lagos-based digital music platform once described as “Africa’s iTunes.”
3834
3835In 2016, he entered film distribution through FilmOne Entertainment, Nigeria’s leading theatrical distributor and exhibitor. Layonu managed the 20th Century Fox account, overseeing Nigerian releases of major Hollywood blockbusters including “Logan,” “Alita: Battle Angel,” and “Assassin’s Creed.” Between 2016 and 2019, it was, he said, his introduction to “how a movie travels from the studio to the cinema.”
3836
3837When his wife emigrated to Canada, he followed in 2019. Expecting to continue in distribution, he found a system far more insular than Nigeria’s. After completing a Film and TV Business diploma at Centennial College (2021–2022), he joined Toronto-based Elevation Pictures, the largest independent distributor, in theatrical sales. He left in 2023 to build his own structure.
3838
3839“I had seen the gap,” he said. “If I wanted to make or distribute films featuring Black and African characters, who was going to shepherd them? There was no go-to when it came to Black and African film.”
3840
3841**Launching Snag Productions**
3842
3843Layonu incorporated Snag Productions initially to develop African-centered stories, later expanding into distribution after realizing how few Black or African t
3843itles reached Canadian screens. In October 2024, the company released “Farmer’s Bride” (Nigeria theatrical release: 27 September 2024) in two Landmark Cinemas locations — Whitby (in the Durham Region) and Kanata (Ottawa) — one of the few circuits open to the experiment. Attendance fell short of expectations but proved the logistics workable. The experience demonstrated that Landmark Cinemas was open to continuing the experiment, spurred by Snag’s commitment, passion, and knowledge of the core Nollywood audience demographic.
3844
3845Since then, Snag has programmed at least six films, including “Ori Rebirth” (Nigeria release 1 May 2025), “Dark Path (Ona Okunkun)” (Canada screenings 15–21 August 2025), “Ireke: Rise of the Maroons” (2025), and “Hakeem: Seeking Justice” (Nigeria release 1 August 2025). Two came via FilmOne, one through BUFF Studios UK (founded by British-Nigerian producer Emmanuel Anyiam-Osigwe), and others directly from independent filmmakers.
3846
3847Each release begins with securing a venue — half the work, as Layonu describes it — followed by delivery of digital prints, certification, localized promotion, and revenue-split negotiations with exhibitors (which typically comes first as part of securing a venue). From Snag’s share, marketing and delivery costs are deducted before remitting the balance to independent producers or rightsholders, as the case may be. Only “Ori Rebirth” had met internal revenue targets by the end of 2025, yet every title added audience data and institutional familiarity.
3848
3849After our October interview, Snag’s next release materially shifted the scale of that experiment. Nigerian superstar Funke Akindele’s latest work, “Behind the Scenes,” opened in Canada on January 16, 2026, securing bookings in 19 locations — the widest theatrical run for a Nollywood title in the country to date. In the weeks leading up to release, pre-sale screenings sold out in 10 of the 19 locations, prompting the addition of extra shows. By mid-January, cinemas had extended the film to full-week runs in 17 locations after determining that maintaining the title on screens was more economical than rotating it out on a day-by-day basis.
3850
3851According to Layonu, the film grossed over $100,000 CAD (approximately $75,000 USD) in its opening weekend — achieved entirely without Cineplex, Canada’s dominant exhibition chain, and despite Landmark having no locations in Toronto. Nigeria’s National Orientation Agency later reported the film earned $111,256 in Canada and $190,249 across North America, confirming it as the highest-grossing Nollywood release in the region.
3852
3853Meanwhile, in Nigeria, FilmOne Entertainment announced the film crossed ₦2.4 billion by late January, making it the first Nollywood production to surpass ₦2 billion (approximately $1.7 million USD) at the Nigerian box office.
3854
3855“Releasing a Nollywood film in Canada is tough,” Layonu said. “But if your film makes money, the cinemas will notice. They’ll want a piece of that pie.”
3856
3857Canada’s exhibition structure continues to compound the difficulty. Multiplexes like Cineplex and Landmark devote nearly all screens to U.S. studio releases. Independent or world-cinema slots are limited and typically reserved for festival winners or South Asian diaspora titles. Layonu recalled being told by one exhibitor: “Unless a film wins or competes at Cannes, Berlin, or Venice, or fits neatly into categories, it’s unlikely to be booked.”
3858
3859With an estimated 200,000 Nigerians living in Canada (2021 Census), programmers have long questioned whether a reliable audience exists. Snag’s screenings across not only the Greater Toronto Area but cities like Winnipeg, Saskatoon, Montreal, and Calgary have begun to produce measurable attendance routines, driven by strategic and targeted marketing as well as word-of-mouth within diaspora networks.
3860
3861**Distribution as Infrastructure and Cultural Continuity**
3862
3863Layonu sees distribution as a missing layer in Canada’s film economy as it relates to Africa. “Back home, Nigerian releases have press following them — interviews, premieres, podcasts,” he said. “Here, even Canadian filmmakers complain that local outlets rarely cover their work. We want to bridge that.” Snag now pairs screenings with community partnerships, targeted outreach, and localized promotion, aiming to convert diaspora interest into recurring cinema habits instead of trading on one-off events, as has often been the case.
3864
3865His long-term ambition is functional: “the Black A24,” as he put it — a distributor investing early in relationships and treating filmmakers as partners. While most Snag releases to date are Nigerian films, he resists the label of a Nollywood distributor. “Our focus is Black and African film,” he said. “Not all Black people are African, and not all Africans are Black.” Future acquisitions are expected from Kenya, South Africa, and Egypt, connecting African and Caribbean communities within Canada’s multicultural framework.
3866
3867As a parent of two children, ages five and two, the work is personal.
3868
3869“We might be the last generation with any real attachment to Nollywood unless we plant those seeds now,” he said. “If I’m not deliberate, my kids will just grow up on YouTube.”
3870
3871**Canada’s Policy Gap and the Diaspora Workaround**
3872
3873Canada has more than 60 official audiovisual co-production treaties, but only three with African countries: South Africa (1997), Senegal (2000), and Morocco (2012); none with Nigeria. The absence of a Nigeria treaty continues to shape Layonu’s operations. As a producer, he can access Telefilm Canada or Canada Media Fund programs that require treaty status, but not when working with Nigerian co-producers, except with express approval from the Minister of Arts & Culture. Additionally, releases cannot qualify for federal tax-credit incentives. The result is an entirely private pathway — negotiated screenings, direct deals with exhibitors, and diasp
3873ora-driven marketing.
3874
3875Across Africa, 2025 was defined by a few states formalizing what Canada and Nigeria still lack. Côte d’Ivoire’s co-production treaty with Belgium entered into force in June. Nigeria announced its first treaty with Brazil earlier in the year, to name two. Within that context, Snag’s privately built bridge functions as a micro-version of these official frameworks — small, self-financed, but already operational. “Proof of concept for readiness,” as Layonu described it. “We keep saying we need a co-production treaty,” he added. “Fine. But treaties don’t happen in a vacuum. Someone has to build the ground first.”
3876
3877He outlined three fronts for that groundwork: training access, collaborating with Canadian film schools and internships; production alignment by packaging African projects to meet Canadian compliance standards; and policy engagement with entities such as the Black Screen Office (an advocacy organization for Black screen-industry professionals) and the Canada Media Fund’s Diverse Languages Program (which backs content in languages beyond English, French, and Indigenous languages) to ensure African creators are visible within official datasets.
3878
3879These initiatives remain modest in scale, but they mirror Canada’s stated cultural-export priorities around inclusion and market expansion.
3880
3881**Planning Forward**
3882
3883Layonu’s immediate goals are now clearly time-bound. Snag plans to maintain a cadence of roughly one theatrical release per month across 2026, stage a Black History Month virtual showcase in February, and move forward with development on its first in-house co-production, “Hanne & Ciroma,” written and directed by Umar Turaki and co-produced by Layonu, Turaki, and a third player, Ulan Garba Matta, a Berlinale Talents alumnus.
3884
3885He also intends to attend Cannes 2026 and participate in Canadian and European industry markets to pursue additional platform partnerships.
3886
3887Each of these steps follows the same operating principle: compact, testable units that generate concrete data. He describes it simply as “practical before symbolic.”
3888
3889That pragmatism speaks to the structure of the current global screen economy. As Akoroko’s full-year 2025 assessment observed, accelerated consolidation secures control at the top of the market, while independent and national efforts operate in fragmented conditions below. Snag Productions occupies that lower tier — an under-capitalized but increasingly visible operation building cross-border functionality while institutional structures continue to lag.
3890
3891Layonu’s argument for continuity extends beyond commerce. He frames the absence of African films in Canadian cinemas as a question of long-term cultural visibility. “We talk about representation,” he said, “but representation only lasts if there’s infrastructure.”
3892
3893That infrastructure — consistent exhibition, distribution knowledge, and credible data — is now being tested in real time. If even a limited number of African films each year can demonstrate predictable performance in Canada, local distributors, promoters, and exhibitors may begin to recalibrate assumptions.
3894
3895“At that stage,” Layonu said, “we’re not asking for favors. We’re providing content that fills seats.” The record success of “Behind the Scenes” is yet another datapoint.
3896
3897The broader policy environment supports the urgency of Snag’s ongoing “test.” African institutions are beginning to publish public data, from Côte d’Ivoire’s box-office reporting to Senegal’s revived FOPICA fund public communication, and Sierra Leone’s creative-economy mapping, to name a few. Canada’s formal connection to these systems remains limited. Until official models arise, the task of demonstrating readiness continues to fall on individual operators working across borders.
3898
3899Layonu describes the moment plainly: “The audience habits are shifting fast. Either we act now, or those links to African film culture disappear.”
3900
3901Snag Productions remains a small operation with two partners, a growing slate of releases, and modest margins, but it has established a mappable entry point where none previously existed. Its films now appear on Canadian cinema schedules, its audience data is beginning to inform exhibitor decisions, and its founder’s experience across Nigerian and Canadian distribution systems allows him to operate with fluency in both contexts.
3902
3903For now, Layonu is still in the process of proving that a sustainable Canadian pathway for African films can exist, even as his work has already begun to demonstrate that it can, albeit at a small scale. The unresolved issue now increasingly lies with institutions — exhibitors, funders, policymakers — and whether they are willing to recognize, support, or align with a setup that is already functioning, instead of continuing to treat African cinema on an international stage as exceptional, marginal, or speculative.
3904
3905In other words, the burden of proof is beginning to shift. The experiment is moving the question from possibility toward institutional recognition.`}].sort((e,n)=>new Date(n.date).getTime()-new Date(e.date).getTime()),Yx="Akoroko — African Screen Intelligence",OF="https://akoroko.com",DF="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-hero-abstract-KLvPhF3Egt5UYV44xsBTAL.webp",$x="@akorokoafrica";function Vt({title:e,description:n="Real-time intelligence on African film, TV, and digital screen sectors. Curated for global industry professionals and the seriously invested.",canonical:i,ogImage:r=DF,ogType:l="website",publishedTime:d,modifiedTime:u,author:h="Tambay Obenson",keywords:m,noindex:p=!1}){const b=e?e.includes("Akoroko")?e:`${e} | Akoroko`:Yx,y=i?`${OF}${i}`:void 0;return o.jsxs(i0,{"data-loc":"client/src/components/SEO.tsx:42",children:[o.jsx("title",{"data-loc":"client/src/components/SEO.tsx:44",children:b}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:45",name:"description",content:n}),m&&o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:46",name:"keywords",content:m}),i&&o.jsx("link",{"data-loc":"client/src/components/SEO.tsx:47",rel:"canonical",href:y}),p?o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:49",name:"robots",content:"noindex, nofollow"}):o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:51",name:"robots",content:"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:55",property:"og:site_name",content:Yx}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:56",property:"og:title",content:b}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:57",property:"og:description",content:n}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:58",property:"og:type",content:l}),y&&o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:59",property:"og:url",content:y}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:60",property:"og:image",content:r}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:61",property:"og:image:width",content:"12
390500"}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:62",property:"og:image:height",content:"630"}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:63",property:"og:locale",content:"en_US"}),l==="article"&&d&&o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:67",property:"article:published_time",content:d}),l==="article"&&u&&o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:70",property:"article:modified_time",content:u}),l==="article"&&h&&o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:73",property:"article:author",content:h}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:77",name:"twitter:card",content:"summary_large_image"}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:78",name:"twitter:site",content:$x}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:79",name:"twitter:creator",content:$x}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:80",name:"twitter:title",content:b}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:81",name:"twitter:description",content:n}),o.jsx("meta",{"data-loc":"client/src/components/SEO.tsx:82",name:"twitter:image",content:r})]})}const Ja="https://akoroko.com",Qx="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-logo-white_4296f31b.png";function lA(e){let n;return e.type==="article"?n={"@context":"https://schema.org","@type":"NewsArticle",headline:e.title,description:e.description,url:`${Ja}/article/${e.slug}`,datePublished:e.publishedAt,dateModified:e.publishedAt,author:{"@type":"Person",name:e.author||"Tambay Obenson",url:`${Ja}/about`},publisher:{"@type":"Organization",name:"Akoroko — African Screen Intelligence",url:Ja,logo:{"@type":"ImageObject",url:Qx}},image:e.image?{"@type":"ImageObject",url:e.image,width:1200,height:630}:void 0,articleSection:e.category,inLanguage:"en-US",isAccessibleForFree:!0}:n={"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":`${Ja}/#website`,url:Ja,name:"Akoroko — African Screen Intelligence",description:"Real-time intelligence on African film, TV, and digital screen sectors.",publisher:{"@id":`${Ja}/#organization`},potentialAction:{"@type":"SearchAction",target:{"@type":"EntryPoint",urlTemplate:`${Ja}/?s={search_term_string}`},"query-input":"required name=search_term_string"}},{"@type":"Organization","@id":`${Ja}/#organization`,name:"Akoroko LLC",url:Ja,logo:{"@type":"ImageObject",url:Qx,width:512,height:512},sameAs:["https://x.com/akorokoafrica","https://www.instagram.com/akorokofilm/","https://africanfilmpress.com"],contactPoint:{"@type":"ContactPoint",email:"[email protected]",contactType:"customer service"}}]},o.jsx(i0,{"data-loc":"client/src/components/JsonLd.tsx:110",children:o.jsx("script",{"data-loc":"client/src/components/JsonLd.tsx:111",type:"application/ld+json",children:JSON.stringify(n,null,0)})})}const RF="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-hero-map-RU4K2zVvX3qivHTLADYnhi.webp";function bs({size:e=16,variant:n="black"}){const i=n==="white"?en:oA;return o.jsx("img",{"data-loc":"client/src/pages/Home.tsx:21",src:i,alt:"Akoroko Premium",style:{width:e,height:e,objectFit:"contain",flexShrink:0}})}function Gh({article:e,variant:n="default",showImage:i=!1}){return n==="featured"?o.jsx(pe,{"data-loc":"client/src/pages/Home.tsx:41",href:`/article/${e.slug}`,className:"block group",children:o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:42",className:"border-b pb-6 mb-6",style:{borderColor:"#DEDEDE"},children:[i&&e.headerImage&&o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:45",className:"mb-4 overflow-hidden",style:e.featuredImageFull?void 0:{maxHeight:"340px"},children:o.jsx("img",{"data-loc":"client/src/pages/Home.tsx:49",src:e.headerImage,alt:e.title,className:`w-full transition-transform duration-300 group-hover:scale-[1.02] ${e.featuredImageFull?"h-auto object-contain":"object-cover"}`,style:e.featuredImageFull?{display:"block"}:{display:"block",maxHeight:"340px",objectPosition:"top"}})}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:59",className:"flex items-center gap-2 mb-3",children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:60",className:"category-tag",style:{color:"#0A5252"},children:e.category}),e.isPremium?o.jsxs("span",{"data-loc":"client/src/pages/Home.tsx:62",className:"flex items-center gap-1 category-tag",style:{color:"#0A5C6B"},children:[o.jsx(bs,{"data-loc":"client/src/pages/Home.tsx:63",size:14,variant:"black"})," Premium"]}):o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:66",className:"category-tag font-bold",style:{color:"#0A7A3A",border:"1px solid #0A7A3A",padding:"1px 6px",borderRadius:"2px"},children:"FREE TO READ"})]}),o.jsx("h2",{"data-loc":"client/src/pages/Home.tsx:69",className:"font-display text-2xl md:text-3xl font-bold leading-tight mb-3 group-hover:opacity-80 transition-opacity",style:{color:"#1a1a19"},children:e.title}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:75",className:"font-body text-base leading-relaxed mb-4",style:{color:"#555555"},children:e.summary}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:78",className:"flex items-center gap-3",children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:79",className:"font-mono-data text-xs",style:{color:"#888888"},children:e.author}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:80",style:{color:"#0A5C6B"},children:"·"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:81",className:"font-mono-data text-xs",style:{color:"#888888"},children:e.date}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:82",style:{color:"#0A5C6B"},children:"·"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:83",className:"font-mono-data text-xs",style:{color:"#888888"},children:e.readTime})]})]})}):n==="compact"?o.jsxs(pe,{"data-loc":"client/src/pages/Home.tsx:92",href:`/article/${e.slug}`,className:"block group py-4 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:93",className:"flex items-center gap-2 mb-1",children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:94",className:"category-tag",style:{color:"#0A5252"},children:e.category}),e.isPremium?o.jsx(bs,{"data-loc":"client/src/pages/Home.tsx:96",size:12,variant:"black"}):o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:98",className:"category-tag font-bold",style:{color:"#0A7A3A",border:"1px solid #0A7A3A",padding:"1px 5px",borderRadius:"2px",fontSize:"9px"},children:"FREE"})]}),o.jsx("h4",{"data-loc":"client/src/pages/Home.tsx:101",className:"font-display text-sm font-bold leading-snug group-hover:opacity-70 transition-opacity",style:{color:"#1a1a19"},children:e.title}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:107",className:"font-mono-data text-xs mt-1",style:{color:"#888888"},children:e.date})]}):o.jsx(pe,{"data-loc":"client/src/pages/Home.tsx:114",href:`/article/${e.slug}`,className:"block group border-b pb-5 mb-5",style:{borderColor:"#DEDEDE"},children:o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:115",className:"flex gap-4",children:[i&&e.headerImage&&o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:118",className:"flex-shrink-0 w-36 h-28 overflow-hidden",children:o.jsx("img",{"data-loc":"client/src/pages/Home.tsx:119",src:e.headerImage,alt:e.title,className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.05]"})}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:126",className:"flex-1 min-w-0",children:[o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:127",className:"flex items-center gap-2 mb-2",children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:128",className:"category-tag",style:{color:"#0A5252"},children:e.category}),e.isPremium?o.jsxs("span",{"data-loc":"client/src/pages/Home.tsx:130",className:"flex items-center gap-1 category-tag",style:{color:"#0A5C6B"},children:[o.jsx(bs,{"data-loc":"client/src/pages/Home.tsx:131",size:12,variant:"black"})," Premium"]}):o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:134",className:"category-tag font-bold",style:{color:"#0A7A3A",border:"1px solid #0A7A3A",padding:"1px 5px",borderRadius:"2px"},children:"FREE TO READ"})]}),o.jsx("h3",{"data-loc":"client/src/pages/Home.tsx:137",className:"font-display text-lg font-bold leading-snug mb-2 group-hover:opacity-70 transition-opacity",style:{color:"#1a1a19"},children:e.title}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:143",className:"font-body text-sm leading-relaxed mb-3 line-clamp-2",style:{color:"#555555"},children:e.summary}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:146",className:"flex items-center gap-3",children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:147",className:"font-mono-data text-xs",style:{color:"#888888"},children:e.date}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:148",style:{color:"#0A5C6B"},children:"·"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:149",className:"font-mono-data text-xs",style:{color:"#888888"},children:e.readTime})]})]})]})})}const _F=[{slug:"eritrea-inaugural-asmara-film-festival-march-2026",title:"Eritrea Announce
3905s Inaugural Asmara Film Festival, March 21–29, 2026",category:"Festivals",publishedAt:"2026-03-13T00:00:00.000Z",createdAt:"2026-03-13T00:00:00.000Z"},{slug:"next-narrative-africa-fund-first-nine-projects-50m-framework",title:"Next Narrative Africa Fund Announces First Nine Projects, Deploys $50M Framework",category:"Industry",publishedAt:"2026-03-12T00:00:00.000Z",createdAt:"2026-03-12T00:00:00.000Z"},{slug:"canal-fy2025-earnings-post-multichoice-acquisition-africa-plan",title:"Canal+'s FY2025 Earnings Put Its Post-MultiChoice Acquisition Africa Plan Into View",category:"Television",publishedAt:"2026-03-12T00:00:00.000Z",createdAt:"2026-03-12T00:00:00.000Z"},{slug:"namibia-film-week-2026-whats-on-and-whos-talking",title:"Namibia Film Week 2026: What’s On and Who’s Talking",category:"Festivals",publishedAt:"2026-03-11T00:00:00.000Z",createdAt:"2026-03-11T00:00:00.000Z"},{slug:"ghanaian-activist-ousman-umar-north-to-paradise-heads-to-buyers",title:"Ghanaian Activist Ousman Umar’s “North to Paradise” Heads to Buyers",category:"Ghana",publishedAt:"2026-03-11T01:00:07.000Z",createdAt:"2026-03-11T01:00:07.000Z"}];function BF(){ua();const[e,n]=j.useState("All"),[i,r]=j.useState(_F),[l,d]=j.useState(!0);j.useEffect(()=>{fetch("/api/afp-headlines").then(b=>b.json()).then(b=>{const y=Array.isArray(b)?b:[];y.length>0&&r(y)}).catch(()=>{}).finally(()=>d(!1))},[]);const u=ia[0],h=ia.slice(1,4),m=e==="All"?ia.slice(4):ia.filter(b=>b.category===e),p=()=>{window.scrollTo({top:0,behavior:"smooth"})};return o.jsxs(Wt,{"data-loc":"client/src/pages/Home.tsx:210",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Home.tsx:211",description:"Reporting, structured intelligence, and research tools for professionals working across African and diaspora film, television, and digital screen markets.",canonical:"/",keywords:"African film, African cinema, African TV, streaming Africa, Nollywood, African screen intelligence, African film industry"}),o.jsx(lA,{"data-loc":"client/src/pages/Home.tsx:216",type:"website"}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:218",style:{backgroundColor:"#1a1a19"},children:o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:220",className:"relative",children:o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:221",className:"container relative",children:[o.jsx("img",{"data-loc":"client/src/pages/Home.tsx:223",src:en,alt:"","aria-hidden":"true",className:"absolute hidden lg:block pointer-events-none",style:{right:"0px",top:"50%",transform:"translateY(-50%)",width:"320px",height:"320px",objectFit:"contain",zIndex:0,maskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)",WebkitMaskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)"}}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:240",className:"grid grid-cols-1 gap-0",children:o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:242",className:"flex flex-col justify-center py-12 md:py-16 lg:max-w-3xl",children:[o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:243",className:"mb-5",children:o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:244",className:"w-12 h-0.5",style:{backgroundColor:"#0A5C6B"}})}),o.jsx("h1",{"data-loc":"client/src/pages/Home.tsx:246",className:"font-display text-4xl md:text-5xl lg:text-6xl font-bold leading-tight mb-5",style:{color:"#FFFFFF"},children:"Intelligence Tools for African and Diaspora Film, Television, and Digital Media Markets"}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:252",className:"font-body text-lg leading-relaxed mb-4",style:{color:"#AAAAAA"},children:"Akoroko Premium is an intelligence subscription that combines independent reporting with practical research tools, structured records, curated dispatches, and searchable published knowledge for professionals working across African and diaspora screen sectors."}),o.jsxs("p",{"data-loc":"client/src/pages/Home.tsx:258",className:"font-mono-data text-sm font-medium mb-8",style:{color:"#D1D1D1",letterSpacing:"0.06em"},children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:259",className:"font-condensed text-2xl mr-2",style:{color:"#FFFFFF"},children:"2,199+"}),"INTELLIGENCE DISPATCHES SINCE 2022"]}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:262",className:"flex flex-col sm:flex-row gap-3",children:[o.jsxs(pe,{"data-loc":"client/src/pages/Home.tsx:263",href:"/subscribe",className:"font-mono-data text-xs font-medium px-6 py-3 text-center transition-all duration-150 hover:opacity-90 flex items-center justify-center gap-2",style:{backgroundColor:"#0A5C6B",color:"#FFFFFF",letterSpacing:"0.08em"},children:[o.jsx(bs,{"data-loc":"client/src/pages/Home.tsx:268",size:16,variant:"white"}),"SUBSCRIBE TO AKOROKO PREMIUM"]}),o.jsx(pe,{"data-loc":"client/src/pages/Home.tsx:271",href:"/about",className:"font-mono-data text-xs font-medium px-6 py-3 text-center border transition-all duration-150 hover:border-white hover:text-white",style:{borderColor:"#555555",color:"#CCCCCC",letterSpacing:"0.08em"},children:"ABOUT AKOROKO"})]})]})})]})})}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:288",style:{height:"1px",backgroundColor:"#CCCCCC"}}),o.jsx("section",{"data-loc":"client/src/pages/Home.tsx:291",className:"container py-10",children:o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:292",className:"grid grid-cols-1 lg:grid-cols-12 gap-10",children:[o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:294",className:"lg:col-span-8",children:[o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:296",className:"flex items-center justify-between mb-6 pb-3 border-b",style:{borderColor:"#0A5C6B"},children:[o.jsx("h2",{"data-loc":"client/src/pages/Home.tsx:297",className:"font-condensed text-2xl tracking-wide",style:{color:"#1a1a19"},children:"THE LATEST"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:300",className:"font-mono-data text-xs",style:{color:"#888888"},children:new Date().toLocaleDateString("en-US",{weekday:"long",year:"numeric",month:"long",day:"numeric"})})]}),o.jsxs("p",{"data-loc":"client/src/pages/Home.tsx:305",className:"font-body text-sm leading-relaxed mb-5",style:{color:"#555555"},children:["Start with any report marked ",o.jsx("strong",{"data-loc":"client/src/pages/Home.tsx:306",children:"Free to Read"}),". Premium reports and the working intelligence tools are included with Ak
3905oroko Premium."]}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:310",className:"mb-8 pb-4 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:311",className:"font-mono-data text-xs font-bold mb-3",style:{color:"#1a1a19",letterSpacing:"0.10em"},children:"EXPLORE BY TOPIC"}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:314",className:"flex flex-wrap gap-2",children:PF.map(b=>o.jsx("button",{"data-loc":"client/src/pages/Home.tsx:316",onClick:()=>n(b),className:"category-tag px-3 py-1.5 transition-all duration-150",style:{backgroundColor:e===b?"#1a1a19":"transparent",color:e===b?"#F5F5F5":"#555555",border:`1px solid ${e===b?"#1a1a19":"#DEDEDE"}`},children:b},b))})]}),e==="All"&&o.jsxs(o.Fragment,{children:[o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:335",className:"font-mono-data text-xs font-bold mb-3",style:{color:"#0A5252",letterSpacing:"0.10em"},children:"CURRENT REPORTING"}),o.jsx(Gh,{"data-loc":"client/src/pages/Home.tsx:338",article:u,variant:"featured",showImage:!!u.headerImage}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:341",className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-8",children:h.map((b,y)=>o.jsx(Gh,{"data-loc":"client/src/pages/Home.tsx:343",article:b,showImage:y===2&&!!b.headerImage},b.slug))})]}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:354",children:m.map((b,y)=>{const v=y%3===0&&!!b.headerImage;return o.jsx(Gh,{"data-loc":"client/src/pages/Home.tsx:358",article:b,showImage:v},b.slug)})})]}),o.jsxs("aside",{"data-loc":"client/src/pages/Home.tsx:369",className:"lg:col-span-4",children:[o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:371",className:"p-5 mb-8 border",style:{backgroundColor:"#FAFAFA",borderColor:"#0A5C6B",borderLeftWidth:"3px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:379",className:"flex items-center gap-2 mb-3",children:[o.jsx(bs,{"data-loc":"client/src/pages/Home.tsx:380",size:28,variant:"black"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:381",className:"category-tag",style:{color:"#0A5C6B"},children:"Akoroko Premium"})]}),o.jsx("h3",{"data-loc":"client/src/pages/Home.tsx:383",className:"font-display text-lg font-bold mb-2",style:{color:"#1a1a19"},children:"Available Now"}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:386",className:"font-body text-sm leading-relaxed mb-4",style:{color:"#555555"},children:"Akoroko Premium combines independent reporting with practical research tools for African and diaspora screen professionals."}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:389",className:"font-body text-sm leading-relaxed mb-3",style:{color:"#555555"},children:"Included with Premium: Pipeline Registry, Distribution Registry, Funding Desk, Streaming and Infrastructure Registry, AFP Dispatch, and Ask Akoroko Premium."}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:392",className:"font-body text-sm leading-relaxed mb-4",style:{color:"#888888"},children:"In development: Box Office Registry and Co-Production Treaty Registry Pro."}),o.jsxs(pe,{"data-loc":"client/src/pages/Home.tsx:395",href:"/subscribe",className:"flex items-center justify-center gap-2 font-mono-data text-xs font-medium px-4 py-3 text-center transition-all duration-150 hover:opacity-90",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:[o.jsx(bs,{"data-loc":"client/src/pages/Home.tsx:400",size:14,variant:"white"}),"SUBSCRIBE NOW"]}),o.jsx(pe,{"data-loc":"client/src/pages/Home.tsx:403",href:"/premium",className:"block text-center font-mono-data text-xs font-medium mt-4 transition-opacity duration-150 hover:opacity-70",style:{color:"#0A5C6B",letterSpacing:"0.08em"},children:"SEE WHAT PREMIUM INCLUDES →"})]}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:413",className:"mb-8",children:[o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:414",className:"flex items-center justify-between mb-4 pb-2 border-b",style:{borderColor:"#0A5C6B"},children:[o.jsx("h3",{"data-loc":"client/src/pages/Home.tsx:415",className:"font-condensed text-xl tracking-wide",style:{color:"#1a1a19"},children:"HEADLINE NEWS"}),o.jsx("a",{"data-loc":"client/src/pages/Home.tsx:418",href:"https://africanfilmpress.com/articles",target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs",style:{color:"#888888",letterSpacing:"0.06em"},children:"AFP →"})]}),l?o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:429",className:"space-y-4",children:[...Array(5)].map((b,y)=>o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:431",className:"py-3 border-b animate-pulse",style:{borderColor:"#DEDEDE"},children:[o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:432",className:"h-2 rounded mb-2",style:{backgroundColor:"#E8E8E8",width:"40%"}}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:433",className:"h-3 rounded mb-1",style:{backgroundColor:"#E8E8E8",width:"90%"}}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:434",className:"h-3 rounded",style:{backgroundColor:"#E8E8E8",width:"70%"}})]},y))}):i.map(b=>o.jsxs("a",{"data-loc":"client/src/pages/Home.tsx:440",href:`https://africanfilmpress.com/articles/${b.slug}`,target:"_blank",rel:"noopener noreferrer",className:"block group py-3 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:448",className:"category-tag block mb-1",style:{color:"#0D6E6E"},children:b.category}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:449",className:"font-display text-sm font-bold leading-snug group-hover:opacity-70 transition-opacity",style:{color:"#1a1a19"},children:b.title}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:455",className:"font-mono-data text-xs mt-1 block",style:{color:"#888888"},children:b.publishedAt?new Date(b.publishedAt).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"}):""})]},b.slug))]}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:466",className:"p-5 border",style:{backgroundColor:"#F5F5F5",borderColor:"#DEDEDE"},children:[o.jsx("h3",{"data-loc":"client/src/pages/Home.tsx:470",className:"category-tag mb-3",style:{color:"#0A5252"},children:"AFP Alliance"}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:471",className:"font-body text-sm leading-relaxed mb-4",style:{color:"#555555"},children:"Akoroko is part of the African Film Press, a publishing, research, and intelligence organization covering Africa's screen sectors."}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:474",className:"space-y-2",children:[o.jsxs("a",{"data-loc":"client/src/pages/Home.tsx:475",href:"https://africanfilmpress.com",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-between py-2 border-b group",style:{borderColor:"#DEDEDE"},children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:482",className:"font-display text-sm font-bold",style:{color:"#1a1a19"},children:"African Film Press"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:483",className:"font-mono-data text-xs group-hover:text-teal-700 transition-colors",style:{color:"#888888"},children:"Pan-African →"})]}),o.jsxs("a",{"data-loc":"client/src/pages/Home.tsx:485",href:"https://sinemafocus.com",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-between py-2 border-b group",style:{borderColor:"#DEDEDE"},children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:492",className:"font-display text-sm font-bold",style:{color:"#1a1a19"},children:"Sinema Focus"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:493",className:"font-mono-data text-xs group-hover:text-teal-600 transition-colors",style:{color:"#888888"},children:"East Africa →"})]}),o.jsxs("a",{"data-loc":"client/src/pages/Home.tsx:495",href:"https://whatkeptmeup.com",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-between py-2 group",children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:501",className:"font-display text-sm font-bold",style:{color:"#1a1a19"},children:"What Kept Me Up"}),o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:502",className:"font-mono-data text-xs group-hover:text-teal-600 transition-colors",style:{color:"#888888"},children:"West Africa →"})]})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:508",className:"mt-8 overflow-hidden",style:{borderRadius:"2px"},children:[o.jsx("img",{"data-loc":"client/src/pages/Home.tsx:509",src:RF,alt:"African and diasp
3905ora screen intelligence network",className:"w-full object-cover"}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:514",className:"px-3 py-2",style:{backgroundColor:"#1a1a19"},children:o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:515",className:"font-mono-data text-xs",style:{color:"#888888"},children:"Coverage across Africa and the global diaspora"})})]})]})]})}),o.jsx("section",{"data-loc":"client/src/pages/Home.tsx:525",className:"border-t border-b",style:{backgroundColor:"#FAFAFA",borderColor:"#DEDEDE"},children:o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:529",className:"container py-12",children:o.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:530",className:"max-w-3xl",children:[o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:531",className:"category-tag",style:{color:"#0A5252"},children:"About Akoroko"}),o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:532",className:"mt-2 mb-4 w-12 h-0.5",style:{backgroundColor:"#0A5C6B"}}),o.jsx("blockquote",{"data-loc":"client/src/pages/Home.tsx:533",className:"font-display text-xl md:text-2xl italic leading-relaxed mb-4",style:{color:"#1a1a19"},children:'"I think cinema is needed throughout Africa because we are lagging behind in the knowledge of our own history."'}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:539",className:"font-mono-data text-sm mb-6",style:{color:"#888888"},children:"— Ousmane Sembène"}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:542",className:"font-body text-base leading-relaxed mb-6",style:{color:"#555555"},children:"Akoroko is an intelligence platform covering African and diaspora film, television, and digital media. Led by Tambay Obenson, it pairs reporting and analysis with a set of working tools — live registries and a queryable archive — used by producers, distributors, financiers, festival programmers, researchers, and institutions across African and diaspora screen sectors."}),o.jsx("p",{"data-loc":"client/src/pages/Home.tsx:545",className:"font-body text-sm leading-relaxed mt-3",style:{color:"#555555"},children:"Its work combines journalism, market intelligence, and structured data — tracking projects, companies, funding, distribution, exhibition, and policy across Africa and its global connections. Akoroko pairs that reporting with practical research tools, structured records, curated dispatches, and searchable published knowledge. Akoroko is part of African Film Press (AFP), a publishing, research, and intelligence organization established in 2024."}),o.jsx(pe,{"data-loc":"client/src/pages/Home.tsx:548",href:"/about",className:"font-mono-data text-xs font-medium border-b-2 pb-0.5 transition-colors",style:{color:"#0A5C6B",borderColor:"#0A5C6B",letterSpacing:"0.08em"},children:"READ MORE ABOUT AKOROKO →"})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Home.tsx:560",className:"border-b",style:{backgroundColor:"#F5F5F5",borderColor:"#DEDEDE"},children:o.jsx("div",{"data-loc":"client/src/pages/Home.tsx:561",className:"container py-6 flex justify-end",children:o.jsxs("button",{"data-loc":"client/src/pages/Home.tsx:562",type:"button",onClick:p,className:"font-mono-data text-xs font-medium transition-opacity duration-150 hover:opacity-70",style:{color:"#0A5C6B",letterSpacing:"0.08em"},"aria-label":"Back to top of home page",children:["BACK TO TOP ",o.jsx("span",{"data-loc":"client/src/pages/Home.tsx:569","aria-hidden":"true",children:"↑"})]})})})]})}const Am=[{name:"Pipeline Registry",anchor:"pipeline-registry",image:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/GSQdKQbbEvTUjfhF.png",alt:"Screenshot of the Pipeline Registry showing project stages, filters, and project records",status:"INCLUDED WITH PREMIUM"},{name:"Distribution Registry",anchor:"distribution-registry",image:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/FSCdITMRDAJoiUCY.png",alt:"Screenshot of the Distribution Registry showing distribution filters and film records",status:"INCLUDED WITH PREMIUM"},{name:"Funding Desk",anchor:"funding-desk",image:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/KctNcRQiZQyhaKIc.png",alt:"Screenshot of the Funding Desk showing funding filters, records, and project matching tools",status:"INCLUDED WITH PREMIUM"}
3905,{name:"Streaming and Infrastructure Registry",anchor:"streaming-infrastructure-registry",image:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/KkDbFNFCVXdRJVgS.png",alt:"Screenshot of the Streaming and Infrastructure Registry showing country profiles, activity tracking, and market data",status:"INCLUDED WITH PREMIUM"},{name:"Box Office Registry",anchor:"box-office-registry",image:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/oghgaFkoQUSfabNh.png",alt:"Screenshot of the Box Office Registry showing African market figures, filters, and reporting confidence",status:"IN DEVELOPMENT"}],LF="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/tambay-obenson-headshot_1894e12a.jpg",zF=["Pipeline Registry","Distribution Registry","Funding Desk","Streaming and Infrastructure Registry","AFP Dispatch","Ask Akoroko Premium"],UF=["Box Office Registry","Co-Production Treaty Registry Pro"],HF=[{title:"Editorial Work",description:"Selected reporting, interviews and analysis on material developments across African and diaspora film, television and digital media."},{title:"Intelligence Tools",description:"Registries, trackers, datasets and working records on projects, companies, funding, distribution, agreements, infrastructure and market activity."}],qF=[{name:"Akoroko",description:"Reporting, data and intelligence across African and diaspora screen sectors — led by Tambay A. Obenson."},{name:"Sinema Focus",description:"Reporting on East African screen sectors, anchored in Kenya — led by Jennifer Ochieng."},{name:"What Kept Me Up",description:"Reporting on Nigeria and Anglophone West Africa — led by Ikeade Oriade."}];function us({children:e,color:n="#0D6E6E",ruleColor:i="#0A5C6B"}){return o.jsxs(o.Fragment,{children:[o.jsx("span",{"data-loc":"client/src/pages/About.tsx:68",className:"category-tag",style:{color:n},children:e}),o.jsx("div",{"data-loc":"client/src/pages/About.tsx:69",className:"gold-rule mt-2 mb-4 w-12",style:{borderColor:i}})]})}function Ii({href:e,children:n,tone:i="default"}){const r=i==="onDark"?"#66CDD4":"#0A5C6B";return o.jsx(pe,{"data-loc":"client/src/pages/About.tsx:86",href:e,className:"font-mono-data text-xs font-medium border-b-2 pb-0.5 transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-4",style:{color:r,borderColor:r,outlineColor:r,letterSpacing:"0.08em"},children:n})}function WF(){return o.jsxs(Wt,{"data-loc":"client/src/pages/About.tsx:98",children:[o.jsx(Vt,{"data-loc":"client/src/pages/About.tsx:99",title:"About Akoroko — African Screen Intelligence",description:"Learn about Akoroko, an independent reporting, research, and data platform serving professionals across African and diaspora screen sectors.",canonical:"/about",keywords:"Akoroko Premium, African screen intelligence, African film data, African Film Press, Tambay A. Obenson"}),o.jsx("section",{"data-loc":"client/src/pages/About.tsx:106",className:"border-b",style:{backgroundColor:"#1a1a19",borderColor:"#333333"},children:o.jsx("div",{"data-loc":"client/src/pages/About.tsx:107",className:"relative",children:o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:108",className:"container relative",children:[o.jsx("img",{"data-loc":"client/src/pages/About.tsx:109",src:en,alt:"","aria-hidden":"true",className:"absolute hidden lg:block pointer-events-none",style:{right:"0px",top:"50%",transform:"translateY(-50%)",width:"320px",height:"320px",objectFit:"contain",zIndex:0,maskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)",WebkitMaskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)"}}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:126",className:"py-14 md:py-20 max-w-2xl",style:{position:"relative",zIndex:1},children:[o.jsx(us,{"data-loc":"client/src/pages/About.tsx:127",color:"#66CDD4",ruleColor:"#66CDD4",children:"About Akoroko"}),o.jsx("h1",{"data-loc":"client/src/pages/About.tsx:128",className:"font-display text-4xl md:text-5xl font-bold leading-tight mb-4",style:{color:"#F5F5F5"}
3905,children:"Independent intelligence for African and diaspora screen sectors"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:131",className:"font-body text-lg leading-relaxed mb-4",style:{color:"#AAAAAA"},children:"Akoroko combines independent reporting, structured records, research and published knowledge for professionals working across African and diaspora film, television and digital media."}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:134",className:"font-mono-data text-xs font-medium mb-6",style:{color:"#D1D1D1",letterSpacing:"0.08em"},children:"REPORTING · STRUCTURED RECORDS · RESEARCH"}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:137",className:"flex flex-col sm:flex-row sm:flex-wrap gap-x-6 gap-y-4",children:[o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:138",href:"/premium",tone:"onDark",children:"WHAT PREMIUM INCLUDES →"}),o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:139",href:"/institutional",tone:"onDark",children:"INSTITUTIONAL ACCESS →"})]})]})]})})}),o.jsxs("main",{"data-loc":"client/src/pages/About.tsx:146",children:[o.jsxs("section",{"data-loc":"client/src/pages/About.tsx:147",className:"container py-14",children:[o.jsxs("section",{"data-loc":"client/src/pages/About.tsx:148",className:"pb-12 mb-12 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsx(us,{"data-loc":"client/src/pages/About.tsx:149",children:"Platform"}),o.jsx("h2",{"data-loc":"client/src/pages/About.tsx:150",className:"font-display text-2xl font-bold mb-4",style:{color:"#1a1a19"},children:"How Akoroko works"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:153",className:"font-body text-base leading-relaxed mb-6 max-w-3xl",style:{color:"#555555"},children:"Akoroko pairs selected editorial work with practical intelligence tools for African and diaspora screen sectors."}),o.jsx("div",{"data-loc":"client/src/pages/About.tsx:156",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:HF.map(e=>o.jsxs("article",{"data-loc":"client/src/pages/About.tsx:158",className:"p-4 border",style:{backgroundColor:"#FAFAFA",borderColor:"#DEDEDE"},children:[o.jsx("h3",{"data-loc":"client/src/pages/About.tsx:159",className:"font-display text-sm font-bold mb-2",style:{color:"#1a1a19"},children:e.title}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:160",className:"font-body text-sm leading-relaxed",style:{color:"#555555"},children:e.description})]},e.title))})]}),o.jsxs("section",{"data-loc":"client/src/pages/About.tsx:166",className:"pb-12 mb-12 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:167",className:"grid grid-cols-1 lg:grid-cols-12 gap-10",children:[o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:168",className:"lg:col-span-8 lg:row-start-1",children:[o.jsx(us,{"data-loc":"client/src/pages/About.tsx:169",children:"Akoroko Premium"}),o.jsx("h2",{"data-loc":"client/src/pages/About.tsx:170",className:"font-display text-2xl font-bold mb-4",style:{color:"#1a1a19"},children:"Current work and product status"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:173",className:"font-body text-base leading-relaxed mb-4",style:{color:"#555555"},children:"Akoroko Premium launched on 29 April 2024 as Akoroko's subscription service for producers, distributors, financiers, festival programmers, researchers and institutions working across African and international screen sectors."}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:176",className:"font-body text-base leading-relaxed mb-7",style:{color:"#555555"},children:"The current offering combines independent reporting with practical research tools, structured records, curated dispatches and searchable published knowledge. Individual and institutional access are available."})]}),o.jsxs("aside",{"data-loc":"client/src/pages/About.tsx:180",className:"lg:col-span-4 lg:col-start-9 lg:row-span-2 border p-5",style:{backgroundColor:"#FAFAFA",borderColor:"#DEDEDE"},children:[o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:181",className:"pb-5 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsx("h3",{"data-loc":"client/src/pages/About.tsx:182",className:"font-mono-data text-xs font-medium mb-3",style:{color:"#0A5C6B",letterSpacing:"0.08em"},children:"AVAILABLE NOW · INCLUDED WITH PREMIUM"}),o.jsx("ul",{"data-loc":"client/src/pages/About.tsx:185",className:"space-y-2",children:zF.map(e=>o.jsx("li",{"data-loc":"client/src/pages/About.tsx:187",className:"font-body text-sm",style:{color:"#555555"},children:e},e))})]}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:191",className:"pt-5",children:[o.jsx("h3",{"data-loc":"client/src/pages/About.tsx:192",className:"font-mono-data text-xs font-medium mb-3",style:{color:"#0A5C6B",letterSpacing:"0.08em"},children:"IN DEVELOPMENT"}),o.jsx("ul",{"data-loc":"client/src/pages/About.tsx:195",className:"space-y-2",children:UF.map(e=>o.jsx("li",{"data-loc":"client/src/pages/About.tsx:197",className:"font-body text-sm",style:{color:"#555555"},children:e},e))})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:202",className:"lg:col-span-8 lg:col-start-1 lg:row-start-2 flex flex-wrap gap-x-6 gap-y-4",children:[o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:203",href:"/subscribe",children:"SUBSCRIBE TO AKOROKO PREMIUM →"}),o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:204",href:"/institutional",children:"INSTITUTIONAL ACCESS →"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:208",className:"mt-10 pt-8 border-t",style:{borderColor:"#DEDEDE"},children:[o.jsx("p",{"data-loc":"client/src/pages/About.tsx:209",className:"font-mono-data text-xs font-medium mb-3",style:{color:"#0A5C6B",letterSpacing:"0.08em"},children:"PREMIUM TOOL SCREENSHOTS"}),o.jsx("h3",{"data-loc":"client/src/pages/About.tsx:212",className:"font-display text-xl font-bold",style:{color:"#1a1a19"},children:"A selection of current Premium tools"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:215",className:"font-body text-sm leading-relaxed mt-2 max-w-3xl",style:{color:"#555555"},children:"Selected screenshots from the Premium tool set."}),o.jsx("div",{"data-loc":"client/src/pages/About.tsx:218",className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 ga
3905p-3 mt-6",children:Am.map(e=>o.jsxs(pe,{"data-loc":"client/src/pages/About.tsx:220",href:`/premium#${e.anchor}`,"aria-label":`View the ${e.name} screenshot on the Akoroko Premium page`,className:"group border transition-opacity hover:opacity-75 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",style:{borderColor:"#DEDEDE",backgroundColor:"#FAFAFA",outlineColor:"#0A5C6B"},children:[o.jsx("div",{"data-loc":"client/src/pages/About.tsx:227",className:"aspect-[4/3] p-2",style:{backgroundColor:"#F2F1ED"},children:o.jsx("img",{"data-loc":"client/src/pages/About.tsx:228",src:e.image,alt:e.alt,loading:"lazy",className:"w-full h-full object-contain",style:{backgroundColor:"#FFFFFF"}})}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:230",className:"px-3 py-3 border-t",style:{borderColor:"#DEDEDE"},children:[o.jsx("p",{"data-loc":"client/src/pages/About.tsx:231",className:"font-display text-sm font-bold leading-tight",style:{color:"#1a1a19"},children:e.name}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:232",className:"font-mono-data text-[9px] mt-1",style:{color:e.status==="IN DEVELOPMENT"?"#8A5B00":"#0A5C6B",letterSpacing:"0.07em"},children:e.status})]})]},e.name))}),o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:237",href:"/premium",children:"VIEW ALL PREMIUM TOOL SCREENSHOTS →"})]})]}),o.jsx("section",{"data-loc":"client/src/pages/About.tsx:241",className:"pb-12 mb-12 border-b",style:{borderColor:"#DEDEDE"},children:o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:242",className:"grid grid-cols-1 md:grid-cols-12 gap-8",children:[o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:243",className:"md:col-span-3",children:[o.jsx("img",{"data-loc":"client/src/pages/About.tsx:244",src:LF,alt:"Tambay A. Obenson",className:"object-cover",style:{width:"220px",height:"220px",maxWidth:"100%",filter:"grayscale(20%)"}}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:250",className:"font-mono-data text-xs mt-3",style:{color:"#888888",letterSpacing:"0.06em"},children:"TAMBAY A. OBENSON"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:251",className:"font-mono-data text-xs",style:{color:"#0A5C6B",letterSpacing:"0.06em"},children:"Founder & Editor"})]}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:253",className:"md:col-span-9",children:[o.jsx(us,{"data-loc":"client/src/pages/About.tsx:254",children:"Leadership"}),o.jsx("h2",{"data-loc":"client/src/pages/About.tsx:255",className:"font-display text-2xl font-bold mb-4",style:{color:"#1a1a19"},children:"Founder and editor"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:258",className:"font-body text-base leading-relaxed mb-4",style:{color:"#555555"},children:"Tambay A. Obenson is a journalist, critic, researcher, and media entrepreneur covering African and diaspora film, television, and digital media. He founded Akoroko, an intelligence and editorial platform tracking finance, distribution, exhibition, policy, streaming, and screen culture across Africa and its global connections. He also leads African Film Press (AFP), an alliance that links Akoroko with regional partner platforms, including Sinema Focus in Kenya and What Kept Me Up in Nigeria."}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:261",className:"font-body text-base leading-relaxed mb-4",style:{color:"#555555"},children:"Over more than a decade, Obenson has built a body of work combining reporting, criticism, market analysis, and long-term documentation of African and African diaspora screen activity. His reporting and research examine how screen sectors are financed, distributed, regulated, and measured, with particular attention to infrastructure, data access, audience development, and international circulation of the work."})]})]})}),o.jsxs("section",{"data-loc":"client/src/pages/About.tsx:268",className:"pb-12 mb-12 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsx(us,{"data-loc":"client/src/pages/About.tsx:269",children:"Institutional Context"}),o.jsx("h2",{"data-loc":"client/src/pages/About.tsx:270",className:"font-display text-2xl font-bold mb-4",style:{color:"#1a1a19"},children:"African Film Press"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:273",className:"font-body text-base leading-relaxed mb-6 max-w-4xl",style:{color:"#555555"},children:"Akoroko is a founding platform in African Film Press (AFP), a publishing, research and intelligence organization formed in 2024. AFP connects three independent publications with complementary geographic and editorial coverage."}),o.jsx("div",{"data-loc":"client/src/pages/About.tsx:276",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-6",children:qF.map(e=>o.jsxs("article",{"data-loc":"client/src/pages/About.tsx:278",className:"p-5 border",style:{backgroundColor:"#FAFAFA",borderColor:"#DEDEDE"},children:[o.jsx("h3",{"data-loc":"client/src/pages/About.tsx:279",className:"font-display text-base font-bold mb-2",style:{color:"#1a1a19"},children:e.name}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:280",className:"font-body text-sm leading-relaxed",style:{color:"#555555"},children:e.description})]},e.name))}),o.jsx("a",{"data-loc":"client/src/pages/About.tsx:284",href:"https://africanfilmpress.com",target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs font-medium border-b-2 pb-0.5 transition-colors",style:{color:"#0A5C6B",borderColor:"#0A5C6B",letterSpacing:"0.08em"},children:"VISIT AFRICANFILMPRESS.COM →"})]})]}),o.jsx("section",{"data-loc":"client/src/pages/About.tsx:297",className:"border-y",style:{backgroundColor:"#1a1a19",borderColor:"#333333"},children:o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:298",className:"container py-12",children:[o.jsx(us,{"data-loc":"client/src/pages/About.tsx:299",color:"#66CDD4",ruleColor:"#66CDD4",children:"Access"}),o.jsx("h2",{"data-loc":"client/src/pages/About.tsx:300",className:"font-display text-2xl md:text-3xl font-bold mb-4",style:{color:"#F5F5F5"},children:"Access Akoroko Premium"}),o.jsx("p",{"data-loc":"client/src/pages/About.tsx:303",className:"font-body text-base leading-relaxed mb-7 max-w-2xl",style:{color:"#AAAAAA"},children:"Choose an individual subscription for reporting and tools, request institutional access for a team, or contact Akoroko about research and professional inquiries."}),o.jsxs("div",{"data-loc":"client/src/pages/About.tsx:306",className:"flex flex-col sm:flex-row sm:flex-wrap gap-x-6 gap-y-4",children:[o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:307",href:"/subscribe",tone:"onDark",children:"INDIVIDUAL SUBSCRIPTION →"}),o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:308",href:"/institutional",tone:"onDark",children:"INSTITUTIONAL ACCESS →"}),o.jsx(Ii,{"data-loc":"client/src/pages/About.tsx:309",href:"/contact",tone:"onDark",children:"RESEARCH AND PROFESSIONAL INQUIRIES →"})]})]})})]})]})}const Jx={monthly:"https://buy.stripe.com/00w3cwabX8Kb4oE8nZfjG0g",annual:"https://buy.stripe.com/8x228sdo98Kbf3i1ZBfjG0h"},Xx={monthly:"https://buy.stripe.com/aFa6oIgAlf8zdZebAbfjG0i",annual:"https://buy.stripe.com/aFa14oesdbWn5sIgUvfjG0j"},Zx={monthly:"https://buy.stripe.com/aFa8wQ1FrgcDcVa0VxfjG0k",annual:"https://buy.stripe.com/28EeVe2Jv0dF8EUdIjfjG0l"},Kh=[{country:"Angola",currency:"AOA",monthly:"Kz8,000",annual:"Kz80,000"},{country:"Botswana",currency:"BWP",monthly:"P165",annual:"P1,650"},{country:"Brazil",currency:"BRL",monthly:"R$60",annual:"R$600"},{country:"Côte d’Ivoire",currency:"XOF",monthly:"CFA5,000",annual:"CFA50,000"},{country:"Democratic Republic of the Congo",currency:"CDF",monthly:"Fr19,000",annual:"Fr190,000"},{country:"Dominican Republic",currency:"DOP",monthly:"RD$700",annual:"RD$7,000"},{country:"Egypt",currency:"EGP",monthly:"E£600",annual:"E£6,000"},{country:"Ethiopia",currency:"ETB",monthly:"Br1,600",annual:"Br16,000"},{country:"The Gambia",currency:"GMD",monthly:"D600",annual:"D6,000"},{country:"Ghana",currency:"GHS",monthly:"GH₵100",annual:"GH₵1,000"},{country:"Jamaica",currency:"JMD",monthly:"J$1,900",annual:"J$19,000"},{country:"Kenya",currency:"KES",monthly:"KSh1,050",annual:"KSh10,500"},{country:"Liberia",currency:"LRD",monthly:"L$1,200",annual:"L$12,000"},{country:"Malawi",currency:"MWK",monthly:"MK14,500",annual:"MK145,000"},{country:"Morocco",currency:"MAD",monthly:"DH120",annual:"DH1,200"},{country:"Mozambique",currency:"MZN",monthly:"MT500",annual:"MT5,000"},{country:"Namibia",currency:"NAD",monthly:"N$250",annual:"N$2,500"},{country:"Nigeria",currency:"NGN",monthly:"₦8,500",annual:"₦85,000"},{country:"Rwanda",currency:"RWF",monthly:"FRw18,000",annual:"FRw180,000"},{country:"Senegal",currency:"XOF",monthly:"CFA5,000",annual:"CFA50,000"},{country:"Somalia",currency:"SOS",monthly:"≈Sh.So.3,500",annual:"≈Sh.So.35,000"},{country:"South Africa",currency:"ZAR",monthly:"R250",annual:"R2,500"},{country:"Tanzania",currency:"TZS",monthly:"Sh27,000",annual:"Sh270,000"},{country:"Uganda",currency:"UGX",monthly:"USh31,000",annual:"USh310,000"},{country:"Zambia",currency:"ZMW",monthly:"ZK210",annual:"ZK2,100"},{country:"Zimbabwe",currency:"ZiG",monthly:"≈ZiG220",annual:"≈ZiG2,200"}],VF={monthly:"US$25",annual:"US$250"},GF=e=>e?e==="Ghana"||e==="Zimbabwe"?{monthlyLink:Xx.monthly,annualLink:Xx.annual}:e==="Somalia"?{monthlyLink:Zx.monthly,annualLink:Zx.annual}:{monthlyLink:Jx.monthly,annualLink:Jx.annual}
3905:null,KF=["Pipeline Registry — track African and diaspora projects from development to delivery, with tiered scoring, saved filters, and project detail pages.","Distribution Registry — follow where African and diaspora films land, territory by territory, after they premiere, with box-office data where it has been reported.","Funding Desk — verified financing instruments across the continent, with eligibility flags, application cycles, and a capital-stack builder.","Streaming and Infrastructure Registry — platform, telecom, and cinema infrastructure activity across the continent, tracked as it happens.","AFP Dispatch — curated dispatches on your cadence. News reporting comes two to three times a week, not a daily flood.","Ask Akoroko Premium — ask a question in plain language, in English or French, and get an answer drawn from years of Akoroko's published reporting.","Deeper reporting behind the public trackers — when the public Streaming and Infrastructure Watch or the public Co-Production Treaty Registry updates, subscribers get the fuller reporting behind the entry.","Early access to new tools, including some that never go public.","Periodic 30-minute consultation sessions.","Localized monthly and annual pricing in 23 African markets, Brazil, the Dominican Republic and Jamaica."],YF=["Box Office Registry — in development.","Co-Production Treaty Registry Pro — in development. An expanded subscriber version of the public treaty tracker."];function $F(){const[e,n]=j.useState("monthly"),[i,r]=j.useState(null),l=i==="Another country"?VF:Kh.find(m=>m.country===i)??null,d=GF(i),u=l?e==="monthly"?l.monthly:l.annual:null,h=d?e==="monthly"?d.monthlyLink:d.annualLink:null;return o.jsxs(Wt,{"data-loc":"client/src/pages/Subscribe.tsx:116",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Subscribe.tsx:117",title:"Subscribe to Akoroko Premium",description:"Choose your country and billing period to subscribe to Akoroko Premium for reporting, data, and intelligence tools covering African and diaspora screen markets.",canonical:"/subscribe",keywords:"Akoroko Premium, African screen intelligence subscription, African film industry newsletter"}),o.jsx("section",{"data-loc":"client/src/pages/Subscribe.tsx:124",style:{backgroundColor:"#1a1a19",borderBottom:"1px solid #333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:125",className:"relative",children:o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:126",className:"container relative",children:[o.jsx("img",{"data-loc":"client/src/pages/Subscribe.tsx:128",src:en,alt:"","aria-hidden":"true",className:"absolute hidden lg:block pointer-events-none",style:{right:"0px",top:"50%",transform:"translateY(-50%)",width:"320px",height:"320px",objectFit:"contain",zIndex:0,maskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)",WebkitMaskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)"}}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:145",className:"py-12 md:py-16 max-w-2xl",style:{position:"relative",zIndex:1},children:[o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:146",className:"w-8 h-0.5 mb-5",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h1",{"data-loc":"client/src/pages/Subscribe.tsx:147",className:"font-display text-4xl md:text-5xl font-bold leading-tight mb-5",style:{color:"#F5F5F5"},children:"Intelligence Tools for African and Diaspora Screen Markets"}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:153",className:"font-body text-lg leading-relaxed",style:{color:"#888888"},children:"Akoroko Premium is an intelligence subscription that combines independent reporting with practical research tools, structured records, curated dispatches, and searchable published knowledge for professionals working across African and diaspora screen sectors."}),o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:159",href:"/premium",className:"inline-block font-mono-data text-xs font-medium mt-6 border-b-2 pb-0.5 transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-4",style:{color:"#66CDD4",borderColor:"#66CDD4",outlineColor:"#66CDD4",letterSpacing:"0.08em"},children:"WHAT PREMIUM INCLUDES →"})]})]})})}),o.jsxs("section",{"data-loc":"client/src/pages/Subscribe.tsx:171",className:"container py-12 md:py-14",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:173",className:"mb-12 p-6 md:p-8 border-t-2",style:{backgroundColor:"#EFEFED",borderTopColor:"#0A5C6B",borderBottom:"1px solid #DEDEDE"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:177",className:"flex flex-col gap-7 lg:grid lg:grid-cols-[minmax(0,1.05fr)_minmax(0,0.75fr)_minmax(0,0.9fr)] lg:gap-8 lg:items-start",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:178",children:[o.jsx("label",{"data-loc":"client/src/pages/Subscribe.tsx:179",htmlFor:"subscription-country",className:"block font-mono-data text-xs font-bold mb-2",style:{color:"#1a1a19",letterSpacing:"0.10em"},children:"1 · SELECT YOUR COUNTRY"}),o.jsxs("p",{"data-loc":"client/src/pages/Subscribe.tsx:182",className:"font-body text-sm leading-relaxed mb-3",style:{color:"#555555"},children:["Local-currency rates are listed in this menu. If you do not see your country, choose ",o.jsx("strong",{"data-loc":"client/src/pages/Subscribe.tsx:183",children:"All other countries — US$25/month or US$250/year"}),"."," ",o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:184",href:"#localized-pricing-heading",style:{color:"#0A5C6B",textDecoration:"underline",textUnderlineOffset:"3px"},children:"View the localized-rates table below."})]}),o.jsxs("select",{"data-loc":"client/src/pages/Subscribe.tsx:186",id:"subscription-country",value:i??"",onChange:m=>r(m.target.value),className:"w-full font-mono-data text-sm px-4 py-3 border bg-white",style:{color:"#1a1a19",borderColor:"#BBBBBB"},children:[o.jsx("option",{"data-loc":"client/src/pages/Subscribe.tsx:193",value:"",disabled:!0,children:"Select your country"}),o.jsx("optgroup",{"data-loc":"client/src/pages/Subscribe.tsx:194",label:"Countries with local-currency rates",children:Kh.map(m=>o.jsx("option",{"data-loc":"client/src/pages/Subscribe.tsx:195",value:m.country,children:m.country},m.country))}),o.jsx("option",{"data-loc":"client/src/pages/Subscribe.tsx:197",value:"Another country",children:"All other countries — US$25/month or US$250/year"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:200",children:[o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:201",className:"font-mono-data text-xs font-bold mb-2",style:{color:"#1a1a19",letterSpacing:"0.10em"},children:"2 · CHOOSE BILLING"}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:202",className:"flex border w-fit",style:{borderColor:"#DEDEDE"},children:[o.jsx("button",{"data-loc":"client/src/pages/Subscribe.tsx:203",onClick:()=>n("monthly"),className:"font-mono-data text-xs px-5 py-3 transition-all duration-150",style:{backgroundColor:e==="monthly"?"#1a1a19":"#FFFFFF",color:e==="monthly"?"#F5F5F5":"#555555",letterSpacing:"0.08em"},children:"MONTHLY"}),o.jsxs("button",{"data-loc":"client/src/pages/Subscribe.tsx:214",onClick:()=>n("annual"),className:"font-mono-data text-xs px-5 py-3 transition-all duration-150 relative",style:{backgroundColor:e==="annual"?"#1a1a19":"#FFFFFF",color:e==="annual"?"#F5F5F5":"#555555",letterSpacing:"0.08em"},children:["ANNUAL",o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:224",className:"absolute -top-2 -right-2 font-mono-data text-xs px-1.5 py-0.5",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",fontSize:"9px",letterSpacing:"0.06em"},children:"SAVE 17%"})]})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:233","aria-live":"polite",children:[o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:234",className:"font-mono-data text-xs font-bold mb-2",style:{color:"#1a1a19",letterSpacing:"0.10em"},children:"3 · YOUR PRICE"}),u?o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:236",children:[o.jsxs("p",{"data-loc":"client/src/pages/Subscribe.tsx:237",className:"font-condensed text-4xl leading-none",style:{color:"#1a1a19"},children:[u,o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:238",className:"font-body text-sm ml-2",style:{color:"#555555"},children:e==="monthly"?"/month":"/year"})]}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:240",className:"font-body text-sm mt-2",style:{color:"#555555"},children:e==="monthly"?"Cancel anytime":"Two months free"})]}):o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:243",className:"font-body text-sm leading-relaxed",style:{color:"#555555"},children:"Select your country to see your monthly or annual subscription price."})]})]}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:247",className:"mt-7 pt-6 border-t",style:{borderColor:"#D1D1CF"},children:h?o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:249",className:"flex flex-col sm:flex-row sm:items-center gap-4",children:[o.jsxs("a",{"data-loc":"client/src/pages/Subscribe.tsx:250",href:h,target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs font-medium px-5 py-3.5 text-center transition-all duration-150 hover:opacity-90 inline-flex items-center justify-center gap-2",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:[o.jsx("img",{"data-loc":"client/src/pages/Subscribe.tsx:257",src:en,alt:"",className:"h-4 w-4 object-contain"}),"SUBSCRIBE SECURELY"]}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:260",className:"font-mono-data text-xs",style:{color:"#555555"},children:"Powered by Stripe · Secure checkout."})]}):o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:263",className:"flex flex-col sm:flex-row sm:items-center gap-4",children:[o.jsxs("button",{"data-loc":"client/src/pages/Subscribe.tsx:264",type:"button",disabled:!0,className:"font-mono-data text-xs font-medium px-5 py-3.5 text-center inline-flex items-center justify-center gap-2 cursor-not-allowed",style:{backgroundColor:"#BBBBBB",color:"#F5F5F5",letterSpacing:"0.08em"},children:[o.jsx("img",{"data-loc":"client/src/pages/Subscribe.tsx:270",src:en,alt:"",className:"h-4 w-4 object-contain"}),"SUBSCRIBE SECURELY"]}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:273",className:"font-mono-data text-xs",style:{color:"#555555"},children:"Select your country to enable secure checkout."})]})})]}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:279",className:"grid grid-cols-1 lg:grid-cols-[minmax(0,1fr)_minmax(280px,0.72fr)] ga
3905p-6 max-w-5xl mx-auto",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:281",className:"p-8 border-2 flex flex-col relative",style:{backgroundColor:"#FAFAFA",borderColor:"#0A5C6B"},children:[o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:285",className:"absolute -top-3 left-6 px-3 py-1 font-mono-data text-xs",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:"INDIVIDUAL"}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:291",className:"mb-6",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:292",className:"flex items-center gap-2 mb-3",children:[o.jsx("img",{"data-loc":"client/src/pages/Subscribe.tsx:293",src:ei,alt:"",className:"h-5 w-5 object-contain"}),o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:294",className:"category-tag",style:{color:"#0A5C6B"},children:"Premium"})]}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:296",className:"font-body text-sm leading-relaxed",style:{color:"#888888"},children:"Intelligence tools, structured records, curated dispatches, and searchable published knowledge for individual professionals."})]}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:300",className:"space-y-6 mb-8 flex-1",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:301",children:[o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:302",className:"font-mono-data text-xs font-medium mb-3",style:{color:"#0A5C6B",letterSpacing:"0.08em"},children:"AVAILABLE NOW · INCLUDED WITH PREMIUM"}),o.jsx("ul",{"data-loc":"client/src/pages/Subscribe.tsx:303",className:"space-y-2.5",children:KF.map(m=>o.jsxs("li",{"data-loc":"client/src/pages/Subscribe.tsx:305",className:"flex items-start gap-2",children:[o.jsx("img",{"data-loc":"client/src/pages/Subscribe.tsx:306",src:ei,alt:"",className:"h-3.5 w-3.5 object-contain flex-shrink-0 mt-0.5"}),o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:307",className:"font-body text-sm",style:{color:"#555555"},children:m})]},m))})]}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:312",children:[o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:313",className:"font-mono-data text-xs font-medium mb-3",style:{color:"#0A5C6B",letterSpacing:"0.08em"},children:"IN DEVELOPMENT"}),o.jsx("ul",{"data-loc":"client/src/pages/Subscribe.tsx:314",className:"space-y-2.5",children:YF.map(m=>o.jsxs("li",{"data-loc":"client/src/pages/Subscribe.tsx:316",className:"flex items-start gap-2",children:[o.jsx("img",{"data-loc":"client/src/pages/Subscribe.tsx:317",src:ei,alt:"",className:"h-3.5 w-3.5 object-contain flex-shrink-0 mt-0.5"}),o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:318",className:"font-body text-sm",style:{color:"#555555"},children:m})]},m))})]})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:327",id:"institutional",className:"p-8 border-2 flex flex-col relative",style:{backgroundColor:"#FAFAFA",borderColor:"#1a1a19"},children:[o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:332",className:"absolute -top-3 left-6 px-3 py-1 font-mono-data text-xs",style:{backgroundColor:"#1a1a19",color:"#F5F5F5",letterSpacing:"0.08em"},children:"INSTITUTIONAL"}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:338",className:"mb-6",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:339",className:"flex items-center gap-2 mb-3",children:[o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:340",className:"font-mono-data text-xs px-2 py-0.5 border",style:{borderColor:"#1a1a19",color:"#1a1a19",letterSpacing:"0.06em"},children:"ORG"}),o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:341",className:"category-tag",style:{color:"#1a1a19"},children:"Access"})]}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:343",className:"mb-1",children:[o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:344",className:"font-condensed text-5xl",style:{color:"#1a1a19"},children:"$2,500"}),o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:345",className:"font-body text-sm ml-2",style:{color:"#888888"},children:"/year"})]}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:347",className:"font-body text-sm mt-1",style:{color:"#888888"},children:"For organizations, teams, and institutions"})]}),o.jsx("ul",{"data-loc":"client/src/pages/Subscribe.tsx:349",className:"space-y-2.5 mb-8 flex-1",children:["Up to 10 named seats","Everything included in Akoroko Premium, for every seat","Two custom data requests a year, drawn from the registries","Invoice billing","Priority response on research questions"].map(m=>o.jsxs("li",{"data-loc":"client/src/pages/Subscribe.tsx:357",className:"flex items-start gap-2",children:[o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:358",className:"font-mono-data text-xs mt-0.5 flex-shrink-0",style:{color:"#0A5C6B"},children:"✓"}),o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:359",className:"font-body text-sm",style:{color:"#555555"},children:m})]},m))}),o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:363",href:"/institutional",className:"font-mono-data text-xs font-medium px-4 py-3.5 text-center transition-all duration-150 hover:opacity-90",style:{backgroundColor:"#1a1a19",color:"#F5F5F5",letterSpacing:"0.08em"},children:"REQUEST INSTITUTIONAL ACCESS"}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:370",className:"font-mono-data text-xs text-center mt-3",style:{color:"#888888"},children:"We respond within 2 business days"})]})]}),o.jsxs("section",{"data-loc":"client/src/pages/Subscribe.tsx:376",className:"mt-14","aria-labelledby":"localized-pricing-heading",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:377",className:"mb-6",children:[o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:378",className:"category-tag",style:{color:"#0A5C6B"},children:"LOCALIZED PRICING"}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:379",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h2",{"data-loc":"client/src/pages/Subscribe.tsx:380",id:"localized-pricing-heading",className:"font-display text-2xl font-bold",style:{color:"#1a1a19"},children:"Rates in Local Currency"}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:381",className:"font-body text-base mt-3",style:{color:"#555555"},children:"Localized subscription prices are available in 23 African markets, Brazil, the Dominican Republic and Jamaica."})]}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:383",className:"md:hidden font-mono-data text-xs mb-3",style:{color:"#0A5C6B",letterSpacing:"0.08em"},children:"SWIPE TO VIEW MONTHLY AND ANNUAL RATES →"}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:384",className:"overflow-x-auto border",style:{borderColor:"#DEDEDE"},children:o.jsxs("table",{"data-loc":"client/src/pages/Subscribe.tsx:385",className:"w-full min-w-[680px] text-left",children:[o.jsx("thead",{"data-loc":"client/src/pages/Subscribe.tsx:386",style:{backgroundColor:"#1a1a19",color:"#F5F5F5"},children:o.jsxs("tr",{"data-loc":"client/src/pages/Subscribe.tsx:387",className:"font-mono-data text-xs",style:{letterSpacing:"0.08em"},children:[o.jsx("th",{"data-loc":"client/src/pages/Subscribe.tsx:388",className:"px-4 py-3 font-medium",children:"COUNTRY"}),o.jsx("th",{"data-loc":"client/src/pages/Subscribe.tsx:389",className:"px-4 py-3 font-medium",children:"CURRENCY"}),o.jsx("th",{"data-loc":"client/src/pages/Subscribe.tsx:390",className:"px-4 py-3 font-medium",children:"MONTHLY"}),o.jsx("th",{"data-loc":"client/src/pages/Subscribe.tsx:391",className:"px-4 py-3 font-medium",children:"ANNUAL"})]})}),o.jsx("tbody",{"data-loc":"client/src/pages/Subscribe.tsx:394",children:Kh.map(m=>o.jsxs("tr",{"data-loc":"client/src/pages/Subscribe.tsx:396",onClick:()=>r(m.country),onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&r(m.country)},tabIndex:0,role:"button","aria-label":`Select ${m.country} pricing`,className:"border-t cursor-pointer transition-colors hover:bg-[#
3905EFEFED] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px]",style:{borderColor:"#DEDEDE",backgroundColor:i===m.country?"#EFEFED":"#FFFFFF"},children:[o.jsx("td",{"data-loc":"client/src/pages/Subscribe.tsx:406",className:"px-4 py-3 font-body text-sm font-medium",style:{color:"#1a1a19"},children:m.country}),o.jsx("td",{"data-loc":"client/src/pages/Subscribe.tsx:407",className:"px-4 py-3 font-mono-data text-xs",style:{color:"#555555"},children:m.currency}),o.jsx("td",{"data-loc":"client/src/pages/Subscribe.tsx:408",className:"px-4 py-3 font-mono-data text-sm",style:{color:"#1a1a19"},children:m.monthly}),o.jsx("td",{"data-loc":"client/src/pages/Subscribe.tsx:409",className:"px-4 py-3 font-mono-data text-sm",style:{color:"#1a1a19"},children:m.annual})]},m.country))})]})}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:415",className:"font-body text-sm leading-relaxed mt-4",style:{color:"#555555"},children:"Ghana, Somalia and Zimbabwe use fixed regional checkout prices. The Ghanaian price is the approved local rate; the Somali and Zimbabwean figures are rounded local-currency equivalents. The final amount and charging currency will be shown before payment."})]})]}),o.jsx("section",{"data-loc":"client/src/pages/Subscribe.tsx:421",className:"container py-12 md:py-14 border-t",style:{borderColor:"#DEDEDE"},children:o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:422",className:"max-w-5xl",children:[o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:423",className:"category-tag",style:{color:"#0A5C6B"},children:"TOOL SCREENSHOTS"}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:424",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h2",{"data-loc":"client/src/pages/Subscribe.tsx:425",className:"font-display text-2xl md:text-3xl font-bold",style:{color:"#1a1a19"},children:"A closer look at Akoroko Premium"}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:426",className:"font-body text-base leading-relaxed mt-3 max-w-3xl",style:{color:"#555555"},children:"These screenshots link to the full-size versions placed with each corresponding tool on the Premium page."}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:429",className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-3 mt-6",children:Am.map(m=>o.jsxs("a",{"data-loc":"client/src/pages/Subscribe.tsx:431",href:`/premium#${m.anchor}`,"aria-label":`View the full ${m.name} screenshot on the Akoroko Premium page`,className:"group border transition-opacity hover:opacity-75 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",style:{borderColor:"#DEDEDE",backgroundColor:"#FAFAFA",outlineColor:"#0A5C6B"},children:[o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:438",className:"aspect-[4/3] p-2",style:{backgroundColor:"#F2F1ED"},children:o.jsx("img",{"data-loc":"client/src/pages/Subscribe.tsx:439",src:m.image,alt:"",loading:"lazy",className:"w-full h-full object-contain",style:{backgroundColor:"#FFFFFF"}})}),o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:447",className:"px-3 py-3 border-t",style:{borderColor:"#DEDEDE"},children:[o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:448",className:"font-display text-sm font-bold leading-tight",style:{color:"#1a1a19"},children:m.name}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:449",className:"font-mono-data text-[9px] mt-1",style:{color:m.status==="IN DEVELOPMENT"?"#8A5B00":"#0A5C6B",letterSpacing:"0.07em"},children:m.status})]})]},m.name))}),o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:454",href:"/premium",className:"inline-block font-mono-data text-xs font-medium mt-6 border-b-2 pb-0.5 transition-colors",style:{color:"#0A5C6B",borderColor:"#0A5C6B",letterSpacing:"0.08em"},children:"VIEW ALL TOOL SCREENSHOTS →"})]})}),o.jsx("section",{"data-loc":"client/src/pages/Subscribe.tsx:465",className:"border-t border-b",style:{backgroundColor:"#1a1a19",borderColor:"#333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:469",className:"container py-14",children:o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:470",className:"max-w-3xl",children:[o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:471",className:"category-tag",style:{color:"#0A5C6B",letterSpacing:"0.12em"},children:"WHY SUBSCRIBE NOW"}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:472",className:"w-8 h-0.5 mt-2 mb-6",style:{backgroundColor:"#0A5C6B"}}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:473",className:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-8",children:[{label:"Independent Coverage",body:"Akoroko is an independent platform built on sustained reporting, data tracking, and analysis across African and diasp
3905ora film, television, and digital media. Subscriptions fund that work directly."},{label:"What Subscribers Get",body:"The current Premium offering includes Pipeline Registry, Distribution Registry, Funding Desk, Streaming and Infrastructure Registry, AFP Dispatch, and Ask Akoroko Premium; plus deeper reporting behind public trackers, early access to new tools, and periodic consultation. In development: Box Office Registry and Co-Production Treaty Registry Pro."},{label:"Who Uses It",body:"Akoroko is used by producers, distributors, financiers, festival programmers, researchers, and institutions working across African and diaspora screen sectors."}].map(m=>o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:479",className:"border-l-2 pl-4",style:{borderColor:"#0A5C6B"},children:[o.jsx("h3",{"data-loc":"client/src/pages/Subscribe.tsx:480",className:"font-display text-base font-bold mb-2",style:{color:"#F5F5F5"},children:m.label}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:481",className:"font-body text-sm leading-relaxed",style:{color:"#888888"},children:m.body})]},m.label))}),o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:485",className:"font-display text-lg font-bold italic",style:{color:"#F5F5F5"},children:"Verified data, working tools, and market analysis on African and diaspora screen activity."})]})})}),o.jsxs("section",{"data-loc":"client/src/pages/Subscribe.tsx:496",className:"container py-14",children:[o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:497",className:"mb-8",children:[o.jsx("span",{"data-loc":"client/src/pages/Subscribe.tsx:498",className:"category-tag",style:{color:"#0D6E6E"},children:"FAQ"}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:499",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h2",{"data-loc":"client/src/pages/Subscribe.tsx:500",className:"font-display text-2xl font-bold",style:{color:"#1a1a19"},children:"Common Questions"})]}),o.jsx("div",{"data-loc":"client/src/pages/Subscribe.tsx:504",className:"max-w-3xl space-y-6",children:[{q:"What do I get access to?",a:"A subscription includes the current Premium offering: Pipeline Registry, Distribution Registry, Funding Desk, Streaming and Infrastructure Registry, AFP Dispatch, and Ask Akoroko Premium. It also includes deeper reporting behind public trackers, early access to new tools, periodic 30-minute consultation sessions, and localized monthly and annual pricing in 23 African markets, Brazil, the Dominican Republic and Jamaica. In development: Box Office Registry and Co-Production Treaty Registry Pro."},{q:"How often will I hear from you?",a:"News dispatches go out two to three times a week, and you set the cadence for the curated AFP Dispatch. The tools do not depend on email — the registries, the Funding Desk, and the archive are available to you at any time."},{q:"How do I access past reporting?",a:"Ask Akoroko Premium. Ask a question and get an answer grounded in years of published work, in English or French. Past reporting is available through this included Premium tool."},{q:"How is the subscription managed?",a:"MANAGEMENT_LINK"},{q:"Can I cancel at any time?",a:"CANCELLATION_LINK"},{q:"What is African Film Press (AFP)?",a:"Akoroko is part of African Film Press (AFP), a publishing, research, and intelligence organization that also includes Sinema Focus, covering East Africa from Kenya, and What Kept Me Up, covering Nigeria and Anglophone West Africa."}].map(m=>o.jsxs("div",{"data-loc":"client/src/pages/Subscribe.tsx:531",className:"border-b pb-6",style:{borderColor:"#DEDEDE"},children:[o.jsx("h3",{"data-loc":"client/src/pages/Subscribe.tsx:532",className:"font-display text-lg font-bold mb-2",style:{color:"#1a1a19"},children:m.q}),m.a==="MANAGEMENT_LINK"?o.jsxs("p",{"data-loc":"client/src/pages/Subscribe.tsx:536",className:"font-body text-base leading-relaxed",style:{color:"#555555"},children:["Subscriptions are processed securely via Stripe. You can manage your subscription through the Stripe customer portal from the"," ",o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:538",href:"/account",style:{color:"#0A5C6B",textDecoration:"underline",textUnderlineOffset:"3px"},children:"Account page"}),", or"," ",o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:539",href:"/contact",style:{color:"#0A5C6B",textDecoration:"underline",textUnderlineOffset:"3px"},children:"contact Akoroko directly"})," ","for assistance."]}):m.a==="CANCELLATION_LINK"?o.jsxs("p",{"data-loc":"client/src/pages/Subscribe.tsx:543",className:"font-body text-base leading-relaxed",style:{color:"#555555"},children:["Yes. You can cancel at any time through the Stripe customer portal from the"," ",o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:545",href:"/account",style:{color:"#0A5C6B",textDecoration:"underline",textUnderlineOffset:"3px"},children:"Account page"}),", or"," ",o.jsx("a",{"data-loc":"client/src/pages/Subscribe.tsx:546",href:"/contact",style:{color:"#0A5C6B",textDecoration:"underline",textUnderlineOffset:"3px"},children:"contact Akoroko directly"})," ","for assistance. Your subscription remains active until the end of the current billing period."]}):o.jsx("p",{"data-loc":"client/src/pages/Subscribe.tsx:550",className:"font-body text-base leading-relaxed",style:{color:"#555555"},children:m.a})]},m.q))})]})]})}const ev=new Map(Am.map(e=>[e.name,e])),QF=[{question:"Who bought this film? What happened after it premiered?",name:"Distribution Registry",description:"Tracks African and diasp
3905ora films from world premiere to sales, acquisitions, and release — sales agent, territories, confirmed deals, and box-office data where it has been reported."},{question:"Which projects are already moving toward production?",name:"Pipeline Registry",description:"Follows African film and TV projects from development to premiere — financing attached, packaging, production status."},{question:"Where can this project find money?",name:"Funding Desk",description:"Grants, funds, and financing sources for African film and audiovisual projects, with eligibility details."},{question:"What's changing in streaming, telecom, or exhibition?",name:"Streaming and Infrastructure Registry",description:"Platform, telecom, and cinema infrastructure activity across the continent, tracked as it happens."},{question:"I need to check something we covered before.",name:"Ask Akoroko Premium",description:"Search everything AFP and Akoroko have reported and researched, in English or French, without having to remember which piece it was in.",href:"/ask"},{question:"What should I be reading this week?",name:"AFP Dispatch",description:"Curated reporting on your chosen cadence.",href:"https://africanfilmpress.com/articles"}],JF=[{question:"How did that film perform in cinemas?",name:"Box Office Registry",description:"In development."},{question:"Do these two countries have a treaty?",name:"Co-Production Treaty Registry Pro",description:"In development. An expanded subscriber version of the public treaty tracker."}];function XF(){return o.jsxs(Wt,{"data-loc":"client/src/pages/Premium.tsx:58",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Premium.tsx:59",title:"Akoroko Premium — Reporting, Research and Intelligence Tools",description:"Explore the current Akoroko Premium offering: reporting, structured intelligence tools, AFP Dispatch, and Ask Akoroko Premium.",canonical:"/premium"}),o.jsx("section",{"data-loc":"client/src/pages/Premium.tsx:65",style:{backgroundColor:"#1a1a19",borderBottom:"1px solid #333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:66",className:"relative",children:o.jsxs("div",{"data-loc":"client/src/pages/Premium.tsx:67",className:"container relative",children:[o.jsx("img",{"data-loc":"client/src/pages/Premium.tsx:68",src:en,alt:"","aria-hidden":"true",className:"absolute hidden lg:block pointer-events-none",style:{right:"0px",top:"50%",transform:"translateY(-50%)",width:"320px",height:"320px",objectFit:"contain",zIndex:0,maskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)",WebkitMaskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)"}}),o.jsxs("div",{"data-loc":"client/src/pages/Premium.tsx:85",className:"py-14 md:py-20 max-w-2xl",style:{position:"relative",zIndex:1},children:[o.jsx("span",{"data-loc":"client/src/pages/Premium.tsx:86",className:"category-tag",style:{color:"#0A5C6B",letterSpacing:"0.12em"},children:"AKOROKO PREMIUM"}),o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:87",className:"w-8 h-0.5 mt-2 mb-5",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h1",{"data-loc":"client/src/pages/Premium.tsx:88",className:"font-display text-4xl md:text-5xl font-bold leading-tight mb-5",style:{color:"#F5F5F5"},children:"Everything in One Place"}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:91",className:"font-body text-lg leading-relaxed",style:{color:"#888888"},children:"The current Akoroko Premium offering combines independent reporting with practical research tools, structured records, curated dispatches, and searchable published knowledge."}),o.jsx("a",{"data-loc":"client/src/pages/Premium.tsx:94",href:"/subscribe",className:"inline-block font-mono-data text-xs font-medium mt-7 border-b-2 pb-0.5 transition-colors",style:{color:"#66CDD4",borderColor:"#66CDD4",letterSpacing:"0.08em"},children:"CHOOSE ACCESS →"})]})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Premium.tsx:106",className:"container py-10 border-b",style:{borderColor:"#DEDEDE"},children:o.jsxs("div",{"data-loc":"client/src/pages/Premium.tsx:107",className:"max-w-3xl",children:[o.jsx("span",{"data-loc":"client/src/pages/Premium.tsx:108",className:"category-tag",style:{color:"#0D6E6E"},children:"On your phone?"}),o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:109",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:110",className:"font-body text-base leading-relaxed mb-3",style:{color:"#555555"},children:"Add this page to your home screen so it's one tap away, same as an app:"}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:113",className:"font-body text-sm leading-relaxed",style:{color:"#555555"},children:'iPhone (Safari): tap the Share icon, then "Add to Home Screen."'}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:116",className:"font-body text-sm leading-relaxed",style:{color:"#555555"},children:'Android (Chrome): tap the ⋮ menu, then "Add to Home screen."'})]})}),o.jsx("section",{"data-loc":"client/src/pages/Premium.tsx:122",className:"container py-12",children:o.jsxs("div",{"data-loc":"client/src/pages/Premium.tsx:123",className:"max-w-3xl",children:[o.jsxs("div",{"data-loc":"client/src/pages/Premium.tsx:124",className:"mb-8",children:[o.jsx("span",{"data-loc":"client/src/pages/Premium.tsx:125",className:"category-tag",style:{color:"#0A5C6B"},children:"AVAILABLE NOW · INCLUDED WITH PREMIUM"}),o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:126",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:127",className:"font-body text-base leading-relaxed",style:{color:"#555555"},children:"The current Premium offering brings reporting and working research tools into one place for professional screen-sector research."})]}),o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:131",className:"divide-y",style:{borderColor:"#DEDEDE"},children:QF.map(e=>
3905{const n=ev.get(e.name);return o.jsxs("article",{"data-loc":"client/src/pages/Premium.tsx:135",id:n?.anchor,className:"py-7 first:pt-0 scroll-mt-6",children:[o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:136",className:"font-body text-base leading-relaxed mb-2",style:{color:"#555555"},children:e.question}),e.href?o.jsxs("a",{"data-loc":"client/src/pages/Premium.tsx:138",href:e.href,target:e.href.startsWith("http")?"_blank":void 0,rel:e.href.startsWith("http")?"noopener noreferrer":void 0,className:"font-display text-2xl font-bold transition-opacity hover:opacity-70",style:{color:"#0A5C6B"},children:[e.name," →"]}):o.jsx("h2",{"data-loc":"client/src/pages/Premium.tsx:148",className:"font-display text-2xl font-bold",style:{color:"#1a1a19"},children:e.name}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:150",className:"font-body text-base leading-relaxed mt-2",style:{color:"#555555"},children:e.description}),n&&o.jsxs("figure",{"data-loc":"client/src/pages/Premium.tsx:152",className:"mt-5 border",style:{borderColor:"#DEDEDE",backgroundColor:"#F2F1ED"},children:[o.jsx("img",{"data-loc":"client/src/pages/Premium.tsx:153",src:n.image,alt:n.alt,loading:"lazy",className:"w-full block",style:{maxHeight:"520px",objectFit:"contain",backgroundColor:"#FFFFFF"}}),o.jsx("figcaption",{"data-loc":"client/src/pages/Premium.tsx:160",className:"px-4 py-3 border-t font-mono-data text-[10px]",style:{borderColor:"#DEDEDE",color:"#555555",letterSpacing:"0.08em"},children:"SCREENSHOT"})]})]},e.name)})}),o.jsxs("div",{"data-loc":"client/src/pages/Premium.tsx:167",className:"mt-12 mb-8 pt-10 border-t",style:{borderColor:"#DEDEDE"},children:[o.jsx("span",{"data-loc":"client/src/pages/Premium.tsx:168",className:"category-tag",style:{color:"#0A5C6B"},children:"IN DEVELOPMENT"}),o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:169",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:170",className:"font-body text-base leading-relaxed",style:{color:"#555555"},children:"These capabilities are being expanded for future Premium access. They are not part of the current subscriber-access inventory."})]}),o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:174",className:"divide-y",style:{borderColor:"#DEDEDE"},children:JF.map(e=>{const n=ev.get(e.name);return o.jsxs("article",{"data-loc":"client/src/pages/Premium.tsx:178",id:n?.anchor,className:"py-7 first:pt-0 scroll-mt-6",children:[o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:179",className:"font-body text-base leading-relaxed mb-2",style:{color:"#555555"},children:e.question}),o.jsx("h2",{"data-loc":"client/src/pages/Premium.tsx:180",className:"font-display text-2xl font-bold",style:{color:"#1a1a19"},children:e.name}),o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:181",className:"font-body text-base leading-relaxed mt-2",style:{color:"#555555"},children:e.description}),n&&o.jsxs("figure",{"data-loc":"client/src/pages/Premium.tsx:183",className:"mt-5 border",style:{borderColor:"#DEDEDE",backgroundColor:"#F2F1ED"},children:[o.jsx("img",{"data-loc":"client/src/pages/Premium.tsx:184",src:n.image,alt:n.alt,loading:"lazy",className:"w-full block",style:{maxHeight:"520px",objectFit:"contain",backgroundColor:"#FFFFFF"}}),o.jsx("figcaption",{"data-loc":"client/src/pages/Premium.tsx:191",className:"px-4 py-3 border-t font-mono-data text-[10px]",style:{borderColor:"#DEDEDE",color:"#555555",letterSpacing:"0.08em"},children:"SCREENSHOT"})]})]},e.name)})})]})}),o.jsx("section",{"data-loc":"client/src/pages/Premium.tsx:201",className:"border-t",style:{backgroundColor:"#FAFAFA",borderColor:"#DEDEDE"},children:o.jsx("div",{"data-loc":"client/src/pages/Premium.tsx:202",className:"container py-10",children:o.jsx("p",{"data-loc":"client/src/pages/Premium.tsx:203",className:"max-w-3xl font-body text-base leading-relaxed",style:{color:"#555555"},children:"Questions, access issues, or something not working the way you expect — reply directly to any AFP email, or reach Tambay directly."})})})]})}const ZF="6384fe60-9991-41ff-a369-b287af6b85c9";function eE(){const[e,n]=j.useState({name:"",email:"",subject:"",message:""}),[i,r]=j.useState(!1),l=async d=>{d.preventDefault(),r(!0);const u={subscription:"Subscription Inquiry",institutional:"Institutional Access","press-tip":"Press Tip / Story Lead","editorial-pitch":"Editorial Pitch",research:"Research Partnership",advertising:"Advertising / Sponsorship",other:"Other"};try{const m=await(await fetch("https://api.web3forms.com/submit",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({access_key:ZF,name:e.name,email:e.email,subject:`[Akoroko] ${u[e.subject]??e.subject}`,message:e.message,botcheck:""})})).json();if(m.success)ht.success("Message sent successfully.",{description:"We will respond within 2 business days."}),n({name:"",email:"",subject:"",message:""});else throw new Error(m.message??"Submission failed")}catch{ht.error("Failed to send message.",{description:"Please try again or email us directly at [email protected]"})}finally{r(!1)}};return o.jsxs(Wt,{"data-loc":"client/src/pages/Contact.tsx:63",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Contact.tsx:64",title:"Contact Akoroko",description:"Contact Akoroko about subscriptions, institutional access, editorial pitches, press t
3905ips, research partnerships, or account assistance.",canonical:"/contact"}),o.jsx("section",{"data-loc":"client/src/pages/Contact.tsx:70",className:"border-b",style:{backgroundColor:"#1a1a19",borderColor:"#333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Contact.tsx:74",className:"relative",children:o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:75",className:"container relative",children:[o.jsx("img",{"data-loc":"client/src/pages/Contact.tsx:77",src:en,alt:"","aria-hidden":"true",className:"absolute hidden lg:block pointer-events-none",style:{right:"0px",top:"50%",transform:"translateY(-50%)",width:"320px",height:"320px",objectFit:"contain",zIndex:0,maskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)",WebkitMaskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)"}}),o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:94",className:"py-14 md:py-20 max-w-2xl",style:{position:"relative",zIndex:1},children:[o.jsx("span",{"data-loc":"client/src/pages/Contact.tsx:95",className:"category-tag",style:{color:"#0D6E6E"},children:"Contact"}),o.jsx("div",{"data-loc":"client/src/pages/Contact.tsx:96",className:"gold-rule mt-2 mb-4 w-12"}),o.jsx("h1",{"data-loc":"client/src/pages/Contact.tsx:97",className:"font-display text-4xl md:text-5xl font-bold leading-tight mb-4",style:{color:"#F5F5F5"},children:"Contact Akoroko"}),o.jsx("p",{"data-loc":"client/src/pages/Contact.tsx:103",className:"font-body text-lg leading-relaxed",style:{color:"#888888"},children:"Use the form below to submit subscription inquiries, press tips, editorial pitches, research partnership requests, or institutional access inquiries. For subscription or account help—including billing questions, Stripe customer portal access, or cancellation assistance—select Subscription Inquiry. For all other requests, select the appropriate subject to ensure your message is routed correctly."})]})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Contact.tsx:111",className:"container py-14",children:o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:112",className:"grid grid-cols-1 lg:grid-cols-12 gap-10",children:[o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:114",className:"lg:col-span-7",children:[o.jsx("span",{"data-loc":"client/src/pages/Contact.tsx:115",className:"category-tag",style:{color:"#0D6E6E"},children:"Send a Message"}),o.jsx("div",{"data-loc":"client/src/pages/Contact.tsx:116",className:"gold-rule mt-2 mb-6 w-12"}),o.jsxs("form",{"data-loc":"client/src/pages/Contact.tsx:117",onSubmit:l,className:"space-y-5",children:[o.jsx("input",{"data-loc":"client/src/pages/Contact.tsx:119",type:"checkbox",name:"botcheck",className:"hidden",style:{display:"none"}}),o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:120",className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:121",children:[o.jsx("label",{"data-loc":"client/src/pages/Contact.tsx:122",className:"font-mono-data text-xs block mb-1.5",style:{color:"#555555",letterSpacing:"0.08em"},children:"NAME"}),o.jsx("input",{"data-loc":"client/src/pages/Contact.tsx:125",type:"text",required:!0,value:e.name,onChange:d=>n({...e,name:d.target.value}),className:"w-full px-3 py-2.5 border font-body text-sm focus:outline-none focus:border-amber-500 transition-colors",style:{backgroundColor:"#F5F5F5",borderColor:"#DEDEDE",color:"#1a1a19"},placeholder:"Your full name"})]}),o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:135",children:[o.jsx("label",{"data-loc":"client/src/pages/Contact.tsx:136",className:"font-mono-data text-xs block mb-1.5",style:{color:"#555555",letterSpacing:"0.08em"},children:"EMAIL"}),o.jsx("input",{"data-loc":"client/src/pages/Contact.tsx:139",type:"email",required:!0,value:e.email,onChange:d=>n({...e,email:d.target.value}),className:"w-full px-3 py-2.5 border font-body text-sm focus:outline-none focus:border-amber-500 transition-colors",style:{backgroundColor:"#F5F5F5",borderColor:"#DEDEDE",color:"#1a1a19"},placeholder:"[email protected]"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:150",children:[o.jsx("label",{"data-loc":"client/src/pages/Contact.tsx:151",className:"font-mono-data text-xs block mb-1.5",style:{color:"#555555",letterSpacing:"0.08em"},children:"SUBJECT"}),o.jsxs("select",{"data-loc":"client/src/pages/Contact.tsx:154",required:!0,value:e.subject,onChange:d=>n({...e,subject:d.target.value}),className:"w-full px-3 py-2.5 border font-body text-sm focus:outline-none focus:border-amber-500 transition-colors",style:{backgroundColor:"#F5F5F5",borderColor:"#DEDEDE",color:e.subject?"#1a1a19":"#888888"},children:[o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:161",value:"",disabled:!0,children:"Select a subject"}),o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:162",value:"subscription",children:"Subscription Inquiry"}),o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:163",value:"institutional",children:"Institutional Access"}),o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:164",value:"press-tip",children:"Press Tip / Story Lead"}),o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:165",value:"editorial-pitch",children:"Editorial Pitch"}),o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:166",value:"research",children:"Research Partnership"}),o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:167",value:"advertising",children:"Advertising / Sponsorship"}),o.jsx("option",{"data-loc":"client/src/pages/Contact.tsx:168",value:"other",children:"Other"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:171",children:[o.jsx("label",{"data-loc":"client/src/pages/Contact.tsx:172",className:"font-mono-data text-xs block mb-1.5",style:{color:"#555555",letterSpacing:"0.08em"},children:"MESSAGE"}),o.jsx("textarea",{"data-loc":"client/src/pages/Contact.tsx:175",required:!0,rows:6,value:e.message,onChange:d=>n({...e,message:d.target.value}),className:"w-full px-3 py-2.5 border font-body text-sm focus:outline-none focus:border-amber-500 transition-colors resize-none",style:{backgroundColor:"#F5F5F5",borderColor:"#DEDEDE",color:"#1a1a19"},placeholder:"Your message..."})]}),o.jsx("button",{"data-loc":"client/src/pages/Contact.tsx:185",type:"submit",disabled:i,className:"font-mono-data text-xs font-medium px-8 py-3 transition-all duration-150 hover:opacity-90 disabled:opacity-50 disabled:cursor-not-allowed",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:i?"SENDING…":"SEND MESSAGE"})]})]}),o.jsx("aside",{"data-loc":"client/src/pages/Contact.tsx:197",className:"lg:col-span-5",children:o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:198",className:"p-6 border mb-6",style:{backgroundColor:"#FAFAFA",borderColor:"#DEDEDE"},children:[o.jsx("h3",{"data-loc":"client/src/pages/Contact.tsx:202",className:"category-tag mb-4",style:{color:"#0D6E6E"},children:"Contact Details"}),o.jsx("div",{"data-loc":"client/src/pages/Contact.tsx:203",className:"space-y-4",children:[{label:"General Inquiries",value:"[email protected]",href:"mailto:[email protected]"}].map(d=>o.jsxs("div",{"data-loc":"client/src/pages/Contact.tsx:207",className:"border-b pb-3",style:{borderColor:"#DEDEDE"},children:[o.jsx("p",{"data-loc":"client/src/pages/Contact.tsx:208",className:"font-mono-data text-xs mb-1",style:{color:"#888888",letterSpacing:"0.08em"},children:d.label.toUpperCase()}),o.jsx("a",{"data-loc":"client/src/pages/Contact.tsx:209",href:d.href,className:"font-body text-sm",style:{color:"#0A5C6B"},children:d.value})]},d.label))})]})})]})})]})}const tE=[{slug:"eritrea-inaugural-asmara-film-festival-march-2026",title:"Eritrea Announce
3905s Inaugural Asmara Film Festival, March 21–29, 2026",category:"Festivals",publishedAt:"2026-03-13T00:00:00.000Z"},{slug:"next-narrative-africa-fund-first-nine-projects-50m-framework",title:"Next Narrative Africa Fund Announces First Nine Projects, Deploys $50M Framework",category:"Industry",publishedAt:"2026-03-12T00:00:00.000Z"},{slug:"canal-fy2025-earnings-post-multichoice-acquisition-africa-plan",title:"Canal+’s FY2025 Earnings Put Its Post-MultiChoice Acquisition Africa Plan Into View",category:"Television",publishedAt:"2026-03-12T00:00:00.000Z"},{slug:"namibia-film-week-2026-whats-on-and-whos-talking",title:"Namibia Film Week 2026: What’s On and Who’s Talking",category:"Festivals",publishedAt:"2026-03-11T00:00:00.000Z"},{slug:"ghanaian-activist-ousman-umar-north-to-paradise-heads-to-buyers",title:"Ghanaian Activist Ousman Umar’s “North to Paradise” Heads to Buyers",category:"Ghana",publishedAt:"2026-03-11T01:00:07.000Z"}];function nE(){const[e,n]=j.useState(tE),[i,r]=j.useState(!0);return j.useEffect(()=>{fetch("/api/afp-headlines").then(l=>l.json()).then(l=>{const d=Array.isArray(l)?l:[];d.length>0&&n(d)}).catch(()=>{}).finally(()=>r(!1))},[]),{headlines:e,loading:i}}const aE={Data:"Premium members use structured registries and deeper reporting to follow projects, distribution, financing, and market activity over time.",Industry:"Premium members pair Akoroko’s reporting with AFP Dispatch and Ask Akoroko Premium to follow the companies, people, and developments shaping the sector.",Profile:"Premium members pair Akoroko’s reporting with AFP Dispatch and Ask Akoroko Premium to follow the companies, people, and developments shaping the sector.",Research:"Premium members can move from a public finding to searchable published knowledge, deeper reporting, and current research tools.",Policy:"Premium members use deeper reporting and structured research to follow policy, incentives, regulation, and market conditions."},iE="Premium members receive deeper reporting, curated dispatches, and practical research tools for African and diaspora screen work.";function rE(){const e=vm(),n=ia.find(b=>b.slug===e.slug),{headlines:i,loading:r}=nE();if(!n)return o.jsx(Wt,{"data-loc":"client/src/pages/ArticlePage.tsx:66",children:o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:67",className:"container py-20 text-center",children:[o.jsx("h1",{"data-loc":"client/src/pages/ArticlePage.tsx:68",className:"font-display text-3xl font-bold mb-4",style:{color:"#1a1a19"},children:"Article Not Found"}),o.jsx(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:69",href:"/",className:"font-mono-data text-xs",style:{color:"#0A5C6B"},children:"← Return to The Latest"})]})});const l=ia.filter(b=>b.slug!==n.slug&&b.category===n.category).slice(0,3),d=ia.filter(b=>b.slug!==n.slug).slice(0,4),u=ia.findIndex(b=>b.slug===n.slug),h=u<ia.length-1?ia[u+1]:null,m=u>0?ia[u-1]:null,p=aE[n.category]??iE;return o.jsxs(Wt,{"data-loc":"client/src/pages/ArticlePage.tsx:84",children:[o.jsx(Vt,{"data-loc":"client/src/pages/ArticlePage.tsx:85",title:n.title,description:n.summary,canonical:`/article/${n.slug}`,ogImage:n.headerImage,ogType:"article",publishedTime:n.date?new Date(n.date).toISOString():void 0,keywords:`${n.category}, African film, African cinema, African screen intelligence, ${n.title}`}),o.jsx(lA,{"data-loc":"client/src/pages/ArticlePage.tsx:94",type:"article",title:n.title,description:n.summary,slug:n.slug,publishedAt:n.date?new Date(n.date).toISOString():new Date().toISOString(),image:n.headerImage,category:n.category}),o.jsx("section",{"data-loc":"client/src/pages/ArticlePage.tsx:104",className:"border-b",style:{backgroundColor:"#F5F5F5",borderColor:"#DEDEDE"},children:o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:108",className:"container py-10 md:py-14",children:o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:109",className:"grid grid-cols-1 lg:grid-cols-12 gap-10",children:o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:110",className:"lg:col-span-8 text-left",children:[o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:111",className:"flex items-center justify-start gap-2 mb-4",children:[o.jsx(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:112",href:"/",className:"font-mono-data text-xs",style:{color:"#888888"},children:"The Latest"}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:113",style:{color:"#0A5C6B"},children:"›"}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:114",className:"category-tag",style:{color:"#0D6E6E"},children:n.category}),n.isPremium&&o.jsxs(o.Fragment,{children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:117",style:{color:"#0A5C6B"},children:"·"}),o.jsxs("span",{"data-loc":"client/src/pages/ArticlePage.tsx:118",className:"flex items-center gap-1 category-tag",style:{color:"#0A5C6B"},children:[o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:119",src:ei,alt:"",className:"h-3 w-3 object-contain"})," Premium"]})]})]}),o.jsx("h1",{"data-loc":"client/src/pages/ArticlePage.tsx:124",className:"font-display text-3xl md:text-4xl font-bold leading-tight mb-4",style:{color:"#1a1a19"},children:n.title}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:130",className:"font-body text-lg italic leading-relaxed mb-6",style:{color:"#555555"},children:n.summary}),o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:136",className:"flex flex-wrap items-center justify-start gap-3 border-t border-b py-3",style:{borderColor:"#DEDEDE"},children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:137",className:"font-display text-sm font-bold",style:{color:"#1a1a19"},children:n.author}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:138",style:{color:"#0A5C6B"},children:"·"}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:139",className:"font-mono-data text-xs",style:{color:"#888888"},children:n.date}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:140",style:{color:"#0A5C6B"},children:"·"}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:141",className:"font-mono-data text-xs",style:{color:"#888888"},children:n.readTime})]})]})})})}),o.jsx("section",{"data-loc":"client/src/pages/ArticlePage.tsx:149",className:"container py-10",children:o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:150",className:"grid grid-cols-1 lg:grid-cols-12 gap-10",children:[o.jsxs("article",{"data-loc":"client/src/pages/ArticlePage.tsx:152",className:"lg:col-span-8",children:[n.headerVideo&&o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:155",className:"mb-8 overflow-hidden rounded-sm",children:o.jsx("video",{"data-loc":"client/src/pages/ArticlePage.tsx:156",src:n.headerVideo,controls:!0,playsInl
3905ine:!0,className:"w-full h-auto",style:{display:"block"},preload:"metadata"})}),!n.headerVideo&&n.headerImage&&o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:169",className:`mb-8 overflow-hidden rounded-sm${n.headerImageCentered||n.headerImageHalfWidth?" flex justify-center":""}`,children:o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:170",src:n.headerImage,alt:n.title,className:n.headerImageHalfWidth?"w-1/2 h-auto":"w-full h-auto",style:{display:"block",objectPosition:"center"}})}),n.listenId&&!n.isPremium&&o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:181",className:"mb-8 p-5 border-l-4 flex items-center gap-4",style:{backgroundColor:"#1a1a19",borderColor:"#0A5C6B"},children:[o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:185",style:{width:44,height:44,borderRadius:"50%",backgroundColor:"#0A5C6B",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:o.jsx("svg",{"data-loc":"client/src/pages/ArticlePage.tsx:197",width:"18",height:"18",viewBox:"0 0 24 24",fill:"white",children:o.jsx("polygon",{"data-loc":"client/src/pages/ArticlePage.tsx:198",points:"5,3 19,12 5,21"})})}),o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:201",className:"flex-1",children:[o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:202",className:"font-mono-data text-xs mb-1",style:{color:"#0D7A8A",letterSpacing:"0.1em"},children:"PREMIUM AUDIO"}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:203",className:"font-body text-sm",style:{color:"#F5F5F5"},children:"This dispatch is available as audio for Premium subscribers."})]}),o.jsx("a",{"data-loc":"client/src/pages/ArticlePage.tsx:205",href:`/listen/${n.listenId}`,target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs font-medium px-4 py-2.5 flex-shrink-0 transition-opacity hover:opacity-90",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:"LISTEN NOW"})]}),n.isPremium?o.jsxs(o.Fragment,{children:[o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:220",className:"prose max-w-none mb-0",children:o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:221",className:"font-body text-base leading-relaxed space-y-4",style:{color:"#1a1a19"},children:(n.content||"").split(`
3906
3907`).filter(b=>b.trim()).slice(0,2).map((b,y)=>o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:226",children:b.trim()},y))})}),o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:232",className:"relative mt-0",style:{background:"linear-gradient(to bottom, transparent 0%, #F5F5F5 30%)",marginTop:"-80px",paddingTop:"80px"},children:o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:240",className:"border-2 p-8 text-center",style:{backgroundColor:"#FAFAFA",borderColor:"#0A5C6B"},children:[o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:244",className:"flex items-center justify-center gap-3 mb-4",children:[o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:245",src:oA,alt:"Akoroko Premium",className:"h-10 w-10 object-contain"}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:246",className:"font-condensed text-2xl tracking-wide",style:{color:"#1a1a19"},children:"AKOROKO PREMIUM"})]}),o.jsx("h3",{"data-loc":"client/src/pages/ArticlePage.tsx:250",className:"font-display text-xl font-bold mb-2",style:{color:"#1a1a19"},children:"This report is exclusive to Premium subscribers"}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:253",className:"font-body text-sm leading-relaxed max-w-xl mx-auto mb-5",style:{color:"#555555"},children:"Subscribe to continue reading and access the current Premium offering: reporting, structured intelligence tools, AFP Dispatch, and Ask Akoroko Premium."}),o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:257",className:"flex flex-col sm:flex-row gap-3 justify-center",children:[o.jsx(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:258",href:"/subscribe",className:"font-mono-data text-xs font-medium px-8 py-3 text-center transition-all duration-150 hover:opacity-90",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:"CHOOSE ACCESS"}),o.jsx(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:265",href:"/premium",className:"font-mono-data text-xs font-medium px-8 py-3 text-center border transition-all duration-150 hover:bg-stone-100",style:{borderColor:"#1a1a19",color:"#1a1a19",letterSpacing:"0.08em"},children:"SEE WHAT PREMIUM INCLUDES"})]})]})})]}):o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:279",className:"font-body text-base leading-relaxed",style:{color:"#1a1a19"},children:(n.content||"").split(`
3908
3909`).filter(b=>b.trim()).map((b,y)=>{const v=b.trim(),x=v.match(/^#{2,3}
3909\s+(.+)$/);if(x)return o.jsx("h2",{"data-loc":"client/src/pages/ArticlePage.tsx:289",className:"font-display font-bold text-xl mt-8 mb-3 pb-1",style:{color:"#1a1a19",borderBottom:"1px solid #DEDEDE"},children:x[1]},y);const S=v.match(/^!\[([^\]]*)\]\((https?:\/\/[^\s)]+)\)$/);if(S)return o.jsxs("figure",{"data-loc":"client/src/pages/ArticlePage.tsx:296",className:"my-8 overflow-hidden rounded-sm",children:[o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:297",src:S[2],alt:S[1],loading:"lazy",className:"w-full h-auto",style:{display:"block"}}),S[1]&&o.jsx("figcaption",{"data-loc":"client/src/pages/ArticlePage.tsx:298",className:"font-mono-data text-[10px] mt-2",style:{color:"#888888",letterSpacing:"0.06em"},children:S[1]})]},y);if(/^\*\*(.+)\*\*$/.test(v)){const O=v.replace(/^\*\*/,"").replace(/\*\*$/,"");return o.jsx("h3",{"data-loc":"client/src/pages/ArticlePage.tsx:306",className:"font-display font-bold text-lg mt-8 mb-2 pb-1",style:{color:"#1a1a19",borderBottom:"1px solid #DEDEDE"},children:O},y)}if(/^[-─]{3,}$/.test(v))return o.jsx("hr",{"data-loc":"client/src/pages/ArticlePage.tsx:311",style:{borderColor:"#DEDEDE",margin:"1.5rem 0"}},y);const E=v.split(`
3910`);if(E.every(O=>/^[-*]\s/.test(O.trim()))){const O=C=>C.includes("**")?C.split(/(\.\*[^*]+\*\*)/).length>1?C.split(/(\.\*[^*]+\*\*)/).map((_,q)=>/^\*\*(.+)\*\*$/.test(_)?o.jsx("strong",{"data-loc":"client/src/pages/ArticlePage.tsx:321",children:_.replace(/\*\*/g,"")},q):_):C.split(/\*\*([^*]+)\*\*/).map((_,q)=>q%2===1?o.jsx("strong",{"data-loc":"client/src/pages/ArticlePage.tsx:324",children:_},q):_):C;return o.jsx("ul",{"data-loc":"client/src/pages/ArticlePage.tsx:328",className:"list-none pl-0 space-y-2 my-4",children:E.map((C,_)=>{const q=C.replace(/^[-*]\s+/,""),Y=q.indexOf(" — "),G=Y>-1?q.slice(0,Y):null,P=Y>-1?q.slice(Y+3):q;return o.jsxs("li",{"data-loc":"client/src/pages/ArticlePage.tsx:336",className:"flex gap-2",style:{color:"#1a1a19"},children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:337",style:{color:"#0A5C6B",flexShrink:0},children:"—"}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:338",children:G!==null?o.jsxs(o.Fragment,{children:[O(G)," — ",P]}):O(q)})]},_)})},y)}if(v.includes("**")){const O=v.split(/(\*\*[^*]+\*\*)/);return o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:354",className:"mb-4",children:O.map((C,_)=>/^\*\*(.+)\*\*$/.test(C)?o.jsx("strong",{"data-loc":"client/src/pages/ArticlePage.tsx:357",children:C.replace(/\*\*/g,"")},_):C)},y)}return/^Note:/i.test(v)?o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:365",className:"mb-4 italic text-sm",style:{color:"#666"},children:v},y):o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:368",className:"mb-4",children:v},y)})}),n.endCta&&o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:374",className:"mt-8 pt-6 border-t",style:{borderColor:"#DEDEDE"},children:o.jsx(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:375",href:n.endCta.href,className:"font-body text-base underline underline-offset-4 transition-opacity hover:opacity-70",style:{color:"#0A5C6B"},children:n.endCta.text})}),!n.isPremium&&o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:387",className:"mt-10 pt-6 border-t flex items-start gap-4",style:{borderColor:"#DEDEDE"},children:[o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:391",className:"w-12 h-12 flex-shrink-0 flex items-center justify-center font-display font-bold text-lg",style:{backgroundColor:"#1a1a19",color:"#0A5C6B"},children:n.author.charAt(0)}),o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:397",children:o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:398",className:"font-display text-sm font-bold",style:{color:"#1a1a19"},children:n.author})})]})]}),o.jsxs("aside",{"data-loc":"client/src/pages/ArticlePage.tsx:405",className:"lg:col-span-4",children:[!n.isPremium&&o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:408",className:"p-5 mb-8 border",style:{backgroundColor:"#FAFAFA",borderColor:"#0A5C6B",borderLeftWidth:"3px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:412",className:"flex items-center gap-2 mb-3",children:[o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:413",src:ei,alt:"",className:"h-5 w-5 object-contain"}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:414",className:"category-tag",style:{color:"#0A5C6B"},children:"Akoroko Premium"})]}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:416",className:"font-body text-sm leading-relaxed mb-4",style:{color:"#555555"},children:p}),o.jsx(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:419",href:"/subscribe",className:"block font-mono-data text-xs font-medium px-4 py-3 text-center transition-all duration-150 hover:opacity-90",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:"EXPLORE AKOROKO PREMIUM"})]}),o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:430",className:"mb-8",children:[o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:431",className:"flex items-center justify-between mb-4 pb-2 border-b",style:{borderColor:"#0A5C6B"},children:[o.jsx("h3",{"data-loc":"client/src/pages/ArticlePage.tsx:432",className:"font-condensed text-xl tracking-wide",style:{color:"#1a1a19"},children:"HEADLINE NEWS"}),o.jsx("a",{"data-loc":"client/src/pages/ArticlePage.tsx:435",href:"https://africanfilmpress.com/articles",target:"_blank",rel:"noopener noreferrer",className:"font-mono-data text-xs",style:{color:"#888888",letterSpacing:"0.06em"},children:"AFP →"})]}),r?o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:446",className:"space-y-4",children:[...Array(5)].map((b,y)=>o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:448",className:"py-3 border-b animate-pulse",style:{borderColor:"#DEDEDE"},children:[o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:449",className:"h-2 rounded mb-2",style:{backgroundColor:"#E8E8E8",width:"40%"}}),o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:450",className:"h-3 rounded mb-1",style:{backgroundColor:"#E8E8E8",width:"90%"}}),o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:451",className:"h-3 rounded",style:{backgroundColor:"#E8E8E8",width:"60%"}})]},y))}):i.map(b=>o.jsxs("a",{"data-loc":"client/src/pages/ArticlePage.tsx:457",href:`https://africanfilmpress.com/articles/${b.slug}`,target:"_blank",rel:"noopener noreferrer",className:"block group py-3 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:465",className:"category-tag block mb-1",style:{color:"#0D6E6E"},children:b.category}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:466",className:"font-display text-sm font-bold leading-snug group-hover:opacity-70 transition-opacity",style:{color:"#1a1a19"},children:b.title}),o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:469",className:"font-mono-data text-xs mt-1 block",style:{color:"#888888"},children:b.publishedAt?new Date(b.publishedAt).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"}):""})]},b.slug))]}),o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:478",children:[o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:479",className:"flex items-center justify-between mb-4 pb-2 border-b",style:{borderColor:"#0A5C6B"},children:o.jsx("h3",{"data-loc":"client/src/pages/ArticlePage.tsx:480",className:"font-condensed text-xl tracking-wide",style:{color:"#1a1a19"},children:"MORE TO READ"})}),(l.length>
39100?l:d).map(b=>o.jsxs(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:485",href:`/article/${b.slug}`,className:"block group py-4 border-b",style:{borderColor:"#DEDEDE"},children:[o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:491",className:"flex items-center gap-2 mb-1",children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:492",className:"category-tag",style:{color:"#0D6E6E"},children:b.category}),b.isPremium&&o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:493",src:ei,alt:"",className:"h-3 w-3 object-contain"})]}),o.jsx("h4",{"data-loc":"client/src/pages/ArticlePage.tsx:495",className:"font-display text-sm font-bold leading-snug group-hover:opacity-70 transition-opacity",style:{color:"#1a1a19"},children:b.title}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:501",className:"font-mono-data text-xs mt-1",style:{color:"#888888"},children:b.date})]},b.slug))]})]})]})}),o.jsx("section",{"data-loc":"client/src/pages/ArticlePage.tsx:510",className:"border-t",style:{borderColor:"#DEDEDE",backgroundColor:"#F5F5F5"},children:o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:511",className:"container",children:o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:512",className:"grid grid-cols-1 md:grid-cols-2 divide-y md:divide-y-0 md:divide-x",style:{borderColor:"#DEDEDE"},children:[o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:514",className:"py-8 md:pr-10",children:h?o.jsxs(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:516",href:`/article/${h.slug}`,className:"group block",children:[o.jsxs("p",{"data-loc":"client/src/pages/ArticlePage.tsx:517",className:"font-mono-data text-xs mb-2 flex items-center gap-1",style:{color:"#888888",letterSpacing:"0.08em"},children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:518",style:{color:"#0A5C6B"},children:"←"})," PREVIOUS"]}),o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:520",className:"flex items-center gap-2 mb-1",children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:521",className:"category-tag",style:{color:"#0D6E6E"},children:h.category}),h.isPremium&&o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:522",src:ei,alt:"",className:"h-3 w-3 object-contain"})]}),o.jsx("h4",{"data-loc":"client/src/pages/ArticlePage.tsx:524",className:"font-display text-base font-bold leading-snug group-hover:opacity-70 transition-opacity",style:{color:"#1a1a19"},children:h.title}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:530",className:"font-mono-data text-xs mt-2",style:{color:"#888888"},children:h.date})]}):o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:533",className:"font-mono-data text-xs",style:{color:"#BBBBBB",letterSpacing:"0.08em"},children:"← BEGINNING OF ARCHIVE"})}),o.jsx("div",{"data-loc":"client/src/pages/ArticlePage.tsx:538",className:"py-8 md:pl-10",children:m?o.jsxs(pe,{"data-loc":"client/src/pages/ArticlePage.tsx:540",href:`/article/${m.slug}`,className:"group block md:text-right",children:[o.jsxs("p",{"data-loc":"client/src/pages/ArticlePage.tsx:541",className:"font-mono-data text-xs mb-2 flex items-center gap-1 md:justify-end",style:{color:"#888888",letterSpacing:"0.08em"},children:["NEXT ",o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:542",style:{color:"#0A5C6B"},children:"→"})]}),o.jsxs("div",{"data-loc":"client/src/pages/ArticlePage.tsx:544",className:"flex items-center gap-2 mb-1 md:justify-end",children:[o.jsx("span",{"data-loc":"client/src/pages/ArticlePage.tsx:545",className:"category-tag",style:{color:"#0D6E6E"},children:m.category}),m.isPremium&&o.jsx("img",{"data-loc":"client/src/pages/ArticlePage.tsx:546",src:ei,alt:"",className:"h-3 w-3 object-contain"})]}),o.jsx("h4",{"data-loc":"client/src/pages/ArticlePage.tsx:548",className:"font-display text-base font-bold leading-snug group-hover:opacity-70 transition-opacity",style:{color:"#1a1a19"},children:m.title}),o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:554",className:"font-mono-data text-xs mt-2",style:{color:"#888888"},children:m.date})]}):o.jsx("p",{"data-loc":"client/src/pages/ArticlePage.tsx:557",className:"font-mono-data text-xs md:text-right",style:{color:"#BBBBBB",letterSpacing:"0.08em"},children:"END OF ARCHIVE →"})})]})})})]})}const sE="March 5, 2026",oE=[{title:"1. Who We Are",body:`Akoroko ("Akoroko," "we," "our," or "us") is a subscription-based media intelligence publication operated by Akoroko LLC. We publish professional-grade analysis, data, and reporting on Africa's screen industries — film, television, and digital media. Our registered contact address is [email protected].`},{title:"2. Information We Collect",body:`We collect information you provide directly to us, including:
3911
3912• **Account and subscription data** — name, email address, billing address, and payment information when you subscribe to Akoroko Premium.
3913• **Contact form submissions** — name, email address, and the content of messages sent via our contact form.
3914• **Communications** — emails and other correspondence you send to us.
3915
3916We also collect certain information automatically when you visit our website:
3917
3918• **Usage data** — pages visited, time spent, referring URLs, and browser/device type, collected via anal
3918ytics tools.
3919• **Cookies** — small text files placed on your device to remember preferences and measure site performance. You may disable cookies in your browser settings, though some features may not function correctly as a result.`},{title:"3. How We Use Your Information",body:`We use the information we collect to:
3920
3921• Process and manage your subscription, including billing and renewal notifications.
3922• Deliver the Akoroko Premium intelligence service to you.
3923• Respond to enquiries submitted via our contact form or by email.
3924• Send service-related communications (e.g., receipts, subscription confirmations, policy updates).
3925• Improve the quality and relevance of our editorial content and website experience.
3926• Comply with applicable legal obligations.
3927
3928We do not use your personal information for automated decision-making or profiling.`},{title:"4. Legal Basis for Processing (EEA/UK Visitors)",body:`If you are located in the European Economic Area or the United Kingdom, we process your personal data on the following legal bases:
3929
3930• **Contract performance** — processing necessary to deliver the subscription service you have purchased.
3931• **Legitimate interests** — analytics and service improvement, where our interests do not override your rights.
3932• **Legal obligation** — where processing is required to comply with applicable law.
3933• **Consent** — where you have explicitly opted in (e.g., marketing communications, if offered in future).`},{title:"5. Sharing of Information",body:`We do not sell, rent, or trade your personal information to third parties. We may share your information with:
3934
3935• **Payment processors** — Stripe, Inc., which processes subscription payments on our behalf under its own privacy policy.
3936• **Form processing services** — Web3Forms, which routes contact form submissions to our email.
3937• **Analytics providers** — aggregated, anonymised usage data may be processed by our analytics platform.
3938• **Legal authorities** — where required by law, court order, or to protect the rights and safety of Akoroko or others.
3939
3940All third-party service providers are required to handle your data securely and only for the purposes we specify.`},{title:"6. Data Retention",body:"We retain your personal information for as long as your subscription is active and for a reasonable period thereafter to comply with legal obligations, resolve disputes, and enforce our agreements. Contact form submissions are retained for up to 24 months. You may request deletion of your data at any time by contacting us at [email protected]."},{title:"7. Your Rights",body:`Depending on your jurisdiction, you may have the right to:
3941
3942• Access the personal information we hold about you.
3943• Correct inaccurate or incomplete information.
3944• Request deletion of your personal information.
3945• Object to or restrict certain processing activities.
3946• Receive your data in a portable format.
3947• Withdraw consent where processing is based on consent.
3948
3949To exercise any of these rights, please contact us at [email protected]. We will respond within 30 days.`},{title:"8. Security",body:"We implement appropriate technical and organisational measures to protect your personal information against unauthorised access, loss, or disclosure. Payment data is processed exclusively through Stripe and is never stored on our servers. No method of transmission over the internet is completely secure, and we cannot guarantee absolute security."},{title:"9. Children's Privacy",body:"Akoroko is a professional publication intended for adults. We do not knowingly collect personal information from individuals under the age of 16. If you believe a minor has provided us with personal data, please contact us at [email protected] and we will delete it promptly."},{title:"10. Third-Party Links",body:"Our website contains links to third-party websites, including africanfilmpress.com, sinemafocus.com, and whatkeptmeup.com. We are not responsible for the privacy practices of those sites and encourage you to review their privacy policies independently."},{title:"11. Changes to This Policy",body:'We may update this Privacy Policy from time to time. When we do, we will revise the "Last Updated" date at the top of this page. C
3949ontinued use of Akoroko following any changes constitutes your acceptance of the revised policy. We encourage you to review this page periodically.'},{title:"12. Contact Us",body:`If you have questions, concerns, or requests regarding this Privacy Policy or our data practices, please contact us at:
3950
3951Akoroko LLC
3952Email: [email protected]`}];function lE(){return o.jsxs(Wt,{"data-loc":"client/src/pages/Privacy.tsx:103",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Privacy.tsx:104",title:"Privacy Policy — Akoroko",description:"Read Akoroko’s privacy policy and how the service collects, uses, and protects personal information.",canonical:"/privacy",noindex:!1}),o.jsx("section",{"data-loc":"client/src/pages/Privacy.tsx:111",style:{backgroundColor:"#1a1a19",borderBottom:"1px solid #333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Privacy.tsx:112",className:"container py-12 md:py-16",children:o.jsxs("div",{"data-loc":"client/src/pages/Privacy.tsx:113",className:"max-w-2xl",children:[o.jsx("div",{"data-loc":"client/src/pages/Privacy.tsx:114",className:"w-8 h-0.5 mb-5",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h1",{"data-loc":"client/src/pages/Privacy.tsx:115",className:"font-display text-3xl md:text-4xl font-bold leading-tight mb-3",style:{color:"#F5F5F5"},children:"Privacy Policy"}),o.jsxs("p",{"data-loc":"client/src/pages/Privacy.tsx:118",className:"font-mono-data text-xs",style:{color:"#666666",letterSpacing:"0.08em"},children:["LAST UPDATED: ",sE.toUpperCase()]})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Privacy.tsx:126",className:"container py-12 md:py-16",children:o.jsxs("div",{"data-loc":"client/src/pages/Privacy.tsx:127",className:"max-w-3xl",children:[o.jsx("p",{"data-loc":"client/src/pages/Privacy.tsx:128",className:"font-body text-base leading-relaxed mb-10",style:{color:"#888888"},children:"This Privacy Policy explains how Akoroko LLC collects, uses, and protects information about you when you visit our website or subscribe to Akoroko Premium. Please read it carefully."}),o.jsx("div",{"data-loc":"client/src/pages/Privacy.tsx:132",className:"space-y-10",children:oE.map(e=>o.jsxs("div",{"data-loc":"client/src/pages/Privacy.tsx:134",children:[o.jsx("h2",{"data-loc":"client/src/pages/Privacy.tsx:135",className:"font-display text-lg font-bold mb-3",style:{color:"#F5F5F5"},children:e.title}),o.jsx("div",{"data-loc":"client/src/pages/Privacy.tsx:141",className:"font-body text-sm leading-relaxed whitespace-pre-line",style:{color:"#888888"},children:e.body.split(/(\*\*[^*]+\*\*)/).map((n,i)=>n.startsWith("**")&&n.endsWith("**")?o.jsx("strong",{"data-loc":"client/src/pages/Privacy.tsx:144",style:{color:"#cccccc"},children:n.slice(2,-2)},i):o.jsx("span",{"data-loc":"client/src/pages/Privacy.tsx:148",children:n},i))}),o.jsx("div",{"data-loc":"client/src/pages/Privacy.tsx:152",className:"mt-6 border-b",style:{borderColor:"#2a2a29"}})]},e.title))}),o.jsx("div",{"data-loc":"client/src/pages/Privacy.tsx:157",className:"mt-12 pt-6 border-t",style:{borderColor:"#2a2a29"},children:o.jsxs("p",{"data-loc":"client/src/pages/Privacy.tsx:158",className:"font-mono-data text-xs",style:{color:"#666666",letterSpacing:"0.06em"},children:["Questions? Contact us at"," ",o.jsx("a",{"data-loc":"client/src/pages/Privacy.tsx:160",href:"mailto:[email protected]",style:{color:"#0A5C6B"},children:"[email protected]"})]})})]})})]})}const cE="August 19, 2026",dE=[{title:"1. Acceptance of Terms",body:`By accessing or using the Akoroko website (akoroko.com) or subscribing to Akoroko Premium, you agree to be bound by these Terms of Service ("Terms") and our Privacy Policy. If you do not agree to these Terms, please do not use our services.
3953
3954These Terms constitute a legally binding agreement between you and Akoroko LLC ("Akoroko," "we," "our," or "us").`},{title:"2. Description of Service",body:"Akoroko is a subscription-based media intelligence publication providing professional-grade analysis, data, and reporting on Africa's screen industries — film, television, and digital media. Content is available in both free and premium tiers as described on our Subscribe page."},{title:"3. Subscriptions and Billing",body:`**3.1 Subscription Plans.** Akoroko Premium is available on monthly and annual billing cycles. Pricing is displayed on the Subscribe page in USD and in local currencies for selected African markets.
3955
3956**3.2 Automatic Renewal.** Subscriptions renew automatically at the end of each billing period unless cancelled. You authorise us to charge your payment method on file for the applicable renewal fee.
3957
3958**3.3 Cancellation.** You may cancel your subscription at any time through the Stripe customer portal linked on the Account page, or by contacting [email protected] for assistance. Cancellation takes effect at the end of the current billing period; no partial refunds are issued for unused time.
3959
3960**3.4 Price Changes.** We reserve the right to change subscription prices. We will provide at least 30 days' notice of any price increase before it takes effect for existing subscribers.`},{title:"4. Refund Policy",body:"Subscription fees are non-refundable except where required by applicable law. If you believe you have been charged in error, please contact us at [email protected] within 14 days of the charge and we will review your case."},{title:"5. Intellectual Property",body:`All content published on Ak
3960oroko — including articles, data, analysis, graphics, and the Akoroko name and logo — is the exclusive property of Akoroko LLC or its licensors and is protected by copyright and other intellectual property laws.
3961
3962**Personal use.** Subscribers may read and save content for personal, non-commercial reference.
3963
3964**Prohibited uses.** You may not reproduce, republish, redistribute, sell, or create derivative works from Akoroko content without our prior written permission. Sharing subscription credentials or content with non-subscribers is prohibited.
3965
3966**Institutional licences.** Organisations wishing to distribute Akoroko content internally should contact [email protected] to discuss institutional access terms.`},{title:"6. Acceptable Use",body:`You agree not to:
3967
3968• Use Akoroko for any unlawful purpose or in violation of these Terms.
3969• Attempt to gain unauthorised access to any part of our website or systems.
3970• Scrape, crawl, or systematically extract content from Akoroko without written permission.
3971• Impersonate Akoroko or any of its staff or contributors.
3972• Transmit any harmful, offensive, or disruptive content via our contact form or other channels.`},{title:"7. Disclaimer of Warranties",body:`Akoroko content is provided for informational and professional reference purposes only. It does not constitute financial, legal, or investment advice. While we strive for accuracy, we make no warranties — express or implied — regarding the completeness, accuracy, or fitness for a particular purpose of any content published on this site.
3973
3974The service is provided "as is" and "as available." We do not guarantee uninterrupted or error-free access to the website.`},{title:"8. Limitation of Liability",body:"To the maximum extent permitted by applicable law, Akoroko LLC shall not be liable for any indirect, incidental, special, consequential, or punitive damages arising from your use of, or inability to use, the Akoroko service or its content. Our total liability to you for any claim arising under these Terms shall not exceed the amount you paid to us in the three months preceding the claim."},{title:"9. Third-Party Links and Services",body:"Akoroko contains links to third-party websites including africanfilmpress.com, sinemafocus.com, and whatkeptmeup.com. These links are provided for convenience only. We are not responsible for the content, accuracy, or practices of any third-party site and do not endorse them."},{title:"10. Modifications to the Service",body:"We reserve the right to modify, suspend, or discontinue any aspect of the Akoroko service at any time, with or without notice. We will not be liable to you or any third party for any such modification, suspension, or discontinuation."},{title:"11. Governing Law and Disputes",body:"These Terms are governed by and construed in accordance with the laws of the jurisdiction in which Akoroko LLC is registered. Any disputes arising under these Terms shall first be attempted to be resolved through good-faith negotiation. If unresolved, disputes shall be subject to the exclusive jurisdiction of the competent courts of that jurisdiction."},{title:"12. Changes to These Terms",body:'We may update these Terms from time to time. When we do, we will revise the "Last Updated" date at the top of this page. Your continued use of Akoroko after any changes constitutes acceptance of the revised Terms. We encourage you to review this page periodically.'},{title:"13. Contact",body:`For questions about these Terms, please contact:
3975
3976Akoroko LLC
3977Email: [email protected]`}];function uE(){return o.jsxs(Wt,{"data-loc":"client/src/pages/Terms.tsx:90",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Terms.tsx:91",title:"Terms of Service — Akoroko",description:"Read Akoroko’s subscription, acceptable-use, intellectual-property, and service terms.",canonical:"/terms"}),o.jsx("section",{"data-loc":"client/src/pages/Terms.tsx:97",style:{backgroundColor:"#1a1a19",borderBottom:"1px solid #333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Terms.tsx:98",className:"container py-12 md:py-16",children:o.jsxs("div",{"data-loc":"client/src/pages/Terms.tsx:99",className:"max-w-2xl",children:[o.jsx("div",{"data-loc":"client/src/pages/Terms.tsx:100",className:"w-8 h-0.5 mb-5",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h1",{"data-loc":"client/src/pages/Terms.tsx:101",className:"font-display text-3xl md:text-4xl font-bold leading-tight mb-3",style:{color:"#F5F5F5"},children:"Terms of Service"}),o.jsxs("p",{"data-loc":"client/src/pages/Terms.tsx:104",className:"font-mono-data text-xs",style:{color:"#666666",letterSpacing:"0.08em"},children:["LAST UPDATED: ",cE.toUpperCase()]})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Terms.tsx:112",className:"container py-12 md:py-16",children:o.jsxs("div",{"data-loc":"client/src/pages/Terms.tsx:113",className:"max-w-3xl",children:[o.jsx("p",{"data-loc":"client/src/pages/Terms.tsx:114",className:"font-body text-base leading-relaxed mb-10",style:{color:"#888888"},children:"Please read these Terms of Service carefully before using Akoroko. They govern your access to and use of our website and subscription service."}),o.jsx("div",{"data-loc":"client/src/pages/Terms.tsx:118",className:"space-y-10",children:dE.map(e=>o.jsxs("div",{"data-loc":"client/src/pages/Terms.tsx:120",children:[o.jsx("h2",{"data-loc":"client/src/pages/Terms.tsx:121",className:"font-display text-lg font-bold mb-3",style:{color:"#F5F5F5"},children:e.title}),o.jsx("div",{"data-loc":"client/src/pages/Terms.tsx:127",className:"font-body text-sm leading-relaxed whitespace-pre-line",style:{color:"#888888"},children:e.body.split(/(\*\*[^*]+\*\*)/).map((n,i)=>n.startsWith("**")&&n.endsWith("**")?o.jsx("strong",{"data-loc":"client/src/pages/Terms.tsx:130",style:{color:"#cccccc"},children:n.slice(2,-2)},i):o.jsx("span",{"data-loc":"client/src/pages/Terms.tsx:134",children:n},i))}),o.jsx("div",{"data-loc":"client/src/pages/Terms.tsx:138",className:"mt-6 border-b",style:{borderColor:"#2a2a29"}})]},e.title))}),o.jsx("div",{"data-loc":"client/src/pages/Terms.tsx:143",className:"mt-12 pt-6 border-t",style:{borderColor:"#2a2a29"},children:o.jsxs("p",{"data-loc":"client/src/pages/Terms.tsx:144",className:"font-mono-data text-xs",style:{color:"#666666",letterSpacing:"0.06em"},children:["Questions? Contact us at"," ",o.jsx("a",{"data-loc":"client/src/pages/Terms.tsx:146",href:"mailto:[email protected]",style:{color:"#0A5C6B"},children:"[email protected]"})]})})]})})]})}const hE="6384fe60-9991-41ff-a369-b287af6b85c9",fE=["Film production company","Television broadcaster / OTT platform","Distribution or sales company","Film festival or market","Financial institution / fund","Research institution or university","Government or regulatory body","Journalism or media organization","Other"],mE=["2–5 seats","6–10 seats","More than 10 (let's talk)"],cA=[{title:"Up to 10 named seats",body:"Access for up to 10 named users within your organization."},{title:"Current Premium offering",body:"Every seat receives reporting, structured intelligence tools, AFP Dispatch, and Ask Akoroko Premium."},{title:"Two custom data requests a year",body:"Two custom data requests a year, drawn from the registries."},{title:"Invoice billing",body:"Invoice billing for your organization."},{title:"Priority response",body:"Priority response on research questions."}],pE=cA.slice(0,2),gE=cA.slice(2);function yE(){const[e,n]=j.useState({name:"",email:"",organization:"",orgType:"",teamSize:"",useCase:"",message:""}),[i,r]=j.useState(!1),[l,d]=j.useState(!1),u=v=>x=>n(S=>
3977({...S,[v]:x.target.value})),h=async v=>{v.preventDefault(),r(!0);try{const S=await(await fetch("https://api.web3forms.com/submit",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({access_key:hE,name:e.name,email:e.email,subject:`[Akoroko] Institutional Access Inquiry — ${e.organization}`,message:`Organization: ${e.organization}
3978Type: ${e.orgType}
3979Team size: ${e.teamSize}
3980Primary use case: ${e.useCase}
3981
3982Additional notes:
3983${e.message}`,botcheck:""})})).json();if(S.success)d(!0),ht.success("Inquiry submitted.",{description:"We will respond within 2 business days."});else throw new Error(S.message??"Submission failed")}catch{ht.error("Something went wrong.",{description:"Please try again or email [email protected] directly."})}finally{r(!1)}},m="w-full font-body text-sm px-4 py-3 border bg-white outline-none transition-all duration-150 focus:border-teal-700",p={borderColor:"#DEDEDE",color:"#1a1a19"},b="font-mono-data text-xs block mb-1.5",y={color:"#888888",letterSpacing:"0.08em"};return o.jsxs(Wt,{"data-loc":"client/src/pages/Institutional.tsx:116",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Institutional.tsx:117",title:"Institutional Access — Akoroko Premium",description:"Institutional Access to Akoroko Premium for organizations that need shared, named-seat intelligence access across African and diaspora screen sectors.",canonical:"/institutional"}),o.jsx("section",{"data-loc":"client/src/pages/Institutional.tsx:124",className:"border-b",style:{backgroundColor:"#1a1a19",borderColor:"#333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Institutional.tsx:128",className:"relative",children:o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:129",className:"container relative",children:[o.jsx("img",{"data-loc":"client/src/pages/Institutional.tsx:131",src:en,alt:"","aria-hidden":"true",className:"absolute hidden lg:block pointer-events-none",style:{right:"0px",top:"50%",transform:"translateY(-50%)",width:"320px",height:"320px",objectFit:"contain",zIndex:0,maskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)",WebkitMaskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)"}}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:148",className:"py-14 md:py-20 max-w-2xl",style:{position:"relative",zIndex:1},children:[o.jsx("span",{"data-loc":"client/src/pages/Institutional.tsx:149",className:"font-mono-data text-xs",style:{color:"#0D6E6E",letterSpacing:"0.12em"},children:"AKOROKO PREMIUM"}),o.jsx("div",{"data-loc":"client/src/pages/Institutional.tsx:155",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h1",{"data-loc":"client/src/pages/Institutional.tsx:156",className:"font-display text-4xl md:text-5xl font-bold leading-tight mb-4",style:{color:"#F5F5F5"},children:"Institutional Access"}),o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:162",className:"font-body text-lg leading-relaxed",style:{color:"#888888"},children:"$2,500 per year for up to 10 named seats. Every seat receives the current Akoroko Premium offering for organizations, teams, and institutions working across African and diaspora screen sectors."}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:165",className:"mt-5 space-y-1.5",children:[o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:166",className:"font-body text-sm",style:{color:"#C8C8C8"},children:"For organizations that need shared, named-seat access to the current Akoroko Premium offering."}),o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:169",className:"font-mono-data text-xs",style:{color:"#66CDD4",letterSpacing:"0.06em"},children:"INVOICE BILLED. REQUEST ACCESS BELOW; NO PAYMENT IS COLLECTED THROUGH THIS FORM."})]})]})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Institutional.tsx:179",className:"border-b",style:{backgroundColor:"#FAFAFA",borderColor:"#DEDEDE"},children:o.jsx("div",{"data-loc":"client/src/pages/Institutional.tsx:180",className:"container py-10",children:o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:181",className:"max-w-4xl",children:[o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:182",className:"font-mono-data text-xs font-bold mb-4",style:{color:"#0A5252",letterSpacing:"0.10em"},children:"INCLUDED FOR EVERY NAMED SEAT"}),o.jsx("div",{"data-loc":"client/src/pages/Institutional.tsx:185",className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:pE.map(({title:v,body:x})=>o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:187",className:"border-t-2 pt-5",style:{borderColor:"#0A5C6B"},children:[o.jsx("h3",{"data-loc":"client/src/pages/Institutional.tsx:188",className:"font-display text-base font-bold mb-2",style:{color:"#1a1a19"},children:v}),o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:189",className:"font-body text-sm leading-relaxed",style:{color:"#555555"},children:x})]},v))}),o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:194",className:"font-mono-data text-xs font-bold mt-10 mb-4",style:{color:"#0A5252",letterSpacing:"0.10em"},children:"INCLUDED WITH INSTITUTIONAL ACCESS"}),o.jsx("div",{"data-loc":"client/src/pages/Institutional.tsx:197",className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:gE.map(({title:v,body:x})=>o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:199",className:"border-t-2 pt-5",style:{borderColor:"#0A5C6B"},children:[o.jsx("h3",{"data-loc":"client/src/pages/Institutional.tsx:200",className:"font-display text-base font-bold mb-2",style:{color:"#1a1a19"},children:v}),o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:201",className:"font-body text-sm leading-relaxed",style:{color:"#555555"},children:x})]},v))})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Institutional.tsx:210",className:"border-b",style:{backgroundColor:"#FFFFFF",borderColor:"#DEDEDE"},children:o.jsx("div",{"data-loc":"client/src/pages/Institutional.tsx:211",className:"container py-12",children:o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:212",className:"max-w-2xl",children:[o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:213",className:"font-mono-data text-xs font-bold mb-3",style:{color:"#0A5252",letterSpacing:"0.10em"},children:"TELL US ABOUT YOUR ORGANIZATION"}),o.jsx("h2",{"data-loc":"client/src/pages/Institutional.tsx:216",className:"font-display text-2xl font-bold mb-2",style:{color:"#1a1a19"},children:"Request Institutional Access"}),o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:219",className:"font-body text-sm mb-8",style:{color:"#888888"},children:"Complete the form below and we will respond within 2 business days with pricing and next steps."}),o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:222",className:"font-body text-sm mb-8 -mt-5",style:{color:"#555555"},children:"This starts an access conversation; invoice and onboarding details follow after we review your organization's needs."}),l?o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:227",className:"p-8 border-l-4 text-center",style:{borderColor:"#0A5C6B",backgroundColor:"#F0F7F7"},children:[o.jsx("p",{"data-loc":"client/src/pages/Institutional.tsx:231",className:"font-display text-xl font-bold mb-2",style:{color:"#1a1a19"},children:"Inquiry Received"}),o.jsxs("p",{"data-loc":"client/src/pages/Institutional.tsx:232",className:"font-body text-sm",style:{color:"#555555"},children:["Thank you. We will be in touch within 2 business days at ",o.jsx("strong",{"data-loc":"client/src/pages/Institutional.tsx:233",children:e.email}),"."]})]}):o.jsxs("form",{"data-loc":"client/src/pages/Institutional.tsx:237",onSubmit:h,className:"space-y-6",children:[o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:238",className:"grid grid-cols-1 sm:grid-cols-2 gap-6",children:[o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:239",children:[o.jsx("label",{"data-loc":"client/src/pages/Institutional.tsx:240",className:b,style:y,children:"YOUR NAME *"}),o.jsx("input",{"data-loc":"client/src/pages/Institutional.tsx:241",type:"text",required:!0,value:e.name,onChange:u("name"),placeholder:"Full name",className:m,style:p})]}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:251",children:[o.jsx("label",{"data-loc":"client/src/pages/Institutional.tsx:252",className:b,style:y,children:"WORK EMAIL *"}),o.jsx("input",{"data-loc":"client/src/pages/Institutional.tsx:253",type:"email",required:!0,value:e.email,onChange:u("email"),placeholder:"[email protected]",className:m,style:p})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:265",children:[o.jsx("label",{"data-loc":"client/src/pages/Institutional.tsx:266",className:b,style:y,children:"ORGANIZATION NAME *"}),o.jsx("input",{"data-loc":"client/src/pages/Institutional.tsx:267",type:"text",required:!0,value:e.organization,onChange:u("organization"),placeholder:"Your organization or company",className:m,style:p})]}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:278",className:"grid grid-cols-1 sm:grid-cols-2 gap-6",children:[o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:279",children:[o.jsx("label",{"data-loc":"client/src/pages/Institutional.tsx:280",className:b,style:y,children:"ORGANIZATION TYPE *"}),o.jsxs("select",{"data-loc":"client/src/pages/Institutional.tsx:281",required:!0,value:e.orgType,onCh
3983ange:u("orgType"),className:m,style:p,children:[o.jsx("option",{"data-loc":"client/src/pages/Institutional.tsx:288",value:"",children:"Select type"}),fE.map(v=>o.jsx("option",{"data-loc":"client/src/pages/Institutional.tsx:290",value:v,children:v},v))]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:294",children:[o.jsx("label",{"data-loc":"client/src/pages/Institutional.tsx:295",className:b,style:y,children:"TEAM SIZE *"}),o.jsxs("select",{"data-loc":"client/src/pages/Institutional.tsx:296",required:!0,value:e.teamSize,onChange:u("teamSize"),className:m,style:p,children:[o.jsx("option",{"data-loc":"client/src/pages/Institutional.tsx:303",value:"",children:"Number of seats"}),mE.map(v=>o.jsx("option",{"data-loc":"client/src/pages/Institutional.tsx:305",value:v,children:v},v))]})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:311",children:[o.jsx("label",{"data-loc":"client/src/pages/Institutional.tsx:312",className:b,style:y,children:"PRIMARY USE CASE *"}),o.jsx("input",{"data-loc":"client/src/pages/Institutional.tsx:313",type:"text",required:!0,value:e.useCase,onChange:u("useCase"),placeholder:"e.g. Market research, editorial briefings, investor due diligence",className:m,style:p})]}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:324",children:[o.jsx("label",{"data-loc":"client/src/pages/Institutional.tsx:325",className:b,style:y,children:"ADDITIONAL NOTES"}),o.jsx("textarea",{"data-loc":"client/src/pages/Institutional.tsx:326",rows:4,value:e.message,onChange:u("message"),placeholder:"Any specific requirements, questions, or context",className:m,style:{...p,resize:"vertical"}})]}),o.jsxs("div",{"data-loc":"client/src/pages/Institutional.tsx:336",className:"flex items-center gap-4",children:[o.jsx("button",{"data-loc":"client/src/pages/Institutional.tsx:337",type:"submit",disabled:i,className:"font-mono-data text-xs font-medium px-8 py-3.5 transition-all duration-150 hover:opacity-90 disabled:opacity-50",style:{backgroundColor:"#0A5C6B",color:"#F5F5F5",letterSpacing:"0.08em"},children:i?"SUBMITTING…":"SUBMIT INQUIRY"}),o.jsxs("span",{"data-loc":"client/src/pages/Institutional.tsx:345",className:"font-body text-xs",style:{color:"#888888"},children:["Or email ",o.jsx("a",{"data-loc":"client/src/pages/Institutional.tsx:346",href:"mailto:[email protected]",style:{color:"#0A5C6B"},children:"[email protected]"})," directly."]})]})]})]})})})]})}const bE="https://billing.stripe.com/p/login/14k5kp1x53okc6IcMM";function xE(){return o.jsxs(Wt,{"data-loc":"client/src/pages/Account.tsx:15",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Account.tsx:16",title:"Account — Akoroko Premium",description:"Manage your Akoroko Premium subscription or get help with billing.",canonical:"/account",noindex:!0}),o.jsx("section",{"data-loc":"client/src/pages/Account.tsx:24",style:{backgroundColor:"#1a1a19",borderBottom:"1px solid #333333"},children:o.jsx("div",{"data-loc":"client/src/pages/Account.tsx:25",className:"relative",children:o.jsxs("div",{"data-loc":"client/src/pages/Account.tsx:26",className:"container relative",children:[o.jsx("img",{"data-loc":"client/src/pages/Account.tsx:28",src:en,alt:"","aria-hidden":"true",className:"absolute hidden lg:block pointer-events-none",style:{right:"0px",top:"50%",transform:"translateY(-50%)",width:"320px",height:"320px",objectFit:"contain",zIndex:0,maskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)",WebkitMaskImage:"linear-gradient(to left, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%)"}}),o.jsxs("div",{"data-loc":"client/src/pages/Account.tsx:45",className:"py-14 md:py-20 max-w-2xl",style:{position:"relative",zIndex:1},children:[o.jsx("div",{"data-loc":"client/src/pages/Account.tsx:46",className:"w-8 h-0.5 mb-5",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h1",{"data-loc":"client/src/pages/Account.tsx:47",className:"font-display text-4xl md:text-5xl font-bold leading-tight mb-5",style:{color:"#F5F5F5"},children:"Account"}),o.jsx("p",{"data-loc":"client/src/pages/Account.tsx:53",className:"font-body text-lg leading-relaxed",style:{color:"#888888"},children:"Manage your Akoroko Premium subscription through Stripe, or contact Akoroko directly for support."})]})]})})}),o.jsx("section",{"data-loc":"client/src/pages/Account.tsx:65",className:"container py-14",children:o.jsxs("div",{"data-loc":"client/src/pages/Account.tsx:66",className:"max-w-2xl space-y-12",children:[o.jsxs("div",{"data-loc":"client/src/pages/Account.tsx:69",children:[o.jsx("span",{"data-loc":"client/src/pages/Account.tsx:70",className:"category-tag",style:{color:"#0D6E6E"},children:"Manage Subscription"}),o.jsx("div",{"data-loc":"client/src/pages/Account.tsx:71",className:"w-8 h-0.5 mt-2 mb-4",style:{backgroundColor:"#0A5C6B"}}),o.jsx("h2",{"data-loc":"client/src/pages/Account.tsx:72",className:"font-display text-2xl font-bold mb-3",style:{color:"#1a1a19"},children:"Manage Subscription"}),o.jsx("p",{"data-loc":"client/src/pages/Account.tsx:75",className:"font-body text-base leading-relaxed mb-6",style:{color:"#555555"},children:"Use the secure Stripe customer portal below to update, manage, or cancel your Akoroko Premium subscription. If you need help, contact Akoroko directly."}),o.jsx("a",{"data-loc":"client/src/pages/Account.tsx:78",href:bE,target:"_blank",rel:"noopener noreferrer",className:"inline-block font-mono-data text-sm px-8 py-3 transition-all duration-150",style:{backgroundColor:"#1a1a19",color:"#F5F5F5",letterSpacing:"0.08em",border:"2px s
3983olid #1a1a19"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#0A5C6B",e.currentTarget.style.borderColor="#0A5C6B"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#1a1a19",e.currentTarget.style.borderColor="#1a1a19"},children:"OPEN STRIPE CUSTOMER PORTAL →"}),o.jsx("p",{"data-loc":"client/src/pages/Account.tsx:100",className:"font-body text-sm mt-4",style:{color:"#888888"},children:"When you cancel, your subscription stays active until the end of your current billing period. New charges stop after that date."})]}),o.jsx("div",{"data-loc":"client/src/pages/Account.tsx:106",className:"border-t",style:{borderColor:"#DEDEDE"}}),o.jsxs("div",{"data-loc":"client/src/pages/Account.tsx:109",className:"border-l-4 pl-5 py-1",style:{borderColor:"#0A5C6B"},children:[o.jsx("h2",{"data-loc":"client/src/pages/Account.tsx:113",className:"font-display text-xl font-bold mb-2",style:{color:"#1a1a19"},children:"Need help with billing or access?"}),o.jsxs("p",{"data-loc":"client/src/pages/Account.tsx:116",className:"font-body text-base leading-relaxed",style:{color:"#555555"},children:["Contact Akoroko directly and select"," ",o.jsx(pe,{"data-loc":"client/src/pages/Account.tsx:118",href:"/contact",style:{color:"#0A5C6B",textDecoration:"underline",textUnderlineOffset:"3px"},children:"Subscription Inquiry"})," ","for billing questions, Stripe customer portal access, or cancellation assistance."]})]})]})})]})}const vE=[{id:"afp-box-office-registry-live-market-record-sep22-2026",title:"The AFP Box Office Registry: Inching Towards a Live Market Record",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-box-office-registry-live-market-record-sep22-2026_9df57794.mp3",date:"September 22, 2026"},{id:"introducing-afp-coproduction-treaty-registry-pro-sep22-2026",title:"Introducing: AFP Co-Production Treaty Registry (Pro Version)",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/introducing-afp-coproduction-treaty-registry-pro-sep22-2026_630a7108.mp3",date:"September 22, 2026"},{id:"afp-dispatch-week-sep14-20-2026",title:"AFP Dispatch — Week of September 14–20, 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-dispatch-week-sep14-20-2026_031d5e17.mp3",date:"September 20, 2026"},{id:"african-films-us-box-office-1984-2026-sep19-2026",title:"African Films at the U.S. Box Office 1984–2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/african-films-us-box-office-1984-2026-sep19-2026_d2cfdc44.mp3",date:"September 19, 2026"},{id:"afp-distribution-registry-349-films-sep17-2026",title:"AFP Distribution Registry Rises to 349 Films: 252 With Confirmed Outcomes, 61 With Box Office Data",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-distribution-registry-349-films-sep17-2026_94fe3093.mp3",date:"September 17, 2026"},{id:"african-cinema-programming-map-38-countries-sep16-2026",title:"Building a Live Map of African Cinema Programming: 38 of 54 Countries With Verified Commercial Cinema Activity",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/african-cinema-programming-map-38-countries-sep16-2026_a3e7ba84.mp3",date:"September 16, 2026"},{id:"afp-pipeline-registry-539-projects-sep15-2026",title:"The Pipeline Registry Is Growing Fast: What 539 Active Projects Say About African Cinema's Path",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-pipeline-registry-539-projects-sep15-2026_d6dd01f4.mp3",date:"September 15, 2026"},{id:"afp-dispatch-week-sep7-13-2026",title:"AFP Dispatch — Week of September 7–13, 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-dispatch-week-sep7-13-2026_141c7c94.mp3",date:"September 13, 2026"},{id:"afp-box-office-registry-getting-smarter-sep13-2026",title:"The AFP Box Office Registry Is Getting Smarter",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-box-office-registry-getting-smarter-sep13-2026_9a6ac713.mp3",date:"September 13, 2026"},{id:"afp-pipeline-registry-524-projects-sep10-2026",title:"AFP Pipeline Registry Now at 524 Projects: 18 New, 20 Changed Status, 30 Deepened Records",de
3983scription:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-pipeline-registry-524-projects-sep10-2026_c9f98ed6.mp3",date:"September 10, 2026"},{id:"africa-cinematic-statecraft-lumiere-summit-sep9-2026",title:"Africa and the New Cinematic Statecraft of the Lumière Summit",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/africa-cinematic-statecraft-lumiere-summit-sep9-2026_34cbdc0a.mp3",date:"September 9, 2026"},{id:"microdramas-training-expect-stories-sep8-2026",title:"What Are Microdramas Training Us to Expect From Stories?",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/microdramas-training-expect-stories-sep8-2026_148f94c5.mp3",date:"September 8, 2026"},{id:"faster-way-search-afp-film-registries-sep8-2026",title:"A Faster Way to Search AFP’s Film Registries",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/faster-way-search-afp-film-registries-sep8-2026_62ceef8c.mp3",date:"September 8, 2026"},{id:"african-blumhouse-productions-require-sep7-2026",title:"What Would an African Blumhouse Productions Actually Require?",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/african-blumhouse-productions-require-sep7-2026_5f8ca982.mp3",date:"September 7, 2026"},{id:"afp-dispatch-week-aug31-sep6-2026",title:"AFP Dispatch — Week of August 31–September 6, 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/afp-dispatch-week-aug31-sep6-2026_0aeb5835.mp3",date:"September 3, 2026"},{id:"fuller-picture-streaming-tv-infrastructure-54-markets-sep3-2026",title:"A Fuller Picture of Streaming, TV and Infrastructure Across 54 African Markets",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/fuller-picture-streaming-tv-infrastructure-sep3-2026_7732612b.mp3",date:"September 3, 2026"},{id:"buying-time-sep3-2026",title:"Buying Time...",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/buying-time-sep3-2026_7c5d45f1.mp3",date:"September 3, 2026"},{id:"continental-top-10-afp-box-office-registry-sep1-2026",title:"A Continental Top 10 — and Much More — Comes to the AFP Box Office Registry",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://akoroko.com/manus-storage/ElevenLabs_A_Continental_Top_10_and_Much_More_Comes_to_the_AFP_Box_Office_Registry_2385f817.mp3",date:"September 1, 2026"},{id:"afp-dispatch-week-aug24-30-2026",title:"AFP Dispatch — Week of August 24–30, 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/acVTBFuSJhLqncyu.mp3",date:"August 30, 2026"},{id:"pipeline-registry-26-records-stage-moves-mobile-aug27-2026",title:'Pipeline Registry: 26 Records Deepened, 5 New Projects, 5 Stage Moves + "Recent Activity" on Mobile',description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/LwBSBehlNwUaeuiz.mp3",date:"August 27, 2026"},{id:"a-particular-set-of-skills-ai-akoroko-aug27-2026",title:"A Particular Set of Skills: AI, Akoroko, and an Offer to Subscribers",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/SzWUOqcVqUSjwAKb.mp3",date:"August 27, 2026"},{id:"afp-funding-desk-119-instruments-aug22-2026",title:"AFP Funding Desk: 119 Current Instruments, a Rebuilt Funding Plan, Deadlines Ahead, Mobile Access",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/wEXYOCQIbPhBxpzQ.mp3",date:"August 22, 2026"},{id:"mobile-access-afp-intelligence-tools-aug21-2026",title:"Mobile Access Arrives for AFP's Intelligence Tools",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/GciSCZNMUsTuGvOX.mp3",date:"August 21, 2026"},{id:"fic-luanda-festival-returns-angola-aug20-2026",title:"After an 11-Year Absence, Angola's State-backed FIC Luanda Festival Returns to a Busier Film Landscape",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/cHvzcWXDjsMEIrKI.mp3",date:"August 20, 2026"},{id:"afp-box-office-registry-live-aug20-2026",title:"The African Film Press (AFP) Box Office Registry Is Live",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/jeMjtKRclAIxYCtJ.mp3",date:"August 20, 2026"},{id:"akoroko-premium-pricing-update-aug19-2026",title:"Akoroko Premium Pricing Update as the Work Continues to Grow",description:"An Akoroko Premium audio dispatch — a pricing update as the work continues to grow.",cdnUrl:"https://akoroko.com/manus-storage/akoroko-premium-pricing-update-aug19-2026_63b080c4.mp3",date:"August 19, 2026"},{id:"africa-streaming-july-2026",title:"Africa Streaming & Infrastru
3983cture Watch — July Update (An Active Stretch)",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/africa-streaming-july-2026_b8517a65.mp3",date:"July 2, 2026"},{id:"afp-distribution-registry-jul1-2026",title:"Introducing: The AFP African Film Distribution Registry",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-distribution-registry-jul1-2026_89c94ccc.mp3",date:"July 1, 2026"},{id:"locarno-open-doors-2026",title:"Locarno’s Open Doors Screenings 2026: Eight Features — Five Shorts in the Running for the AFP Critics Prize",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/locarno-open-doors-2026_aa3fe8f8.mp3",date:"July 1, 2026"},{id:"afp-pipeline-registry-the-read-jun29-2026",title:"New to the AFP Pipeline Registry: The Read, 11 Project Additions, Reworked Activity Feed...",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-pipeline-registry-the-read-jun29-2026_0413c30e.mp3",date:"June 29, 2026"},{id:"are-we-still-excited-african-screen-work-jun28-2026",title:"Are We Still Excited About African Screen Work? A Mid-Year Note on Imagination",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/are-we-still-excited-african-screen-work-jun28-2026_ebee1279.mp3",date:"June 28, 2026"},{id:"afp-logline-lifelines-theme-week-jun26-2026",title:'AFP "Logline" Adds Lifelines, New Shared Scores, and Intros "Theme Week"',description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-logline-lifelines-theme-week-jun26-2026_5f0564b9.mp3",date:"June 26, 2026"},{id:"afp-funding-desk-six-deadlines-jun25-2026",title:"AFP Funding Desk: Six Deadlines Ahead, and a Cleaner Working Tool",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-funding-desk-six-deadlines-jun25-2026_6eef8b12.mp3",date:"June 25, 2026"},{id:"natyf-plus-cote-divoire-jun23-2026",title:"Canadian Streamer Natyf+ Launches in Côte d'Ivoire Amid West Africa Outreach",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/natyf-plus-cote-divoire-jun23-2026_8e942854.mp3",date:"June 23, 2026"},{id:"instagram-tv-unsettled-screen-business-jun23-2026",title:"Instagram on TV and the Unsettled Screen Business",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/instagram-tv-unsettled-screen-business-jun23-2026_b7faf80b.mp3",date:"June 23, 2026"},{id:"akoroko-premium-current-phase-jun22-2026",title:"Akoroko Premium's Current Phase: Toward African Screen Intelligence",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/akoroko-premium-current-phase-jun22-2026_056d0043.mp3",date:"June 22, 2026"},{id:"afp-pipeline-registry-jun21-2026",title:"New to the AFP Pipeline Registry: A Recent Activity Feed, 30 New Titles & Cosmetic Changes",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-pipeline-registry-jun21-2026_fe56c8ac.mp3",date:"June 21, 2026"},{id:"afp-logline-jun19-2026",title:"Building the Audience, Five Films a Day: Introducing AFP Logline",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-logline-jun19-2026_434dff4d.mp3",date:"June 19, 2026"},{id:"nfvf-audience-distribution-studies-2026",title:"NFVF Publishes Audience and Distribution Studies on South Africa’s Screen Sector",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_NFVF_Publishes_Audience_and_Distribution_Studies_on_South_Africa's_Screen_Sector_f5f0dc78.mp3",date:"June 18, 2026"},{id:"afp-dispatch-curated-news-feed",title:"AFP Dispatch: Curated News Feed for African and Diasporic Screen News",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_AFP_Dispatch_Curated_News_Feed_for_African_and_Diasporic_Screen_News_cd349671.mp3",date:"June 17, 2026"},{id:"under-16-social-media-ban",title:"Under-16 Social Media Ban Policy Wave. What It Could Mean for African Screens",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_Under-16_Social_Media_Ban_Policy_Wave_What_It_Could_Mean_for_African_Screens_c24d9787.mp3",date:"June 15, 2026"},{id:"south-korea-africa-diplomacy-culture-track-2026",title:"South Korea’s New Africa Diplomacy Has a Culture Track",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/korea_diplomacy_22ab043e.mp3",date:"June 13, 2026"},{id:"netflix-film-shift-african-producers-2026",title:"What, If Anything, Does Netflix’s Film Shift Offer African Producers?",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_What,_If_Anything,_Does_Netflix's_Film_Shift_Offer_African_Producers__6c897590.mp3",date:"June 13, 2026"},{id:"quick-note-building-behind-scenes-2026",title:"A Quick Note on What We’re Building Behind the Scenes",description:"An Akoroko Premium audio dispatch — listen to this note narrated for subscribers.",cdnUrl:"/manus-storage/quick-note-behind-scenes_45df8d74.mp3",date:"June 11, 2026"},{id:"afp-pipeline-registry-rebuild-scoring-filters-2026",title:"AFP Pipeline Registry Rebuild: Scoring System, Project Detail Pages, Saved Filters, and Time in Pipeline",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_AFP_Pipeline_Registry_Rebuild_Scoring_System,_Project_Detail_Pages,_Saved_Filters,_and_Time_in_Pipeline_1
3983d346823.mp3",date:"June 7, 2026",articleSlug:"afp-pipeline-registry-rebuild-scoring-filters-2026"},{id:"afp-funding-desk-adds-more-structure",title:"AFP Funding Desk Adds More Structure to African Film Financing Research",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-funding-desk-adds-more-structure_bcc69383.mp3",date:"June 3, 2026"},{id:"africa-streaming-infrastructure-watch-june-2026",title:"Africa Streaming & Infrastructure Watch — June Update",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/africa-streaming-june-2026_0f400e6b.mp3",date:"June 2, 2026"},{id:"africa-coproduction-treaty-registry-two-month-update",title:"Africa’s Co-Production Treaty Registry: A Two-Month Update",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/africa-coproduction-treaty-registry-two-month-update_4b239bf0.mp3",date:"June 2, 2026"},{id:"afp-critics-prize-locarno-2026",title:"African Film Press (AFP) to Present AFP Critics’ Prize at Locarno Open Doors 2026 — Projects, Producers & Directors Announced",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp-critics-prize-locarno-2026_ed7cc472.mp3",date:"June 1, 2026",articleSlug:"afp-critics-prize-locarno-open-doors-2026"},{id:"reporting-researching-tool-building-2026",title:"Reporting, Researching, and Tool-Building Across African Film, TV, and Digital Media Ecosystems",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_REPORTING,_RESEARCHING,_AND_TOOL-BUILDING_ACROSS_AFRICAN_FILM,_TV,_AND_DIGITAL_MEDIA_ECOSYSTEMS_e4fbadc1.mp3",date:"May 30, 2026"},{id:"dist-sales-report-2026",title:"Distribution & Sales Report: African & Diaspora Films at Sundance, IFFR, Berlinale, and Cannes 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_DistSalesReport2026_98e018a4.mp3",date:"May 26, 2026",articleSlug:"berlinale-2026-distribution-sales-report"},{id:"ask-archive-french-2595",title:"Ask Akoroko Premium — Now in French Too, with 2,595 Sources to Pull From",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ask-archive-french-2595_50fd70cf.mp3",date:"May 24, 2026"},{id:"cannes-think-tank-2026",title:"African & Diasporic Audience Development Think Tank at Cannes: 40 Practitioners, Six Tables, One Question",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/cannes-think-tank-2026_fea32326.mp3",date:"May 22, 2026"},{id:"mad-solutions-laundry-mena-2026",title:`MAD Solutions Takes Zamo Mkhwanazi's "Laundry" For MENA in First Non-Arab Acquisition`,description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/mad_solutions_laundry_mena_2026_9c6d03ed.mp3",date:"May 20, 2026",articleSlug:"mad-solutions-laundry-mena-2026"},{id:"canex-creations-film-investment-marche-2026",title:"CANEX Creations Inc Sets Its Film Investment Terms at the Marché du Film",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/canex_creations_film_investment_marche_2026_20f701a4.mp3",date:"May 20, 2026",articleSlug:"canex-creations-film-investment-marche-2026"},{id:"afp-pipeline-registry-update-cannes-2026",title:"AFP Pipeline Registry Update: 44 New Projects from DFM, DFF, and New Ivorian Initiative Announced at Cannes",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp_pipeline_registry_cannes_2026_v3_4b955bcc.mp3",date:"May 20, 2026",articleSlug:"afp-pipeline-registry-update-cannes-2026"},{id:"studiocanal-sun-africa-distribution-pact-2026",title:"STUDIOCANAL Formalizes 3-Year South African Distribution Pact With Sun Africa Group",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/studiocanal_sun_africa_pact_2026_ac8bf900.mp3",date:"May 19, 2026",articleSlug:"studiocanal-sun-africa-distribution-pact-2026"},{id:"south-africa-efm-country-focus-2027",title:"South Africa Gets European Film Market Country in Focus Slot for 2027 — Second African Country Since the Program Began",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/sa_efm_c
3983ountry_focus_2027_0d64bf03.mp3",date:"May 19, 2026",articleSlug:"south-africa-efm-country-focus-2027"},{id:"clarissa-cannes-review-esiri-brothers-2026",title:"“Clarissa” (Cannes Review): The Esiri Brothers Bring “Mrs. Dalloway” Into Nigerian Privilege",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/clarissa_cannes_review_esiri_brothers_2026_f0a2e5d1_b87b1d99.mp3",date:"May 19, 2026",articleSlug:"clarissa-cannes-review-esiri-brothers-2026"},{id:"five-cannes-days-one-film-many-meetings",title:"Five Cannes Days, One Film, Many Meetings",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/five_cannes_days_2026_a41eb02e.mp3",date:"May 18, 2026"},{id:"fapa-african-film-fund-cannes-2026",title:"New African Film Fund Launches at Cannes: What Is FAPA, Who It’s For, and How to Apply",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/fapa_fund_cannes_2026_dfbda802.mp3",date:"May 15, 2026",articleSlug:"fapa-african-film-fund-cannes-2026"},{id:"cannes-2026-day-one",title:"Cannes 2026 Day One: Canal+/Bolloré Heat, Obasi Looks East, Plus Bénin, Guinea in the Market Mix, and New Sales Titles",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_Cannes_2026_Day_One_61aabbc8.mp3",date:"May 12, 2026",articleSlug:"cannes-2026-day-one"},{id:"15-restored-african-classics-tv5monde-nairobi-2026",title:"15 Restored African Classics Land on TV5MONDE as France and Kenya Open Africa Forward Summit in Nairobi",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_15_Restored_African_Classics_TV5MONDE_Nairobi_2026_75634788.mp3",date:"May 11, 2026",articleSlug:"15-restored-african-classics-tv5monde-nairobi-2026"},{id:"vieyra-only-feature-4k-nyaff-2026",title:"Vieyra's Only Feature Returns in 4K at 33rd New York African Film Festival (NYAFF)",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_Vieyra_Only_Feature_NYAFF_2026_fc42360a.mp3",date:"May 11, 2026",articleSlug:"vieyra-only-feature-4k-nyaff-2026"},{id:"my-cannes-2026-agenda",title:"My Cannes 2026 Agenda — Where to Find Me",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_My_Cannes_2026_Agenda_89b28f33.mp3",date:"May 10, 2026",articleSlug:"my-cannes-2026-agenda"},{id:"ferid-boughedir-camera-afrique-nyaff-2026",title:`Férid Boughedir Revisits "Caméra d'Afrique" at 33rd New York African Film Festival (NYAFF)`,description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_Ferid_Boughedir_NYAFF_d0d872b9.mp3",date:"May 9, 2026",articleSlug:"ferid-boughedir-camera-afrique-nyaff-2026"},{id:"afp-pipeline-registry-update-may-2026",title:"AFP Pipeline Registry Update: 50 New Projects, New Columns",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp_pipeline_registry_update_may2026_b8308892.mp3",date:"May 8, 2026",articleSlug:"afp-pipeline-registry-update-may-2026"},{id:"canal-plus-nollywoodweek-2026-multichoice-plans",title:"What Canal+ Told African Producers at NollywoodWeek 2026 About Its Post-MultiChoice Plans",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/canal_plus_nollywoodweek_2026_multichoice_168ec367.mp3",date:"May 7, 2026",articleSlug:"canal-plus-nollywoodweek-2026-multichoice-plans"},{id:"nollywoodweek-2026-13th-edition-paris",title:"NollywoodWeek 2026: The 13th Edition of Nigeria's Parisian Platform Adds Industry Weight",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/nollywoodweek_2026_13th_edition_paris_e9b0a6a9.mp3",date:"May 6, 2026",articleSlug:"nollywoodweek-2026-13th-edition-paris"},{id:"flytime-baba-segi-nigerian-revenue-stack",title:`Flytime Enters "Baba Segi's Wives" Case Study: Building a Nigerian Revenue Stack`,description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/flytime_baba_segi_nigerian_revenue_stack_d3c8430f.mp3",date:"May 5, 2026",articleSlug:"flytime-baba-segi-nigerian-revenue-stack"},{id:"engineering-eligibility-afp-funding-desk",title:"Engineering Eligibility: Inside the AFP Funding Desk",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/engineering_eligibility_afp_funding_desk_b0322016.mp3",date:"May 5, 2026",articleSlug:"engineering-eligibility-afp-funding-desk"}
3983,{id:"africa-streaming-infrastructure-watch-may-2026",title:"Africa Streaming & Infrastructure Watch — May Update",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/africa_streaming_infra_may2026_30663aa3.mp3",date:"May 4, 2026",articleSlug:"africa-streaming-infrastructure-watch-may-2026"},{id:"african-films-oscar-festival-prizes",title:"How Often Have African Films Won the Six Festival Prizes Now Tied to the Oscars?",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/african_films_oscar_festival_prizes_593efafc.mp3",date:"May 2, 2026",articleSlug:"african-films-oscar-festival-prizes"},{id:"oscars-festival-winner-path-non-english-films",title:"Oscars Add a Festival-Winner Path for Non-English-Language Films",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/oscars_festival_winner_path_5dd23d9d.mp3",date:"May 1, 2026",articleSlug:"oscars-festival-winner-path-non-english-films"},{id:"afp-funding-desk-introduction",title:"Introducing: The African Film Press (AFP) Funding Desk",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/afp_funding_desk_caecace3.mp3",date:"April 30, 2026",articleSlug:"afp-funding-desk-introduction"},{id:"durban-filmmart-funding-pressures-q4-calendar",title:"Funding Pressures Push Durban FilmMart to Crowded Q4 Calendar",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/durban_filmmart_q4_7a9221fc.mp3",date:"April 29, 2026",articleSlug:"durban-filmmart-funding-pressures-q4-calendar"},{id:"tunisia-archive-push-continental-preservation-turn",title:"Tunisia's Archive Push Adds Weight to a Continental Preservation Turn",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/tunisia_archive_push_50e453d4.mp3",date:"April 28, 2026",articleSlug:"tunisia-archive-push-continental-preservation-turn"},{id:"british-council-film-lab-six-takeaways",title:'Six Takeaways From the British Council Film Lab "Financing and Distributing" Conversation I Moderated',description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_Six_Takeaways_From_the_British_Council_Film_Lab_Financing_and_Distributing_Conversation_I_Moderated_01e031d3.mp3",date:"April 28, 2026"},{id:"afp-african-film-pipeline-registry",title:"Introducing: The AFP African Film Pipeline Registry",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_Introducing_The_AFP_African_Film_Pipeline_Registry_40861c13.mp3",date:"April 26, 2026",articleSlug:"afp-african-film-pipeline-registry"},{id:"nyaff-33rd-six-charts",title:"32 Editions of the NYAFF in Six Charts: The 33rd New York African Film Festival Opens in May",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_32_Editions_of_the_NYAFF_in_Six_Charts_The_33rd_New_York_African_Film_Festival_Opens_in_May_58bf3544.mp3",date:"April 14, 2026"},{id:"british-council-film-lab-april-27",title:"I'm Hosting a British Council Film Lab Conversation on Film Financing and Global Distribution, April 27",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/british-council-film-lab-april-27_6c37db89.mp3",date:"April 23, 2026"},{id:"road-home-canal-studiocanal-south-africa",title:'"The Road Home" Gives the Canal+/Studiocanal South Africa Pipeline Its First Public Title',description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/road-home-canal-studiocanal-south-africa_6682bddc.mp3",date:"April 23, 2026"},{id:"morocco-new-cinema-law",title:"Morocco's New Cinema Law Lands as the Continent Continues to Rewrite Its Film Rulebook",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"/manus-storage/ElevenLabs_Morocco's_New_Cinema_Law_Lands_as_the_Continent_
3983Continues_to_Rewrite_Its_Film_Rulebook_e6ea2cf4.mp3",date:"April 21, 2026"},{id:"marche-du-film-2026-africas-conference-presence",title:"Marché du Film 2026: Africa's Conference Presence",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/sIHjDIJHhOUOwVqO.mp3",date:"April 20, 2026",articleSlug:"marche-du-film-2026-africas-conference-presence"},{id:"netflix-member-quality-ai",title:'Netflix Touts "Member Quality" Engagement Metric + An AI Push That Touches Everything',description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/AONyzFmixlOmEGEK.mp3",date:"April 18, 2026",articleSlug:"netflix-member-quality-ai"},{id:"q1-2026-african-film-coverage",title:"What 18,912 Articles Show About How African Film Was Covered in Q1 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/q1-2026-african-film-coverage_cc9bbde9.mp3",date:"April 17, 2026",articleSlug:"q1-2026-african-film-coverage"},{id:"no-data-african-film",title:'What Are We Really Saying When We Say There Is "No Data" on African Film Activity?',description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/no-data-african-film_69a73db6.mp3",date:"April 16, 2026",articleSlug:"no-data-african-film"},{id:"cannes-2026-africa-strongest-decade",title:"Cannes 2026: Africa's Strongest Decade at the Festival and Market Keeps Moving",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/cannes-2026-africa-strongest-decade_732a098f.mp3",date:"April 15, 2026",articleSlug:"cannes-2026-africa-strongest-decade"},{id:"canal-plus-south-africa-market",title:"South African Market Canal+ Just Bought Was Weaker Than It Looked — New Government Report",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/canal-plus-south-africa-market_08deb4bc.mp3",date:"April 15, 2026",articleSlug:"canal-plus-south-africa-market"},{id:"google-maps-africans-watch-films",title:"What Google Maps Can Tell Us About How Africans Watch Films",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/google-maps-africans-watch-films_384704db.mp3",date:"April 13, 2026",articleSlug:"google-maps-africans-watch-films"},{id:"weekly-wrap-up-april-6-12",title:"Weekly Wrap-Up: April 6–April 12, 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/weekly-wrap-up-april-6-12_96293296.mp3",date:"April 12, 2026",articleSlug:"weekly-wrap-up-april-6-12"},{id:"namibia-film-creative-city",title:"Namibia's New 'Film and Creative City' Plan Comes With Rare Official Film Sector Data",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/namibia-film-creative-city_3feaa32b.mp3",date:"April 11, 2026",articleSlug:"namibia-film-creative-city-plan"},{id:"q12026",title:"Q1 2026: Three Stories, Same Conditions, So it Goes…",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_q12026_45b16c6a.mp3",date:"April 2, 2026",articleSlug:"q1-2026-three-stories-same-conditions"},{id:"askarchive",title:"Introducing Ask Akoroko Premium — Version 0.1",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_ASK_THE_ARCHIVE_424183c7.mp3",date:"March 29, 2026",articleSlug:"introducing-ask-the-akoroko-premium-archive"},{id:"cannes2026",title:"Predicting African Films at Cannes 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/cannes2026_d06e8ace.mp3",date:"March 26, 2026",articleSlug:"predicting-african-films-cannes-2026"},{id:"namafrica",title:"Namibia Film Week 2026: What's On and Who's Talking",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_namafrica_87154574.mp3",date:"March 11, 2026",articleSlug:"namibia-film-week-2026-whats-on-and-whos-talking"},{id:"bomtnum26",title:"What “Africa” Meant in Next Narrative Africa Fund’s First Slate",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_bomtnum26_b0c9bdbf.mp3",date:"March 14, 2026",articleSlug:"what-africa-meant-next-narrative-africa-fund-first-slate"},{id:"africayt",title:"What 32 African Million-Subscriber YouTube Channels Say About Audience Size and Money",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_africaYT_610afd6b.mp3",date:"March 16, 2026",articleSlug:"what-32-african-m
3983illion-subscriber-youtube-channels-say-about-audience-size-and-money"},{id:"medhondobiz",title:"Med Hondo and the Business Conditions of African Cinema",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_MEDHONDOBIZ_0694358d.mp3",date:"March 18, 2026"},{id:"asaiwf",title:"Introducing: Africa Streaming & Infrastructure Watch, First Edition",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_asaiwf_60d24fa8.mp3",date:"March 19, 2026"},{id:"mapstream",title:"The Interactive Map v.1: Africa Streaming & Infrastructure Watch",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_MapStream_310cd961.mp3",date:"March 21, 2026"},{id:"criticshort",title:"A Critical Shortage of Locally-Owned African TV Content",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_criticshort1_914dc971.mp3",date:"March 21, 2026",articleSlug:"critical-shortage-locally-owned-african-tv-content"},{id:"mapthemoney",title:"Mapping the Money: What Africa's Film and Television Financing Landscape Actually Looks Like",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_mapthemoney_4a1962a6.mp3",date:"March 24, 2026",articleSlug:"mapping-the-money-africa-film-television-financing"},{id:"streaminfra-apr",title:"Africa Streaming & Infrastructure Watch — April Update",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_Africa_Streaming_&_Infrastructure_Watch_—_April_Update_464d19b8.mp3",date:"March 31, 2026",articleSlug:"africa-streaming-infrastructure-watch-april-update"},{id:"hwoodwins",title:"Where Hollywood Wins, Where It Doesn’t: Market Power Across Africa’s Largest Film Economies",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_wherehwoodwins_c77a8ed4.mp3",date:"March 31, 2026"},{id:"starlink",title:"Starlink Internet Service Rapidly Reached 27 African Countries. Then What?",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_starlink_076dfc49.mp3",date:"March 23, 2026",articleSlug:"starlink-internet-service-27-african-countries"},{id:"distfilmsafrica",title:"Who’s Actually Distributing Films Theatrically Across Africa?",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_Distributing_Films_Africa_6434deb8.mp3",date:"April 2, 2026",articleSlug:"whos-actually-distributing-films-theatrically-across-africa"},{id:"sangare-cesar",title:"Abou Sangaré and the Gap Between a César and a Career",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_Abou_Sangaré_and_the_Gap_Between_a_César_and_a_Career_fbde7b1e.mp3",date:"April 4, 2026"},{id:"nigeria-100m-fund",title:"Nigeria Just Announced Another Creative Sector Fund. What Is the €100 Million For?",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_Nigeria_Just_Announced_Another_Creative_Sector_Fund_What_Is_the_€100_Million_For__56b489e8.mp3",date:"April 4, 2026"},{id:"weekly-wrap-mar29-apr5",title:"Weekly Wrap-Up: March 29–April 5, 2026",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_Weekly_Wrap-Up_March_29_April_5_202
39836_1855f96f.mp3",date:"April 5, 2026",articleSlug:"weekly-wrap-up-march-29-april-5-2026"},{id:"coproduction-treaty-landscape",title:"Mapping Africa’s Co-Production Treaty Landscape (Report)",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ElevenLabs_Mapping_Africas_Co-Production_Treaty_Landscape_Report_1f889772.mp3",date:"April 6, 2026",articleSlug:"mapping-africas-co-production-treaty-landscape"},{id:"belgium-africa-ties",title:"French-Speaking Belgium Deepens Africa Ties, Per 2025 Report",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/belgium-africa-ties_47816fda.mp3",date:"April 7, 2026",articleSlug:"french-speaking-belgium-deepens-africa-ties-per-2025-report"},{id:"multichoice-r206b",title:"MultiChoice Puts a Number on Its South African Content Obligation: R20.6 Billion Over Three Years",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/multichoice-r206b-obligation_1ac5b516.mp3",date:"April 9, 2026"},{id:"unesco-report-update",title:"Five Years After the Seminal UNESCO Report — An Update",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/unesco-report-update_0df78dbd.mp3",date:"April 9, 2026"},{id:"ghana-film-authority",title:"Ghana's Film Authority Tours Abandoned Cinemas in Push to Revive Exhibition Infrastructure",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/ghana_aa8605fb.mp3",date:"April 10, 2026"},{id:"fespaco-30th-edition-march-2027",title:"FESPACO Moves Milestone 30th Edition to March 20–27, 2027, With “Endogenous Development” Theme",description:"An Akoroko Premium audio dispatch — listen to this report narrated for subscribers.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/ouRpzPSsiSyuoEBo.mp3",date:"May 23, 2026"},{id:"bradley-fiomona-cannes-ucr",title:"Bradley Fiomona Wins Cannes Un Certain Regard Best Actor — Fourth African Acting Prize in Five Years",description:"An Akoroko Premium audio dispatch — Bradley Fiomona wins the Un Certain Regard Best Actor prize at Cannes 2026, the fourth African acting prize at a major European festival in five years.",cdnUrl:"https://files.manuscdn.com/user_upload_by_module/session_file/106775066/sqGkvWfigDfaYuyX.mp3",date:"May 23, 2026"},{id:"afp-logline-audience-building",title:'What Two Weeks of "AFP Logline" Reminded Me About Audience-building',description:"An Akoroko Premium audio dispatch — what two weeks of running AFP Logline revealed about audience-building, discovery, and the infrastructure African screen professionals actually need.",cdnUrl:"/manus-storage/ElevenLabs_What_Two_Weeks_of_AFP_Logline_Reminded_Me_About_Audience-building_533117e1.mp3",date:"July 6, 2026"},{id:"afp-distribution-registry-jul9-2026",title:"AFP Film Distribution Registry: 35 Films Added, Box Office Data, and a Key Rede
3983sign",description:"An Akoroko Premium audio dispatch — 35 new films added to the AFP Film Distribution Registry, new box office data, and a key structural redesign of the registry.",cdnUrl:"/manus-storage/ElevenLabs_AFP_Film_Distribution_Registry_35_Films_Added,_Box_Office_Data,_and_a_Key_Redesign_6e7788f5.mp3",date:"July 9, 2026"},{id:"steven-markovitz-african-cinema-jul10-2026",title:"Producer Steven Markovitz Is Optimistic About African Cinema. The Question Is Who Will Own It",description:"An Akoroko Premium audio dispatch — producer Steven Markovitz on the state of African cinema, the question of ownership, and what optimism looks like in practice.",cdnUrl:"/manus-storage/ElevenLabs_Producer_Steven_Markovitz_Is_Optimistic_About_African_Cinema_The_Question_Is_Who_Will_Own_It_eaf893d9.mp3",date:"July 10, 2026",articleSlug:"steven-markovitz-african-cinema-jul10-2026"},{id:"africa-coproduction-treaty-registry-jul14-2026",title:"Africa Co-Production Treaty Registry — July Update + Subscriber Version Tease",description:"An Akoroko Premium audio dispatch — the July update to the Africa Co-Production Treaty Registry, plus a first look at the upcoming subscriber version.",cdnUrl:"/manus-storage/africa-coproduction-treaty-registry-jul14-2026_aef1885e.mp3",date:"July 14, 2026"},{id:"netflix-q2-polygamist-africa-jul16-2026",title:"Netflix Q2: “The Polygamist” Draws Rare Earnings Attention to Africa",description:"An Akoroko Premium audio dispatch — Netflix Q2 earnings and what The Polygamist’s performance means for African content on the platform.",cdnUrl:"/manus-storage/netflix-q2-polygamist-africa-jul16-2026_8cb87135.mp3",date:"July 16, 2026"},{id:"distribution-label-global-south-africa-durban-jul21-2026",title:"New Distribution Label Targets Global South Gap — Adds Africa Ahead of Durban Visit",description:"An Akoroko Premium audio dispatch — a new distribution label targeting the Global South gap adds Africa to its slate ahead of a Durban visit.",cdnUrl:"/manus-storage/distribution-label-global-south-africa-durban-jul21-2026_7f7db195.mp3",date:"July 21, 2026"},{id:"equatorial-guinea-screen-sector-jul21-2026",title:"Beyond a TV Deal: Mapping Equatorial Guinea’s Changing Screen-Sector Landscape",description:"An Akoroko Premium audio dispatch — mapping the changing screen-sector landscape in Equatorial Guinea, beyond the headline TV deal.",cdnUrl:"/manus-storage/beyond-tv-deal-equatorial-guinea-jul21-2026_cf486a84.mp3",date:"July 21, 2026"},{id:"afp-distribution-registry-202-films-jul26-2026",title:"AFP Film Distribution Registry: 202 Films, a Scope Correction, and a Reworked Insights Panel",description:"An Akoroko Premium audio dispatch — 202 films now in the AFP Film Distribution Registry, a scope correction, and a reworked Insights Panel.",cdnUrl:"/manus-storage/afp-distribution-registry-202-films-jul26-2026_a18447e8.mp3",date:"July 26, 2026"},{id:"africas-screen-laboratory-jul27-2026",title:"Africa’s Screen Laboratory",description:"An Akoroko Premium audio dispatch — Africa’s screen sector as a laboratory: what it produces, who it serves, and what it reveals.",cdnUrl:"/manus-storage/africas-screen-laboratory-jul27-2026_ba1d48dc.mp3",date:"July 27, 2026"},{id:"canal-plus-h1-2026-earnings-africa-jul28-2026",title:"CANAL+ H1 2026 Earnings: Seven Africa Takeaways",description:"An Akoroko Premium audio dispatch — seven key takeaways from CANAL+ H1 2026 earnings for Africa.",cdnUrl:"/manus-storage/canal-plus-h1-2026-earnings-africa-jul28-2026_c3dd388f.mp3",date:"July 28, 2026"},{id:"my-fathers-shadow-clarissa-box-office-jul28-2026",title:"“My Father’s Shadow” Has Grossed Over $1M. Could “Clarissa” Go Much Further?",description:"An Akoroko Premium audio dispatch — “My Father’s Shadow” crosses $1M at the box office. What that benchmark means for “Clarissa” and African cinema’s theatrical potential.",cdnUrl:"/manus-storage/my-fathers-shadow-clarissa-box-office-jul28-2026_fd04333c.mp3",date:"July 28, 2026"},{id:"locarno-open-doors-2026-yanis-gaye-jul31-2026",title:"Inside Locarno Open Doors’ 2026 Africa Cycle With Head of Studies Yanis Gaye",description:"An Akoroko Premium audio dispatch — inside Locarno Open Doors’ 2026 Africa cycle with Head of Studies Yanis Gaye.",cdnUrl:"/manus-storage/locarno-open-doors-2026-yanis-gaye_260ab5de.mp3",date:"July 31, 2026"},{id:"recapping-first-akoroko-premium-subscriber-gathering-aug2-2026",title:"Recapping First Akoroko Premium Subscriber Gathering",description:"An Akoroko Premium audio dispatch — recapping the first Akoroko Premium subscriber gathering.",cdnUrl:"/manus-storage/recapping-first-akoroko-premium-subscriber-gathering_e06c85ad.mp3",date:"August 2, 2026"},{id:"afp-dispatch-week-jul27-aug2-2026",title:"AFP Dispatch — Week of July 27–August 2, 2026",description:"An Akoroko Premium audio dispatch — AFP weekly roundup covering African film press highlights for the week of July 27–August 2, 2026.",cdnUrl:"/manus-storage/afp-dispatch-week-jul27-aug2-2026_03681442.mp3",date:"August 2, 2026"}
3983,{id:"africa-streaming-infrastructure-registry-pro-aug4-2026",title:"Introducing the Africa Streaming & Infrastructure Registry — Pro Version",description:"An Akoroko Premium audio dispatch — introducing the Pro Version of the Africa Streaming & Infrastructure Registry.",cdnUrl:"/manus-storage/africa-streaming-infrastructure-registry-pro-aug4-2026_98dfe21b.mp3",date:"August 4, 2026"},{id:"locarno-audience-building-lessons-aug8-2026",title:"10 Audience-Building Lessons for Filmmakers and Producers From Locarno’s Open Doors Panel",description:"An Akoroko Premium audio dispatch — ten audience-building lessons for filmmakers and producers drawn from Locarno’s Open Doors panel, August 2026.",cdnUrl:"/manus-storage/locarno-audience-building-lessons-aug8-2026_5f2fab54.mp3",date:"August 8, 2026"},{id:"afp-dispatch-week-aug4-9-2026",title:"AFP Dispatch — Week of August 4–9, 2026",description:"An Akoroko Premium audio dispatch — AFP weekly roundup covering African film press highlights for the week of August 4–9, 2026.",cdnUrl:"/manus-storage/afp-dispatch-week-aug4-9-2026_cb6bcd05.mp3",date:"August 9, 2026"},{id:"afp-critics-prize-submergido-locarno-aug10-2026",title:"AFP Critics Prize Goes to “Submergido” at Locarno Open Doors 2026",description:"An Akoroko Premium audio dispatch — the AFP Critics Prize is awarded to “Submergido” at Locarno Open Doors 2026.",cdnUrl:"/manus-storage/afp-critics-prize-submergido-locarno-aug10-2026_09bda577.mp3",date:"August 10, 2026"},{id:"kolade-adewoye-filmx-industry-habits-aug12-2026",title:"Kolade Adewoye on FilmX and the Work of Changing Established Industry Habits",description:"An Akoroko Premium audio dispatch — Kolade Adewoye on FilmX and the work of changing established industry habits.",cdnUrl:"/manus-storage/kolade-adewoye-filmx-industry-habits-aug12-2026_a6a22878.mp3",date:"August 12, 2026"},{id:"multichoice-dstv-mzansi-bioskop-aug13-2026",title:"MultiChoice Confirms Closure of Four DStv Channels, Including South African Film Outlet Mzansi Bioskop",description:"An Akoroko Premium audio dispatch — MultiChoice confirms the closure of four DStv channels, including South African film outlet Mzansi Bioskop.",cdnUrl:"/manus-storage/multichoice-dstv-mzansi-bioskop-aug13-2026_74c455a4.mp3",date:"August 13, 2026"},{id:"pipeline-registry-insights-new-projects-aug15-2026",title:'Pipeline Registry Gets New "Insights" Feature + 13 New Projects, New Funding, Cleanup',description:"An Akoroko Premium audio dispatch — a Pipeline Registry update covering the new Insights feature, 13 projects, new funding, and cleanup.",cdnUrl:"/manus-storage/pipeline-registry-insights-aug15-2026_ed7e31c1.mp3",date:"August 15, 2026"},{id:"afp-dispatch-week-aug10-16-2026",title:"AFP Dispatch — Week of August 10–16, 2026",description:"An Akoroko Premium audio dispatch — AFP weekly roundup covering African film press highlights for the week of August 10–16, 2026.",cdnUrl:"/manus-storage/afp-dispatch-week-aug10-16-2026_7586c0e3.mp3",date:"August 16, 2026"},{id:"afp-distribution-registry-206-records-aug17-2026",title:"AFP Film Distribution Registry: What 206 African Film Distribution Records Are Starting to Tell Us",description:"An Akoroko Premium audio dispatch — a look at what 206 African film distribution records are beginning to show.",cdnUrl:"/manus-storage/afp-distribution-registry-206-records-aug17-2026_d606f1e3.mp3",date:"August 17, 2026"},{id:"africa-coproduction-treaty-registry-aug18-2026",title:"Africa Co-Production Treaty Registry — August: Togo–Senegal Agreement Loading...",description:"An Akoroko Premium audio dispatch — an August update to the Africa Co-Production Treaty Registry, including the Togo–Senegal agreement.",cdnUrl:"/manus-storage/africa-coproduction-treaty-registry-aug18-2026_da28f272.mp3",date:"August 18, 2026"},{id:"next-narrative-africa-fund-aug18-2026",title:"Next Narrative Africa Fund Discloses $450,000 in First-Slate Grants, Launches Institute",description:"An Akoroko Premium audio dispatch on the Next Narrative Africa Fund's first-slate grants and institute launch.",cdnUrl:"/manus-storage/next-narrative-africa-fund-aug18-2026_b849dbff.mp3",date:"August 18, 2026"}];function wE(e){return vE.find(n=>n.id===e)}const un={teal:"#0A5C6B",tealLight:"#0D7A8A",ink:"#1a1a19",bg:"#F5F5F5",white:"#FFFFFF",greyMid:"#999999"},AE="https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-logo-s
3983harp_ed9d29ec.png";function kE(){const{id:e}=vm(),n=wE(e??""),i=j.useRef(null),[r,l]=j.useState(!1),[d,u]=j.useState(0),[h,m]=j.useState(0),[p,b]=j.useState(!0),[y,v]=j.useState(!1);j.useEffect(()=>{const C=i.current;if(!C||!n)return;const _=()=>{m(C.duration),b(!1),C.play().then(()=>l(!0)).catch(()=>{l(!1)})},q=()=>u(C.currentTime),Y=()=>l(!1),G=()=>{v(!0),b(!1)};return C.addEventListener("loadedmetadata",_),C.addEventListener("timeupdate",q),C.addEventListener("ended",Y),C.addEventListener("error",G),()=>{C.removeEventListener("loadedmetadata",_),C.removeEventListener("timeupdate",q),C.removeEventListener("ended",Y),C.removeEventListener("error",G)}},[n]);const x=()=>{const C=i.current;C&&(r?(C.pause(),l(!1)):C.play().then(()=>l(!0)).catch(console.error))},S=C=>{const _=i.current;_&&(_.currentTime=Number(C.target.value),u(Number(C.target.value)))},E=C=>{if(!isFinite(C))return"0:00";const _=Math.floor(C/60),q=Math.floor(C%60);return`${_}:${q.toString().padStart(2,"0")}`};if(!n)return o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:92",style:{minHeight:"100vh",backgroundColor:un.bg,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"2rem"},children:[o.jsx(Vt,{"data-loc":"client/src/pages/ListenPage.tsx:93",title:"Audio Not Found | Akoroko",description:"This audio track could not be found.",noindex:!0}),o.jsx("img",{"data-loc":"client/src/pages/ListenPage.tsx:94",src:AE,alt:"Akoroko",style:{height:48,marginBottom:"2rem"}}),o.jsx("h1",{"data-loc":"client/src/pages/ListenPage.tsx:95",style:{fontFamily:"Georgia, serif",fontSize:"1.5rem",color:un.ink,marginBottom:"1rem"},children:"Audio Not Found"}),o.jsx("p",{"data-loc":"client/src/pages/ListenPage.tsx:96",style:{color:un.greyMid,marginBottom:"2rem"},children:"This audio track could not be found or may have been removed."}),o.jsx(pe,{"data-loc":"client/src/pages/ListenPage.tsx:97",href:"/",style:{color:un.teal,fontFamily:"monospace",fontSize:"0.85rem",letterSpacing:"0.06em"},children:"← Return to Akoroko"})]});const O=h>0?d/h*100:0;return o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:105",style:{minHeight:"100vh",backgroundColor:un.ink,display:"flex",flexDirection:"column"},children:[o.jsx(Vt,{"data-loc":"client/src/pages/ListenPage.tsx:106",title:`${n.title} | Akoroko Premium Audio`,description:n.description,noindex:!0}),o.jsx("audio",{"data-loc":"client/src/pages/ListenPage.tsx:113",ref:i,src:n.cdnUrl,preload:"metadata"}),o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:116",style:{backgroundColor:"#111111",padding:"0.75rem 2rem",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[o.jsx("div",{"data-loc":"client/src/pages/ListenPage.tsx:117"}),o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:118",style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[o.jsx("img",{"data-loc":"client/src/pages/ListenPage.tsx:119",src:en,alt:"",style:{height:16,width:16,objectFit:"contain"}}),o.jsx("span",{"data-loc":"client/src/pages/ListenPage.tsx:120",style:{color:un.white,fontFamily:"monospace",fontSize:"0.75rem",letterSpacing:"0.1em",textTransform:"uppercase"},children:"Premium Audio"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:125",style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"3rem 1.5rem"},children:[o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:128",style:{display:"flex",alignItems:"center",gap:"0.5rem",marginBottom:"1.5rem"},children:[o.jsx("img",{"data-loc":"client/src/pages/ListenPage.tsx:129",src:ei,alt:"",style:{height:20,width:20,objectFit:"contain"}}),o.jsx("span",{"data-loc":"client/src/pages/ListenPage.tsx:130",style:{color:un.greyMid,fontFamily:"monospace",fontSize:"0.7rem",letterSpacing:"0.12em",textTransform:"uppercase"},children:"Akoroko Premium Dispatch"})]}),o.jsx("h1",{"data-loc":"client/src/pages/ListenPage.tsx:134",style:{fontFamily:"Georgia, 'Times New Roman', serif",fontSize:"clamp(1.25rem, 4vw, 2rem)",fontWeight:400,color:un.white,textAlign:"center",maxWidth:680,lineHeight:1.4,marginBottom:"0.75rem"},children:n.title}),o.jsx("p",{"data-loc":"client/src/pages/ListenPage.tsx:148",style:{color:un.greyMid,fontFamily:"monospace",fontSize:"0.75rem",letterSpacing:"0.08em",marginBottom:"3rem"},children:n.date}),o.jsx("div",{"data-loc":"client/src/pages/ListenPage.tsx:153",style:{backgroundColor:"#242424",borderRadius:12,padding:"2rem 2.5rem",width:"100%",maxWidth:560,boxShadow:"0 8px 40px rgba(0,0,0,0.4)"},children:y?o.jsx("p",{"data-loc":"client/src/pages/ListenPage.tsx:162",style:{color:"#ff6b6b",textAlign:"center",fontFamily:"monospace",fontSize:"0.85rem"},children:"Unable to load audio. Please try again later."}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:168",style:{marginBottom:"1.5rem"},children:[o.jsx("input",{"data-loc":"client/src/pages/ListenPage.tsx:169",type:"range",min:0,max:h||100,value:d,onChange:S,style:{width:"100%",height:4,appearance:"none",backgroundColor:"#444",borderRadius:2,outline:"none",cursor:"pointer",background:`linear-gradient(to right, ${un.tealLight} ${O}%, #444 ${O}%)`}}),o.jsxs("div",{"data-loc":"client/src/pages/ListenPage.tsx:186",style:{display:"flex",justifyContent:"space-between",marginTop:"0.4rem"},children:[o.jsx("span",{"data-loc":"client/src/pages/ListenPage.tsx:187",style:{color:un.greyMid,fontFamily:"monospace",fontSize:"0.7rem"},children:E(d)}),o.jsx("span",{"data-loc":"client/src/pages/ListenPage.tsx:188",style:{color:un.greyMid,fontFamily:"monospace",fontSize:"0.7rem"},children:E(h)})]})]}),o.jsx("div",{"data-loc":"client/src/pages/ListenPage.tsx:193",style:{display:"flex",justifyContent:"center"},children:o.jsx("button",{"data-loc":"client/src/pages/ListenPage.tsx:194",onClick:x,disabled:p,style:{width:64,height:64,borderRadius:"50%",backgroundColor:p?"#444":un.teal,border:"none",cursor:p?"default":"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.2s",flexShrink:0},"aria-label":r?"Pause":"Play",children:p?o.jsx("svg",{"data-loc":"client/src/pages/ListenPage.tsx:213",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"#999",strokeWidth:"2",children:o.jsx("circle",{"data-loc":"client/src/pages/ListenPage.tsx:214",cx:"12",cy:"12",r:"10",strokeDasharray:"31.4",strokeDashoffset:"10",style:{animation:"spin 1s linear infinite"}})}):r?o.jsxs("svg",{"data-loc":"client/src/pages/ListenPage.tsx:218",width:"24",height:"24",viewBox:"0 0 24 24",fill:"white",children:[o.jsx("rect",{"data-loc":"client/src/pages/ListenPage.tsx:219",x:"6",y:"4",width:"4",height:"16",rx:"1"}),o.jsx("rect",{"data-loc":"client/src/pages/ListenPage.tsx:220",x:"14",y:"4",width:"4",height:"16",rx:"1"})]}):o.jsx("svg",{"data-loc":"client/src/pages/ListenPage.tsx:224",width:"24",height:"24",viewBox:"0 0 24 24",fill:"white",children:o.jsx("polygon",{"data-loc":"client/src/pages/ListenPage.tsx:225",points:"5,3 19,12 5,21"})})})})]})})]}),o.jsx("div",{"data-loc":"client/src/pages/ListenPage.tsx:238",style:{padding:"1.5rem 2rem",borderTop:"1px solid #333",textAlign:"center"},children:o.jsxs("p",{"data-loc":"client/src/pages/ListenPage.tsx:239",style:{color:"#555",fontFamily:"monospace",fontSize:"0.7rem",letterSpacing:"0.06em"},children:["© ",new Date().getFullYear()," Akoroko — African Screen Intelligence. For subscribers only."]})}),o.jsx("style",{"data-loc":"client/src/pages/ListenPage.tsx:244",children:`
3984        @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
3985        input[type=range]::-webkit-slider-thumb {
3986          -webkit-appearance: none;
3987          width: 14px;
3988          height: 14px;
3989          border-radius: 50%;
3990          background: ${un.tealLight};
3991          cursor: pointer;
3992        }
3993        input[type=range]::-moz-range-thumb {
3994          width: 14px;
3995          height: 14px;
3996          border-radius: 50%;
3997          background: ${un.tealLight};
3998          cursor: pointer;
3999          border: none;
4000        }
4001      `})]})}const aa={bg:"#0a0a0a",teal:"#5eead4",textMid:"#a0a0a0",textLight:"#555555"};function xr({loading:e,user:n,children:i}){return e?o.jsx("div",{"data-loc":"client/src/components/AdminGuard.tsx:26",style:{background:aa.bg,minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center"},children:o.jsx("p",{"data-loc":"client/src/components/AdminGuard.tsx:27",style:{color:aa.textMid,fontFamily:"monospace",fontSize:"13px"},children:"Loading…"})}):n?n.role!=="admin"?o.jsxs("div",{"data-loc":"client/src/components/AdminGuard.tsx:66",style:{background:aa.bg,minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:"16px"},children:[o.jsx("p",{"data-loc":"client/src/components/AdminGuard.tsx:67",style:{color:aa.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.15em"},children:"ACCESS RESTRICTED"}),o.jsx("p",{"data-loc":"client/src/components/AdminGuard.tsx:68",style:{color:aa.textMid,fontFamily:"Georgia, serif",fontSize:"15px"},children:"This page requires admin access."}),o.jsx(pe,{"data-loc":"client/src/components/AdminGuard.tsx:71",href:"/",style:{color:aa.teal,fontFamily:"monospace",fontSize:"12px",textDecoration:"none",letterSpacing:"0.08em"}
4001,children:"← Return to site"})]}):o.jsx(o.Fragment,{children:i}):o.jsxs("div",{"data-loc":"client/src/components/AdminGuard.tsx:34",style:{background:aa.bg,minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:"20px"},children:[o.jsx("p",{"data-loc":"client/src/components/AdminGuard.tsx:35",style:{color:aa.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.15em"},children:"AKOROKO"}),o.jsx("p",{"data-loc":"client/src/components/AdminGuard.tsx:36",style:{color:"#ffffff",fontFamily:"Georgia, serif",fontSize:"20px",fontWeight:400},children:"Sign in to continue"}),o.jsx("p",{"data-loc":"client/src/components/AdminGuard.tsx:37",style:{color:aa.textMid,fontFamily:"Georgia, serif",fontSize:"14px",maxWidth:"320px",textAlign:"center",lineHeight:1.6},children:"This area is restricted to the site owner. Sign in with your Manus account to access it."}),o.jsx("a",{"data-loc":"client/src/components/AdminGuard.tsx:40",href:Zo(),style:{display:"inline-block",background:aa.teal,color:"#0a0a0a",fontFamily:"monospace",fontSize:"12px",fontWeight:600,letterSpacing:"0.1em",textDecoration:"none",padding:"12px 28px",marginTop:"8px"},children:"SIGN IN →"}),o.jsx(pe,{"data-loc":"client/src/components/AdminGuard.tsx:57",href:"/",style:{color:aa.textLight,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",letterSpacing:"0.08em",marginTop:"4px"},children:"← Return to site"})]})}const be={bg:"#0a0a0a",bgInput:"#1a1a1a",border:"#2a2a2a",teal:"#5eead4",text:"#e8e8e8",textMid:"#a0a0a0",textLight:"#555555",white:"#ffffff"};function Sc(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}const SE=["Film Intelligence","Television Intelligence","Digital & Streaming","Industry Analysis","Market Report","Box Office","Policy & Regulation","Dispatch"];function Aa({label:e,onClick:n}){return o.jsx("button",{"data-loc":"client/src/pages/Compose.tsx:52",type:"button",onClick:n,style:{background:"transparent",border:`1px solid ${be.border}`,color:be.textMid,padding:"3px 8px",fontSize:"12px",cursor:"pointer",fontFamily:"monospace"},onMouseEnter:i=>{i.currentTarget.style.borderColor=be.teal,i.currentTarget.style.color=be.teal},onMouseLeave:i=>{i.currentTarget.style.borderColor=be.border,i.currentTarget.style.color=be.textMid},children:e})}function TE(){const{user:e,loading:n}=ua(),[i,r]=j.useState(""),[l,d]=j.useState(""),[u,h]=j.useState("Dispatch"),[m,p]=j.useState(""),[b,y]=j.useState(""),[v,x]=j.useState(""),[S,E]=j.useState(""),[O,C]=j.useState(""),[_,q]=j.useState(!1),[Y,G]=j.useState(null),[P,M]=j.useState(!1),W=j.useRef(null),N=Qe.dispatches.create.useMutation(),L=Qe.dispatches.update.useMutation(),J=Qe.dispatches.send.useMutation();Qe.dispatches.testEmail.useMutation();const z=D=>{r(D),Y||d(Sc(D))},$=j.useCallback((D,B="")=>{const ce=W.current;if(!ce)return;const I=ce.selectionStart,A=ce.selectionEnd,U=m.substring(I,A),k=m.substring(0,I)+D+U+B+m.substring(A);p(k),setTimeout(()=>{ce.focus(),ce.setSelectionRange(I+D.length,I+D.length+U.length)},0)},[m]),Q=async()=>{if(!i.trim()||!m.trim()){ht.error("Title and body are required");return}try{if(Y)await L.mutateAsync({id:Y,title:i.trim(),slug:l.trim()||Sc(i),category:u,bodyHtml:m.trim(),audioUrl:b.trim()||void 0,headerImageUrl:v.trim()||void 0,excerpt:S.trim()||void 0}),ht.success("Draft updated");else{const D=await N.mutateAsync({title:i.trim(),slug:l.trim()||Sc(i),category:u,bodyHtml:m.trim(),audioUrl:b.trim()||void 0,headerImageUrl:v.trim()||void 0,excerpt:S.trim()||void 0});G(D.id),ht.success("Draft saved")}}catch(D){const B=D instanceof Error?D.message:"Save failed";ht.error(B)}},X=async()=>{if(!O.trim()){ht.error("Enter a test email address");return}let D=Y;if(!D){if(!i.trim()||!m.trim()){ht.error("Title and body are required before sending");return}try{D=(await N.mutateAsync({title:i.trim(),slug:l.trim()||Sc(i),category:u,bodyHtml:m.trim(),audioUrl:b.trim()||void 0,headerImageUrl:v.trim()||void 0,excerpt:S.trim()||void 0})).id,G(D)}catch(B){const ce=B instanceof Error?B.message:"Save failed";ht.error(ce);return}}
4001try{M(!0),(await J.mutateAsync({dispatchId:D,testEmail:O.trim()})).success?ht.success(`Test email sent to ${O}`):ht.error("Test email failed")}catch(B){const ce=B instanceof Error?B.message:"Send failed";ht.error(ce)}finally{M(!1)}},F=async()=>{if(!Y){ht.error("Save the dispatch first before sending to all subscribers");return}if(window.confirm(`Send "${i}" to ALL active subscribers?
4002
4003This cannot be undone.`))try{M(!0);const B=await J.mutateAsync({dispatchId:Y});B.success?ht.success(`Sent to ${B.sent} subscribers${B.failed>0?` (${B.failed} failed)`:""}`):ht.error("Send failed")}catch(B){const ce=B instanceof Error?B.message:"Send failed";ht.error(ce)}finally{M(!1)}};return o.jsx(xr,{"data-loc":"client/src/pages/Compose.tsx:248",loading:n,user:e,children:o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:249",style:{background:be.bg,minHeight:"100vh",color:be.text,fontFamily:"Georgia, serif"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:252",style:{borderBottom:`1px solid ${be.border}`,padding:"12px 24px",display:"flex",alignItems:"center",justifyContent:"space-between",position:"sticky",top:0,background:be.bg,zIndex:10},children:[o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:253",style:{display:"flex",alignItems:"center",gap:"20px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/Compose.tsx:254",href:"/",style:{color:be.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",textDecoration:"none"},children:"AKOROKO"}),o.jsx("span",{"data-loc":"client/src/pages/Compose.tsx:257",style:{color:be.textLight,fontSize:"11px",fontFamily:"monospace",letterSpacing:"0.1em"},children:"/ COMPOSE"}),Y&&o.jsxs("span",{"data-loc":"client/src/pages/Compose.tsx:259",style:{color:be.textLight,fontSize:"11px",fontFamily:"monospace"},children:["· Draft #",Y]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:264",style:{display:"flex",gap:"8px",alignItems:"center"},children:[o.jsx("button",{"data-loc":"client/src/pages/Compose.tsx:265",type:"button",onClick:()=>q(!_),style:{background:"transparent",border:`1px solid ${be.border}`,color:_?be.teal:be.textMid,padding:"6px 14px",fontSize:"11px",cursor:"pointer",fontFamily:"monospace",letterSpacing:"0.08em"},children:_?"EDIT":"PREVIEW"}),o.jsx("button",{"data-loc":"client/src/pages/Compose.tsx:272",type:"button",onClick:Q,disabled:N.isPending||L.isPending,style:{background:"transparent",border:`1px solid ${be.teal}`,color:be.teal,padding:"6px 14px",fontSize:"11px",cursor:"pointer",fontFamily:"monospace",letterSpacing:"0.08em"},children:N.isPending||L.isPending?"SAVING…":"SAVE DRAFT"}),o.jsx(pe,{"data-loc":"client/src/pages/Compose.tsx:280",href:"/admin/dispatches",style:{color:be.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${be.border}`},children:"ALL DISPATCHES"})]})]}),o.jsx("div",{"data-loc":"client/src/pages/Compose.tsx:286",style:{maxWidth:"900px",margin:"0 auto",padding:"40px 24px"},children:_?o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:290",children:[o.jsx("p",{"data-loc":"client/src/pages/Compose.tsx:291",style:{color:be.teal,fontSize:"11px",letterSpacing:"0.15em",fontFamily:"monospace",marginBottom:"24px"},children:"EMAIL PREVIEW"}),v&&o.jsx("img",{"data-loc":"client/src/pages/Compose.tsx:293",src:v,alt:i,style:{width:"100%",maxHeight:"300px",objectFit:"cover",marginBottom:"32px"}}),u&&o.jsx("p",{"data-loc":"client/src/pages/Compose.tsx:296",style:{color:be.teal,fontSize:"11px",letterSpacing:"0.15em",fontFamily:"monospace",marginBottom:"12px",textTransform:"uppercase"},children:u}),o.jsx("h1",{"data-loc":"client/src/pages/Compose.tsx:298",style:{fontSize:"32px",fontWeight:400,color:be.white,lineHeight:1.3,marginBottom:"8px"},children:i||"Untitled dispatch"}),o.jsx("p",{"data-loc":"client/src/pages/Compose.tsx:299",style:{color:be.textLight,fontSize:"12px",letterSpacing:"0.08em",fontFamily:"monospace",marginBottom:"32px",textTransform:"uppercase"},children:new Date().toLocaleDateString("en-GB",{day:"numeric",month:"long",year:"numeric"})}),S&&o.jsx("p",{"data-loc":"client/src/pages/Compose.tsx:303",style:{color:"#c8c8c8",fontSize:"17px",lineHeight:1.7,fontStyle:"italic",marginBottom:"32px",paddingLeft:"20px",borderLeft:`2px solid ${be.teal}`},children:S}),o.jsx("div",{"data-loc":"client/src/pages/Compose.tsx:305",style:{color:"#c0c0c0",fontSize:"15px",lineHeight:1.8},dangerouslySetInnerHTML:{__html:m}}),b&&o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:310",style:{margin:"32px 0",padding:"20px 24px",background:"#1a1a1a",borderLeft:`3px solid ${be.teal}`},children:[o.jsx("p",{"data-loc":"client/src/pages/Compose.tsx:311",style:{color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",margin:"0 0 8px 0"},children:"AUDIO DISPATCH"}),o.jsx("a",{"data-loc":"client/src/pages/Compose.tsx:312",href:b,style:{color:be.text,fontSize:"15px",textDecoration:"none"},children:"▶ Listen to this dispatch"})]}),o.jsx("div",{"data-loc":"client/src/pages/Compose.tsx:315",style:{marginTop:"40px",textAlign:"center"},children:o.jsx("a",{"data-loc":"client/src/pages/Compose.tsx:316",href:`/article/${l}`,style:{display:"inline-block",background:be.teal,color:"#0a0a0a",fontSize:"13px",fontWeight:600,letterSpacing:"0.1em",textTransform:"uppercase",textDecoration:"none",padding:"14px 32px",fontFamily:"monospace"},children:"Read the full dispatch →"})})]}):o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:326",style:{display:"flex",flexDirection:"column",gap:"24px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:329",children:[o.jsx("label",{"data-loc":"client/src/pages/Compose.tsx:330",style:{display:"block",color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:"TITLE *"}),o.jsx("input",{"data-loc":"client/src/pages/Compose.tsx:331",type:"text",value:i,onChange:D=>z(D.target.value),placeholder:"Dispatch title…",style:{width:"100%",background:be.bgInput,border:`1px solid ${be.border}`,color:be.white,padding:"12px 16px",fontSize:"22px",fontFamily:"Georgia, serif",outline:"none",boxSizing:"border-box"}})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:341",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:342",children:[o.jsx("label",{"data-loc":"client/src/pages/Compose.tsx:343",style:{display:"block",color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:"SLUG *"}),o.jsx("input",{"data-loc":"client/src/pages/Compose.tsx:344",type:"text",value:l,onCh
4003ange:D=>d(D.target.value),placeholder:"auto-generated-from-title",style:{width:"100%",background:be.bgInput,border:`1px solid ${be.border}`,color:be.textMid,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none",boxSizing:"border-box"}}),o.jsxs("p",{"data-loc":"client/src/pages/Compose.tsx:351",style:{color:be.textLight,fontSize:"11px",fontFamily:"monospace",marginTop:"4px"},children:["akoroko.com/article/",l||"…"]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:353",children:[o.jsx("label",{"data-loc":"client/src/pages/Compose.tsx:354",style:{display:"block",color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:"CATEGORY"}),o.jsx("select",{"data-loc":"client/src/pages/Compose.tsx:355",value:u,onChange:D=>h(D.target.value),style:{width:"100%",background:be.bgInput,border:`1px solid ${be.border}`,color:be.text,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none",boxSizing:"border-box"},children:SE.map(D=>o.jsx("option",{"data-loc":"client/src/pages/Compose.tsx:361",value:D,children:D},D))})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:368",children:[o.jsxs("label",{"data-loc":"client/src/pages/Compose.tsx:369",style:{display:"block",color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:["EXCERPT ",o.jsx("span",{"data-loc":"client/src/pages/Compose.tsx:369",style:{color:be.textLight},children:"(shown in email preview)"})]}),o.jsx("textarea",{"data-loc":"client/src/pages/Compose.tsx:370",value:S,onChange:D=>E(D.target.value),placeholder:"A short summary that appears in italics at the top of the email…",rows:2,style:{width:"100%",background:be.bgInput,border:`1px solid ${be.border}`,color:be.text,padding:"10px 14px",fontSize:"14px",fontFamily:"Georgia, serif",outline:"none",resize:"vertical",boxSizing:"border-box",lineHeight:1.6}})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:380",children:[o.jsx("label",{"data-loc":"client/src/pages/Compose.tsx:381",style:{display:"block",color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:"BODY (HTML) *"}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:383",style:{display:"flex",gap:"4px",marginBottom:"8px",flexWrap:"wrap"},children:[o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:384",label:"B",onClick:()=>$("<strong>","</strong>")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:385",label:"I",onClick:()=>$("<em>","</em>")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:386",label:"H2",onClick:()=>$("<h2>","</h2>")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:387",label:"H3",onClick:()=>$("<h3>","</h3>")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:388",label:"P",onClick:()=>$("<p>","</p>")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:389",label:"A",onClick:()=>$('<a href="">',"</a>")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:390",label:"UL",onClick:()=>$(`<ul>
4004  <li>`,`</li>
4005</ul>`)}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:391",label:"LI",onClick:()=>$("<li>","</li>")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:392",label:"HR",onClick:()=>$("<hr />")}),o.jsx(Aa,{"data-loc":"client/src/pages/Compose.tsx:393",label:"BR",onClick:()=>$("<br />")})]}),o.jsx("textarea",{"data-loc":"client/src/pages/Compose.tsx:395",ref:W,value:m,onChange:D=>p(D.target.value),placeholder:"<p>Write your dispatch here. HTML is supported.</p>",rows:20,style:{width:"100%",background:be.bgInput,border:`1px solid ${be.border}`,color:be.text,padding:"14px 16px",fontSize:"14px",fontFamily:"monospace",outline:"none",resize:"vertical",boxSizing:"border-box",lineHeight:1.7}})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:406",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:407",children:[o.jsx("label",{"data-loc":"client/src/pages/Compose.tsx:408",style:{display:"block",color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:"HEADER IMAGE URL"}),o.jsx("input",{"data-loc":"client/src/pages/Compose.tsx:409",type:"url",value:v,onCh
4005ange:D=>x(D.target.value),placeholder:"https://cdn.example.com/image.jpg",style:{width:"100%",background:be.bgInput,border:`1px solid ${be.border}`,color:be.text,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none",boxSizing:"border-box"}})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:417",children:[o.jsx("label",{"data-loc":"client/src/pages/Compose.tsx:418",style:{display:"block",color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:"AUDIO URL"}),o.jsx("input",{"data-loc":"client/src/pages/Compose.tsx:419",type:"url",value:b,onChange:D=>y(D.target.value),placeholder:"https://akoroko.com/listen/track-id",style:{width:"100%",background:be.bgInput,border:`1px solid ${be.border}`,color:be.text,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none",boxSizing:"border-box"}})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:430",style:{borderTop:`1px solid ${be.border}`,paddingTop:"24px",display:"flex",flexDirection:"column",gap:"16px"},children:[o.jsx("p",{"data-loc":"client/src/pages/Compose.tsx:431",style:{color:be.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace"},children:"SEND"}),o.jsxs("div",{"data-loc":"client/src/pages/Compose.tsx:434",style:{display:"flex",gap:"8px",alignItems:"center"},children:[o.jsx("input",{"data-loc":"client/src/pages/Compose.tsx:435",type:"email",value:O,onChange:D=>C(D.target.value),placeholder:"[email protected]",style:{flex:1,background:be.bgInput,border:`1px solid ${be.border}`,color:be.text,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none"}}),o.jsx("button",{"data-loc":"client/src/pages/Compose.tsx:442",type:"button",onClick:X,disabled:P,style:{background:"transparent",border:`1px solid ${be.border}`,color:be.textMid,padding:"10px 20px",fontSize:"12px",cursor:"pointer",fontFamily:"monospace",letterSpacing:"0.08em",whiteSpace:"nowrap"},children:P?"SENDING…":"SEND TEST"})]}),o.jsx("button",{"data-loc":"client/src/pages/Compose.tsx:453",type:"button",onClick:F,disabled:P||!Y,style:{background:Y?be.teal:"#1a1a1a",border:`1px solid ${Y?be.teal:be.border}`,color:Y?"#0a0a0a":be.textLight,padding:"14px 32px",fontSize:"13px",cursor:Y?"pointer":"not-allowed",fontFamily:"monospace",letterSpacing:"0.1em",fontWeight:600,width:"100%"},children:P?"SENDING TO ALL SUBSCRIBERS…":Y?"SEND TO ALL ACTIVE SUBSCRIBERS":"SAVE DRAFT FIRST TO ENABLE SEND"}),!Y&&o.jsx("p",{"data-loc":"client/src/pages/Compose.tsx:474",style:{color:be.textLight,fontSize:"12px",fontFamily:"monospace"},children:'Save the draft first, then use "Send to All" to dispatch to all active subscribers.'})]})]})})]})})}const pt={bg:"#0a0a0a",bgCard:"#111111",border:"#2a2a2a",teal:"#5eead4",text:"#e8e8e8",textMid:"#a0a0a0",textLight:"#555555"};function CE(){const{user:e,loading:n}=ua(),{data:i,isLoading:r,refetch:l}=Qe.dispatches.list.useQuery(void 0,{enabled:!!e&&e.role==="admin"}),d=Qe.dispatches.delete.useMutation({onSuccess:()=>l()}),u=async(h,m)=>{if(window.confirm(`Delete "${m}"? This cannot be undone.`))try{await d.mutateAsync({id:h}),ht.success("Dispatch deleted")}catch{ht.error("Delete failed")}};return o.jsx(xr,{"data-loc":"client/src/pages/AdminDispatches.tsx:38",loading:n||r,user:e,children:o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:39",style:{background:pt.bg,minHeight:"100vh",color:pt.text,fontFamily:"Georgia, serif"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:42",style:{borderBottom:`1px solid ${pt.border}`,padding:"12px 24px",display:"flex",alignItems:"center",justifyContent:"space-between",position:"sticky",top:0,background:pt.bg,zIndex:10},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:43",style:{display:"flex",alignItems:"center",gap:"20px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminDispatches.tsx:44",href:"/",style:{color:pt.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",textDecoration:"none"},children:"AKOROKO"}),o.jsx("span",{"data-loc":"client/src/pages/AdminDispatches.tsx:45",style:{color:pt.textLight,fontSize:"11px",fontFamily:"monospace",letterSpacing:"0.1em"},children:"/ DISPATCHES"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:47",style:{display:"flex",gap:"8px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminDispatches.tsx:48",href:"/admin/subscribers",style:{color:pt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${pt.border}`},children:"SUBSCRIBERS"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminDispatches.tsx:51",href:"/admin/most-asked",style:{color:pt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${pt.border}`},children:"MOST ASKED"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminDispatches.tsx:54",href:"/admin/ingest",style:{color:pt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${pt.border}`},children:"INGEST DISPATCH"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminDispatches.tsx:57",href:"/admin/webhook-log",style:{color:pt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${pt.border}`},children:"WEBHOOK LOG"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminDispatches.tsx:60",href:"/compose",style:{background:pt.teal,color:"#0a0a0a",fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",fontWeight:600},children:"+ NEW DISPATCH"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:66",style:{maxWidth:"900px",margin:"0 auto",padding:"40px 24px"},children:[o.jsx("h1",{"data-loc":"client/src/pages/AdminDispatches.tsx:67",style:{fontSize:"24px",fontWeight:400,color:"#ffffff",marginBottom:"8px"},children:"Dispatches"}),o.jsxs("p",{"data-loc":"client/src/pages/AdminDispatches.tsx:68",style:{color:pt.textMid,fontSize:"14px",marginBottom:"32px"},children:[i?.length??0," total · ",i?.filter(h=>h.sentAt).length??0," sent"]}),!i||i.length===0?o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:73",style:{textAlign:"center",padding:"60px 0"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminDispatches.tsx:74",style:{color:pt.textMid,fontFamily:"monospace",fontSize:"13px"},children:"No dispatches yet."}),o.jsx(pe,{"data-loc":"client/src/pages/AdminDispatches.tsx:75",href:"/compose",style:{color:pt.teal,fontFamily:"monospace",fontSize:"12px",textDecoration:"none",marginTop:"12px",display:"inline-block"},children:"Write your first dispatch →"})]}):o.jsx("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:80",style:{display:"flex",flexDirection:"column",gap:"1px"},children:i.map(h=>o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:82",style:{background:pt.bgCard,padding:"20px 24px",display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"16px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:86",style:{flex:1,minWidth:0},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:87",style:{display:"flex",alignItems:"center",gap:"10px",marginBottom:"4px"},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminDispatches.tsx:88",style:{fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",padding:"2px 8px",background:h.sentAt?"#0a3a2a":"#1a1a1a",color:h.sentAt?"#5eead4":pt.textLight,border:`1px solid ${h.sentAt?"#1a4a3a":pt.border}`},children:h.sentAt?`SENT · ${h.recipientCount??0} recipients`:"DRAFT"}),h.category&&o.jsx("span",{"data-loc":"client/src/pages/AdminDispatches.tsx:102",style:{fontSize:"10px",fontFamily:"monospace",color:pt.textLight,letterSpacing:"0.08em"},children:h.category})]}),o.jsx("p",{"data-loc":"client/src/pages/AdminDispatches.tsx:105",style:{color:"#ffffff",fontSize:"16px",fontWeight:400,margin:"0 0 4px 0",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h.title}),o.jsxs("p",{"data-loc":"client/src/pages/AdminDispatches.tsx:106",style:{color:pt.textLight,fontSize:"12px",fontFamily:"monospace",margin:0},children:["/article/",h.slug," · ",new Date(h.createdAt).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),h.sentAt&&` · Sent ${new Date(h.sentAt).toLocaleDateString("en-GB",{day:"numeric",month:"short"})}`]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminDispatches.tsx:111",style:{display:"flex",gap:"8px",flexShrink:0},children:[o.jsx("a",{"data-loc":"client/src/pages/AdminDispatches.tsx:112",href:`/article/${h.slug}`,target:"_blank",rel:"noopener noreferrer",style:{color:pt.textMid,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",padding:"6px 10px",border:`1px solid ${pt.border}`},children:"VIEW"}),o.jsx("button",{"data-loc":"client/src/pages/AdminDispatches.tsx:120",type:"button",onClick:()=>u(h.id,h.title),style:{background:"transparent",border:`1px solid ${pt.border}`,color:"#ef4444",padding:"6px 10px",fontSize:"11px",cursor:"pointer",fontFamily:"monospace"},children:"DEL"})]})]}
4005,h.id))})]})]})})}const Me={bg:"#0a0a0a",border:"#2a2a2a",teal:"#5eead4",text:"#e8e8e8",textMid:"#a0a0a0",textLight:"#555555"};function jE(){const{user:e,loading:n}=ua(),{data:i,isLoading:r,refetch:l}=Qe.subscribers.list.useQuery(void 0,{enabled:!!e&&e.role==="admin"}),d=Qe.subscribers.add.useMutation({onSuccess:()=>{l(),b(!1),v(""),S("")}}),u=Qe.subscribers.updateStatus.useMutation({onSuccess:()=>l()}),h=Qe.subscribers.delete.useMutation({onSuccess:()=>l()}),m=Qe.subscribers.importBulk.useMutation({onSuccess:N=>{l(),ht.success(`Imported ${N.added} subscribers (${N.skipped} skipped)`),_("")}}),[p,b]=j.useState(!1),[y,v]=j.useState(""),[x,S]=j.useState(""),[E,O]=j.useState(!1),[C,_]=j.useState(""),[q,Y]=j.useState("all"),G=async()=>{if(!y.trim()){ht.error("Email is required");return}try{await d.mutateAsync({email:y.trim(),name:x.trim()||void 0,status:"active"}),ht.success(`${y} added`)}catch(N){const L=N instanceof Error?N.message:"Failed to add";ht.error(L)}},P=async()=>{if(!C.trim()){ht.error("Paste CSV data first");return}const N=C.trim().split(`
4006`).filter(J=>J.trim()),L=[];for(const J of N){const z=J.split(",").map(X=>X.trim().replace(/^"|"$/g,"")),$=z[0],Q=z[1];$&&$.includes("@")&&L.push({email:$,name:Q||void 0})}if(L.length===0){ht.error("No valid email addresses found");return}try{await m.mutateAsync({subscribers:L})}catch(J){const z=J instanceof Error?J.message:"Import failed";ht.error(z)}},M=i?.filter(N=>q==="all"?!0:N.status===q)??[],W=i?.filter(N=>N.status==="active").length??0;return o.jsx(xr,{"data-loc":"client/src/pages/AdminSubscribers.tsx:74",loading:n||r,user:e,children:o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:75",style:{background:Me.bg,minHeight:"100vh",color:Me.text,fontFamily:"Georgia, serif"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:78",style:{borderBottom:`1px solid ${Me.border}`,padding:"12px 24px",display:"flex",alignItems:"center",justifyContent:"space-between",position:"sticky",top:0,background:Me.bg,zIndex:10},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:79",style:{display:"flex",alignItems:"center",gap:"20px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminSubscribers.tsx:80",href:"/",style:{color:Me.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",textDecoration:"none"},children:"AKOROKO"}),o.jsx("span",{"data-loc":"client/src/pages/AdminSubscribers.tsx:81",style:{color:Me.textLight,fontSize:"11px",fontFamily:"monospace",letterSpacing:"0.1em"},children:"/ SUBSCRIBERS"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:83",style:{display:"flex",gap:"8px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminSubscribers.tsx:84",href:"/admin/dispatches",style:{color:Me.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${Me.border}`},children:"DISPATCHES"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminSubscribers.tsx:87",href:"/admin/most-asked",style:{color:Me.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${Me.border}`},children:"MOST ASKED"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminSubscribers.tsx:90",href:"/admin/ingest",style:{color:Me.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${Me.border}`},children:"INGEST DISPATCH"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminSubscribers.tsx:93",href:"/admin/webhook-log",style:{color:Me.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${Me.border}`},children:"WEBHOOK LOG"}),o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:96",type:"button",onClick:()=>{O(!E),b(!1)},style:{background:"transparent",border:`1px solid ${Me.border}`,color:Me.textMid,padding:"6px 14px",fontSize:"11px",cursor:"pointer",fontFamily:"monospace",letterSpacing:"0.08em"},children:"IMPORT CSV"}),o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:103",type:"button",onClick:()=>{b(!p),O(!1)},style:{background:Me.teal,border:`1px solid ${Me.teal}`,color:"#0a0a0a",padding:"6px 14px",fontSize:"11px",cursor:"pointer",fontFamily:"monospace",letterSpacing:"0.08em",fontWeight:600},children:"+ ADD"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:113",style:{maxWidth:"900px",margin:"0 auto",padding:"40px 24px"},children:[o.jsx("h1",{"data-loc":"client/src/pages/AdminSubscribers.tsx:114",style:{fontSize:"24px",fontWeight:400,color:"#ffffff",marginBottom:"8px"},children:"Subscribers"}),o.jsxs("p",{"data-loc":"client/src/pages/AdminSubscribers.tsx:115",style:{color:Me.textMid,fontSize:"14px",marginBottom:"24px"},children:[W," active · ",(i?.length??0)-W," unsubscribed/bounced"]}),p&&o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:121",style:{background:"#111111",border:`1px solid ${Me.border}`,padding:"20px",marginBottom:"24px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminSubscribers.tsx:122",style:{color:Me.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"16
4006px"},children:"ADD SUBSCRIBER"}),o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:123",style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[o.jsx("input",{"data-loc":"client/src/pages/AdminSubscribers.tsx:124",type:"email",value:y,onChange:N=>v(N.target.value),placeholder:"[email protected]",style:{flex:2,minWidth:"200px",background:"#1a1a1a",border:`1px solid ${Me.border}`,color:Me.text,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none"}}),o.jsx("input",{"data-loc":"client/src/pages/AdminSubscribers.tsx:131",type:"text",value:x,onChange:N=>S(N.target.value),placeholder:"Name (optional)",style:{flex:1,minWidth:"140px",background:"#1a1a1a",border:`1px solid ${Me.border}`,color:Me.text,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none"}}),o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:138",type:"button",onClick:G,disabled:d.isPending,style:{background:Me.teal,border:"none",color:"#0a0a0a",padding:"10px 20px",fontSize:"12px",cursor:"pointer",fontFamily:"monospace",fontWeight:600},children:d.isPending?"ADDING…":"ADD"})]})]}),E&&o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:152",style:{background:"#111111",border:`1px solid ${Me.border}`,padding:"20px",marginBottom:"24px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminSubscribers.tsx:153",style:{color:Me.teal,fontSize:"11px",letterSpacing:"0.12em",fontFamily:"monospace",marginBottom:"8px"},children:"IMPORT FROM CSV"}),o.jsxs("p",{"data-loc":"client/src/pages/AdminSubscribers.tsx:154",style:{color:Me.textMid,fontSize:"12px",fontFamily:"monospace",marginBottom:"12px"},children:["One subscriber per line: ",o.jsx("code",{"data-loc":"client/src/pages/AdminSubscribers.tsx:155",style:{color:Me.teal},children:"email,name"})," (name is optional). Duplicates are skipped."]}),o.jsx("textarea",{"data-loc":"client/src/pages/AdminSubscribers.tsx:157",value:C,onChange:N=>_(N.target.value),placeholder:`[email protected],Jane Doe
4007[email protected]`,rows:8,style:{width:"100%",background:"#1a1a1a",border:`1px solid ${Me.border}`,color:Me.text,padding:"10px 14px",fontSize:"13px",fontFamily:"monospace",outline:"none",resize:"vertical",boxSizing:"border-box",marginBottom:"12px"}}),o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:164",type:"button",onClick:P,disabled:m.isPending,style:{background:Me.teal,border:"none",color:"#0a0a0a",padding:"10px 24px",fontSize:"12px",cursor:"pointer",fontFamily:"monospace",fontWeight:600},children:m.isPending?"IMPORTING…":"IMPORT"})]}),o.jsx("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:176",style:{display:"flex",gap:"1px",marginBottom:"16px"},children:["all","active","unsubscribed"].map(N=>o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:178",type:"button",onClick:()=>Y(N),style:{background:q===N?Me.teal:"transparent",border:`1px solid ${q===N?Me.teal:Me.border}`,color:q===N?"#0a0a0a":Me.textMid,padding:"6px 16px",fontSize:"11px",cursor:"pointer",fontFamily:"monospace",letterSpacing:"0.08em",fontWeight:q===N?600:400},children:N.toUpperCase()},N))}),M.length===0?o.jsx("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:201",style:{textAlign:"center",padding:"60px 0"},children:o.jsx("p",{"data-loc":"client/src/pages/AdminSubscribers.tsx:202",style:{color:Me.textMid,fontFamily:"monospace",fontSize:"13px"},children:"No subscribers yet."})}):o.jsx("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:205",style:{display:"flex",flexDirection:"column",gap:"1px"},children:M.map(N=>o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:207",style:{background:"#111111",padding:"14px 20px",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:211",style:{flex:1,minWidth:0},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminSubscribers.tsx:212",style:{color:"#ffffff",fontSize:"14px",margin:"0 0 2px 0",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:N.email}),N.name&&o.jsx("p",{"data-loc":"client/src/pages/AdminSubscribers.tsx:216",style:{color:Me.textMid,fontSize:"12px",fontFamily:"monospace",margin:0},children:N.name})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminSubscribers.tsx:219",style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminSubscribers.tsx:220",style:{fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.08em",padding:"2px 8px",background:N.status==="active"?"#0a3a2a":"#1a1a1a",color:N.status==="active"?Me.teal:Me.textLight,border:`1px solid ${N.status==="active"?"#1a4a3a":Me.border}`},children:N.status.toUpperCase()}),N.status==="active"?o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:234",type:"button",onClick:()=>u.mutateAsync({id:N.id,status:"unsubscribed"}),style:{background:"transparent",border:`1px solid ${Me.border}`,color:Me.textLight,padding:"4px 10px",fontSize:"10px",cursor:"pointer",fontFamily:"monospace"},children:"UNSUB"}):o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:242",type:"button",onClick:()=>u.mutateAsync({id:N.id,status:"active"}),style:{background:"transparent",border:`1px solid ${Me.border}`,color:Me.teal,padding:"4px 10px",fontSize:"10px",cursor:"pointer",fontFamily:"monospace"},children:"REACTIVATE"}),o.jsx("button",{"data-loc":"client/src/pages/AdminSubscribers.tsx:250",type:"button",onClick:async()=>{window.confirm(`Remove ${N.email}?`)&&(await h.mutateAsync({id:N.id}),ht.success("Subscriber removed"))},style:{background:"transparent",border:`1px solid ${Me.border}`,color:"#ef4444",padding:"4px 10px",fontSize:"10px",cursor:"pointer",fontFamily:"monospace"},children:"DEL"})]})]},N.id))})]})]})})}const xe={bg:"#0a0a0a",bgCard:"#111111",border:"#2a2a2a",teal:"#5eead4",tealDim:"#2a6e65",text:"#e8e8e8",textMid:"#a0a0a0",textLight:"#555555",green:"#22c55e",red:"#ef4444",amber:"#f59e0b"};function FE(){const{user:e,loading:n}=ua(),[i,r]=j.useState(30),{data:l,isLoading:d}=Qe.chat.analyticsTopKeywords.useQuery({days:i,limit:30},{enabled:!!e&&e.role==="admin"}),{data:u,isLoading:h}=Qe.chat.analyticsRecentQueries.useQuery({limit:100},{enabled:!!e&&e.role==="admin"}),{data:m,isLoading:p}=Qe.chat.analyticsTimeSeries.useQuery({days:i},{enabled:!!e&&e.role==="admin"}),b=d||h||p,y=j.useMemo(()=>l?.topKeywords?.length?l.topKeywords[0].count:1,[l]),v=j.useMemo(()=>m?.series?m.series.map(_=>
4007({day:typeof _.day=="string"?_.day:_.day&&!isNaN(new Date(_.day).getTime())?new Date(_.day).toISOString().slice(0,10):"unknown",count:Number(_.count??0),substantive:Number(_.substantive??0)})):[],[m]),x=j.useMemo(()=>v.length?Math.max(...v.map(C=>C.count),1):1,[v]),S=l?.totalQueries??0,E=j.useMemo(()=>{if(!u?.queries?.length)return 0;const C=u.queries.length,_=u.queries.filter(q=>q.wasSubstantive===1).length;return Math.round(_/C*100)},[u]),O=j.useMemo(()=>u?.queries?.length?new Set(u.queries.map(_=>_.userEmail).filter(Boolean)).size:0,[u]);return o.jsx(xr,{"data-loc":"client/src/pages/AdminMostAsked.tsx:88",loading:n||b,user:e,children:o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:89",style:{background:xe.bg,minHeight:"100vh",color:xe.text,fontFamily:"Georgia, serif"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:92",style:{borderBottom:`1px solid ${xe.border}`,padding:"12px 24px",display:"flex",alignItems:"center",justifyContent:"space-between",position:"sticky",top:0,background:xe.bg,zIndex:10},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:103",style:{display:"flex",alignItems:"center",gap:"20px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminMostAsked.tsx:104",href:"/",style:{color:xe.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",textDecoration:"none"},children:"AKOROKO"}),o.jsx("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:105",style:{color:xe.textLight,fontSize:"11px",fontFamily:"monospace",letterSpacing:"0.1em"},children:"/ MOST ASKED"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:107",style:{display:"flex",gap:"8px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminMostAsked.tsx:108",href:"/admin/dispatches",style:{color:xe.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${xe.border}`},children:"DISPATCHES"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminMostAsked.tsx:111",href:"/admin/subscribers",style:{color:xe.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${xe.border}`},children:"SUBSCRIBERS"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminMostAsked.tsx:114",href:"/admin/ingest",style:{color:xe.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${xe.border}`},children:"INGEST DISPATCH"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminMostAsked.tsx:117",href:"/admin/webhook-log",style:{color:xe.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${xe.border}`},children:"WEBHOOK LOG"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:123",style:{maxWidth:"1100px",margin:"0 auto",padding:"40px 24px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:126",style:{marginBottom:"32px"},children:[o.jsx("h1",{"data-loc":"client/src/pages/AdminMostAsked.tsx:127",style:{fontSize:"24px",fontWeight:400,color:"#ffffff",marginBottom:"8px"},children:"Most Asked Topics"}),o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:130",style:{color:xe.textMid,fontSize:"14px",margin:0},children:"What subscribers are searching for in Ask Akoroko Premium — use this to inform editorial coverage."})]}),o.jsx("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:136",style:{display:"flex",gap:"4px",marginBottom:"28px"},children:[7,14,30,90].map(C=>o.jsxs("button",{"data-loc":"client/src/pages/AdminMostAsked.tsx:138",onClick:()=>r(C),style:{background:i===C?xe.teal:"transparent",color:i===C?"#0a0a0a":xe.textMid,border:`1px solid ${i===C?xe.teal:xe.border}`,padding:"6px 16px",fontSize:"11px",fontFamily:"monospace",letterSpacing:"0.08em",cursor:"pointer",fontWeight:i===C?600:400},children:[C,"D"]},C))}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:159",style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"12px",marginBottom:"32px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:160",style:{background:xe.bgCard,padding:"20px",border:`1px solid ${xe.border}`},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:161",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",margin:"0 0 8px 0"},children:"TOTAL QUERIES"}),o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:162",style:{color:"#ffffff",fontSize:"32px",fontWeight:300,margin:0,fontFamily:"monospace"},children:S}),o.jsxs("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:163",style:{color:xe.textLight,fontSize:"11px",fontFamily:"monospace",margin:"4px 0 0 0"},children:["last ",i," days"]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:165",style:{background:xe.bgCard,padding:"20px",border:`1px solid ${xe.border}`},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:166",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",margin:"0 0 8px 0"},children:"SUBSTANTIVE RATE"}),o.jsxs("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:167",style:{color:E>=70?xe.green:E>=40?xe.amber:xe.red,fontSize:"32px",fontWeight:300,margin:0,fontFamily:"monospace"},children:[E,"%"]}),o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:168",style:{color:xe.textLight,fontSize:"11px",fontFamily:"monospace",margin:"4px 0 0 0"},children:"of recent queries"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:170",style:{background:xe.bgCard,padding:"20px",border:`1px solid ${xe.border}`},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:171",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",margin:"0 0 8px 0"},children:"UNIQUE USERS"}),o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:172",style:{color:"#ffffff",fontSize:"32px",fontWeight:300,margin:0,fontFamily:"monospace"},children:O}),o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:173",style:{color:xe.textLight,fontSize:"11px",fontFamily:"monospace",margin:"4px 0 0 0"},children:"recent 100 queries"})]})]}),v.length>0&&o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:179",style:{background:xe.bgCard,padding:"20px 24px",border:`1px solid ${xe.border}`,marginBottom:"32px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:180",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",margin:"0 0 16px 0"},children:"DAILY QUERY VOLUME"}),o.jsx("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:181",style:{display:"flex",alignItems:"flex-end",gap:"2px",height:"100px"},children:v.map((C,_)=>o.jsx("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:183",title:`${C.day}: ${C.count} queries (${C.substantive} substantive)`,style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",gap:"1px",height:"100%",
4007justifyContent:"flex-end"},children:o.jsx("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:196",style:{width:"100%",maxWidth:"24px",height:`${Math.max(C.count/x*100,2)}%`,background:`linear-gradient(to top, ${xe.teal}, ${xe.tealDim})`,borderRadius:"2px 2px 0 0",minHeight:C.count>0?"4px":"1px",opacity:C.count>0?1:.3}})},_))}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:210",style:{display:"flex",justifyContent:"space-between",marginTop:"8px"},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:211",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace"},children:v[0]?.day??""}),o.jsx("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:214",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace"},children:v[v.length-1]?.day??""})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:222",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"20px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:225",style:{background:xe.bgCard,padding:"20px 24px",border:`1px solid ${xe.border}`},children:[o.jsxs("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:226",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",margin:"0 0 16px 0"},children:["TOP KEYWORDS · ",l?.topKeywords?.length??0," topics"]}),!l?.topKeywords||l.topKeywords.length===0?o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:230",style:{color:xe.textMid,fontFamily:"monospace",fontSize:"13px",textAlign:"center",padding:"40px 0"},children:"No queries logged yet. Data will appear once subscribers start using Ask Akoroko Premium."}):o.jsx("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:234",style:{display:"flex",flexDirection:"column",gap:"6px"},children:l.topKeywords.map((C,_)=>o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:236",style:{display:"flex",alignItems:"center",gap:"10px"},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:237",style:{color:_<3?xe.teal:xe.textMid,fontFamily:"monospace",fontSize:"10px",width:"20px",textAlign:"right",flexShrink:0},children:_+1}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:247",style:{flex:1,position:"relative",height:"28px"},children:[o.jsx("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:248",style:{position:"absolute",left:0,top:0,height:"100%",width:`${Math.max(C.count/y*100,4)}%`,background:_<3?`${xe.teal}22`:`${xe.textLight}15`,borderLeft:`2px solid ${_<3?xe.teal:xe.textLight}`}}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:259",style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"space-between",height:"100%",padding:"0 8px"},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:267",style:{color:_<3?"#ffffff":xe.text,fontFamily:"monospace",fontSize:"12px",fontWeight:_<3?600:400},children:C.keyword}),o.jsx("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:275",style:{color:xe.textLight,fontFamily:"monospace",fontSize:"10px"},children:C.count})]})]})]},C.keyword))})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:291",style:{background:xe.bgCard,padding:"20px 24px",border:`1px solid ${xe.border}`},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:292",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",margin:"0 0 16px 0"},children:"RECENT QUERIES"}),!u?.queries||u.queries.length===0?o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:296",style:{color:xe.textMid,fontFamily:"monospace",fontSize:"13px",textAlign:"center",padding:"40px 0"},children:"No queries logged yet."}):o.jsx("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:300",style:{display:"flex",flexDirection:"column",gap:"1px",maxHeight:"600px",overflowY:"auto"},children:u.queries.map(C=>{const _=C.createdAt?new Date(C.createdAt):null,q=_&&!isNaN(_.getTime()),Y=q?_.toLocaleDateString("en-GB",{day:"numeric",month:"short"}):"—",G=q?_.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"}):"—",P=C.wasSubstantive===1;return o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:308",style:{padding:"10px 12px",background:xe.bg,display:"flex",flexDirection:"column",gap:"4px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:318",style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:319",style:{color:"#ffffff",fontSize:"13px",margin:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,marginRight:"8px"},children:C.queryText}),o.jsx("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:331",style:{fontSize:"8px",fontFamily:"monospace",letterSpacing:"0.08em",padding:"2px 6px",background:P?"#0a3a2a":"#2a1a1a",color:P?xe.green:xe.red,border:`1px solid ${P?"#1a4a3a":"#3a2a2a"}`,flexShrink:0},children:P?"HIT":"MISS"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:344",style:{display:"flex",alignItems:"center",gap:"8px"},children:[o.jsxs("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:345",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace"},children:[Y," ",G]}),C.userEmail&&o.jsxs("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:349",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace"},children:["· ",C.userEmail.split("@")[0]]}),C.resultCount!==null&&o.jsxs("span",{"data-loc":"client/src/pages/AdminMostAsked.tsx:354",style:{color:xe.textLight,fontSize:"10px",fontFamily:"monospace"},children:["· ",C.resultCount," candidates"]})]})]},C.id)})})]})]}
4007),l?.topKeywords&&l.topKeywords.length>=5&&o.jsxs("div",{"data-loc":"client/src/pages/AdminMostAsked.tsx:369",style:{background:`${xe.teal}08`,border:`1px solid ${xe.tealDim}`,padding:"20px 24px",marginTop:"24px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:375",style:{color:xe.teal,fontSize:"10px",fontFamily:"monospace",letterSpacing:"0.1em",margin:"0 0 10px 0"},children:"EDITORIAL SIGNAL"}),o.jsxs("p",{"data-loc":"client/src/pages/AdminMostAsked.tsx:378",style:{color:xe.text,fontSize:"14px",lineHeight:1.6,margin:0},children:["In the last ",i," days, subscribers have been most interested in"," ",o.jsx("strong",{"data-loc":"client/src/pages/AdminMostAsked.tsx:380",style:{color:"#ffffff"},children:l.topKeywords[0].keyword}),l.topKeywords.length>=2&&o.jsxs(o.Fragment,{children:[", ",o.jsx("strong",{"data-loc":"client/src/pages/AdminMostAsked.tsx:382",style:{color:"#ffffff"},children:l.topKeywords[1].keyword})]}),l.topKeywords.length>=3&&o.jsxs(o.Fragment,{children:[", and ",o.jsx("strong",{"data-loc":"client/src/pages/AdminMostAsked.tsx:385",style:{color:"#ffffff"},children:l.topKeywords[2].keyword})]}),". Consider prioritizing coverage of these topics in upcoming dispatches."]})]})]})]})})}const ye={bg:"#0a0a0a",bgCard:"#111111",border:"#2a2a2a",teal:"#5eead4",text:"#e8e8e8",textMid:"#a0a0a0",textLight:"#555555",warn:"#fbbf24"};function Yh(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,200)}function tv(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function EE(){const{user:e,loading:n}=ua(),[i,r]=j.useState(!1),[l,d]=j.useState(null),[u,h]=j.useState(null),m=async()=>{r(!0),d(null),h(null);try{const F=await fetch("/api/admin/ingest-news",{method:"POST"}),D=await F.json();F.ok?d(D):h(D.error||`HTTP ${F.status}`)}catch(F){h(F.message||"Network error")}finally{r(!1)}},[p,b]=j.useState(""),[y,v]=j.useState(""),[x,S]=j.useState(!1),[E,O]=j.useState(null),[C,_]=j.useState(null),[q,Y]=j.useState(!1),[G,P]=j.useState(null),[M,W]=j.useState(null),N=async()=>{if(p.trim()){S(!0),O(null),_(null),P(null),W(null);try{const F=await fetch("/api/admin/fetch-url",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:p.trim()})}),D=await F.json();if(!F.ok){O(D.error||`HTTP ${F.status}`);return}_({title:D.title||"",slug:Yh(D.title||""),body:D.body||"",date:tv(),wordCount:D.wordCount||0,source:"url"}),v(D.body||"")}catch(F){O(F.message||"Network error")}finally{S(!1)}}},L=()=>
4007{if(!y.trim())return;_(null),P(null),W(null);const F=y.trim().split(`
4008`),D=F[0].trim(),B=F.length>1?F.slice(1).join(`
4009`).trim():F[0].trim(),ce=B.split(/\s+/).filter(Boolean).length;_({title:D,slug:Yh(D),body:B,date:tv(),wordCount:ce,source:"paste"})},J=async()=>{if(C){Y(!0),W(null),P(null);try{const F=await fetch("/api/admin/ingest-dispatch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:C.title,slug:C.slug,body:C.body,date:C.date})}),D=await F.json();F.ok?(P(D),D.skipped||(b(""),v(""),_(null))):W(D.error||`HTTP ${F.status}`)}catch(F){W(F.message||"Network error")}finally{Y(!1)}}},z=F=>{C&&_({...C,title:F,slug:Yh(F)})},$={width:"100%",padding:"10px 14px",background:ye.bg,border:`1px solid ${ye.border}`,color:ye.text,fontFamily:"Georgia, serif",fontSize:"14px",outline:"none",boxSizing:"border-box"},Q={display:"block",color:ye.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",marginBottom:"6px",textTransform:"uppercase"},X=(F,D=ye.teal)=>({background:F?D:ye.border,color:F?"#0a0a0a":ye.textLight,fontFamily:"monospace",fontSize:"12px",fontWeight:600,letterSpacing:"0.1em",border:"none",padding:"12px 24px",cursor:F?"pointer":"not-allowed",opacity:F?1:.5});return o.jsx(xr,{"data-loc":"client/src/pages/AdminIngest.tsx:251",loading:n,user:e,children:o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:252",style:{background:ye.bg,minHeight:"100vh",color:ye.text,fontFamily:"Georgia, serif"},children:[o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:254",style:{borderBottom:`1px solid ${ye.border}`,padding:"20px 0"},children:o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:255",style:{maxWidth:"720px",margin:"0 auto",padding:"0 24px"},children:o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:256",style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"8px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:257",children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:258",style:{color:ye.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.15em",marginBottom:"4px"},children:"AKOROKO ADMIN"}),o.jsx("h1",{"data-loc":"client/src/pages/AdminIngest.tsx:261",style:{fontSize:"22px",fontWeight:400,margin:0},children:"Ingest Dispatch"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:263",style:{display:"flex",gap:"12px",flexWrap:"wrap"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminIngest.tsx:264",href:"/admin/dispatches",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",letterSpacing:"0.08em"},children:"DISPATCHES"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminIngest.tsx:270",href:"/admin/webhook-log",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",letterSpacing:"0.08em"},children:"WEBHOOK LOG"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminIngest.tsx:276",href:"/admin/ingest/advanced",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",letterSpacing:"0.08em"},children:"ADVANCED FORM"})]})]})})}),o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:288",style:{maxWidth:"720px",margin:"0 auto",padding:"32px 24px 0"},children:o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:289",style:{padding:"20px",border:`1px solid ${ye.border}`,background:ye.bgCard,marginBottom:"32px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:290",style:{color:ye.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.15em",marginBottom:"8px"},children:"NEWS TRACKER"}),o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:293",style:{color:ye.textMid,fontSize:"13px",marginBottom:"16px",lineHeight:1.5},children:"Fetch all flagged articles from the news tracker, embed them, and reload the live search cache — all in one click."}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngest.tsx:296",onClick:m,disabled:i,style:X(!i),children:i?"INGESTING...":"INGEST FLAGGED NEWS"}),u&&o.jsxs("p",{"data-loc":"client/src/pages/AdminIngest.tsx:305",style:{color:"#ff6b6b",fontFamily:"monospace",fontSize:"11px",marginTop:"12px"},children:["Error: ",u]}),l&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:311",style:{marginTop:"16px",paddingTop:"16px",borderTop:`1px solid ${ye.border}`},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:312",style:{display:"grid",gap:"6px",marginBottom:"12px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:313",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:314",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"INGESTED: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:315",style:{color:ye.teal,fontSize:"14px",fontWeight:600},children:l.ingested}),l.updated>0&&o.jsxs("span",{"data-loc":"client/src/pages/AdminIngest.tsx:317",style:{color:ye.textMid,fontSize:"13px"},children:["  ·  updated: ",l.updated]}),l.failed>0&&o.jsxs("span",{"data-loc":"client/src/pages/AdminIngest.tsx:320",style:{color:"#ff6b6b",fontSize:"13px"},children:["  ·  failed: ",l.failed]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:323",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:324",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"LIVE CACHE: "}),o.jsxs("span",{"data-loc":"client/src/pages/AdminIngest.tsx:325",style:{color:ye.teal,fontSize:"13px"}
4009,children:[l.cacheSize?.toLocaleString()??"—"," rows"]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:327",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:328",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"TOTAL ARCHIVE: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:329",style:{color:ye.text,fontSize:"13px"},children:l.total.toLocaleString()})]})]}),(l.ingestedTitles??[]).length>0&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:333",style:{marginBottom:"8px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:334",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px",marginBottom:"4px"},children:"NEW ARTICLES:"}),(l.ingestedTitles??[]).map((F,D)=>o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:336",style:{color:ye.text,fontSize:"12px",paddingLeft:"8px",borderLeft:`2px solid ${ye.teal}`,marginBottom:"4px"},children:F},D))]}),(l.failedItems??[]).length>0&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:343",children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:344",style:{color:"#ff6b6b",fontFamily:"monospace",fontSize:"10px",marginBottom:"4px"},children:"FAILED:"}),(l.failedItems??[]).map((F,D)=>o.jsxs("p",{"data-loc":"client/src/pages/AdminIngest.tsx:346",style:{color:"#ff6b6b",fontSize:"12px",paddingLeft:"8px"},children:[F.title,": ",F.reason]},D))]}),o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:352",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px",marginTop:"8px"},children:l.message})]})]})}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:361",style:{maxWidth:"720px",margin:"0 auto",padding:"0 24px 32px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:363",style:{marginBottom:"24px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngest.tsx:364",style:Q,children:"Source URL (optional)"}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:365",style:{display:"flex",gap:"8px"},children:[o.jsx("input",{"data-loc":"client/src/pages/AdminIngest.tsx:366",type:"url",value:p,onChange:F=>b(F.target.value),placeholder:"https://example.com/article-to-ingest",style:{...$,flex:1}}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngest.tsx:373",onClick:N,disabled:x||!p.trim(),style:X(!x&&!!p.trim()),children:x?"FETCHING...":"FETCH"})]}),o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:381",style:{color:ye.textLight,fontFamily:"monospace",fontSize:"10px",marginTop:"4px"},children:"Paste a URL and click Fetch to auto-extract title and body text."}),E&&o.jsxs("p",{"data-loc":"client/src/pages/AdminIngest.tsx:385",style:{color:"#ff6b6b",fontFamily:"monospace",fontSize:"11px",marginTop:"6px"},children:["Fetch error: ",E]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:392",style:{display:"flex",alignItems:"center",gap:"12px",marginBottom:"24px"},children:[o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:393",style:{flex:1,height:"1px",background:ye.border}}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:394",style:{color:ye.textLight,fontFamily:"monospace",fontSize:"10px",letterSpacing:"0.15em"},children:"OR PASTE DIRECTLY"}),o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:397",style:{flex:1,height:"1px",background:ye.border}})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:401",style:{marginBottom:"24px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngest.tsx:402",style:Q,children:"Paste Text *"}),o.jsx("textarea",{"data-loc":"client/src/pages/AdminIngest.tsx:403",value:y,onChange:F=>v(F.target.value),placeholder:`First line becomes the title
4010
4011Paste the full article text below the title...`,rows:18,style:{...$,resize:"vertical",lineHeight:1.6}}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:410",style:{display:"flex",justifyContent:"space-between",marginTop:"4px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:411",style:{color:ye.textLight,fontFamily:"monospace",fontSize:"10px"},children:"First line = title. Everything after = body. Date = today."}),o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:414",style:{color:ye.textLight,fontFamily:"monospace",fontSize:"10px"}
4011,children:y.trim()?`${y.trim().split(/\s+/).filter(Boolean).length} words`:""})]})]}),!C&&o.jsx("button",{"data-loc":"client/src/pages/AdminIngest.tsx:422",onClick:L,disabled:!y.trim()||y.trim().length<20,style:X(!!y.trim()&&y.trim().length>=20),children:"PREVIEW BEFORE INGESTING"}),C&&!G&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:433",style:{marginTop:"8px",padding:"20px",border:`1px solid ${ye.warn}`,background:"#1a1a0a"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:441",style:{color:ye.warn,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",marginBottom:"16px"},children:"PREVIEW — CONFIRM BEFORE INGESTING"}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:446",style:{marginBottom:"12px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngest.tsx:447",style:{...Q,fontSize:"10px"},children:"Title (editable)"}),o.jsx("input",{"data-loc":"client/src/pages/AdminIngest.tsx:448",type:"text",value:C.title,onChange:F=>z(F.target.value),style:$})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:457",style:{display:"grid",gap:"8px",marginBottom:"16px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:458",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:459",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"SLUG: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:460",style:{color:ye.text,fontSize:"13px",fontFamily:"monospace"},children:C.slug})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:462",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:463",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"DATE: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:464",style:{color:ye.text,fontSize:"13px"},children:C.date})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:466",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:467",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"WORD COUNT: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:468",style:{color:ye.text,fontSize:"13px"},children:C.wordCount.toLocaleString()})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:470",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:471",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"SOURCE: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:472",style:{color:ye.text,fontSize:"13px"},children:C.source==="url"?`Fetched from ${p}`:"Pasted text"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:477",style:{marginBottom:"16px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngest.tsx:478",style:{...Q,fontSize:"10px"},children:"Body preview (first 300 chars)"}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:479",style:{padding:"10px",background:ye.bg,border:`1px solid ${ye.border}`,color:ye.textMid,fontSize:"12px",lineHeight:1.5,maxHeight:"120px",overflow:"hidden",fontFamily:"Georgia, serif"},children:[C.body.slice(0,300),C.body.length>300?"...":""]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:497",style:{display:"flex",gap:"12px"},children:[o.jsx("button",{"data-loc":"client/src/pages/AdminIngest.tsx:498",onClick:J,disabled:q||!C.title.trim()||C.body.length<20,style:X(!q&&!!C.title.trim()&&C.body.length>=20),children:q?"INGESTING...":"CONFIRM & INGEST"}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngest.tsx:505",onClick:()=>_(null),style:{background:"transparent",color:ye.textMid,fontFamily:"monospace",fontSize:"12px",border:`1px solid ${ye.border}`,padding:"12px 24px",cursor:"pointer"},children:"CANCEL"})]})]}),G&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:525",style:{marginTop:"24px",padding:"20px",border:`1px solid ${G.skipped?ye.warn:ye.teal}`,background:G.skipped?"#1a1a0a":"#0a1a1a"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngest.tsx:533",style:{color:G.skipped?ye.warn:ye.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",marginBottom:"12px"},children:G.skipped?"DISPATCH SKIPPED — DUPLICATE SLUG":"DISPATCH INGESTED SUCCESSFULLY"}),o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:536",style:{display:"grid",gap:"8px"},children:G.skipped?o.jsxs(o.Fragment,{children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:539",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:540",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"EXISTING ID: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:541",style:{color:ye.text,fontSize:"14px"},children:G.existingDispatchId})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:543",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:544",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"MESSAGE: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:545",style:{color:ye.text,fontSize:"13px"},children:G.message})]})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:550",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:551",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"ID: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:552",style:{color:ye.text,fontSize:"14px"},children:G.id||G.dispatchId})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:554",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:555",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"TITLE: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:556",style:{color:ye.text,fontSize:"14px"},children:G.title})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:558",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:559",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"SLUG: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:560",style:{color:ye.text,fontSize:"14px"},children:G.slug})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngest.tsx:562",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:563",style:{color:ye.textMid,fontFamily:"monospace",fontSize:"10px"},children:"EMBEDDED: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngest.tsx:564",style:{color:G.embeddingGenerated?ye.teal:"#ff6b6b",fontSize:"14px"},children:G.embeddingGenerated?"Yes":"No (will embed on next server restart)"})]}),o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:568",style:{marginTop:"8px",paddingTop:"8px",borderTop:`1px solid ${ye.border}`},children:o.jsxs("span",{"data-loc":"client/src/pages/AdminIngest.tsx:569",style:{color:ye.teal,fontFamily:"monospace",fontSize:"13px",fontWeight:600},children:["Total Archive: ",(G.totalDispatches||G.totalCount||0).toLocaleStr
4011ing()," dispatches"]})})]})}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngest.tsx:578",onClick:()=>{P(null),_(null),W(null)},style:{marginTop:"16px",background:"transparent",color:ye.teal,fontFamily:"monospace",fontSize:"11px",border:`1px solid ${ye.teal}`,padding:"10px 20px",cursor:"pointer",letterSpacing:"0.08em"},children:"INGEST ANOTHER"})]}),M&&o.jsx("div",{"data-loc":"client/src/pages/AdminIngest.tsx:603",style:{marginTop:"24px",padding:"16px",border:"1px solid #ff6b6b",background:"#1a0a0a"},children:o.jsxs("p",{"data-loc":"client/src/pages/AdminIngest.tsx:611",style:{color:"#ff6b6b",fontFamily:"monospace",fontSize:"12px"},children:["Error: ",M]})})]})]})})}const Re={bg:"#0a0a0a",border:"#2a2a2a",teal:"#5eead4",text:"#e8e8e8",textMid:"#a0a0a0",textLight:"#555555"};function IE(){const{user:e,loading:n}=ua(),[i,r]=j.useState(""),[l,d]=j.useState(""),[u,h]=j.useState(""),[m,p]=j.useState(""),[b,y]=j.useState(!1),[v,x]=j.useState(null),[S,E]=j.useState(null),[O,C]=j.useState(!1),[_,q]=j.useState(null),[Y,G]=j.useState(!1),[P,M]=j.useState(null),[W,N]=j.useState(!1),[L,J]=j.useState(null),[z,$]=j.useState(null);async function Q(){G(!0),M(null);try{const U=await fetch("/api/admin/restart-server",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),k=await U.json();M(U.ok?`OK — ${k.message||JSON.stringify(k)}`:`ERROR ${U.status}: ${k.error||JSON.stringify(k)}`)}catch(U){M(`FETCH ERROR: ${U.message}`)}finally{setTimeout(()=>G(!1),12e3)}}async function X(){C(!0),q(null);try{const U=await fetch("/api/admin/reload-vector-cache",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),k=await U.json();q(U.ok?`OK — ${k.message||JSON.stringify(k)}`:`ERROR ${U.status}: ${k.error||JSON.stringify(k)}`)}catch(U){q(`FETCH ERROR: ${U.message}`)}finally{C(!1)}}async function F(){N(!0),J(null),$(null);try{const U=await fetch("/api/admin/ingest-news",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),k=await U.json();U.ok?J(k):$(`ERROR ${U.status}: ${k.error||JSON.stringify(k)}`)}catch(U){$(`FETCH ERROR: ${U.message}`)}finally{N(!1)}}const D=U=>{r(U),(!l||l===B(i))&&d(B(U))};function B(U){return U.toLowerCase().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,200)}const ce=async U=>{U.preventDefault(),E(null),x(null),y(!0);try{const k=await fetch("/api/admin/ingest-dispatch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:i.trim(),slug:l.trim(),body:u.trim(),date:m.trim()||void 0})}),V=await k.json();k.ok?(x(V),V.skipped||(r(""),d(""),h(""),p(""))):E(V.error||`HTTP ${k.status}`)}catch(k){E(k.message||"Network error")}finally{y(!1)}},I={width:"100%",padding:"10px 14px",background:Re.bg,border:`1px solid ${Re.border}`,color:Re.text,fontFamily:"Georgia, serif",fontSize:"14px",outline:"none",boxSizing:"border-box"},A={display:"block",color:Re.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",marginBottom:"6px",textTransform:"uppercase"};return o.jsx(xr,{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:199",loading:n,user:e,children:o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:200",style:{background:Re.bg,minHeight:"100vh",color:Re.text,fontFamily:"Georgia, serif"},children:[o.jsx("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:202",style:{borderBottom:`1px solid ${Re.border}`,padding:"20px 0"},children:o.jsx("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:203",style:{maxWidth:"720px",margin:"0 auto",padding:"0 24px"},children:o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:204",style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"8px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:205",children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:206",style:{color:Re.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.15em",marginBottom:"4px"},children:"AKOROKO ADMIN"}),o.jsx("h1",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:209",style:{fontSize:"22px",fontWeight:400,margin:0},children:"Ingest Dispatch (Advanced)"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:211",style:{display:"flex",gap:"12px",flexWrap:"wrap"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:212",href:"/admin/ingest",style:{color:Re.teal,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",letterSpacing:"0.08em"},children:"← SIMPLE FORM"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:218",href:"/admin/dispatches",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",letterSpacing:"0.08em"},children:"DISPATCHES"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:224",href:"/admin/webhook-log",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"11px",textDecoration:"none",letterSpacing:"0.08em"},children:"WEBHOOK LOG"})]})]})})}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:236",style:{maxWidth:"720px",margin:"0 auto",padding:"32px 24px"},children:[o.jsxs("form",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:237",onSubmit:ce,children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:239",style:{marginBottom:"20px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:240",style:A,children:"Title *"}),o.jsx("input",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:241",type:"text",value:i,onChange:U=>D(U.target.value),placeholder:"e.g., Canal+ FY2025 Earnings: Post-MultiChoice Africa Plan",required:!0,style:I})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:252",style:{marginBottom:"20px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:253",style:A,children:"Slug *"}),o.jsx("input",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:254",type:"text",value:l,onCh
4011ange:U=>d(U.target.value),placeholder:"auto-generated-from-title",required:!0,style:I}),o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:262",style:{color:Re.textLight,fontFamily:"monospace",fontSize:"10px",marginTop:"4px"},children:"Auto-generated from title. Edit if needed."})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:268",style:{marginBottom:"20px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:269",style:A,children:"Approximate Date"}),o.jsx("input",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:270",type:"text",value:m,onChange:U=>p(U.target.value),placeholder:"e.g., 2026-04 or 2026-04-02",style:I}),o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:277",style:{color:Re.textLight,fontFamily:"monospace",fontSize:"10px",marginTop:"4px"},children:"Format: YYYY-MM or YYYY-MM-DD. Leave blank for today."})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:283",style:{marginBottom:"24px"},children:[o.jsx("label",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:284",style:A,children:"Body *"}),o.jsx("textarea",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:285",value:u,onChange:U=>h(U.target.value),placeholder:"Paste the full dispatch text here (minimum 20 characters)...",required:!0,rows:16,style:{...I,resize:"vertical",lineHeight:1.6}})]}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:296",type:"submit",disabled:b||!i.trim()||!l.trim()||u.trim().length<20,style:{background:b?Re.border:Re.teal,color:"#0a0a0a",fontFamily:"monospace",fontSize:"12px",fontWeight:600,letterSpacing:"0.1em",border:"none",padding:"14px 32px",cursor:b?"not-allowed":"pointer",opacity:b?.6:1},children:b?"INGESTING...":"INGEST DISPATCH"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:317",style:{marginTop:"32px",paddingTop:"24px",borderTop:`1px solid ${Re.border}`},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:318",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"10px",letterSpacing:"0.12em",marginBottom:"12px"},children:"VECTOR CACHE"}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:319",type:"button",onClick:X,disabled:O,style:{background:O?Re.border:"#1a3a3a",color:Re.teal,fontFamily:"monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.1em",border:`1px solid ${Re.teal}`,padding:"10px 24px",cursor:O?"not-allowed":"pointer",opacity:O?.6:1},children:O?"RELOADING...":"RELOAD VECTOR CACHE"}),_&&o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:339",style:{marginTop:"10px",color:_.startsWith("OK")?Re.teal:"#f87171",fontFamily:"monospace",fontSize:"11px",wordBreak:"break-all"},children:_}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:345",style:{marginTop:"20px"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:346",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"10px",letterSpacing:"0.12em",marginBottom:"8px"},children:"NEWS TRACKER"}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:349",type:"button",onClick:F,disabled:W,style:{background:W?Re.border:"#1a2a1a",color:"#4ade80",fontFamily:"monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.1em",border:"1px solid #2a4a2a",padding:"10px 24px",cursor:W?"not-allowed":"pointer",opacity:W?.6:1},children:W?"INGESTING... (may take ~30s)":"INGEST FROM NEWS TRACKER"}),L&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:369",style:{marginTop:"10px",fontFamily:"monospace",fontSize:"11px",lineHeight:1.8},children:[o.jsxs("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:370",style:{color:"#4ade80"},children:["✓ ",L.ingested," new · ",L.updated," updated · ",L.failed," failed"]}),o.jsx("br",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:373"}),o.jsxs("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:374",style:{color:Re.textMid},children:["Archive total: ",L.total.toLocaleString()," dispatches"]}),L.ingestedTitles.length>0&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:378",style:{marginTop:"8px"},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:379",style:{color:"#4ade80",fontSize:"10px",letterSpacing:"0.1em"},children:"NEW:"}),L.ingestedTitles.map((U,k)=>o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:381",style:{color:Re.text,fontSize:"11px",paddingLeft:"8px",marginTop:"2px"},children:["+ ",U]},k))]}),L.updatedTitles.length>0&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:386",style:{marginTop:"8px"},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:387",style:{color:Re.teal,fontSize:"10px",letterSpacing:"0.1em"},children:"UPDATED:"}),L.updatedTitles.map((U,k)=>o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:389",style:{color:Re.text,fontSize:"11px",paddingLeft:"8px",marginTop:"2px"},children:["↻ ",U]},k))]}),L.failedItems.length>0&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:394",style:{marginTop:"8px"},children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:395",style:{color:"#f87171",fontSize:"10px",letterSpacing:"0.1em"},children:"FAILED:"}),L.failedItems.map((U,k)=>o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:397",style:{color:"#f87171",fontSize:"11px",paddingLeft:"8px",marginTop:"2px"},children:["✗ ",U.title," — ",U.reason]},k))]})]}),z&&o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:404",style:{marginTop:"10px",color:"#f87171",fontFamily:"monospace",fontSize:"11px",wordBreak:"break-all"},children:z})]}),o.jsx("button",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:410",type:"button",onClick:Q,disabled:Y,style:{marginTop:"12px",background:Y?Re.border:"#3a1a1a",color:"#f87171",fontFamily:"monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.1em",border:"1px solid #5a2a2a",borderRadius:"4px",padding:"8px 16px",cursor:Y?"not-allowed":"pointer",display:"block"},children:Y?"RESTARTING... (~10s)":"RESTART SERVER"}),P&&o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:432",style:{marginTop:"10px",color:P.startsWith("OK")?Re.teal:"#f87171",fontFamily:"monospace",fontSize:"11px",wordBreak:"break-all"},children:P})]}),v&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:440",style:{marginTop:"24px",padding:"20px",border:`1px solid ${v.skipped?"#fbbf24":Re.teal}
4011`,background:v.skipped?"#1a1a0a":"#0a1a1a"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:448",style:{color:v.skipped?"#fbbf24":Re.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",marginBottom:"12px"},children:v.skipped?"DISPATCH SKIPPED — DUPLICATE SLUG":"DISPATCH INGESTED SUCCESSFULLY"}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:451",style:{display:"grid",gap:"8px"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:452",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:453",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"10px"},children:"ID: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:454",style:{color:Re.text,fontSize:"14px"},children:v.id||v.dispatchId||v.existingDispatchId})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:456",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:457",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"10px"},children:"TITLE: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:458",style:{color:Re.text,fontSize:"14px"},children:v.title})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:460",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:461",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"10px"},children:"SLUG: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:462",style:{color:Re.text,fontSize:"14px"},children:v.slug})]}),!v.skipped&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:465",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:466",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"10px"},children:"EMBEDDED: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:467",style:{color:v.embeddingGenerated||v.embedded?Re.teal:"#ff6b6b",fontSize:"14px"},children:v.embeddingGenerated||v.embedded?"Yes":"No (will embed on next server restart)"})]}),v.message&&o.jsxs("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:473",children:[o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:474",style:{color:Re.textMid,fontFamily:"monospace",fontSize:"10px"},children:"MESSAGE: "}),o.jsx("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:475",style:{color:Re.text,fontSize:"13px"},children:v.message})]}),!v.skipped&&o.jsx("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:479",style:{marginTop:"8px",paddingTop:"8px",borderTop:`1px solid ${Re.border}`},children:o.jsxs("span",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:480",style:{color:Re.teal,fontFamily:"monospace",fontSize:"13px",fontWeight:600},children:["Total Archive: ",(v.totalDispatches||v.totalCount||0).toLocaleString()," dispatches"]})})]})]}),S&&o.jsx("div",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:491",style:{marginTop:"24px",padding:"16px",border:"1px solid #ff6b6b",background:"#1a0a0a"},children:o.jsxs("p",{"data-loc":"client/src/pages/AdminIngestAdvanced.tsx:499",style:{color:"#ff6b6b",fontFamily:"monospace",fontSize:"12px"},children:["Error: ",S]})})]})]})})}const tt={bg:"#0a0a0a",border:"#2a2a2a",teal:"#5eead4",text:"#e8e8e8",textMid:"#a0a0a0",textLight:"#555555",success:"#22c55e",failure:"#ef4444"};function NE(){const{user:e,loading:n}=ua(),{data:i,isLoading:r}=Qe.webhookLog.list.useQuery(void 0,{enabled:!!e&&e.role==="admin"});return o.jsx(xr,{"data-loc":"client/src/pages/AdminWebhookLog.tsx:30",loading:n||r,user:e,children:o.jsxs("div",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:31",style:{background:tt.bg,minHeight:"100vh",color:tt.text,fontFamily:"Georgia, serif"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:34",style:{borderBottom:`1px solid ${tt.border}`,padding:"12px 24px",display:"flex",alignItems:"center",justifyContent:"space-between",position:"sticky",top:0,background:tt.bg,zIndex:10},children:[o.jsxs("div",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:35",style:{display:"flex",alignItems:"center",gap:"20px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminWebhookLog.tsx:36",href:"/",style:{color:tt.teal,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.12em",textDecoration:"none"},children:"AKOROKO"}),o.jsx("span",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:37",style:{color:tt.textLight,fontSize:"11px",fontFamily:"monospace",letterSpacing:"0.1em"},children:"/ WEBHOOK LOG"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:39",style:{display:"flex",gap:"8px"},children:[o.jsx(pe,{"data-loc":"client/src/pages/AdminWebhookLog.tsx:40",href:"/admin/dispatches",style:{color:tt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${tt.border}`},children:"DISPATCHES"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminWebhookLog.tsx:43",href:"/admin/subscribers",style:{color:tt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${tt.border}`},children:"SUBSCRIBERS"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminWebhookLog.tsx:46",href:"/admin/most-asked",style:{color:tt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${tt.border}`},children:"MOST ASKED"}),o.jsx(pe,{"data-loc":"client/src/pages/AdminWebhookLog.tsx:49",href:"/admin/ingest",style:{color:tt.textMid,fontFamily:"monospace",fontSize:"11px",letterSpacing:"0.08em",textDecoration:"none",padding:"6px 14px",border:`1px solid ${tt.border}`},children:"INGEST DISPATCH"})]})]}),o.jsxs("div",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:55",style:{maxWidth:"1100px",margin:"0 auto",padding:"40px 24px"},children:[o.jsx("h1",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:56",style:{fontSize:"24px",fontWeight:400,color:"#ffffff",marginBottom:"8px"},children:"Webhook Log"}),o.jsxs("p",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:57",style:{color:tt.textMid,fontSize:"14px",marginBottom:"32px"},children:[i?.length??0," events recorded · Ingestion audit trail (Mailchimp + manual)"]}),!i||i.length===0?o.jsxs("div",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:62",style:{textAlign:"center",padding:"60px 0"},children:[o.jsx("p",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:63",style:{color:tt.textMid,fontFamily:"monospace",fontSize:"13px"},children:"No webhook events recorded yet."}),o.jsx("p",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:64",style:{color:tt.textLight,fontFamily:"monospace",fontSize:"12px",marginTop:"8px"},children:"Events will appear here when Mailchimp sends campaign notifications."})]}):o.jsx("div",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:69",style:{overflowX:"auto"},children:o.jsxs("table",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:70",style:{width:"100%",borderCollapse:"collapse",fontFamily:"monospace",fontSize:"12px"},children:[o.jsx("thead",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:71",children:o.jsxs("tr",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:72",style:{borderBottom:`2px solid ${tt.border}`},children:[o.jsx("th",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:73",style:{textAlign:"left",padding:"10px 12px",color:tt.textMid,letterSpacing:"0.08em",fontSize:"10px",fontWeight:600},children:"TIMESTAMP"}),o.jsx("th",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:74",style:{textAlign:"left",padding:"10px 12px",color:tt.textMid,letterSpacing:"0.08em",fontSize:"10px",fontWeight:600},children:"SOURCE"}),o.jsx("th",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:75",style:{textAlign:"left",padding:"10px 12px",color:tt.textMid,letterSpacing:"0.08em",fontSize:"10px",fontWeight:600},children:"CAMPAIGN ID"}),o.jsx("th",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:76",style:{textAlign:"left",padding:"10px 12px",color:tt.textMid,letterSpacing:"0.08em",fontSize:"10px",fontWeight:600},children:"STATUS"}),o.jsx("th",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:77",style:{textAlign:"left",padding:"10px 12px",color:tt.textMid,letterSpacing:"0.08em",fontSize:"10px",fontWeight:600},children:"DISPATCH ID"}),o.jsx("th",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:78",style:{textAlign:"left",padding:"10px 12px",color:tt.textMid,letterSpacing:"0.08em",fontSize:"10px",fontWeight:600},children:"ERROR"})]})}),o.jsx("tbody",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:81",children:i.map(l=>o.jsxs("tr",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:83",style:{borderBottom:`1px solid ${tt.border}`},children:[o.jsx("td",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:84",style:{padding:"10px 12px",color:tt.textMid,whiteSpace:"nowrap"}
4011,children:new Date(l.createdAt).toLocaleString("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}),o.jsx("td",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:90",style:{padding:"10px 12px"},children:o.jsx("span",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:91",style:{display:"inline-block",padding:"2px 8px",fontSize:"10px",letterSpacing:"0.08em",fontWeight:600,background:l.source==="manual"?"#1a1a2a":"#1a2a1a",color:l.source==="manual"?"#818cf8":"#86efac",border:`1px solid ${l.source==="manual"?"#2a2a4a":"#2a4a2a"}`},children:(l.source??"mailchimp").toUpperCase()})}),o.jsx("td",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:104",style:{padding:"10px 12px",color:tt.text},children:l.campaignId??"—"}),o.jsx("td",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:107",style:{padding:"10px 12px"},children:o.jsx("span",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:108",style:{display:"inline-block",padding:"2px 8px",fontSize:"10px",letterSpacing:"0.08em",fontWeight:600,background:l.status==="success"?"#0a2a1a":"#2a0a0a",color:l.status==="success"?tt.success:tt.failure,border:`1px solid ${l.status==="success"?"#1a4a2a":"#4a1a1a"}`},children:l.status.toUpperCase()})}),o.jsx("td",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:121",style:{padding:"10px 12px",color:l.dispatchId?tt.teal:tt.textLight},children:l.dispatchId??"—"}),o.jsx("td",{"data-loc":"client/src/pages/AdminWebhookLog.tsx:124",style:{padding:"10px 12px",color:tt.failure,maxWidth:"300px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l.errorMessage??"—"})]},l.id))})]})})]})]})})}function ME(){const[e,n]=j.useState(null),[i,r]=j.useState("idle"),[l,d]=j.useState(""),[u,h]=j.useState(""),m=Qe.unsubscribe.process.useMutation();j.useEffect(()=>{const y=new URLSearchParams(window.location.search).get("token");n(y),y&&(r("processing"),m.mutateAsync({token:y}).then(v=>{d(v.email),r("success")}).catch(v=>{h(v instanceof Error?v.message:"Something went wrong"),r("error")}))},[]);const p={bg:"#F5F5F5",ink:"#1a1a19",inkMid:"#555555",teal:"#0A5C6B"};return o.jsxs("div",{"data-loc":"client/src/pages/Unsubscribe.tsx:47",style:{background:p.bg,minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"40px 24px"},children:[o.jsx("div",{"data-loc":"client/src/pages/Unsubscribe.tsx:50",style:{marginBottom:"48px"},children:o.jsx(pe,{"data-loc":"client/src/pages/Unsubscribe.tsx:51",href:"/",children:o.jsx("img",{"data-loc":"client/src/pages/Unsubscribe.tsx:52",src:"https://d2xsxph8kpxj0f.cloudfront.net/106775066/mmYv4XN4T7V9eipMNWE78x/akoroko-logo-sharp_ed9d29ec.png",alt:"Akoroko",style:{height:"48px",width:"auto"}})})}),o.jsxs("div",{"data-loc":"client/src/pages/Unsubscribe.tsx:60",style:{maxWidth:"480px",width:"100%",textAlign:"center"},children:[!e&&o.jsxs(o.Fragment,{children:[o.jsx("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:64",style:{color:p.teal,fontSize:"11px",letterSpacing:"0.15em",fontFamily:"monospace",marginBottom:"16px"},children:"UNSUBSCRIBE"}),o.jsx("h1",{"data-loc":"client/src/pages/Unsubscribe.tsx:65",style:{fontSize:"24px",fontWeight:400,color:p.ink,marginBottom:"16px",fontFamily:"Georgia, serif"},children:"Invalid link"}),o.jsx("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:66",style:{color:p.inkMid,fontSize:"15px",lineHeight:1.6,fontFamily:"Georgia, serif",marginBottom:"32px"},children:"This unsubscribe link is missing a token. If you received an email from Akoroko and want to unsubscribe, please use the link in that email."})]}),i==="processing"&&o.jsxs(o.Fragment,{children:[o.jsx("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:74",style:{color:p.teal,fontSize:"11px",letterSpacing:"0.15em",fontFamily:"monospace",marginBottom:"16px"},children:"PROCESSING"}),o.jsx("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:75",style:{color:p.inkMid,fontSize:"15px",fontFamily:"Georgia, serif"},children:"Unsubscribing…"})]}),i==="success"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{"data-loc":"client/src/pages/Unsubscribe.tsx:81",style:{width:"48px",height:"48px",borderRadius:"50%",background:"#e8f5f0",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 24px"},children:o.jsx("span",{"data-loc":"client/src/pages/Unsubscribe.tsx:82",style:{color:p.teal,fontSize:"24px"},children:"✓"})}),o.jsx("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:84",style:{color:p.teal,fontSize:"11px",letterSpacing:"0.15em",fontFamily:"monospace",marginBottom:"16
4011px"},children:"UNSUBSCRIBED"}),o.jsx("h1",{"data-loc":"client/src/pages/Unsubscribe.tsx:85",style:{fontSize:"24px",fontWeight:400,color:p.ink,marginBottom:"16px",fontFamily:"Georgia, serif"},children:"You have been unsubscribed"}),o.jsxs("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:86",style:{color:p.inkMid,fontSize:"15px",lineHeight:1.6,fontFamily:"Georgia, serif",marginBottom:"32px"},children:[l?`${l} has been`:"You have been"," removed from the Akoroko newsletter. You will no longer receive dispatches from us."]}),o.jsxs("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:89",style:{color:p.inkMid,fontSize:"14px",lineHeight:1.6,fontFamily:"Georgia, serif",marginBottom:"32px"},children:["Changed your mind? You can re-subscribe at any time from the"," ",o.jsx(pe,{"data-loc":"client/src/pages/Unsubscribe.tsx:91",href:"/subscribe",style:{color:p.teal,textDecoration:"underline",textUnderlineOffset:"3px"},children:"subscribe page"}),"."]})]}),i==="error"&&o.jsxs(o.Fragment,{children:[o.jsx("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:100",style:{color:"#c0392b",fontSize:"11px",letterSpacing:"0.15em",fontFamily:"monospace",marginBottom:"16px"},children:"ERROR"}),o.jsx("h1",{"data-loc":"client/src/pages/Unsubscribe.tsx:101",style:{fontSize:"24px",fontWeight:400,color:p.ink,marginBottom:"16px",fontFamily:"Georgia, serif"},children:"Something went wrong"}),o.jsx("p",{"data-loc":"client/src/pages/Unsubscribe.tsx:102",style:{color:p.inkMid,fontSize:"15px",lineHeight:1.6,fontFamily:"Georgia, serif",marginBottom:"32px"},children:u||"We could not process your unsubscribe request. The link may have already been used or may have expired."})]}),o.jsx(pe,{"data-loc":"client/src/pages/Unsubscribe.tsx:108",href:"/",style:{color:p.teal,fontFamily:"monospace",fontSize:"12px",textDecoration:"none",letterSpacing:"0.08em"},children:"← Return to akoroko.com"})]})]})}function PE(e,n){const i={};return(e[e.length-1]===""?[...e,""]:e).join((i.padRight?" ":"")+","+(i.padLeft===!1?"":" ")).trim()}const OE=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,DE=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,RE={};function nv(e,n){return(RE.jsx?DE:OE).test(e)}const _E=/[ \t\n\f\r]/g;function BE(e){return typeof e=="object"?e.type==="text"?av(e.value):!1:av(e)}function av(e){return e.replace(_E,"")===""}class el{constructor(n,i,r){this.normal=i,this.property=n,r&&(this.space=r)}}el.prototype.normal={};el.prototype.property={};el.prototype.space=void 0;function dA(e,n){const i={},r={};for(const l of e)Object.assign(i,l.property),Object.assign(r,l.normal);return new el(i,r,n)}function Hf(e){return e.toLowerCase()}class jn{constructor(n,i){this.attribute=i,this.property=n}}jn.prototype.attribute="";jn.prototype.booleanish=!1;jn.prototype.boolean=!1;jn.prototype.commaOrSpaceSeparated=!1;jn.prototype.commaSeparated=!1;jn.prototype.defined=!1;jn.prototype.mustUseProperty=!1;jn.prototype.number=!1;jn.prototype.overloadedBoolean=!1;jn.prototype.property="";jn.prototype.spaceSeparated=!1;jn.prototype.space=void 0;let LE=0;const ze=vr(),Bt=vr(),qf=vr(),he=vr(),gt=vr(),xs=vr(),Dn=vr();function vr(){return 2**++LE}const Wf=Object.freeze(Object.defineProperty({__proto__:null,boolean:ze,booleanish:Bt,commaOrSpaceSeparated:Dn,commaSeparated:xs,number:he,overloadedBoolean:qf,spaceSeparated:gt},Symbol.toStringTag,{value:"Module"})),$h=Object.keys(Wf);class km extends jn{constructor(n,i,r,l){let d=-1;if(super(n,i),iv(this,"space",l),typeof r=="number")for(;++d<$h.length;){const u=$h[d];iv(this,$h[d],(r&Wf[u])===Wf[u])}}}km.prototype.defined=!0;function iv(e,n,i){i&&(e[n]=i)}function Es(e){const n={},i={};for(const[r,l]of Object.entries(e.properties)){const d=new km(r,e.transform(e.attributes||{},r),l,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(d.mustUseProperty=!0),n[r]=d,i[Hf(r)]=r,i[Hf(d.attribute)]=r}return new el(n,i,e.space)}const uA=Es({properties:{ariaActiveDescendant:null,ariaAtomic:Bt,ariaAutoComplete:null,ariaBusy:Bt,ariaChecked:Bt,ariaColCount:he,ariaColIndex:he,ariaColSpan:he,ariaControls:gt,ariaCurrent:null,ariaDescribedBy:gt,ariaDetails:null,ariaDisabled:Bt,ariaDropEffect:gt,ariaErrorMessage:null,ariaExpanded:Bt,ariaFlowTo:gt,ariaGrabbed:Bt,ariaHasPopup:null,ariaHidden:Bt,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:gt,ariaLevel:he,ariaLive:null,ariaModal:Bt,ariaMultiLine:Bt,ariaMultiSelectable:Bt,ariaOrientation:null,ariaOwns:gt,ariaPlaceholder:null,ariaPosInSet:he,ariaPressed:Bt,ariaReadOnly:Bt,ariaRelevant:null,ariaRequired:Bt,ariaRoleDescription:gt,ariaRowCount:he,ariaRowIndex:he,ariaRowSpan:he,ariaSelected:Bt,ariaSetSize:he,ariaSort:null,ariaValueMax:he,ariaValueMin:
vendor: 4,812 bytes, line 4011
4011he,ariaValueNow:he,ariaValueText:null,role:null},transform(e,n){return n==="role"?n:"aria-"+n.slice(4).toLowerCase()}});function hA(e,n){return n in e?e[n]:n}function fA(e,n){return hA(e,n.toLowerCase())}const zE=Es({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:xs,acceptCharset:gt,accessKey:gt,action:null,allow:null,allowFullScreen:ze,allowPaymentRequest:ze,allowUserMedia:ze,alt:null,as:null,async:ze,autoCapitalize:null,autoComplete:gt,autoFocus:ze,autoPlay:ze,blocking:gt,capture:null,charSet:null,checked:ze,cite:null,className:gt,cols:he,colSpan:null,content:null,contentEditable:Bt,controls:ze,controlsList:gt,coords:he|xs,crossOrigin:null,data:null,dateTime:null,decoding:null,default:ze,defer:ze,dir:null,dirName:null,disabled:ze,download:qf,draggable:Bt,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:ze,formTarget:null,headers:gt,height:he,hidden:qf,high:he,href:null,hrefLang:null,htmlFor:gt,httpEquiv:gt,id:null,imageSizes:null,imageSrcSet:null,inert:ze,inputMode:null,integrity:null,is:null,isMap:ze,itemId:null,itemProp:gt,itemRef:gt,itemScope:ze,itemType:gt,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:ze,low:he,manifest:null,max:null,maxLength:he,media:null,method:null,min:null,minLength:he,multiple:ze,muted:ze,name:null,nonce:null,noModule:ze,noValidate:ze,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:ze,optimum:he,pattern:null,ping:gt,placeholder:null,playsInline:ze,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:ze,referrerPolicy:null,rel:gt,required:ze,reversed:ze,rows:he,rowSpan:he,sandbox:gt,scope:null,scoped:ze,seamless:ze,selected:ze,shadowRootClonable:ze,shadowRootDelegatesFocus:ze,shadowRootMode:null,shape:null,size:he,sizes:null,slot:null,span:he,spellCheck:Bt,src:null,srcDoc:null,srcLang:null,srcSet:null,start:he,step:null,style:null,tabIndex:he,target:null,title:null,translate:null,type:null,typeMustMatch:ze,useMap:null,value:Bt,width:he,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:gt,axis:null,background:null,bgColor:null,border:he,borderColor:null,bottomMargin:he,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:ze,declare:ze,event:null,face:null,frame:null,frameBorder:null,hSpace:he,leftMargin:he,link:null,longDesc:null,lowSrc:null,marginHeight:he,marginWidth:he,noResize:ze,noHref:ze,noShade:ze,noWrap:ze,object:null,profile:null,prompt:null,rev:null,rightMargin:he,rules:null,scheme:null,scrolling:Bt,standby:null,summary:null,text:null,topMargin:he,valueType:null,version:null,vAlign:null,vLink:null,vSpace:he,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:ze,disableRemotePlayback:ze,prefix:null,property:null,results:he,security:null,unselectable:null},space:"html",transform:fA}),UE=Es({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRen
4011dering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:Dn,accentHeight:he,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:he,amplitude:he,arabicForm:null,ascent:he,attributeName:null,attributeType:null,azimuth:he,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:he,by:null,calcMode:null,capHeight:he,className:gt,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRen
4011dering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:he,diffuseConstant:he,direction:null,display:null,dur:null,divisor:he,dominantBaseline:null,download:ze,dx:null,dy:null,edgeMode:null,editable:null,elevation:he,enableBackground:null,end:null,event:null,exponent:he,externalResourcesRequired:null,fill:null,fillOpacity:he,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:xs,g2:xs,glyphName:xs,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:he,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:he,horizOriginX:he,horizOriginY:he,id:null,ideographic:he,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:he,k:he,k1:he,k2:he,k3:he,k4:he,kernelMatrix:Dn,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:he,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:he,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:he,overlineThickness:he,paintOrder:null,panose1:null,path:null,pathLength:he,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:gt,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:he,pointsAtY:he,pointsAtZ:he,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Dn,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Dn,rev:Dn,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Dn,requiredFeatures:Dn,requiredFonts:Dn,requiredFormats:Dn,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:he,specularExponent:he,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:he,strikethroughThickness:he,string:null,stroke:null,strokeDashArray:Dn,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:he,strokeOpacity:he,strokeWidth:null,style:null,surfaceScale:he,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Dn,tabIndex:he,tableValues:null,target:null,targetX:he,targetY:he,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Dn,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:he,underlineThickness:he,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:he,values:null,vAlphabetic:he,vMathematical:he,vectorEffect:null,vHanging:he,vIdeographic:he,version:null,vertAdvY:he,vertOriginX:he,vertOriginY:he,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:he,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:hA}),mA=Es({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}
vendor: 17,343 bytes, lines 4011-4012
4011,space:"xlink",transform(e,n){return"xlink:"+n.slice(5).toLowerCase()}}),pA=Es({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:fA}),gA=Es({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,n){return"xml:"+n.slice(3).toLowerCase()}}),HE={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},qE=/[A-Z]/g,rv=/-[a-z]/g,WE=/^data[-\w.:]+$/i;function VE(e,n){const i=Hf(n);let r=n,l=jn;if(i in e.normal)return e.property[e.normal[i]];if(i.length>4&&i.slice(0,4)==="data"&&WE.test(n)){if(n.charAt(4)==="-"){const d=n.slice(5).replace(rv,KE);r="data"+d.charAt(0).toUpperCase()+d.slice(1)}else{const d=n.slice(4);if(!rv.test(d)){let u=d.replace(qE,GE);u.charAt(0)!=="-"&&(u="-"+u),n="data"+u}}l=km}return new l(r,n)}function GE(e){return"-"+e.toLowerCase()}function KE(e){return e.charAt(1).toUpperCase()}const YE=dA([uA,zE,mA,pA,gA],"html"),Sm=dA([uA,UE,mA,pA,gA],"svg");function $E(e){return e.join(" ").trim()}var hs={},Qh,sv;function QE(){if(sv)return Qh;sv=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,i=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,l=/^:\s*/,d=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,h=/^\s+|\s+$/g,m=`
4012`,p="/",b="*",y="",v="comment",x="declaration";Qh=function(E,O){if(typeof E!="string")throw new TypeError("First argument must be a string");if(!E)return[];O=O||{};var C=1,_=1;function q($){var Q=$.match(n);Q&&(C+=Q.length);var X=$.lastIndexOf(m);_=~X?$.length-X:_+$.length}function Y(){var $={line:C,column:_};return function(Q){return Q.position=new G($),W(),Q}}function G($){this.start=$,this.end={line:C,column:_},this.source=O.source}G.prototype.content=E;function P($){var Q=new Error(O.source+":"+C+":"+_+": "+$);if(Q.reason=$,Q.filename=O.source,Q.line=C,Q.column=_,Q.source=E,!O.silent)throw Q}function M($){var Q=$.exec(E);if(Q){var X=Q[0];return q(X),E=E.slice(X.length),Q}}function W(){M(i)}function N($){var Q;for($=$||[];Q=L();)Q!==!1&&$.push(Q);return $}function L(){var $=Y();if(!(p!=E.charAt(0)||b!=E.charAt(1))){for(var Q=2;y!=E.charAt(Q)&&(b!=E.charAt(Q)||p!=E.charAt(Q+1));)++Q;if(Q+=2,y===E.charAt(Q-1))return P("End of comment missing");var X=E.slice(2,Q-2);return _+=2,q(X),E=E.slice(Q),_+=2,$({type:v,comment:X})}}function J(){var $=Y(),Q=M(r);if(Q){if(L(),!M(l))return P("property missing ':'");var X=M(d),F=$({type:x,property:S(Q[0].replace(e,y)),value:X?S(X[0].replace(e,y)):y});return M(u),F}}function z(){var $=[];N($);for(var Q;Q=J();)Q!==!1&&($.push(Q),N($));return $}return W(),z()};function S(E){return E?E.replace(h,y):y}return Qh}var ov;function JE(){if(ov)return hs;ov=1;var e=hs&&hs.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(hs,"__esModule",{value:!0}),hs.default=i;const n=e(QE());function i(r,l){let d=null;if(!r||typeof r!="string")return d;const u=(0,n.default)(r),h=typeof l=="function";return u.forEach(m=>{if(m.type!=="declaration")return;const{property:p,value:b}=m;h?l(p,b,m):b&&(d=d||{},d[p]=b)}),d}return hs}var Fo={},lv;function XE(){if(lv)return Fo;lv=1,Object.defineProperty(Fo,"__esModule",{value:!0}),Fo.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,i=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,l=/^-(ms)-/,d=function(p){return!p||i.test(p)||e.test(p)},u=function(p,b){return b.toUpperCase()},h=function(p,b){return"".concat(b,"-")},m=function(p,b){return b===void 0&&(b={}),d(p)?p:(p=p.toLowerCase(),b.reactCompat?p=p.replace(l,h):p=p.replace(r,h),p.replace(n,u))};return Fo.camelCase=m,Fo}var Eo,cv;function ZE(){if(cv)return Eo;cv=1;var e=Eo&&Eo.__importDefault||function(l){return l&&l.__esModule?l:{default:l}},n=e(JE()),i=XE();function r(l,d){var u={};return!l||typeof l!="string"||(0,n.default)(l,function(h,m){h&&m&&(u[(0,i.camelCase)(h,d)]=m)}),u}return r.default=r,Eo=r,Eo}var eI=ZE();const tI=fr(eI),yA=bA("end"),Tm=bA("start");function bA(e){return n;function n(i){const r=i&&i.position&&i.position[e]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function nI(e){const n=Tm(e),i=yA(e);if(n&&i)return{start:n,end:i}}function Oo(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?dv(e.position):"start"in e||"end"in e?dv(e):"line"in e||"column"in e?Vf(e):""}function Vf(e){return uv(e&&e.line)+":"+uv(e&&e.column)}function dv(e){return Vf(e&&e.start)+"-"+Vf(e&&e.end)}function uv(e){return e&&typeof e=="number"?e:1}class ln extends Error{constructor(n,i,r){super(),typeof i=="string"&&(r=i,i=void 0);let l="",d={},u=!1;if(i&&("line"in i&&"column"in i?d={place:i}:"start"in i&&"end"in i?d={place:i}:"type"in i?d={ancestors:[i],place:i.position}:d={...i}),typeof n=="string"?l=n:!d.cause&&n&&(u=!0,l=n.message,d.cause=n),!d.ruleId&&!d.source&&typeof r=="string"){const m=r.indexOf(":");m===-1?d.ruleId=r:(d.source=r.slice(0,m),d.ruleId=r.slice(m+1))}if(!d.place&&d.ancestors&&d.ancestors){const m=d.ancestors[d.ancestors.length-1];m&&(d.place=m.position)}const h=d.place&&"start"in d.place?d.place.start:d.place;this.ancestors=d.ancestors||void 0,this.cause=d.cause||void 0,this.column=h?h.column:void 0,this.fatal=void 0,this.file="",this.message=l,this.line=h?h.line:void 0,this.name=Oo(d.place)||"1:1",this.place=d.place||void 0,this.reason=this.message,this.ruleId=d.ruleId||void 0,this.source=d.source||void 0,this.stack=u&&d.cause&&typeof d.cause.stack=="string"?d.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}ln.prototype.file="";ln.prototype.name="";ln.prototype.reason="";ln.prototype.message="";ln.prototype.stack="";ln.prototype.column=void 0;ln.prototype.line=void 0;ln.prototype.ancestors=void 0;ln.prototype.cause=void 0;ln.prototype.fatal=void 0;ln.prototype.place=void 0;ln.prototype.ruleId=void 0;ln.prototype.source=void 0;const Cm={}.hasOwnProperty,aI=new Map,iI=/[A-Z]/g,rI=new Set(["table","tbody","thead","tfoot","tr"]),sI=new Set(["td","th"]),xA="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function oI(e,n){if(!n||n.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const i=n.filePath||void 0;let r;if(n.development){if(typeof n.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=pI(i,n.jsxDEV)}else{if(typeof n.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof n.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=mI(i,n.jsx,n.jsxs)}const l={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:r,elementAttributeNameCase:n.elementAttributeNameCase||"react",evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:i,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space==="svg"?Sm:YE,stylePropertyNameCase:n.stylePropertyNameCase||"dom",tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},d=vA(l,e,void 0);return d&&typeof d!="string"?d:l.create(e,l.Fragment,{children:d||void 0},void 0)}function vA(e,n,i){if(n.type==="element")return lI(e,n,i);if(n.type==="mdxFlowExpression"||n.type==="mdxTextExpression")return cI(e,n);if(n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement")return uI(e,n,i);if(n.type==="mdxjsEsm")return dI(e,n);if(n.type==="root")return hI(e,n,i);if(n.type==="text")return fI(e,n)}function lI(e,n,i){const r=e.schema;let l=r;n.tagName.toLowerCase()==="svg"&&r.space==="html"&&(l=Sm,e.schema=l),e.ancestors.push(n);const d=AA(e,n.tagName,!1),u=gI(e,n);let h=Fm(e,n);return rI.has(n.tagName)&&(h=h.filter(function(m){return typeof m=="string"?!BE(m):!0})),wA(e,u,d,n),jm(u,h),e.ancestors.pop(),e.schema=r,e.create(n,d,u,i)}function cI(e,n){if(n.data&&n.data.estree&&e.evaluater){const r=n.data.estree.body[0];return r.type,e.evaluater.evaluateExpression(r.expression)}Vo(e,n.position)}function dI(e,n){if(n.data&&n.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(n.data.estree);Vo(e,n.position)}function uI(e,n,i){const r=e.schema;let l=r;n.name==="svg"&&r.space==="html"&&(l=Sm,e.schema=l),e.ancestors.push(n);const d=n.name===null?e.Fragment:AA(e,n.name,!0),u=yI(e,n),h=Fm(e,n);return wA(e,u,d,n),jm(u,h),e.ancestors.pop(),e.schema=r,e.create(n,d,u,i)}function hI(e,n,i){const r={};return jm(r,Fm(e,n)),e.create(n,e.Fragment,r,i)}function fI(e,n){return n.value}function wA(e,n,i,r){typeof i!="string"&&i!==e.Fragment&&e.passNode&&(n.node=r)}function jm(e,n){if(n.length>0){const i=n.length>1?n:n[0];i&&(e.children=i)}}function mI(e,n,i){return r;function r(l,d,u,h){const p=Array.isArray(u.children)?i:n;return h?p(d,u,h):p(d,u)}}function pI(e,n){return i;function i(r,l,d,u){const h=Array.isArray(d.children),m=Tm(r);return n(l,d,u,h,{columnNumber:m?m.column-1:void 0,fileName:e,lineNumber:m?m.line:void 0},void 0)}}function gI(e,n){const i={};let r,l;for(l in n.properties)if(l!=="children"&&Cm.call(n.properties,l)){const d=bI(e,l,n.properties[l]);if(d){const[u,h]=d;e.tableCellAlignToStyle&&u==="align"&&typeof h=="string"&&sI.has(n.tagName)?r=h:i[u]=h}}if(r){const d=i.style||(i.style={});d[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return i}function yI(e,n){const i={};for(const r of n.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){const d=r.data.estree.body[0];d.type;const u=d.expression;u.type;const h=u.properties[0];h.type,Object.assign(i,e.evaluater.evaluateExpression(h.argument))}else Vo(e,n.position);else{const l=r.name;let d;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){const h=r.value.data.estree.body[0];h.type,d=e.evaluater.evaluateExpression(h.expression)}else Vo(e,n.position);else d=r.value===null?!0:r.value;i[l]=d}return i}function Fm(e,n){const i=[];let r=-1;const l=e.passKeys?new Map:aI;for(;++r<n.children.length;){const d=n.children[r];let u;if(e.passKeys){const m=d.type==="element"?d.tagName:d.type==="mdxJsxFlowElement"||d.type==="mdxJsxTextElement"?d.name:void 0;if(m){const p=l.get(m)||0;u=m+"-"+p,l.set(m,p+1)}}const h=vA(e,d,u);h!==void 0&&i.push(h)}return i}function bI(e,n,i){const r=VE(e.schema,n);if(!(i==null||typeof i=="number"&&Number.isNaN(i))){if(Array.isArray(i)&&(i=r.commaSeparated?PE(i):$E(i)),r.property==="style"){let l=typeof i=="object"?i:xI(e,String(i));return e.stylePropertyNameCase==="css"&&(l=vI(l)),["style",l]}return[e.elementAttributeNameCase==="react"&&r.space?HE[r.property]||r.property:r.attribute,i]}}function xI(e,n){try{return tI(n,{reactCompat:!0})}catch(i){if(e.ignoreInvalidStyle)return{};const r=i,l=new ln("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw l.file=e.filePath||void 0,l.url=xA+"#cannot-parse-style-attribute",l}}function AA(e,n,i){let r;if(!i)r={type:"Literal",value:n};else if(n.includes(".")){const l=n.split(".");let d=-1,u;for(;++d<l.length;){const h=nv(l[d])?{type:"Identifier",name:l[d]}:{type:"Literal",value:l[d]};u=u?{type:"MemberExpression",object:u,property:h,computed:!!(d&&h.type==="Literal"),optional:!1}:h}r=u}else r=nv(n)&&!/^[a-z]/.test(n)?{type:"Identifier",name:n}:{type:"Literal",value:n};if(r.type==="Literal"){const l=r.value;return Cm.call(e.components,l)?e.components[l]:l}if(e.evaluater)return e.evaluater.evaluateExpression(r);Vo(e)}function Vo(e,n){const i=new ln("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:n,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw i.file=e.filePath||void 0,i.url=xA+"#cannot-handle-mdx-estrees-without-createevaluater",i}function vI(e){const n={};let i;for(i in e)Cm.call(e,i)&&(n[wI(i)]=e[i]);return n}function wI(e){let n=e.replace(iI,AI);return n.slice(0,3)==="ms-"&&(n="-"+n),n}function AI(e){return"-"+e.toLowerCase()}const Jh={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},kI={};function SI(e,n){const i=kI,r=typeof i.includeImageAlt=="boolean"?i.includeImageAlt:!0,l=typeof i.includeHtml=="boolean"?i.includeHtml:!0;return kA(e,r,l)}function kA(e,n,i){if(TI(e)){if("value"in e)return e.type==="html"&&!i?"":e.value;if(n&&"alt"in e&&e.alt)return e.alt;if("children"in e)return hv(e.children,n,i)}return Array.isArray(e)?hv(e,n,i):""}function hv(e,n,i){const r=[];let l=-1;for(;++l<e.length;)r[l]=kA(e[l],n,i);return r.join("")}function TI(e){return!!(e&&typeof e=="object")}const fv=document.createElement("i");function Em(e){const n="&"+e+";";fv.innerHTML=n;const i=fv.textContent;return i.charCodeAt(i.length-1)===59&&e!=="semi"||i===n?!1:i}function Ea(e,n,i,r){const l=e.length;let d=0,u;if(n<0?n=-n>l?0:l+n:n=n>l?l:n,i=i>0?i:0,r.length<1e4)u=Array.from(r),u.unshift(n,i),e.splice(...u);else for(i&&e.splice(n,i);d<r.length;)u=r.slice(d,d+1e4),u.unshift(n,0),e.splice(...u),d+=1e4,n+=1e4}function Xn(e,n){return e.length>0?(Ea(e,e.length,0,n),e):n}const mv={}.hasOwnProperty;function CI(e){const n={};let i=-1;for(;++i<e.length;)jI(n,e[i]);return n}function jI(e,n){let i;for(i in n){const l=(mv.call(e,i)?e[i]:void 0)||(e[i]={}),d=n[i];let u;if(d)for(u in d){mv.call(l,u)||(l[u]=[]);const h=d[u];FI(l[u],Array.isArray(h)?h:h?[h]:[])}}}function FI(e,n){let i=-1;const r=[];for(;++i<n.length;)(n[i].add==="after"?e:r).push(n[i]);Ea(e,0,0,r)}function SA(e,n){const i=Number.parseInt(e,n);return i<9||i===11||i>13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"�":String.fromCodePoint(i)}function vs(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ta=zi(/[A-Za-z]/),Bn=zi(/[\dA-Za-z]/),EI=zi(/[#-'*+\--9=?A-Z^-~]/);function Gf(e){return e!==null&&(e<32||e===127)}const Kf=zi(/\d/),II=zi(/[\dA-Fa-f]/),NI=zi(/[!-/:-@[-`{-~]/);function Pe(e){return e!==null&&e<-2}function Cn(e){return e!==null&&(e<0||e===32)}function at(e){return e===-2||e===-1||e===32}const MI=zi(new RegExp("\\p{P}|\\p{S}","u")),PI=zi(/\s/);function zi(e){return n;function n(i){return i!==null&&i>-1&&e.test(String.fromCharCode(i))}}function Is(e){const n=[];let i=-1,r=0,l=0;for(;++i<e.length;){const d=e.charCodeAt(i);let u="";if(d===37&&Bn(e.charCodeAt(i+1))&&Bn(e.charCodeAt(i+2)))l=2;else if(d<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(d))||(u=String.fromCharCode(d));else if(d>55295&&d<57344){const h=e.charCodeAt(i+1);d<56320&&h>56319&&h<57344?(u=String.fromCharCode(d,h),l=1):u="�"}else u=String.fromCharCode(d);u&&(n.push(e.slice(r,i),encodeURIComponent(u)),r=i+l+1,u=""),l&&(i+=l,l=0)}return n.join("")+e.slice(r)}function yt(e,n,i,r){const l=r?r-1:Number.POSITIVE_INFINITY;let d=0;return u;function u(m){return at(m)?(e.enter(i),h(m)):n(m)}function h(m){return at(m)&&d++<l?(e.consume(m),h):(e.exit(i),n(m))}}const OI={tokenize:DI};function DI(e){const n=e.attempt(this.parser.constructs.contentInitial,r,l);let i;return n;function r(h){if(h===null){e.consume(h);return}return e.enter("lineEnding"),e.consume(h),e.exit("lineEnding"),yt(e,n,"linePrefix")}function l(h){return e.enter("paragraph"),d(h)}function d(h){const m=e.enter("chunkText",{contentType:"text",previous:i});return i&&(i.next=m),i=m,u(h)}function u(h){if(h===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(h);return}return Pe(h)?(e.consume(h),e.exit("chunkText"),d):(e.consume(h),u)}}const RI={tokenize:_I},pv={tokenize:BI};function _I(e){const n=this,i=[];let r=0,l,d,u;return h;function h(q){if(r<i.length){const Y=i[r];return n.containerState=Y[1],e.attempt(Y[0].continuation,m,p)(q)}return p(q)}function m(q){if(r++,n.containerState._closeFlow){n.containerState._closeFlow=void 0,l&&_();const Y=n.events.length;let G=Y,P;for(;G--;)if(n.events[G][0]==="exit"&&n.events[G][1].type==="chunkFlow"){P=n.events[G][1].end;break}C(r);let M=Y;for(;M<n.events.length;)n.events[M][1].end={...P},M++;return Ea(n.events,G+1,0,n.events.slice(Y)),n.events.length=M,p(q)}return h(q)}function p(q){if(r===i.length){if(!l)return v(q);if(l.currentConstruct&&l.currentConstruct.concrete)return S(q);n.interrupt=!!(l.currentConstruct&&!l._gfmTableDynamicInterruptHack)}return n.containerState={},e.check(pv,b,y)(q)}function b(q){return l&&_(),C(r),v(q)}function y(q){return n.parser.lazy[n.now().line]=r!==i.length,u=n.now().offset,S(q)}function v(q){return n.containerState={},e.attempt(pv,x,S)(q)}function x(q){return r++,i.push([n.currentConstruct,n.containerState]),v(q)}function S(q){if(q===null){l&&_(),C(0),e.consume(q);return}return l=l||n.parser.flow(n.now()),e.enter("chunkFlow",{_tokenizer:l,contentType:"flow",previous:d}),E(q)}function E(q){if(q===null){O(e.exit("chunkFlow"),!0),C(0),e.consume(q);return}return Pe(q)?(e.consume(q),O(e.exit("chunkFlow")),r=0,n.interrupt=void 0,h):(e.consume(q),E)}function O(q,Y){const G=n.sliceStream(q);
vendor: 6,653 bytes, line 4012
4012if(Y&&G.push(null),q.previous=d,d&&(d.next=q),d=q,l.defineSkip(q.start),l.write(G),n.parser.lazy[q.start.line]){let P=l.events.length;for(;P--;)if(l.events[P][1].start.offset<u&&(!l.events[P][1].end||l.events[P][1].end.offset>u))return;const M=n.events.length;let W=M,N,L;for(;W--;)if(n.events[W][0]==="exit"&&n.events[W][1].type==="chunkFlow"){if(N){L=n.events[W][1].end;break}N=!0}for(C(r),P=M;P<n.events.length;)n.events[P][1].end={...L},P++;Ea(n.events,W+1,0,n.events.slice(M)),n.events.length=P}}function C(q){let Y=i.length;for(;Y-- >q;){const G=i[Y];n.containerState=G[1],G[0].exit.call(n,e)}i.length=q}function _(){l.write([null]),d=void 0,l=void 0,n.containerState._closeFlow=void 0}}function BI(e,n,i){return yt(e,e.attempt(this.parser.constructs.document,n,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function gv(e){if(e===null||Cn(e)||PI(e))return 1;if(MI(e))return 2}function Im(e,n,i){const r=[];let l=-1;for(;++l<e.length;){const d=e[l].resolveAll;d&&!r.includes(d)&&(n=d(n,i),r.push(d))}return n}const Yf={name:"attention",resolveAll:LI,tokenize:zI};function LI(e,n){let i=-1,r,l,d,u,h,m,p,b;for(;++i<e.length;)if(e[i][0]==="enter"&&e[i][1].type==="attentionSequence"&&e[i][1]._close){for(r=i;r--;)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&n.sliceSerialize(e[r][1]).charCodeAt(0)===n.sliceSerialize(e[i][1]).charCodeAt(0)){if((e[r][1]._close||e[i][1]._open)&&(e[i][1].end.offset-e[i][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[i][1].end.offset-e[i][1].start.offset)%3))continue;m=e[r][1].end.offset-e[r][1].start.offset>1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;const y={...e[r][1].end},v={...e[i][1].start};yv(y,-m),yv(v,m),u={type:m>1?"strongSequence":"emphasisSequence",start:y,end:{...e[r][1].end}},h={type:m>1?"strongSequence":"emphasisSequence",start:{...e[i][1].start},end:v},d={type:m>1?"strongText":"emphasisText",start:{...e[r][1].end},end:{...e[i][1].start}},l={type:m>1?"strong":"emphasis",start:{...u.start},end:{...h.end}},e[r][1].end={...u.start},e[i][1].start={...h.end},p=[],e[r][1].end.offset-e[r][1].start.offset&&(p=Xn(p,[["enter",e[r][1],n],["exit",e[r][1],n]])),p=Xn(p,[["enter",l,n],["enter",u,n],["exit",u,n],["enter",d,n]]),p=Xn(p,Im(n.parser.constructs.insideSpan.null,e.slice(r+1,i),n)),p=Xn(p,[["exit",d,n],["enter",h,n],["exit",h,n],["exit",l,n]]),e[i][1].end.offset-e[i][1].start.offset?(b=2,p=Xn(p,[["enter",e[i][1],n],["exit",e[i][1],n]])):b=0,Ea(e,r-1,i-r+3,p),i=r+p.length-b-2;break}}for(i=-1;++i<e.length;)e[i][1].type==="attentionSequence"&&(e[i][1].type="data");return e}function zI(e,n){const i=this.parser.constructs.attentionMarkers.null,r=this.previous,l=gv(r);let d;return u;function u(m){return d=m,e.enter("attentionSequence"),h(m)}function h(m){if(m===d)return e.consume(m),h;const p=e.exit("attentionSequence"),b=gv(m),y=!b||b===2&&l||i.includes(m),v=!l||l===2&&b||i.includes(r);return p._open=!!(d===42?y:y&&(l||!v)),p._close=!!(d===42?v:v&&(b||!y)),n(m)}}function yv(e,n){e.column+=n,e.offset+=n,e._bufferIndex+=n}const UI={name:"autolink",tokenize:HI};function HI(e,n,i){let r=0;return l;function l(x){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(x),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),d}function d(x){return Ta(x)?(e.consume(x),u):x===64?i(x):p(x)}function u(x){return x===43||x===45||x===46||Bn(x)?(r=1,h(x)):p(x)}function h(x){return x===58?(e.consume(x),r=0,m):(x===43||x===45||x===46||Bn(x))&&r++<32?(e.consume(x),h):(r=0,p(x))}function m(x){return x===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(x),e.exit("autolinkMarker"),e.exit("autolink"),n):x===null||x===32||x===60||Gf(x)?i(x):(e.consume(x),m)}function p(x){return x===64?(e.consume(x),b):EI(x)?(e.consume(x),p):i(x)}function b(x){return Bn(x)?y(x):i(x)}function y(x){return x===46?(e.consume(x),r=0,b):x===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(x),e.exit("autolinkMarker"),e.exit("autolink"),n):v(x)}function v(x){if((x===45||Bn(x))&&r++<63){const S=x===45?v:y;return e.consume(x),S}return i(x)}}const cd={partial:!0,tokenize:qI};function qI(e,n,i){return r;function r(d){return at(d)?yt(e,l,"linePrefix")(d):l(d)}function l(d){return d===null||Pe(d)?n(d):i(d)}}const TA={continuation:{tokenize:VI},exit:GI,name:"blockQuote",tokenize:WI};function WI(e,n,i){const r=this;return l;function l(u){if(u===62){const h=r.containerState;return h.open||(e.enter("blockQuote",{_container:!0}),h.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(u),e.exit("blockQuoteMarker"),d}return i(u)}function d(u){return at(u)?(e.enter("blockQuotePrefixWhitespace"),e.consume(u),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),n):(e.exit("blockQuotePrefix"),n(u))}}function VI(e,n,i){const r=this;return l;function l(u){return at(u)?yt(e,d,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(u):d(u)}function d(u){return e.attempt(TA,n,i)(u)}}function GI(e){e.exit("blockQuote")}const CA={name:"characterEscape",tokenize:KI};function KI(e,n,i){return r;function r(d){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(d),e.exit("escapeMarker"),l}function l(d){return NI(d)?(e.enter("characterEscapeValue"),e.consume(d),e.exit("characterEscapeValue"),e.exit("characterEscape"),n):i(d)}}const jA={name:"characterReference",tokenize:YI};function YI(e,n,i){const r=this;let l=0,d,u;return h;function h(y){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(y),e.exit("characterReferenceMarker"),m}function m(y){return y===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(y),e.exit("characterReferenceMarkerNumeric"),p):(e.enter("characterReferenceValue"),d=31,u=Bn,b(y))}function p(y){return y===88||y===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(y),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),d=6,u=II,b):(e.enter("characterReferenceValue"),d=7,u=Kf,b(y))}function b(y){if(y===59&&l){const v=e.exit("characterReferenceValue");return u===Bn&&!Em(r.sliceSerialize(v))?i(y):(e.enter("characterReferenceMarker"),e.consume(y),e.exit("characterReferenceMarker"),e.exit("characterReference"),n)}return u(y)&&l++<d?(e.consume(y),b):i(y)}}const bv={partial:!0,tokenize:QI},xv={concrete:!0,name:"codeFenced",tokenize:$I};function $I(e,n,i){const r=this,l={partial:!0,tokenize:G};let d=0,u=0,h;return m;function m(P){return p(P)}function p(P){const M=r.events[r.events.length-1];return d=M&&M[1].type==="linePrefix"?M[2].sliceSerialize(M[1],!0).length:0,h=P,e.enter("co
4012deFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),b(P)}function b(P){return P===h?(u++,e.consume(P),b):u<3?i(P):(e.exit("codeFencedFenceSequence"),at(P)?yt(e,y,"whitespace")(P):y(P))}function y(P){return P===null||Pe(P)?(e.exit("codeFencedFence"),r.interrupt?n(P):e.check(bv,E,Y)(P)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),v(P))}function v(P){return P===null||Pe(P)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),y(P)):at(P)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),yt(e,x,"whitespace")(P)):P===96&&P===h?i(P):(e.consume(P),v)}function x(P){return P===null||Pe(P)?y(P):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),S(P))}function S(P){return P===null||Pe(P)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),y(P)):P===96&&P===h?i(P):(e.consume(P),S)}function E(P){return e.attempt(l,Y,O)(P)}function O(P){return e.enter("lineEnding"),e.consume(P),e.exit("lineEnding"),C}function C(P){return d>0&&at(P)?yt(e,_,"linePrefix",d+1)(P):_(P)}function _(P){return P===null||Pe(P)?e.check(bv,E,Y)(P):(e.enter("codeFlowValue"),q(P))}function q(P){return P===null||Pe(P)?(e.exit("codeFlowValue"),_(P)):(e.consume(P),q)}function Y(P){return e.exit("codeFenced"),n(P)}function G(P,M,W){let N=0;return L;function L(X){return P.enter("lineEnding"),P.consume(X),P.exit("lineEnding"),J}function J(X){return P.enter("codeFencedFence"),at(X)?yt(P,z,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(X):z(X)}function z(X){return X===h?(P.enter("codeFencedFenceSequence"),$(X)):W(X)}function $(X){return X===h?(N++,P.consume(X),$):N>=u?(P.exit("codeFencedFenceSequence"),at(X)?yt(P,Q,"whitespace")(X):Q(X)):W(X)}function Q(X){return X===null||Pe(X)?(P.exit("codeFencedFence"),M(X)):W(X)}}}function QI(e,n,i){const r=this;return l;function l(u){return u===null?i(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),d)}function d(u){return r.parser.lazy[r.now().line]?i(u):n(u)}}const Xh={name:"codeIndented",tokenize:XI},JI={partial:!0,tokenize:ZI};function XI(e,n,i){const r=this;return l;function l(p){return e.enter("codeIndented"),yt(e,d,"linePrefix",5)(p)}function d(p){const b=r.events[r.events.length-1];return b&&b[1].type==="linePrefix"&&b[2].sliceSerialize(b[1],!0).length>=4?u(p):i(p)}function u(p){return p===null?m(p):Pe(p)?e.attempt(JI,u,m)(p):(e.enter("codeFlowValue"),h(p))}function h(p){return p===null||Pe(p)?(e.exit("codeFlowValue"),u(p)):(e.consume(p),h)}function m(p){return e.exit("codeIndented"),n(p)}}function ZI(e,n,i){const r=this;return l;function l(u){return r.parser.lazy[r.now().line]?i(u):Pe(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),l):yt(e,d,"linePrefix",5)(u)}function d(u){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?n(u):Pe(u)?l(u):i(u)}}const eN={name:"codeText",previous:nN,resolve:tN,tokenize:aN};function tN(e){let n=e.length-4,i=3,r,l;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(r=i;++r<n;)if(e[r][1].type==="codeTextData"){e[i][1].type="codeTextPadding",e[n][1].type="codeTextPadding",i+=2,n-=2;break}}for(r=i-1,n++;++r<=n;)l===void 0?r!==n&&e[r][1].type!=="lineEnding"&&(l=r):(r===n||e[r][1].type==="lineEnding")&&(e[l][1].type="codeTextData",r!==l+2&&(e[l][1].end=e[r-1][1].end,e.splice(l+2,r-l-2),n-=r-l-2,r=l+2),l=void 0);return e}function nN(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function aN(e,n,i){let r=0,l,d;return u;function u(y){return e.enter("codeText"),e.enter("codeTextSequence"),h(y)}function h(y){return y===96?(e.consume(y),r++,h):(e.exit("codeTextSequence"),m(y))}function m(y){return y===null?i(y):y===32?(e.enter("space"),e.consume(y),e.exit("space"),m):y===96?(d=e.enter("codeTextSequence"),l=0,b(y)):Pe(y)?(e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),m):(e.enter("codeTextData"),p(y))}function p(y){return y===null||y===32||y===96||Pe(y)?(e.exit("codeTextData"),m(y)):(e.consume(y),p)}
vendor: 6,995 bytes, line 4012
4012function b(y){return y===96?(e.consume(y),l++,b):l===r?(e.exit("codeTextSequence"),e.exit("codeText"),n(y)):(d.type="codeTextData",p(y))}}class iN{constructor(n){this.left=n?[...n]:[],this.right=[]}get(n){if(n<0||n>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+n+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return n<this.left.length?this.left[n]:this.right[this.right.length-n+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(n,i){const r=i??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(n,r):n>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-n+this.left.length).reverse():this.left.slice(n).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(n,i,r){const l=i||0;this.setCursor(Math.trunc(n));const d=this.right.splice(this.right.length-l,Number.POSITIVE_INFINITY);return r&&Io(this.left,r),d.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(n){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(n)}pushMany(n){this.setCursor(Number.POSITIVE_INFINITY),Io(this.left,n)}unshift(n){this.setCursor(0),this.right.push(n)}unshiftMany(n){this.setCursor(0),Io(this.right,n.reverse())}setCursor(n){if(!(n===this.left.length||n>this.left.length&&this.right.length===0||n<0&&this.left.length===0))if(n<this.left.length){const i=this.left.splice(n,Number.POSITIVE_INFINITY);Io(this.right,i.reverse())}else{const i=this.right.splice(this.left.length+this.right.length-n,Number.POSITIVE_INFINITY);Io(this.left,i.reverse())}}}function Io(e,n){let i=0;if(n.length<1e4)e.push(...n);else for(;i<n.length;)e.push(...n.slice(i,i+1e4)),i+=1e4}function FA(e){const n={};let i=-1,r,l,d,u,h,m,p;const b=new iN(e);for(;++i<b.length;){for(;i in n;)i=n[i];if(r=b.get(i),i&&r[1].type==="chunkFlow"&&b.get(i-1)[1].type==="listItemPrefix"&&(m=r[1]._tokenizer.events,d=0,d<m.length&&m[d][1].type==="lineEndingBlank"&&(d+=2),d<m.length&&m[d][1].type==="content"))for(;++d<m.length&&m[d][1].type!=="content";)m[d][1].type==="chunkText"&&(m[d][1]._isInFirstContentOfListItem=!0,d++);if(r[0]==="enter")r[1].contentType&&(Object.assign(n,rN(b,i)),i=n[i],p=!0);else if(r[1]._container){for(d=i,l=void 0;d--;)if(u=b.get(d),u[1].type==="lineEnding"||u[1].type==="lineEndingBlank")u[0]==="enter"&&(l&&(b.get(l)[1].type="lineEndingBlank"),u[1].type="lineEnding",l=d);else if(!(u[1].type==="linePrefix"||u[1].type==="listItemIndent"))break;l&&(r[1].end={...b.get(l)[1].start},h=b.slice(l,i),h.unshift(r),b.splice(l,i-l+1,h))}}return Ea(e,0,Number.POSITIVE_INFINITY,b.slice(0)),!p}function rN(e,n){const i=e.get(n)[1],r=e.get(n)[2];let l=n-1;const d=[];let u=i._tokenizer;u||(u=r.parser[i.contentType](i.start),i._contentTypeTextTrailing&&(u._contentTypeTextTrailing=!0));const h=u.events,m=[],p={};let b,y,v=-1,x=i,S=0,E=0;const O=[E];for(;x;){for(;e.get(++l)[1]!==x;);d.push(l),x._tokenizer||(b=r.sliceStream(x),x.next||b.push(null),y&&u.defineSkip(x.start),x._isInFirstContentOfListItem&&(u._gfmTasklistFirstContentOfListItem=!0),u.write(b),x._isInFirstContentOfListItem&&(u._gfmTasklistFirstContentOfListItem=void 0)),y=x,x=x.next}for(x=i;++v<h.length;)h[v][0]==="exit"&&h[v-1][0]==="enter"&&h[v][1].type===h[v-1][1].type&&h[v][1].start.line!==h[v][1].end.line&&(E=v+1,O.push(E),x._tokenizer=void 0,x.previous=void 0,x=x.next);for(u.events=[],x?(x._tokenizer=void 0,x.previous=void 0):O.pop(),v=O.length;v--;){const C=h.slice(O[v],O[v+1]),_=d.pop();m.push([_,_+C.length-1]),e.splice(_,2,C)}for(m.reverse(),v=-1;++v<m.length;)p[S+m[v][0]]=S+m[v][1],S+=m[v][1]-m[v][0]-1;return p}const sN={resolve:lN,tokenize:cN},oN={partial:!0,tokenize:dN};function lN(e){return FA(e),e}function cN(e,n){let i;return r;function r(h){return e.enter("content"),i=e.enter("chunkContent",{contentType:"content"}),l(h)}function l(h){return h===null?d(h):Pe(h)?e.check(oN,u,d)(h):(e.consume(h),l)}function d(h){return e.exit("chunkContent"),e.exit("content"),n(h)}function u(h){return e.consume(h),e.exit("chunkContent"),i.next=e.enter("chunkContent",{contentType:"content",previous:i}),i=i.next,l}}function dN(e,n,i){const r=this;return l;function l(u){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),yt(e,d,"linePrefix")}function d(u){if(u===null||Pe(u))return i(u);const h=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?n(u):e.interrupt(r.parser.constructs.flow,i,n)(u)}}function EA(e,n,i,r,l,d,u,h,m){const p=m||Number.POSITIVE_INFINITY;let b=0;return y;function y(C){return C===60?(e.enter(r),e.enter(l),e.enter(d),e.consume(C),e.exit(d),v):C===null||C===32||C===41||Gf(C)?i(C):(e.enter(r),e.enter(u),e.enter(h),e.enter("chunkString",{contentType:"string"}),E(C))}function v(C){return C===62?(e.enter(d),e.consume(C),e.exit(d),e.exit(l),e.exit(r),n):(e.enter(h),e.enter("chunkString",{contentType:"string"}),x(C))}function x(C){return C===62?(e.exit("chunkString"),e.exit(h),v(C)):C===null||C===60||Pe(C)?i(C):(e.consume(C),C===92?S:x)}function S(C){return C===60||C===62||C===92?(e.consume(C),x):x(C)}function E(C){return!b&&(C===null||C===41||Cn(C))?(e.exit("chunkString"),e.exit(h),e.exit(u),e.exit(r),n(C)):b<p&&C===40?(e.consume(C),b++,E):C===41?(e.consume(C),b--,E):C===null||C===32||C===40||Gf(C)?i(C):(e.consume(C),C===92?O:E)}function O(C){return C===40||C===41||C===92?(e.consume(C),E):E(C)}}function IA(e,n,i,r,l,d){const u=this;let h=0,m;return p;function p(x){return e.enter(r),e.enter(l),e.consume(x),e.exit(l),e.enter(d),b}function b(x){return h>999||x===null||x===91||x===93&&!m||x===94&&!h&&"_hiddenFootnoteSupport"in u.parser.constructs?i(x):x===93?(e.exit(d),e.enter(l),e.consume(x),e.exit(l),e.exit(r),n):Pe(x)?(e.enter("lineEnding"),e.consume(x),e.exit("lineEnding"),b):(e.enter("chunkString",{contentType:"string"}),y(x))}function y(x){return x===null||x===91||x===93||Pe(x)||h++>999?(e.exit("chunkString"),b(x)):(e.consume(x),m||(m=!at(x)),x===92?v:y)}function v(x){return x===91||x===92||x===93?(e.consume(x),h++,y):y(x)}}function NA(e,n,i,r,l,d){let u;return h;function h(v){return v===34||v===39||v===40?(e.enter(r),e.enter(l),e.consume(v),e.exit(l),u=v===40?41:v,m):i(v)}function m(v){return v===u?(e.enter(l),e.consume(v),e.exit(l),e.exit(r),n):(e.enter(d),p(v))}function p(v){return v===u?(e.exit(d),m(u)):v===null?i(v):Pe(v)?(e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),yt(e,p,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),b(v))}function b(v){return v===u||v===null||Pe(v)?(e.exit("chunkString"),p(v)):(e.consume(v),v===92?y:b)}function y(v){return v===u||v===92?(e.consume(v),b):b(v)}}function Do(e,n){let i;return r;function r(l){return Pe(l)?(e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),i=!0,r):at(l)?yt(e,r,i?"linePrefix":"lineSuffix")(l):n(l)}}
vendor: 18,816 bytes, line 4012
4012const uN={name:"definition",tokenize:fN},hN={partial:!0,tokenize:mN};function fN(e,n,i){const r=this;let l;return d;function d(x){return e.enter("definition"),u(x)}function u(x){return IA.call(r,e,h,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function h(x){return l=vs(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),m):i(x)}function m(x){return Cn(x)?Do(e,p)(x):p(x)}function p(x){return EA(e,b,i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function b(x){return e.attempt(hN,y,y)(x)}function y(x){return at(x)?yt(e,v,"whitespace")(x):v(x)}function v(x){return x===null||Pe(x)?(e.exit("definition"),r.parser.defined.push(l),n(x)):i(x)}}function mN(e,n,i){return r;function r(h){return Cn(h)?Do(e,l)(h):i(h)}function l(h){return NA(e,d,i,"definitionTitle","definitionTitleMarker","definitionTitleString")(h)}function d(h){return at(h)?yt(e,u,"whitespace")(h):u(h)}function u(h){return h===null||Pe(h)?n(h):i(h)}}const pN={name:"hardBreakEscape",tokenize:gN};function gN(e,n,i){return r;function r(d){return e.enter("hardBreakEscape"),e.consume(d),l}function l(d){return Pe(d)?(e.exit("hardBreakEscape"),n(d)):i(d)}}const yN={name:"headingAtx",resolve:bN,tokenize:xN};function bN(e,n){let i=e.length-2,r=3,l,d;return e[r][1].type==="whitespace"&&(r+=2),i-2>r&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(r===i-1||i-4>r&&e[i-2][1].type==="whitespace")&&(i-=r+1===i?2:4),i>r&&(l={type:"atxHeadingText",start:e[r][1].start,end:e[i][1].end},d={type:"chunkText",start:e[r][1].start,end:e[i][1].end,contentType:"text"},Ea(e,r,i-r+1,[["enter",l,n],["enter",d,n],["exit",d,n],["exit",l,n]])),e}function xN(e,n,i){let r=0;return l;function l(b){return e.enter("atxHeading"),d(b)}function d(b){return e.enter("atxHeadingSequence"),u(b)}function u(b){return b===35&&r++<6?(e.consume(b),u):b===null||Cn(b)?(e.exit("atxHeadingSequence"),h(b)):i(b)}function h(b){return b===35?(e.enter("atxHeadingSequence"),m(b)):b===null||Pe(b)?(e.exit("atxHeading"),n(b)):at(b)?yt(e,h,"whitespace")(b):(e.enter("atxHeadingText"),p(b))}function m(b){return b===35?(e.consume(b),m):(e.exit("atxHeadingSequence"),h(b))}function p(b){return b===null||b===35||Cn(b)?(e.exit("atxHeadingText"),h(b)):(e.consume(b),p)}}const vN=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],vv=["pre","script","style","textarea"],wN={concrete:!0,name:"htmlFlow",resolveTo:SN,tokenize:TN},AN={partial:!0,tokenize:jN},kN={partial:!0,tokenize:CN};function SN(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function TN(e,n,i){const r=this;let l,d,u,h,m;return p;function p(k){return b(k)}function b(k){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(k),y}function y(k){return k===33?(e.consume(k),v):k===47?(e.consume(k),d=!0,E):k===63?(e.consume(k),l=3,r.interrupt?n:I):Ta(k)?(e.consume(k),u=String.fromCharCode(k),O):i(k)}function v(k){return k===45?(e.consume(k),l=2,x):k===91?(e.consume(k),l=5,h=0,S):Ta(k)?(e.consume(k),l=4,r.interrupt?n:I):i(k)}function x(k){return k===45?(e.consume(k),r.interrupt?n:I):i(k)}function S(k){const V="CDATA[";return k===V.charCodeAt(h++)?(e.consume(k),h===V.length?r.interrupt?n:z:S):i(k)}function E(k){return Ta(k)?(e.consume(k),u=String.fromCharCode(k),O):i(k)}function O(k){if(k===null||k===47||k===62||Cn(k)){const V=k===47,ae=u.toLowerCase();return!V&&!d&&vv.includes(ae)?(l=1,r.interrupt?n(k):z(k)):vN.includes(u.toLowerCase())?(l=6,V?(e.consume(k),C):r.interrupt?n(k):z(k)):(l=7,r.interrupt&&!r.parser.lazy[r.now().line]?i(k):d?_(k):q(k))}return k===45||Bn(k)?(e.consume(k),u+=String.fromCharCode(k),O):i(k)}function C(k){return k===62?(e.consume(k),r.interrupt?n:z):i(k)}function _(k){return at(k)?(e.consume(k),_):L(k)}function q(k){return k===47?(e.consume(k),L):k===58||k===95||Ta(k)?(e.consume(k),Y):at(k)?(e.consume(k),q):L(k)}function Y(k){return k===45||k===46||k===58||k===95||Bn(k)?(e.consume(k),Y):G(k)}function G(k){return k===61?(e.consume(k),P):at(k)?(e.consume(k),G):q(k)}function P(k){return k===null||k===60||k===61||k===62||k===96?i(k):k===34||k===39?(e.consume(k),m=k,M):at(k)?(e.consume(k),P):W(k)}function M(k){return k===m?(e.consume(k),m=null,N):k===null||Pe(k)?i(k):(e.consume(k),M)}function W(k){return k===null||k===34||k===39||k===47||k===60||k===61||k===62||k===96||Cn(k)?G(k):(e.consume(k),W)}function N(k){return k===47||k===62||at(k)?q(k):i(k)}function L(k){return k===62?(e.consume(k),J):i(k)}function J(k){return k===null||Pe(k)?z(k):at(k)?(e.consume(k),J):i(k)}function z(k){return k===45&&l===2?(e.consume(k),F):k===60&&l===1?(e.consume(k),D):k===62&&l===4?(e.consume(k),A):k===63&&l===3?(e.consume(k),I):k===93&&l===5?(e.consume(k),ce):Pe(k)&&(l===6||l===7)?(e.exit("htmlFlowData"),e.check(AN,U,$)(k)):k===null||Pe(k)?(e.exit("htmlFlowData"),$(k)):(e.consume(k),z)}function $(k){return e.check(kN,Q,U)(k)}function Q(k){return e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),X}function X(k){return k===null||Pe(k)?$(k):(e.enter("htmlFlowData"),z(k))}function F(k){return k===45?(e.consume(k),I):z(k)}function D(k){return k===47?(e.consume(k),u="",B):z(k)}function B(k){if(k===62){const V=u.toLowerCase();return vv.includes(V)?(e.consume(k),A):z(k)}return Ta(k)&&u.length<8?(e.consume(k),u+=String.fromCharCode(k),B):z(k)}function ce(k){return k===93?(e.consume(k),I):z(k)}function I(k){return k===62?(e.consume(k),A):k===45&&l===2?(e.consume(k),I):z(k)}function A(k){return k===null||Pe(k)?(e.exit("htmlFlowData"),U(k)):(e.consume(k),A)}function U(k){return e.exit("htmlFlow"),n(k)}}function CN(e,n,i){const r=this;return l;function l(u){return Pe(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),d):i(u)}function d(u){return r.parser.lazy[r.now().line]?i(u):n(u)}}function jN(e,n,i){return r;function r(l){return e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),e.attempt(cd,n,i)}}const FN={name:"htmlText",tokenize:EN};function EN(e,n,i){const r=this;let l,d,u;return h;function h(I){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(I),m}function m(I){return I===33?(e.consume(I),p):I===47?(e.consume(I),G):I===63?(e.consume(I),q):Ta(I)?(e.consume(I),W):i(I)}function p(I){return I===45?(e.consume(I),b):I===91?(e.consume(I),d=0,S):Ta(I)?(e.consume(I),_):i(I)}function b(I){return I===45?(e.consume(I),x):i(I)}function y(I){return I===null?i(I):I===45?(e.consume(I),v):Pe(I)?(u=y,D(I)):(e.consume(I),y)}function v(I){return I===45?(e.consume(I),x):y(I)}function x(I){return I===62?F(I):I===45?v(I):y(I)}function S(I){const A="CDATA[";return I===A.charCodeAt(d++)?(e.consume(I),d===A.length?E:S):i(I)}function E(I){return I===null?i(I):I===93?(e.consume(I),O):Pe(I)?(u=E,D(I)):(e.consume(I),E)}function O(I){return I===93?(e.consume(I),C):E(I)}function C(I){return I===62?F(I):I===93?(e.consume(I),C):E(I)}function _(I){return I===null||I===62?F(I):Pe(I)?(u=_,D(I)):(e.consume(I),_)}function q(I){return I===null?i(I):I===63?(e.consume(I),Y):Pe(I)?(u=q,D(I)):(e.consume(I),q)}function Y(I){return I===62?F(I):q(I)}function G(I){return Ta(I)?(e.consume(I),P):i(I)}function P(I){return I===45||Bn(I)?(e.consume(I),P):M(I)}function M(I){return Pe(I)?(u=M,D(I)):at(I)?(e.consume(I),M):F(I)}function W(I){return I===45||Bn(I)?(e.consume(I),W):I===47||I===62||Cn(I)?N(I):i(I)}function N(I){return I===47?(e.consume(I),F):I===58||I===95||Ta(I)?(e.consume(I),L):Pe(I)?(u=N,D(I)):at(I)?(e.consume(I),N):F(I)}function L(I){return I===45||I===46||I===58||I===95||Bn(I)?(e.consume(I),L):J(I)}function J(I){return I===61?(e.consume(I),z):Pe(I)?(u=J,D(I)):at(I)?(e.consume(I),J):N(I)}function z(I){return I===null||I===60||I===61||I===62||I===96?i(I):I===34||I===39?(e.consume(I),l=I,$):Pe(I)?(u=z,D(I)):at(I)?(e.consume(I),z):(e.consume(I),Q)}function $(I){return I===l?(e.consume(I),l=void 0,X):I===null?i(I):Pe(I)?(u=$,D(I)):(e.consume(I),$)}function Q(I){return I===null||I===34||I===39||I===60||I===61||I===96?i(I):I===47||I===62||Cn(I)?N(I):(e.consume(I),Q)}function X(I){return I===47||I===62||Cn(I)?N(I):i(I)}function F(I){return I===62?(e.consume(I),e.exit("htmlTextData"),e.exit("htmlText"),n):i(I)}function D(I){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(I),e.exit("lineEnding"),B}function B(I){return at(I)?yt(e,ce,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(I):ce(I)}function ce(I){return e.enter("htmlTextData"),u(I)}}const Nm={name:"labelEnd",resolveAll:PN,resolveTo:ON,tokenize:DN},IN={tokenize:RN},NN={tokenize:_N},MN={tokenize:BN};function PN(e){let n=-1;const i=[];for(;++n<e.length;){const r=e[n][1];if(i.push(e[n]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){const l=r.type==="labelImage"?4:2;r.type="data",n+=l}}return e.length!==i.length&&Ea(e,0,e.length,i),e}function ON(e,n){let i=e.length,r=0,l,d,u,h;for(;i--;)if(l=e[i][1],d){if(l.type==="link"||l.type==="labelLink"&&l._inactive)break;e[i][0]==="enter"&&l.type==="labelLink"&&(l._inactive=!0)}else if(u){if(e[i][0]==="enter"&&(l.type==="labelImage"||l.type==="labelLink")&&!l._balanced&&(d=i,l.type!=="labelLink")){r=2;break}}else l.type==="labelEnd"&&(u=i);const m={type:e[d][1].type==="labelLink"?"link":"image",start:{...e[d][1].start},end:{...e[e.length-1][1].end}},p={type:"label",start:{...e[d][1].start},end:{...e[u][1].end}},b={type:"labelText",start:{...e[d+r+2][1].end},end:{...e[u-2][1].start}};return h=[["enter",m,n],["enter",p,n]],h=Xn(h,e.slice(d+1,d+r+3)),h=Xn(h,[["enter",b,n]]),h=Xn(h,Im(n.parser.constructs.insideSpan.null,e.slice(d+r+4,u-3),n)),h=Xn(h,[["exit",b,n],e[u-2],e[u-1],["exit",p,n]]),h=Xn(h,e.slice(u+1)),h=Xn(h,[["exit",m,n]]),Ea(e,d,e.length,h),e}function DN(e,n,i){const r=this;let l=r.events.length,d,u;for(;l--;)if((r.events[l][1].type==="labelImage"||r.events[l][1].type==="labelLink")&&!r.events[l][1]._balanced){d=r.events[l][1];break}return h;function h(v){return d?d._inactive?y(v):(u=r.parser.defined.includes(vs(r.sliceSerialize({start:d.end,end:r.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(v),e.exit("labelMarker"),e.exit("labelEnd"),m):i(v)}function m(v){return v===40?e.attempt(IN,b,u?b:y)(v):v===91?e.attempt(NN,b,u?p:y)(v):u?b(v):y(v)}function p(v){return e.attempt(MN,b,y)(v)}function b(v){return n(v)}function y(v){return d._balanced=!0,i(v)}}function RN(e,n,i){return r;function r(y){return e.enter("resource"),e.enter("resourceMarker"),e.consume(y),e.exit("resourceMarker"),l}function l(y){return Cn(y)?Do(e,d)(y):d(y)}function d(y){return y===41?b(y):EA(e,u,h,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(y)}function u(y){return Cn(y)?Do(e,m)(y):b(y)}function h(y){return i(y)}function m(y){return y===34||y===39||y===40?NA(e,p,i,"resourceTitle","resourceTitleMarker","resourceTitleString")(y):b(y)}function p(y){return Cn(y)?Do(e,b)(y):b(y)}function b(y){return y===41?(e.enter("resourceMarker"),e.consume(y),e.exit("resourceMarker"),e.exit("resource"),n):i(y)}}function _N(e,n,i){const r=this;return l;function l(h){return IA.call(r,e,d,u,"reference","referenceMarker","referenceString")(h)}function d(h){return r.parser.defined.includes(vs(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?n(h):i(h)}function u(h){return i(h)}}function BN(e,n,i){return r;function r(d){return e.enter("reference"),e.enter("referenceMarker"),e.consume(d),e.exit("referenceMarker"),l}function l(d){return d===93?(e.enter("referenceMarker"),e.consume(d),e.exit("referenceMarker"),e.exit("reference"),n):i(d)}}const LN={name:"labelStartImage",resolveAll:Nm.resolveAll,tokenize:zN};function zN(e,n,i){const r=this;return l;function l(h){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(h),e.exit("labelImageMarker"),d}function d(h){return h===91?(e.enter("labelMarker"),e.consume(h),e.exit("labelMarker"),e.exit("labelImage"),u):i(h)}function u(h){return h===94&&"_hiddenFootnoteSupport"in r.parser.constructs?i(h):n(h)}}const UN={name:"labelStartLink",resolveAll:Nm.resolveAll,tokenize:HN};function HN(e,n,i){const r=this;return l;function l(u){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(u),e.exit("labelMarker"),e.exit("labelLink"),d}function d(u){return u===94&&"_hiddenFootnoteSupport"in r.parser.constructs?i(u):n(u)}}const Zh={name:"lineEnding",tokenize:qN};function qN(e,n){return i;function i(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),yt(e,n,"linePrefix")}}const Oc={name:"thematicBreak",tokenize:WN};function WN(e,n,i){let r=0,l;return d;function d(p){return e.enter("thematicBreak"),u(p)}function u(p){return l=p,h(p)}function h(p){return p===l?(e.enter("thematicBreakSequence"),m(p)):r>=3&&(p===null||Pe(p))?(e.exit("thematicBreak"),n(p)):i(p)}function m(p){return p===l?(e.consume(p),r++,m):(e.exit("thematicBreakSequence"),at(p)?yt(e,h,"whitespace")(p):h(p))}}const Sn={continuation:{tokenize:YN},exit:QN,name:"list",tokenize:KN},VN={partial:!0,tokenize:JN},GN={partial:!0,tokenize:$N};function KN(e,n,i){const r=this,l=r.events[r.events.length-1];let d=l&&l[1].type==="linePrefix"?l[2].sliceSerialize(l[1],!0).length:0,u=0;return h;function h(x){const S=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(S==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:Kf(x)){if(r.containerState.type||(r.containerState.type=S,e.enter(S,{_container:!0})),S==="listUnordered")return e.enter("listItemPrefix"),x===42||x===45?e.check(Oc,i,p)(x):p(x);if(!r.interrupt||x===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),m(x)}return i(x)}function m(x){return Kf(x)&&++u<10?(e.consume(x),m):(!r.interrupt||u<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(e.exit("listItemValue"),p(x)):i(x)}function p(x){return e.enter("listItemMarker"),e.consume(x),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,e.check(cd,r.interrupt?i:b,e.attempt(VN,v,y))}function b(x){return r.containerState.initialBlankLine=!0,d++,v(x)}function y(x){return at(x)?(e.enter("listItemPrefixWhitespace"),e.consume(x),e.exit("listItemPrefixWhitespace"),v):i(x)}function v(x){return r.containerState.size=d+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(x)}}function YN(e,n,i){const r=this;return r.containerState._closeFlow=void 0,e.check(cd,l,d);function l(h){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,yt(e,n,"listItemIndent",r.containerState.size+1)(h)}function d(h){return r.containerState.furtherBlankLines||!at(h)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,u(h)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(GN,n,u)(h))}function u(h){return r.containerState._closeFlow=!0,r.interrupt=void 0,yt(e,e.attempt(Sn,n,i),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(h)}}function $N(e,n,i){const r=this;return yt(e,l,"listItemIndent",r.containerState.size+1);function l(d){const u=r.events[r.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===r.containerState.size?n(d):i(d)}}function QN(e){e.exit(this.containerState.type)}function JN(e,n,i){const r=this;return yt(e,l,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function l(d){const u=r.events[r.events.length-1];return!at(d)&&u&&u[1].type==="listItemPrefixWhitespace"?n(d):i(d)}}const wv={name:"setextUnderline",resolveTo:XN,tokenize:ZN};function XN(e,n){let i=e.length,r,l,d;for(;i--;)if(e[i][0]==="enter"){if(e[i][1].type==="content"){r=i;break}e[i][1].type==="paragraph"&&(l=i)}else e[i][1].type==="content"&&e.splice(i,1),!d&&e[i][1].type==="definition"&&(d=i);const u={type:"setextHeading",start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[l][1].type="setextHeadingText",d?(e.splice(l,0,["enter",u,n]),e.splice(d+1,0,["exit",e[r][1],n]),e[r][1].end={...e[d][1].end}):e[r][1]=u,e.push(["exit",u,n]),e}function ZN(e,n,i){const r=this;let l;return d;function d(p){let b=r.events.length,y;for(;b--;)if(r.events[b][1].type!=="lineEnding"&&r.events[b][1].type!=="linePrefix"&&r.events[b][1].type!=="content"){y=r.events[b][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||y)?(e.enter("setextHeadingLine"),l=p,u(p)):i(p)}function u(p){return e.enter("setextHeadingLineSequence"),h(p)}function h(p){return p===l?(e.consume(p),h):(e.exit("setextHeadingLineSequence"),at(p)?yt(e,m,"lineSuffix")(p):m(p))}function m(p){return p===null||Pe(p)?(e.exit("setextHeadingLine"),n(p)):i(p)}}const eM={tokenize:tM};function tM(e){const n=this,i=e.attempt(cd,r,e.attempt(this.parser.constructs.flowInitial,l,yt(e,e.attempt(this.parser.constructs.flow,l,e.attempt(sN,l)),"linePrefix")));return i;function r(d){if(d===null){e.consume(d);return}return e.enter("lineEndingBlank"),e.consume(d),e.exit("lineEndingBlank"),n.currentConstruct=void 0,i}function l(d){if(d===null){e.consume(d);return}return e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),n.currentConstruct=void 0,i}}const nM={resolveAll:PA()},aM=MA("string"),iM=MA("text");function MA(e){return{resolveAll:PA(e==="text"?rM:void 0),tokenize:n};function n(i){const r=this,l=this.parser.constructs[e],d=i.attempt(l,u,h);return u;function u(b){return p(b)?d(b):h(b)}function h(b){if(b===null){i.consume(b);return}return i.enter("data"),i.consume(b),m}function m(b){return p(b)?(i.exit("data"),d(b)):(i.consume(b),m)}function p(b){if(b===null)return!0;const y=l[b];let v=-1;if(y)for(;++v<y.length;){const x=y[v];if(!x.previous||x.previous.call(r,r.previous))return!0}return!1}}}function PA(e){return n;function n(i,r){let l=-1,d;for(;++l<=i.length;)d===void 0?i[l]&&i[l][1].type==="data"&&(d=l,l++):(!i[l]||i[l][1].type!=="data")&&(l!==d+2&&(i[d][1].end=i[l-1][1].end,i.splice(d+2,l-d-2),l=d+2),d=void 0);return e?e(i,r):i}}function rM(e,n){let i=0;for(;++i<=e.length;)if((i===e.length||e[i][1].type==="lineEnding")&&e[i-1][1].type==="data"){const r=e[i-1][1],l=n.sliceStream(r);let d=l.length,u=-1,h=0,m;
vendor: 4,642 bytes, lines 4012-4014
4012for(;d--;){const p=l[d];if(typeof p=="string"){for(u=p.length;p.charCodeAt(u-1)===32;)h++,u--;if(u)break;u=-1}else if(p===-2)m=!0,h++;else if(p!==-1){d++;break}}if(n._contentTypeTextTrailing&&i===e.length&&(h=0),h){const p={type:i===e.length||m||h<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:d?u:r.start._bufferIndex+u,_index:r.start._index+d,line:r.end.line,column:r.end.column-h,offset:r.end.offset-h},end:{...r.end}};r.end={...p.start},r.start.offset===r.end.offset?Object.assign(r,p):(e.splice(i,0,["enter",p,n],["exit",p,n]),i+=2)}i++}return e}const sM={42:Sn,43:Sn,45:Sn,48:Sn,49:Sn,50:Sn,51:Sn,52:Sn,53:Sn,54:Sn,55:Sn,56:Sn,57:Sn,62:TA},oM={91:uN},lM={[-2]:Xh,[-1]:Xh,32:Xh},cM={35:yN,42:Oc,45:[wv,Oc],60:wN,61:wv,95:Oc,96:xv,126:xv},dM={38:jA,92:CA},uM={[-5]:Zh,[-4]:Zh,[-3]:Zh,33:LN,38:jA,42:Yf,60:[UI,FN],91:UN,92:[pN,CA],93:Nm,95:Yf,96:eN},hM={null:[Yf,nM]},fM={null:[42,95]},mM={null:[]},pM=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:fM,contentInitial:oM,disable:mM,document:sM,flow:cM,flowInitial:lM,insideSpan:hM,string:dM,text:uM},Symbol.toStringTag,{value:"Module"}));function gM(e,n,i){let r={_bufferIndex:-1,_index:0,line:i&&i.line||1,column:i&&i.column||1,offset:i&&i.offset||0};const l={},d=[];let u=[],h=[];const m={attempt:M(G),check:M(P),consume:_,enter:q,exit:Y,interrupt:M(P,{interrupt:!0})},p={code:null,containerState:{},defineSkip:E,events:[],now:S,parser:e,previous:null,sliceSerialize:v,sliceStream:x,write:y};let b=n.tokenize.call(p,m);return n.resolveAll&&d.push(n),p;function y(J){return u=Xn(u,J),O(),u[u.length-1]!==null?[]:(W(n,0),p.events=Im(d,p.events,p),p.events)}function v(J,z){return bM(x(J),z)}function x(J){return yM(u,J)}function S(){const{_bufferIndex:J,_index:z,line:$,column:Q,offset:X}=r;return{_bufferIndex:J,_index:z,line:$,column:Q,offset:X}}function E(J){l[J.line]=J.column,L()}function O(){let J;for(;r._index<u.length;){const z=u[r._index];if(typeof z=="string")for(J=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===J&&r._bufferIndex<z.length;)C(z.charCodeAt(r._bufferIndex));else C(z)}}function C(J){b=b(J)}function _(J){Pe(J)?(r.line++,r.column=1,r.offset+=J===-3?2:1,L()):J!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===u[r._index].length&&(r._bufferIndex=-1,r._index++)),p.previous=J}function q(J,z){const $=z||{};return $.type=J,$.start=S(),p.events.push(["enter",$,p]),h.push($),$}function Y(J){const z=h.pop();return z.end=S(),p.events.push(["exit",z,p]),z}function G(J,z){W(J,z.from)}function P(J,z){z.restore()}function M(J,z){return $;function $(Q,X,F){let D,B,ce,I;return Array.isArray(Q)?U(Q):"tokenize"in Q?U([Q]):A(Q);function A(ue){return ne;function ne(we){const je=we!==null&&ue[we],Fe=we!==null&&ue.null,rt=[...Array.isArray(je)?je:je?[je]:[],...Array.isArray(Fe)?Fe:Fe?[Fe]:[]];return U(rt)(we)}}function U(ue){return D=ue,B=0,ue.length===0?F:k(ue[B])}function k(ue){return ne;function ne(we){return I=N(),ce=ue,ue.partial||(p.currentConstruct=ue),ue.name&&p.parser.constructs.disable.null.includes(ue.name)?ae():ue.tokenize.call(z?Object.assign(Object.create(p),z):p,m,V,ae)(we)}}function V(ue){return J(ce,I),X}function ae(ue){return I.restore(),++B<D.length?k(D[B]):F}}}function W(J,z){J.resolveAll&&!d.includes(J)&&d.push(J),J.resolve&&Ea(p.events,z,p.events.length-z,J.resolve(p.events.slice(z),p)),J.resolveTo&&(p.events=J.resolveTo(p.events,p))}function N(){const J=S(),z=p.previous,$=p.currentConstruct,Q=p.events.length,X=Array.from(h);return{from:Q,restore:F};function F(){r=J,p.previous=z,p.currentConstruct=$,p.events.length=Q,h=X,L()}}function L(){r.line in l&&r.column<2&&(r.column=l[r.line],r.offset+=l[r.line]-1)}}function yM(e,n){const i=n.start._index,r=n.start._bufferIndex,l=n.end._index,d=n.end._bufferIndex;let u;if(i===l)u=[e[i].slice(r,d)];else{if(u=e.slice(i,l),r>-1){const h=u[0];typeof h=="string"?u[0]=h.slice(r):u.shift()}d>0&&u.push(e[l].slice(0,d))}return u}function bM(e,n){let i=-1;const r=[];let l;for(;++i<e.length;){const d=e[i];let u;if(typeof d=="string")u=d;else switch(d){case-5:{u="\r";break}case-4:{u=`
4013`;break}case-3:{u=`\r
4014`;break}case-2:{u=n?" ":"	";break}case-1:{if(!n&&l)continue;u=" ";break}default:u=String.fromCharCode(d)}l=d===-2,r.push(u)}return r.join("")}function xM(e){const r={constructs:CI([pM,...(e||{}).extensions||[]]),content:l(OI),defined:[],document:l(RI),flow:l(eM),lazy:{},string:l(aM),text:l(iM)};return r;function l(d){return u;function u(h){return gM(r,d,h)}}}function vM(e){for(;!FA(e););return e}const Av=/[\0\t\n\r]/g;function wM(){let e=1,n="",i=!0,r;return l;function l(d,u,h){const m=[];let p,b,y,v,x;
vendor: 19,152 bytes, lines 4014-4018
4014for(d=n+(typeof d=="string"?d.toString():new TextDecoder(u||void 0).decode(d)),y=0,n="",i&&(d.charCodeAt(0)===65279&&y++,i=void 0);y<d.length;){if(Av.lastIndex=y,p=Av.exec(d),v=p&&p.index!==void 0?p.index:d.length,x=d.charCodeAt(v),!p){n=d.slice(y);break}if(x===10&&y===v&&r)m.push(-3),r=void 0;else switch(r&&(m.push(-5),r=void 0),y<v&&(m.push(d.slice(y,v)),e+=v-y),x){case 0:{m.push(65533),e++;break}case 9:{for(b=Math.ceil(e/4)*4,m.push(-2);e++<b;)m.push(-1);break}case 10:{m.push(-4),e=1;break}default:r=!0,e=1}y=v+1}return h&&(r&&m.push(-5),n&&m.push(n),m.push(null)),m}}const AM=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function kM(e){return e.replace(AM,SM)}function SM(e,n,i){if(n)return n;if(i.charCodeAt(0)===35){const l=i.charCodeAt(1),d=l===120||l===88;return SA(i.slice(d?2:1),d?16:10)}return Em(i)||e}const OA={}.hasOwnProperty;function TM(e,n,i){return typeof n!="string"&&(i=n,n=void 0),CM(i)(vM(xM(i).document().write(wM()(e,n,!0))))}function CM(e){const n={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:d(Ue),autolinkProtocol:N,autolinkEmail:N,atxHeading:d(Ce),blockQuote:d(Fe),characterEscape:N,characterReference:N,codeFenced:d(rt),codeFencedFenceInfo:u,codeFencedFenceMeta:u,codeIndented:d(rt,u),codeText:d(St,u),codeTextData:N,data:N,codeFlowValue:N,definition:d(Mt),definitionDestinationString:u,definitionLabelString:u,definitionTitleString:u,emphasis:d(me),hardBreakEscape:d(Te),hardBreakTrailing:d(Te),htmlFlow:d($e,u),htmlFlowData:N,htmlText:d($e,u),htmlTextData:N,image:d(tn),label:u,link:d(Ue),listItem:d(lt),listItemValue:v,listOrdered:d(fn,y),listUnordered:d(fn),paragraph:d(Je),reference:k,referenceString:u,resourceDestinationString:u,resourceTitleString:u,setextHeading:d(Ce),strong:d(ha),thematicBreak:d(Ns)},exit:{atxHeading:m(),atxHeadingSequence:G,autolink:m(),autolinkEmail:je,autolinkProtocol:we,blockQuote:m(),characterEscapeValue:L,characterReferenceMarkerHexadecimal:ae,characterReferenceMarkerNumeric:ae,characterReferenceValue:ue,characterReference:ne,codeFenced:m(O),codeFencedFence:E,codeFencedFenceInfo:x,codeFencedFenceMeta:S,codeFlowValue:L,codeIndented:m(C),codeText:m(X),codeTextData:L,data:L,definition:m(),definitionDestinationString:Y,definitionLabelString:_,definitionTitleString:q,emphasis:m(),hardBreakEscape:m(z),hardBreakTrailing:m(z),htmlFlow:m($),htmlFlowData:L,htmlText:m(Q),htmlTextData:L,image:m(D),label:ce,labelText:B,lineEnding:J,link:m(F),listItem:m(),listOrdered:m(),listUnordered:m(),paragraph:m(),referenceString:V,resourceDestinationString:I,resourceTitleString:A,resource:U,setextHeading:m(W),setextHeadingLineSequence:M,setextHeadingText:P,strong:m(),thematicBreak:m()}};DA(n,(e||{}).mdastExtensions||[]);const i={};return r;function r(se){let fe={type:"root",children:[]};const Ie={stack:[fe],tokenStack:[],config:n,enter:h,exit:p,buffer:u,resume:b,data:i},Be=[];let qe=-1;for(;++qe<se.length;)if(se[qe][1].type==="listOrdered"||se[qe][1].type==="listUnordered")if(se[qe][0]==="enter")Be.push(qe);else{const nn=Be.pop();qe=l(se,nn,qe)}for(qe=-1;++qe<se.length;){const nn=n[se[qe][0]];OA.call(nn,se[qe][1].type)&&nn[se[qe][1].type].call(Object.assign({sliceSerialize:se[qe][2].sliceSerialize},Ie),se[qe][1])}if(Ie.tokenStack.length>0){const nn=Ie.tokenStack[Ie.tokenStack.length-1];(nn[1]||kv).call(Ie,void 0,nn[0])}for(fe.position={start:Ni(se.length>0?se[0][1].start:{line:1,column:1,offset:0}),end:Ni(se.length>0?se[se.length-2][1].end:{line:1,column:1,offset:0})},qe=-1;++qe<n.transforms.length;)fe=n.transforms[qe](fe)||fe;return fe}function l(se,fe,Ie){let Be=fe-1,qe=-1,nn=!1,an,Kt,Ft,Yt;for(;++Be<=Ie;){const it=se[Be];switch(it[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{it[0]==="enter"?qe++:qe--,Yt=void 0;break}case"lineEndingBlank":{it[0]==="enter"&&(an&&!Yt&&!qe&&!Ft&&(Ft=Be),Yt=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:Yt=void 0}if(!qe&&it[0]==="enter"&&it[1].type==="listItemPrefix"||qe===-1&&it[0]==="exit"&&(it[1].type==="listUnordered"||it[1].type==="listOrdered")){if(an){let fa=Be;for(Kt=void 0;fa--;){const cn=se[fa];if(cn[1].type==="lineEnding"||cn[1].type==="lineEndingBlank"){if(cn[0]==="exit")continue;Kt&&(se[Kt][1].type="lineEndingBlank",nn=!0),cn[1].type="lineEnding",Kt=fa}else if(!(cn[1].type==="linePrefix"||cn[1].type==="blockQuotePrefix"||cn[1].type==="blockQuotePrefixWhitespace"||cn[1].type==="blockQuoteMarker"||cn[1].type==="listItemIndent"))break}Ft&&(!Kt||Ft<Kt)&&(an._spread=!0),an.end=Object.assign({},Kt?se[Kt][1].start:it[1].end),se.splice(Kt||Be,0,["exit",an,it[2]]),Be++,Ie++}if(it[1].type==="listItemPrefix"){const fa={type:"listItem",_spread:!1,start:Object.assign({},it[1].start),end:void 0};an=fa,se.splice(Be,0,["enter",fa,it[2]]),Be++,Ie++,Ft=void 0,Yt=!0}}}return se[fe][1]._spread=nn,Ie}function d(se,fe){return Ie;function Ie(Be){h.call(this,se(Be),Be),fe&&fe.call(this,Be)}}function u(){this.stack.push({type:"fragment",children:[]})}function h(se,fe,Ie){this.stack[this.stack.length-1].children.push(se),this.stack.push(se),this.tokenStack.push([fe,Ie||void 0]),se.position={start:Ni(fe.start),end:void 0}}function m(se){return fe;function fe(Ie){se&&se.call(this,Ie),p.call(this,Ie)}}function p(se,fe){const Ie=this.stack.pop(),Be=this.tokenStack.pop();if(Be)Be[0].type!==se.type&&(fe?fe.call(this,se,Be[0]):(Be[1]||kv).call(this,se,Be[0]));else throw new Error("Cannot close `"+se.type+"` ("+Oo({start:se.start,end:se.end})+"): it’s not open");Ie.position.end=Ni(se.end)}function b(){return SI(this.stack.pop())}function y(){this.data.expectingFirstListItemValue=!0}function v(se){if(this.data.expectingFirstListItemValue){const fe=this.stack[this.stack.length-2];fe.start=Number.parseInt(this.sliceSerialize(se),10),this.data.expectingFirstListItemValue=void 0}}function x(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.lang=se}function S(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.meta=se}function E(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function O(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.value=se.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function C(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.value=se.replace(/(\r?\n|\r)$/g,"")}function _(se){const fe=this.resume(),Ie=this.stack[this.stack.length-1];Ie.label=fe,Ie.identifier=vs(this.sliceSerialize(se)).toLowerCase()}function q(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.title=se}function Y(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.url=se}function G(se){const fe=this.stack[this.stack.length-1];if(!fe.depth){const Ie=this.sliceSerialize(se).length;fe.depth=Ie}}function P(){this.data.setextHeadingSlurpLineEnding=!0}function M(se){const fe=this.stack[this.stack.length-1];fe.depth=this.sliceSerialize(se).codePointAt(0)===61?1:2}function W(){this.data.setextHeadingSlurpLineEnding=void 0}function N(se){const Ie=this.stack[this.stack.length-1].children;let Be=Ie[Ie.length-1];(!Be||Be.type!=="text")&&(Be=Gt(),Be.position={start:Ni(se.start),end:void 0},Ie.push(Be)),this.stack.push(Be)}function L(se){const fe=this.stack.pop();fe.value+=this.sliceSerialize(se),fe.position.end=Ni(se.end)}function J(se){const fe=this.stack[this.stack.length-1];if(this.data.atHardBreak){const Ie=fe.children[fe.children.length-1];Ie.position.end=Ni(se.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&n.canContainEols.includes(fe.type)&&(N.call(this,se),L.call(this,se))}function z(){this.data.atHardBreak=!0}function $(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.value=se}function Q(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.value=se}function X(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.value=se}function F(){const se=this.stack[this.stack.length-1];if(this.data.inReference){const fe=this.data.referenceType||"shortcut";se.type+="Reference",se.referenceType=fe,delete se.url,delete se.title}else delete se.identifier,delete se.label;this.data.referenceType=void 0}function D(){const se=this.stack[this.stack.length-1];if(this.data.inReference){const fe=this.data.referenceType||"shortcut";se.type+="Reference",se.referenceType=fe,delete se.url,delete se.title}else delete se.identifier,delete se.label;this.data.referenceType=void 0}function B(se){const fe=this.sliceSerialize(se),Ie=this.stack[this.stack.length-2];Ie.label=kM(fe),Ie.identifier=vs(fe).toLowerCase()}function ce(){const se=this.stack[this.stack.length-1],fe=this.resume(),Ie=this.stack[this.stack.length-1];if(this.data.inReference=!0,Ie.type==="link"){const Be=se.children;Ie.children=Be}else Ie.alt=fe}function I(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.url=se}function A(){const se=this.resume(),fe=this.stack[this.stack.length-1];fe.title=se}function U(){this.data.inReference=void 0}function k(){this.data.referenceType="collapsed"}function V(se){const fe=this.resume(),Ie=this.stack[this.stack.length-1];Ie.label=fe,Ie.identifier=vs(this.sliceSerialize(se)).toLowerCase(),this.data.referenceType="full"}function ae(se){this.data.characterReferenceType=se.type}function ue(se){const fe=this.sliceSerialize(se),Ie=this.data.characterReferenceType;let Be;Ie?(Be=SA(fe,Ie==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):Be=Em(fe);const qe=this.stack[this.stack.length-1];qe.value+=Be}function ne(se){const fe=this.stack.pop();fe.position.end=Ni(se.end)}function we(se){L.call(this,se);const fe=this.stack[this.stack.length-1];fe.url=this.sliceSerialize(se)}function je(se){L.call(this,se);const fe=this.stack[this.stack.length-1];fe.url="mailto:"+this.sliceSerialize(se)}function Fe(){return{type:"blockquote",children:[]}}function rt(){return{type:"code",lang:null,meta:null,value:""}}function St(){return{type:"inlineCode",value:""}}function Mt(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function me(){return{type:"emphasis",children:[]}}function Ce(){return{type:"heading",depth:0,children:[]}}function Te(){return{type:"break"}}function $e(){return{type:"html",value:""}}function tn(){return{type:"image",title:null,url:"",alt:null}}function Ue(){return{type:"link",title:null,url:"",children:[]}}function fn(se){return{type:"list",ordered:se.type==="listOrdered",start:null,spread:se._spread,children:[]}}function lt(se){return{type:"listItem",spread:se._spread,checked:null,children:[]}}function Je(){return{type:"paragraph",children:[]}}function ha(){return{type:"strong",children:[]}}function Gt(){return{type:"text",value:""}}function Ns(){return{type:"thematicBreak"}}}function Ni(e){return{line:e.line,column:e.column,offset:e.offset}}function DA(e,n){let i=-1;for(;++i<n.length;){const r=n[i];Array.isArray(r)?DA(e,r):jM(e,r)}}function jM(e,n){let i;for(i in n)if(OA.call(n,i))switch(i){case"canContainEols":{const r=n[i];r&&e[i].push(...r);break}case"transforms":{const r=n[i];r&&e[i].push(...r);break}case"enter":case"exit":{const r=n[i];r&&Object.assign(e[i],r);break}}}function kv(e,n){throw e?new Error("Cannot close `"+e.type+"` ("+Oo({start:e.start,end:e.end})+"): a different token (`"+n.type+"`, "+Oo({start:n.start,end:n.end})+") is open"):new Error("Cannot close document, a token (`"+n.type+"`, "+Oo({start:n.start,end:n.end})+") is still open")}function FM(e){const n=this;n.parser=i;function i(r){return TM(r,{...n.data("settings"),...e,extensions:n.data("micromarkExtensions")||[],mdastExtensions:n.data("fromMarkdownExtensions")||[]})}}function EM(e,n){const i={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(n),!0)};return e.patch(n,i),e.applyData(n,i)}function IM(e,n){const i={type:"element",tagName:"br",properties:{},children:[]};return e.patch(n,i),[e.applyData(n,i),{type:"text",value:`
4015`}]}function NM(e,n){const i=n.value?n.value+`
4016`:"",r={};n.lang&&(r.className=["language-"+n.lang]);let l={type:"element",tagName:"code",properties:r,children:[{type:"text",value:i}]};return n.meta&&(l.data={meta:n.meta}),e.patch(n,l),l=e.applyData(n,l),l={type:"element",tagName:"pre",properties:{},children:[l]},e.patch(n,l),l}function MM(e,n){const i={type:"element",tagName:"del",properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function PM(e,n){const i={type:"element",tagName:"em",properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function OM(e,n){const i=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=String(n.identifier).toUpperCase(),l=Is(r.toLowerCase()),d=e.footnoteOrder.indexOf(r);let u,h=e.footnoteCounts.get(r);h===void 0?(h=0,e.footnoteOrder.push(r),u=e.footnoteOrder.length):u=d+1,h+=1,e.footnoteCounts.set(r,h);const m={type:"element",tagName:"a",properties:{href:"#"+i+"fn-"+l,id:i+"fnref-"+l+(h>1?"-"+h:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(n,m);const p={type:"element",tagName:"sup",properties:{},children:[m]};return e.patch(n,p),e.applyData(n,p)}function DM(e,n){const i={type:"element",tagName:"h"+n.depth,properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function RM(e,n){if(e.options.allowDangerousHtml){const i={type:"raw",value:n.value};return e.patch(n,i),e.applyData(n,i)}}function RA(e,n){const i=n.referenceType;let r="]";if(i==="collapsed"?r+="[]":i==="full"&&(r+="["+(n.label||n.identifier)+"]"),n.type==="imageReference")return[{type:"text",value:"!["+n.alt+r}];const l=e.all(n),d=l[0];d&&d.type==="text"?d.value="["+d.value:l.unshift({type:"text",value:"["});const u=l[l.length-1];return u&&u.type==="text"?u.value+=r:l.push({type:"text",value:r}),l}function _M(e,n){const i=String(n.identifier).toUpperCase(),r=e.definitionById.get(i);if(!r)return RA(e,n);const l={src:Is(r.url||""),alt:n.alt};r.title!==null&&r.title!==void 0&&(l.title=r.title);const d={type:"element",tagName:"img",properties:l,children:[]};return e.patch(n,d),e.applyData(n,d)}function BM(e,n){const i={src:Is(n.url)};n.alt!==null&&n.alt!==void 0&&(i.alt=n.alt),n.title!==null&&n.title!==void 0&&(i.title=n.title);const r={type:"element",tagName:"img",properties:i,children:[]};return e.patch(n,r),e.applyData(n,r)}function LM(e,n){const i={type:"text",value:n.value.replace(/\r?\n|\r/g," ")};e.patch(n,i);const r={type:"element",tagName:"code",properties:{},children:[i]};return e.patch(n,r),e.applyData(n,r)}function zM(e,n){const i=String(n.identifier).toUpperCase(),r=e.definitionById.get(i);if(!r)return RA(e,n);const l={href:Is(r.url||"")};r.title!==null&&r.title!==void 0&&(l.title=r.title);const d={type:"element",tagName:"a",properties:l,children:e.all(n)};return e.patch(n,d),e.applyData(n,d)}function UM(e,n){const i={href:Is(n.url)};n.title!==null&&n.title!==void 0&&(i.title=n.title);const r={type:"element",tagName:"a",properties:i,children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function HM(e,n,i){const r=e.all(n),l=i?qM(i):_A(n),d={},u=[];if(typeof n.checked=="boolean"){const b=r[0];let y;b&&b.type==="element"&&b.tagName==="p"?y=b:(y={type:"element",tagName:"p",properties:{},children:[]},r.unshift(y)),y.children.length>0&&y.children.unshift({type:"text",value:" "}),y.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:n.checked,disabled:!0},children:[]}),d.className=["task-list-item"]}let h=-1;for(;++h<r.length;){const b=r[h];(l||h!==0||b.type!=="element"||b.tagName!=="p")&&u.push({type:"text",value:`
4017`}),b.type==="element"&&b.tagName==="p"&&!l?u.push(...b.children):u.push(b)}const m=r[r.length-1];m&&(l||m.type!=="element"||m.tagName!=="p")&&u.push({type:"text",value:`
4018`});const p={type:"element",tagName:"li",properties:d,children:u};return e.patch(n,p),e.applyData(n,p)}function qM(e){let n=!1;if(e.type==="list"){n=e.spread||!1;const i=e.children;let r=-1;for(;!n&&++r<i.length;)n=_A(i[r])}return n}function _A(e){const n=e.spread;return n??e.children.length>1}function WM(e,n){const i={},r=e.all(n);let l=-1;for(typeof n.start=="number"&&n.start!==1&&(i.start=n.start);++l<r.length;){const u=r[l];if(u.type==="element"&&u.tagName==="li"&&u.properties&&Array.isArray(u.properties.className)&&u.properties.className.includes("task-list-item")){i.className=["contains-task-list"];break}}const d={type:"element",tagName:n.ordered?"ol":"ul",properties:i,children:e.wrap(r,!0)};return e.patch(n,d),e.applyData(n,d)}function VM(e,n){const i={type:"element",tagName:"p",properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function GM(e,n){const i={type:"root",children:e.wrap(e.all(n))};return e.patch(n,i),e.applyData(n,i)}function KM(e,n){const i={type:"element",tagName:"strong",properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function YM(e,n){const i=e.all(n),r=i.shift(),l=[];if(r){const u={type:"element",tagName:"thead",properties:{},children:e.wrap([r],!0)};e.patch(n.children[0],u),l.push(u)}if(i.length>0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(i,!0)},h=Tm(n.children[1]),m=yA(n.children[n.children.length-1]);h&&m&&(u.position={start:h,end:m}),l.push(u)}const d={type:"element",tagName:"table",properties:{},children:e.wrap(l,!0)};return e.patch(n,d),e.applyData(n,d)}function $M(e,n,i){const r=i?i.children:void 0,d=(r?r.indexOf(n):1)===0?"th":"td",u=i&&i.type==="table"?i.align:void 0,h=u?u.length:n.children.length;let m=-1;const p=[];for(;++m<h;){const y=n.children[m],v={},x=u?u[m]:void 0;x&&(v.align=x);let S={type:"element",tagName:d,properties:v,children:[]};y&&(S.children=e.all(y),e.patch(y,S),S=e.applyData(y,S)),p.push(S)}const b={type:"element",tagName:"tr",properties:{},children:e.wrap(p,!0)};return e.patch(n,b),e.applyData(n,b)}function QM(e,n){const i={type:"element",tagName:"td",properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}const Sv=9,Tv=32;function JM(e){const n=String(e),i=/\r?\n|\r/g;let r=i.exec(n),l=0;const d=[];for(;r;)d.push(Cv(n.slice(l,r.index),l>0,!0),r[0]),l=r.index+r[0].length,r=i.exec(n);return d.push(Cv(n.slice(l),l>0,!1)),d.join("")}function Cv(e,n,i){let r=0,l=e.length;if(n){let d=e.codePointAt(r);for(;d===Sv||d===Tv;)r++,d=e.codePointAt(r)}if(i){let d=e.codePointAt(l-1);for(;d===Sv||d===Tv;)l--,d=e.codePointAt(l-1)}return l>r?e.slice(r,l):""}function XM(e,n){const i={type:"text",value:JM(String(n.value))};return e.patch(n,i),e.applyData(n,i)}function ZM(e,n){const i={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(n,i),e.applyData(n,i)}const eP={blockquote:EM,break:IM,code:NM,delete:MM,emphasis:PM,footnoteReference:OM,heading:DM,html:RM,imageReference:_M,image:BM,inlineCode:LM,linkReference:zM,link:UM,listItem:HM,list:WM,paragraph:VM,root:GM,strong:KM,table:YM,tableCell:QM,tableRow:$M,text:XM,thematicBreak:ZM,toml:Tc,yaml:Tc,definition:Tc,footnoteDefinition:Tc};function Tc(){}const BA=-1,dd=0,Ro=1,Uc=2,Mm=3,Pm=4,Om=5,Dm=6,LA=7,zA=8,jv=typeof self=="object"?self:globalThis,tP=(e,n)=>{const i=(l,d)=>(e.set(d,l),l),r=l=>{if(e.has(l))return e.get(l);const[d,u]=n[l];
vendor: 23,863 bytes, lines 4018-4024
4018switch(d){case dd:case BA:return i(u,l);case Ro:{const h=i([],l);for(const m of u)h.push(r(m));return h}case Uc:{const h=i({},l);for(const[m,p]of u)h[r(m)]=r(p);return h}case Mm:return i(new Date(u),l);case Pm:{const{source:h,flags:m}=u;return i(new RegExp(h,m),l)}case Om:{const h=i(new Map,l);for(const[m,p]of u)h.set(r(m),r(p));return h}case Dm:{const h=i(new Set,l);for(const m of u)h.add(r(m));return h}case LA:{const{name:h,message:m}=u;return i(new jv[h](m),l)}case zA:return i(BigInt(u),l);case"BigInt":return i(Object(BigInt(u)),l);case"ArrayBuffer":return i(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:h}=new Uint8Array(u);return i(new DataView(h),u)}}return i(new jv[d](u),l)};return r},Fv=e=>tP(new Map,e)(0),fs="",{toString:nP}={},{keys:aP}=Object,No=e=>{const n=typeof e;if(n!=="object"||!e)return[dd,n];const i=nP.call(e).slice(8,-1);switch(i){case"Array":return[Ro,fs];case"Object":return[Uc,fs];case"Date":return[Mm,fs];case"RegExp":return[Pm,fs];case"Map":return[Om,fs];case"Set":return[Dm,fs];case"DataView":return[Ro,i]}return i.includes("Array")?[Ro,i]:i.includes("Error")?[LA,i]:[Uc,i]},Cc=([e,n])=>e===dd&&(n==="function"||n==="symbol"),iP=(e,n,i,r)=>{const l=(u,h)=>{const m=r.push(u)-1;return i.set(h,m),m},d=u=>{if(i.has(u))return i.get(u);let[h,m]=No(u);switch(h){case dd:{let b=u;switch(m){case"bigint":h=zA,b=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+m);b=null;break;case"undefined":return l([BA],u)}return l([h,b],u)}case Ro:{if(m){let v=u;return m==="DataView"?v=new Uint8Array(u.buffer):m==="ArrayBuffer"&&(v=new Uint8Array(u)),l([m,[...v]],u)}const b=[],y=l([h,b],u);for(const v of u)b.push(d(v));return y}case Uc:{if(m)switch(m){case"BigInt":return l([m,u.toString()],u);case"Boolean":case"Number":case"String":return l([m,u.valueOf()],u)}if(n&&"toJSON"in u)return d(u.toJSON());const b=[],y=l([h,b],u);for(const v of aP(u))(e||!Cc(No(u[v])))&&b.push([d(v),d(u[v])]);return y}case Mm:return l([h,u.toISOString()],u);case Pm:{const{source:b,flags:y}=u;return l([h,{source:b,flags:y}],u)}case Om:{const b=[],y=l([h,b],u);for(const[v,x]of u)(e||!(Cc(No(v))||Cc(No(x))))&&b.push([d(v),d(x)]);return y}case Dm:{const b=[],y=l([h,b],u);for(const v of u)(e||!Cc(No(v)))&&b.push(d(v));return y}}const{message:p}=u;return l([h,{name:m,message:p}],u)};return d},Ev=(e,{json:n,lossy:i}={})=>{const r=[];return iP(!(n||i),!!n,new Map,r)(e),r},Hc=typeof structuredClone=="function"?(e,n)=>n&&("json"in n||"lossy"in n)?Fv(Ev(e,n)):structuredClone(e):(e,n)=>Fv(Ev(e,n));function rP(e,n){const i=[{type:"text",value:"↩"}];return n>1&&i.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(n)}]}),i}function sP(e,n){return"Back to reference "+(e+1)+(n>1?"-"+n:"")}function oP(e){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",i=e.options.footnoteBackContent||rP,r=e.options.footnoteBackLabel||sP,l=e.options.footnoteLabel||"Footnotes",d=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},h=[];let m=-1;for(;++m<e.footnoteOrder.length;){const p=e.footnoteById.get(e.footnoteOrder[m]);if(!p)continue;const b=e.all(p),y=String(p.identifier).toUpperCase(),v=Is(y.toLowerCase());let x=0;const S=[],E=e.footnoteCounts.get(y);for(;E!==void 0&&++x<=E;){S.length>0&&S.push({type:"text",value:" "});let _=typeof i=="string"?i:i(m,x);typeof _=="string"&&(_={type:"text",value:_}),S.push({type:"element",tagName:"a",properties:{href:"#"+n+"fnref-"+v+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(m,x),className:["data-footnote-backref"]},children:Array.isArray(_)?_:[_]})}const O=b[b.length-1];if(O&&O.type==="element"&&O.tagName==="p"){const _=O.children[O.children.length-1];_&&_.type==="text"?_.value+=" ":O.children.push({type:"text",value:" "}),O.children.push(...S)}else b.push(...S);const C={type:"element",tagName:"li",properties:{id:n+"fn-"+v},children:e.wrap(b,!0)};e.patch(p,C),h.push(C)}if(h.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:d,properties:{...Hc(u),id:"footnote-label"},children:[{type:"text",value:l}]},{type:"text",value:`
4019`},{type:"element",tagName:"ol",properties:{},children:e.wrap(h,!0)},{type:"text",value:`
4020`}]}}const UA=(function(e){if(e==null)return uP;if(typeof e=="function")return ud(e);if(typeof e=="object")return Array.isArray(e)?lP(e):cP(e);if(typeof e=="string")return dP(e);throw new Error("Expected function, string, or object as test")});function lP(e){const n=[];let i=-1;for(;++i<e.length;)n[i]=UA(e[i]);return ud(r);function r(...l){let d=-1;for(;++d<n.length;)if(n[d].apply(this,l))return!0;return!1}}function cP(e){const n=e;return ud(i);function i(r){const l=r;let d;for(d in e)if(l[d]!==n[d])return!1;return!0}}function dP(e){return ud(n);function n(i){return i&&i.type===e}}function ud(e){return n;function n(i,r,l){return!!(hP(i)&&e.call(this,i,typeof r=="number"?r:void 0,l||void 0))}}function uP(){return!0}function hP(e){return e!==null&&typeof e=="object"&&"type"in e}const HA=[],fP=!0,Iv=!1,mP="skip";function pP(e,n,i,r){let l;typeof n=="function"&&typeof i!="function"?(r=i,i=n):l=n;const d=UA(l),u=r?-1:1;h(e,void 0,[])();function h(m,p,b){const y=m&&typeof m=="object"?m:{};if(typeof y.type=="string"){const x=typeof y.tagName=="string"?y.tagName:typeof y.name=="string"?y.name:void 0;Object.defineProperty(v,"name",{value:"node ("+(m.type+(x?"<"+x+">":""))+")"})}return v;function v(){let x=HA,S,E,O;if((!n||d(m,p,b[b.length-1]||void 0))&&(x=gP(i(m,b)),x[0]===Iv))return x;if("children"in m&&m.children){const C=m;if(C.children&&x[0]!==mP)for(E=(r?C.children.length:-1)+u,O=b.concat(C);E>-1&&E<C.children.length;){const _=C.children[E];if(S=h(_,E,O)(),S[0]===Iv)return S;E=typeof S[1]=="number"?S[1]:E+u}}return x}}}function gP(e){return Array.isArray(e)?e:typeof e=="number"?[fP,e]:e==null?HA:[e]}function qA(e,n,i,r){let l,d,u;typeof n=="function"&&typeof i!="function"?(d=void 0,u=n,l=i):(d=n,u=i,l=r),pP(e,d,h,l);function h(m,p){const b=p[p.length-1],y=b?b.children.indexOf(m):void 0;return u(m,y,b)}}const $f={}.hasOwnProperty,yP={};function bP(e,n){const i=n||yP,r=new Map,l=new Map,d=new Map,u={...eP,...i.handlers},h={all:p,applyData:vP,definitionById:r,footnoteById:l,footnoteCounts:d,footnoteOrder:[],handlers:u,one:m,options:i,patch:xP,wrap:AP};return qA(e,function(b){if(b.type==="definition"||b.type==="footnoteDefinition"){const y=b.type==="definition"?r:l,v=String(b.identifier).toUpperCase();y.has(v)||y.set(v,b)}}),h;function m(b,y){const v=b.type,x=h.handlers[v];if($f.call(h.handlers,v)&&x)return x(h,b,y);if(h.options.passThrough&&h.options.passThrough.includes(v)){if("children"in b){const{children:E,...O}=b,C=Hc(O);return C.children=h.all(b),C}return Hc(b)}return(h.options.unknownHandler||wP)(h,b,y)}function p(b){const y=[];if("children"in b){const v=b.children;let x=-1;for(;++x<v.length;){const S=h.one(v[x],b);if(S){if(x&&v[x-1].type==="break"&&(!Array.isArray(S)&&S.type==="text"&&(S.value=Nv(S.value)),!Array.isArray(S)&&S.type==="element")){const E=S.children[0];E&&E.type==="text"&&(E.value=Nv(E.value))}Array.isArray(S)?y.push(...S):y.push(S)}}}return y}}function xP(e,n){e.position&&(n.position=nI(e))}function vP(e,n){let i=n;if(e&&e.data){const r=e.data.hName,l=e.data.hChildren,d=e.data.hProperties;if(typeof r=="string")if(i.type==="element")i.tagName=r;else{const u="children"in i?i.children:[i];i={type:"element",tagName:r,properties:{},children:u}}i.type==="element"&&d&&Object.assign(i.properties,Hc(d)),"children"in i&&i.children&&l!==null&&l!==void 0&&(i.children=l)}return i}function wP(e,n){const i=n.data||{},r="value"in n&&!($f.call(i,"hProperties")||$f.call(i,"hChildren"))?{type:"text",value:n.value}:{type:"element",tagName:"div",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function AP(e,n){const i=[];let r=-1;for(n&&i.push({type:"text",value:`
4021`});++r<e.length;)r&&i.push({type:"text",value:`
4022`}),i.push(e[r]);return n&&e.length>0&&i.push({type:"text",value:`
4023`}),i}function Nv(e){let n=0,i=e.charCodeAt(n);for(;i===9||i===32;)n++,i=e.charCodeAt(n);return e.slice(n)}function Mv(e,n){const i=bP(e,n),r=i.one(e,void 0),l=oP(i),d=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return l&&d.children.push({type:"text",value:`
4024`},l),d}function kP(e,n){return e&&"run"in e?async function(i,r){const l=Mv(i,{file:r,...n});await e.run(l,r)}:function(i,r){return Mv(i,{file:r,...e||n})}}function Pv(e){if(e)throw e}var ef,Ov;function SP(){if(Ov)return ef;Ov=1;var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,i=Object.defineProperty,r=Object.getOwnPropertyDescriptor,l=function(p){return typeof Array.isArray=="function"?Array.isArray(p):n.call(p)==="[object Array]"},d=function(p){if(!p||n.call(p)!=="[object Object]")return!1;var b=e.call(p,"constructor"),y=p.constructor&&p.constructor.prototype&&e.call(p.constructor.prototype,"isPrototypeOf");if(p.constructor&&!b&&!y)return!1;var v;for(v in p);return typeof v>"u"||e.call(p,v)},u=function(p,b){i&&b.name==="__proto__"?i(p,b.name,{enumerable:!0,configurable:!0,value:b.newValue,writable:!0}):p[b.name]=b.newValue},h=function(p,b){if(b==="__proto__")if(e.call(p,b)){if(r)return r(p,b).value}else return;return p[b]};return ef=function m(){var p,b,y,v,x,S,E=arguments[0],O=1,C=arguments.length,_=!1;for(typeof E=="boolean"&&(_=E,E=arguments[1]||{},O=2),(E==null||typeof E!="object"&&typeof E!="function")&&(E={});O<C;++O)if(p=arguments[O],p!=null)for(b in p)y=h(E,b),v=h(p,b),E!==v&&(_&&v&&(d(v)||(x=l(v)))?(x?(x=!1,S=y&&l(y)?y:[]):S=y&&d(y)?y:{},u(E,{name:b,newValue:m(_,S,v)})):typeof v<"u"&&u(E,{name:b,newValue:v}));return E},ef}var TP=SP();const tf=fr(TP);function Qf(e){if(typeof e!="object"||e===null)return!1;const n=Object.getPrototypeOf(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function CP(){const e=[],n={run:i,use:r};return n;function i(...l){let d=-1;const u=l.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);h(null,...l);function h(m,...p){const b=e[++d];let y=-1;if(m){u(m);return}for(;++y<l.length;)(p[y]===null||p[y]===void 0)&&(p[y]=l[y]);l=p,b?jP(b,h)(...p):u(null,...p)}}function r(l){if(typeof l!="function")throw new TypeError("Expected `middelware` to be a function, not "+l);return e.push(l),n}}function jP(e,n){let i;return r;function r(...u){const h=e.length>u.length;let m;h&&u.push(l);try{m=e.apply(this,u)}catch(p){const b=p;if(h&&i)throw b;return l(b)}h||(m&&m.then&&typeof m.then=="function"?m.then(d,l):m instanceof Error?l(m):d(m))}function l(u,...h){i||(i=!0,n(u,...h))}function d(u){l(null,u)}}const ka={basename:FP,dirname:EP,extname:IP,join:NP,sep:"/"};function FP(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');tl(e);let i=0,r=-1,l=e.length,d;if(n===void 0||n.length===0||n.length>e.length){for(;l--;)if(e.codePointAt(l)===47){if(d){i=l+1;break}}else r<0&&(d=!0,r=l+1);return r<0?"":e.slice(i,r)}if(n===e)return"";let u=-1,h=n.length-1;for(;l--;)if(e.codePointAt(l)===47){if(d){i=l+1;break}}else u<0&&(d=!0,u=l+1),h>-1&&(e.codePointAt(l)===n.codePointAt(h--)?h<0&&(r=l):(h=-1,r=u));return i===r?r=u:r<0&&(r=e.length),e.slice(i,r)}function EP(e){if(tl(e),e.length===0)return".";let n=-1,i=e.length,r;for(;--i;)if(e.codePointAt(i)===47){if(r){n=i;break}}else r||(r=!0);return n<0?e.codePointAt(0)===47?"/":".":n===1&&e.codePointAt(0)===47?"//":e.slice(0,n)}function IP(e){tl(e);let n=e.length,i=-1,r=0,l=-1,d=0,u;for(;n--;){const h=e.codePointAt(n);if(h===47){if(u){r=n+1;break}continue}i<0&&(u=!0,i=n+1),h===46?l<0?l=n:d!==1&&(d=1):l>-1&&(d=-1)}return l<0||i<0||d===0||d===1&&l===i-1&&l===r+1?"":e.slice(l,i)}function NP(...e){let n=-1,i;for(;++n<e.length;)tl(e[n]),e[n]&&(i=i===void 0?e[n]:i+"/"+e[n]);return i===void 0?".":MP(i)}function MP(e){tl(e);const n=e.codePointAt(0)===47;let i=PP(e,!n);return i.length===0&&!n&&(i="."),i.length>0&&e.codePointAt(e.length-1)===47&&(i+="/"),n?"/"+i:i}function PP(e,n){let i="",r=0,l=-1,d=0,u=-1,h,m;for(;++u<=e.length;){if(u<e.length)h=e.codePointAt(u);else{if(h===47)break;h=47}if(h===47){if(!(l===u-1||d===1))if(l!==u-1&&d===2){if(i.length<2||r!==2||i.codePointAt(i.length-1)!==46||i.codePointAt(i.length-2)!==46){if(i.length>2){if(m=i.lastIndexOf("/"),m!==i.length-1){m<0?(i="",r=0):(i=i.slice(0,m),r=i.length-1-i.lastIndexOf("/")),l=u,d=0;continue}}else if(i.length>0){i="",r=0,l=u,d=0;continue}}n&&(i=i.length>0?i+"/..":"..",r=2)}else i.length>0?i+="/"+e.slice(l+1,u):i=e.slice(l+1,u),r=u-l-1;l=u,d=0}else h===46&&d>-1?d++:d=-1}return i}function tl(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const OP={cwd:DP};function DP(){return"/"}function Jf(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function RP(e){if(typeof e=="string")e=new URL(e);else if(!Jf(e)){const n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){const n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return _P(e)}function _P(e){if(e.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const n=e.pathname;let i=-1;for(;++i<n.length;)if(n.codePointAt(i)===37&&n.codePointAt(i+1)===50){const r=n.codePointAt(i+2);if(r===70||r===102){const l=new TypeError("File URL path must not include encoded / characters");throw l.code="ERR_INVALID_FILE_URL_PATH",l}}return decodeURIComponent(n)}const nf=["history","path","basename","stem","extname","dirname"];class WA{constructor(n){let i;n?Jf(n)?i={path:n}:typeof n=="string"||BP(n)?i={value:n}:i=n:i={},this.cwd="cwd"in i?"":OP.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let r=-1;for(;++r<nf.length;){const d=nf[r];d in i&&i[d]!==void 0&&i[d]!==null&&(this[d]=d==="history"?[...i[d]]:i[d])}let l;for(l in i)nf.includes(l)||(this[l]=i[l])}get basename(){return typeof this.path=="string"?ka.basename(this.path):void 0}set basename(n){rf(n,"basename"),af(n,"basename"),this.path=ka.join(this.dirname||"",n)}get dirname(){return typeof this.path=="string"?ka.dirname(this.path):void 0}set dirname(n){Dv(this.basename,"dirname"),this.path=ka.join(n||"",this.basename)}get extname(){return typeof this.path=="string"?ka.extname(this.path):void 0}set extname(n){if(af(n,"extname"),Dv(this.dirname,"extname"),n){if(n.codePointAt(0)!==46)throw new Error("`extname` must start with `.`");if(n.includes(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=ka.join(this.dirname,this.stem+(n||""))}get path(){return this.history[this.history.length-1]}set path(n){Jf(n)&&(n=RP(n)),rf(n,"path"),this.path!==n&&this.history.push(n)}get stem(){return typeof this.path=="string"?ka.basename(this.path,this.extname):void 0}set stem(n){rf(n,"stem"),af(n,"stem"),this.path=ka.join(this.dirname||"",n+(this.extname||""))}fail(n,i,r){const l=this.message(n,i,r);throw l.fatal=!0,l}info(n,i,r){const l=this.message(n,i,r);return l.fatal=void 0,l}message(n,i,r){const l=new ln(n,i,r);return this.path&&(l.name=this.path+":"+l.name,l.file=this.path),l.fatal=!1,this.messages.push(l),l}toString(n){return this.value===void 0?"":typeof this.value=="string"?this.value:new TextDecoder(n||void 0).decode(this.value)}}function af(e,n){if(e&&e.includes(ka.sep))throw new Error("`"+n+"` cannot be a path: did not expect `"+ka.sep+"`")}function rf(e,n){if(!e)throw new Error("`"+n+"` cannot be empty")}function Dv(e,n){if(!e)throw new Error("Setting `"+n+"` requires `path` to be set too")}function BP(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const LP=(function(e){const r=this.constructor.prototype,l=r[e],d=function(){return l.apply(d,arguments)};return Object.setPrototypeOf(d,r),d}),zP={}.hasOwnProperty;class Rm extends LP{constructor(){super("copy"),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=CP()}copy(){const n=new Rm;let i=-1;for(;++i<this.attachers.length;){const r=this.attachers[i];n.use(...r)}return n.data(tf(!0,{},this.namespace)),n}data(n,i){return typeof n=="string"?arguments.length===2?(lf("data",this.frozen),this.namespace[n]=i,this):zP.call(this.namespace,n)&&this.namespace[n]||void 0:n?(lf("data",this.frozen),this.namespace=n,this):this.namespace}freeze(){if(this.frozen)return this;const n=this;for(;++this.freezeIndex<this.attachers.length;){const[i,...r]=this.attachers[this.freezeIndex];if(r[0]===!1)continue;r[0]===!0&&(r[0]=void 0);const l=i.call(n,...r);typeof l=="function"&&this.transformers.use(l)}return this.frozen=!0,this.freezeIndex=Number.POSITIVE_INFINITY,this}parse(n){this.freeze();const i=jc(n),r=this.parser||this.Parser;return sf("parse",r),r(String(i),i)}process(n,i){const r=this;return this.freeze(),sf("process",this.parser||this.Parser),of("process",this.compiler||this.Compiler),i?l(void 0,i):new Promise(l);function l(d,u){const h=jc(n),m=r.parse(h);r.run(m,h,function(b,y,v){if(b||!y||!v)return p(b);const x=y,S=r.stringify(x,v);qP(S)?v.value=S:v.result=S,p(b,v)});function p(b,y){b||!y?u(b):d?d(y):i(void 0,y)}}}processSync(n){let i=!1,r;return this.freeze(),sf("processSync",this.parser||this.Parser),of("processSync",this.compiler||this.Compiler),this.process(n,l),_v("processSync","process",i),r;function l(d,u){i=!0,Pv(d),r=u}}run(n,i,r){Rv(n),this.freeze();const l=this.transformers;return!r&&typeof i=="function"&&(r=i,i=void 0),r?d(void 0,r):new Promise(d);function d(u,h){const m=jc(i);l.run(n,m,p);function p(b,y,v){const x=y||n;b?h(b):u?u(x):r(void 0,x,v)}}}runSync(n,i){let r=!1,l;return this.run(n,i,d),_v("runSync","run",r),l;function d(u,h){Pv(u),l=h,r=!0}}stringify(n,i){this.freeze();const r=jc(i),l=this.compiler||this.Compiler;return of("stringify",l),Rv(n),l(n,r)}use(n,...i){const r=this.attachers,l=this.namespace;if(lf("use",this.frozen),n!=null)if(typeof n=="function")m(n,i);else if(typeof n=="object")Array.isArray(n)?h(n):u(n);else throw new TypeError("Expected usable value, not `"+n+"`");return this;function d(p){if(typeof p=="function")m(p,[]);else if(typeof p=="object")if(Array.isArray(p)){const[b,...y]=p;m(b,y)}else u(p);else throw new TypeError("Expected usable value, not `"+p+"`")}function u(p){if(!("plugins"in p)&&!("settings"in p))throw new Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");h(p.plugins),p.settings&&(l.settings=tf(!0,l.settings,p.settings))}function h(p){let b=-1;if(p!=null)if(Array.isArray(p))for(;++b<p.length;){const y=p[b];d(y)}else throw new TypeError("Expected a list of plugins, not `"+p+"`")}function m(p,b){let y=-1,v=-1;for(;++y<r.length;)if(r[y][0]===p){v=y;break}if(v===-1)r.push([p,...b]);else if(b.length>0){let[x,...S]=b;const E=r[v][1];Qf(E)&&Qf(x)&&(x=tf(!0,E,x)),r[v]=[p,x,...S]}}}}const UP=new Rm().freeze();function sf(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function of(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function lf(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Rv(e){if(!Qf(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function _v(e,n,i){if(!i)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function jc(e){return HP(e)?e:new WA(e)}function HP(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function qP(e){return typeof e=="string"||WP(e)}function WP(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const VP="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",Bv=[],Lv={allowDangerousHtml:!0},GP=/^(https?|ircs?|mailto|xmpp)$/i,KP=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function _m(e){const n=YP(e),i=$P(e);return QP(n.runSync(n.parse(i),i),e)}function YP(e){const n=e.rehypePlugins||Bv,i=e.remarkPlugins||Bv,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Lv}:Lv;return UP().use(FM).use(i).use(kP,r).use(n)}function $P(e){const n=e.children||"",i=new WA;return typeof n=="string"&&(i.value=n),i}function QP(e,n){const i=n.allowedElements,r=n.allowElement,l=n.components,d=n.disallowedElements,u=n.skipHtml,h=n.unwrapDisallowed,m=n.urlTransform||JP;for(const b of KP)Object.hasOwn(n,b.from)&&(""+b.from+(b.to?"use `"+b.to+"` instead":"remove it")+VP+b.id,void 0);return qA(e,p),oI(e,{Fragment:o.Fragment,components:l,ignoreInvalidStyle:!0,jsx:o.jsx,jsxs:o.jsxs,passKeys:!0,passNode:!0});function p(b,y,v){if(b.type==="raw"&&v&&typeof y=="number")return u?v.children.splice(y,1):v.children[y]={type:"text",value:b.value},y;if(b.type==="element"){let x;for(x in Jh)if(Object.hasOwn(Jh,x)&&Object.hasOwn(b.properties,x)){const S=b.properties[x],E=Jh[x];(E===null||E.includes(b.tagName))&&(b.properties[x]=m(String(S||""),x,b))}}if(b.type==="element"){let x=i?!i.includes(b.tagName):d?d.includes(b.tagName):!1;if(!x&&r&&typeof y=="number"&&(x=!r(b,y,v)),x&&v&&typeof y=="number")return h&&b.children?v.children.splice(y,1,...b.children):v.children.splice(y,1),y}}}function JP(e){const n=e.indexOf(":"),i=e.indexOf("?"),r=e.indexOf("#"),l=e.indexOf("/");return n===-1||l!==-1&&n>l||i!==-1&&n>i||r!==-1&&n>r||GP.test(e.slice(0,n))?e:""}const XP=new Set(["source_bound_answer","archive_inventory","date_inventory","date_topical_lookup","topic_synthesis","entity_profile","registry_answer","funding_desk_answer","treaty_answer","named_set_answer","comparison","correction_or_challenge","no_answer"]),ZP=new Set(["archive_dispatch","news_tracker","pipeline_record","funding_instrument","treaty_record","streaming_event","reference_source","thin_metadata","transcript"]),e3=new Set(["full_text","summary_only","metadata_only","transcript","reference"]),t3=6,zv=20,n3=30,a3=10,i3=50,sa=512,r3=128,s3=50,o3=new Set(["body","bodytext","excerpt","transcript","transcripttext","registrybody","llmcontext","assistantprose","contextbundle","sourcepanelmodel"]);function l3(e){return e.toLowerCase().replace(/[-_]/g,"")}const c3=new Set(["schemaVersion","mode","bundleRef","activeSourceId","activeItemId","activeEntity","activeTopic","visibleItems","namedSets","dateScope","noAnswerReason","exhausted"]);
4024function oa(e,n){return typeof e=="string"&&e.length>0&&e.length<=n}const d3=/^\d{4}-\d{2}-\d{2}$/;function Uv(e){return typeof e=="string"&&d3.test(e)}function Go(e,n=0){if(e==null||typeof e!="object")return!1;if(n>t3)return!0;if(Array.isArray(e))return e.some(r=>Go(r,n+1));const i=e;for(const r of Object.keys(i)){const l=l3(r);if(o3.has(l)){const d=i[r];if(d!=null&&d!=="")return!0}if(Go(i[r],n+1))return!0}return!1}function Hv(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const n=e;if(typeof n.id=="string"){if(!oa(n.id,sa))return!1}else if(typeof n.id=="number"){if(!Number.isFinite(n.id))return!1}else return!1;return!(!oa(n.sourceType,sa)||!ZP.has(n.sourceType)||!oa(n.title,sa)||!oa(n.contentStatus,sa)||!e3.has(n.contentStatus)||Go(n))}function u3(e){if(e===null)return!0;if(typeof e!="object"||Array.isArray(e))return!1;const n=e;if(!oa(n.bundleId,r3)||!Array.isArray(n.usedSourceRefs)||!Array.isArray(n.panelSourceRefs)||n.usedSourceRefs.length>zv||n.panelSourceRefs.length>zv)return!1;for(const r of n.usedSourceRefs)if(!Hv(r))return!1;for(const r of n.panelSourceRefs)if(!Hv(r))return!1;const i=new Set(n.usedSourceRefs.map(r=>String(r.id)));for(const r of n.panelSourceRefs)if(!i.has(String(r.id)))return!1;return!("exhausted"in n&&typeof n.exhausted!="boolean"||Go(n))}function VA(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const n=e;if(typeof n.id=="string"){if(!oa(n.id,sa))return!1}else if(typeof n.id=="number"){if(!Number.isFinite(n.id))return!1}else return!1;return!(!oa(n.kind,sa)||!oa(n.label,sa))}function h3(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const n=e;if(!oa(n.label,sa)||!Array.isArray(n.items)||n.items.length>i3)return!1;for(const i of n.items)if(!VA(i))return!1;if(!Array.isArray(n.supportingSourceIds)||n.supportingSourceIds.length>s3)return!1;for(const i of n.supportingSourceIds)if(typeof i=="string"){if(!oa(i,sa))return!1}else if(typeof i=="number"){if(!Number.isFinite(i))return!1}else return!1;return!0}function f3(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const n=e;return!(!Uv(n.startDate)||!Uv(n.endDate)||!oa(n.scopeKey,sa)||typeof n.batchOffset!="number"||!Number.isInteger(n.batchOffset)||n.batchOffset<0)}function m3(e){for(const n of Object.keys(e)){if(c3.has(n))continue;const i=e[n];if(i!=null&&typeof i=="object"||typeof i=="string"&&i.length>sa||typeof i=="number"&&!Number.isFinite(i))return!1}return!0}function p3(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const n=e;if(n.schemaVersion!==2||typeof n.mode!="string"||!XP.has(n.mode)||!u3(n.bundleRef)||!Array.isArray(n.visibleItems)||n.visibleItems.length>n3)return!1;for(const i of n.visibleItems)if(!VA(i))return!1;if(!Array.isArray(n.namedSets)||n.namedSets.length>a3)return!1;for(const i of n.namedSets)if(!h3(i))return!1;if(n.dateScope!==null&&n.dateScope!==void 0&&!f3(n.dateScope))return!1;if(n.bundleRef!==null&&n.bundleRef!==void 0&&typeof n.bundleRef=="object"&&!Array.isArray(n.bundleRef)&&"exhausted"in n.bundleRef&&"exhausted"in n){const i=n.exhausted,r=n.bundleRef.exhausted;if(typeof i=="boolean"&&typeof r=="boolean"&&i!==r)return!1}return!(!m3(n)||Go(n))}function Bm(e,n){if(!Array.isArray(e))return[];const i=g3,r=[];for(const l of e)p3(l)&&r.push(l);return r.length<=i?r:r.slice(r.length-i)}const g3=5,qv=["Rungano Nyoni","What happened to Showmax?","African films at Cannes 2025","Canal+ acquisition of MultiChoice","Women directors in African cinema","What did Tambay write about FESPACO?","What funding sources are available for African filmmakers?","Mahamat-Saleh Haroun","What is the state of African film distribution?","Senegalese cinema","What happened to Showmax in 2026?","African films and the Oscars","What has been written about Moroccan cinema?","How are African films using YouTube?","What does the archive say about film censorship in Africa?","African cinema and China","What has been written about Tanzanian cinema?","How do you pitch a project in the African film space?","What does the archive say about African animation?","Dani Kouyaté","What has been written about African cinema and colonialism?","Alain Gomis","What South African films are currently in post-production?","What is the status of the DTIC film incentive?","Does Morocco have a co-production treaty with France?","What streaming platform changes have happened in Africa this year?","Quels sont les films marocains en post-production?","Comment financer un long métrage sénégalais?","Quels accords de coproduction existent entre le Maroc et la France?"];function Wv(e,n){return[...e].sort(()=>Math.random()-.5).slice(0,n)}function y3({query:e,answerContent:n}){const[i,r]=j.useState(null),[l,d]=j.useState(""),[u,h]=j.useState("idle"),m=Qe.chat.submitFeedback.useMutation(),p=j.useRef(null),b=j.useCallback((x,S)=>{m.mutate({query:e,rating:x,note:S||"",answerSnippet:n.slice(0,200)}),h("submitted"),setTimeout(()=>h("hidden"),3e3)},[e,n,m]),y=x=>{i||(r(x),h("open"),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{h(S=>S==="open"?(b(x,""),"submitted"):S)},5e3))},v=()=>{p.current&&clearTimeout(p.current),i&&b(i,l)};return j.useEffect(()=>()=>{p.current&&clearTimeout(p.current)},[]),u==="hidden"?null:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:151",className:"mt-0 px-5",children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:152",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:u==="submitted"?o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:160",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5,fontStyle:"italic"},children:"Thanks for the feedback"}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:173",style:{display:"flex",alignItems:"center",gap:8},children:[o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:174",onClick:()=>y("up"),"aria-label":"Thumbs up",style:{background:"none",border:"none",cursor:i?"default":"pointer",padding:4,borderRadius:4,transition:"color 0.15s",color:i==="up"?"#0d7377":"#bbbbbb",fontSize:18,lineHeight:1},onMouseEnter:x=>{i||(x.currentTarget.style.color="#0d7377")},onMouseLeave:x=>{i||(x.currentTarget.style.color="#bbbbbb")},children:o.jsxs("svg",{"data-loc":"client/src/pages/Ask.tsx:195",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[o.jsx("path",{"data-loc":"client/src/pages/Ask.tsx:196",d:"M7 10v12"}),o.jsx("path",{"data-loc":"client/src/pages/Ask.tsx:197",d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2h0a3.13 3.13 0 0 1 3 3.88Z"})]})}),o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:200",onClick:()=>y("down"),"aria-label":"Thumbs down",style:{background:"none",border:"none",cursor:i?"default":"pointer",padding:4,borderRadius:4,transition:"color 0.15s",color:i==="down"?"#0d7377":"#bbbbbb",fontSize:18,lineHeight:1},onMouseEnter:x=>{i||(x.currentTarget.style.color="#0d7377")},onMouseLeave:x=>{i||(x.currentTarget.style.color="#bbbbbb")},children:o.jsxs("svg",{"data-loc":"client/src/pages/Ask.tsx:221",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[o.jsx("path",{"data-loc":"client/src/pages/Ask.tsx:222",d:"M17 14V2"}),o.jsx("path",{"data-loc":"client/src/pages/Ask.tsx:223",d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22h0a3.13 3.13 0 0 1-3-3.88Z"})]})})]}),u==="open"&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:228",style:{marginTop:8},children:o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:229",style:{display:"flex",gap:8,alignItems:"flex-end"},children:[o.jsx("input",{"data-loc":"client/src/pages/Ask.tsx:230",type:"text",value:l,onCh
4024ange:x=>d(x.target.value),onKeyDown:x=>{x.key==="Enter"&&v()},placeholder:"Want to add anything? (optional)",style:{flex:1,fontSize:"13px",padding:"6px 10px",border:"1px solid #e0e0dc",borderRadius:6,outline:"none",color:"#3a3a38",backgroundColor:"#ffffff",fontFamily:"inherit"},onFocus:x=>{x.currentTarget.style.borderColor="#0d7377",p.current&&clearTimeout(p.current)},onBlur:x=>{x.currentTarget.style.borderColor="#e0e0dc"},autoFocus:!0}),o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:259",onClick:v,style:{fontSize:"13px",padding:"6px 14px",borderRadius:6,border:"none",backgroundColor:"#0d7377",color:"#ffffff",cursor:"pointer",fontWeight:500,flexShrink:0},children:"Submit"})]})})]})})})}const qc=720;function b3({msg:e,onFollowUp:n,userQuery:i}){if(e.role==="user")return o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:302",className:"flex justify-start mb-3",style:{marginTop:"40px"},children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:303",className:"rounded-lg px-4 py-2.5",style:{backgroundColor:"#0A5252",color:"#FFFFFF",fontSize:"0.88rem",maxWidth:"85%",animation:"fadeSlideUp 0.3s ease-out"},children:e.content})});e.content.split(`
4025
4026`).filter(d=>d.trim());const l=e.content.trim().length>0;return o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:326",className:"flex justify-start mb-4",style:{marginBottom:"24px"},children:o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:327",style:{maxWidth:qc,width:"100%"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:329",className:"rounded-lg px-5 py-4",style:{backgroundColor:e.isError?"#FFF0F0":"#f8f8f6",color:e.isError?"#c0392b":"#3a3a38",fontSize:"16px",lineHeight:"1.7",border:`1px solid ${e.isError?"#f5c6c6":"#e8e8e4"}`,...!l&&e.isStreaming?{display:"none"}:{animation:"fadeSlideUp 0.3s ease-out"}},children:[o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:343",className:"ask-answer-markdown",children:o.jsx(_m,{"data-loc":"client/src/pages/Ask.tsx:344",components:{p:({children:d,...u})=>o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:349",...u,style:{marginBottom:"1em",lineHeight:"1.7"},children:d}),strong:({children:d})=>o.jsx("strong",{"data-loc":"client/src/pages/Ask.tsx:361",style:{fontWeight:600},children:d}),em:({children:d})=>o.jsx("em",{"data-loc":"client/src/pages/Ask.tsx:364",style:{fontStyle:"italic"},children:d}),ol:({children:d})=>o.jsx("ol",{"data-loc":"client/src/pages/Ask.tsx:367",style:{paddingLeft:"1.5em",marginBottom:"1em"},children:d}),ul:({children:d})=>o.jsx("ul",{"data-loc":"client/src/pages/Ask.tsx:370",style:{paddingLeft:"1.5em",marginBottom:"1em"},children:d}),li:({children:d})=>o.jsx("li",{"data-loc":"client/src/pages/Ask.tsx:373",style:{marginBottom:"0.3em"},children:d})},children:e.content.replace(/\[[^\]]*\](?!\()/g,"").replace(/\(\s*\)/g,"").replace(/[ \t]{2,}/g," ").replace(/[ \t]+([.,;:!?])/g,"$1").replace(new RegExp("(?<!\\\\)\\$","g"),"\\$")})}),e.isStreaming&&o.jsx("span",{"data-loc":"client/src/pages/Ask.tsx:394",style:{display:"inline-block",width:2,height:"1em",backgroundColor:"#0A5252",marginLeft:2,animation:"blink 1s step-end infinite",verticalAlign:"text-bottom"}})]}),!e.isStreaming&&e.sources&&e.sources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:409",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:410",style:{borderTop:"1px solid #e0e0dc",paddingTop:8,marginTop:0},children:o.jsxs("p",{"data-loc":"client/src/pages/Ask.tsx:417",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Sources: ",e.sources.map(d=>d.title).join(", "),e.extra&&e.extra>0?` + ${e.extra} more`:""]})})}),!e.isStreaming&&e.archiveSources&&e.archiveSources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:433",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:434",style:{borderTop:e.sources&&e.sources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/Ask.tsx:441",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Reference sources: ",e.archiveSources.map(d=>d.label).join(" | ")]})})}),!e.isStreaming&&e.registrySources&&e.registrySources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:456",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:457",style:{borderTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/Ask.tsx:464",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Registry data: ",e.registrySources.map(d=>d.label).join(" | ")]})})}),!e.isStreaming&&e.newsSources&&e.newsSources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:479",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:480",style:{borderTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0||e.registrySources&&e.registrySources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0||e.registrySources&&e.registrySources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/Ask.tsx:487",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Curated news:"," ",e.newsSources.map((d,u)=>o.jsxs("span",{"data-loc":"client/src/pages/Ask.tsx:497",children:[u>0&&" | ",d.url?o.jsx("a",{"data-loc":"client/src/pages/Ask.tsx:500",href:d.url,target:"_blank",rel:"noopener noreferrer",style:{color:"#999999",textDecoration:"underline"},children:d.label}):d.label]},u))]})})}),!e.isStreaming&&e.followUps&&e.followUps.length>0&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:519",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out 150ms both"},children:o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:520",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:[o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:527",style:{fontSize:"13px",color:"#999999",margin:0,marginBottom:8,lineHeight:1.5},children:"You might also ask:"}),o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:538",className:"flex flex-wrap gap-2",children:e.followUps.map((d,u)=>o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:540",onClick:()=>n?.(d),className:"ask-suggested-chip",children:d},u))})]})}),!e.isStreaming&&e.followUpsLoading&&!e.followUps&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:554",className:"mt-0 px-5",children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:555",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:562",style:{fontSize:"13px",color:"#bbbbbb",margin:0,lineHeight:1.5,fontStyle:"italic"},children:"Finding related topics…"})})}),!e.isStreaming&&!e.isError&&e.content&&i&&o.jsx(y3,{"data-loc":"client/src/pages/Ask.tsx:578",query:i,answerContent:e.content})]})})}function x3(){return o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:588",className:"flex justify-start mb-4",children:o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:589",className:"rounded-lg px-5 py-3",style:{backgroundColor:"#f8f8f6",border:"1px solid #e8e8e4",color:"#888888",fontSize:"0.85rem",maxWidth:qc,animation:"fadeSlideUp 0.3s ease-out"},children:o.jsxs("span",{"data-loc":"client/src/pages/Ask.tsx:600",className:"inline-flex gap-1 items-center",children:["Searching the archive",o.jsx("span",{"data-loc":"client/src/pages/Ask.tsx:602",className:"inline-flex gap-1 ml-1",children:[0,1,2].map(e=>o.jsx("span",{"data-loc":"client/src/pages/Ask.tsx:604",style:{width:5,height:5,borderRadius:"50%",backgroundColor:"#0A5252",display:"inline-block",animation:`bounce 1.2s ease-in-out ${e*.2}s infinite`}},e))})]})})})}function v3(){const{user:e,loading:n}=ua(),[i,r]=j.useState([]),[l,d]=j.useState(""),[u,h]=j.useState(!1),[m,p]=j.useState(!1),[b,y]=j.useState([]),v=j.useRef(null),x=j.useRef(null),S=j.useRef(null),[E,O]=j.useState(()=>Wv(qv,6)),[C,_]=j.useState(0),q=j.useRef(null),Y=Qe.chat.suggestFollowUps.useMutation();Qe.chat.count.useQuery().data?.count;const P=j.useCallback(async(N,L,J,z,$)=>{try{r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUpsLoading:!0}),F});const Q=await Y.mutateAsync({originalQuery:N,sourcesTitles:L.map(X=>X.title),answerPreview:J,sourceRowIds:$??[]});Q.suggestions&&Q.suggestions.length>0?r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUps:Q.suggestions,followUpsLoading:!1}),F}):r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUpsLoading:!1}),F})}catch{r(Q=>{const X=[...Q];return X[z]&&(X[z]={...X[z],followUpsLoading:!1}),X})}},[Y]);Qe.system.health.useQuery({timestamp:0}
4026,{refetchInterval:600*1e3,refetchIntervalInBackground:!1}),j.useEffect(()=>{const N=()=>{if(!window.visualViewport)return;const L=Math.max(0,window.innerHeight-window.visualViewport.height);_(L)};return window.visualViewport?.addEventListener("resize",N),()=>{window.visualViewport?.removeEventListener("resize",N)}},[]);const M=async N=>{const L=N.trim();if(!L||u||m)return;S.current&&S.current.abort();const J=new AbortController;S.current=J,d(""),r(A=>[...A,{role:"user",content:L}]),h(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{const A=x.current;A&&(A.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>window.scrollBy({top:-80,behavior:"smooth"}),150))})});const z=[...b];y(A=>[...A,{role:"user",content:L}]);const $=i.filter(A=>A.role==="assistant"&&A.dateScopeKey&&A.shownIds&&A.shownIds.length>0),Q=$.length>0?$[$.length-1].dateScopeKey:null,X=Q?i.filter(A=>A.role==="assistant"&&A.dateScopeKey===Q&&A.shownIds&&A.shownIds.length>0).flatMap(A=>A.shownIds):[],F=Q?i.filter(A=>A.role==="assistant"&&A.dateScopeKey===Q&&A.shownSlugs&&A.shownSlugs.length>0).flatMap(A=>A.shownSlugs):[],D=i.filter(A=>A.role==="assistant"&&A.sourceRowIds&&A.sourceRowIds.length>0).slice(-1).flatMap(A=>A.sourceRowIds),B=i.filter(A=>A.role==="assistant"&&A.turnState!=null).slice(-3).map(A=>A.turnState).reverse(),ce=Bm(i.filter(A=>A.role==="assistant"&&A.turnStateV2!=null).map(A=>A.turnStateV2)),I=A=>fetch("/api/chat/ask-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:L,conversationHistory:z,...X.length>0?{shownIds:X}:{},...F.length>0?{shownSlugs:F}:{},...D.length>0?{priorSourceRowIds:D}:{},...B.length>0?{recentTurnStates:B}:{},recentTurnStatesV2:ce,clientDate:new Date().toLocaleDateString("en-CA"),clientTimezone:Intl.DateTimeFormat().resolvedOptions().timeZone}),signal:A});try{let A;try{A=await I(J.signal)}catch(me){if(me instanceof TypeError&&!J.signal.aborted)await new Promise(Ce=>setTimeout(Ce,2e3)),A=await I(J.signal);else throw me}if(!A.ok){const me=await A.json().catch(()=>({error:"Something went wrong"})),Ce=me.error==="Rate limit exceeded"?"You're sending queries too quickly. Please wait a moment before trying again.":me.error==="Not authenticated"||me.error==="Invalid session"||me.error==="Not a subscriber"?"Archive access is available to active Akoroko subscribers only.":me.error||"Something went wrong. Please try again.";r(Te=>[...Te,{role:"assistant",content:Ce,isError:!0}]),h(!1);return}h(!1),p(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{q.current&&(q.current.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>window.scrollBy({top:-80,behavior:"smooth"}),150))})});const U=i.length+1;r(me=>[...me,{role:"assistant",content:"",isStreaming:!0}]);const k=A.body.getReader(),V=new TextDecoder;let ae="",ue="",ne=null;const we=35,je=[];let Fe=null,rt=!1;for(Fe=setInterval(()=>{const me=je.shift();me&&(ae+=me,r(Ce=>{const Te=[...Ce],$e=Te.length-1;return Te[$e]&&Te[$e].role==="assistant"&&(Te[$e]={...Te[$e],content:ae,isStreaming:!0}),Te})),je.length===0&&rt&&Fe&&(clearInterval(Fe),Fe=null)},we);;){const{done:me,value:Ce}=await k.read();if(me)break;ue+=V.decode(Ce,{stream:!0});const Te=ue.split(`
4027`);ue=Te.pop()??"";for(const $e of Te){if(!$e.startsWith("data: "))continue;const tn=$e.slice(6);if(tn!=="[DONE]")try{const Ue=JSON.parse(tn);if(Ue.type==="text"&&Ue.content)je.push(Ue.content);else if(Ue.type==="done")ne=Ue;else if(Ue.type==="error"){Fe&&(clearInterval(Fe),Fe=null),r(fn=>{const lt=[...fn],Je=lt.length-1;return lt[Je]&&lt[Je].role==="assistant"&&(lt[Je]={...lt[Je],content:Ue.content||"Something went wrong.",isError:!0,isStreaming:!1}),lt}),p(!1);return}}catch{}}}rt=!0,await new Promise(me=>{const Ce=setInterval(()=>{je.length===0&&(clearInterval(Ce),Fe&&(clearInterval(Fe),Fe=null),me())},we)}),p(!1),r(me=>{const Ce=[...me],Te=Ce.length-1;return Ce[Te]&&Ce[Te].role==="assistant"&&(Ce[Te]={...Ce[Te],content:ae,isStreaming:!1,sources:ne?.suppressAll?[]:ne?.sources??[],extra:ne?.suppressAll?0:ne?.extra??0,archiveSources:ne?.suppressAll?[]:ne?.archiveSources??[],registrySources:ne?.suppressAll?[]:ne?.registrySources??[],newsSources:ne?.suppressAll?[]:ne?.newsSources??[],shownIds:ne?.shownIds??[],shownSlugs:ne?.shownSlugs??[],dateScopeKey:ne?.dateScopeKey??null,sourceRowIds:ne?.sourceRowIds??[],suppressAll:ne?.
4027suppressAll??!1,turnState:ne?.turnState??null,turnStateV2:ne?.turnStateV2??null}),Ce}),y(me=>[...me,{role:"assistant",content:ae}]);const Mt=ne?.sources&&ne.sources.length>0?ne.sources:ne?.fallbackSources??[];Mt.length>0&&!ne?.suppressFollowUps&&!ne?.suppressAll&&setTimeout(()=>{P(L,Mt,ae.slice(0,500),U,ne?.sourceRowIds??[])},500)}catch(A){if(A instanceof DOMException&&A.name==="AbortError"){p(!1),h(!1),r(k=>{const V=[...k],ae=V.length-1;return V[ae]&&V[ae].role==="assistant"&&V[ae].isStreaming&&(V[ae]={...V[ae],isStreaming:!1}),V});return}const U=A instanceof Error?A.message:"Something went wrong. Please try again.";r(k=>{const V=k[k.length-1];if(V&&V.role==="assistant"&&V.isStreaming){const ae=[...k];return ae[ae.length-1]={...V,content:U,isError:!0,isStreaming:!1},ae}return[...k,{role:"assistant",content:U,isError:!0}]}),h(!1),p(!1)}finally{h(!1),window.matchMedia("(hover: hover) and (pointer: fine)").matches&&setTimeout(()=>v.current?.focus(),100)}},W=N=>{N.key==="Enter"&&!N.shiftKey&&(N.preventDefault(),M(l))};return!n&&!e?o.jsxs(Wt,{"data-loc":"client/src/pages/Ask.tsx:1100",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Ask.tsx:1101",title:"Ask Akoroko Premium — Akoroko",description:"Search the full Akoroko dispatch archive using AI. Available to active subscribers.",canonical:"/ask",noindex:!0}),o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1107",className:"min-h-screen flex flex-col items-center px-4",style:{backgroundColor:"#FAFAFA",paddingTop:"15vh"},children:[o.jsx("img",{"data-loc":"client/src/pages/Ask.tsx:1111",src:en,alt:"Akoroko Premium",style:{width:48,marginBottom:24,opacity:.85,filter:"brightness(0) saturate(100%) invert(27%) sepia(30%) saturate(1200%) hue-rotate(150deg) brightness(95%) contrast(95%)"}}),o.jsx("h1",{"data-loc":"client/src/pages/Ask.tsx:1121",style:{color:"#1a1a19",fontSize:"1.5rem",fontFamily:"Georgia, serif",marginBottom:12,textAlign:"center"},children:"Ask Akoroko Premium"}),o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:1132",style:{color:"#555555",fontSize:"0.9rem",marginBottom:24,textAlign:"center",maxWidth:360},children:"This feature is available to active Akoroko subscribers. Sign in to continue."}),o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1144",style:{display:"flex",gap:12,alignItems:"center"},children:[o.jsx("a",{"data-loc":"client/src/pages/Ask.tsx:1145",href:Zo(),children:o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:1146",style:{backgroundColor:"#0A5252",color:"#FFFFFF",border:"none",borderRadius:6,padding:"10px 24px",fontSize:"0.85rem",fontWeight:500,cursor:"pointer",letterSpacing:"0.04em"},children:"SIGN IN"})}),o.jsx(pe,{"data-loc":"client/src/pages/Ask.tsx:1162",href:"/subscribe",children:o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:1163",style:{backgroundColor:"transparent",color:"#0A5252",border:"1px solid #0A5252",borderRadius:6,padding:"10px 24px",fontSize:"0.85rem",fontWeight:500,cursor:"pointer",letterSpacing:"0.04em"},children:"SUBSCRIBE"})})]})]})]}):o.jsxs(Wt,{"data-loc":"client/src/pages/Ask.tsx:1187",children:[o.jsx(Vt,{"data-loc":"client/src/pages/Ask.tsx:1188",title:"Ask Akoroko Premium — Akoroko",description:"Search the full Akoroko dispatch archive using AI. Available to active subscribers.",canonical:"/ask",noindex:!0}),o.jsx("style",{"data-loc":"client/src/pages/Ask.tsx:1194",children:`
4028        @keyframes bounce {
4029          0%, 80%, 100% { transform: translateY(0); }
4030          40% { transform: translateY(-6px); }
4031        }
4032        @keyframes blink {
4033          0%, 100% { opacity: 1; }
4034          50% { opacity: 0; }
4035        }
4036        @keyframes fadeSlideUp {
4037          from { opacity: 0; transform: translateY(8px); }
4038          to { opacity: 1; transform: translateY(0); }
4039        }
4040        .ask-suggested-chip {
4041          display: inline-block;
4042          padding: 6px 14px;
4043          border-radius: 20px;
4044          font-size: 0.82rem;
4045          cursor: pointer;
4046          transition: all 0.15s;
4047          border: 1.5px solid #0A5252;
4048          background-color: #FFFFFF;
4049          color: #0A5252;
4050          font-weight: 400;
4051          line-height: 1.4;
4052          text-align: left;
4053        }
4054        .ask-suggested-chip:hover {
4055          background-color: #0A5252;
4056          color: #FFFFFF;
4057        }
4058        .ask-suggested-chip:active {
4059          background-color: #084040;
4060          color: #FFFFFF;
4061        }
4062      `}),o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1230",className:"flex flex-col",style:{backgroundColor:"#FAFAFA",minHeight:"100vh"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1238",style:{backgroundColor:"#1a1a19",color:"#FFFFFF",padding:"28px 24px 24px",textAlign:"center",borderBottom:"3px solid #0A5252"},children:[o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1247",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:14},children:[o.jsx("img",{"data-loc":"client/src/pages/Ask.tsx:1248",src:en,alt:"Akoroko Premium",style:{width:36,height:36,filter:"drop-shadow(0 0 6px rgba(13, 115, 119, 0.5))"}}),o.jsx("h1",{"data-loc":"client/src/pages/Ask.tsx:1257",style:{fontSize:"1.625rem",fontFamily:"Georgia, serif",fontWeight:500,margin:0,letterSpacing:"-0.01em"},children:"Ask Akoroko Premium"})]}),o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:1269",style:{color:"rgba(255,255,255,0.55)",fontSize:"0.875rem",marginTop:8,letterSpacing:"0.02em",lineHeight:1.4},children:"Drawing from 2,595 sources across African film, television, and digital media · 2022–present"}),o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:1280",style:{color:"rgba(255,255,255,0.90)",fontSize:"0.85rem",fontWeight:500,marginTop:14,letterSpacing:"0.01em",lineHeight:1.4,fontStyle:"italic",borderTop:"1px solid rgba(255,255,255,0.12)",paddingTop:12},children:"Posez vos questions en français — le système répond dans la langue de votre question."})]}),o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:1298",className:"flex-1 overflow-y-auto px-4 py-6",style:{paddingBottom:140},children:o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1302",style:{maxWidth:qc,margin:"0 auto",width:"100%"},children:[i.length===0&&!u&&o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1305",style:{paddingTop:40,textAlign:"center"},children:[o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:1311",style:{color:"#999999",fontSize:"0.82rem",marginBottom:16,textTransform:"uppercase",letterSpacing:"0.08em"},children:"Try asking"}),o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:1322",className:"flex flex-wrap gap-2",style:{justifyContent:"center"},children:E.map((N,L)=>o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:1324",onClick:()=>M(N),className:"ask-suggested-chip",children:N},L))})]}),i.map((N,L)=>{const J=N.role==="user"&&(L===i.length-1||L===i.length-2&&i[i.length-1]?.role==="assistant"),z=N.role==="assistant"&&L===i.length-1,$=N.role==="assistant"&&L>0&&i[L-1]?.role==="user"?i[L-1].content:void 0;return o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:1350",ref:J?x:z?q:void 0,style:{scrollMarginTop:80},children:o.jsx(b3,{"data-loc":"client/src/pages/Ask.tsx:1355",msg:N,onFollowUp:M,userQuery:$})},L)}),u&&o.jsx(x3,{"data-loc":"client/src/pages/Ask.tsx:1361"}),m&&o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:1365",style:{display:"flex",justifyContent:"center",marginTop:8},children:o.jsxs("button",{"data-loc":"client/src/pages/Ask.tsx:1366",onClick:()=>S.current?.abort(),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 16px",borderRadius:20,border:"1.5px solid #d0d0cc",backgroundColor:"#FFFFFF",color:"#666666",fontSize:"0.8rem",fontWeight:400,cursor:"pointer",transition:"all 0.15s"},onMouseEnter:N=>{N.currentTarget.style.borderColor="#0A5252",N.currentTarget.style.color="#0A5252"},onMouseLeave:N=>{N.currentTarget.style.borderColor="#d0d0cc",N.currentTarget.style.color="#666666"},children:[o.jsx("svg",{"data-loc":"client/src/pages/Ask.tsx:1391",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:o.jsx("rect",{"data-loc":"client/src/pages/Ask.tsx:1392",x:"2",y:"2",width:"10",height:"10",rx:"2",fill:"
4062currentColor"})}),"Stop generating"]})})]})}),o.jsx("div",{"data-loc":"client/src/pages/Ask.tsx:1402",style:{position:"fixed",bottom:C,left:0,right:0,backgroundColor:"#FAFAFA",borderTop:"1px solid #e0e0dc",paddingTop:"16px",paddingBottom:"calc(16px + env(safe-area-inset-bottom, 0px))",zIndex:10},children:o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1420",style:{maxWidth:qc,width:"100%",margin:"0 auto",paddingLeft:16,paddingRight:16},children:[o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1429",style:{display:"flex",gap:10,alignItems:"flex-end",backgroundColor:"#FFFFFF",border:"1.5px solid #0A5252",borderRadius:10,padding:"10px 14px",boxShadow:"0 1px 4px rgba(0,0,0,0.06)"},children:[o.jsx("textarea",{"data-loc":"client/src/pages/Ask.tsx:1441",ref:v,value:l,onChange:N=>d(N.target.value),onKeyDown:W,placeholder:"Ask about anything in the Akoroko archive…",rows:1,disabled:u||m,style:{flex:1,background:"transparent",border:"none",outline:"none",color:"#1a1a19",fontSize:"0.9rem",resize:"none",lineHeight:"1.5",maxHeight:120,overflow:"auto",fontFamily:"inherit"},onInput:N=>{const L=N.currentTarget;L.style.height="auto",L.style.height=Math.min(L.scrollHeight,120)+"px"}}),o.jsx("button",{"data-loc":"client/src/pages/Ask.tsx:1468",onClick:()=>M(l),disabled:!l.trim()||u||m,style:{backgroundColor:l.trim()&&!u&&!m?"#0A5252":"#EEEEEE",color:l.trim()&&!u&&!m?"#FFFFFF":"#AAAAAA",border:"none",borderRadius:6,padding:"8px 20px",fontSize:"0.85rem",fontWeight:500,cursor:l.trim()&&!u&&!m?"pointer":"not-allowed",transition:"background-color 0.15s",flexShrink:0,letterSpacing:"0.02em"},children:"Ask"})]}),o.jsxs("div",{"data-loc":"client/src/pages/Ask.tsx:1491",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:12,marginTop:6},children:[o.jsx("p",{"data-loc":"client/src/pages/Ask.tsx:1500",style:{color:"#AAAAAA",fontSize:"0.7rem",margin:0,textAlign:"center"},children:"Answers are drawn only from the Akoroko archive. Press Enter to submit, Shift+Enter for new line."}),i.length>0&&o.jsxs("button",{"data-loc":"client/src/pages/Ask.tsx:1512",onClick:()=>{r([]),d(""),O(Wv(qv,4))},disabled:u||m,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 10px",borderRadius:12,border:"1px solid #d0d0cc",backgroundColor:"transparent",color:u||m?"#CCCCCC":"#999999",fontSize:"0.68rem",fontWeight:400,cursor:u||m?"not-allowed":"pointer",transition:"all 0.15s",whiteSpace:"nowrap",flexShrink:0},onMouseEnter:N=>{!u&&!m&&(N.currentTarget.style.borderColor="#0A5252",N.currentTarget.style.color="#0A5252")},onMouseLeave:N=>{N.currentTarget.style.borderColor="#d0d0cc",N.currentTarget.style.color="#999999"},children:[o.jsx("svg",{"data-loc":"client/src/pages/Ask.tsx:1546",width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:o.jsx("path",{"data-loc":"client/src/pages/Ask.tsx:1547",d:"M2 2L14 14M14 2L2 14",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})}),"Clear"]})]})]})})]})]})}const Vv=["Rungano Nyoni","What happened to Showmax?","African films at Cannes 2025","Canal+ acquisition of MultiChoice","Women directors in African cinema","What did Tambay write about FESPACO?","What funding sources are available for African filmmakers?","Mahamat-Saleh Haroun","What is the state of African film distribution?","Senegalese cinema","What happened to Showmax in 2026?","African films and the Oscars","What has been written about Moroccan cinema?","How are African films using YouTube?","What does the archive say about film censorship in Africa?","African cinema and China","What has been written about Tanzanian cinema?","How do you pitch a project in the African film space?","What does the archive say about African animation?","Dani Kouyaté","What has been written about African cinema and colonialism?","Alain Gomis","What South African films are currently in post-production?","What is the status of the DTIC film incentive?","Does Morocco have a co-production treaty with France?","What streaming platform changes have happened in Africa this year?","Quels sont les films marocains en post-production?","Comment financer un long métrage sénégalais?","Quels accords de coproduction existent entre le Maroc et la France?"];function Gv(e,n){return[...e].sort(()=>Math.random()-.5).slice(0,n)}function w3({query:e,answerContent:n}){const[i,r]=j.useState(null),[l,d]=j.useState(""),[u,h]=j.useState("idle"),m=Qe.chat.submitFeedback.useMutation(),p=j.useRef(null),b=j.useCallback((x,S)=>{m.mutate({query:e,rating:x,note:S||"",answerSnippet:n.slice(0,200)}),h("submitted"),setTimeout(()=>h("hidden"),3e3)},[e,n,m]),y=x=>{i||(r(x),h("open"),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{h(S=>S==="open"?(b(x,""),"submitted"):S)},5e3))},v=()=>{p.current&&clearTimeout(p.current),i&&b(i,l)};return j.useEffect(()=>()=>{p.current&&clearTimeout(p.current)},[]),u==="hidden"?null:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:151",className:"mt-0 px-5",children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:152",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:u==="submitted"?o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:160",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5,fontStyle:"italic"},children:"Thanks for the feedback"}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:173",style:{display:"flex",alignItems:"center",gap:8},children:[o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:174",onClick:()=>y("up"),"aria-label":"Thumbs up",style:{background:"none",border:"none",cursor:i?"default":"pointer",padding:4,borderRadius:4,transition:"color 0.15s",color:i==="up"?"#0d7377":"#bbbbbb",fontSize:18,lineHeight:1},onMouseEnter:x=>{i||(x.currentTarget.style.color="#0d7377")},onMouseLeave:x=>{i||(x.currentTarget.style.color="#bbbbbb")},children:o.jsxs("svg",{"data-loc":"client/src/pages/AskPreview.tsx:195",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[o.jsx("path",{"data-loc":"client/src/pages/AskPreview.tsx:196",d:"M7 10v12"}),o.jsx("path",{"data-loc":"client/src/pages/AskPreview.tsx:197",d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2h0a3.13 3.13 0 0 1 3 3.88Z"})]})}),o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:200",onClick:()=>y("down"),"aria-label":"Thumbs down",style:{background:"none",border:"none",cursor:i?"default":"pointer",padding:4,borderRadius:4,transition:"color 0.15s",color:i==="down"?"#0d7377":"#bbbbbb",fontSize:18,lineHeight:1},onMouseEnter:x=>{i||(x.currentTarget.style.color="#0d7377")},onMouseLeave:x=>{i||(x.currentTarget.style.color="#bbbbbb")},children:o.jsxs("svg",{"data-loc":"client/src/pages/AskPreview.tsx:221",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[o.jsx("path",{"data-loc":"client/src/pages/AskPreview.tsx:222",d:"M17 14V2"}),o.jsx("path",{"data-loc":"client/src/pages/AskPreview.tsx:223",d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22h0a3.13 3.13 0 0 1-3-3.88Z"})]})})]}),u==="open"&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:228",style:{marginTop:8},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:229",style:{display:"flex",gap:8,alignItems:"flex-end"},children:[o.jsx("input",{"data-loc":"client/src/pages/AskPreview.tsx:230",type:"text",value:l,onCh
4062ange:x=>d(x.target.value),onKeyDown:x=>{x.key==="Enter"&&v()},placeholder:"Want to add anything? (optional)",style:{flex:1,fontSize:"13px",padding:"6px 10px",border:"1px solid #e0e0dc",borderRadius:6,outline:"none",color:"#3a3a38",backgroundColor:"#ffffff",fontFamily:"inherit"},onFocus:x=>{x.currentTarget.style.borderColor="#0d7377",p.current&&clearTimeout(p.current)},onBlur:x=>{x.currentTarget.style.borderColor="#e0e0dc"},autoFocus:!0}),o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:259",onClick:v,style:{fontSize:"13px",padding:"6px 14px",borderRadius:6,border:"none",backgroundColor:"#0d7377",color:"#ffffff",cursor:"pointer",fontWeight:500,flexShrink:0},children:"Submit"})]})})]})})})}const Wc=720;function A3({msg:e,onFollowUp:n,userQuery:i}){if(e.role==="user")return o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:302",className:"flex justify-start mb-3",style:{marginTop:"40px"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:303",className:"rounded-lg px-4 py-2.5",style:{backgroundColor:"#0A5252",color:"#FFFFFF",fontSize:"0.88rem",maxWidth:"85%",animation:"fadeSlideUp 0.3s ease-out"},children:e.content})});e.content.split(`
4063
4064`).filter(d=>d.trim());const l=e.content.trim().length>0;return o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:326",className:"flex justify-start mb-4",style:{marginBottom:"24px"},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:327",style:{maxWidth:Wc,width:"100%"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:329",className:"rounded-lg px-5 py-4",style:{backgroundColor:e.isError?"#FFF0F0":"#f8f8f6",color:e.isError?"#c0392b":"#3a3a38",fontSize:"16px",lineHeight:"1.7",border:`1px solid ${e.isError?"#f5c6c6":"#e8e8e4"}`,...!l&&e.isStreaming?{display:"none"}:{animation:"fadeSlideUp 0.3s ease-out"}},children:[o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:343",className:"ask-answer-markdown",children:o.jsx(_m,{"data-loc":"client/src/pages/AskPreview.tsx:344",components:{p:({children:d,...u})=>o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:349",...u,style:{marginBottom:"1em",lineHeight:"1.7"},children:d}),strong:({children:d})=>o.jsx("strong",{"data-loc":"client/src/pages/AskPreview.tsx:361",style:{fontWeight:600},children:d}),em:({children:d})=>o.jsx("em",{"data-loc":"client/src/pages/AskPreview.tsx:364",style:{fontStyle:"italic"},children:d}),ol:({children:d})=>o.jsx("ol",{"data-loc":"client/src/pages/AskPreview.tsx:367",style:{paddingLeft:"1.5em",marginBottom:"1em"},children:d}),ul:({children:d})=>o.jsx("ul",{"data-loc":"client/src/pages/AskPreview.tsx:370",style:{paddingLeft:"1.5em",marginBottom:"1em"},children:d}),li:({children:d})=>o.jsx("li",{"data-loc":"client/src/pages/AskPreview.tsx:373",style:{marginBottom:"0.3em"},children:d})},children:e.content.replace(/\[[^\]]*\](?!\()/g,"").replace(/\(\s*\)/g,"").replace(/[ \t]{2,}/g," ").replace(/[ \t]+([.,;:!?])/g,"$1").replace(new RegExp("(?<!\\\\)\\$","g"),"\\$")})}),e.isStreaming&&o.jsx("span",{"data-loc":"client/src/pages/AskPreview.tsx:394",style:{display:"inline-block",width:2,height:"1em",backgroundColor:"#0A5252",marginLeft:2,animation:"blink 1s step-end infinite",verticalAlign:"text-bottom"}})]}),!e.isStreaming&&e.sources&&e.sources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:409",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:410",style:{borderTop:"1px solid #e0e0dc",paddingTop:8,marginTop:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreview.tsx:417",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Sources: ",e.sources.map(d=>d.title).join(", "),e.extra&&e.extra>0?` + ${e.extra} more`:""]})})}),!e.isStreaming&&e.archiveSources&&e.archiveSources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:433",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:434",style:{borderTop:e.sources&&e.sources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreview.tsx:441",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Reference sources: ",e.archiveSources.map(d=>d.label).join(" | ")]})})}),!e.isStreaming&&e.registrySources&&e.registrySources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:456",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:457",style:{borderTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreview.tsx:464",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Registry data: ",e.registrySources.map(d=>d.label).join(" | ")]})})}),!e.isStreaming&&e.newsSources&&e.newsSources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:479",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:480",style:{borderTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0||e.registrySources&&e.registrySources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0||e.registrySources&&e.registrySources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreview.tsx:487",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Curated news:"," ",e.newsSources.map((d,u)=>o.jsxs("span",{"data-loc":"client/src/pages/AskPreview.tsx:497",children:[u>0&&" | ",d.url?o.jsx("a",{"data-loc":"client/src/pages/AskPreview.tsx:500",href:d.url,target:"_blank",rel:"noopener noreferrer",style:{color:"#999999",textDecoration:"underline"},children:d.label}):d.label]},u))]})})}),!e.isStreaming&&e.followUps&&e.followUps.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:519",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out 150ms both"},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:520",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:[o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:527",style:{fontSize:"13px",color:"#999999",margin:0,marginBottom:8,lineHeight:1.5},children:"You might also ask:"}),o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:538",className:"flex flex-wrap gap-2",children:e.followUps.map((d,u)=>o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:540",onClick:()=>n?.(d),className:"ask-suggested-chip",children:d},u))})]})}),!e.isStreaming&&e.followUpsLoading&&!e.followUps&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:554",className:"mt-0 px-5",children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:555",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:562",style:{fontSize:"13px",color:"#bbbbbb",margin:0,lineHeight:1.5,fontStyle:"italic"},children:"Finding related topics…"})})}),!e.isStreaming&&!e.isError&&e.content&&i&&o.jsx(w3,{"data-loc":"client/src/pages/AskPreview.tsx:578",query:i,answerContent:e.content})]})})}function k3(){return o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:588",className:"flex justify-start mb-4",children:o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:589",className:"rounded-lg px-5 py-3",style:{backgroundColor:"#f8f8f6",border:"1px solid #e8e8e4",color:"#888888",fontSize:"0.85rem",maxWidth:Wc,animation:"fadeSlideUp 0.3s ease-out"},children:o.jsxs("span",{"data-loc":"client/src/pages/AskPreview.tsx:600",className:"inline-flex gap-1 items-center",children:["Searching the archive",o.jsx("span",{"data-loc":"client/src/pages/AskPreview.tsx:602",className:"inline-flex gap-1 ml-1",children:[0,1,2].map(e=>o.jsx("span",{"data-loc":"client/src/pages/AskPreview.tsx:604",style:{width:5,height:5,borderRadius:"50%",backgroundColor:"#0A5252",display:"inline-block",animation:`bounce 1.2s ease-in-out ${e*.2}s infinite`}},e))})]})})})}function S3(){const{user:e,loading:n}=ua(),[i,r]=j.useState([]),[l,d]=j.useState(""),[u,h]=j.useState(!1),[m,p]=j.useState(!1),[b,y]=j.useState([]),v=j.useRef(null),x=j.useRef(null),S=j.useRef(null),[E,O]=j.useState(()=>Gv(Vv,6)),[C,_]=j.useState(0),q=j.useRef(null),Y=Qe.chat.suggestFollowUps.useMutation();Qe.chat.count.useQuery().data?.count;const P=j.useCallback(async(N,L,J,z,$)=>{try{r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUpsLoading:!0}),F});const Q=await Y.mutateAsync({originalQuery:N,sourcesTitles:L.map(X=>X.title),answerPreview:J,sourceRowIds:$??[]});Q.suggestions&&Q.suggestions.length>0?r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUps:Q.suggestions,followUpsLoading:!1}),F}):r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUpsLoading:!1}),F})}catch{r(Q=>{const X=[...Q];return X[z]&&(X[z]={...X[z],followUpsLoading:!1}),X})}},[Y]);Qe.system.health.useQuery({timestamp:0}
4064,{refetchInterval:600*1e3,refetchIntervalInBackground:!1}),j.useEffect(()=>{const N=()=>{if(!window.visualViewport)return;const L=Math.max(0,window.innerHeight-window.visualViewport.height);_(L)};return window.visualViewport?.addEventListener("resize",N),()=>{window.visualViewport?.removeEventListener("resize",N)}},[]);const M=async N=>{const L=N.trim();if(!L||u||m)return;S.current&&S.current.abort();const J=new AbortController;S.current=J,d(""),r(A=>[...A,{role:"user",content:L}]),h(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{const A=x.current;A&&(A.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>window.scrollBy({top:-80,behavior:"smooth"}),150))})});const z=[...b];y(A=>[...A,{role:"user",content:L}]);const $=i.filter(A=>A.role==="assistant"&&A.dateScopeKey&&A.shownIds&&A.shownIds.length>0),Q=$.length>0?$[$.length-1].dateScopeKey:null,X=Q?i.filter(A=>A.role==="assistant"&&A.dateScopeKey===Q&&A.shownIds&&A.shownIds.length>0).flatMap(A=>A.shownIds):[],F=Q?i.filter(A=>A.role==="assistant"&&A.dateScopeKey===Q&&A.shownSlugs&&A.shownSlugs.length>0).flatMap(A=>A.shownSlugs):[],D=i.filter(A=>A.role==="assistant"&&A.sourceRowIds&&A.sourceRowIds.length>0).slice(-1).flatMap(A=>A.sourceRowIds),B=i.filter(A=>A.role==="assistant"&&A.turnState!=null).slice(-3).map(A=>A.turnState).reverse(),ce=Bm(i.filter(A=>A.role==="assistant"&&A.turnStateV2!=null).map(A=>A.turnStateV2)),I=A=>fetch("/api/chat/ask-preview-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:L,conversationHistory:z,...X.length>0?{shownIds:X}:{},...F.length>0?{shownSlugs:F}:{},...D.length>0?{priorSourceRowIds:D}:{},...B.length>0?{recentTurnStates:B}:{},recentTurnStatesV2:ce}),signal:A});try{let A;try{A=await I(J.signal)}catch(me){if(me instanceof TypeError&&!J.signal.aborted)await new Promise(Ce=>setTimeout(Ce,2e3)),A=await I(J.signal);else throw me}if(!A.ok){const me=await A.json().catch(()=>({error:"Something went wrong"})),Ce=me.error==="Rate limit exceeded"?"You're sending queries too quickly. Please wait a moment before trying again.":me.error==="Not authenticated"||me.error==="Invalid session"||me.error==="Not a subscriber"?"Archive access is available to active Akoroko subscribers only.":me.error||"Something went wrong. Please try again.";r(Te=>[...Te,{role:"assistant",content:Ce,isError:!0}]),h(!1);return}h(!1),p(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{q.current&&(q.current.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>window.scrollBy({top:-80,behavior:"smooth"}),150))})});const U=i.length+1;r(me=>[...me,{role:"assistant",content:"",isStreaming:!0}]);const k=A.body.getReader(),V=new TextDecoder;let ae="",ue="",ne=null;const we=35,je=[];let Fe=null,rt=!1;for(Fe=setInterval(()=>{const me=je.shift();me&&(ae+=me,r(Ce=>{const Te=[...Ce],$e=Te.length-1;return Te[$e]&&Te[$e].role==="assistant"&&(Te[$e]={...Te[$e],content:ae,isStreaming:!0}),Te})),je.length===0&&rt&&Fe&&(clearInterval(Fe),Fe=null)},we);;){const{done:me,value:Ce}=await k.read();if(me)break;ue+=V.decode(Ce,{stream:!0});const Te=ue.split(`
4065`);ue=Te.pop()??"";for(const $e of Te){if(!$e.startsWith("data: "))continue;const tn=$e.slice(6);if(tn!=="[DONE]")try{const Ue=JSON.parse(tn);if(Ue.type==="text"&&Ue.content)je.push(Ue.content);else if(Ue.type==="done")ne=Ue;else if(Ue.type==="error"){Fe&&(clearInterval(Fe),Fe=null),r(fn=>{const lt=[...fn],Je=lt.length-1;return lt[Je]&&lt[Je].role==="assistant"&&(lt[Je]={...lt[Je],content:Ue.content||"Something went wrong.",isError:!0,isStreaming:!1}),lt}),p(!1);return}}catch{}}}rt=!0,await new Promise(me=>{const Ce=setInterval(()=>{je.length===0&&(clearInterval(Ce),Fe&&(clearInterval(Fe),Fe=null),me())},we)}),p(!1),r(me=>{const Ce=[...me],Te=Ce.length-1;return Ce[Te]&&Ce[Te].role==="assistant"&&(Ce[Te]={...Ce[Te],content:ae,isStreaming:!1,sources:ne?.suppressAll?[]:ne?.sources??[],extra:ne?.suppressAll?0:ne?.extra??0,archiveSources:ne?.suppressAll?[]:ne?.archiveSources??[],registrySources:ne?.suppressAll?[]:ne?.registrySources??[],newsSources:ne?.suppressAll?[]:ne?.newsSources??[],shownIds:ne?.shownIds??[],shownSlugs:ne?.shownSlugs??[],dateScopeKey:ne?.dateScopeKey??null,sourceRowIds:ne?.sourceRowIds??[],suppressAll:ne?.
4065suppressAll??!1,turnState:ne?.turnState??null,turnStateV2:ne?.turnStateV2??null}),Ce}),y(me=>[...me,{role:"assistant",content:ae}]);const Mt=ne?.sources&&ne.sources.length>0?ne.sources:ne?.fallbackSources??[];Mt.length>0&&!ne?.suppressFollowUps&&!ne?.suppressAll&&setTimeout(()=>{P(L,Mt,ae.slice(0,500),U,ne?.sourceRowIds??[])},500)}catch(A){if(A instanceof DOMException&&A.name==="AbortError"){p(!1),h(!1),r(k=>{const V=[...k],ae=V.length-1;return V[ae]&&V[ae].role==="assistant"&&V[ae].isStreaming&&(V[ae]={...V[ae],isStreaming:!1}),V});return}const U=A instanceof Error?A.message:"Something went wrong. Please try again.";r(k=>{const V=k[k.length-1];if(V&&V.role==="assistant"&&V.isStreaming){const ae=[...k];return ae[ae.length-1]={...V,content:U,isError:!0,isStreaming:!1},ae}return[...k,{role:"assistant",content:U,isError:!0}]}),h(!1),p(!1)}finally{h(!1),window.matchMedia("(hover: hover) and (pointer: fine)").matches&&setTimeout(()=>v.current?.focus(),100)}},W=N=>{N.key==="Enter"&&!N.shiftKey&&(N.preventDefault(),M(l))};return!n&&!e?o.jsxs(Wt,{"data-loc":"client/src/pages/AskPreview.tsx:1096",children:[o.jsx(Vt,{"data-loc":"client/src/pages/AskPreview.tsx:1097",title:"Ask Preview — Akoroko",description:"Search the full Akoroko dispatch archive using AI. Available to active subscribers.",canonical:"/ask-preview",noindex:!0}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1103",className:"min-h-screen flex flex-col items-center px-4",style:{backgroundColor:"#FAFAFA",paddingTop:"15vh"},children:[o.jsx("img",{"data-loc":"client/src/pages/AskPreview.tsx:1107",src:en,alt:"Akoroko Premium",style:{width:48,marginBottom:24,opacity:.85,filter:"brightness(0) saturate(100%) invert(27%) sepia(30%) saturate(1200%) hue-rotate(150deg) brightness(95%) contrast(95%)"}}),o.jsx("h1",{"data-loc":"client/src/pages/AskPreview.tsx:1117",style:{color:"#1a1a19",fontSize:"1.5rem",fontFamily:"Georgia, serif",marginBottom:12,textAlign:"center"},children:"Ask Akoroko Premium"}),o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:1128",style:{color:"#555555",fontSize:"0.9rem",marginBottom:24,textAlign:"center",maxWidth:360},children:"This feature is available to active Akoroko subscribers. Sign in to continue."}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1140",style:{display:"flex",gap:12,alignItems:"center"},children:[o.jsx("a",{"data-loc":"client/src/pages/AskPreview.tsx:1141",href:Zo(),children:o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:1142",style:{backgroundColor:"#0A5252",color:"#FFFFFF",border:"none",borderRadius:6,padding:"10px 24px",fontSize:"0.85rem",fontWeight:500,cursor:"pointer",letterSpacing:"0.04em"},children:"SIGN IN"})}),o.jsx(pe,{"data-loc":"client/src/pages/AskPreview.tsx:1158",href:"/subscribe",children:o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:1159",style:{backgroundColor:"transparent",color:"#0A5252",border:"1px solid #0A5252",borderRadius:6,padding:"10px 24px",fontSize:"0.85rem",fontWeight:500,cursor:"pointer",letterSpacing:"0.04em"},children:"SUBSCRIBE"})})]})]})]}):o.jsxs(Wt,{"data-loc":"client/src/pages/AskPreview.tsx:1183",children:[o.jsx(Vt,{"data-loc":"client/src/pages/AskPreview.tsx:1184",title:"Ask Preview — Akoroko",description:"Search the full Akoroko dispatch archive using AI. Available to active subscribers.",canonical:"/ask-preview",noindex:!0}),o.jsx("style",{"data-loc":"client/src/pages/AskPreview.tsx:1190",children:`
4066        @keyframes bounce {
4067          0%, 80%, 100% { transform: translateY(0); }
4068          40% { transform: translateY(-6px); }
4069        }
4070        @keyframes blink {
4071          0%, 100% { opacity: 1; }
4072          50% { opacity: 0; }
4073        }
4074        @keyframes fadeSlideUp {
4075          from { opacity: 0; transform: translateY(8px); }
4076          to { opacity: 1; transform: translateY(0); }
4077        }
4078        .ask-suggested-chip {
4079          display: inline-block;
4080          padding: 6px 14px;
4081          border-radius: 20px;
4082          font-size: 0.82rem;
4083          cursor: pointer;
4084          transition: all 0.15s;
4085          border: 1.5px solid #0A5252;
4086          background-color: #FFFFFF;
4087          color: #0A5252;
4088          font-weight: 400;
4089          line-height: 1.4;
4090          text-align: left;
4091        }
4092        .ask-suggested-chip:hover {
4093          background-color: #0A5252;
4094          color: #FFFFFF;
4095        }
4096        .ask-suggested-chip:active {
4097          background-color: #084040;
4098          color: #FFFFFF;
4099        }
4100      `}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1226",className:"flex flex-col",style:{backgroundColor:"#FAFAFA",minHeight:"100vh"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1234",style:{backgroundColor:"#1a1a19",color:"#FFFFFF",padding:"28px 24px 24px",textAlign:"center",borderBottom:"3px solid #0A5252"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1243",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:14},children:[o.jsx("img",{"data-loc":"client/src/pages/AskPreview.tsx:1244",src:en,alt:"Akoroko Premium",style:{width:36,height:36,filter:"drop-shadow(0 0 6px rgba(13, 115, 119, 0.5))"}}),o.jsxs("h1",{"data-loc":"client/src/pages/AskPreview.tsx:1253",style:{fontSize:"1.625rem",fontFamily:"Georgia, serif",fontWeight:500,margin:0,letterSpacing:"-0.01em"},children:["Ask the"," ",o.jsx("span",{"data-loc":"client/src/pages/AskPreview.tsx:1263",style:{background:"linear-gradient(135deg, #ffffff 0%, #0d7377 50%, #0a9a9f 100%)",WebkitBackgroun
4100dClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text",fontWeight:600},children:"Akoroko Premium"})," ","Archive"]})]}),o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:1277",style:{color:"rgba(255,255,255,0.55)",fontSize:"0.875rem",marginTop:8,letterSpacing:"0.02em",lineHeight:1.4},children:"Drawing from 2,595 sources across African film, television, and digital media · 2022–present"}),o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:1288",style:{color:"rgba(255,255,255,0.90)",fontSize:"0.85rem",fontWeight:500,marginTop:14,letterSpacing:"0.01em",lineHeight:1.4,fontStyle:"italic",borderTop:"1px solid rgba(255,255,255,0.12)",paddingTop:12},children:"Posez vos questions en français — le système répond dans la langue de votre question."})]}),o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:1306",className:"flex-1 overflow-y-auto px-4 py-6",style:{paddingBottom:140},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1310",style:{maxWidth:Wc,margin:"0 auto",width:"100%"},children:[i.length===0&&!u&&o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1313",style:{paddingTop:40,textAlign:"center"},children:[o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:1319",style:{color:"#999999",fontSize:"0.82rem",marginBottom:16,textTransform:"uppercase",letterSpacing:"0.08em"},children:"Try asking"}),o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:1330",className:"flex flex-wrap gap-2",style:{justifyContent:"center"},children:E.map((N,L)=>o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:1332",onClick:()=>M(N),className:"ask-suggested-chip",children:N},L))})]}),i.map((N,L)=>{const J=N.role==="user"&&(L===i.length-1||L===i.length-2&&i[i.length-1]?.role==="assistant"),z=N.role==="assistant"&&L===i.length-1,$=N.role==="assistant"&&L>0&&i[L-1]?.role==="user"?i[L-1].content:void 0;return o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:1358",ref:J?x:z?q:void 0,style:{scrollMarginTop:80},children:o.jsx(A3,{"data-loc":"client/src/pages/AskPreview.tsx:1363",msg:N,onFollowUp:M,userQuery:$})},L)}),u&&o.jsx(k3,{"data-loc":"client/src/pages/AskPreview.tsx:1369"}),m&&o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:1373",style:{display:"flex",justifyContent:"center",marginTop:8},children:o.jsxs("button",{"data-loc":"client/src/pages/AskPreview.tsx:1374",onClick:()=>S.current?.abort(),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 16px",borderRadius:20,border:"1.5px solid #d0d0cc",backgroundColor:"#FFFFFF",color:"#666666",fontSize:"0.8rem",fontWeight:400,cursor:"pointer",transition:"all 0.15s"},onMouseEnter:N=>{N.currentTarget.style.borderColor="#0A5252",N.currentTarget.style.color="#0A5252"},onMouseLeave:N=>{N.currentTarget.style.borderColor="#d0d0cc",N.currentTarget.style.color="#666666"},children:[o.jsx("svg",{"data-loc":"client/src/pages/AskPreview.tsx:1399",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:o.jsx("rect",{"data-loc":"client/src/pages/AskPreview.tsx:1400",x:"2",y:"2",width:"10",height:"10",rx:"2",fill:"currentColor"})}),"Stop generating"]})})]})}),o.jsx("div",{"data-loc":"client/src/pages/AskPreview.tsx:1410",style:{position:"fixed",bottom:C,left:0,right:0,backgroundColor:"#FAFAFA",borderTop:"1px solid #e0e0dc",paddingTop:"16px",paddingBottom:"calc(16px + env(safe-area-inset-bottom, 0px))",zIndex:10},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1428",style:{maxWidth:Wc,width:"100%",margin:"0 auto",paddingLeft:16,paddingRight:16},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1437",style:{display:"flex",gap:10,alignItems:"flex-end",backgroundColor:"#FFFFFF",border:"1.5px solid #0A5252",borderRadius:10,padding:"10px 14px",boxShadow:"0 1px 4px rgba(0,0,0,0.06)"},children:[o.jsx("textarea",{"data-loc":"client/src/pages/AskPreview.tsx:1449",ref:v,value:l,onChange:N=>d(N.target.value),onKeyDown:W,placeholder:"Ask about anything in the Akoroko archive…",rows:1,disabled:u||m,style:{flex:1,background:"transparent",border:"none",outline:"none",color:"#1a1a19",fontSize:"0.9rem",resize:"none",lineHeight:"1.5",maxHeight:120,overflow:"auto",fontFamily:"inherit"},onInput:N=>{const L=N.currentTarget;L.style.height="auto",L.style.height=Math.min(L.scrollHeight,120)+"px"}}),o.jsx("button",{"data-loc":"client/src/pages/AskPreview.tsx:1476",onClick:()=>M(l),disabled:!l.trim()||u||m,style:{backgroundColor:l.trim()&&!u&&!m?"#0A5252":"#EEEEEE",color:l.trim()&&!u&&!m?"#FFFFFF":"#AAAAAA",border:"none",borderRadius:6,padding:"8px 20px",fontSize:"0.85rem",fontWeight:500,cursor:l.trim()&&!u&&!m?"pointer":"not-allowed",transition:"background-color 0.15s",flexShrink:0,letterSpacing:"0.02em"},children:"Ask"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreview.tsx:1499",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:12,marginTop:6},children:[o.jsx("p",{"data-loc":"client/src/pages/AskPreview.tsx:1508",style:{color:"#AAAAAA",fontSize:"0.7rem",margin:0,textAlign:"center"}
4100,children:"Answers are drawn only from the Akoroko archive. Press Enter to submit, Shift+Enter for new line."}),i.length>0&&o.jsxs("button",{"data-loc":"client/src/pages/AskPreview.tsx:1520",onClick:()=>{r([]),d(""),O(Gv(Vv,4))},disabled:u||m,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 10px",borderRadius:12,border:"1px solid #d0d0cc",backgroundColor:"transparent",color:u||m?"#CCCCCC":"#999999",fontSize:"0.68rem",fontWeight:400,cursor:u||m?"not-allowed":"pointer",transition:"all 0.15s",whiteSpace:"nowrap",flexShrink:0},onMouseEnter:N=>{!u&&!m&&(N.currentTarget.style.borderColor="#0A5252",N.currentTarget.style.color="#0A5252")},onMouseLeave:N=>{N.currentTarget.style.borderColor="#d0d0cc",N.currentTarget.style.color="#999999"},children:[o.jsx("svg",{"data-loc":"client/src/pages/AskPreview.tsx:1554",width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:o.jsx("path",{"data-loc":"client/src/pages/AskPreview.tsx:1555",d:"M2 2L14 14M14 2L2 14",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})}),"Clear"]})]})]})})]})]})}const Kv=["Rungano Nyoni","What happened to Showmax?","African films at Cannes 2025","Canal+ acquisition of MultiChoice","Women directors in African cinema","What did Tambay write about FESPACO?","What funding sources are available for African filmmakers?","Mahamat-Saleh Haroun","What is the state of African film distribution?","Senegalese cinema","What happened to Showmax in 2026?","African films and the Oscars","What has been written about Moroccan cinema?","How are African films using YouTube?","What does the archive say about film censorship in Africa?","African cinema and China","What has been written about Tanzanian cinema?","How do you pitch a project in the African film space?","What does the archive say about African animation?","Dani Kouyaté","What has been written about African cinema and colonialism?","Alain Gomis","What South African films are currently in post-production?","What is the status of the DTIC film incentive?","Does Morocco have a co-production treaty with France?","What streaming platform changes have happened in Africa this year?","Quels sont les films marocains en post-production?","Comment financer un long métrage sénégalais?","Quels accords de coproduction existent entre le Maroc et la France?"];function Yv(e,n){return[...e].sort(()=>Math.random()-.5).slice(0,n)}function T3({query:e,answerContent:n}){const[i,r]=j.useState(null),[l,d]=j.useState(""),[u,h]=j.useState("idle"),m=Qe.chat.submitFeedback.useMutation(),p=j.useRef(null),b=j.useCallback((x,S)=>{m.mutate({query:e,rating:x,note:S||"",answerSnippet:n.slice(0,200)}),h("submitted"),setTimeout(()=>h("hidden"),3e3)},[e,n,m]),y=x=>{i||(r(x),h("open"),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{h(S=>S==="open"?(b(x,""),"submitted"):S)},5e3))},v=()=>{p.current&&clearTimeout(p.current),i&&b(i,l)};return j.useEffect(()=>()=>{p.current&&clearTimeout(p.current)},[]),u==="hidden"?null:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:151",className:"mt-0 px-5",children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:152",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:u==="submitted"?o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:160",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5,fontStyle:"italic"},children:"Thanks for the feedback"}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:173",style:{display:"flex",alignItems:"center",gap:8},children:[o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:174",onClick:()=>y("up"),"aria-label":"Thumbs up",style:{background:"none",border:"none",cursor:i?"default":"pointer",padding:4,borderRadius:4,transition:"color 0.15s",color:i==="up"?"#0d7377":"#bbbbbb",fontSize:18,lineHeight:1},onMouseEnter:x=>{i||(x.currentTarget.style.color="#0d7377")},onMouseLeave:x=>{i||(x.currentTarget.style.color="#bbbbbb")},children:o.jsxs("svg",{"data-loc":"client/src/pages/AskPreviewV2.tsx:195",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[o.jsx("path",{"data-loc":"client/src/pages/AskPreviewV2.tsx:196",d:"M7 10v12"}),o.jsx("path",{"data-loc":"client/src/pages/AskPreviewV2.tsx:197",d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2h0a3.13 3.13 0 0 1 3 3.88Z"})]})}),o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:200",onClick:()=>y("down"),"aria-label":"Thumbs down",style:{background:"none",border:"none",cursor:i?"default":"pointer",padding:4,borderRadius:4,transition:"color 0.15s",color:i==="down"?"#0d7377":"#bbbbbb",fontSize:18,lineHeight:1},onMouseEnter:x=>{i||(x.currentTarget.style.color="#0d7377")},onMouseLeave:x=>{i||(x.currentTarget.style.color="#bbbbbb")},children:o.jsxs("svg",{"data-loc":"client/src/pages/AskPreviewV2.tsx:221",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[o.jsx("path",{"data-loc":"client/src/pages/AskPreviewV2.tsx:222",d:"M17 14V2"}),o.jsx("path",{"data-loc":"client/src/pages/AskPreviewV2.tsx:223",d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22h0a3.13 3.13 0 0 1-3-3.88Z"})]})})]}),u==="open"&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:228",style:{marginTop:8},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:229",style:{display:"flex",gap:8,alignItems:"flex-end"},children:[o.jsx("input",{"data-loc":"client/src/pages/AskPreviewV2.tsx:230",type:"text",value:l,onCh
4100ange:x=>d(x.target.value),onKeyDown:x=>{x.key==="Enter"&&v()},placeholder:"Want to add anything? (optional)",style:{flex:1,fontSize:"13px",padding:"6px 10px",border:"1px solid #e0e0dc",borderRadius:6,outline:"none",color:"#3a3a38",backgroundColor:"#ffffff",fontFamily:"inherit"},onFocus:x=>{x.currentTarget.style.borderColor="#0d7377",p.current&&clearTimeout(p.current)},onBlur:x=>{x.currentTarget.style.borderColor="#e0e0dc"},autoFocus:!0}),o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:259",onClick:v,style:{fontSize:"13px",padding:"6px 14px",borderRadius:6,border:"none",backgroundColor:"#0d7377",color:"#ffffff",cursor:"pointer",fontWeight:500,flexShrink:0},children:"Submit"})]})})]})})})}const Vc=720;function C3({msg:e,onFollowUp:n,userQuery:i}){if(e.role==="user")return o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:302",className:"flex justify-start mb-3",style:{marginTop:"40px"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:303",className:"rounded-lg px-4 py-2.5",style:{backgroundColor:"#0A5252",color:"#FFFFFF",fontSize:"0.88rem",maxWidth:"85%",animation:"fadeSlideUp 0.3s ease-out"},children:e.content})});e.content.split(`
4101
4102`).filter(d=>d.trim());const l=e.content.trim().length>0;return o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:326",className:"flex justify-start mb-4",style:{marginBottom:"24px"},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:327",style:{maxWidth:Vc,width:"100%"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:329",className:"rounded-lg px-5 py-4",style:{backgroundColor:e.isError?"#FFF0F0":"#f8f8f6",color:e.isError?"#c0392b":"#3a3a38",fontSize:"16px",lineHeight:"1.7",border:`1px solid ${e.isError?"#f5c6c6":"#e8e8e4"}`,...!l&&e.isStreaming?{display:"none"}:{animation:"fadeSlideUp 0.3s ease-out"}},children:[o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:343",className:"ask-answer-markdown",children:o.jsx(_m,{"data-loc":"client/src/pages/AskPreviewV2.tsx:344",components:{p:({children:d,...u})=>o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:349",...u,style:{marginBottom:"1em",lineHeight:"1.7"},children:d}),strong:({children:d})=>o.jsx("strong",{"data-loc":"client/src/pages/AskPreviewV2.tsx:361",style:{fontWeight:600},children:d}),em:({children:d})=>o.jsx("em",{"data-loc":"client/src/pages/AskPreviewV2.tsx:364",style:{fontStyle:"italic"},children:d}),ol:({children:d})=>o.jsx("ol",{"data-loc":"client/src/pages/AskPreviewV2.tsx:367",style:{paddingLeft:"1.5em",marginBottom:"1em"},children:d}),ul:({children:d})=>o.jsx("ul",{"data-loc":"client/src/pages/AskPreviewV2.tsx:370",style:{paddingLeft:"1.5em",marginBottom:"1em"},children:d}),li:({children:d})=>o.jsx("li",{"data-loc":"client/src/pages/AskPreviewV2.tsx:373",style:{marginBottom:"0.3em"},children:d})},children:e.content.replace(/\[[^\]]*\](?!\()/g,"").replace(/\(\s*\)/g,"").replace(/[ \t]{2,}/g," ").replace(/[ \t]+([.,;:!?])/g,"$1").replace(new RegExp("(?<!\\\\)\\$","g"),"\\$")})}),e.isStreaming&&o.jsx("span",{"data-loc":"client/src/pages/AskPreviewV2.tsx:394",style:{display:"inline-block",width:2,height:"1em",backgroundColor:"#0A5252",marginLeft:2,animation:"blink 1s step-end infinite",verticalAlign:"text-bottom"}})]}),!e.isStreaming&&e.sources&&e.sources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:409",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:410",style:{borderTop:"1px solid #e0e0dc",paddingTop:8,marginTop:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:417",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Sources: ",e.sources.map(d=>d.title).join(", "),e.extra&&e.extra>0?` + ${e.extra} more`:""]})})}),!e.isStreaming&&e.archiveSources&&e.archiveSources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:433",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:434",style:{borderTop:e.sources&&e.sources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:441",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Reference sources: ",e.archiveSources.map(d=>d.label).join(" | ")]})})}),!e.isStreaming&&e.registrySources&&e.registrySources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:456",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:457",style:{borderTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:464",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Registry data: ",e.registrySources.map(d=>d.label).join(" | ")]})})}),!e.isStreaming&&e.newsSources&&e.newsSources.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:479",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out"},children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:480",style:{borderTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0||e.registrySources&&e.registrySources.length>0?void 0:"1px solid #e0e0dc",paddingTop:8,marginTop:e.sources&&e.sources.length>0||e.archiveSources&&e.archiveSources.length>0||e.registrySources&&e.registrySources.length>0?4:0},children:o.jsxs("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:487",style:{fontSize:"13px",color:"#999999",margin:0,lineHeight:1.5},children:["Curated news:"," ",e.newsSources.map((d,u)=>o.jsxs("span",{"data-loc":"client/src/pages/AskPreviewV2.tsx:497",children:[u>0&&" | ",d.url?o.jsx("a",{"data-loc":"client/src/pages/AskPreviewV2.tsx:500",href:d.url,target:"_blank",rel:"noopener noreferrer",style:{color:"#999999",textDecoration:"underline"},children:d.label}):d.label]},u))]})})}),!e.isStreaming&&e.followUps&&e.followUps.length>0&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:519",className:"mt-0 px-5",style:{animation:"fadeSlideUp 0.3s ease-out 150ms both"},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:520",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:[o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:527",style:{fontSize:"13px",color:"#999999",margin:0,marginBottom:8,lineHeight:1.5},children:"You might also ask:"}),o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:538",className:"flex flex-wrap gap-2",children:e.followUps.map((d,u)=>o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:540",onClick:()=>n?.(d),className:"ask-suggested-chip",children:d},u))})]})}),!e.isStreaming&&e.followUpsLoading&&!e.followUps&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:554",className:"mt-0 px-5",children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:555",style:{borderTop:"1px solid #e0e0dc",paddingTop:10,marginTop:8},children:o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:562",style:{fontSize:"13px",color:"#bbbbbb",margin:0,lineHeight:1.5,fontStyle:"italic"},children:"Finding related topics…"})})}),!e.isStreaming&&!e.isError&&e.content&&i&&o.jsx(T3,{"data-loc":"client/src/pages/AskPreviewV2.tsx:578",query:i,answerContent:e.content})]})})}function j3(){return o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:588",className:"flex justify-start mb-4",children:o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:589",className:"rounded-lg px-5 py-3",style:{backgroundColor:"#f8f8f6",border:"1px solid #e8e8e4",color:"#888888",fontSize:"0.85rem",maxWidth:Vc,animation:"fadeSlideUp 0.3s ease-out"},children:o.jsxs("span",{"data-loc":"client/src/pages/AskPreviewV2.tsx:600",className:"inline-flex gap-1 items-center",children:["Searching the archive",o.jsx("span",{"data-loc":"client/src/pages/AskPreviewV2.tsx:602",className:"inline-flex gap-1 ml-1",children:[0,1,2].map(e=>o.jsx("span",{"data-loc":"client/src/pages/AskPreviewV2.tsx:604",style:{width:5,height:5,borderRadius:"50%",backgroundColor:"#0A5252",display:"inline-block",animation:`bounce 1.2s ease-in-out ${e*.2}s infinite`}},e))})]})})})}function F3(){const{user:e,loading:n}=ua(),[i,r]=j.useState([]),[l,d]=j.useState(""),[u,h]=j.useState(!1),[m,p]=j.useState(!1),[b,y]=j.useState([]),v=j.useRef(null),x=j.useRef(null),S=j.useRef(null),[E,O]=j.useState(()=>Yv(Kv,6)),[C,_]=j.useState(0),q=j.useRef(null),Y=Qe.chat.suggestFollowUps.useMutation();Qe.chat.count.useQuery().data?.count;const P=j.useCallback(async(N,L,J,z,$)=>{try{r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUpsLoading:!0}),F});const Q=await Y.mutateAsync({originalQuery:N,sourcesTitles:L.map(X=>X.title),answerPreview:J,sourceRowIds:$??[]});Q.suggestions&&Q.suggestions.length>0?r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUps:Q.suggestions,followUpsLoading:!1}),F}):r(X=>{const F=[...X];return F[z]&&(F[z]={...F[z],followUpsLoading:!1}),F})}catch{r(Q=>{const X=[...Q];return X[z]&&(X[z]={...X[z],followUpsLoading:!1}),X})}},[Y]);Qe.system.health.useQuery({timestamp:0}
4102,{refetchInterval:600*1e3,refetchIntervalInBackground:!1}),j.useEffect(()=>{const N=()=>{if(!window.visualViewport)return;const L=Math.max(0,window.innerHeight-window.visualViewport.height);_(L)};return window.visualViewport?.addEventListener("resize",N),()=>{window.visualViewport?.removeEventListener("resize",N)}},[]);const M=async N=>{const L=N.trim();if(!L||u||m)return;S.current&&S.current.abort();const J=new AbortController;S.current=J,d(""),r(A=>[...A,{role:"user",content:L}]),h(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{const A=x.current;A&&(A.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>window.scrollBy({top:-80,behavior:"smooth"}),150))})});const z=[...b];y(A=>[...A,{role:"user",content:L}]);const $=i.filter(A=>A.role==="assistant"&&A.dateScopeKey&&A.shownIds&&A.shownIds.length>0),Q=$.length>0?$[$.length-1].dateScopeKey:null,X=Q?i.filter(A=>A.role==="assistant"&&A.dateScopeKey===Q&&A.shownIds&&A.shownIds.length>0).flatMap(A=>A.shownIds):[],F=Q?i.filter(A=>A.role==="assistant"&&A.dateScopeKey===Q&&A.shownSlugs&&A.shownSlugs.length>0).flatMap(A=>A.shownSlugs):[],D=i.filter(A=>A.role==="assistant"&&A.sourceRowIds&&A.sourceRowIds.length>0).slice(-1).flatMap(A=>A.sourceRowIds),B=i.filter(A=>A.role==="assistant"&&A.turnState!=null).slice(-3).map(A=>A.turnState).reverse(),ce=Bm(i.filter(A=>A.role==="assistant"&&A.turnStateV2!=null).map(A=>A.turnStateV2)),I=A=>fetch("/api/chat/ask-preview-v2-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:L,conversationHistory:z,...X.length>0?{shownIds:X}:{},...F.length>0?{shownSlugs:F}:{},...D.length>0?{priorSourceRowIds:D}:{},...B.length>0?{recentTurnStates:B}:{},recentTurnStatesV2:ce}),signal:A});try{let A;try{A=await I(J.signal)}catch(me){if(me instanceof TypeError&&!J.signal.aborted)await new Promise(Ce=>setTimeout(Ce,2e3)),A=await I(J.signal);else throw me}if(!A.ok){const me=await A.json().catch(()=>({error:"Something went wrong"})),Ce=me.error==="Rate limit exceeded"?"You're sending queries too quickly. Please wait a moment before trying again.":me.error==="Not authenticated"||me.error==="Invalid session"||me.error==="Not a subscriber"?"Archive access is available to active Akoroko subscribers only.":me.error||"Something went wrong. Please try again.";r(Te=>[...Te,{role:"assistant",content:Ce,isError:!0}]),h(!1);return}h(!1),p(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{q.current&&(q.current.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>window.scrollBy({top:-80,behavior:"smooth"}),150))})});const U=i.length+1;r(me=>[...me,{role:"assistant",content:"",isStreaming:!0}]);const k=A.body.getReader(),V=new TextDecoder;let ae="",ue="",ne=null;const we=35,je=[];let Fe=null,rt=!1;for(Fe=setInterval(()=>{const me=je.shift();me&&(ae+=me,r(Ce=>{const Te=[...Ce],$e=Te.length-1;return Te[$e]&&Te[$e].role==="assistant"&&(Te[$e]={...Te[$e],content:ae,isStreaming:!0}),Te})),je.length===0&&rt&&Fe&&(clearInterval(Fe),Fe=null)},we);;){const{done:me,value:Ce}=await k.read();if(me)break;ue+=V.decode(Ce,{stream:!0});const Te=ue.split(`
4103`);ue=Te.pop()??"";for(const $e of Te){if(!$e.startsWith("data: "))continue;const tn=$e.slice(6);if(tn!=="[DONE]")try{const Ue=JSON.parse(tn);if(Ue.type==="text"&&Ue.content)je.push(Ue.content);else if(Ue.type==="done")ne=Ue;else if(Ue.type==="error"){Fe&&(clearInterval(Fe),Fe=null),r(fn=>{const lt=[...fn],Je=lt.length-1;return lt[Je]&&lt[Je].role==="assistant"&&(lt[Je]={...lt[Je],content:Ue.content||"Something went wrong.",isError:!0,isStreaming:!1}),lt}),p(!1);return}}catch{}}}rt=!0,await new Promise(me=>{const Ce=setInterval(()=>{je.length===0&&(clearInterval(Ce),Fe&&(clearInterval(Fe),Fe=null),me())},we)}),p(!1),r(me=>{const Ce=[...me],Te=Ce.length-1;return Ce[Te]&&Ce[Te].role==="assistant"&&(Ce[Te]={...Ce[Te],content:ae,isStreaming:!1,sources:ne?.suppressAll?[]:ne?.sources??[],extra:ne?.suppressAll?0:ne?.extra??0,archiveSources:ne?.suppressAll?[]:ne?.archiveSources??[],registrySources:ne?.suppressAll?[]:ne?.registrySources??[],newsSources:ne?.suppressAll?[]:ne?.newsSources??[],shownIds:ne?.shownIds??[],shownSlugs:ne?.shownSlugs??[],dateScopeKey:ne?.dateScopeKey??null,sourceRowIds:ne?.sourceRowIds??[],suppressAll:ne?.
4103suppressAll??!1,turnState:ne?.turnState??null,turnStateV2:ne?.turnStateV2??null}),Ce}),y(me=>[...me,{role:"assistant",content:ae}]);const Mt=ne?.sources&&ne.sources.length>0?ne.sources:ne?.fallbackSources??[];Mt.length>0&&!ne?.suppressFollowUps&&!ne?.suppressAll&&setTimeout(()=>{P(L,Mt,ae.slice(0,500),U,ne?.sourceRowIds??[])},500)}catch(A){if(A instanceof DOMException&&A.name==="AbortError"){p(!1),h(!1),r(k=>{const V=[...k],ae=V.length-1;return V[ae]&&V[ae].role==="assistant"&&V[ae].isStreaming&&(V[ae]={...V[ae],isStreaming:!1}),V});return}const U=A instanceof Error?A.message:"Something went wrong. Please try again.";r(k=>{const V=k[k.length-1];if(V&&V.role==="assistant"&&V.isStreaming){const ae=[...k];return ae[ae.length-1]={...V,content:U,isError:!0,isStreaming:!1},ae}return[...k,{role:"assistant",content:U,isError:!0}]}),h(!1),p(!1)}finally{h(!1),window.matchMedia("(hover: hover) and (pointer: fine)").matches&&setTimeout(()=>v.current?.focus(),100)}},W=N=>{N.key==="Enter"&&!N.shiftKey&&(N.preventDefault(),M(l))};return!n&&!e?o.jsxs(Wt,{"data-loc":"client/src/pages/AskPreviewV2.tsx:1096",children:[o.jsx(Vt,{"data-loc":"client/src/pages/AskPreviewV2.tsx:1097",title:"Ask Preview — Akoroko",description:"Search the full Akoroko dispatch archive using AI. Available to active subscribers.",canonical:"/ask-preview",noindex:!0}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1103",className:"min-h-screen flex flex-col items-center px-4",style:{backgroundColor:"#FAFAFA",paddingTop:"15vh"},children:[o.jsx("img",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1107",src:en,alt:"Akoroko Premium",style:{width:48,marginBottom:24,opacity:.85,filter:"brightness(0) saturate(100%) invert(27%) sepia(30%) saturate(1200%) hue-rotate(150deg) brightness(95%) contrast(95%)"}}),o.jsx("h1",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1117",style:{color:"#1a1a19",fontSize:"1.5rem",fontFamily:"Georgia, serif",marginBottom:12,textAlign:"center"},children:"Ask Akoroko Premium"}),o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1128",style:{color:"#555555",fontSize:"0.9rem",marginBottom:24,textAlign:"center",maxWidth:360},children:"This feature is available to active Akoroko subscribers. Sign in to continue."}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1140",style:{display:"flex",gap:12,alignItems:"center"},children:[o.jsx("a",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1141",href:Zo(),children:o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1142",style:{backgroundColor:"#0A5252",color:"#FFFFFF",border:"none",borderRadius:6,padding:"10px 24px",fontSize:"0.85rem",fontWeight:500,cursor:"pointer",letterSpacing:"0.04em"},children:"SIGN IN"})}),o.jsx(pe,{"data-loc":"client/src/pages/AskPreviewV2.tsx:1158",href:"/subscribe",children:o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1159",style:{backgroundColor:"transparent",color:"#0A5252",border:"1px solid #0A5252",borderRadius:6,padding:"10px 24px",fontSize:"0.85rem",fontWeight:500,cursor:"pointer",letterSpacing:"0.04em"},children:"SUBSCRIBE"})})]})]})]}):o.jsxs(Wt,{"data-loc":"client/src/pages/AskPreviewV2.tsx:1183",children:[o.jsx(Vt,{"data-loc":"client/src/pages/AskPreviewV2.tsx:1184",title:"Ask Preview — Akoroko",description:"Search the full Akoroko dispatch archive using AI. Available to active subscribers.",canonical:"/ask-preview",noindex:!0}),o.jsx("style",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1190",children:`
4104        @keyframes bounce {
4105          0%, 80%, 100% { transform: translateY(0); }
4106          40% { transform: translateY(-6px); }
4107        }
4108        @keyframes blink {
4109          0%, 100% { opacity: 1; }
4110          50% { opacity: 0; }
4111        }
4112        @keyframes fadeSlideUp {
4113          from { opacity: 0; transform: translateY(8px); }
4114          to { opacity: 1; transform: translateY(0); }
4115        }
4116        .ask-suggested-chip {
4117          display: inline-block;
4118          padding: 6px 14px;
4119          border-radius: 20px;
4120          font-size: 0.82rem;
4121          cursor: pointer;
4122          transition: all 0.15s;
4123          border: 1.5px solid #0A5252;
4124          background-color: #FFFFFF;
4125          color: #0A5252;
4126          font-weight: 400;
4127          line-height: 1.4;
4128          text-align: left;
4129        }
4130        .ask-suggested-chip:hover {
4131          background-color: #0A5252;
4132          color: #FFFFFF;
4133        }
4134        .ask-suggested-chip:active {
4135          background-color: #084040;
4136          color: #FFFFFF;
4137        }
4138      `}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1226",className:"flex flex-col",style:{backgroundColor:"#FAFAFA",minHeight:"100vh"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1234",style:{backgroundColor:"#1a1a19",color:"#FFFFFF",padding:"28px 24px 24px",textAlign:"center",borderBottom:"3px solid #0A5252"},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1243",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:14},children:[o.jsx("img",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1244",src:en,alt:"Akoroko Premium",style:{width:36,height:36,filter:"drop-shadow(0 0 6px rgba(13, 115, 119, 0.5))"}}),o.jsxs("h1",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1253",style:{fontSize:"1.625rem",fontFamily:"Georgia, serif",fontWeight:500,margin:0,letterSpacing:"-0.01em"},children:["Ask the"," ",o.jsx("span",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1263",style:{background:"linear-gradient(135deg, #ffffff 0%, #0d7377 50%, #0a9a9f 100%)",WebkitBackgroun
4138dClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text",fontWeight:600},children:"Akoroko Premium"})," ","Archive"]})]}),o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1277",style:{color:"rgba(255,255,255,0.55)",fontSize:"0.875rem",marginTop:8,letterSpacing:"0.02em",lineHeight:1.4},children:"Drawing from 2,595 sources across African film, television, and digital media · 2022–present"}),o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1288",style:{color:"rgba(255,255,255,0.90)",fontSize:"0.85rem",fontWeight:500,marginTop:14,letterSpacing:"0.01em",lineHeight:1.4,fontStyle:"italic",borderTop:"1px solid rgba(255,255,255,0.12)",paddingTop:12},children:"Posez vos questions en français — le système répond dans la langue de votre question."})]}),o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1306",className:"flex-1 overflow-y-auto px-4 py-6",style:{paddingBottom:140},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1310",style:{maxWidth:Vc,margin:"0 auto",width:"100%"},children:[i.length===0&&!u&&o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1313",style:{paddingTop:40,textAlign:"center"},children:[o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1319",style:{color:"#999999",fontSize:"0.82rem",marginBottom:16,textTransform:"uppercase",letterSpacing:"0.08em"},children:"Try asking"}),o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1330",className:"flex flex-wrap gap-2",style:{justifyContent:"center"},children:E.map((N,L)=>o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1332",onClick:()=>M(N),className:"ask-suggested-chip",children:N},L))})]}),i.map((N,L)=>{const J=N.role==="user"&&(L===i.length-1||L===i.length-2&&i[i.length-1]?.role==="assistant"),z=N.role==="assistant"&&L===i.length-1,$=N.role==="assistant"&&L>0&&i[L-1]?.role==="user"?i[L-1].content:void 0;return o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1358",ref:J?x:z?q:void 0,style:{scrollMarginTop:80},children:o.jsx(C3,{"data-loc":"client/src/pages/AskPreviewV2.tsx:1363",msg:N,onFollowUp:M,userQuery:$})},L)}),u&&o.jsx(j3,{"data-loc":"client/src/pages/AskPreviewV2.tsx:1369"}),m&&o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1373",style:{display:"flex",justifyContent:"center",marginTop:8},children:o.jsxs("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1374",onClick:()=>S.current?.abort(),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 16px",borderRadius:20,border:"1.5px solid #d0d0cc",backgroundColor:"#FFFFFF",color:"#666666",fontSize:"0.8rem",fontWeight:400,cursor:"pointer",transition:"all 0.15s"},onMouseEnter:N=>{N.currentTarget.style.borderColor="#0A5252",N.currentTarget.style.color="#0A5252"},onMouseLeave:N=>{N.currentTarget.style.borderColor="#d0d0cc",N.currentTarget.style.color="#666666"},children:[o.jsx("svg",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1399",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:o.jsx("rect",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1400",x:"2",y:"2",width:"10",height:"10",rx:"2",fill:"currentColor"})}),"Stop generating"]})})]})}),o.jsx("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1410",style:{position:"fixed",bottom:C,left:0,right:0,backgroundColor:"#FAFAFA",borderTop:"1px solid #e0e0dc",paddingTop:"16px",paddingBottom:"calc(16px + env(safe-area-inset-bottom, 0px))",zIndex:10},children:o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1428",style:{maxWidth:Vc,width:"100%",margin:"0 auto",paddingLeft:16,paddingRight:16},children:[o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1437",style:{display:"flex",gap:10,alignItems:"flex-end",backgroundColor:"#FFFFFF",border:"1.5px solid #0A5252",borderRadius:10,padding:"10px 14px",boxShadow:"0 1px 4px rgba(0,0,0,0.06)"},children:[o.jsx("textarea",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1449",ref:v,value:l,onChange:N=>d(N.target.value),onKeyDown:W,placeholder:"Ask about anything in the Akoroko archive…",rows:1,disabled:u||m,style:{flex:1,background:"transparent",border:"none",outline:"none",color:"#1a1a19",fontSize:"0.9rem",resize:"none",lineHeight:"1.5",maxHeight:120,overflow:"auto",fontFamily:"inherit"},onInput:N=>{const L=N.currentTarget;L.style.height="auto",L.style.height=Math.min(L.scrollHeight,120)+"px"}}),o.jsx("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1476",onClick:()=>M(l),disabled:!l.trim()||u||m,style:{backgroundColor:l.trim()&&!u&&!m?"#0A5252":"#EEEEEE",color:l.trim()&&!u&&!m?"#FFFFFF":"#AAAAAA",border:"none",borderRadius:6,padding:"8px 20px",fontSize:"0.85rem",fontWeight:500,cursor:l.trim()&&!u&&!m?"pointer":"not-allowed",transition:"background-color 0.15s",flexShrink:0,letterSpacing:"0.02em"},children:"Ask"})]}),o.jsxs("div",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1499",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:12,marginTop:6},children:[o.jsx("p",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1508",style:{color:"#AAAAAA",fontSize:"0.7rem",margin:0,textAlign:"center"}
4138,children:"Answers are drawn only from the Akoroko archive. Press Enter to submit, Shift+Enter for new line."}),i.length>0&&o.jsxs("button",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1520",onClick:()=>{r([]),d(""),O(Yv(Kv,4))},disabled:u||m,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 10px",borderRadius:12,border:"1px solid #d0d0cc",backgroundColor:"transparent",color:u||m?"#CCCCCC":"#999999",fontSize:"0.68rem",fontWeight:400,cursor:u||m?"not-allowed":"pointer",transition:"all 0.15s",whiteSpace:"nowrap",flexShrink:0},onMouseEnter:N=>{!u&&!m&&(N.currentTarget.style.borderColor="#0A5252",N.currentTarget.style.color="#0A5252")},onMouseLeave:N=>{N.currentTarget.style.borderColor="#d0d0cc",N.currentTarget.style.color="#999999"},children:[o.jsx("svg",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1554",width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:o.jsx("path",{"data-loc":"client/src/pages/AskPreviewV2.tsx:1555",d:"M2 2L14 14M14 2L2 14",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})}),"Clear"]})]})]})})]})]})}const Lm="archive_token";function E3(e){try{sessionStorage.setItem(Lm,e)}catch{}}function GA(){try{return sessionStorage.getItem(Lm)}catch{return null}}function KA(){try{sessionStorage.removeItem(Lm)}catch{}}function I3({onAuth:e}){const[n,i]=j.useState(""),[r,l]=j.useState(""),[d,u]=j.useState(!1);async function h(m){m.preventDefault(),u(!0),l("");try{const p=await fetch("/api/archive/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:n})});if(!p.ok){l("Incorrect password."),u(!1);return}const b=await p.json();E3(b.token),e(b.token)}catch{l("Connection error. Please try again.")}u(!1)}return o.jsx("div",{"data-loc":"client/src/pages/ArchivePage.tsx:64",className:"min-h-screen bg-[#F5F5F5] flex items-center justify-center px-4",children:o.jsxs("div",{"data-loc":"client/src/pages/ArchivePage.tsx:65",className:"w-full max-w-sm",children:[o.jsx("div",{"data-loc":"client/src/pages/ArchivePage.tsx:66",className:"mb-8",children:o.jsx(pe,{"data-loc":"client/src/pages/ArchivePage.tsx:67",href:"/",className:"font-['Bebas_Neue'] text-2xl tracking-widest text-[#0A5C6B]",children:"AKOROKO"})}),o.jsx("h1",{"data-loc":"client/src/pages/ArchivePage.tsx:71",className:"font-['Libre_Baskerville'] text-2xl text-[#1a1a19] mb-2",children:"Dispatch Archive"}),o.jsx("p",{"data-loc":"client/src/pages/ArchivePage.tsx:74",className:"text-sm text-[#555] font-['Lora'] mb-8",children:"Enter the archive password to continue."}),o.jsxs("form",{"data-loc":"client/src/pages/ArchivePage.tsx:77",onSubmit:h,className:"space-y-4",children:[o.jsx("input",{"data-loc":"client/src/pages/ArchivePage.tsx:78",type:"password",value:n,onChange:m=>i(m.target.value),placeholder:"Password",autoFocus:!0,className:"w-full border border-[#E0E0E0] bg-white px-4 py-3 text-sm font-['Lora'] text-[#1a1a19] focus:outline-none focus:border-[#0A5C6B] rounded-none"}),r&&o.jsx("p",{"data-loc":"client/src/pages/ArchivePage.tsx:86",className:"text-xs text-red-600 font-['IBM_Plex_Mono']",children:r}),o.jsx("button",{"data-loc":"client/src/pages/ArchivePage.tsx:87",type:"submit",disabled:d||!n,className:"w-full bg-[#0A5C6B] text-white text-sm font-['IBM_Plex_Mono'] tracking-widest py-3 hover:bg-[#0D7A8A] transition-colors disabled:opacity-50",children:d?"VERIFYING...":"ENTER ARCHIVE"})]})]})})}function N3(e){const[n,i]=e.split("-");return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(i,10)-1]} ${n}`}function M3({token:e,onLogout:n}){const[i,r]=j.useState(null),[l,d]=j.useState(1),[u,h]=j.useState(""),[m,p]=j.useState([]),[b,y]=j.useState(!1),[v,x]=j.useState(""),[S,E]=j.useState("");j.useEffect(()=>{fetch("/api/archive/months",{headers:{Authorization:`Bearer ${e}`}}).then(Y=>Y.ok?Y.json():null).then(Y=>{Y&&p(Y.months)}).catch(()=>{})},[e]);const O=j.useCallback(async(Y,G)=>{y(!0),x("");try{const P=new URLSearchParams({page:String(Y)});G&&P.set("month",G);const M=await fetch(`/api/archive/dispatches?${P}`,{headers:{Authorization:`Bearer ${e}`}});if(M.status===401){n();return}if(!M.ok){x("Failed to load dispatches."),y(!1);return}const W=await M.json();r(W),d(Y)}catch{x("Connection error.")}y(!1)},[e,n]);j.useEffect(()=>{O(1,u)},[O,u]);const C=i?Math.ceil(i.total/i.limit):0;function _(Y){h(Y.target.value),d(1)}function q(Y){Y.preventDefault();const G=parseInt(S,10);!isNaN(G)&&G>=1&&G<=C&&(O(G,u),E(""))}return o.jsxs("div",{"data-loc":"client/src/pages/ArchivePage.tsx:164",className:"min-h-screen bg-[#F5F5F5]",children:[o.jsxs("header",{"data-loc":"client/src/pages/ArchivePage.tsx:166",className:"border-b border-[#
4138E0E0E0] bg-white px-6 py-4 flex items-center justify-between",children:[o.jsxs("div",{"data-loc":"client/src/pages/ArchivePage.tsx:167",className:"flex items-center gap-6",children:[o.jsx(pe,{"data-loc":"client/src/pages/ArchivePage.tsx:168",href:"/",className:"font-['Bebas_Neue'] text-xl tracking-widest text-[#0A5C6B]",children:"AKOROKO"}),o.jsx("span",{"data-loc":"client/src/pages/ArchivePage.tsx:171",className:"text-[#E0E0E0]",children:"|"}),o.jsx("span",{"data-loc":"client/src/pages/ArchivePage.tsx:172",className:"font-['IBM_Plex_Mono'] text-xs tracking-widest text-[#555] uppercase",children:"Dispatch Archive"})]}),o.jsx("button",{"data-loc":"client/src/pages/ArchivePage.tsx:176",onClick:n,className:"font-['IBM_Plex_Mono'] text-xs text-[#888] hover:text-[#0A5C6B] transition-colors",children:"SIGN OUT"})]}),o.jsxs("main",{"data-loc":"client/src/pages/ArchivePage.tsx:184",className:"max-w-3xl mx-auto px-6 py-10",children:[o.jsxs("div",{"data-loc":"client/src/pages/ArchivePage.tsx:186",className:"mb-6 flex flex-wrap items-baseline justify-between gap-4",children:[o.jsx("h1",{"data-loc":"client/src/pages/ArchivePage.tsx:187",className:"font-['Libre_Baskerville'] text-2xl text-[#1a1a19]",children:"Mailchimp Dispatches"}),i&&o.jsxs("span",{"data-loc":"client/src/pages/ArchivePage.tsx:191",className:"font-['IBM_Plex_Mono'] text-xs text-[#888]",children:[i.total," dispatches"]})]}),o.jsxs("div",{"data-loc":"client/src/pages/ArchivePage.tsx:198",className:"mb-8 flex items-center gap-3",children:[o.jsx("label",{"data-loc":"client/src/pages/ArchivePage.tsx:199",className:"font-['IBM_Plex_Mono'] text-[10px] text-[#888] tracking-widest uppercase",children:"Filter by month"}),o.jsxs("select",{"data-loc":"client/src/pages/ArchivePage.tsx:202",value:u,onChange:_,className:"border border-[#E0E0E0] bg-white px-3 py-1.5 text-xs font-['IBM_Plex_Mono'] text-[#1a1a19] focus:outline-none focus:border-[#0A5C6B] rounded-none",children:[o.jsx("option",{"data-loc":"client/src/pages/ArchivePage.tsx:207",value:"",children:"All months"}),m.map(Y=>o.jsx("option",{"data-loc":"client/src/pages/ArchivePage.tsx:209",value:Y,children:N3(Y)},Y))]}),u&&o.jsx("button",{"data-loc":"client/src/pages/ArchivePage.tsx:213",onClick:()=>h(""),className:"font-['IBM_Plex_Mono'] text-[10px] text-[#888] hover:text-[#0A5C6B] transition-colors",children:"CLEAR"})]}),b&&o.jsx("p",{"data-loc":"client/src/pages/ArchivePage.tsx:222",className:"font-['IBM_Plex_Mono'] text-xs text-[#888]",children:"Loading..."}),v&&o.jsx("p",{"data-loc":"client/src/pages/ArchivePage.tsx:223",className:"font-['IBM_Plex_Mono'] text-xs text-red-600",children:v}),i&&!b&&o.jsxs(o.Fragment,{children:[o.jsx("ul",{"data-loc":"client/src/pages/ArchivePage.tsx:227",className:"divide-y divide-[#E0E0E0]",children:i.items.map(Y=>o.jsx("li",{"data-loc":"client/src/pages/ArchivePage.tsx:229",className:"py-4",children:o.jsxs(pe,{"data-loc":"client/src/pages/ArchivePage.tsx:230",href:`/archive/${Y.slug}`,className:"group block",children:[o.jsx("span",{"data-loc":"client/src/pages/ArchivePage.tsx:231",className:"font-['IBM_Plex_Mono'] text-[10px] text-[#888] block mb-1 tracking-widest",children:Y.approximateDate??"—"}),o.jsx("span",{"data-loc":"client/src/pages/ArchivePage.tsx:234",className:"font-['Lora'] text-base text-[#1a1a19] group-hover:text-[#0A5C6B] transition-colors leading-snug",children:Y.title})]})},Y.slug))}),C>1&&o.jsxs("div",{"data-loc":"client/src/pages/ArchivePage.tsx:244",className:"mt-10 flex flex-wrap items-center justify-between gap-4",children:[o.jsxs("div",{"data-loc":"client/src/pages/ArchivePage.tsx:246",className:"flex items-center gap-4",children:[o.jsx("button",{"data-loc":"client/src/pages/ArchivePage.tsx:247",onClick:()=>O(l-1,u),disabled:l<=1,className:"font-['IBM_Plex_Mono'] text-xs text-[#0A5C6B] hover:underline disabled:opacity-30 disabled:no-underline",children:"← PREV"}),o.jsxs("span",{"data-loc":"client/src/pages/ArchivePage.tsx:254",className:"font-['IBM_Plex_Mono'] text-xs text-[#888]",children:[l," / ",C]}),o.jsx("button",{"data-loc":"client/src/pages/ArchivePage.tsx:257",onClick:()=>O(l+1,u),disabled:l>=C,className:"font-['IBM_Plex_Mono'] text-xs text-[#0A5C6B] hover:underline disabled:opacity-30 disabled:no-underline",children:"NEXT →"})]}),o.jsxs("form",{"data-loc":"client/src/pages/ArchivePage.tsx:267",onSubmit:q,className:"flex items-center gap-2",children:[o.jsx("label",{"data-loc":"client/src/pages/ArchivePage.tsx:268",className:"font-['IBM_Plex_Mono'] text-[10px] text-[#888] tracking-widest uppercase",children:"Go to page"}),o.jsx("input",{"data-loc":"client/src/pages/ArchivePage.tsx:271",type:"number",min:1,max:C,value:S,onChange:Y=>E(Y.target.value),placeholder:String(l),className:"w-14 border border-[#
4138E0E0E0] bg-white px-2 py-1 text-xs font-['IBM_Plex_Mono'] text-[#1a1a19] focus:outline-none focus:border-[#0A5C6B] rounded-none text-center"}),o.jsx("button",{"data-loc":"client/src/pages/ArchivePage.tsx:280",type:"submit",className:"font-['IBM_Plex_Mono'] text-[10px] text-[#0A5C6B] hover:underline tracking-widest",children:"GO"})]})]})]})]})]})}function P3(){const[e,n]=j.useState(()=>GA());function i(l){n(l)}function r(){KA(),n(null)}return e?o.jsx(M3,{"data-loc":"client/src/pages/ArchivePage.tsx:304",token:e,onLogout:r}):o.jsx(I3,{"data-loc":"client/src/pages/ArchivePage.tsx:303",onAuth:i})}function O3(e){return e.split(/\n{2,}/).map((i,r)=>{const l=i.trim();if(!l)return null;if(/^[-─]{3,}$/.test(l))return o.jsx("hr",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:37",className:"border-[#E0E0E0] my-4"},r);if(/^[A-Z][A-Z\s&:,.'()-]{5,}$/.test(l)&&l.length<80)return o.jsx("h3",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:42",className:"font-['Libre_Baskerville'] text-lg font-bold text-[#1a1a19] mt-6 mb-2",children:l},r);const d=D3(l);return o.jsx("p",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:50",className:"font-['Lora'] text-base text-[#1a1a19] leading-relaxed mb-4",children:d},r)}).filter(Boolean)}function D3(e){return e.split(/(\*\*[^*]+\*\*|https?:\/\/[^\s)]+)/g).map((i,r)=>i.startsWith("**")&&i.endsWith("**")?o.jsx("strong",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:61",children:i.slice(2,-2)},r):i.startsWith("http")?o.jsx("a",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:65",href:i,target:"_blank",rel:"noopener noreferrer",className:"text-[#0A5C6B] hover:underline break-all",children:i},r):i)}function R3({params:e}){const[,n]=wm(),i=GA(),[r,l]=j.useState(null),[d,u]=j.useState(null),[h,m]=j.useState(!0),[p,b]=j.useState("");return j.useEffect(()=>{if(!i){n("/archive");return}m(!0),l(null),u(null),b("");const y={Authorization:`Bearer ${i}`};Promise.all([fetch(`/api/archive/dispatch/${encodeURIComponent(e.slug)}`,{headers:y}),fetch(`/api/archive/neighbors/${encodeURIComponent(e.slug)}`,{headers:y})]).then(async([v,x])=>{if(v.status===401){KA(),n("/archive");return}if(!v.ok){b("Dispatch not found."),m(!1);return}const S=await v.json();if(l(S),x.ok){const E=await x.json();u(E)}m(!1),window.scrollTo(0,0)}).catch(()=>{b("Connection error."),m(!1)})},[e.slug,i,n]),o.jsxs("div",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:114",className:"min-h-screen bg-[#F5F5F5]",children:[o.jsxs("header",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:116",className:"border-b border-[#E0E0E0] bg-white px-6 py-4 flex items-center gap-6",children:[o.jsx(pe,{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:117",href:"/",className:"font-['Bebas_Neue'] text-xl tracking-widest text-[#0A5C6B]",children:"AKOROKO"}),o.jsx("span",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:120",className:"text-[#E0E0E0]",children:"|"}),o.jsx(pe,{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:121",href:"/archive",className:"font-['IBM_Plex_Mono'] text-xs tracking-widest text-[#555] hover:text-[#0A5C6B] transition-colors uppercase",children:"← Archive"})]}),o.jsxs("main",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:129",className:"max-w-2xl mx-auto px-6 py-10",children:[h&&o.jsx("p",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:130",className:"font-['IBM_Plex_Mono'] text-xs text-[#888]",children:"Loading..."}),p&&o.jsx("p",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:131",className:"font-['IBM_Plex_Mono'] text-xs text-red-600",children:p}),r&&!h&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:135",className:"mb-8",children:[o.jsxs("span",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:136",className:"font-['IBM_Plex_Mono'] text-[10px] text-[#888] tracking-widest block mb-3",children:[r.approximateDate??"—"," · MAILCHIMP DISPATCH"]}),o.jsx("h1",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:139",className:"font-['Libre_Baskerville'] text-2xl text-[#1a1a19] leading-snug",children:r.title})]}),o.jsx("div",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:144",className:"border-t border-[#
4138E0E0E0] pt-8",children:O3(r.body)}),d&&o.jsxs("div",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:150",className:"mt-12 pt-6 border-t border-[#E0E0E0] flex justify-between gap-4",children:[o.jsx("div",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:151",className:"flex-1",children:d.prev&&o.jsxs(pe,{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:153",href:`/archive/${d.prev.slug}`,className:"group block",children:[o.jsx("span",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:154",className:"font-['IBM_Plex_Mono'] text-[10px] text-[#888] tracking-widest block mb-1",children:"← PREVIOUS"}),o.jsx("span",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:157",className:"font-['Lora'] text-sm text-[#1a1a19] group-hover:text-[#0A5C6B] transition-colors leading-snug",children:d.prev.title})]})}),o.jsx("div",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:163",className:"flex-1 text-right",children:d.next&&o.jsxs(pe,{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:165",href:`/archive/${d.next.slug}`,className:"group block",children:[o.jsx("span",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:166",className:"font-['IBM_Plex_Mono'] text-[10px] text-[#888] tracking-widest block mb-1",children:"NEXT →"}),o.jsx("span",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:169",className:"font-['Lora'] text-sm text-[#1a1a19] group-hover:text-[#0A5C6B] transition-colors leading-snug",children:d.next.title})]})})]}),o.jsx("div",{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:178",className:"mt-8",children:o.jsx(pe,{"data-loc":"client/src/pages/ArchiveDispatchPage.tsx:179",href:"/archive",className:"font-['IBM_Plex_Mono'] text-xs text-[#0A5C6B] hover:underline tracking-widest",children:"← BACK TO ARCHIVE"})})]})]})]})}function _3(){const[e]=wm();return j.useEffect(()=>{window.scrollTo({top:0,left:0,behavior:"instant"})},[e]),null}function B3(){return o.jsxs(o.Fragment,{children:[o.jsx(_3,{"data-loc":"client/src/App.tsx:36"}),o.jsxs(vF,{"data-loc":"client/src/App.tsx:37",children:[o.jsx(mt,{"data-loc":"client/src/App.tsx:39",path:"/",component:BF}),o.jsx(mt,{"data-loc":"client/src/App.tsx:40",path:"/about",component:WF}),o.jsx(mt,{"data-loc":"client/src/App.tsx:41",path:"/subscribe",component:$F}),o.jsx(mt,{"data-loc":"client/src/App.tsx:42",path:"/premium",component:XF}),o.jsx(mt,{"data-loc":"client/src/App.tsx:43",path:"/contact",component:eE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:44",path:"/article/:slug",component:rE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:45",path:"/privacy",component:lE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:46",path:"/terms",component:uE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:47",path:"/institutional",component:yE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:48",path:"/account",component:xE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:49",path:"/listen/:id",component:kE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:50",path:"/unsubscribe",component:ME}),o.jsx(mt,{"data-loc":"client/src/App.tsx:51",path:"/ask",component:v3}),o.jsx(mt,{"data-loc":"client/src/App.tsx:52",path:"/ask-preview",component:S3}),o.jsx(mt,{"data-loc":"client/src/App.tsx:53",path:"/ask-preview-v2",component:F3}),o.jsx(mt,{"data-loc":"client/src/App.tsx:54",path:"/archive/:slug",component:R3}),o.jsx(mt,{"data-loc":"client/src/App.tsx:55",path:"/archive",component:P3}),o.jsx(mt,{"data-loc":"client/src/App.tsx:58",path:"/compose",component:TE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:59",path:"/admin/dispatches",component:CE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:60",path:"/admin/subscribers",component:jE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:61",path:"/admin/most-asked",component:FE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:62",path:"/admin/ingest/advanced",component:IE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:63",path:"/admin/ingest",component:EE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:64",path:"/admin/webhook-log",component:NE}),o.jsx(mt,{"data-loc":"client/src/App.tsx:66",path:"/404",component:Kx}),o.jsx(mt,{"data-loc":"client/src/App.tsx:67",component:Kx})]})]})}function L3(){return o.jsx(IF,{"data-loc":"client/src/App.tsx:75",children:o.jsx(MF,{"data-loc":"client/src/App.tsx:76",defaultTheme:"light",children:o.jsxs(X6,{"data-loc":"client/src/App.tsx:77",children:[o.jsx(o5,{"data-loc":"client/src/App.tsx:78"}),o.jsx(B3,{"data-loc":"client/src/App.tsx:79"})]})})})}const $v=new Pk({defaultOptions:{queries:{retry:(e,n)=>n instanceof ws&&n.message===gT?!1:e<3}}}),z3=Qe.createClient({links:[qS({url:"/api/trpc",transformer:ai,fetch(e,n
4138){return fetch(e,{...n,credentials:"include"})}})]});tC.createRoot(document.getElementById("root")).render(o.jsx(Qe.Provider,{"data-loc":"client/src/main.tsx:41",client:z3,queryClient:$v,children:o.jsx(Dk,{"data-loc":"client/src/main.tsx:42",client:$v,children:o.jsx(n0,{"data-loc":"client/src/main.tsx:43",children:o.jsx(L3,{"data-loc":"client/src/main.tsx:44"})})})}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.