CINXE.COM
Leading immune monitoring for over 25 years | ImmunoSpot®
<!doctype html> <html lang="en"> <head > <script> var LOCALE = 'en\u002DUS'; var BASE_URL = 'https\u003A\u002F\u002Fimmunospot.com\u002F'; var require = { 'baseUrl': 'https\u003A\u002F\u002Fimmunospot.com\u002Fstatic\u002Fversion1728550059\u002Ffrontend\u002FForti\u002Fimmuno\u002Fen_US' };</script> <meta charset="utf-8"/><script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.eu01.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"322539704",accountID:"2918290",trustKey:"2918290",xpid:"Vg8GWVRaCBACUVBWBAgBXl0=",licenseKey:"NRJS-694e2d93d0829b3aaa4",applicationID:"251439689"};;/*! For license information please see nr-loader-spa-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>g,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.274.0",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{A4:()=>s,OF:()=>d,RI:()=>i,WN:()=>h,bv:()=>o,gm:()=>a,lR:()=>f,m:()=>u,mw:()=>c,sb:()=>l});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s="complete"===a?.document?.readyState,c=Boolean("hidden"===a?.document?.visibilityState),u=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d&&"undefined"==typeof SharedWorker,f=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),h(a.gm,f),h(c.prototype,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,Zp:()=>i,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log",a=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(3969),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>s,Qu:()=>c,TZ:()=>a,ih:()=>u,tC:()=>i});var n=r(860);const i=["click","keydown","submit"],o="api",a=n.K7.softNav,s={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},c={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},u={IP:"in progress",FIN:"finished",CAN:"cancelled"}},7378:(e,t,r)=>{"use strict";r.d(t,{$p:()=>x,BR:()=>b,Kp:()=>R,L3:()=>y,Lc:()=>c,NC:()=>o,SG:()=>d,TZ:()=>i,U6:()=>p,UT:()=>m,d3:()=>w,dT:()=>f,e5:()=>A,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>E,uP:()=>s,wW:()=>T,xq:()=>a});var n=r(384);const i=r(860).K7.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",l="remaining",f="interaction",h="spaNode",p="jsonpNode",g="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=(0,n.dV)().o.ST,w="-start",R="-end",x="-body",T="cb"+R,A="jsTime",E="fetch"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},425:(e,t,r)=>{"use strict";r.d(t,{j:()=>j});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(2646),x=r(3434);function T(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,x.YM)(i),a=new R.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function A(){const e=(0,h.pV)();g.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const E={};var S=r(9417),N=r(5603),O=r(5284);const _=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let I=!1;function j(e,t={},g,R){let{init:x,info:j,loader_config:P,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();j||(x=L.init,j=L.info,P=L.loader_config),(0,S.xN)(e.agentIdentifier,x||{}),(0,N.a)(e.agentIdentifier,P||{}),j.jsAttributes??={},d.bv&&(j.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,j);const H=(0,S.D0)(e.agentIdentifier),D=[j.beacon,j.errorBeacon];I||(H.proxy.assets&&(_(H.proxy.assets),D.push(H.proxy.assets)),H.proxy.beacon&&D.push(H.proxy.beacon),A(),(0,h.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?D:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const g={};var R=s.ee.get(e),x=R.get("tracer");E[e]=b.g.OFF,R.on(p.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var A="api-",S=A+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(A,n,!0,o||null===r?"session":void 0)(t,r)}function O(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,R),(0,w.R)(R,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,R),T(R,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(A,e,!0,"api")})),g.addPageAction=I(A,"addPageAction",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(A,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},g.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,R),R.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,R)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,R)},g.interaction=function(e){return(new O).get("object"==typeof e?e:{})};const _=O.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,R),h||(0,a.p)(S+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,R),function(){if(x.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw x.emit("fn-err",[arguments,this,t],r),t}finally{x.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,R),i&&(0,a.p)(e+t,[(0,v.t)(),...arguments],r?null:this,i,R),r?void 0:this}}function j(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),R.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{_[e]=I(S,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(S,"routeName",void 0,n.K7.softNav):I(A,"routeName",!0,n.K7.spa),g.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,R),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,R)},d.RI?(0,u.GG)((()=>j()),!0):j(),g}(e.agentIdentifier,R,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),I=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.274.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={478:"sha512-1vUqEfJPB8Pihje9mv5CfYgkitO1FWcS+UQb84DbXqP8oYctRv4/lzl/MzNLPlRhcY1WVDBGL20I8vm6s2VV7g==",249:"sha512-Y/BeZAh6VSTmUtUNmS5XdyKxL92s30Fyyj8xVW76HSPxcKItL4+x2+kGMZc8pMJnUpZDz1L4eftZQAJh3D8NnA==",212:"sha512-Gn2tQ3qog5Yhrx/gRutkSTYPp+7nkKFt4/mIXg99LxcNpMDAYJZDBYmAACdoHNM86+iq1F3cBcQotFNzjIX8bw=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(425);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(478).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),T=i(2843),A=i(3878),E=i(782),S=i(1863);class N extends b{static featureName=E.T;constructor(e,t=!0){super(e,E.T,t),p.RI&&((0,T.u)((()=>(0,x.p)("docHidden",[(0,S.t)()],void 0,E.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,S.t)()],void 0,E.T,this.ee))),this.importAggregator(e))}}var O=i(3969);class _ extends b{static featureName=O.TZ;constructor(e,t=!0){super(e,O.TZ,t),this.importAggregator(e)}}var I=i(6774),j=i(3304);class P{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,j.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new P(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function L(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new P(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error&&!!e.stack}class D extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(e=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,S.t)(),!0,{},this.#r],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),p.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,x.p)("err",[k(e),(0,S.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",(e=>{this.abortHandler&&(0,x.p)("err",[L(e),(0,S.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var M=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,M.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,j.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var g=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",X=Y+"body-",J=["arrayBuffer","blob","json","text","formData"],Q=p.gm.Request,ee=p.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,J.forEach((e=>{r(Q[te],e,X),r(ee[te],e,X)})),r(p.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,j.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){T(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,S.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,S.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function g(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,S.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,S.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,S.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:p.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),pe(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,S.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,S.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,S.t)()-this.startTime,this.loadCazptureCalled||4!==e.readyState?null==t.status&&(t.status=0):T(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function T(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,x.p)(O.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",g),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ge={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Te,Lc:Ae,uP:Ee,Rz:Se}=be;class Ne extends b{static featureName=Te;constructor(e,t=!0){super(e,Te,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Ee,(function(e,t){this.bstStart=(0,S.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,S.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Se+Re,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(Se+xe,(function(e){(0,x.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Oe=i(2614);class _e extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Oe.H3,"_").concat(Oe.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Oe.g.FULL||e.sessionReplayMode===Oe.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Oe.g.FULL&&this.featAggregate.initializeRecording(Oe.g.FULL,!0):(this.#i=Oe.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Oe.g.FULL&&(this.recorder.parent.mode=Oe.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class je extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=>{(0,A.sp)(e,(e=>{a(e)}),!0)}));const n=()=>(0,x.p)("newURL",[(0,S.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",n),r.on("replaceState-end",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)("popstate",(e=>(0,x.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=>{i||(i=!0,requestAnimationFrame((()=>{(0,x.p)("newDom",[(0,S.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=>{(0,x.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var Pe=i(7378);const Ce={},ke=["appendChild","insertBefore","replaceChild"];function Le(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?&](?:callback|cb)=([^&#]+)/,i=/(.*)\.([^.]+)/,o=/^(\w+)(\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t&&t.length>=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var d={};function l(){t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,A.jT)(!1)),e.addEventListener("error",f,(0,A.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const He={};function De(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i&&function(){function e(r){var o=t.context(),a=n(r,"executor-",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),["all","race"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],"cb-",a,null,!1),e[1]=n(e[1],"cb-",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(e[1],"resolve-",this,null,!1)})),t.on("executor-err",(function(e,t,r){e[1](r)})),t.on("cb-end",(function(e,r,n){t.emit("propagate",[n,!0],this.nextPromise,!1,!1)})),t.on("propagate",(function(e,r,n){this.getCtx&&!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r&&r.getCtx?r.getCtx():this})}))}(),t}const Me={},Ke="setTimeout",Ue="setInterval",Ve="clearTimeout",Ge="-start",Fe=[Ke,"setImmediate",Ue,Ve,"clearImmediate"];function Be(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(Me[t.debugId]++)return t;Me[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+"-"),r.inPlace(p.gm,Fe.slice(2,3),Ue+"-"),r.inPlace(p.gm,Fe.slice(3),Ve+"-"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Xe,wW:Je,e5:Qe,tH:$e,uP:et,rw:tt,Lc:rt}=Pe;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=Le(this.ee),a=De(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,S.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,S.t)();this[Qe]=~~this[Qe]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,S.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Je,m),o.on(Je,m),this.ee.on("fn-err",((...t)=>{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)("function-err",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,"xhr-resolved"],this.featureName),u.buffer([et],this.featureName),s.buffer(["setTimeout"+Ye,"clearTimeout"+Ze,et],this.featureName),c.buffer([et,"new-xhr","send-xhr"+Ze],this.featureName),d.buffer([$e+Ze,$e+"-done",$e+Xe+Ze,$e+Xe+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,Je,"executor-err","resolve"+Ze],this.featureName),i.buffer([et,"no-"+et],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,$e+Ze),v(d,$e+"-done"),v(o,"new-jsonp"),v(o,"jsonp-end"),v(o,"cb-start"),l.on("pushState-end",h),l.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled];p.RI&&e.init.user_actions.enabled&&(it.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)))))),r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785);class ct extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,N,Ne,_e,_,D,ot,ct,je,nt],loaderType:"spa"})})()})();</script> <meta name="title" content="Leading immune monitoring for over 25 years | ImmunoSpot®"/> <meta name="description" content="Leading immune monitoring for over 25 years"/> <meta name="keywords" content="Leading immune monitoring for over 25 years"/> <meta name="robots" content="INDEX,FOLLOW"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="format-detection" content="telephone=no"/> <title>Leading immune monitoring for over 25 years | ImmunoSpot®</title> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/mage/calendar.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/styles-m.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/jquery.fancybox.min.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/bootstrap.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/tiny-slider.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/chartist.min.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/fonts.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/MSP_LightGallery/css/lightgallery.min.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/StripeIntegration_Payments/css/stripe_payments.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/internals/autocomplete.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/internals/grid.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/internals/algolia-reset.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/internals/instantsearch.v3.css" /> <link rel="stylesheet" type="text/css" media="all" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/internals/recommend.css" /> <link rel="stylesheet" type="text/css" media="screen and (min-width: 768px)" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/styles-l.css" /> <link rel="stylesheet" type="text/css" media="print" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/css/print.css" /> <link rel="stylesheet" type="text/css" media="screen and (max-width: 1315px)" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/WeltPixel_NavigationLinks/css/navigation_mobile.css" /> <link rel="stylesheet" type="text/css" media="screen and (min-width: 1316px)" href="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/WeltPixel_NavigationLinks/css/navigation_desktop.css" /> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/requirejs/require.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/mage/requirejs/mixins.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/requirejs-config.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Itoris_DynamicProductOptions/js/minicart-option-images.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/StripeIntegration_Payments/js/stripe_payments.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/internals/common.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/instantsearch.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/insights.js"></script> <script type="text/javascript" src="https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/Algolia_AlgoliaSearch/recommend.js"></script> <link rel="icon" type="image/x-icon" href="https://immunospot.com/media/favicon/stores/1/dots-immunos.png" /> <link rel="shortcut icon" type="image/x-icon" href="https://immunospot.com/media/favicon/stores/1/dots-immunos.png" /> <meta name="google-site-verification" content="5qPKu5n-naBtIlshpkYckT6SgonlH9oRKKBNBnGujuM" /> <meta name="p:domain_verify" content="yWzhCNk9m0a9DvwRvSe3gfhAKHNupdvi"/> <style> .mp-attachment-container li.mp-attachment-tab__item { max-width: fit-content; } .imu-related_prd_slider .slick-prev { top: 74px !important; left: -16px !important; width: 40px; height: 40px; border-radius: 50%; background-color: #027EC4 !important; cursor: pointer; } .imu-related_prd_slider .slick-next { top: 74px; left:unset; width: 40px; height: 40px; border-radius: 50%; background-color: #027EC4 !important; cursor: pointer; right: -20px; } .imu-related_prd_slider .slick-prev:before{ position: absolute; top: 11px !important; left: 9px; font-size: 20px; color: #ffffff; } .imu-related_prd_slider .slick-next:before { top: 11px; left: 7px; font-size: 20px; position: absolute; color: #ffffff; } .imu-related_prd_slider .col-md-2 .text-center{ word-break: break-all; white-space: normal; } .imu-related_prd_slider .slick-slide img { max-width: 144px; } .imu-related_prd_slider .slick-slide { margin: 0px 15px; max-width: 180px !important; } .product-options-bottom .box-tocart { margin-bottom: 62px; } @media only screen and (max-width: 1280px) and (min-width: 768px) { .imu-related_prd_slider .slick-prev{ left: 5px !important; } .imu-related_prd_slider .slick-next { right: 2px !important; } } @media only screen and (max-width: 1024px) and (min-width: 992px) { .imu-related_prd_slider .slick-prev{ top: 63px !important; } .imu-related_prd_slider .slick-next { top: 63px !important; } } @media only screen and (min-width:993px){ .catalog-product-view .col-lg-6.pt-0.pl-lg-3.pb-md-2.order-1.product-attributes-blocks { width: 60% !important; } .catalog-product-view .col-lg-6.cs-content.order-2.product-attributes-blocks { width: 40%; } .catalog-product-view .col-lg-6.order-2 .fotorama__stage__frame .fotorama__img { left: 50% !important; } } @media only screen and (min-width:768px) { .imu-products-related .products-list .product-item { word-break: break-all; white-space: normal; } } @media (min-width: 991px) and (max-width: 1024px){ .catalog-product-view .col-lg-6.order-2 .product.media { margin-left: 0% !important; } } .page-title-wrapper.product { width: 100% !important; } .catalog-category-view main#maincontent { position: relative; width: 100%; border-bottom: 0px solid #e0dfe6!important; } .field.choice.admin__field.admin__field-option.anti-ferret-size input { margin-top: 5px; } .catalog-product-view .page-footer { margin-top: 60px; } .catalog-product-view .block-static-block.widget{margin-bottom: 8px;} .field.choice.admin__field.admin__field-option.anti-ferret-size { margin-top: 5px !important; margin-left: 15px !important; } .mp-attachment-tab.b-cell-ferret-anti-doc-sec { padding-left: 10px; } .b-cell-ferret-anti-doc-sec span.mp-attachment-tab__item__name { font-size: 16px; } @media (min-width: 768px) and (max-width: 992px) { .algolia-instant-selector-results div#algolia_instant_selector{ margin-top: 45px !important; } } .pagebuilder-column.related_products_section-hum { display:none!important; } .catalog-product-view .product-info-main .mp-attachment-tab li.mp-attachment-tab__item span.mp-attachment-tab__item__name{ font-size: 16px; } .catalog-product-view .product-info-main .mp-attachment-tab li.mp-attachment-tab__item { margin-bottom: 0.5rem; } .mp-attachment-container h2 { font-weight: bolder; font-size: 26px; line-height: 34px; } .catalog-product-view .product-info-main .overview h3.font-weight-bold{ font-weight: bolder; font-size: 26px; line-height: 34px; } .catalog-product-view .product-info-main .overview{ margin-top: 35px !important; margin-bottom:0px !important; } .catalog-product-view .product-info-main .overview .py-5 { padding-bottom: 68px!important; } .mp-attachment-tab{ margin-bottom:0px !important;} .catalog-product-view .product-info-main .product.attribute.overview .bg-light .col-md-8.row p:empty { display: none; } .catalog-product-view .product-info-main .overview .py-5 .row:last-child p:last-child { margin-bottom: 0px; } .catalog-product-view .product.attribute.overview .bg-light { padding-top: 80px; } .catalog-product-view .product.attribute.overview table.table.table-bordered { margin-bottom: 0px; } .pagebuilder-column.related_products_section_c1 { width:50%!important; margin-left: 0px!important; } .pagebuilder-column.related_products_section_c2{ width:50%!important; } .service-products.row.mt-4.mb-4 { margin-left: -26px; } .catalog-product-view { .btn-primary { padding: 2px 20px!important; } } .product-ctl-tva-suite .modal-popup .modal-inner-wrap { width: 50% !important } @media only screen and (max-width: 767px){ .catalog-product-view .page-footer { margin-top: 42px !important; } .product-ctl-tva-suite .modal-popup.modal-slide .modal-inner-wrap { margin: 0 auto; max-height: 100%; height: auto; } .product-ctl-tva-suite .modal-popup .modal-inner-wrap { width: 100% !important; } button.us-demo.action.btn.btn-primary { margin-bottom: 40px; } .cross-reference .modal-body .mob-tab{ overflow: scroll; display: block; } .cross-reference .modal-body thead th{ display: table-cell; } .catalog-product-view .product-info-main .overview .py-5 { padding-bottom: 50px !important; padding-top: 30px !important; } body.catalog-product-view .product-info-main .product.attribute.overview { margin-top: 50px !important; } .catalog-product-view .product-info-main .product.attribute.overview .bg-light { margin-bottom: -30px; } body .col-lg-6.pt-0.pl-lg-3.pb-md-2.order-1.product-attributes-blocks{ margin-top: -30px!important;} .catalog-product-view .column.main.container .recommend-component{margin-bottom:0px;} .catalog-product-view .column.main.container {display:block;padding-bottom:0px} .mp-attachment-tab.b-cell-ferret-anti-doc-sec { padding-left: 3px; } .catalog-product-view .product-info-main{ margin-top: -60px;} .catalog-product-view .product.attribute.overview .bg-light { padding-top: 0px; } } @media only screen and (min-width: 768px) and (max-width: 1200px){ .product-ctl-tva-suite .modal-popup._show .modal-inner-wrap { width: auto !important; margin: 7rem 0px !important; position: initial; } } @media (min-width: 768px) and (max-width: 992px){ .header-product-row.row { width: 100%; margin-top: 0px !important; } } @media only screen and (max-width: 992px){ .col-lg-6.pt-0.pl-lg-3.pb-md-2.order-1.product-attributes-blocks{ margin-top: 0px!important;} } @media (min-width: 993px) and (max-width: 1100px) { .ais-RefinementList label.ais-RefinementList-label { white-space: unset !important; } } .filter_active .ais-Panel .ais-Panel-body li .ais-RefinementList-label { display: flex; line-height: 22px; } .filter_active .ais-Panel .ais-Panel-body li .ais-RefinementList-label:before { padding-right: 20px; } </style> <script> require(['jquery', 'slick'], function($) { $(document).ready(function($) { if ($(window).innerWidth() > 767) { $(".imu-products-related .imu-related_prd_slider").slick({ dots: false, infinite: false, speed: 300, slidesToShow: 6, slidesToScroll: 6, responsive: [ { breakpoint: 992, settings: { slidesToShow: 4, slidesToScroll: 4 } } ] }); var maxHt = Math.max.apply(null, $(".imu-related_prd_slider .col-md-2 .text-center").map(function() { return $(this).height(); }).get()); $("<style type='text/css'> .imu-related_prd_slider .col-md-2 .text-center{ min-height:" + (maxHt + 0) + "px;} </style>").appendTo("head"); if ($(".imu-related_prd_slider .slick-arrow").length > 0){ $('.imu-related_prd_slider').addClass('slide-active'); }else{ $('.imu-related_prd_slider').removeClass('slide-active'); } if ($(window).innerWidth() >= 768 && $(window).innerWidth() <= 1280) { $('.imu-products-related .imu-related_prd_slider').css('padding', '0px 40px 0 38px'); } else { $('.imu-products-related .imu-related_prd_slider').css('padding', '0'); } } }); }); </script> <script> window.getWpCookie = function(name) { match = document.cookie.match(new RegExp(name + '=([^;]+)')); if (match) return decodeURIComponent(match[1].replace(/\+/g, ' ')) ; }; window.dataLayer = window.dataLayer || []; var wpCookies = ['wp_customerId','wp_customerGroup']; wpCookies.map(function(cookieName) { var cookieValue = window.getWpCookie(cookieName); if (cookieValue) { var dlObject = {}; dlObject[cookieName.replace('wp_', '')] = cookieValue; window.dataLayer.push(dlObject); } }); </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KMGC5QQ');</script> <!-- End Google Tag Manager --><link rel="stylesheet" type="text/css" media="all" href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css"> <link rel="alternate" hreflang="en-us" href="https://immunospot.com/" /> <link rel="alternate" hreflang="en-de" href="https://immunospot.com/" /> <link rel="alternate" hreflang="en-gb" href="https://immunospot.com/" /> <link rel="alternate" hreflang="en-fr" href="https://immunospot.com/" /> <link rel="alternate" hreflang="en-za" href="https://immunospot.com/" /> <link rel="alternate" hreflang="en-se" href="https://immunospot.com/" /> <script> window.algoliaConfig = {"instant":{"enabled":true,"selector":".column","isAddToCartEnabled":false,"addToCartParams":{"action":"https:\/\/immunospot.com\/checkout\/cart\/add\/uenc\/aHR0cHM6Ly9pbW11bm9zcG90LmNvbS8%2C\/","formKey":"JEJo6px0WijmugEu"},"infiniteScrollEnabled":true,"urlTrackedParameters":["query","attribute:*","index"]},"autocomplete":{"enabled":true,"selector":".algolia-search-input","sections":[{"name":"pages","label":"Resources","hitsPerPage":"6"}],"nbOfProductsSuggestions":6,"nbOfCategoriesSuggestions":0,"nbOfQueriesSuggestions":0,"isDebugEnabled":false},"landingPage":{"query":"","configuration":"[]"},"recommend":{"enabledFBT":false,"enabledRelated":false,"enabledFBTInCart":false,"enabledRelatedInCart":false,"limitFBTProducts":6,"limitRelatedProducts":6,"limitTrendingItems":6,"enabledTrendItems":0,"trendItemFacetName":null,"trendItemFacetValue":null,"isTrendItemsEnabledInPDP":0,"isTrendItemsEnabledInCartPage":0,"isAddToCartEnabledInFBT":false,"isAddToCartEnabledInRelatedProduct":false,"isAddToCartEnabledInTrendsItem":false,"addToCartParams":{"action":"https:\/\/immunospot.com\/checkout\/cart\/add\/uenc\/aHR0cHM6Ly9pbW11bm9zcG90LmNvbS8%2C\/","formKey":"JEJo6px0WijmugEu"}},"extensionVersion":"3.9.1","applicationId":"82KWM3IOJP","indexName":"us_immunospot_live_default","apiKey":"MWM3OTQ1ODQ2MGU2MDc4MzhjNDFhMjQ5ZTU2Njg3YjRmYWVjYzRlMTViNzhjY2M5NTNlYTk4MzY3MTAyYTE5NXRhZ0ZpbHRlcnM9","attributeFilter":[],"facets":[{"attribute":"categories","type":"conjunctive","label":"Categories","searchable":"1","create_rule":"2"},{"attribute":"format","type":"conjunctive","label":"Format","searchable":"1","create_rule":"2"},{"attribute":"species","type":"conjunctive","label":"Species","searchable":"1","create_rule":"2"},{"attribute":"target","type":"conjunctive","label":"Target","searchable":"1","create_rule":"2"},{"attribute":"number_of_analytes","type":"conjunctive","label":"Number of Analytes","searchable":"1","create_rule":"2"},{"attribute":"analyte","type":"conjunctive","label":"Analytes","searchable":"1","create_rule":"2"}],"areCategoriesInFacets":true,"hitsPerPage":10,"sortingIndices":[{"attribute":"name","sort":"asc","sortLabel":"Product Name Asc","name":"us_immunospot_live_default_products_name_asc","label":"Product Name Asc","ranking":["asc(name)","typo","geo","words","filters","proximity","attribute","exact","custom"]},{"attribute":"name","sort":"desc","sortLabel":"Product Name Desc","name":"us_immunospot_live_default_products_name_desc","label":"Product Name Desc","ranking":["desc(name)","typo","geo","words","filters","proximity","attribute","exact","custom"]}],"isSearchPage":false,"isCategoryPage":false,"isLandingPage":false,"removeBranding":false,"productId":null,"priceKey":".USD.default","priceGroup":null,"origFormatedVar":"price.USD.default_original_formated","tierFormatedVar":"price.USD.default_tier_formated","currencyCode":"USD","currencySymbol":"$","priceFormat":{"pattern":"$%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"maxValuesPerFacet":30,"autofocus":true,"resultPageUrl":"https:\/\/immunospot.com\/catalogsearch\/result\/","request":{"query":"","refinementKey":"","refinementValue":"","categoryId":"","landingPageId":"","path":"","level":""},"showCatsNotIncludedInNavigation":true,"showSuggestionsOnNoResultsPage":true,"baseUrl":"https:\/\/immunospot.com","popularQueries":[],"useAdaptiveImage":false,"urls":{"logo":"https:\/\/immunospot.com\/static\/version1728550059\/frontend\/Forti\/immuno\/en_US\/Algolia_AlgoliaSearch\/images\/algolia-logo-blue.svg"},"ccAnalytics":{"enabled":false,"ISSelector":".ais-Hits-item a.result, .ais-InfiniteHits-item a.result","conversionAnalyticsMode":null,"addToCartSelector":".action.primary.tocart","orderedProductIds":[]},"isPersonalizationEnabled":false,"personalization":{"enabled":false,"viewedEvents":{"viewProduct":{"eventName":"Viewed Product","enabled":false,"method":"viewedObjectIDs"}},"clickedEvents":{"productClicked":{"eventName":"Product Clicked","enabled":false,"selector":".ais-Hits-item a.result, .ais-InfiniteHits-item a.result","method":"clickedObjectIDs"},"productRecommended":{"eventName":"Recommended Product Clicked","enabled":false,"selector":".products-upsell .product-item","method":"clickedObjectIDs"}},"filterClicked":{"eventName":"Filter Clicked","enabled":false,"method":"clickedFilters"}},"analytics":{"enabled":true,"delay":"3000","triggerOnUiInteraction":"1","pushInitialSearch":"0"},"now":1732320000,"queue":{"isEnabled":true,"nbOfJobsToRun":10,"retryLimit":3,"nbOfElementsPerIndexingJob":300},"isPreventBackendRenderingEnabled":false,"areOutOfStockOptionsDisplayed":false,"translations":{"to":"to","or":"or","go":"Go","popularQueries":"You can try one of the popular search queries","seeAll":"See all products","allDepartments":"All departments","seeIn":"See products in","orIn":"or in","noProducts":"No products for query","noResults":"No results","refine":"Refine","selectedFilters":"Selected Filters","clearAll":"Clear all","previousPage":"Previous page","nextPage":"Next page","searchFor":"Search for products","relevance":"Relevance","categories":"Categories","products":"Products","searchBy":"Search by","searchForFacetValuesPlaceholder":"Search for other ...","showMore":"Show more products"},"isContentPage":0}; </script> </head> <body data-container="body" data-mage-init='{"loaderAjax": {}, "loader": { "icon": "https://immunospot.com/static/version1728550059/frontend/Forti/immuno/en_US/images/loader-2.gif"}}' id="html-body" class="cms-home cms-index-index page-layout-1column"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KMGC5QQ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <script type="text/x-magento-init"> { "*": { "Magento_PageBuilder/js/widget-initializer": { "config": {"[data-content-type=\"slider\"][data-appearance=\"default\"]":{"Magento_PageBuilder\/js\/content-type\/slider\/appearance\/default\/widget":false},"[data-content-type=\"map\"]":{"Magento_PageBuilder\/js\/content-type\/map\/appearance\/default\/widget":false},"[data-content-type=\"row\"]":{"Magento_PageBuilder\/js\/content-type\/row\/appearance\/default\/widget":false},"[data-content-type=\"tabs\"]":{"Magento_PageBuilder\/js\/content-type\/tabs\/appearance\/default\/widget":false},"[data-content-type=\"slide\"]":{"Magento_PageBuilder\/js\/content-type\/slide\/appearance\/default\/widget":{"buttonSelector":".pagebuilder-slide-button","showOverlay":"hover","dataRole":"slide"}},"[data-content-type=\"banner\"]":{"Magento_PageBuilder\/js\/content-type\/banner\/appearance\/default\/widget":{"buttonSelector":".pagebuilder-banner-button","showOverlay":"hover","dataRole":"banner"}},"[data-content-type=\"buttons\"]":{"Magento_PageBuilder\/js\/content-type\/buttons\/appearance\/inline\/widget":false},"[data-content-type=\"products\"][data-appearance=\"carousel\"]":{"Magento_PageBuilder\/js\/content-type\/products\/appearance\/carousel\/widget":false}}, "breakpoints": {"desktop":{"label":"Desktop","stage":true,"default":true,"class":"desktop-switcher","icon":"Magento_PageBuilder::css\/images\/switcher\/switcher-desktop.svg","conditions":{"min-width":"1024px"},"options":{"products":{"default":{"slidesToShow":"5"}}}},"tablet":{"conditions":{"max-width":"1024px","min-width":"768px"},"options":{"products":{"default":{"slidesToShow":"4"},"continuous":{"slidesToShow":"3"}}}},"mobile":{"label":"Mobile","stage":true,"class":"mobile-switcher","icon":"Magento_PageBuilder::css\/images\/switcher\/switcher-mobile.svg","media":"only screen and (max-width: 768px)","conditions":{"max-width":"768px","min-width":"640px"},"options":{"products":{"default":{"slidesToShow":"3"}}}},"mobile-small":{"conditions":{"max-width":"640px"},"options":{"products":{"default":{"slidesToShow":"2"},"continuous":{"slidesToShow":"1"}}}}} } } } </script> <div class="cookie-status-message" id="cookie-status"> The store will not work correctly in the case when cookies are disabled.</div> <script type="text/javascript">document.querySelector("#cookie-status").style.display = "none";</script> <script type="text/x-magento-init"> { "*": { "cookieStatus": {} } } </script> <script type="text/x-magento-init"> { "*": { "mage/cookies": { "expires": null, "path": "\u002F", "domain": ".immunospot.com", "secure": true, "lifetime": "3600" } } } </script> <noscript> <div class="message global noscript"> <div class="content"> <p> <strong>JavaScript seems to be disabled in your browser.</strong> <span> For the best experience on our site, be sure to turn on Javascript in your browser. </span> </p> </div> </div> </noscript> <script> window.cookiesConfig = window.cookiesConfig || {}; window.cookiesConfig.secure = true; </script><script> require.config({ map: { '*': { wysiwygAdapter: 'mage/adminhtml/wysiwyg/tiny_mce/tinymce5Adapter' } } });</script><script> require.config({ paths: { googleMaps: 'https\u003A\u002F\u002Fmaps.googleapis.com\u002Fmaps\u002Fapi\u002Fjs\u003Fv\u003D3\u0026key\u003D' }, config: { 'Magento_PageBuilder/js/utils/map': { style: '' }, 'Magento_PageBuilder/js/content-type/map/preview': { apiKey: '', apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fimmunospot.com\u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.' }, 'Magento_PageBuilder/js/form/element/map': { apiKey: '', apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fimmunospot.com\u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.' }, } }); </script> <script> require.config({ shim: { 'Magento_PageBuilder/js/utils/map': { deps: ['googleMaps'] } } }); </script> <div id="callforprice_modal" style="display:none"> <form id="callforprice_form" action="https://immunospot.com/callforprice/request/send/" method="post" data-hasrequired="* Required Fields" data-mage-init='{"validation":{}}'> <fieldset class="fieldset callforprice_request"> <input type="hidden" value="" name="product_ids" class="product_ids"/> <input type="hidden" value="" name="product_name" class="product_name"/> <input name="form_key" type="hidden" value="JEJo6px0WijmugEu" /> <div class="field required"> <label class="label">Name</label> <div class="control"> <input type="text" name="customer_name" data-validate="{required:true}"/> </div> </div> <div class="field required"> <label class="label">Email</label> <div class="control"> <input type="text" name="customer_email" data-validate="{required:true,'validate-email':true}"/> </div> </div> <div class="field"><label class="label" for="_1568027767844_844">Test</label><div class="control"><input type="text" name="_1568027767844_844" class="input-text" value=""/></div></div> </fieldset> </form> </div> <script type="text/x-magento-init"> { "*": { "Bss_AdvancedHidePrice/js/popup_modal": {} } } </script> <style type="text/css"> .product-item-details .action.tocart { display: none; } .action.tocart { display: none; } #product-addtocart-button { display: block; } .callforprice-container .callforprice_clickme { padding: 5px 10px; } </style> <div class="page-wrapper"><header class="page-header"><div class="panel wrapper"><div class="panel header"><a class="action skip contentarea" href="#contentarea"> <span> Skip to Content </span> </a> <ul class="header links"><script type="text/javascript">require(['jquery.bootstrap']);</script> <li class="greet welcome" data-bind="scope: 'customer'"> <!-- ko if: customer().fullname --> <span class="logged-in" data-bind="text: new String('Welcome, %1!').replace('%1', customer().fullname)"> </span> <!-- /ko --> <!-- ko ifnot: customer().fullname --> <span class="not-logged-in" data-bind='html:""'></span> <!-- /ko --> </li> <script type="text/x-magento-init"> { "*": { "Magento_Ui/js/core/app": { "components": { "customer": { "component": "Magento_Customer/js/view/customer" } } } } } </script> <li class="link authorization-link" data-label="or"> <a href="https://immunospot.com/customer/account/login/referer/aHR0cHM6Ly9pbW11bm9zcG90LmNvbS8%2C/" >Sign In</a> </li> <li><a href="https://immunospot.com/customer/account/create/" id="id5jz55aK9" >Create an Account</a></li></ul></div></div><div class="px-4 navbar navbar-expand sticky-top shadow"><span data-action="toggle-nav" class="action nav-toggle"><span>Toggle Nav</span></span> <a class="logo" href="https://immunospot.com/" title="" aria-label="store logo"> <img src="https://immunospot.com/media/logo/stores/1/logo_immunospot_by_ctl_official_2023_white_background_web_spotcloud-2023.png" title="" alt="" width="210" height="130" /> </a> <div class="sections nav-sections"> <div class="section-items nav-sections-items" data-mage-init='{"tabs":{"openedState":"active"}}'> <div class="section-item-title nav-sections-item-title" data-role="collapsible"> <a class="nav-sections-item-switch" data-toggle="switch" href="#store.menu"> Menu </a> </div> <div class="section-item-content nav-sections-item-content" id="store.menu" data-role="content"> <nav class="navigation" data-action="navigation"> <ul data-mage-init='{"menu":{"responsive":true, "expanded":true, "position":{"my":"left top","at":"left bottom"}}}'> <li class="megamenu level-top-boxed level0 nav-1 category-item first level-top parent" data-test="test"><a href="https://immunospot.com/products" class="level-top" ><span>Products</span></a><ul class="level0 submenu boxed hide-all-category has-menu-block top-block-child " style="display: none;"><li class="submenu-child"><div class="menu-block top-block block-container"><div class="row"> <div class="col-4"> <div class="menu-stacked-items"> <div class="px-4"> <div class="position-relative d-flex mb-2"> <img src="https://immunospot.com/media/images/menu/analyzer-software-blue.png" alt="ImmunoSpot® Analyzers"> <a class="ps-2" href="/products/analyzers">ImmunoSpot®<br>Analyzers</a> </div> <div class="position-relative d-flex mb-2"> <img src="https://immunospot.com/media/images/menu/kits-components-blue.png" alt="ImmunoSpot® Kits"> <a class="ps-2" href="/products/immunospot-kits-components">ImmunoSpot®<br>Kits</a> </div> <div class="position-relative d-flex"> <img src="https://immunospot.com/media/images/menu/support-blue.png" alt="Kit Scanning<br>& Analysis Services"> <a class="stretched-link ps-2" href="/products/kit-scanning-analysis">Kit Scanning<br>& Analysis Services</a> </div> </div> </div> </div> <div class="col-5"> <div class="menu-stacked-items"> <div class="px-4"> <div class="position-relative d-flex mb-2"><img src="https://immunospot.com/media/images/menu/epbmc-blue.png" alt="Cryopreserved PBMC"> <a class="stretched-link ps-2" href="/products/epbmc">Cryopreserved<br>PBMC</a></div> <div class="position-relative d-flex mb-2"><img src="https://immunospot.com/media/images/menu/serum-free-blue.png" alt="Serum-Free Media"> <a class="stretched-link ps-2" href="/products/serum-free-media">Serum-Free <br>Media</a></div> <div class="position-relative d-flex"><img src="https://immunospot.com/media/images/menu/positive-control-blue.png" alt="Positive Controls Antigen"> <a class="stretched-link ps-2" href="/products/positive-controls-tcell-activation">Positive Controls for <br>T cell Activation</a></div> </div> </div> </div> </div></div></li><!-- close submenu-child --><li class="submenu-child"><!-- re-open submenu-child --><ul class="columns-group starter" style="width: auto"><li class="megamenu level1 nav-1-1 category-item first disabled-link" data-test="test"><a href="javascript:void(0);" ><span>Anchor</span></a></li><li class="megamenu level1 nav-1-2 category-item" data-test="test"><a href="https://immunospot.com/immunospot-kits-components" ><span>ImmunoSpot® Kits & Components</span></a></li><li class="megamenu level1 nav-1-3 category-item" data-test="test"><a href="https://immunospot.com/products-filter/analyzers.html" ><span>Analyzers</span></a></li><li class="megamenu level1 nav-1-4 category-item last" data-test="test"><a href="https://immunospot.com/products-filter/software.html" ><span>Software</span></a></li><span class="close columns-group last"></span></ul></li><!-- end submenu-child --></ul><!-- end submenu --></li><li class="megamenu level-top-boxed level0 nav-2 category-item level-top parent" data-test="test"><a href="https://immunospot.com/services/contract-laboratory-services" class="level-top" ><span>Services</span></a><ul class="level0 submenu boxed hide-all-category has-menu-block top-block-child " style="display: none;"><li class="submenu-child"><div class="menu-block top-block block-container"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="row"> <div class="col-6 px-0"> <div class="menu-row-items h-100 text-start"> <div class="px-4"> <div class="pb-5 menu-stacked-items"><img src="https://immunospot.com/media/images/menu/contract-lab-services-blue.png" alt=""> <a class="ps-2" href="/services/contract-laboratory-services">Contract Laboratory <br>Services</a></div> <a href="/services/whole-blood-processing-to-cryopreserved-pbmc">Whole Blood Processing to Cryopreserved PBMC</a><br><a href="/services/t-cell-elispot-testing">T Cell ELISPOT Testing</a><br><a href="/services/b-cell-elispot-testing">B Cell ELISPOT Testing</a><br><a href="/services/elisa-testing">ELISA Testing</a><br><a href="/neutralizing-antibody-nab-assays.html">Neutralizing Antibody (NAb) assays</a><br><a href="/flow-cytometry-testing.html">Flow Cytometry Testing</a><br><a href="https://immunospot.com/sample-management.html">Sample Management</a><br><a href="/services/assay-standardization">Assay Standardization</a><br><a href="/services/contract-scanning-analysis">Scanning & Analysis Services</a></div> </div> </div> <div class="col-6 pr-0"> <div class="menu-row-items h-100 text-start"> <div class="px-0"> <div class="pb-5 menu-stacked-items"><img src="https://immunospot.com/media/images/menu/training-consulting-blue.png" alt=""> <a class="ps-2" href="/services/training-consultation">Training & <br>Consultation</a></div> <a href="/products/kit-scanning-analysis">Kit Scanning Services</a><br> <a href="/services/elispot-proficiency-testing">ELISPOT/FluoroSpot Proficiency Testing</a><br> <a href="/services/interactive-web-based-training">Interactive Web-based Training</a><br> <a href="/services/elispot-workshops">ELISPOT/FluoroSpot Workshops</a></div> </div> </div> </div></div></div></li><!-- close submenu-child --><li class="submenu-child"><!-- re-open submenu-child --><ul class="columns-group starter" style="width: auto"><li class="megamenu level1 nav-2-1 category-item first disabled-link" data-test="test"><a href="javascript:void(0);" ><span>Anchor</span></a></li><li class="megamenu level1 nav-2-2 category-item" data-test="test"><a href="https://immunospot.com/contract-laboratory-services" ><span>Contract Laboratory Services</span></a></li><li class="megamenu level1 nav-2-3 category-item last" data-test="test"><a href="https://immunospot.com/training-consultation" ><span>Training & Consultation</span></a></li><span class="close columns-group last"></span></ul></li><!-- end submenu-child --></ul><!-- end submenu --></li><li class="megamenu level-top-boxed level0 nav-3 category-item level-top parent" data-test="test"><a href="https://immunospot.com/resources" class="level-top" ><span>News & Resources</span></a><ul class="level0 submenu boxed hide-all-category has-menu-block top-block-child " style="display: none;"><li class="submenu-child"><div class="menu-block top-block block-container"><div class="row"> <div class="col-4"> <div class="menu-stacked-items"> <div class="px-4"> <div class="position-relative d-flex align-items-center mb-2"> <img src="https://immunospot.com/media/images/menu/news-blue.png" alt="News"> <a class="ps-2" href="/resources/news">News</a> </div> <div class="position-relative d-flex align-items-center"> <img src="https://immunospot.com/media/images/menu/publications-blue.png" alt="Publications<br>by Scientists"> <a class="ps-2" href="/resources/recent-publications">Publications<br>by Scientists</a> </div> </div> </div> </div> <div class="col-5"> <div class="menu-stacked-items"> <div class="px-4"> <div class="position-relative d-flex align-items-center mb-2"> <img src="https://immunospot.com/media/images/menu/video-blue.png" alt="Video Library"><a class="ps-2" href="/resources/video-library">Video Library</a> </div> <div class="position-relative d-flex align-items-center"><img src="https://immunospot.com/media/images/menu/compliance.png" alt=""> <a class="ps-2" href="/about-ctl/compliance">Compliance</a></div> </div> </div> </div> </div></div></li><!-- close submenu-child --><li class="submenu-child"><!-- re-open submenu-child --><ul class="columns-group starter" style="width: auto"><li class="megamenu level1 nav-3-1 category-item first last disabled-link" data-test="test"><a href="javascript:void(0);" ><span>Anchor</span></a></li><span class="close columns-group last"></span></ul></li><!-- end submenu-child --></ul><!-- end submenu --></li><li class="megamenu level-top-boxed level0 nav-4 category-item level-top parent" data-test="test"><a href="https://immunospot.com/about-ctl" class="level-top" ><span>About Us</span></a><ul class="level0 submenu boxed hide-all-category has-menu-block top-block-child " style="display: none;"><li class="submenu-child"><div class="menu-block top-block block-container"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="row"> <div class="pr-0"> <div class="menu-row-items h-100 text-start"> <div class="px-4"> <div class="pb-1 menu-stacked-items d-flex align-items-center"> <img src="https://immunospot.com/media/images/menu/about-us-blue.png" alt=""> <a class="ps-2" href="/about-ctl/our-company">About CTL</a> </div> <a href="/about-ctl/our-company">Our Company</a> <br> <a href="/about-ctl/first-in-elispot">Leading ELISPOT</a> <br> <a href="/about-ctl/about-elispot">About ELISPOT</a> <br> <a href="/about-ctl/about-fluorospot">About Fluorospot</a> <br> <a class="w-100" href="/about-ctl/why-immunospot">Why ImmunoSpot®</a> <br> <a href="/about-ctl/careers">Careers</a> </div> </div> </div> </div></div></div></li><!-- close submenu-child --><li class="submenu-child"><!-- re-open submenu-child --><ul class="columns-group starter" style="width: auto"><li class="megamenu level1 nav-4-1 category-item first last disabled-link" data-test="test"><a href="javascript:void(0);" ><span>Anchor</span></a></li><span class="close columns-group last"></span></ul></li><!-- end submenu-child --></ul><!-- end submenu --></li><li class="megamenu level-top-boxed level0 nav-5 category-item last level-top parent" data-test="test"><a href="https://immunospot.com/contact-support/contact-us" class="level-top" ><span>Contact</span></a><ul class="level0 submenu boxed hide-all-category has-menu-block top-block-child " style="display: none;"><li class="submenu-child"><div class="menu-block top-block block-container"><div class="row"> <div class="pr-0"> <div class="menu-row-items h-100 text-start"> <div class="px-4"> <div class="pb-1 menu-stacked-items d-flex align-items-center"><img src="https://immunospot.com/media/images/menu/contact-blue.png" alt=""> <a class="ps-2" href="/contact-support/contact-us">Contact Us</a></div><a href="/contact-support/customer-support">Customer Support</a> <br><a href="/contact-support/service-contracts">Service Contracts</a> </div> </div> </div> </div></div></li><!-- close submenu-child --><li class="submenu-child"><!-- re-open submenu-child --><ul class="columns-group starter" style="width: auto"><li class="megamenu level1 nav-5-1 category-item first last disabled-link" data-test="test"><a href="javascript:void(0);" ><span>Anchor</span></a></li><span class="close columns-group last"></span></ul></li><!-- end submenu-child --></ul><!-- end submenu --></li> </ul> </nav> <div class="nav-accordion" id="nav-accordion"> <div class="card border-0"> <div class="card-header bg-transparent border-0" id="headingOne"> <h2 class="mb-0"> <button class="btn btn-link collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne"> Products </button> </h2> </div> <div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-bs-parent="#nav-accordion"> <div class="card-body"> <a href="https://immunospot.com/products/analyzers"> <span>ImmunoSpot® Analyzers</span> </a><br> <a href="https://immunospot.com/products/immunospot-kits-components"> <span>ImmunoSpot® Kits</span> </a><br> <a href="https://immunospot.com/products/kit-scanning-analysis"> <span>Kit Scanning & Analysis Services</span> </a><br> <a href="https://immunospot.com/products/epbmc"> <span>Cryopreserved PBMC</span> </a><br> <a href="https://immunospot.com/products/serum-free-media"> <span>Serum-free Media</span> </a><br> <a href="https://immunospot.com/products/positive-controls-tcell-activation"> <span>Positive Controls for T cell Activation</span> </a> </div> </div> </div> <div class="card border-0"> <div class="card-header bg-transparent border-0" id="headingTwo"> <h2 class="mb-0"> <button class="btn btn-link collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"> Services </button> </h2> </div> <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-bs-parent="#nav-accordion"> <div class="card-body"> <a href="https://immunospot.com/services/contract-laboratory-services"> <span>Contract Laboratory Services</span> </a><br> <a href="https://immunospot.com/services/training-consultation"> <span>Training & Consultation</span> </a> </div> </div> </div> <div class="card border-0"> <div class="card-header bg-transparent border-0" id="headingThree"> <h2 class="mb-0"> <button class="btn btn-link collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree"> News & Resources </button> </h2> </div> <div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-bs-parent="#nav-accordion"> <div class="card-body"> <a href="https://immunospot.com/resources/news"> <span>News</span> </a><br> <a href="https://immunospot.com/resources/recent-publications"> <span>Publications by Scientists</span> </a><br> <a href="https://immunospot.com/resources/video-library"> <span>Video Library</span> </a> </div> </div> </div> <div class="card border-0"> <div class="card-header bg-transparent border-0" id="headingFour"> <h2 class="mb-0"> <button class="btn btn-link collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseFour" aria-expanded="false" aria-controls="collapseFour"> Contact </button> </h2> </div> <div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-bs-parent="#nav-accordion"> <div class="card-body"> <a href="https://immunospot.com/contact-support/contact-us"> <span>Contact Us & Distributors</span> </a><br> <a href="https://immunospot.com/services/elispot-workshops"> <span>Enroll in ELISPOT Workshop</span> </a><br> <a href="https://immunospot.com/customer-support"> <span>Customer Support</span> </a><br> <a href="https://immunospot.com/service-contracts"> <span>Service Contracts</span> </a> </div> </div> </div> <div class="card border-0"> <div class="card-header bg-transparent border-0" id="headingFive"> <h2 class="mb-0"> <button class="btn btn-link collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseFive" aria-expanded="false" aria-controls="collapseFive"> CTL Support </button> </h2> </div> <div id="collapseFive" class="collapse" aria-labelledby="headingFive" data-bs-parent="#nav-accordion"> <div class="card-body"> <a href="https://immunospot.com/contact-support/customer-support"> <span>Customer Support</span> </a><br> <a href="https://immunospot.com/contact-support/service-contracts"> <span>Service Contracts</span> </a> </div> </div> </div> <div class="card border-0"> <div class="card-header bg-transparent border-0" id="headingSix"> <h2 class="mb-0"> <button class="btn btn-link collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSix" aria-expanded="false" aria-controls="collapseSix"> About CTL </button> </h2> </div> <div id="collapseSix" class="collapse" aria-labelledby="headingSix" data-bs-parent="#nav-accordion"> <div class="card-body"> <a href="https://immunospot.com/about-ctl/our-company"> <span>Our Company</span> </a><br> <a href="https://immunospot.com/about-ctl/first-in-elispot"> <span>Leading ELISPOT</span> </a><br> <a href="https://immunospot.com/about-ctl/about-elispot"> <span>About ELISPOT</span> </a><br> <a href="https://immunospot.com/about-ctl/about-fluorospot"> <span>About Fluorospot</span> </a><br> <a href="https://immunospot.com/about-ctl/why-immunospot"> <span>Why ImmunoSpot®</span> </a> <br> <a href="https://immunospot.com/about-ctl/careers"> <span>Career Opportunities</span> </a> </div> </div> </div> <div class="card border-0"> <div class="card-header bg-transparent border-0" id="headingSeven"> <h2 class="mb-0"> <button class="btn btn-link collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSeven" aria-expanded="false" aria-controls="collapseSeven"> Compliance </button> </h2> </div> <div id="collapseSeven" class="collapse" aria-labelledby="headingSeven" data-bs-parent="#nav-accordion"> <div class="card-body"> <a href="https://immunospot.com/about-ctl/compliance"> <span>Regulatory and Quality Assurance</span> </a> </a> </div> </div> </div> </div> </div> <div class="section-item-title nav-sections-item-title" data-role="collapsible"> <a class="nav-sections-item-switch" data-toggle="switch" href="#store.links"> Account </a> </div> <div class="section-item-content nav-sections-item-content" id="store.links" data-role="content"> <!-- Account links --> </div> </div> </div> <div id="algoliaAutocomplete" class="block block-search algolia-search-block algolia-search-input"></div> <div data-block="minicart" class="minicart-wrapper"> <a class="action showcart" href="https://immunospot.com/checkout/cart/" data-bind="scope: 'minicart_content'"> <span class="text">My Cart</span> <span class="counter qty empty" data-bind="css: { empty: !!getCartParam('summary_count') == false && !isLoading() }, blockLoader: isLoading"> <span class="counter-number"> <!-- ko if: getCartParam('summary_count') --> <!-- ko text: getCartParam('summary_count').toLocaleString(window.LOCALE) --><!-- /ko --> <!-- /ko --> </span> <span class="counter-label"> <!-- ko if: getCartParam('summary_count') --> <!-- ko text: getCartParam('summary_count').toLocaleString(window.LOCALE) --><!-- /ko --> <!-- ko i18n: 'items' --><!-- /ko --> <!-- /ko --> </span> </span> </a> <div class="block block-minicart" data-role="dropdownDialog" data-mage-init='{"dropdownDialog":{ "appendTo":"[data-block=minicart]", "triggerTarget":".showcart", "timeout": "2000", "closeOnMouseLeave": false, "closeOnEscape": true, "triggerClass":"active", "parentClass":"active", "buttons":[]}}'> <div id="minicart-content-wrapper" data-bind="scope: 'minicart_content'"> <!-- ko template: getTemplate() --><!-- /ko --> </div> </div> <script>window.checkout = {"shoppingCartUrl":"https:\/\/immunospot.com\/checkout\/cart\/","checkoutUrl":"https:\/\/immunospot.com\/checkout\/","updateItemQtyUrl":"https:\/\/immunospot.com\/checkout\/sidebar\/updateItemQty\/","removeItemUrl":"https:\/\/immunospot.com\/checkout\/sidebar\/removeItem\/","imageTemplate":"Magento_Catalog\/product\/image_with_borders","baseUrl":"https:\/\/immunospot.com\/","minicartMaxItemsVisible":5,"websiteId":"1","maxItemsToDisplay":10,"storeId":"1","storeGroupId":"1","agreementIds":["1"],"customerLoginUrl":"https:\/\/immunospot.com\/customer\/account\/login\/referer\/aHR0cHM6Ly9pbW11bm9zcG90LmNvbS8%2C\/","isRedirectRequired":false,"autocomplete":"off","captcha":{"user_login":{"isCaseSensitive":false,"imageHeight":50,"imageSrc":"","refreshUrl":"https:\/\/immunospot.com\/captcha\/refresh\/","isRequired":false,"timestamp":1732389311}}}</script> <script type="text/x-magento-init"> { "[data-block='minicart']": { "Magento_Ui/js/core/app": {"components":{"minicart_content":{"children":{"subtotal.container":{"children":{"subtotal":{"children":{"subtotal.totals":{"config":{"display_cart_subtotal_incl_tax":0,"display_cart_subtotal_excl_tax":1,"template":"Magento_Tax\/checkout\/minicart\/subtotal\/totals"},"children":{"subtotal.totals.msrp":{"component":"Magento_Msrp\/js\/view\/checkout\/minicart\/subtotal\/totals","config":{"displayArea":"minicart-subtotal-hidden","template":"Magento_Msrp\/checkout\/minicart\/subtotal\/totals"}}},"component":"Magento_Tax\/js\/view\/checkout\/minicart\/subtotal\/totals"}},"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/subtotal"}}},"component":"uiComponent","config":{"displayArea":"subtotalContainer"}},"item.renderer":{"component":"Magento_Checkout\/js\/view\/cart-item-renderer","config":{"displayArea":"defaultRenderer","template":"Magento_Checkout\/minicart\/item\/default"},"children":{"item.image":{"component":"Magento_Catalog\/js\/view\/image","config":{"template":"Magento_Catalog\/product\/image","displayArea":"itemImage"}},"checkout.cart.item.price.sidebar":{"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/item\/price","displayArea":"priceSidebar"}}}},"extra_info":{"component":"uiComponent","config":{"displayArea":"extraInfo"}},"promotion":{"component":"uiComponent","config":{"displayArea":"promotion"}}},"config":{"itemRenderer":{"default":"defaultRenderer","simple":"defaultRenderer","virtual":"defaultRenderer"},"template":"Magento_Checkout\/minicart\/content"},"component":"Magento_Checkout\/js\/view\/minicart"}},"types":[]} }, "*": { "Magento_Ui/js/block-loader": "https\u003A\u002F\u002Fimmunospot.com\u002Fstatic\u002Fversion1728550059\u002Ffrontend\u002FForti\u002Fimmuno\u002Fen_US\u002Fimages\u002Floader\u002D1.gif" } } </script> </div> </div></header><main id="maincontent" class="page-main-full-width"><div id="algolia-autocomplete-container"></div><div class="headerArea container"><div class="headerCombo mt-5"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><h1 class="text-secondary pt-2 fw-bold">Leading high content ELISPOT/FluoroSpot <br>analysis for over 25 years</h1> <h2><a class="text-primary" href="/about-ctl/first-in-elispot">Learn more</a></h2> </div></div></div><a id="contentarea" tabindex="-1"></a> <div class="page messages"><div data-placeholder="messages"></div> <div data-bind="scope: 'messages'"> <!-- ko if: cookieMessages && cookieMessages.length > 0 --> <div aria-atomic="true" role="alert" data-bind="foreach: { data: cookieMessages, as: 'message' }" class="messages"> <div data-bind="attr: { class: 'message-' + message.type + ' ' + message.type + ' message', 'data-ui-id': 'message-' + message.type }"> <div data-bind="html: $parent.prepareMessageForHtml(message.text)"></div> </div> </div> <!-- /ko --> <!-- ko if: messages().messages && messages().messages.length > 0 --> <div aria-atomic="true" role="alert" class="messages" data-bind="foreach: { data: messages().messages, as: 'message' }"> <div data-bind="attr: { class: 'message-' + message.type + ' ' + message.type + ' message', 'data-ui-id': 'message-' + message.type }"> <div data-bind="html: $parent.prepareMessageForHtml(message.text)"></div> </div> </div> <!-- /ko --> </div> <script type="text/x-magento-init"> { "*": { "Magento_Ui/js/core/app": { "components": { "messages": { "component": "Magento_Theme/js/view/messages" } } } } } </script> </div><div class="columns"><div class="column main order-1"><input name="form_key" type="hidden" value="JEJo6px0WijmugEu" /><div id="authenticationPopup" data-bind="scope:'authenticationPopup', style: {display: 'none'}"> <script>window.authenticationPopup = {"autocomplete":"off","customerRegisterUrl":"https:\/\/immunospot.com\/customer\/account\/create\/","customerForgotPasswordUrl":"https:\/\/immunospot.com\/customer\/account\/forgotpassword\/","baseUrl":"https:\/\/immunospot.com\/","customerLoginUrl":"https:\/\/immunospot.com\/customer\/ajax\/login\/"}</script> <!-- ko template: getTemplate() --><!-- /ko --> <script type="text/x-magento-init"> { "#authenticationPopup": { "Magento_Ui/js/core/app": {"components":{"authenticationPopup":{"component":"Magento_Customer\/js\/view\/authentication-popup","children":{"messages":{"component":"Magento_Ui\/js\/view\/messages","displayArea":"messages"},"captcha":{"component":"Magento_Captcha\/js\/view\/checkout\/loginCaptcha","displayArea":"additional-login-form-fields","formId":"user_login","configSource":"checkout"},"recaptcha":{"component":"Magento_ReCaptchaFrontendUi\/js\/reCaptcha","displayArea":"additional-login-form-fields","reCaptchaId":"recaptcha-popup-login","settings":{"rendering":{"sitekey":"6LeOT5EcAAAAAHi4oucEmcs91zYtY-3SsXHt2B5y","badge":"inline","size":"invisible","theme":"light","hl":""},"invisible":true}}}}}} }, "*": { "Magento_Ui/js/block-loader": "https\u003A\u002F\u002Fimmunospot.com\u002Fstatic\u002Fversion1728550059\u002Ffrontend\u002FForti\u002Fimmuno\u002Fen_US\u002Fimages\u002Floader\u002D1.gif" } } </script> </div> <script type="text/x-magento-init"> { "*": { "Magento_Customer/js/section-config": { "sections": {"stores\/store\/switch":["*"],"stores\/store\/switchrequest":["*"],"directory\/currency\/switch":["*"],"*":["messages","ms-couponcode-content"],"customer\/account\/logout":["*","recently_viewed_product","recently_compared_product","persistent"],"customer\/account\/loginpost":["*"],"customer\/account\/createpost":["*"],"customer\/account\/editpost":["*"],"customer\/ajax\/login":["checkout-data","cart","captcha","pc-customer-data"],"catalog\/product_compare\/add":["compare-products","gtm"],"catalog\/product_compare\/remove":["compare-products"],"catalog\/product_compare\/clear":["compare-products"],"sales\/guest\/reorder":["cart"],"sales\/order\/reorder":["cart"],"checkout\/cart\/add":["cart","directory-data","gtm"],"checkout\/cart\/delete":["cart","gtm"],"checkout\/cart\/updatepost":["cart"],"checkout\/cart\/updateitemoptions":["cart"],"checkout\/cart\/couponpost":["cart"],"checkout\/cart\/estimatepost":["cart"],"checkout\/cart\/estimateupdatepost":["cart"],"checkout\/onepage\/saveorder":["cart","checkout-data","last-ordered-items"],"checkout\/sidebar\/removeitem":["cart","gtm"],"checkout\/sidebar\/updateitemqty":["cart"],"rest\/*\/v1\/carts\/*\/payment-information":["cart","last-ordered-items","captcha","instant-purchase","gtm"],"rest\/*\/v1\/guest-carts\/*\/payment-information":["cart","captcha","gtm"],"rest\/*\/v1\/guest-carts\/*\/selected-payment-method":["cart","checkout-data"],"rest\/*\/v1\/carts\/*\/selected-payment-method":["cart","checkout-data","instant-purchase"],"customer\/address\/*":["instant-purchase"],"customer\/account\/*":["instant-purchase"],"vault\/cards\/deleteaction":["instant-purchase"],"multishipping\/checkout\/overviewpost":["cart"],"paypal\/express\/placeorder":["cart","checkout-data"],"paypal\/payflowexpress\/placeorder":["cart","checkout-data"],"paypal\/express\/onauthorization":["cart","checkout-data"],"persistent\/index\/unsetcookie":["persistent"],"review\/product\/post":["review"],"wishlist\/index\/add":["wishlist","gtm"],"wishlist\/index\/remove":["wishlist"],"wishlist\/index\/updateitemoptions":["wishlist"],"wishlist\/index\/update":["wishlist"],"wishlist\/index\/cart":["wishlist","cart","gtm"],"wishlist\/index\/fromcart":["wishlist","cart"],"wishlist\/index\/allcart":["wishlist","cart","gtm"],"wishlist\/shared\/allcart":["wishlist","cart"],"wishlist\/shared\/cart":["cart"],"braintree\/paypal\/placeorder":["cart","checkout-data"],"braintree\/googlepay\/placeorder":["cart","checkout-data"],"checkout\/cart\/configure":["gtm"],"rest\/*\/v1\/guest-carts\/*\/shipping-information":["gtm"],"rest\/*\/v1\/carts\/*\/shipping-information":["gtm"]}, "clientSideSections": ["checkout-data","cart-data"], "baseUrls": ["https:\/\/immunospot.com\/"], "sectionNames": ["messages","customer","compare-products","last-ordered-items","cart","directory-data","captcha","instant-purchase","loggedAsCustomer","persistent","review","wishlist","ms-couponcode-content","pc-customer-data","gtm","recently_viewed_product","recently_compared_product","product_data_storage","paypal-billing-agreement"] } } } </script> <script type="text/x-magento-init"> { "*": { "Magento_Customer/js/customer-data": { "sectionLoadUrl": "https\u003A\u002F\u002Fimmunospot.com\u002Fcustomer\u002Fsection\u002Fload\u002F", "expirableSectionLifetime": 60, "expirableSectionNames": ["cart","persistent"], "cookieLifeTime": "3600", "updateSessionUrl": "https\u003A\u002F\u002Fimmunospot.com\u002Fcustomer\u002Faccount\u002FupdateSession\u002F" } } } </script> <script type="text/x-magento-init"> { "*": { "Magento_Customer/js/invalidation-processor": { "invalidationRules": { "website-rule": { "Magento_Customer/js/invalidation-rules/website-rule": { "scopeConfig": { "websiteId": "1" } } } } } } } </script> <script type="text/x-magento-init"> { "body": { "pageCache": {"url":"https:\/\/immunospot.com\/page_cache\/block\/render\/","handles":["default","cms_index_index","cms_page_view","cms_index_index_id_home","algolia_search_handle","algolia_search_handle_with_topsearch"],"originalRequest":{"route":"cms","controller":"index","action":"index","uri":"\/"},"versionCookieName":"private_content_version"} } } </script> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="masthead" style="background-image: url('/pub/media/images/banners/main-banner.jpg');"> </div> <div class="shadow bg-secondary py-3"> <div class="container"><a class="text-primary" href="/resources/recent-publications">• Recent publications of CTL scientists contributing to immune monitoring</a></div> </div> <div class="container my-4"> <h4>We offer everything you need to succeed with immune monitoring by ELISPOT/FluoroSpot</h4> <div class="row category-icons align-items-center mt-4"> <div class="col-10"> <div class="row cs-media-tabs"> <div class="col-xl col-lg-3 col-md-4 col-sm-6 col-10 px-1"> <div class="position-relative shadow rounded nav-link p-0 mb-3"> <div class="row no-gutters py-1"> <div class="col-5 d-flex align-items-center ps-4 pe-1"><img src="https://immunospot.com/media/images/home/Contract-research-120x120.png" alt=""></div> <div class="col-7 d-flex align-items-center position-static pt-2 ps-2"> <h5><a class="stretched-link" href="/services/contract-laboratory-services" style="color: #5d5991;">CRO Services</a></h5> </div> </div> </div> </div> <div class="col-xl col-lg-3 col-md-4 col-sm-6 col-10 px-1"> <div class="position-relative shadow rounded nav-link p-0 mb-3"> <div class="row no-gutters py-1"> <div class="col-5 d-flex align-items-center ps-4 pe-1"><img src="https://immunospot.com/media/images/home/Analyzers-120x120.png" alt=""></div> <div class="col-7 d-flex align-items-center position-static pt-2 ps-2"> <h5><a class="stretched-link" href="/products/analyzers" style="color: #5d5991;">Analyzers &<br>Software</a></h5> </div> </div> </div> </div> <div class="col-xl col-lg-3 col-md-4 col-sm-6 col-10 px-1"> <div class="position-relative shadow rounded nav-link p-0 mb-3"> <div class="row no-gutters py-1"> <div class="col-5 d-flex align-items-center ps-4 pe-1"><img src="https://immunospot.com/media/images/home/Kits-120x120.png" alt=""></div> <div class="col-7 d-flex align-items-center position-static pt-2 ps-2"> <h5><a class="stretched-link" href="/products/immunospot-kits-components" style="color: #5d5991;">Kits &<br>Components</a></h5> </div> </div> </div> </div> <div class="col-xl col-lg-3 col-md-4 col-sm-6 col-10 px-1"> <div class="position-relative shadow rounded nav-link p-0 mb-3"> <div class="row no-gutters py-1"> <div class="col-5 d-flex align-items-center ps-4 pe-1"><img src="https://immunospot.com/media/images/home/epbmc-120x120.jpg" alt=""></div> <div class="col-7 d-flex align-items-center position-static pt-2 ps-2"> <h5><a class="stretched-link" href="/products/epbmc" style="color: #5d5991;">ePBMC®<br>Library</a></h5> </div> </div> </div> </div> <div class="col-xl col-lg-3 col-md-4 col-sm-6 col-10 px-1"> <div class="position-relative shadow rounded nav-link p-0 mb-3"> <div class="row no-gutters py-1"> <div class="col-5 d-flex align-items-center ps-4 pe-1"><a href="#accessory" data-bs-target="#accessory" data-bs-toggle="collapse" aria-expanded="false" aria-controls="accessory"><img src="https://immunospot.com/media/images/home/Andmore-120x120.png" alt=""></a></div> <div class="col-7 d-flex align-items-center position-static pt-2 ps-2"> <h5><a class="stretched-link collapsed" href="#accessory" data-bs-target="#accessory" data-bs-toggle="collapse" aria-expanded="false" aria-controls="accessory" style="color: #5d5991;">... and much<br>more</a></h5> </div> </div> </div> </div> </div> </div> </div> <div class="row category-icons align-items-center mt-4"> <h4>Featured Products</h4> <div class="col-10 shadow biosopt-product-info"> <div class="row cs-media-tabs biospot"> <div class="col-sm col-lg-1 col-lg-1 col-lg-1 col-1 px-2"> <div class="position-relative rounded nav-link p-0 mb-12"> <div class="row no-gutters py-1"> <div class="col-12 d-flex align-items-center"><img src="https://immunospot.com/media/wysiwyg/Ferret-Single-Color-Elispot_1.jpg" alt="ferret elispot" /></div> </div> </div> </div> <div class="col-xl col-lg-7 col-md-7 col-sm-7 col-7 px-8 py-8 biospot-title"> <div class="position-relative rounded nav-link p-0 mb-12"> <div class="row no-gutters py-1"> <div class="col-12 d-flex align-items-center position-static ps-2"> <h5><a href="/b-cell-ferret" style="color: #5d5991;"> NEW - B cell Ferret Products</a></h5><br> </div> <div class="col-12 d-flex align-items-center position-static ps-2"><h6>B cell Ferret <a href="/b-cell-ferret" style="color: #5d5991;">ELISPOT/FluoroSpot kits</a> and anti-ferret Ig monoclonal <a href="/antibodies" style="color: #5d5991;">antibodies</a> (mAb) available now! </h6></div> </div> </div> </div> <div class="col-xl col-lg-3 col-md-3 col-sm-3 col-3 px-2 button-view"> <div class="position-relative rounded nav-link p-0 mb-12"> <div class="row no-gutters"> <div class="col-12 d-flex align-items-center position-static ps-2"> <button type="submit" title="View Product" class="biospot-button"><span><a href="/b-cell-ferret">VIEW PRODUCTS</a></span></button> </div> </div> </div> </div> </div> </div> </div> <div class="row category-icons align-items-center mt-4"> <div class="col-10 shadow biosopt-product-info"> <div class="row cs-media-tabs biospot"> <div class="col-sm col-lg-1 col-lg-1 col-lg-1 col-1 px-2"> <div class="position-relative rounded nav-link p-0 mb-12"> <div class="row no-gutters py-1"> <div class="col-12 d-flex align-items-center"><img src="https://immunospot.com/media/wysiwyg/biospot-image.jpg" alt="" /></div> </div> </div> </div> <div class="col-xl col-lg-7 col-md-7 col-sm-7 col-7 px-8 py-8 biospot-title"> <div class="position-relative rounded nav-link p-0 mb-12"> <div class="row no-gutters py-1"> <div class="col-12 d-flex align-items-center position-static ps-2"> <h5><a href="/biospot-software.html" style="color: #5d5991;">BioSpot™ Software Suite</a></h5><br> </div> <div class="col-12 d-flex align-items-center position-static ps-2"><h6>Image-analysis of Viral plaque assays, Micro-Neutralizations, and Colony counting.</h6></div> </div> </div> </div> <div class="col-xl col-lg-3 col-md-3 col-sm-3 col-3 px-2 button-view"> <div class="position-relative rounded nav-link p-0 mb-12"> <div class="row no-gutters"> <div class="col-12 d-flex align-items-center position-static ps-2"> <button type="submit" title="View Product" class="biospot-button"><span><a href="/biospot-software.html">VIEW PRODUCT</a></span></button> </div> </div> </div> </div> </div> </div> </div> <div id="accessory" class="panel-collapse collapse"> <div class="container p-0"> <div class="col-10 shadow rounded p-4"> <h5>In addition to Analyzers and test kits, the ImmunoSpot® portfolio includes accessory products, all optimized, fine-tuned, and batch tested for optimal ELISPOT/FluoroSpot performance:</h5> <ul class="no-indent mb-5"> <li> <h5><a href="/reagents">Serum free reagents for PBMC cryopreservation</a></h5> </li> <li> <h5><a href="/products/serum-free-media">Serum-free test media</a></h5> </li> <li> <h5><a href="/products/positive-controls-tcell-activation">Positive Controls for T cell Activation</a></h5> </li> </ul> <h5>As related services we offer:</h5> <ul class="no-indent"> <li> <h5><a href="/services/assay-training-consultation">ELISPOT/FluoroSpot Consultation</a></h5> </li> <li> <h5><a href="/services/elispot-workshops">ImmunoSpot® Workshops</a></h5> </li> <li> <h5><a href="/products/kit-scanning-analysis">ELISPOT/FluoroSpot plate analysis</a></h5> </li> <li> <h5><a href="/services/elispot-proficiency-testing">Proficiency testing</a></h5> </li> </ul> <button class="btn-close float-end" type="button" data-bs-target="#accessory" data-bs-toggle="collapse" aria-label="Close"></button> </div> </div> </div> </div> <div class="container mt-5"> <div class="row"> <div class="col-10"> <h4>Did you know?</h4> <ul class="no-indent"> <li class="mb-5"> <h2 class="h5">That B cell ImunoSpot® assays are easy to validate? </h2> <a href="https://www.researchsquare.com/article/rs-3994852/v1">Learn More</a> </li> <li class="mb-5"> <h2 class="h5">That, and how, B cell ImmunoSpot® assays will revolutionize immune monitoring? </h2> <a href="https://immunospot.com/pub/media/mageplaza/product_attachments/attachment_file/b/_/b_cell_immunospot_overview_lehmann_pv.pdf">Learn More</a> </li> <li class="mb-5"> <h2 class="h5">That it has never been easier to develop B cell ImmunoSpot® assays for any antigen of interest? </h2> <a href="https://pubmed.ncbi.nlm.nih.gov/34440612/">Learn More</a> </li> <li class="mb-5"> <h2 class="h5">That it takes only 0.4 ml of blood to measure the frequency of antigen-specific B cells secreting all four immunoglobulin classes (or IgG subclasses)? </h2> <a href="https://immunospot.com/pub/media/mageplaza/product_attachments/attachment_file/f/o/four_color_b_cell_immunospot_yao.pdf">Learn More</a> </li> <li class="mb-5"> <h2 class="h5">That B cell ImmunoSpot® assays can be used to assess the affinity distribution of the antigen-specific memory B cell repertoire? </h2> <a href="https://immunospot.com/pub/media/mageplaza/product_attachments/attachment_file/a/f/affinity_assessments_by_immunospot_becza.pdf">Learn More</a> </li> <li class="mb-5"> <h2 class="h5">That Double Color Enzymatic ImmunoSpot® analysis is a viable (and way more affordable) alternative to double color fluorospot? </h2> <a href="#" data-bs-toggle="modal" data-bs-target="#double-color">Learn More</a> </li> <li class="mb-5"> <h2 class="h5">That 384 well ImmunoSpot® assays are a precise miniature version of traditional 96 well assays, however, requiring only a fraction of cells? </h2> <a href="#" data-bs-toggle="modal" data-bs-target="#well-color">Learn More</a> </li> <li class="mb-5"> <h2 class="h5">That high throughput T cell epitope mapping has become more feasible than ever? </h2> <a class="text-primary" href="https://immunospot.com/pub/media/mageplaza/product_attachments/attachment_file/u/n/unbiased_high-throughput_identification_of_t_cell_epitopes_by_elispot2023_1.pdf" target="_blank">See publication</a> </li> <li class="mb-5"> <h2 class="h5">Detection of virus-reactive memory B cells by ImmunoSpot® more reliably reveals past infection(s) compared to serum antibody measurements. </h2> <a class="text-primary" href="https://www.mdpi.com/2073-4409/11/22/3662/htm" target="_blank">See publication</a> </li> <li class="mb-5"> <h2 class="h5">See how to use 4 color ImmunoSpot® for dissecting the cytokine signature of SARS-CoV2-specific T cells: </h2> <a class="text-primary" href="https://doi.org/10.1038/s41467-021-27649-y" target="_blank">See publication</a> </li> <li class="mb-5"> <h2 class="h5">Not just the first choice for ELISPOT/FluoroSpot and serum neutralization assays in general: ImmunoSpot® Instruments have also become the gold standard for reading SARS-CoV-2 antibody neutralization. </h2> <a class="text-primary" href="/sars-cov-2-neutralization-references" target="_blank">See publications</a> </li> <li class="mb-5"> <h2 class="h5"> Single and Multi-color reference plates now available for verifying ImmunoSpot® instrument’s consistent performance: Instrument qualification and validation has never been simpler. </h2> <p>Confirm instrument performance with a reference plate and dedicated ImmunoQualify software – generate Pass/Fail reports with a click of a button.</p> <a href="mailto:tameem.ansari@immunospot.com">Please inquire</a> </li> <li class="mb-5"> <h2 class="h5"> New ImmunoSpot® Release: SpotStat™ Software for the statistical analysis of ELISPOT/FluoroSpot data</h2> <p>The primary function of SpotStat® is to provide statistically-validated discrimination between antigen-induced responses and negative controls. SpotStat® was specifically designed to perform multiple comparison tests using a number of family-wise error correction methods, when multiple positive responses (e.g., peptide screening in T cell assays) are compared to a single negative control for the same subject (donor).</p> <a class="text-primary" href="/products/analyzers/spotstat-software.html" target="_blank">Learn more</a> </li> <li class="mb-5"> <h2 class="h5"> All CTL instruments now can count ELISPOT results consistently: Harmonization of instruments among different sites has never been more simple </h2> <p>Our IntelliCount™ software uses spot recognition criteria that are independent of some of the variables commonly affecting classical counting results such as differences in light sources, optics and other image capture components. This software is a major step towards elevating ELISpot to an exact science by coming up with consistent/standardized counts.</p> <a href="#intellicount" data-bs-toggle="collapse" aria-expanded="false" aria-controls="intellicount">Learn more.</a> <div id="intellicount" class="collapse mt-3"> <h5>ImmunoSpot IntelliCount™</h5> <p>Over 25 years of CTL’s leading expertise in <a href="https://pubmed.ncbi.nlm.nih.gov/21956509/" target="_blank" rel="noreferrer noopener">objective, scientifically validated ELISPOT counting</a> works now automatically for you “at a click of a button”! It does so, at the unprecedented speed of <p>20 seconds per 96 well ELISPOT plate! ELISPOT evaluation by InteliCount™ does not require setting of counting parameters for delivering the right result; any and all users will obtain the same unbiased objective counts even if they use different ImmunoSpot® analyzer models. The <a href="https://link.springer.com/article/10.1007/s00262-007-0380-6"> target="_blank" rel="noreferrer noopener">challenge of harmonizing ELISPOT counting</a> has been <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4381207/" target="_blank" rel="noreferrer noopener">solved!</a> </p> <p> In addition to offering the ultimate simplicity and user friendliness (while the software automatically performs the most sophisticated high-content data analysis in the background), the new ImmunoSpot® Studio platform also provides streamlined access to high-content information, including assessing the amount of analyte released by cells <a href="https://pubmed.ncbi.nlm.nih.gov/21956507/" target="_blank" rel="noreferrer noopener">(“spot volume”).</a> In B cell ELISPOT, the detailed analysis of spot morphologies provides information on <a href="/fcs-output" target="_blank">the individual B cell’s affinity for the antigen.</a></p> <h5>ImmunoSpot Studio™</h5> <p> The new CTL Studio™ framework permits to create modular custom software suites for a variety of applications used in immune monitoring. This highly advanced framework utilizes standard building blocks like Lego pieces to generate the required functionality and graphical user interfaces. Versatile counting algorithms implemented in CTL Studio™ cover a variety of object types for the recognition of individual cells, ELISPOTs, viral plaques, bacterial colonies, and much more. CTL Studio™ includes the IntelliCount™ data processing mode to ensure unbiased, objective results and <a href="/products/analyzers/spotstat-software.html" target="_blank">advanced statistical analysis</a>. It enables user-friendly implementation of versatile counting algorithms for high-content analysis including measurements of the amount of analytes released by secreting cells (spot “volume”). A floating point <a href="/hdr-imaging" target="_blank">HDR imaging</a> option is available to increase the dynamic range of such measurements. For highest precision, the unprocessed high bit rate <a href="https://en.wikipedia.org/wiki/Raw_image_format" target="_blank" rel="noreferrer noopener">RAW images</a> are also supported at up to 16-bit resolution. The current Studio release includes suites for <a href="#" data-bs-toggle="modal" data-bs-target="#software-sce">ELISPOT,</a> <a href="#" data-bs-toggle="modal" data-bs-target="#biospot-l10">BIOSPOT,</a> <a href="#" data-bs-toggle="modal" data-bs-target="#elisa-odense">ODense/ELISA</a> and <a href="#" data-bs-toggle="modal" data-bs-target="#reagent-tracker">CTL Reagent Tracker.</a> The CTL Studio framework continuously develops to cover new applications and to meet growing challenges of comprehensive immune monitoring.</p> </li> <li class="mb-5"> <h2 class="h5"> Access to custom antigen-specific B cell ImmunoSpot® assays</h2> <p>The primary limitation to developing new antigen-specific B cell ELISPOT/FluoroSpot assays has been the ability to coat membranes densely with antigen. No longer!</p> <a class="text-primary" href="https://www.mdpi.com/2073-4409/10/8/1843" target="_blank" rel="noreferrer noopener">See publication</a><br> <a href="mailto:greg.kirchenbaum@immunospot.com" target="_top">Request CTL to develop a B cell assay of your choice for you.</a> </li> <li class="mb-5"> <h2 class="h5"> All fluorescence-capable ImmunoSpot® analyzers now come with high-throughput live/dead PBMC counting capability </h2> <p>Live/dead cell counting is important for the assessment of PBMC samples’ fitness following cryopreservation or prolonged storage/shipment [ref]. The accurate counting of live cells in PBMC is essential for adjusting the cell numbers to be plated into ELISPOT/FluoroSpot assays as divergent cell counts contribute the largest variability to inter-assay reproducibility. Unless using a dedicated instrument for live/dead cell counting, this process is time-consuming and rate limiting for testing of multiple PBMC samples in an experiment. No longer!</p> <a class="text-primary" href="/products/analyzers/lda-cell-counting-suite.html">Learn more</a> </li> <li class="mb-5"> <h2 class="h5"> ImmunoSpot® analyzers now permit measuring cell-mediated cytotoxicity via the Target Cell Visualization Assay (TVA) </h2> <p> Measuring cell-mediated cytotoxicity is part of the assay repertoire of most laboratories involved in immune monitoring efforts. CTL’s philosophy is to offer instruments that support several functions commonly performed in immune monitoring laboratories. Enabled by our TVA Software suite, CTL’s fluorescence capable ImmunoSpot® instruments can measure cell-mediated cytotoxicity. </p> <a class="text-primary" href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5981259/" target="_blank" rel="noreferrer noopener">See publication</a><br> <a class="text-primary" href="/products/analyzers/ctl-tva-suite.html">Learn more</a> </li> <li class="mb-5"> <h2 class="h5"> New to ELISPOT/FluoroSpot? CTL now offers one-on-one, hands-on training with the assays, data analysis, and troubleshooting!</h2> <p>No instruments needed, no PBMC or antigens needed, we provide it all! You can get started any time.</p> <a href="mailto:jodi.hanson@immunospot.com">Please inquire</a> </li> <li class="mb-5"> <h2 class="h5"> CTL now offers full exome-characterized PBMC</h2> <p>You may not want to miss this opportunity if you are studying in humans the effect of any type of genetic variation on any type of cellular function.</p> <a class="text-primary" href="/products/epbmc/full-exome-characterized.html">Learn more</a> </li> <li class="mb-5"> <h2 class="h5"> T and B cell characterized PBMC now available</h2> <p>Looking for positive/negative control PBMC reference samples? In addition to offering PBMC that have defined numbers of antigen-specific T cells, we now also offer PBMC with defined numbers of antigen-specific B cells.</p> <a class="text-primary" href="/products/epbmc">Learn more</a> </li> <li class="mb-5"> <h2 class="h5"> We offer largely improved positive controls for testing antigen-specific CD4+ or CD8+ T cell function in PBMC</h2> <a class="text-primary" href="https://www.mdpi.com/2073-4409/10/2/248" target="_blank" rel="noreferrer noopener">See publication</a><br> <a class="text-primary" href="/products/positive-controls-tcell-activation">See the products</a> </li> <li class="mb-5"> <h2 class="h5"> Polyclonal B cell stimulator mimicking T cell help now available for monitoring antigen-specific memory B cells by ELISPOT/FluoroSpot.</h2> <a class="text-primary" href="https://www.mdpi.com/2073-4409/9/2/433" target="_blank" rel="noreferrer noopener">See publication</a> </li> <li class="mb-5"> <h2 class="h5"> CTL introduces new HDR imaging platform for FluoroSpot analysis</h2> <p> Conventional FluoroSpot relies on the analysis of a single image of a well, captured using a single exposure level. This approach may miss faint spots, while overly bright spots can be over-exposed, leading to inaccurate quantitation of the per cell secretory activity. No longer! </p> <a class="text-primary" href="/hdr-imaging">Learn more</a> </li> <li> <h2 class="h5"> CTL scientists highlight ImmunoSpot®’s suitability for high-throughput immune monitoring</h2> <p>Our recent publication details how comprehensive ImmunoSpot® testing against all potential determinants of an antigen is technically feasible, and calls into question the usage of single or few previously established or predicted peptides for reliable immune monitoring.</p> <a class="text-primary" href="https://www.frontiersin.org/articles/10.3389/fimmu.2020.618428/full" target="_blank" rel="noreferrer noopener">See publication</a> </li> </ul> </div> </div> </div> <div id="double-color" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="double-color" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 id="exampleModalLabel" class="modal-title">Dual-Color Enzymatic vs. FluoroSpot analysis </h5> </div> <div class="modal-body"> In general, relying upon enzymatic amplification, ELISPOT assays are more sensitive, detecting low per-cell analyte secretion by individual cells compared to FluoroSpot detection, as the latter does not involve enzymatic amplification of the signal. When the secreted analyte is abundant, however, both methods are equally suited to detect and enumerate secretory foot prints.<br><Br> ELISPOT assays can be performed in a dual color format that, when optimized, is suited for detection of analyte co-expression by individual antigen-specific T cells with equal sensitivity to FluoroSpot or intracytoplasmic staining by flow cytometry (<a href="https://pubmed.ncbi.nlm.nih.gov/10657635/" target="_blank">Ref</a>). Dual-Color Enzymatic assays have since been optimized by CTL (<a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3901106/" target="_blank">Ref</a>) by (a) introducing “true-blue” and “true-red” substrates that enable clear color distinction via RGB machine reading, (b) modifications of the protocol such that both substrates are transparent, that is, neither overdevelop nor cover up/mask spots of the other color, (c) introducing backlight well illumination for all CTL Reader models that further increases the color transparency of spots, and (d) having developed a dedicated Dual-Color ELISPOT analysis software that is installed on every CTL Reader. Thus, even if you have access to a fluorescence-capable reader, CTL’s optimized Dual-Color Enzymatic kits are a valid and cost-efficient alternative to two-color FluoroSpot analysis. <a href="https://vimeo.com/838022492?share=copy" target="_blank">Learn more about double color enzymatic ImmunoSpot® analysis.</a> </div> <div class="modal-footer"><a href="#" data-bs-dismiss="modal">Close</a></div> </div> </div> </div> <div id="well-color" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="well-color" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 id="exampleModalLabel" class="modal-title">384-well vs. 96-well ELISPOT/FluoroSpot analysis</h5> </div> <div class="modal-body"> ELISPOT assays require special plates with PVDF membrane bottoms to enable optimal coating with capture antibodies or antigens. CTL offers ELISPOT kits in both 96-well and 384-well format. The membrane surface area of a well in a 384-well plate is exactly one third of that in a 96-well plate (not one fourth, as one might expect). Subsequently, ELISPOT assays in 384-well format permit a 1:3 miniaturization of the standard 96-well assay with only one third of PBMC needed, but the spot counts per well will also be precisely one third per well in the miniaturized assay (<a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4381210/" target="_blank">Ref</a>). Thus, on the upside, 384-well assays permit saving two third of the valuable cells, while still clearly revealing relatively high and mid-ranged frequency spot forming units (SFU) in a 1:3 reduced scale/well. On the downside, low frequency SFU counts which might still be highly significant in 96 -well format will also be reduced 1:3, possibly resulting in the loss of detecting weak responses in 384-well format. Also, as the SFU counts per well drop, the Poisson noise increases, resulting in looser replicates in 384-well format. The reduced cell utilization in the 384-well format therefore results in a compensatory reduction in the limit of detection. When choosing between the two well formats, you will need to decide which is more important for your test: saving cells, or detecting the weakest of responses.<br><br> All CTL Reader models are capable of 384- and 96-well ELISPOT analysis.<br><br> Note: low autofluorescence PVDF membrane plates are not available in 384 well format. Thus, 384well miniaturization is only feasible in single- and double-color ELISPOT, but not with FluoroSpot. <br><br> <a href="https://vimeo.com/580494936/3d23748e7f" target="_blank">Learn more about 384 well ImmunoSpot® analysis.</a> </div> <div class="modal-footer"><a href="#" data-bs-dismiss="modal">Close</a></div> </div> </div> </div> <div id="elisa-odense" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="elisa-odense" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 id="exampleModalLabel" class="modal-title">ELISA / Protein / Nucleic Acid quantification</h5> </div> <div class="modal-body"> Enabled by CTL’s ODense™ Software Suite, ImmunoSpot® Instruments are capable of reading ELISA results in addition to nucleic acid and protein quantification. The streamlined workflow integrates planning and plate layouts with automated graphical outputs and statistical analysis tools. The work flow is streamlined from planning the plate lay-out to automated generation of the graphs, and the statistical analysis of the results. 21 CFR Part 11 compliant QC and audit trails support work in a regulated environment. <br> <br>CTL’s philosophy is to offer instruments that support several functions commonly performed in immune monitoring laboratories, saving our customers the expense of having to purchase and maintain a dedicated instrument for each, all included in the cost of a single device.</div> <div class="modal-footer"><a href="#" data-bs-dismiss="modal">Close</a></div> </div> </div> </div> <div id="biospot-l10" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="biospot-l10" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 id="exampleModalLabel" class="modal-title">BioSpot™</h5> </div> <div class="modal-body"> <p>Immune monitoring efforts frequently involve measuring serum antibodies' efficacy in neutralizing viruses, bacteria or toxins. ImmunoSpot® readers fully support such high throughput measurements, including foci and colony counting. Each type of colony, foci or viral plaque has unique morphologies requiring specialized image analysis solutions. The BioSpot™ Software Suite was designed to meet this challenge. The BioSpot™ Software can distinguish foci/colonies in up to 12 different visible color planes with white light illumination.</p> <p>21 CFR Part 11 compliant QC and audit trail workflows support transparent data processing and handling within a regulated environment.</p> <p>CTL’s philosophy is to offer instruments that support several functions commonly performed in immune monitoring laboratories. Enabled by the BioSpot™ Software Suite, ImmunoSpot® Readers are rendered high-end colony counters.</p> <p>To view the full spectrum of assays that can be analyzed with the BioSpot™ Software.<br><a href="/products/analyzers/biospot-software.html" target="_blank" rel="noopener">Learn more</a></p> </div> <div class="modal-footer"><a href="#" data-bs-dismiss="modal">Close</a></div> </div> </div> </div> <div id="software-sce" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="software-sce" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 id="exampleModalLabel" class="modal-title">ImmunoSpot® Single-Color ELISPOT Enzymatic Software Suite</h5> </div> <div class="modal-body">The spot counting accuracy of the ImmunoSpot® Single-Color ELISPOT Enzymatic Software Suite is based on rigorous experimental validation. This software implements “a single click of a button” counting algorithm based on 25 years of leading scientific expertise in ELISPOT. In “expert” mode, this software enables scientists to modify any counting parameter and to perform high-content analysis based on spot sizes and morphologies, for example, to establish per cell productivity and <a href="/fcs-output" target="_blank" rel="noopener">affinity distributions of antigen-specific B cells.</a> Built-in user authentication, audit trails and data security support transparent ELISPOT counting in a regulated environment.<br><a href="/immunospot-software.html" target="_blank" rel="noopener">Learn more.</a></div> <div class="modal-footer"><a href="#" data-bs-dismiss="modal">Close</a></div> </div> </div> </div> <div id="reagent-tracker" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="reagent-tracker" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 id="exampleModalLabel" class="modal-title">Reagent Tracker™ Suite</h5> </div> <div class="modal-body"> <p>The Reagent Tracker™ Suite provides audit trails for the accurate implementation of ELISPOT/FlouroSpot assays, revealing pipetting errors made <a href="https://doi.org/10.3390/cells7010003" target="_blank" rel="noreferrer noopener">(https://doi.org/10.3390/cells7010003)</a>. Biologically neutral dyes are used to colour different antigens and the Reagent Tracker™ Software checks whether in each assigned well the right antigen/colour has indeed been plated (revealing qualitative pipetting errors), and whether the antigen pipetting volume was correct (revealing quantitative pipetting errors). The Reagent Tracker™ Suite generates automatic printable reports and is also ideally suited for proficiency testing of lab personnel, and for training of novices in the lab.</p> <p>CTL has been committed to elevating ELISPOT/FluoroSpot assays so they can meet regulatory requirements for transparency and audit trails. The Reagent Tracker™ Suite is one of the important steps in that direction.</p> </div> <div class="modal-footer"><a href="#" data-bs-dismiss="modal">Close</a></div> </div> </div> </div></div></div></div></main><footer class="page-footer"><div class="footer content"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="row no-gutters font-size-sm"> <div class="col-md-4 col-lg-3 mt-1"><img src="https://immunospot.com/media/images/logo/immunospot_logo_black.png" alt=""> <p>20521 Chagrin Boulevard <br>Shaker Heights, Cleveland, <br>OH 44122-5350 USA</p> <p>Tel: +1 216-791-5084<br>US Toll Free: +1 888-791-4005<br>Fax: +1 216-751-1373</p> </div> <div class="col-md-4 mt-1 col-lg-2"> <h5>Products</h5> <ul class="compact"> <li><a href="/products/analyzers">Analyzers & software</a></li> <li><a href="/products/immunospot-kits-components">Kits & components</a></li> <li><a href="/products/epbmc">ePBMC</a></li> <li><a href="/products/serum-free-media">Serum-free media</a></li> <li><a href="/products/positive-controls-tcell-activation">Positive controls for T cell activation</a></li> </ul> </div> <div class="col-md-4 mt-1 col-lg-2 pr-4"> <h5>Services</h5> <ul class="compact"> <li><a href="/services/contract-laboratory-services">Contract laboratory services</a></li> <li><a href="/services/training-consultation">Training & consultation</a></li> <li><a href="/products/kit-scanning-analysis">ELISPOT/FluoroSpot plate analysis</a></li> <li><a href="/services/elispot-proficiency-testing">ELISPOT/FluoroSpot proficiency testing</a></li> </ul> </div> <div class="col-md-4 mt-1 col-lg-2"> <h5>Resources</h5> <ul class="compact"> <li><a href="/resources/news">Latest news from CTL</a></li> <li><a href="/resources/recent-publications">Latest publications</a></li> <li><a href="/terms-and-conditions">Terms and conditons of Sale of Products</a></li> <li><a href="/privacy-policy">Privacy policy</a></li> <li><a href="/sitemap">Site map</a></li> <li><a href="/website-terms-of-use">Website Terms of Use</a></li> </ul> </div> <div class="col-md-4 mt-1 col-lg-2"> <h5>Contact</h5> <ul class="compact"> <li><a href="/contact-support/contact-us">General contact</a></li> <li><a href="/contact-support/contact-us">Distributors</a></li> <li><a href="/careers">Careers</a></li> <li><a href="/contact-support/contact-elispot-workshop">ELISPOT workshops</a></li> <li><a href="/contact-support/customer-support">Customer support</a></li> </ul> </div> <div class="col-md-4 mt-1 col-lg-1"> <h5>Social</h5> <ul class="compact"> <li class="mb-1"><a title="Linkedin" href="https://www.linkedin.com/company/cellular-technology-ltd./" target="_blank" rel="noreferrer noopener"><img src="https://immunospot.com/media/images/footer/linkedin-footer-grey.png" alt="Follow Us on LinkedIn" width="40" height="40"></a></li> <li class=""><a title="YouTube" href="https://www.youtube.com/user/ImmunoSpot/videos" target="_blank" rel="noreferrer noopener"><img src="https://immunospot.com/media/images/footer/youtube-footer-grey.png" alt="Follow Us on YouTube" width="40" height="40"></a></li> </ul> </div> </div> <div class="“row text-center mt-3 font-size-sm"><a href="/terms-and-conditions">Terms and conditions | </a> <a href="/privacy-policy">Privacy policy | </a> Copyright ©<script>document.write(new Date().getFullYear())</script> Cellular Technology Limited</div> <a class="btn-scroll-top" href="#top" data-scroll data-fixed-element><span class="btn-scroll-top-tooltip text-muted fs-sm me-2">Top</span><i class="btn-scroll-top-icon ai-arrow-up"> </i></a></div><div class="field-recaptcha" id="recaptcha-caa20ac351216e6f76edced1efe7c61fff5f4796-container" data-bind="scope:'recaptcha-caa20ac351216e6f76edced1efe7c61fff5f4796'" > <!-- ko template: getTemplate() --><!-- /ko --> </div> <script> require(['jquery', 'domReady!'], function ($) { $('#recaptcha-caa20ac351216e6f76edced1efe7c61fff5f4796-container') .appendTo('#newsletter-validate-detail'); }); </script> <script type="text/x-magento-init"> { "#recaptcha-caa20ac351216e6f76edced1efe7c61fff5f4796-container": { "Magento_Ui/js/core/app": {"components":{"recaptcha-caa20ac351216e6f76edced1efe7c61fff5f4796":{"settings":{"rendering":{"sitekey":"6LeOT5EcAAAAAHi4oucEmcs91zYtY-3SsXHt2B5y","badge":"inline","size":"invisible","theme":"light","hl":""},"invisible":true},"component":"Magento_ReCaptchaFrontendUi\/js\/reCaptcha","reCaptchaId":"recaptcha-caa20ac351216e6f76edced1efe7c61fff5f4796"}}} } } </script> </div></footer> <script type="text/x-magento-init"> {"*": {"Magento_Ui/js/core/app": {"components":{"couponCodeContent":{"component":"Mageside_CouponCodeLink\/js\/content","contentType":"1"}}}}} </script> <script type="text/x-magento-init"> { "*": { "Magento_Ui/js/core/app": { "components": { "storage-manager": { "component": "Magento_Catalog/js/storage-manager", "appendTo": "", "storagesConfiguration" : {"recently_viewed_product":{"requestConfig":{"syncUrl":"https:\/\/immunospot.com\/catalog\/product\/frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"recently_compared_product":{"requestConfig":{"syncUrl":"https:\/\/immunospot.com\/catalog\/product\/frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"product_data_storage":{"updateRequestConfig":{"url":"https:\/\/immunospot.com\/rest\/default\/V1\/products-render-info"},"requestConfig":{"syncUrl":"https:\/\/immunospot.com\/catalog\/product\/frontend_action_synchronize\/"},"allowToSendRequest":null}} } } } } } </script> <script> window.screenM = '768'; window.widthThreshold = '1315'; require(['jquery', 'navigationJs' ], function ($, navigationJs) { $(document).ready(function() { navigationJs.init(); $(window).on('resize', function() { navigationJs.init(); }); }); }); </script> <script> require(['jquery', 'supscript'], function($, supscript) { supscript(); }); </script> <script type="text/x-magento-init"> { "*": { "Magento_Theme/js/theme.min": {} } } </script> <script> require(['jquery', 'chartjs'], function() { if (document.querySelectorAll('#Chart1').length > 0) { var ctx = document.getElementById('Chart1'); var Chart1 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-466', data: [78, 72, 47, 30, 17, 12, 2], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart2').length > 0) { var ctx = document.getElementById('Chart2'); var Chart2 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-465', data: [80, 71, 49, 28, 19, 3, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart3').length > 0) { var ctx = document.getElementById('Chart3'); var Chart3 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-453', data: [59, 41, 12, 2, 0, 0, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart4').length > 0) { var ctx = document.getElementById('Chart4'); var Chart4 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-448', data: [78, 37, 21, 13, 9, 0, 8], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart5').length > 0) { var ctx = document.getElementById('Chart5'); var Chart5 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-447', data: [65, 33, 21, 8, 8, 7, 2], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart6').length > 0) { var ctx = document.getElementById('Chart6'); var Chart6 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-446', data: [80, 75, 59, 42, 21, 19, 15], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart7').length > 0) { var ctx = document.getElementById('Chart7'); var Chart7 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-438', data: [62, 31, 19, 9, 3, 2, -8], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart8').length > 0) { var ctx = document.getElementById('Chart8'); var Chart8 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-435', data: [59, 33, 13, 9, 1, 1, -2], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart9').length > 0) { var ctx = document.getElementById('Chart9'); var Chart9 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-441', data: [72, 40, 17, 7, 8, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart10').length > 0) { var ctx = document.getElementById('Chart10'); var Chart10 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-433', data: [57, 48, 22, 13, 7, 3, 0], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart11').length > 0) { var ctx = document.getElementById('Chart11'); var Chart11 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-425', data: [54, 35, 10, 8, 1, 2, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart12').length > 0) { var ctx = document.getElementById('Chart12'); var Chart12 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-424', data: [70, 50, 28, 13, 9, 5, 4], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart13').length > 0) { var ctx = document.getElementById('Chart13'); var Chart13 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-406', data: [63, 39, 23, 14, 4, 5, 5], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart14').length > 0) { var ctx = document.getElementById('Chart14'); var Chart14 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-404', data: [60, 35, 25, 14, 5, 8, 3], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart15').length > 0) { var ctx = document.getElementById('Chart15'); var Chart15 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-401', data: [65, 38, 18, 15, 5, 8, 3], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart16').length > 0) { var ctx = document.getElementById('Chart16'); var Chart16 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-394', data: [50, 28, 18, 9, 3, 1, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart17').length > 0) { var ctx = document.getElementById('Chart17'); var Chart17 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-393', data: [73, 44, 24, 15, 8, 4, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart18').length > 0) { var ctx = document.getElementById('Chart18'); var Chart18 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-391', data: [75, 49, 31, 18, 11, 3], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart19').length > 0) { var ctx = document.getElementById('Chart19'); var Chart19 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-390', data: [60, 38, 21, 12, 10, 5], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart20').length > 0) { var ctx = document.getElementById('Chart20'); var Chart20 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-387', data: [72, 39, 24, 12, 5, 4, 6], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart21').length > 0) { var ctx = document.getElementById('Chart21'); var Chart21 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-386', data: [52, 34, 18, 11, 3, 4, 5], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart22').length > 0) { var ctx = document.getElementById('Chart22'); var Chart22 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-385', data: [58, 29, 19, 12, 3, 0, 4], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart23').length > 0) { var ctx = document.getElementById('Chart23'); var Chart23 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-381', data: [80, 68, 42, 23, 11, 5, 0], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart24').length > 0) { var ctx = document.getElementById('Chart24'); var Chart24 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-372', data: [80, 65, 43, 30, 14, 10, 8], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart25').length > 0) { var ctx = document.getElementById('Chart25'); var Chart25 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-371', data: [68, 33, 20, 8, 5, 1, -8], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart26').length > 0) { var ctx = document.getElementById('Chart26'); var Chart26 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-368', data: [74, 49, 27, 18, 9, 2, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart27').length > 0) { var ctx = document.getElementById('Chart27'); var Chart27 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-367', data: [80, 61, 41, 27, 14, 3, 1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart28').length > 0) { var ctx = document.getElementById('Chart28'); var Chart28 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-366', data: [56, 37, 22, 8, 2, -1, -1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart29').length > 0) { var ctx = document.getElementById('Chart29'); var Chart29 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-355', data: [75, 69, 44, 21, 11, 8, 2], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart30').length > 0) { var ctx = document.getElementById('Chart30'); var Chart30 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP-353', data: [59, 39, 18, 9, 2, 7, -1], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart31').length > 0) { var ctx = document.getElementById('Chart31'); var Chart31 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP349', data: [59, 37, 18, 2, -2, -3, -4], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart32').length > 0) { var ctx = document.getElementById('Chart32'); var Chart32 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP341', data: [56, 40, 19, 10, 7, 2, -2], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } if (document.querySelectorAll('#Chart33').length > 0) { var ctx = document.getElementById('Chart33'); var Chart33 = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", ""], datasets: [{ label: 'LP98', data: [73, 53, 40, 25, 15, 9, 2], fill: false, borderColor: 'rgb(75, 192, 192)', tension: 0.1, }] }, options: { responsive: true, interaction: { intersect: false, }, scales: { x: { display: true, title: { display: true, text: 'Effector: Target Ratio' }, }, y: { display: true, title: { display: true, text: '%Killing' }, } } }, }); } }); </script> <script> require(['jquery', 'tinyslider'], function() { if (document.querySelectorAll('.front-header-slider').length > 0) { const front = tns({ "container": ".front-header-slider", "controls": false, "navPosition": "bottom", "autoplay": true, "autoplayButtonOutput": false, "autoplayTimeout": 3000, "autoplayHoverPause": false }); } if (document.querySelectorAll('.well-soft-slider').length > 0) { const well = tns({ "container": ".well-soft-slider", "gutter": 15, "controls": false, "navPosition": "bottom", "autoplay": true, "autoplayButtonOutput": false, "autoplayTimeout": 3000, "autoplayHoverPause": false }); } if (document.querySelectorAll('.comment-slider').length > 0) { const well = tns({ "container": ".comment-slider", "gutter": 15, "controls": false, "nav": false, "autoplay": true, "autoplayButtonOutput": false, "autoplayTimeout": 5000, "autoplayHoverPause": false }); } if (document.querySelectorAll('#nested').length > 0) { const outer = tns({ "container": "#nested", "gutter": 15, "controls": false, "navPosition": "bottom", "autoplay": true, "autoplayTimeout": 3500, "autoplayButtonOutput": false, "autoplayHoverPause": false }); } if (document.querySelectorAll('.header-slider').length > 0) { const header = tns({ "container": ".header-slider", "mode": "gallery", "nav": false, "controls": false, "autoplay": true, "autoplayButtonOutput": false, "autoplayTimeout": 3000, "autoplayHoverPause": false }); } if (document.querySelectorAll('.gallery-slider').length > 0) { const tnsCarousel = document.querySelectorAll('.gallery-slider'); tnsCarousel.forEach(slider => { const tnsSlider = tns({ container: slider, "mode": "gallery" }); }); } if (document.querySelectorAll('.world-soft-slider').length > 0) { const world = tns({ "container": ".world-soft-slider", "gutter": 15, "controls": false, "navPosition": "top", "autoplay": true, "autoplayTimeout": 3000, "autoplayHoverPause": false }); } }); function resetFunction() { document.querySelector('[aria-label="Carousel Page 1"]').click() document.querySelector('[data-action="start"]').click() } </script> <script type="text/x-magento-init"> { "*": { "Magento_Theme/js/jquery.autoscroll": {} } } </script> <!-- Wrapping template --> <script type="text/template" id="instant_wrapper_template"> {{#findAutocomplete}} <div id="algolia-autocomplete-container"></div> {{/findAutocomplete}} <div id="algolia_instant_selector" class=" with-facets"> <div class="row"> <div class="col-md-4" id="algolia-left-container"> <div id="refine-toggle" class="visible-xs visible-sm"> + Refine </div> <div class="hidden-xs hidden-sm" id="instant-search-facets-container"> <div id="clear-refinements"></div> <h3 class="filter_heading">Filters</h3> </div> </div> <div class="col-md-8" id="algolia-right-container"> <div class="row"> <div class="col-md-12"> <div> {{#second_bar}} <div id="instant-search-bar"></div> {{/second_bar}} </div> </div> </div> <div class="row"> <div class="col-md-12"> <div itemscope itemtype="http://schema.org/ItemList" class="hits"> <div class="algolia-infos"> <div class="pull-left" id="algolia-stats"></div> <div class="pull-right"> <div class="sort-by-label pull-left"> <h4>SORT BY </h4> </div> <div class="pull-left" id="algolia-sorts"></div> </div> <div class="algolia-clearfix"></div> </div> <div id="algolia-banner"></div> <div id="current-refinements"></div> <div id="instant-empty-results-container"></div> <div id="instant-search-results-container"></div> </div> </div> <div class="algolia-clearfix"></div> </div> <div class="text-center"> <div id="instant-search-pagination-container"></div> </div> </div> </div> </div> </script> <script type="text/template" id="instant-hit-template"> <a class="col-md-12" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" {{^__queryID}} href="{{url}}" {{/__queryID}} {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}} data-objectid="{{objectID}}" data-indexname="{{__indexName}}" data-position="{{__position}}" data-queryid="{{__queryID}}"> <meta itemprop="position" content="{{__position}}" /> <div class="result-wrapper" itemprop="item" itemscope itemtype="http://schema.org/Product"> <meta itemprop="url" {{^__queryID}} content="{{url}}" {{/__queryID}} {{#__queryID}} content="{{urlForInsights}}" {{/__queryID}} /> <div class="result-content row"> <div class="result-thumbnail col-md-3"> <a class="result" {{^__queryID}} href="{{url}}" {{/__queryID}} {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}} data-objectid="{{objectID}}" data-indexname="{{__indexName}}" data-position="{{__position}}" data-queryid="{{__queryID}}"> {{#image_url}}<img itemprop="image" src="{{{image_url}}}" alt="{{{name}}}" />{{/image_url}} {{^image_url}}<span class="no-image"></span>{{/image_url}} </a> </div> <div class="result-sub-content col-md-9"> <a class="result" {{^__queryID}} href="{{url}}" {{/__queryID}} {{#__queryID}} href="{{urlForInsights}}" {{/__queryID}} data-objectid="{{objectID}}" data-indexname="{{__indexName}}" data-position="{{__position}}" data-queryid="{{__queryID}}"> <div class="row"> <div class="col-md-12"> <h5 itemprop="name" class="result-title-categires"> <span class=""> {{{categories}}}</span> </h5> </div> </div> <div class="row"> <div class="col-md-12"> <h3 itemprop="name" class="result-title"> {{{ _highlightResult.name.value }}} </h3> </div> </div> <div class="catalog-list-item__list"> <div class="catalog_list-item__attribute"> <div class="price-wrapper"> <div> {{#price}} <span class="after_special hide"> Starting at {{{custom_price}}} </span> {{/price}} </div> </div> </div> </div> <div class="catalog-list-item__actions"> {{#isAddToCartEnabled}} <form data-role="tocart-form" action="{{ addToCart.action }}" method="post"> <input type="hidden" name="product" value="{{objectID}}"> <input type="hidden" name="uenc" value="{{ addToCart.uenc }}"> <input name="form_key" type="hidden" value="{{ addToCart.formKey }}"> <button type="submit" title="Add to Cart" class="action tocart primary" data-objectid="{{objectID}}" data-indexname="{{__indexName}}" data-position="{{__position}}" data-queryid="{{__queryID}}" > <span>Add to Cart</span> </button> </form> {{/isAddToCartEnabled}} </div> </a> </div> </div> <div class="algolia-clearfix"></div> </div> </a> </script> <script type="text/template" id="instant-stats-template"> {{#hasOneResult}}<strong>1</strong>result found{{/hasOneResult}} {{#hasManyResults}} {{^hasNoResults}}{{last}} of{{/hasNoResults}} <span itemprop="numberOfItems">{{nbHits}}</span> products {{/hasManyResults}} </script> <script type="text/template" id="refinements-lists-item-template"> <label class="{{cssClasses.label}} {{#isRefined}}checked{{/isRefined}}"> <input class="{{cssClasses.checkbox}}" {{#isRefined}}checked{{/isRefined}} type="checkbox" value="{{value}}" /> {{value}} <span class="{{cssClasses.count}}">{{count}}</span> </label> </script><script type="text/template" id="current-refinements-template"> <div class="cross-wrapper"> <span class="clear-cross clear-refinement"></span> </div> <div class="current-refinement-wrapper"> {{#label}} <span class="current-refinement-label">{{label}}{{^operator}}:{{/operator}}</span> {{/label}} {{#operator}} {{{displayOperator}}} {{/operator}} {{#exclude}}-{{/exclude}} <span class="current-refinement-name">{{name}}</span> </div> </script><small class="copyright"> <span></span> </small> </div> <script> require(['jquery','weltpixel_persistentLayer', 'weltpixel_gtm', 'Magento_Customer/js/customer-data'], function ($, wpPersDl, wpgtm, customerData) { $( document ).ajaxComplete(function( event, xhr, settings ) { if (settings.url.search('/customer\/section\/load/') > 0) { var response = xhr.responseJSON; if (response.gtm) { var dataLayerData = $.parseJSON(response.gtm.datalayer); for (index in dataLayerData) { window.dataLayer.push(dataLayerData[index]); } } } }); var wpPersDlOptions = {'storageExpiryTime' : 30 }; var wpGtmOptions = { 'enabled' : 0, 'persDataLayer' : wpPersDl }; wpPersDl.init(wpPersDlOptions); wpgtm.trackPromotion(wpGtmOptions); }); </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.eu01.nr-data.net","licenseKey":"NRJS-694e2d93d0829b3aaa4","applicationID":"251439689","transactionName":"MhBSZQoZC0NQUUBcWAtacVIMEQpeHlFZRhgMG1RUAFcMXlVXTA==","queueTime":0,"applicationTime":759,"atts":"HldRE0IDGE0=","errorBeacon":"bam.eu01.nr-data.net","agent":""}</script></body> </html>