"srcdoc"!==t.toLowerCase()?i.call(r,e,t,o):console.error("`srcdoc` attribute is not allowed to be set.")};r.setAttribute=e,r.setAttributeNS=t}return r},a="client-binding",l="security_overrideGlobals",d=["/_api/v1/access-tokens","/_api/v2/dynamicmodel","/_api/one-app-session-web/v3/businesses"],p=e=>(e instanceof Headers?e.forEach(((t,r)=>{decodeURIComponent(r).toLowerCase()===a&&e.delete(r)})):Object.keys(e).forEach((t=>{decodeURIComponent(t).toLowerCase()===a&&delete e[t]})),e),u=e=>{let t=!0;const r=(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(e){return r=t.replace(/#.+/gi,"").split("?").shift(),r.startsWith("/")?r:`/${r}`}})(e),n=o(r);return d.some((e=>n.includes(e)))&&(t=!1),t},f=(e=globalThis)=>{const t=fetch;e.defineStrictProperty("fetch",(function(){const r=(o=arguments,globalThis.Request&&o[0]instanceof Request&&o[0]?.headers?p(o[0].headers):o[1]?.headers&&p(o[1].headers),o);var o;return u(arguments[0])?t.apply(e,Array.from(r)):new Promise(((e,t)=>{const r=new Error("TB002");window.fedops?.interactionStarted(r,l),t(r)}))}))};performance.mark("overrideGlobals started");const{isExcludedFromSecurityExperiments:g,experiments:b}=window.viewerModel;try{((e=globalThis)=>{Object.defineProperty(e,"defineStrictProperty",{value:n,writable:!1,enumerable:!1,configurable:!1})})(),i(),g||globalThis.defineStrictProperty("createElement",s,document,!0),b["specs.thunderbolt.hardenFetchAndXHR"]&&!g&&(f(),((e=globalThis)=>{const t=XMLHttpRequest;function r(){const e=new t,r=e.open,o=e.setRequestHeader;return e.open=function(){if(arguments.length<2||u(arguments[1]))return r.apply(e,Array.from(arguments));{const e=new Error("TB002");throw window.fedops?.interactionStarted(e,l),e}},e.setRequestHeader=function(t,r){decodeURIComponent(t).toLowerCase()!==a&&o.call(e,t,r)},e}Object.keys(t).forEach((e=>{r[e]=t[e]})),e.defineStrictProperty("XMLHttpRequest",r)})()),b["specs.thunderbolt.removeServiceWorker"]&&(()=>{if(navigator&&"serviceWorker"in navigator)navigator.serviceWorker.register=()=>console.log("Service worker registration is not allowed"),Promise.resolve()})(),(e=>{let t=[],o=[];o=o.concat(["TextEncoder","TextDecoder"]),e||(o=o.concat(["XMLHttpRequestEventTarget","EventTarget"])),o=o.concat(["URL","JSON"]),e||(t=t.concat(["addEventListener","removeEventListener"])),t=t.concat(["encodeURI","encodeURIComponent","decodeURI","decodeURIComponent"]),o=o.concat(["String","Number"]),e||o.push("Object"),o=o.concat(["Reflect"]),t.forEach((e=>{Object.freeze(globalThis[e]),["addEventListener","removeEventListener"].includes(e)&&globalThis.defineStrictProperty(e,document[e],document,!0),globalThis.defineStrictProperty(e,globalThis[e],globalThis,!0)})),o.forEach((e=>{r(e,globalThis)}))})(g),g||(defineStrictProperty("preventStringArgument",((e,t,r)=>{const o=r||globalThis,n=o[e];defineStrictProperty(e,(function(){const r=Array.from(arguments);if("string"!=typeof r[t])return n.apply(o,r);console.warn(`Calling ${e} with a String Argument at index ${t} is not allowed`)}),o)})),preventStringArgument("setTimeout",0),preventStringArgument("setInterval",0))}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.492f4493.bundle.min.js.map
Our drone photography and videography services are perfect for capturing stunning aerial footage of your events. From special days like weddings and birthdays, to social gatherings like festivals and sporting events, our experienced drone operators can capture the magic from above.