1let configured=!1,DEBUG=!1,ALLOW=new Set;function safeJsonParse(e){try{return JSON.parse(e)}catch{return null}}function readRuntimeConfigFromDom(){if(typeof document=="undefined")return null;const e=document.getElementById("config-runtime");if(!e)return null;const t=(e.textContent||"").trim();return t?safeJsonParse(t):null}function readRuntimeConfigFromLocalStorage(){if(typeof window=="undefined")return null;try{const n=window.localStorage;if(!n)return null;const t=n.getItem("publisher:debug"),s=n.getItem("publisher:debug:namespaces"),i=t==="1"||t==="true"||t==="yes"||t==="on",e=s?s.split(",").map(e=>e.trim()).filter(Boolean):null,o=i||Boolean(e&&e.length>0);return!o&&!e?null:{debug:o,...e?{debugNamespaces:e}:{}}}catch{return null}}function applyConfig(e){if(!e||typeof e!="object")return;e.debug===!0&&(DEBUG=!0),Array.isArray(e.debugNamespaces)&&(ALLOW=new Set(e.debugNamespaces.filter(Boolean)))}function ensureConfigured(){if(configured)return;configured=!0,applyConfig(readRuntimeConfigFromDom()),applyConfig(readRuntimeConfigFromLocalStorage())}function isAllowed(e){if(ALLOW.size===0)return!0;if(ALLOW.has(e))return!0;for(const t of ALLOW)if(e.startsWith(t))return!0;return!1}export function createLogger(e){ensureConfigured();const t=`[publisher:${e}]`,n=()=>DEBUG&&isAllowed(e);return{debug:(...e)=>n()&&console.debug(t,...e),info:(...e)=>console.info(t,...e),warn:(...e)=>console.warn(t,...e),error:(...e)=>console.error(t,...e)}}export function debugBridgeCall(e,t,n,s){return function(...o){return e.debug(`${t}.${n} called`),s(...o)}}export function configureLogger(e){configured=!0,DEBUG=e?.debug===!0,ALLOW=new Set(Array.isArray(e?.debugNamespaces)?e.debugNamespaces.filter(Boolean):[])}export function resetLogger(){configured=!1,DEBUG=!1,ALLOW=new Set}
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.