if (typeof rvAgentPlayer !== 'undefined') { throw new Error('ResponsiveVoice Website Agent is already running'); } var rvAgentPlayer = { version : 1 }; var rvApiKey = 'CzUVF0Bw'; var rvApiEndpoint = 'https://texttospeech.responsivevoice.org/v1/text:synthesize'; if (typeof responsiveVoice === 'undefined') { /* ResponsiveVoice JS v1.8.4 (c) 2015-2025 ResponsiveVoice License: https://responsivevoice.org/license */ 'use strict';Array.from||(Array.from=function(){var w=Object.prototype.toString,z=function(x){return typeof x==="function"||w.call(x)==="[object Function]"};return function(x){var u=Object(x);if(x==null)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a=arguments.length>1?arguments[1]:void 0,q;if(typeof a!=="undefined"){if(!z(a))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(q=arguments[2])}var r= Number(u.length);r=isNaN(r)?0:r!==0&&isFinite(r)?(r>0?1:-1)*Math.floor(Math.abs(r)):r;r=Math.min(Math.max(r,0),9007199254740991);for(var A=z(this)?Object(new this(r)):Array(r),b=0,c;b-1;a.is_safari=navigator.userAgent.indexOf("Safari")>-1;a.is_chrome&&a.is_safari&&(a.is_safari=!1);a.is_opera=!!window.opera||navigator.userAgent.indexOf(" OPR/")>=0;a.is_android=navigator.userAgent.toLowerCase().indexOf("android")>-1;a.iOS_initialized=!1;a.iOS9_initialized=!1;a.iOS10_initialized=!1;a.iOS11_initialized=!1;a.cache_ios_voices=[{name:"he-IL",voiceURI:"he-IL",lang:"he-IL"},{name:"th-TH",voiceURI:"th-TH",lang:"th-TH"},{name:"pt-BR",voiceURI:"pt-BR", lang:"pt-BR"},{name:"sk-SK",voiceURI:"sk-SK",lang:"sk-SK"},{name:"fr-CA",voiceURI:"fr-CA",lang:"fr-CA"},{name:"ro-RO",voiceURI:"ro-RO",lang:"ro-RO"},{name:"no-NO",voiceURI:"no-NO",lang:"no-NO"},{name:"fi-FI",voiceURI:"fi-FI",lang:"fi-FI"},{name:"pl-PL",voiceURI:"pl-PL",lang:"pl-PL"},{name:"de-DE",voiceURI:"de-DE",lang:"de-DE"},{name:"nl-NL",voiceURI:"nl-NL",lang:"nl-NL"},{name:"id-ID",voiceURI:"id-ID",lang:"id-ID"},{name:"tr-TR",voiceURI:"tr-TR",lang:"tr-TR"},{name:"it-IT",voiceURI:"it-IT",lang:"it-IT"}, {name:"pt-PT",voiceURI:"pt-PT",lang:"pt-PT"},{name:"fr-FR",voiceURI:"fr-FR",lang:"fr-FR"},{name:"ru-RU",voiceURI:"ru-RU",lang:"ru-RU"},{name:"es-MX",voiceURI:"es-MX",lang:"es-MX"},{name:"zh-HK",voiceURI:"zh-HK",lang:"zh-HK"},{name:"sv-SE",voiceURI:"sv-SE",lang:"sv-SE"},{name:"hu-HU",voiceURI:"hu-HU",lang:"hu-HU"},{name:"zh-TW",voiceURI:"zh-TW",lang:"zh-TW"},{name:"es-ES",voiceURI:"es-ES",lang:"es-ES"},{name:"zh-CN",voiceURI:"zh-CN",lang:"zh-CN"},{name:"nl-BE",voiceURI:"nl-BE",lang:"nl-BE"},{name:"en-GB", voiceURI:"en-GB",lang:"en-GB"},{name:"ar-SA",voiceURI:"ar-SA",lang:"ar-SA"},{name:"ko-KR",voiceURI:"ko-KR",lang:"ko-KR"},{name:"cs-CZ",voiceURI:"cs-CZ",lang:"cs-CZ"},{name:"en-ZA",voiceURI:"en-ZA",lang:"en-ZA"},{name:"en-AU",voiceURI:"en-AU",lang:"en-AU"},{name:"da-DK",voiceURI:"da-DK",lang:"da-DK"},{name:"en-US",voiceURI:"en-US",lang:"en-US"},{name:"en-IE",voiceURI:"en-IE",lang:"en-IE"},{name:"hi-IN",voiceURI:"hi-IN",lang:"hi-IN"},{name:"el-GR",voiceURI:"el-GR",lang:"el-GR"},{name:"ja-JP",voiceURI:"ja-JP", lang:"ja-JP"}];a.cache_ios9_voices=[{name:"Maged",voiceURI:"com.apple.ttsbundle.Maged-compact",lang:"ar-SA",localService:!0,"default":!0},{name:"Zuzana",voiceURI:"com.apple.ttsbundle.Zuzana-compact",lang:"cs-CZ",localService:!0,"default":!0},{name:"Sara",voiceURI:"com.apple.ttsbundle.Sara-compact",lang:"da-DK",localService:!0,"default":!0},{name:"Anna",voiceURI:"com.apple.ttsbundle.Anna-compact",lang:"de-DE",localService:!0,"default":!0},{name:"Melina",voiceURI:"com.apple.ttsbundle.Melina-compact", lang:"el-GR",localService:!0,"default":!0},{name:"Karen",voiceURI:"com.apple.ttsbundle.Karen-compact",lang:"en-AU",localService:!0,"default":!0},{name:"Daniel",voiceURI:"com.apple.ttsbundle.Daniel-compact",lang:"en-GB",localService:!0,"default":!0},{name:"Moira",voiceURI:"com.apple.ttsbundle.Moira-compact",lang:"en-IE",localService:!0,"default":!0},{name:"Samantha (Enhanced)",voiceURI:"com.apple.ttsbundle.Samantha-premium",lang:"en-US",localService:!0,"default":!0},{name:"Samantha",voiceURI:"com.apple.ttsbundle.Samantha-compact", lang:"en-US",localService:!0,"default":!0},{name:"Tessa",voiceURI:"com.apple.ttsbundle.Tessa-compact",lang:"en-ZA",localService:!0,"default":!0},{name:"Monica",voiceURI:"com.apple.ttsbundle.Monica-compact",lang:"es-ES",localService:!0,"default":!0},{name:"Paulina",voiceURI:"com.apple.ttsbundle.Paulina-compact",lang:"es-MX",localService:!0,"default":!0},{name:"Satu",voiceURI:"com.apple.ttsbundle.Satu-compact",lang:"fi-FI",localService:!0,"default":!0},{name:"Amelie",voiceURI:"com.apple.ttsbundle.Amelie-compact", lang:"fr-CA",localService:!0,"default":!0},{name:"Thomas",voiceURI:"com.apple.ttsbundle.Thomas-compact",lang:"fr-FR",localService:!0,"default":!0},{name:"Carmit",voiceURI:"com.apple.ttsbundle.Carmit-compact",lang:"he-IL",localService:!0,"default":!0},{name:"Lekha",voiceURI:"com.apple.ttsbundle.Lekha-compact",lang:"hi-IN",localService:!0,"default":!0},{name:"Mariska",voiceURI:"com.apple.ttsbundle.Mariska-compact",lang:"hu-HU",localService:!0,"default":!0},{name:"Damayanti",voiceURI:"com.apple.ttsbundle.Damayanti-compact", lang:"id-ID",localService:!0,"default":!0},{name:"Alice",voiceURI:"com.apple.ttsbundle.Alice-compact",lang:"it-IT",localService:!0,"default":!0},{name:"Kyoko",voiceURI:"com.apple.ttsbundle.Kyoko-compact",lang:"ja-JP",localService:!0,"default":!0},{name:"Yuna",voiceURI:"com.apple.ttsbundle.Yuna-compact",lang:"ko-KR",localService:!0,"default":!0},{name:"Ellen",voiceURI:"com.apple.ttsbundle.Ellen-compact",lang:"nl-BE",localService:!0,"default":!0},{name:"Xander",voiceURI:"com.apple.ttsbundle.Xander-compact", lang:"nl-NL",localService:!0,"default":!0},{name:"Nora",voiceURI:"com.apple.ttsbundle.Nora-compact",lang:"no-NO",localService:!0,"default":!0},{name:"Zosia",voiceURI:"com.apple.ttsbundle.Zosia-compact",lang:"pl-PL",localService:!0,"default":!0},{name:"Luciana",voiceURI:"com.apple.ttsbundle.Luciana-compact",lang:"pt-BR",localService:!0,"default":!0},{name:"Joana",voiceURI:"com.apple.ttsbundle.Joana-compact",lang:"pt-PT",localService:!0,"default":!0},{name:"Ioana",voiceURI:"com.apple.ttsbundle.Ioana-compact", lang:"ro-RO",localService:!0,"default":!0},{name:"Milena",voiceURI:"com.apple.ttsbundle.Milena-compact",lang:"ru-RU",localService:!0,"default":!0},{name:"Laura",voiceURI:"com.apple.ttsbundle.Laura-compact",lang:"sk-SK",localService:!0,"default":!0},{name:"Alva",voiceURI:"com.apple.ttsbundle.Alva-compact",lang:"sv-SE",localService:!0,"default":!0},{name:"Kanya",voiceURI:"com.apple.ttsbundle.Kanya-compact",lang:"th-TH",localService:!0,"default":!0},{name:"Yelda",voiceURI:"com.apple.ttsbundle.Yelda-compact", lang:"tr-TR",localService:!0,"default":!0},{name:"Ting-Ting",voiceURI:"com.apple.ttsbundle.Ting-Ting-compact",lang:"zh-CN",localService:!0,"default":!0},{name:"Sin-Ji",voiceURI:"com.apple.ttsbundle.Sin-Ji-compact",lang:"zh-HK",localService:!0,"default":!0},{name:"Mei-Jia",voiceURI:"com.apple.ttsbundle.Mei-Jia-compact",lang:"zh-TW",localService:!0,"default":!0}];a.cache_ios10_voices=[{name:"Maged",voiceURI:"com.apple.ttsbundle.Maged-compact",lang:"ar-SA"},{name:"Zuzana",voiceURI:"com.apple.ttsbundle.Zuzana-compact", lang:"cs-CZ"},{name:"Sara",voiceURI:"com.apple.ttsbundle.Sara-compact",lang:"da-DK"},{name:"Anna",voiceURI:"com.apple.ttsbundle.Anna-compact",lang:"de-DE"},{name:"Helena",voiceURI:"com.apple.ttsbundle.siri_female_de-DE_compact",lang:"de-DE"},{name:"Martin",voiceURI:"com.apple.ttsbundle.siri_male_de-DE_compact",lang:"de-DE"},{name:"Nikos (Enhanced)",voiceURI:"com.apple.ttsbundle.Nikos-premium",lang:"el-GR"},{name:"Melina",voiceURI:"com.apple.ttsbundle.Melina-compact",lang:"el-GR"},{name:"Nikos",voiceURI:"com.apple.ttsbundle.Nikos-compact", lang:"el-GR"},{name:"Catherine",voiceURI:"com.apple.ttsbundle.siri_female_en-AU_compact",lang:"en-AU"},{name:"Gordon",voiceURI:"com.apple.ttsbundle.siri_male_en-AU_compact",lang:"en-AU"},{name:"Karen",voiceURI:"com.apple.ttsbundle.Karen-compact",lang:"en-AU"},{name:"Daniel (Enhanced)",voiceURI:"com.apple.ttsbundle.Daniel-premium",lang:"en-GB"},{name:"Arthur",voiceURI:"com.apple.ttsbundle.siri_male_en-GB_compact",lang:"en-GB"},{name:"Daniel",voiceURI:"com.apple.ttsbundle.Daniel-compact",lang:"en-GB"}, {name:"Martha",voiceURI:"com.apple.ttsbundle.siri_female_en-GB_compact",lang:"en-GB"},{name:"Moira",voiceURI:"com.apple.ttsbundle.Moira-compact",lang:"en-IE"},{name:"Nicky (Enhanced)",voiceURI:"com.apple.ttsbundle.siri_female_en-US_premium",lang:"en-US"},{name:"Samantha (Enhanced)",voiceURI:"com.apple.ttsbundle.Samantha-premium",lang:"en-US"},{name:"Aaron",voiceURI:"com.apple.ttsbundle.siri_male_en-US_compact",lang:"en-US"},{name:"Fred",voiceURI:"com.apple.speech.synthesis.voice.Fred",lang:"en-US"}, {name:"Nicky",voiceURI:"com.apple.ttsbundle.siri_female_en-US_compact",lang:"en-US"},{name:"Samantha",voiceURI:"com.apple.ttsbundle.Samantha-compact",lang:"en-US"},{name:"Tessa",voiceURI:"com.apple.ttsbundle.Tessa-compact",lang:"en-ZA"},{name:"Monica",voiceURI:"com.apple.ttsbundle.Monica-compact",lang:"es-ES"},{name:"Paulina",voiceURI:"com.apple.ttsbundle.Paulina-compact",lang:"es-MX"},{name:"Satu",voiceURI:"com.apple.ttsbundle.Satu-compact",lang:"fi-FI"},{name:"Amelie",voiceURI:"com.apple.ttsbundle.Amelie-compact", lang:"fr-CA"},{name:"Daniel",voiceURI:"com.apple.ttsbundle.siri_male_fr-FR_compact",lang:"fr-FR"},{name:"Marie",voiceURI:"com.apple.ttsbundle.siri_female_fr-FR_compact",lang:"fr-FR"},{name:"Thomas",voiceURI:"com.apple.ttsbundle.Thomas-compact",lang:"fr-FR"},{name:"Carmit",voiceURI:"com.apple.ttsbundle.Carmit-compact",lang:"he-IL"},{name:"Lekha",voiceURI:"com.apple.ttsbundle.Lekha-compact",lang:"hi-IN"},{name:"Mariska",voiceURI:"com.apple.ttsbundle.Mariska-compact",lang:"hu-HU"},{name:"Damayanti", voiceURI:"com.apple.ttsbundle.Damayanti-compact",lang:"id-ID"},{name:"Alice",voiceURI:"com.apple.ttsbundle.Alice-compact",lang:"it-IT"},{name:"Hattori",voiceURI:"com.apple.ttsbundle.siri_male_ja-JP_compact",lang:"ja-JP"},{name:"Kyoko",voiceURI:"com.apple.ttsbundle.Kyoko-compact",lang:"ja-JP"},{name:"O-ren",voiceURI:"com.apple.ttsbundle.siri_female_ja-JP_compact",lang:"ja-JP"},{name:"Yuna",voiceURI:"com.apple.ttsbundle.Yuna-compact",lang:"ko-KR"},{name:"Ellen",voiceURI:"com.apple.ttsbundle.Ellen-compact", lang:"nl-BE"},{name:"Xander",voiceURI:"com.apple.ttsbundle.Xander-compact",lang:"nl-NL"},{name:"Nora",voiceURI:"com.apple.ttsbundle.Nora-compact",lang:"no-NO"},{name:"Zosia",voiceURI:"com.apple.ttsbundle.Zosia-compact",lang:"pl-PL"},{name:"Luciana",voiceURI:"com.apple.ttsbundle.Luciana-compact",lang:"pt-BR"},{name:"Joana",voiceURI:"com.apple.ttsbundle.Joana-compact",lang:"pt-PT"},{name:"Ioana",voiceURI:"com.apple.ttsbundle.Ioana-compact",lang:"ro-RO"},{name:"Milena",voiceURI:"com.apple.ttsbundle.Milena-compact", lang:"ru-RU"},{name:"Laura",voiceURI:"com.apple.ttsbundle.Laura-compact",lang:"sk-SK"},{name:"Alva",voiceURI:"com.apple.ttsbundle.Alva-compact",lang:"sv-SE"},{name:"Kanya",voiceURI:"com.apple.ttsbundle.Kanya-compact",lang:"th-TH"},{name:"Yelda",voiceURI:"com.apple.ttsbundle.Yelda-compact",lang:"tr-TR"},{name:"Li-mu",voiceURI:"com.apple.ttsbundle.siri_male_zh-CN_compact",lang:"zh-CN"},{name:"Ting-Ting",voiceURI:"com.apple.ttsbundle.Ting-Ting-compact",lang:"zh-CN"},{name:"Yu-shu",voiceURI:"com.apple.ttsbundle.siri_female_zh-CN_compact", lang:"zh-CN"},{name:"Sin-Ji",voiceURI:"com.apple.ttsbundle.Sin-Ji-compact",lang:"zh-HK"},{name:"Mei-Jia",voiceURI:"com.apple.ttsbundle.Mei-Jia-compact",lang:"zh-TW"}];a.cache_ios11_voices=[{name:"Maged",voiceURI:"com.apple.ttsbundle.Maged-compact",lang:"ar-SA"},{name:"Zuzana",voiceURI:"com.apple.ttsbundle.Zuzana-compact",lang:"cs-CZ"},{name:"Sara",voiceURI:"com.apple.ttsbundle.Sara-compact",lang:"da-DK"},{name:"Anna",voiceURI:"com.apple.ttsbundle.Anna-compact",lang:"de-DE"},{name:"Helena",voiceURI:"com.apple.ttsbundle.siri_female_de-DE_compact", lang:"de-DE"},{name:"Martin",voiceURI:"com.apple.ttsbundle.siri_male_de-DE_compact",lang:"de-DE"},{name:"Melina",voiceURI:"com.apple.ttsbundle.Melina-compact",lang:"el-GR"},{name:"Catherine",voiceURI:"com.apple.ttsbundle.siri_female_en-AU_compact",lang:"en-AU"},{name:"Gordon",voiceURI:"com.apple.ttsbundle.siri_male_en-AU_compact",lang:"en-AU"},{name:"Karen",voiceURI:"com.apple.ttsbundle.Karen-compact",lang:"en-AU"},{name:"Arthur",voiceURI:"com.apple.ttsbundle.siri_male_en-GB_compact",lang:"en-GB"}, {name:"Daniel",voiceURI:"com.apple.ttsbundle.Daniel-compact",lang:"en-GB"},{name:"Martha",voiceURI:"com.apple.ttsbundle.siri_female_en-GB_compact",lang:"en-GB"},{name:"Moira",voiceURI:"com.apple.ttsbundle.Moira-compact",lang:"en-IE"},{name:"Aaron",voiceURI:"com.apple.ttsbundle.siri_male_en-US_compact",lang:"en-US"},{name:"Fred",voiceURI:"com.apple.speech.synthesis.voice.Fred",lang:"en-US"},{name:"Nicky",voiceURI:"com.apple.ttsbundle.siri_female_en-US_compact",lang:"en-US"},{name:"Samantha",voiceURI:"com.apple.ttsbundle.Samantha-compact", lang:"en-US"},{name:"Tessa",voiceURI:"com.apple.ttsbundle.Tessa-compact",lang:"en-ZA"},{name:"Monica",voiceURI:"com.apple.ttsbundle.Monica-compact",lang:"es-ES"},{name:"Paulina",voiceURI:"com.apple.ttsbundle.Paulina-compact",lang:"es-MX"},{name:"Satu",voiceURI:"com.apple.ttsbundle.Satu-compact",lang:"fi-FI"},{name:"Amelie",voiceURI:"com.apple.ttsbundle.Amelie-compact",lang:"fr-CA"},{name:"Daniel",voiceURI:"com.apple.ttsbundle.siri_male_fr-FR_compact",lang:"fr-FR"},{name:"Marie",voiceURI:"com.apple.ttsbundle.siri_female_fr-FR_compact", lang:"fr-FR"},{name:"Thomas",voiceURI:"com.apple.ttsbundle.Thomas-compact",lang:"fr-FR"},{name:"Carmit",voiceURI:"com.apple.ttsbundle.Carmit-compact",lang:"he-IL"},{name:"Lekha",voiceURI:"com.apple.ttsbundle.Lekha-compact",lang:"hi-IN"},{name:"Mariska",voiceURI:"com.apple.ttsbundle.Mariska-compact",lang:"hu-HU"},{name:"Damayanti",voiceURI:"com.apple.ttsbundle.Damayanti-compact",lang:"id-ID"},{name:"Alice",voiceURI:"com.apple.ttsbundle.Alice-compact",lang:"it-IT"},{name:"Hattori",voiceURI:"com.apple.ttsbundle.siri_male_ja-JP_compact", lang:"ja-JP"},{name:"Kyoko",voiceURI:"com.apple.ttsbundle.Kyoko-compact",lang:"ja-JP"},{name:"O-ren",voiceURI:"com.apple.ttsbundle.siri_female_ja-JP_compact",lang:"ja-JP"},{name:"Yuna",voiceURI:"com.apple.ttsbundle.Yuna-compact",lang:"ko-KR"},{name:"Ellen",voiceURI:"com.apple.ttsbundle.Ellen-compact",lang:"nl-BE"},{name:"Xander",voiceURI:"com.apple.ttsbundle.Xander-compact",lang:"nl-NL"},{name:"Nora",voiceURI:"com.apple.ttsbundle.Nora-compact",lang:"no-NO"},{name:"Zosia",voiceURI:"com.apple.ttsbundle.Zosia-compact", lang:"pl-PL"},{name:"Luciana",voiceURI:"com.apple.ttsbundle.Luciana-compact",lang:"pt-BR"},{name:"Joana",voiceURI:"com.apple.ttsbundle.Joana-compact",lang:"pt-PT"},{name:"Ioana",voiceURI:"com.apple.ttsbundle.Ioana-compact",lang:"ro-RO"},{name:"Milena",voiceURI:"com.apple.ttsbundle.Milena-compact",lang:"ru-RU"},{name:"Laura",voiceURI:"com.apple.ttsbundle.Laura-compact",lang:"sk-SK"},{name:"Alva",voiceURI:"com.apple.ttsbundle.Alva-compact",lang:"sv-SE"},{name:"Kanya",voiceURI:"com.apple.ttsbundle.Kanya-compact", lang:"th-TH"},{name:"Yelda",voiceURI:"com.apple.ttsbundle.Yelda-compact",lang:"tr-TR"},{name:"Li-mu",voiceURI:"com.apple.ttsbundle.siri_male_zh-CN_compact",lang:"zh-CN"},{name:"Ting-Ting",voiceURI:"com.apple.ttsbundle.Ting-Ting-compact",lang:"zh-CN"},{name:"Yu-shu",voiceURI:"com.apple.ttsbundle.siri_female_zh-CN_compact",lang:"zh-CN"},{name:"Sin-Ji",voiceURI:"com.apple.ttsbundle.Sin-Ji-compact",lang:"zh-HK"},{name:"Mei-Jia",voiceURI:"com.apple.ttsbundle.Mei-Jia-compact",lang:"zh-TW"}];a.systemvoices= null;a.CHARACTER_LIMIT=100;a.VOICESUPPORT_ATTEMPTLIMIT=5;a.voicesupport_attempts=0;a.fallbackMode=!1;a.WORDS_PER_MINUTE=130;a.fallback_audio=null;a.fallback_playbackrate=1;a.def_fallback_playbackrate=a.fallback_playbackrate;a.fallback_audiopool=[];a.msgparameters=null;a.timeoutId=null;a.OnLoad_callbacks=[];a.useTimer=!1;a.utterances=[];a.userInteractionEvents=["mousedown","mouseup","mousewheel","keydown"];a.fallbackBufferLength=5;a.iOS&&(a.fallbackBufferLength=2);var q=null,r=1;a.tstCompiled=function(){return!/param/.test(function(b){})}; a.fallbackServicePath=typeof rvApiEndpoint!="undefined"&&rvApiEndpoint?rvApiEndpoint:"https://code.responsivevoice.org/"+(a.tstCompiled()?"":"develop/")+"getvoice.php";a.default_rv=a.responsivevoices[0];a.debug=!1;a.rvsMapped=!1;a.forcedFallbackMode=!1;a.speechAllowedByUser=!0;a.enableEstimationTimeout=!0;a.analytics={characterCount:0};a.log=function(b){a.debug&&console.log(b)};a.init=function(){a.is_wordpress=x();a.is_bundle=u();typeof rvApiKey=="undefined"&&console.error("ResponsiveVoice missing API key. See https://responsivevoice.org/register?devtools="+ encodeURIComponent(window.location.href));if(a.is_android||a.iOS||a.is_safari)a.useTimer=!0;a.is_opera||typeof speechSynthesis==="undefined"?(console.log("RV: Voice synthesis not supported"),a.enableFallbackMode()):setTimeout(function(){var b=setInterval(function(){var c=window.speechSynthesis.getVoices();c.length!=0||a.systemvoices!=null&&a.systemvoices.length!=0?(console.log("RV: Voice support ready"),a.systemVoicesReady(c),clearInterval(b)):(console.log("Voice support NOT ready"),a.voicesupport_attempts++, a.voicesupport_attempts>a.VOICESUPPORT_ATTEMPTLIMIT&&(clearInterval(b),window.speechSynthesis!=null?a.iOS?(a.iOS11plus?a.systemVoicesReady(a.cache_ios11_voices):a.iOS10?a.systemVoicesReady(a.cache_ios10_voices):a.iOS9?a.systemVoicesReady(a.cache_ios9_voices):a.systemVoicesReady(a.cache_ios_voices),console.log("RV: Voice support ready (cached)")):(console.log("RV: speechSynthesis present but no system voices found"),a.enableFallbackMode()):a.enableFallbackMode()))},100)},100);(a.iOS||a.is_android|| a.is_safari)&&a.enableWindowClickHook();a.Dispatch("OnLoad")};a.systemVoicesReady=function(b){a.systemvoices=b;a.mapRVs();a.OnVoiceReady!=null&&a.OnVoiceReady.call();a.Dispatch("OnReady");window.hasOwnProperty("dispatchEvent")&&window.dispatchEvent(new Event("ResponsiveVoice_OnReady"))};a.enableFallbackMode=function(){a.fallbackMode=!0;a.forcedFallbackMode=!0;console.log("RV: Enabling fallback mode");a.mapRVs();a.OnVoiceReady!=null&&a.OnVoiceReady.call();a.Dispatch("OnReady");window.hasOwnProperty("dispatchEvent")&& window.dispatchEvent(new Event("ResponsiveVoice_OnReady"));a.Dispatch("OnServiceSwitched")};a.getVoices=function(){for(var b=[],c=0;ca.CHARACTER_LIMIT){for(var f=b=w(b);f.length>a.CHARACTER_LIMIT;){e=f.search(/([\u3002:!\u00a1?\u00bf;\(\)\[\]\u2014\u00ab\u00bb\n]+|\.[^0-9]+)/);var l="";if(e==-1||e>=a.CHARACTER_LIMIT)e=f.search(/,[^0-9]+/);if((e==-1||e>=a.CHARACTER_LIMIT)&&f.search(" ")!=-1){var t=f.split(" ");for(e=0;ea.CHARACTER_LIMIT){t[e].length>=a.CHARACTER_LIMIT&&(l+=t[e].substr(0,a.CHARACTER_LIMIT-l.length-1));break}l+=(e!=0?" ":"")+t[e]}}else{if(e==-1||e>=a.CHARACTER_LIMIT)e=a.CHARACTER_LIMIT-1;l=f.substr(0,e+1)}f=f.substr(l.length,f.length-l.length);k.push(l)}f.length>0&&F(f)}else F(b);console.log(k);a.multipartText=k;if(a.checkSpeechAllowed()){a.fallbackMode&&a.fallback_audiopool.length>0&&a.clearFallbackPool();a.msgprofile=g;a.log("Voice picked: "+a.msgprofile.systemvoice.name);a.utterances= [];a.fallbackChunks=[];for(e=0;e1?(f.onend=a.onPartEnd,f.hasOwnProperty("addEventListener")&&f.addEventListener("end",a.onPartEnd)):(f.onend=a.speech_onend,f.hasOwnProperty("addEventListener")&&f.addEventListener("end",a.speech_onend)),f.onerror=d.onerror||function(y){a.log("RV: Unknown Error");a.log(y);y.error==="not-allowed"&& a.speechSynthesisNotAllowedError!==!0&&(a.speechSynthesisNotAllowedError=!0,a.speak(b,c,d))},d.rate=a.validateParameters(d,"rate"),d.pitch=a.validateParameters(d,"pitch"),d.volume=a.validateParameters(d,"volume"),f.onpause=d.onpause,f.onresume=d.onresume,f.onmark=d.onmark,f.onboundary=d.onboundary||a.onboundary,f.pitch=d.pitch!=null?d.pitch:f.pitch,f.rate=a.iOS?(d.rate!=null?d.rate*d.rate:1)*f.rate:(d.rate!=null?d.rate:r)*f.rate,f.volume=d.volume!=null?d.volume:f.volume):(a.log("No Params received for current Utterance"), f.voice=g.systemvoice,d=d||{},f.onend=a.speech_onend,f.onboundary=a.onboundary,f.onerror=function(y){a.log("RV: Unknown Error");a.log(y);y.error==="not-allowed"&&a.speechSynthesisNotAllowedError!==!0&&(a.speechSynthesisNotAllowedError=!0,a.speak(b,c,d))}),a.utterances.push(f),e==0&&(a.currentMsg=f),console.log(f),a.tts_speak(f);else if(a.fallbackMode&&a.getServiceEnabled(a.services.FALLBACK_AUDIO)){h=a.services.FALLBACK_AUDIO;a.fallback_playbackrate=a.def_fallback_playbackrate;f=a.selectBest([g.collectionvoice.pitch, g.systemvoice.pitch,1]);l=a.selectBest([a.iOS9plus?1:null,g.collectionvoice.rate,g.systemvoice.rate,1]);t=a.selectBest([g.collectionvoice.volume,g.systemvoice.volume,1]);if(d!=null){f*=d.pitch!=null?d.pitch:1;l*=d.rate!=null?d.rate:1;t*=d.volume!=null?d.volume:1;var D=d.extraParams||null}f/=2;l/=2;t*=2;f=Math.min(Math.max(f,0),1);l=Math.min(Math.max(l,0),1);t=Math.min(Math.max(t,0),1);var G="?t="+encodeURIComponent(k[e])+"&tl="+(g.collectionvoice.lang||g.systemvoice.lang||"en-US")+"&sv="+(g.collectionvoice.service|| g.systemvoice.service||"")+"&vn="+(g.collectionvoice.voicename||g.systemvoice.voicename||"")+"&pitch="+f.toString()+"&rate="+l.toString()+"&vol="+t.toString();typeof rvApiEndpoint!="undefined"&&rvApiEndpoint&&(G="?text="+encodeURIComponent(k[e])+"&lang="+(g.collectionvoice.lang||g.systemvoice.lang||"en-US")+"&engine="+(g.collectionvoice.service||g.systemvoice.service||"")+"&name="+(g.collectionvoice.voicename||g.systemvoice.voicename||"")+"&pitch="+f.toString()+"&rate="+l.toString()+"&volume="+t.toString()); f=a.fallbackServicePath+G;typeof rvApiKey!="undefined"&&(f+="&key="+rvApiKey);typeof rvApiKey=="undefined"&&a.is_bundle&&(f+="&key=FQ9r4hgY");typeof rvApiKey=="undefined"&&a.is_wordpress&&(f+="&key=HY7lTyiS");g.collectionvoice.gender!==void 0&&(f+="&gender="+g.collectionvoice.gender);D&&(f+="&extraParams="+JSON.stringify(D));a.fallbackChunks.push({text:k[e],url:f,audio:null})}a.fallbackMode&&a.getServiceEnabled(a.services.FALLBACK_AUDIO)&&(a.fallbackChunkIndex=0,a.fallback_startPart());a.log("Service used: "+ h)}else a.scheduledSpeak={text:b,voicename:c,parameters:d}}else console.error("Selected voice does not exist: "+c),a.Dispatch("OnMissingVoiceError",{voice:c})}}else setTimeout(function(){a.speak(b,c,d)},15)};a.startTimeout=function(b,c){var d=a.msgprofile.collectionvoice.timerSpeed;a.msgprofile.collectionvoice.timerSpeed==null&&(d=1);d<=0||(a.timeoutId=setTimeout(c,a.getEstimatedTimeLength(b,d)),a.log("Timeout ID: "+a.timeoutId))};a.checkAndCancelTimeout=function(){a.timeoutId!=null&&(clearTimeout(a.timeoutId), a.timeoutId=null)};a.speech_timedout=function(){a.cancel();a.cancelled=!1;a.speech_onend()};a.speech_onend=function(){a.checkAndCancelTimeout();a.cancelled===!0?a.cancelled=!1:(a.log("on end fired"),a.msgparameters!=null&&a.msgparameters.onend!=null&&a.msgparameters.onendcalled!=1&&(a.log("Speech on end called -"+a.msgtext),a.msgparameters.onendcalled=!0,a.msgparameters.onend()))};a.speech_onstart=function(){if(!a.onstartFired&&(a.onstartFired=!0,a.log("Speech start"),a.enableEstimationTimeout&& a.useTimer&&(a.fallbackMode||a.startTimeout(a.msgtext,a.speech_timedout)),a.msgparameters.onendcalled=!1,a.msgparameters!=null&&a.msgparameters.onstart!=null))a.msgparameters.onstart()};a.fallback_startPart=function(){a.fallback_updateChunksBuffer();a.fallback_audio=a.fallbackChunks[a.fallbackChunkIndex].audio;a.fallback_audio==null?a.log("RV: Fallback Audio is not available"):(function(){var b=a.fallback_audio;a.fallbackChunkIndex==0&&(b.onplaying=function(){a.speech_onstart()});setTimeout(function(){b.playbackRate= a.fallback_playbackrate},50);b.onloadedmetadata=function(){b.playbackRate=a.fallback_playbackrate};var c=function(h){setTimeout(function(){if(h.currentTime==0){a.log("Audio chunk not playing. Trying to recover. Disabling time estimation");a.enableEstimationTimeout=!1;a.checkAndCancelTimeout();h.load();var e=function(){h.play();h.removeEventListener("canplaythrough",e)};h.addEventListener("canplaythrough",e,!1)}},700)};if(b.readyState>=2)b.play(),c(b);else{var d=function(){b.play();b.removeEventListener("canplaythrough", d)};b.addEventListener("canplaythrough",d,!1)}}(),a.fallback_audio.onerror=function(b){function c(){if(this.readyState==this.DONE&&this.status!==200)switch(this.status){case 400:console.error("ResponsiveVoice audio could not be loaded. Invalid parameters.");break;case 403:console.error("ResponsiveVoice invalid API key. See https://responsivevoice.org/register?devtools="+encodeURIComponent(window.location.href));break;default:console.error("ResponsiveVoice audio could not be loaded. There is an issue connecting your browser to the API endpoint.")}} switch(b.target.error.code){case b.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:var d=new XMLHttpRequest;d.open("GET",b.target.src,!0);d.send();d.onreadystatechange=c;break;default:console.error("ResponsiveVoice: an unknown error occurred.")}},a.fallback_audio.addEventListener("ended",a.fallback_finishPart),a.enableEstimationTimeout&&a.useTimer&&a.startTimeout(a.multipartText[a.fallbackChunkIndex],a.fallback_finishPart))};a.isFallbackAudioPlaying=function(){var b;for(b=0;b 0"):b>1.5?console.error("[responsiveVoice.setDefaultRate] rate must be <= 1.5"):r=b};a.mapRVs=function(){if("object"==typeof navigator){var b,c="anguage",d=navigator;var h=(b=d["l"+c+"s"],b&&b.length?b:(c=d["l"+c]||d["browserL"+c]||d["userL"+c])?[c]:c)}else h=void 0;h=h[0];for(b=0;b0){for(var d=a[b+"_callbacks"],h=0;h2)return console.log("ResponsiveVoice: Speech not allowed by user"),!1;c=document.createElement("style");c.innerHTML= '.rvNotification{position:fixed;background-color:#fff;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:400;line-height:1.5;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);z-index:10000;width:100vw;left:0;bottom:0;font-size:1rem;padding-bottom:.5em;padding-right:.5em}.rvButtonRow{padding-right:2em;padding-bottom:1em;text-align:right;font-size:medium}.rvButton{cursor:pointer;display:inline-block;margin-left:1em;padding:.8em 2em;border-radius:3px;font-size:small}.rvButtonAllow{border:none;background-color:#2b8cff;color:#fff}.rvButtonDeny{border:1px solid #2b8cff;color:#2b8cff;background-color:#fff}.rvTextRow{padding-top:1em;padding-bottom:2em}@media (min-width:576px){.rvNotification{width:60vw;left:20vw}}@media (min-width:768px){.rvNotification{width:50vw;left:25vw}}@media (min-width:992px){.rvNotification{width:40vw;left:30vw}}@media (min-width:1200px){.rvNotification{width:30vw;left:35vw}}'; document.body.appendChild(c);a.allowSpeechDiv=document.createElement("div");a.allowSpeechDiv.classList.add("rvNotification");b==void 0&&(b={});a.allowSpeechDiv.innerHTML='
'+(b.urlOverride!=void 0?b.urlOverride:window.location.hostname)+" "+(b.textOverride!=void 0?b.textOverride:"wants to play speech")+'
DENY
ALLOW
'; document.body.appendChild(a.allowSpeechDiv);return!1}return!0};a.fallback_audioPool_getAudio=function(){a.initFallbackPool();a.fallback_audiopool_index>=a.fallback_audiopool.length&&(a.fallback_audiopool_index=0);return a.fallback_audiopool[a.fallback_audiopool_index++]};a.fallback_updateChunksBuffer=function(){for(var b=a.fallbackChunkIndex;b var _wla = _wla || []; _wla.push(['trackPageView']); //_wla.setCountPrerender(true); _wla.push(['enableLinkTracking']); (function() { var u="//ai.learnbrite.com/"; _wla.push(['setTrackerUrl', u+'analytics.php']); _wla.push(['setSiteId', 75]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'analytics.js.php'; s.parentNode.insertBefore(g,s); })(); */ var splitTestEnabled = config.abTesting || false; var splitTest_useGS = (Math.random() < 0.5); function GetRandomMsg(text) { var texts = text.split("|"); return texts[Math.floor(Math.random() * texts.length)]; } function getHiddenProp(){ var prefixes = ['webkit', 'moz', 'ms', 'o']; // if 'hidden' is natively supported just return it if ('hidden' in document) return 'hidden'; // otherwise loop over all the known prefixes until we find one for (var i = 0; i < prefixes.length; i++) { if ((prefixes[i] + 'Hidden') in document) return prefixes[i] + 'Hidden'; } // otherwise it's not supported return null; } function getVisibilityState() { var prefixes = ['webkit', 'moz', 'ms', 'o']; // if 'visibilityState' is natively supported just return it if ('visibilityState' in document) return 'visibilityState'; // otherwise loop over all the known prefixes until we find one for (var i = 0; i < prefixes.length; i++) { if ((prefixes[i] + 'VisibilityState') in document) return prefixes[i] + 'VisibilityState'; } // otherwise it's not supported return null; } function isHidden() { var prop = getHiddenProp(); if (!prop) return false; return document[prop]; } function isPrerendered() { var prop = getVisibilityState(); //console.log(prop); if (!prop) return false; //console.log(document[prop]); if (document[prop] != "prerender") return false; return document[prop]; } console.log("isHidden: " + isHidden()); console.log("Prerender: " + isPrerendered()); //Analytics //Search Message var prerenderUsed = false; if (isPrerendered() && !prerenderUsed) { prerenderUsed = true; setTimeout(function () { if (!splitTestEnabled || (splitTestEnabled && splitTest_useGS)) { var txt = GetRandomMsg(''); if (txt != null && txt != "") { console.log("Launching search message"); responsiveVoice.speak("According to Voicebrite, " + txt, 'Spanish Female'); } } //Search Message Split Test - Impression if (splitTestEnabled) { if (splitTest_useGS) { trackEvent('searchMessage', 'impressionAB', 'true'); } else { trackEvent('searchMessage', 'impressionAB', 'false'); } } else { trackEvent('searchMessage', 'impression'); } }, 1500); } window.addEventListener('load', function() { //We came from prerender var smessInterval = null; if (prerenderUsed) { smessInterval = setInterval(function () { if (!isPrerendered()) { clearInterval(smessInterval); //Search Message Split Test - Impression if (splitTestEnabled) { if (splitTest_useGS) { trackEvent('searchMessage', 'visitAB', 'true'); } else { trackEvent('searchMessage', 'visitAB', 'false'); } } else { trackEvent('searchMessage', 'visit'); } } }, 1000); } console.log("Configuring"); //Speak links var _allLinks = document.getElementsByTagName('a') Array.prototype.forEach.call(_allLinks, function(el) { hoverintent(el, function () { if (config.speakLinks) { //responsiveVoice.cancel(); responsiveVoice.speak(el.textContent, 'Spanish Female'); trackEvent('agentFeature', 'spokenLink'); } }, function () { } ); }); //Speak selected text var selectedText = ""; var last_selectedText = ""; function getSelectionText() { var text = ""; if (window.getSelection) { text = window.getSelection().toString(); } else if (document.selection && document.selection.type != "Control") { // for Internet Explorer 8 and below text = document.selection.createRange().text; } return text; } if (config.speakSelectedText) { attachToElements( document.querySelectorAll("PRE,DIV"), ['mouseup', 'touchend'], onMouseUp); } function attachToElements(elements, events, callback){ if(elements.length > 0){ for(var i = 0; i < elements.length; i++){ events.forEach(function(event){ elements[i].addEventListener(event, function(e){ callback(); }); }); } } } function onMouseUp() { selectedText = getSelectionText(); console.log("Selected text *" + selectedText + "*"); if (selectedText != last_selectedText && selectedText != "") { last_selectedText = selectedText; responsiveVoice.cancel(); // stop anything currently being spoken responsiveVoice.speak(selectedText, 'Spanish Female'); //speak the text as returned by getSelectionText trackEvent('agentFeature', 'highlightText'); } } //Speak welcome message. Will only play if user didn't came from google. var welcomeMessageLaunched = false; if (config.welcomeMessage && (!config.welcomeMessageTime || oneTimeTest("welcomeMessage")) && !isPrerendered() && !prerenderUsed) { welcomeMessageLaunched = true; setTimeout(function () { if (config.text_welcomeMessage != null && config.text_welcomeMessage != "") { console.log("Launching welcome message"); responsiveVoice.speak(GetRandomMsg(config.text_welcomeMessage), 'Spanish Female'); trackEvent('agentFeature', 'welcomeMessage'); } }, 1500); } //Speak welcome message when user came from Google. Won't play if default message played var welcomeMessage2Launched = false; var welcomeMessage2Interval = null; if (!welcomeMessageLaunched && config.welcomeMessage2 && (!config.welcomeMessageTime || oneTimeTest("welcomeMessage2")) && config.text_welcomeMessage2 != null && config.text_welcomeMessage2 != "") { //Wait until we're visible and launch message welcomeMessage2Interval = setInterval(function () { console.log("Welcome Message from Google Waiting"); if (!isPrerendered() && !welcomeMessage2Launched) { console.log("Welcome Message from Google launched"); welcomeMessage2Launched = true; responsiveVoice.speak(GetRandomMsg(config.text_welcomeMessage2), 'Spanish Female'); trackEvent('agentFeature', 'welcomeMessage2'); clearInterval(welcomeMessage2Interval); } }, 1000); } //Speak when scroll end function bindScroll() { if ((window.innerHeight + window.pageYOffset) >= document.body.offsetHeight - 100 && config.text_speakEndPage != null && config.text_speakEndPage != "") { console.log("bottom"); window.removeEventListener('scroll', bindScroll); responsiveVoice.speak(GetRandomMsg(config.text_speakEndPage), 'Spanish Female'); trackEvent('agentFeature', 'scrollEnd'); } } if (config.speakEndPage) { window.addEventListener('scroll', bindScroll); } //Inactivity var idleTime = 0; if (config.speakInactivity) { setInterval(timerIncrement, 1000); window.addEventListener('mousemove', function() { idleTime = 0; }); window.addEventListener('keyup', function() { idleTime = 0; }); } function timerIncrement() { idleTime += 1000; if (idleTime >= 30000) { responsiveVoice.speak(GetRandomMsg(config.text_speakInactivity), 'Spanish Female'); trackEvent('agentFeature', 'inactivity'); idleTime = 0; } } //Exit intent if (config.speakInactivity) { console.info("setting up exit intent"); document.addEventListener('mouseout', exitIntent); } function exitIntent(e) { if (e.clientY < 0) { responsiveVoice.speak(GetRandomMsg(config.text_exitIntent), 'Spanish Female'); trackEvent('agentFeature', 'exitIntent'); } } //Tab and ctrl to speak - Accessibility Navigation var started = 0; if (config.accesibilityNavigation) { console.log("accesibilityNavigation"); document.addEventListener('keyup',function(e){ console.log('keyup called'); var code = e.keyCode || e.which; if(e.target){ switch(e.target.tagName){ case 'A': if (code == '9') { responsiveVoice.speak('Link 2 ' + e.target.text, 'Spanish Female'); trackEvent('agentFeature', 'accesibilityNavigation', 'tab'); } break; case 'BUTTON': if (code == '9') { setTimeout(responsiveVoice.speak( e.target.textContent + ' button', 'Spanish Female'), 1000); trackEvent('agentFeature', 'accesibilityNavigation', 'tab'); } break; case 'TEXTAREA': if (code == '9') { responsiveVoice.speak('Text Input ' + document.querySelectorAll(':focus')[0].getAttribute('placeholder'), 'Spanish Female'); trackEvent('agentFeature', 'accesibilityNavigation', 'tab'); } break; } } }); } if (config.accesibilityNavigation2) { document.addEventListener('keyup',function(e){ console.log('keyup called'); var code = e.keyCode || e.which; if (code == '40' && e.ctrlKey) { console.log('ctrl + down arrow'); responsiveVoice.speak(document.querySelectorAll('p')[started].textContent, 'Spanish Female'); trackEvent('agentFeature', 'accesibilityNavigation', 'ctrl-arrow'); document.querySelectorAll('p')[started].scrollIntoView(false); started = started + 1; } if (code == '38' && e.ctrlKey) { console.log('ctrl + up arrow'); responsiveVoice.speak(document.querySelectorAll('p')[started].textContent, 'Spanish Female'); trackEvent('agentFeature', 'accesibilityNavigation', 'ctrl-arrow'); document.querySelectorAll('p')[started].scrollIntoView(false); started = started - 1; if(started < 1){ started = 0; } } }); } }); function createCookie(name, value, days) { if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = "; expires=" + date.toGMTString(); } else var expires = ""; document.cookie = name + "=" + value + expires + "; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } function eraseCookie(name) { createCookie(name, "", -1); } function getOrCreateTest(name, prob, days) { var c = readCookie(name); if (c == null) { console.log("Cookie set"); var v = (Math.random() < (prob != null ? prob : 0.5)); //1 hour createCookie(name, v.toString(), (days != null ? days : (1 / 24))); return v; } console.log("Cookie read"); return c == (true).toString(); } function oneTimeTest(name, days) { var c = readCookie(name); if (c == null) { console.log("Cookie set - one time True"); //1 hour createCookie(name, (false).toString(), (days != null ? days : (0.5 / 24))); return true; } console.log("Cookie read - one time False"); return false; } function trackEvent(category, action, name, value) { if (config.trackEvents != true) return; console.log("Track " + category + "," + action + "," + name); var url = 'https://ai.learnbrite.com/analytics.php'; var postArray = []; var data = { idsite: config.analytics_id, rec: 1, url: window.location.href, rand: Math.floor(Math.random() * 1000000000), e_c: category, e_a: action, e_n: name, e_v: value }; for (var property in data){ postArray.push( encodeURI(property + '=' + data[property])); } var xhttp = new XMLHttpRequest(); xhttp.open("POST", url, true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send( postArray.join('&') ); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { console.log("Tracking Success"); console.log(data); } }; }