PageSourceSearch

https://zennolab.com/en/products/zennoposter/

html zennolab.com collected 2026-10-01 12:27:47 UTC 282,542 bytes, 3,804 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="en">
4<head>
5    <meta charset="utf-8" />
5<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info = {"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"b9563e3380","applicationID":"541872449","transactionName":"Y1ZUZkBZDRAEAEFeDVocZFNIVxFMNQJSUhEbaVNcXFczDBYXUEU=","queueTime":0,"applicationTime":5,"agent":"","atts":""}</script>
5<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"594569256",accountID:"515467",trustKey:"515467",xpid:"UQcCVVBUGwYEVVlVBQUDXw==",licenseKey:"b9563e3380",applicationID:"541872449",browserID:"594569256"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */
6(()=>{var e={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)),s=0===Object.keys(r).length?e:r;for(let a in s)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]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={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};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="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),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(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;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
6e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(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].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(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],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.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,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},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])=>{a[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()[a[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 s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},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,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(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 s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},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{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(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),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},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})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
6const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
6if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
6o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,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},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,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)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=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)o.call(e,n)&&(t[n]=e[n])}
6(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
6;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{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"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
6{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},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,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},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},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
6ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.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){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.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,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
6{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
6null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
6dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
6imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)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,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
6return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}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,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.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}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
6!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(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 h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.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,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(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 R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
6if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
6);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.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,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
6class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
6h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
6
7    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
9    <meta name="description" content="ZennoPoster is browser automation software with built-in AI: create bots without coding &#x2014; describe a task in plain words, the AI assistant builds the project and the AI agent runs it in the browser. Web scraping, form filling, sign-ups, multithreading, anti-detect, scheduling. Free version and a free built-in AI model included." />
10    <meta name="referrer" content="same-origin" />
11
12    <title>ZennoPoster &#x2014; AI browser automation: no-code bots, web scraping, AI agent | ZennoLab</title>
13
14    <link rel="icon" href="/favicon.ico?v=1yx_ToCW0sj6UDtbARvtBpa3Tmt3Thg7dHFRDbB06Gk" />
15
16    
16<script src="/lib/jquery/dist/jquery.min.js?v=9_aliU8dGd2tb6OSsuzixeV4y_faTqgFtohetphbbj0"></script>
16
17
18    <!-- Google Tag Manager -->
19    
19<script>
vendor: 347 bytes, lines 19-23
19(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
20    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
21    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
22    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
23    })(window,document,'script','dataLayer','
23GTM-5X96TM4
vendor: 3 bytes, line 23
23');
23</script>
23 
24    <!-- End Google Tag Manager -->
25
26    <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css?v=DF7Zhf293AJxJNTmh5zhoYYIMs2oXitRfBjY-9L__AY" />
27
28    <link rel="stylesheet" href="/css/core.css?v=rti6JWKwbtYr_YeKjk3vq9-NbxjhB7WkMIWRTWF5M9U" />
29    <link rel="stylesheet" href="/css/bootstrap-override.css?v=X_GRey1GNossv6CssA2DA-dfHmx7ofuuDFL_7M9CUMg" />
30    <link rel="stylesheet" href="/css/buttons.css?v=qWDgwnKq0W9QAq4GiKavOEHxerrPhW9vAm75cNx2qgE" />
31    <link rel="stylesheet" href="/css/header.css?v=NuaiFdnBvVJwe_w6mW300Tq0gJYI0aivMmrcJQotErA" />
32    <link rel="stylesheet" href="/css/footer.css?v=AF6pi71buip6HxP79pq39so7GZF-pAG9og_QSDk5Qg0" />
33    <link rel="stylesheet" href="/css/common.css?v=r8JGoNOPUKa2oZJdPCUkc1dkqA4Y_HVlh8ISv5eHvCs" />
34    <link rel="stylesheet" href="/css/page-specific.css?v=6ubhuPSX2rM2fMrWNsHWcYZwRXTeoRFPYUvOtQogPHU" />
35    <link rel="stylesheet" href="/css/price-modal.css?v=nyf4yoaarcrzRUaMdblFwpPcgQ_BFHUbMCw09gEfJc0" />
36
37            <link rel="alternate" hreflang="en" href="https://zennolab.com/en/products/zennoposter/" />
38            <link rel="alternate" hreflang="ru" href="https://zennolab.com/ru/products/zennoposter/" />
39            <link rel="alternate" hreflang="zh" href="https://zennolab.com/zh/products/zennoposter/" />
40    <!-- Varioqub experiments -->
41    <style>
42        .varioqub-antiflicker {
43            opacity: 0 !important;
44        }
45    </style>
46
47    
47<script>
48        window.varioqubInitHandler = function(answer) {
49            var flags = answer ? answer.flags : undefined;
50            var showWCAFlag = flags ? flags.showWCAFlag : undefined;
51            var showWCAButtonFlag = flags ? flags.showWCAButtonFlag : undefined;
52
53            if (showWCAFlag || showWCAButtonFlag) {
54                var wcaSection = document.querySelector("#what-can-automate");
55                var featuresSection = document.querySelector("#features");
56                if (wcaSection && featuresSection) {
57                    featuresSection.classList.add("features-section-gray");
58                    wcaSection.classList.remove("d-none");
59
60
61                    if (showWCAButtonFlag) {
62                        var button = document.querySelector("#wca-button-container");
63
64                        if (button) {
65                            button.classList.remove("d-none");
66                        }
67                    }
68                }
69            }
70        }
71    </script>
71
72    
72<script type="text/javascript">
73        (function(e, x, pe, r, i, me, nt){
74        e[i]=e[i]||function(){(e[i].a=e[i].a||[]).push(arguments)},
75        me=x.createElement(pe),me.async=1,me.src=r,nt=x.getElementsByTagName(pe)[0],me.addEventListener('error',function(){function cb(t){t=t[t.length-1],'function'==typeof t&&t({flags:{}})};Array.isArray(e[i].a)&&e[i].a.forEach(cb);e[i]=function(){cb(arguments)}}),nt.parentNode.insertBefore(me,nt)})
76        (window, document, 'script', 'https://abt.s3.yandex.net/expjs/latest/exp.js', 'ymab');
77        ymab('metrika.45493038', 'init', function(answer) {
78            if (window.varioqubInitHandler) {
79                window.varioqubInitHandler(answer);
80            }
81        });
82    </script>
82
83
84  
85    
85<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Do I need my own OpenAI or Claude API key to use the AI in ZennoPoster?","acceptedAnswer":{"@type":"Answer","text":"No. The built-in Free ZP LLM model works right after installation: you get a free daily limit, and token packages can be purchased in your personal area. Your own keys from supported providers can be connected as well."}},{"@type":"Question","name":"What can the AI Agent action in ZennoPoster do?","acceptedAnswer":{"@type":"Answer","text":"You set a goal in plain words — the agent drives the task browser on its own: finds elements, clicks, types, reacts to page changes. Steps, time and budget are limited by settings, and the whole reasoning is written to the task log."}},{"@type":"Question","name":"Is it safe to give the AI agent access to the browser?","acceptedAnswer":{"@type":"Answer","text":"The agent works only inside your task browser and within the limits you set. Every step is visible in the log, API access is protected by scoped keys, and risky actions require separate permission."}}]}</script>
85
86    
86<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"ZennoPoster","operatingSystem":"Windows","applicationCategory":"BusinessApplication","description":"Browser automation software with built-in AI: no-code bots, web scraping, AI agent, multithreading, anti-detect.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"}}</script>
86
87
88</head>
89
90<body>
91  <!-- Google Tag Manager (noscript) -->
92  <noscript><iframe b-s9w08ipvnq src="https://www.googletagmanager.com/ns.html?id=GTM-5X96TM4"
93  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
94  <!-- End Google Tag Manager (noscript) -->
95    <div b-s9w08ipvnq id="root">
96        <header id="header">
97            <div b-s9w08ipvnq class="container">
98                <nav b-s9w08ipvnq id="header-navbar" aria-label="header navbar" class="navbar px-0">
99                    <a b-s9w08ipvnq class="navbar-brand d-flex header-logo"
100                       href="/">
101                        <img width="116" height="22" src="/img/header/logotypes/logo-zennolab-colored.webp" alt="ZennoLab logo" />
102                    </a>
103
104                    <div b-s9w08ipvnq class="d-lg-flex d-none align-items-center">
105                        <div b-s9w08ipvnq class="dropdown">
106                            <button b-s9w08ipvnq class="dropdown-toggle header-dropdown-toggle pl-0"
107                                    id="products-navbar-dropdown"
108                                    data-toggle="dropdown"
109                                    aria-haspopup="true"
110                                    aria-expanded="false">
111                                <img class="mr-2" src="/img/header/icons-nav/icon-products.svg" alt="burger symbol" width="16" height="16" />
112                                <span b-s9w08ipvnq>Products</span>
113                                <img class="ml-1" src="/img/header/icons-nav/icon-arrow-down.svg" alt="arrow down" width="9" height="5" />
114                            </button>
115
116                            <div b-s9w08ipvnq class="dropdown-menu p-3 header-dropdown-menu header-dropdown-menu-center"
117                                 aria-labelledby="products-navbar-dropdown">
118                                <div b-s9w08ipvnq class="d-flex">
119                                    <div b-s9w08ipvnq>
120                                        <a b-s9w08ipvnq href=/en/products/zennoposter/
121                                           class="dropdown-item header-dropdown-item">
122                                            <img class="mr-2" src="/img/header/logotypes/mark-zennoposter-colored.webp" alt="ZennoPoster logo" width="21" height="21" />
123                                            <div b-s9w08ipvnq class="d-flex flex-column">
124                                                <b b-s9w08ipvnq class="header-dropdown-item-b">
125                                                    ZennoPoster
126                                                </b>
127                                                <p b-s9w08ipvnq class="header-dropdown-item-p">
128                                                    All-in-one tool<br />for AI-powered web automation
129                                                </p>
130                                            </div>
131                                        </a>
132
133                                        <a b-s9w08ipvnq href=https://capmonster.cloud/en/
134                                           target="_blank"
135                                           class="dropdown-item header-dropdown-item">
136                                            <img class="mr-2" src="/img/header/logotypes/mark-capmonster-cloud-colored.webp" alt="CapMonster Cloud logo" width="21" height="21" />
137                                            <div b-s9w08ipvnq class="d-flex flex-column">
138                                                <b b-s9w08ipvnq class="header-dropdown-item-b">
139                                                    CapMonster Cloud
140                                                </b>
141                                                <p b-s9w08ipvnq class="header-dropdown-item-p">
142                                                    Cloud service<br/>for automatic captcha recognition
143                                                </p>
144                                            </div>
145                                        </a>
146
147                                        <a b-s9w08ipvnq href=/en/products/zennodroid/
148                                           class="dropdown-item header-dropdown-item">
149                                            <img class="mr-2" src="/img/header/logotypes/mark-zennodroid-colored.webp" alt="ZennoDroid logo" width="21" height="21" />
150                                            <div b-s9w08ipvnq class="d-flex flex-column">
151                                                <b b-s9w08ipvnq class="header-dropdown-item-b">
152                                                    ZennoDroid
153                                                </b>
154                                                <p b-s9w08ipvnq class="header-dropdown-item-p">
155                                                    All-in-one tool<br />for Android apps automation
156                                                </p>
157                                            </div>
158                                        </a>
159                                    </div>
160
161                                    <div b-s9w08ipvnq>
162                                        <a b-s9w08ipvnq href=/en/products/capmonster/
163                                           class="dropdown-item header-dropdown-item">
164                                            <img class="mr-2" src="/img/header/logotypes/mark-capmonster-colored.webp" alt="CapMonster logo" width="21" height="21" />
165                                            <div b-s9w08ipvnq class="d-flex flex-column">
166                                                <b b-s9w08ipvnq class="header-dropdown-item-b">
167                                                    CapMonster
168                                                </b>
169                                                <p b-s9w08ipvnq class="header-dropdown-item-p">
170                                                    Automatic recognition of<br />over 25,000 captcha types
171                                                </p>
172                                            </div>
173                                        </a>
174
175                                        <a b-s9w08ipvnq href=/en/products/zennoproxychecker/
176                                           class="dropdown-item header-dropdown-item">
177                                            <img class="mr-2" src="/img/header/logotypes/mark-zennoproxychecker-colored.webp" alt="ZennoProxyChecker logo" width="21" height="21" />
178                                            <div b-s9w08ipvnq class="d-flex flex-column">
179                                                <b b-s9w08ipvnq class="header-dropdown-item-b">
180                                                    ZennoProxyChecker
181                                                </b>
182                                                <p b-s9w08ipvnq class="header-dropdown-item-p">
183                                                    Powerful proxy checker with<br />free proxy auto search function
184                                                </p>
185                                            </div>
186                                        </a>
187
188                                         <a b-s9w08ipvnq href=/en/products/zennobrowser/ class="dropdown-item header-dropdown-item">
189                                             <img class="mr-2" src="/img/header/logotypes/logo-zennobrowser-logo-colored.webp" alt="ZennoBrowser logo" width="21" height="21" />
190                                             <div b-s9w08ipvnq class="d-flex flex-column">
191                                                <b b-s9w08ipvnq class="header-dropdown-item-b">
192                                                    ZennoBrowser
193                                                </b>
194                                                <p b-s9w08ipvnq class="header-dropdown-item-p">
195                                                    Anti-detect browser for anonymity<br />and unlimited profiles
196                                                </p>
197                                            </div>
198                                         </a>
199                                    </div>
200                                </div>
201                            </div>
202                        </div>
203
204                        <a b-s9w08ipvnq class="nav-link header-nav-link"
205                           href="https://zennostore.com/"
206                           target="_blank">
207                            <img class="mr-2" src="/img/header/icons-nav/icon-s
207hop.svg" alt="bots shop logo" width="16" height="16" />
208                            Bot store
209                        </a>
210
211                        <a b-s9w08ipvnq class="nav-link header-nav-link"
212                           href="https://helpdesk.zennolab.com/en-us/"
213                           target="_blank">
214                            <img class="mr-2" src="/img/header/icons-nav/icon-support.svg" alt="support logo" width="16" height="16" />
215                            Support
216                        </a>
217
218                        <a b-s9w08ipvnq class="nav-link header-nav-link"
219                           href="https://zenno.club/discussion/"
220                           target="_blank">
221                            <img class="mr-2" src="/img/header/icons-nav/icon-forum.svg" alt="club logo" width="16" height="16" />
222                            Club
223                        </a>
224
225                        <a b-s9w08ipvnq class="nav-link header-nav-link"
226                           href="https://account.zennolab.com/"
227                           target="_blank">
228                            <img class="mr-2" src="/img/header/icons-nav/icon-account.svg" alt="account logo" width="16" height="16" />
229                            User profile
230                        </a>
231
232                        <div b-s9w08ipvnq class="dropdown">
233                            <button b-s9w08ipvnq class="dropdown-toggle header-dropdown-toggle py-2 pr-0 pl-3"
234                                    id="language-navbar-dropdown"
235                                    data-toggle="dropdown"
236                                    aria-haspopup="true"
237                                    aria-expanded="false">
238                                <img class="header-chosen-language-icon mr-2" src="/img/header/icons-nav/icon-lang-en.svg" alt="language logo" width="18" height="12" />
239                                <span b-s9w08ipvnq>English</span>
240                                <img class="ml-1" src="/img/header/icons-nav/icon-arrow-down.svg" alt="arrow down" width="9" height="5" />
241                            </button>
242
243                            <div b-s9w08ipvnq class="dropdown-menu p-2 header-dropdown-menu header-dropdown-menu-center-lang"
244                                 aria-labelledby="language-navbar-dropdown">
245                                <a b-s9w08ipvnq class="dropdown-item header-dropdown-item header-dropdown-item-lang"
246                                   href="/ru/products/zennoposter/">
247                                    <img class="mr-2" src="/img/header/icons-nav/icon-lang-ru.svg" alt="Russian language logo" width="18" height="18" />
248                                    Русский
249                                </a>
250                                <a b-s9w08ipvnq class="dropdown-item header-dropdown-item header-dropdown-item-lang"
251                                   href="/en/products/zennoposter/">
252                                    <img class="mr-2" src="/img/header/icons-nav/icon-lang-en.svg" alt="English language logo" width="18" height="18" />
253                                    English
254                                </a>
255                                <a b-s9w08ipvnq class="dropdown-item header-dropdown-item header-dropdown-item-lang"
256                                   href="/zh/products/zennoposter/">
257                                    <img class="mr-2" src="/img/header/icons-nav/icon-lang-zh.svg" alt="Chinese language logo" width="18" height="18" />
258                                    中文 (中国)
259                                </a>
260                            </div>
261                        </div>
262                    </div>
263
264                    <div b-s9w08ipvnq class="header-hamburger-menu d-lg-none">
265                        <input b-s9w08ipvnq id="header-hamburger-menu-toggle"
266                               type="checkbox" />
267                        <label b-s9w08ipvnq class="header-hamburger-menu-btn"
268                               for="header-hamburger-menu-toggle">
269                            <span b-s9w08ipvnq class="header-hamburger-menu-btn-icon"></span>
270                        </label>
271                        <div b-s9w08ipvnq class="header-hamburger-menu-box">
272                            <div b-s9w08ipvnq>
273                                <div b-s9w08ipvnq class="nav-item dropdown mb-5">
274                                    <button b-s9w08ipvnq class="dropdown-toggle header-dropdown-toggle p-0"
275                                            id="language-hamburger-navbar-dropdown"
276                                            data-toggle="dropdown"
277                                            aria-haspopup="true"
278                                            aria-expanded="false">
279                                        <img class="header-hamburger-menu-item-logo-margin-3 header-chosen-language-icon" src="/img/header/icons-nav/icon-lang-en.svg" alt="language logo" width="18" height="12" />English<img class="ml-2" src="/img/header/icons-nav/icon-arrow-down.svg" alt="arrow down" width="9" height="5" />
280                                    </button>
281
282                                    <div b-s9w08ipvnq class="dropdown-menu p-2 header-dropdown-menu header-dropdown-menu-center-lang"
283                                         aria-labelledby="language-hamburger-navbar-dropdown">
284                                        <a b-s9w08ipvnq class="dropdown-item header-dropdown-item header-dropdown-item-lang"
285                                           href="/ru/products/zennoposter/">
286                                            <img class="mr-2" src="/img/header/icons-nav/icon-lang-ru.svg" alt="Russian language logo" width="18" height="12" />
287                                            Русский
288                                        </a>
289                                        <a b-s9w08ipvnq class="dropdown-item header-dropdown-item dropdown-item-lang header-dropdown-item-lang"
290                                           href="/en/products/zennoposter/">
291                                            <img class="mr-2" src="/img/header/icons-nav/icon-lang-en.svg" alt="English language logo" width="18" height="12" />
292                                            English
293                                        </a>
294                                        <a b-s9w08ipvnq class="dropdown-item header-dropdown-item dropdown-item-lang header-dropdown-item-lang"
295                                           href="/zh/products/zennoposter/">
296                                            <img class="mr-2" src="/img/header/icons-nav/icon-lang-zh.svg" alt="Chinese language logo" width="18" height="12" />
297                                            中文 (中国)
298                                        </a>
299                                    </div>
300                                </div>
301
302                                <div b-s9w08ipvnq class="d-flex flex-column mb-5">
303                                    <a b-s9w08ipvnq href=/en/products/zennoposter/
304                                       class="header-hamburger-menu-item">
305                                        <img class="header-hamburger-menu-item-logo-margin-1" src="/img/header/logotypes/mark-zennoposter-colored.webp" alt="ZennoPoster logo" width="21" height="21" />
306                                        ZennoPoster
307                                    </a>
308                                    <a b-s9w08ipvnq href=https://capmonster.cloud/en/
309                                       target="_blank"
310                                       class="header-hamburger-menu-item">
311                                        <img class="header-hamburger-menu-item-logo-margin-1" src="/img/header/logotypes/mark-capmonster-cloud-colored.webp" alt="CapMonster Cloud logo" width="21" height="21" />
312                                        CapMonster Cloud
313                                    </a>
314                                    <a b-s9w08ipvnq href=/en/products/zennodroid/
315                                       class="header-hamburger-menu
315-item">
316                                        <img class="header-hamburger-menu-item-logo-margin-1" src="/img/header/logotypes/mark-zennodroid-colored.webp" alt="ZennoDroid logo" width="21" height="21" />
317                                        ZennoDroid
318                                    </a>
319                                    <a b-s9w08ipvnq href=/en/products/capmonster/
320                                       class="header-hamburger-menu-item">
321                                        <img class="header-hamburger-menu-item-logo-margin-1" src="/img/header/logotypes/mark-capmonster-colored.webp" alt="CapMonster logo" width="21" height="21" />
322                                        CapMonster
323                                    </a>
324                                    <a b-s9w08ipvnq href=/en/products/zennoproxychecker/
325                                       class="header-hamburger-menu-item">
326                                        <img class="header-hamburger-menu-item-logo-margin-1" src="/img/header/logotypes/mark-zennoproxychecker-colored.webp" alt="ZennoProxyChecker logo" width="21" height="21" />
327                                        ZennoProxyChecker
328                                    </a>
329                                    <a b-s9w08ipvnq href=/en/products/zennobrowser/ class="header-hamburger-menu-item">
330                                         <img class="header-hamburger-menu-item-logo-margin-1" src="/img/header/logotypes/logo-zennobrowser-logo-colored.webp" alt="ZennoBrowser logo" width="21" height="21" />
331                                         ZennoBrowser
332                                     </a>
333                                </div>
334
335                                <div b-s9w08ipvnq class="d-flex flex-column">
336                                    <a b-s9w08ipvnq class="header-hamburger-menu-item"
337                                       href="https://zennostore.com/">
338                                        <img class="header-hamburger-menu-item-logo-margin-2" src="/img/header/icons-nav/icon-shop.svg" alt="bots shop logo" width="16" height="16" />
339                                        Bot store
340                                    </a>
341                                    <a b-s9w08ipvnq class="header-hamburger-menu-item"
342                                       href="https://helpdesk.zennolab.com/en-us/">
343                                        <img b-s9w08ipvnq class="header-hamburger-menu-item-logo-margin-2"
344                                             src="/img/header/icons-nav/icon-support.svg"
345                                             alt="support logo"
346                                             width="16"
347                                             height="16" />
348                                        Support
349                                    </a>
350                                    <a b-s9w08ipvnq class="header-hamburger-menu-item"
351                                       href="https://zenno.club/discussion/">
352                                        <img class="header-hamburger-menu-item-logo-margin-2" src="/img/header/icons-nav/icon-forum.svg" alt="club logo" width="16" height="16" />
353                                        Club
354                                    </a>
355                                    <a b-s9w08ipvnq class="header-hamburger-menu-item"
356                                       href="https://account.zennolab.com/">
357                                        <img class="header-hamburger-menu-item-logo-margin-2" src="/img/header/icons-nav/icon-account.svg" alt="account logo" width="16" height="16" />
358                                        User profile
359                                    </a>
360                                </div>
361                            </div>
362                        </div>
363                    </div>
364                </nav>
365            </div>
366        </header>
367
368        
369
370
371
372<main id="zennoposter">
373    <div id="product-navbar" class="product-navbar-container">
374        <div class="container">
375            <nav class="navbar product-navbar" aria-label="product navbar">
376                <a href=/en/products/zennoposter/
377                   class="navbar-brand">
378                    <img src="/img/header/logotypes/logo-zennoposter-white.svg" alt="ZennoPoster logo" width="137" height="22" />
379                </a>
380                <div class="d-flex align-items-center">
381                    <a class="nav-link d-md-block d-none product-navbar-link"
382                       href="https://docs.zennolab.com/en/zennoposter/category/getting-started"
383                       target="_blank">
384                        Documentation
385                    </a>
386                    <a class="nav-link d-md-block d-none product-navbar-link"
387                       href="#features"
388                       data-gtm-id="features"
389                       data-gtm-position="header">
390                        Capabilities
391                    </a>
392                    <a href="#price-cards"
393                       class="nav-link d-md-block d-none product-navbar-link"
394                       data-gtm-id="anchor-download-for-free"
395                       data-gtm-position="header">
396                        Free download
397                    </a>
398                    <a href="#price-cards"
399                       class="product-navbar-link-buy"
400                       data-gtm-id="anchor-buy"
401                       data-gtm-position="header">
402                        Purchase
403                    </a>
404                </div>
405            </nav>
406        </div>
407    </div>
408
409    <section id="main" class="main-section">
410        <div class="container main-container">
411            <div class="row justify-content-center">
412                <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 d-flex flex-column justify-content-center">
413                    <h1 class="h1-main">
414                        ZennoPoster repeats whatever you do in the browser. And its AI builds the bot for you
415                    </h1>
416
417                    <p class="main-p">
418                        Describe your task in plain words — the built-in AI assistant creates the project, and the AI agent completes it right in the browser. A free AI model is included: no API keys, no cards. Join the community of&nbsp;15,000+ users!
419                    </p>
420
421                    <div class="d-flex flex-sm-row flex-column justify-content-lg-start justify-content-center align-items-center">
422                        <a href="#price-cards"
423                           class="main-button-primary main-button mr-sm-3 mr-0 mb-sm-0 mb-3"
424                           data-gtm-id="anchor-buy"
425                           data-gtm-position="main-section">
426                            Purchase
427                        </a>
428                        <a href="#price-cards"
429                           class="main-button-secondary main-button"
430                           data-gtm-id="download-for-free"
431                           data-gtm-position="main-section">
432                            Free download
433                        </a>
434                    </div>
435
436                    <p class="main-p" style="font-size: 15px; margin-top: 14px;">
437                        Built for freelancers, agencies and businesses: from your first no-code bot to your own API integrations.
438                    </p>
439                </div>
440
441                <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 mt-lg-0 mt-5">
442                    <img class="main-img" src="/img/ZennoPoster/main/ZennoPoster.webp" alt="ZennoPoster hero banner" width="555" height="453" />
443                </div>
444            </div>
445        </div>
446    </section>
447
448    <section id="ai-inside" class="features-section">
449        <div class="container">
450            <h2 class="mb-4">
451                AI is already inside ZennoPoster
452            </h2>
453            <p class="p-subheading">
454                Don't start from an empty project: tell ZennoPoster what you need —<br />the built-in AI takes it from there
455            </p>
456            <div class="row">
457                <div class="col-lg-6 col-sm-6 col-12 py-3">
458                    <img src="/img/ZennoPoster/features/AI%20assistant.svg" alt="AI assistant: build a bot from a text description, no code" width="46" height="46" />
459                    <h3 class="features-h3">
460                        AI assistant in the editor
461                    </h3>
462                    <p class="p-text">
463                        Describe a task or a change in the chat — the assistant creates actions, fixes code and project settings. You see every step and approve the changes.
464                    </p>
465                </div>
466                <div class="col-lg-6 col-sm-6 col-12 py-3">
467                    <img src="/img/ZennoPoster/features/Buttons%20pressing.svg" alt="AI agent drives the browser on its own" width="46" height="46" />
468                    <h3 class="features-h3">
469                        "AI Agent" action
470                    </h3>
471                    <p class="p-text">
472                        Set a goal — the agent drives the browser on its own: finds elements, clicks, types. Site layout changed? The agent adapts instead of failing. Steps, time and budget stay under your control, the whole reasoning is visible in the log.
473                    </p>
474                </div>
475                <div class="col-lg-6 col-sm-6 col-12 py-3">
476                    <img src="/img/ZennoPoster/features/Downloading.svg" alt="Free ZP LLM &#x2014; free built-in AI model" width="46" height="46" />
477                    <h3 class="features-h3">
478                        Free AI out of the box
479                    </h3>
480                    <p class="p-text">
481                        The built-in Free ZP LLM model works right after installation: no OpenAI accounts, cards or API keys. A free daily limit every day; need more — buy token packages in your personal area. Your own provider keys can be connected too.
482                    </p>
483                </div>
484                <div class="col-lg-6 col-sm-6 col-12 py-3">
485                    <img src="/img/ZennoPoster/features/Processing%20data.svg" alt="MCP and open API of ZennoPoster" width="46" height="46" />
486                    <h3 class="features-h3">
487                        MCP and open API
488                    </h3>
489                    <p class="p-text">
490                        Connect ProjectMaker and ZennoPoster to Claude, ChatGPT or your own systems: build projects and control the browser via a documented API with scoped access keys. For integrators and team
490s building their own products on top of ZennoPoster.
491                    </p>
492                </div>
493            </div>
494        </div>
495    </section>
496
497    <section id="features" class="features-section">
498        <div class="container">
499            <h2 class="mb-4">
500                Basic capabilities of ZennoPoster
501            </h2>
502            <p class="p-subheading">
503                ZennoPoster mimics actions performed by a human in&nbsp;the browser, <br /> or actions of the entire team (in&nbsp;Pro&nbsp;version). Now — with AI
504
505            </p>
506            <div class="row">
507                <div class="col-lg-4 col-sm-6 col-12 py-3">
508                    <img src="/img/ZennoPoster/features/Recording.svg" alt="recording icon" width="46" height="46" />
509                    <h3 class="features-h3">
510                        Action recording
511                    </h3>
512                    <p class="p-text">
513                        Record a scenario once — the bot repeats it <br /> thousands of times without errors or fatigue
514                    </p>
515                </div>
516                <div class="col-lg-4 col-sm-6 col-12 py-3">
517                    <img src="/img/ZennoPoster/features/Form%20filling.svg" alt="form icon" width="46" height="46" />
518                    <h3 class="features-h3">
519                        Forms and sign-ups
520                    </h3>
521                    <p class="p-text">
522                        Form filling, logins and registrations — with captchas <br /> and email/SMS confirmations
523                    </p>
524                </div>
525                <div class="col-lg-4 col-sm-6 col-12 py-3">
526                    <img src="/img/ZennoPoster/features/Buttons%20pressing.svg" alt="button press icon" width="46" height="46" />
527                    <h3 class="features-h3">
528                        Human-like actions
529                    </h3>
530                    <p class="p-text">
531                        Clicks, mouse movements, typing speed — <br /> indistinguishable from a real user
532                    </p>
533                </div>
534                <div class="col-lg-4 col-sm-6 col-12 py-3">
535                    <img src="/img/ZennoPoster/features/Collecting%20information.svg" alt="information icon" width="46" height="46" />
536                    <h3 class="features-h3">
537                        Data scraping
538                    </h3>
539                    <p class="p-text">
540                        Prices, listings, content — hundreds of threads <br /> across any websites, exported the way you need
541                    </p>
542                </div>
543                <div class="col-lg-4 col-sm-6 col-12 py-3">
544                    <img src="/img/ZennoPoster/features/Downloading.svg" alt="device icon" width="46" height="46" />
545                    <h3 class="features-h3">
546                        Device emulation
547                    </h3>
548                    <p class="p-text">
549                        Each thread gets its own browser fingerprint, <br /> geo and device
550                    </p>
551                </div>
552                <div class="col-lg-4 col-sm-6 col-12 py-3">
553                    <img src="/img/ZennoPoster/features/Processing%20data.svg" alt="processing icon" width="46" height="46" />
554                    <h3 class="features-h3">
555                        Processing all data types
556                    </h3>
557                    <p class="p-text">
558                        Excel, CSV, JSON, databases, email — <br /> process data right inside the project
559                    </p>
560                </div>
561            </div>
562        </div>
563    </section>
564    <section id="what-can-automate" class="what-can-automate d-none">
565        <div class="container">
566            <h2 class="mb-5 center">
567                What can ZennoPoster automate?
568            </h2>
569
570            <div class="row">
571                <div class="col-lg-4 col-sm-6 col-12 py-3">
572                    <div class="card-white h-100 p-4">
573                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
574                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/what-can-automate/seo.svg" alt="seo" width="22" height="22" />
575                            <h3>
576                                SEO
577                            </h3>
578                        </div>
579                        <ul class="wca-ul">
580                            <li>
581                                Improving behavioral factors
582                            </li>
583                            <li>
584                                URL Parsing
585                            </li>
586                            <li>
587                                Link Building
588                            </li>
589                            <li>
590                                Keywords and search results (SERP) parsing
591                            </li>
592                            <li>
593                                Domain Parsing
594                            </li>
595                        </ul>
596                    </div>
597                </div>
598                <div class="col-lg-4 col-sm-6 col-12 py-3">
599                    <div class="card-white h-100 p-4">
600                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
601                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/what-can-automate/smm.svg" alt="smm" width="22" height="22" />
602                            <h3>
603                                SMM
604                            </h3>
605                        </div>
606                        <p class="p-text" style="margin: 0 0 8px;">
607                            For SMM specialists and agencies
608                        </p>
609                        <ul class="wca-ul">
610                            <li>
611                                Boost followers, likes and views
612                            </li>
613                            <li>
614                                Sending messages
615                            </li>
616                            <li>
617                                Mass following and mass liking
618                            </li>
619                            <li>
620                                Audience parsing
621                            </li>
622                            <li>
623                                Automatic accounts registration
624                            </li>
625                            <li>
626                                Posting comments
627                            </li>
628                        </ul>
629                    </div>
630                </div>
631                <div class="col-lg-4 col-sm-6 col-12 py-3">
632                    <div class="card-white h-100 p-4">
633                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
634                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/what-can-automate/web.svg" alt="web" width="22" height="22" />
635                            <h3>
636                                Websites
637                            </h3>
638                        </div>
639                        <p class="p-text" style="margin: 0 0 8px;">
640                            For webmasters and site owners
641                        </p>
642                        <ul class="wca-ul">
643                            <li>
644                                Parsing of goods and prices
645                            </li>
646                            <li>
647                                Filling sites by content
648                            </li>
649                            <li>
650                                Parsing of phones, news, photos, content, e‑mail addresses
651                            </li>
652                        </ul>
653                    </div>
654                </div>
655                <div class="col-lg-4 col-sm-6 col-12 py-3">
656                    <div class="card-white h-100 p-4">
657                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
658                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/what-can-automate/market.svg" alt="market" width="22" height="22" />
659                            <h3>
660                                Marketplaces
661                            </h3>
662                        </div>
663                        <p class="p-text" style="margin: 0 0 8px;">
664                            For sellers and store owners
665                        </p>
666                        <ul class="wca-ul">
667                            <li>
668                                Generating reviews
669                            </li>
670                            <li>
671                                Photo uniqueization
672                            </li>
673                            <li>
674                                Photo parsing
675                            </li>
676                            <li>
677                                Parsing of goods and prices
678                            </li>
679                            <li>
680                                Posting ads
681                            </li>
682                            <li>
683                                Bulk upload of goods
684                            </li>
685                        </ul>
686                    </div>
687                </div>
688                <div class="col-lg-4 col-sm-6 col-12 py-3">
689                    <div class="card-white h-100 p-4">
690                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
691                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/what-can-automate/board.svg" alt="board" width="22" height="22" />
692                            <h3>
693                                Online classifieds
694                            </h3>
695                        </div>
696                        <ul class="wca-ul">
697                            <li>
698                                Sending messages
699                            </li>
700                            <li>
701                                Generating reviews
702                            </li>
703                            <li>
704                                Photo uniqueization
705                            </li>
706                            <li>
707                                Posting and parsing ads
708                            </li>
709                            <li>
710                                Automatic account registration
711                            </li>
712                            <li>
713                                Bulk upload of ads
714                            </li>
715                        </ul>
716                    </div>
717                </div>
718                <div class="col-lg-4 col-sm-6 col-12 py-3">
719                    <div class="card-white h-100 p-4 wca-gray-card">
720                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
721                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/what-can-automate/other.svg" alt="other" width="22" height="22" />
722                            <h3>
723                                Other areas
724                            </h3>
725                        </div>
726                        <ul class="wca-ul">
727                            <li>
728                                Messengers
729                            </li>
730                            <li>
731                                Arbitration
732                            </li>
733                            <li>
734                                Cryptocurrency
735                            </li>
736                            <li>
737                                Trading
738                            </li>
739                            <li>
740                                Finance
741                            </li>
742                        </ul>
743                    </div>
744                </div>
745            </div>
746            <div id="wca-button-container"  class="wca-button-container d-none">
747                <a class="wca-button" href="https://zennolab.com/en/products/zennoposter/download/">
748                    Try ZennoPoster now
749                </a>
750            </div>
751
752        </div>
753    </section>
754    <section id="more-features" class="more-features-section">
755        <div class="container">
756            <h2 class="mb-5">
757                Fits absolutely everyone
758            </h2>
759
760            <div class="row">
761                <div class="col-lg-4 col-md-12 col-12 mb-lg-0 mb-4">
762                    <div class="card-white h-100 p-4">
763                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
764                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/more-features/Easy%20start.svg" alt="flash icon" width="76" height="76" />
765                            <h3>
766                                Easy start —
767<br class="d-none d-lg-inline" />
768anyone can manage it
769                            </h3>
770                        </div>
771                        <p class="p-text">
772                            The app offers simple and intuitive look and feel.
773There's a tip and detailed guidance for&nbsp;
774each function
775                        </p>
776                    </div>
777                </div>
778
779                <div class="col-lg-4 col-md-12 col-12 mb-lg-0 mb-4">
780                    <div class="card-white h-100 p-4">
781                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
782                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/more-features/No%20code%20programming.svg" alt="code brackets icon" width="76" height="76" />
783                            <h3>
784                                Codeless
785<br class="d-none d-lg-inline" />
786programming
787                            </h3>
788                        </div>
789                        <p class="p-text">
790                            Create bots with&nbsp;minimum
791effort in&nbsp;a visual designer
792using&nbsp;drag-and-drop feature
793                        </p>
794                    </div>
795                </div>
796
797                <div class="col-lg-4 col-md-12 col-12 mb-lg-0 mb-4">
798                    <div class="card-white h-100 p-4">
799                        <div class="d-flex flex-xl-row flex-lg-column flex-row align-items-center mb-3">
800                            <img class="mr-xl-3 mr-lg-0 mr-3 mb-xl-0 mb-lg-3 mb-0" src="/img/ZennoPoster/more-features/UI%20customization.svg" alt="customization icon" width="76" height="76" />
801                            <h3>
802                                Flexible interface
803<br class="d-none d-lg-inline" />
804customization
805                            </h3>
806                        </div>
807                        <p class="p-text">
808                            Customize your app as&nbsp;you see fit:
80914&nbsp;themes, individual menu
810configuration and&nbsp;selection of windows location
811                        </p>
812                    </div>
813                </div>
814            </div>
815        </div>
816    </section>
817
818    <section id="demo" class="demonstration-section">
819        <div class="container">
820            <h2 class="mb-4">
821                Check out how it works
822            </h2>
823
824            <p class="p-subheading">
825                You perform actions on the&nbsp;site, and the&nbsp;app
826records them to the&nbsp;project. You can edit the
827<br class="d-none d-lg-inline" />
828project, add new steps or&nbsp;logic.
829Launch the project <br class="d-none d-lg-inline" />and
830ZennoPoster will do everything for&nbsp;you!
831            </p>
832
833            <div class="row align-items-start">
834                <div class="col-xl-8 col-lg-8 col-md-8 col-sm-12 mb-md-0 mb-3 text-left">
835                    <div id="demonstration-carousel"
836                         class="carousel slide"
837                         data-ride="carousel"
838                         data-interval="false">
839                        <ol class="carousel-indicators">
840                            <li data-target="#demonstration-carousel"
841                                data-slide-to="0"
842                                class="active"></li>
843                            <li data-target="#demonstration-carousel"
844                                data-slide-to="1"></li>
845                            <li data-target="#demonstration-carousel"
846                                data-slide-to="2"></li>
847                        </ol>
848
849                        <div class="carousel-inner">
850                            <div class="carousel-item demonstration-carousel-item active">
851                                <img src="/img/ZennoPoster/demonstration/Screen-1-en.webp" class="d-block w-100 h-auto" alt="ZennoPoster demo example" loading="lazy" width="750" height="400" />
852                            </div>
853                            <div class="carousel-item demonstration-carousel-item">
854                                <video class="d-block w-100 h-auto" autoplay loop muted>
855                                    <source src="/img/ZennoPoster/demonstration/Screen-2-en.mp4" type="video/mp4" />
856                                    <span>
857                                        ZennoPoster demo example
858                                    </span>
859                                </video>
860                            </div>
861                            <div class="carousel-item demonstration-carousel-item">
862                                <img src="/img/ZennoPoster/demonstration/Screen-3-en.webp" class="d-block w-100 h-auto" alt="ZennoPoster demo example" loading="lazy" width="750" height="400" />
863                            </div>
864                        </div>
865                    </div>
866                </div>
867
868                <div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 text-left">
869                    <div class="demonstration-carousel">
870                        <button data-target="#demonstration-carousel"
871                                data-slide-to="0"
872                                class="demonstration-carousel-tab">
873                            <img class="mx-3" src="/img/section-demo/icon-rec.svg" alt="recording icon" width="26" height="26" />
874                            <p class="demonstration-carousel-tab-p">
875                                Recording actions performed on&nbspsites
876<br />
877to&nbsp;ProjectMaker
878                            </p>
879                        </button>
880                        <button data-target="#demonstration-carousel"
881                                data-slide-to="1"
882                                class="demonstration-carousel-tab">
883                            <img class="mx-3" src="/img/section-demo/icon-running.svg" alt="play icon" width="26" height="26" />
884                            <p class="demonstration-carousel-tab-p">
885                                Demonstration of
886<br/>
887project implementation
888                            </p>
889                        </button>
890                        <button data-target="#demonstration-carousel"
891                                data-slide-to="2"
892                                class="demonstration-carousel-tab">
893                            <img class="mx-3" src="/img/section-demo/icon-launch.svg" alt="play icon" width="26" height="26" />
894                            <p class="demonstration-carousel-tab-p">
895                                Planning and launching the project
896<br />
897in&nbsp;ZennoPoster
898                            </p>
899                        </button>
900                    </div>
901                </div>
902            </div>
903        </div>
904
905        <div class="modal fade"
906             id="demonstration-modal"
907             tabindex="-1"
908             role="dialog"
909             aria-hidden="true">
910            <div class="modal-dialog modal-dialog-centered modal-dialog-zoom-in demonstration-modal-dialog">
911                <div id="demonstration-carousel-zoomed"
912                     class="carousel slide"
913                     data-ride="carousel"
914                     data-interval="false">
915                    <ol class="carousel-indicators">
916                        <li data-target="#demonstration-carousel-zoomed"
917                            data-slide-to="0"></li>
918                        <li data-target="#demonstration-carousel-zoomed"
919                            data-slide-to="1"></li>
920                        <li data-target="#demonstration-carousel-zoomed"
921                            data-slide-to="2"></li>
922                    </ol>
923
924                    <div class="carousel-inner">
925                        <div class="carousel-item demonstration-carousel-zoomed-item">
926                            <img src="/img/ZennoPoster/demonstration/Screen-1-en.webp" class="d-block w-100 h-auto" alt="ZennoPoster demo example" loading="lazy" width="1366" height="728" />
927                        </div>
928                        <div class="carousel-item demonstration-carousel-zoomed-item">
929                            <video class="d-block w-100 h-auto" autoplay loop muted>
930                                <source src="/img/ZennoPoster/demonstration/Screen-2-en.mp4" type="video/mp4" />
931                                <span>
932                                    ZennoPoster demo example
933                                </span>
934                            </video>
935                        </div>
936                        <div class="carousel-item demonstration-carousel-zoomed-item">
937                            <img src="/img/ZennoPoster/demonstration/Screen-3-en.webp" class="d-block w-100 h-auto" alt="ZennoPoster demo example" loading="lazy" width="1366" height="728" />
938                        </div>
939                    </div>
940
941                    <button class="carousel-control-prev"
942                            type="button"
943                            data-target="#demonstration-carousel-zoomed"
944                            data-slide="prev">
945                        <img src="/img/section-demo/icon-arrow-left.svg" alt="arrow left" width="40" height="40" />
946                        <span class="sr-only">Previous</span>
947                    </button>
948
949                    <button class="carousel-control-next"
950                            type="button"
951                            data-target="#demonstration-carousel-zoomed"
952                            data-slide="next">
953                        <img src="/img/section-demo/icon-arrow-right.svg" alt="arrow right" width="40" height="40" />
954                        <span class="sr-only">Next</span>
955                    </button>
956                </div>
957            </div>
958        </div>
959    </section>
960
961    <section id="benefits" class="benefits-section">
962        <h2 class="mb-5">
963            What do you get
964        </h2>
965        <div class="container">
966            <div class="row">
967                <div class="col-lg-3 col-sm-6 col-12 py-lg-0 py-3">
968                    <img class="mb-4" src="/img/ZennoPoster/benefits/Saving%20time.svg" alt="clock icon" width="64" height="64" />
969                    <h3 class="mb-3">
970                        Save your time <br />and effort
971                    </h3>
972                    <p class="p-text">
973                        ZennoPoster will spend&nbsp;as little as few minutes for operations
974that used to take&nbsp;
975hours
976                    </p>
977                </div>
978                <div class="col-lg-3 col-sm-6 col-12 py-lg-0 py-3">
979                    <img class="mb-4" src="/img/ZennoPoster/benefits/Increasing%20productivity.svg" alt="flash icon" width="64" height="64" />
980                    <h3 class="mb-3">
981                        Increase <br />
982performance
983                    </h3>
984                    <p class="p-text">
985                        Bots may work at full efficiency 24/7 performing
986tasks with&nbsp;100% precision, so that you could
987focus on&nbsp;things that really matter
988                    </p>
989                </div>
990                <div class="col-lg-3 col-sm-6 col-12 py-lg-0 py-3">
991                    <img class="mb-4" src="/img/ZennoPoster/benefits/Saving%20money.svg" alt="money icon" width="64" height="64" />
992                    <h3 class="mb-3">
993                        Save <br />
994money
995                    </h3>
996                    <p class="p-text">
997                        From now on you don't&nbsp;have to spend money
998for&nbsp;tens of apps. Now you&nbsp;have
999a single tool to perform&nbsp;all your tasks
1000                    </p>
1001                </div>
1002                <div class="col-lg-3 col-sm-6 col-12 py-lg-0 py-3">
1003                    <img class="mb-4" src="/img/ZennoPoster/benefits/Selling%20bots.svg" alt="selling icon" width="64" height="64" />
1004                    <h3 class="mb-3">
1005                        Profit on the sale of <br />
1006bots
1007                    </h3>
1008                    <p class="p-text">
1009                        You can perform&nbsp;not only your tasks, but
1010also other users' tasks and
1011earn&nbsp;hundreds thousands of dollars
1012                    </p>
1013                </div>
1014            </div>
1015        </div>
1016    </section>
1017
1018
1019    <section id="tech" class="technologies-section white-section">
1020        <div class="container">
1021            <h2 class="mb-5 text-center">
1022                Powerful technologies <br/>
1023to&nbsp;bring your ideas&nbsp;into fruition
1024            </h2>
1025
1026            <div class="row">
1027                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1028                    <img src="/img/ZennoPoster/technologies/Full%20browser%20automation.svg" class="mr-4" alt="native browser window" width="44" height="44" />
1029                    <div class="flex-grow-1">
1030                        <h3 class="mb-2">
1031                            Native browser window
1032                        </h3>
1033                        <p class="p-text">
1034                            New display mode: faster and more stable, no scaling issues or freezes
1035                        </p>
1036                    </div>
1037                </div>
1038                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1039                    <img src="/img/ZennoPoster/technologies/Antidetect.svg" class="mr-4" alt="anti-detect and fingerprints" width="44" height="44" />
1040                    <div class="flex-grow-1">
1041                        <h3 class="mb-2">
1042                            Next-level anti-detect
1043                        </h3>
1044                        <p class="p-text">
1045                            Fresh Chromium builds, TLS fingerprint bypass, Canvas emulation, ZennoBrowser integration
1046                        </p>
1047                    </div>
1048                </div>
1049                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1050                    <img src="/img/ZennoPoster/technologies/Full%20browser%20automation.svg" class="mr-4" alt="modern websites and Shadow DOM" width="44" height="44" />
1051                    <div class="flex-grow-1">
1052                        <h3 class="mb-2">
1053                            Modern websites
1054                        </h3>
1055                        <p class="p-text">
1056                            Works with Shadow DOM, iframes and dynamic web apps
1057                        </p>
1058                    </div>
1059                </div>
1060                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1061                    <img src="/img/ZennoPoster/technologies/Full%20browser%20automation.svg" class="mr-4" alt="automatization icon" width="44" height="44" />
1062                    <div class="flex-grow-1">
1063                        <h3 class="mb-2">
1064                            Full browser automation
1065                        </h3>
1066                        <p class="p-text">
1067                            Fill in the forms, collect data,
1068utilize extensions, examine pages
1069via&nbsp;code inspector in&nbsp;Chrome or
1070Firefox
1071                        </p>
1072                    </div>
1073                </div>
1074                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1075                    <img src="/img/ZennoPoster/technologies/Multithreading.svg" class="mr-4" alt="multithreading icon" width="40" height="36" />
1076                    <div class="flex-grow-1">
1077                        <h3 class="mb-2">
1078                            Multi-threading
1079                        </h3>
1080                        <p class="p-text">
1081                            Launch your projects in&nbsp;ZennoPoster running
1082in&nbsp;tens and&nbsp;hundreds parallel
1083threads
1084                        </p>
1085                    </div>
1086                </div>
1087                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1088                    <img src="/img/ZennoPoster/technologies/Antidetect.svg" class="mr-4" alt="anti-detect icon" width="36" height="40" />
1089                    <div class="flex-grow-1">
1090                        <h3 class="mb-2">
1091                            Antidetection
1092                        </h3>
1093                        <p class="p-text">
1094                            Emulate any browser settings and&nbsp;prints
1095in&nbsp;just a few mouse clicks
1096                        </p>
1097                    </div>
1098                </div>
1099                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1100                    <img src="/img/ZennoPoster/technologies/Integration.svg" class="mr-4" alt="integration icon" width="40" height="39" />
1101                    <div class="flex-grow-1">
1102                        <h3 class="mb-2">
1103                            Integration with 35 services
1104                        </h3>
1105                        <p class="p-text">
1106                            Connect captcha recognition,
1107SMS activation, content
1108creation and&nbsp;proxy services in&nbsp;one click
1109                        </p>
1110                    </div>
1111                </div>
1112                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1113                    <img src="/img/ZennoPoster/technologies/User%20emulation%20system.svg" class="mr-4" alt="emulation icon" width="39" height="42" />
1114                    <div class="flex-grow-1">
1115                        <h3 class="mb-2">
1116                            User emulation system
1117                        </h3>
1118                        <p class="p-text">
1119                            Enable keyboard, mouse or
1120touch events emulation. Any actions performed on&nbsp;
1120your sites will
1121look as if they were performed by a human
1122                        </p>
1123                    </div>
1124                </div>
1125                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1126                    <img src="/img/ZennoPoster/technologies/Parsing%20assistant.svg" class="mr-4" alt="parsing icon" width="43" height="42" />
1127                    <div class="flex-grow-1">
1128                        <h3 class="mb-2">
1129                            Parsing tools
1130                        </h3>
1131                        <p class="p-text">
1132                            Collect, process and save data
1133in&nbsp;your&nbsp;preferred&nbsp;format
1134                        </p>
1135                    </div>
1136                </div>
1137                <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1138                    <img src="/img/ZennoPoster/technologies/User%20data%20generation.svg" class="mr-4" alt="user card icon" width="41" height="41" />
1139                    <div class="flex-grow-1">
1140                        <h3 class="mb-2">
1141                            User data generation
1142                        </h3>
1143                        <p class="p-text">
1144                            Automatically generate
1145user data: from&nbsp;name
1146to&nbsp;address
1147                        </p>
1148                    </div>
1149                </div>
1150            </div>
1151            <div class="collapse" id="all-technologies-list">
1152                <div class="row">
1153                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1154                        <img src="/img/ZennoPoster/technologies/Scheduler.svg" class="mr-4" alt="calendar icon" width="40" height="39" />
1155                        <div class="flex-grow-1">
1156                            <h3 class="mb-2">
1157                                Scheduled&nbsp;launch
1158                            </h3>
1159                            <p class="p-text">
1160                                Set your tasks to launch
1161when you need them
1162                            </p>
1163                        </div>
1164                    </div>
1165                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1166                        <img src="/img/ZennoPoster/technologies/HTTP%20and%20FTP.svg" class="mr-4" alt="cloud icon" width="40" height="37" />
1167                        <div class="flex-grow-1">
1168                            <h3 class="mb-2">
1169                                Working with&nbsp;HTTP and FTP
1170                            </h3>
1171                            <p class="p-text">
1172                                Accelerate your projects using&nbsp;
1173HTTP and FTP queries
1174                            </p>
1175                        </div>
1176                    </div>
1177                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1178                        <img src="/img/ZennoPoster/technologies/Plugins.svg" class="mr-4" alt="puzzle icon" width="43" height="42" />
1179                        <div class="flex-grow-1">
1180                            <h3 class="mb-2">
1181                                Plugins
1182                            </h3>
1183                            <p class="p-text">
1184                                Create your actions and share
1185with&nbsp;other users
1186                            </p>
1187                        </div>
1188                    </div>
1189                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1190                        <img src="/img/ZennoPoster/technologies/Coding.svg" class="mr-4" alt="coding icon" width="40" height="41" />
1191                        <div class="flex-grow-1">
1192                            <h3 class="mb-2">
1193                                Your own code
1194                            </h3>
1195                            <p class="p-text">
1196                                Extend capabilities of your app
1197using C#, JavaScript and command
1198line
1199                            </p>
1200                        </div>
1201                    </div>
1202                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1203                        <img src="/img/ZennoPoster/technologies/Bot%20interface.svg" class="mr-4" alt="bot icon" width="39" height="37" />
1204                        <div class="flex-grow-1">
1205                            <h3 class="mb-2">
1206                                Bot interface
1207                            </h3>
1208                            <p class="p-text">
1209                                Design attractive and&nbsp;convenient
1210interfaces for&nbsp;your bots
1211                            </p>
1212                        </div>
1213                    </div>
1214                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1215                        <img src="/img/ZennoPoster/technologies/Web%20page%20analysis.svg" class="mr-4" alt="web page icon" width="43" height="38" />
1216                        <div class="flex-grow-1">
1217                            <h3 class="mb-2">
1218                                Web pages analysis
1219                            </h3>
1220                            <p class="p-text">
1221                                Use the tools to&nbsp;analyze
1222HTML code of pages and&nbsp;traffic
1223                            </p>
1224                        </div>
1225                    </div>
1226                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1227                        <img src="/img/ZennoPoster/technologies/Data%20management.svg" class="mr-4" alt="file icon" width="32" height="42" />
1228                        <div class="flex-grow-1">
1229                            <h3 class="mb-2">
1230                                Data management
1231                            </h3>
1232                            <p class="p-text">
1233                                Operate any data types:
1234from&nbsp;text and images
1235to&nbsp;Google tables with&nbsp;databases
1236                            </p>
1237                        </div>
1238                    </div>
1239                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1240                        <img src="/img/ZennoPoster/technologies/Logical%20operations.svg" class="mr-4" alt="switch icon" width="40" height="39" />
1241                        <div class="flex-grow-1">
1242                            <h3 class="mb-2">
1243                                Logical operations
1244                            </h3>
1245                            <p class="p-text">
1246                                Perform different actions
1247depending&nbsp;on&nbsp;conditions
1248                            </p>
1249                        </div>
1250                    </div>
1251                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1252                        <img src="/img/ZennoPoster/technologies/Proxy%20checker.svg" class="mr-4" alt="proxy icon" width="44" height="44" />
1253                        <div class="flex-grow-1">
1254                            <h3 class="mb-2">
1255                                Proxy checker
1256                            </h3>
1257                            <p class="p-text">
1258                                Analyze performance,
1259speed, anonymity,
1260country, type and&nbsp;10+
1261other parameters of your proxy
1262                            </p>
1263                        </div>
1264                    </div>
1265                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1266                        <img src="/img/ZennoPoster/technologies/Mail.svg" class="mr-4" alt="mail icon" width="41" height="32" />
1267                        <div class="flex-grow-1">
1268                            <h3 class="mb-2">
1269                                Email
1270                            </h3>
1271                            <p class="p-text">
1272                                Work with&nbsp;mailboxes.
1273Send notifications to your
1274own&nbsp;email, find, analyze and
1275retrieve data from&nbsp;messages
1276                            </p>
1277                        </div>
1278                    </div>
1279                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 d-flex align-items-start py-3">
1280                        <img src="/img/ZennoPoster/technologies/Bots%20selling.svg" class="mr-4" alt="money icon" width="43" height="37" />
1281                        <div class="flex-grow-1">
1282                            <h3 class="mb-2">
1283                                Secure sale of bots
1284                            </h3>
1285                            <p class="p-text">
1286                                Sell your projects and gain profit
1287without&nbsp;worrying about&nbsp;data leakage or
1288security breach. Your apps are totally safe
1289and secure
1290                            </p>
1291                        </div>
1292                    </div>
1293                </div>
1294            </div>
1295            <div id="show-all-technologies-button-container"
1296                 class="mt-4 text-center">
1297                <button id="show-all-technologies-button"
1298                        class="secondary-button"
1299                        data-toggle="collapse"
1300                        data-target="#all-technologies-list"
1301                        aria-expanded="false"
1302                        aria-controls="all-technologies-list"
1303                        data-gtm-id="show-all-features"
1304                        data-gtm-position="features-section">
1305                    <span class="technologies-button-caption-show">
1306                        Show comprehensive list
1307                    </span>
1308                    <span class="technologies-button-caption-hide">
1309                        Hide comprehensive list
1310                    </span>
1311                </button>
1312            </div>
1313        </div>
1314    </section>
1315
1316    <section id="support" class="support-section gray-section">
1317        <div class="container">
1318            <h2 class="mb-5">
1319                Get even more benefits with&nbsp;ZennoPoster
1320
1321            </h2>
1322
1323            <div class="row">
1324                <div class="col-lg-4 col-md-12 py-lg-0 py-3">
1325                    <div class="support-card card-white">
1326                        <img width="110" height="110" src="/img/section-support/icon-releases.svg" alt="download icon" loading="lazy" />
1327                        <h3>
1328                            Regular releases
1329                        </h3>
1330                        <p class="p-text">
1331                            We offer new versions monthly, update
1332existing tools and&nbsp;add
1333new features based on&nbsp;our users'
1334requests
1335                        </p>
1336                        <div class="mt-auto">
1337                            <a href="https://zennolab.com/discussion/forums/novosti.51/"
1338                               target="_blank"
1339                               class="secondary-button"
1340                               data-gtm-id="look-news"
1341                               data-gtm-position="support-section">
1342                                View
1343                            </a>
1344                        </div>
1345                    </div>
1346                </div>
1347                <div class="col-lg-4 col-md-12 py-lg-0 py-3">
1348                    <div class="support-card card-white">
1349                        <img width="110" height="110" src="/img/section-support/icon-support.svg" alt="support icon" loading="lazy" />
1350                        <h3>
1351                            Tech support
1352                        </h3>
1353                        <p class="p-text">
1354                            We are ready to answer&nbsp;all your questions
1355and&nbsp;help to solve any problem near real time. Just
1356pick up your preferred communication method: tickets, club, Telegram
1357                        </p>
1358                        <div class="mt-auto">
1359                            <a href="https://helpdesk.zennolab.com/en-us/"
1360                               target="_blank"
1361                               class="secondary-button"
1362                               data-gtm-id="ask-support"
1363                               data-gtm-position="support-section">
1364                                Contact us
1365                            </a>
1366                        </div>
1367                    </div>
1368                </div>
1369                <div class="col-lg-4 col-md-12 py-lg-0 py-3">
1370                    <div class="support-card card-white">
1371                        <img width="110" height="110" src="/img/section-support/icon-forum.svg" alt="club icon" loading="lazy" />
1372                        <h3>
1373                            Active community
1374                        </h3>
1375                        <p class="p-text">
1376                            Connect
1377with&nbsp;your peers and share ideas at&nbsp;one of
1378the&nbsp;largest platforms
1379<br />
1380(over 0.5&nbsp;mln messages)
1381                        </p>
1382                        <div class="mt-auto">
1383                            <a href="https://zenno.club/discussion/"
1384                               target="_blank"
1385                               class="secondary-button"
1386                               data-gtm-id="visit-forum"
1387                               data-gtm-position="support-section">
1388                                Go to Club
1389                            </a>
1390                        </div>
1391                    </div>
1392                </div>
1393            </div>
1394        </div>
1395    </section>
1396
1397    <section id="about" class="about-section">
1398        <div class="container">
1399            <div class="row">
1400                <div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-12 mb-md-0 mb-3">
1401                    <p class="about-p-1">
1402                        18
1403                        <span class="about-p-1-years">years</span>
1404                    </p>
1405                    <p class="about-p-2 about-p-padding">
1406                        in automation solutions
1407<br />
1408market
1409                    </p>
1410                </div>
1411                <div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-12 mb-md-0 mb-3">
1412                    <p class="about-p-1">5000</p>
1413                    <p class="about-p-2">
1414                        active users
1415<br />in the community
1416                    </p>
1417                </div>
1418                <div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-12">
1419                    <p class="about-p-1">200000+</p>
1420                    <p class="about-p-2 about-p-padding">
1421                        customers in 126
1422<br />
1423countries
1424                    </p>
1425                </div>
1426            </div>
1427        </div>
1428    </section>
1429
1430    <section id="articles" class="articles-section">
1431        <div class="container">
1432            <h2 class="mb-5 text-center">
1433                About us
1434            </h2>
1435
1436            <div class="row">
1437                <div class="col-lg-6 col-md-6 col-12 mb-md-0 mb-4">
1438                    <div class="card-white p-4 h-100">
1439                        <div class="d-flex mb-4">
1440                            <img width="34" height="34" src="/img/ZennoPoster/articles/Hacker.svg" alt="XAKER.RU logo" loading="lazy" />
1441                            <div class="article-resource-name">
1442                                <p class="article-name-p">
1443                                    XAKER.RU
1444                                </p>
1445                                <p class="article-resource-p">
1446                                    IT magazines
1447                                </p>
1448                            </div>
1449                        </div>
1450
1451                        <p class="p-text">
1452                            «This is a designer&nbsp;that enables you to do
1453whatever you want.
1454ZennoPoster helps you make profit:
1455write a bot and sell licenses
1456for&nbsp;it$ retrieve data
1457from&nbsp;open data sources to order
1458and&nbsp;sell it; successfully
1459implement&nbsp;CPA partner programs sending traffic
1460and&nbsp;getting paid a fee. Download ready
1461projects, examine and&nbsp;rework them
1462according&nbsp;to your needs...»
1463                        </p>
1464                    </div>
1465                </div>
1466                <div class="col-lg-6 col-md-6 col-12">
1467                    <div class="card-white p-4 h-100">
1468                        <div class="d-flex mb-4">
1469                            <img width="34" height="34" src="/img/ZennoPoster/articles/Lifehacker.webp" alt="Lifehacker.ru logo" loading="lazy" />
1470                            <div class="article-resource-name">
1471                                <p class="article-name-p">
1472                                    LIFEHACKER.RU
1473                                </p>
1474                                <p class="article-resource-p">
1475                                    Online news outlets
1476                                </p>
1477                            </div>
1478                        </div>
1479                        <p class="p-text">
1480                            «ZennoPoster app is a real boon for webmasters,
1481as it makes
1482virtually all the work for you. You just have to show it
1483once what it needs to do, tell it "Ready, steady, go!"
1484— and&nbsp;get it all
1485done...»
1486                        </p>
1487                    </div>
1488                </div>
1489            </div>
1490        </div>
1491    </section>
1492
1493    <section id="reviews" class="reviews-section">
1494        <div class="container">
1495            <div class="row align-items-center">
1496                <div class="col-xl-5 col-lg-5">
1497                    <h2 class="mb-4 text-lg-left text-center">
1498                        Our customers <br />
1499feedback
1500                    </h2>
1501                    <p class="p-subheading text-lg-left text-center">
1502                        From&nbsp;novice freelancers to&nbsp;large
1503advertising agencies&nbsp;&mdash; everyone
1504can use ZennoPoster to&nbsp;improve
1505performance.
1506<br class="d-none d-lg-inline" />
1507This is what our customers say about&nbsp;us.
1508                    </p>
1509                </div>
1510                <div class="col-xl-7 col-lg-7 p-0">
1511                    <div id="reviews-carousel"
1512                         class="carousel slide carousel-fade"
1513                         data-ride="carousel"
1514                         data-interval="false">
1515                        <ol class="carousel-indicators">
1516                            <li data-target="#reviews-carousel"
1517                                data-slide-to="0"
1518                                class="active"></li>
1519                            <li data-target="#reviews-carousel"
1520                                data-slide-to="1"></li>
1521                            <li data-target="#reviews-carousel"
1522                                data-slide-to="2"></li>
1523                            <li data-target="#reviews-carousel"
1524                                data-slide-to="3"></li>
1525                            <li data-target="#reviews-carousel"
1526                                data-slide-to="4"></li>
1527                        </ol>
1528
1529                        <div class="carousel-inner">
1530                            <div class="carousel-item active">
1531                                <div class="review-card card-white">
1532                                    <div class="flex-grow-1 mb-sm-0 mb-3">
1533                                        <img src="/img/ZennoPoster/review/Quote.svg" alt="quote" width="57" height="46" />
1534                                        <p class="p-text mt-3">
1535                                            Considering that my programming knowledge and skills
1536are the lowest
1537of the low,
1538I felt a bit insecure
1539of purchasing
1540the app. However right now
1541I have absolutely no regrets about that &ndash;
1542this was really a must-have thing. Kudos
1543to the developers!
1544                                        </p>
1545                                    </div>
1546
1547                                    <div class="d-flex align-items-center justify-content-between">
1548                                        <div class="d-flex flex-column">
1549                                            <span class="review-author-name">
1550                                                humorigorbelykh
1551                                            </span>
1552                                            <span class="review-source">
1553                                                <img class="review-source-logo" src="/img/ZennoPoster/review/logo-zennolab.svg" alt="ZennoLab club logo" width="14" height="14" />
1554                                                Club on zennolab.com
1555                                            </span>
1556                                        </div>
1557                                        <img src="/img/ZennoPoster/review/ReviewPhoto2.webp" class="review-avatar" alt="Author avatar" loading="lazy" width="64" height="64" />
1558                                    </div>
1559                                </div>
1560                            </div>
1561
1562                            <div class="carousel-item">
1563                                <div class="review-card card-white">
1564                                    <div class="flex-grow-1 mb-sm-0 mb-3">
1565                                        <img src="/img/ZennoPoster/review/Quote.svg" alt="quote" width="57" height="46" />
1566                                        <p class="p-text mt-3">
1567                                            Yes, the app is totally worth it!
1568This becomes really obvious,
1569when you start
1570implementing projects
1571that you were thinking about earlier,
1572but couldn't find anyone to work on it
1573due to budget limitations. And now
1574the first templates are already
1575in use, traffic comes and goes,
1576money-box grows. Thanks to
1577the developers!
1578                                        </p>
1579                                    </div>
1580                                    <div class="d-flex align-items-center justify-content-between">
1581                                        <div class="d-flex flex-column">
1582                                            <span class="review-author-name">
1583                                                AndreyAAA
1584                                            </span>
1585                                            <span class="review-source">
1586                                                <img class="review-source-logo" src="/img/ZennoPoster/review/logo-zennolab.svg" alt="ZennoLab club logo" width="14" height="14" />
1587                                                Club on zennolab.com
1588                                            </span>
1589                                        </div>
1590                                        <img src="/img/ZennoPoster/review/ReviewPhoto1.webp" class="review-avatar" alt="Author avatar" loading="lazy" width="64" height="64" />
1591                                    </div>
1592                                </div>
1593                            </div>
1594
1595                            <div class="carousel-item">
1596                                <div class="review-card card-white">
1597                                    <div class="flex-grow-1 mb-sm-0 mb-3">
1598                                        <img src="/img/ZennoPoster/review/Quote.svg" alt="quote" width="57" height="46" />
1599                                        <p class="p-text mt-3">
1600                                            This is a very convenient and
1601versatile software,
1602kind of unique thing.
1603Tech Support is gorgeous,
1604let alone friendly club guys
1605always offering free
1606goodies, contests and
1607useful templates.
1608I've been using the software for over two
1609years now. And this is really one of the
1610most value-adding investments in my whole life. I don't have
1611a slightest regret about purchasing
1612Zennoposter!
1613                                        </p>
1614                                    </div>
1615                                    <div class="d-flex align-items-center justify-content-between">
1616                                        <div class="d-flex flex-column">
1617                                            <span class="review-author-name">
1618                                                bposter94
1619                                            </span>
1620                                            <span class="review-source">
1621                                                <img class="review-source-logo" src="/img/ZennoPoster/review/logo-maultalk.svg" alt="Maultalk logo" width="14" height="14" />
1622                                                MaulTalk.com
1623                                            </span>
1624                                        </div>
1625                                        <img src="/img/ZennoPoster/review/ReviewPhoto3.webp" class="review-avatar" alt="Author avatar" loading="lazy" width="64" height="64" />
1626                                    </div>
1627                                </div>
1628                            </div>
1629
1630                            <div class="carousel-item">
1631                                <div class="review-card card-white">
1632                                    <div class="flex-grow-1 mb-sm-0 mb-3">
1633                                        <img src="/img/ZennoPoster/review/Quote.svg" alt="quote" width="57" height="46" />
1634                                        <p class="p-text mt-3">
1635                                            I first came across ZennoPoster
1636in 2011,
1637and since than I've been an
1638active user with three paid licenses.
1639Great software, really. It helps
1640solve the major part of
1641automation tasks. I love regular
1642updates, it's epic win! Highly recommended to
1643everyone!
1644                                        </p>
1645                                    </div>
1646                                    <div class="d-flex align-items-center justify-content-between">
1647                                        <div class="d-flex flex-column">
1648                                            <span class="review-author-name">
1649                                                Tvister
1650                                            </span>
1651                                            <span class="review-source">
1652                                                <img class="review-source-logo" src="/img/ZennoPoster/review/logo-gofuckbiz.svg" alt="Gofuckbiz logo" width="14" height="14" />
1653                                                gofuckbiz.com
1654                                            </span>
1655                                        </div>
1656                                        <img src="/img/ZennoPoster/review/ReviewAvatar.webp" class="review-avatar" alt="Author avatar" loading="lazy" width="64" height="64" />
1657                                    </div>
1658                                </div>
1659                            </div>
1660
1661                            <div class="carousel-item">
1662                                <div class="review-card card-white">
1663                                    <div class="flex-grow-1 mb-sm-0 mb-3">
1664                                        <img src="/img/ZennoPoster/review/Quote.svg" alt="quote" width="57" height="46" />
1665                                        <p class="p-text mt-3">
1666                                            I can't even tell you
1667how much time and money
1668I've already saved with
1669ZennoPoster. Today routine
1670tasks, like
1671making some adjustments to 10
1672thousand items on the web site
1673no longer look complicated or
1674even impossible. Now I can't
1675even think of doing
1676all that without
1677ZennoPoster.
1678                                        </p>
1679                                    </div>
1680                                    <div class="d-flex align-items-center justify-content-between">
1681                                        <div class="d-flex flex-column">
1682                                            <span class="review-author-name">
1683                                                Alexey_777
1684                                            </span>
1685                                            <span class="review-source">
1686                                                <img class="review-source-logo" src="/img/ZennoPoster/review/logo-searchenginesguru.svg" alt="Searchengines.guru logo" width="14" height="14" />
1687                                                Searchengines.guru
1688                                            </span>
1689                                        </div>
1690                                        <img src="/img/ZennoPoster/review/ReviewAvatar.webp" class="review-avatar" alt="Author avatar" loading="lazy" width="64" height="64" />
1691                                    </div>
1692                                </div>
1693                            </div>
1694                        </div>
1695
1696                        <button class="carousel-control-prev"
1697                                type="button"
1698                                data-target="#reviews-carousel"
1699                                data-slide="prev">
1700                            <img src="/img/section-demo/icon-arrow-left.svg" alt="arrow left" width="40" height="40" />
1701                            <span class="sr-only">Previous</span>
1702                        </button>
1703
1704                        <button class="carousel-control-next"
1705                                type="button"
1706                                data-target="#reviews-carousel"
1707                                data-slide="next">
1708                            <img src="/img/section-demo/icon-arrow-right.svg" alt="arrow right" width="40" height="40" />
1709                            <span class="sr-only">Next</span>
1710                        </button>
1711                    </div>
1712                </div>
1713            </div>
1714        </div>
1715    </section>
1716
1717    <section id="price" class="price-section">
1718        <div class="container">
1719            <h2 class="mb-5 text-center">Cost</h2>
1720            <p class="p-subheading text-center" style="margin-top: -2rem;">
1721                AI features are available on all plans — including the free Lite
1722            </p>
1723
1724            
1725<div id="price-cards">
1726
1727            <div class="row justify-content-center duration-tabcontent align-items-end" id="duration-other">
1728                <div class="col-xl-3 col-lg-5 col-md-8 col-sm-10 col-12 p-2 ">
1729                    <div class=" py-4 card-white h-100 d-flex flex-column align-items-center text-center">
1730
1731                            <h3 class="price-lite">
1732                                LITE
1733                            </h3>
1734
1735
1736                        <p class="price-cost-p ">
1737                            $0
1738                        </p>
1739
1740                            <div class="price-per-month-with-discount">
1741                                    <p class="price--free">Free plan</p>
1742                            </div>
1743
1744                        <hr class="price-hr" />
1745
1746                                <span class="text-tooltip"
1747                                    data-toggle="tooltip"
1748                                    data-placement="bottom"
1749                                    title="You will be able to get all software updates for no extra cost"
1750                                    data-html="true">
1751                                    <b class="price-upd-includes">All updates included</b>
1752                                </span>
1753
1754                        <hr class="price-hr" />
1755
1756                        <ul class="price-features">
1757                                <li class="price-feature">
1758                                    <img src="/img/section-price/icon-threads-lite.svg" alt="threads-lite icon" width="20" height="20" />
1759
1760                                    <p class="price-feature-text price-feature-text-bold">
1761                                        1 thread
1762                                    </p>
1763                                </li>
1764                                <li class="price-feature">
1765                                    <img src="/img/section-price/icon-install-lite.svg" alt="install-lite icon" width="20" height="20" />
1766
1767                                    <p class="price-feature-text ">
1768                                        Installation to 1 machine
1769                                    </p>
1770                                </li>
1771                                <li class="price-feature">
1772                                    <img src="/img/section-price/icon-proxychecker-lite.svg" alt="proxychecker-lite icon" width="20" height="20" />
1773
1774                                    <p class="price-feature-text ">
1775                                        Low proxy checker speed
1776                                    </p>
1777                                </li>
1778                                <li class="price-feature">
1779                                    <img src="/img/section-price/icon-email.svg" alt="email icon" width="20" height="20" />
1780
1781                                    <p class="price-feature-text ">
1782                                        Get assistance from Tech Supp
1782ort Center or via email
1783                                    </p>
1784                                </li>
1785                                <li class="price-feature">
1786                                    <img src="/img/section-price/icon-forum.svg" alt="forum icon" width="20" height="20" />
1787
1788                                    <p class="price-feature-text ">
1789                                        Club support
1790                                    </p>
1791                                </li>
1792                        </ul>
1793
1794                        <button class="price-button price-button--free"
1795                            data-price="0"
1796                            data-price-usd="0"
1797                            data-price-rub="0"
1798                            data-currency="Usd"
1799                            data-next-price="0"
1800                            data-card-id="58cc6c82-ca1f-467b-a6f3-af1374bf2bb2"
1801                            data-card-name="ZennoPoster Lite, EN"
1802                            data-subscription-payment-provider="zennopay"
1803                            data-subscription-payment-providers="[&quot;zennopay&quot;]"
1804                            data-product-family-name="ZennoPoster"
1805                            data-subscription-duration-in-days="30"
1806                            data-subscription-description="A versatile tool for automating any web task. Join 15,000&#x2B; users and create your first bot today!"
1807                            data-gtm-id="buy"
1808                            data-gtm-plan="lite_subscription">
1809                            Free download
1810                        </button>
1811                    </div>
1812                </div>
1813                <div class="col-xl-3 col-lg-5 col-md-8 col-sm-10 col-12 p-2 ">
1814                    <div class=" py-4 card-white h-100 d-flex flex-column align-items-center text-center">
1815
1816                            <div class="d-flex justify-content-center align-items-center tariff-name">
1817                                <img src="/img/section-price/icon-fire.svg" alt="fire icon" width="16" height="22" class="d-none" />
1818                                <h3 class="price-professional price-professional-subscription">
1819                                    PRO
1820                                </h3>
1821
1822                            </div>
1823
1824
1825                        <p class="price-cost-p ">
1826                            $39
1827                                <span class="price-cost-per-duration price-cost-per-duration-professional price-cost-per-duration-subscription">
1828                                    / month
1829                                </span>
1830                        </p>
1831
1832                            <div class="price-per-month-with-discount">
1833                                    <p class="price--base">Basic plan</p>
1834                            </div>
1835
1836                        <hr class="price-hr" />
1837
1838                                <span class="text-tooltip"
1839                                    data-toggle="tooltip"
1840                                    data-placement="bottom"
1841                                    title="When your subscription is active, you will be able to get all software updates for no extra cost"
1842                                    data-html="true">
1843                                    <b class="price-upd-includes">All updates included</b>
1844                                </span>
1845
1846                        <hr class="price-hr" />
1847
1848                        <ul class="price-features">
1849                                <li class="price-feature">
1850                                    <img src="/img/section-price/icon-threads-pro.svg" alt="threads-pro icon" width="20" height="20" />
1851
1852                                    <p class="price-feature-text price-feature-text-bold">
1853                                        Unlimited threads
1854                                    </p>
1855                                </li>
1856                                <li class="price-feature">
1857                                    <img src="/img/section-price/icon-install-pro.svg" alt="install-pro icon" width="20" height="20" />
1858
1859                                    <p class="price-feature-text ">
1860                                        Installation to 3 machines
1861                                            <span class="text-tooltip text-tooltip-star"
1862                                                data-toggle="tooltip"
1863                                                data-placement="bottom"
1864                                                title="Running on 1 &lt;br /&gt; machine at a time"
1865                                                data-html="true">
1866                                                <b>*</b>
1867                                            </span>
1868                                    </p>
1869                                </li>
1870                                <li class="price-feature">
1871                                    <img src="/img/section-price/icon-proxychecker-pro.svg" alt="proxychecker-pro icon" width="20" height="20" />
1872
1873                                    <p class="price-feature-text ">
1874                                        Maximum proxy checker speed
1875                                    </p>
1876                                </li>
1877                                <li class="price-feature">
1878                                    <img src="/img/section-price/icon-email.svg" alt="email icon" width="20" height="20" />
1879
1880                                    <p class="price-feature-text ">
1881                                        Get assistance from Tech Support Center or via email
1882                                    </p>
1883                                </li>
1884                                <li class="price-feature">
1885                                    <img src="/img/section-price/icon-forum.svg" alt="forum icon" width="20" height="20" />
1886
1887                                    <p class="price-feature-text ">
1888                                        Club support
1889                                    </p>
1890                                </li>
1891                        </ul>
1892
1893                        <button class="price-button "
1894                            data-price="39"
1895                            data-price-usd="39"
1896                            data-price-rub="3260"
1897                            data-currency="Usd"
1898                            data-next-price="39"
1899                            data-card-id="a903ab0b-c1b1-4b8c-9aab-b6cc2f3248f9"
1900                            data-card-name="ZennoPoster Pro, EN"
1901                            data-subscription-payment-provider="paddle"
1902                            data-subscription-payment-providers="[&quot;paddle&quot;,&quot;cryptomus_usdt&quot;,&quot;cryptomus_btc&quot;,&quot;cryptomus&quot;,&quot;payssion_unionpay&quot;,&quot;zennopay&quot;]"
1903                            data-product-family-name="ZennoPoster"
1904                            data-subscription-duration-in-days="30"
1905                            data-subscription-description="A versatile tool for automating any web task. Join 15,000&#x2B; users and create your first bot today!"
1906                            data-gtm-id="buy"
1907                            data-gtm-plan="pro_subscription">
1908                            Select a plan
1909                        </button>
1910                    </div>
1911                </div>
1912                <div class="col-xl-3 col-lg-5 col-md-8 col-sm-10 col-12 p-2 ">
1913                    <div class="card-white--hint pb-4 card-white h-100 d-flex flex-column align-items-center text-center">
1914                            <div class="hint">
1915                                Great offer
1916                            </div>
1917
1918                            <div class="d-flex justify-content-center align-items-center tariff-name">
1919                                <img src="/img/section-price/icon-fire.svg" alt="fire icon" width="16" height="22" class="" />
1920                                <h3 class="price-professional price-professional-subscription">
1921                                    PRO
1922                                </h3>
1923
1924                                    <p class="discount">
1925                                        Discount
1926                                        $37
1927                                    </p>
1928                            </div>
1929
1930
1931                        <p class="price-cost-p ">
1932                            $197
1933                                <span class="price-cost-per-duration price-cost-per-duration-professional price-cost-per-duration-subscription">
1934                                    / half-year
1935                                </span>
1936                        </p>
1937
1938                            <div class="price-per-month-with-discount">
1939                                    <p class="price--strikethrough">
1940                                        $39
1941                                    </p>
1942                                    <p class="price--discount">
1943                                        $33
1944                                        / month
1945                                    </p>
1946                            </div>
1947
1948                        <hr class="price-hr" />
1949
1950                                <span class="text-tooltip"
1951                                    data-toggle="tooltip"
1952                                    data-placement="bottom"
1953                                    title="When your subscription is active, you will be able to get all software updates for no extra cost"
1954                                    data-html="true">
1955                                    <b class="price-upd-includes">All updates included</b>
1956                                </span>
1957
1958                        <hr class="price-hr" />
1959
1960                        <ul class="price-features">
1961                                <li class="price-feature">
1962                                    <img src="/img/section-price/icon-threads-pro.svg" alt="threads-pro icon" width="20" height="20" />
1963
1964                                    <p class="price-feature-text price-feature-text-bold">
1965                                        Unlimited threads
1966                                    </p>
1967                                </li>
1968                                <li class="price-feature">
1969                                    <img src="/img/section-price/icon-install-pro.svg" alt="install-pro icon" width="20" height="20" />
1970
1971                                    <p class="price-feature-text ">
1972                                        Installation to 3 machines
1973                                            <span class="text-tooltip text-tooltip-star"
1974                                                data-toggle="tooltip"
1975                                                data-placement="bottom"
1976                                                title="Running on 1 &lt;br /&gt; machine at a time"
1977                                                data-html="true">
1978                                                <b>*</b>
1979                                            </span>
1980                                    </p>
1981                                </li>
1982                                <li class="price-feature">
1983                                    <img src="/img/section-price/icon-proxychecker-pro.svg" alt="proxychecker-pro icon" width="20" height="20" />
1984
1985                                    <p class="price-feature-text ">
1986                                        Maximum proxy checker speed
1987                                    </p>
1988                                </li>
1989                                <li class="price-feature">
1990                                    <img src="/img/section-price/icon-email.svg" alt="email icon" width="20" height="20" />
1991
1992                                    <p class="price-feature-text ">
1993                                        Get assistance from Tech Support Center or via email
1994                                    </p>
1995                                </li>
1996                                <li class="price-feature">
1997                                    <img src="/img/section-price/icon-forum.svg" alt="forum icon" width="20" height="20" />
1998
1999                                    <p class="price-feature-text ">
2000                                        Club support
2001                                    </p>
2002                                </li>
2003                        </ul>
2004
2005                        <button class="price-button "
2006                            data-price="197"
2007                            data-price-usd="197"
2008                            data-price-rub="16460"
2009                            data-currency="Usd"
2010                            data-next-price="197"
2011                            data-card-id="a903ab0b-c1b1-4b8c-9aab-b6cc2f3248f9"
2012                            data-card-name="ZennoPoster Pro, EN"
2013                            data-subscription-payment-provider="paddle"
2014                            data-subscription-payment-providers="[&quot;paddle&quot;,&quot;cryptomus_usdt&quot;,&quot;cryptomus_btc&quot;,&quot;cryptomus&quot;,&quot;payssion_unionpay&quot;,&quot;zennopay&quot;]"
2015                            data-product-family-name="ZennoPoster"
2016                            data-subscription-duration-in-days="180"
2017                            data-subscription-description="A versatile tool for automating any web task. Join 15,000&#x2B; users and create your first bot today!"
2018                            data-gtm-id="buy"
2019                            data-gtm-plan="pro_subscription">
2020                            Select a plan
2021                        </button>
2022                    </div>
2023                </div>
2024                <div class="col-xl-3 col-lg-5 col-md-8 col-sm-10 col-12 p-2 ">
2025                    <div class="card-white--hint-best-offer pb-4 card-white h-100 d-flex flex-column align-items-center text-center">
2026                            <div class="hint">
2027                                Best offer
2028                            </div>
2029
2030                            <div class="d-flex justify-content-center align-items-center tariff-name">
2031                                <img src="/img/section-price/icon-fire.svg" alt="fire icon" width="16" height="22" class="" />
2032                                <h3 class="price-professional price-professional-subscription">
2033                                    PRO
2034                                </h3>
2035
2036                                    <p class="discount">
2037                                        Discount
2038                                        $135
2039                                    </p>
2040                            </div>
2041
2042
2043                        <p class="price-cost-p ">
2044                            $333
2045                                <span class="price-cost-per-duration price-cost-per-duration-professional price-cost-per-duration-subscription">
2046                                    / year
2047                                </span>
2048                        </p>
2049
2050                            <div class="price-per-month-with-discount">
2051                                    <p class="price--strikethrough">
2052                                        $39
2053                                    </p>
2054                                    <p class="price--discount">
2055                                        $28
2056                                        / month
2057                                    </p>
2058                            </div>
2059
2060                        <hr class="price-hr" />
2061
2062                                <span class="text-tooltip"
2063                                    data-toggle="tooltip"
2064                                    data-placement="bottom"
2065                                    title="When your subscription is active, you will be able to get all software updates for no extra cost"
2066                                    data-html="true">
2067                                    <b class="price-upd-includes">All updates included</b>
2068                                </span>
2069
2070                        <hr class="price-hr" />
2071
2072                        <ul class="price-features">
2073                                <li class="price-feature">
2074                                    <img src="/img/section-price/icon-threads-pro.svg" alt="threads-pro icon" width="20" height="20" />
2075
2076                                    <p class="price-feature-text price-feature-text-bold">
2077                                        Unlimited threads
2078                                    </p>
2079                                </li>
2080                                <li class="price-feature">
2081                                    <img src="/img/section-price/icon-install-pro.svg" alt="install-pro icon" width="20" height="20" />
2082
2083                                    <p class="price-feature-text ">
2084                                        Installation to 3 machines
2085                                            <span class="text-tooltip text-tooltip-star"
2086                                                data-toggle="tooltip"
2087                                                data-placement="bottom"
2088                                                title="Running on 1 &lt;br /&gt; machine at a time"
2089                                                data-html="true">
2090                                                <b>*</b>
2091                                            </span>
2092                                    </p>
2093                                </li>
2094                                <li class="price-feature">
2095                                    <img src="/img/section-price/icon-proxychecker-pro.svg" alt="proxychecker-pro icon" width="20" height="20" />
2096
2097                                    <p class="price-feature-text ">
2098                                        Maximum proxy checker speed
2099                                    </p>
2100                                </li>
2101                                <li class="price-feature">
2102                                    <img src="/img/section-price/icon-email.svg" alt="email icon" width="20" height="20" />
2103
2104                                    <p class="price-feature-text ">
2105                                        Get assistance from Tech Supp
2105ort Center or via email
2106                                    </p>
2107                                </li>
2108                                <li class="price-feature">
2109                                    <img src="/img/section-price/icon-forum.svg" alt="forum icon" width="20" height="20" />
2110
2111                                    <p class="price-feature-text ">
2112                                        Club support
2113                                    </p>
2114                                </li>
2115                        </ul>
2116
2117                        <button class="price-button "
2118                            data-price="333"
2119                            data-price-usd="333"
2120                            data-price-rub="27830"
2121                            data-currency="Usd"
2122                            data-next-price="333"
2123                            data-card-id="a903ab0b-c1b1-4b8c-9aab-b6cc2f3248f9"
2124                            data-card-name="ZennoPoster Pro, EN"
2125                            data-subscription-payment-provider="paddle"
2126                            data-subscription-payment-providers="[&quot;paddle&quot;,&quot;cryptomus_usdt&quot;,&quot;cryptomus_btc&quot;,&quot;cryptomus&quot;,&quot;payssion_unionpay&quot;,&quot;zennopay&quot;]"
2127                            data-product-family-name="ZennoPoster"
2128                            data-subscription-duration-in-days="365"
2129                            data-subscription-description="A versatile tool for automating any web task. Join 15,000&#x2B; users and create your first bot today!"
2130                            data-gtm-id="buy"
2131                            data-gtm-plan="pro_subscription">
2132                            Select a plan
2133                        </button>
2134                    </div>
2135                </div>
2136            </div>
2137</div>
2138
2139
2140<div class="modal fade"
2141     id="price-modal"
2142     tabindex="-1"
2143     role="dialog"
2144     aria-labelledby="price-modal-label"
2145     aria-hidden="true">
2146    <div class="modal-dialog modal-dialog-centered">
2147        <form id="price-modal-form" novalidate class="w-100" action="/api/Buy/buy" method="post">
2148            <div class="modal-content">
2149                <div class="modal-header align-items-center">
2150                    <p class="modal-title buy-modal-title"
2151                       id="price-modal-label">
2152                        <img class="buy-modal-title-img" src="/img/section-price/modal/icon-payment.svg" alt="card icon" width="30" height="22" />
2153                        Product payment
2154                    </p>
2155                    <button type="button"
2156                            class="close"
2157                            data-dismiss="modal"
2158                            aria-label="Close">
2159                        <span aria-hidden="true">&times;</span>
2160                    </button>
2161                </div>
2162                <div class="modal-body">
2163                    <div class="buy-form-element">
2164                        <label for="price-modal-product-name" class="buy-form-element-label">
2165                            Product:
2166                        </label>
2167                        <input id="price-modal-product-name"
2168                               readonly
2169                               class="form-control buy-form-element-input" />
2170                    </div>
2171
2172                    <div id="price-modal-email-container" class="buy-form-element">
2173                        <label for="price-modal-email" class="buy-form-element-label">
2174                            Email*:
2175                        </label>
2176                        <div class="w-100">
2177                            <input id="price-modal-email"
2178                                   name="buyerEmail"
2179                                   type="email"
2180                                   required
2181                                   pattern="^(?=.{1,64}$)[a-zA-Z0-9_&#x2B;&#x27;\x21\x23\x24\x25\x26\x2a\x2d\x2f\x3d\x3f\x5e\x60\x7b\x7c\x7d\x7e]&#x2B;([.][a-zA-Z0-9_&#x2B;&#x27;\x21\x23\x24\x25\x26\x2a\x2d\x2f\x3d\x3f\x5e\x60\x7b\x7c\x7d\x7e]&#x2B;)*@[a-zA-Z0-9\x2d]&#x2B;([.][a-zA-Z0-9\x2d]&#x2B;)*[.][a-zA-Z]{2,}$"
2182                                   class="form-control buy-form-element-input"
2183                                   placeholder="Enter your email" />
2184                            <div class="invalid-feedback" aria-hidden="true">Please provide a valid email</div>
2185                        </div>
2186                    </div>
2187
2188                    <div class="buy-form-element">
2189                        <label for="price-modal-referrer" class="buy-form-element-label">
2190                            Ref. code:
2191                        </label>
2192                        <input id="price-modal-referrer"
2193                               name="referrer"
2194                               value=""
2195                               class="form-control buy-form-element-input"
2196                                                              placeholder="Enter referral code or coupon if available" />
2197                    </div>
2198
2199                    <fieldset class="buy-form-element flex-column align-items-stretch mb-0">
2200                        <legend class="buy-form-element-payment-legend">
2201                            Choose payment type:
2202                        </legend>
2203                            <div class="buy-form-element-payment-option-container">
2204                                <input type="radio"
2205                                       id="price-modal-paddle"
2206                                       name="paymentProvider"
2207                                       value="paddle"
2208                                       checked="checked"
2209                                       class="hidden-input" />
2210                                <label for="price-modal-paddle"
2211                                       class="buy-form-element-payment-option-label">
2212                                    <img width="100" height="30" src="/img/section-price/modal/logo-paddle.webp" alt="paddle logo" />
2213                                    <span class="buy-form-element-payment-option-label-description">
2214                                        Visa/MasterCard/ApplePay
2215                                    </span>
2216                                    <span id="price-modal-paddle-price"
2217                                          data-currency="Usd"
2218                                          data-price=""
2219                                          class="buy-form-element-payment-option-price">
2220                                    </span>
2221                                </label>
2222                            </div>
2223                            <div class="buy-form-element-payment-option-container">
2224                                <input type="radio"
2225                                       id="price-modal-cryptomus_usdt"
2226                                       name="paymentProvider"
2227                                       value="cryptomus_usdt"
2228                                       class="hidden-input" />
2229                                <label for="price-modal-cryptomus_usdt"
2230                                       class="buy-form-element-payment-option-label">
2231                                    <img width="100" height="30" src="/img/section-price/modal/logo-cryptomus_usdt.webp" alt="cryptomus_usdt logo" />
2232                                    <span class="buy-form-element-payment-option-label-description">
2233                                        USDT (NO REFUND)
2234                                    </span>
2235                                    <span id="price-modal-cryptomus_usdt-price"
2236                                          data-currency="Usd"
2237                                          data-price=""
2238                                          class="buy-form-element-payment-option-price">
2239                                    </span>
2240                                </label>
2241                            </div>
2242                            <div class="buy-form-element-payment-option-container">
2243                                <input type="radio"
2244                                       id="price-modal-cryptomus"
2245                                       name="paymentProvider"
2246                                       value="cryptomus"
2247                                       class="hidden-input" />
2248                                <label for="price-modal-cryptomus"
2249                                       class="buy-form-element-payment-option-label">
2250                                    <img width="100" height="30" src="/img/section-price/modal/logo-cryptomus.webp" alt="cryptomus logo" />
2251                                    <span class="buy-form-element-payment-option-label-description">
2252                                        BTC/Other Crypto (NO REFUND)
2253                                    </span>
2254                                    <span id="price-modal-cryptomus-price"
2255                                          data-currency="Usd"
2256                                          data-price=""
2257                                          class="buy-form-element-payment-option-price">
2258                                    </span>
2259                                </label>
2260                            </div>
2261                            <div class="buy-form-element-payment-option-container">
2262                                <input type="radio"
2263                                       id="price-modal-cryptomus_btc"
2264                                       name="paymentProvider"
2265                                       value="cryptomus_btc"
2266                                       class="hidden-input" />
2267                                <label for="price-modal-cryptomus_btc"
2268                                       class="buy-form-element-payment-option-label">
2269                                    <img width="100" height="30" src="/img/section-price/modal/logo-cryptomus_btc.webp" alt="cryptomus_btc logo" />
2270                                    <span class="buy-form-element-payment-option-label-description">
2271                                        BTC/Other Crypto (NO REFUND)
2272                                    </span>
2273                                    <span id="price-modal-cryptomus_btc-price"
2274                                          data-currency="Usd"
2275                                          data-price=""
2276                                          class="buy-form-element-payment-option-price">
2277                                    </span>
2278                                </label>
2279                            </div>
2280                            <div class="buy-form-element-payment-option-container">
2281                                <input type="radio"
2282                                       id="price-modal-payssion_unionpay"
2283                                       name="paymentProvider"
2284                                       value="payssion_unionpay"
2285                                       class="hidden-input" />
2286                                <label for="price-modal-payssion_unionpay"
2287                                       class="buy-form-element-payment-option-label">
2288                                    <img width="100" height="30" src="/img/section-price/modal/logo-payssion_unionpay.webp" alt="payssion_unionpay logo" />
2289                                    <span class="buy-form-element-payment-option-label-description">
2290                                        UnionPay
2291                                    </span>
2292                                    <span id="price-modal-payssion_unionpay-price"
2293                                          data-currency="Usd"
2294                                          data-price=""
2295                                          class="buy-form-element-payment-option-price">
2296                                    </span>
2297                                </label>
2298                            </div>
2299                    </fieldset>
2300
2301                    <input id="price-modal-product-id" name="productId" type="hidden" />
2302                    <input id="price-modal-price-usd" name="priceUsd" type="hidden" />
2303                </div>
2304                <div class="modal-footer">
2305                    <div class="modal-footer-override">
2306                        <div>
2307                            <button id="price-modal-cancel-button"
2308                                    type="button"
2309                                    class="secondary-button buy-form-secondary-button"
2310                                    data-dismiss="modal"
2311                                    data-gtm-id="cancel-payment"
2312                                    data-gtm-plan="">
2313                                Cancel
2314                            </button>
2315                            <button id="price-modal-submit-button"
2316                                    type="submit"
2317                                    class="main-button-primary buy-form-primary-button"
2318                                    data-gtm-id="go-to-payment"
2319                                    data-gtm-plan="">
2320                                Pay
2321                            </button>
2322                        </div>
2323                        <div>
2324                            <div class="buy-form-license-agreement">
2325                                By clicking "Pay" you accept
2326                                <a href="https://zennolab.com/en/terms-of-service/"
2327                                   target="_blank"
2328                                   class="faq-a"
2329                                   data-gtm-id="license-agreement"
2330                                   data-gtm-position="price-modal-pay">
2331                                    license agreement
2332                                </a>
2333                            </div>
2334                        </div>
2335                    </div>
2336                </div>
2337            </div>
2338        </form>
2339    </div>
2340</div>
2341
2342<div class="modal fade"
2343     id="free-price-modal"
2344     tabindex="-1"
2345     role="dialog"
2346     aria-labelledby="price-modal-label"
2347     aria-hidden="true">
2348    <div class="modal-dialog modal-dialog-centered">
2349        <form id="free-price-modal-form" novalidate class="w-100" action="/api/Buy/buy" method="post">
2350            <div class="modal-content">
2351                <div class="modal-header align-items-center">
2352                    <p class="modal-title buy-modal-title"
2353                       id="free-price-modal-label">
2354                        <img class="buy-modal-title-img" src="/img/section-price/modal/icon-payment.svg" alt="card icon" width="30" height="22" />
2355                        Get for free
2356                    </p>
2357                    <button type="button"
2358                            class="close"
2359                            data-dismiss="modal"
2360                            aria-label="Close">
2361                        <span aria-hidden="true">&times;</span>
2362                    </button>
2363                </div>
2364                <div class="modal-body">
2365                    <div class="buy-form-element">
2366                        <label for="price-modal-product-name" class="buy-form-element-label">
2367                            Product:
2368                        </label>
2369                        <input id="free-price-modal-product-name"
2370                               readonly
2371                               class="form-control buy-form-element-input" />
2372                    </div>
2373
2374                    <div id="free-price-modal-email-container" class="buy-form-element">
2375                        <label for="free-price-modal-email" class="buy-form-element-label">
2376                            Email*:
2377                        </label>
2378                        <div class="w-100">
2379                            <input id="free-price-modal-email"
2380                                   name="buyerEmail"
2381                                   type="email"
2382                                   required
2383                                   pattern="^(?=.{1,64}$)[a-zA-Z0-9_&#x2B;&#x27;\x21\x23\x24\x25\x26\x2a\x2d\x2f\x3d\x3f\x5e\x60\x7b\x7c\x7d\x7e]&#x2B;([.][a-zA-Z0-9_&#x2B;&#x27;\x21\x23\x24\x25\x26\x2a\x2d\x2f\x3d\x3f\x5e\x60\x7b\x7c\x7d\x7e]&#x2B;)*@[a-zA-Z0-9\x2d]&#x2B;([.][a-zA-Z0-9\x2d]&#x2B;)*[.][a-zA-Z]{2,}$"
2384                                   class="form-control buy-form-element-input"
2385                                   placeholder="Enter your email" />
2386                            <div class="invalid-feedback" aria-hidden="true">Please provide a valid email</div>
2387                        </div>
2388                    </div>
2389                    <div class="buy-form-description">
2390                        After clicking the &#x201C;Get&#x201D; button, you will receive an email, after which you can download the product from your ZennoLab account.
2391                    </div>
2392                    <input id="free-price-modal-product-id" name="productId" type="hidden" />
2393                    <input id="free-price-modal-price" name="price" type="hidden" />
2394                    <input id="free-price-modal-email" name="email" type="hidden" />
2395                    <input id="free-price-modal-duration-in-days" name="durationInDays" type="hidden" />
2396                    <input id="free-price-modal-payment-provider" name="paymentProvider" type="hidden" />
2397                    <input id="free-price-modal-next-price" name="nextPrice" type="hidden" />
2398                </div>
2399                <div class="modal-footer">
2400                    <div class="modal-footer-override">
2401                        <div>
2402                            <button id="free-price-modal-cancel-button"
2403                                    type="button"
2404                                    class="secondary-button buy-form-secondary-button"
2405                                    data-dismiss="modal"
2406                                    data-gtm-id="cancel-payment"
2407                                    data-gtm-plan="">
2408                                Cancel
2409                            </button>
2410                            <button id="free-price-modal-submit-button"
2411                                    type="submit"
2412                                    class="main-button-primary buy-form-primary-button"
2413                                    data-gtm-id="go-to-payment"
2414                                    data-gtm-plan="">
2415                                Get
2416                            </button>
2417                        </div>
2418                        <div>
2419                            <div class="buy-form-license-agreement">
2420                                By clicking "Get" you accept
2421                                <a href="https://zennolab.com/en/terms-of-service/"
2422                                   target="_blank"
2423                                   class="faq-a"
2424                                   data-gtm-id="license-agreement"
2425                                   data-gtm-position="price-modal-pay">
2426                                    license agreement
2427                                </a>
2428                            </div>
2429                        </div>
2430                    </div>
2431                </div>
2432            </div>
2433        </form>
2434    </div>
2435</div>
2436
2437<div class="modal fade"
2438     id="subscription-price-modal"
2439     tabindex="-1"
2440     role="dialog"
2441     aria-labelledby="subscription-price-modal-label"
2442     aria-hidden="true">
2443    <div class="modal-dialog modal-dialog-centered">
2444        <form id="subscription-price-modal-form" novalidate class="w-100" action="/api/Buy/buy" method="post">
2445            <div class="modal-content">
2446                <div class="modal-header align-items-center">
2447                    <p class="modal-title buy-modal-title"
2448                       id="subscription-price-modal-label">
2449                        <img class="buy-modal-title-img" src="/img/section-price/modal/icon-payment.svg" alt="card icon" width="30" height="22" />
2450                        Subscribe to service
2451                    </p>
2452                    <button type="button"
2453                            class="close"
2454                            data-dismiss="modal"
2455                            aria-label="Close">
2456                        <span aria-hidden="true">&times;</span>
2457                    </button>
2458                </div>
2459                <div class="modal-body">
2460                    <div class="subscription-info">
2461                        <h3 class="d-flex align-items-center">
2462                            <img class="mr-3"
2463                                                                id="subscription-product-image"
2464                                alt="product icon"
2465                                width="30"
2466                                height="30" />
2467                            <span id="subscription-product-name"></span>
2468                        </h3>
2469                        <p id="subscription-product-description" class="additional-text mx-auto" style="max-width: 450px">
2470                        </p>
2471
2472                        <hr style="margin: 20px -16px" />
2473                    </div>
2474
2475                    <div class="buy-form-element">
2476                        <label for="subscription-price-modal-product-name" class="buy-form-element-label">
2477                            Product:
2478                        </label>
2479                        <input id="subscription-price-modal-product-name"
2480                               readonly
2481                               class="form-control buy-form-element-input" />
2482                    </div>
2483
2484                    <div class="buy-form-element align-items-start">
2485                        <span class="buy-form-element-label price-label">
2486                            Price:
2487                        </span>
2488                        <div class="d-flex flex-column">
2489                            <span id="subscription-price-modal-product-cost" class="price-text"></span>
2490                            <span class="additional-text">
2491                                Subsequent payments every <span id="subscription-duration"></span> days
2492                            </span>
2493                        </div>
2494                    </div>
2495
2496                    <div id="subscription-price-modal-email-container" class="buy-form-element">
2497                        <label for="subscription-price-modal-email" class="buy-form-element-label">
2498                            Email*:
2499                        </label>
2500                        <div class="w-100">
2501                            <input id="subscription-price-modal-email"
2502                                   name="buyerEmail"
2503                                   type="email"
2504                                   required
2505                                   pattern="^(?=.{1,64}$)[a-zA-Z0-9_&#x2B;&#x27;\x21\x23\x24\x25\x26\x2a\x2d\x2f\x3d\x3f\x5e\x60\x7b\x7c\x7d\x7e]&#x2B;([.][a-zA-Z0-9_&#x2B;&#x27;\x21\x23\x24\x25\x26\x2a\x2d\x2f\x3d\x3f\x5e\x60\x7b\x7c\x7d\x7e]&#x2B;)*@[a-zA-Z0-9\x2d]&#x2B;([.][a-zA-Z0-9\x2d]&#x2B;)*[.][a-zA-Z]{2,}$"
2506                                   class="form-control buy-form-element-input"
2507                                   placeholder="Enter your email" />
2508                            <div class="invalid-feedback" aria-hidden="true">Please provide a valid email</div>
2509                        </div>
2510                    </div>
2511
2512                    <div class="buy-form-element">
2513                        <label for="subscription-price-modal-referrer" class="buy-form-element-label">
2514                            Promocode:
2515                        </label>
2516                        <input id="subscription-price-modal-referrer"
2517                               name="referrer"
2518                               value=""
2519                               class="form-control buy-form-element-input"
2520                                                              placeholder="Enter referral code or coupon if available" />
2521                    </div>
2522
2523                    <fieldset id="subscription-payment-methods-fieldset" class="buy-form-element flex-column align-items-stretch mb-0 d-none">
2524                        <legend class="buy-form-element-payment-legend">
2525                            Choose payment type:
2526                        </legend>
2527                        <div id="subscription-payment-methods-list">
2528                        </div>
2529                    </fieldset>
2530
2531                    <input id="subscription-price-modal-product-id" name="productId" type="hidden" />
2532                    <input id="subscription-price-modal-price-usd" name="priceUsd" type="hidden" />
2533                </div>
2534                <div class="modal-footer">
2535                    <div class="modal-footer-override">
2536                        <div>
2537                            <button id="subscription-price-modal-cancel-button"
2538                                    type="button"
2539                                    class="secondary-button buy-form-secondary-button"
2540                                    data-dismiss="modal"
2541                                    data-gtm-id="cancel-payment"
2542                                    data-gtm-plan="">
2543                                Cancel
2544                            </button>
2545                            <button id="subscription-price-modal-submit-button"
2546                                    type="submit"
2547                                    class="main-button-primary buy-form-primary-button"
2548                                    data-gtm-id="go-to-payment"
2549                                    data-gtm-plan="">
2550                                Subscribe
2551                            </button>
2552                        </div>
2553                        <div>
2554                            <div class="buy-form-license-agreement text-right">
2555                                By clicking "Subscribe to service", you accept
2556                                <a href="https://zennolab.com/en/subscriptionterms/"
2557                                   id="subscription-license-agreement"
2558                                   target="_blank"
2559                                   class="faq-a"
2560                                   data-gtm-id="subscription-license-agreement"
2561                                   data-gtm-position="subscription-price-modal-pay">
2562                                    the Personal Data Processing Agreement and the Terms and Conditions of the Offe
2563                                </a>
2564                            </div>
2565                        </div>
2566                    </div>
2567                </div>
2568            </div>
2569        </form>
2570    </div>
2571</div>
2572
2573<div class="modal fade"
2574     id="price-error-modal"
2575     tabindex="-1"
2576     role="dialog"
2577     aria-labelledby="price-error-modal-label"
2578     aria-hidden="true">
2579    <div class="modal-dialog modal-dialog-centered">
2580        <div class="modal-content">
2581            <div class="modal-header align-items-center">
2582                <p class="modal-title buy-modal-title"
2583                   id="price-error-modal-label">
2584                    <img class="buy-modal-title-img" src="/img/section-price/modal/icon-payment.svg" alt="card icon" width="30" height="22" />
2585                    Error
2586                </p>
2587                <button type="button"
2588                        class="close"
2589                        data-dismiss="modal"
2590                        aria-label="Close">
2591                    <span aria-hidden="true">&times;</span>
2592                </button>
2593            </div>
2594            <div class="modal-body">
2595                <span class="buy-form-error-message">
2596                    An error occurred while generating the payment link. <br /> Try again later or contact
2597                    <a href="https://helpdesk.zennolab.com/en-us/"
2598                       target="_blank"
2599                       class="faq-a"
2600                       data-gtm-id="ask-support"
2601                       data-gtm-position="price-modal-pay-error">
2602                        our support service
2603                    </a>
2604                </span>
2605            </div>
2606            <div class="modal-footer">
2607                <button type="button"
2608                        class="secondary-button buy-form-secondary-button"
2609                        data-dismiss="modal">
2610                    Back
2611                </button>
2612                <button id="price-error-modal-retry-button"
2613                        type="button"
2614                        class="main-button-primary buy-form-primary-button">
2615                    Retry
2616                </button>
2617            </div>
2618        </div>
2619    </div>
2620</div>
2621<div class="modal fade"
2622     id="duplicate-license-error-modal"
2623     tabindex="-1"
2624     role="dialog"
2625     aria-labelledby="duplicate-license-error-modal-label"
2626     aria-hidden="true">
2627  <div class="modal-dialog modal-dialog-centered">
2628    <div class="modal-content">
2629      <div class="modal-header align-items-center">
2630        <p class="modal-title buy-modal-title"
2631           id="duplicate-license-error-modal-label">
2632          <img class="buy-modal-title-img" src="/img/section-price/modal/icon-payment.svg" alt="card icon" width="30" height="22" />
2633          Error
2634        </p>
2635        <button type="button"
2636                class="close"
2637                data-dismiss="modal"
2638                aria-label="Close">
2639          <span aria-hidden="true">&times;</span>
2640        </button>
2641      </div>
2642      <div class="modal-body">
2643        <span class="buy-form-error-message">
2644          This product has already been ordered at the specified email address.
2645        </span>
2646      </div>
2647      <div class="modal-footer">
2648        <button type="button"
2649                class="secondary-button buy-form-secondary-button"
2650                data-dismiss="modal">
2651          Back
2652        </button>
2653      </div>
2654    </div>
2655  </div>
2656</div>
2657
2658<div class="modal fade"
2659     id="alternative-provider-modal"
2660     data-backdrop="static"
2661     data-keyboard="false"
2662     tabindex="-1"
2663     role="dialog"
2664     aria-labelledby="alternative-provider-modal-label"
2665     aria-hidden="true">
2666    <div class="modal-dialog modal-dialog-centered">
2667        <div class="modal-content">
2668            <div class="modal-header align-items-center">
2669                <p class="modal-title buy-modal-title"
2670                   id="alternative-provider-modal-label">
2671                    <img class="buy-modal-title-img" src="/img/section-price/modal/icon-payment.svg" alt="card icon" width="30" height="22" />
2672                    Notification
2673                </p>
2674            </div>
2675            <div class="modal-body">
2676                <span class="alternative-provider-message">
2677                    The selected payment method is temporarily unavailable, we have selected an alternative method for you
2678                </span>
2679            </div>
2680            <div class="modal-footer">
2681                <button id="alternative-provider-modal-continue-button"
2682                        type="button"
2683                        class="main-button-primary buy-form-primary-button">
2684                    Continue
2685                </button>
2686            </div>
2687        </div>
2688    </div>
2689</div>
2690
2691<script>
2692document.addEventListener('DOMContentLoaded', () => {
2693    const PAYMENT_PROVIDER_ZENNOPAY_PREFIX = "zennopay";
2694    let errorStatusCode = null;
2695
2696    // Chrome keeps the page in the back/forward cache (bfcache) when the user is redirected to an
2697    // external payment gateway. Pressing "Back" restores the frozen DOM with the Pay button still
2698    // disabled. Reload on a bfcache restore to rebuild the initial server-rendered state — the same
2699    // behaviour Firefox/Yandex/Edge already produce on back navigation.
2700    window.addEventListener('pageshow', (event) => {
2701        if (event.persisted) {
2702            window.location.reload();
2703        }
2704    });
2705
2706    const addCookiesToQueryParams = (url) => {
2707        const getCookie = (name, defaultValue = null) => {
2708            const match = document.cookie.match(new RegExp(`(^| )${name}=([^;]+)`));
2709            if (match) {
2710                return match[2];
2711            }
2712            return defaultValue;
2713        }
2714
2715        const ga_cId = getCookie("_zl_ga_cId");
2716        const ga_sId = getCookie("_zl_ga_sId");
2717        const yandexMetrica_cId = getCookie("_ym_uid", "");
2718
2719        var queryParams = yandexMetrica_cId
2720            ? `&_zl_ym_uid=${yandexMetrica_cId}`
2721            : '';
2722        queryParams += ga_cId && ga_sId
2723            ? `&_zl_ga_cId=${ga_cId}&_zl_ga_sId=${ga_sId}`
2724            : '';
2725
2726        const separator = url.includes('?') ? '&' : '?';
2727
2728        return queryParams ? `${url}${separator}${queryParams}` : url;
2729    };
2730
2731    const isZennoPayProvider = (providerName) => {
2732        return providerName.toLowerCase().startsWith(PAYMENT_PROVIDER_ZENNOPAY_PREFIX.toLowerCase());
2733    }
2734
2735    $("button.price-button").each((_, priceButton) => {
2736        priceButton.addEventListener('click', () => {
2737            const {
2738                cardId,
2739                cardName,
2740                currency,
2741                currency: tariffCurrency,
2742                nextPrice,
2743                price,
2744                priceRub,
2745                productFamilyName,
2746                subscriptionDurationInDays,
2747                subscriptionPaymentProvider,
2748                subscriptionPaymentProviders,
2749                subscriptionDescription,
2750            } = $(priceButton).data();
2751
2752            console.log('[Payment] card clicked | cardId=' + cardId + ' product=' + productFamilyName + ' currency=' + currency + ' price=' + price + ' priceRub=' + priceRub + ' provider=' + subscriptionPaymentProvider + ' providers=' + JSON.stringify(subscriptionPaymentProviders) + ' days=' + subscriptionDurationInDays + ' lang=en');
2753
2754            const providers = (Array.isArray(subscriptionPaymentProviders) ? subscriptionPaymentProviders : [])
2755                .filter(name => !isZennoPayProvider(name));
2756
2757            if ((productFamilyName === "ZennoPoster" || productFamilyName === "ZennoDroid") && providers.length > 0 && ('en' === 'en' || 'en' === 'zh')) {
2758                console.log('[Payment] flow: subscription modal with provider list (ZP/ZD, en/zh)', { productFamilyName, providers });
2759                resetSubscriptionPaymentModal();
2760
2761                const subscriptionLicenseAgreementLink = $("#subscription-license-agreement").attr('href');
2762                const displayPrice = new Intl.NumberFormat('en', {
2763                    style: 'currency',
2764                    maximumFractionDigits: 0,
2765                    currency: tariffCurrency
2766                }).format(price);
2767
2768                $("#subscription-product-image").attr('src', `/img/${productFamilyName}/main/logo.svg`);
2769                $("#subscription-product-name").text(cardName);
2770                $("#subscription-product-description").text(subscriptionDescription);
2771                $("#subscription-price-modal-product-name").val(cardName);
2772                $("#subscription-price-modal-product-cost").text(displayPrice);
2773                $("#subscription-price-modal-product-cost + .additional-text > #subscription-duration").text(subscriptionDurationInDays);
2774                $("#subscription-license-agreement").attr('href', subscriptionLicenseAgreementLink + `?productID=${cardId}&duration=${subscriptionDurationInDays}#personal-info`);
2775
2776                const gtmPlan = $(priceButton).data("gtm-plan");
2777                $("#subscription-price-modal-submit-button").attr("data-gtm-plan", gtmPlan);
2778                $("#subscription-price-modal-cancel-button").attr("data-gtm-plan", gtmPlan);
2779
2780                const container = $("#subscription-payment-methods-list");
2781                container.empty();
2782                const subscriptionProviderLabels = {
2783                    'paddle': "Visa/MasterCard/ApplePay",
2784                    'cryptomus': "BTC/Other Crypto (NO REFUND)",
2785                    'cryptomus_btc': "BTC/Other Crypto (NO REFUND)",
2786                    'cryptomus_usdt': "USDT (NO REFUND)",
2787                    'payssion_unionpay': "UnionPay",
2788                    'wata_rub': "Russian bank cards\n(Visa/MasterCard/MIR)",
2789                    'wata_usd': "International cards\n(Visa/MasterCard)"
2790                };
2791                providers.forEach((name, idx) => {
2792                    const label = subscriptionProviderLabels[name] || name;
2793                    container.append(`
2794                        <div class="buy-form-element-payment-option-container">
2795                            <input type="radio" id="sub-modal-${name}" name="subscriptionProvider" value="${name}" ${idx === 0 ? "checked" : ""} class="hidden-input" />
2796                            <label for="sub-modal-${name}" class="buy-form-element-payment-option-label">
2797                                <img width="100" height="30" src="/img/section-price/modal/logo-${name}.webp" alt="${name} logo" />
2798                                <span class="buy-form-element-payment-option-label-description">${label}</span>
2799                            </label>
2800                        </div>
2801                    `);
2802                });
2803                $("#subscription-payment-methods-fieldset").removeClass("d-none");
2804
2805                $("#subscription-price-modal").modal("show");
2806
2807                $("#subscription-price-modal-email").off("blur.zp").on("blur.zp", function () {
2808                    $("#subscription-price-modal-email-container").addClass("was-validated");
2809                });
2810
2811                const subscriptionPriceModalForm = $("#subscription-price-modal-form");
2812                subscriptionPriceModalForm.off("submit.zp").on("submit.zp", function (e) {
2813                    e.preventDefault();
2814
2815                    if (subscriptionPriceModalForm[0].checkValidity() === false) {
2816                        $("#subscription-price-modal-email-container").addClass("was-validated");
2817                        return;
2818                    }
2819
2820                    const selectedProvider = $('input[name="subscriptionProvider"]:checked').val() || subscriptionPaymentProvider;
2821
2822                    const postData = {
2823                        productId: cardId,
2824                        durationInDays: subscriptionDurationInDays,
2825                        paymentProvider: selectedProvider,
2826                        price: price,
2827                        buyerEmail: $("#subscription-price-modal-email").val(),
2828                        nextPrice,
2829                        referrer: $("#subscription-price-modal-referrer").val(),
2830                    };
2831
2832                    console.log('[Payment] POST /api/subscription/subscribe/ (ZP/ZD modal)', postData);
2833
2834                    function handleError(statusCode) {
2835                        errorStatusCode = statusCode;
2836                        $("#price-error-modal-retry-button").addClass("d-none");
2837                        $("#price-error-modal").modal("show");
2838                    }
2839
2840                    function redirect(url) {
2841                        window.location.href = addCookiesToQueryParams(url);
2842                    }
2843
2844                    $.ajax({
2845                        url: "/api/subscription/subscribe/",
2846                        type: "POST",
2847                        data: postData,
2848                        success: function (result) {
2849                            console.log('[Payment] subscribe success (ZP/ZD modal)', result);
2850                            if (result.error) {
2851                                handleError(result.statusCode);
2852                                return;
2853                            }
2854                            redirect(result.redirectUrl);
2855                        },
2856                        error: function (xhr) {
2857                            console.log('[Payment] subscribe error (ZP/ZD modal)', { status: xhr.status, responseText: xhr.responseText });
2858                            handleError(xhr.status);
2859                        }
2860                    });
2861                });
2862
2863                return;
2864            } else if (isZennoPayProvider(subscriptionPaymentProvider)) {
2865                console.log('[Payment] flow: free/zennopay modal', { subscriptionPaymentProvider });
2866                resetFreePaymentModal();
2867                $("#free-price-modal-product-name").val($(priceButton).data("card-name"));
2868                $("#free-price-modal-product-id").val($(priceButton).data("card-id"));
2869                $("#free-price-modal-price").val($(priceButton).data("price"));
2870                $("#free-price-modal-duration-in-days").val($(priceButton).data("subscription-duration-in-days"));
2871                $("#free-price-modal-payment-provider").val(subscriptionPaymentProvider);
2872                $("#free-price-modal-next-price").val($(priceButton).data("next-price"));
2873                // Enable button when modal is open
2874                $("#free-price-modal-submit-button").prop("disabled", false);
2875                $("#free-price-modal").modal("show");
2876                return;
2877            }
2878
2879            if (subscriptionPaymentProvider) {
2880                if (tariffCurrency === "Rub") {
2881                    resetSubscriptionPaymentModal();
2882
2883                    const subscriptionLicenseAgreementLink = $("#subscription-license-agreement").attr('href');
2884                    const price = priceRub
2885                        ? new Intl.NumberFormat('en', { style: 'currency', maximumFractionDigits: 0, currency }).format(priceRub)
2886                        : price;
2887
2888                    $("#subscription-product-image").attr('src', `/img/${productFamilyName}/main/logo.svg`);
2889                    $("#subscription-product-name").text(cardName);
2890                    $("#subscription-product-description").text(subscriptionDescription);
2891                    $("#subscription-price-modal-product-name").val(cardName);
2892
2893                    $("#subscription-price-modal-product-cost").text(price);
2894                    $("#subscription-price-modal-product-cost + .additional-text > #subscription-duration").text(subscriptionDurationInDays);
2895
2896                    $("#subscription-license-agreement").attr('href', subscriptionLicenseAgreementLink + `?productID=${cardId}&duration=${subscriptionDurationInDays}#personal-info`);
2897
2898                    const gtmPlan = $(priceButton).data("gtm-plan");
2899                    $("#subscription-price-modal-submit-button").attr("data-gtm-plan", gtmPlan);
2900                    $("#subscription-price-modal-cancel-button").attr("data-gtm-plan", gtmPlan);
2901
2902                    $("#subscription-price-modal").modal("show");
2903
2904                    $("#subscription-price-modal-email").blur(function (e) {
2905                        $("#subscription-price-modal-email-container").addClass("was-validated");
2906                    });
2907
2908                    const subscriptionPriceModalForm = $("#subscription-price-modal-form");
2909                    $(subscriptionPriceModalForm).submit(function (e) {
2910                        e.preventDefault();
2911
2912                        if (subscriptionPriceModalForm[0].checkValidity() === false) {
2913                            $("#subscription-price-modal-email-container").addClass("was-validated");
2914                            return;
2915                        }
2916
2917                        const postData = {
2918                            productId: cardId,
2919                            durationInDays: subscriptionDurationInDays,
2920                            paymentProvider: subscriptionPaymentProvider,
2921                            price: priceRub ?? price,
2922                            buyerEmail: $("#subscription-price-modal-email").val(),
2923                            nextPrice,
2924                            referrer: $("#subscription-price-modal-referrer").val(),
2925                        };
2926
2927                        function handleError(statusCode) {
2928                            errorStatusCode = statusCode;
2929                            $("#price-error-modal-retry-button").addClass("d-none");
2930                            $("#price-error-modal").modal("show");
2931                            $('#free-price-modal-submit-button').prop("disabled", false);
2932                        }
2933
2934                        function redirect(url) {
2935                            window.location.href = addCookiesToQueryParams(url);
2936                        }
2937
2938                        $.ajax({
2939                            url: "/api/subscription/subscribe/",
2940                            type: "POST",
2941                            data: postData,
2942                            success: function (result) {
2943                                if (result.error) {
2944                                    handleError(result.statusCode);
2945                                    return;
2946                                }
2947
2948                                redirect(result.redirectUrl);
2949                            },
2950                            error: function (xhr) {
2951                                handleError(xhr.status);
2952                            }
2953                        });
2954                    });
2955                    
2956                } else {
2957                    $(priceButton).prop("disabled", true);
2958
2959                    const postData = {
2960                        productId: $(priceButton).data("card-id"),
2961                        durationInDays: $(priceButton).data("subscription-duration-in-days"),
2962                        paymentProvider: subscriptionPaymentProvider,
2963                        price: $(priceButton).data("price"),
2964                        nextPrice: $(priceButton).data("next-price"),
2965                        referrer: null,
2966                    };
2967
2968                    function handleError(statusCode) {
2969                        errorStatusCode = statusCode;
2970                        $("#price-error-modal-retry-button").addClass("d-none");
2971                        $("#price-error-modal").modal("show");
2972                        $(priceButton).prop("disabled", false);
2973                    }
2974
2975                    function redirect(url) {
2976                        window.location.href = addCookiesToQueryParams(url);
2977                    }
2978
2979                    $.ajax({
2980                        url: "/api/subscription/subscribe/",
2981                        type: "POST",
2982                        data: postData,
2983                        success: function (result) {
2984                            if (result.error) {
2985                                handleError(result.statusCode);
2986                                return;
2987                            }
2988
2989                            // HACK: DO NOT show notification
2990                            if (false && result.actualPaymentProvider) {
2991                                $("#alternative-provider-modal-continue-button").click(function (e) {
2992                                    redirect(result.redirectUrl);
2993                                })
2994                                $("#alternative-provider-modal").modal("show");
2995                                return;
2996                            }
2997
2998                            redirect(result.redirectUrl);
2999                        },
3000                        error: function (xhr) {
3001                            handleError(xhr.status);
3002                        }
3003                    });
3004                }
3005            } else {
3006                resetPaymentModal();
3007
3008                $(".buy-form-element-payment-option-price").each((_, paymentOptionPrice) => {
3009                    const currency = $(paymentOptionPrice).data("currency");
3010                    const price = currency === "Rub" ? $(priceButton).data("price-rub") : $(priceButton).data("price-usd");
3011
3012                            const currencySymbol = currency === "Rub" ? "RUB&nbsp;" : "$";
3013                            $(paymentOptionPrice).html(`${currencySymbol}${price}`);
3014                                            $(paymentOptionPrice).attr("data-price", price);
3015                });
3016
3017                $("#price-modal-product-name").val($(priceButton).data("card-name"));
3018                $("#price-modal-product-id").val($(priceButton).data("card-id"));
3019                $("#price-modal-price-usd").val($(priceButton).data("priceUsd"));
3020
3021                const gtmPlan = $(priceButton).data("gtm-plan");
3022                $("#price-modal-submit-button").attr("data-gtm-plan", gtmPlan);
3023                $("#price-modal-cancel-button").attr("data-gtm-plan", gtmPlan);
3024
3025                $("#price-modal").modal("show");
3026            }
3027        });
3028    });
3029
3030    $("#price-modal-email").blur(function (e) {
3031        $("#price-modal-email-container").addClass("was-validated");
3032    });
3033
3034    const form = $("#price-modal-form");
3035    $(form).submit(function (e) {
3036        e.preventDefault();
3037
3038        if (form[0].checkValidity() === false) {
3039            $("#price-modal-email-container").addClass("was-validated");
3040            return;
3041        }
3042
3043        $("#price-modal-submit-button").prop("disabled", true);
3044
3045        let formData = $(this).serialize();
3046
3047        const paymentProvider = formData.match(/paymentProvider=(.*?)&/)[1];
3048        const price = $(`#price-modal-${paymentProvider}-price`).data("price");
3049        const currency = $(`#price-modal-${paymentProvider}-price`).data("currency");
3050        formData = `${formData}&price=${price}&currency=${currency}`;
3051
3052        let referrer = formData.match(/referrer=(.*?)&/)[1];
3053        if (!referrer) {
3054            referrer = "";
3055            if (referrer) {
3056                formData = formData.replace(/referrer=(.*?)&/, `referrer=${referrer}&`);
3057            }
3058        }
3059
3060        function handleError(statusCode) {
3061            errorStatusCode = statusCode;
3062            $("#price-modal").modal("hide");
3063            $("#price-error-modal-retry-button").removeClass("d-none");
3064            $("#price-error-modal").modal("show");
3065            $("#price-modal-submit-button").prop("disabled", false);
3066        };
3067
3068        function redirect(url) {
3069            window.location.href = addCookiesToQueryParams(url);
3070        }
3071            
3072        $.ajax({
3073            url: "/api/buy/buy/",
3074            type: "POST",
3075            data: formData,
3076            success: function (result) {
3077                if (result.error) {
3078                    handleError(result.statusCode);
3079                    return;
3080                }
3081
3082                // HACK: DO NOT show notification
3083                if (false && result.actualPaymentProvider) {
3084                    $("#alternative-provider-modal-continue-button").click(function (e) {
3085                        redirect(result.redirectUrl);
3086                    })
3087                    $("#price-modal").modal("hide");
3088                    $("#alternative-provider-modal").modal("show");
3089                    return;
3090                }
3091
3092                redirect(result.redirectUrl);
3093            },
3094            error: function (xhr) {
3095                handleError(xhr.status);
3096            }
3097        });
3098    });
3099
3100    $("#free-price-modal-email").blur(function (e) {
3101        $("#free-price-modal-email-container").addClass("was-validated");
3102    });
3103
3104    const freePriceModalForm = $("#free-price-modal-form");
3105    $(freePriceModalForm).submit(function (e) {
3106        e.preventDefault();
3107
3108        if (freePriceModalForm[0].checkValidity() === false) {
3109            $("#free-price-modal-email-container").addClass("was-validated");
3110            return;
3111        }
3112
3113        $("#free-price-modal-submit-button").prop("disabled", true);
3114
3115        const postData = {
3116            productId: $("#free-price-modal-product-id").val(),
3117            durationInDays: $("#free-price-modal-duration-in-days").val(),
3118            paymentProvider: $("#free-price-modal-payment-provider").val(),
3119            price: $("#free-price-modal-price").val(),
3120            buyerEmail: $("#free-price-modal-email").val(),
3121            nextPrice: $("#free-price-modal-next-price").val(),
3122        };
3123
3124        function handleError(statusCode) {
3125            errorStatusCode = statusCode;
3126            $("#price-error-modal-retry-button").addClass("d-none");
3127            $("#price-error-modal").modal("show");
3128            $('#free-price-modal-submit-button').prop("disabled", false);
3129        }
3130
3131        function handleDuplicateLicenseError() {
3132            $("#duplicate-license-error-modal").modal("show");
3133            $('#free-price-modal-submit-button').prop("disabled", false);
3134        }
3135
3136        function redirect(url) {
3137            window.location.href = addCookiesToQueryParams(url);
3138        }
3139
3140        $.ajax({
3141            url: "/api/subscription/subscribe/",
3142            type: "POST",
3143            data: postData,
3144            success: function (result) {
3145                if (result.error) {
3146                    if (result.error == "Duplicate product") {
3147                        handleDuplicateLicenseError()
3148                    }
3149                    else {
3150                        handleError(result.statusCode);
3151                    }
3152                    return;
3153                }
3154
3155                redirect(result.redirectUrl);
3156            },
3157            error: function (xhr) {
3158                handleError(xhr.status);
3159            }
3160        });
3161    });
3162
3163    $("#price-error-modal-retry-button").click(function (e) {
3164        if (errorStatusCode == 400) {
3165            location.reload();
3166        }
3167        else {
3168            $("#price-error-modal").modal("hide");
3169            $("#price-modal").modal("show");
3170        }
3171    });
3172
3173    var defaultTab = $('#tabbtn-Year');
3174    if (defaultTab.length) {
3175        defaultTab.click();
3176    }
3177    else {
3178        showDuration(null, "other") || showDuration(null, "Year") || showDuration(null, "Month");
3179    }
3180});
3181
3182function showDuration(evt, duration) {
3183    // Declare all variables
3184    var i, tabcontent, tablinks;
3185
3186    // Get all elements with class="tabcontent" and hide them
3187    tabcontent = document.getElementsByClassName("duration-tabcontent");
3188    for (i = 0; i < tabcontent.length; i++) {
3189        tabcontent[i].style.display = "none";
3190    }
3191
3192    // Get all elements with class="tablinks" and remove the class "active"
3193    tablinks = document.getElementsByClassName("duration-tablinks");
3194    for (i = 0; i < tablinks.length; i++) {
3195        tablinks[i].className = tablinks[i].className.replace(" active", "");
3196    }
3197
3198    // Show the current tab, and add an "active" class to the button that opened the tab
3199    if (evt) {
3200        evt.target.className += " active";
3201    }
3202
3203    var card = $('#duration-' + duration)
3204    if (card.length) {
3205        card.css("display", "flex");
3206        return true;
3207    }
3208    else {
3209        return false;
3210    }
3211}
3212
3213function resetPaymentModal() {
3214    // Explicitly clear hidden fields and dynamic data
3215    document.getElementById('price-modal-product-name').value = '';
3216    document.getElementById('price-modal-product-id').value = '';
3217    document.getElementById('price-modal-price-usd').value = '';
3218
3219    // Reset the selected payment method to the first option (or none)
3220    const firstRadio = document.querySelector('input[name="paymentProvider"]:first-of-type');
3221    if (firstRadio) {
3222        firstRadio.checked = true;
3223    }
3224
3225    // Reset GTM attributes
3226    const submitBtn = document.getElementById('price-modal-submit-button');
3227    const cancelBtn = document.getElementById('price-modal-cancel-button');
3228    if (submitBtn) submitBtn.setAttribute('data-gtm-plan', '');
3229    if (cancelBtn) cancelBtn.setAttribute('data-gtm-plan', '');
3230
3231    // Clear displayed prices for payment methods
3232    document.querySelectorAll('.buy-form-element-payment-option-price').forEach(el => {
3233        el.textContent = '';
3234        el.setAttribute('data-price', '');
3235    });
3236}
3237
3238function resetFreePaymentModal() {
3239    $("#free-price-modal-product-name").val("");
3240    $("#free-price-modal-product-id").val("");
3241    $("#free-price-modal-price").val("");
3242    $("#free-price-modal-email").val("");
3243    $("#free-price-modal-duration-in-days").val("");
3244    $("#free-price-modal-payment-provider").val("");
3245    $("#free-price-modal-next-price").val("");
3246}
3247
3248function resetFreePaymentModal() {
3249    $("#free-price-modal-product-name").val("");
3250    $("#free-price-modal-product-id").val("");
3251    $("#free-price-modal-price").val("");
3252    $("#free-price-modal-email").val("");
3253    $("#free-price-modal-duration-in-days").val("");
3254    $("#free-price-modal-payment-provider").val("");
3255    $("#free-price-modal-next-price").val("");
3256    $("#free-price-modal-is-trial").val("");
3257}
3258
3259function resetSubscriptionPaymentModal() {
3260    const form = $("#subscription-price-modal-form");
3261    form[0].reset();
3262
3263    $("#subscription-product-name").text("");
3264    $("#subscription-product-description").text("");
3265    $("#subscription-price-modal-product-cost").text("");
3266    $("#subscription-price-modal-email-container").removeClass("was-validated")
3267
3268    $("#subscription-license-agreement").attr('href', "https://zennolab.com/en/subscriptionterms/");
3269    $("#subscription-price-modal-product-cost + .additional-text > #subscription-duration").text("");
3270}
3271</script>
3271
3272        </div>
3273    </section>
3274
3275    <section id="guarantee" class="guarantee-section">
3276        <div class="container">
3277            <img class="mb-4" src="/img/section-guarantee/icon-guarantee.svg" alt="guarantee" loading="lazy" width="70" height="70" />
3278            <h2 class="mb-4">
3279                Warranty
3280            </h2>
3281            <p class="p-subheading">
3282                If you don't like the app, you will get a
3283refund* <br class="d-none d-md-inline"/>
3284for&nbsp;any reason or no reason within&nbsp;14 days
3285following&nbsp;the purchase&nbsp;date.</br>
3286<span class="guarantee-footnote">* - except cryptocurrency payments</span>
3287            </p>
3288        </div>
3289    </section>
3290
3291    <section id="faq" class="faq-section">
3292        <div class="container">
3293            <h2 class="mb-5">
3294                FAQ
3295            </h2>
3296
3297            <div class="row justify-content-center">
3298                <div class="col-lg-10 col-12">
3299                    <div class="card card-lg faq-card">
3300                        <div class="accordion accordion-flush"
3301                             id="faq-accordion">
3302                            <div class="card faq-card-item">
3303                                <div class="card-header">
3304                                    <button class="collapsed"
3305                                            type="button"
3306                                            data-toggle="collapse"
3307                                            data-target="#collapse-faq-item-1"
3308                                            aria-expanded="false">
3309                                        Will I be able to perform my tasks
3310using ZennoPoster?
3311                                    </button>
3312                                </div>
3313                                <div id="collapse-faq-item-1"
3314                                     class="collapse"
3315                                     data-parent="#faq-accordion">
3316                                    <div class="faq-card-body">
3317                                        <p class="p-text text-left">
3318                                            If you can manually perform
3319your task in a&nbsp;standard
3320browser, it means that you
3321will be able to automate
3322and&nbsp;repeat it
3323in&nbsp;ZennoPoster.
3324                                        </p>
3325                                    </div>
3326                                </div>
3327                            </div>
3328
3329                                <div class="card faq-card-item">
3330                                    <div class="card-header">
3331                                        <button class="collapsed"
3332                                                type="button"
3333                                                data-toggle="collapse"
3334                                                data-target="#collapse-faq-ai-1"
3335                                                aria-expanded="false">
3336                                            Do I need my own OpenAI or Claude API key to use the AI in ZennoPoster?
3337                                        </button>
3338                                    </div>
3339                                    <div id="collapse-faq-ai-1"
3340                                         class="collapse"
3341                                         data-parent="#faq-accordion">
3342                                        <div class="faq-card-body">
3343                                            <p class="p-text text-left">
3344                                                No. The built-in Free ZP LLM model works right after installation: you get a free daily limit, and token packages can be purchased in your personal area. Your own keys from supported providers can be connected as well.
3345                                            </p>
3346                                        </div>
3347                                    </div>
3348                                </div>
3349                                <div class="card faq-card-item">
3350                                    <div class="card-header">
3351                                        <button class="collapsed"
3352                                                type="button"
3353                                                data-toggle="collapse"
3354                                                data-target="#collapse-faq-ai-2"
3355                                                aria-expanded="false">
3356                                            What can the AI Agent action in ZennoPoster do?
3357                                        </button>
3358                                    </div>
3359                                    <div id="collapse-faq-ai-2"
3360                                         class="collapse"
3361                                         data-parent="#faq-accordion">
3362                                        <div class="faq-card-body">
3363                                            <p class="p-text text-left">
3364                                                You set a goal in plain words — the agent drives the task browser on its own: finds elements, clicks, types, reacts to page changes. Steps, time and budget are limited by settings, and the whole reasoning is written to the task log.
3365                                            </p>
3366                                        </div>
3367                                    </div>
3368                                </div>
3369                                <div class="card faq-card-item">
3370                                    <div class="card-header">
3371                                        <button class="collapsed"
3372                                                type="button"
3373                                                data-toggle="collapse"
3374                                                data-target="#collapse-faq-ai-4"
3375                                                aria-expanded="false">
3376                                            Is it safe to give the AI agent access to the browser?
3377                                        </button>
3378                                    </div>
3379                                    <div id="collapse-faq-ai-4"
3380                                         class="collapse"
3381                                         data-parent="#faq-accordion">
3382                                        <div class="faq-card-body">
3383                                            <p class="p-text text-left">
3384                                                The agent works only inside your task browser and within the limits you set. Every step is visible in the log, API access is protected by scoped keys, and risky actions require separate permission.
3385                                            </p>
3386                                        </div>
3387                                    </div>
3388                                </div>
3389
3390                            <div class="card faq-card-item">
3391                                <div class="card-header">
3392                                    <button class="collapsed"
3393                                            type="button"
3394                                            data-toggle="collapse"
3395                                            data-target="#collapse-faq-item-2"
3396                                            aria-expanded="false">
3397                                        How can I utilize ZennoPoster
3398in my domain?
3399                                    </button>
3400                                </div>
3401                                <div id="collapse-faq-item-2"
3402                                     class="collapse"
3403                                     data-parent="#faq-accordion">
3404                                    <div class="faq-card-body">
3405                                        <p class="p-text text-left">
3406                                            ZennoPoster is perfect
3407for
3408repeated tasks, where
3409you need
3410intense user engagement (
3411for instance, information collection from
3412sites, registration on
3413sites, reporting
3414etc.).
3415                                        </p>
3416                                        <p class="p-text text-left mt-3">
3417                                            Let's review
3418some examples of
3419how users
3420utilize our app.
3421                                        </p>
3422                                        <ul class="mt-2 mb-0">
3423                                            <li class="faq-li">
3424                                                SEO professionals: parsing of
3425search results,
3426site position monitoring,
3427competitor analysis.
3428                                            </li>
3429                                            <li class="faq-li">
3430                                                SMM managers: competitor
3431and community analysis,
3432search of the best advertising
3433platforms, parsing of
3434viral content.
3435                                            </li>
3436                                            <li class="faq-li">
3437                                                CPA professionals:
3438auto correction of rates in
3439teaser networks and
3440contextual ads,
3441bulk ad
3442creation, collection of
3443statistics data.
3444                                            </li>
3445                                            <li class="faq-li">
3446                                                Site or
3447web store owners:
3448creating activities
3449on&nbsp;sites,
3450content auto posting
3451from&nbsp;other resources,
3452parsing and competitor
3453price monitoring.
3454                                            </li>
3455                                            <li class="faq-li">
3456                                                Novice developers:
3457quick bot creation
3458for&nbsp;the purposes of idea
3459approbation
3460without&nbsp;digging
3461into&nbsp;scripts
3462and queries.
3463                                            </li>
3464                                            <li class="faq-li">
3465                                                QA: testing
3466web pages (HTML, CSS and
3467JS), API testing.
3468                                            </li>
3469                                            <li class="faq-li">
3470                                                Freelancers:
3471automated search
3472of new customers.
3473                                            </li>
3474                                        </ul>
3475                                        <p class="p-text text-left mt-3">
3476                                            If you don't find your name
3477in&nbsp;this list, please
3478don't worry — just
3479send a message to
3480                                            <a class="faq-a"
3481                                               href="https://helpdesk.zennolab.com/en-us
3481/"
3482                                               target="_blank"
3483                                               data-gtm-id="ask-support"
3484                                               data-gtm-position="faq-section">
3485                                                our support service
3486                                            </a>
3487                                            and we will be happy to let you
3488know how ZennoPoster can
3489help to achieve your specific goals!
3490                                        </p>
3491                                    </div>
3492                                </div>
3493                            </div>
3494
3495                            <div class="card faq-card-item">
3496                                <div class="card-header">
3497                                    <button class="collapsed"
3498                                            type="button"
3499                                            data-toggle="collapse"
3500                                            data-target="#collapse-faq-item-3"
3501                                            aria-expanded="false">
3502                                        I'm in doubt whether the app
3503is suitable for my specific tasks.
3504Can I get a refund?
3505                                    </button>
3506                                </div>
3507                                <div id="collapse-faq-item-3"
3508                                     class="collapse"
3509                                     data-parent="#faq-accordion">
3510                                    <div class="faq-card-body">
3511                                        <p class="p-text text-left">
3512                                            Yes. We offer refund within&nbsp;14 days following&nbsp;the purchase date (except cryptocurrency payments).
3513                                        </p>
3514                                    </div>
3515                                </div>
3516                            </div>
3517
3518                            <div class="card faq-card-item">
3519                                <div class="card-header">
3520                                    <button class="collapsed"
3521                                            type="button"
3522                                            data-toggle="collapse"
3523                                            data-target="#collapse-faq-item-4"
3524                                            aria-expanded="false">
3525                                        What does "the number of
3526PCs" mean and&nbsp;how is it
3527different from&nbsp;"copies
3528running in parallel"?
3529                                    </button>
3530                                </div>
3531                                <div id="collapse-faq-item-4"
3532                                     class="collapse"
3533                                     data-parent="#faq-accordion">
3534                                    <div class="faq-card-body">
3535                                        <p class="p-text text-left">
3536                                            For the purposes of&nbsp;convenience
3537you may
3538install Standard
3539and&nbsp;Professional versions of
3540the app to&nbsp;several
3541PCs,
3542however&nbsp;you can only
3543run it on one
3544PC at a time. This limitation
3545doesn't&nbsp;concern
3546&nbsp;ProjectMaker. You
3547may create and
3548debug templates even
3549on&nbsp;all PCs
3550in parallel.
3551                                        </p>
3552                                    </div>
3553                                </div>
3554                            </div>
3555
3556
3557                            <div class="card faq-card-item">
3558                                <div class="card-header">
3559                                    <button class="collapsed"
3560                                            type="button"
3561                                            data-toggle="collapse"
3562                                            data-target="#collapse-faq-item-6"
3563                                            aria-expanded="false">
3564                                        Can I install the app to
3565virtual machines?
3566                                    </button>
3567                                </div>
3568                                <div id="collapse-faq-item-6"
3569                                     class="collapse"
3570                                     data-parent="#faq-accordion">
3571                                    <div class="faq-card-body">
3572                                        <p class="p-text text-left">
3573                                            Yes. Nearly for&nbsp;everything
3574except cloud platforms, since
3575the app is bound
3576to&nbsp;PC
3577hardware.
3578                                        </p>
3579                                    </div>
3580                                </div>
3581                            </div>
3582                            
3583                            <div class="card faq-card-item">
3584                                <div class="card-header">
3585                                    <button class="collapsed"
3586                                            type="button"
3587                                            data-toggle="collapse"
3588                                            data-target="#collapse-faq-item-7"
3589                                            aria-expanded="false">
3590                                        Can I purchase the app
3591at a lower price during&nbsp;a promotion period,
3592and&nbsp;then resell it when the
3593promotion expires?
3594                                    </button>
3595                                </div>
3596                                <div id="collapse-faq-item-7"
3597                                     class="collapse"
3598                                     data-parent="#faq-accordion">
3599                                    <div class="faq-card-body">
3600                                        <p class="p-text text-left">
3601                                            No. Reselling of the app is
3602strictly prohibited and may lead
3603to&nbsp;banning of your
3604account.
3605                                        </p>
3606                                    </div>
3607                                </div>
3608                            </div>
3609                            <div class="card faq-card-item">
3610                                <div class="card-header">
3611                                    <button class="collapsed"
3612                                            type="button"
3613                                            data-toggle="collapse"
3614                                            data-target="#collapse-faq-item-8"
3615                                            aria-expanded="false">
3616                                        Can I pay by bank transfer?
3617                                    </button>
3618                                </div>
3619                                <div id="collapse-faq-item-8"
3620                                     class="collapse"
3621                                     data-parent="#faq-accordion">
3622                                    <div class="faq-card-body">
3623                                        <p class="p-text text-left">
3624                                            Yes, it’s possible. To receive an invoice, please email [email protected] with:
3625                                        </p>
3626                                        <ul class="mt-2 mb-0">
3627                                            <li class="faq-li">
3628                                                A list of the products you’d like to purchase and the total order amount.
3629                                            </li>
3630                                            <li class="faq-li">
3631                                                Your company details (billing information) for issuing the invoice.
3632                                            </li>
3633                                        </ul>
3634                                    </div>
3635                                </div>
3636                            </div>
3637                        </div>
3638                    </div>
3639                </div>
3640            </div>
3641        </div>
3642    </section>
3643
3644    <section id="instructions" class="faq-section">
3645        <div class="container">
3646            <h2 class="mb-5">
3647                Instructions
3648            </h2>
3649            <div class="row justify-content-center">
3650                <div class="col-lg-5 col-md-6 col-12 mb-4 mb-md-0 pr-md-3">
3651                    <a href="https://docs.zennolab.com/en/zennoposter/category/installing-and-removing-the-program"
3652                       target="_blank"
3653                       class="instructions-link">
3654                        <img src="/img/pages-demo/icon_install.svg?v=4" alt="" width="24" height="24" class="mr-2" />
3655                        Installation Guide
3656                    </a>
3657                </div>
3658                <div class="col-lg-5 col-md-6 col-12 pl-md-3">
3659                    <a href="https://docs.zennolab.com/en/zennoposter/operating-instructions"
3660                       target="_blank"
3661                       class="instructions-link">
3662                        <img src="/img/pages-demo/icon_manual.svg?v=2" alt="" width="24" height="24" class="mr-2" />
3663                        User Guide
3664                    </a>
3665                </div>
3666            </div>
3667        </div>
3668    </section>
3669
3670    <section id="try" class="try-section">
3671        <div class="container">
3672            <h2 class="try-h2">
3673                Create your first bot today — <br class="d-none d-lg-inline" /> now with AI
3674            </h2>
3675            <div class="row justify-content-center">
3676                <a class="main-button-primary try-button mr-md-3 mr-0 mb-md-0 mb-4"
3677                   href="#price-cards"
3678                   data-gtm-id="anchor-buy"
3679                   data-gtm-position="try-section">
3680                    Try now
3681                </a>
3682                <a href="https://helpdesk.zennolab.com/en-us/"
3683                   target="_blank"
3684                   class="main-button-secondary try-button"
3685                   data-gtm-id="ask-support"
3686                   data-gtm-position="try-section">
3687                    Ask a question
3688                </a>
3689            </div>
3690        </div>
3691    </section>
3692</main>
3693
3694
3695        <footer b-s9w08ipvnq id="footer">
3696            <div b-s9w08ipvnq>
3697                <div b-s9w08ipvnq class="container d-flex justify-content-between flex-lg-row flex-column p-0">
3698                    <div b-s9w08ipvnq class="d-flex flex-lg-row flex-column align-items-center mb-lg-0 mb-3">
3699                        <a b-s9w08ipvnq href=/en/products/zennoposter/
3700                           class="footer-product-link ml-0">
3701                            ZennoPoster
3702                        </a>
3703                        <a b-s9w08ipvnq href=https://capmonster.cloud/en/
3704                           target="_blank"
3705                           class="footer-product-link">
3706                            CapMonster Cloud
3707                        </a>
3708                        <a b-s9w08ipvnq href=/en/products/zennodroid/
3709                           class="footer-product-link">
3710                            ZennoDroid
3711                        </a>
3712                        <a b-s9w08ipvnq href=/en/products/capmonster/
3713                           class="footer-product-link">
3714                            CapMonster
3715                        </a>
3716                        <a b-s9w08ipvnq href=/en/products/zennoproxychecker/
3717                           class="footer-product-link mb-lg-0 mb-2">
3718                            ZennoProxyChecker
3719                        </a>
3720                        <a b-s9w08ipvnq href=/en/products/zennobrowser/
3721                           class="footer-product-link mb-lg-0 mb-2">
3722                            ZennoBrowser
3723                        </a>
3724                    </div>
3725                    <div b-s9w08ipvnq class="ml-lg-3 ml-0 d-flex flex-lg-row flex-column align-items-center">
3726                        <a b-s9w08ipvnq class="footer-link"
3727                           href="https://helpdesk.zennolab.com/en-us/"
3728                           target="_blank">
3729                            <img class="mr-2" src="/img/footer/icon-support.svg" alt="support logo" width="16" height="16" />
3730                            Support
3731                        </a>
3732                        <a b-s9w08ipvnq class="footer-link"
3733                           href="https://zenno.club/discussion/"
3734                           target="_blank">
3735                            <img class="mr-2" src="/img/footer/icon-forum.svg" alt="club logo" width="16" height="16" />
3736                            Club
3737                        </a>
3738                        <a b-s9w08ipvnq class="footer-link"
3739                           href="https://account.zennolab.com/"
3740                           target="_blank">
3741                            <img class="mr-2" src="/img/footer/icon-account.svg" alt="account logo" width="16" height="16" />
3742                            User profile
3743                        </a>
3744                    </div>
3745                </div>
3746            </div>
3747
3748            <div b-s9w08ipvnq>
3749                <div b-s9w08ipvnq class="container d-flex justify-content-between flex-column-reverse flex-lg-row p-0">
3750                    <div b-s9w08ipvnq class="d-flex align-items-center justify-content-center mt-3 mt-lg-0">
3751                        <img src="/img/footer/mark-zennolab-gray.svg" alt="ZennoLab logo" width="20" height="20" />
3752                        <p b-s9w08ipvnq class="footer-p">
3753                            ZennoLab.com © 2008&ndash;2026.
3754                            <span b-s9w08ipvnq class="footer-price-without-vat">Price without VAT</span>
3755                        </p>
3756                    </div>
3757                    <div b-s9w08ipvnq class="d-flex flex-lg-row flex-column align-items-center">
3758                        <a b-s9w08ipvnq href="https://docs.zennolab.com/en/"
3759                           class="footer-link"
3760                           target="_blank">
3761                            <img class="mr-2" src="/img/footer/icon-license.svg" alt="documentation logo" width="16" height="16" />
3762                            Documentation
3763                        </a>
3764                        <a b-s9w08ipvnq href=/en/terms-of-service/
3765                           class="footer-link">
3766                            <img class="mr-2" src="/img/footer/icon-license.svg" alt="license agreement logo" width="16" height="16" />
3767                            License Agreement
3768                        </a>
3769                        <a b-s9w08ipvnq href=/en/contacts/
3770                           class="footer-link">
3771                            <img class="mr-2" src="/img/footer/icon-contacts.svg" alt="contacts logo" width="16" height="16" />
3772                            Contacts
3773                        </a>
3774                        <a b-s9w08ipvnq href=/en/career/
3775                           class="footer-link">
3776                            <img class="mr-2" src="/img/footer/icon-career.svg" alt="career logo" width="16" height="16" />
3777                            Careers
3778                        </a>
3779                    </div>
3780                </div>
3781            </div>
3782        </footer>
3783    </div>
3784
3785    
3785<script src="/lib/popper/popper.min.js?v=2fyk63mX98e9MpJSsJuipF6X3qNXMNXschXLt9Yqw6s"></script>
3785
3786    
3786<script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js?v=fgLAgv7fyCGopR_gBNq2iW3ZKIdqIcyshnUULC4vex8"></script>
3786
3787    
3787<script src="/js/common.js?v=GmWke3Pbvz2gjqx1xIuoTOyyM1U70bKUpW9Yigx-m6U"></script>
3787
3788
3789    
3789<script>(function(d,a){function c(){var b=d.createElement("script");b.async=!0;b.type="text/javascript";b.src=a._settings.messengerUrl;b.crossOrigin="anonymous";var c=d.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c)}window.kayako=a;a.readyQueue=[];a.newEmbedCode=!0;a.ready=function(b){a.readyQueue.push(b)};a._settings={apiUrl:"https://zennolablk.kayako.com/api/v1",messengerUrl:"https://zennolablk.kayakocdn.com/messenger",realtimeUrl:"wss://kre.kayako.net/socket"};window.attachEvent?window.attachEvent("onload",c):window.addEventListener("load",c,!1)})(document,window.kayako||{});</script>
3789
3790    
3790<script type="text/javascript">
3791        setTimeout(function () {
3792            kayako.ready(function () {
3793            kayako.config = {
3794                forceLocale: "en",
3795            }
3796            })
3797        })
3798    </script>
3798
3799
3800    
3801    
3801<script src="/js/zoom-photo-demonstration.js?v=25KXiD5bn-z2QDGN8hvN-284WhFjm9snRNoIYnVE8Mo"></script>
3801
3802
3803</body>
3804</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.