ble:i=!0}=e,c=e.get,a=e.set;if(!o||void 0===n&&!c&&!a)return new Error("property and value are required");let l=r||globalThis,u=l?.[o],s={};if(void 0!==n)s.value=n;else{if(c){let e=t(c);e&&(s.get=e)}if(a){let e=t(a);e&&(s.set=e)}}let p={...s,enumerable:i||!1,configurable:!1};void 0!==n&&(p.writable=!1);try{Object.defineProperty(l,o,p)}catch(e){return e instanceof TypeError?u:e}return u}function t(e,t){return"function"==typeof e?e:!0===e?.async&&"function"==typeof e.func?t?async function(t){return e.func(t)}:async function(){return e.func()}:"function"==typeof e?.func?e.func:void 0}try{e({property:"strictDefine",value:e})}catch{}try{e({property:"defineStrictObject",value:o})}catch{}try{e({property:"defineStrictMethod",value:n})}catch{}var r=["toString","toLocaleString","valueOf","constructor","prototype"];function o(t){let{context:n,property:c,propertiesToExclude:a=[],skipPrototype:l=!1,hardenPrototypePropertiesToExclude:u=[]}=t;if(!c)return new Error("property is required");let s=(n||globalThis)[c],p={},f=i(n,c);s&&("object"==typeof s||"function"==typeof s)&&Reflect.ownKeys(s).forEach(t=>{if(!a.includes(t)&&!r.includes(t)){let r=i(s,t);if(r&&(r.writable||r.configurable)){let{value:o,get:n,set:i,enumerable:c=!1}=r,a={};void 0!==o?a.value=o:n?a.get=n:i&&(a.set=i);try{let r=e({context:s,property:t,...a,enumerable:c});p[t]=r}catch(e){if(!(e instanceof TypeError))throw e;try{p[t]=r.value||r.get||r.set}catch{}}}}});let d={originalObject:s,originalProperties:p};if(!l&&void 0!==s?.prototype){let e=o({context:s,property:"prototype",propertiesToExclude:u,skipPrototype:!0});e instanceof Error||(d.originalPrototype=e?.originalObject,d.originalPrototypeProperties=e?.originalProperties)}return e({context:n,property:c,value:s,enumerable:f?.enumerable}),d}function n(t,r){let o=(r||globalThis)[t],n=i(r||globalThis,t);return o&&n&&(n.writable||n.configurable)?(Object.freeze(o),e({context:globalThis,property:t,value:o})):o}function i(e,t){if(e&&t)try{return Reflect.getOwnPropertyDescriptor(e,t)}catch{return}}function c(e){if("string"!=typeof e)return e;try{return decodeURIComponent(e).toLowerCase().trim()}catch{return e.toLowerCase().trim()}}function a(e,t){return e instanceof Headers?e.forEach((r,o)=>{l(o,t)||e.delete(o)}):Object.keys(e).forEach(r=>{l(r,t)||delete e[r]}),e}function l(e,t){return!t.has(c(e)||"")}function u(e,t){let r=!0,o=function(e){let t,r;if(globalThis.Request&&e instanceof Request)t=e.url;else{if("function"!=typeof e?.toString)throw new Error("Unsupported type for url");t=e.toString()}try{return new URL(t).pathname}catch{return r=t.replace(/#.+/gi,"").split("?").shift(),r.startsWith("/")?r:`/${r}`}}(e),n=c(o);return n&&t.some(e=>n.includes(e))&&(r=!1),r}function s(t,r,o){let n=fetch,i=XMLHttpRequest,c=new Set(r);function s(){let e=new i,r=e.open,n=e.setRequestHeader;return e.open=function(){let n=Array.from(arguments),i=n[1];if(n.length<2||u(i,t))return r.apply(e,n);throw new Error(o||`Request not allowed for path ${i}`)},e.setRequestHeader=function(t,r){l(decodeURIComponent(t),c)&&n.call(e,t,r)},e}return e({property:"fetch",value:function(){let e=function(e,t){return globalThis.Request&&e[0]instanceof Request&&e[0]?.headers?a(e[0].headers,t):e[1]?.headers&&a(e[1].headers,t),e}(arguments,c);return u(arguments[0],t)?n.apply(globalThis,Array.from(e)):new Promise((e,t)=>{t(new Error(o||`Request not allowed for path ${arguments[0]}`))})},enumerable:!0}),e({property:"XMLHttpRequest",value:s,enumerable:!0}),Object.keys(i).forEach(e=>{s[e]=i[e]}),{fetch:n,XMLHttpRequest:i}}var p=["TextEncoder","TextDecoder","XMLHttpRequestEventTarget","EventTarget","URL","JSON","Reflect","Object","Array","Map","Set","WeakMap","WeakSet","Promise","Symbol","Error"],f=["addEventListener","removeEventListener","dispatchEvent","encodeURI","encodeURIComponent","decodeURI","decodeURIComponent"];const d=function(){let t=globalThis.open,r=document.open;function o(e,r,o){let n="string"!=typeof e,i=t.call(window,e,r,o);return n||e&&function(e){return e.startsWith("//")&&/(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/g.test(`${location.protocol}:${e}`)&&(e=`${location.protocol}${e}`),!e.startsWith("http")||new URL(e).hostname===location.hostname}(e)?{}:i}return e({property:"open",value:o,context:globalThis,enumerable:!0}),e({property:"open",value:function(e,t,n){return e?o(e,t,n):r.call(document,e||"",t||"",n||"")},context:document,enumerable:!0}),{open:t,documentOpen:r}},y=function(){let t=document.createElement,r=Element.prototype.setAttribute,o=Element.prototype.setAttributeNS;return e({property:"createElement",context:document,value:function(n,i){let a=t.call(document,n,i);if("iframe"===c(n)){e({property:"srcdoc",context:a,get:()=>"",set:()=>{console.warn("`srcdoc` is not allowed in iframe elements.")}});let t=function(e,t){"srcdoc"!==e.toLowerCase()?r.call(a,e,t):console.warn("`srcdoc` attribute is not allowed to be set.")},n=function(e,t,r){"srcdoc"!==t.toLowerCase()?o.call(a,e,t,r):console.warn("`srcdoc` attribute is not allowed to be set.")};a.setAttribute=t,a.setAttributeNS=n}return a},enumerable:!0}),{createElement:t,setAttribute:r,setAttributeNS:o}},m=["client-binding"],b=["/_api/v1/access-tokens","/_api/v2/dynamicmodel","/_api/one-app-session-web/v3/businesses"],h=function(){let t=setTimeout,r=setInterval;return o("setTimeout",0,globalThis),o("setInterval",0,globalThis),{setTimeout:t,setInterval:r};function o(t,r,o){let n=o||globalThis,i=n[t];if(!i||"function"!=typeof i)throw new Error(`Function ${t} not found or is not a function`);e({property:t,value:function(){let e=Array.from(arguments);if("string"!=typeof e[r])return i.apply(n,e);console.warn(`Calling ${t} with a String Argument at index ${r} is not allowed`)},context:o,enumerable:!0})}},v=function(){if(navigator&&"serviceWorker"in navigator){let t=navigator.serviceWorker.register;return e({context:navigator.serviceWorker,property:"register",value:function(){console.log("Service worker registration is not allowed")},enumerable:!0}),{register:t}}return{}};performance.mark("overrideGlobals started");const{isExcludedFromSecurityExperiments:g,experiments:w}=window.viewerModel,E=!g&&w["specs.thunderbolt.securityExperiments"];try{d(),E&&y(),w["specs.thunderbolt.hardenFetchAndXHR"]&&E&&s(b,m),v(),(e=>{let t=[],r=[];r=r.concat(["TextEncoder","TextDecoder"]),e&&(r=r.concat(["XMLHttpRequestEventTarget","EventTarget"])),r=r.concat(["URL","JSON"]),e&&(t=t.concat(["addEventListener","removeEventListener"])),t=t.concat(["encodeURI","encodeURIComponent","decodeURI","decodeURIComponent"]),r=r.concat(["String","Number"]),e&&r.push("Object"),r=r.concat(["Reflect"]),t.forEach(e=>{n(e),["addEventListener","removeEventListener"].includes(e)&&n(e,document)}),r.forEach(e=>{o({property:e})})})(E),E&&h()}catch(e){window?.viewerModel?.mode.debug&&console.error(e);const t=new Error("TB006");window.fedops?.reportError(t,"security_overrideGlobals"),window.Sentry?window.Sentry.captureException(t):globalThis.defineStrictProperty("sentryBuffer",[t],window,!1)}performance.mark("overrideGlobals ended")})(); //# sourceMappingURL=https://static.parastorage.com/services/wix-thunderbolt/dist/overrideGlobals.inline.ec13bfcf.bundle.min.js.map
top of page

Office of the Independent Police Auditor for the City of San Leandro

The Office of the Independent Police Auditor for the City of San Leandro provides independent oversight over  the San Leandro Police Department’s internal investigations, policies, procedures, training, disciplinary process, and compliance with various mandates. The Independent Police Auditor provides subject matter expertise to the Community Police Review Board and will publish annual reports on its work.  

 

This is the official website of the Office of the Independent Police Auditor for the City of San Leandro where up-to-date information on the work of the IPA can be found. The site also provides the ability for the public to submit any complaints, to voice their thoughts, concerns, or questions relative to policing in San Leandro.

About the IPA

The Independent Police Auditor (“IPA”) is an independent contract position reporting directly to the City Manager. It was created by an ordinance adopted by the City Council on April 3, 2022, where the City Council also created a 9-member Community Police Review Board (the “Board”).

IPA Team

Led by Jeff Schlanger, the IPA team comprises experts from law enforcement with independent oversight experience.

Reports and Related Documents

To learn more about the origin of the IPA and its progress, key documents can be accessed here.

bottom of page