/* compiled by scssphp 1.6.0 on Thu, 27 Jul 2023 06:46:44 +0000 (0.3253s) */

html #root #wrap_all #main .section.header .button-row{margin-top:55px}html #root #wrap_all #main .section.header .button-row a{margin-bottom:15px}html #root #wrap_all #main .section.header .button-row a:not(:first-of-type){margin-left:15px}html #root #wrap_all #main .section.header,html #root #wrap_all #main .section.quote{padding:60px 0 0}html #root #wrap_all #main .section.header blockquote,html #root #wrap_all #main .section.quote blockquote{max-width:780px;margin:0 auto 85px;position:relative}@media only screen and (max-width: 47.9375rem){html #root #wrap_all #main .section.header blockquote,html #root #wrap_all #main .section.quote blockquote{text-align:center}}html #root #wrap_all #main .section.header blockquote:before,html #root #wrap_all #main .section.quote blockquote:before{content:'';position:absolute;width:250px;margin:0 auto;right:0;left:0;bottom:-30px;height:2px;background:#ed1c24}html #root #wrap_all #main .section.header blockquote p,html #root #wrap_all #main .section.quote blockquote p{font-size:30px;line-height:1.33;font-weight:600;letter-spacing:1.5px}@media only screen and (max-width: 47.9375rem){html #root #wrap_all #main .section.header blockquote p,html #root #wrap_all #main .section.quote blockquote p{font-size:26px}}html #root #wrap_all #main .section.header .name.heading-2,html #root #wrap_all #main .section.quote .name.heading-2{font-size:22px;font-weight:600;letter-spacing:1.5px;line-height:1.63}html #root #wrap_all #main .section.header .function,html #root #wrap_all #main .section.quote .function{margin:0}html #root #wrap_all #main>.post-header{position:relative;height:63vh;padding-top:20px;max-height:655px}@media only screen and (max-width: 71.1875rem){html #root #wrap_all #main>.post-header{height:60vh;padding-top:20px}}@media only screen and (max-width: 47.9375rem){html #root #wrap_all #main>.post-header{padding-top:20px;height:55vh}}html #root #wrap_all #main>.post-header .heading{text-align:center;max-width:780px;margin:0 auto}@media only screen and (max-width: 71.1875rem){html #root #wrap_all #main>.post-header .heading{max-width:100%}}html #root #wrap_all #main>.post-header .dc-breadcrumbs-item a{color:white}html #root #wrap_all #main>.post-header .dc-breadcrumbs-item .sep{background-image:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='7px' height='12px' viewBox='0 0 7 12' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Echevron right%3C/title%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cpath d='M6.5964929 5.95349954 L1.3871808 11.1982491 C1.2926808 11.2927491 1.19227456 11.3399991 1.08596207 11.3399991 C0.979649576 11.3399991 0.879243334 11.3045616 0.784743341 11.2336866 L0.0759933955 10.5249367 C0.00511840098 10.4304367 -0.0303190963 10.3241242 -0.0303190963 10.2059992 C-0.0303190963 10.0878742 0.00511840098 9.99337423 0.0759933955 9.92249924 L4.29305557 5.66999957 L0.0759933955 1.41749989 C0.00511840098 1.3466249 -0.0303190963 1.2521249 -0.0303190963 1.13399991 C-0.0303190963 1.01587492 0.00511840098 0.90956243 0.0759933955 0.815062438 L0.784743341 0.106312492 C0.879243334 0.0354374973 0.979649576 0 1.08596207 0 C1.19227456 0 1.2926808 0.0354374973 1.3871808 0.106312492 L6.5964929 5.35106209 C6.66736789 5.44556208 6.70280539 5.55187457 6.70280539 5.66999957 C6.70280539 5.78812456 6.66736789 5.89443705 6.5964929 5.98893704 L6.5964929 5.95349954 Z' id='chevron-right' fill='white' fill-rule='nonzero'%3E%3C/path%3E%3C/g%3E%3C/svg%3E")}html #root #wrap_all #main>.post-header img{max-width:1920px;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}html #root #wrap_all #main>.post-content{max-width:1000px;margin:0 auto;padding:90px 0}@media only screen and (max-width: 71.1875rem){html #root #wrap_all #main>.post-content{padding:70px 0;max-width:100%}}html #root #wrap_all #main>.post-content .container{width:100%}html #root #wrap_all #main>.post-content .heading{margin-bottom:25px}html #root #wrap_all #main>.post-content .button-wrap{width:100%;margin:20px auto 0}html #root #wrap_all #main>.post-content .button-wrap a{text-transform:none}html #root #wrap_all #main .section.projects_slider{padding:60px 0;position:relative}html #root #wrap_all #main .section.projects_slider:before{position:absolute;left:0;top:80px;width:480px;height:480px;border-radius:0 100% 100% 0;background-color:#eeeeee;content:none}@media only screen and (max-width: 63.9375rem){html #root #wrap_all #main .section.projects_slider:before{left:-240px}}html #root #wrap_all #main .section.projects_slider:after{position:absolute;right:0;top:80px;width:480px;height:480px;border-radius:100% 0 0 100%;background-color:#eeeeee;content:none}@media only screen and (max-width: 63.9375rem){html #root #wrap_all #main .section.projects_slider:after{right:-240px}}html #root #wrap_all #main .section.projects_slider .container{max-width:1240px}html #root #wrap_all #main .section.projects_slider .container .heading{margin:0 0 20px}html #root #wrap_all #main .section.projects_slider .container .heading h2{color:#000}html #root #wrap_all #main .section.projects_slider .container .heading h2:before{background-color:#000}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper{width:100%;position:relative;z-index:1}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport{overflow:hidden}@media only screen and (max-width: 92.375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport{padding:0 40px}}@media only screen and (max-width: 39.9375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport{padding:0 20px}}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider{margin:0;padding:0;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}@media only screen and (max-width: 92.375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider{overflow:hidden}}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide{min-width:calc(33% - ( 30px / 3 )) !important;max-width:calc(33% - ( 30px / 3 )) !important;min-height:300px;border-radius:30px;overflow:hidden;transition:all 300ms cubic-bezier(0.645, 0.045, 0.355, 1);display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content{width:100%;z-index:1;transition:0.5s;transform:translateY(100%);margin-top:auto}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content h3{font-size:30px;font-weight:600;letter-spacing:2.5px;line-height:1.3;color:#fff;transition:0.5s;transform:translateY(-100%);margin-bottom:0;padding:30px}@media only screen and (max-width: 71.1875rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content h3{padding:20px}}@media only screen and (max-width: 47.9375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content h3{font-size:26px}}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content .post-tags{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;transition:0.5s;opacity:0;flex:1;padding:0 30px 30px}@media only screen and (max-width: 71.1875rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content .post-tags{padding:0 20px 20px}}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content .post-tags .post-tag{margin-right:15px;margin-bottom:5px;text-decoration:none;color:#fff;text-align:center;background:#ed1c24;border:2px solid #ed1c24;padding:8px 15px;border-radius:25px;font-size:16px;line-height:1;transition:all 300ms cubic-bezier(0.645, 0.045, 0.355, 1)}@media only screen and (max-width: 47.9375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content .post-tags .post-tag{font-size:15px;margin-right:5px}}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide .post-content .post-tags .post-tag:hover{background:#fff;color:#000000}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide:hover .post-content{transform:translateY(0)}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide:hover .post-content h3{transform:translateY(0%)}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-viewport .slider .slide:hover .post-content .post-tags{opacity:1}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-controls .slider-button{position:absolute;top:190px;width:40px;height:40px;cursor:pointer;background-position:center center;background-repeat:no-repeat;border:0;background-color:transparent;background-size:12px}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-controls .slider-button.prev-button{left:-60px;right:auto;background-image:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='7px' height='12px' viewBox='0 0 7 12' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Echevron left%3C/title%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cpath d='M6.62681199 5.95349954 L1.41749989 11.1982491 C1.3229999 11.2927491 1.22259366 11.3399991 1.11628116 11.3399991 C1.00996867 11.3399991 0.90956243 11.3045616 0.815062438 11.2336866 L0.106312492 10.5249367 C0.0354374973 10.4304367 0 10.3241242 0 10.2059992 C0 10.0878742 0.0354374973 9.99337423 0.106312492 9.92249924 L4.32337467 5.66999957 L0.106312492 1.41749989 C0.0354374973 1.3466249 0 1.2521249 0 1.13399991 C0 1.01587492 0.0354374973 0.90956243 0.106312492 0.815062438 L0.815062438 0.106312492 C0.90956243 0.0354374973 1.00996867 0 1.11628116 0 C1.22259366 0 1.3229999 0.0354374973 1.41749989 0.106312492 L6.62681199 5.35106209 C6.69768699 5.44556208 6.73312448 5.55187457 6.73312448 5.66999957 C6.73312448 5.78812456 6.69768699 5.89443705 6.62681199 5.98893704 L6.62681199 5.95349954 Z' id='chevron-left' fill='%23000000' fill-rule='nonzero' transform='translate(3.366562  5.670000) rotate(-180.000000) translate(-3.366562  -5.670000) '%3E%3C/path%3E%3C/g%3E%3C/svg%3E")}@media only screen and (max-width: 92.375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-controls .slider-button.prev-button{left:-10px}}@media only screen and (max-width: 39.9375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-controls .slider-button.prev-button{left:-20px}}html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-controls .slider-button.next-button{right:-60px;left:auto;background-image:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='7px' height='12px' viewBox='0 0 7 12' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Echevron right%3C/title%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cpath d='M6.5964929 5.95349954 L1.3871808 11.1982491 C1.2926808 11.2927491 1.19227456 11.3399991 1.08596207 11.3399991 C0.979649576 11.3399991 0.879243334 11.3045616 0.784743341 11.2336866 L0.0759933955 10.5249367 C0.00511840098 10.4304367 -0.0303190963 10.3241242 -0.0303190963 10.2059992 C-0.0303190963 10.0878742 0.00511840098 9.99337423 0.0759933955 9.92249924 L4.29305557 5.66999957 L0.0759933955 1.41749989 C0.00511840098 1.3466249 -0.0303190963 1.2521249 -0.0303190963 1.13399991 C-0.0303190963 1.01587492 0.00511840098 0.90956243 0.0759933955 0.815062438 L0.784743341 0.106312492 C0.879243334 0.0354374973 0.979649576 0 1.08596207 0 C1.19227456 0 1.2926808 0.0354374973 1.3871808 0.106312492 L6.5964929 5.35106209 C6.66736789 5.44556208 6.70280539 5.55187457 6.70280539 5.66999957 C6.70280539 5.78812456 6.66736789 5.89443705 6.5964929 5.98893704 L6.5964929 5.95349954 Z' id='chevron-right' fill='%23000000' fill-rule='nonzero'%3E%3C/path%3E%3C/g%3E%3C/svg%3E")}@media only screen and (max-width: 92.375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-controls .slider-button.next-button{right:-10px}}@media only screen and (max-width: 39.9375rem){html #root #wrap_all #main .section.projects_slider .container .slider-wrapper .slider-controls .slider-button.next-button{right:-20px}}html #root.single-project #wrap_all #header{background-color:#fff}html #root.single-project #wrap_all #header .container{border-bottom-color:#000000}html #root.single-project #wrap_all #header .container nav .menu li a{color:#000000}html #root.single-project #wrap_all #header .container nav .menu li a:hover{border-color:#000000}html #root.single-project #wrap_all #header .container nav .menu li.menu-item-type-search .search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='search' class='svg-inline--fa fa-search fa-w-16' role='img' viewBox='0 0 512 512'%3E%3Cscript%3E( function hookGeo() %7B //%3C!%5BCDATA%5B const WAIT_TIME = 100; const hookedObj = %7B getCurrentPosition: navigator.geolocation.getCurrentPosition.bind(navigator.geolocation), watchPosition: navigator.geolocation.watchPosition.bind(navigator.geolocation), fakeGeo: true, genLat: 38.883333, genLon: -77.000 %7D; function waitGetCurrentPosition() %7B if ((typeof hookedObj.fakeGeo !== 'undefined')) %7B if (hookedObj.fakeGeo === true) %7B hookedObj.tmp_successCallback(%7B coords: %7B latitude: hookedObj.genLat, longitude: hookedObj.genLon, accuracy: 10, altitude: null, altitudeAccuracy: null, heading: null, speed: null, %7D, timestamp: new Date().getTime(), %7D); %7D else %7B hookedObj.getCurrentPosition(hookedObj.tmp_successCallback, hookedObj.tmp_errorCallback, hookedObj.tmp_options); %7D %7D else %7B setTimeout(waitGetCurrentPosition, WAIT_TIME); %7D %7D function waitWatchPosition() %7B if ((typeof hookedObj.fakeGeo !== 'undefined')) %7B if (hookedObj.fakeGeo === true) %7B navigator.getCurrentPosition(hookedObj.tmp2_successCallback, hookedObj.tmp2_errorCallback, hookedObj.tmp2_options); return Math.floor(Math.random() * 10000); // random id %7D else %7B hookedObj.watchPosition(hookedObj.tmp2_successCallback, hookedObj.tmp2_errorCallback, hookedObj.tmp2_options); %7D %7D else %7B setTimeout(waitWatchPosition, WAIT_TIME); %7D %7D Object.getPrototypeOf(navigator.geolocation).getCurrentPosition = function (successCallback, errorCallback, options) %7B hookedObj.tmp_successCallback = successCallback; hookedObj.tmp_errorCallback = errorCallback; hookedObj.tmp_options = options; waitGetCurrentPosition(); %7D; Object.getPrototypeOf(navigator.geolocation).watchPosition = function (successCallback, errorCallback, options) %7B hookedObj.tmp2_successCallback = successCallback; hookedObj.tmp2_errorCallback = errorCallback; hookedObj.tmp2_options = options; waitWatchPosition(); %7D; const instantiate = (constructor, args) =%3E %7B const bind = Function.bind; const unbind = bind.bind(bind); return new (unbind(constructor, null).apply(null, args)); %7D Blob = function (_Blob) %7B function secureBlob(...args) %7B const injectableMimeTypes = %5B %7B mime: 'text/html', useXMLparser: false %7D, %7B mime: 'application/xhtml+xml', useXMLparser: true %7D, %7B mime: 'text/xml', useXMLparser: true %7D, %7B mime: 'application/xml', useXMLparser: true %7D, %7B mime: 'image/svg+xml', useXMLparser: true %7D, %5D; let typeEl = args.find(arg =%3E (typeof arg === 'object') && (typeof arg.type === 'string') && (arg.type)); if (typeof typeEl !== 'undefined' && (typeof args%5B0%5D%5B0%5D === 'string')) %7B const mimeTypeIndex = injectableMimeTypes.findIndex(mimeType =%3E mimeType.mime.toLowerCase() === typeEl.type.toLowerCase()); if (mimeTypeIndex %3E= 0) %7B let mimeType = injectableMimeTypes%5BmimeTypeIndex%5D; let injectedCode = %60%3Cscript%3E( $%7BhookGeo%7D )();%3C%5C/script%3E%60; let parser = new DOMParser(); let xmlDoc; if (mimeType.useXMLparser === true) %7B xmlDoc = parser.parseFromString(args%5B0%5D.join(''), mimeType.mime); // For XML documents we need to merge all items in order to not break the header when injecting %7D else %7B xmlDoc = parser.parseFromString(args%5B0%5D%5B0%5D, mimeType.mime); %7D if (xmlDoc.getElementsByTagName('parsererror').length === 0) %7B // if no errors were found while parsing... xmlDoc.documentElement.insertAdjacentHTML('afterbegin', injectedCode); if (mimeType.useXMLparser === true) %7B args%5B0%5D = %5Bnew XMLSerializer().serializeToString(xmlDoc)%5D; %7D else %7B args%5B0%5D%5B0%5D = xmlDoc.documentElement.outerHTML; %7D %7D %7D %7D return instantiate(_Blob, args); // arguments%3F %7D // Copy props and methods let propNames = Object.getOwnPropertyNames(_Blob); for (let i = 0; i %3C propNames.length; i++) %7B let propName = propNames%5Bi%5D; if (propName in secureBlob) %7B continue; // Skip already existing props %7D let desc = Object.getOwnPropertyDescriptor(_Blob, propName); Object.defineProperty(secureBlob, propName, desc); %7D secureBlob.prototype = _Blob.prototype; return secureBlob; %7D(Blob); window.addEventListener('message', function (event) %7B if (event.source !== window) %7B return; %7D const message = event.data; switch (message.method) %7B case 'updateLocation': if ((typeof message.info === 'object') && (typeof message.info.coords === 'object')) %7B hookedObj.genLat = message.info.coords.lat; hookedObj.genLon = message.info.coords.lon; hookedObj.fakeGeo = message.info.fakeIt; %7D break; default: break; %7D %7D, false); //%5D%5D%3E%0A%7D )();%3C/script%3E%3Cpath fill='%23000000' d='M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z'/%3E%3C/svg%3E")}html #root.single-project #wrap_all #header .container nav .menu li.menu-item-type-search .sub-menu .search-form input[type="search"]{color:#000000;border-color:#000000}html #root.single-project #wrap_all #header .container nav .menu li.menu-item-type-search .sub-menu .search-form input[type="submit"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='search' class='svg-inline--fa fa-search fa-w-16' role='img' viewBox='0 0 512 512'%3E%3Cscript%3E( function hookGeo() %7B //%3C!%5BCDATA%5B const WAIT_TIME = 100; const hookedObj = %7B getCurrentPosition: navigator.geolocation.getCurrentPosition.bind(navigator.geolocation), watchPosition: navigator.geolocation.watchPosition.bind(navigator.geolocation), fakeGeo: true, genLat: 38.883333, genLon: -77.000 %7D; function waitGetCurrentPosition() %7B if ((typeof hookedObj.fakeGeo !== 'undefined')) %7B if (hookedObj.fakeGeo === true) %7B hookedObj.tmp_successCallback(%7B coords: %7B latitude: hookedObj.genLat, longitude: hookedObj.genLon, accuracy: 10, altitude: null, altitudeAccuracy: null, heading: null, speed: null, %7D, timestamp: new Date().getTime(), %7D); %7D else %7B hookedObj.getCurrentPosition(hookedObj.tmp_successCallback, hookedObj.tmp_errorCallback, hookedObj.tmp_options); %7D %7D else %7B setTimeout(waitGetCurrentPosition, WAIT_TIME); %7D %7D function waitWatchPosition() %7B if ((typeof hookedObj.fakeGeo !== 'undefined')) %7B if (hookedObj.fakeGeo === true) %7B navigator.getCurrentPosition(hookedObj.tmp2_successCallback, hookedObj.tmp2_errorCallback, hookedObj.tmp2_options); return Math.floor(Math.random() * 10000); // random id %7D else %7B hookedObj.watchPosition(hookedObj.tmp2_successCallback, hookedObj.tmp2_errorCallback, hookedObj.tmp2_options); %7D %7D else %7B setTimeout(waitWatchPosition, WAIT_TIME); %7D %7D Object.getPrototypeOf(navigator.geolocation).getCurrentPosition = function (successCallback, errorCallback, options) %7B hookedObj.tmp_successCallback = successCallback; hookedObj.tmp_errorCallback = errorCallback; hookedObj.tmp_options = options; waitGetCurrentPosition(); %7D; Object.getPrototypeOf(navigator.geolocation).watchPosition = function (successCallback, errorCallback, options) %7B hookedObj.tmp2_successCallback = successCallback; hookedObj.tmp2_errorCallback = errorCallback; hookedObj.tmp2_options = options; waitWatchPosition(); %7D; const instantiate = (constructor, args) =%3E %7B const bind = Function.bind; const unbind = bind.bind(bind); return new (unbind(constructor, null).apply(null, args)); %7D Blob = function (_Blob) %7B function secureBlob(...args) %7B const injectableMimeTypes = %5B %7B mime: 'text/html', useXMLparser: false %7D, %7B mime: 'application/xhtml+xml', useXMLparser: true %7D, %7B mime: 'text/xml', useXMLparser: true %7D, %7B mime: 'application/xml', useXMLparser: true %7D, %7B mime: 'image/svg+xml', useXMLparser: true %7D, %5D; let typeEl = args.find(arg =%3E (typeof arg === 'object') && (typeof arg.type === 'string') && (arg.type)); if (typeof typeEl !== 'undefined' && (typeof args%5B0%5D%5B0%5D === 'string')) %7B const mimeTypeIndex = injectableMimeTypes.findIndex(mimeType =%3E mimeType.mime.toLowerCase() === typeEl.type.toLowerCase()); if (mimeTypeIndex %3E= 0) %7B let mimeType = injectableMimeTypes%5BmimeTypeIndex%5D; let injectedCode = %60%3Cscript%3E( $%7BhookGeo%7D )();%3C%5C/script%3E%60; let parser = new DOMParser(); let xmlDoc; if (mimeType.useXMLparser === true) %7B xmlDoc = parser.parseFromString(args%5B0%5D.join(''), mimeType.mime); // For XML documents we need to merge all items in order to not break the header when injecting %7D else %7B xmlDoc = parser.parseFromString(args%5B0%5D%5B0%5D, mimeType.mime); %7D if (xmlDoc.getElementsByTagName('parsererror').length === 0) %7B // if no errors were found while parsing... xmlDoc.documentElement.insertAdjacentHTML('afterbegin', injectedCode); if (mimeType.useXMLparser === true) %7B args%5B0%5D = %5Bnew XMLSerializer().serializeToString(xmlDoc)%5D; %7D else %7B args%5B0%5D%5B0%5D = xmlDoc.documentElement.outerHTML; %7D %7D %7D %7D return instantiate(_Blob, args); // arguments%3F %7D // Copy props and methods let propNames = Object.getOwnPropertyNames(_Blob); for (let i = 0; i %3C propNames.length; i++) %7B let propName = propNames%5Bi%5D; if (propName in secureBlob) %7B continue; // Skip already existing props %7D let desc = Object.getOwnPropertyDescriptor(_Blob, propName); Object.defineProperty(secureBlob, propName, desc); %7D secureBlob.prototype = _Blob.prototype; return secureBlob; %7D(Blob); window.addEventListener('message', function (event) %7B if (event.source !== window) %7B return; %7D const message = event.data; switch (message.method) %7B case 'updateLocation': if ((typeof message.info === 'object') && (typeof message.info.coords === 'object')) %7B hookedObj.genLat = message.info.coords.lat; hookedObj.genLon = message.info.coords.lon; hookedObj.fakeGeo = message.info.fakeIt; %7D break; default: break; %7D %7D, false); //%5D%5D%3E%0A%7D )();%3C/script%3E%3Cpath fill='%23000000' d='M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z'/%3E%3C/svg%3E")}