
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="UTF-8" />
    <title>Recetas de cocina</title>
    <meta name="description" content="Cocina una gran variedad de recetas de cocina con reseñas, fotos y calificaciones.  Aprende y mejora tus habilidades culinarias con las mejores recetas de cocina. Sube tus propias recetas de cocina, reseñas y fotos para formar parte de la comunidad Kiwilimón." />
    <meta name="category" content="Recetas de cocina, reseñas y fotos para formar parte de la comunidad Kiwilimón." />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

    <meta name="author" content="Kiwilimon®, Copyright © 2010-2024" />
    <meta name="generator" content="Kiwilimon - Xamboo GO Framework - v7 - site7" />
    <meta name="rating" content="General" />
    <meta name="designer" content="Kiwilimon.com" />

    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=7.0.1" />
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=7.0.1" />
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=7.0.1" />
    <link rel="manifest" href="/manifest.json?v=7.0.1" crossorigin="use-credentials" />
    <link rel="mask-icon" href="/safari-pinned-tab.svg?v=7.0.1" color="#5bbad5" />
    <link rel="shortcut icon" href="/favicon.ico?v=7.0.1" />
    <meta name="msapplication-TileColor" content="#da532c" />
    <meta name="theme-color" content="#8CC63E" />  

    <meta name="robots" content="index,follow" />
    <meta name="revisit-after" content="2 days" />
    <link rel="canonical" href="https://www.kiwilimon.com/rss">
    

    <link rel="image_src" href="" />
    <meta property="og:image" content="" />
    <meta property="og:title" content="" />
    <meta property="og:url" content="" />
    <meta property="og:description" content="" />
    <meta property="og:type" content="website" />
    <meta property="article:section" content="" />

    <meta property="fb:pages" content="162885097834" />
    <meta property="fb:app_id" content="250305718425857" />
    <meta name="google-signin-scope" content="profile email" />
    <meta name="google-signin-client_id" content="283529264243-vvdq0isu1kiu6ic5rob68ngf2imok0j7.apps.googleusercontent.com" />
    <meta name="google-site-verification" content="8MdIdUMhzL3gBZ-meCWDkQ6m0iDyONNgqmBIMF9Es2Y" />
    <meta name="googlebot" content="index,follow" />
    <meta content='app-id=680885433' name='apple-itunes-app' />
    <meta name="format-detection" content="telephone=no" />
    <link rel="preconnect" href="https://cdn7.kiwilimon.com" />
    <link rel="preconnect" href="https://browser-update.org" />
    <link rel="preconnect" href="https://www.google-analytics.com" />
    <link rel="preconnect" href="https://sb.scorecardresearch.com" />
    <link rel="preconnect" href="https://connect.facebook.net" />
    <link rel="preconnect" href="https://stats.g.doubleclick.net" />
    <link rel="preconnect" href="https://www.google.com" />
    <link rel="preconnect" href="https://www.facebook.com" />
    <link rel="preconnect" href="https://consent.cookiebot.com" />
    <link rel="preload" href="/fonts/icomoon.woff2?v=7.0.1" as="font" crossorigin="anonymous" />
    <link rel="preload" href="/fonts/source-sans-pro-200.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
    <link rel="preload" href="/fonts/source-sans-pro-400.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
    <link rel="preload" href="/fonts/source-sans-pro-700.woff2" as="font" type="font/woff2" crossorigin="anonymous" />


<script type="text/javascript">
/*
    core.js, WAJAF, the WebAbility(r) Javascript Application Framework
    Simplified version for Templates Subset for kiwilimon
    Contains multi purpose functions, browser and WA objects
    (c) 2008-2020 Philippe Thomassigny

    This file is part of WAJAF

    WAJAF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    WAJAF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with WAJAF.  If not, see <http://www.gnu.org/licenses/>.
*/

var WA = { version: '4.0.0' };
WA.Managers = {};

WA.isString = function(val)
{
  return typeof val === 'string' || Object.prototype.toString.apply(val) === '[object String]';
}

WA.isDOM = function(o)
{
  // be carefull: window is NOT a Node !
  return (o === window || (typeof Node === 'object' ? o instanceof Node : o !== null && typeof o === 'object' && typeof o.nodeType === 'number' && typeof o.nodeName === 'string' ));
}


WA.isArray = function(val)
{
  return Object.prototype.toString.apply(val) === '[object Array]';
}

WA.isObject = function(val)
{
  return typeof val == 'object';
}

WA.isFunction = function(val)
{
  return Object.prototype.toString.apply(val) === '[object Function]';
}

WA.getDomNode = function(domID)
{
  if (arguments.length > 1)
  {
    var elements = [];
    for (var i = 0, l = arguments.length; i < l; i++)
      elements.push(WA.toDOM(arguments[i]));
    return elements;
  }
  if (WA.isString(domID))
    return document.getElementById(domID);
  return null;
}

WA.toDOM = function(n)
{
  if (WA.isDOM(n))
    return n;
  else if (WA.isString(n))
    return WA.getDomNode(n);
  return null;
}


WA.get = function(n)
{
  var self = this;
  var _nodes = [];
  // if multi is a string => search for NODE ID, or NODE CLASS or NODE ?
  if (WA.isString(n))
  {
    switch(n[0])
    {
      case '#': _nodes = [WA.getDomNode(n.substr(1))]; break;
      case '.':
        if (document.getElementsByClassName)
          _nodes = document.getElementsByClassName(n.substr(1));
        else
        {
          theclass = new RegExp('\\b'+n.substr(1)+'\\b');
          allnodes = this.getElementsByTagName('*');
          for (var i = 0, l = allnodes.length; i < l; i++)
            if (theclass.test(allnodes[i].className)) _nodes.push(allnodes[i]);
        }
        break;
      case '!': _nodes = Array.prototype.slice.call(document.getElementsByName(n.substr(1))); break;
      // anything else (start with a letter ?)
      default: _nodes = Array.prototype.slice.call(document.getElementsByTagName(n)); break;
    }
  }
  else if (WA.isDOM(n))
    _nodes = [n];

  // fast access to the first
  this.node = function () { return _nodes[0]; }

  // fast access to the nodes
  this.nodes = function() { return _nodes; }

  // content of the nodes
  this.text = function(t)
  {
    t = t.replace(/\&/g,"&amp;").replace(/\'/g,"&#39;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
    for (var i = 0, l = _nodes.length; i < l; i++) _nodes[i].innerHTML = t; return self;
  }
  this.html = function(t) { for (var i = 0, l = _nodes.length; i < l; i++) _nodes[i].innerHTML = t; return self; }
  this.append = function(t) { for (var i = 0, l = _nodes.length; i < l; i++) _nodes[i].innerHTML += t; return self; }

  // generic css
  this.css = function(p, v)
  {
    if (v === undefined)
      return _nodes[0]?_nodes[0].style[p]:undefined;
    for (var i = 0, l = _nodes.length; i < l; i++)
      _nodes[i].style[p] = v;
    return self;
  }

  // some most common CSS
  this.CSSwidth = function(v) { return self.css('width', v); }
  this.CSSheight = function(v) { return self.css('height', v); }
  this.CSSleft = function(v) { return self.css('left', v); }
  this.CSStop = function(v) { return self.css('top', v); }
  this.CSSmargin = function(v) { return self.css('margin', v); }
  this.CSSpadding = function(v) { return self.css('padding', v); }
  this.CSSborder = function(v) { return self.css('border', v); }
  this.CSScolor = function(v) { return self.css('color', v); }
  this.CSSbgcolor = function(v) { return self.css('backgroundColor', v); }
  this.CSSbg = function(v) { return self.css('background', v); }
  this.CSSfont = function(v) { return self.css('font', v); }
  this.CSSdisplay = function(v) { return self.css('display', v); }
  this.CSSopacity = function(v) { self.css('opacity', v/100); return self.css('filter', 'alpha(opacity: '+v+')'); }

  // some metrics
  this.width = function(v) { if (v === undefined) return _nodes[0]?WA.browser.getNodeWidth(_nodes[0]):null; else return self.css('width', WA.isNumber(v)?v+'px':v); }
  this.height = function(v) { if (v === undefined) return _nodes[0]?WA.browser.getNodeHeight(_nodes[0]):null; else return self.css('height', WA.isNumber(v)?v+'px':v); }
  this.left = function(v, n) { if (v === undefined) return _nodes[0]?(n===undefined?WA.browser.getNodeDocumentLeft(_nodes[0]):WA.browser.getNodeNodeLeft(_nodes[0], n)):null; else return self.css('left', WA.isNumber(v)?v+'px':v); }
  this.top = function(v, n) { if (v === undefined) return _nodes[0]?(n===undefined?WA.browser.getNodeDocumentTop(_nodes[0]):WA.browser.getNodeNodeTop(_nodes[0], n)):null; else return self.css('top', WA.isNumber(v)?v+'px':v); }

  // generic animation
  this.anim = function(s, f) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.createSprite(_nodes[i], s, f); return self; }

  // some basic animations
  this.fadeIn = function(s, f) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.fadeIn(_nodes[i], s, f); return self; }
  this.fadeOut = function(s, f) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.fadeOut(_nodes[i], s, f); return self; }
  this.openV = function(s, f, h) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.openV(_nodes[i], s, h, f); return self; }
  this.closeV = function(s, f, h) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.closeV(_nodes[i], s, h, f); return self; }
  this.openH = function(s, f, w) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.openH(_nodes[i], s, w, f); return self; }
  this.closeH = function(s, f, w) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.closeH(_nodes[i], s, w, f); return self; }
  this.open = function(s, f, w, h) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.open(_nodes[i], s, w, h, f); return self; }
  this.close = function(s, f, w, h) { if (!WA.Managers.anim) return null; for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.anim.close(_nodes[i], s, w, h, f); return self; }
  this.move = function(s, x, y, f, l, t) { if (!WA.Managers.anim) return null; for (var i = 0, lx = _nodes.length; i < lx; i++) WA.Managers.anim.move(_nodes[i], s, l, t, x, y, f); return self; }

  // generic mouse event binder
  this.on = function(e, f) { for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.event.on(e, _nodes[i], f, true); return self; }
  this.off = function(e, f) { for (var i = 0, l = _nodes.length; i < l; i++) WA.Managers.event.off(e, _nodes[i], f, true); return self; }

  // some most common events
  this.click = function(f) { return self.on('click', f); }
  this.dblclick = function(f) { return self.on('dblclick', f); }
  this.mouseover = function(f) { return self.on('mouseover', f); }
  this.mouseout = function(f) { return self.on('mouseout', f); }
  this.mousemove = function(f) { return self.on('mousemove', f); }
  this.mousedown = function(f) { return self.on('mousedown', f); }
  this.mouseup = function(f) { return self.on('mouseup', f); }
  this.keydown = function(f) { return self.on('keydown', f); }
  this.keyup = function(f) { return self.on('keyup', f); }

  return this;
}


// Messages and internationalization
WA.i18n = function() {}
WA.i18n.defaulti18n = {
  'json.error': 'The JSON code has been parsed with error, it cannot be built.\n',
  'json.unknown': 'The JSON core do not know what to do with this unknown type: '
};
WA.i18n.i18n = {};

WA.i18n.setEntry = function(id, message)
{
  WA.i18n.defaulti18n[id] = message;
}

WA.i18n.loadMessages = function(messages)
{
  for (var i in messages)
  {
    if (!WA.isString(messages[i]))     // we are only interested by strings
      continue;
    WA.i18n.i18n[i] = messages[i];
  }
}

WA.i18n.getMessage  = function(id)
{
  return WA.i18n.i18n[id] || WA.i18n.defaulti18n[id] || id;
}

WA.createDomNode = function(type, id, classname)
{
  var domnode = document.createElement(type);
  if (id)
    domnode.id = id;
  if (classname !== null && classname != undefined)
    domnode.className = classname;
  return domnode;
}


WA.extend = function(collector, source)
{
  var f = function() {};
  f.prototype = source.prototype;
  collector.prototype = new f();
  collector.prototype.constructor = collector;
  collector.sourceconstructor = source;
  collector.source = source.prototype;
  return collector;
}

WA.clone = function(obj)
{
  var cloned = {};
  for (var i in obj)
  {
    if (!obj.hasOwnProperty(i))
      continue;
    if (typeof obj[i] == 'object' && !WA.isDOM(obj[i]))
      cloned[i] = WA.clone(obj[i]);
    else
      cloned[i] = obj[i];
  }
  return cloned;
}

//  
// 

// Date basic functions
WA.Date = {};
WA.Date.setNames = function(days, shortdays, months, shortmonths)
{
  WA.Date.days = days;
  WA.Date.shortdays = shortdays;
  WA.Date.months = months;
  WA.Date.shortmonths = shortmonths;
}

// english by default
WA.Date.setNames(
  ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
  ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
  ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
  ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
);

WA.Date.basicdays = [31,28,31,30,31,30,31,31,30,31,30,31];

WA.Date.isDate = function(year, month, day)
{
  var numdays = WA.Date.basicdays[month-1];
  return day>0 && !!numdays && (day<=numdays || day==29 && year%4==0 && (year%100!=0 || year%400==0) );
}

WA.Date.isTime = function(hour, min, sec)
{
  return hour>=0 && hour<=23 && min>=0 && min<=59 && sec>=0 && sec<=59;
}

WA.Date.isValid = function(year, month, day, hour, min, sec, ms)
{
  hour = hour || 0;
  min = min || 0;
  sec = sec || 0;
  ms = ms || 0;
  // no need to apply(this) for isDate and isTime, they are static funcions
  return WA.Date.isDate(year, month, day) && WA.Date.isTime(hour, min, sec) && ms >= 0 && ms <= 999;
}

WA.Date.isLeapYear = function(d)
{
  var year = d.getFullYear();
  return (year%4==0 && (year%100!=0 || year%400==0));
}

WA.Date.getOrdinalSuffix = function()
{
  switch (this.getDate())
  {
    case 1: case 21: case 31: return 'st';
    case 2: case 22:          return 'nd';
    case 3: case 23:          return 'rd';
    default:                  return 'th';
  }
}

WA.Date.getMaxMonthDays = function(d)
{
  var numdays = WA.Date.basicdays[d.getMonth()];
  if (numdays == 28 && WA.Date.isLeapYear(d))
  {
    numdays++;
  }
  return numdays;
}

WA.Date.getDayOfYear = function()
{
  var day = this.getDate();
  for (var i = 0; i <= this.getMonth()-1; i++)
    day += WA.Date.basicdays[i] + (i==1&&WA.Date.isLeapYear(this)?1:0);
  return day;
}

// adapted from http://www.merlyn.demon.co.uk/weekcalc.htm
WA.Date.getWeekOfYear = function()
{
  var ms1d = 86400000;
  var ms7d = 604800000;
  var DC3 = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3) / ms1d;
  var AWN = Math.floor(DC3 / 7);
  var Wyr = (new Date(AWN * ms7d)).getUTCFullYear();
  return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
}

WA.Date.getGMTOffset = function(colon)
{
  return (this.getTimezoneOffset() > 0 ? '-' : '+')
      + String.padding(2, '0', Math.floor(Math.abs(this.getTimezoneOffset()) / 60))
      + (colon ? ':' : '')
      + String.padding(2, '0', Math.abs(this.getTimezoneOffset() % 60));
}

// by extJS
WA.Date.getTimezone = function()
{
  return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, '$1$2').replace(/[^A-Z]/g, '');
}

// original idea of structure/pattern by extJS
WA.Date.grabformats = {
  j: "this.getDate()",                                           // day of the month, no leading 0
  d: "WA.String.padding(2, '0', this.getDate())",                // day of the month, leading 0, no need to call()
  D: "WA.Date.shortdays[this.getDay()]",                         // short name of day
  l: "WA.Date.days[this.getDay()]",                              // full name of day

  w: "this.getDay()",                                            // day of the week, 0 = sunday
  N: "(this.getDay()==0?7:this.getDay())",                       // ISO day of the week, 1 = monday
  S: "WA.Date.getOrdinalSuffix.call(this)",                      // english day of the week suffix

  z: "WA.Date.getDayOfYear.call(this)",                          // day of the year, 0 to 365

  W: "WA.String.padding(2, '0', WA.Date.getWeekOfYear.call(this))",  // ISO week of the year, leading 0, no need to call()

  n: "(this.getMonth() + 1)",                                    // number of month, 1 to 12, no leading 0
  m: "WA.String.padding(2, '0', this.getMonth() + 1)",           // number of month, 01 to 12, leading 0, no need to call()
  M: "WA.Date.shortmonths[this.getMonth()]",                     // short name of month
  F: "WA.Date.months[this.getMonth()]",                          // full name of month
  t: "WA.Date.getMaxMonthDays.call(this)",                       // number of days into the month

  L: "(WA.Date.isLeapYear(this) ? 1 : 0)",
  o: "(this.getFullYear() + (WA.Date.getWeekOfYear.call(this) == 1 && this.getMonth() > 0 ? +1 : (WA.Date.getWeekOfYear.call(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",
  Y: "this.getFullYear()",
  y: "('' + this.getFullYear()).substring(2, 4)",

  a: "(this.getHours() < 12 ? 'am' : 'pm')",
  A: "(this.getHours() < 12 ? 'AM' : 'PM')",
  g: "((this.getHours() % 12) ? this.getHours() % 12 : 12)",
  G: "this.getHours()",
  h: "WA.String.padding(2, '0', (this.getHours() % 12) ? this.getHours() % 12 : 12)",
  H: "WA.String.padding(2, '0', this.getHours())",

  i: "WA.String.padding(2, '0', this.getMinutes())",
  s: "WA.String.padding(2, '0', this.getSeconds())",
  u: "WA.String.padding(3, '0', this.getMilliseconds())",

  O: "WA.String.getGMTOffset.call(this)",
  P: "WA.String.getGMTOffset.call(this, true)",
  T: "WA.String.getTimezone.call(this)",
  Z: "(this.getTimezoneOffset() * -60)",
  c: "this.getUTCFullYear() + '-' + WA.String.padding(2, '0', this.getUTCMonth() + 1) + '-' + WA.String.padding(2, '0', this.getUTCDate()) + 'T' + "
        + "WA.String.padding(2, '0', this.getUTCHours()) + ':' + WA.String.padding(2, '0', this.getUTCMinutes()) + ':' + "
        + "WA.String.padding(2, '0', this.getUTCSeconds()) + WA.Date.getGMTOffset.call(this, true)",
  U: "Math.round(this.getTime() / 1000)"
};

WA.Date.format = function(d, str)
{
  var code = [];
  for (var i = 0, l = str.length; i < l; i++)
  {
    var c = str.charAt(i);
    if (c == '\\')
    {
      i++;
      // no need to call String.escape with an apply since we pass the caracter as parameter
      code.push("'" + WA.String.escape(str.charAt(i)) + "'");
    }
    else
    {
      WA.Date.grabformats[c]!=undefined?code.push(WA.Date.grabformats[c]):code.push("'" + WA.String.escape(c) + "'");
    }
  }

  var f = new Function('return ' + code.join('+') + ';');
  return f.call(d);
}

// String prototypes
WA.String = {};
WA.String.sprintf = function()
{
  if (WA.isObject(arguments[0]))
  {
    var args = arguments[0];
    return this.replace(/\{([A-Za-z0-9\-_\.]+)\}/g, function(p0, p1){ return args[p1]; });
  }
  else
  {
    var args = arguments;
    return this.replace(/\{(\d+)\}/g, function(p0, p1){ return args[p1]; });
  }
}

WA.String.escape = function(value)
{
  var newstr = (value != undefined && value != null) ? value : this;
  return newstr.replace(/("|'|\\)/g, "\\$1");
}

WA.String.padding = function(size, pad, value)
{
  if (!pad) pad = ' ';
  var newstr = new String((value != undefined && value != null) ? value : this);
  while (newstr.length < size)
  {
    newstr = pad + newstr;
  }
  return newstr;
}

WA.String.trim = function(value)
{
  var newstr = (value != undefined && value != null) ? value : this;
  return newstr.replace(/^(\s|&nbsp;)*|(\s|&nbsp;)*$/g, '');
};

// json
WA.JSON = function() {}
WA.JSON.withalert = false;

WA.JSON.decode = function(json, execerror)
{
  var code = null;
  try
  {
    // 1. We parse the json code
    code = eval('(' + json + ')');
  }
  catch (e)
  {
    if (WA.JSON.withalert)
      alert(WA.i18n.getMessage('json.error') + e.message + '\n' + json);
    throw e;
  }
  /*
  if (code.debug)
  {
    WA.debug.explain(code.system, 3);
    code = code.code;
  }
  if (execerror && code.error && !code.login)
  {
    WA.debug.explain(code.messages, 3);
    code = null;
  }
  */
  return code;
}

WA.JSON.encode = function(data)
{
  var json = '';
  if (WA.isArray(data))
  {
    json += '[';
    var item = 0;
    for (var i = 0, l = data.length; i < l; i++)
    {
      json += (item++?',':'') + WA.JSON.encode(data[i]);
    }
    json += ']';
  }
  else if (data === null)
  {
    json += 'null';
  }
  else if (!WA.isDefined(data))
  {
    json += 'undefined';
  }
  else if (WA.isNumber(data))
  {
    json += data;
  }
  else if (WA.isString(data))
  {
    json += '"' + (data.replace(/\\/g, "\\\\").replace(/"/g, "\\\"").replace(/\n/g, "\\n")) + '"';
  }
  else if (WA.isObject(data))
  {
    json += '{';
    var item=0;
    for (var i in data)
    {
      if (WA.isFunction(data[i]))   // we are not interested by functions
        continue;
      json += (item++?',':'')+'"'+i+'":'+WA.JSON.encode(data[i]);
    }
    json += '}';
  }
  else if (WA.isBool(data))
  {
    json += data?'true':'false';
  }
  else
  {
    if (WA.JSON.withalert)
      alert(WA.i18n.getMessage('json.unknown') + typeof data);
  }
  return json;
}

WA.browser = function()
{
  var agent = navigator.userAgent.toUpperCase();
  WA.browser.isCompat = (document.compatMode == 'CSS1Compat');
  WA.browser.isOpera = agent.indexOf('OPERA') > -1;
  WA.browser.isChrome = agent.indexOf('CHROME') > -1;
  WA.browser.isFirefox = agent.indexOf('FIREFOX') > -1;
  WA.browser.isFirebug = (WA.isDefined(window.console) && WA.isDefined(window.console.firebug));
  WA.browser.isSafari = !WA.browser.isChrome && agent.indexOf('SAFARI') > -1;
  WA.browser.isSafari2 = WA.browser.isSafari && agent.indexOf('APPLEWEBKIT/4') > -1;
  WA.browser.isSafari3 = WA.browser.isSafari && agent.indexOf('VERSION/3') > -1;
  WA.browser.isSafari4 = WA.browser.isSafari && agent.indexOf('VERSION/4') > -1;
  WA.browser.isMSIE = !WA.browser.isOpera && agent.indexOf('MSIE') > -1;
  WA.browser.isMSIE7 = WA.browser.isMSIE && agent.indexOf('MSIE 7') > -1;
  WA.browser.isMSIE8 = WA.browser.isMSIE && agent.indexOf('MSIE 8') > -1;
  WA.browser.isMSIE9 = WA.browser.isMSIE && agent.indexOf('MSIE 9') > -1;
  WA.browser.isMSIE6 = WA.browser.isMSIE && !WA.browser.isMSIE7 && !WA.browser.isMSIE8 && !WA.browser.isMSIE9;
  WA.browser.isWebKit = agent.indexOf('WEBKIT') > -1;
  WA.browser.isGecko = !WA.browser.isWebKit && agent.indexOf('GECKO') > -1;
  WA.browser.isGecko2 = WA.browser.isGecko && agent.indexOf('RV:1.8') > -1;
  WA.browser.isGecko3 = WA.browser.isGecko && agent.indexOf('RV:1.9') > -1;
  WA.browser.isLinux = agent.indexOf('LINUX') > -1;
  WA.browser.isWindows = !!agent.match(/WINDOWS|WIN32/);
  WA.browser.isMac = !!agent.match(/MACINTOSH|MAC OS X/);
  WA.browser.isAir = agent.indexOf('ADOBEAIR') > -1;
  WA.browser.isDom = document.getElementById && document.childNodes && document.createElement;
  WA.browser.isBoxModel = WA.browser.isMSIE && !WA.browser.isCompat;
  WA.browser.isSecure = (window.location.href.toUpperCase().indexOf('HTTPS') == 0);
  // DO WE NEED isFlash and isJava ?

  WA.browser.normalizedMouseButton = WA.browser.isMSIE ? {1:0, 2:2, 4:1} : (WA.browser.isSafari2 ? {1:0, 2:1, 3:2} : {0:0, 1:1, 2:2});

  // remove css image flicker
  if (WA.browser.isMSIE6)
    try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}
}

WA.browser.isWebpSupport = function()
{
  var agent = navigator.userAgent.toUpperCase();
  var brw = agent.match(/(opera|chrome|firefox(?=\/))\/?\s*(\d+)/i) || [];

  if (brw[1] == 'OPERA' && brw[2] >= 19)
      return true;

  if (brw[1] == 'CHROME' && brw[2] >= 32)
      return true;

  if (brw[1] == 'FIREFOX' && brw[2] >= 65)
      return true;

  return false;
}

// ===================================
  // METRICS FUNCTIONS

  // get the size of the document. The document is the full usable html area
WA.browser.getDocumentWidth = function()
{
  if (WA.browser.isMSIE6)
    return document.body.scrollWidth;
  return document.documentElement.scrollWidth;
}

WA.browser.getDocumentHeight = function()
{
  if (WA.browser.isMSIE6)
    return document.body.scrollHeight;
  return document.documentElement.scrollHeight;
}

  // get the size of the window. The window is the browser visible area
WA.browser.getWindowWidth = function()
{
  if (!WA.browser.isMSIE)
    return window.innerWidth;

  if (document.documentElement && document.documentElement.clientWidth)
    return document.documentElement.clientWidth;

  if (document.body && document.body.clientWidth)
    return document.body.clientWidth;

  return 0;
}

WA.browser.getWindowHeight = function()
{
  if (!WA.browser.isMSIE)
    return window.innerHeight;

  if( document.documentElement && document.documentElement.clientHeight)
    return document.documentElement.clientHeight;

  if( document.body && document.body.clientHeight)
    return document.body.clientHeight;

  return 0;
}

  // get the size of the OS/screen
WA.browser.getScreenWidth = function()
{
  return screen.width;
}

WA.browser.getScreenHeight = function()
{
  return screen.height;
}

  // get the scroll of the window if the document is bigger than the window
WA.browser.getScrollLeft = function()
{
  if (WA.browser.isDom) // && (WA.browser.isMSIE7Sup || !WA.browser.isMSIE))
    return document.documentElement.scrollLeft;

  // ie6 and before
  if (document.body && document.body.scrollLeft)
    return document.body.scrollLeft;

  // others without dom
  if (typeof window.pageXOffset == 'number')
    return window.pageXOffset;

  return 0;
}

WA.browser.getScrollTop = function()
{
  // others without dom
  if (typeof window.pageYOffset == 'number')
    return window.pageYOffset;

  if (typeof window.scrollY == 'number')
    return window.scrollY;

  // should be supported by all browsers
  if (document.body && document.body.scrollTop)
    return document.body.scrollTop;

  // ie6 and before use BAD the documentelement on dom!
  if (WA.browser.isDom) // && (WA.browser.isMSIE7 || !WA.browser.isMSIE))
    return document.body.scrollTop;

  // ie6 and before


  return 0;
}

WA.browser.getScrollNodeTop = function(node)
{
  return node.scrollTop;
}

// get the maximum scroll available
WA.browser.getScrollWidth = function()
{
  return WA.browser.getDocumentWidth();
}

WA.browser.getScrollHeight = function()
{
  return WA.browser.getDocumentHeight();
}

  // get the left of a DOM element into the document
WA.browser.getNodeDocumentLeft = function(node)
{
  if (!node)
    return null;
  var l = node.offsetLeft;
  if (node.offsetParent != null)
    l += WA.browser.getNodeDocumentLeft(node.offsetParent) + WA.browser.getNodeBorderLeftWidth(node.offsetParent) + WA.browser.getNodeMarginLeftWidth(node.offsetParent);
  return l;
}

  // get the top of a DOM element into the document
WA.browser.getNodeDocumentTop = function(node)
{
  if (!node)
    return null;
  var t = node.offsetTop;
  if (node.offsetParent != null)
    t += WA.browser.getNodeDocumentTop(node.offsetParent) + WA.browser.getNodeBorderTopHeight(node.offsetParent) + WA.browser.getNodeMarginTopHeight(node.offsetParent);
  return t;
}

  // get the left of a DOM element into the referenced node. If referenced node is NOT into the fathers, then it will give the left in the document
WA.browser.getNodeNodeLeft = function(node, refnode)
{
  if (!node)
    return null;
  var l = node.offsetLeft;
  if (node.offsetParent != null && node.offsetParent != refnode)
    l += WA.browser.getNodeBorderLeftWidth(node.offsetParent) + WA.browser.getNodeNodeLeft(node.offsetParent, refnode);
  return l;
}

  // get the top of a DOM element into the referenced node. If referenced node is NOT into the fathers, then it will give the top in the document
WA.browser.getNodeNodeTop = function(node, refnode)
{
  if (!node)
    return null;
  var t = node.offsetTop;
  if (node.offsetParent != null && node.offsetParent != refnode)
    t += WA.browser.getNodeBorderTopHeight(node.offsetParent) + WA.browser.getNodeNodeTop(node.offsetParent, refnode);
  return t;
}

  // get the scroll of the node if the content is bigger than the node
WA.browser.getNodeScrollLeft = function(node)
{
  if (!node)
    return null;
  if (WA.browser.isDom) // && (WA.browser.isMSIE7 || !WA.browser.isMSIE))
    return node.scrollLeft;

  // others without dom
  if (typeof node.pageXOffset == 'number')
    return node.pageXOffset;

  return 0;
}

WA.browser.getNodeScrollTop = function(node)
{
  if (!node)
    return null;
  if (WA.browser.isDom) // && (WA.browser.isMSIE7 || !WA.browser.isMSIE))
    return node.scrollTop;

  // others without dom
  if (typeof node.pageYOffset == 'number')
    return node.pageYOffset;

  return 0;
}

// get the maximum scroll available
WA.browser.getNodeScrollWidth = function(node)
{
  return WA.browser.getDocumentWidth();
}

WA.browser.getNodeScrollHeight = function(node)
{
  return WA.browser.getDocumentHeight();
}

/*
  About size and functions to get sizes:

     | margin | border | padding | content | padding | border | margin |
     |-------- extrawidth -------|- width -|
     |- externalwidth -|-------- innerwidth ---------|
              |----------------- offsetwidth -----------------|
     |--------------------------- outerwidth --------------------------|

  The external is the sum of left and right external
  The extra is the sum of left and right extra

  Same applies with height
*/

WA.browser.getNodeMarginLeftWidth = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.marginLeft, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('margin-left')) || 0;
}

WA.browser.getNodeMarginRightWidth = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.marginRight, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('margin-right')) || 0;
}

WA.browser.getNodeMarginWidth = function(node)
{
  return WA.browser.getNodeMarginLeftWidth(node) + WA.browser.getNodeMarginRightWidth(node);
}

WA.browser.getNodeMarginTopHeight = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.marginTop, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('margin-top')) || 0;
}

WA.browser.getNodeMarginBottomHeight = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.marginBottom, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('margin-bottom')) || 0;
}

WA.browser.getNodeMarginHeight = function(node)
{
  return WA.browser.getNodeMarginTopHeight(node) + WA.browser.getNodeMarginBottomHeight(node);
}

WA.browser.getNodeBorderLeftWidth = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.borderLeftWidth, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('border-left-width')) || 0;
}

WA.browser.getNodeBorderRightWidth = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.borderRightWidth, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('border-right-width')) || 0;
}

WA.browser.getNodeBorderWidth = function(node)
{
  return WA.browser.getNodeBorderLeftWidth(node) + WA.browser.getNodeBorderRightWidth(node);
}

WA.browser.getNodeBorderTopHeight = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.borderTopWidth, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('border-top-width')) || 0;
}

WA.browser.getNodeBorderBottomHeight = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.borderBottomWidth, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('border-bottom-width')) || 0;
}

WA.browser.getNodeBorderHeight = function(node)
{
  return WA.browser.getNodeBorderTopHeight(node) + WA.browser.getNodeBorderBottomHeight(node);
}

WA.browser.getNodePaddingLeftWidth = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.paddingLeft, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('padding-left')) || 0;
}

WA.browser.getNodePaddingRightWidth = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.paddingRight, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('padding-right')) || 0;
}

WA.browser.getNodePaddingWidth = function(node)
{
  return WA.browser.getNodePaddingLeftWidth(node) + WA.browser.getNodePaddingRightWidth(node);
}

WA.browser.getNodePaddingTopHeight = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.paddingTop, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('padding-top')) || 0;
}

WA.browser.getNodePaddingBottomHeight = function(node)
{
  return WA.browser.isMSIE?parseInt(node.currentStyle.paddingBottom, 10) || 0:parseInt(window.getComputedStyle(node, null).getPropertyValue('padding-bottom')) || 0;
}

WA.browser.getNodePaddingHeight = function(node)
{
  return WA.browser.getNodePaddingTopHeight(node) + WA.browser.getNodePaddingBottomHeight(node);
}

WA.browser.getNodeExternalLeftWidth = function(node)
{
  return WA.browser.getNodeMarginLeftWidth(node) + WA.browser.getNodeBorderLeftWidth(node);
}

WA.browser.getNodeExternalRightWidth = function(node)
{
  return WA.browser.getNodeMarginRightWidth(node) + WA.browser.getNodeBorderRightWidth(node);
}

WA.browser.getNodeExternalWidth = function(node)
{
  return WA.browser.getNodeExternalLeftWidth(node) + WA.browser.getNodeExternalRightWidth(node);
}

WA.browser.getNodeExternalTopHeight = function(node)
{
  return WA.browser.getNodeMarginTopHeight(node) + WA.browser.getNodeBorderTopHeight(node);
}

WA.browser.getNodeExternalBottomHeight = function(node)
{
  return WA.browser.getNodeMarginBottomHeight(node) + WA.browser.getNodeBorderBottomHeight(node);
}

WA.browser.getNodeExternalHeight = function(node)
{
  return WA.browser.getNodeExternalTopHeight(node) + WA.browser.getNodeExternalBottomHeight(node);
}

WA.browser.getNodeExtraLeftWidth = function(node)
{
  return WA.browser.getNodeMarginLeftWidth(node) + WA.browser.getNodeBorderLeftWidth(node) + WA.browser.getNodePaddingLeftWidth(node);
}

WA.browser.getNodeExtraRightWidth = function(node)
{
  return WA.browser.getNodeMarginRightWidth(node) + WA.browser.getNodeBorderRightWidth(node) + WA.browser.getNodePaddingRightWidth(node);
}

WA.browser.getNodeExtraWidth = function(node)
{
  return WA.browser.getNodeExtraLeftWidth(node) + WA.browser.getNodeExtraRightWidth(node);
}

WA.browser.getNodeExtraTopHeight = function(node)
{
  return WA.browser.getNodeMarginTopHeight(node) + WA.browser.getNodeBorderTopHeight(node) + WA.browser.getNodePaddingTopHeight(node);
}

WA.browser.getNodeExtraBottomHeight = function(node)
{
  return WA.browser.getNodeMarginBottomHeight(node) + WA.browser.getNodeBorderBottomHeight(node) + WA.browser.getNodePaddingBottomHeight(node);
}

WA.browser.getNodeExtraHeight = function(node)
{
  return WA.browser.getNodeExtraTopHeight(node) + WA.browser.getNodeExtraBottomHeight(node);
}

  // get the real size of a DOM element
WA.browser.getNodeWidth = function(node)
{
  return WA.browser.getNodeOffsetWidth(node) - WA.browser.getNodePaddingWidth(node) - WA.browser.getNodeBorderWidth(node);
}

WA.browser.getNodeHeight = function(node)
{
  return WA.browser.getNodeOffsetHeight(node) - WA.browser.getNodePaddingHeight(node) - WA.browser.getNodeBorderHeight(node);
}

WA.browser.getNodeInnerWidth = function(node)
{
  return WA.browser.getNodeOffsetWidth(node) - WA.browser.getNodeBorderWidth(node);
}

WA.browser.getNodeInnerHeight = function(node)
{
  return WA.browser.getNodeOffsetHeight(node) - WA.browser.getNodeBorderHeight(node);
}

WA.browser.getNodeOffsetWidth = function(node)
{
  return parseInt(node.offsetWidth, 10) || 0;
}

WA.browser.getNodeOffsetHeight = function(node)
{
  return parseInt(node.offsetHeight, 10) || 0;
}

WA.browser.getNodeOuterWidth = function(node)
{
  return WA.browser.getNodeOffsetWidth(node) + WA.browser.getNodeMarginWidth(node);
}

WA.browser.getNodeOuterHeight = function(node)
{
  return WA.browser.getNodeOffsetHeight(node) + WA.browser.getNodeMarginHeight(node);
}

// ===================================
// MOUSE FUNCTIONS

/*
  The mouse is not standard on all navigators.
  ie and safari does not map same clicks keys (left, center, right), we need corresponding table

  NOTE Than both mouse and keyboard events are mixed in the same event
*/

  // getCursorNode will return the DOM node in which the event happened
WA.browser.getCursorNode = function(e)
{
  var ev = e || window.event;
  if (ev.target) return ev.target;
  if (ev.srcElement) return ev.srcElement;
  return null;
}

  // returns the absolute position of the event in the document
WA.browser.getCursorDocumentX = function(e)
{
  var ev = e || window.event;
  return ev.pageX - (document.documentElement.clientLeft || 0);  // MSIE 7 has a weird 2 pixels offset for mouse coords !
}

  // returns the absolute position of the event in the document
WA.browser.getCursorDocumentY = function(e)
{
  var ev = e || window.event;
  return ev.pageY - (document.documentElement.clientTop || 0);  // MSIE 7 has a weird 2 pixels offset for mouse coords !
}

  // returns the absolute position of the event in the document
WA.browser.getTouchDocumentX = function(e)
{
  var ev = e || window.event;
  var touchobj = ev.changedTouches[0];
  return touchobj.pageX;
}

  // returns the absolute position of the event in the document
WA.browser.getTouchDocumentY = function(e)
{
  var ev = e || window.event;
  var touchobj = ev.changedTouches[0];
  return touchobj.pageY;
}

  // returns the absolute position of the event in the browserwindow
WA.browser.getCursorWindowX = function(e)
{
  var ev = e || window.event;
  return ev.clientX - (document.documentElement.clientLeft || 0);  // MSIE 7 has a weird 2 pixels offset for mouse coords !;
}

  // returns the absolute position of the event in the browserwindow
WA.browser.getCursorWindowY = function(e)
{
  var ev = e || window.event;
  return ev.clientY - (document.documentElement.clientLeft || 0);  // MSIE 7 has a weird 2 pixels offset for mouse coords !;
}

  // returns the absolute position of the event in the container based on the OFFSET metrix (i.e. with border included)
  // IF the function does not work on FIREFOX: DO NOT MODIFY the code,
  //     but add a position: relative to the container !
  // (note: FF and Safari, gets natural origin with border, IE and opera, without border :S)
WA.browser.getCursorOffsetX = function(e)
{
  var offset = 0;
  if (WA.browser.isMSIE || WA.browser.isOpera)
    offset = WA.browser.getNodeBorderLeftWidth(WA.browser.getCursorNode(e));

  var ev = e || window.event;
  if(typeof(ev.offsetX) == 'number')
    return ev.offsetX + offset;
  if(typeof(ev.layerX) == 'number')
    return ev.layerX + offset;
  return 0;
}

// returns the absolute position of the event in the container based on the OFFSET metrix (i.e. with border included)
// IF the function does not work on FIREFOX: DO NOT MODIFY the code,
//     but add a position: relative to the container !
WA.browser.getCursorOffsetY = function(e)
{
  var offset = 0;
  if (WA.browser.isMSIE || WA.browser.isOpera)
    offset = WA.browser.getNodeBorderTopHeight(WA.browser.getCursorNode(e));

  var ev = e || window.event;
  if(typeof(ev.offsetY) == 'number')
    return ev.offsetY + offset;
  if(typeof(ev.layerY) == 'number')
    return ev.layerY + offset;
  return 0;
}

// returns the absolute position of the event in the container based on the INNER metrix (i.e. without border included)
// IF the function does not work on FIREFOX: DO NOT MODIFY the code,
//     but add a position: relative to the container !
WA.browser.getCursorInnerX = function(e)
{
  var offset = 0;
  if (!WA.browser.isMSIE && !WA.browser.isOpera)
    offset = WA.browser.getNodeBorderLeftWidth(WA.browser.getCursorNode(e));

  var ev = e || window.event;
  if(typeof(ev.offsetX) == 'number')
    return ev.offsetX - offset;
  if(typeof(ev.layerX) == 'number')
    return ev.layerX - offset;
  return 0;
}

// returns the absolute position of the event in the container based on the INNER metrix (i.e. without border included)
// IF the function does not work on FIREFOX: DO NOT MODIFY the code,
//     but add a position: relative to the container !
WA.browser.getCursorInnerY = function(e)
{
  var offset = 0;
  if (!WA.browser.isMSIE && !WA.browser.isOpera)
    offset = WA.browser.getNodeBorderTopHeight(WA.browser.getCursorNode(e));

  var ev = e || window.event;
  if(typeof(ev.offsetY) == 'number')
    return ev.offsetY - offset;
  if(typeof(ev.layerY) == 'number')
    return ev.layerY - offset;
  return 0;
}

// click functions
WA.browser.getButtonClick = function(e)
{
  var ev = e || window.event;
  if (ev.type != 'click' && ev.type != 'dblclick')
    return false;
  var button = ev.button ? WA.browser.normalizedMouseButton[ev.button] : (ev.which ? ev.which-1 : 0);
  return button;
}

// click functions
WA.browser.getButtonPressed = function(e)
{
  var ev = e || window.event;
  if (ev.type != 'mousedown' && ev.type != 'mouseup')
    return false;
  var button = ev.button ? WA.browser.normalizedMouseButton[ev.button] : (ev.which ? ev.which-1 : false);
  return button;
}

WA.browser.getWheel = function(e)
{
  var ev = e || window.event;
  if (ev.type != 'DOMMouseScroll' && ev.type != 'mousewheel')
    return false;
  var delta = 0;
  if(ev.wheelDelta)
  {
    delta = ev.wheelDelta / 120;
  }
  else if (ev.detail)
  {
    delta = -ev.detail / 3;
  }
  return delta;
}

WA.browser.cancelEvent = function(e)
{
  var ev = e || window.event;
  if (!ev)
    return false;
  if (ev.stopPropagation)
    ev.stopPropagation();
  if (ev.preventDefault)
    ev.preventDefault();
  if (ev.stopEvent)
    ev.stopEvent();
  if (WA.browser.isMSIE) window.event.keyCode = 0;
  ev.cancel = true;
  ev.cancelBubble = true;
  ev.returnValue = false;
  return false;
}

// ===================================
// KEYBOARD FUNCTIONS

/*
  The keyboard is not standard on all navigators.
  known properties: shift, control, alt, keycode, charcode, navigation key
  navigation keys are: arrows, page up/down, insert, home, end, enter, tab escape

  NOTE Than both mouse and keyboard events are mixed in the same event
*/

// key functions
WA.browser.getKey = function(e)
{
  var ev = e || window.event;
  if (ev.type != 'keydown' && ev.type != 'keyup')
    return false;
  return ev.keyCode || ev.which;
}

WA.browser.getChar = function(e)
{
  var ev = e || window.event;
  if (ev.type != 'keypress')
    return false;
  return String.fromCharCode(ev.charCode ? ev.charCode : ev.keyCode);
}

WA.browser.ifShift = function(e)
{
  var ev = e || window.event;
  return ev.shiftKey;
}

WA.browser.ifCtrl = function(e)
{
  var ev = e || window.event;
  return ev.ctrlKey || ev.metaKey;
}

WA.browser.ifAlt = function(e)
{
  var ev = e || window.event;
  return ev.altKey;
}

  // any shift, control, alt
WA.browser.ifModifier = function(e)
{
  var ev = e || window.event;
  return (ev.altKey || ev.ctrlKey || ev.metaKey || ev.shiftKey) ? true : false;
}

  // any navigation keys: arrows, page up/down, home/end, escape, enter, tab
WA.browser.ifNavigation = function(e)
{
  var c = WA.browser.getKey(e);
  return ((c >= 33 && c <= 40) || c == 9 || c == 13 || c == 27) ? true : false;
}

  // f1 to f12
WA.browser.ifFunction = function(e)
{
  var c = WA.browser.getKey(e);
  return (c >= 112 && c <= 123) ? true : false;
}

// ===================================
// SELECTION FUNCTIONS

// select something in the document
WA.browser.getSelectionRange = function(node, selectionStart, selectionEnd)
{
  if (node.setSelectionRange)
  {
    node.focus();
    node.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (node.createTextRange)
  {
    var range = node.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}

// ===================================
// FILL FUNCTIONS

// fill an innerHTML
WA.browser.setInnerHTML = function(node, content)
{
  if (WA.browser.isGecko)
  {
    var rng = document.createRange();
    rng.setStartBefore(node);
    var htmlFrag = rng.createContextualFragment(content);
    while (node.hasChildNodes())
      node.removeChild(node.lastChild);
    node.appendChild(htmlFrag);
  }
  else
  {
    node.innerHTML = content;
  }
}

WA.templates = {};
WA.templatesstrings = {};
WA.codes = {};

WA.templater = function(strings, ...keys)
{
  function searchdata(data, key)
  {
    if ((pos = key.indexOf(">")) != -1)
    {
      first = key.substr(0, pos);
      val = data[first];
      if (WA.isArray(val) || WA.isObject(val) || WA.isFunction(val))
        return searchdata(val, key.substr(pos+1))
      return undefined;
    }
    if (data)
      return data[key];
    return null;
  }
  function searchdatapile(datapile, key)
  {
    if (!key)
      return '';
    for (var i = datapile.length-1; i >= 0; i--)
    {
      var val = searchdata(datapile[i], key);
      if (val !== undefined)
        return val;
    }
    return '';
  }
  function loop(templates, datapile, data, template)
  {
    if (!templates)
      templates = WA.templates;
    if (!data || !WA.isArray(data) || data.length == 0)
    {
      if (templates[template + ".none"])
        return templates[template + ".none"](datapile, templates);
      return "<!-- Template " + template + ".none not found for loop -->";
    }
    txt = "";
    for (var i = 0; i < data.length; i++)
    {
      datapile.push(data[i]);
      if (templates[template + ".key." + i])
        txt += templates[template + ".key." + i](datapile, templates);
      else if (i==0 && templates[template + ".first"])
        txt += templates[template + ".first"](datapile, templates);
      else if (i==data.length-1 && templates[template + ".last"])
        txt += templates[template + ".last"](datapile, templates);
      else if (i%2==0 && templates[template + ".even"])
        txt += templates[template + ".even"](datapile, templates);
      else if (templates[template])
        txt += templates[template](datapile, templates);
      else
        txt += "<!-- Template " + template + " not found for loop -->";
      datapile.pop();
    }
    return txt;
  }
  function cond(templates, field, template, datapile)
  {
    if (!templates)
      templates = WA.templates;

    val = searchdatapile(datapile, field);
    var pushed = false;
    if (val != null && (WA.isArray(val) || WA.isObject(val) || WA.isFunction(val)))
    {
      pushed = true;
      datapile.push(val);
    }
    if (!val && templates[template + ".none"])
      text = templates[template + ".none"](datapile, templates);
    else if (val && templates[template + "." + val])
      text = templates[template + "." + val](datapile, templates);
    else if (templates[template])
      text = templates[template](datapile, templates);
    else
      text = "<!-- Template " + template + " not found for cond -->";
    if (pushed)
      datapile.pop();

    return text;
  }
  function call(templates, template, data)
  {
    if (!templates)
      templates = WA.templates;
    if (templates[template])
      return templates[template](data, templates);
    return "<!-- Template " + template + " not found for call -->";
  }

  return function(data, templates)
  {
    let temp = strings.slice();
    let datapile = data
    if (!WA.isArray(data))
      datapile = [data];
    keys.forEach((key, i) =>
      {
        if (Array.isArray(key))
        {
          switch (key[0])
          {
            case "eval":
              temp[i] = temp[i] + eval(key[1]);
              break;
            case "loop":
              val = searchdatapile(datapile, key[1]);
              if (!WA.isArray(val))
                val = undefined;
              temp[i] = temp[i] + loop(templates, datapile, val, key[2]?key[2]:key[1]);
              break;
            case "cond":
              temp[i] = temp[i] + cond(templates, key[1], key[2], datapile);
              break;
            case "call":
              if (key[3])
              {
                template = key[3] + searchdatapile(datapile, key[2]);
                temp[i] = temp[i] + call(templates, template, datapile);
              }
              else
              {
                val = searchdatapile(datapile, key[2]);
                var pushed = false;
                if (WA.isArray(val) || WA.isObject(val) || WA.isFunction(val))
                {
                  pushed = true;
                  datapile.push(val);
                }
                temp[i] = temp[i] + call(templates, key[1], datapile);
                if (pushed)
                  datapile.pop();
              }
              break;
            default:
              temp[i] = temp[i] + "<!-- Parameter not recognized " + key[0] + " -->";
          }
        }
        else
        {
          temp[i] = temp[i] + searchdatapile(datapile, key);
        }
      });
    return temp.join('');
  }
};

WA.XTemplate = function(temps) {

  var templates = temps

  return function run(data) {
    return templates.main(data, templates);
  }
}

/*
    eventManager.js, WAJAF, the WebAbility(r) Javascript Application Framework
    Contains the Manager singleton to manage browser Events
    (c) 2008-2010 Philippe Thomassigny

    This file is part of WAJAF

    WAJAF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    WAJAF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with WAJAF.  If not, see <http://www.gnu.org/licenses/>.
*/

WA.Managers.event = new function()
{
  // All the attributes are PRIVATE.
  var self = this;
  listenerid = 1;
  functionid = 1;
  events = {};
  beforeflushs = [];
  flushs = [];
  keys = [];
  this.keys = keys;
  specialkeys =
  {
    'esc': 27, 'escape': 27,
    'tab': 9, 'space': 32,
    'return': 13, 'enter': 13,
    'scrolllock': 145, 'capslock': 20, 'numlock': 144,
    'pause': 19, 'break': 19,
    'insert': 45, 'delete': 46, 'backspace': 8,
    'home': 36, 'end': 35, 'pageup': 33, 'pagedown': 34,
    'left': 37, 'up': 38, 'right': 39, 'down': 40,
    'f1': 112, 'f2': 113, 'f3': 114, 'f4': 115, 'f5': 116, 'f6': 117, 'f7': 118, 'f8': 119, 'f9': 120, 'f10': 121, 'f11': 122, 'f12': 123,
    '(shift)': 16, '(control)': 17, '(alt)': 18
    };

  // eventname: one of: mousedown, mouseup, click, dblclick, mousemove,
  // mouseover, mouseout, mousewheel,
  // keydown, keyup, keypress, load, unload, scroll,
  // focus, blur, change, submit, abort, error, reset, resize
  // eventnode: the id or the node itself
  // eventfunction: pointer to the function to execute when the event happens
  // eventcapture: true/false to notify if this event is greedy
  this.addListener = this.on = this.add = this.start = this.listen = this.attachEvent = this.registerEvent = addListener;
  function addListener(eventname, eventnode, eventfunction, eventcapture)
  {
    eventnode = WA.toDOM(eventnode);
    if (!eventnode) // no node found ?
      return false;
//    WA.debug.explain('eventManager.addListener('+eventname+', '+eventnode.id+')');

    // link the UID to the node
    if (eventnode.listeneruid == undefined)
      eventnode.listeneruid = listenerid++;
    if (eventfunction.functionuid == undefined)
      eventfunction.functionuid = functionid++;

    if (events[eventnode.listeneruid] == undefined)
      events[eventnode.listeneruid] = {};
    if (events[eventnode.listeneruid][eventname] == undefined)
      events[eventnode.listeneruid][eventname] = {};

    // get the context from the ID of the node if any
    eventnode.context = WA.context;

    thefunction = function()
    {
      // support for 4GL
      if (WA.context != undefined)
      {
        var xid = oldcontext = null;
        if (this.id && this.id.indexOf('|') != -1)
        {
          xid = WA.parseID(this.id);
          oldcontext = WA.context = xid[0] + '|' + xid[1] + '|';
        }
      }
      var ret = eventfunction.apply(this, arguments);
      if (WA.context != undefined)
      {
        if (xid)
          WA.context = oldcontext;
      }
      return ret;
    }

    if (eventnode != window && eventname == 'load' && WA.browser.isMSIE) // special incompatible IE not firing onload event on images
    {
      thefunction = function(e)
      {
        if (this.readyState != 'complete' && this.readyState != 'loaded')
          return null;
        var xid = oldcontext = null;
        if (this.id && this.id.indexOf('|') != -1)
        {
          xid = WA.parseID(this.id);
          oldcontext = WA.context = xid[0] + '|' + xid[1] + '|';
        }
        var ret = eventfunction.apply(this, arguments);
        if (xid)
          WA.context = oldcontext;
        return ret;
      };
      eventnode.onreadystatechange = thefunction;
    }
    else if (eventnode.addEventListener)
    {
      if (eventname == 'mousewheel') // special incompatible mousewheel
      {
        eventnode.addEventListener('DOMMouseScroll', thefunction, eventcapture);
      }
      eventnode.addEventListener(eventname, thefunction, eventcapture);
    }
    else if (eventnode.attachEvent)
    {
      eventnode.attachEvent('on' + eventname, thefunction);
    }
    else
    {
      eventnode['on' + eventname] = thefunction;
    }
    events[eventnode.listeneruid][eventname][eventfunction.functionuid] = [eventnode, thefunction, eventcapture];
    return true;
  }

  // must be the SAME PARAMETERS as addListener
  this.removeListener = this.off = this.remove = this.stop = this.detachEvent = removeListener;
  function removeListener(eventname, eventnode, eventfunction, eventcapture)
  {
    eventnode = WA.toDOM(eventnode);
    if (!eventnode) // no node found ?
      return;
//    WA.debug.explain('eventManager.removeListener('+eventname+', '+eventnode.id+')');
    if (eventnode.listeneruid == undefined) // node not registered here
      return;
    if (eventfunction.functionuid == undefined) // function not registered here
      return;
    if (events[eventnode.listeneruid] == undefined) // already unregistered ?
      return;
    if (events[eventnode.listeneruid][eventname] == undefined) // already unregistered ?
      return;
    if (events[eventnode.listeneruid][eventname][eventfunction.functionuid] == undefined) // already unregistered ?
      return;

    if (eventname == 'load' && WA.browser.isMSIE) // special incompatible IE not firing onload event
    {
      eventnode.onreadystatechange = WA.nothing;
    }
    else if (eventnode.removeEventListener)
    {
      if (eventname == 'mousewheel')
      {
        eventnode.removeEventListener('DOMMouseScroll', events[eventnode.listeneruid][eventname][eventfunction.functionuid], eventcapture);
      }
      eventnode.removeEventListener(eventname, events[eventnode.listeneruid][eventname][eventfunction.functionuid], eventcapture);
    }
    else if (eventnode.detachEvent)
    {
      eventnode.detachEvent('on' + eventname, events[eventnode.listeneruid][eventname][eventfunction.functionuid]);
    }
    else
    {
      eventnode['on' + eventname] = null;
    }
    delete events[eventnode.listeneruid][eventname][eventfunction.functionuid];
    // *********************************************
    // do we clean the 3 levels of the array ?
  }

  // key is 'modif[+modif]+key'
  // modif is 'shift', 'alt', 'control' or 'ctrl'
  // key is 0-9, a-z, !@#$%^&*()_-+=}{]["';?><,./`~
  // can be also: special keys, arrows, functions etc. see the array in the
  // function.

  this.addKey = this.key = addKey;
  function addKey(key, callback)
  {
//    WA.debug.explain('eventManager.addKey('+key+')');
    var xkey = key.toLowerCase().split("+");
    for (var i = 0, l = xkey.length; i < l; i++)
    {
      if (xkey[i] == 'shift' || xkey[i] == 'control' || xkey[i] == 'ctrl' || xkey[i] == 'alt')
        continue;
      if (specialkeys[xkey[i]] != undefined)
        continue;
      // should be normal char, we take the 1rst one to be sure
      xkey[i] = xkey[i].charAt(0);
    }

    var data =
    {
      skey: key,
      key: xkey,
      callback: callback
    };
    keys.push(data);
  }

  this.removeKey = removeKey;
  function removeKey(key)
  {
//    WA.debug.explain('eventManager.removeKey('+key+')');
    for (var i = 0, l=keys.length; i<l; i++)
      if (keys[i].skey == key)
        keys.splice(i, 1);
  }

  /* private method */
  function keycallbackdown(e)
  {
    keycallback(e,'down');
  }

  function keycallbackup(e)
  {
    keycallback(e,'up');
  }

  function keycallback(e,type)
  {
    var code = WA.browser.getKey(e);
    var c = String.fromCharCode(code).toLowerCase();
    var shift = WA.browser.ifShift(e);
    var ctrl = WA.browser.ifCtrl(e);
    var alt = WA.browser.ifAlt(e);
    for ( var i = 0, l=keys.length; i < l; i++)
    {
      // check any keys combination if ok
      var isok = 0;
      for (var j = 0, m=keys[i]['key'].length; j < m; j++)
      {
        if (keys[i]['key'][j] == 'shift' && shift)
          isok++;
        else if (keys[i]['key'][j] == 'alt' && alt)
          isok++;
        else if (keys[i]['key'][j] == 'control' && ctrl)
          isok++;
        else if (specialkeys[keys[i]['key'][j]] == code)
          isok++;
        else if (keys[i]['key'][j] === c)
          isok++;
      }
      if (isok == keys[i]['key'].length)
      {
        keys[i]['callback'](e, keys[i]['skey'], type);
      }
    }
  }

  this.registerBeforeFlush = registerBeforeFlush;
  function registerBeforeFlush(functionflush)
  {
    beforeflushs.push(functionflush);
  }

  this.registerFlush = registerFlush;
  function registerFlush(functionflush)
  {
    flushs.push(functionflush);
  }

  this.unregisterBeforeFlush = unregisterBeforeFlush;
  function unregisterBeforeFlush(functionflush)
  {
    beforeflushs.remove(functionflush);
  }

  this.unregisterFlush = unregisterFlush;
  function unregisterFlush(functionflush)
  {
    flushs.remove(functionflush);
  }

  /* private method */
  function _beforeflush(e)
  {
    // then call all flush for other managers
    var result = '';
    for ( var i = 0, l = beforeflushs.length; i < l; i++)
    {
      result += beforeflushs[i](e);
    }
    if (result != '')
    {
      WA.browser.cancelEvent(e);   // for ie, ff, chrome, safari
      e.returnValue = result;      // for ie, ff
      return result;               // for ie
    }
  }

  function _flush(e)
  {
    // then call all flush for other managers
    for ( var i = 0, l = flushs.length; i < l; i++)
    {
      flushs[i](e);
      flushs[i] = null;
    }

    // no way to block unload on other browsers, se we destroy
    for (i in events)
    {
      for (j in events[i])
      {
        for (k in events[i][j])
        {
          if (events[i][j][k][0])
          {
            if (j == 'mousewheel')
            {
              events[i][j][k][0].removeEventListener('DOMMouseScroll', events[i][j][k][1], events[i][j][k][2]);
            }
            events[i][j][k][0].removeEventListener(j, events[i][j][k][1], events[i][j][k][2]);
          }
          else if (events[i][j][k][0].detachEvent)
          {
            events[i][j][k][0].detachEvent('on' + j, events[i][j][k][1]);
          }
          else
          {
            events[i][j][k][0]['on' + j] = null;
          }
        }
      }
    }

    // we stop listening unload and keypress
    delete events;
    delete beforeflushs;
    delete flushs;
    delete keys;
    self = null;
  }

  // we take control of unload. blocks unload only works on
  // IE, FF, CHROME and SAFARI with beforeunload / should check version of those
  this.addListener('beforeunload', window, _beforeflush, false);
  this.addListener('unload', window, _flush, false);
  // we listen the key binder
  this.addListener('keydown', document, keycallbackdown, false);
  this.addListener('keyup', document, keycallbackup, false);
}();

/*
    ajaxManager.js, WAJAF, the WebAbility(r) Javascript Application Framework
    Contains the Manager singleton to manage ajax requests
    (c) 2008-2010 Philippe Thomassigny

    This file is part of WAJAF

    WAJAF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    WAJAF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with WAJAF.  If not, see <http://www.gnu.org/licenses/>.
*/

WA.Managers.ajax = new function()
{
  var self = this;
  this.requests = [];
  this.listener = null;
  this.stateFeedBack = null; // no feedback by default
  this.timeoutabort = 0;     // automatic browser ajax control

  this.setListener = setListener;
  function setListener(listener)
  {
    self.listener = listener;
  }

  this.addStateFeedback = addStateFeedback;
  function addStateFeedback(statefeedback, timeoutabort)
  {
    self.statefeedback = statefeedback;
    if (timeoutabort)
      self.timeoutabort = timeoutabort;
  }

  this.setTimeout = setTimeout;
  function setTimeout(timeoutabort)
  {
    self.timeoutabort = timeoutabort;
  }

  function callNotify(event)
  {
    if (self.listener)
    {
      self.listener(event);
    }
  }

  this.createRequest = createRequest;
  function createRequest(url, method, data, feedback, dosend)
  {
    callNotify('create');
    var r = new WA.Managers.ajax.Request(url, method, data, feedback, dosend, self.listener, self.statefeedback, self.timeoutabort);
    if (r)
    {
      self.requests.push(r);
    }
    return r;
  }

  // data is { url:, method:, data:, }
  this.createPromiseRequest = createPromiseRequest;
  function createPromiseRequest(data)
  {
    var prom = new Promise(function(resolve, reject)
    {
      try
      {
        callNotify('create');
        var r = new WA.Managers.ajax.PromiseRequest(data, self.listener, self.timeoutabort);
        resolve(r);
      }
      catch (e)
      {
        callNotify('error-create');
        reject(-1, e);
      }
    });
    return prom;
  }

  this.createPeriodicRequest = createPeriodicRequest;
  function createPeriodicRequest(period, times, url, method, data, feedback, dosend)
  {
    callNotify('create');
    var r = new WA.Managers.ajax.Request(url, method, data, feedback, dosend, self.listener, self.statefeedback, self.timeoutabort);
    if (r)
    {
      self.requests.push(r);
      r.setPeriodic(period, times);
    }
    return r;
  }

  this.destroyRequest = destroyRequest;
  function destroyRequest(r)
  {
    for (var i=0, l=self.requests.length; i < l; i++)
    {
      if (self.requests[i] == r)
      {
        self.requests[i].destroy();
        self.requests.splice(i, 1);
        callNotify('destroy');
        break;
      }
    }
  }

  function destroy()
  {
    for (var i=0, l=self.requests.length; i < l; i++)
      self.requests[i].destroy();
    self.listener = null;
    delete self.requests;
    self = null;
  }

  WA.Managers.event.registerFlush(destroy);
}();

WA.Managers.ajax.Request = function(url, method, data, feedback, autosend, listener, statefeedback, timeoutabort)
{
  var self = this;
  // parameters
  this.url = url;
  this.method = method.toUpperCase();
  this.data = data;
  this.feedback = feedback;
  this.autosend = autosend;
  // special parameters
  this.period = 0;
  this.times = 0;
  this.statefeedback = statefeedback;    // consider waiting, error and abort feedbacks
  this.timeoutabort = timeoutabort;      // time out to abort, no default, let it to the ajax autocontrol.
  // working attributes
  this.request = null;
  this.parameters = null;
  this.putdata = null;
  this.timer = null;
  this.timerabort = null;
  this.state = 0;               // 0 = nothing, 1 = sent and waiting, 2 = finished, 3 = error
  this.listener = listener;

  try { this.request = new XMLHttpRequest(); }
  catch(e)
  { try { this.request = new ActiveXObject('Msxml2.XMLHTTP.3.0'); }
    catch(e)
    { try { this.request = new ActiveXObject('Msxml2.XMLHTTP'); }
      catch(e)
      { try { this.request = new ActiveXObject('Microsoft.XMLHTTP'); }
        catch(e)
        { alert(WA.i18n.getMessage('ajax.notsupported')); }
      }
    }
  }

  function callNotify(event, data)
  {
    if (self.listener)
    {
      self.listener(event, data);
    }
  }

  // Special parameters
  this.setPeriodic = setPeriodic;
  function setPeriodic(period, times)
  {
    self.period = period;
    self.times = times;
  }

  this.addStateFeedback = addStateFeedback;
  function addStateFeedback(statefeedback, timeoutabort)
  {
    self.statefeedback = statefeedback;
    if (timeoutabort != undefined && timeoutabort != null)
      self.timeoutabort = timeoutabort;
  }

  this.setTimeoutAbort = setTimeoutAbort;
  function setTimeoutAbort(timeoutabort)
  {
    self.timeoutabort = timeoutabort;
  }

  // Parameters for POST/GET send
  this.addParameter = addParameter;
  function addParameter(id, value)
  {
    if (self.parameters === null)
      self.parameters = {};
    self.parameters[id] = value;
  }

  // Parameters for POST/GET send
  this.addPutData = addPutData;
  function addPutData(data)
  {
    self.putdata = data;
  }

  this.getParameters = getParameters;
  function getParameters()
  {
    return self.parameters;
  }

  this.clearParameters = clearParameters;
  function clearParameters()
  {
    self.parameters = null;
  }

  function buildParametersPost()
  {
    var data = self.data || '';
    for (i in self.parameters)
      data += (data.length > 0?'&':'') + encodeURIComponent(i) + '=' + encodeURIComponent(self.parameters[i]);
    return data;
  }

  function buildParameters()
  {
    var data = self.data || '';
    for (i in self.parameters)
      data += (data.length > 0?'&':'') + escape(i) + '=' + escape(self.parameters[i]);
    return data;
  }

  // Ajax control
  function headers()
  {
    self.request.setRequestHeader('X-Requested-With', 'WAJAF::Ajax - WebAbility(r) v5');
    if (self.method == 'POST' || self.method == 'PUT')
    {
      self.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    }
//    self.request.setRequestHeader('Method', self.method + ' ' + self.url + ' HTTP/1.1');
  }

  this.send = send;
  function send(form)
  {
    if (self.timer)
      self.timer = null;
    if (self.request.readyState != 0 && self.request.readyState != 4) // still doing something
      return;

    self.request.onreadystatechange = process;
    if (self.timeoutabort)
      self.timerabort = setTimeout( function() { timeabort(); }, self.timeoutabort );
    try
    {
      var url = self.url;
      if (self.method == 'GET')
      {
        var parameters = buildParameters();
        if (parameters.length > 0)
          url += (url.match(/\?/) ? '&' : '?') + parameters;
      }
      self.request.open(self.method, url, true);
      self.request.withCredentials = true;
      if (!form)
        headers();
      callNotify('start');
      if (self.method == 'POST')
      {
        if (!!form)
          self.request.send(form);
        else
        {
          var parameters = buildParametersPost();
          self.request.send(parameters);
        }
      }
      else if (self.method == 'PUT')
      {
        if (self.putdata)
          self.request.send(self.putdata);
        else
          self.request.send(JSON.stringify(self.parameters));
      }
      else
        self.request.send(null);
      self.state = 1;
//      WA.debug.explain(WA.i18n.getMessage('ajax.send')+url, 2);
    }
    catch (e)
    {
//      WA.debug.explain(WA.i18n.getMessage('ajax.errorcreation')+url, 2);
      self.state = 3;
      processError(1, e);
    }
  }

  function process()
  {
    try
    {
      if (self.request.readyState == 4)
      {
        if (self.request.status == 200)
        {
//          WA.debug.explain(WA.i18n.getMessage('ajax.received')+self.url, 2);
          if (self.timerabort)
          {
            clearTimeout(self.timerabort);
            self.timerabort = null;
          }
          callNotify('stop');
          if (self.feedback)
          {
            self.feedback(self.request);
          }
          self.state = 2;
        }
        else
        {
//          WA.debug.explain(WA.i18n.getMessage('ajax.errorreception')+self.url, 2);
          self.state = 3;
          // we call error feedback, or alert
          processError(3, WA.i18n.getMessage('ajax.error')+self.request.status+':\n' + self.request.statusText, self.request);
        }
        self.request.onreadystatechange = WA.nothing;  // IE6 CANNOT assign null !!!
        var state = checkPeriod();
        if (!state)
          setTimeout( function() { WA.Managers.ajax.destroyRequest(self); }, 1);
      }
      else
      {
        waiting();
      }
    }
    catch(e)
    {
//      WA.debug.explain(WA.i18n.getMessage('ajax.fatalerror')+self.url+' '+e, 2);
      self.state = 3;
      processError(2, e);
    }
  }

  function checkPeriod()
  {
    if (self.period)
    {
      if (--self.times > 0)
      {
        self.timer = setTimeout( function() { self.send(); }, self.period);
        return true;
      }
    }
    return false;
  }

  function waiting()
  {
    // dispatcher for user events like "loading...", "making request", "sending information" based on readyState , etc ?
    // could also use a setInterval to periodically call this function to know how is going the call
    if (self.statefeedback)
      self.statefeedback('wait', self.request.readyState, '');
  }

  // any error
  // type = 1: error sending, 2: error during process, 3: error state != 200, 4: timeout forced
  function processError(type, error, request)
  {
    console.log('ERROR:');
    console.log(type);
    console.log(error);
    console.log(request);

    callNotify('error', type);
    if (typeof error == 'object')
      error = error.message;
    // abort and call feedback error
    if (self.statefeedback)
      self.statefeedback('error', type, error, request);
    // Default behaviour is to be silent on error
//    else
//      alert('Error: '+type+', '+error);
  }

  // we abort after a given timeout
  function doabort()
  {
    if (self.timer)
    {
      clearTimeout(self.timer);
      self.timer = null;
    }
    self.request.abort();
    self.request.onreadystatechange = WA.nothing;
    if (!checkPeriod())
      setTimeout( function() { WA.Managers.ajax.destroyRequest(self); }, 1);
  }

  // timeout abort
  function timeabort()
  {
    self.timerabort = null;
    callNotify('abortbytimeout');
    doabort();
  }

  // Manual abort
  this.abort = abort;
  function abort()
  {
    if (self.timerabort)
    {
      clearTimeout(self.timerabort);
      self.timerabort = null;
    }
    callNotify('abortbyuser');
    doabort();
  }

  this.destroy = destroy;
  function destroy()
  {
    self.period = 0;
    self.times = 0;
    if (self.timerabort)
    {
      clearTimeout(self.timerabort);
      self.timerabort = null;
    }
    if (self.timer)
    {
      clearTimeout(self.timer);
      self.timer = null;
    }
    if (self.state == 1 || self.state == 3)
    {
      doabort();
    }
    self.request.onreadystatechange = WA.nothing;
    self.clearParameters();
    delete self.request;
    self.statefeedback = null;
    self.feedback = null;
    self = null;
  }

  if (autosend)
    this.send();
}

WA.i18n.setEntry('ajax.notsupported', 'XMLHttpRequest is not supported. AJAX will not be available.');
WA.i18n.setEntry('ajax.send', 'Sending AJAX request to: ');
WA.i18n.setEntry('ajax.errorcreation', 'Error creating AJAX request to: ');
WA.i18n.setEntry('ajax.received', 'AJAX answer received from: ');
WA.i18n.setEntry('ajax.errorreception', 'Error during AJAX reception from: ');
WA.i18n.setEntry('ajax.fatalerror', 'Fatal error during AJAX reception from: ');
WA.i18n.setEntry('ajax.error', 'Error: ');



WA.Managers.ajax.PromiseRequest = function(data, listener, timeoutabort)
{
  var self = this;
  // parameters
  this.url = data.url;
  this.method = data.method.toUpperCase();
  this.data = data.data;
  this.feedback = data.feedback;
  this.autosend = data.send;
  // special parameters
  this.period = 0;
  this.times = 0;
  this.statefeedback = listener;    // consider waiting, error and abort feedbacks
  this.timeoutabort = timeoutabort;      // time out to abort, no default, let it to the ajax autocontrol.
  // working attributes
  this.request = null;
  this.parameters = null;
  this.timer = null;
  this.timerabort = null;
  this.state = 0;               // 0 = nothing, 1 = sent and waiting, 2 = finished, 3 = error
  this.listener = listener;
  this.putdata = null;
  // events
  //this.onprogress = null;
  this.onuploadprogress = null;
  this.onloadstart = null;
  this.onloadend = null;

  try { this.request = new XMLHttpRequest(); }
  catch(e)
  { try { this.request = new ActiveXObject('Msxml2.XMLHTTP.3.0'); }
    catch(e)
    { try { this.request = new ActiveXObject('Msxml2.XMLHTTP'); }
      catch(e)
      { try { this.request = new ActiveXObject('Microsoft.XMLHTTP'); }
        catch(e)
        { alert(WA.i18n.getMessage('ajax.notsupported')); }
      }
    }
  }

  function callNotify(event, data)
  {
    if (self.listener)
    {
      self.listener(event, data);
    }
  }

  // Special parameters
  this.setPeriodic = setPeriodic;
  function setPeriodic(period, times)
  {
    self.period = period;
    self.times = times;
  }

  this.addStateFeedback = addStateFeedback;
  function addStateFeedback(statefeedback, timeoutabort)
  {
    self.statefeedback = statefeedback;
    if (timeoutabort != undefined && timeoutabort != null)
      self.timeoutabort = timeoutabort;
  }

  this.setTimeoutAbort = setTimeoutAbort;
  function setTimeoutAbort(timeoutabort)
  {
    self.timeoutabort = timeoutabort;
  }

  // Parameters for POST/GET send
  this.addPutData = addPutData;
  function addPutData(data)
  {
    self.putdata = data;
  }

  this.addParameter = addParameter;
  function addParameter(id, value)
  {
    if (self.parameters === null)
      self.parameters = {};
    self.parameters[id] = value;
  }

  this.getParameters = getParameters;
  function getParameters()
  {
    return self.parameters;
  }

  this.clearParameters = clearParameters;
  function clearParameters()
  {
    self.parameters = null;
  }

  function buildParametersPost()
  {
    var data = self.data || '';
    for (i in self.parameters)
      data += (data.length > 0?'&':'') + encodeURIComponent(i) + '=' + encodeURIComponent(self.parameters[i]);
    return data;
  }

  function buildParameters()
  {
    var data = self.data || '';
    for (i in self.parameters)
      data += (data.length > 0?'&':'') + escape(i) + '=' + escape(self.parameters[i]);
    return data;
  }

  // Ajax control
  function headers()
  {
    self.request.setRequestHeader('X-Requested-With', 'WAJAF::Ajax - WebAbility(r) v5');
    if (self.method == 'POST' || self.method == 'PUT')
    {
      self.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    }
/*
      if (self.request.overrideMimeType)
        self.request.setRequestHeader('Connection', 'close');
*/
//    self.request.setRequestHeader('Method', self.method + ' ' + self.url + ' HTTP/1.1');
  }

  this.send = send;
  function send(form)
  {
    prom = new Promise(function(resolve, reject) {
      if (self.timer)
        self.timer = null;
      if (self.request.readyState != 0 && self.request.readyState != 4) // still doing something
      {
        reject(1, "NO READY STATE, STILL DOING SOMETHING");
        return;
      }

      self.request.onreadystatechange = process;
      if (self.timeoutabort)
        self.timerabort = setTimeout( function() { timeabort(); }, self.timeoutabort );
      try
      {
        var url = self.url;
        if (self.method == 'GET')
        {
          var parameters = buildParameters();
          if (parameters.length > 0)
            url += (url.match(/\?/) ? '&' : '?') + parameters;
        }
        self.request.open(self.method, url, true);
        self.request.withCredentials = true;
        // events
        self.request.onloadstart = ((self.onloadstart && (typeof(self.onloadstart) === 'function')) ? self.onloadstart: null);
        var onuploadprogress = ((self.onuploadprogress && (typeof(self.onuploadprogress) === 'function')) ? self.onuploadprogress: null);
        self.request.upload.addEventListener('progress', onuploadprogress); //progress de post
        // self.request.onprogress //GET progress
        self.request.onloadend = ((self.onloadend && (typeof(self.onloadend) === 'function')) ? self.onloadend: null);
        // events -- /
        if (!form)
          headers();
        callNotify('start');
        if (self.method == 'POST')
        {
          if (!!form)
            self.request.send(form);
          else
          {
            var parameters = buildParametersPost();
            self.request.send(parameters);
          }
        }
        else if (self.method == 'PUT')
        {
          if (self.putdata)
            self.request.send(self.putdata);
          else
            self.request.send(JSON.stringify(self.parameters));
        }
        else
          self.request.send(null);
        self.state = 1;
      }
      catch (e)
      {
        self.state = 3;
        console.log("error", e)
        reject(-1, e);
      }

      function process()
      {
        try
        {
          if (self.request.readyState == 4)
          {
            if (self.request.status == 200)
            {
              if (self.timerabort)
              {
                clearTimeout(self.timerabort);
                self.timerabort = null;
              }
              callNotify('stop');
              resolve(self.request.responseText);
              self.state = 2;
            }
            else
            {
    //          WA.debug.explain(WA.i18n.getMessage('ajax.errorreception')+self.url, 2);
              self.state = 3;
              // we call error feedback, or alert
              reject(self.request.status, self.request.statusText);
            }
            self.request.onreadystatechange = WA.nothing;  // IE6 CANNOT assign null !!!
            var state = checkPeriod();
            if (!state)
              setTimeout( function() { WA.Managers.ajax.destroyRequest(self); }, 1);
          }
          else
          {
            waiting();
          }
        }
        catch(e)
        {
          self.state = 3;
          reject(-2, e);
        }
      }
    });
    return prom;
  }

  function checkPeriod()
  {
    if (self.period)
    {
      if (--self.times > 0)
      {
        self.timer = setTimeout( function() { self.send(); }, self.period);
        return true;
      }
    }
    return false;
  }

  function waiting()
  {
    // dispatcher for user events like "loading...", "making request", "sending information" based on readyState , etc ?
    // could also use a setInterval to periodically call this function to know how is going the call
    if (self.statefeedback)
      self.statefeedback('wait', self.request.readyState, '');
  }

  // we abort after a given timeout
  function doabort()
  {
    if (self.timer)
    {
      clearTimeout(self.timer);
      self.timer = null;
    }
    self.request.abort();
    self.request.onreadystatechange = WA.nothing;
    if (!checkPeriod())
      setTimeout( function() { WA.Managers.ajax.destroyRequest(self); }, 1);
  }

  // timeout abort
  function timeabort()
  {
    self.timerabort = null;
    callNotify('abortbytimeout');
    doabort();
  }

  // Manual abort
  this.abort = abort;
  function abort()
  {
    if (self.timerabort)
    {
      clearTimeout(self.timerabort);
      self.timerabort = null;
    }
    callNotify('abortbyuser');
    doabort();
  }

  this.destroy = destroy;
  function destroy()
  {
    self.period = 0;
    self.times = 0;
    if (self.timerabort)
    {
      clearTimeout(self.timerabort);
      self.timerabort = null;
    }
    if (self.timer)
    {
      clearTimeout(self.timer);
      self.timer = null;
    }
    if (self.state == 1 || self.state == 3)
    {
      doabort();
    }
    self.request.onreadystatechange = WA.nothing;
    self.clearParameters();
    delete self.request;
    self.statefeedback = null;
    self.feedback = null;
    self = null;
  }

  /*if (data.send)
    return this.send();*/
  if (self.autosend)
    this.send();
  return this;
}
WA.Managers.externloader = new function()
{
  var self = this;
  var requestedJs = [];
  var requestedCss = [];

  /* ================================================================================ */
  /* Códigos externos */
  /* ================================================================================ */
  this.loadexterncode = loadexterncode;
  function loadexterncode(src, text, listener, cfasync)
  {
    if (requestedJs.indexOf(src) > -1) // este recurso ya fue cargado
      return;
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = src;
    if (text) s.text = text;
    if (cfasync != undefined)
      s.setAttribute("data-cfasync", cfasync);
    if (listener)
    {
      s.onload = listener;
      s.onreadystatechange = function() { if (this.readyState == 'complete') { listener(); } };
    }
    document.getElementsByTagName('head')[0].appendChild(s);
    requestedJs.push(src);
    return s;
  }

  /* ================================================================================ */
  /* CSS externos */
  /* ================================================================================ */

  this.loadexterncss = loadexterncss;
  function loadexterncss(src, listener, cfasync)
  {
    if (requestedCss.indexOf(src) > -1) //el css ya fue cargado
      return;
    var s = document.createElement('link');
    s.setAttribute('rel', 'stylesheet');
    s.setAttribute('type','text/css');
    s.setAttribute('href', src);
    if (listener)
    {
      s.onload = listener;
      s.onreadystatechange = function() { if (this.readyState == 'complete') { listener(); } };
    }
    document.getElementsByTagName('head')[0].appendChild(s);
    requestedCss.push(src);
  }
}
WA.Managers.validator =
{
  version: '1.1.0'
}

WA.Managers.validator.base = function(listener)
{
  var self = this;

  this.status = false;
  this.blurred = false;
  this.listener = listener;
}

WA.Managers.validator.textfield = function(id, params, checkimage, listener)
{
  var self = this;
  WA.Managers.validator.textfield.sourceconstructor.call(this, listener);

  this.Node = WA.toDOM(id);
  this.NodeCheckImage = WA.toDOM(checkimage);
  this.id = this.Node.id;
  this.visibility = params.visibility?params.visibility:false,

  this.checks = {
    minlength: params.minlength?params.minlength:null,
    maxlength: params.maxlength?params.maxlength:null,
    minwords: params.minwords?params.minwords:null,
    maxwords: params.maxwords?params.maxwords:null,
    notempty: params.notempty?params.notempty:null,
    format: params.format?new RegExp(params.format):null,
    extra: params.checkextra?params.checkextra:null
  };

  this.errors = {
    minlength: false,
    maxlength: false,
    minwords: false,
    maxwords: false,
    notempty: false,
    format: false,
    extra: false
  };

  this.errormessages = {
    minlength: 'Error: tiene que capturar mínimo ' + this.minlength + ' carácteres',
    maxlength: 'Error: tiene que capturar máximo ' + this.maxlength + ' carácteres',
    minwords: 'Error: tiene que capturar mínimo ' + this.minwords + ' palabras',
    maxwords: 'Error: tiene que capturar mínimo ' + this.maxwords + ' palabras',
    notempty: 'Error: tiene que capturar mínimo 1 caracter',
    format: 'Error: el campo no tiene un formato válido',
    extra: 'Error: verifique el valor del campo'
  };

  WA.Managers.event.on('focus', this.Node, focus, true);
  WA.Managers.event.on('blur', this.Node, blur, true);
  WA.Managers.event.on('keyup', this.Node, keyup, true);
  WA.Managers.event.on('paste', this.Node, keyup, true);
  WA.Managers.event.on('change', this.Node, keyup, true);

  function focus(e)
  {
    var n = WA.toDOM(self.id + '_tooltip');
    if (n)
      n.style.display = '';
  }

  function blur(e)
  {
    var n = WA.toDOM(self.id + '_tooltip');
    if (n)
      n.style.display = 'none';
    self.blurred = true;
  }

  function keyup(e)
  {
    var t = setTimeout(validar, 0);
  }

  this.validar = validar;
  function validar()
  {
    for (var i in self.errors)
      self.errors[i] = false;

    var value = self.Node.value;

    self.status = true;

    if (self.checks.notempty && value == '')
    {
      self.status = false;
      self.errors.notempty = true;
    }
    if (self.checks.minlength && value.length < self.checks.minlength)
    {
      self.status = false;
      self.errors.minlength = true;
    }
    if (self.checks.maxlength && value.length > self.checks.maxlength)
    {
      self.status = false;
      self.errors.maxlength = true;
    }
    if (self.checks.maxwords || self.checks.minwords)
    {
      var text = value;
      text = text.replace(/^[ ]+/, "");
      text = text.replace(/[ ]+$/, "");
      text = text.replace(/[ ]+/g, " ");
      text = text.replace(/[\n]+/g, " ");
      var numpalabras = (text.length>0?text.split(" ").length:0);
      if (numpalabras < self.checks.minwords)
      {
        self.status = false;
        self.errors.minwords = true;
      }
      if (numpalabras > self.checks.maxwords)
      {
        self.status = false;
        self.errors.maxwords = true;
      }
    }
    if (self.checks.format && value.match(self.checks.format) == null)
    {
      self.status = false;
      self.errors.format = true;
    }
    if (self.checks.extra)
    {
      var result = self.checks.extra(value);
      if (result)
      {
        self.status = false;
        self.errors.extra = true;
      }
    }
    if (self.visibility)
      self.NodeCheckImage.style.visibility = self.status?'visible':'hidden';
    else
      self.NodeCheckImage.style.display = self.status?'':'none';

    if (self.listener)
      self.listener(self);
  }

  this.forceerror = forceerror;
  function forceerror()
  {
    self.status = false;
    self.errors.extra = true;
    if (self.visibility)
      self.NodeCheckImage.style.visibility = self.status?'visible':'hidden';
    else
      self.NodeCheckImage.style.display = self.status?'':'none';
    if (self.listener)
      self.listener(self);
  }

  validar();
}

// Add basic element code
WA.extend(WA.Managers.validator.textfield, WA.Managers.validator.base);


WA.Managers.validator.checkboxfield = function(id, params, checkimage, listener)
{
  var self = this;
  WA.Managers.validator.checkboxfield.sourceconstructor.call(this, listener);

  this.Node = WA.toDOM(id);
  this.NodeCheckImage = WA.toDOM(checkimage);
  this.id = this.Node.id;

  this.checks = {
    notempty: params.notempty?params.notempty:null,
    extra: params.checkextra?params.checkextra:null
  };

  this.errors = {
    notempty: false,
    extra: false
  };

  this.errormessages = {
    notempty: 'Error: tiene que poner una palemita en este campo',
    extra: 'Error: verifique el valor del campo'
  };

  WA.Managers.event.on('focus', this.Node, focus, true);
  WA.Managers.event.on('blur', this.Node, blur, true);
  WA.Managers.event.on('mouseover', this.Node, focus, true);
  WA.Managers.event.on('mouseout', this.Node, blur, true);
  WA.Managers.event.on('click', this.Node, keyup, true);
  WA.Managers.event.on('change', this.Node, keyup, true);

  function focus(e)
  {
    var n = WA.toDOM(self.id + '_tooltip');
    if (n)
      n.style.display = '';
  }

  function blur(e)
  {
    var n = WA.toDOM(self.id + '_tooltip');
    if (n)
      n.style.display = 'none';
  }

  function keyup(e)
  {
    var t = setTimeout(validar, 0);
  }

  function validar()
  {
    for (var i in self.errors)
      self.errors[i] = false;

    var checked = self.Node.checked;

    self.status = true;

    if (self.checks.notempty && !checked)
    {
      self.status = false;
      self.errors.notempty = true;
    }
    if (self.checks.extra)
    {
      var result = self.checks.extra(checked);
      if (result)
      {
        self.status = false;
        self.errors.extra = true;
      }
    }

    if (self.listener)
      self.listener(self);
  }

  validar();
}

// Add basic element code
WA.extend(WA.Managers.validator.checkboxfield, WA.Managers.validator.base);
function ajaximage(formid, nodeid)
{
  var self = this;
  this.formid = formid;
  this.form = WA.toDOM(formid);
  this.nodeid = nodeid;                         // field with name of image
  this.downloadnode = WA.toDOM(nodeid+'_download');    // field with upload button
  this.imagenode = WA.toDOM(nodeid+'_image');          // image
  this.filenode = WA.toDOM(nodeid+'_file');            // temporary file name

  this.loading = false;
  this.loadingimage = KL.cdn7domains + '/kiwi5/static/loading.gif';
  this.action = '/doeditor?orden=foto';
  this.page = null;
  this.container = null;
  this.check = null;

  this.setLoadingImage = setLoadingImage;
  function setLoadingImage(img)
  {
    self.loadingimage = img;
  }

  this.setAction = setAction;
  function setAction(action)
  {
    self.action = action;
  }

  this.setPage = setPage;
  function setPage(page)
  {
    self.page = page;
  }

  this.changeImage = changeImage;
  function changeImage()
  {
    var oldtarget = self.form.target;
    var oldaction = self.form.action;
    var oldpage = null;
    
    if (self.form.elements["orden"] && self.page)
    {
      oldpage = self.form.elements["orden"].value;
      self.form.elements["orden"].value = self.page;
    }
    
    self.form.action = KL.graphdomains + self.action; // set the URL 
    self.form.target = self.nodeid + '_hiddeniframe';
    self.loading = true;
    if (self.check)
      self.check('change');
    if (WA.toDOM("barratiempo_subeimg")) //hay progressbar ?  
      self.imagenode.src = self.loadingimage;
    
    var imageFile = (self.downloadnode.files.length > 0 ? self.downloadnode.files[0]: false);
    if (!imageFile)
      { alert('No image file'); return; }
    
    self.imagenode.src = KL.cdn7domains + '/kiwi5/static/loading.gif';
    self.imagenode.style.display = "block";

    var auxForm = new FormData();
    auxForm.append(self.nodeid + '_download', imageFile);
    WA.Managers.ajax.createPromiseRequest({ url: self.form.action, method: 'POST', send: false})
      .then(function(request) {
              request.onloadstart = () => {showProgressBar();};
              request.onuploadprogress = function (e) {
                if (e.lengthComputable)
                {
                  var progress = Math.round((e.loaded / e.total) * 100); // 0 - 100 %
                  setProgressToProgresBar(progress);
                }
              };
              //request.onloadend = () => {console.log('wb-loadend');};//hideProgressBar();};
              return request.send(auxForm);
            })
      .then(function(response) {
              processResponseScript(response);
            })
      .catch(function(code, err) {
              hideProgressBar();
              KL.Modules.modal.alerta(WA.i18n.getMessage("errorcargaimagen"));
            } )
    
    self.form.target = oldtarget;
    self.form.action = oldaction;
    if (oldpage)
      self.form.elements["orden"].value = oldpage;
  }
  
  // /--- PROGRESSBAR FUNCTIONS ---\
  
  //progress (0 - 100) int
  function setProgressToProgresBar(progress)
  {
    if (isNaN(progress))
      return;
    
    progress = parseInt(progress);
    if (progress < 0)
      progress = 0;
    if (progress > 100)
      progress = 100;
    
    var progressNode = WA.toDOM("barratiempo_indiceimg");
    if (progressNode)
      progressNode.style.width = progress + '%';
  }
  
  function showProgressBar()
  {
    var progressBarNode = WA.toDOM("barratiempo_subeimg");
    if (progressBarNode && (progressBarNode.style.display === 'none'))
      { setProgressToProgresBar(0); progressBarNode.style.display = 'block'; }
  }
  
  function hideProgressBar()
  {
    var progressBarNode = WA.toDOM("barratiempo_subeimg");
    if (progressBarNode && (progressBarNode.style.display === 'block'))
      progressBarNode.style.display = 'none';
  }
  
  // \--- PROGRESSBAR FUNCTIONS ---/
  
  function processResponseScript(response)
  {
    var code = JSON.parse(response);
    if (code.status == 'OK')
    {
      self.imagenode.src = "";
      self.imagenode.style.display = "none";
      setImage(code.path, code.name);
    }
    else
    {
      self.imagenode.style.display = "none";
      KL.Modules.modal.hidepopup();
      KL.Modules.modal.alerta(code.message);
    }
  }

  this.setImage = setImage;
  function setImage(path, name)
  {
    self.imagenode.src = path+name; //WA.toDOM('IMAGEN_image').src = '';
    self.imagenode.style.width = '120px'; //WA.toDOM('IMAGEN_image').style.width = '0px';
    self.imagenode.style.margin = '0 auto'; //WA.toDOM('IMAGEN_image').style.width = '0px';
    self.filenode.value = name;
    self.loading = false;
    self.imagenode.style.display = "block";
    if (self.check)
      self.check('set');
    
    WA.toDOM("upload-image-validaImagen").disable = false;
  }
  
  this.setCheck = setCheck;
  function setCheck(check)
  {
    self.check = check;
  }

  this.downloadnode.onchange = this.changeImage;

  return this;
}
KL = {};
KL.version = "7.0.1";
KL.webdomains = 'https://www.kiwilimon.com';
KL.cdndomains = 'https://cdn.kiwilimon.com';
KL.cdn7domains = 'https://cdn7.kiwilimon.com';
KL.graphdomains = 'https://gr.kiwilimon.com';
KL.identitydomains = 'https://im.kiwilimon.com';
KL.pgraphdomains = 'https://graph.kiwilimon.com';
KL.officialname = "Kiwilimon";
KL.urllogo = KL.cdn7domains + "/img/static/logo-kiwilimon-verde.png";
KL.logowidth = "384";
KL.logoheight = "80";

KL.cookiedomain = 'kiwilimon.com';
KL.videodomains = 'https://video.kiwilimon.com'
KL.videochannel = 'kiwilimon'
KL.ssl = (document.location.protocol == "https:");
KL.rootsite = "kiwi";
KL.skin = 'kiwi-pc';
KL.devel = false;
KL.fbid = '250305718425857';
KL.alexaid = "Cq4Hj1aotV008f";
KL.alexadomain = "kiwilimon.com";
KL.comscoreid = "7750805";
KL.device = ""; // Set after full code loading
KL.language = ""; // Set after full code loading
KL.KR = true;   // kontent room yes

KL.pagedata = {};

KL.appleredirecturl = "https://www.kiwilimon.com/login";
KL.appleclientid = "com.kiwilimon.kiwilimon";

KL.googleclientauth = '283529264243-vvdq0isu1kiu6ic5rob68ngf2imok0j7.apps.googleusercontent.com';

KL.firebase = '283529264243-vvdq0isu1kiu6ic5rob68ngf2imok0j7.apps.googleusercontent.com';
KL.firebaseauthdomain = "kiwilimon-app.firebaseapp.com";
KL.firebaseurl = "https://kiwilimon-app.firebaseio.com";
KL.firebasestoreagebucket = "kiwilimon-app.appspot.com";
KL.firebasemessagingsender = "283529264243";

KL.huaweiclient = "100355327"; 
KL.huaweiredirecturl = "https://www.kiwilimon.com/login/social";
KL.huaweiscope = "openid+profile";

KL.openpayID = "meq8emxd1wpyyq6rs5ya";
KL.openpayKey = "pk_22ad8b73303542bd89a904d66118a570";
KL.openpaySandboxMode = false;

KL.currenttemplate = null;
KL.currentcode = null;

KL.Modules = {};
KL.LoadedModules = [];
KL.northfork = false;
KL.analyticsTag = "G-X0MHE23QYB";

KL.onLoad=function(){
  KL.loader.Start();
};

KL.paint=function(){
  KL.Modules.images.analyze();

  if (!KL.Modules.client || !KL.Modules.client.clientpro)
    KL.Modules.ads.analyze();
};
KL.mydomains = 'https://www.kiwilimon.com';
KL.fblocale = 'es_LA';
KL.i18n = {
  "tools_favoritos_ok1": "Favoritos:",
  "tools_favoritos_ok2": "Se ha agregado este elemento a tus favoritos.",
  "tools_collections_ok1": "Colecciones:",
  "tools_collections_ok2": "Se ha agregado este elemento a tu colección.",
  "tools_listasuper_ok1": "Lista del súper:",
  "tools_listasuper_ok2": "La receta se ha agregado a la lista del súper."
}
KL.manageError = function(e)
{
  var r = WA.Managers.ajax.createRequest(KL.graphdomains + '/v6/bitacora', 'POST', null, null, false);
  r.addParameter('data', '' + e + '\n' + e.stack );
  r.addParameter('device', KL.device );
  r.addParameter('language', KL.language );
  r.send();
}

KL.fixedEncodeURIComponent = function(str)
{
  return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}

KL.loader = new function()
{
  var self = this;

  var started = false;        // true when code is already started
  var nodeload = null;
  var loader = 0;
  var scriptloaded = true;    // true at first load: anything comes with the page
  var codeloaded = true;

  var recon_time = 30000;     // hit news every 30 segunds at start
  var recon_timeinc = 5000;   // wait 5 seconds more each loop
  var recon_timemax = 120000; // max 2 minutes to search news

  var hooksstart = {};        // llamar al onload del codigo JS en general (primera vez solamente que se carga la app)
  var hooksload = {};         // llamar despues de que se carga por PRIMERA VEZ la pagina
  var hookspostload = {};     // llamar despues de que se carga algo dentro del bodycontainer, puede ser llamado MUCHAS VECES en cualquier cambio de contenido de la misma pagina
  var hooksunload = {};       // llamar antes de que se descarga algo del bodycontainer
  var hooksrecon = {};        // llamar cada X segundos para conocer nuevas cosas del servidor (noticias x ej.)
  this.hookspostload = hookspostload;
  this.waitload = 10000;   // wait X seconds before loading not visible data if needed
  self.reloadPro = false;

  var pleaseload = null;
  /* ================================================================================ */
  /* Main start function                                                              */
  /* ================================================================================ */
  function addLoad(n)
  {
    if (loader == 0)
    {
      loader = 0;
      nodeload.style.top = "0px";
      nodeload.className = "anim";
    }
    loader += n;
    nodeload.style.width = loader + "%";
    if (loader == 100)
    {
      setTimeout(function() { endload(); }, 1000);
    }
  }

  function endload()
  {
    loader = 0;
    nodeload.style.top = "-2px";
    nodeload.className = "";
    if (pleaseload != null)
    {
      loadPage(pleaseload[0], pleaseload[1], pleaseload[2])
      pleaseload = null;
    }
  }

  this.Start = Start;
  function Start()
  {
    if (started) // doble protección: si el onstart de esta funcion pasa justo despues del onload de KL, pudiera ser llamado también
      return;
    started = true;

    // Instala, registra y activa el Service Worker y da mantenimiento a los cachés
    initServiceWorker();

    nodeload = WA.toDOM("header-loading");
    loader = 75; // only have to paint the page

    callHooksStart();
    cookie = KL.loader.getCookie('northfork');
    KL.northfork = cookie == '1';

    // apply template on crosslink
    template = WA.templater`${['loop', 'crosslink','feed_payload']}`;
    text = template(KL.pagedata.page);
    WA.toDOM('footer-crosslink').innerHTML = text;
    delete(WA.toDOM('footer-crosslink').dataset.scanned);

    buildPage(); // build the page
    // carga todos los scripts de terceras partes asyncronamente lazy load despues de 2 segundos para proteger el speed insight y la interactividad con el usuario
    postload();
    KL.Modules.ads.analyze(); // for first ads, data is already here

    // Call news in 5 seconds
    setTimeout(recon, 10000);  // recon after 5 sec: call news and notifs
    loadKR();
  }

  this.buildPage = buildPage;
  function buildPage()
  {
    KL.Modules.modal.hidepopup();
    KL.Modules.menu.switchoff();
    KL.Modules.language.switchoff();
    KL.Modules.search.switchoff();
    KL.Modules.client.switchoff();
    window.scrollTo(0,0);
    WA.toDOM("page_container").innerHTML = KL.currenttemplate(KL.currentcode);
    // call los Loads de los modulos varios
    addLoad(25);
    callHooksLoad();
  }

  function changePage()
  {
    addLoad(25); // called twice
    if (!scriptloaded || !codeloaded)
      return; // we wait both loaded
    callHooksUnload();

    fc = WA.toDOM('footer-crosslink');
    if (fc)
    {
      template = WA.templater`${['loop', 'crosslink','feed_payload']}`;
      text = template(KL.pagedata.page);
      fc.innerHTML = text;
      delete(WA.toDOM('footer-crosslink').dataset.scanned);
    }

    buildPage();
    callHooksPostLoad();
    // analytics metrics
    KL.Modules.stat.registerPage();
    /* ALEXA METRICS */
    //as.parentNode.removeChild( as );
    window._atrk_fired = 0;
    //(function() { as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = "//certify-js.alexametrics.com/atrk.js"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();
  }

  this.loadPage = loadPage;
  function loadPage(url, hash, donotpush)
  {
    // only one page load at the same time !!
    if (loader != 0)
    {
      pleaseload = [url,hash,donotpush];
      return;
    }
 
    scriptloaded = false;
    codeloaded = false;
    addLoad(25);

    var s = document.createElement('script');
    s.src = url + (url.indexOf("?")==-1?"?":"&") + "data=page&loaded=" + JSON.stringify(KL.LoadedModules);
    s.onload = function() { getpagecode(s); };
    s.onerror = function(d) { console.log("ERROR LOADING PAGE", url, d); };
    document.getElementsByTagName('head')[0].appendChild(s);

    // ask for page data too
    var request = WA.Managers.ajax.createRequest(KL.graphdomains + '/v6/page', 'POST', "device="+KL.device+"&language="+KL.language+"&path="+url, getpagedata, true);

    KL.loadingpage = true;
    if (!donotpush)
      window.history.pushState('', 'Kiwilimon ' + url, url + (hash?hash:''));
  }

  function getpagecode(s)
  {
    scriptloaded = true;
    changePage();
  }

  function getpagedata(request)
  {
    // pagedata contains 2 parts:
    // - Ads data
    // - Crosslink data
    KL.pagedata.page = JSON.parse(request.responseText)
    codeloaded = true;
    changePage();

    setTimeout(() => {
      if(KL.pagedata.page.keywords[0] == 'buscar')
        if(KL.currentcode.buscarlista.total == 0)
          window.location.reload();
    }, 600);

    // evita display de publicidad usuario pro
    if(self.reloadPro)
      setTimeout(()=>{location.href = location.href;}, 2000);
    self.reloadPro = false;
  }

  function historystate(event)
  {
    loadPage(document.location.pathname, null, true);
  }

  this.callPage = callPage;
  function callPage(event)
  {
    WA.browser.cancelEvent(event);
    var url = this.pathname + this.search;
    var hash = this.hash;
    loadPage(url, hash);
    return false;
  }

  /* ================================================================================ */
  /* Hooks START ANYTHING                                                             */
  /* ================================================================================ */

  this.addHookStart = addHookStart;
  function addHookStart(id, hook)
  {
    hooksstart[id] = hook;
    // If already started, call it immediatly
    if (started)
      hook();
  }

  function callHooksStart()
  {
    for (var i in hooksstart)
    {
      hooksstart[i]();
    }
  }

  /* ================================================================================ */
  /* Hooks LOAD A PAGE                                                                */
  /* ================================================================================ */

  this.addHookLoad = addHookLoad;
  function addHookLoad(id, hook)
  {
    hooksload[id] = hook;
  //    if (started)
  //      hook();
  }

  this.callHooksLoad = callHooksLoad;
  function callHooksLoad()
  {
    // Crea la cookie si se le pasa: https://www.kiwilimon.com/?northfork=1
    /*if (getVariable("northfork") == '1') {
      setCookie("northfork", 1, 3600*24*31, KL.cookiedomain)
      KL.northfork = true;
    }*/
    // Botón de northfork solo debe apareecr en kiwi y México 07/02/2023
    if(KL.rootsite == "kiwi" && KL.Modules.client.getCountry() == 'MX')
      KL.northfork = true;

    for (var i in hooksload)
    {
      hooksload[i]();
    }
    if(KL.Modules.client.clientlogged)
      KL.Modules.client.loadAvatarChef();

    KL.Modules.links.analyze();
    KL.Modules.images.analyze();
    KL.Modules.ads.onload();
  }

  /* ================================================================================ */
  /* Hooks LOAD A PART OF A PAGE                                                      */
  /* ================================================================================ */

  this.addHookPostLoad = addHookPostLoad;
  function addHookPostLoad(id, hook)
  {
    hookspostload[id] = hook;
  }

  this.callHooksPostLoad = callHooksPostLoad;
  function callHooksPostLoad()
  {
    for (var i in hookspostload)
    {
      hookspostload[i]();
    }
    KL.Modules.links.analyze();
    KL.Modules.images.analyze();
    KL.Modules.ads.refresh();
    KL.Modules.ads.analyze();
  }

  /* ================================================================================ */
  /* Hooks RECON (cada 30 sec + lazy post time)                                       */
  /* ================================================================================ */

  this.addHookRecon = addHookRecon;
  function addHookRecon(id, hook)
  {
    hooksrecon[id] = hook;
  }

  this.callHooksRecon = callHooksRecon;
  function callHooksRecon()
  {
    for (var i in hooksrecon)
    {
      hooksrecon[i]();
    }
  }

  /* ================================================================================ */
  /* Hooks UNLOAD A PAGE                                                              */
  /* ================================================================================ */

  this.addHookUnload = addHookUnload;
  function addHookUnload(id, hook)
  {
    hooksunload[id] = hook;
  }

  this.callHooksUnload = callHooksUnload;
  function callHooksUnload()
  {
    for (var i in hooksunload)
    {
      hooksunload[i]();
    }
  }

  function postload() {
    /* DFP */
    //WA.Managers.externloader.loadexterncode("//www.googletagservices.com/tag/js/gpt.js");
    WA.Managers.externloader.loadexterncode("//securepubads.g.doubleclick.net/tag/js/gpt.js", null, null, true);

    /* FACEBOOK PIXEL */
    !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window, document,'script',
    'https://connect.facebook.net/'+KL.fblocale+'/fbevents.js');
    fbq('init', KL.fbid);
    fbq('track', 'PageView');

    /* BROWSER UPDATE */
//    window.$buoop = {required:{e:12,f:-5,o:-5,s:-2,c:71},noclose:true,insecure:true,unsupported:true,style:"corner",api:2020.03 };
//    WA.Managers.externloader.loadexterncode("//browser-update.org/update.min.js");

    /* COMSCORE */
    window._comscore = window._comscore || [];
    window._comscore.push({ c1: "2", c2: KL.comscoreid });
    WA.Managers.externloader.loadexterncode("//sb.scorecardresearch.com/beacon.js");

    setTimeout(function() { KL.Modules.video.LoadPlayer(); }, 20000)

    loadNavegg();

    /* Amazon APS */
    //load the apstag.js library
    !function(a9,a,p,s,t,A,g){if(a[a9])return;function q(c,r){a[a9]._Q.push([c,r])}a[a9]={init:function(){q("i",arguments)},fetchBids:function(){q("f",arguments)},setDisplayBids:function(){},targetingKeys:function(){return[]},_Q:[]};A=p.createElement(s);A.async=!0;A.src=t;g=p.getElementsByTagName(s)[0];g.parentNode.insertBefore(A,g)}("apstag",window,document,"script","//c.amazon-adsystem.com/aax2/apstag.js");

    /* Google FIREBASE */
    //    WA.Managers.externloader.loadexterncode("https://www.gstatic.com/firebasejs/3.6.5/firebase.js",'',firebasedone);
  }

  function initServiceWorker()
  {
    /* Aquí inicia el service worker */
    if("serviceWorker" in navigator)
    {
      var unRegister = false;

      // Service Worker para cachear objetos
      navigator.serviceWorker.register("/sw.js", { scope: "/" })
        .then(function(registration) {
          // Registration was successful
          //console.log("ServiceWorker registration successful with scope: ", registration.scope);

          navigator.serviceWorker.ready.then((registration) => {
            var prop = {
              'KL.webdomains': KL.webdomains,
              'KL.cdndomains': KL.cdndomains,
              'KL.cdn7domains': KL.cdn7domains,
              'KL.graphdomains': KL.graphdomains,
              'KL.identitydomains': KL.identitydomains,
              'KL.pgraphdomains': KL.pgraphdomains,
              'cdn7kiwi': 'https://cdn7.kiwilimon.com',
            }
            registration.active.postMessage(prop);
          });

          if(KL.loader.getCookie("swExpire") != 1)
          {
            setCookie("swExpire", 1, 4 * 24 * 60 * 60 * 1000, KL.cookiedomain); // 4 días
            navigator.serviceWorker.addEventListener("message", (event) => {
              // event is a MessageEvent object
              //console.log('The service worker sent me a message:', event);
            });
          
            navigator.serviceWorker.ready.then((registration) => {
              registration.active.postMessage("update");
            });
            //console.log("no encontró la cookie")
          }

          if(unRegister)
          {
            // Expira la cookie swExpire
            var date = new Date();
            date.setTime(date.getTime() + (-24*60*60*1000));
            var expires = "; expires=" + date.toGMTString();
            document.cookie = "swExpire=" + expires + "; domain=" + KL.cookiedomain + "; path=/";

            caches.keys()
              .then(function(cacheNames)
              {
                Promise.all([cacheNames.map((cn) => { caches.delete(cn); }), registration.unregister()])
                  .then(()=>{
                    console.info("SW: unregister");
                  });
              })
          }
        },
        function(err) {
            // registration failed :(
            console.log("ServiceWorker registration failed: ", err);
        });
        
        navigator.serviceWorker.oncontrollerchange = (event) => {
          //console.log('New SW')
        }

      /*if('PushManager' in window)
      {
        // Service Worker para FCMessaging 
        navigator.serviceWorker.register('/firebase-messaging-sw.js').then(function(registration) {
          // Registration was successful
          console.log('ServiceWorker firebase registration successful with scope: ', registration.scope);
        
        }, function(err) {
           // registration failed :(
           console.log('Firebase ServiceWorker registration failed: ', err);
        });
      } else {
        console.warn('Push messaging is not supported');
      }*/
    }
  }

  function loadNavegg()
  {
    // kiwi
    var txt = "(function(n,v,g){o='Navegg';if(!n[o]){ " +
    "a=v.createElement('script');a.src=g;b=document.getElementsByTagName('script')[0]; " +
    "b.parentNode.insertBefore(a,b);n[o]=n[o]||function(parms){ " +
    "n[o].q=n[o].q||[];n[o].q.push([this, parms])};}}) " +
  "(window, document, 'https://tag.navdmp.com/universal.min.js'); " +
  "window.naveggReady = window.naveggReady||[]; " +
  "window.nvg75736 = new Navegg({ " +
    "acc: 75736 " +
  "});"

    if(KL.rootsite == "crafto")
    {
      txt = "(function(n,v,g){o='Navegg';if(!n[o]){ " +
        "a=v.createElement('script');a.src=g;b=document.getElementsByTagName('script')[0]; " +
        "b.parentNode.insertBefore(a,b);n[o]=n[o]||function(parms){ " +
        "n[o].q=n[o].q||[];n[o].q.push([this, parms])};}}) " +
      "(window, document, 'https://tag.navdmp.com/universal.min.js'); " +
      "window.naveggReady = window.naveggReady||[]; " +
      "nvg86183 = new Navegg({ " +
        "acc: 86183 " +
      "});";
    }

    if(KL.rootsite == "kiwirec")
    {
      txt = "(function(n,v,g){o='Navegg';if(!n[o]){ " +
        "a=v.createElement('script');a.src=g;b=document.getElementsByTagName('script')[0]; " +
        "b.parentNode.insertBefore(a,b);n[o]=n[o]||function(parms){ " +
        "n[o].q=n[o].q||[];n[o].q.push([this, parms])};}}) " +
      "(window, document, 'https://tag.navdmp.com/universal.min.js'); " +
      "window.naveggReady = window.naveggReady||[]; " +
      "nvg86189 = new Navegg({ " +
        "acc: 86189 " +
      "});";
    }

    var s = document.createElement('script');
    s.id = 'navegg';
    s.type = 'text/javascript';
    s.innerHTML = txt;
    var nodo = document.getElementsByTagName('head')[0];
    nodo.insertAdjacentElement("beforeend", s);
  }

  function loadFirebaseApp() 
  {
    WA.Managers.externloader.loadexterncode("https://www.gstatic.com/firebasejs/9.8.3/firebase-app-compat.js", null, loadFirebaseMessaging); // sube firebseApp
  }

  function loadFirebaseMessaging()
  {
    WA.Managers.externloader.loadexterncode("https://www.gstatic.com/firebasejs/9.8.3/firebase-messaging-compat.js", null, startMessaging); // sube firebasemessaging
  }

  function startMessaging()
  {
    // var applicationServerPublicKey = 'BHwL8GAcNYt07iIVNrP5leAMSQ_6-DNj8JnCIEq4i8qluxsR22sTKBzkWbgGuBkYlu4IobEuD5FjUmQD2_WGz0I';
    var messaging = null;

    var firebaseApp = firebase.initializeApp({
        apiKey: 'AIzaSyBxL1y39tVaY27ASymqk6xkf4PEA36C2b8',
        authDomain: 'prueba-8b120.firebaseapp.com',
        projectId: 'prueba-8b120', //*
        storageBucket: 'prueba-8b120.appspot.com',
        messagingSenderId: '169644720264',
        appId: '1:169644720264:web:25ef8e703f8fe970eb1f3d', //*
        measurementId: 'G-1BR3PEKY0M' //*
        /*
        client_id: '283529264243-vvdq0isu1kiu6ic5rob68ngf2imok0j7.apps.googleusercontent.com',
        //      apiKey: "AIzaSyB_3sU0fUuzO67ipiXBjy_fydFyCUlAaXU",
          authDomain: "kiwilimon-app.firebaseapp.com",
          databaseURL: "https://kiwilimon-app.firebaseio.com",
          storageBucket: "kiwilimon-app.appspot.com",
          messagingSenderId: "283529264243"
        */
    });
  
    messaging = firebase.messaging(firebaseApp);
      
    // recibe el mensaje en el firebase-messaging-sw.js
    messaging.onMessage(function(payload){
      console.log('Se recibió el mensaje...Loader', JSON.stringify(payload, null, 2));
      var nodo = WA.toDOM('notif-salta');
      var notificaciones = nodo.innerHTML;
  
      WA.toDOM('notif-salta').innerHTML = parseInt(notificaciones) + 1;
    });

  }

  /*
  function firebasedone()
  {
    // Initialize Firebase
    var config = {
      client_id: '283529264243-vvdq0isu1kiu6ic5rob68ngf2imok0j7.apps.googleusercontent.com',
//      apiKey: "AIzaSyB_3sU0fUuzO67ipiXBjy_fydFyCUlAaXU",
      authDomain: "kiwilimon-app.firebaseapp.com",
      databaseURL: "https://kiwilimon-app.firebaseio.com",
      storageBucket: "kiwilimon-app.appspot.com",
      messagingSenderId: "283529264243"
    };
    firebase.initializeApp(config);
  }
*/

  function recon()
  {

  }

  // Kontent room loader
  function loadKR()
  {
    // Load only if country = US
    if (KL.KR && KL.Modules.client.getCountry() == "US")
      WA.Managers.externloader.loadexterncode("//s.ntv.io/serve/load.js");
  }

  this.createCSS = createCSS;
  function createCSS(data)
  {
    var s = document.createElement('style');
    s.innerHTML = data;
    document.getElementsByTagName('head')[0].appendChild(s);
  }

  this.setCookie = setCookie;
  function setCookie(id, value, exdays, domain)
  {
    var exdate = new Date();
    exdate.setTime(exdate.getTime() + exdays);
    //var c_value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    var c_value = encodeURIComponent(value) + ((exdays == null) ? "" : "; expires = " + exdate.toUTCString());
    document.cookie = id + "=" + c_value + (domain ? "; path = /; domain = " + domain : "");
  }

  this.getCookie = getCookie;
  function getCookie(id)
  {
    var c_value = null;
    var c_start = document.cookie.indexOf(" " + id + "=");
    if (c_start == -1)
      c_start = document.cookie.indexOf(id + "=");
    if (c_start != -1)
    {
      c_start = document.cookie.indexOf("=", c_start) + 1;
      var c_end = document.cookie.indexOf(";", c_start);
      if (c_end == -1)
        c_end = document.cookie.length;
      //c_value = unescape(document.cookie.substring(c_start, c_end));
      c_value = decodeURIComponent(document.cookie.substring(c_start, c_end));
    }
    return c_value;
  }

  this.getVariable = getVariable;
  function getVariable(index)
  {
    var $_GET = {};
    if(document.location.toString().indexOf('?') !== -1) {
        var query = document.location
                       .toString()
                       // get the query string
                       .replace(/^.*?\?/, '')
                       // and remove any existing hash string (thanks, @vrijdenker)
                       .replace(/#.*$/, '')
                       .split('&');

        for(var i=0, l=query.length; i<l; i++) {
           var aux = decodeURIComponent(query[i]).split('=');
           $_GET[aux[0]] = aux[1];
        }
    }
    //if (Object.keys($_GET).length === 0)
    //  console.error('No get variables founded');
    return $_GET[index];
  }

  // escucha popstate para saber si hay un cambio de pagina
  WA.Managers.event.on('popstate', window, historystate, true);
}
/*
  Funciones para manejar una popup modal
  Escrito por: Phil
  Fecha: Agosto 2016

  Control de cambios:
  07/10/2021: Rodolfo, en la función para cerrar la modal al WA.toDOM del body se colocó una posición relative,
              ya que en la lading de club kiwipro, diseño solicitó que cuando apareciera la modal la parte que queda abajo de la sombra
              se quedara fijo (fixed)
  21/07/2017: Rodolfo, Puse un div extra dentro de las notificaciones de kiwi (popup-notif),
              esto para darle espacio entre los botones de accion y los mensajes ya que se encimaban
              cuando el mensaje es largo
  16/08/2016: Phil, Creacion
*/

KL.Modules.modal = new function()
{
  var self = this;

  var hook = null;
  var current = null;

  /* ================================================================================ */
  /* DO NOT MOVE THE PAGE WHILE POPUP                                                             */
  /* ================================================================================ */
  var fixedpage = 0;

  this.fixpage = fixpage;
  function fixpage()
  {
    fixedpage = WA.browser.getScrollTop();

    WA.toDOM('pagecontainer').style.position = 'fixed';
    if (fixedpage == 0)
      WA.toDOM('pagecontainer').style.top = '0px'; // 80 = menu-header
    else
      WA.toDOM('pagecontainer').style.top = (-fixedpage-80) + 'px'; // 80 = menu-header
  }

  this.unfixpage = unfixpage;
  function unfixpage()
  {
    console.log("UNFIX TO: ", fixedpage)
    if (KL.origin.url !== "" && KL.origin.top_offset === 0)
      KL.origin.top_offset = fixedpage;
    WA.toDOM('pagecontainer').style.top = '0px';
    WA.toDOM('pagecontainer').style.position = '';
    window.scrollTo(0,fixedpage);
    var unfix = WA.browser.getScrollTop();
    console.log("UNFIXED TO: ", unfix)
  }

  /* ================================================================================ */
  /* POPUPS                                                                           */
  /* ================================================================================ */
  var backgroundpopup = null;
  var popup = null;
  var popupstatus = false;
  var popupparams = null;

  this.buildpopup = buildpopup;
  function buildpopup(data)
  {
    if (!popup)
    {
      popup = WA.toDOM("popup");
      backgroundpopup = WA.toDOM("backgroundpopup");
    }
    popup.innerHTML = data;
  }

  this.showpopup = showpopup;
  function showpopup(params)
  {
    if (!popup)
      return;

    popupparams = params;
    backgroundpopup.onclick = actionpopup;
    backgroundpopup.style.display = "block";
    popup.style.display = "block";
    if (popupparams && popupparams.closeable)
    {
      // activate CLOSE button
    }
    popupstatus = true;
  }

  this.actionpopup = actionpopup;
  function actionpopup(event)
  {
    if (!popup || !popupstatus)
      return;
    hidepopup();
  }

  this.hidepopup = hidepopup;
  function hidepopup()
  {
    if (!popup)
      return;
    popupstatus = false;
    backgroundpopup.style.display = "none";
    popup.style.display = "none";
    WA.toDOM('body').style.position = 'relative';
  }

  this.cleanpopup = cleanpopup;
  function cleanpopup()
  {
    if (!popup)
      return;

  }

  /* ================================================================================ */
  /* Modals under menu bar, MESSAGES queue                                            */
  /* ================================================================================ */
  var pilamensajes = [];
  var mensajesabierto = false;
  var listenerabierto = null;
  var iconomensaje = null;
  var titulomensaje = null;
  var tiempo = 3000;

  this.notifica = notifica;
  function notifica(mensaje)
  {
    //console.log('Notficar: ' + mensaje);
    pilamensajes.push([1, mensaje]);
    siguientemensaje();
  }

  this.alerta = alerta;
  function alerta(mensaje, boton, listener)
  {
    if (!boton)
      boton = 'OK';
    pilamensajes.push([2, mensaje, boton, listener]);
    siguientemensaje();
  }

  this.confirma = confirma;
  function confirma(mensaje, boton1, boton2, listener)
  {
    if (!boton1)
      boton1 = 'SI';

    if (!boton2)
      boton2 = 'NO';
    
    pilamensajes.push([3, mensaje, boton1, boton2, listener]);
    siguientemensaje();
  }

  function siguientemensaje()
  {
    if (mensajesabierto)
      return;
    if (pilamensajes.length == 0)
      return;

    var data = pilamensajes.shift();
    // enseña mensaje

    var node = WA.toDOM('header-modal');
    node.className = 'anim modal-' + data[0]
    texto = "";
    texto += data[1];
    if (data[0] == 2)
      texto += '<div class="modal-buttonok" onclick="KL.Modules.modal.cerrarmensaje();">'+data[2]+'</div>';

    if (data[0] == 3)
      texto += '<div class="modal-buttonconfirma" onclick="KL.Modules.modal.cerrarmensaje(1);">'+data[2]+'</div> <div class="modal-buttonconfirma" onclick="KL.Modules.modal.cerrarmensaje(2);">'+data[3]+'</div>';

    node.innerHTML = texto;

//    node.innerHTML = '<div class="area-txt-notificacion"><div class="area-txt-infonotificacion"><div class="circulo-ok-popup icon-k5-paloma-ok-popup"></div>' + data[1] + '</div></div>' +
    /* <div class="area-txt-notificacion"><div class="area-txt-infonotificacion"><div class="circulo-ok-popup icon-k5-paloma-ok-popup"></div>' + data[1] + '</div><div class="btn-confirmacion-popup">OK</div></div>' + */
    /* <div class="area-txt-notificacion"><div class="icon-k5-paloma-ok" style="background-position: -732px 2px; display: inline-block; width: 16px; vertical-align: top; height: 16px; margin-right: 5px;"></div>' + data[1] + '</div>' + */
      /* (data[0] == 2?'<div class="pop-tipo-2-confirma" onclick="KL.Modules.modal.cerrarmensaje();"><div class="icon-k5-paloma-ok" style="background-position: 2px -480px; width: 20px; height: 20px;"></div></div>':'') + */
//      (data[0] == 2?'<div class="pop-tipo-2-confirma" onclick="KL.Modules.modal.cerrarmensaje();"></div>':'') +
//      (data[0] == 3?'<div class="pop-tipo-3-cancela" onclick="KL.Modules.modal.cerrarmensaje(2);">'+data[3]+'</div><div class="pop-tipo-3-confirma" onclick="KL.Modules.modal.cerrarmensaje(1);">'+data[2]+'</div>':'');

    /* codigo original notificacion popup
    WA.toDOM('popup-notif').innerHTML = '<div class="bgicon" style="background-position: -732px 2px; display: inline-block; width: 16px; vertical-align: top; height: 16px; margin-right: 5px;"></div>' + data[1] +
      (data[0] == 2?'<div style="background-color: #8CC63E; width: 40px; height: 40px; padding-left: 10px; padding-top: 10px; border-radius: 20px; position: absolute; right: 5px; top: -20px; border: 1px solid white;" onclick="KL.Modules.modal.cerrarmensaje();"><div class="bgicon" style="background-position: 2px -480px; width: 20px; height: 20px;"></div></div>':'') +
      (data[0] == 3?'<div style="background-color: #8CC63E; min-width: 40px; height: 40px; padding: 10px; border-radius: 20px; position: absolute; left: 5px; top: -20px; border: 1px solid white; text-align: center;" onclick="KL.Modules.modal.cerrarmensaje(1);">'+data[2]+'</div><div style="background-color: #8CC63E; min-width: 40px; height: 40px; padding: 10px; border-radius: 20px; position: absolute; right: 5px; top: -20px; border: 1px solid white; text-align: center;" onclick="KL.Modules.modal.cerrarmensaje(2);">'+data[3]+'</div>':'');
    */

    if (data[0] == 3)
    {
      //showbg(true);
      // WA.toDOM('popup-notif').className = 'anim confirma';
//      node.className = 'confirma';
      if (data[4])
        listenerabierto = data[4];
    }
    else if (data[0] == 2)
    {
//      showbg();
      // WA.toDOM('popup-notif').className = 'anim error';
//      node.className = 'error';
      if (data[3])
        listenerabierto = data[3];
    }
    else
    {
//      node.className = 'activa-notif';
      //WA.toDOM('popup-notif').className = 'anim';
    }

    // WA.toDOM('popup-notif').style.bottom = '0';
    if (KL.device=="mobile")
    {
      node.style.top = '46px';
    }
    else
    {
      node.style.top = '60px';
    }

    if (data[0] == 1)
    {
      setTimeout(cerrarmensajes, tiempo);
      //hidebg();
    }
    mensajesabierto = true;
  }

  this.cerrarmensaje = cerrarmensaje;
  function cerrarmensaje(id)
  {
    // console.log('mensaje: ' + id);
    cerrarmensajes();
//    hidebg();
    if (listenerabierto)
    {
      listenerabierto(id);
      listenerabierto = null;
    }
  }

  function cerrarmensajes()
  {
    // WA.toDOM('popup-notif').style.bottom = '-200px';
    if (KL.device=="mobile")
    {
      WA.toDOM('header-modal').style.top = '-20px';
    }
    else
    {
      WA.toDOM('header-modal').style.top = '-10px';
    }
    mensajesabierto = false;
    setTimeout(siguientemensaje, 500);
//    hidebg();
  }









  /* ================================================================================ */
  /* Tutoriales                                                                       */
  /* ================================================================================ */

  this.cerrartutorialmenus = cerrartutorialmenus;
   function cerrartutorialmenus()
  {
    if(WA.toDOM('bgtutorialmenus'))
      WA.toDOM('bgtutorialmenus').style.display = 'none';
    if(WA.toDOM('tutorialmenus'))
      WA.toDOM('tutorialmenus').style.display = 'none';
  }

  this.abrirtutorialmenus = abrirtutorialmenus;
  function abrirtutorialmenus(request)
  {
    if (request==1)
    {
      var prueba30dias = WA.toDOM('galeria-tour-dpm4');
      if (prueba30dias)
        prueba30dias.parentNode.removeChild(prueba30dias);

      var bullet = WA.toDOM('bullet_4');
      if (bullet)
        bullet.parentNode.removeChild(bullet);
    }
    WA.toDOM('bgtutorialmenus').style.display = 'block';
    WA.toDOM('tutorialmenus').style.display = 'block';
  }
  //tutorial_planeadormenu
  
}
KL.Modules.links = new function()
{
  var self = this;

  /* ================================================================================ */
  /* Códigos externos */
  /* ================================================================================ */
  this.analyze = analyze;
  function analyze()
  {
    //Obtenemos, los nodos A que cumplen para agregar el onclick
    var aNodes = document.getElementsByTagName('A');
    var urlvar = window.location.href;
    if (aNodes)
    {
      for (var id = 0; id < aNodes.length; id++)
      {
        // ya escaneado
        if (aNodes[id].scanned)
          continue;
        aNodes[id].scanned = true;

        // no tocar links externos
        if (aNodes[id].href.substr(0, 7) == 'http://' || aNodes[id].href.substr(0, KL.mydomains.length) != KL.mydomains)
          continue;
        // no tocar los redirects
        if (aNodes[id].pathname.substr(0, 10) == '/redirect/')
          continue;
        aNodes[id].onclick = KL.loader.callPage;
      }
    }
  }

//  KL.loader.addHookLoad('links', analyze);
//  KL.loader.addHookPostLoad('links', analyze);
}
KL.Modules.images = new function()
{
  var self = this;
  var analyzeclass = "analyzethis";
  var webp = canUseWebP();

  function canUseWebP()
  {
    var elem = document.createElement('canvas');

    if (!!(elem.getContext && elem.getContext('2d'))) {
      // was able or not to get WebP representation
      if (elem.toDataURL('image/webp').indexOf('data:image/webp') == 0)
        return true;
    }

    // very old browser like IE 8, canvas not supported
    if (WA.browser.isWebpSupport())
      return true;
    return false;
  }

  /* ================================================================================ */
  /* Códigos externos */
  /* ================================================================================ */
  this.analyze = analyze;
  function analyze()
  {
    var maxheight = WA.browser.getWindowHeight();
    var maxwidth  = WA.browser.getWindowWidth();
    var scrolltop = WA.browser.getScrollTop();
    var scrollleft = WA.browser.getScrollLeft();

    //Obtenemos, los nodos que tienen esta clase y les ponemos al .src, el atributo especifico
    var imgNode = document.getElementsByClassName(analyzeclass);

    // Create new IntersectionObserver
    /*var io = new IntersectionObserver(
      (entries) => {
        entries.forEach((entry) => {
          if (entry.isIntersecting) {

            entry.target.scanned = true;

            var haswebp = entry.target.dataset.webp;
            var w = entry.target.dataset.width;
            var h = entry.target.dataset.height;

            var src = entry.target.dataset.src;
            if (src)
            {
              if (src.substr(0, 4) != "http")
              {
                // Rebuild as cdn7/.../WxH/...webp
                // Only if OUR CDN
                xpath = src.split("/");
                img = xpath[xpath.length-1];
                xpath[xpath.length-1] = w + "x" + h;
                if (webp&&haswebp)
                {
                  xpath.push(img + ".webp");
                }
                else
                {
                  xpath.push(img + ".jpg");
                }
                src = KL.cdn7domains + xpath.join("/");
              }
              entry.target.src = src;
            }
    
          }
        })
      },
      {
        root: null,
        rootMargin: '110px',
        threshold: 0.1
      }
    );*/

    if (imgNode)
    {
      for (var id = 0; id < imgNode.length; id++)
      {
        if (imgNode[id].scanned)
          continue;

        if(!isVisibleImg(imgNode[id]))
          continue;

        imgNode[id].scanned = true;
        var haswebp = imgNode[id].dataset.webp;
        var w = imgNode[id].dataset.width;
        var h = imgNode[id].dataset.height;

        var src = imgNode[id].dataset.src;

        if (src)
        {
          if (src.substr(0, 4) != "http")
          {
            // Rebuild as cdn7/.../WxH/...webp
            // Only if OUR CDN
            xpath = src.split("/");
            img = xpath[xpath.length-1];

            if(img.search(/\.svg/) != -1)
            {
              src = KL.cdn7domains + xpath.join("/");
            }
            else
            {
              xpath[xpath.length-1] = w + "x" + h;

              if(webp&&haswebp)
              {
                if(/show-images-item-img-\w+/.exec(imgNode[id].id) !== null){
                  var bgimg = imgNode[id].dataset.bigimg.split('/');
                  bgimg[bgimg.length-1] = '960x720';
                  bgimg.push(img + '.webp');
                  imgNode[id].dataset.bigimg = bgimg.join('/');
                }
                xpath.push(img + ".webp");
              }
              else
              {
                xpath.push(img + ".jpg");
              }
  
              src = KL.cdn7domains + xpath.join("/");
            }
          }

          if(imgNode[id].id.search(/avatar/) >= 0 || imgNode[id].className.search(/avatar/) >= 0)
          imgNode[id].addEventListener('error', event => {
            event.target.src = KL.rootsite == 'crafto' ? KL.cdn7domains + "/craftologia/static/icono-usuario.svg" : KL.cdn7domains + "/kiwilimon/static/icono-usuario.svg";
          })

          imgNode[id].src = src;
        }
        //io.observe(imgNode[id]);
      }
    }
  }

  function isVisibleImg(N)
  {
    var visualHeight = false;
    var visualWidth = false;
    var distance = N.getBoundingClientRect();

    if(distance.top < (window.innerHeight || document.documentElement.clientHeight) && distance.bottom > 0)
      visualHeight = true;

    if(!visualHeight && distance.top / window.innerHeight < 1.2 || distance.top / document.documentElement.clientHeight < 1.2)
      visualHeight = true;

    if(distance.left <= (window.innerWidth || document.documentElement.clientWidth))
      visualWidth = true;

    if(visualHeight && visualWidth)
      return true;
  }

  function isDisplayNone(node)
  {
    if (node.parentNode == null || node.parentNode == window || node.parentNode == window.document)
      return false
    if (node.style.display == "none")
      return true;
    return isDisplayNone(node.parentNode);
  }

  this.missingImage = missingImage;
  function missingImage(node)
  {
    // send error to server
    var r = WA.Managers.ajax.createRequest(KL.identitydomains + '/missingimage', 'POST', null, null, false);
    r.addParameter('user', node.dataset.imgavatarchef);
    //r.addParameter('user', node.dataset.client);
    //r.addParameter('device', KL.device );
    //r.addParameter('language', KL.language );
    r.send();

    // replace image by user logo
    node.src = KL.cdn7domains + "/kiwilimon/static/icono-usuario.svg";
  }

  //KL.loader.addHookLoad('images', analyze);
  //KL.loader.addHookPostLoad('images', analyze);
}
// Vamos a cargar videokiwi.js a los 10 segundos excepto si hay una solicitud antes

/* PLAYER VIDEO KIWI */
//  WA.Managers.externloader.loadexterncode(KL.cdn7domains + "/js/video/v2/kvideo.js");

KL.Modules.video = new function() {
  var self = this;
  var loaded = false;
  var players = {};
  var currentowner = null;      // id of division owning the video
  var currentplayer = null;     // id of the player
  var currentvideo = null;      // id of the video playing in the player
  var floatingplayer = false;   // true when the video player is floating around
  var floatingvisible = true;  // flag to indicate if the floating can happen. set to false if the user close or swipe the floatingplayer (stop play and hide),
                                // the player comes back to its container and does not move untill this flag is set to true again. always true when playing
  var swipe = 0;                // 1 when to user start to swipe
  var swipestartx = 0;          // touch finger starts here
  var swipestarty = 0;          // touch finger starts here
  var swipeplayerx = 0;         // fixed position left of player when start
  var interval;
  var timeSend = 5;
  var adMode = function(){try { return myPlayer.ads.isInAdMode(); } catch (err) { return false }};
  var isPaused = false;
  var mobileDevice = (KL.device = 'mobile') ? true : false;

  this.setPause = setPause;
  function setPause(i)
  {
    isPaused = i;
  }

  this.crear = crear;
  function crear(playerid, force) {
    var node = WA.toDOM('player_' + playerid);

    if (node && !force)
      return node;

    if (!node) { // creates the node
      // crea el node
      node = WA.createDomNode('div', 'player_' + playerid, 'anim');
      WA.Managers.event.on('touchstart', node, touchstart, true);
      WA.Managers.event.on('touchmove', node, touchmove, true);
      WA.Managers.event.on('touchend', node, touchend, true);
    }

    // agrega el node al DOM
    // NODE BC:
    // node.innerHTML = '<video-js id="video_'+playerid+'" data-account="4832064755001" data-player="'+playerid+'" data-embed="default" data-video-id="" class="video-js" controls style="width: 100%; height: 100%;"></video-js>';
    // NODE KIWI:
    var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);

    node.innerHTML = '<video '+(iOS ? '': 'controls')+' id="video_'+playerid+'" style="width: 100%; height: 100%; position: absolute; top: 0px; bottom: 0px; right: 0px; left: 0px;" \
      class="video-js player-divcontenedor-video" preload="auto" origin="'+KL.device+'"></video>';
    // crea el close (aparece solo en chico)
    nodeclose = WA.createDomNode('div', 'playerclose_' + playerid, 'icon-k7-closevideo');
    nodeclose.style = "display: none;";
    nodeclose.onclick = cerrar;
    node.appendChild(nodeclose);
    players[playerid] = node;
    return node;
  }

  this.LoadPlayer = LoadPlayer;
  function LoadPlayer() {
    if (loaded)
      return;

    /* KIWI video */
    WA.Managers.externloader.loadexterncode(KL.cdn7domains + "/js/video/v2/kvideo.js?v=" + KL.version); // producción
    //WA.Managers.externloader.loadexterncode(KL.cdn7domains + "/js/video/v1/kvideo.js?v=" + KL.version, null, null, true); // dev7
    loaded = true;
  }

  // v1 es horizontal o unico, v2 cuadrado, v3 vertical
  this.abrir = abrir;
  function abrir(event, containerid, videoid) {
    LoadPlayer();
    console.log("EVENTO:", event, containerid, videoid);
    floatingvisible = true;

    event.preventDefault();
    event.stopPropagation();

    if (!containerid)
      containerid = this.dataset.containerid;

    containerClose = containerid;

    if (!videoid)
      videoid = this.dataset.videoid;

      var playerid = "kiwi";

      if (window.videojs) {
        setTimeout(function(){
          var newone = false;
          var node = null;

          if (!currentvideo || currentvideo != videoid) { // there MUST be a player live
            if (currentplayer) {
              // unload the old one first (to avoid "watch" the old one for a little time into new place)
              videojs.getPlayer('video_' + currentplayer).dispose();
              currentplayer = null;
              currentvideo = null;
            }
  
            if (KL.devel)
              console.log("CREAR PLAYER", currentvideo, videoid)
  
            node = crear(playerid, true);
            WA.toDOM(containerid).appendChild(node);
            newone = true;
          }

          if (newone) {
            currentowner = containerid;
            currentplayer = playerid;
            currentvideo = videoid;
            floatingplayer = false;
            myPlayer = videojs('video_' + playerid, {
              autoplay: true,
              controls: true,
            });

            myPlayer.src({type: 'application/x-mpegURL', src: KL.videodomains + ':1935/' + KL.videochannel + '/smil:' + videoid + '.smil/playlist.m3u8'});

            KLVideo.Loader.Link('video_' + playerid);
            node.style = "display: block;";
            timeSend = 5;
            interval = setInterval(timeStatistic, 5000);
          }
        }, 2000)

      } else {
        // esperar que las librerias cargan
        setTimeout(function() {KL.Modules.video.abrir(event, containerid, videoid); }, 50 );
      }
      
    return;
  }

  function opt(){
    var opt = {
      'id': currentvideo,
      'device': KL.device,
      'currentTime': myPlayer.currentTime(),
      'remainingTime': myPlayer.remainingTime(),
      'lengthOfVideo': myPlayer.duration(),
      'send_to': 'G-X0MHE23QYB',
    };

    return opt;
  }

  function stopVideo() {
    if(adMode()) {
      myPlayer.ima.pauseAd();
    }else{
      myPlayer.pause();
    }
  }
  
  // Function exclusiva para el touchend
  function playVideo() {
    if(adMode()) {
      myPlayer.ima.resumeAd();
    }else{
      myPlayer.play();
    }
  }

  // Funcion timer para mandar algo cada cierto tiempo
  function timeStatistic(){
    let vecesSend = 0;
    //console.log("DAG en intervalo", timeSend, " tiempo actual:", Math.round(myPlayer.currentTime()), "Duración:", myPlayer.duration())
    try {
        // No se tiene que tomar en cuenta el tiempo del Ad
        if (!AdMode() && !myPlayer.paused()) {
          if (myPlayer.currentTime() > timeSend) {
            //  console.log("DAG se cumplieron 5 segundos");
            timeSend += 5;
            vecesSend++;
          }
        }
        if (myPlayer.duration() == myPlayer.currentTime()) {
          // console.log("DAG detiene el intervalo")
          clearInterval(interval);
        }
    } catch(error) {
      clearInterval(interval);
    }
  }

  // v1 es horizontal o unico, v2 cuadrado, v3 vertical
  this.cerrar = cerrar;
  function cerrar(swipe){
    if (!currentplayer)
      return;

    if (swipe !== true){
      //ga('send', 'event', 'video', 'vid/playermobile', 'vid/pla/close', null);
      KL.Modules.stat.registerEventGA4('video/player/close', opt());
    }

    // 1. hide
    playernode = WA.toDOM("player_" + currentplayer);
    stopVideo();
    embed(playernode, nodeclose);
  }

  function embed(node, nodeclose)
  {
    floatingplayer = false;
    floatingvisible = true;
    //node.style = "position: absolute; left: 0; width: 100%; top: 0; bottom: 0; z-index: 10;";
    node.className = "player-divcontenedor-noscroll";
    nodeclose.style = "display: none;";
  }

  const nodeCloseStyle = (direction) => {
    return "display: block; position: absolute; width: 30px; height: 30px; left: -30px; " + direction + ": 0px; background-color: black; padding: 6px; border-top-left-radius: 50%; border-bottom-left-radius: 50%; color: white; font-size: 1.5em; box-sizing: border-box;";
  }

  function float(node, pos, nodeclose){
    if(!isPaused){
      floatingplayer = true;
      floatingvisible = true;
      if (pos == 'up'){
        //node.style = "position: fixed; left: 50%; width: 50%; top: 44px; height: 200px; z-index: 1000;";
        node.className = "player-divcontenedor-scroll-up";
        nodeclose.style = nodeCloseStyle("top");
      }else{
        //node.style = "position: fixed; left: 50%; width: 50%; bottom: 0px; height: 200px; z-index: 1000;";
        node.className = "player-divcontenedor-scroll-down";
        nodeclose.style = nodeCloseStyle("bottom");
      }
    }
  }

  function touchstart(e){
    swipe = 1;
    swipestartx = WA.browser.getTouchDocumentX(e);
    swipestarty = WA.browser.getTouchDocumentY(e);
    playernode = WA.toDOM("player_" + currentplayer);
    swipeplayerx = WA.browser.getNodeDocumentLeft(playernode);
  }

  function touchmove(e){
    if (!swipe)
      return;
    var x = WA.browser.getTouchDocumentX(e);
    var y = WA.browser.getTouchDocumentY(e);
    playernode = WA.toDOM("player_" + currentplayer);
    //playernode.style.left = (x-swipestartx+swipeplayerx)+'px';
  }

  function touchend(e){
    x = WA.browser.getTouchDocumentX(e);
    y = WA.browser.getTouchDocumentY(e);
    swipe = 0;
    // swipe candidate ?
    if (Math.abs(x-swipestartx) > 50 && Math.abs(y-swipestarty) < 30){
      // PAUSAR EL VIDEO
      stopVideo();
      cerrar(true);
      //ga('send', 'event', 'video', 'vid/playermobile', 'vid/pla/swipe', null);
      KL.Modules.stat.registerEventGA4('video/player/swipe', opt());
    }else{ // back to its place
      //playernode = WA.toDOM("player_" + currentplayer);
      var nodo = e.target;

      if(mobileDevice && !adMode() && nodo.id == 'video_kiwi_html5_api'){
        if(isPaused){
          playVideo();
        }else{
          stopVideo();
        }
      }

      // playernode.style.left = swipeplayerx + 'px';
    }
  }

  function scroll(event){
    if(!currentplayer)
      return;

    if(!floatingvisible)
      return;

    containernode = WA.toDOM(currentowner);
    playernode = WA.toDOM("player_" + currentplayer);
    nodeclose = WA.toDOM('playerclose_'+ currentplayer);
    var headerheight = 80;
    var screenheight = WA.browser.getScreenHeight();
    var pagetop = WA.browser.getScrollTop();
    var top = WA.browser.getNodeDocumentTop(containernode);
    var height = WA.browser.getNodeHeight(containernode);

    if(top + height/3 < pagetop + headerheight){
      // pasamos a que sea una miniventana fixed top
      if (!floatingplayer){
        float(playernode, "up", nodeclose);
        //ga('send', 'event', 'video', 'vid/playermobile', 'vid/pla/up', null);
        KL.Modules.stat.registerEventGA4('video/player/up', opt());
      }
    } else if(top + 2*height/3 > pagetop + screenheight){
      // pasamos a que sea una miniventana fixed bottom
      if (!floatingplayer){
        float(playernode, "down", nodeclose);
        //ga('send', 'event', 'video', 'vid/playermobile', 'vid/pla/down', null);
        KL.Modules.stat.registerEventGA4('video/player/down', opt());
      }
    }else{
      if (floatingplayer){
        embed(playernode, nodeclose);
        //ga('send', 'event', 'video', 'vid/playermobile', 'vid/pla/embed', null);
        KL.Modules.stat.registerEventGA4('video/player/embed', opt());

      }
    }
  }

  function unload(){
    if (!currentplayer)
      return;

    //ga('send', 'event', 'video', 'vid/playermobile', 'vid/pla/unload', null);
    KL.Modules.stat.registerEventGA4('video/player/unload', opt());

    videojs.getPlayer('video_' + currentplayer).dispose();
    currentplayer = null;
    currentvideo = null;

    for (var i in players){
      if (players[i].parentNode != document.body){
        players[i].style.display = "none";
        WA.toDOM(document.body).appendChild(players[i]);
      }
    }
  }

  function load(){
    var videoNodes = document.getElementsByClassName('video');
    if (videoNodes){
      for (var i = 0; i < videoNodes.length; i++){
        //if (KL.devel)
          //console.log(videoNodes[i]);

        videoNodes[i].onclick = abrir;
      }
    }
  }

  // scroll para poner video en chiquito
  WA.Managers.event.on('scroll', window, scroll, true);
  KL.loader.addHookLoad('video', load);
  KL.loader.addHookPostLoad('video', load);
  KL.loader.addHookUnload('video', unload);
}
// Based on the code structure, inject LDJson of page objects and breadcrumbs
KL.Modules.ldjson = new function()
{
  var self = this;
  var scripts = {};
  var publisher = {"@type": "Organization",
                   "name": KL.officialname,
                   "sameAs":["https://www.facebook.com/kiwilimon/",
                             "https://www.instagram.com/kiwilimon/",
                             "https://www.youtube.com/kiwilimon/",
                             "https://www.pinterest.com/kiwilimon/",],
                   "logo": {"@type": "ImageObject",
                            "url": KL.urllogo,  
                            "width": KL.logowidth,
                            "height": KL.logoheight,}                            
                  };

  this.analyze = analyze;
  function analyze()
  {
    var book = KL.pagedata.page.keywords[0]=='libro-kiwilimon' ? true : false;

    if (KL.currentcode.recipefamilydata)
      return buildrecipefamily(KL.currentcode);
    if (KL.currentcode.recipeclassificationdata)
      return buildrecipeclassification(KL.currentcode);
    if (KL.currentcode.recipe)
      return buildrecipe(KL.currentcode);
    if (KL.currentcode.tip)
      return buildtip(KL.currentcode);
    if (KL.currentcode.families) //nuevo
      return buildhometips(KL.currentcode);
    if (KL.currentcode.classificationdata) // nuevo
      return buildclassificationtips(KL.currentcode);
    if (KL.currentcode.article)
      return buildarticle(KL.currentcode);
    if (KL.currentcode.articuloslista) // nuevo
      return buildarticlelist(KL.currentcode);
    if (KL.currentcode.articulosclasiflista) // nuevo
      return buildarticlecalsiflista(KL.currentcode);
    if (KL.currentcode.gallery) // nuevo
      return buildhome(KL.currentcode);
    if (KL.currentcode.detalleproducto) // Recetarios y libro  // nuevo
      return buildproduct(KL.currentcode);
    if (KL.currentcode.familydata)
      return buildtipsfamily(KL.currentcode);
    if(KL.currentcode.listacompilaciones)
      return buildlistacompilaciones(KL.currentcode);
    if(KL.currentcode.compilacionreceta)
      return buildcompilacionreceta(KL.currentcode);

    // con currentcode no se sabe si está en el libro
    if(book)
      return buildrecipebook(KL.currentcode);
  }

  function setbc(data)
  {
    if (!scripts.bc && data)
    {
      scripts.bc = document.createElement('script');
      scripts.bc.setAttribute('type', 'application/ld+json');
      scripts.bc.id = "breadcrumbs";
      document.head.appendChild(scripts.bc);
      scripts.bc.textContent = data;
    }
  }

  function findObj(data, name){
    var obj = [];
    for (let propiedad in data)
    {
      if (data.hasOwnProperty(propiedad) && propiedad !== 'contpro')
      {
        if (WA.isObject(data[propiedad]))
        {
          if(data[propiedad] !== null && data[propiedad].hasOwnProperty(name))
          {
            var dt = data[propiedad][name]
            for(var n in dt)
            {
              obj.push(dt[n])
            }
          }
          findObj(data[propiedad],name);
        }
      }
    }

    if(obj.length > 0)
     return obj
    return false;
  }

  function setmain(data)
  {
    if (!scripts.main)
    {
      scripts.main = document.createElement('script');
      scripts.main.setAttribute('type', 'application/ld+json');
      scripts.main.id = "data";
      document.head.appendChild(scripts.main);
    }
    scripts.main.textContent = data;
  }

  function setmainextra(data)
  {
    if (!scripts.mainextra)
    {
      scripts.mainextra = document.createElement('script');
      scripts.mainextra.setAttribute('type', 'application/ld+json');
      scripts.mainextra.id = "dataextra";
      document.head.appendChild(scripts.mainextra);
    }
    scripts.mainextra.textContent = data;
  }

  function buildbc(data)
  {
    if (!data)
      return "";
    jsondata = {"@context": "https://schema.org","@type": "BreadcrumbList","itemListElement": []};
    for (var i = 0, l = data.length; i < l; i++)
    {
      element = {"@type": "ListItem", "position": i+1, "name": data[i].n, "item": KL.mydomains + data[i].p};
      jsondata.itemListElement.push(element);
    }
    return JSON.stringify(jsondata);
  }

  function buildWebSite()
  {
    jsondata = {"@context": "https://schema.org",
      publisher,
      "@type": "WebSite",
      "name": KL.officialname,
      "url": KL.webdomains,
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": KL.webdomains + "/buscar?q={search_term_string}",
        },
        "query-input": "required name=search_term_string",
      },
    };

    return jsondata;
  }

  function setCreativeWork(jsonData, free)
  {
    //"isAccessibleForFree": "False", "hasPart": {"@type": "WebPageElement", "isAccessibleForFree": "False", "cssSelector": ".wall"}
    jsonData.isAccessibleForFree = free;
    jsonData.hasPart= {"@type": "WebPageElement", "isAccessibleForFree": free, "cssSelector": ".user-pending"};
    return jsonData;
  }

  function builditemlist(data)
  {
    if (!data)
      return "";
    jsondata = {"@context": "https://schema.org","@type": "ItemList","itemListElement": []};
    for (var i = 0, l = data.length; i < l; i++)
    {
      var path = data[i].pa;
      var nombre = data[i].n;
      var descripcion = ''
      if(data[i].ms)
        descripcion = data[i].ms;
      if (!path) path = data[i].path;
      if (!path) continue;
      element = {"@type": "ListItem", "position": i+1, "url": KL.mydomains + path, "name": nombre, "description": descripcion };
      jsondata.itemListElement.push(element);
    }
    return JSON.stringify(jsondata);
  }

  function buildNutrition(data)
  {
    var n = [];
    var c = data.calories == null ? 0 : data.calories;
    var txt = {'@type':'NutritionInformation', 'calories':c};

    if(!data)
      return n;

    for(var nutrient of data.nutrients)
    {
      if(nutrient.quantity100 > 0 && nutrient.name !== null)
        txt[nutrient.name] = nutrient.quantity100 + ' ' +nutrient.metric;
    }
    if(Object.keys(txt).length > 1)
      n.push(txt);

    return n;
  }

  function buildAuthor(firstname, lastname, path)
  {
    return {"@type": "Person",
            "name": firstname + " " + lastname,
            "url": KL.webdomains + path
           };
  }

  function buildVideo(name, description, key, thumb, videoid, published, duration, view)
  {
    var creator = publisher;
    return {"@type": "VideoObject",
            "name": name,
            "description": description,
            "thumbnailUrl": [KL.cdndomains + "/recetaimagen/" + key + "/" + thumb],
            "contentUrl": KL.videodomains + "/" + videoid + "/" + videoid + "-300.mp4",
            "embedUrl": KL.graphdomains + "/player?video=" + videoid,
            "uploadDate": published,
            "duration": duration == 0 ? "PT120S" : "PT" + duration + "S",
            creator,
            "interactionStatistic": {"@type": "InteractionCounter",
                                     "interactionService": {
                                        "@type": "WebSite",
                                        "name": KL.officialname,
                                        "@id": KL.webdomains},
                                     "interactionType": {"@type": "http://schema.org/WatchAction"},
                                     "userInteractionCount": view}
           };
  }


  function buildhome(data)
  {
    jsondata = {"@context": "https://schema.org",
      publisher,
      "@type": "WebSite",
      "name": KL.officialname,
      "url": KL.webdomains,
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": KL.webdomains + "/buscar?q={search_term_string}",
        },
        "query-input": "required name=search_term_string",
      },
    };
    
    // 2. recipe news
    setmainextra(JSON.stringify(jsondata));
    
    setmain(builditemlist(findObj(data, 'payload')));
  }

  /****************************************************************************************************/
  // begin build recipe
  /****************************************************************************************************/
  function buildrecipefamily(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));
    // 2. main data
    setmain(builditemlist(findObj(data, 'payload')))
  }

  function buildrecipeclassification(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));
    // 2. main data
    setmain(builditemlist(findObj(data, 'payload')))
  }

  function buildrecipe(data)
  {
    //verifica si es receta pro(status = 10 no es libre) marca(chef level = 10 es libre)
    var free = data.recipe.status == 10 ? "False" : data.recipe.clientdata.level == 10 ? "True" : "False";
    var creator = publisher;
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));
    // 2. recipe news
    setmainextra(buildnewsrecipe(data));
    // 3. main data
    jsondata = {"@context": "https://schema.org","@type": "Recipe",
      author: buildAuthor(data.recipe.clientdata.firstname, data.recipe.clientdata.lastname, data.recipe.clientdata.path),
      creator,
      "name": data.recipe.name,
      "cookTime": "PT" + data.recipe.cooktime + "M",
      "prepTime": "PT" + data.recipe.totaltime + "M",
      "datePublished": data.recipe.published,
      "keywords": data.recipe.name,
      "recipeYield": data.recipe.portions,
      "description": data.recipe.description,
      "recipeCategory": data.recipe.classificationname,
      "recipeCuisine": data.recipe.cuisinename,
      "recipeIngredient": [],
      "recipeInstructions": [],
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": data.recipe.rating,
        "ratingCount": data.recipe.view
      }
    };

    if (data.recipe.nutrients && data.recipe.nutrients[0]) {
      var nutritionInformation = buildNutrition(data.recipe);
      if(nutritionInformation.length > 0)
        jsondata.nutrition = nutritionInformation;
    }

    if (data.recipe.video)
      jsondata.video = buildVideo(data.recipe.name, data.recipe.description, data.recipe.key, data.recipe.video.thumb, data.recipe.video.videoid, data.recipe.published, data.recipe.video.duration, data.recipe.view);

    for (var i = 0, l = data.recipe.ingredients.length; i < l; i++)
    {
      jsondata.recipeIngredient.push(data.recipe.ingredients[i].text);
    }

    // 
    var itemListElement = [];
    for (var i = 0, l = data.recipe.steps.length; i < l; i++)
    {
      element = {
        "@type": "HowToStep",
        "position": 1,
        "text": data.recipe.steps[i].text,
        // Falta campo name, url y se debe especificar image o video (opcionales todos)
      };
      itemListElement.push(element)
    }

    if(itemListElement.length > 0)
      jsondata.recipeInstructions=itemListElement;

    if (data.recipe.images && data.recipe.images.length > 0)
    {
      jsondata.image = [];
      for (var i = 0, l = data.recipe.images.length; i < l; i++)
      {
        jsondata.image.push(KL.cdn7domains + "/recetaimagen/" + data.recipe.key + "/640x640/" + data.recipe.images[i].image + (KL.haswebp?".webp":".jpg"))
      }
    } else {
      jsondata.image = [
        KL.cdn7domains + "/kiwi5/static/k5-o-640x640.png"
      ];
    }

    if(!free)
      jsondata = setCreativeWork(jsondata, free);

    setmain(JSON.stringify(jsondata));
  }

  /* Enlaza JSON con lsjson */
  function buildnewsrecipe(data) {
    // 1. main data
    jsondata = {"@context": "https://schema.org","@type": "NewsArticle",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": document.URL
      },
      "headline": data.recipe.name,
      "datePublished": data.recipe.published,
      "dateModified": data.recipe.published,
      author: buildAuthor(data.recipe.clientdata.firstname, data.recipe.clientdata.lastname, data.recipe.clientdata.path),
      publisher,
      "articleSection": "Noticias",
      "description": data.recipe.description,
      "keywords": data.recipe.name,
    }

    if (data.recipe.images && data.recipe.images.length > 0)
    {
      jsondata.image = [];
      for (var i = 0, l = data.recipe.images.length; i < l; i++)
      {
        jsondata.image.push(KL.cdn7domains + "/recetaimagen/" + data.recipe.key + "/640x640/" + data.recipe.images[i].image + (KL.haswebp?".webp":".jpg"))
      }
    } else {
      jsondata.image = [
        KL.cdn7domains + "/kiwi5/static/k5-o-640x640.png"
      ];
    }

    return JSON.stringify(jsondata);
  }
  /****************************************************************************************************/
  // end build recipe
  /****************************************************************************************************/



  /****************************************************************************************************/
  // begin build tips
  /****************************************************************************************************/
  function buildtip(data)
  {
    //verifica si es tip pro(status = 10 no es libre)
    var free = data.tip.status == 10 ? false : true;
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));
    // 2. news tip
    setmainextra(buildnewstip(data));
    // 2. main data
    jsondata = {"@context": "https://schema.org","@type": "Article",
      publisher,
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": KL.cookiedomain
      },
      author: buildAuthor(data.tip.clientdata.firstname, data.tip.clientdata.lastname, data.tip.clientdata.path),
      "articleSection": "Noticias",
      "name": data.tip.name,
      "headline": data.tip.name,
      "description": data.tip.description,
      "datePublished": data.tip.published,
      "dateModified": data.tip.published,
      "mainEntityOfPage": KL.mydomains,
    };

    if (data.tip.video)
      jsondata.video = buildVideo(data.tip.name, data.tip.description, data.tip.key, data.tip.video.thumb, data.tip.video.videoid, data.tip.published, data.tip.video.duration, data.tip.view);

    if (data.tip.image)
    {
      jsondata.image = [
        KL.cdn7domains + "/ss_secreto/" + data.tip.key + "/640x640/" + data.tip.image + (KL.haswebp?".webp":".jpg")
      ];

      if (data.tip.steps){
        jsondata.articleBody = [];

        for (var i = 0, l = data.tip.steps.length; i < l; i++)
        {
          jsondata.image.push(KL.cdn7domains + "/ss_secreto/" + data.tip.key + "/640x640/" + data.tip.steps[i].imagen + (KL.haswebp?".webp":".jpg"));

          jsondata.articleBody.push("Paso " + data.tip.steps[i].orden + ": " + data.tip.steps[i].descripcion);
        }
      }
    } else {
      jsondata.image = [
        KL.cdn7domains + "/kiwi5/static/k5-o-640x640.png"
      ];
    }

    if(!free)
      jsondata = setCreativeWork(jsondata, free);

    setmain(JSON.stringify(jsondata));
  }

  function buildnewstip(data)
  {
    // 2. main data
    jsondata = {"@context": "https://schema.org","@type": "NewsArticle",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": document.URL
      },
      "headline": data.tip.name, //"¿Tienes una bolsita de té? Úsala para cultivar manzanilla en tu huerto casero",
      "datePublished": data.tip.published,
      "dateModified": data.tip.published,
      author: buildAuthor(data.tip.clientdata.firstname, data.tip.clientdata.lastname, data.tip.clientdata.path),
      publisher,
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": KL.cookiedomain
      },
      "articleSection": "Noticias"
    }

    if (data.tip.image)
    {
      jsondata.image = [
        KL.cdn7domains + "/ss_secreto/" + data.tip.key + "/640x640/" + data.tip.image + (KL.haswebp?".webp":".jpg")
      ];

      if (data.tip.steps){
        c = 0;
        for (var i = 0, l = data.tip.steps.length; i < l; i++)
        {
          jsondata.image.push(KL.cdn7domains + "/ss_secreto/" + data.tip.key + "/640x640/" + data.tip.steps[i].imagen + (KL.haswebp?".webp":".jpg"))
          c++;
          if (c >= 2) break;
        }
      }
    } else {
      jsondata.image = [
        KL.cdn7domains + "/kiwi5/static/k5-o-640x640.png"
      ];
    }
    return JSON.stringify(jsondata);
  }

  // home tips
  function buildhometips(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));

    // 2. main data
    setmain(builditemlist(findObj(data, 'payload')));
  }

  // classification tips
  function buildclassificationtips(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));

    // 2. main data
    setmain(builditemlist(findObj(data, 'payload')));
  }


  // tipsfamily
  function buildtipsfamily(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));
  
    // 2. main data
    setmain(builditemlist(findObj(data, 'payload')));
  }
  /****************************************************************************************************/
  // end build tips
  /****************************************************************************************************/


  /****************************************************************************************************/
  // begin build article
  /****************************************************************************************************/
  function buildarticle(data)
  {
    //verifica si es tip pro(status = 10 no es libre)
    var free = data.article.status == 10 ? false : true;

    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));

    // 2. news tip
    setmainextra(buildnewsarticle(data));
    
    // 3. main data
    jsondata = {"@context": "https://schema.org","@type": "Article",
      publisher,
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": KL.cookiedomain
      },
      author: buildAuthor(data.article.clientdata.firstname, data.article.clientdata.lastname, data.article.clientdata.path),
      "articleSection": "Noticias",
      "name": data.article.name,
      "headline": data.article.name,
      "description": data.article.description,
      "datePublished": data.article.published,
      "dateModified": data.article.published,
      "mainEntityOfPage": KL.mydomains,
    };

    if (data.article.video)
      jsondata.video = buildVideo(data.article.name, data.article.description, data.article.key, data.article.video.thumb, data.article.video.videoid, data.article.published, data.article.video.duration, data.article.view);

    if (data.article.image)
    {
      jsondata.image = [
        KL.cdn7domains + "/ss_secreto/" + data.article.key + "/640x640/" + data.article.image + (KL.haswebp?".webp":".jpg")
      ];

      if (data.article.steps){
        jsondata.articleBody = [];

        for (var i = 0, l = data.article.steps.length; i < l; i++)
        {
          jsondata.image.push(KL.cdn7domains + "/ss_secreto/" + data.article.key + "/640x640/" + data.article.steps[i].imagen + (KL.haswebp?".webp":".jpg"));

          jsondata.articleBody.push("Paso " + data.article.steps[i].orden + ": " + data.article.steps[i].descripcion);
        }
      }
    } else {
      jsondata.image = [
        KL.cdn7domains + "/kiwi5/static/k5-o-640x640.png"
      ];
    }

    if(!free)
      jsondata = setCreativeWork(jsondata, free);

    setmain(JSON.stringify(jsondata));
  }

  function buildnewsarticle(data)
  {
    // 2. main data
    jsondata = {"@context": "https://schema.org","@type": "NewsArticle",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": document.URL
      },
      "headline": data.article.htmltitle, //"¿Tienes una bolsita de té? Úsala para cultivar manzanilla en tu huerto casero",
      "datePublished": data.article.published,
      "dateModified": data.article.published,
      author: buildAuthor(data.article.clientdata.firstname, data.article.clientdata.lastname, data.article.clientdata.path),
      publisher,
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": KL.cookiedomain
      },
      "articleSection": "Noticias"
    }

    if (data.article.image)
    {
      jsondata.image = [
        KL.cdn7domains + "/ss_secreto/" + data.article.key + "/640x640/" + data.article.image + (KL.haswebp?".webp":".jpg")
      ];

      if (data.article.steps){
        c = 0;
        for (var i = 0, l = data.article.steps.length; i < l; i++)
        {
          jsondata.image.push(KL.cdn7domains + "/ss_secreto/" + data.article.key + "/640x640/" + data.article.steps[i].imagen + (KL.haswebp?".webp":".jpg"))
          c++;
          if (c >= 2) break;
        }
      }
    } else {
      jsondata.image = [
        KL.cdn7domains + "/kiwi5/static/k5-o-640x640.png"
      ];
    }
    return JSON.stringify(jsondata);
  }


  // articlelist
  function buildarticlelist(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(findObj(data, 'bc')));
  
    var itera = ['articuloslista', 'articulosmasleidos']
    var obj = [];
    for(var nodo of itera){
      var payload = data[nodo].payload
      for(var i=0; Object.keys(payload).length > i; i++){
        obj.push(payload[i]);
      }
    }

    // 2. main data
    setmain(builditemlist(obj));
  }

  // articleclasiflist
  function buildarticlecalsiflista(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(data.classificationdata.bc));
    
    var itera = ['articulosclasiflista', 'articulosmasleidos']
    var obj = [];
    for(var nodo of itera){
      var payload = data[nodo].payload
      for(var i=0; Object.keys(payload).length > i; i++){
        obj.push(payload[i]);
      }
    }
  
    // 2. main data
    setmain(builditemlist(obj));
  }
  /****************************************************************************************************/
  // end build article
  /****************************************************************************************************/

  function buildproduct(data)
  {
    //verifica si es tip pro(status = 10 no es libre)
    var free = data.detalleproducto.status == 10 ? false : true;
    jsondata = {"@context": "https://schema.org","@type": "Article",
      publisher,
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": KL.cookiedomain
      },
      author: buildAuthor(data.detalleproducto.clientdata.firstname, data.detalleproducto.clientdata.lastname, data.detalleproducto.clientdata.path),
      "articleSection": "Noticias",
      "name": data.detalleproducto.name,
      "headline": data.detalleproducto.name,
      "description": data.detalleproducto.description,
    };


    if (data.detalleproducto.image)
    {
      jsondata.image = [
        KL.cdn7domains + "/ss_secreto/" + data.detalleproducto.key + "/320x420/" + data.detalleproducto.image + (KL.haswebp?".webp":".jpg")
      ];
    } else {
      jsondata.image = [
        KL.cdn7domains + "/kiwi5/static/k5-o-640x640.png"
      ];
    }

    if(!free) //KL.pagedata.page.wall
      jsondata = setCreativeWork(jsondata, free);

    setmain(JSON.stringify(jsondata));
  }

  function buildlistacompilaciones(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(data.breadcrumbs.bc));

    jsondata = {"@context": "https://schema.org",
      publisher,
      "@type": "WebSite",
      "name": KL.officialname,
      "url": KL.webdomains,
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": KL.webdomains + "/buscar?q={search_term_string}",
        },
        "query-input": "required name=search_term_string",
      },
    };
    
    // 2. recipe news
    setmainextra(JSON.stringify(jsondata));
 
    // 2. main data
    setmain(builditemlist(findObj(data, 'payload')));
  }

  function buildcompilacionreceta(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(data.compilacionreceta.bc));

    // 2. dataextra
    setmainextra(JSON.stringify(buildWebSite()));

    if(data.compilacionreceta.recipes.length > 0)
    {
      jsondata = {"@context": "https://schema.org","@type": "ItemList","itemListElement": []};
      var i = 0;
      //build itemList de las compilaciones
      for(var recipe of data.compilacionreceta.recipes)
      {
        element = {"@type": "ListItem",
                   "position": i+1,
                   "url": KL.mydomains + recipe.path,
                   "name": recipe.name,
                   "description": recipe.description,
                   "image:": KL.cdn7domains + "/recetaimagen/" + recipe.key + "/640x640/" + recipe.image + (KL.haswebp?".webp":".jpg"),
                   };
        i++;
        jsondata.itemListElement.push(element);
      }
    }
  
    setmain(JSON.stringify(jsondata));
  }

  function buildrecipebook(data)
  {
    // 1. breadcrumbs
    setbc(buildbc(data.breadcrumbs.bc));

    // Sólo crea el WebSite
    setmainextra(JSON.stringify(buildWebSite()));

    // 2. main data
    jsondata = {"@context": "https://schema.org","@type": "NewsArticle",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": document.URL
      },
      "headline": data['ssh-nombre'],
      author: buildAuthor(KL.officialname, '', data['ssh-url']),
      publisher,
      "articleSection": "Noticias",
      "description": data['ssh-desc'],
      "keywords": data['ssh-nombre'],
      "image": data['ssh-media'],
    }

    setmain(JSON.stringify(jsondata));
  }


  function buildbook(data)
  {
    // recetarios son libros tambien
    // 1. breadcrumbs
    //setbc(buildbc(data.tip.bc));
    setbc(buildbc(data.breadcrumbs.bc));

    // 2. main data
    jsondata = {"@context": "https://schema.org","@type": "Book",
      publisher,
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": KL.cookiedomain
      },
      author: buildAuthor("", "", ""),
      "bookFormat": "EBook", //"AudioBook, EBook, GraphicNovel, Hardcover, Paperback", // ejemplos de tipos formato
      "numberOfPages": "100" // Ejemplo
    };

    setmain(JSON.stringify(jsondata));
  }

  function buildapp()
  {
    // 1. breadcrumbs
    //setbc(buildbc(data.tip.bc));
    setbc(buildbc(findObj(data, 'bc')));
    // 2. main data
    jsondata = {"@context": "https://schema.org","@type": "SoftwareApplication",
      publisher,
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": KL.cookiedomain
      },
      author: buildAuthor("", "", ""),
       "operatingSystem": "Android 1.6",
       "license": "url" // Si es que hay una url de licencia
    };
    return JSON.stringify(jsondata);

    /*
    {
       "@context": "https://schema.org",
       "@type": "SoftwareApplication",
       "name": "Angry Birds",
       "operatingSystem": "ANDROID",
       "applicationCategory": "GameApplication",
       "aggregateRating": {
         "@type": "AggregateRating",
         "ratingValue": "4.6",
         "ratingCount": "8864"
       },
       "offers": {
         "@type": "Offer",
         "price": "1.00",
         "priceCurrency": "USD"
       }
     }
     */
  }

  function clean()
  {
    // clean all scripts
    for (var i in scripts)
    {
      document.head.removeChild(scripts[i]);
    }
    scripts = {};
  }

  KL.loader.addHookLoad('ldjson', analyze);
  KL.loader.addHookUnload('ldjson', clean);
}

/* stats, register events into analytics, FB, kiwi stat */

KL.Modules.stat = new function()
{
  var self = this;

  // Register normal page
  this.registerPage = registerPage;
  function registerPage()
  {
    if (window.gtag != undefined) {
      gtag('event', 'page_view', { page_location: location.href, page_path: location.pathname + location.search } );
    } else {
      ga('send', 'pageview', location.pathname + location.search);
    }
  }

  // Simple event
  this.registerEvent = registerEvent;
  function registerEvent(categoria, etiqueta, amount)
  {
    if (!amount)
      amount = null;
    if (window.gtag != undefined) {
      gtag('event', categoria, categoria+"/"+KL.device+"/"+KL.language, etiqueta, amount);
    } else {
      ga('send', 'event', categoria, categoria+"/"+KL.device+"/"+KL.language, etiqueta, amount);
    }
  }

  // ecommerce event
  this.registerSubscription = registerSubscription;
  function registerSubscription(orderid, productid, amount)
  {
    if (window.gtag != undefined) {
      gtag('event', 'sale');
    } else {
      registerEvent('sale', 'sale/subscription/'+productid, amount);
      ga('ecommerce:addTransaction', {'id': orderid, 'affiliation': 'InSite', 'revenue': amount, 'shipping': '0', 'tax': '0', 'currency': 'MXN' });
      ga('ecommerce:addItem', {'id': orderid, 'name': 'Subscription PRO', 'sku': productid, 'category': 'subscription', 'price': amount, 'quantity': 1, 'currency': 'MXN' });
      ga('ecommerce:send');
    }
  }

  this.registerEventGA4 = registerEventGA4;
  function registerEventGA4(name, params){
    gtag('event', name, params);
  }
}
KL.Modules.ads = new function()
{
  var self = this;
  var analyzeclass = "buildad";
  var globalcounter = 1;
  var timerall = null;
  var apstagSet = false;
  var taboolaSet = false;
  var advertising = { general: true, taboola: true, sticky: true, teads: true };
  var fieldsInnerHTML = {};

  this.setApstag = setApstag;
  function setApstag() {
    if (apstagSet)
      return;

    apstag.init({
      pubID: '972b50b3-6527-47e8-baae-88f9430414db',
      adServer: 'googletag',
   });
   apstagSet = true;
  }

  function getsize(id)
  {
    switch(id)
    {
      case '1x1': return [[1,1]];
      case 'billboard': return [[1200,250],[970,250],[970,90],[728,90]];
      case 'cinta': return [[957,56]];
      case '300x250':
        if (KL.device == "pc")
          return [[300,250]];
        else
          return [[300,250],[336,280]];
      case 'halfpage': return [[300,600],[300,250],[160,600],[120,600]];
      case 'fcarpet': return [[300,600]];
      case 'middle': return [[728,90]];
      case 'footer': return [[728,90],[970,90]];
      case 'mbillboard': return [[320,50]];
      case '320x50': return [[320,50]];
      case 'mfooter': return [[320,100],[320,50],[300,250]];
      case 'quiz': return [[320,50]]; // iguales que mbillboard mobile
      case 'sticky_web':
        if (KL.device == "pc")
          return [[728,90]];
        else
          return [[300,100],[320,50],[320,100]];
    }
    return [];
  }

  function setDisplay(d)
  {

    var n = WA.toDOM('hcmslider');

    // Publicidad de video inferior derecho
    //if(n && !advertising.general) // video inferior derecho
    if(n)
    {
      n.parentNode.removeChild(n);
      var scriptVideo = document.getElementsByTagName('script') || [];
      var arr = Array.prototype.slice.call(scriptVideo)

      if(arr.length > 0)
        arr.forEach((a) => {
          if(a.innerText.indexOf('invokeVideoPlayer') == 0)
            a.parentNode.removeChild(a);
        });

    }
    
    n = WA.toDOM('receta-video-cintillo-publicidad-no-pro');

    if(n)
      n.style.display = d;

    n = document.getElementsByClassName('teads-inread');
    if(n.length > 0){
      for(i = 0; n.length > i; i++){
        n[i].style.display = d;
      }
    }

    // Sticky
    if(advertising.sticky){
      llamaSticky();
    } else
      removeStickyStyle();

    if(KL.device === 'pc')
    {
      WA.toDOM('footer-adbanner').style.display = d;
      WA.toDOM('adbottom').style.display = d;

      if(d == 'block')
      {
        WA.toDOM('footer-div-crosslink').style.width = '880px';
      } else {
        WA.toDOM('footer-div-crosslink').style.width = '100%';
      }
    }

    if(KL.device === 'mobile')
    {
      WA.toDOM('footer-adbanner').style.display = d;
    }
  }

  this.buildAd = buildAd;
  function buildAd(N)
  {
    if (N.built)
      return;

    N.built = true;

    // special rules to apply.
    if (KL.pagedata.page.noad)
      return;

    var oop = N.dataset.oop;
    var id = N.dataset.id;

    // filtrar sticky ad, no poner en US
    if (id == "sticky_web" && KL.Modules.client && KL.Modules.client.getCountry() == "US")
      return;

    // si la página está en una receta sin video no presenta sticky
    if (WA.toDOM('ad-rec-sticky-web') && id == "sticky_web")
    {
      removeStickyStyle();
      if (id == "sticky_web")
        return;
    }
    else
    {
      if(advertising.sticky)
        llamaSticky();
    }

    var adunit = KL.pagedata.page.adprefix + id;
    var nodeid = 'div'+globalcounter+'_' + adunit;
    globalcounter++;
    N.id = nodeid;

    var size = getsize(id)
    var position = N.dataset.position;
    var placementid = N.dataset.placementid;
    var gaplacementid = N.dataset.gaplacementid;
    var ixplacementid = N.dataset.ixplacementid;
    var formatid = N.dataset.ixplacementid;

    // 1. TARGETING
    if (position)
      var position = '.setTargeting("position", "'+position+'")';
    else
      var position = (KL.device=="mobile"&&id=='300x250')?'.setTargeting("position", "mobile")':'';

    var strkeywords = KL.pagedata.page.keywords?'.setTargeting("keywords", '+JSON.stringify(KL.pagedata.page.keywords)+')':'';

    if (KL.pagedata.page.type)
      strkeywords += '.setTargeting("type", "'+KL.pagedata.page.type+'")';

    var codegoogle = '';

    if (id == 'oop')
    {
      codegoogle = 'googletag.cmd.push(function() { var slot = googletag.defineOutOfPageSlot("/3879499/'+adunit+'","'+nodeid+'")'+strkeywords+'.addService(googletag.pubads()); googletag.pubads().refresh([slot]); }); '
        + 'googletag.cmd.push(function() { googletag.display("'+nodeid+'"); });';

      setTimeout(function() { tryeval(codegoogle); }, 1);
      setTimeout(() => {
        if(N.innerHTML && !fieldsInnerHTML.kiwi_oop)
          fieldsInnerHTML.kiwi_oop = N.innerHTML;
          N.innerHTML = ''
      }, 1000)
      return
    }
    if (id == '1x1')
    {
      codegoogle = 'googletag.cmd.push(function() { var slot = googletag.defineSlot("/3879499/'+adunit+'",'+JSON.stringify(size)+',"'+nodeid+'")'+strkeywords+'.addService(googletag.pubads()); googletag.pubads().refresh([slot]);  });';
      //googletag.display("'+nodeid+'");
      //console.log(codegoogle);
      setTimeout(function() { tryeval(codegoogle); }, 1);
      setTimeout(() => {
        if(N.innerHTML && !fieldsInnerHTML.kiwi_1x1)
          fieldsInnerHTML.kiwi_1x1 = N.innerHTML;
        N.innerHTML = ''
      }, 1000)
      return
    }

    // tenemos que pasar los IDs naturales parte del string o da un error porque el payload[i] ya no es accesible
    codegoogle = '';
    bidders = buildbidders(id, size);
    jsonbidders = JSON.stringify(bidders);
    // Agregué googletag.enableServices(); segundo renglon 07/06/2023
    // prebid
    codegoogle += 'googletag.cmd.push(function() { var slot = googletag.defineSlot("/3879499/'+adunit+'",'+JSON.stringify(size)+',"'+nodeid+'")'+position+strkeywords+'.setCollapseEmptyDiv(true).addService(googletag.pubads()); ';
    codegoogle += 'googletag.display("'+nodeid+'"); ';
    codegoogle += 'KL.Modules.ads.setApstag(); ';
    codegoogle += 'apstag.fetchBids({slots: [{slotID: "'+nodeid+'", slotName: "/3879499/'+adunit+'", sizes: '+JSON.stringify(size)+'}], timeout: 2e3, ';
    codegoogle += 'function(bids) {googletag.cmd.push(function(){ apstag.setDisplayBids(); googletag.pubads().refresh(); }); } }); ';
    codegoogle += 'var adUnits = [{ code: "'+nodeid+'", mediaTypes: { banner: { sizes: '+JSON.stringify(size)+'}}, bids: '+jsonbidders+'}]; ';
    codegoogle += 'pbjs.setBidderConfig({"bidders": ["gourmetads.com"], "config": { "schain": { "validation": "relaxed", "config": { "ver":"1.0", "complete": 1, "nodes": [{"asi":"gourmetads.com", "sid":"11258", "hp":1}]}}}}); ';
    codegoogle += 'pbjs.que.push(function() { pbjs.addAdUnits(adUnits); pbjs.requestBids({ timeout: PREBID_TIMEOUT, adUnitCodes: ["'+nodeid+'"], bidsBackHandler: function() { pbjs.setTargetingForGPTAsync(["'+nodeid+'"]); googletag.pubads().refresh([slot]); } }); });';
    codegoogle += '});';
    /*if (KL.devel)
    {
      console.log('** Evaluando google code para ' + nodeid);
      console.log(codegoogle);
      console.log(N);
    }*/

    setTimeout(function() { tryeval(codegoogle); }, 1);
  }

  function buildbidders(id, size)
  {
    code = [];
    for (i in KL.Modules.ads.bidders)
    {
      var subcode = KL.Modules.ads.bidders[i].getCode(id, size);
      if (!subcode)
        continue;
      if (Array.isArray(subcode))
      {
        for (var j = 0, l = subcode.length; j<l; j++)
          code.push(subcode[j]);
      }
      else
      {
        code.push(subcode);
      }
    }
    return code
  }

  function tryeval(codegoogle)
  {
    // TODO(phil) try catch ?
    eval(codegoogle);
  }
  
  this.refresh = refresh;
  function refresh()
  {
    googletag.pubads().refresh();
  }

  function setAdvertising()
  {
    advertising.general = true;
    advertising.taboola = true;
    advertising.teads = true;
    showTaboola();
    //advertising.sticky = true;

    if(KL.Modules.client.clientready && KL.Modules.client.clientpro){
      advertising.general = false;
      advertising.taboola = false;
      advertising.sticky = false;
      advertising.teads = false;
      KL.Modules.ads.taboola.unload();
      KL.Modules.ads.bidders.teads.removeTeadsTag();
    }

    // Oculta taboola en home y toda la publicidad en citrobiox
    for(var key of KL.pagedata.page.keywords){
      switch(key)
      {
        case 'home':
          advertising.taboola = false;
          advertising.teads = false;
          break;
        case 'citrobiox':
          advertising.general = false;
          advertising.taboola = false;
          advertising.sticky = false;
          advertising.teads = false;
          break;
        case 'mi-cuenta':
          advertising.general = false;
          advertising.taboola = false;
          advertising.sticky = false;
          advertising.teads = false;
          break;
        case 'my-account':
          advertising.general = false;
          advertising.taboola = false;
          advertising.sticky = false;
          advertising.teads = false;
          break;
      }
    }

    if(!advertising.taboola)
      hideTaboola();

  }

  /* ================================================================================ */
  /* Analyze the page to show visible ads, or all (=true)
  /* ================================================================================ */
  this.analyze = analyze;
  function analyze(all)
  {
    if(KL.Modules.client.clientready)
    {
      // Revisa si se debe mostrar publicidad
      setAdvertising();

      if(advertising.general)
      {
        setDisplay('block');
        timerall = null;
        var maxheight = WA.browser.getWindowHeight();
        var maxwidth  = WA.browser.getWindowWidth();
        var scrolltop = WA.browser.getScrollTop();
        var scrollleft = WA.browser.getScrollLeft();

        // Obtenemos, los nodos ads que cumplen
        var adNodes = document.getElementsByClassName(analyzeclass);

        if (adNodes)
        {
          for (var id = 0; id < adNodes.length; id++)
          {
            val1x1oop(adNodes[id])
            if (adNodes[id].scanned && !adNodes[id].refresh) // must be in refresh mode to be scanned and updated
              continue;

            if (!all) {
              // verificar si es parte de pantalla visible y flag visible
              var top = WA.get(adNodes[id]).top();
              var left = WA.get(adNodes[id]).left();
              var width = WA.get(adNodes[id]).width();
              var height = WA.get(adNodes[id]).height();
              var displaynone = isDisplayNone(adNodes[id]);

              if (top + height < scrolltop || top > scrolltop + maxheight || left + width < scrollleft || left > scrollleft + maxwidth || displaynone)
                continue;
            }
            // build only the ads visible. Others will be refreshed on +5 sec
            adNodes[id].scanned = true;
            adNodes[id].refresh = false;
            buildAd(adNodes[id]);
            val1x1oop(adNodes[id])
          }
        }

        if (!all) {
          // wait 5 seconds to build all ads
          timerall = setTimeout( function() { analyze(true); }, KL.loader.waitload );
        }
      } else {
        setDisplay('none');
        //pbjs.removeAdUnit();
      }
    }
  }

  function val1x1oop(n){
    if(n.dataset.id == 'oop' || n.dataset.id == '1x1'){
      if(KL.pagedata.page.keywords == 'home'){
        n.innerHTML = ''
      } else {
        if(n.dataset.id == 'oop')
          n.innerHTML = fieldsInnerHTML.kiwi_oop
        if(n.dataset.id == '1x1')
          n.innerHTML = fieldsInnerHTML.kiwi_1x1
      }
    }
  }

  function isDisplayNone(node)
  {
    if (node.parentNode == null || node.parentNode == window || node.parentNode == window.document)
      return false
    if (node.style.display == "none")
      return true;
    return isDisplayNone(node.parentNode);
  }

  this.onload = onload;
  function onload()
  {
    setAdvertising();
    // Obtenemos, los nodos ads que cumplen
    var adNodes = document.getElementsByClassName(analyzeclass);
    if (adNodes)
    {
      for (var id = 0; id < adNodes.length; id++)
      {
        adNodes[id].scanned = true;
        adNodes[id].refresh = true;
      }
    }

    // KL.Modules.ads.seedtag.onload();
    if (!KL.Modules.client || !KL.Modules.client.clientpro){
    //if(advertising.general && advertising.taboola){
      //KL.Modules.ads.truvid.onload();
      //KL.Modules.ads.insurads.onload();
      // KL.Modules.ads.lunamedia.onload();
      KL.Modules.ads.bidders.teads.addTeadsTag(advertising.teads)

      if(KL.rootsite == 'kiwi' || KL.rootsite == 'crafto')
        KL.Modules.ads.seedtag.onload();

      if(KL.rootsite == 'kiwi')
      {
        // Revisa si se debe mostrar publicidad
        //setAdvertising(); 

        if(!taboolaSet){
          KL.Modules.ads.taboola.onload();
          taboolaSet = true;
        }

        // el mid sólo se va a presentar cuando el template sea type='sin-video'
        if(taboolaSet && WA.toDOM('taboola-mid-article-thumbnails'))
          KL.Modules.ads.taboola.taboolaMid();

        KL.Modules.ads.amazon.onload();
      }
    }
  }

  function showTaboola(){
    if(KL.rootsite == 'kiwi')
      WA.toDOM('taboola-below-article-thumbnails').style.display = 'block';
  }

  function hideTaboola(){
    if(KL.rootsite == 'kiwi')
      WA.toDOM('taboola-below-article-thumbnails').style.display = 'none';
  }

  function onunload()
  {
    if (timerall != null)
      clearTimeout(timerall);
    timerall = null;

    if(KL.rootsite == 'kiwi' || KL.rootsite == 'crafto')
      KL.Modules.ads.seedtag.onunload();

    if (!KL.Modules.client || !KL.Modules.client.clientpro){
      //KL.Modules.ads.truvid.onload();
      //KL.Modules.ads.insurads.onload();
      // KL.Modules.ads.lunamedia.onload();
    }
  }

  // Funcion para esconder el footer-adbannersticky
  this.removeStickyStyle = removeStickyStyle;
  function removeStickyStyle()
  {
    // console.log('entra para remover estilo sticky al banner de footer');

    // var rutapagina = document.location.pathname;
    // console.log('ruta ok: ' + rutapagina);

    if (WA.toDOM('footer-adbannersticky'))
    {
      // console.log('sigue aqui para remover sticky');
      WA.toDOM('footer-adbannersticky').style.display = 'none';
      WA.toDOM('footer-remueve-sticky').style.display = 'none';
      advertising.sticky = false;
    }
  }

  // Funcion para reiniciar el display del footer-adbannersticky y que este banner vuelva a mostrar
  function sticky()
  {
    if (WA.toDOM('footer-adbannersticky'))
    {
      // console.log('reinicio el valor del sticky');
      if (KL.Modules.client && KL.Modules.client.clientpro){
        // console.log('entra a if client-clientpro en sticky');
        WA.toDOM('footer-adbannersticky').style.display = 'none';
        WA.toDOM('footer-remueve-sticky').style.display = 'none';
        advertising.sticky = false;
      }else{
          WA.toDOM('footer-adbannersticky').style.display = 'flex';
          WA.toDOM('footer-remueve-sticky').style.display = 'block';
          advertising.sticky = true;
      }
    }
  }


  function calculaPosicionSticky(){
    if (WA.toDOM('footer-adbannersticky')){

      pagina = WA.toDOM('body');
      footerbanner = WA.toDOM('footer-adbanner');
      sticky = WA.toDOM('footer-adbannersticky');
      footer = WA.toDOM('footer-divfooter');

      // altura visible en pantalla
      areavisiblecliente = document.documentElement.clientHeight;
      // console.log('area visible cliente: ' + areavisiblecliente);

      alturafooterbanner = footerbanner.scrollHeight;
      // console.log('altura footer banner: ' + alturafooterbanner);

      alturasticky = sticky.scrollHeight;
      // console.log('altura sticky: ' + alturasticky);

      alturafooter = footer.scrollHeight;
      // console.log('altura footer: ' + alturafooter);

      totaldivs =  alturafooterbanner + alturasticky + alturafooter;

      if(KL.device == 'pc')
        totaldivs = totaldivs + 40;
      else if(KL.device == 'mobile')
        totaldivs = totaldivs + 30;

      // console.log('sumatoria divs: ' + totaldivs);

      // area de interaccion en pantalla respecto al scroll
      areainteraccion = areavisiblecliente + totaldivs;
      // console.log('area interaccion: ' + areainteraccion);

      // Calcula posicion de div footer respecto al scrolltop
      posicionfooterbanner = footer.offsetTop;
      // console.log('posicion de footer banner: ' + posicionfooterbanner);

      // posicion en la que se esconder� sticky
      escondesticky = posicionfooterbanner - areainteraccion;
      // console.log('posicion en la que se esconder� sticky: ' + escondesticky);

      // posicion de scroll
      posicionscroll = window.scrollY;
      // console.log('posicion de scroll: ' + posicionscroll);

      posisionescondesticky = escondesticky + alturafooter;
      // console.log('posicion real donde se va a esconder sticky: ' + posisionescondesticky);
      if( posicionscroll > posisionescondesticky){
        // console.log('a partir de aqui se esconde sticky');
        sticky.style.display = 'none';
        WA.toDOM('footer-remueve-sticky').style.display = 'none';
        advertising.sticky = false;
      }
    }
  }

  function llamaSticky(){
    if (WA.toDOM('footer-adbannersticky'))
    {
      if(advertising.sticky)
      {
        WA.toDOM('footer-adbannersticky').style.display = 'flex';
        setTimeout(function() {WA.toDOM('footer-remueve-sticky').style.display = 'block';}, 0);
      }
    }
  }

  window.addEventListener('scroll', calculaPosicionSticky);

  // onload: put all the ads on refresh state
  // KL.loader.addHookLoad('ads', onload);
  KL.loader.addHookPostLoad('ads', sticky);
  KL.loader.addHookUnload('ads', onunload);

}


/** Se agrega seedtag 19/08/2024 solicitud de Pao Muciño, correo con asunto: Formato de Publicidad In Image  */
KL.Modules.ads.seedtag = new function()
{
  var self = this;
  this.node = null;

  this.onload = onload;
  function onload()
  {
    var txt = undefined;

    switch(KL.rootsite){
      case 'kiwi':
        txt = getIdKiwi();
        break;
      case 'crafto':
        txt = getIdCrafto();
        break;
      default:
        txt = undefined
        break;
    }

    if(txt)
    {
      self.node = WA.Managers.externloader.loadexterncode("https://t.seedtag.com/t/"+ txt + "01.js?v=" + Math.random());
    }
  }

  function getIdKiwi()
  {
    if(KL.currentcode.recipe || KL.currentcode.tip || KL.currentcode.article)
      return '2725-3907-';
    return undefined;
  }

  function getIdCrafto()
  {
    if(KL.currentcode.tip || KL.currentcode.article)
      return '9473-2086-';
    return undefined;
  }

  this.onunload = onunload;
  function onunload()
  {
    if (self.node) {
      self.node.parentNode.removeChild(self.node);
      self.node = null;
    }
  }
}





/*
KL.Modules.ads.seedtag = new function()
{
  var self = this;
  this.node = null;

  this.onload = onload;
  function onload()
  {
    // only tips and recipes
    if ((!KL.currentcode.tip) && (!KL.currentcode.recipe))
      return;

    // si encuentra el div ad-seedtag entonces ejecuta el seedtag
    if ( WA.toDOM('ad-seedtag') )
    {
      window._seedtagq = window._seedtagq || [];
      window._seedtagq.push(['_setId', '2725-3907-01']);
      window._seedtagq.push(['iframe_mode']);
      self.node = WA.Managers.externloader.loadexterncode("//config.seedtag.com/loader.js?v=" + Math.random());
      //  console.log("seedtag loaded");
    }
  }

  this.onunload = onunload;
  function onunload()
  {
    if (self.node) {
      self.node.parentNode.removeChild(self.node);
      self.node = null;
//      console.log("seedtag unload");
    }
  }
}
*/

/* Se comentó, solicitud de Phil 03/05/2023
KL.Modules.ads.truvid = new function()
{
  var self = this;
  this.node = null;

  this.onload = onload;
  function onload()
  {
    // only receta en prueba
    //console.log(document.location.pathname);
    /*
    if (document.location.pathname != '/receta/platos-fuertes/mexicanos/jalapenos-rellenos-de-frijol-con-chorizo')
      return;
    */

    /* solo recetas con video */
    /*if (!WA.toDOM('ad-rec-truvid')) si se descomenta la función, descomentar este if
      return;

    // self.node = WA.Managers.externloader.loadexterncode("//cnt.trvdp.com/js/1252/5477.js?v=" + Math.random());
    // console.log("truvid loaded");
  }

  this.onunload = onunload;
  function onunload()
  {
    if (self.node) {
      self.node.parentNode.removeChild(self.node);
      self.node = null;
      // console.log("truvid unload");
    }
  }
}
*/

/* Se retira, correo del 13/08/2024 asunto: RETIRAR INSURADS
KL.Modules.ads.insurads = new function()
{
  var self = this;
  this.node = null;

  this.onload = onload;
  function onload()
  {
    self.node = WA.Managers.externloader.loadexterncode("//cdn.insurads.com/bootstrap/CKVE5KE3.js?v=" + Math.random());
  }

  this.onunload = onunload;
  function onunload()
  {
    if (self.node) {
      self.node.parentNode.removeChild(self.node);
      self.node = null;
    }
  }
}
*/


KL.Modules.ads.bidders = {};

KL.Modules.ads.bidders.gourmetads = new function()
{
  var self = this;

  function getPlacement(id)
  {
    switch(id)
    {
      case 'billboard': return '21719610';
      case '300x250':
         if (KL.device == 'mobile')
           return '21719628';
         return '21719802';
      case 'halfpage': return '21719611';
      case 'middle': return '21719616';
      case 'footer': return '21719607';

      case '320x50': return '21719639';

      case 'mbillboard': return '21719639';
      case 'fcarpet': return '21719639';
      case 'mfooter': return '21719790';
      case 'quiz': return '21719639'; // igual que mbillboard
      case 'sticky_web':
         if (KL.device == 'mobile')
           return '21719790';
         return '21719607';
    }
    return null;
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    var placement = getPlacement(id);

    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
    return null;

    if (!placement)
      return null;
    return {bidder:"gourmetads",params:{placementId:placement, usePaymentRule:true}};
  }
}

KL.Modules.ads.bidders.ix = new function()
{
  var self = this;

  function getPlacement(id)
  {
    switch(id)
    {
      case 'oop': return '355871';
      // case '1x1': return '355871';

      case 'billboard': return '358387';
      case '300x250':
         if (KL.device == 'mobile')
           return '358394';
         return '358388';
      case 'halfpage': return '358390';
      case 'middle': return '358391';
      case 'footer': return '358391';

      case '320x50': return '358393';

      case 'mbillboard': return '358393';
      case 'fcarpet': return '358393';
      case 'mfooter': return '358395';
      case 'quiz': return '358393'; // igual que mbillboard
      case 'sticky_web':
         if (KL.device == 'mobile')
           return '358395';
         return '358391';
    }
    return null;
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    var placement = getPlacement(id);

    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
    return null;

    if (!placement)
      return null;

    data = [];
    for (var j = 0; j < size.length; j++)
    {
      data.push({ bidder: "ix", params: { siteId: placement, size: size[j] } });
    }
    return data;
  }
}

/* Solicitud de Paola Muciño correo: 09/08/2024 asunto: Ajustes Prebid - Parte 1
KL.Modules.ads.bidders.richaudience = new function()
{
  var self = this;

  function getPlacement(id)
  {
    switch(id)
    {
      case 'billboard': return '1VlIIAsEqW';
      case '300x250':
         if (KL.device == 'mobile')
           return 'OSzTr4APXc';
         return 'Al6AgBcRIj';
      case 'halfpage': return 'ofN46OLDGE';
      //case 'middle': return 'Al6AgBcRIj';
      case 'middle': return 'iQesaEsuiz';
      case 'footer': return 'iQesaEsuiz';

      case '320x50': return '0Pt5mL4bJw';

      case 'mbillboard': return '0Pt5mL4bJw';
      case 'mfooter': return 'OSzTr4APXc';
      case 'quiz': return '0Pt5mL4bJw'; // igual que mbillboard
      case 'sticky_web':
         if (KL.device == 'mobile')
           return '0Pt5mL4bJw';
         return 'iQesaEsuiz';
    }
    return null;
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    var placement = getPlacement(id);

    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
    return null;

    if (!placement)
      return null;

    return {bidder:"richaudience",params:{pid:placement, supplyType: 'site'}};
  }
}
*/

KL.Modules.ads.bidders.appnexus = new function()
{
  var self = this;

  function getPlacement(id)
  {
    switch(id)
    {
      case 'oop': return '13085447';
      // case '1x1': return '13085447';

      case 'billboard': return '13078565';
      case '300x250':
         if (KL.device == 'mobile')
           return '13081605';
         return '13081595';
      case 'halfpage': return '13081600';
      case 'middle': return '13081601';
      case 'footer': return '13081603';

      case '320x50': return '13081604';

      case 'mbillboard': return '13081604';
      case 'fcarpet': return '13081604';
      case 'mfooter': return '13081606';
      case 'quiz': return '13081604'; // igual que mbillboard<
      case 'sticky_web':
         if (KL.device == 'mobile')
           return '13081606';
         return '13081603';
    }
    return null;
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    var placement = getPlacement(id);

    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
    return null;

    if (!placement)
      return null;

    return {bidder:"appnexus",params:{placementId: placement}};
  }

}

/*
KL.Modules.ads.bidders.brightcom = new function()
{
  var self = this;

  function getPlacement(id)
  {
    if (id == '1x1')
      return null;
    return '20284';
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    placement = getPlacement(id);
    if (!placement)
      return null;

    return {bidder:"brightcom",params:{publisherId: placement}};
  }

}
*/


/*
KL.Modules.ads.bidders.rubicon = new function()
{
  var self = this;

  function getPlacement(id)
  {
    return {
      accountid: 21224,
      siteid: 272988,
      zoneid: 2206276
    };
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    placement = getPlacement(id);
    if (!placement)
      return null;

    return {bidder:"rubicon",params:{accountId: placement.accountid, siteId: placement.siteid, zoneId: placement.zoneid }};
  }

}
*/

KL.Modules.ads.bidders.rubicon = new function()
{
  var self = this;

  function getPlacement(id)
  {
    switch(id)
    {
      case 'oop':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      // case '1x1': return '13085447';

      case 'billboard':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2206276
        };

      case '300x250':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2206276
        };

      case 'halfpage':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      case 'middle':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      case 'footer':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      case '320x50':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      case 'mbillboard':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      case 'fcarpet':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      case 'mfooter':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };

      case 'quiz':
        return {
          accountid: 21224,
          siteid: 272988,
          zoneid: 2152992
        };
      case 'sticky_web':
        if (KL.device == 'mobile') {
          return {
            accountid: 21224,
            siteid: 272988,
            zoneid: 2152992
          };
        } else {
          return {
            accountid: 21224,
            siteid: 272988,
            zoneid: 2152992
          };
        }
    }
    return null;
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    var placement = getPlacement(id);

    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
    return null;

    if (!placement)
      return null;

    return {bidder:"rubicon",params:{accountId: placement.accountid, siteId: placement.siteid, zoneId: placement.zoneid }};
  }

}

/*
KL.Modules.ads.bidders.rhythmone = new function()
{
  var self = this;

  function getPlacement(id)
  {
    return '213806';
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    placement = getPlacement(id);
    if (!placement)
      return null;

    return {bidder:"rhythmone",params:{placementId: placement}};
  }

}
*/


/*
KL.Modules.ads.bidders.oftmedia = new function()
{
  var self = this;

  function getPlacement(id)
  {
    // if pc
    if (KL.device == "pc")
      return '22267936';

    // else if mobile
    return '22267941';
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    placement = getPlacement(id);
    if (!placement)
      return null;

    return {bidder:"oftmedia",params:{placementId: placement}};
  }
}
*/

KL.Modules.ads.bidders.triplelift = new function()
{
  var self = this;

  function getPlacement(id)
  {
    switch(id)
    {
      case 'oop': return '';
      case '1x1': return '';

      case 'billboard': return 'Kiwilimon_SHA_Prebid_Desktop_970x250';
      case '300x250':
         if (KL.device == 'mobile')
           return 'Kiwilimon_SHA_Prebid_Mobile_300x250';
         return 'Kiwilimon_SHA_Prebid_Desktop_300x250';
      case 'halfpage': return 'Kiwilimon_SHA_Prebid_Desktop_300x250';
      case 'middle': return 'Kiwilimon_SHA_Prebid_Desktop_728x90';
      case 'footer': return 'Kiwilimon_SHA_Prebid_Desktop_728x90';

      case '320x50': return 'Kiwilimon_SHA_Prebid_Desktop_300x250';

      case 'mbillboard': return 'Kiwilimon_SHA_Prebid_Mobile_320x50';
      case 'fcarpet': return 'Kiwilimon_SHA_Prebid_Mobile_320x50';
      case 'mfooter': return 'Kiwilimon_SHA_Prebid_Mobile_300x250';
      case 'quiz': return 'Kiwilimon_SHA_Prebid_Mobile_320x50'; // igual que mbillboard
      case 'sticky_web':
         if (KL.device == 'mobile')
           return 'Kiwilimon_SHA_Prebid_Mobile_300x250';
         return 'Kiwilimon_SHA_Prebid_Desktop_728x90';
    }
    return null;
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    var placement = getPlacement(id);

    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
    return null;

    if (!placement)
      return null;

    return {bidder:"triplelift",params:{inventoryCode: placement}};
  }

}

KL.Modules.ads.bidders.teads = new function()
{
  var self = this;
  var load = false;

  function getPlacement(id)
  {
    return {
      placementId: 180896,
      pageId:  166126,
    };
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    var placement = getPlacement(id);

    // pro
    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
      return null;

    if (!placement)
      return null;

    return {bidder:"teads",params:{placementId: placement.placementId, pageId: placement.pageId }};
  }

  this.addTeadsTag = addTeadsTag;
  function addTeadsTag(show){
    var pageId = '79860';
    if(!show){
      removeTeadsTag();
      return;
    }

    if(!load){
      scriptTeads = document.createElement('script');
      scriptTeads.type = 'text/javascript';
      scriptTeads.className = 'teads';
      scriptTeads.async = true;
      scriptTeads.src = '//a.teads.tv/page/' + pageId + '/tag';
      document.getElementsByTagName('head')[0].appendChild(scriptTeads);
      load = true;
    }
  }

  this.removeTeadsTag = removeTeadsTag;
  function removeTeadsTag(){
    var nodes = document.getElementsByTagName('script');
    for(var n of nodes){
      if(n.className == 'teads'){n.parentNode.removeChild(n)}
    }
    load = false;
  }
}


/** 03/10/2024 se agrega bidders de pubmatic, solicitó Pao Muciño correo: Integración Pubmatic - Prebid  */
KL.Modules.ads.bidders.pubmatic = new function()
{
  var self = this;
  var placement = undefined;
  var kiwi = {'billboard': '6273405', 
              '300x250': '6273402',
              'halfpage': '6273406',
              'footer': '6273403',
              'mfooter': '6273407',
              'sticky_web': '6273404',
              '1x1': '6273401',}

  var crafto = {'billboard': '6273410', 
                '300x250': '6273408',
                'halfpage': '6273411',
                'footer': '6273409',}

  this.getCode = getCode;
  function getCode(id, size)
  {
    if(KL.Modules.client.clientready && KL.Modules.client.clientpro)
      return null;

    placement = KL.rootsite === 'kiwi' ? kiwi[id] : KL.rootsite === 'crafto' ? crafto[id] : undefined;
    if (!placement)
      return null;

    return {bidder:"pubmatic",params:{'publisherId':'165475', 'adSlot':placement}};
  }
}





/*
KL.Modules.ads.bidders.tappx = new function()
{
  var self = this;

  function getPlacement(id)
  {
    // pc
    valortappxkey = 'pub-64140-desktop-9218';

    if (KL.device == 'mobile')
      valortappxkey = 'pub-64141-mweb-9239';

    return {
      endpoint: 'zz38863kl',
      host: 'zz38863kl.pub.tappx.com/rtb/',
      tappxkey: valortappxkey,
    };
  }

  this.getCode = getCode;
  function getCode(id, size)
  {
    placement = getPlacement(id);
    if (!placement)
      return null;

    return {bidder:"tappx",params:{endpoint: placement.endpoint, host: placement.host, tappxkey: placement.tappxkey }};
  }
}
*/


/*
KL.Modules.ads.lunamedia = new function()
{
  var self = this;
  this.node = null;

  this.onload = onload;
  function onload()
  {
    self.node = WA.Managers.externloader.loadexterncode("//d2q2a5sepkhvug.cloudfront.net/player.js?source=683273");
    //console.log("lunamedia loaded");
  }

  this.onunload = onunload;
  function onunload()
  {
    if (self.node) {
      self.node.parentNode.removeChild(self.node);
      self.node = null;
      // console.log("lunamedia unload");
    }
  }
}
*/

var amznLoad = false;

// DAG 19/Sep/2022
KL.Modules.ads.amazon = new function()
{
  this.onload = onload;
  function onload()
  {
    if(amznLoad)
      return;

    amznLoad = true;

    var lkn = document.createElement("LINK");
    lkn.setAttribute("rel", "dns-prefetch");
    lkn.setAttribute("href", "https://c.amazon-adsystem.com");
    document.head.appendChild(lkn);

    var lnk = document.createElement("LINK");
    lnk.setAttribute("rel", "preconnect");
    lnk.setAttribute("href", "https://c.amazon-adsystem.com");
    lnk.setAttribute("crossorigin", "");
    document.head.appendChild(lnk);

    /*
    WA.Managers.externloader.loadexterncode('https://c.amazon-adsystem.com/aax2/apstag.js');
    // Agrega la function del script
    WA.Managers.externloader.loadexterncode('', '!(function (a9, a, p, s, t, A, g) {' + 
                                                  'if (a[a9]) return; ' +
                                                    'function q(c, r) {' +
                                                      'a[a9]._Q.push([c, r]);' +
                                                    '}' +
                                                  'a[a9] = {' +
                                                  'init: function () {' +
                                                    'q("i", arguments);' +
                                                  '},' +
                                                  'fetchBids: function () {' +
                                                    'q("f", arguments);' +
                                                  '},' +
                                                  'setDisplayBids: function () {},' +
                                                  'targetingKeys: function () {' +
                                                    'return [];' +
                                                  '},' +
                                                  'dpa: function () {' +
                                                    'q("di", arguments);' +
                                                  '},' +
                                                  'rpa: function () {' +
                                                    'q("ri", arguments);' + 
                                                  '},' +
                                                  'upa: function () {' +
                                                    'q("ui", arguments);' +
                                                  '},' +
                                                  '_Q: [],' +
                                                  '};' +
                                                '})("apstag", window);');
  */
  }
  
}

// DAG 07/Nov/2022
// taboola
KL.Modules.ads.taboola = new function()
{
  var self = this;
  this.nodeTaboola = null;

  this.onload = onload;
  function onload()
  {
    self.nodeTaboola = document.createElement('script');
    self.nodeTaboola.type = 'text/javascript';
    self.nodeTaboola.innerHTML = "window._taboola = window._taboola || []; " +
    "_taboola.push({article:'auto'});" +
    "!function (e, f, u, i) {" +
      "if (!document.getElementById(i)){" +
        "e.async = 1;" +
        "e.src = u;" +
        "e.id = i;" +
        "f.parentNode.insertBefore(e, f);" +
      "}}(document.createElement('script')," +
          "document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/kiwilimon-mxn-kiwilimon/loader.js'," +
          "'tb_loader_script');" +
    "if(window.performance && typeof window.performance.mark == 'function')" +
    "{window.performance.mark('tbl_ic');}";

    document.getElementsByTagName('head')[0].appendChild(self.nodeTaboola);

    taboolaBelow();
    taboolaFlush();
  }

  this.unload = unload;
  function unload()
  {
    if(self.nodeTaboola)
    {
      self.nodeTaboola.parentNode.removeChild(self.nodeTaboola);
      self.nodeTaboola = null;
    }

    if(self.nodeMid)
    {
      self.nodeMid.parentNode.removeChild(self.nodeMid);
      self.nodeMid = null;
    }

    if(self.nodeBelow)
    {
      self.nodeBelow.parentNode.removeChild(self.nodeBelow);
      self.nodeBelow = null;
    }

    if(self.nodeFlush)
    {
      self.nodeFlush.parentNode.removeChild(self.nodeFlush);
      self.nodeFlush = null;
    }
  }

  this.taboolaMid = taboolaMid;
  function taboolaMid()
  {
    var nodo = WA.toDOM('taboola-mid-article-thumbnails');
    self.nodeMid = document.createElement('script');
    self.nodeMid.type = 'text/javascript';

    // Place this code where you want the "Mid Article Thumbnails" widget to render:
    self.nodeMid.innerHTML = "window._taboola = window._taboola || []; " +
                  "_taboola.push({" +
                    "mode: 'thumbnails-mid'," +
                    "container: 'taboola-mid-article-thumbnails'," +
                    "placement: 'Mid Article Thumbnails'," +
                    "target_type: 'mix'" +
                  "});";

    nodo.insertAdjacentElement('afterend', self.nodeMid);

  }
  
  function taboolaBelow()
  {
    self.nodeBelow = document.createElement('script');
    self.nodeBelow.type = 'text/javascript';
  
    // Place this code where you want the "Below Article Thumbnails" widget to render:
    self.nodeBelow.innerHTML = "window._taboola = window._taboola || [];" +
                  "_taboola.push({" +
                    "mode: 'alternating-thumbnails-a'," +
                    "container: 'taboola-below-article-thumbnails'," +
                    "placement: 'Below Article Thumbnails'," +
                    "target_type: 'mix'" + 
                  "});";

    var nodo = WA.toDOM('taboola-below-article-thumbnails');
    if(nodo)
      nodo.insertAdjacentElement('afterend', self.nodeBelow);
    
  }
  
  function taboolaFlush()
  {
    var nodo = WA.toDOM('body');
    self.nodeFlush = document.createElement('script');
    self.nodeFlush.type = 'text/javascript';
    self.nodeFlush.innerHTML = 'window._taboola = window._taboola || []; ' +
                  '_taboola.push({flush: true});';
      
    nodo.insertAdjacentElement('beforeend', self.nodeFlush);
  }

}
/* prebid.js v9.8.0-pre
Updated: 2024-08-14
Modules: appnexusBidAdapter, appnexusBidAdapter, ixBidAdapter, pubmaticBidAdapter, rubiconBidAdapter, seedtagBidAdapter, teadsBidAdapter, tripleliftBidAdapter, consentManagementGpp, consentManagementTcf, gppControl_usnat, gppControl_usstates, gptPreAuction, tcfControl, consentManagementUsp */
if(window.pbjs&&window.pbjs.libLoaded)try{window.pbjs.getConfig("debug")&&console.warn("Attempted to load a copy of Prebid.js that clashes with the existing 'pbjs' instance. Load aborted.")}catch(e){}else (function(){
(()=>{var r,t={70433:(r,t,e)=>{function n(r,t,e,n,o){for(t=t.split?t.split("."):t,n=0;n<t.length;n++)r=r?r[t[n]]:o;return r===o?e:r}e.d(t,{A:()=>n})},68128:r=>{
/*
* @license MIT
* Fun Hooks v0.9.10
* (c) @snapwich
*/
u.SYNC=1,u.ASYNC=2,u.QUEUE=4;var t="fun-hooks";var e=Object.freeze({useProxy:!0,ready:0}),n=new WeakMap,o="2,1,0"===[1].reduce((function(r,t,e){return[r,t,e]}),2).toString()?Array.prototype.reduce:function(r,t){var e,n=Object(this),o=n.length>>>0,i=0;if(t)e=t;else{for(;i<o&&!(i in n);)i++;e=n[i++]}for(;i<o;)i in n&&(e=r(e,n[i],i,n)),i++;return e};function i(r,t){return Array.prototype.slice.call(r,t)}var f=Object.assign||function(r){return o.call(i(arguments,1),(function(r,t){return t&&Object.keys(t).forEach((function(e){r[e]=t[e]})),r}),r)};function u(r){var a,c={},l=[];function p(r,t){return"function"==typeof r?h.call(null,"sync",r,t):"string"==typeof r&&"function"==typeof t?h.apply(null,arguments):"object"==typeof r?y.apply(null,arguments):void 0}function y(r,t,e){var n=!0;void 0===t&&(t=Object.getOwnPropertyNames(r),n=!1);var o={},i=["constructor"];do{(t=t.filter((function(t){return!("function"!=typeof r[t]||-1!==i.indexOf(t)||t.match(/^_/))}))).forEach((function(t){var n=t.split(":"),i=n[0],f=n[1]||"sync";if(!o[i]){var u=r[i];o[i]=r[i]=h(f,u,e?[e,i]:void 0)}})),r=Object.getPrototypeOf(r)}while(n&&r);return o}function s(r){var e=Array.isArray(r)?r:r.split(".");return o.call(e,(function(n,o,i){var f=n[o],u=!1;return f||(i===e.length-1?(a||l.push((function(){u||console.warn(t+": referenced '"+r+"' but it was never created")})),n[o]=v((function(r){n[o]=r,u=!0}))):n[o]={})}),c)}function v(r){var t=[],e=[],o=function(){},i={before:function(r,e){return a.call(this,t,"before",r,e)},after:function(r,t){return a.call(this,e,"after",r,t)},getHooks:function(r){var n=t.concat(e);"object"==typeof r&&(n=n.filter((function(t){return Object.keys(r).every((function(e){return t[e]===r[e]}))})));try{f(n,{remove:function(){return n.forEach((function(r){r.remove()})),this}})}catch(r){console.error("error adding `remove` to array, did you modify Array.prototype?")}return n},removeAll:function(){return this.getHooks().remove()}},u={install:function(n,i,f){this.type=n,o=f,f(t,e),r&&r(i)}};return n.set(i.after,u),i;function a(r,n,i,f){var u={hook:i,type:n,priority:f||10,remove:function(){var n=r.indexOf(u);-1!==n&&(r.splice(n,1),o(t,e))}};return r.push(u),r.sort((function(r,t){return t.priority-r.priority})),o(t,e),this}}function h(e,o,c){var p=o.after&&n.get(o.after);if(p){if(p.type!==e)throw t+": recreated hookable with different type";return o}var y,h,d=c?s(c):v(),b={get:function(r,t){return d[t]||Reflect.get.apply(Reflect,arguments)}};return a||l.push(g),r.useProxy&&"function"==typeof Proxy&&Proxy.revocable?h=new Proxy(o,b):(h=function(){return b.apply?b.apply(o,this,i(arguments)):o.apply(this,arguments)},f(h,d)),n.get(h.after).install(e,h,(function(r,t){var n,o=[];r.length||t.length?(r.forEach(f),n=o.push(void 0)-1,t.forEach(f),y=function(r,t,f){var u,a=0,c="async"===e&&"function"==typeof f[f.length-1]&&f.pop();function l(r){"sync"===e?u=r:c&&c.apply(null,arguments)}function p(r){if(o[a]){var n=i(arguments);return p.bail=l,n.unshift(p),o[a++].apply(t,n)}"sync"===e?u=r:c&&c.apply(null,arguments)}return o[n]=function(){var n=i(arguments,1);"async"===e&&c&&(delete p.bail,n.push(p));var o=r.apply(t,n);"sync"===e&&p(o)},p.apply(null,f),u}):y=void 0;function f(r){o.push(r.hook)}g()})),h;function g(){!a&&("sync"!==e||r.ready&u.SYNC)&&("async"!==e||r.ready&u.ASYNC)?"sync"!==e&&r.ready&u.QUEUE?b.apply=function(){var r=arguments;l.push((function(){h.apply(r[1],r[2])}))}:b.apply=function(){throw t+": hooked function not ready"}:b.apply=y}}return(r=f({},e,r)).ready?p.ready=function(){a=!0,function(r){for(var t;t=r.shift();)t()}(l)}:a=!0,p.get=s,p}r.exports=u},63172:(r,t,e)=>{function n(r,t,e){t.split&&(t=t.split("."));for(var n,o,i=0,f=t.length,u=r;i<f&&"__proto__"!==(o=t[i++])&&"constructor"!==o&&"prototype"!==o;)u=u[o]=i===f?e:typeof(n=u[o])==typeof t?n:0*t[i]!=0||~(""+t[i]).indexOf(".")?{}:[]}e.d(t,{J:()=>n})},45751:(r,t,e)=>{function n(r){var t,e,o;if(Array.isArray(r)){for(e=Array(t=r.length);t--;)e[t]=(o=r[t])&&"object"==typeof o?n(o):o;return e}if("[object Object]"===Object.prototype.toString.call(r)){for(t in e={},r)"__proto__"===t?Object.defineProperty(e,t,{value:n(r[t]),configurable:!0,enumerable:!0,writable:!0}):e[t]=(o=r[t])&&"object"==typeof o?n(o):o;return e}return r}e.d(t,{Q:()=>n})}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}n.m=t,r=[],n.O=(t,e,o,i)=>{if(!e){var f=1/0;for(l=0;l<r.length;l++){e=r[l][0],o=r[l][1],i=r[l][2];for(var u=!0,a=0;a<e.length;a++)(!1&i||f>=i)&&Object.keys(n.O).every((r=>n.O[r](e[a])))?e.splice(a--,1):(u=!1,i<f&&(f=i));if(u){r.splice(l--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var l=r.length;l>0&&r[l-1][2]>i;l--)r[l]=r[l-1];r[l]=[e,o,i]},n.n=r=>{var t=r&&r.__esModule?()=>r.default:()=>r;return n.d(t,{a:t}),t},n.d=(r,t)=>{for(var e in t)n.o(t,e)&&!n.o(r,e)&&Object.defineProperty(r,e,{enumerable:!0,get:t[e]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),n.o=(r,t)=>Object.prototype.hasOwnProperty.call(r,t),n.r=r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},(()=>{var r={39673:0};n.O.j=t=>0===r[t];var t=(t,e)=>{var o,i,f=e[0],u=e[1],a=e[2],c=0;if(f.some((t=>0!==r[t]))){for(o in u)n.o(u,o)&&(n.m[o]=u[o]);if(a)var l=a(n)}for(t&&t(e);c<f.length;c++)i=f[c],n.o(r,i)&&r[i]&&r[i][0](),r[i]=0;return n.O(l)},e=self.pbjsChunk=self.pbjsChunk||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))})();var o=n.O(void 0,[60802,51085],(()=>n(42627)));o=n.O(o)})();
(self.pbjsChunk=self.pbjsChunk||[]).push([[60802],{95789:(e,t,n)=>{n.d(t,{A4:()=>c,J7:()=>l,Pg:()=>u});var r=n(41580),i=n(91069),o=n(70433),s=n(15901);const a=(0,n(7873).m)(),d="outstream";function c(e){const{url:t,config:n,id:c,callback:l,loaded:u,adUnitCode:g,renderNow:f}=e;this.url=t,this.config=n,this.handlers={},this.id=c,this.renderNow=f,this.loaded=u,this.cmd=[],this.push=e=>{"function"==typeof e?this.loaded?e.call():this.cmd.push(e):(0,i.logError)("Commands given to Renderer.push must be wrapped in a function")},this.callback=l||(()=>{this.loaded=!0,this.process()}),this.render=function(){const e=arguments,n=()=>{this._render?this._render.apply(this,e):(0,i.logWarn)("No render function was provided, please use .setRender on the renderer")};!function(e){const t=a.adUnits,n=(0,s.I6)(t,(t=>t.code===e));if(!n)return!1;const r=(0,o.A)(n,"renderer"),i=!!(r&&r.url&&r.render),d=(0,o.A)(n,"mediaTypes.video.renderer"),c=!!(d&&d.url&&d.render);return!!(i&&!0!==r.backupOnly||c&&!0!==d.backupOnly)}(g)?f?n():(this.cmd.unshift(n),(0,r.R)(t,d,this.callback,this.documentContext)):((0,i.logWarn)(`External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${g}`),n())}.bind(this)}function l(e){return!(!e||!e.url&&!e.renderNow)}function u(e,t,n){let r=null;e.config&&e.config.documentResolver&&(r=e.config.documentResolver(t,document,n)),r||(r=document),e.documentContext=r,e.render(t,e.documentContext)}c.install=function(e){let{url:t,config:n,id:r,callback:i,loaded:o,adUnitCode:s,renderNow:a}=e;return new c({url:t,config:n,id:r,callback:i,loaded:o,adUnitCode:s,renderNow:a})},c.prototype.getConfig=function(){return this.config},c.prototype.setRender=function(e){this._render=e},c.prototype.setEventHandlers=function(e){this.handlers=e},c.prototype.handleVideoEvent=function(e){let{id:t,eventName:n}=e;"function"==typeof this.handlers[n]&&this.handlers[n](),(0,i.logMessage)(`Prebid Renderer event for id ${t} type ${n}`)},c.prototype.process=function(){for(;this.cmd.length>0;)try{this.cmd.shift().call()}catch(e){(0,i.logError)("Error processing Renderer command: ",e)}}},76811:(e,t,n)=>{n.d(t,{DL:()=>l,Ml:()=>i,Ue:()=>r,VJ:()=>g,hE:()=>u,hq:()=>c,mo:()=>d,qX:()=>o,uc:()=>a,yl:()=>s});const r="accessDevice",i="syncUser",o="enrichUfpd",s="enrichEids",a="fetchBids",d="reportAnalytics",c="transmitEids",l="transmitUfpd",u="transmitPreciseGeo",g="transmitTid"},83441:(e,t,n)=>{n.d(t,{s:()=>i});var r=n(11445);const i=(0,n(2604).ZI)((e=>r.Ay.resolveAlias(e)))},45569:(e,t,n)=>{n.d(t,{Tn:()=>a,fW:()=>o,tW:()=>i,tp:()=>r,zu:()=>s});const r="prebid",i="bidder",o="userId",s="rtd",a="analytics"},2604:(e,t,n)=>{n.d(t,{Dk:()=>s,Ii:()=>o,TQ:()=>f,U3:()=>m,XG:()=>l,ZI:()=>p,Zw:()=>c,bt:()=>u,e3:()=>g,iK:()=>a,q7:()=>d});var r=n(45569),i=n(16833);const o="component",s=o+"Type",a=o+"Name",d="adapterCode",c="storageType",l="configName",u="syncType",g="syncUrl",f="_config";function p(e){return function(t,n,i){const c={[s]:t,[a]:n,[o]:`${t}.${n}`};return t===r.tW&&(c[d]=e(n)),m(Object.assign(c,i))}}const m=(0,i.A_)("sync",(e=>e))},3066:(e,t,n)=>{n.d(t,{$V:()=>f,$p:()=>h,Vx:()=>d,ZP:()=>m,l7:()=>a,nl:()=>u,p4:()=>p,uD:()=>g});var r=n(70433),i=n(43272),o=n(95139),s=n(76811);const a=["data","ext.data","yob","gender","keywords","kwarray","id","buyeruid","customdata"].map((e=>`user.${e}`)).concat("device.ext.cdep"),d=["user.eids","user.ext.eids"],c=["user.geo.lat","user.geo.lon","device.geo.lat","device.geo.lon"];function l(e){return Object.assign({get(){},run(e,t,n,r,i){const o=n&&n[r];if(f(o)&&i()){const e=this.get(o);void 0===e?delete n[r]:n[r]=e}}},e)}function u(e){return e.forEach((e=>{e.paths=e.paths.map((e=>{const t=e.split("."),n=t.pop();return[t.length>0?t.join("."):null,n]}))})),function(t,n){const i=[];for(var o=arguments.length,s=new Array(o>2?o-2:0),a=2;a<o;a++)s[a-2]=arguments[a];const d=g(t,...s);return e.forEach((e=>{if(!1!==t[e.name])for(const[o,s]of e.paths){const a=null==o?n:(0,r.A)(n,o);if(i.push(e.run(n,o,a,s,d.bind(null,e))),!1===t[e.name])return}})),i.filter((e=>null!=e))}}function g(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(t){return e.hasOwnProperty(t.name)||(e[t.name]=!!t.applies(...n)),e[t.name]}}function f(e){return null!=e&&("object"!=typeof e||Object.keys(e).length>0)}function p(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.io;return function(n){return!t(e,n)}}function m(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.io;return[{name:s.DL,paths:a,applies:p(s.DL,e)},{name:s.hq,paths:d,applies:p(s.hq,e)},{name:s.hE,paths:c,applies:p(s.hE,e),get:e=>Math.round(100*(e+Number.EPSILON))/100},{name:s.VJ,paths:["source.tid"],applies:p(s.VJ,e)}].map(l)}const h=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.io;const t=u(m(e)),n=u(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.io;return[{name:s.hq,paths:["userId","userIdAsEids"],applies:p(s.hq,e)},{name:s.VJ,paths:["ortb2Imp.ext.tid"],applies:p(s.VJ,e)}].map(l)}(e));return function(e){const r={};return{ortb2:n=>(t(r,n,e),n),bidRequest:t=>(n(r,t,e),t)}}}();(0,o.qB)(s.VJ,"enableTIDs config",(()=>{if(!i.$W.getConfig("enableTIDs"))return{allow:!1,reason:"TIDs are disabled"}}))},95139:(e,t,n)=>{n.d(t,{io:()=>s,qB:()=>o});var r=n(91069),i=n(2604);const[o,s]=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,r.prefixLog)("Activity control:");const t={};function n(e){return t[e]=t[e]||[]}function o(t,n,r,o){let s;try{s=r(o)}catch(r){e.logError(`Exception in rule ${n} for '${t}'`,r),s={allow:!1,reason:r}}return s&&Object.assign({activity:t,name:n,component:o[i.Ii]},s)}const s={};function a(t){let{activity:n,name:r,allow:i,reason:o,component:a}=t;const d=`${r} ${i?"allowed":"denied"} '${n}' for '${a}'${o?":":""}`,c=s.hasOwnProperty(d);if(c&&clearTimeout(s[d]),s[d]=setTimeout((()=>delete s[d]),1e3),!c){const t=[d];o&&t.push(o),(i?e.logInfo:e.logWarn).apply(e,t)}}return[function(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10;const o=n(e),s=o.findIndex((e=>{let[t]=e;return i<t})),a=[i,t,r];return o.splice(s<0?o.length:s,0,a),function(){const e=o.indexOf(a);e>=0&&o.splice(e,1)}},function(e,t){let r,i;for(const[s,d,c]of n(e)){if(r!==s&&i)break;r=s;const n=o(e,d,c,t);if(n){if(!n.allow)return a(n),!1;i=n}}return i&&a(i),!0}]}()},29075:(e,t,n)=>{n.d(t,{$A:()=>E,BS:()=>R,Uc:()=>w,XO:()=>U,_0:()=>B,bw:()=>k,n6:()=>A,vW:()=>C,vd:()=>S});var r=n(91069),i=n(70433),o=n(75023),s=n(78969),a=n(43272),d=n(95789),c=n(71371),l=n(67314),u=n(46031),g=n(16833),f=n(12449),p=n(25555);const{AD_RENDER_FAILED:m,AD_RENDER_SUCCEEDED:h,STALE_RENDER:b,BID_WON:y}=s.qY,{EXCEPTION:v}=s.as,E=(0,g.A_)("sync",(function(e){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:p.k.resolve()).then((t=>t??l.n.findBidByAdId(e))).catch((()=>{}))})),A=(0,g.A_)("sync",(function(e){o.emit(y,e),l.n.addWinningBid(e)}));function I(e){let{reason:t,message:n,bid:i,id:s}=e;const a={reason:t,message:n};i&&(a.bid=i,a.adId=i.adId),s&&(a.adId=s),(0,r.logError)(`Error rendering ad (id: ${s}): ${n}`),o.emit(m,a)}function T(e){let{doc:t,bid:n,id:r}=e;const i={doc:t};n&&(i.bid=n),r&&(i.adId=r),o.emit(h,i)}function w(e,t){switch(e.event){case s.qY.AD_RENDER_FAILED:I({bid:t,id:t.adId,reason:e.info.reason,message:e.info.message});break;case s.qY.AD_RENDER_SUCCEEDED:T({doc:null,bid:t,id:t.adId});break;default:(0,r.logError)(`Received event request for unsupported event: '${e.event}' (adId: '${t.adId}')`)}}function C(e,t,n){let{resizeFn:r,fireTrackers:i=f.vO}=n;if("resizeNativeHeight"===e.action)r(e.width,e.height);else i(e,t)}const O={[s.nl.EVENT]:w};O[s.nl.NATIVE]=C;const S=(0,g.A_)("sync",(function(e,t){const{ad:n,adUrl:i,cpm:o,originalCpm:s,width:a,height:d}=e,c={AUCTION_PRICE:s||o,CLICKTHROUGH:t?.clickUrl||""};return{ad:(0,r.replaceMacros)(n,c),adUrl:(0,r.replaceMacros)(i,c),width:a,height:d}})),B=(0,g.A_)("sync",(function(e){let{renderFn:t,resizeFn:n,bidResponse:r,options:i}=e;if(r.mediaType===c.G_)return void I({reason:s.as.PREVENT_WRITING_ON_MAIN_DOCUMENT,message:"Cannot render video ad",bid:r,id:r.adId});const o=S(r,i);t(Object.assign({adId:r.adId},o));const{width:a,height:d}=o;null!=(a??d)&&n(a,d)}));function k(e){let{renderFn:t,resizeFn:n,adId:d,options:c,bidResponse:l,doc:u}=e;if(null!=l){if(l.status!==s.tl.RENDERED||((0,r.logWarn)(`Ad id ${d} has been rendered before`),o.emit(b,l),!(0,i.A)(a.$W.getConfig("auctionOptions"),"suppressStaleRender"))){try{B({renderFn:t,resizeFn:n,bidResponse:l,options:c,doc:u})}catch(e){I({reason:s.as.EXCEPTION,message:e.message,id:d,bid:l})}A(l)}}else I({reason:s.as.CANNOT_FIND_AD,message:`Cannot find ad '${d}'`,id:d})}function R(e,t,n){let i;function o(e,n){I(Object.assign({id:t,bid:i},{reason:e,message:n}))}function a(t,n){e.defaultView&&e.defaultView.frameElement&&(t&&(e.defaultView.frameElement.width=t),n&&(e.defaultView.frameElement.height=n))}const d=(c={resizeFn:a},function(e,t,n){O.hasOwnProperty(e)&&O[e](t,n,c)});var c;function l(t){t.ad?(e.write(t.ad),e.close(),T({doc:e,bid:i,adId:i.adId})):(0,u.H)(i).then((n=>n(t,{sendMessage:(e,t)=>d(e,t,i),mkFrame:r.createIframe},e.defaultView))).then((()=>T({doc:e,bid:i,adId:i.adId})),(e=>{o(e?.reason||s.as.EXCEPTION,e?.message),e?.stack&&(0,r.logError)(e)}));const n=document.createComment(`Creative ${i.creativeId} served by ${i.bidder} Prebid.js Header Bidding`);(0,r.insertElement)(n,e,"html")}try{t&&e?e!==document||(0,r.inIframe)()?E(t).then((r=>{i=r,k({renderFn:l,resizeFn:a,adId:t,options:{clickUrl:n?.clickThrough},bidResponse:r,doc:e})})):o(s.as.PREVENT_WRITING_ON_MAIN_DOCUMENT,"renderAd was prevented from writing to the main document."):o(s.as.MISSING_DOC_OR_ADID,"missing "+(t?"doc":"adId"))}catch(e){o(v,e.message)}}function U(){if(!window.frames[s.IY])if(document.body){const e=(0,r.createInvisibleIframe)();e.name=s.IY,document.body.appendChild(e)}else window.requestAnimationFrame(U)}B.before((function(e,t){const{bidResponse:n,doc:r}=t;(0,d.J7)(n.renderer)?((0,d.Pg)(n.renderer,n,r),T({doc:r,bid:n,id:n.adId}),e.bail()):e(t)}),100)},10201:(e,t,n)=>{n.d(t,{U:()=>s});var r=n(7873),i=n(91069);const o=(0,r.m)();function s(e,t){o.adServers=o.adServers||{},o.adServers[e]=o.adServers[e]||{},Object.keys(t).forEach((n=>{o.adServers[e][n]?(0,i.logWarn)(`Attempting to add an already registered function property ${n} for AdServer ${e}.`):o.adServers[e][n]=t[n]}))}},69759:(e,t,n)=>{function r(e){var t=e;return{callBids:function(){},setBidderCode:function(e){t=e},getBidderCode:function(){return t}}}n.d(t,{A:()=>r})},11445:(e,t,n)=>{n.d(t,{S1:()=>B,Ay:()=>z,tS:()=>x,pX:()=>P,Mf:()=>M,K5:()=>N,Gs:()=>W});var r=n(91069),i=n(70433),o=n(12449),s=n(57377),a=n(68044),d=n(43272),c=n(16833),l=n(15901);let u={};function g(e,t,n){let r=function(e,t){let n=u[e]=u[e]||{bidders:{}};return t?n.bidders[t]=n.bidders[t]||{}:n}(e,n);return r[t]=(r[t]||0)+1,r[t]}function f(e){return(0,i.A)(u,`${e}.requestsCounter`)||0}function p(e,t){return(0,i.A)(u,`${e}.bidders.${t}.requestsCounter`)||0}function m(e,t){return(0,i.A)(u,`${e}.bidders.${t}.winsCounter`)||0}var h=n(27934),b=n(16916),y=n(75023),v=n(78969),E=n(16894),A=n(67314),I=n(45569),T=n(95139),w=n(76811),C=n(2604),O=n(3066);const S="pbsBidAdapter",B={CLIENT:"client",SERVER:"server"},k={isAllowed:T.io,redact:O.$p};let R={},U=R.bidderRegistry={},D=R.aliasRegistry={},_=[];d.$W.getConfig("s2sConfig",(e=>{e&&e.s2sConfig&&(_=(0,r.isArray)(e.s2sConfig)?e.s2sConfig:[e.s2sConfig])}));var j={};const $=(0,C.ZI)((e=>R.resolveAlias(e)));function N(e){return $(I.tp,S,{[C.XG]:e.configName})}const q=(0,c.A_)("sync",(function(e){let{bidderCode:t,auctionId:n,bidderRequestId:o,adUnits:s,src:a,metrics:d}=e;return s.reduce(((e,s)=>{const c=s.bids.filter((e=>e.bidder===t));return null==t&&0===c.length&&null!=s.s2sBid&&c.push({bidder:null}),e.push(c.reduce(((e,c)=>{const l=null==(c=Object.assign({},c,{ortb2Imp:(0,r.mergeDeep)({},s.ortb2Imp,c.ortb2Imp)},(0,r.getDefinedParams)(s,["nativeParams","nativeOrtbRequest","mediaType","renderer"]))).mediaTypes?s.mediaTypes:c.mediaTypes;return(0,r.isValidMediaTypes)(l)?c=Object.assign({},c,{mediaTypes:l}):(0,r.logError)(`mediaTypes is not correctly configured for adunit ${s.code}`),"client"===a&&function(e,t){g(e,"requestsCounter",t)}(s.code,t),e.push(Object.assign({},c,{adUnitCode:s.code,transactionId:s.transactionId,adUnitId:s.adUnitId,sizes:(0,i.A)(l,"banner.sizes")||(0,i.A)(l,"video.playerSize")||[],bidId:c.bid_id||(0,r.getUniqueIdentifierStr)(),bidderRequestId:o,auctionId:n,src:a,metrics:d,bidRequestsCount:f(s.code),bidderRequestsCount:p(s.code,c.bidder),bidderWinsCount:m(s.code,c.bidder)})),e}),[])),e}),[]).reduce(r.flatten,[]).filter((e=>""!==e))}),"getBids");const x=(0,c.A_)("sync",(function(e,t){let{getS2SBidders:n=P}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null==t)return e;{const r=n(t);return e.filter((e=>r.has(e.bidder)))}}),"filterBidsForAdUnit");const W=(0,c.A_)("sync",((e,t)=>e),"setupAdUnitMediaTypes");function P(e){(0,r.isArray)(e)||(e=[e]);const t=new Set([null]);return e.filter((e=>e&&e.enabled)).flatMap((e=>e.bidders)).forEach((e=>t.add(e))),t}const M=(0,c.A_)("sync",(function(e,t){let{getS2SBidders:n=P}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=n(t);return(0,r.getBidderCodes)(e).reduce(((e,t)=>(e[i.has(t)?B.SERVER:B.CLIENT].push(t),e)),{[B.CLIENT]:[],[B.SERVER]:[]})}),"partitionBidders");function G(e,t){const n=U[e],r=n?.getSpec&&n.getSpec();if(r&&r[t]&&"function"==typeof r[t])return[r,r[t]]}function L(e,t,n,i){try{(0,r.logInfo)(`Invoking ${e}.${t}`);for(var o=arguments.length,s=new Array(o>4?o-4:0),a=4;a<o;a++)s[a-4]=arguments[a];d.$W.runWithBidder(e,i.bind(n,...s))}catch(n){(0,r.logWarn)(`Error calling ${t} of ${e}`)}}function F(e,t,n){if(n?.src!==v.RW.SRC){const r=G(e,t);null!=r&&L(e,t,...r,n)}}R.makeBidRequests=(0,c.A_)("sync",(function(e,t,n,i,s){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},c=arguments.length>6?arguments[6]:void 0;c=(0,E.BO)(c),y.emit(v.qY.BEFORE_REQUEST_BIDS,e),(0,o.nk)(e),e.forEach((e=>{(0,r.isPlainObject)(e.mediaTypes)||(e.mediaTypes={}),e.bids=e.bids.filter((e=>!e.bidder||k.isAllowed(w.uc,$(I.tW,e.bidder)))),g(e.code,"requestsCounter")})),e=W(e,s);let{[B.CLIENT]:u,[B.SERVER]:f}=M(e,_);d.$W.getConfig("bidderSequence")===d.Ov&&(u=(0,r.shuffle)(u));const p=(0,h.EN)();let m=[];const A=a.global||{},T=a.bidder||{};function C(e,t){const i=k.redact(null!=t?t:$(I.tW,e.bidderCode)),o=Object.freeze(i.ortb2((0,r.mergeDeep)({source:{tid:n}},A,T[e.bidderCode])));return e.ortb2=o,e.bids=e.bids.map((e=>(e.ortb2=o,i.bidRequest(e)))),e}_.forEach((i=>{const o=N(i);if(i&&i.enabled&&k.isAllowed(w.uc,o)){let{adUnits:s,hasModuleBids:a}=function(e,t){let n=(0,r.deepClone)(e),i=!1;return n.forEach((e=>{const n=e.bids.filter((e=>e.module===S&&e.params?.configName===t.configName));1===n.length?(e.s2sBid=n[0],i=!0,e.ortb2Imp=(0,r.mergeDeep)({},e.s2sBid.ortb2Imp,e.ortb2Imp)):n.length>1&&(0,r.logWarn)('Multiple "module" bids for the same s2s configuration; all will be ignored',n),e.bids=x(e.bids,t).map((e=>(e.bid_id=(0,r.getUniqueIdentifierStr)(),e)))})),n=n.filter((e=>0!==e.bids.length||null!=e.s2sBid)),{adUnits:n,hasModuleBids:i}}(e,i),d=(0,r.generateUUID)();(0===f.length&&a?[null]:f).forEach((e=>{const a=(0,r.getUniqueIdentifierStr)(),l=c.fork(),u=C({bidderCode:e,auctionId:n,bidderRequestId:a,uniquePbsTid:d,bids:q({bidderCode:e,auctionId:n,bidderRequestId:a,adUnits:(0,r.deepClone)(s),src:v.RW.SRC,metrics:l}),auctionStart:t,timeout:i.timeout,src:v.RW.SRC,refererInfo:p,metrics:l},o);0!==u.bids.length&&m.push(u)})),s.forEach((e=>{let t=e.bids.filter((e=>(0,l.I6)(m,(t=>(0,l.I6)(t.bids,(t=>t.bidId===e.bid_id))))));e.bids=t})),m.forEach((e=>{void 0===e.adUnitsS2SCopy&&(e.adUnitsS2SCopy=s.filter((e=>e.bids.length>0||null!=e.s2sBid)))}))}}));let O=function(e){let t=(0,r.deepClone)(e);return t.forEach((e=>{e.bids=x(e.bids,null)})),t=t.filter((e=>0!==e.bids.length)),t}(e);return u.forEach((e=>{const o=(0,r.getUniqueIdentifierStr)(),a=c.fork(),d=C({bidderCode:e,auctionId:n,bidderRequestId:o,bids:q({bidderCode:e,auctionId:n,bidderRequestId:o,adUnits:(0,r.deepClone)(O),labels:s,src:"client",metrics:a}),auctionStart:t,timeout:i,refererInfo:p,metrics:a}),l=U[e];l||(0,r.logError)(`Trying to make a request for bidder that does not exist: ${e}`),l&&d.bids&&0!==d.bids.length&&m.push(d)})),m.forEach((e=>{b.mW.getConsentData()&&(e.gdprConsent=b.mW.getConsentData()),b.t6.getConsentData()&&(e.uspConsent=b.t6.getConsentData()),b.ad.getConsentData()&&(e.gppConsent=b.ad.getConsentData())})),m}),"makeBidRequests"),R.callBids=function(e,t,n,i,o,s,c){let l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{};if(!t.length)return void(0,r.logWarn)("callBids executed with no bidRequests.  Were they filtered by labels or sizing?");let[u,g]=t.reduce(((e,t)=>(e[Number(void 0!==t.src&&t.src===v.RW.SRC)].push(t),e)),[[],[]]);var f=[];g.forEach((e=>{for(var t=-1,n=0;n<f.length;++n)if(e.uniquePbsTid===f[n].uniquePbsTid){t=n;break}t<=-1&&f.push(e)}));let p=0;_.forEach((e=>{if(e&&f[p]&&P(e).has(f[p].bidderCode)){const t=(0,a.g4)(s,o?{request:o.request.bind(null,"s2s"),done:o.done}:void 0);let d=e.bidders;const u=U[e.adapter];let m=f[p].uniquePbsTid,h=f[p].adUnitsS2SCopy,b=g.filter((e=>e.uniquePbsTid===m));if(u){let o={ad_units:h,s2sConfig:e,ortb2Fragments:l,requestBidsTimeout:s};if(o.ad_units.length){let e=b.map((e=>(e.start=(0,r.timestamp)(),function(t){t||c(e.bidderRequestId),i.apply(e,arguments)})));const s=(0,r.getBidderCodes)(o.ad_units).filter((e=>d.includes(e)));(0,r.logMessage)(`CALLING S2S HEADER BIDDERS ==== ${s.length>0?s.join(", "):'No bidder specified, using "ortb2Imp" definition(s) only'}`),b.forEach((e=>{y.emit(v.qY.BID_REQUESTED,{...e,tid:e.auctionId})})),u.callBids(o,g,n,(t=>e.forEach((e=>e(t)))),t)}}else(0,r.logError)("missing "+e.adapter);p++}})),u.forEach((e=>{e.start=(0,r.timestamp)();const t=U[e.bidderCode];d.$W.runWithBidder(e.bidderCode,(()=>{(0,r.logMessage)("CALLING BIDDER"),y.emit(v.qY.BID_REQUESTED,e)}));let l=(0,a.g4)(s,o?{request:o.request.bind(null,e.bidderCode),done:o.done}:void 0);const u=i.bind(e);try{d.$W.runWithBidder(e.bidderCode,t.callBids.bind(t,e,n,u,l,(()=>c(e.bidderRequestId)),d.$W.callbackWithBidder(e.bidderCode)))}catch(t){(0,r.logError)(`${e.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`,{e:t,bidRequest:e}),u()}}))},R.videoAdapters=[],R.registerBidAdapter=function(e,t){let{supportedMediaTypes:n=[]}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e&&t?"function"==typeof e.callBids?(U[t]=e,b.o2.register(I.tW,t,e.getSpec?.().gvlid),(0,l.mK)(n,"video")&&R.videoAdapters.push(t),(0,l.mK)(n,"native")&&o.mT.push(t)):(0,r.logError)("Bidder adaptor error for bidder code: "+t+"bidder must implement a callBids() function"):(0,r.logError)("bidAdapter or bidderCode not specified")},R.aliasBidAdapter=function(e,t,n){if(void 0===U[t]){let i=U[e];if(void 0===i){const n=[];_.forEach((r=>{if(r.bidders&&r.bidders.length){const i=r&&r.bidders;r&&(0,l.mK)(i,t)?D[t]=e:n.push(e)}})),n.forEach((e=>{(0,r.logError)('bidderCode "'+e+'" is not an existing bidder.',"adapterManager.aliasBidAdapter")}))}else try{let a,d=function(e){let t=[];return(0,l.mK)(R.videoAdapters,e)&&t.push("video"),(0,l.mK)(o.mT,e)&&t.push("native"),t}(e);if(i.constructor.prototype!=Object.prototype)a=new i.constructor,a.setBidderCode(t);else{let o=i.getSpec(),d=n&&n.gvlid;null!=o.gvlid&&null==d&&(0,r.logWarn)(`Alias '${t}' will NOT re-use the GVL ID of the original adapter ('${o.code}', gvlid: ${o.gvlid}). Functionality that requires TCF consent may not work as expected.`);let c=n&&n.skipPbsAliasing;a=(0,s.xb)(Object.assign({},o,{code:t,gvlid:d,skipPbsAliasing:c})),D[t]=e}R.registerBidAdapter(a,t,{supportedMediaTypes:d})}catch(t){(0,r.logError)(e+" bidder does not currently support aliasing.","adapterManager.aliasBidAdapter")}}else(0,r.logMessage)('alias name "'+t+'" has been already specified.')},R.resolveAlias=function(e){let t,n=e;for(;D[n]&&(!t||!t.has(n));)n=D[n],(t=t||new Set).add(n);return n},R.registerAnalyticsAdapter=function(e){let{adapter:t,code:n,gvlid:i}=e;t&&n?"function"==typeof t.enableAnalytics?(t.code=n,j[n]={adapter:t,gvlid:i},b.o2.register(I.Tn,n,i)):(0,r.logError)(`Prebid Error: Analytics adaptor error for analytics "${n}"\n        analytics adapter must implement an enableAnalytics() function`):(0,r.logError)("Prebid Error: analyticsAdapter or analyticsCode not specified")},R.enableAnalytics=function(e){(0,r.isArray)(e)||(e=[e]),e.forEach((e=>{const t=j[e.provider];t&&t.adapter?k.isAllowed(w.mo,$(I.Tn,e.provider,{[C.TQ]:e}))&&t.adapter.enableAnalytics(e):(0,r.logError)(`Prebid Error: no analytics adapter found in registry for '${e.provider}'.`)}))},R.getBidAdapter=function(e){return U[e]},R.getAnalyticsAdapter=function(e){return j[e]},R.callTimedOutBidders=function(e,t,n){t=t.map((t=>(t.params=(0,r.getUserConfiguredParams)(e,t.adUnitCode,t.bidder),t.timeout=n,t))),t=(0,r.groupBy)(t,"bidder"),Object.keys(t).forEach((e=>{F(e,"onTimeout",t[e])}))},R.callBidWonBidder=function(e,t,n){var i,o;t.params=(0,r.getUserConfiguredParams)(n,t.adUnitCode,t.bidder),i=t.adUnitCode,o=t.bidder,g(i,"winsCounter",o),F(e,"onBidWon",t)},R.callBidBillableBidder=function(e){F(e.bidder,"onBidBillable",e)},R.callSetTargetingBidder=function(e,t){F(e,"onSetTargeting",t)},R.callBidViewableBidder=function(e,t){F(e,"onBidViewable",t)},R.callBidderError=function(e,t,n){F(e,"onBidderError",{error:t,bidderRequest:n})},R.callDataDeletionRequest=(0,c.A_)("sync",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const i="onDataDeletionRequest";Object.keys(U).filter((e=>!D.hasOwnProperty(e))).forEach((e=>{const n=G(e,i);if(null!=n){const r=A.n.getBidsRequested().filter((t=>function(e){const t=new Set;for(;D.hasOwnProperty(e)&&!t.has(e);)t.add(e),e=D[e];return e}(t.bidderCode)===e));L(e,i,...n,r,...t)}})),Object.entries(j).forEach((e=>{let[n,o]=e;const s=o?.adapter?.[i];if("function"==typeof s)try{s.apply(o.adapter,t)}catch(e){(0,r.logError)(`error calling ${i} of ${n}`,e)}}))}));const z=R},57377:(e,t,n)=>{n.d(t,{JN:()=>k,a$:()=>w,fn:()=>R,xb:()=>C});var r=n(69759),i=n(11445),o=n(43272),s=n(93597),a=n(38230),d=n(12449),c=n(63895),l=n(78969),u=n(75023),g=n(15901),f=n(91069),p=n(16833),m=n(67314),h=n(12693),b=n(16894),y=n(95139),v=n(83441),E=n(45569),A=n(76811);const I=["cpm","ttl","creativeId","netRevenue","currency"],T=["auctionId","transactionId"];function w(e){const t=Array.isArray(e.supportedMediaTypes)?{supportedMediaTypes:e.supportedMediaTypes}:void 0;function n(e){const n=C(e);i.Ay.registerBidAdapter(n,e.code,t)}n(e),Array.isArray(e.aliases)&&e.aliases.forEach((t=>{let r,o,s=t;(0,f.isPlainObject)(t)&&(s=t.code,r=t.gvlid,o=t.skipPbsAliasing),i.Ay.aliasRegistry[s]=e.code,n(Object.assign({},e,{code:s,gvlid:r,skipPbsAliasing:o}))}))}function C(e){return Object.assign(new r.A(e.code),{getSpec:function(){return Object.freeze(Object.assign({},e))},registerSyncs:t,callBids:function(n,r,a,d,c,g){if(!Array.isArray(n.bids))return;const p=function(e){if((0,y.io)(A.VJ,(0,v.s)(E.tW,e)))return{bidRequest:e=>e,bidderRequest:e=>e};function t(e,t,n){return T.includes(t)?null:Reflect.get(e,t,n)}function n(e,t){const n=new Proxy(e,t);return Object.entries(e).filter((e=>{let[t,n]=e;return"function"==typeof n})).forEach((t=>{let[r,i]=t;return n[r]=i.bind(e)})),n}const r=(0,f.memoize)((e=>n(e,{get:t})),(e=>e.bidId));return{bidRequest:r,bidderRequest:e=>n(e,{get:(n,i,o)=>"bids"===i?e.bids.map(r):t(n,i,o)})}}(n.bidderCode),m={};const I=[];function w(){a(),o.$W.runWithBidder(e.code,(()=>{u.emit(l.qY.BIDDER_DONE,n),t(I,n.gdprConsent,n.uspConsent,n.gppConsent)}))}const C=U(n).measureTime("validate",(()=>n.bids.filter((t=>function(t){if(!e.isBidRequestValid(t))return(0,f.logWarn)(`Invalid bid sent to bidder ${e.code}: ${JSON.stringify(t)}`),!1;return!0}(p.bidRequest(t))))));if(0===C.length)return void w();const O={};C.forEach((e=>{O[e.bidId]=e,e.adUnitCode||(e.adUnitCode=e.placementCode)})),S(e,C.map(p.bidRequest),p.bidderRequest(n),d,g,{onRequest:e=>u.emit(l.qY.BEFORE_BIDDER_HTTP,n,e),onResponse:t=>{c(e.code),I.push(t)},onPaapi:e=>{const t=O[e.bidId];t?k(t,e):(0,f.logWarn)("Received fledge auction configuration for an unknown bidId",e)},onError:(t,r)=>{r.timedOut||c(e.code),i.Ay.callBidderError(e.code,r,n),u.emit(l.qY.BIDDER_ERROR,{error:r,bidderRequest:n}),(0,f.logError)(`Server call for ${e.code} failed: ${t} ${r.status}. Continuing without bids.`)},onBid:t=>{const n=O[t.requestId];if(n){if(t.adapterCode=n.bidder,function(e,t){let n=h.u.get(t,"allowAlternateBidderCodes")||!1,r=h.u.get(t,"allowedAlternateBidderCodes");if(e&&t&&t!==e&&(r=(0,f.isArray)(r)?r.map((e=>e.trim().toLowerCase())).filter((e=>!!e)).filter(f.uniques):r,!n||(0,f.isArray)(r)&&"*"!==r[0]&&!r.includes(e)))return!0;return!1}(t.bidderCode,n.bidder))return(0,f.logWarn)(`${t.bidderCode} is not a registered partner or known bidder of ${n.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`),void r.reject(n.adUnitCode,t,l.Tf.BIDDER_DISALLOWED);t.originalCpm=t.cpm,t.originalCurrency=t.currency,t.meta=t.meta||Object.assign({},t[n.bidder]);const e=Object.assign((0,s.O)(l.XQ.GOOD,n),t,(0,f.pick)(n,T));!function(e,t){const n=(0,b.BO)(t.metrics);n.checkpoint("addBidResponse"),m[e]=!0,n.measureTime("addBidResponse.validate",(()=>R(e,t)))?r(e,t):r.reject(e,t,l.Tf.INVALID)}(n.adUnitCode,e)}else(0,f.logWarn)(`Bidder ${e.code} made bid for unknown request ID: ${t.requestId}. Ignoring.`),r.reject(null,t,l.Tf.INVALID_REQUEST_ID)},onCompletion:w})}});function t(t,n,r,i){B(e,t,n,r,i)}}const O=["bids","paapi"],S=(0,p.A_)("sync",(function(e,t,n,r,i,o){let{onRequest:s,onResponse:a,onPaapi:d,onError:c,onBid:l,onCompletion:u}=o;const g=U(n);u=g.startTiming("total").stopBefore(u);let p=g.measureTime("buildRequests",(()=>e.buildRequests(t,n)));if(!p||0===p.length)return void u();Array.isArray(p)||(p=[p]);const m=(0,f.delayExecution)(u,p.length);p.forEach((t=>{const n=g.fork();function o(e){null!=e&&(e.metrics=n.fork().renameWith()),l(e)}const u=i((function(r,i){b();try{r=JSON.parse(r)}catch(e){}r={body:r,headers:{get:i.getResponseHeader.bind(i)}},a(r);try{r=n.measureTime("interpretResponse",(()=>e.interpretResponse(r,t)))}catch(t){return(0,f.logError)(`Bidder ${e.code} failed to interpret the server's response. Continuing without bids`,null,t),void m()}let s,c;r&&!Object.keys(r).some((e=>!O.includes(e)))?(s=r.bids,c=r.paapi):s=r,(0,f.isArray)(c)&&c.forEach(d),s&&((0,f.isArray)(s)?s.forEach(o):o(s)),m()})),p=i((function(e,t){b(),c(e,t),m()}));s(t);const b=n.startTiming("net");function I(n){const r=t.options;return Object.assign(n,r,{browsingTopics:!(r?.hasOwnProperty("browsingTopics")&&!r.browsingTopics)&&((h.u.get(e.code,"topicsHeader")??!0)&&(0,y.io)(A.DL,(0,v.s)(E.tW,e.code)))})}switch(t.method){case"GET":r(`${t.url}${function(e){if(e)return`?${"object"==typeof e?(0,f.parseQueryStringParameters)(e):e}`;return""}(t.data)}`,{success:u,error:p},void 0,I({method:"GET",withCredentials:!0}));break;case"POST":r(t.url,{success:u,error:p},"string"==typeof t.data?t.data:JSON.stringify(t.data),I({method:"POST",contentType:"text/plain",withCredentials:!0}));break;default:(0,f.logWarn)(`Skipping invalid request from ${e.code}. Request type ${t.type} must be GET or POST`),m()}}))}),"processBidderRequests"),B=(0,p.A_)("async",(function(e,t,n,r,s){const d=o.$W.getConfig("userSync.aliasSyncEnabled");if(e.getUserSyncs&&(d||!i.Ay.aliasRegistry[e.code])){let i=o.$W.getConfig("userSync.filterSettings"),d=e.getUserSyncs({iframeEnabled:!(!i||!i.iframe&&!i.all),pixelEnabled:!(!i||!i.image&&!i.all)},t,n,r,s);d&&(Array.isArray(d)||(d=[d]),d.forEach((t=>{a.zt.registerSync(t.type,e.code,t.url)})),a.zt.bidderDone(e.code))}}),"registerSyncs"),k=(0,p.A_)("sync",((e,t)=>{}),"addPaapiConfig");function R(e,t){let{index:n=m.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function r(e){return`Invalid bid from ${t.bidderCode}. Ignoring bid: ${e}`}return e?t?function(){let e=Object.keys(t);return I.every((n=>(0,g.mK)(e,n)&&!(0,g.mK)([void 0,null],t[n])))}()?"native"!==t.mediaType||(0,d.Bm)(t,{index:n})?"video"!==t.mediaType||(0,c.vk)(t,{index:n})?!("banner"===t.mediaType&&!function(e,t){let{index:n=m.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((t.width||0===parseInt(t.width,10))&&(t.height||0===parseInt(t.height,10)))return t.width=parseInt(t.width,10),t.height=parseInt(t.height,10),!0;const r=n.getBidRequest(t),i=n.getMediaTypes(t),o=r&&r.sizes||i&&i.banner&&i.banner.sizes,s=(0,f.parseSizesInput)(o);if(1===s.length){const[e,n]=s[0].split("x");return t.width=parseInt(e,10),t.height=parseInt(n,10),!0}return!1}(e,t,{index:n}))||((0,f.logError)(r("Banner bids require a width and height")),!1):((0,f.logError)(r("Video bid does not have required vastUrl or renderer property")),!1):((0,f.logError)(r("Native bid missing some required properties.")),!1):((0,f.logError)(r(`Bidder ${t.bidderCode} is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params.`)),!1):((0,f.logWarn)(`Some adapter tried to add an undefined bid for ${e}.`),!1):((0,f.logWarn)("No adUnitCode was supplied to addBidResponse."),!1)}function U(e){return(0,b.BO)(e.metrics).renameWith((t=>[`adapter.client.${t}`,`adapters.client.${e.bidderCode}.${t}`]))}},41580:(e,t,n)=>{n.d(t,{R:()=>a});var r=n(15901),i=n(91069);const o=new WeakMap,s=["debugging","outstream","improvedigital","showheroes-bs","aaxBlockmeter","adagio","adloox","akamaidap","arcspan","airgrid","browsi","brandmetrics","clean.io","confiant","contxtful","hadron","mediafilter","medianet","azerionedge","a1Media","geoedge","qortex","dynamicAdBoost","51Degrees","symitridap","wurfl","justtag","tncId","ftrackId","id5"];function a(e,t,n,a,d){if(!t||!e)return void(0,i.logError)("cannot load external script without url and moduleCode");if(!(0,r.mK)(s,t))return void(0,i.logError)(`${t} not whitelisted for loading external JavaScript`);a||(a=document);const c=g(a,e);if(c)return n&&"function"==typeof n&&(c.loaded?n():c.callbacks.push(n)),c.tag;const l=o.get(a)||{},u={loaded:!1,tag:null,callbacks:[]};return l[e]=u,o.set(a,l),n&&"function"==typeof n&&u.callbacks.push(n),(0,i.logWarn)(`module ${t} is loading external JavaScript`),function(t,n,r,o){r||(r=document);var s=r.createElement("script");s.type="text/javascript",s.async=!0;const a=g(r,e);a&&(a.tag=s);s.readyState?s.onreadystatechange=function(){"loaded"!==s.readyState&&"complete"!==s.readyState||(s.onreadystatechange=null,n())}:s.onload=function(){n()};s.src=t,o&&(0,i.setScriptAttributes)(s,o);return(0,i.insertElement)(s,r),s}(e,(function(){u.loaded=!0;try{for(let e=0;e<u.callbacks.length;e++)u.callbacks[e]()}catch(e){(0,i.logError)("Error executing callback","adloader.js:loadExternalScript",e)}}),a,d);function g(e,t){const n=o.get(e);return n&&n[t]?n[t]:null}}},51692:(e,t,n)=>{n.d(t,{Q:()=>r});const r=(0,n(16833).A_)("sync",(()=>{}))},68044:(e,t,n)=>{n.d(t,{RD:()=>f,Rz:()=>g,g4:()=>u,hd:()=>p});var r=n(43272),i=n(91069);const o={fetch:window.fetch.bind(window),makeRequest:(e,t)=>new Request(e,t),timeout(e,t){const n=new AbortController;let r=setTimeout((()=>{n.abort(),(0,i.logError)(`Request timeout after ${e}ms`,t),r=null}),e);return{signal:n.signal,done(){r&&clearTimeout(r)}}}},s="GET",a="POST",d="Content-Type";function c(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3e3,{request:t,done:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=(t,n)=>{let i;null==e||null!=n?.signal||r.$W.getConfig("disableAjaxTimeout")||(i=o.timeout(e,t),n=Object.assign({signal:i.signal},n));let s=o.fetch(t,n);return null!=i?.done&&(s=s.finally(i.done)),s};return null==t&&null==n||(i=(e=>function(r,i){const o=new URL(null==r?.url?r:r.url,document.location).origin;let s=e(r,i);return t&&t(o),n&&(s=s.finally((()=>n(o)))),s})(i)),i}function l(e,t){let{status:n,statusText:r="",headers:o,url:s}=e,a=0;function c(e){if(0===a)try{a=(new DOMParser).parseFromString(t,o?.get(d)?.split(";")?.[0])}catch(t){a=null,e&&e(t)}return a}return{readyState:XMLHttpRequest.DONE,status:n,statusText:r,responseText:t,response:t,responseType:"",responseURL:s,get responseXML(){return c(i.logError)},getResponseHeader:e=>o?.has(e)?o.get(e):null,toJSON(){return Object.assign({responseXML:c()},this)},timedOut:!1}}function u(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3e3,{request:t,done:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=c(e,{request:t,done:n});return function(e,t,n){!function(e,t){const{success:n,error:r}="object"==typeof t&&null!=t?t:{success:"function"==typeof t?t:()=>null,error:(e,t)=>(0,i.logError)("Network error",e,t)};e.then((e=>e.text().then((t=>[e,t])))).then((e=>{let[t,i]=e;const o=l(t,i);t.ok||304===t.status?n(i,o):r(t.statusText,o)}),(e=>r("",Object.assign(l({status:0},""),{reason:e,timedOut:"AbortError"===e?.name}))))}(r(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=n.method||(t?a:s);if(r===s&&t){const r=(0,i.parseUrl)(e,n);Object.assign(r.search,t),e=(0,i.buildUrl)(r)}const c=new Headers(n.customHeaders);c.set(d,n.contentType||"text/plain");const l={method:r,headers:c};return r!==s&&t&&(l.body=t),n.withCredentials&&(l.credentials="include"),n.browsingTopics&&isSecureContext&&(l.browsingTopics=!0),n.keepalive&&(l.keepalive=!0),o.makeRequest(e,l)}(e,n,arguments.length>3&&void 0!==arguments[3]?arguments[3]:{})),t)}}function g(e,t){return!(!window.navigator||!window.navigator.sendBeacon)&&window.navigator.sendBeacon(e,t)}const f=u(),p=c()},81657:(e,t,n)=>{n.d(t,{AA:()=>O,HN:()=>K,UZ:()=>S,ZV:()=>G,mO:()=>M,mX:()=>_,sR:()=>j,v8:()=>x,w1:()=>N});var r=n(91069),i=n(70433),o=n(86833),s=n(12449),a=n(68693),d=n(95789),c=n(43272),l=n(38230),u=n(16833),g=n(15901),f=n(63895),p=n(71371),m=n(67314),h=n(12693),b=n(75023),y=n(11445),v=n(78969),E=n(25555),A=n(16894),I=n(57176),T=n(7873);const{syncUsers:w}=l.zt,C="started",O="inProgress",S="completed";b.on(v.qY.BID_ADJUSTMENT,(function(e){!function(e){let t=(0,I.y)(e.cpm,e);t>=0&&(e.cpm=t)}(e)}));const B=4,k={},R={},U=[],D=(0,T.m)();function _(e){let{adUnits:t,adUnitCodes:n,callback:a,cbTimeout:l,labels:u,auctionId:h,ortb2Fragments:I,metrics:T}=e;T=(0,A.BO)(T);const _=t,M=u,G=n,L=h||(0,r.generateUUID)(),F=l,z=new Set,H=(0,E.v)();let V,K,J,Q,X=[],Z=a,ee=[],te=[],ne=[],re=[],ie=[];function oe(){return{auctionId:L,timestamp:V,auctionEnd:K,auctionStatus:Q,adUnits:_,adUnitCodes:G,labels:M,bidderRequests:ee,noBids:ne,bidsReceived:te,bidsRejected:X,winningBids:re,timeout:F,metrics:T,seatNonBids:ie}}function se(e){if(e?b.emit(v.qY.AUCTION_TIMEOUT,oe()):clearTimeout(J),void 0===K){let n=[];e&&((0,r.logMessage)(`Auction ${L} timedOut`),n=ee.filter((e=>!z.has(e.bidderRequestId))).flatMap((e=>e.bids)),n.length&&b.emit(v.qY.BID_TIMEOUT,n)),Q=S,K=Date.now(),T.checkpoint("auctionEnd"),T.timeBetween("requestBids","auctionEnd","requestBids.total"),T.timeBetween("callBids","auctionEnd","requestBids.callBids"),H.resolve(),b.emit(v.qY.AUCTION_END,oe()),q(_,(function(){try{if(null!=Z){const t=te.filter((e=>G.includes(e.adUnitCode))).reduce(Y,{});Z.apply(D,[t,e,L]),Z=null}}catch(e){(0,r.logError)("Error executing bidsBackHandler",null,e)}finally{n.length&&y.Ay.callTimedOutBidders(t,n,F);let e=c.$W.getConfig("userSync")||{};e.enableOverride||w(e.syncDelay)}}))}}function ae(){c.$W.resetBidder(),(0,r.logInfo)(`Bids Received for Auction with id: ${L}`,te),Q=S,se(!1)}function de(e){z.add(e)}function ce(e){e.forEach((e=>{var t;t=e,ee=ee.concat(t)}));let t={},n={bidRequests:e,run:()=>{J=setTimeout((()=>se(!0)),F),Q=O,b.emit(v.qY.AUCTION_INIT,oe());let n=function(e,t){let{index:n=m.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=0,l=!1,u=new Set,h={};function y(){a--,l&&0===a&&e()}function A(e,t,n){return h[t.requestId]=!0,function(e,t){let{index:n=m.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=n.getBidderRequest(e),o=n.getAdUnit(e),s=i&&i.start||e.requestTimestamp;Object.assign(e,{responseTimestamp:e.responseTimestamp||(0,r.timestamp)(),requestTimestamp:e.requestTimestamp||s,cpm:parseFloat(e.cpm)||0,bidder:e.bidder||e.bidderCode,adUnitCode:t}),null!=o?.ttlBuffer&&(e.ttlBuffer=o.ttlBuffer);e.timeToRespond=e.responseTimestamp-e.requestTimestamp}(t,e),a++,n(y)}function I(e,a){A(e,a,(e=>{let l=function(e){let{index:t=m.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};b.emit(v.qY.BID_ADJUSTMENT,e);const n=t.getBidRequest(e)?.renderer||t.getAdUnit(e).renderer,r=e.mediaType,i=t.getMediaTypes(e),s=i&&i[r];var a=s&&s.renderer,l=null;a&&a.url&&a.render&&(!0!==a.backupOnly||!e.renderer)?l=a:n&&n.url&&n.render&&(!0!==n.backupOnly||!e.renderer)&&(l=n);l&&(e.renderer=d.A4.install({url:l.url,config:l.options}),e.renderer.setRender(l.render));const u=P(e.mediaType,i,c.$W.getConfig("mediaTypePriceGranularity")),g=(0,o.j)(e.cpm,"object"==typeof u?u:c.$W.getConfig("customPriceBucket"),c.$W.getConfig("currency.granularityMultiplier"));return e.pbLg=g.low,e.pbMg=g.med,e.pbHg=g.high,e.pbAg=g.auto,e.pbDg=g.dense,e.pbCg=g.custom,e}(a);b.emit(v.qY.BID_ACCEPTED,l),l.mediaType===p.G_?function(e,t,n){let{index:o=m.n.index}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=!0;const a=(0,i.A)(o.getMediaTypes({requestId:t.originalRequestId||t.requestId,adUnitId:t.adUnitId}),"video"),d=a&&(0,i.A)(a,"context"),l=a&&(0,i.A)(a,"useCacheKey");c.$W.getConfig("cache.url")&&(l||d!==f.H6)&&(!t.videoCacheKey||c.$W.getConfig("cache.ignoreBidderCacheKey")?(s=!1,W(e,t,n,a)):t.vastUrl||((0,r.logError)("videoCacheKey specified but not required vastUrl for video bid"),s=!1));s&&(x(e,t),n())}(t,l,e):((0,s.l6)(l)&&(0,s.gs)(l,n.getAdUnit(l)),x(t,l),e())}))}function T(e,n,i){return A(e,n,(e=>{n.rejectionReason=i,(0,r.logWarn)(`Bid from ${n.bidder||"unknown bidder"} was rejected: ${i}`,n),b.emit(v.qY.BID_REJECTED,n),t.addBidRejected(n),e()}))}function w(){let n=this,i=t.getBidRequests();const o=c.$W.getConfig("auctionOptions");if(u.add(n),o&&!(0,r.isEmpty)(o)){const e=o.secondaryBidders;e&&!i.every((t=>(0,g.mK)(e,t.bidderCode)))&&(i=i.filter((t=>!(0,g.mK)(e,t.bidderCode))))}l=i.every((e=>u.has(e))),n.bids.forEach((e=>{h[e.bidId]||(t.addNoBid(e),b.emit(v.qY.NO_BID,e))})),l&&0===a&&e()}return{addBidResponse:function(){function e(e,t){j.call({dispatch:I},e,t,(()=>{let n=!1;return r=>{n||(T(e,t,r),n=!0)}})())}return e.reject=T,e}(),adapterDone:function(){$(E.k.resolve()).finally((()=>w.call(this)))}}}(ae,this);y.Ay.callBids(_,e,n.addBidResponse,n.adapterDone,{request(e,n){l(k,n),l(t,e),R[e]||(R[e]={SRA:!0,origin:n}),t[e]>1&&(R[e].SRA=!1)},done(e){k[e]--,U[0]&&a(U[0])&&U.shift()}},F,de,I)}};function a(e){let t=!0,n=c.$W.getConfig("maxRequestsPerOrigin")||B;return e.bidRequests.some((e=>{let r=1,i=void 0!==e.src&&e.src===v.RW.SRC?"s2s":e.bidderCode;return R[i]&&(!1===R[i].SRA&&(r=Math.min(e.bids.length,n)),k[R[i].origin]+r>n&&(t=!1)),!t})),t&&e.run(),t}function l(e,t){void 0===e[t]?e[t]=1:e[t]++}a(n)||((0,r.logWarn)("queueing auction due to limited endpoint capacity"),U.push(n))}return b.on(v.qY.SEAT_NON_BID,(e=>{var t;e.auctionId===L&&(t=e.seatnonbid,ie=ie.concat(t))})),{addBidReceived:function(e){te=te.concat(e)},addBidRejected:function(e){X=X.concat(e)},addNoBid:function(e){ne=ne.concat(e)},callBids:function(){Q=C,V=Date.now();let e=T.measureTime("requestBids.makeRequests",(()=>y.Ay.makeBidRequests(_,V,L,F,M,I,T)));(0,r.logInfo)(`Bids Requested for Auction with id: ${L}`,e),T.checkpoint("callBids"),e.length<1?((0,r.logWarn)("No valid bid requests returned for auction"),ae()):N.call({dispatch:ce,context:this},e)},addWinningBid:function(e){const n=t.find((t=>t.adUnitId===e.adUnitId));re=re.concat(e),(0,r.callBurl)(e),y.Ay.callBidWonBidder(e.adapterCode||e.bidder,e,t),n&&!n.deferBilling&&y.Ay.callBidBillableBidder(e)},setBidTargeting:function(e){y.Ay.callSetTargetingBidder(e.adapterCode||e.bidder,e)},getWinningBids:()=>re,getAuctionStart:()=>V,getAuctionEnd:()=>K,getTimeout:()=>F,getAuctionId:()=>L,getAuctionStatus:()=>Q,getAdUnits:()=>_,getAdUnitCodes:()=>G,getBidRequests:()=>ee,getBidsReceived:()=>te,getNoBids:()=>ne,getNonBids:()=>ie,getFPD:()=>I,getMetrics:()=>T,end:H.promise}}const j=(0,u.A_)("sync",(function(e,t,n){!function(e){const t=c.$W.getConfig("maxBid");return!t||!e.cpm||t>=Number(e.cpm)}(t)?n(v.Tf.PRICE_TOO_HIGH):this.dispatch.call(null,e,t)}),"addBidResponse"),$=(0,u.A_)("sync",(e=>e),"responsesReady"),N=(0,u.A_)("sync",(function(e){this.dispatch.call(this.context,e)}),"addBidderRequests"),q=(0,u.A_)("async",(function(e,t){t&&t()}),"bidsBackCallback");function x(e,t){!function(e){let t;const n=!0===h.u.get(e.bidderCode,"allowZeroCpmBids")?e.cpm>=0:e.cpm>0;e.bidderCode&&(n||e.dealId)&&(t=function(e,t){let{index:n=m.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)return{};const r=n.getBidRequest(t);var i={};const o=K(t.mediaType,e);J(i,o,t,r),e&&h.u.getOwn(e,v.iD.ADSERVER_TARGETING)&&(J(i,h.u.ownSettingsFor(e),t,r),t.sendStandardTargeting=h.u.get(e,"sendStandardTargeting"));t.native&&(i=Object.assign({},i,(0,s.Zj)(t)));return i}(e.bidderCode,e));e.adserverTargeting=Object.assign(e.adserverTargeting||{},t)}(t),(0,A.BO)(t.metrics).timeSince("addBidResponse","addBidResponse.total"),e.addBidReceived(t),b.emit(v.qY.BID_RESPONSE,t)}const W=(0,u.A_)("async",(function(e,t,n,r){(0,a.X5)(e,t,n)}),"callPrebidCache");function P(e,t,n){if(e&&n){if(e===p.G_){const e=(0,i.A)(t,`${p.G_}.context`,"instream");if(n[`${p.G_}-${e}`])return n[`${p.G_}-${e}`]}return n[e]}}const M=function(e){let{index:t=m.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=P(e.mediaType,t.getMediaTypes(e),c.$W.getConfig("mediaTypePriceGranularity"));return"string"==typeof e.mediaType&&n?"string"==typeof n?n:"custom":c.$W.getConfig("priceGranularity")},G=e=>t=>{const n=e||M(t);return n===v.UE.AUTO?t.pbAg:n===v.UE.DENSE?t.pbDg:n===v.UE.LOW?t.pbLg:n===v.UE.MEDIUM?t.pbMg:n===v.UE.HIGH?t.pbHg:n===v.UE.CUSTOM?t.pbCg:void 0},L=()=>e=>e.creativeId?e.creativeId:"",F=()=>e=>e.meta&&e.meta.advertiserDomains&&e.meta.advertiserDomains.length>0?[e.meta.advertiserDomains].flat()[0]:"",z=()=>e=>e.meta&&(e.meta.networkId||e.meta.networkName)?(0,i.A)(e,"meta.networkName")||(0,i.A)(e,"meta.networkId"):"",H=()=>e=>e.meta&&e.meta.primaryCatId?e.meta.primaryCatId:"";function V(e,t){return{key:e,val:"function"==typeof t?function(e,n){return t(e,n)}:function(e){return(0,r.getValue)(e,t)}}}function K(e,t){const n=Object.assign({},h.u.settingsFor(null));if(n[v.iD.ADSERVER_TARGETING]||(n[v.iD.ADSERVER_TARGETING]=[V(v.xS.BIDDER,"bidderCode"),V(v.xS.AD_ID,"adId"),V(v.xS.PRICE_BUCKET,G()),V(v.xS.SIZE,"size"),V(v.xS.DEAL,"dealId"),V(v.xS.SOURCE,"source"),V(v.xS.FORMAT,"mediaType"),V(v.xS.ADOMAIN,F()),V(v.xS.ACAT,H()),V(v.xS.DSP,z()),V(v.xS.CRID,L())]),"video"===e){const e=n[v.iD.ADSERVER_TARGETING].slice();if(n[v.iD.ADSERVER_TARGETING]=e,[v.xS.UUID,v.xS.CACHE_ID].forEach((t=>{void 0===(0,g.I6)(e,(e=>e.key===t))&&e.push(V(t,"videoCacheKey"))})),c.$W.getConfig("cache.url")&&(!t||!1!==h.u.get(t,"sendStandardTargeting"))){const t=(0,r.parseUrl)(c.$W.getConfig("cache.url"));void 0===(0,g.I6)(e,(e=>e.key===v.xS.CACHE_HOST))&&e.push(V(v.xS.CACHE_HOST,(function(e){return(0,i.A)(e,`adserverTargeting.${v.xS.CACHE_HOST}`)?e.adserverTargeting[v.xS.CACHE_HOST]:t.hostname})))}}return n}function J(e,t,n,i){var o=t[v.iD.ADSERVER_TARGETING];return n.size=n.getSize(),(o||[]).forEach((function(o){var s=o.key,a=o.val;if(e[s]&&(0,r.logWarn)("The key: "+s+" is being overwritten"),(0,r.isFn)(a))try{a=a(n,i)}catch(e){(0,r.logError)("bidmanager","ERROR",e)}(void 0===t.suppressEmptyKeys||!0!==t.suppressEmptyKeys)&&s!==v.xS.DEAL&&s!==v.xS.ACAT&&s!==v.xS.DSP&&s!==v.xS.CRID||!(0,r.isEmptyStr)(a)&&null!=a?e[s]=a:(0,r.logInfo)("suppressing empty key '"+s+"' from adserver targeting")})),e}function Y(e,t){return e[t.adUnitCode]||(e[t.adUnitCode]={bids:[]}),e[t.adUnitCode].bids.push(t),e}},67314:(e,t,n)=>{n.d(t,{n:()=>g});var r=n(91069),i=n(81657);function o(e){Object.assign(this,{getAuction(t){let{auctionId:n}=t;if(null!=n)return e().find((e=>e.getAuctionId()===n))},getAdUnit(t){let{adUnitId:n}=t;if(null!=n)return e().flatMap((e=>e.getAdUnits())).find((e=>e.adUnitId===n))},getMediaTypes(e){let{adUnitId:t,requestId:n}=e;if(null!=n){const e=this.getBidRequest({requestId:n});if(null!=e&&(null==t||e.adUnitId===t))return e.mediaTypes}else if(null!=t){const e=this.getAdUnit({adUnitId:t});if(null!=e)return e.mediaTypes}},getBidderRequest(t){let{requestId:n,bidderRequestId:r}=t;if(null!=n||null!=r){let t=e().flatMap((e=>e.getBidRequests()));return null!=r&&(t=t.filter((e=>e.bidderRequestId===r))),null==n?t[0]:t.find((e=>e.bids&&null!=e.bids.find((e=>e.bidId===n))))}},getBidRequest(t){let{requestId:n}=t;if(null!=n)return e().flatMap((e=>e.getBidRequests())).flatMap((e=>e.bids)).find((e=>e&&e.bidId===n))}})}var s=n(78969),a=n(16894),d=n(76853),c=n(27863),l=n(43272);const u="minBidCacheTTL";const g=function(){let e=null;const t=(0,d.H)({startTime:e=>e.end.then((()=>e.getAuctionEnd())),ttl:t=>null==e?null:t.end.then((()=>1e3*Math.max(e,...t.getBidsReceived().map(c.L))))});(0,c.u)((()=>{null!=e&&t.refresh()})),l.$W.getConfig(u,(n=>{const r=e;e=n?.[u],e="number"==typeof e?e:null,r!==e&&t.refresh()}));const n={onExpiry:t.onExpiry};function g(e){for(const n of t)if(n.getAuctionId()===e)return n}function f(){return t.toArray().flatMap((e=>e.getBidsReceived()))}return n.addWinningBid=function(e){const t=(0,a.BO)(e.metrics);t.checkpoint("bidWon"),t.timeBetween("auctionEnd","bidWon","render.pending"),t.timeBetween("requestBids","bidWon","render.e2e");const n=g(e.auctionId);n?(e.status=s.tl.RENDERED,n.addWinningBid(e)):(0,r.logWarn)("Auction not found when adding winning bid")},Object.entries({getAllWinningBids:{name:"getWinningBids"},getBidsRequested:{name:"getBidRequests"},getNoBids:{},getAdUnits:{},getBidsReceived:{pre:e=>e.getAuctionStatus()===i.UZ},getAdUnitCodes:{post:r.uniques}}).forEach((e=>{let[r,{name:i=r,pre:o,post:s}]=e;const a=null==o?e=>e[i]():e=>o(e)?e[i]():[],d=null==s?e=>e:e=>e.filter(s);n[r]=()=>d(t.toArray().flatMap(a))})),n.getAllBidsForAdUnitCode=function(e){return f().filter((t=>t&&t.adUnitCode===e))},n.createAuction=function(e){const n=(0,i.mX)(e);return function(e){t.add(e)}(n),n},n.findBidByAdId=function(e){return f().find((t=>t.adId===e))},n.getStandardBidderAdServerTargeting=function(){return(0,i.HN)()[s.iD.ADSERVER_TARGETING]},n.setStatusForBids=function(e,t){let r=n.findBidByAdId(e);if(r&&(r.status=t),r&&t===s.tl.BID_TARGETING_SET){const e=g(r.auctionId);e&&e.setBidTargeting(r)}},n.getLastAuctionId=function(){const e=t.toArray();return e.length&&e[e.length-1].getAuctionId()},n.clearAllAuctions=function(){t.clear()},n.index=new o((()=>t.toArray())),n}()},27863:(e,t,n)=>{n.d(t,{L:()=>a,u:()=>d});var r=n(43272),i=n(91069);let o=1;const s=[];function a(e){return e.ttl-(e.hasOwnProperty("ttlBuffer")?e.ttlBuffer:o)}function d(e){s.push(e)}r.$W.getConfig("ttlBuffer",(e=>{if("number"==typeof e.ttlBuffer){const t=o;o=e.ttlBuffer,t!==o&&s.forEach((e=>e(o)))}else(0,i.logError)("Invalid value for ttlBuffer",e.ttlBuffer)}))},12693:(e,t,n)=>{n.d(t,{u:()=>a});var r=n(70433),i=n(91069),o=n(7873),s=n(78969);const a=new class{constructor(e,t){this.getSettings=e,this.defaultScope=t}get(e,t){let n=this.getOwn(e,t);return void 0===n&&(n=this.getOwn(null,t)),n}getOwn(e,t){return e=this.#e(e),(0,r.A)(this.getSettings(),`${e}.${t}`)}getScopes(){return Object.keys(this.getSettings()).filter((e=>e!==this.defaultScope))}settingsFor(e){return(0,i.mergeDeep)({},this.ownSettingsFor(null),this.ownSettingsFor(e))}ownSettingsFor(e){return e=this.#e(e),this.getSettings()[e]||{}}#e(e){return null==e?this.defaultScope:e}}((()=>(0,o.m)().bidderSettings||{}),s.iD.BD_SETTING_STANDARD)},93597:(e,t,n)=>{n.d(t,{O:()=>o});var r=n(91069);function i(e){let{src:t="client",bidder:n="",bidId:i,transactionId:o,adUnitId:s,auctionId:a}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var d=t,c=e||0;Object.assign(this,{bidderCode:n,width:0,height:0,statusMessage:function(){switch(c){case 0:return"Pending";case 1:return"Bid available";case 2:return"Bid returned empty or error response";case 3:return"Bid timed out"}}(),adId:(0,r.getUniqueIdentifierStr)(),requestId:i,transactionId:o,adUnitId:s,auctionId:a,mediaType:"banner",source:d}),this.getStatusCode=function(){return c},this.getSize=function(){return this.width+"x"+this.height},this.getIdentifiers=function(){return{src:this.source,bidder:this.bidderCode,bidId:this.requestId,transactionId:this.transactionId,adUnitId:this.adUnitId,auctionId:this.auctionId}}}function o(e,t){return new i(e,t)}},43272:(e,t,n)=>{n.d(t,{$W:()=>p,Ov:()=>l});var r=n(86833),i=n(15901),o=n(91069),s=n(70433),a=n(78969);const d="TRUE"===(0,o.getParameterByName)(a.M).toUpperCase(),c={},l="random",u={};u[l]=!0,u.fixed=!0;const g=l,f={LOW:"low",MEDIUM:"medium",HIGH:"high",AUTO:"auto",DENSE:"dense",CUSTOM:"custom"};const p=function(){let e,t,n,a=[],l=null;function p(){function s(e){return l[e].val}function a(e,t){l[e].val=t}e={};const l={publisherDomain:{set(e){null!=e&&(0,o.logWarn)("publisherDomain is deprecated and has no effect since v7 - use pageUrl instead"),a("publisherDomain",e)}},priceGranularity:{val:f.MEDIUM,set(e){h(e)&&("string"==typeof e?a("priceGranularity",m(e)?e:f.MEDIUM):(0,o.isPlainObject)(e)&&(a("customPriceBucket",e),a("priceGranularity",f.CUSTOM),(0,o.logMessage)("Using custom price granularity")))}},customPriceBucket:{val:{},set(){}},mediaTypePriceGranularity:{val:{},set(e){null!=e&&a("mediaTypePriceGranularity",Object.keys(e).reduce(((t,n)=>(h(e[n])?"string"==typeof e?t[n]=m(e[n])?e[n]:s("priceGranularity"):(0,o.isPlainObject)(e)&&(t[n]=e[n],(0,o.logMessage)(`Using custom price granularity for ${n}`)):(0,o.logWarn)(`Invalid price granularity for media type: ${n}`),t)),{}))}},bidderSequence:{val:g,set(e){u[e]?a("bidderSequence",e):(0,o.logWarn)(`Invalid order: ${e}. Bidder Sequence was not set.`)}},auctionOptions:{val:{},set(e){(function(e){if(!(0,o.isPlainObject)(e))return(0,o.logWarn)("Auction Options must be an object"),!1;for(let t of Object.keys(e)){if("secondaryBidders"!==t&&"suppressStaleRender"!==t)return(0,o.logWarn)(`Auction Options given an incorrect param: ${t}`),!1;if("secondaryBidders"===t){if(!(0,o.isArray)(e[t]))return(0,o.logWarn)(`Auction Options ${t} must be of type Array`),!1;if(!e[t].every(o.isStr))return(0,o.logWarn)(`Auction Options ${t} must be only string`),!1}else if("suppressStaleRender"===t&&!(0,o.isBoolean)(e[t]))return(0,o.logWarn)(`Auction Options ${t} must be of type boolean`),!1}return!0})(e)&&a("auctionOptions",e)}}};let p={debug:d,bidderTimeout:3e3,enableSendAllBids:true,useBidCache:false,deviceAccess:true,disableAjaxTimeout:false,maxNestedIframes:10,maxBid:5e3,userSync:{topics:c}};function m(e){return(0,i.I6)(Object.keys(f),(t=>e===f[t]))}function h(e){if(!e)return(0,o.logError)("Prebid Error: no value passed to `setPriceGranularity()`"),!1;if("string"==typeof e)m(e)||(0,o.logWarn)("Prebid Warning: setPriceGranularity was called with invalid setting, using `medium` as default.");else if((0,o.isPlainObject)(e)&&!(0,r.q)(e))return(0,o.logError)("Invalid custom price value passed to `setPriceGranularity()`"),!1;return!0}Object.defineProperties(p,Object.fromEntries(Object.entries(l).map((e=>{let[t,n]=e;return[t,Object.assign({get:s.bind(null,t),set:a.bind(null,t),enumerable:!0},n)]})))),t&&I(Object.keys(t).reduce(((e,n)=>(t[n]!==p[n]&&(e[n]=p[n]||{}),e)),{})),t=p,n={}}function m(){if(l&&n&&(0,o.isPlainObject)(n[l])){let e=n[l];const r=new Set(Object.keys(t).concat(Object.keys(e)));return(0,i.A6)(r).reduce(((n,r)=>(void 0===e[r]?n[r]=t[r]:void 0===t[r]?n[r]=e[r]:(0,o.isPlainObject)(e[r])?n[r]=(0,o.mergeDeep)({},t[r],e[r]):n[r]=e[r],n)),{})}return Object.assign({},t)}const[h,b]=[m,function(){const e=m();return Object.defineProperty(e,"ortb2",{get:function(){throw new Error("invalid access to 'orbt2' config - use request parameters instead")}}),e}].map((e=>function(){if(arguments.length<=1&&"function"!=typeof(arguments.length<=0?void 0:arguments[0])){const t=arguments.length<=0?void 0:arguments[0];return t?(0,s.A)(e(),t):m()}return A(...arguments)})),[y,v]=[b,h].map((e=>function(){let t=e(...arguments);return t&&"object"==typeof t&&(t=(0,o.deepClone)(t)),t}));function E(n){if(!(0,o.isPlainObject)(n))return void(0,o.logError)("setConfig options must be an object");let r=Object.keys(n),i={};r.forEach((r=>{let s=n[r];(0,o.isPlainObject)(e[r])&&(0,o.isPlainObject)(s)&&(s=Object.assign({},e[r],s));try{i[r]=t[r]=s}catch(e){(0,o.logWarn)(`Cannot set config for property ${r} : `,e)}})),I(i)}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=t;if("string"!=typeof e&&(r=e,e="*",n=t||{}),"function"!=typeof r)return void(0,o.logError)("listener must be a function");const i={topic:e,callback:r};return a.push(i),n.init&&r("*"===e?b():{[e]:b(e)}),function(){a.splice(a.indexOf(i),1)}}function I(e){const t=Object.keys(e);a.filter((e=>(0,i.mK)(t,e.topic))).forEach((t=>{t.callback({[t.topic]:e[t.topic]})})),a.filter((e=>"*"===e.topic)).forEach((t=>t.callback(e)))}function T(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{!function(e){if(!(0,o.isPlainObject)(e))throw"setBidderConfig bidder options must be an object";if(!Array.isArray(e.bidders)||!e.bidders.length)throw"setBidderConfig bidder options must contain a bidders list with at least 1 bidder";if(!(0,o.isPlainObject)(e.config))throw"setBidderConfig bidder options must contain a config object"}(e),e.bidders.forEach((r=>{n[r]||(n[r]={}),Object.keys(e.config).forEach((i=>{let s=e.config[i];if((0,o.isPlainObject)(s)){const e=t?o.mergeDeep:Object.assign;n[r][i]=e({},n[r][i]||{},s)}else n[r][i]=s}))}))}catch(e){(0,o.logError)(e)}}function w(e,t){l=e;try{return t()}finally{C()}}function C(){l=null}return p(),{getCurrentBidder:function(){return l},resetBidder:C,getConfig:b,getAnyConfig:h,readConfig:y,readAnyConfig:v,setConfig:E,mergeConfig:function(e){if(!(0,o.isPlainObject)(e))return void(0,o.logError)("mergeConfig input must be an object");const t=(0,o.mergeDeep)(m(),e);return E({...t}),t},setDefaults:function(n){(0,o.isPlainObject)(e)?(Object.assign(e,n),Object.assign(t,n)):(0,o.logError)("defaults must be an object")},resetConfig:p,runWithBidder:w,callbackWithBidder:function(e){return function(t){return function(){if("function"==typeof t){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return w(e,t.bind(this,...r))}(0,o.logWarn)("config.callbackWithBidder callback is not a function")}}},setBidderConfig:T,getBidderConfig:function(){return n},mergeBidderConfig:function(e){return T(e,!0)}}}()},16916:(e,t,n)=>{n.d(t,{B1:()=>s,SL:()=>p,ad:()=>l,et:()=>u,mW:()=>d,o2:()=>g,t6:()=>c});var r=n(91069),i=n(25555),o=n(43272);const s=Object.freeze({});class a{#t;#n;#r;#i;#o=!0;#s;generatedTime;hashFields;constructor(){this.reset()}#a(e){this.#i=!0,this.#n=e,this.#r.resolve(e)}reset(){this.#r=(0,i.v)(),this.#t=!1,this.#n=null,this.#i=!1,this.generatedTime=null}enable(){this.#t=!0}get enabled(){return this.#t}get ready(){return this.#i}get promise(){return this.#i?i.k.resolve(this.#n):(this.#t||this.#a(null),this.#r.promise)}setConsentData(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,r.timestamp)();this.generatedTime=t,this.#o=!0,this.#a(e)}getConsentData(){return this.#n}get hash(){return this.#o&&(this.#s=(0,r.cyrb53Hash)(JSON.stringify(this.#n&&this.hashFields?this.hashFields.map((e=>this.#n[e])):this.#n)),this.#o=!1),this.#s}}const d=new class extends a{hashFields=["gdprApplies","consentString"];getConsentMeta(){const e=this.getConsentData();if(e&&e.vendorData&&this.generatedTime)return{gdprApplies:e.gdprApplies,consentStringSize:(0,r.isStr)(e.vendorData.tcString)?e.vendorData.tcString.length:0,generatedAt:this.generatedTime,apiVersion:e.apiVersion}}},c=new class extends a{getConsentMeta(){if(this.getConsentData()&&this.generatedTime)return{generatedAt:this.generatedTime}}},l=new class extends a{hashFields=["applicableSections","gppString"];getConsentMeta(){if(this.getConsentData()&&this.generatedTime)return{generatedAt:this.generatedTime}}},u=(()=>{function e(){return!!o.$W.getConfig("coppa")}return{getCoppa:e,getConsentData:e,getConsentMeta:e,reset(){},get promise(){return i.k.resolve(e())},get hash(){return e()?"1":"0"}}})(),g=function(){const e={},t={},n={};return{register(r,i,o){o&&((e[i]=e[i]||{})[r]=o,t.hasOwnProperty(i)?t[i]!==o&&(t[i]=n):t[i]=o)},get(r){const i={modules:e[r]||{}};return t.hasOwnProperty(r)&&t[r]!==n&&(i.gvlid=t[r]),i}}}(),f={gdpr:d,usp:c,gpp:l,coppa:u};const p=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;return e=Object.entries(e),Object.assign({get promise(){return i.k.all(e.map((e=>{let[t,n]=e;return n.promise.then((e=>[t,e]))}))).then((e=>Object.fromEntries(e)))},get hash(){return(0,r.cyrb53Hash)(e.map((e=>{let[t,n]=e;return n.hash})).join(":"))}},Object.fromEntries(["getConsentData","getConsentMeta","reset"].map((t=>{return[t,(n=t,function(){return Object.fromEntries(e.map((e=>{let[t,r]=e;return[t,r[n]()]})))})];var n}))))}()},78969:(e,t,n)=>{n.d(t,{IY:()=>A,M:()=>i,RW:()=>f,Tf:()=>m,UE:()=>c,XQ:()=>o,Zh:()=>u,_B:()=>v,as:()=>a,cA:()=>d,h0:()=>h,iD:()=>r,jO:()=>b,nl:()=>E,oA:()=>y,qY:()=>s,tl:()=>p,x5:()=>g,xS:()=>l});const r={PL_CODE:"code",PL_SIZE:"sizes",PL_BIDS:"bids",BD_BIDDER:"bidder",BD_ID:"paramsd",BD_PL_ID:"placementId",ADSERVER_TARGETING:"adserverTargeting",BD_SETTING_STANDARD:"standard"},i="pbjs_debug",o={GOOD:1},s={AUCTION_INIT:"auctionInit",AUCTION_TIMEOUT:"auctionTimeout",AUCTION_END:"auctionEnd",BID_ADJUSTMENT:"bidAdjustment",BID_TIMEOUT:"bidTimeout",BID_REQUESTED:"bidRequested",BID_RESPONSE:"bidResponse",BID_REJECTED:"bidRejected",NO_BID:"noBid",SEAT_NON_BID:"seatNonBid",BID_WON:"bidWon",BIDDER_DONE:"bidderDone",BIDDER_ERROR:"bidderError",SET_TARGETING:"setTargeting",BEFORE_REQUEST_BIDS:"beforeRequestBids",BEFORE_BIDDER_HTTP:"beforeBidderHttp",REQUEST_BIDS:"requestBids",ADD_AD_UNITS:"addAdUnits",AD_RENDER_FAILED:"adRenderFailed",AD_RENDER_SUCCEEDED:"adRenderSucceeded",TCF2_ENFORCEMENT:"tcf2Enforcement",AUCTION_DEBUG:"auctionDebug",BID_VIEWABLE:"bidViewable",STALE_RENDER:"staleRender",BILLABLE_EVENT:"billableEvent",BID_ACCEPTED:"bidAccepted",RUN_PAAPI_AUCTION:"paapiRunAuction",PAAPI_BID:"paapiBid",PAAPI_NO_BID:"paapiNoBid",PAAPI_ERROR:"paapiError"},a={PREVENT_WRITING_ON_MAIN_DOCUMENT:"preventWritingOnMainDocument",NO_AD:"noAd",EXCEPTION:"exception",CANNOT_FIND_AD:"cannotFindAd",MISSING_DOC_OR_ADID:"missingDocOrAdid"},d={bidWon:"adUnitCode"},c={LOW:"low",MEDIUM:"medium",HIGH:"high",AUTO:"auto",DENSE:"dense",CUSTOM:"custom"},l={BIDDER:"hb_bidder",AD_ID:"hb_adid",PRICE_BUCKET:"hb_pb",SIZE:"hb_size",DEAL:"hb_deal",SOURCE:"hb_source",FORMAT:"hb_format",UUID:"hb_uuid",CACHE_ID:"hb_cache_id",CACHE_HOST:"hb_cache_host",ADOMAIN:"hb_adomain",ACAT:"hb_acat",CRID:"hb_crid",DSP:"hb_dsp"},u={BIDDER:"hb_bidder",AD_ID:"hb_adid",PRICE_BUCKET:"hb_pb",SIZE:"hb_size",DEAL:"hb_deal",FORMAT:"hb_format",UUID:"hb_uuid",CACHE_HOST:"hb_cache_host"},g={title:"hb_native_title",body:"hb_native_body",body2:"hb_native_body2",privacyLink:"hb_native_privacy",privacyIcon:"hb_native_privicon",sponsoredBy:"hb_native_brand",image:"hb_native_image",icon:"hb_native_icon",clickUrl:"hb_native_linkurl",displayUrl:"hb_native_displayurl",cta:"hb_native_cta",rating:"hb_native_rating",address:"hb_native_address",downloads:"hb_native_downloads",likes:"hb_native_likes",phone:"hb_native_phone",price:"hb_native_price",salePrice:"hb_native_saleprice",rendererUrl:"hb_renderer_url",adTemplate:"hb_adTemplate"},f={SRC:"s2s",DEFAULT_ENDPOINT:"https://prebid.adnxs.com/pbs/v1/openrtb2/auction",SYNCED_BIDDERS_KEY:"pbjsSyncs"},p={BID_TARGETING_SET:"targetingSet",RENDERED:"rendered",BID_REJECTED:"bidRejected"},m={INVALID:"Bid has missing or invalid properties",INVALID_REQUEST_ID:"Invalid request ID",BIDDER_DISALLOWED:"Bidder code is not allowed by allowedAlternateBidderCodes / allowUnknownBidderCodes",FLOOR_NOT_MET:"Bid does not meet price floor",CANNOT_CONVERT_CURRENCY:"Unable to convert currency",DSA_REQUIRED:"Bid does not provide required DSA transparency info",DSA_MISMATCH:"Bid indicates inappropriate DSA rendering method",PRICE_TOO_HIGH:"Bid price exceeds maximum value"},h={body:"desc",body2:"desc2",sponsoredBy:"sponsored",cta:"ctatext",rating:"rating",address:"address",downloads:"downloads",likes:"likes",phone:"phone",price:"price",salePrice:"saleprice",displayUrl:"displayurl"},b={sponsored:1,desc:2,rating:3,likes:4,downloads:5,price:6,saleprice:7,phone:8,address:9,desc2:10,displayurl:11,ctatext:12},y={ICON:1,MAIN:3},v=["privacyIcon","clickUrl","sendTargetingKeys","adTemplate","rendererUrl","type"],E={REQUEST:"Prebid Request",RESPONSE:"Prebid Response",NATIVE:"Prebid Native",EVENT:"Prebid Event"},A="__pb_locator__"},86833:(e,t,n)=>{n.d(t,{j:()=>g,q:()=>p});var r=n(15901),i=n(91069),o=n(43272);const s=2,a={buckets:[{max:5,increment:.5}]},d={buckets:[{max:20,increment:.1}]},c={buckets:[{max:20,increment:.01}]},l={buckets:[{max:3,increment:.01},{max:8,increment:.05},{max:20,increment:.5}]},u={buckets:[{max:5,increment:.05},{max:10,increment:.1},{max:20,increment:.5}]};function g(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=parseFloat(e);return isNaN(r)&&(r=""),{low:""===r?"":f(e,a,n),med:""===r?"":f(e,d,n),high:""===r?"":f(e,c,n),auto:""===r?"":f(e,u,n),dense:""===r?"":f(e,l,n),custom:""===r?"":f(e,t,n)}}function f(e,t,n){let a="";if(!p(t))return a;const d=t.buckets.reduce(((e,t)=>e.max>t.max?e:t),{max:0});let c=0,l=(0,r.I6)(t.buckets,(t=>{if(e>d.max*n){let e=t.precision;void 0===e&&(e=s),a=(t.max*n).toFixed(e)}else{if(e<=t.max*n&&e>=c*n)return t.min=c,t;c=t.max}}));return l&&(a=function(e,t,n){const r=void 0!==t.precision?t.precision:s,a=t.increment*n,d=t.min*n;let c=Math.floor,l=o.$W.getConfig("cpmRoundingFunction");"function"==typeof l&&(c=l);let u,g,f=Math.pow(10,r+2),p=(e*f-d*f)/(a*f);try{u=c(p)*a+d}catch(e){g=!0}(g||"number"!=typeof u)&&((0,i.logWarn)("Invalid rounding function passed in config"),u=Math.floor(p)*a+d);return u=Number(u.toFixed(10)),u.toFixed(r)}(e,l,n)),a}function p(e){if((0,i.isEmpty)(e)||!e.buckets||!Array.isArray(e.buckets))return!1;let t=!0;return e.buckets.forEach((e=>{e.max&&e.increment||(t=!1)})),t}},46031:(e,t,n)=>{n.d(t,{H:()=>a,k:()=>s});var r=n(25555),i=n(91069),o=n(34595);const s=(0,n(16833).A_)("sync",(function(e){return o.G})),a=function(){const e={};return function(t){const n=s(t);return e.hasOwnProperty(n)||(e[n]=new r.k((e=>{const t=(0,i.createInvisibleIframe)();t.srcdoc=`<script>${n}<\/script>`,t.onload=()=>e(t.contentWindow.render),document.body.appendChild(t)}))),e[n]}}()},49164:(e,t,n)=>{n.d(t,{L6:()=>m,ey:()=>l});var r=n(43272),i=n(16833),o=n(7873),s=n(91069),a=n(93597),d=n(41580),c=n(25555);const l="__pbjs_debugging__";function u(){return(0,o.m)().installedModules.includes("debugging")}function g(e){return new c.k((t=>{(0,d.R)(e,"debugging",t)}))}function f(){let{alreadyInstalled:e=u,script:t=g}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null;return function(){return null==n&&(n=new c.k(((n,d)=>{setTimeout((()=>{if(e())n();else{const e="https://cdn.jsdelivr.net/npm/prebid.js@latest/dist/debugging-standalone.js";(0,s.logMessage)(`Debugging module not installed, loading it from "${e}"...`),(0,o.m)()._installDebugging=!0,t(e).then((()=>{(0,o.m)()._installDebugging({DEBUG_KEY:l,hook:i.A_,config:r.$W,createBid:a.O,logger:(0,s.prefixLog)("DEBUG:")})})).then(n,d)}}))}))),n}}const p=function(){let{load:e=f(),hook:t=(0,i.Yn)("requestBids")}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null,r=!1;function o(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return(n||c.k.resolve()).then((()=>e.apply(this,r)))}function s(){t.getHooks({hook:o}).remove(),r=!1}return{enable:function(){r||(n=e(),t.before(o,99),r=!0)},disable:s,reset:function(){n=null,s()}}}();p.reset;function m(){let e=null;try{e=window.sessionStorage}catch(e){}if(null!==e){let t=p,n=null;try{n=e.getItem(l)}catch(e){}null!==n&&t.enable()}}r.$W.getConfig("debugging",(function(e){let{debugging:t}=e;t?.enabled?p.enable():p.disable()}))},75023:(e,t,n)=>{n.r(t),n.d(t,{addEvents:()=>E,clearEvents:()=>I,emit:()=>v,get:()=>b,getEvents:()=>y,has:()=>A,off:()=>h,on:()=>m});var r=n(91069),i=n(78969),o=n(76853),s=n(43272);const a="eventHistoryTTL";let d=null;const c=(0,o.H)({monotonic:!0,ttl:()=>d});s.$W.getConfig(a,(e=>{const t=d;e=e?.[a],d="number"==typeof e?1e3*e:null,t!==d&&c.refresh()}));let l=Array.prototype.slice,u=Array.prototype.push,g=Object.values(i.qY);const f=i.cA,p=function(){let e={},t={};function n(e){return g.includes(e)}return t.has=n,t.on=function(t,i,o){if(n(t)){let n=e[t]||{que:[]};o?(n[o]=n[o]||{que:[]},n[o].que.push(i)):n.que.push(i),e[t]=n}else r.logError("Wrong event name : "+t+" Valid event names :"+g)},t.emit=function(t){!function(t,n){r.logMessage("Emitting event for: "+t);let i=n[0]||{},o=i[f[t]],s=e[t]||{que:[]};var a=Object.keys(s);let d=[];c.add({eventType:t,args:i,id:o,elapsedTime:r.getPerformanceNow()}),o&&a.includes(o)&&u.apply(d,s[o].que),u.apply(d,s.que),(d||[]).forEach((function(e){if(e)try{e.apply(null,n)}catch(e){r.logError("Error executing handler:","events.js",e,t)}}))}(t,l.call(arguments,1))},t.off=function(t,n,i){let o=e[t];r.isEmpty(o)||r.isEmpty(o.que)&&r.isEmpty(o[i])||i&&(r.isEmpty(o[i])||r.isEmpty(o[i].que))||(i?(o[i].que||[]).forEach((function(e){let t=o[i].que;e===n&&t.splice(t.indexOf(e),1)})):(o.que||[]).forEach((function(e){let t=o.que;e===n&&t.splice(t.indexOf(e),1)})),e[t]=o)},t.get=function(){return e},t.addEvents=function(e){g=g.concat(e)},t.getEvents=function(){return c.toArray().map((e=>Object.assign({},e)))},t}();r._setEventEmitter(p.emit.bind(p));const{on:m,off:h,get:b,getEvents:y,emit:v,addEvents:E,has:A}=p;function I(){c.clear()}},20687:(e,t,n)=>{n.d(t,{w:()=>I});var r=n(16833),i=n(27934),o=n(5973),s=n(91069),a=n(63172),d=n(43272),c=n(25555);const l=["architecture","bitness","model","platformVersion","fullVersionList"],u=["brands","mobile","platform"],g=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator?.userAgentData;const t=e&&u.some((t=>void 0!==e[t]))?Object.freeze(p(1,e)):null;return function(){return t}}(),f=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator?.userAgentData;const t={},n=new WeakMap;return function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;if(!n.has(r)){const e=Array.from(r);e.sort(),n.set(r,e.join("|"))}const i=n.get(r);if(!t.hasOwnProperty(i))try{t[i]=e.getHighEntropyValues(r).then((e=>(0,s.isEmpty)(e)?null:Object.freeze(p(2,e)))).catch((()=>null))}catch(e){t[i]=c.k.resolve(null)}return t[i]}}();function p(e,t){function n(e,t){const n={brand:e};return(0,s.isStr)(t)&&!(0,s.isEmptyStr)(t)&&(n.version=t.split(".")),n}const r={source:e};return t.platform&&(r.platform=n(t.platform,t.platformVersion)),(t.fullVersionList||t.brands)&&(r.browsers=(t.fullVersionList||t.brands).map((e=>{let{brand:t,version:r}=e;return n(t,r)}))),void 0!==t.mobile&&(r.mobile=t.mobile?1:0),["model","bitness","architecture"].forEach((e=>{const n=t[e];(0,s.isStr)(n)&&(r[e]=n)})),r}var m=n(73858),h=n(95139),b=n(83441),y=n(76811),v=n(45569);const E={getRefererInfo:i.EN,findRootDomain:o.S,getWindowTop:s.getWindowTop,getWindowSelf:s.getWindowSelf,getHighEntropySUA:f,getLowEntropySUA:g},A=(0,m.i8)("FPD"),I=(0,r.A_)("sync",(e=>{const t=[e,w().catch((()=>null)),c.k.resolve("cookieDeprecationLabel"in navigator&&(0,h.io)(y.Ue,(0,b.s)(v.tp,"cdep"))&&navigator.cookieDeprecationLabel.getValue()).catch((()=>null))];return c.k.all(t).then((e=>{let[t,n,r]=e;const i=E.getRefererInfo();if(Object.entries(O).forEach((e=>{let[n,r]=e;const o=r(t,i);o&&Object.keys(o).length>0&&(t[n]=(0,s.mergeDeep)({},o,t[n]))})),n&&(0,a.J)(t,"device.sua",Object.assign({},n,t.device.sua)),r){const e={cdep:r};(0,a.J)(t,"device.ext",Object.assign({},e,t.device.ext))}t=A(t);for(let e of m.Dy)if((0,m.O$)(t,e)){t[e]=(0,s.mergeDeep)({},S(t,i),t[e]);break}return t}))}));function T(e){try{return e(E.getWindowTop())}catch(t){return e(E.getWindowSelf())}}function w(){const e=d.$W.getConfig("firstPartyData.uaHints");return Array.isArray(e)&&0!==e.length?E.getHighEntropySUA(e):c.k.resolve(E.getLowEntropySUA())}function C(e){return(0,s.getDefinedParams)(e,Object.keys(e))}const O={site(e,t){if(!m.Dy.filter((e=>"site"!==e)).some(m.O$.bind(null,e)))return C({page:t.page,ref:t.ref})},device:()=>T((e=>{const t={w:e.innerWidth||e.document.documentElement.clientWidth||e.document.body.clientWidth,h:e.innerHeight||e.document.documentElement.clientHeight||e.document.body.clientHeight,dnt:(0,s.getDNT)()?1:0,ua:e.navigator.userAgent,language:e.navigator.language.split("-").shift()};return e.navigator?.webdriver&&(0,a.J)(t,"ext.webdriver",!0),t})),regs(){const e={};T((e=>e.navigator.globalPrivacyControl))&&(0,a.J)(e,"ext.gpc",1);const t=d.$W.getConfig("coppa");return"boolean"==typeof t&&(e.coppa=t?1:0),e}};function S(e,t){const n=(0,i.gR)(t.page,{noLeadingWww:!0}),r=T((e=>e.document.querySelector("meta[name='keywords']")))?.content?.replace?.(/\s/g,"");return C({domain:n,keywords:r,publisher:C({domain:E.findRootDomain(n)})})}},86656:(e,t,n)=>{function r(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;try{e=t.top.history.length}catch(t){e=void 0}return e}function i(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;try{e=t.top.navigator.hardwareConcurrency}catch(t){e=void 0}return e}function o(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;try{e=t.top.navigator.deviceMemory}catch(t){e=void 0}return e}n.d(t,{GA:()=>r,iz:()=>i,qM:()=>o})},73858:(e,t,n)=>{n.d(t,{Dy:()=>i,O$:()=>s,i8:()=>o});var r=n(91069);const i=["dooh","app","site"];function o(e){return function(t){return i.reduce(((n,i)=>(s(t,i)&&(null!=n?((0,r.logWarn)(`${e} specifies both '${n}' and '${i}'; dropping the latter.`),delete t[i]):n=i),n)),null),t}}function s(e,t){return null!=e[t]&&Object.keys(e[t]).length>0}},5973:(e,t,n)=>{n.d(t,{S:()=>o});var r=n(91069);const i=(0,n(12938).CK)("fpdEnrichment"),o=(0,r.memoize)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.host;if(!i.cookiesAreEnabled())return e;const t=e.split(".");if(2===t.length)return e;let n,o,s=-2;const a=`_rdc${Date.now()}`,d="writeable";do{n=t.slice(s).join(".");let e=new Date((0,r.timestamp)()+1e4).toUTCString();i.setCookie(a,d,e,"Lax",n,void 0);i.getCookie(a,void 0)===d?(o=!1,i.setCookie(a,"","Thu, 01 Jan 1970 00:00:01 GMT",void 0,n,void 0)):(s+=-1,o=Math.abs(s)<=t.length)}while(o);return n}))},16833:(e,t,n)=>{n.d(t,{A_:()=>s,Gc:()=>d,Y6:()=>p,Yn:()=>c,bz:()=>f,pT:()=>l,xG:()=>g});var r=n(68128),i=n.n(r),o=n(25555);let s=i()({ready:i().SYNC|i().ASYNC|i().QUEUE});const a=(0,o.v)();s.ready=(()=>{const e=s.ready;return function(){try{return e.apply(s,arguments)}finally{a.resolve()}}})();const d=a.promise,c=s.get;function l(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:15;0===e.getHooks({hook:t}).length&&e.before(t,n)}const u={};function g(e,t){let{postInstallAllowed:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s("async",(function(r){r.forEach((e=>t(...e))),n&&(u[e]=t)}),e)([])}function f(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const i=u[e];if(i)return i(...n);c(e).before(((e,t)=>{t.push(n),e(t)}))}function p(e,t){return Object.defineProperties(t,Object.fromEntries(["before","after","getHooks","removeAll"].map((t=>[t,{get:()=>e[t]}])))),t}},71371:(e,t,n)=>{n.d(t,{D4:()=>o,G_:()=>i,LM:()=>s,s6:()=>r});const r="native",i="video",o="banner",s="adpod"},12449:(e,t,n)=>{n.d(t,{Bm:()=>I,Ex:()=>W,Gg:()=>S,IX:()=>R,Nh:()=>g,Xj:()=>N,Zj:()=>C,gs:()=>w,l6:()=>y,mT:()=>u,nk:()=>E,rn:()=>_,vO:()=>T,yl:()=>U});var r=n(70433),i=n(91069),o=n(15901),s=n(67314),a=n(78969),d=n(71371),c=n(29075),l=n(46031);const u=[],g=Object.keys(a.x5).map((e=>a.x5[e])),f={image:{ortb:{ver:"1.2",assets:[{required:1,id:1,img:{type:3,wmin:100,hmin:100}},{required:1,id:2,title:{len:140}},{required:1,id:3,data:{type:1}},{required:0,id:4,data:{type:2}},{required:0,id:5,img:{type:1,wmin:20,hmin:20}}]},image:{required:!0},title:{required:!0},sponsoredBy:{required:!0},clickUrl:{required:!0},body:{required:!1},icon:{required:!1}}},p=P(a.h0),m=P(a.jO),h={img:1,js:2,1:"img",2:"js"},b={impression:1,"viewable-mrc50":2,"viewable-mrc100":3,"viewable-video50":4};function y(e){return e.native&&"object"==typeof e.native}function v(e){if(e&&e.type&&function(e){if(!e||!(0,o.mK)(Object.keys(f),e))return(0,i.logError)(`${e} nativeParam is not supported`),!1;return!0}(e.type)&&(e=f[e.type]),!e||!e.ortb||A(e.ortb))return e}function E(e){e.forEach((e=>{const t=e.nativeParams||(0,r.A)(e,"mediaTypes.native");t&&(e.nativeParams=v(t)),e.nativeParams&&(e.nativeOrtbRequest=e.nativeParams.ortb||_(e.nativeParams))}))}function A(e){const t=e.assets;if(!Array.isArray(t)||0===t.length)return(0,i.logError)("assets in mediaTypes.native.ortb is not an array, or it's empty. Assets: ",t),!1;const n=t.map((e=>e.id));return t.length!==new Set(n).size||n.some((e=>e!==parseInt(e,10)))?((0,i.logError)("each asset object must have 'id' property, it must be unique and it must be an integer"),!1):e.hasOwnProperty("eventtrackers")&&!Array.isArray(e.eventtrackers)?((0,i.logError)("ortb.eventtrackers is not an array. Eventtrackers: ",e.eventtrackers),!1):t.every((e=>function(e){if(!(0,i.isPlainObject)(e))return(0,i.logError)("asset must be an object. Provided asset: ",e),!1;if(e.img){if(!(0,i.isNumber)(e.img.w)&&!(0,i.isNumber)(e.img.wmin))return(0,i.logError)("for img asset there must be 'w' or 'wmin' property"),!1;if(!(0,i.isNumber)(e.img.h)&&!(0,i.isNumber)(e.img.hmin))return(0,i.logError)("for img asset there must be 'h' or 'hmin' property"),!1}else if(e.title){if(!(0,i.isNumber)(e.title.len))return(0,i.logError)("for title asset there must be 'len' property defined"),!1}else if(e.data){if(!(0,i.isNumber)(e.data.type))return(0,i.logError)("for data asset 'type' property must be a number"),!1}else if(e.video&&!(Array.isArray(e.video.mimes)&&Array.isArray(e.video.protocols)&&(0,i.isNumber)(e.video.minduration)&&(0,i.isNumber)(e.video.maxduration)))return(0,i.logError)("video asset is not properly configured"),!1;return!0}(e)))}function I(e){let{index:t=s.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=t.getAdUnit(e);if(!n)return!1;let a=n.nativeOrtbRequest;return function(e,t){if(!(0,r.A)(e,"link.url"))return(0,i.logError)("native response doesn't have 'link' property. Ortb response: ",e),!1;let n=t.assets.filter((e=>1===e.required)).map((e=>e.id)),s=e.assets.map((e=>e.id));const a=n.every((e=>(0,o.mK)(s,e)));a||(0,i.logError)(`didn't receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${s}`);return a}(e.native?.ortb||x(e.native,a),a)}function T(e,t){const n=t.native.ortb||q(t.native);return"click"===e.action?function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,{fetchURL:n=i.triggerPixel}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){const r=(e.assets||[]).filter((e=>e.link)).reduce(((e,t)=>(e[t.id]=t.link,e)),{}),i=e.link?.clicktrackers||[];let o=r[t],s=i;o&&(s=o.clicktrackers||[]),s.forEach((e=>n(e)))}else(e.link?.clicktrackers||[]).forEach((e=>n(e)))}(n,e?.assetId):function(e){let{runMarkup:t=(e=>(0,i.insertHtmlIntoIframe)(e)),fetchURL:n=i.triggerPixel}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=(e.eventtrackers||[]).filter((e=>e.event===b.impression));let{img:o,js:s}=r.reduce(((e,t)=>(h.hasOwnProperty(t.method)&&e[h[t.method]].push(t.url),e)),{img:[],js:[]});e.imptrackers&&(o=o.concat(e.imptrackers));o.forEach((e=>n(e))),s=s.map((e=>`<script async src="${e}"><\/script>`)),e.jstracker&&(s=s.concat([e.jstracker]));s.length&&t(s.join("\n"))}(n),e.action}function w(e,t){const n=t?.nativeOrtbRequest,r=e.native?.ortb;if(n&&r){const t=W(r,n);Object.assign(e.native,t)}["rendererUrl","adTemplate"].forEach((n=>{const r=t?.nativeParams?.[n];r&&(e.native[n]=D(r))}))}function C(e){let{index:t=s.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={};const i=t.getAdUnit(e),o=!1!==(0,r.A)(i,"nativeParams.sendTargetingKeys"),d=function(e){const t={};(0,r.A)(e,"nativeParams.ext")&&Object.keys(e.nativeParams.ext).forEach((e=>{t[e]=`hb_native_${e}`}));return{...a.x5,...t}}(i),c={...e.native,...e.native.ext};return delete c.ext,Object.keys(c).forEach((t=>{const s=d[t];let a=D(e.native[t])||D((0,r.A)(e,`native.ext.${t}`));if("adTemplate"===t||!s||!a)return;let c=(0,r.A)(i,`nativeParams.${t}.sendId`);if("boolean"!=typeof c&&(c=(0,r.A)(i,`nativeParams.ext.${t}.sendId`)),c){a=`${s}:${e.adId}`}let l=(0,r.A)(i,`nativeParams.${t}.sendTargetingKeys`);"boolean"!=typeof l&&(l=(0,r.A)(i,`nativeParams.ext.${t}.sendTargetingKeys`));("boolean"==typeof l?l:o)&&(n[s]=a)})),n}function O(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=[];return Object.entries(e).filter((e=>{let[r,i]=e;return i&&(!1===n&&"ext"===r||null==t||t.includes(r))})).forEach((e=>{let[i,o]=e;!1===n&&"ext"===i?r.push(...O(o,t,!0)):(n||a.x5.hasOwnProperty(i))&&r.push({key:i,value:D(o)})})),r}function S(e,t,n){const r={...(0,i.getDefinedParams)(e.native,["rendererUrl","adTemplate"]),assets:O(e.native,n),nativeKeys:a.x5};return e.native.ortb?r.ortb=e.native.ortb:t.mediaTypes?.native?.ortb&&(r.ortb=x(e.native,t.nativeOrtbRequest)),r}function B(e,t,n){let{index:r=s.n.index}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const i={message:"assetResponse",adId:e.adId};let o=(0,c.vd)(t).native;return o?(i.native=Object.assign({},o),i.renderer=(0,l.k)(t),null!=n&&(o.assets=o.assets.filter((e=>{let{key:t}=e;return n.includes(t)})))):o=S(t,r.getAdUnit(t),n),Object.assign(i,o)}const k=Object.fromEntries(Object.entries(a.x5).map((e=>{let[t,n]=e;return[n,t]})));function R(e,t){const n=e.assets.map((e=>k[e]));return B(e,t,n)}function U(e,t){return B(e,t,null)}function D(e){return e?.url||e}function _(e){if(!e&&!(0,i.isPlainObject)(e))return void(0,i.logError)("Native assets object is empty or not an object: ",e);const t={ver:"1.2",assets:[]};for(let n in e){if(a._B.includes(n))continue;if(!a.x5.hasOwnProperty(n)){(0,i.logError)(`Unrecognized native asset code: ${n}. Asset will be ignored.`);continue}if("privacyLink"===n){t.privacy=1;continue}const r=e[n];let o=0;r.required&&(0,i.isBoolean)(r.required)&&(o=Number(r.required));const s={id:t.assets.length,required:o};if(n in a.h0)s.data={type:a.jO[a.h0[n]]},r.len&&(s.data.len=r.len);else if("icon"===n||"image"===n){if(s.img={type:"icon"===n?a.oA.ICON:a.oA.MAIN},r.aspect_ratios)if((0,i.isArray)(r.aspect_ratios))if(r.aspect_ratios.length){const{min_width:e,min_height:t}=r.aspect_ratios[0];(0,i.isInteger)(e)&&(0,i.isInteger)(t)?(s.img.wmin=e,s.img.hmin=t):(0,i.logError)("image.aspect_ratios min_width or min_height are invalid: ",e,t);const n=r.aspect_ratios.filter((e=>e.ratio_width&&e.ratio_height)).map((e=>`${e.ratio_width}:${e.ratio_height}`));n.length>0&&(s.img.ext={aspectratios:n})}else(0,i.logError)("image.aspect_ratios was passed, but it's empty:",r.aspect_ratios);else(0,i.logError)("image.aspect_ratios was passed, but it's not a an array:",r.aspect_ratios);r.sizes&&(2===r.sizes.length&&(0,i.isInteger)(r.sizes[0])&&(0,i.isInteger)(r.sizes[1])?(s.img.w=r.sizes[0],s.img.h=r.sizes[1],delete s.img.hmin,delete s.img.wmin):(0,i.logError)("image.sizes was passed, but its value is not an array of integers:",r.sizes))}else"title"===n?s.title={len:r.len||140}:"ext"===n&&(s.ext=r,delete s.required);t.assets.push(s)}return t}function j(e,t){for(;e&&t&&e!==t;)e>t?e-=t:t-=e;return e||t}function $(e){if(!A(e))return;const t={};for(const n of e.assets){if(n.title){const e={required:!!n.required&&Boolean(n.required),len:n.title.len};t.title=e}else if(n.img){const e={required:!!n.required&&Boolean(n.required)};if(n.img.w&&n.img.h)e.sizes=[n.img.w,n.img.h];else if(n.img.wmin&&n.img.hmin){const t=j(n.img.wmin,n.img.hmin);e.aspect_ratios=[{min_width:n.img.wmin,min_height:n.img.hmin,ratio_width:n.img.wmin/t,ratio_height:n.img.hmin/t}]}n.img.type===a.oA.MAIN?t.image=e:t.icon=e}else if(n.data){let e=Object.keys(a.jO).find((e=>a.jO[e]===n.data.type)),r=Object.keys(a.h0).find((t=>a.h0[t]===e));t[r]={required:!!n.required&&Boolean(n.required)},n.data.len&&(t[r].len=n.data.len)}e.privacy&&(t.privacyLink={required:!1})}return t}function N(e){{if(!e||!(0,i.isArray)(e))return e;if(!e.some((e=>(e?.mediaTypes||{})[d.s6]?.ortb)))return e;let t=(0,i.deepClone)(e);for(const e of t)e.mediaTypes&&e.mediaTypes[d.s6]&&e.mediaTypes[d.s6].ortb&&(e.mediaTypes[d.s6]=Object.assign((0,i.pick)(e.mediaTypes[d.s6],a._B),$(e.mediaTypes[d.s6].ortb)),e.nativeParams=v(e.mediaTypes[d.s6]));return t}}function q(e){const t={link:{},eventtrackers:[]};return Object.entries(e).forEach((e=>{let[n,r]=e;switch(n){case"clickUrl":t.link.url=r;break;case"clickTrackers":t.link.clicktrackers=Array.isArray(r)?r:[r];break;case"impressionTrackers":(Array.isArray(r)?r:[r]).forEach((e=>{t.eventtrackers.push({event:b.impression,method:h.img,url:e})}));break;case"javascriptTrackers":t.jstracker=Array.isArray(r)?r.join(""):r;break;case"privacyLink":t.privacy=r}})),t}function x(e,t){const n={...q(e),assets:[]};function r(e,r){let o=t.assets.find(e);null!=o&&(o=(0,i.deepClone)(o),r(o),n.assets.push(o))}return Object.keys(e).filter((t=>!!e[t])).forEach((t=>{const n=D(e[t]);switch(t){case"title":r((e=>null!=e.title),(e=>{e.title={text:n}}));break;case"image":case"icon":const e="image"===t?a.oA.MAIN:a.oA.ICON;r((t=>null!=t.img&&t.img.type===e),(e=>{e.img={url:n}}));break;default:t in a.h0&&r((e=>null!=e.data&&e.data.type===a.jO[a.h0[t]]),(e=>{e.data={value:n}}))}})),n}function W(e,t){const n={},r=t?.assets||[];n.clickUrl=e.link.url,n.privacyLink=e.privacy;for(const t of e?.assets||[]){const e=r.find((e=>t.id===e.id));t.title?n.title=t.title.text:t.img?n[e.img.type===a.oA.MAIN?"image":"icon"]={url:t.img.url,width:t.img.w,height:t.img.h}:t.data&&(n[p[m[e.data.type]]]=t.data.value)}n.impressionTrackers=[];let i=[];e.imptrackers&&n.impressionTrackers.push(...e.imptrackers);for(const t of e?.eventtrackers||[])t.event===b.impression&&t.method===h.img&&n.impressionTrackers.push(t.url),t.event===b.impression&&t.method===h.js&&i.push(t.url);return i=i.map((e=>`<script async src="${e}"><\/script>`)),e?.jstracker&&i.push(e.jstracker),i.length&&(n.javascriptTrackers=i.join("\n")),n}function P(e){var t={};for(var n in e)t[e[n]]=n;return t}},1e3:(e,t,n)=>{n.d(t,{Cf:()=>a,S3:()=>i,Tb:()=>o,WR:()=>s,e4:()=>c,pS:()=>u,qN:()=>d,yB:()=>g,zt:()=>r});const r=["request","imp","bidResponse","response"],[i,o,s,a]=r,[d,c]=["default","pbs"],l=new Set(r);const{registerOrtbProcessor:u,getProcessors:g}=function(){const e={};return{registerOrtbProcessor(t){let{type:n,name:i,fn:o,priority:s=0,dialects:a=[d]}=t;if(!l.has(n))throw new Error(`ORTB processor type must be one of: ${r.join(", ")}`);a.forEach((t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(n)||(e[t][n]={}),e[t][n][i]={priority:s,fn:o}}))},getProcessors:t=>e[t]||{}}}()},15901:(e,t,n)=>{function r(e,t,n){return e&&e.includes(t,n)||!1}function i(){return Array.from.apply(Array,arguments)}function o(e,t,n){return e&&e.find(t,n)}function s(e,t,n){return e&&e.findIndex(t,n)}n.d(t,{A6:()=>i,I6:()=>o,SL:()=>s,mK:()=>r})},42627:(e,t,n)=>{n.d(t,{WH:()=>V,Z:()=>K,gH:()=>Y});var r=n(7873),i=n(91069),o=n(70433),s=n(63172),a=n(12449),d=n(78969),c=n(15901),l=n(29075),u=n(46031);const{REQUEST:g,RESPONSE:f,NATIVE:p,EVENT:m}=d.nl,h={[g]:function(e,t,n){(0,l.bw)({renderFn(t){e(Object.assign({message:f,renderer:(0,u.k)(n)},t))},resizeFn:y(t.adId,n),options:t.options,adId:t.adId,bidResponse:n})},[m]:function(e,t,n){if(null==n)return void(0,i.logError)(`Cannot find ad '${t.adId}' for x-origin event request`);if(n.status!==d.tl.RENDERED)return void(0,i.logWarn)(`Received x-origin event request without corresponding render request for ad '${n.adId}'`);return(0,l.Uc)(t,n)}};function b(){window.addEventListener("message",(function(e){!function(e){var t=e.message?"message":"data",n={};try{n=JSON.parse(e[t])}catch(e){return}if(n&&n.adId&&n.message&&h.hasOwnProperty(n.message))(0,l.$A)(n.adId,n.message===d.nl.REQUEST).then((t=>{var r,o;h[n.message]((r=n.adId,o=function(e){return null==e.origin&&0===e.ports.length?function(){const e="Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870";throw(0,i.logError)(e),new Error(e)}:e.ports.length>0?function(t){e.ports[0].postMessage(JSON.stringify(t))}:function(t){e.source.postMessage(JSON.stringify(t),e.origin)}}(e),function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return o(Object.assign({},e,{adId:r}),...n)}),n,t)}))}(e)}),!1)}function y(e,t){return function(n,r){!function(e){let{adId:t,adUnitCode:n,width:r,height:o}=e;function s(e){return e?e+"px":"100%"}function a(e){let r=d(t,n),i=document.getElementById(r);return i&&i.querySelector(e)}function d(e,t){return(0,i.isGptPubadsDefined)()?l(e):(0,i.isApnGetTagDefined)()?u(t):t}function l(e){const t=(0,c.I6)(window.googletag.pubads().getSlots(),(t=>(0,c.I6)(t.getTargetingKeys(),(n=>(0,c.mK)(t.getTargeting(n),e)))));return t?t.getSlotElementId():null}function u(e){let t=window.apntag.getTag(e);return t&&t.targetId}["div","iframe"].forEach((e=>{let t=a(e+':not([style*="display: none"])');if(t){let e=t.style;e.width=s(r),e.height=s(o)}else(0,i.logError)(`Unable to locate matching page element for adUnitCode ${n}.  Can't resize it to ad's dimensions.  Please review setup.`)}))}({...t,width:n,height:r,adId:e})}}Object.assign(h,{[p]:function(e,t,n){if(null==n)return void(0,i.logError)(`Cannot find ad for x-origin event request: '${t.adId}'`);n.status!==d.tl.RENDERED&&(0,l.n6)(n);switch(t.action){case"assetRequest":e((0,a.IX)(t,n));break;case"allAssetRequest":e((0,a.yl)(t,n));break;default:(0,l.vW)(t,n,{resizeFn:y(n)})}}});var v=n(38230),E=n(43272),A=n(67314),I=n(97779),T=n(16833),w=n(49164),C=n(93597),O=n(12938),S=n(11445),B=n(75023),k=n(16894),R=n(25555),U=n(20687),D=n(16916),_=n(12713),j=n(63895);const $=(0,r.m)(),{triggerUserSyncs:N}=v.zt,{ADD_AD_UNITS:q,REQUEST_BIDS:x,SET_TARGETING:W}=d.qY,P={bidWon:function(e){if(!A.n.getBidsRequested().map((e=>e.bids.map((e=>e.adUnitCode)))).reduce(i.flatten).filter(i.uniques).includes(e))return void(0,i.logError)('The "'+e+'" placement is not defined.');return!0}};function M(e,t){let n=[];return(0,i.isArray)(e)&&(t?e.length===t:e.length>0)&&(e.every((e=>(0,i.isArrayOfNums)(e,2)))?n=e:(0,i.isArrayOfNums)(e,2)&&n.push(e)),n}function G(e){const t=(0,i.deepClone)(e),n=t.mediaTypes.banner,r=M(n.sizes);return r.length>0?(n.sizes=r,t.sizes=r):((0,i.logError)("Detected a mediaTypes.banner object without a proper sizes field.  Please ensure the sizes are listed like: [[300, 250], ...].  Removing invalid mediaTypes.banner object from request."),delete t.mediaTypes.banner),t}function L(e){const t=(0,i.deepClone)(e),n=t.mediaTypes.video;if(n.playerSize){let e="number"==typeof n.playerSize[0]?2:1;const r=M(n.playerSize,e);r.length>0?(2===e&&(0,i.logInfo)("Transforming video.playerSize from [640,480] to [[640,480]] so it's in the proper format."),n.playerSize=r,t.sizes=r):((0,i.logError)("Detected incorrect configuration of mediaTypes.video.playerSize.  Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request."),delete t.mediaTypes.video.playerSize)}return(0,j.aP)(t),t}function F(e){function t(t){return(0,i.logError)(`Error in adUnit "${e.code}": ${t}. Removing native request from ad unit`,e),delete r.mediaTypes.native,r}function n(e){for(const t of["sendTargetingKeys","types"])if(o.hasOwnProperty(t)){const n=e(t);if(n)return n}}const r=(0,i.deepClone)(e),o=r.mediaTypes.native;if(o.ortb){if(o.ortb.assets?.some((e=>!(0,i.isNumber)(e.id)||e.id<0||e.id%1!=0)))return t("native asset ID must be a nonnegative integer");if(n((e=>t(`ORTB native requests cannot specify "${e}"`))))return r;const e=Object.keys(d.x5).filter((e=>d.x5[e].includes("hb_native_"))),s=Object.keys(o).filter((t=>e.includes(t)));s.length>0&&((0,i.logError)(`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${s} keys from request.`),s.forEach((e=>delete r.mediaTypes.native[e])))}else n((e=>`mediaTypes.native.${e} is deprecated, consider using native ORTB instead`));return o.image&&o.image.sizes&&!Array.isArray(o.image.sizes)&&((0,i.logError)("Please use an array of sizes for native.image.sizes field.  Removing invalid mediaTypes.native.image.sizes property from request."),delete r.mediaTypes.native.image.sizes),o.image&&o.image.aspect_ratios&&!Array.isArray(o.image.aspect_ratios)&&((0,i.logError)("Please use an array of sizes for native.image.aspect_ratios field.  Removing invalid mediaTypes.native.image.aspect_ratios property from request."),delete r.mediaTypes.native.image.aspect_ratios),o.icon&&o.icon.sizes&&!Array.isArray(o.icon.sizes)&&((0,i.logError)("Please use an array of sizes for native.icon.sizes field.  Removing invalid mediaTypes.native.icon.sizes property from request."),delete r.mediaTypes.native.icon.sizes),r}function z(e,t){let n=(0,o.A)(e,`mediaTypes.${t}.pos`);if(!(0,i.isNumber)(n)||isNaN(n)||!isFinite(n)){let n=`Value of property 'pos' on ad unit ${e.code} should be of type: Number`;(0,i.logWarn)(n),B.emit(d.qY.AUCTION_DEBUG,{type:"WARNING",arguments:n}),delete e.mediaTypes[t].pos}return e}function H(e){const t=t=>`adUnit.code '${e.code}' ${t}`,n=e.mediaTypes,r=e.bids;return null==r||(0,i.isArray)(r)?null==r&&null==e.ortb2Imp?((0,i.logError)(t("has no 'adUnit.bids' and no 'adUnit.ortb2Imp'. Removing adUnit from auction")),null):n&&0!==Object.keys(n).length?(null==e.ortb2Imp||null!=r&&0!==r.length||(e.bids=[{bidder:null}],(0,i.logMessage)(t("defines 'adUnit.ortb2Imp' with no 'adUnit.bids'; it will be seen only by S2S adapters"))),e):((0,i.logError)(t("does not define a 'mediaTypes' object.  This is a required field for the auction, so this adUnit has been removed.")),null):((0,i.logError)(t("defines 'adUnit.bids' that is not an array. Removing adUnit from auction")),null)}(0,w.L6)(),$.bidderSettings=$.bidderSettings||{},$.libLoaded=!0,$.version="v9.8.0-pre",(0,i.logInfo)("Prebid.js v9.8.0-pre loaded"),$.installedModules=$.installedModules||[],$.adUnits=$.adUnits||[],$.triggerUserSyncs=N;const V={validateAdUnit:H,validateBannerMediaType:G,validateSizes:M};Object.assign(V,{validateNativeMediaType:F}),Object.assign(V,{validateVideoMediaType:L});const K=(0,T.A_)("sync",(function(e){const t=[];return e.forEach((e=>{if(null==(e=H(e)))return;const n=e.mediaTypes;let r,i,o;n.banner&&(r=G(e),n.banner.hasOwnProperty("pos")&&(r=z(r,"banner"))),n.video&&(i=L(r||e),n.video.hasOwnProperty("pos")&&(i=z(i,"video"))),n.native&&(o=F(i||(r||e)));const s=Object.assign({},r,i,o);t.push(s)})),t}),"checkAdUnitSetup");function J(e){const t=A.n[e]().filter((e=>A.n.getAdUnitCodes().includes(e.adUnitCode))),n=A.n.getLastAuctionId();return t.map((e=>e.adUnitCode)).filter(i.uniques).map((e=>t.filter((t=>t.auctionId===n&&t.adUnitCode===e)))).filter((e=>e&&e[0]&&e[0].adUnitCode)).map((e=>({[e[0].adUnitCode]:{bids:e}}))).reduce(((e,t)=>Object.assign(e,t)),{})}$.getAdserverTargetingForAdUnitCodeStr=function(e){if((0,i.logInfo)("Invoking pbjs.getAdserverTargetingForAdUnitCodeStr",arguments),e){var t=$.getAdserverTargetingForAdUnitCode(e);return(0,i.transformAdServerTargetingObj)(t)}(0,i.logMessage)("Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode")},$.getHighestUnusedBidResponseForAdUnitCode=function(e){if(e){const t=A.n.getAllBidsForAdUnitCode(e).filter(I.Yl);return t.length?t.reduce(_.Vk):{}}(0,i.logMessage)("Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode")},$.getAdserverTargetingForAdUnitCode=function(e){return $.getAdserverTargeting(e)[e]},$.getAdserverTargeting=function(e){return(0,i.logInfo)("Invoking pbjs.getAdserverTargeting",arguments),I.iS.getAllTargeting(e)},$.getConsentMetadata=function(){return(0,i.logInfo)("Invoking pbjs.getConsentMetadata"),D.SL.getConsentMeta()},$.getNoBids=function(){return(0,i.logInfo)("Invoking pbjs.getNoBids",arguments),J("getNoBids")},$.getNoBidsForAdUnitCode=function(e){return{bids:A.n.getNoBids().filter((t=>t.adUnitCode===e))}},$.getBidResponses=function(){return(0,i.logInfo)("Invoking pbjs.getBidResponses",arguments),J("getBidsReceived")},$.getBidResponsesForAdUnitCode=function(e){return{bids:A.n.getBidsReceived().filter((t=>t.adUnitCode===e))}},$.setTargetingForGPTAsync=function(e,t){(0,i.logInfo)("Invoking pbjs.setTargetingForGPTAsync",arguments),(0,i.isGptPubadsDefined)()?I.iS.setTargetingForGPT(e,t):(0,i.logError)("window.googletag is not defined on the page")},$.setTargetingForAst=function(e){(0,i.logInfo)("Invoking pbjs.setTargetingForAn",arguments),I.iS.isApntagDefined()?(I.iS.setTargetingForAst(e),B.emit(W,I.iS.getAllTargeting())):(0,i.logError)("window.apntag is not defined on the page")},$.renderAd=(0,T.A_)("async",(function(e,t,n){(0,i.logInfo)("Invoking pbjs.renderAd",arguments),(0,i.logMessage)("Calling renderAd with adId :"+t),(0,l.BS)(e,t,n)})),$.removeAdUnit=function(e){if((0,i.logInfo)("Invoking pbjs.removeAdUnit",arguments),!e)return void($.adUnits=[]);let t;t=(0,i.isArray)(e)?e:[e],t.forEach((e=>{for(let t=$.adUnits.length-1;t>=0;t--)$.adUnits[t].code===e&&$.adUnits.splice(t,1)}))},$.requestBids=function(){const e=(0,T.A_)("async",(function(){let{bidsBackHandler:e,timeout:t,adUnits:n,adUnitCodes:r,labels:o,auctionId:s,ttlBuffer:a,ortb2:d,metrics:l,defer:u}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};B.emit(x);const g=t||E.$W.getConfig("bidderTimeout");(0,i.logInfo)("Invoking pbjs.requestBids",arguments),r&&r.length?n=n.filter((e=>(0,c.mK)(r,e.code))):r=n&&n.map((e=>e.code));const f={global:(0,i.mergeDeep)({},E.$W.getAnyConfig("ortb2")||{},d||{}),bidder:Object.fromEntries(Object.entries(E.$W.getBidderConfig()).map((e=>{let[t,n]=e;return[t,n.ortb2]})).filter((e=>{let[t,n]=e;return null!=n})))};return(0,U.w)(R.k.resolve(f.global)).then((t=>(f.global=t,Y({bidsBackHandler:e,timeout:g,adUnits:n,adUnitCodes:r,labels:o,auctionId:s,ttlBuffer:a,ortb2Fragments:f,metrics:l,defer:u}))))}),"requestBids");return(0,T.Y6)(e,(function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.adUnits||$.adUnits;return t.adUnits=(0,i.isArray)(n)?n.slice():[n],t.metrics=(0,k.K7)(),t.metrics.checkpoint("requestBids"),t.defer=(0,R.v)({promiseFactory:e=>new Promise(e)}),e.call(this,t),t.defer.promise}))}();const Y=(0,T.A_)("async",(function(){let{bidsBackHandler:e,timeout:t,adUnits:n,ttlBuffer:r,adUnitCodes:o,labels:a,auctionId:d,ortb2Fragments:l,metrics:u,defer:g}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const f=(0,S.pX)(E.$W.getConfig("s2sConfig")||[]);function p(t,n,r){if("function"==typeof e)try{e(t,n,r)}catch(e){(0,i.logError)("Error executing bidsBackHandler",null,e)}g.resolve({bids:t,timedOut:n,auctionId:r})}!function(e){e.forEach((e=>(0,j.V0)(e)))}(n),n=(0,k.BO)(u).measureTime("requestBids.validate",(()=>K(n)));const m={};if(n.forEach((e=>{const t=Object.keys(e.mediaTypes||{banner:"banner"}),n=e.bids.map((e=>e.bidder)),o=S.Ay.bidderRegistry,s=n.filter((e=>!f.has(e)));e.adUnitId=(0,i.generateUUID)();const a=e.ortb2Imp?.ext?.tid;a&&(m.hasOwnProperty(e.code)?(0,i.logWarn)(`Multiple distinct ortb2Imp.ext.tid were provided for twin ad units '${e.code}'`):m[e.code]=a),null==r||e.hasOwnProperty("ttlBuffer")||(e.ttlBuffer=r),s.forEach((n=>{const r=o[n],s=r&&r.getSpec&&r.getSpec(),a=s&&s.supportedMediaTypes||["banner"];t.some((e=>(0,c.mK)(a,e)))||((0,i.logWarn)((0,i.unsupportedBidderMessage)(e,n)),e.bids=e.bids.filter((e=>e.bidder!==n)))}))})),n&&0!==n.length){n.forEach((e=>{const t=e.ortb2Imp?.ext?.tid||m[e.code]||(0,i.generateUUID)();m.hasOwnProperty(e.code)||(m[e.code]=t),e.transactionId=t,(0,s.J)(e,"ortb2Imp.ext.tid",t)}));const e=A.n.createAuction({adUnits:n,adUnitCodes:o,callback:p,cbTimeout:t,labels:a,auctionId:d,ortb2Fragments:l,metrics:u});let r=n.length;r>15&&(0,i.logInfo)(`Current auction ${e.getAuctionId()} contains ${r} adUnits.`,n),o.forEach((t=>I.iS.setLatestAuctionForAdUnit(t,e.getAuctionId()))),e.callBids()}else(0,i.logMessage)("No adUnits configured. No bids requested."),p()}),"startAuction");$.requestBids.before((function(e,t){function n(e){for(var t;t=e.shift();)t()}n(O.s0),n(Q),e.call(this,t)}),49),$.addAdUnits=function(e){(0,i.logInfo)("Invoking pbjs.addAdUnits",arguments),$.adUnits.push.apply($.adUnits,(0,i.isArray)(e)?e:[e]),B.emit(q)},$.onEvent=function(e,t,n){(0,i.logInfo)("Invoking pbjs.onEvent",arguments),(0,i.isFn)(t)?!n||P[e].call(null,n)?B.on(e,t,n):(0,i.logError)('The id provided is not valid for event "'+e+'" and no handler was set.'):(0,i.logError)('The event handler provided is not a function and was not set on event "'+e+'".')},$.offEvent=function(e,t,n){(0,i.logInfo)("Invoking pbjs.offEvent",arguments),n&&!P[e].call(null,n)||B.off(e,t,n)},$.getEvents=function(){return(0,i.logInfo)("Invoking pbjs.getEvents"),B.getEvents()},$.registerBidAdapter=function(e,t){(0,i.logInfo)("Invoking pbjs.registerBidAdapter",arguments);try{S.Ay.registerBidAdapter(e(),t)}catch(e){(0,i.logError)("Error registering bidder adapter : "+e.message)}},$.registerAnalyticsAdapter=function(e){(0,i.logInfo)("Invoking pbjs.registerAnalyticsAdapter",arguments);try{S.Ay.registerAnalyticsAdapter(e)}catch(e){(0,i.logError)("Error registering analytics adapter : "+e.message)}},$.createBid=function(e){return(0,i.logInfo)("Invoking pbjs.createBid",arguments),(0,C.O)(e)};const Q=[],X=(0,T.A_)("async",(function(e){e&&!(0,i.isEmpty)(e)?((0,i.logInfo)("Invoking pbjs.enableAnalytics for: ",e),S.Ay.enableAnalytics(e)):(0,i.logError)("pbjs.enableAnalytics should be called with option {}")}),"enableAnalyticsCb");$.enableAnalytics=function(e){Q.push(X.bind(this,e))},$.aliasBidder=function(e,t,n){(0,i.logInfo)("Invoking pbjs.aliasBidder",arguments),e&&t?S.Ay.aliasBidAdapter(e,t,n):(0,i.logError)("bidderCode and alias must be passed as arguments","pbjs.aliasBidder")},$.aliasRegistry=S.Ay.aliasRegistry,E.$W.getConfig("aliasRegistry",(e=>{"private"===e.aliasRegistry&&delete $.aliasRegistry})),$.getAllWinningBids=function(){return A.n.getAllWinningBids()},$.getAllPrebidWinningBids=function(){return A.n.getBidsReceived().filter((e=>e.status===d.tl.BID_TARGETING_SET))},$.getHighestCpmBids=function(e){return I.iS.getWinningBids(e)},$.clearAllAuctions=function(){A.n.clearAllAuctions()},$.markWinningBidAsUsed=function(e){const t=Z(e,"Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function.");t.length>0&&A.n.addWinningBid(t[0])};const Z=(e,t)=>{let n=[];return e.adUnitCode&&e.adId?n=A.n.getBidsReceived().filter((t=>t.adId===e.adId&&t.adUnitCode===e.adUnitCode)):e.adUnitCode?n=I.iS.getWinningBids(e.adUnitCode):e.adId?n=A.n.getBidsReceived().filter((t=>t.adId===e.adId)):(0,i.logWarn)(t),n};function ee(e){e.forEach((function(e){if(void 0===e.called)try{e.call(),e.called=!0}catch(e){(0,i.logError)("Error processing command :","prebid.js",e)}}))}$.getConfig=E.$W.getAnyConfig,$.readConfig=E.$W.readAnyConfig,$.mergeConfig=E.$W.mergeConfig,$.mergeBidderConfig=E.$W.mergeBidderConfig,$.setConfig=E.$W.setConfig,$.setBidderConfig=E.$W.setBidderConfig,$.que.push((()=>b())),$.cmd.push=function(e){if("function"==typeof e)try{e.call()}catch(e){(0,i.logError)("Error processing command :",e.message,e.stack)}else(0,i.logError)("Commands written into pbjs.cmd.push must be wrapped in a function")},$.que.push=$.cmd.push,$.processQueue=function(){(0,l.XO)(),T.A_.ready(),ee($.que),ee($.cmd)},$.triggerBilling=e=>{const t=Z(e,"Improper use of triggerBilling. It requires a bid with at least an adUnitCode or an adId to function."),n=t.find((t=>t.requestId===e.requestId))||t[0];if(t.length>0&&n)try{S.Ay.callBidBillableBidder(n)}catch(e){(0,i.logError)("Error when triggering billing :",e)}else(0,i.logWarn)("The bid provided to triggerBilling did not match any bids received.")}},7873:(e,t,n)=>{n.d(t,{E:()=>s,m:()=>o});const r=window,i=r.pbjs=r.pbjs||{};function o(){return i}function s(e){i.installedModules.push(e)}i.cmd=i.cmd||[],i.que=i.que||[],r===window&&(r._pbjsGlobals=r._pbjsGlobals||[],r._pbjsGlobals.push("pbjs"))},27934:(e,t,n)=>{n.d(t,{EN:()=>d,gR:()=>s});var r=n(43272),i=n(91069);function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;if(!e)return e;if(/\w+:\/\//.exec(e))return e;let n=t.location.protocol;try{n=t.top.location.protocol}catch(e){}return/^\/\//.exec(e)?n+e:`${n}//${e}`}function s(e){let{noLeadingWww:t=!1,noPort:n=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{e=new URL(o(e))}catch(e){return}return e=n?e.hostname:e.host,t&&e.startsWith("www.")&&(e=e.substring(4)),e}function a(e){try{const t=e.querySelector("link[rel='canonical']");if(null!==t)return t.href}catch(e){}return null}const d=function(e){let t,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;return i.top!==i?e:function(){const o=a(i.document),s=i.location.href;return t===o&&s===n||(t=o,n=s,r=e()),r}}((c=window,function(){const e=[],t=function(e){try{if(!e.location.ancestorOrigins)return;return e.location.ancestorOrigins}catch(e){}}(c),n=r.$W.getConfig("maxNestedIframes");let d,l,u,g,f=!1,p=0,m=!1,h=!1,b=!1;do{const n=d,r=h;let o,s=!1,g=null;h=!1,d=d?d.parent:c;try{o=d.location.href||null}catch(e){s=!0}if(s)if(r){const e=n.context;try{g=e.sourceUrl,l=g,b=!0,m=!0,d===c.top&&(f=!0),e.canonicalUrl&&(u=e.canonicalUrl)}catch(e){}}else{(0,i.logWarn)("Trying to access cross domain iframe. Continuing without referrer and location");try{const e=n.document.referrer;e&&(g=e,d===c.top&&(f=!0))}catch(e){}!g&&t&&t[p-1]&&(g=t[p-1],d===c.top&&(b=!0)),g&&!m&&(l=g)}else{if(o&&(g=o,l=g,m=!1,d===c.top)){f=!0;const e=a(d.document);e&&(u=e)}d.context&&d.context.sourceUrl&&(h=!0)}e.push(g),p++}while(d!==c.top&&p<n);e.reverse();try{g=c.top.document.referrer}catch(e){}const y=f||b?l:null,v=r.$W.getConfig("pageUrl")||u||null;let E=r.$W.getConfig("pageUrl")||y||o(v,c);return y&&y.indexOf("?")>-1&&-1===E.indexOf("?")&&(E=`${E}${y.substring(y.indexOf("?"))}`),{reachedTop:f,isAmp:m,numIframes:p-1,stack:e,topmostLocation:l||null,location:y,canonicalUrl:v,page:E,domain:s(E)||null,ref:g||null,legacy:{reachedTop:f,isAmp:m,numIframes:p-1,stack:e,referer:l||null,canonicalUrl:v}}}));var c},12938:(e,t,n)=>{n.d(t,{CK:()=>b,X0:()=>f,qk:()=>g,s0:()=>p,vM:()=>h});var r=n(91069),i=n(12693),o=n(45569),s=n(95139),a=n(2604),d=n(76811),c=n(43272),l=n(11445),u=n(83441);const g="html5",f="cookie";let p=[];function m(){let{moduleName:e,moduleType:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{isAllowed:n=s.io}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};function i(r,i){let s=e;const g=c.$W.getCurrentBidder();g&&t===o.tW&&l.Ay.aliasRegistry[g]===e&&(s=g);return r({valid:n(d.Ue,(0,u.s)(t,s,{[a.Zw]:i}))})}function m(e,t,n){if(!n||"function"!=typeof n)return i(e,t);p.push((function(){let r=i(e,t);n(r)}))}function h(e){const t=e.charAt(0).toUpperCase()+e.substring(1),n=()=>window[e],i=function(t){return m((function(t){if(t&&t.valid)try{return!!n()}catch(t){(0,r.logError)(`${e} api disabled`)}return!1}),g,t)};return{[`has${t}`]:i,[`${e}IsEnabled`]:e=>m((function(e){if(e&&e.valid)try{return n().setItem("prebid.cookieTest","1"),"1"===n().getItem("prebid.cookieTest")}catch(e){}finally{try{n().removeItem("prebid.cookieTest")}catch(e){}}return!1}),g,e),[`setDataIn${t}`]:(e,t,r)=>m((function(r){r&&r.valid&&i()&&n().setItem(e,t)}),g,r),[`getDataFrom${t}`]:(e,t)=>m((function(t){return t&&t.valid&&i()?n().getItem(e):null}),g,t),[`removeDataFrom${t}`]:(e,t)=>m((function(t){t&&t.valid&&i()&&n().removeItem(e)}),g,t)}}return{setCookie:function(e,t,n,r,i,o){return m((function(o){if(o&&o.valid){const o=i&&""!==i?` ;domain=${encodeURIComponent(i)}`:"",s=n&&""!==n?` ;expires=${n}`:"",a=null!=r&&"none"==r.toLowerCase()?"; Secure":"";document.cookie=`${e}=${encodeURIComponent(t)}${s}; path=/${o}${r?`; SameSite=${r}`:""}${a}`}}),f,o)},getCookie:function(e,t){return m((function(t){if(t&&t.valid){let t=window.document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]*)\\s*(;|$)");return t?decodeURIComponent(t[2]):null}return null}),f,t)},cookiesAreEnabled:function(e){return m((function(e){return!(!e||!e.valid)&&(0,r.checkCookieSupport)()}),f,e)},...h("localStorage"),...h("sessionStorage"),findSimilarCookies:function(e,t){return m((function(t){if(t&&t.valid){const t=[];if((0,r.hasDeviceAccess)()){const n=document.cookie.split(";");for(;n.length;){const r=n.pop();let i=r.indexOf("=");i=i<0?r.length:i;decodeURIComponent(r.slice(0,i).replace(/^\s+/,"")).indexOf(e)>=0&&t.push(decodeURIComponent(r.slice(i+1)))}}return t}}),f,t)}}}function h(){let{moduleType:e,moduleName:t,bidderCode:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};function r(){throw new Error("Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName")}return n?((e&&e!==o.tW||t)&&r(),e=o.tW,t=n):t&&e||r(),m({moduleType:e,moduleName:t})}function b(e){return m({moduleName:e,moduleType:o.tp})}(0,s.qB)(d.Ue,"deviceAccess config",(function(){if(!(0,r.hasDeviceAccess)())return{allow:!1}})),(0,s.qB)(d.Ue,"bidderSettings.*.storageAllowed",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.u;if(e[a.Dk]!==o.tW)return;let n=t.get(e[a.q7],"storageAllowed");if(n&&!0!==n){const t=e[a.Zw];n=Array.isArray(n)?n.some((e=>e===t)):n===t}else n=!!n;return n?void 0:{allow:n}}))},97779:(e,t,n)=>{n.d(t,{Jp:()=>w,ME:()=>T,Yl:()=>I,iS:()=>O,m2:()=>C});var r=n(67314),i=n(27863),o=n(12693),s=n(43272),a=n(78969),d=n(75023),c=n(16833),l=n(71371),u=n(12449),g=n(15901),f=n(91069),p=n(70433),m=n(12713),h=[];const b="targetingControls.allowTargetingKeys",y="targetingControls.addTargetingKeys",v=`Only one of "${b}" or "${y}" can be set`,E=Object.keys(a.xS).map((e=>a.xS[e]));let A={isActualBid:e=>e.getStatusCode()===a.XQ.GOOD,isBidNotExpired:e=>e.responseTimestamp+1e3*(0,i.L)(e)>(0,f.timestamp)(),isUnusedBid:e=>e&&(e.status&&!(0,g.mK)([a.tl.RENDERED],e.status)||!e.status)};function I(e){return!Object.values(A).some((t=>!t(e)))}const T=(0,c.A_)("sync",(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!(arguments.length>3&&void 0!==arguments[3]&&arguments[3])){const r=[],i=s.$W.getConfig("sendBidsControl.dealPrioritization");let o=(0,f.groupBy)(e,"adUnitCode");return Object.keys(o).forEach((e=>{let s=[],a=(0,f.groupBy)(o[e],"bidderCode");Object.keys(a).forEach((e=>s.push(a[e].reduce(t)))),n>0?(s=i?s.sort(w(!0)):s.sort(((e,t)=>t.cpm-e.cpm)),r.push(...s.slice(0,n))):r.push(...s)})),r}return e}));function w(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return function(t,n){return void 0!==t.adserverTargeting.hb_deal&&void 0===n.adserverTargeting.hb_deal?-1:void 0===t.adserverTargeting.hb_deal&&void 0!==n.adserverTargeting.hb_deal?1:e?n.cpm-t.cpm:n.adserverTargeting.hb_pb-t.adserverTargeting.hb_pb}}function C(e,t){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>window.googletag.pubads().getSlots())().reduce(((e,n)=>{const r=(0,f.isFn)(t)&&t(n);return Object.keys(e).filter((0,f.isFn)(r)?r:(0,f.isAdUnitCodeMatchingSlot)(n)).forEach((t=>e[t].push(n))),e}),Object.fromEntries(e.map((e=>[e,[]]))))}const O=function(e){let t={},n={};function r(e,t){return e.adserverTargeting&&t&&((0,f.isArray)(t)&&(0,g.mK)(t,e.adUnitCode)||"string"==typeof t&&e.adUnitCode===t)}function i(t){return"string"==typeof t?[t]:(0,f.isArray)(t)?t:e.getAdUnitCodes()||[]}function A(){let t=e.getBidsReceived();if(s.$W.getConfig("useBidCache")){const e=s.$W.getConfig("bidCacheFilterFunction");"function"==typeof e&&(t=t.filter((t=>n[t.adUnitCode]===t.auctionId||!!e(t))))}else t=t.filter((e=>n[e.adUnitCode]===e.auctionId));return t=t.filter((e=>(0,p.A)(e,"video.context")!==l.LM)).filter(I),t.forEach((e=>(e.latestTargetedAuctionId=n[e.adUnitCode],e))),T(t,m.Bq)}function O(e,n){let r=t.getWinningBids(e,n),i=S();return r=r.map((e=>({[e.adUnitCode]:Object.keys(e.adserverTargeting).filter((t=>void 0===e.sendStandardTargeting||e.sendStandardTargeting||-1===i.indexOf(t))).reduce(((t,n)=>{const r=[e.adserverTargeting[n]],i={[n.substring(0,20)]:r};if(n===a.xS.DEAL){const o=`${n}_${e.bidderCode}`.substring(0,20),s={[o]:r};return[...t,i,s]}return[...t,i]}),[])}))),r}function S(){return e.getStandardBidderAdServerTargeting().map((e=>e.key)).concat(E).filter(f.uniques)}function B(e,t,n,r){return Object.keys(t.adserverTargeting).filter(k()).forEach((n=>{e.length&&e.filter(function(e){return function(n){return n.adUnitCode===t.adUnitCode&&n.adserverTargeting[e]}}(n)).forEach(function(e){return function(n){(0,f.isArray)(n.adserverTargeting[e])||(n.adserverTargeting[e]=[n.adserverTargeting[e]]),n.adserverTargeting[e]=n.adserverTargeting[e].concat(t.adserverTargeting[e]).filter(f.uniques),delete t.adserverTargeting[e]}}(n))})),e.push(t),e}function k(){let e=S();return e=e.concat(u.Nh),function(t){return-1===e.indexOf(t)}}function R(e){return{[e.adUnitCode]:Object.keys(e.adserverTargeting).filter(k()).map((t=>({[t.substring(0,20)]:[e.adserverTargeting[t]]})))}}function U(e,t){return t.map((t=>({[`${t}_${e.bidderCode}`.substring(0,20)]:[e.adserverTargeting[t]]})))}return t.setLatestAuctionForAdUnit=function(e,t){n[e]=t},t.resetPresetTargeting=function(e,t){if((0,f.isGptPubadsDefined)()){const n=i(e);let r=h.reduce(((e,t)=>(e[t]=null,e)),{});Object.values(C(n,t)).forEach((e=>{e.forEach((e=>e.updateTargetingFromMap(r)))}))}},t.resetPresetTargetingAST=function(e){i(e).forEach((function(e){const t=window.apntag.getTag(e);if(t&&t.keywords){const n=Object.keys(t.keywords),r={};n.forEach((e=>{(0,g.mK)(h,e.toLowerCase())||(r[e]=t.keywords[e])})),window.apntag.modifyTag(e,{keywords:r})}}))},t.getAllTargeting=function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:A();const o=i(t);var d=O(o,n).concat(function(e,t){return t.filter((t=>(0,g.mK)(e,t.adUnitCode))).map((e=>Object.assign({},e))).reduce(B,[]).map(R).filter((e=>e))}(o,n)).concat(s.$W.getConfig("enableSendAllBids")?function(e,t){const n=E.concat(u.Nh),i=s.$W.getConfig("sendBidsControl.bidLimit"),o=T(t,m.Vk,i),d=s.$W.getConfig("targetingControls.allowSendAllBidsTargetingKeys"),c=d?d.map((e=>a.xS[e])):n;return o.map((t=>{if(r(t,e))return{[t.adUnitCode]:U(t,n.filter((e=>void 0!==t.adserverTargeting[e]&&-1!==c.indexOf(e))))}})).filter((e=>e))}(o,n):function(e,t){if(!0===s.$W.getConfig("targetingControls.alwaysIncludeDeals")){const n=E.concat(u.Nh);return T(t,m.Vk).map((t=>{if(t.dealId&&r(t,e))return{[t.adUnitCode]:U(t,n.filter((e=>void 0!==t.adserverTargeting[e])))}})).filter((e=>e))}return[]}(o,n)).concat(function(t){function n(e){return(0,p.A)(e,a.iD.ADSERVER_TARGETING)}function r(e){const t=n(e);return Object.keys(t).map((function(e){return(0,f.isStr)(t[e])&&(t[e]=t[e].split(",").map((e=>e.trim()))),(0,f.isArray)(t[e])||(t[e]=[t[e]]),{[e]:t[e]}}))}return e.getAdUnits().filter((e=>(0,g.mK)(t,e.code)&&n(e))).map((e=>({[e.code]:r(e)})))}(o));d.map((e=>{Object.keys(e).map((t=>{e[t].map((e=>{-1===h.indexOf(Object.keys(e)[0])&&(h=Object.keys(e).concat(h))}))}))}));const c=Object.keys(Object.assign({},a.Zh,a.x5));let l=s.$W.getConfig(b);const I=s.$W.getConfig(y);if(null!=I&&null!=l)throw new Error(v);l=null!=I?c.concat(I):l||c,Array.isArray(l)&&l.length>0&&(d=function(e,t){const n=Object.assign({},a.xS,a.x5),r=Object.keys(n),i={};(0,f.logInfo)(`allowTargetingKeys - allowed keys [ ${t.map((e=>n[e])).join(", ")} ]`),e.map((e=>{const o=Object.keys(e)[0],s=e[o].filter((e=>{const o=Object.keys(e)[0],s=0===r.filter((e=>0===o.indexOf(n[e]))).length||(0,g.I6)(t,(e=>{const t=n[e];return 0===o.indexOf(t)}));return i[o]=!s,s}));e[o]=s}));const o=Object.keys(i).filter((e=>i[e]));return(0,f.logInfo)(`allowTargetingKeys - removed keys [ ${o.join(", ")} ]`),e.filter((e=>e[Object.keys(e)[0]].length>0))}(d,l)),d=function(e){let t=e.map((e=>({[Object.keys(e)[0]]:e[Object.keys(e)[0]].map((e=>({[Object.keys(e)[0]]:e[Object.keys(e)[0]].join(",")}))).reduce(((e,t)=>Object.assign(t,e)),{})}))).reduce((function(e,t){var n=Object.keys(t)[0];return e[n]=Object.assign({},e[n],t[n]),e}),{});return t}(d);const C=s.$W.getConfig("targetingControls.auctionKeyMaxChars");return C&&((0,f.logInfo)(`Detected 'targetingControls.auctionKeyMaxChars' was active for this auction; set with a limit of ${C} characters.  Running checks on auction keys...`),d=function(e,t){let n=(0,f.deepClone)(e),r=Object.keys(n).map((e=>({adUnitCode:e,adserverTargeting:n[e]}))).sort(w());return r.reduce((function(e,r,i,o){let s=(a=r.adserverTargeting,Object.keys(a).reduce((function(e,t){return e+`${t}%3d${encodeURIComponent(a[t])}%26`}),""));var a;i+1===o.length&&(s=s.slice(0,-3));let d=r.adUnitCode,c=s.length;return c<=t?(t-=c,(0,f.logInfo)(`AdUnit '${d}' auction keys comprised of ${c} characters.  Deducted from running threshold; new limit is ${t}`,n[d]),e[d]=n[d]):(0,f.logWarn)(`The following keys for adUnitCode '${d}' exceeded the current limit of the 'auctionKeyMaxChars' setting.\nThe key-set size was ${c}, the current allotted amount was ${t}.\n`,n[d]),i+1===o.length&&0===Object.keys(e).length&&(0,f.logError)("No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars).  Please review setup and consider adjusting."),e}),{})}(d,C)),o.forEach((e=>{d[e]||(d[e]={})})),d},s.$W.getConfig("targetingControls",(function(e){null!=(0,p.A)(e,b)&&null!=(0,p.A)(e,y)&&(0,f.logError)(v)})),t.setTargetingForGPT=(0,c.A_)("sync",(function(n,r){let i=t.getAllTargeting(n),o=Object.fromEntries(h.map((e=>[e,null])));Object.entries(C(Object.keys(i),r)).forEach((e=>{let[t,n]=e;n.forEach((e=>{Object.keys(i[t]).forEach((e=>{let n=i[t][e];"string"==typeof n&&-1!==n.indexOf(",")&&(n=n.split(",")),i[t][e]=n})),(0,f.logMessage)(`Attempting to set targeting-map for slot: ${e.getSlotElementId()} with targeting-map:`,i[t]),e.updateTargetingFromMap(Object.assign({},o,i[t]))}))})),Object.keys(i).forEach((t=>{Object.keys(i[t]).forEach((n=>{"hb_adid"===n&&e.setStatusForBids(i[t][n],a.tl.BID_TARGETING_SET)}))})),t.targetingDone(i),d.emit(a.qY.SET_TARGETING,i)}),"setTargetingForGPT"),t.targetingDone=(0,c.A_)("sync",(function(e){return e}),"targetingDone"),t.getWinningBids=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:A();const n=i(e);return t.filter((e=>(0,g.mK)(n,e.adUnitCode))).filter((e=>!0===o.u.get(e.bidderCode,"allowZeroCpmBids")?e.cpm>=0:e.cpm>0)).map((e=>e.adUnitCode)).filter(f.uniques).map((e=>t.filter((t=>t.adUnitCode===e?t:null)).reduce(m.Vk)))},t.setTargetingForAst=function(e){let n=t.getAllTargeting(e);try{t.resetPresetTargetingAST(e)}catch(e){(0,f.logError)("unable to reset targeting for AST"+e)}Object.keys(n).forEach((e=>Object.keys(n[e]).forEach((t=>{if((0,f.logMessage)(`Attempting to set targeting for targetId: ${e} key: ${t} value: ${n[e][t]}`),(0,f.isStr)(n[e][t])||(0,f.isArray)(n[e][t])){let r={},i=/pt[0-9]/;t.search(i)<0?r[t.toUpperCase()]=n[e][t]:r[t]=n[e][t],window.apntag.setKeywords(e,r,{overrideKeyValue:!0})}}))))},t.isApntagDefined=function(){if(window.apntag&&(0,f.isFn)(window.apntag.setKeywords))return!0},t}(r.n)},38230:(e,t,n)=>{n.d(t,{qh:()=>g,zt:()=>p});var r=n(91069),i=n(43272),o=n(15901),s=n(12938),a=n(95139),d=n(76811),c=n(2604),l=n(45569),u=n(83441);const g={syncEnabled:!0,filterSettings:{image:{bidders:"*",filter:"include"}},syncsPerBidder:5,syncDelay:3e3,auctionDelay:500};i.$W.setDefaults({userSync:(0,r.deepClone)(g)});const f=(0,s.CK)("usersync");const p=function(e){let t={},n={image:[],iframe:[]},s=new Set,a={},g={image:!0,iframe:!1},f=e.config;function p(){if(f.syncEnabled&&e.browserSupportsCookies){try{!function(){if(!g.iframe)return;m(n.iframe,(e=>{let[t,i]=e;(0,r.logMessage)(`Invoking iframe user sync for bidder: ${t}`),(0,r.insertUserSyncIframe)(i),function(e,t){e.image=e.image.filter((e=>e[0]!==t))}(n,t)}))}(),function(){if(!g.image)return;m(n.image,(e=>{let[t,n]=e;(0,r.logMessage)(`Invoking image pixel user sync for bidder: ${t}`),(0,r.triggerPixel)(n)}))}()}catch(e){return(0,r.logError)("Error firing user syncs",e)}n={image:[],iframe:[]}}}function m(e,t){(0,r.shuffle)(e).forEach(t)}function h(e,t){let n=f.filterSettings;if(function(e,t){if(e.all&&e[t])return(0,r.logWarn)(`Detected presence of the "filterSettings.all" and "filterSettings.${t}" in userSync config.  You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.`),!1;let n=e.all?e.all:e[t],i=e.all?"all":t;if(!n)return!1;let o=n.filter,s=n.bidders;if(o&&"include"!==o&&"exclude"!==o)return(0,r.logWarn)(`UserSync "filterSettings.${i}.filter" setting '${o}' is not a valid option; use either 'include' or 'exclude'.`),!1;if("*"!==s&&!(Array.isArray(s)&&s.length>0&&s.every((e=>(0,r.isStr)(e)&&"*"!==e))))return(0,r.logWarn)(`Detected an invalid setup in userSync "filterSettings.${i}.bidders"; use either '*' (to represent all bidders) or an array of bidders.`),!1;return!0}(n,e)){g[e]=!0;let r=n.all?n.all:n[e],i="*"===r.bidders?[t]:r.bidders;const s={include:(e,t)=>!(0,o.mK)(e,t),exclude:(e,t)=>(0,o.mK)(e,t)};return s[r.filter||"include"](i,t)}return!g[e]}return i.$W.getConfig("userSync",(e=>{if(e.userSync){let t=e.userSync.filterSettings;(0,r.isPlainObject)(t)&&(t.image||t.all||(e.userSync.filterSettings.image={bidders:"*",filter:"include"}))}f=Object.assign(f,e.userSync)})),e.regRule(d.Ml,"userSync config",(e=>{if(!f.syncEnabled)return{allow:!1,reason:"syncs are disabled"};if(e[c.Dk]===l.tW){const n=e[c.bt],r=e[c.iK];if(!t.canBidderRegisterSync(n,r))return{allow:!1,reason:`${n} syncs are not enabled for ${r}`}}})),t.registerSync=(t,i,o)=>s.has(i)?(0,r.logMessage)(`already fired syncs for "${i}", ignoring registerSync call`):f.syncEnabled&&(0,r.isArray)(n[t])?i?0!==f.syncsPerBidder&&Number(a[i])>=f.syncsPerBidder?(0,r.logWarn)(`Number of user syncs exceeded for "${i}"`):void(e.isAllowed(d.Ml,(0,u.s)(l.tW,i,{[c.bt]:t,[c.e3]:o}))&&(n[t].push([i,o]),a=function(e,t){return e[t]?e[t]+=1:e[t]=1,e}(a,i))):(0,r.logWarn)("Bidder is required for registering sync"):(0,r.logWarn)(`User sync type "${t}" not supported`),t.bidderDone=s.add.bind(s),t.syncUsers=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(e)return setTimeout(p,Number(e));p()},t.triggerUserSyncs=()=>{f.enableOverride&&t.syncUsers()},t.canBidderRegisterSync=(e,t)=>!f.filterSettings||!h(e,t),t}(Object.defineProperties({config:i.$W.getConfig("userSync"),isAllowed:a.io,regRule:a.qB},{browserSupportsCookies:{get:function(){return!(0,r.isSafariBrowser)()&&f.cookiesAreEnabled()}}}))},91069:(e,t,n)=>{n.r(t),n.d(t,{_each:()=>fe,_map:()=>me,_setEventEmitter:()=>w,binarySearch:()=>yt,buildUrl:()=>dt,callBurl:()=>ve,canAccessWindowTop:()=>H,checkCookieSupport:()=>ze,cleanObj:()=>nt,compareCodeAndSlot:()=>Xe,contains:()=>pe,convertObjectToArray:()=>ht,createIframe:()=>te,createInvisibleIframe:()=>ne,createTrackPixelHtml:()=>Ie,createTrackPixelIframeHtml:()=>we,cyrb53Hash:()=>ut,debugTurnedOn:()=>ee,deepAccess:()=>c.A,deepClone:()=>_e,deepEqual:()=>ct,deepSetValue:()=>l.J,delayExecution:()=>He,encodeMacroURI:()=>Te,extractDomainFromHost:()=>At,flatten:()=>Oe,formatQS:()=>st,generateUUID:()=>D,getBidIdParameter:()=>_,getBidRequest:()=>Se,getBidderCodes:()=>ke,getDNT:()=>Qe,getDefinedParams:()=>Ke,getDomLoadingDuration:()=>Le,getParameterByName:()=>re,getPerformanceNow:()=>Ge,getPrebidInternal:()=>B,getSafeframeGeometry:()=>Ne,getUniqueIdentifierStr:()=>U,getUnixTimestampFromNow:()=>mt,getUserConfiguredParams:()=>Ye,getValue:()=>Be,getWindowLocation:()=>z,getWindowSelf:()=>F,getWindowTop:()=>L,groupBy:()=>Ve,hasConsoleLogger:()=>Z,hasDeviceAccess:()=>Fe,hasNonSerializableProperty:()=>vt,inIframe:()=>je,insertElement:()=>he,insertHtmlIntoIframe:()=>Ee,insertUserSyncIframe:()=>Ae,internal:()=>O,isA:()=>ie,isAdUnitCodeMatchingSlot:()=>Ze,isApnGetTagDefined:()=>Ue,isArray:()=>ae,isArrayOfNums:()=>it,isBoolean:()=>le,isEmpty:()=>ue,isEmptyStr:()=>ge,isFn:()=>oe,isGptPubadsDefined:()=>Re,isInteger:()=>tt,isNumber:()=>de,isPlainObject:()=>ce,isSafariBrowser:()=>qe,isSafeFrameWindow:()=>$e,isStr:()=>se,isValidMediaTypes:()=>Je,logError:()=>Y,logInfo:()=>K,logMessage:()=>V,logWarn:()=>J,memoize:()=>pt,mergeDeep:()=>lt,parseGPTSingleSizeArray:()=>W,parseGPTSingleSizeArrayToRtbSize:()=>M,parseQS:()=>ot,parseQueryStringParameters:()=>j,parseSizesInput:()=>q,parseUrl:()=>at,pick:()=>rt,prefixLog:()=>Q,replaceAuctionPrice:()=>We,replaceClickThrough:()=>Pe,replaceMacros:()=>xe,safeJSONEncode:()=>ft,safeJSONParse:()=>gt,setOnAny:()=>Et,setScriptAttributes:()=>bt,shuffle:()=>De,sizeTupleToRtbSize:()=>P,sizeTupleToSizeString:()=>x,sizesToSizeTuples:()=>N,timestamp:()=>Me,transformAdServerTargetingObj:()=>$,triggerNurlWithCpm:()=>It,triggerPixel:()=>ye,uniques:()=>Ce,unsupportedBidderMessage:()=>et,waitForElementToLoad:()=>be});var r=n(43272),i=n(45751),o=n(15901),s=n(78969),a=n(25555),d=n(7873),c=n(70433),l=n(63172),u="String",g="Function",f="Number",p="Object",m="Boolean",h=Object.prototype.toString;let b,y=Boolean(window.console),v=Boolean(y&&window.console.log),E=Boolean(y&&window.console.info),A=Boolean(y&&window.console.warn),I=Boolean(y&&window.console.error);const T=(0,d.m)();function w(e){b=e}function C(){null!=b&&b(...arguments)}const O={checkCookieSupport:ze,createTrackPixelIframeHtml:we,getWindowSelf:F,getWindowTop:L,canAccessWindowTop:H,getWindowLocation:z,insertUserSyncIframe:Ae,insertElement:he,isFn:oe,triggerPixel:ye,logError:Y,logWarn:J,logMessage:V,logInfo:K,parseQS:ot,formatQS:st,deepEqual:ct};let S={};function B(){return S}var k,R=(k=0,function(){return++k});function U(){return R()+Math.random().toString(16).substr(2)}function D(e){return e?(e^(window&&window.crypto&&window.crypto.getRandomValues?crypto.getRandomValues(new Uint8Array(1))[0]%16:16*Math.random())>>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,D)}function _(e,t){return t?.[e]||""}function j(e){let t="";for(var n in e)e.hasOwnProperty(n)&&(t+=n+"="+encodeURIComponent(e[n])+"&");return t=t.replace(/&$/,""),t}function $(e){return e&&Object.getOwnPropertyNames(e).length>0?Object.keys(e).map((t=>`${t}=${encodeURIComponent(e[t])}`)).join("&"):""}function N(e){return"string"==typeof e?e.split(/\s*,\s*/).map((e=>e.match(/^(\d+)x(\d+)$/i))).filter((e=>e)).map((e=>{let[t,n,r]=e;return[parseInt(n,10),parseInt(r,10)]})):Array.isArray(e)?G(e)?[e]:e.filter(G):[]}function q(e){return N(e).map(x)}function x(e){return e[0]+"x"+e[1]}function W(e){if(G(e))return x(e)}function P(e){return{w:e[0],h:e[1]}}function M(e){if(G(e))return P(e)}function G(e){return ae(e)&&2===e.length&&!isNaN(e[0])&&!isNaN(e[1])}function L(){return window.top}function F(){return window.self}function z(){return window.location}function H(){try{if(O.getWindowTop().location.href)return!0}catch(e){return!1}}function V(){ee()&&v&&console.log.apply(console,X(arguments,"MESSAGE:"))}function K(){ee()&&E&&console.info.apply(console,X(arguments,"INFO:"))}function J(){ee()&&A&&console.warn.apply(console,X(arguments,"WARNING:")),C(s.qY.AUCTION_DEBUG,{type:"WARNING",arguments})}function Y(){ee()&&I&&console.error.apply(console,X(arguments,"ERROR:")),C(s.qY.AUCTION_DEBUG,{type:"ERROR",arguments})}function Q(e){function t(t){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];t(e,...r)}}return{logError:t(Y),logWarn:t(J),logMessage:t(V),logInfo:t(K)}}function X(e,t){e=[].slice.call(e);let n=r.$W.getCurrentBidder();return t&&e.unshift(t),n&&e.unshift(i("#aaa")),e.unshift(i("#3b88c3")),e.unshift("%cPrebid"+(n?`%c${n}`:"")),e;function i(e){return`display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;`}}function Z(){return v}function ee(){return!!r.$W.getConfig("debug")}const te=(()=>{const e={border:"0px",hspace:"0",vspace:"0",marginWidth:"0",marginHeight:"0",scrolling:"no",frameBorder:"0",allowtransparency:"true"};return function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=t.createElement("iframe");return Object.assign(i,Object.assign({},e,n)),Object.assign(i.style,r),i}})();function ne(){return te(document,{id:U(),width:0,height:0,src:"about:blank"},{display:"none",height:"0px",width:"0px",border:"0px"})}function re(e){return ot(z().search)[e]||""}function ie(e,t){return h.call(e)==="[object "+t+"]"}function oe(e){return ie(e,g)}function se(e){return ie(e,u)}const ae=Array.isArray.bind(Array);function de(e){return ie(e,f)}function ce(e){return ie(e,p)}function le(e){return ie(e,m)}function ue(e){return!e||(ae(e)||se(e)?!(e.length>0):Object.keys(e).length<=0)}function ge(e){return se(e)&&(!e||0===e.length)}function fe(e,t){if(oe(e?.forEach))return e.forEach(t,this);Object.entries(e||{}).forEach((e=>{let[n,r]=e;return t.call(this,r,n)}))}function pe(e,t){return oe(e?.includes)&&e.includes(t)}function me(e,t){return oe(e?.map)?e.map(t):Object.entries(e||{}).map((n=>{let[r,i]=n;return t(i,r,e)}))}function he(e,t,n,r){let i;t=t||document,i=n?t.getElementsByTagName(n):t.getElementsByTagName("head");try{if(i=i.length?i:t.getElementsByTagName("body"),i.length){i=i[0];let t=r?null:i.firstChild;return i.insertBefore(e,t)}}catch(e){}}function be(e,t){let n=null;return new a.k((r=>{const i=function(){e.removeEventListener("load",i),e.removeEventListener("error",i),null!=n&&window.clearTimeout(n),r()};e.addEventListener("load",i),e.addEventListener("error",i),null!=t&&(n=window.setTimeout(i,t))}))}function ye(e,t,n){const r=new Image;t&&O.isFn(t)&&be(r,n).then(t),r.src=e}function ve(e){let{source:t,burl:n}=e;t===s.RW.SRC&&n&&O.triggerPixel(n)}function Ee(e){if(!e)return;const t=ne();var n;O.insertElement(t,document,"body"),(n=t.contentWindow.document).open(),n.write(e),n.close()}function Ae(e,t,n){let r=O.createTrackPixelIframeHtml(e,!1,"allow-scripts allow-same-origin"),i=document.createElement("div");i.innerHTML=r;let o=i.firstChild;t&&O.isFn(t)&&be(o,n).then(t),O.insertElement(o,document,"html",!0)}function Ie(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:encodeURI;if(!e)return"";let n='<div style="position:absolute;left:0px;top:0px;visibility:hidden;">';return n+='<img src="'+t(e)+'"></div>',n}function Te(e){return Array.from(e.matchAll(/\$({[^}]+})/g)).map((e=>e[1])).reduce(((e,t)=>e.replace("$"+encodeURIComponent(t),"$"+t)),encodeURI(e))}function we(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e?((!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(e=encodeURI(e)),t&&(t=`sandbox="${t}"`),`<iframe ${t} id="${U()}"\n      frameborder="0"\n      allowtransparency="true"\n      marginheight="0" marginwidth="0"\n      width="0" hspace="0" vspace="0" height="0"\n      style="height:0px;width:0px;display:none;"\n      scrolling="no"\n      src="${e}">\n    </iframe>`):""}function Ce(e,t,n){return n.indexOf(e)===t}function Oe(e,t){return e.concat(t)}function Se(e,t){if(e)return t.flatMap((e=>e.bids)).find((t=>["bidId","adId","bid_id"].some((n=>t[n]===e))))}function Be(e,t){return e[t]}function ke(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:T.adUnits).map((e=>e.bids.map((e=>e.bidder)).reduce(Oe,[]))).reduce(Oe,[]).filter((e=>void 0!==e)).filter(Ce)}function Re(){if(window.googletag&&oe(window.googletag.pubads)&&oe(window.googletag.pubads().getSlots))return!0}function Ue(){if(window.apntag&&oe(window.apntag.getTag))return!0}function De(e){let t=e.length;for(;t>0;){let n=Math.floor(Math.random()*t);t--;let r=e[t];e[t]=e[n],e[n]=r}return e}function _e(e){return(0,i.Q)(e)||{}}function je(){try{return O.getWindowSelf()!==O.getWindowTop()}catch(e){return!0}}function $e(){if(!je())return!1;const e=O.getWindowSelf();return!(!e.$sf||!e.$sf.ext)}function Ne(){try{const e=F();return"function"==typeof e.$sf.ext.geom?e.$sf.ext.geom():void 0}catch(e){return void Y("Error getting SafeFrame geometry",e)}}function qe(){return/^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent)}function xe(e,t){if(e)return Object.entries(t).reduce(((e,t)=>{let[n,r]=t;return e.replace(new RegExp("\\$\\{"+n+"\\}","g"),r||"")}),e)}function We(e,t){return xe(e,{AUCTION_PRICE:t})}function Pe(e,t){if(e&&t&&"string"==typeof t)return e.replace(/\${CLICKTHROUGH}/g,t)}function Me(){return(new Date).getTime()}function Ge(){return window.performance&&window.performance.now&&window.performance.now()||0}function Le(e){let t=-1;const n=(e=e||F()).performance;if(e.performance?.timing&&e.performance.timing.navigationStart>0){const e=n.timing.domLoading-n.timing.navigationStart;e>0&&(t=e)}return t}function Fe(){return!1!==r.$W.getConfig("deviceAccess")}function ze(){if(window.navigator.cookieEnabled||document.cookie.length)return!0}function He(e,t){if(t<1)throw new Error(`numRequiredCalls must be a positive number. Got ${t}`);let n=0;return function(){n++,n===t&&e.apply(this,arguments)}}function Ve(e,t){return e.reduce((function(e,n){return(e[n[t]]=e[n[t]]||[]).push(n),e}),{})}function Ke(e,t){return t.filter((t=>e[t])).reduce(((t,n)=>Object.assign(t,{[n]:e[n]})),{})}function Je(e){const t=["banner","native","video"],n=["instream","outstream","adpod"];return!!Object.keys(e).every((e=>(0,o.mK)(t,e)))&&(!e.video||!e.video.context||(0,o.mK)(n,e.video.context))}function Ye(e,t,n){return e.filter((e=>e.code===t)).flatMap((e=>e.bids)).filter((e=>e.bidder===n)).map((e=>e.params||{}))}function Qe(){return"1"===navigator.doNotTrack||"1"===window.doNotTrack||"1"===navigator.msDoNotTrack||"yes"===navigator.doNotTrack}const Xe=(e,t)=>e.getAdUnitPath()===t||e.getSlotElementId()===t;function Ze(e){return t=>Xe(e,t)}function et(e,t){const n=Object.keys(e.mediaTypes||{banner:"banner"}).join(", ");return`\n    ${e.code} is a ${n} ad unit\n    containing bidders that don't support ${n}: ${t}.\n    This bidder won't fetch demand.\n  `}const tt=Number.isInteger.bind(Number);function nt(e){return Object.fromEntries(Object.entries(e).filter((e=>{let[t,n]=e;return void 0!==n})))}function rt(e,t){return"object"!=typeof e?{}:t.reduce(((n,r,i)=>{if("function"==typeof r)return n;let o=r,s=r.match(/^(.+?)\sas\s(.+?)$/i);s&&(r=s[1],o=s[2]);let a=e[r];return"function"==typeof t[i+1]&&(a=t[i+1](a,n)),void 0!==a&&(n[o]=a),n}),{})}function it(e,t){return ae(e)&&(!t||e.length===t)&&e.every((e=>tt(e)))}function ot(e){return e?e.replace(/^\?/,"").split("&").reduce(((e,t)=>{let[n,r]=t.split("=");return/\[\]$/.test(n)?(n=n.replace("[]",""),e[n]=e[n]||[],e[n].push(r)):e[n]=r||"",e}),{}):{}}function st(e){return Object.keys(e).map((t=>Array.isArray(e[t])?e[t].map((e=>`${t}[]=${e}`)).join("&"):`${t}=${e[t]}`)).join("&")}function at(e,t){let n=document.createElement("a");t&&"noDecodeWholeURL"in t&&t.noDecodeWholeURL?n.href=e:n.href=decodeURIComponent(e);let r=t&&"decodeSearchAsString"in t&&t.decodeSearchAsString;return{href:n.href,protocol:(n.protocol||"").replace(/:$/,""),hostname:n.hostname,port:+n.port,pathname:n.pathname.replace(/^(?!\/)/,"/"),search:r?n.search:O.parseQS(n.search||""),hash:(n.hash||"").replace(/^#/,""),host:n.host||window.location.host}}function dt(e){return(e.protocol||"http")+"://"+(e.host||e.hostname+(e.port?`:${e.port}`:""))+(e.pathname||"")+(e.search?`?${O.formatQS(e.search||"")}`:"")+(e.hash?`#${e.hash}`:"")}function ct(e,t){let{checkTypes:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e===t)return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t||n&&e.constructor!==t.constructor)return!1;{const r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r){if(!t.hasOwnProperty(i))return!1;if(!ct(e[i],t[i],{checkTypes:n}))return!1}return!0}}function lt(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(!n.length)return e;const i=n.shift();if(ce(e)&&ce(i))for(const t in i)ce(i[t])?(e[t]||Object.assign(e,{[t]:{}}),lt(e[t],i[t])):ae(i[t])?e[t]?ae(e[t])&&i[t].forEach((n=>{let r=1;for(let i=0;i<e[t].length;i++)if(ct(e[t][i],n)){r=0;break}r&&e[t].push(n)})):Object.assign(e,{[t]:[...i[t]]}):Object.assign(e,{[t]:i[t]});return lt(e,...n)}function ut(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=function(e,t){if(oe(Math.imul))return Math.imul(e,t);var n=(4194303&e)*(t|=0);return 4290772992&e&&(n+=(4290772992&e)*t|0),0|n},r=3735928559^t,i=1103547991^t;for(let t,o=0;o<e.length;o++)t=e.charCodeAt(o),r=n(r^t,2654435761),i=n(i^t,1597334677);return r=n(r^r>>>16,2246822507)^n(i^i>>>13,3266489909),i=n(i^i>>>16,2246822507)^n(r^r>>>13,3266489909),(4294967296*(2097151&i)+(r>>>0)).toString()}function gt(e){try{return JSON.parse(e)}catch(e){}}function ft(e){try{return JSON.stringify(e)}catch(e){return""}}function pt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e};const n=new Map,r=function(){const r=t.apply(this,arguments);return n.has(r)||n.set(r,e.apply(this,arguments)),n.get(r)};return r.clear=n.clear.bind(n),r}function mt(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"d";if(["m","d"].indexOf(t)<0)return Date.now();const n=e/("m"===t?1440:1);return Date.now()+(e&&e>0?864e5*n:0)}function ht(e){return Object.keys(e).map((t=>({[t]:e[t]})))}function bt(e,t){Object.entries(t).forEach((t=>{let[n,r]=t;return e.setAttribute(n,r)}))}function yt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e=>e,r=0,i=e.length&&e.length-1;const o=n(t);for(;i-r>1;){const t=r+Math.round((i-r)/2);o>n(e[t])?r=t:i=t}for(;e.length>r&&o>n(e[r]);)r++;return r}function vt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;for(const n in e){const r=e[n],i=typeof r;if(void 0===r||"function"===i||"symbol"===i||r instanceof RegExp||r instanceof Map||r instanceof Set||r instanceof Date||null!==r&&"object"===i&&r.hasOwnProperty("toJSON"))return!0;if(null!==r&&"object"===i&&r.constructor===Object){if(t.has(r))return!0;if(t.add(r),vt(r,t))return!0}}return!1}function Et(e,t){for(let n,r=0;r<e.length;r++)if(n=(0,c.A)(e[r],t),n)return n}function At(e){let t=null;try{let n=/[-\w]+\.([-\w]+|[-\w]{3,}|[-\w]{1,3}\.[-\w]{2})$/i.exec(e);if(null!=n&&n.length>0){t=n[0];for(let e=1;e<n.length;e++)n[e].length>t.length&&(t=n[e])}}catch(e){t=null}return t}function It(e,t){se(e.nurl)&&""!==e.nurl&&(e.nurl=e.nurl.replace(/\${AUCTION_PRICE}/,t),ye(e.nurl))}},57176:(e,t,n)=>{n.d(t,{y:()=>s});var r=n(67314),i=n(12693),o=n(91069);function s(e,t,n){let{index:s=r.n.index,bs:a=i.u}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};n=n||s.getBidRequest(t);const d=t?.adapterCode,c=t?.bidderCode||n?.bidder,l=a.get(t?.adapterCode,"adjustAlternateBids"),u=a.getOwn(c,"bidCpmAdjustment")||a.get(l?d:c,"bidCpmAdjustment");if(u&&"function"==typeof u)try{return u(e,Object.assign({},t),n)}catch(e){(0,o.logError)("Error during bid adjustment",e)}return e}},82621:(e,t,n)=>{n.d(t,{C:()=>i});var r=n(70433);function i(e){return!e?.gdprApplies||!0===(0,r.A)(e,"vendorData.purpose.consents.1")}},16894:(e,t,n)=>{n.d(t,{Ak:()=>h,BO:()=>f,K7:()=>p,NL:()=>b});var r=n(43272);const i="performanceMetrics",o=window.performance&&window.performance.now?()=>window.performance.now():()=>Date.now(),s=new WeakMap;function a(){let{now:e=o,mkNode:t=l,mkTimer:n=c,mkRenamer:r=(e=>e),nodes:i=s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(){return function o(s){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>({forEach(t){t(e)}});a=r(a);const d=(c="timestamps",function(e){return s.dfWalk({visit(t,n){const r=n[c];if(r.hasOwnProperty(e))return r[e]}})});var c;function l(e,t){const n=a(e);s.dfWalk({follow:(e,t)=>t.propagate&&(!e||!e.stopPropagation),visit(e,r){n.forEach((n=>{null==e?r.metrics[n]=t:(r.groups.hasOwnProperty(n)||(r.groups[n]=[]),r.groups[n].push(t))}))}})}function u(t){return n(e,(e=>l(t,e)))}function g(){let e={};return s.dfWalk({visit(t,n){e=Object.assign({},!t||t.includeGroups?n.groups:null,n.metrics,e)}}),e}const f={startTiming:u,measureTime:function(e,t){return u(e).stopAfter(t)()},measureHookTime:function(e,t,n){const r=u(e);return n(function(e){const t=r.stopBefore(e);return t.bail=e.bail&&r.stopBefore(e.bail),t.stopTiming=r,t.untimed=e,t}(t))},checkpoint:function(t){s.timestamps[t]=e()},timeSince:function(t,n){const r=d(t),i=null!=r?e()-r:null;return null!=n&&l(n,i),i},timeBetween:function(e,t,n){const r=d(e),i=d(t),o=null!=r&&null!=i?i-r:null;return null!=n&&l(n,o),o},setMetric:l,getMetrics:g,fork:function(){let{propagate:e=!0,stopPropagation:n=!1,includeGroups:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o(t([[s,{propagate:e,stopPropagation:n,includeGroups:r}]]),a)},join:function(e){let{propagate:t=!0,stopPropagation:n=!1,includeGroups:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=i.get(e);null!=o&&o.addParent(s,{propagate:t,stopPropagation:n,includeGroups:r})},newMetrics:function(){return o(s.newSibling(),a)},renameWith:function(e){return o(s,e)},toJSON:()=>g()};return i.set(f,s),f}(t([]))}}function d(e,t,n){return function(){t&&t();try{return e.apply(this,arguments)}finally{n&&n()}}}function c(e,t){const n=e();let r=!1;function i(){r||(t(e()-n),r=!0)}return i.stopBefore=e=>d(e,i),i.stopAfter=e=>d(e,null,i),i}function l(e){return{metrics:{},timestamps:{},groups:{},addParent(t,n){e.push([t,n])},newSibling:()=>l(e.slice()),dfWalk(){let t,{visit:n,follow:r=(()=>!0),visited:i=new Set,inEdge:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!i.has(this)){if(i.add(this),t=n(o,this),null!=t)return t;for(const[s,a]of e)if(r(o,a)&&(t=s.dfWalk({visit:n,follow:r,visited:i,inEdge:a}),null!=t))return t}}}}const u=(()=>{const e=function(){},t=()=>({}),n={forEach:e},r=()=>null;r.stopBefore=e=>e,r.stopAfter=e=>e;const i=Object.defineProperties({dfWalk:e,newSibling:()=>i,addParent:e},Object.fromEntries(["metrics","timestamps","groups"].map((e=>[e,{get:t}]))));return a({now:()=>0,mkNode:()=>i,mkRenamer:()=>()=>n,mkTimer:()=>r,nodes:{get:e,set:e}})()})();let g=!0;function f(e){return g&&e||u}r.$W.getConfig(i,(e=>{g=!!e[i]}));const p=(()=>{const e=a();return function(){return g?e():u}})();function m(e,t){return function(n,r){return function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a<o;a++)s[a-1]=arguments[a];const d=this;return f(t.apply(d,s)).measureHookTime(e+n,i,(function(e){return r.call(d,e,...s)}))}}}const h=m("requestBids.",(e=>e.metrics)),b=m("addBidResponse.",((e,t)=>t.metrics))},25555:(e,t,n)=>{n.d(t,{k:()=>o,v:()=>s});const r=0,i=1;class o{#d;#c;static timeout(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new o((t=>{0===e?t():setTimeout(t,e)}))}constructor(e){if("function"!=typeof e)throw new Error("resolver not a function");const t=[],n=[];let[o,s]=[r,i].map((e=>function(i){if(e===r&&"function"==typeof i?.then)i.then(o,s);else if(!t.length)for(t.push(e,i);n.length;)n.shift()()}));try{e(o,s)}catch(e){s(e)}this.#d=t,this.#c=n}then(e,t){const n=this.#d;return new this.constructor(((i,o)=>{const s=()=>{let s=n[1],[a,d]=n[0]===r?[e,i]:[t,o];if("function"==typeof a){try{s=a(s)}catch(e){return void o(e)}d=i}d(s)};n.length?s():this.#c.push(s)}))}catch(e){return this.then(null,e)}finally(e){let t;return this.then((n=>(t=n,e())),(n=>(t=this.constructor.reject(n),e()))).then((()=>t))}static#l(e,t,n){let r=e.length;function i(){t.apply(this,arguments),--r<=0&&n&&n()}0===e.length&&n?n():e.forEach(((e,t)=>this.resolve(e).then((e=>i(!0,e,t)),(e=>i(!1,e,t)))))}static race(e){return new this(((t,n)=>{this.#l(e,((e,r)=>e?t(r):n(r)))}))}static all(e){return new this(((t,n)=>{let r=[];this.#l(e,((e,t,i)=>e?r[i]=t:n(t)),(()=>t(r)))}))}static allSettled(e){return new this((t=>{let n=[];this.#l(e,((e,t,r)=>n[r]=e?{status:"fulfilled",value:t}:{status:"rejected",reason:t}),(()=>t(n)))}))}static resolve(e){return new this((t=>t(e)))}static reject(e){return new this(((t,n)=>n(e)))}}function s(){let e,t,{promiseFactory:n=(e=>new o(e))}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};function r(e){return t=>e(t)}return{promise:n(((n,r)=>{e=n,t=r})),resolve:r(e),reject:r(t)}}},12713:(e,t,n)=>{function r(e,t){return e===t?0:e<t?-1:1}function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e=>e;return(t,n)=>r(e(t),e(n))}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;return(t,n)=>-e(t,n)||0}function s(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,n){for(const r of t){const t=r(e,n);if(0!==t)return t}return 0}}function a(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;return(t,n)=>e(n,t)<0?n:t}function d(){return a(o(arguments.length>0&&void 0!==arguments[0]?arguments[0]:r))}n.d(t,{Bp:()=>a,Bq:()=>g,NV:()=>i,Ph:()=>d,Vk:()=>u});const c=i((e=>e.cpm)),l=i((e=>e.responseTimestamp)),u=d(s(c,o(i((e=>e.timeToRespond))))),g=d(s(c,o(l)));d(s(c,l))},76853:(e,t,n)=>{n.d(t,{H:()=>l});var r=n(25555),i=n(91069);let o=null,s=0,a=[];function d(){document.hidden?o=Date.now():(s+=Date.now()-(o??0),o=null,a.forEach((e=>{let{callback:t,startTime:n,setTimerId:r}=e;return r(c(t,s-n)())})),a=[])}function c(e,t){const n=s;let r=setTimeout((()=>{s===n&&null==o?e():null!=o?a.push({callback:e,startTime:n,setTimerId(e){r=e}}):r=c(e,s-n)()}),t);return()=>r}function l(){let{startTime:e=i.timestamp,ttl:t=(()=>null),monotonic:n=!1,slack:o=5e3}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const s=new Map,a=[],d=[],l=n?e=>d.push(e):e=>d.splice((0,i.binarySearch)(d,e,(e=>e.expiry)),0,e);let u,g;function f(){if(g&&clearTimeout(g),d.length>0){const e=(0,i.timestamp)();u=Math.max(e,d[0].expiry+o),g=c((()=>{const e=(0,i.timestamp)();let t=0;for(const n of d){if(n.expiry>e)break;a.forEach((e=>{try{e(n.item)}catch(e){(0,i.logError)(e)}})),s.delete(n.item),t++}d.splice(0,t),g=null,f()}),u-e)}else g=null}function p(n){const i={},s=m;let a;const[d,c]=Object.entries({start:e,delta:t}).map((e=>{let t,[d,c]=e;return function(){const e=t={};r.k.resolve(c(n)).then((n=>{e===t&&(i[d]=n,s===m&&null!=i.start&&null!=i.delta&&(a=i.start+i.delta,l(p),(null==g||u>a+o)&&f()))}))}})),p={item:n,refresh:c,get expiry(){return a}};return d(),c(),p}let m={};return{[Symbol.iterator]:()=>s.keys(),add(e){!s.has(e)&&s.set(e,p(e))},clear(){d.length=0,f(),s.clear(),m={}},toArray:()=>Array.from(s.keys()),refresh(){d.length=0,f();for(const e of s.values())e.refresh()},onExpiry:e=>(a.push(e),()=>{const t=a.indexOf(e);t>=0&&a.splice(t,1)})}}document.addEventListener("visibilitychange",d)},63895:(e,t,n)=>{n.d(t,{E2:()=>p,H6:()=>d,V0:()=>u,Zy:()=>l,aP:()=>g,mn:()=>c,vk:()=>f});var r=n(91069),i=n(70433),o=n(43272),s=n(16833),a=n(67314);const d="outstream",c="instream",l=new Map([["mimes",e=>Array.isArray(e)&&e.length>0&&e.every((e=>"string"==typeof e))],["minduration",r.isInteger],["maxduration",r.isInteger],["startdelay",r.isInteger],["maxseq",r.isInteger],["poddur",r.isInteger],["protocols",r.isArrayOfNums],["w",r.isInteger],["h",r.isInteger],["podid",r.isStr],["podseq",r.isInteger],["rqddurs",r.isArrayOfNums],["placement",r.isInteger],["plcmt",r.isInteger],["linearity",r.isInteger],["skip",e=>[1,0].includes(e)],["skipmin",r.isInteger],["skipafter",r.isInteger],["sequence",r.isInteger],["slotinpod",r.isInteger],["mincpmpersec",r.isNumber],["battr",r.isArrayOfNums],["maxextended",r.isInteger],["minbitrate",r.isInteger],["maxbitrate",r.isInteger],["boxingallowed",r.isInteger],["playbackmethod",r.isArrayOfNums],["playbackend",r.isInteger],["delivery",r.isArrayOfNums],["pos",r.isInteger],["api",r.isArrayOfNums],["companiontype",r.isArrayOfNums],["poddedupe",r.isArrayOfNums]]);function u(e){const t=e?.mediaTypes?.video;null!=t&&null==t.plcmt&&(t.context===d||[2,3,4].includes(t.placement)?t.plcmt=4:t.context!==d&&[2,6].includes(t.playbackmethod)&&(t.plcmt=2))}function g(e,t){const n=e?.mediaTypes?.video;(0,r.isPlainObject)(n)?null!=n&&Object.entries(n).forEach((i=>{let[o,s]=i;if(!l.has(o))return;l.get(o)(s)||("function"==typeof t?t(o,s,e):(delete n[o],(0,r.logWarn)(`Invalid prop in adUnit "${e.code}": Invalid value for mediaTypes.video.${o} ORTB property. The property has been removed.`)))})):(0,r.logWarn)("validateOrtbVideoFields: videoParams must be an object.")}function f(e){let{index:t=a.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=(0,i.A)(t.getMediaTypes(e),"video"),r=n&&(0,i.A)(n,"context"),o=n&&(0,i.A)(n,"useCacheKey"),s=t.getAdUnit(e);return p(e,s,n,r,o)}const p=(0,s.A_)("sync",(function(e,t,n,i,s){return n&&(s||i!==d)?o.$W.getConfig("cache.url")||!e.vastXml||e.vastUrl?!(!e.vastUrl&&!e.vastXml):((0,r.logError)('\n        This bid contains only vastXml and will not work when a prebid cache url is not specified.\n        Try enabling prebid cache with pbjs.setConfig({ cache: {url: "..."} });\n      '),!1):!(i===d&&!s)||!!(e.renderer||t&&t.renderer||n.renderer)}),"checkVideoBidSetup")},68693:(e,t,n)=>{n.d(t,{M_:()=>l,X5:()=>m});var r=n(68044),i=n(43272),o=n(67314),s=n(91069),a=n(81657);const d=15;function c(e){let{index:t=o.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=e.vastXml?e.vastXml:(r=e.vastUrl,s=e.vastImpUrl,`<VAST version="3.0">\n    <Ad>\n      <Wrapper>\n        <AdSystem>prebid.org wrapper</AdSystem>\n        <VASTAdTagURI><![CDATA[${r}]]></VASTAdTagURI>\n        ${(s=s&&(Array.isArray(s)?s:[s]))?s.map((e=>`<Impression><![CDATA[${e}]]></Impression>`)).join(""):""}\n        <Creatives></Creatives>\n      </Wrapper>\n    </Ad>\n  </VAST>`);var r,s;const a=t.getAuction(e);let c={type:"xml",value:n,ttlseconds:Number(e.ttl)+d};return i.$W.getConfig("cache.vasttrack")&&(c.bidder=e.bidder,c.bidid=e.requestId,c.aid=e.auctionId),null!=a&&(c.timestamp=a.getAuctionStart()),"string"==typeof e.customCacheKey&&""!==e.customCacheKey&&(c.key=e.customCacheKey),c}function l(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.g4;const o={puts:e.map(c)};n(i.$W.getConfig("cache.timeout"))(i.$W.getConfig("cache.url"),function(e){return{success:function(t){let n;try{n=JSON.parse(t).responses}catch(t){return void e(t,[])}n?e(null,n):e(new Error("The cache server didn't respond with a responses property."),[])},error:function(t,n){e(new Error(`Error storing video ad in the cache: ${t}: ${JSON.stringify(n)}`),[])}}}(t),JSON.stringify(o),{contentType:"text/plain",withCredentials:!0})}const u={store:l};function g(e){const t=e.map((e=>e.bidResponse));u.store(t,(function(n,r){var o;n?(o=n,(0,s.logError)(`Failed to save to the video cache: ${o}. Video bids will be discarded:`,t)):e.length!==r.length?(0,s.logError)(`expected ${e.length} cache IDs, got ${r.length} instead`):r.forEach(((t,n)=>{const{auctionInstance:r,bidResponse:o,afterBidAdded:d}=e[n];var c;""===t.uuid?(0,s.logWarn)("Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded."):(o.videoCacheKey=t.uuid,o.vastUrl||(o.vastUrl=(c=o.videoCacheKey,`${i.$W.getConfig("cache.url")}?uuid=${c}`)),(0,a.v8)(r,o),d())}))}))}let f,p;i.$W.getConfig("cache",(e=>{f="number"==typeof e.cache.batchSize&&e.cache.batchSize>0?e.cache.batchSize:1,p="number"==typeof e.cache.batchTimeout&&e.cache.batchTimeout>0?e.cache.batchTimeout:0}));const m=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:setTimeout,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g,n=[[]],r=!1;const i=e=>e();return function(o,s,a){const d=p>0?e:i;n[n.length-1].length>=f&&n.push([]),n[n.length-1].push({auctionInstance:o,bidResponse:s,afterBidAdded:a}),r||(r=!0,d((()=>{n.forEach(t),n=[[]],r=!1}),p))}}()}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[51085],{34595:(s,d,e)=>{e.d(d,{G:()=>n});const n='(()=>{"use strict";window.render=function({ad:d,adUrl:e,width:i,height:r},{mkFrame:n},o){if(!d&&!e)throw{reason:"noAd",message:"Missing ad markup or URL"};{const s=o.document,t={width:i,height:r};e&&!d?t.src=e:t.srcdoc=d,s.body.appendChild(n(s,t))}}})();'}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[97247],{28656:(r,e,a)=>{a.d(e,{D:()=>o});var n=a(73858),t=a(70433);const s=["user.keywords"].concat(n.Dy.flatMap((r=>["keywords","content.keywords"].map((e=>`${r}.${e}`)))));function o(r){for(var e=arguments.length,a=new Array(e>1?e-1:0),n=1;n<e;n++)a[n-1]=arguments[n];return function(){const r=new Set;for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];return a.filter((r=>r)).flatMap((r=>Array.isArray(r)?r:r.split(","))).map((r=>r.replace(/^\s*/,"").replace(/\s*$/,""))).filter((r=>r)).forEach((e=>r.add(e))),Array.from(r.keys())}(...s.map((e=>(0,t.A)(r,e))),...a)}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[44982],{29906:(e,l,s)=>{function t(e,l){let s=[];for(let t=0;t<Math.ceil(e.length/l);t++){let h=t*l,n=h+l;s.push(e.slice(h,n))}return s}s.d(l,{i:()=>t})}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[95444],{554:(e,t,r)=>{r.d(t,{QF:()=>f,T_:()=>g,gg:()=>l});var n=r(91069),o=r(70433),i=r(28656),a=r(73858);const c={526:"1plusX",527:"1plusX",541:"captify_segments",540:"perid"},s=["user.data"].concat(a.Dy.map((e=>`${e}.content.data`)));function d(e,t,r){return null==t?r:(0,n.isStr)(t)?t:(0,n.isNumber)(t)?t.toString():void(0,n.logWarn)("Unsuported type for param: "+e+" required type: String")}function l(e){return(0,n.isStr)(e)&&""!==e?u(e.split(/\s*(?:,)\s*/)):{}}function u(e){const t={};return e.forEach((e=>{if(-1!==e.indexOf("=")){let r=e.split("="),n=r[0],o=r[1];t.hasOwnProperty(n)?t[n].push(o):t[n]=[o]}else t.hasOwnProperty(e)||(t[e]=[])})),t}function g(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"keywords";const r=[];return(0,n._each)(e,((e,o)=>{if((0,n.isArray)(e)){let r=[];(0,n._each)(e,(e=>{((e=d(t+"."+o,e))||""===e)&&r.push(e)})),e=r}else{if(e=d(t+"."+o,e),!(0,n.isStr)(e))return;e=[e]}e=e.filter((e=>""!==e));const i={key:o};e.length>0&&(i.value=e),r.push(i)})),r}((0,n.mergeDeep)(...t.map((e=>Object.fromEntries(Object.entries(e||{}).map((e=>{let[t,r]=e;return[t,(0,n.isNumber)(r)||(0,n.isStr)(r)?[r]:r]})))))))}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return g(function(e){return u((0,i.D)(e))}(e),function(e){let t={};return s.forEach((r=>{((0,o.A)(e,r)||[]).forEach((e=>{const r=c[(0,o.A)(e,"ext.segtax")];r&&e.segment.forEach((e=>{t[r]?t[r].push(e.id):t[r]=[e.id]}))}))})),t}(e),...r)}},2349:(e,t,r)=>{r.d(t,{DX:()=>i,GS:()=>a,vk:()=>o});var n=r(91069);function o(e){return e.replace(/(?:^|\.?)([A-Z])/g,(function(e,t){return"_"+t.toLowerCase()})).replace(/^_/,"")}const i=[{code:"appnexusAst",gvlid:32},{code:"emxdigital",gvlid:183},{code:"emetriq",gvlid:213},{code:"pagescience",gvlid:32},{code:"gourmetads",gvlid:32},{code:"matomy",gvlid:32},{code:"featureforward",gvlid:32},{code:"oftmedia",gvlid:32},{code:"adasta",gvlid:32},{code:"beintoo",gvlid:618},{code:"projectagora",gvlid:1032},{code:"stailamedia",gvlid:32},{code:"uol",gvlid:32},{code:"adzymic",gvlid:723}];function a(e,t){let r=[];for(let o=0;o<t;o++){let t=(0,n.isPlainObject)(e)?(0,n.deepClone)(e):e;r.push(t)}return r}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[42698],{24673:(A,B,I)=>{I.d(B,{n:()=>s});const s={1:"IAB20-3",2:"IAB18-5",3:"IAB10-1",4:"IAB2-3",5:"IAB19-8",6:"IAB22-1",7:"IAB18-1",8:"IAB12-3",9:"IAB5-1",10:"IAB4-5",11:"IAB13-4",12:"IAB8-7",13:"IAB9-7",14:"IAB7-1",15:"IAB20-18",16:"IAB10-7",17:"IAB19-18",18:"IAB13-6",19:"IAB18-4",20:"IAB1-5",21:"IAB1-6",22:"IAB3-4",23:"IAB19-13",24:"IAB22-2",25:"IAB3-9",26:"IAB17-18",27:"IAB19-6",28:"IAB1-7",29:"IAB9-30",30:"IAB20-7",31:"IAB20-17",32:"IAB7-32",33:"IAB16-5",34:"IAB19-34",35:"IAB11-5",36:"IAB12-3",37:"IAB11-4",38:"IAB12-3",39:"IAB9-30",41:"IAB7-44",42:"IAB7-1",43:"IAB7-30",50:"IAB19-30",51:"IAB17-12",52:"IAB19-30",53:"IAB3-1",55:"IAB13-2",56:"IAB19-30",57:"IAB19-30",58:"IAB7-39",59:"IAB22-1",60:"IAB7-39",61:"IAB21-3",62:"IAB5-1",63:"IAB12-3",64:"IAB20-18",65:"IAB11-2",66:"IAB17-18",67:"IAB9-9",68:"IAB9-5",69:"IAB7-44",71:"IAB22-3",73:"IAB19-30",74:"IAB8-5",78:"IAB22-1",85:"IAB12-2",86:"IAB22-3",87:"IAB11-3",112:"IAB7-32",113:"IAB7-32",114:"IAB7-32",115:"IAB7-32",118:"IAB9-5",119:"IAB9-5",120:"IAB9-5",121:"IAB9-5",122:"IAB9-5",123:"IAB9-5",124:"IAB9-5",125:"IAB9-5",126:"IAB9-5",127:"IAB22-1",132:"IAB1-2",133:"IAB19-30",137:"IAB3-9",138:"IAB19-3",140:"IAB2-3",141:"IAB2-1",142:"IAB2-3",143:"IAB17-13",166:"IAB11-4",175:"IAB3-1",176:"IAB13-4",182:"IAB8-9",183:"IAB3-5"}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[12126],{25761:(e,n,r)=>{r.d(n,{$:()=>t});var s=r(91069);function t(e,n){return Object.keys(e).forEach((r=>{var t,u;n[r]&&((0,s.isFn)(e[r])?n[r]=e[r](n[r]):n[r]=(t=e[r],u=n[r],"string"===t?u&&u.toString():"number"===t?Number(u):u),isNaN(n[r])&&delete n.key)})),n}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[57109],{20965:(t,e,n)=>{n.d(e,{c5:()=>o,q4:()=>r});var a=n(25555);const c=0,l=1,r=2;function o(t){let{apiName:e,apiVersion:n,apiArgs:o=["command","callback","parameter","version"],callbackArgs:s=["returnValue","success"],mode:i=c}=t,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;const f={},d=`${e}Call`,p=`${e}Return`;function b(t){const e="string"==typeof t.data&&t.data.includes(p)?JSON.parse(t.data):t.data;if(e?.[p]?.callId){const t=e[p];f.hasOwnProperty(t.callId)&&f[t.callId](...s.map((e=>t[e])))}}const[k,m]=function(){let t,n=u,a=!1;for(;null!=n;){try{if("function"==typeof n[e]){t=n,a=!0;break}}catch(t){}try{if(n.frames[`${e}Locator`]){t=n;break}}catch(t){}if(n===u.top)break;n=n.parent}return[t,a]}();if(!k)return;function g(t){return t=Object.assign({version:n},t),o.map((e=>[e,t[e]]))}function h(t,e,n,a){const c="function"==typeof t;return function(r,o){if(a&&a(),i!==l){(null==o||o?e:n)(c?void 0:r)}c&&t.apply(this,arguments)}}let v;return m?v=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new a.k(((n,a)=>{const o=k[e](...g({...t,callback:t.callback||i===r?h(t.callback,n,a):void 0}).map((t=>{let[e,n]=t;return n})));(i===l||null==t.callback&&i===c)&&n(o)}))}:(u.addEventListener("message",b,!1),v=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new a.k(((n,a)=>{const c=Math.random().toString(),r={[d]:{...Object.fromEntries(g(t).filter((t=>{let[e]=t;return"callback"!==e}))),callId:c}};f[c]=h(t?.callback,n,a,(e||null==t?.callback)&&(()=>{delete f[c]})),k.postMessage(r,"*"),i===l&&n()}))}),Object.assign(v,{isDirect:m,close(){!m&&u.removeEventListener("message",b)}})}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[90010],{63806:(n,r,o)=>{o.d(r,{R:()=>i});var a=o(16894),e=o(91069);function i(n,r,o){return(0,a.Ak)(n,(function(n,a){var i;i=function(r,o){if(o){let n=e.logWarn;r&&(n=e.logError,o=`${o} Canceling auction as per consentManagement config.`);for(var i=arguments.length,l=new Array(i>2?i-2:0),t=2;t<i;t++)l[t-2]=arguments[t];n(o,...l)}r?(n.stopTiming(),"function"==typeof a.bidsBackHandler?a.bidsBackHandler():(0,e.logError)("Error executing bidsBackHandler")):n.call(this,a)},r()?((0,e.logInfo)("User consent information already known.  Pulling internally stored information..."),i(!1)):o(i)}))}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[40082],{77274:(n,e,t)=>{t.d(e,{l:()=>v});var i=t(95139),o=t(76811),s=t(16916),r=t(91069);function a(n){return null!=n&&0!==n}function c(n){return["MspaServiceProviderMode","Gpc"].some((e=>1===n[e]))||2===n.PersonalDataConsents||1===n.KnownChildSensitiveDataConsents[0]||a(n.KnownChildSensitiveDataConsents[1])||0===n.MspaCoveredTransaction}function l(n,e){return["SensitiveDataProcessingOptOutNotice","SensitiveDataLimitUseNotice"].some((t=>n[t]===e))}function u(n){return c(n)||["Sale","Sharing","TargetedAdvertising"].some((e=>{const t=n[`${e}OptOut`],i=n[`${e}OptOutNotice`];return 1===t||2===i||2===t&&0===i}))||2===n.SharingNotice||2===n.SharingOptOut&&0===n.SharingNotice}const g=(()=>{const n=[6,7,9,10,12].map((n=>--n)),e=Array.from(Array(12).keys()).filter((n=>7!==n)),t=e.filter((e=>!n.includes(e)));return function(i){return u(i)||l(i,2)||n.some((n=>a(i.SensitiveDataProcessing[n])))||t.some((n=>1===i.SensitiveDataProcessing[n]))||l(i,0)&&e.some((n=>2===i.SensitiveDataProcessing[n]))}})();const f={[o.Ml]:u,[o.yl]:u,[o.qX]:g,[o.hE]:function(n){const e=n.SensitiveDataProcessing[7];return 1===e||c(n)||l(n,2)||l(n,0)&&2===e}};function v(n,e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n=>n,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:i.qB,c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:()=>s.ad.getConsentData();const l=[],u=`MSPA (GPP '${n}' for section${e.length>1?"s":""} ${e.join(", ")})`;return(0,r.logInfo)(`Enabling activity controls for ${u}`),Object.entries(o).forEach((i=>{let[o,r]=i;l.push(a(o,u,function(n,e,t){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>s.ad.getConsentData()?.applicableSections;return function(){if(i().some((e=>n.includes(e)))){const n=e();if(null==n)return{allow:!1,reason:"consent data not available"};if(t(n))return{allow:!1}}}}(e,(()=>{return t((e=c()?.parsedSections?.[n],null==e?e:e.reduceRight(((n,e)=>Object.assign(e,n)),{})));var e}),r,(()=>c()?.applicableSections||[]))))})),()=>l.forEach((n=>n()))}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[33005],{51252:(t,e,n)=>{n.d(e,{Cn:()=>d,eu:()=>f,mw:()=>o,n9:()=>i,p:()=>s});var u=n(73858),a=n(15901),l=n(91069),r=n(70433);function o(t){return e=>(0,l.compareCodeAndSlot)(e,t)}function i(t){let e;return(0,l.isGptPubadsDefined)()&&(e=(0,a.I6)(window.googletag.pubads().getSlots(),o(t))),e}function s(t){const e=i(t);return e?{gptSlot:e.getAdUnitPath(),divId:e.getSlotElementId()}:{}}const d=["IAB_AUDIENCE_1_1","IAB_CONTENT_2_2"];function f(t){return Object.entries({[d[0]]:p(t,["user.data"],4),[d[1]]:p(t,u.Dy.map((t=>`${t}.content.data`)),6)}).map((t=>{let[e,n]=t;return n.length?{taxonomy:e,values:n}:null})).filter((t=>t))}function p(t,e,n){return e.flatMap((e=>(0,r.A)(t,e)||[])).filter((t=>t.ext?.segtax===n)).flatMap((t=>t.segment?.map((t=>t.id)))).filter((t=>t)).filter(l.uniques)}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[58498],{89766:(e,t,r)=>{r.d(t,{T:()=>f,A:()=>m});const n=new WeakMap;var i=r(91069),o=r(70433),s=r(71371);var a=r(63895);var d=r(75561);var p=r(1e3),c=r(73858);const u={[p.S3]:{fpd:{priority:99,fn(e,t){(0,i.mergeDeep)(e,t.ortb2)}},onlyOneClient:{priority:-99,fn:(0,c.i8)("ORTB request")},props:{fn(e,t){Object.assign(e,{id:e.id||(0,i.generateUUID)(),test:e.test||0});const r=parseInt(t.timeout,10);isNaN(r)||(e.tmax=r)}}},[p.Tb]:{fpd:{priority:99,fn(e,t){(0,i.mergeDeep)(e,t.ortb2Imp)}},id:{fn(e,t){e.id=t.bidId}},banner:{fn:function(e,t,r){if(r.mediaType&&r.mediaType!==s.D4)return;const n=(0,o.A)(t,"mediaTypes.banner");if(n){const t={topframe:!0===(0,i.inIframe)()?0:1};n.sizes&&(t.format=(0,i.sizesToSizeTuples)(n.sizes).map(i.sizeTupleToRtbSize)),n.hasOwnProperty("pos")&&(t.pos=n.pos),e.banner=(0,i.mergeDeep)(t,e.banner)}}},pbadslot:{fn(e){const t=e.ext?.data?.pbadslot;t&&"string"==typeof t||delete e.ext?.data?.pbadslot}}},[p.WR]:{mediaType:{priority:99,fn:d.K},banner:{fn:function(){let{createPixel:e=(e=>(0,i.createTrackPixelHtml)(decodeURIComponent(e),i.encodeMacroURI))}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t,r){t.mediaType===s.D4&&(r.adm&&r.nurl?(t.ad=r.adm,t.ad+=e(r.nurl)):r.adm?t.ad=r.adm:r.nurl&&(t.adUrl=r.nurl))}}()},props:{fn(e,t,r){Object.entries({requestId:r.bidRequest?.bidId,seatBidId:t.id,cpm:t.price,currency:r.ortbResponse.cur||r.currency,width:t.w,height:t.h,dealId:t.dealid,creative_id:t.crid,creativeId:t.crid,burl:t.burl,ttl:t.exp||r.ttl,netRevenue:r.netRevenue}).filter((e=>{let[t,r]=e;return void 0!==r})).forEach((t=>{let[r,n]=t;return e[r]=n})),e.meta||(e.meta={}),t.adomain&&(e.meta.advertiserDomains=t.adomain),t.ext?.dsa&&(e.meta.dsa=t.ext.dsa)}}}};u[p.Tb].native={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==s.s6)return;let n=t.nativeOrtbRequest;n&&(n=Object.assign({},r.nativeRequest,n),n.assets?.length?e.native=(0,i.mergeDeep)({},{request:JSON.stringify(n),ver:n.ver},e.native):(0,i.logWarn)("mediaTypes.native is set, but no assets were specified. Native request skipped.",t))}},u[p.WR].native={fn:function(e,t){if(e.mediaType===s.s6){let r;if(r="string"==typeof t.adm?JSON.parse(t.adm):t.adm,!(0,i.isPlainObject)(r)||!Array.isArray(r.assets))throw new Error("ORTB native response contained no assets");e.native={ortb:r}}}},u[p.Tb].video={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==s.G_)return;const n=(0,o.A)(t,"mediaTypes.video");if(!(0,i.isEmpty)(n)){const t=Object.fromEntries(Object.entries(n).filter((e=>{let[t]=e;return a.Zy.has(t)})));if(n.playerSize){const e=(0,i.sizesToSizeTuples)(n.playerSize).map(i.sizeTupleToRtbSize);e.length>1&&(0,i.logWarn)("video request specifies more than one playerSize; all but the first will be ignored"),Object.assign(t,e[0])}e.video=(0,i.mergeDeep)(t,e.video)}}},u[p.WR].video={fn:function(e,t,r){e.mediaType===s.G_&&((0,o.A)(r.imp,"video.w")&&(0,o.A)(r.imp,"video.h")&&([e.playerWidth,e.playerHeight]=[r.imp.video.w,r.imp.video.h]),t.adm&&(e.vastXml=t.adm),t.nurl&&(e.vastUrl=t.nurl))}};var l=r(99466);function m(){let{context:e={},processors:t=f,overrides:r={},imp:o,request:s,bidResponse:a,response:d}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const c=new WeakMap;function u(e,i,o,s){let a;return function(){return null==a&&(a=function(){let a=o.bind(this,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!n.has(e)){const t=Object.entries(e);t.sort(((e,t)=>(e=e[1].priority||0)===(t=t[1].priority||0)?0:e>t?-1:1)),n.set(e,t.map((e=>{let[t,r]=e;return[t,r.fn]})))}const r=n.get(e).filter((e=>{let[r]=e;return!t.hasOwnProperty(r)||t[r]})).map((function(e){let[r,n]=e;return t.hasOwnProperty(r)?t[r].bind(this,n):n}));return function(){const e=Array.from(arguments);r.forEach((t=>{t.apply(this,e)}))}}(t()[e]||{},r[e]||{}));return i&&(a=i.bind(this,a)),function(){try{return a.apply(this,arguments)}catch(e){s.call(this,e,...arguments)}}}()),a.apply(this,arguments)}}const l=u(p.Tb,o,(function(e,t,r){const n={};return e(n,t,r),n}),(function(e,t,r){(0,i.logError)("Error while converting bidRequest to ORTB imp; request skipped.",{error:e,bidRequest:t,context:r})})),m=u(p.S3,s,(function(e,t,r,n){const i={imp:t};return e(i,r,n),i}),(function(e,t,r,n){throw(0,i.logError)("Error while converting to ORTB request",{error:e,imps:t,bidderRequest:r,context:n}),e})),b=u(p.WR,a,(function(e,t,r){const n={};return e(n,t,r),n}),(function(e,t,r){(0,i.logError)("Error while converting ORTB seatbid.bid to bidResponse; bid skipped.",{error:e,bid:t,context:r})})),y=u(p.Cf,d,(function(e,t,r,n){const i={bids:t};return e(i,r,n),i}),(function(e,t,r,n){throw(0,i.logError)("Error while converting from ORTB response",{error:e,bidResponses:t,ortbResponse:r,context:n}),e}));return{toORTB(t){let{bidderRequest:r,bidRequests:n,context:o={}}=t;n=n||r.bids;const s={req:Object.assign({bidRequests:n},e,o),imp:{}};s.req.impContext=s.imp;const a=n.map((t=>{const n=Object.assign({bidderRequest:r,reqContext:s.req},e,o),a=l(t,n);if(null!=a){if(a.hasOwnProperty("id"))return Object.assign(n,{bidRequest:t,imp:a}),s.imp[a.id]=n,a;(0,i.logError)("Converted ORTB imp does not specify an id, ignoring bid request",t,a)}})).filter(Boolean),d=m(a,r,s.req);return s.req.bidderRequest=r,null!=d&&c.set(d,s),d},fromORTB(e){let{request:t,response:r}=e;const n=c.get(t);if(null==n)throw new Error("ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`");function o(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign(e,{ortbRequest:t},r)}const s=Object.fromEntries((t.imp||[]).map((e=>[e.id,e]))),a=(r.seatbid||[]).flatMap((e=>(e.bid||[]).map((t=>{if(s.hasOwnProperty(t.impid)&&n.imp.hasOwnProperty(t.impid))return b(t,o(n.imp[t.impid],{imp:s[t.impid],seatbid:e,ortbResponse:r}));(0,i.logError)("ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid",t)})))).filter(Boolean);return y(a,r,o(n.req))}}}const f=(0,i.memoize)((()=>(0,l.U)(u,(0,p.yB)(p.qN))))},99466:(e,t,r)=>{r.d(t,{U:()=>i});var n=r(1e3);function i(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];const o=t.shift(),s=t.length>1?i(...t):t[0];return Object.fromEntries(n.zt.map((e=>[e,Object.assign({},o[e],s[e])])))}},75561:(e,t,r)=>{r.d(t,{K:()=>o,X:()=>i});var n=r(71371);const i={1:n.D4,2:n.G_,4:n.s6};function o(e,t,r){if(e.mediaType)return;const n=r.mediaType;if(!n&&!i.hasOwnProperty(t.mtype))throw new Error("Cannot determine mediaType for response");e.mediaType=n||i[t.mtype]}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[47618],{34610:(e,i,t)=>{t.d(i,{m:()=>m});var d=t(99466),r=t(1e3),n=t(70433),s=t(91069),a=t(25825),b=t(11445),o=t(43272),p=t(63172);var c=t(43323);var f=t(7873);var g=t(71371);const l={[r.S3]:{extPrebid:{fn:function(e,i){(0,p.J)(e,"ext.prebid",(0,s.mergeDeep)({auctiontimestamp:i.auctionStart,targeting:{includewinners:!0,includebidderkeys:!1}},e.ext?.prebid)),o.$W.getConfig("debug")&&(e.ext.prebid.debug=!0)}},extPrebidChannel:{fn:function(e){(0,p.J)(e,"ext.prebid.channel",Object.assign({name:"pbjs",version:(0,f.m)().version},e.ext?.prebid?.channel))}},extPrebidAliases:{fn:function(e,i,t){let{am:d=b.Ay}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(d.aliasRegistry[i.bidderCode]){const t=d.bidderRegistry[i.bidderCode];if(!t||!t.getSpec().skipPbsAliasing){(0,p.J)(e,`ext.prebid.aliases.${i.bidderCode}`,d.aliasRegistry[i.bidderCode]);const r=o.$W.getConfig(`gvlMapping.${i.bidderCode}`)||t?.getSpec?.().gvlid;r&&(0,p.J)(e,`ext.prebid.aliasgvlids.${i.bidderCode}`,r)}}}}},[r.Tb]:{params:{fn:c.W},adUnitCode:{fn:function(e,i){const t=i.adUnitCode;t&&(0,p.J)(e,"ext.prebid.adunitcode",t)}}},[r.WR]:{mediaType:{fn:a.o,priority:99},videoCache:{fn:function(e,i){if(e.mediaType===g.G_){let{cacheId:t,url:d}=(0,n.A)(i,"ext.prebid.cache.vastXml")||{};if(!t||!d){const{hb_uuid:e,hb_cache_host:r,hb_cache_path:s}=(0,n.A)(i,"ext.prebid.targeting")||{};e&&r&&s&&(t=e,d=`https://${r}${s}?uuid=${e}`)}t&&d&&Object.assign(e,{videoCacheKey:t,vastUrl:d})}},priority:-10},bidderCode:{fn(e,i,t){e.bidderCode=t.seatbid.seat,e.adapterCode=(0,n.A)(i,"ext.prebid.meta.adaptercode")||t.bidRequest?.bidder||e.bidderCode}},pbsBidId:{fn(e,i){const t=(0,n.A)(i,"ext.prebid.bidid");(0,s.isStr)(t)&&(e.pbsBidId=t)}},adserverTargeting:{fn(e,i){const t=(0,n.A)(i,"ext.prebid.targeting");(0,s.isPlainObject)(t)&&(e.adserverTargeting=t)}},extPrebidMeta:{fn(e,i){e.meta=(0,s.mergeDeep)({},(0,n.A)(i,"ext.prebid.meta"),e.meta)}},pbsWurl:{fn(e,i){const t=(0,n.A)(i,"ext.prebid.events.win");(0,s.isStr)(t)&&(e.pbsWurl=t)}}},[r.Cf]:{serverSideStats:{fn(e,i,t){Object.entries({errors:"serverErrors",responsetimemillis:"serverResponseTimeMs"}).forEach((e=>{let[d,r]=e;const s=(0,n.A)(i,`ext.${d}.${t.bidderRequest.bidderCode}`);s&&(t.bidderRequest[r]=s,t.bidRequests.forEach((e=>e[r]=s)))}))}}}};var u=t(89766);const m=(0,s.memoize)((()=>(0,d.U)((0,u.T)(),l,(0,r.yB)(r.e4))))},25825:(e,i,t)=>{t.d(i,{o:()=>s,s:()=>n});var d=t(71371),r=t(75561);const n={[d.D4]:"banner",[d.s6]:"native",[d.G_]:"video"};function s(e,i,t){let s=t.mediaType;s||(s=r.X.hasOwnProperty(i.mtype)?r.X[i.mtype]:i.ext?.prebid?.type,n.hasOwnProperty(s)||(s=d.D4)),e.mediaType=s}},43323:(e,i,t)=>{t.d(i,{W:()=>r});var d=t(63172);function r(e,i){let t=i.params;t&&(0,d.J)(e,`ext.prebid.bidder.${i.bidder}`,t)}}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[42809],{72285:(A,t,e)=>{e.d(t,{T:()=>Q});let a=null;const Q=()=>!1!==a;!function(){const A=navigator.userAgent.match(/iPhone OS (\d+)_(\d+)/);if(null!==A&&parseInt(A[1])<17&&!navigator.userAgent.includes("Safari"))return;const t=document.createElement("video");t.src="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAADxtZGF0AAAAMGWIhAAV//73ye/Apuvb3rW/k89I/Cy3PsIqP39atohOSV14BYa1heKCYgALQC5K4QAAAwZtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAD6AABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACMHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAoAAAAFoAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAA+gAAAAAAAEAAAAAAahtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAEAAAABAAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAFTbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABE3N0YmwAAACvc3RzZAAAAAAAAAABAAAAn2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAoABaAEgAAABIAAAAAAAAAAEVTGF2YzYwLjMxLjEwMiBsaWJ4MjY0AAAAAAAAAAAAAAAY//8AAAA1YXZjQwFkAAr/4QAYZ2QACqzZQo35IQAAAwABAAADAAIPEiWWAQAGaOvjyyLA/fj4AAAAABRidHJ0AAAAAAAAAaAAAAGgAAAAGHN0dHMAAAAAAAAAAQAAAAEAAEAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAADQAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjYwLjE2LjEwMA==",t.setAttribute("playsinline","true"),t.muted=!0,t.play().then((()=>{a=!0,t.src=""})).catch((()=>{a=!1}))}()}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[14577],{76568:(n,e,s)=>{function u(n,e,s){return s?n+e+"="+encodeURIComponent(s)+"&":n}s.d(e,{v:()=>u})}}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[44599],{50791:(e,r,t)=>{t.d(r,{I:()=>D});var a=t(7873),s=t(91069),i=t(70433),n=t(95789),o=t(43272),d=t(57377),p=t(71371),c=t(15901),l=t(63895),m=t(12938),u=t(12693),_=t(82621),f=t(12449),g=t(24673),b=t(554),y=t(2349),v=t(25761),h=t(29906);const k="appnexus",x="https://ib.adnxs.com/ut/v3/prebid",I="https://ib.adnxs-simple.com/ut/v3/prebid",w=["id","minduration","maxduration","skippable","playback_method","frameworks","context","skipoffset"],C=["minduration","maxduration","skip","skipafter","playbackmethod","api","startdelay","placement","plcmt"],A=["age","externalUid","external_uid","segments","gender","dnt","language"],O=["geo","device_id"],E=["enabled","dongle","member_id","debug_timeout"],T={apn_debug_dongle:"dongle",apn_debug_member_id:"member_id",apn_debug_timeout:"debug_timeout"},S={playback_method:{unknown:0,auto_play_sound_on:1,auto_play_sound_off:2,click_to_play:3,mouse_over:4,auto_play_sound_unknown:5},context:{unknown:0,pre_roll:1,mid_roll:2,post_roll:3,outstream:4,"in-banner":5,"in-feed":6,interstitial:7,accompanying_content_pre_roll:8,accompanying_content_mid_roll:9,accompanying_content_post_roll:10}},j={body:"description",body2:"desc2",cta:"ctatext",image:{serverName:"main_image",requiredParams:{required:!0}},icon:{serverName:"icon",requiredParams:{required:!0}},sponsoredBy:"sponsored_by",privacyLink:"privacy_link",salePrice:"saleprice",displayUrl:"displayurl"},N="<script",U=/\/\/cdn\.adnxs\.com\/v|\/\/cdn\.adnxs\-simple\.com\/v/,R="trk.js",P=(0,m.vM)({bidderCode:k}),q=new Map([[1,"Mobile/Tablet - General"],[2,"Personal Computer"],[3,"Connected TV"],[4,"Phone"],[5,"Tablet"],[6,"Connected Device"],[7,"Set Top Box"],[8,"OOH Device"]]),D={code:k,gvlid:32,aliases:y.DX,supportedMediaTypes:[p.D4,p.G_,p.s6],isBidRequestValid:function(e){return!!(e.params.placementId||e.params.placement_id||e.params.member&&(e.params.invCode||e.params.inv_code))},buildRequests:function(e,r){const t=(e=(0,f.Xj)(e)).map(M),a=(0,c.I6)(e,$);let i={};!0===o.$W.getConfig("coppa")&&(i={coppa:!0}),a&&Object.keys(a.params.user).filter((e=>(0,c.mK)(A,e))).forEach((e=>{let r=(0,y.vk)(e);if("segments"===e&&(0,s.isArray)(a.params.user[e])){let t=[];a.params.user[e].forEach((e=>{(0,s.isNumber)(e)?t.push({id:e}):(0,s.isPlainObject)(e)&&t.push(e)})),i[r]=t}else"segments"!==e&&(i[r]=a.params.user[e])}));const n=(0,c.I6)(e,G);let d;n&&n.params&&n.params.app&&(d={},Object.keys(n.params.app).filter((e=>(0,c.mK)(O,e))).forEach((e=>d[e]=n.params.app[e])));const p=(0,c.I6)(e,K);let l;p&&p.params&&n.params.app&&n.params.app.id&&(l={appid:p.params.app.id});let m={},u={};const g=P.getCookie("apn_prebid_debug")||null;if(g)try{m=JSON.parse(g)}catch(e){(0,s.logError)("AppNexus Debug Auction Cookie Error:\n\n"+e)}else{Object.keys(T).forEach((e=>{let r=(0,s.getParameterByName)(e);(0,s.isStr)(r)&&""!==r&&(m[T[e]]=r,m.enabled=!0)})),m=(0,v.$)({member_id:"number",debug_timeout:"number"},m);const r=(0,c.I6)(e,L);r&&r.debug&&(m=r.debug)}m&&m.enabled&&Object.keys(m).filter((e=>(0,c.mK)(E,e))).forEach((e=>{u[e]=m[e]}));const k=(0,c.I6)(e,B),w=k?parseInt(k.params.member,10):0,C=e[0].schain,S=(0,c.I6)(e,H),j={tags:[...t],user:i,sdk:{source:"pbjs",version:"9.8.0-pre"},schain:C};S&&(j.iab_support={omidpn:"Appnexus",omidpv:"9.8.0-pre"}),w>0&&(j.member_id=w),n&&(j.device=d),p&&(j.app=l),r?.ortb2?.device&&(j.device=j.device||{},(0,s.mergeDeep)(j.device,function(e){const r={useragent:e.ua,devicetype:q.get(e.devicetype),make:e.make,model:e.model,os:e.os,os_version:e.osv,w:e.w,h:e.h,ppi:e.ppi,pxratio:e.pxratio};return Object.keys(r).reduce(((e,t)=>(r[t]&&(e[t]=r[t]),e)),{})}(r.ortb2.device)));let N=(0,s.deepClone)(r&&r.ortb2),U=(0,s.deepClone)(o.$W.getConfig("appnexusAuctionKeywords"))||{},R=(0,b.QF)(N,U);if(R.length>0&&(j.keywords=R),o.$W.getConfig("adpod.brandCategoryExclusion")&&(j.brand_category_uniqueness=!0),u.enabled&&(j.debug=u,(0,s.logInfo)("AppNexus Debug Auction Settings:\n\n"+JSON.stringify(u,null,4))),r&&r.gdprConsent&&(j.gdpr_consent={consent_string:r.gdprConsent.consentString,consent_required:r.gdprConsent.gdprApplies},r.gdprConsent.addtlConsent&&-1!==r.gdprConsent.addtlConsent.indexOf("~"))){let e=r.gdprConsent.addtlConsent,t=e.substring(e.indexOf("~")+1);j.gdpr_consent.addtl_consent=t.split(".").map((e=>parseInt(e,10)))}if(r&&r.uspConsent&&(j.us_privacy=r.uspConsent),r?.gppConsent?j.privacy={gpp:r.gppConsent.gppString,gpp_sid:r.gppConsent.applicableSections}:r?.ortb2?.regs?.gpp&&(j.privacy={gpp:r.ortb2.regs.gpp,gpp_sid:r.ortb2.regs.gpp_sid}),r&&r.refererInfo){let e={rd_ref:encodeURIComponent(r.refererInfo.topmostLocation),rd_top:r.refererInfo.reachedTop,rd_ifs:r.refererInfo.numIframes,rd_stk:r.refererInfo.stack.map((e=>encodeURIComponent(e))).join(",")},t=r.refererInfo.canonicalUrl;(0,s.isStr)(t)&&""!==t&&(e.rd_can=t),j.referrer_detection=e}(0,c.I6)(e,W)&&e.filter(W).forEach((e=>{const r=function(e,r){const{durationRangeSec:t,requireExactDuration:a}=r.mediaTypes.video,s=function(e){const{adPodDurationSec:r,durationRangeSec:t,requireExactDuration:a}=e,s=Math.min(...t),i=Math.floor(r/s);return a?Math.max(i,t.length):i}(r.mediaTypes.video),i=Math.max(...t),n=e.filter((e=>e.uuid===r.bidId));let o=(0,y.GS)(...n,s);if(a){const e=Math.ceil(s/t.length),r=(0,h.i)(o,e);t.forEach(((e,t)=>{r[t].map((r=>{V(r,"minduration",e),V(r,"maxduration",e)}))}))}else o.map((e=>V(e,"maxduration",i)));return o}(t,e),a=j.tags.filter((r=>r.uuid!==e.bidId));j.tags=[...a,...r]}));if(e[0].userId){let r=[];e[0].userIdAsEids.forEach((e=>{!e||!e.uids||e.uids.length<1||e.uids.forEach((t=>{let a={source:e.source,id:t.id};"adserver.org"==e.source?a.rti_partner="TDID":"uidapi.com"==e.source&&(a.rti_partner="UID2"),r.push(a)}))})),r.length&&(j.eids=r)}if(r?.ortb2?.regs?.ext?.dsa){const e=r.ortb2.regs.ext.dsa,t={};if(["dsarequired","pubrender","datatopub"].forEach((r=>{(0,s.isNumber)(e[r])&&(t[r]=e[r])})),(0,s.isArray)(e.transparency)&&e.transparency.every((e=>(0,s.isPlainObject)(e)))){const r=[];e.transparency.forEach((e=>{(0,s.isStr)(e.domain)&&""!=e.domain&&(0,s.isArray)(e.dsaparams)&&e.dsaparams.every((e=>(0,s.isNumber)(e)))&&r.push(e)})),r.length>0&&(t.transparency=r)}(0,s.isEmpty)(t)||(j.dsa=t)}t[0].publisher_id&&(j.publisher_id=t[0].publisher_id);const D=function(e,r){let t=[],a={withCredentials:!0},i=x;(0,_.C)(r?.gdprConsent)||(i=I);"TRUE"!==(0,s.getParameterByName)("apn_test").toUpperCase()&&!0!==o.$W.getConfig("apn_test")||(a.customHeaders={"X-Is-Test":1});if(e.tags.length>15){const n=(0,s.deepClone)(e);(0,h.i)(e.tags,15).forEach((e=>{n.tags=e;const s=JSON.stringify(n);t.push({method:"POST",url:i,data:s,bidderRequest:r,options:a})}))}else{const s=JSON.stringify(e);t={method:"POST",url:i,data:s,bidderRequest:r,options:a}}return t}(j,r);return D},interpretResponse:function(e,r){let{bidderRequest:t}=r;e=e.body;const a=[];if(!e||e.error){let r=`in response for ${t.bidderCode} adapter`;return e&&e.error&&(r+=`: ${e.error}`),(0,s.logError)(r),a}if(e.tags&&e.tags.forEach((e=>{const r=(o=e)&&o.ads&&o.ads.length&&(0,c.I6)(o.ads,(e=>e.rtb));var o;if(r){if((!0===u.u.get(t.bidderCode,"allowZeroCpmBids")?r.cpm>=0:r.cpm>0)&&(0,c.mK)(this.supportedMediaTypes,r.ad_type)){const o=function(e,r,t){const a=(0,s.getBidRequest)(e.uuid,[t]),o=(0,s.getUniqueIdentifierStr)(),d={adId:o,requestId:e.uuid,cpm:r.cpm,creativeId:r.creative_id,dealId:r.deal_id,currency:"USD",netRevenue:!0,ttl:300,adUnitCode:a.adUnitCode,appnexus:{buyerMemberId:r.buyer_member_id,dealPriority:r.deal_priority,dealCode:r.deal_code}};r.adomain&&(d.meta=Object.assign({},d.meta,{advertiserDomains:[r.adomain]}));r.advertiser_id&&(d.meta=Object.assign({},d.meta,{advertiserId:r.advertiser_id}));r.dsa&&(d.meta=Object.assign({},d.meta,{dsa:r.dsa}));function m(e){return{ver:"1.0",complete:0,nodes:[{bsid:e.buyer_member_id.toString()}]}}r.buyer_member_id&&(d.meta=Object.assign({},d.meta,{dchain:m(r)}));r.brand_id&&(d.meta=Object.assign({},d.meta,{brandId:r.brand_id}));if(r.rtb.video){Object.assign(d,{width:r.rtb.video.player_width,height:r.rtb.video.player_height,vastImpUrl:r.notify_url,ttl:3600});switch((0,i.A)(a,"mediaTypes.video.context")){case p.LM:const a=g.n[r.brand_category_id]?g.n[r.brand_category_id]:null;d.meta=Object.assign({},d.meta,{primaryCatId:a});const o=r.deal_priority;d.video={context:p.LM,durationSeconds:Math.floor(r.rtb.video.duration_ms/1e3),dealTier:o},d.vastUrl=r.rtb.video.asset_url;break;case l.H6:if(d.adResponse=e,d.adResponse.ad=d.adResponse.ads[0],d.adResponse.ad.video=d.adResponse.ad.rtb.video,d.vastXml=r.rtb.video.content,r.renderer_url){const a=(0,c.I6)(t.bids,(r=>r.bidId===e.uuid));let o=(0,i.A)(a,"mediaTypes.video.renderer.options");o||(o=(0,i.A)(a,"renderer.options")),d.renderer=function(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const a=n.A4.install({id:r.renderer_id,url:r.renderer_url,config:t,loaded:!1,adUnitCode:e});try{a.setRender(F)}catch(e){(0,s.logWarn)("Prebid Error calling setRender on renderer",e)}return a.setEventHandlers({impression:()=>(0,s.logMessage)("AppNexus outstream video impression event"),loaded:()=>(0,s.logMessage)("AppNexus outstream video loaded event"),ended:()=>{(0,s.logMessage)("AppNexus outstream renderer video event"),document.querySelector(`#${e}`).style.display="none"}}),a}(d.adUnitCode,r,o)}break;case l.mn:d.vastUrl=r.notify_url+"&redir="+encodeURIComponent(r.rtb.video.asset_url)}}else if(r.rtb[p.s6]){const e=r.rtb[p.s6];let t;if(function(e){if(!e||""===e)return!1;let r=e.match(U),t=null!=r&&r.length>=1,a=e.match(R),s=null!=a&&a.length>=1;return e.startsWith(N)&&s&&t}(r.viewability.config)){let e="pbjs_adid="+o+";pbjs_auc="+a.adUnitCode;t=r.viewability.config.replace("dom_id=%native_dom_id%",e)}let i=e.javascript_trackers;null==i?i=t:(0,s.isStr)(i)?i=[i,t]:i.push(t),d[p.s6]={title:e.title,body:e.desc,body2:e.desc2,cta:e.ctatext,rating:e.rating,sponsoredBy:e.sponsored,privacyLink:e.privacy_link,address:e.address,downloads:e.downloads,likes:e.likes,phone:e.phone,price:e.price,salePrice:e.saleprice,clickUrl:e.link.url,displayUrl:e.displayurl,clickTrackers:e.link.click_trackers,impressionTrackers:e.impression_trackers,video:e.video,javascriptTrackers:i},e.main_img&&(d.native.image={url:e.main_img.url,height:e.main_img.height,width:e.main_img.width}),e.icon&&(d.native.icon={url:e.icon.url,height:e.icon.height,width:e.icon.width})}else{Object.assign(d,{width:r.rtb.banner.width,height:r.rtb.banner.height,ad:r.rtb.banner.content});try{if(r.rtb.trackers)for(let e=0;e<r.rtb.trackers[0].impression_urls.length;e++){const t=r.rtb.trackers[0].impression_urls[e],a=(0,s.createTrackPixelHtml)(t);d.ad+=a}}catch(e){(0,s.logError)("Error appending tracking pixel",e)}}return d}(e,r,t);o.mediaType=function(e){const r=e.ad_type;return r===p.G_?p.G_:r===p.s6?p.s6:p.D4}(r),a.push(o)}}})),e.debug&&e.debug.debug_info){let r="AppNexus Debug Auction for Prebid\n\n"+e.debug.debug_info;r=r.replace(/(<td>|<th>)/gm,"\t").replace(/(<\/td>|<\/th>)/gm,"\n").replace(/^<br>/gm,"").replace(/(<br>\n|<br>)/gm,"\n").replace(/<h1>(.*)<\/h1>/gm,"\n\n===== $1 =====\n\n").replace(/<h[2-6]>(.*)<\/h[2-6]>/gm,"\n\n*** $1 ***\n\n").replace(/(<([^>]+)>)/gim,""),(0,s.logMessage)("https://console.appnexus.com/docs/understanding-the-debug-auction"),(0,s.logMessage)(r)}return a},getUserSyncs:function(e,r,t,a,s){if(e.iframeEnabled&&(0,_.C)(t))return[{type:"iframe",url:"https://acdn.adnxs.com/dmp/async_usersync.html"}]}};function M(e){const r={};Object.keys(e.params).forEach((r=>{let t=(0,y.vk)(r);t!==r&&(e.params[t]=e.params[r],delete e.params[r])})),r.sizes=z(e.sizes),r.primary_size=r.sizes[0],r.ad_types=[],r.uuid=e.bidId,e.params.placement_id?r.id=parseInt(e.params.placement_id,10):r.code=e.params.inv_code;const t=(0,s.getParameterByName)("ast_override_div");if((0,s.isStr)(t)&&""!==t){const a=t.split(",").find((r=>r.startsWith(`${e.adUnitCode}:`)));if(a){const e=a.split(":")[1];e&&(r.force_creative_id=parseInt(e,10))}}r.allow_smaller_sizes=e.params.allow_smaller_sizes||!1,r.use_pmt_rule="boolean"==typeof e.params.use_payment_rule?e.params.use_payment_rule:"boolean"==typeof e.params.use_pmt_rule&&e.params.use_pmt_rule,r.prebid=!0,r.disable_psa=!0;let a=function(e){if(!(0,s.isFn)(e.getFloor))return e.params.reserve?e.params.reserve:null;let r=e.getFloor({currency:"USD",mediaType:"*",size:"*"});if((0,s.isPlainObject)(r)&&!isNaN(r.floor)&&"USD"===r.currency)return r.floor;return null}(e);if(a&&(r.reserve=a),e.params.position)r.position={above:1,below:2}[e.params.position]||0;else{let t=(0,i.A)(e,"mediaTypes.banner.pos")||(0,i.A)(e,"mediaTypes.video.pos");0!==t&&1!==t&&3!==t||(r.position=3===t?2:t)}e.params.traffic_source_code&&(r.traffic_source_code=e.params.traffic_source_code),e.params.private_sizes&&(r.private_sizes=z(e.params.private_sizes)),e.params.supply_type&&(r.supply_type=e.params.supply_type),e.params.pub_click&&(r.pubclick=e.params.pub_click),e.params.ext_inv_code&&(r.ext_inv_code=e.params.ext_inv_code),e.params.publisher_id&&(r.publisher_id=parseInt(e.params.publisher_id,10)),e.params.external_imp_id&&(r.external_imp_id=e.params.external_imp_id);const n=(0,b.T_)((0,b.gg)((0,i.A)(e,"ortb2Imp.ext.data.keywords")),e.params?.keywords);n.length>0&&(r.keywords=n);let o=(0,i.A)(e,"ortb2Imp.ext.gpid")||(0,i.A)(e,"ortb2Imp.ext.data.pbadslot");if(o&&(r.gpid=o),(e.mediaType===p.s6||(0,i.A)(e,`mediaTypes.${p.s6}`))&&(r.ad_types.push(p.s6),0===r.sizes.length&&(r.sizes=z([1,1])),e.nativeParams)){const t=function(e){const r={};return Object.keys(e).forEach((t=>{const a=j[t]&&j[t].serverName||j[t]||t,i=j[t]&&j[t].requiredParams;r[a]=Object.assign({},i,e[t]);if(!(a!==j.image.serverName&&a!==j.icon.serverName)&&r[a].sizes){let e=r[a].sizes;((0,s.isArrayOfNums)(e)||(0,s.isArray)(e)&&e.length>0&&e.every((e=>(0,s.isArrayOfNums)(e))))&&(r[a].sizes=z(r[a].sizes))}a===j.privacyLink&&(r.privacy_supported=!0)})),r}(e.nativeParams);r[p.s6]={layouts:[t]}}{const t=(0,i.A)(e,`mediaTypes.${p.G_}`),a=(0,i.A)(e,"mediaTypes.video.context");r.hb_source=t&&"adpod"===a?7:1,(e.mediaType===p.G_||t)&&r.ad_types.push(p.G_),(e.mediaType===p.G_||t&&"outstream"!==a)&&(r.require_asset_url=!0),e.params.video&&(r.video={},Object.keys(e.params.video).filter((e=>(0,c.mK)(w,e))).forEach((t=>{switch(t){case"context":case"playback_method":let a=e.params.video[t];a=(0,s.isArray)(a)?a[0]:a,r.video[t]=S[t][a];break;case"frameworks":break;default:r.video[t]=e.params.video[t]}})),e.params.video.frameworks&&(0,s.isArray)(e.params.video.frameworks)&&(r.video_frameworks=e.params.video.frameworks)),t&&(r.video=r.video||{},Object.keys(t).filter((e=>(0,c.mK)(C,e))).forEach((e=>{switch(e){case"minduration":case"maxduration":"number"!=typeof r.video[e]&&(r.video[e]=t[e]);break;case"skip":"boolean"!=typeof r.video.skippable&&(r.video.skippable=1===t[e]);break;case"skipafter":"number"!=typeof r.video.skipoffset&&(r.video.skippoffset=t[e]);break;case"playbackmethod":if("number"!=typeof r.video.playback_method){let a=t[e];a=(0,s.isArray)(a)?a[0]:a,a>=1&&a<=4&&(r.video.playback_method=a)}break;case"api":if(!r.video_frameworks&&(0,s.isArray)(t[e])){let a=t[e].map((e=>{let r=4===e?5:5===e?4:e;if(r>=1&&r<=5)return r})).filter((e=>e));r.video_frameworks=a}break;case"startdelay":case"plcmt":case"placement":if("number"!=typeof r.video.context){const e=t.plcmt,a=t.placement,s=t.startdelay,i=function(e,r){if(!e)return;if(2===e){if(void 0===r)return;if(0===r)return"accompanying_content_pre_roll";if(-1===r)return"accompanying_content_mid_roll";if(-2===r)return"accompanying_content_post_roll"}else{if(3===e)return"interstitial";if(4===e)return"outstream"}}(e,s)||function(e){if(!e)return;if(2===e)return"in-banner";if(3===e)return"outstream";if(4===e)return"in-feed";if(5===e)return"intersitial"}(a)||function(e){if(!e)return;if(0===e)return"pre_roll";if(-1===e)return"mid_roll";if(-2===e)return"post_roll"}(s);r.video.context=S.context[i]}}}))),e.renderer&&(r.video=Object.assign({},r.video,{custom_renderer_present:!0}))}return e.params.frameworks&&(0,s.isArray)(e.params.frameworks)&&(r.banner_frameworks=e.params.frameworks),(0,i.A)(e,`mediaTypes.${p.D4}`)&&r.ad_types.push(p.D4),0===r.ad_types.length&&delete r.ad_types,r}function z(e){let r=[],t={};if((0,s.isArray)(e)&&2===e.length&&!(0,s.isArray)(e[0]))t.width=parseInt(e[0],10),t.height=parseInt(e[1],10),r.push(t);else if("object"==typeof e)for(let a=0;a<e.length;a++){let s=e[a];t={},t.width=parseInt(s[0],10),t.height=parseInt(s[1],10),r.push(t)}return r}function $(e){return!!e.params.user}function B(e){return!!parseInt(e.params.member,10)}function G(e){if(e.params)return!!e.params.app}function K(e){return e.params&&e.params.app?!!e.params.app.id:!!e.params.app}function L(e){return!!e.debug}function W(e){return e.mediaTypes&&e.mediaTypes.video&&e.mediaTypes.video.context===p.LM}function H(e){let r=!1;const t=e.params,a=e.params.video;return t.frameworks&&(0,s.isArray)(t.frameworks)&&(r=(0,c.mK)(e.params.frameworks,6)),!r&&a&&a.frameworks&&(0,s.isArray)(a.frameworks)&&(r=(0,c.mK)(e.params.video.frameworks,6)),r}function V(e,r,t){(0,s.isEmpty)(e.video)&&(e.video={}),e.video[r]=t}function F(e,r){!function(e){try{const r=document.getElementById(e).querySelectorAll("div[id^='google_ads']");r[0]&&r[0].style.setProperty("display","none")}catch(e){}}(e.adUnitCode),function(e){try{const r=document.getElementById(e).querySelectorAll("script[id^='sas_script']");r[0].nextSibling&&"iframe"===r[0].nextSibling.localName&&r[0].nextSibling.style.setProperty("display","none")}catch(e){}}(e.adUnitCode),e.renderer.push((()=>{(r?.defaultView||window).ANOutstreamVideo.renderAd({tagId:e.adResponse.tag_id,sizes:[e.getSize().split("x")],targetId:e.adUnitCode,uuid:e.adResponse.uuid,adResponse:e.adResponse,rendererOptions:e.renderer.getConfig()},J.bind(null,e))}))}function J(e,r,t){e.renderer.handleVideoEvent({id:r,eventName:t})}(0,d.a$)(D),(0,a.E)("appnexusBidAdapter")}},e=>{e.O(0,[60802,97247,44982,95444,42698,12126,51085],(()=>{return r=50791,e(e.s=r);var r}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[38793],{96345:(e,n,t)=>{var i=t(7873),s=t(91069),o=t(63172),a=t(43272),r=t(16916),c=t(20687),p=t(20965),l=t(25555),g=t(2604),u=t(63806);let d,f,h,m,P=!1;function S(e,n){let{onSuccess:t,onError:i}=n;new l.k((n=>n(e()))).then(t,(e=>{e instanceof b?i(e.message,...e.args):i("GPP error:",e)}))}class b{constructor(e,n){this.message=e,this.args=null==n?[]:[n]}}class C{apiVersion="1.1";static INST;static get(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p.c5;if(null==this.INST){const n=e({apiName:"__gpp",apiArgs:["command","callback","parameter"],mode:p.q4});if(null==n)throw new b("GPP CMP not found");this.INST=new this(n)}return this.INST}#e;#n;#t=[];initialized=!1;constructor(e){this.cmp=e,[this.#e,this.#n]=[0,1].map((e=>n=>{for(;this.#t.length;)this.#t.pop()[e](n)}))}init(e){const n=this.updateWhenReady(e);return this.initialized||(e.gppVersion!==this.apiVersion&&(0,s.logWarn)(`Unrecognized GPP CMP version: ${e.apiVersion}. Continuing using GPP API version ${this.apiVersion}...`),this.initialized=!0,this.cmp({command:"addEventListener",callback:(e,n)=>{null==n||n?"error"===e?.pingData?.cmpStatus?this.#n(new b('CMP status is "error"; please check CMP setup',e)):this.isCMPReady(e?.pingData||{})&&["sectionChange","signalStatus"].includes(e?.eventName)&&this.#e(this.updateConsent(e.pingData)):this.#n(new b("Received error response from CMP",e))}})),n}refresh(){return this.cmp({command:"ping"}).then(this.init.bind(this))}updateConsent(e){return new l.k((n=>{if(null==e||(0,s.isEmpty)(e))throw new b("Received empty response from CMP",e);const t=w(e);(0,s.logInfo)("Retrieved GPP consent from CMP:",t),n(t)}))}nextUpdate(){return new l.k(((e,n)=>{this.#t.push([e,n])}))}updateWhenReady(e){return this.isCMPReady(e)?this.updateConsent(e):this.nextUpdate()}isCMPReady(e){return"ready"===e.signalStatus}}const v={iab:function(e){let{onSuccess:n,onError:t}=e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p.c5;S((()=>C.get(i).refresh()),{onSuccess:n,onError:t})},static:function(e){return S((()=>w(h)),e)}};function y(e){let n=!1,t=null;function i(i,s,o){if(null!=t&&clearTimeout(t),n=!0,r.ad.setConsentData(i),"function"==typeof e){for(var a=arguments.length,c=new Array(a>3?a-3:0),p=3;p<a;p++)c[p-3]=arguments[p];e(s,o,...c)}}if(!v.hasOwnProperty(d))return void i(null,!1,`GPP CMP framework (${d}) is not a supported framework.  Aborting consentManagement module and resuming auction.`);const s={onSuccess:e=>i(e,!1),onError:function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),s=1;s<n;s++)t[s-1]=arguments[s];i(null,!0,e,...t)}};if(v[d](s),!n){const e=()=>{const e=e=>{i(e,!1,"GPP CMP did not load, continuing auction...")};S((()=>w(m)),{onSuccess:e,onError:()=>e(k())})};0===f?e():t=setTimeout(e,f)}}const M=(0,u.R)("gpp",(()=>m),y);function w(e){if(null!=e?.applicableSections&&!Array.isArray(e.applicableSections)||null!=e?.gppString&&!(0,s.isStr)(e.gppString)||null!=e?.parsedSections&&!(0,s.isPlainObject)(e.parsedSections))throw new b("CMP returned unexpected value during lookup process.",e);return["usnatv1","uscav1"].forEach((n=>{e?.parsedSections?.[n]&&(0,s.logWarn)(`Received invalid section from cmp: '${n}'. Some functionality may not work as expected`,e)})),k(e)}function k(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return m={gppString:e?.gppString,applicableSections:e?.applicableSections||[],parsedSections:e?.parsedSections||{},gppData:e},r.ad.setConsentData(e),m}a.$W.getConfig("consentManagement",(e=>function(e){(e=e&&e.gpp)&&"object"==typeof e?((0,s.isStr)(e.cmpApi)?d=e.cmpApi:(d="iab",(0,s.logInfo)("consentManagement.gpp config did not specify cmp.  Using system default setting (iab).")),(0,s.isNumber)(e.timeout)?f=e.timeout:(f=1e4,(0,s.logInfo)("consentManagement.gpp config did not specify timeout.  Using system default setting (10000).")),"static"===d&&((0,s.isPlainObject)(e.consentData)?(h=e.consentData,f=0):(0,s.logError)("consentManagement.gpp config with cmpApi: 'static' did not specify consentData. No consents will be available to adapters.")),(0,s.logInfo)("consentManagement.gpp module has been activated..."),P||((0,i.m)().requestBids.before(M,50),g.U3.before(((e,n)=>e(Object.assign({gppConsent:r.ad.getConsentData()},n))))),P=!0,r.ad.enable(),y()):(0,s.logWarn)("consentManagement.gpp config not defined, exiting consent manager module")}(e.consentManagement))),c.w.before((function(e,n){return e(n.then((e=>{const n=r.ad.getConsentData();return n&&(Array.isArray(n.applicableSections)&&(0,o.J)(e,"regs.gpp_sid",n.applicableSections),(0,o.J)(e,"regs.gpp",n.gppString)),e})))})),(0,i.E)("consentManagementGpp")}},e=>{e.O(0,[57109,90010,60802,51085],(()=>{return n=96345,e(e.s=n);var n}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[15081],{66117:(n,e,t)=>{var o=t(7873),s=t(91069),i=t(63172),r=t(43272),a=t(16916),c=t(15901),l=t(1e3),u=t(20687),d=t(20965),p=t(63806);const g=2;let f,m,b,C,v,S,M=!1,y=!1;const A={iab:function(n){let{onSuccess:e,onError:t,onEvent:o}=n;const i=(0,d.c5)({apiName:"__tcfapi",apiVersion:g,apiArgs:["command","version","callback","parameter"]});if(!i)return t("TCF2 CMP not found.");i.isDirect?(0,s.logInfo)("Detected CMP API is directly accessible, calling it now..."):(0,s.logInfo)("Detected CMP is outside the current iframe where Prebid.js is located, calling it now...");i({command:"addEventListener",callback:function(n,i){(0,s.logInfo)("Received a response from CMP",n),i?(o(n),!1!==n.gdprApplies&&"tcloaded"!==n.eventStatus&&"useractioncomplete"!==n.eventStatus||h(n,{onSuccess:e,onError:t})):t("CMP unable to register callback function.  Please check CMP setup.")}})},static:function(n){let{onSuccess:e,onError:t}=n;h(C,{onSuccess:e,onError:t})}};function P(n){let e,t,o=!1,s=null,i=!1;function r(n){null!=s&&clearTimeout(s),o||null==n||(0===n?e():s=setTimeout(e,n))}function l(e,t,s){if(r(null),o=!0,a.mW.setConsentData(e),"function"==typeof n){for(var i=arguments.length,c=new Array(i>3?i-3:0),l=3;l<i;l++)c[l-3]=arguments[l];n(t,s,...c)}}if(!(0,c.mK)(Object.keys(A),f))return void l(null,!1,`CMP framework (${f}) is not a supported framework.  Aborting consentManagement module and resuming auction.`);const u={onSuccess:n=>l(n,!1),onError:function(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),o=1;o<e;o++)t[o-1]=arguments[o];l(null,!0,n,...t)},onEvent:function(n){t=n,i||(i=!0,null!=v&&r(v))}};e=()=>{const n=n=>{l(n,!1,(i?"Timeout waiting for user action on CMP":"CMP did not load")+", continuing auction...")};h(t,{onSuccess:n,onError:()=>n(w(void 0))})},A[f](u),null!=v&&i||r(m)}const E=(0,p.R)("gdpr",(()=>S),P);function h(n,e){let{onSuccess:t,onError:o}=e;!function(){const e=n&&"boolean"==typeof n.gdprApplies?n.gdprApplies:b,t=n&&n.tcString;return!("boolean"==typeof e&&(!0!==e||t&&(0,s.isStr)(t)))}()?t(w(n)):o("CMP returned unexpected value during lookup process.",n)}function w(n){return S={consentString:n?n.tcString:void 0,vendorData:n||void 0,gdprApplies:n&&"boolean"==typeof n.gdprApplies?n.gdprApplies:b},n&&n.addtlConsent&&(0,s.isStr)(n.addtlConsent)&&(S.addtlConsent=n.addtlConsent),S.apiVersion=g,S}r.$W.getConfig("consentManagement",(n=>function(n){(n=n&&(n.gdpr||n.usp||n.gpp?n.gdpr:n))&&"object"==typeof n?((0,s.isStr)(n.cmpApi)?f=n.cmpApi:(f="iab",(0,s.logInfo)("consentManagement config did not specify cmp.  Using system default setting (iab).")),(0,s.isNumber)(n.timeout)?m=n.timeout:(m=1e4,(0,s.logInfo)("consentManagement config did not specify timeout.  Using system default setting (10000).")),v=(0,s.isNumber)(n.actionTimeout)?n.actionTimeout:null,b=!0===n.defaultGdprScope,M=!!n.dsaPlatform,(0,s.logInfo)("consentManagement module has been activated..."),"static"===f&&((0,s.isPlainObject)(n.consentData)?(C=n.consentData,null!=C?.getTCData&&(C=C.getTCData),m=0):(0,s.logError)("consentManagement config with cmpApi: 'static' did not specify consentData. No consents will be available to adapters.")),y||(0,o.m)().requestBids.before(E,50),y=!0,a.mW.enable(),P()):(0,s.logWarn)("consentManagement (gdpr) config not defined, exiting consent manager")}(n.consentManagement))),u.w.before((function(n,e){return n(e.then((n=>{const e=a.mW.getConsentData();return e&&("boolean"==typeof e.gdprApplies&&(0,i.J)(n,"regs.ext.gdpr",e.gdprApplies?1:0),(0,i.J)(n,"user.ext.consent",e.consentString)),M&&(0,i.J)(n,"regs.ext.dsa.dsarequired",3),n})))})),(0,l.pS)({type:l.S3,name:"gdprAddtlConsent",fn:function(n,e){const t=e.gdprConsent?.addtlConsent;t&&"string"==typeof t&&(0,i.J)(n,"user.ext.ConsentedProvidersSettings.consented_providers",t)}}),(0,o.E)("consentManagementTcf")}},n=>{n.O(0,[60802,57109,90010,51085],(()=>{return e=66117,n(n.s=e);var e}));n.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[98662],{86056:(n,t,e)=>{var o=e(7873),a=e(91069),s=e(63172),i=e(43272),c=e(11445),r=e(16916),u=e(16894),l=e(16833),g=e(20687),f=e(20965);const d="iab";let m,p,P=d,b=50,S=!1;const v={iab:function(n){let{onSuccess:t,onError:e}=n;let o=function(){const n={};return{consentDataCallback:(o,a)=>{a&&o.uspString&&(n.usPrivacy=o.uspString),n.usPrivacy?h(n,{onSuccess:t,onError:e}):e("Unable to get USP consent string.")}}}();const s=(0,f.c5)({apiName:"__uspapi",apiVersion:1,apiArgs:["command","version","callback"]});if(!s)return e("USP CMP not found.");s.isDirect?(0,a.logInfo)("Detected USP CMP is directly accessible, calling it now..."):(0,a.logInfo)("Detected USP CMP is outside the current iframe where Prebid.js is located, calling it now...");s({command:"getUSPData",callback:o.consentDataCallback}),s({command:"registerDeletion",callback:(n,t)=>(null==t||t)&&c.Ay.callDataDeletionRequest(n)}).catch((n=>{(0,a.logError)("Error invoking CMP `registerDeletion`:",n)}))},static:function(n){let{onSuccess:t,onError:e}=n;h(m,{onSuccess:t,onError:e})}};function D(n){let t=null,e=!1;function o(o,a){if(null!=t&&clearTimeout(t),e=!0,r.t6.setConsentData(o),null!=n){for(var s=arguments.length,i=new Array(s>2?s-2:0),c=2;c<s;c++)i[c-2]=arguments[c];n(a,...i)}}if(!v[P])return void o(null,`USP framework (${P}) is not a supported framework. Aborting consentManagement module and resuming auction.`);const a={onSuccess:o,onError:function(n){for(var t=arguments.length,e=new Array(t>1?t-1:0),a=1;a<t;a++)e[a-1]=arguments[a];o(null,`${n} Resuming auction without consent data as per consentManagement config.`,...e)}};v[P](a),e||(0===b?h(void 0,a):t=setTimeout(a.onError.bind(null,"USPAPI workflow exceeded timeout threshold."),b))}const y=(0,u.Ak)("usp",(function(n,t){var e=this;S||U(),D((function(o){if(null!=o){for(var s=arguments.length,i=new Array(s>1?s-1:0),c=1;c<s;c++)i[c-1]=arguments[c];(0,a.logWarn)(o,...i)}n.call(e,t)}))}));function h(n,t){let{onSuccess:e,onError:o}=t;!n||!n.usPrivacy?o("USPAPI returned unexpected value during lookup process.",n):(!function(n){n&&n.usPrivacy&&(p=n.usPrivacy)}(n),e(p))}function U(){let n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];S||((0,a.logInfo)("USPAPI consentManagement module has been activated"+(n?"":` using default values (api: '${P}', timeout: ${b}ms)`)),S=!0,r.t6.enable()),D()}i.$W.getConfig("consentManagement",(n=>function(n){(n=n&&n.usp)&&"object"==typeof n||(0,a.logWarn)("consentManagement.usp config not defined, using defaults"),n&&(0,a.isStr)(n.cmpApi)?P=n.cmpApi:(P=d,(0,a.logInfo)(`consentManagement.usp config did not specify cmpApi. Using system default setting (${d}).`)),n&&(0,a.isNumber)(n.timeout)?b=n.timeout:(b=50,(0,a.logInfo)("consentManagement.usp config did not specify timeout. Using system default setting (50).")),"static"===P&&((0,a.isPlainObject)(n.consentData)&&(0,a.isPlainObject)(n.consentData.getUSPData)?(n.consentData.getUSPData.uspString&&(m={usPrivacy:n.consentData.getUSPData.uspString}),b=0):(0,a.logError)("consentManagement config with cmpApi: 'static' did not specify consentData. No consents will be available to adapters.")),U(!0)}(n.consentManagement))),(0,l.Yn)("requestBids").before(y,50),g.w.before((function(n,t){return n(t.then((n=>{const t=r.t6.getConsentData();return t&&(0,s.J)(n,"regs.ext.us_privacy",t),n})))})),(0,o.E)("consentManagementUsp")}},n=>{n.O(0,[57109,60802,51085],(()=>{return t=86056,n(n.s=t);var t}));n.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[99301],{11057:(n,e,s)=>{var t=s(7873),a=s(43272),l=s(77274);let p=!1;a.$W.getConfig("consentManagement",(n=>{null==n?.consentManagement?.gpp||p||((0,l.l)("usnat",[7]),p=!0)})),(0,t.E)("gppControl_usnat")}},n=>{n.O(0,[40082,60802,51085],(()=>{return e=11057,n(n.s=e);var e}));n.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[27534],{18194:(n,e,t)=>{var s=t(7873),r=t(43272),o=t(77274),i=t(63172),a=t(91069);const l={Version:0,Gpc:0,SharingNotice:0,SaleOptOutNotice:0,SharingOptOutNotice:0,TargetedAdvertisingOptOutNotice:0,SensitiveDataProcessingOptOutNotice:0,SensitiveDataLimitUseNotice:0,SaleOptOut:0,SharingOptOut:0,TargetedAdvertisingOptOut:0,SensitiveDataProcessing:12,KnownChildSensitiveDataConsents:2,PersonalDataConsents:0,MspaCoveredTransaction:0,MspaOptOutOptionMode:0,MspaServiceProviderMode:0};function c(n){let{nullify:e=[],move:t={},fn:s}=n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l;return t=Object.fromEntries(Object.entries(t).map((n=>{let[e,t]=n;return[e,Object.fromEntries(Object.entries(t).map((n=>{let[e,t]=n;return[e,Array.isArray(t)?t:[t]]})).map((n=>{let[e,t]=n;return[--e,t.map((n=>--n))]})))]}))),function(n){const o=Object.fromEntries(Object.entries(r).map((e=>{let[s,r]=e,o=null;if(r>0){if(o=Array(r).fill(null),Array.isArray(n[s])){const e=t[s]||{},i=[];n[s].forEach(((n,t)=>{const[s,a]=e.hasOwnProperty(t)?[e[t],!0]:[[t],!1];s.forEach((e=>{e<r&&!i.includes(e)&&(o[e]=n,a&&i.push(e))}))}))}}else null!=n[s]&&(o=Array.isArray(n[s])?null:n[s]);return[s,o]})));return e.forEach((n=>(0,i.J)(o,n,null))),s&&s(n,o),o}}function u(n,e){e.KnownChildSensitiveDataConsents=0===n.KnownChildSensitiveDataConsents?[0,0]:[1,1]}const p={7:n=>n,8:c({move:{SensitiveDataProcessing:{1:9,2:10,3:8,4:[1,2],5:12,8:3,9:4}},fn(n,e){n.KnownChildSensitiveDataConsents.some((n=>0!==n))&&(e.KnownChildSensitiveDataConsents=[1,1])}}),9:c({fn:u}),10:c({fn:u}),11:c({move:{SensitiveDataProcessing:{3:4,4:5,5:3}},fn:u}),12:c({fn(n,e){const t=n.KnownChildSensitiveDataConsents;let s;s=t.some((n=>0!==n))?2===t[1]&&2===t[2]?[2,1]:[1,1]:[0,0],e.KnownChildSensitiveDataConsents=s}})},f={8:"usca",9:"usva",10:"usco",11:"usut",12:"usct"},O=(()=>{const n=Object.keys(f).map(Number);return function(){let{sections:e={},sids:t=n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.map((n=>{const t=(0,a.prefixLog)(`Cannot set up MSPA controls for SID ${n}:`),s=e[n]||{},r=s.normalizeAs||n;if(!p.hasOwnProperty(r))return void t.logError(`no normalization rules are known for SID ${r}`);const o=s.name||f[n];if("string"==typeof o)return[o,[n],p[r]];t.logError("cannot determine GPP section name")})).filter((n=>null!=n))}})(),v=[];r.$W.getConfig("consentManagement",(n=>{const e=n.consentManagement?.gpp;if(e){for(;v.length;)v.pop()();O(e?.mspa||{}).forEach((n=>{let[e,t,s]=n;return v.push((0,o.l)(e,t,s))}))}})),(0,s.E)("gppControl_usstates")}},n=>{n.O(0,[40082,60802,51085],(()=>{return e=18194,n(n.s=e);var e}));n.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[4584],{84232:(t,e,o)=>{var n=o(7873),a=o(51252),d=o(67314),s=o(43272),r=o(78969),i=o(16833),l=o(15901),c=o(91069),u=o(63172),p=o(70433);let f={},g=!1;function b(t){return(0,a.eu)(t)}const m=t=>(s.$W.getConfig("gptPreAuction")||{}).mcmEnabled?t.replace(/(^\/\d*),\d*\//,"$1/"):t;function h(t){(0,c.logWarn)("pbadslot is deprecated and will soon be removed, use gpid instead",t)}const A=function(t,e){(t=>{const{customGptSlotMatching:e}=f;if(!(0,c.isGptPubadsDefined)())return;const o=t.reduce(((t,e)=>(t[e.code]=t[e.code]||[],t[e.code].push(e),t)),{});window.googletag.pubads().getSlots().forEach((t=>{const n=(0,l.I6)(Object.keys(o),e?e(t):(0,c.isAdUnitCodeMatchingSlot)(t));if(n){const e={name:"gam",adslot:m(t.getAdUnitPath())};o[n].forEach((t=>{(0,u.J)(t,"ortb2Imp.ext.data.adserver",Object.assign({},t.ortb2Imp?.ext?.data?.adserver,e))}))}}))})(e);const{useDefaultPreAuction:o,customPreAuction:n}=f;e.forEach((t=>{t.ortb2Imp=t.ortb2Imp||{},t.ortb2Imp.ext=t.ortb2Imp.ext||{},t.ortb2Imp.ext.data=t.ortb2Imp.ext.data||{};const e=t.ortb2Imp.ext;if(n||o){e.data?.pbadslot&&h(t);let a,d=(0,p.A)(e,"data.adserver.adslot");n?a=n(t,d):o&&(a=((t,e)=>{const o=t.ortb2Imp.ext.data;if(o.pbadslot)return o.pbadslot;if((0,c.isGptPubadsDefined)()){var n=window.googletag.pubads().getSlots().filter((t=>t.getAdUnitPath()===e));if(0!==n.length)return 1===n.length?e:`${e}#${t.code}`}})(t,d)),a&&(e.gpid=e.data.pbadslot=a)}else{h(t);const o=(t=>{const e=t.ortb2Imp.ext.data,{customPbAdSlot:o}=f;if(!e.pbadslot)if(o)e.pbadslot=o(t.code,(0,p.A)(e,"adserver.adslot"));else{try{const o=document.getElementById(t.code);if(o.dataset.adslotid)return void(e.pbadslot=o.dataset.adslotid)}catch(t){}if(!(0,p.A)(e,"adserver.adslot"))return e.pbadslot=t.code,!0;e.pbadslot=e.adserver.adslot}})(t);e.gpid||o||(e.gpid=e.data.pbadslot)}}));for(var a=arguments.length,d=new Array(a>2?a-2:0),s=2;s<a;s++)d[s-2]=arguments[s];return t.call(undefined,e,...d)},v=(t,e)=>{const o=function(t){const e={};return a.Cn.forEach((o=>{const n=t.flatMap((t=>t)).filter((t=>t.taxonomy===o)).map((t=>t.values));e[o]=n.length?n.reduce(((t,e)=>t.filter((t=>e.includes(t))))):[],e[o]={values:e[o]}})),e}(function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d.n.index;return t.map((t=>e.getAuction({auctionId:t})?.getFPD()?.global)).map(b).filter((t=>t))}(function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d.n;return Object.values(t).flatMap((t=>Object.entries(t))).filter((t=>t[0]===r.xS.AD_ID||t[0].startsWith(r.xS.AD_ID+"_"))).flatMap((t=>t[1])).map((t=>e.findBidByAdId(t)?.auctionId)).filter((t=>null!=t)).filter(c.uniques)}(e)));window.googletag.setConfig&&window.googletag.setConfig({pps:{taxonomies:o}}),t(e)},I=t=>{f=(0,c.pick)(t,["enabled",t=>!1!==t,"customGptSlotMatching",t=>"function"==typeof t&&t,"customPbAdSlot",t=>"function"==typeof t&&t,"customPreAuction",t=>"function"==typeof t&&t,"useDefaultPreAuction",t=>t??!0]),f.enabled?g||((0,i.Yn)("makeBidRequests").before(A),(0,i.Yn)("targetingDone").after(v),g=!0):((0,c.logInfo)("GPT Pre-Auction: Turning off module"),f={},(0,i.Yn)("makeBidRequests").getHooks({hook:A}).remove(),(0,i.Yn)("targetingDone").getHooks({hook:v}).remove(),g=!1)};s.$W.getConfig("gptPreAuction",(t=>I(t.gptPreAuction))),I({}),(0,n.E)("gptPreAuction")}},t=>{t.O(0,[33005,60802,51085],(()=>{return e=84232,t(t.s=e);var e}));t.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[53170],{77764:(e,t,i)=>{var r=i(7873),n=i(70433),o=i(91069),a=i(63172),s=i(71371),d=i(43272),p=i(12938),l=i(15901),c=i(57377),u=i(63895),m=i(95789),f=i(51252);const g="ix",b=[s.D4,s.G_,s.s6],x=50,y=[144,144],h={JPY:1},I={PBJS:"p",IX:"x"},v={SITE:["id","name","domain","cat","sectioncat","pagecat","page","ref","search","mobile","privacypolicy","publisher","content","keywords","ext"],USER:["id","buyeruid","yob","gender","keywords","customdata","geo","data","ext"]},A={"liveramp.com":"idl","netid.de":"NETID","neustar.biz":"fabrickId","zeotap.com":"zeotapIdPlus","uidapi.com":"UID2","adserver.org":"TDID","id5-sync.com":"","crwdcntrl.net":"","epsilon.com":"","audigent.com":"","pubcid.org":"","utiq.com":"","criteo.com":"","euid.eu":"","intimatemerger.com":"","33across.com":"","liveintent.indexexchange.com":"","google.com":""},C=["lipbid","criteoId","merkleId","parrableId","connectid","tapadId","quantcastId","pubProvidedId","pairId"],w=["mimes","minduration","maxduration"],O=["mimes","minduration","maxduration","protocols","protocol","startdelay","placement","linearity","skip","skipmin","skipafter","sequence","battr","maxextended","minbitrate","maxbitrate","boxingallowed","playbackmethod","playbackend","delivery","pos","companionad","api","companiontype","ext","playerSize","w","h","plcmt"],U=`${g}_features`,S=(0,p.vM)({bidderCode:g}),E={REQUESTED_FEATURE_TOGGLES:["pbjs_enable_multiformat","pbjs_allow_all_eids"],featureToggles:{},isFeatureEnabled:function(e){return(0,n.A)(this.featureToggles,`features.${e}.activated`,!1)},getFeatureToggles:function(){if(S.localStorageIsEnabled()){const e=(0,o.safeJSONParse)(S.getDataFromLocalStorage(U));(0,n.A)(e,"expiry")&&e.expiry>=(new Date).getTime()?this.featureToggles=e:this.clearFeatureToggles()}},setFeatureToggles:function(e){const t=e.body,i=new Date,r=(0,n.A)(t,"ext.features");r&&(this.featureToggles={expiry:i.setHours(i.getHours()+1),features:r},S.localStorageIsEnabled()&&S.setDataInLocalStorage(U,JSON.stringify(this.featureToggles)))},clearFeatureToggles:function(){this.featureToggles={},S.localStorageIsEnabled()&&S.removeDataFromLocalStorage(U)}};let P=0,T="",D="",_=!1;const k=2;function J(e){const t=j(e,s.G_),i=(0,n.A)(e,"mediaTypes.video"),r=(0,n.A)(e,"params.video");if($(i,r).length)return{};t.video=r?(0,o.deepClone)(e.params.video):{};let d=(0,n.A)(e,"ortb2Imp.ext.tid");d&&(0,a.J)(t,"ext.tid",d),function(e,t){if((0,n.A)(t,"mediaTypes.video.context")===u.H6){let i=(0,n.A)(t,"mediaTypes.video.renderer");if(i||(i=(0,n.A)(t,"renderer")),(0,n.A)(t,"schain",!1))e.displaymanager="pbjs_wrapper";else if(i&&"object"==typeof i){if(void 0!==i.url){let t="";try{t=new URL(i.url).hostname}catch{return}t.includes("js-sec.indexww")?e.displaymanager="ix":e.displaymanager=i.url}}else e.displaymanager="ix"}}(t,e),H(t,e);for(const e in i)-1===O.indexOf(e)||t.video.hasOwnProperty(e)||(t.video[e]=i[e]);if(t.video.minduration>t.video.maxduration)return(0,o.logError)(`IX Bid Adapter: video minduration [${t.video.minduration}] cannot be greater than video maxduration [${t.video.maxduration}]`),{};const p=r&&r.context||i&&i.context;if(function(e){e.video.hasOwnProperty("plcmt")&&(!(0,o.isInteger)(e.video.plcmt)||e.video.plcmt<1||e.video.plcmt>4)&&((0,o.logWarn)(`IX Bid Adapter: video.plcmt [${e.video.plcmt}] must be an integer between 1-4 inclusive`),delete e.video.plcmt)}(t),p&&!t.video.hasOwnProperty("placement")&&(p===u.mn?t.video.placement=1:p===u.H6?(0,n.A)(r,"playerConfig.floatOnScroll")?t.video.placement=5:(t.video.placement=3,_=!0):(0,o.logWarn)(`IX Bid Adapter: Video context '${p}' is not supported`)),!t.video.w||!t.video.h){const i=W((0,n.A)(t,"video.playerSize"))||W((0,n.A)(e,"params.size"));if(!i)return(0,o.logWarn)("IX Bid Adapter: Video size is missing in [mediaTypes.video]"),{};t.video.w=i[0],t.video.h=i[1]}return F(e,t,s.G_),t}function j(e,t){const i={};if(i.id=e.bidId,ne()&&(0,n.A)(e,"params.externalId")&&(0,a.J)(i,"ext.externalID",e.params.externalId),(0,n.A)(e,`params.${t}.siteId`)&&!isNaN(Number(e.params[t].siteId)))switch(t){case s.D4:(0,a.J)(i,"ext.siteID",e.params.banner.siteId.toString());break;case s.G_:(0,a.J)(i,"ext.siteID",e.params.video.siteId.toString());break;case s.s6:(0,a.J)(i,"ext.siteID",e.params.native.siteId.toString())}else e.params.siteId&&(0,a.J)(i,"ext.siteID",e.params.siteId.toString());return!e.params.hasOwnProperty("id")||"string"!=typeof e.params.id&&"number"!=typeof e.params.id||(0,a.J)(i,"ext.sid",String(e.params.id)),i}function F(e,t,i){let r=null,n=null;if(e.params.bidFloor&&e.params.bidFloorCur&&(r={floor:e.params.bidFloor,currency:e.params.bidFloorCur}),(0,o.isFn)(e.getFloor)){let r="*",a="*";if(i&&(0,o.contains)(b,i)){const{w:e,h:n}=t[i];r=i,a=[e,n]}try{n=e.getFloor({mediaType:r,size:a})}catch(e){(0,o.logWarn)("priceFloors module call getFloor failed, error : ",e)}}let d=!1;n?(t.bidfloor=n.floor,t.bidfloorcur=n.currency,(0,a.J)(t,"ext.fl",I.PBJS),d=!0):r&&(t.bidfloor=r.floor,t.bidfloorcur=r.currency,(0,a.J)(t,"ext.fl",I.IX),d=!0),d&&(i==s.D4?((0,a.J)(t,"banner.ext.bidfloor",t.bidfloor),(0,a.J)(t,"banner.ext.fl",t.ext.fl)):i==s.G_?((0,a.J)(t,"video.ext.bidfloor",t.bidfloor),(0,a.J)(t,"video.ext.fl",t.ext.fl)):((0,a.J)(t,"native.ext.bidfloor",t.bidfloor),(0,a.J)(t,"native.ext.fl",t.ext.fl)))}function B(e,t,i){const r={},a=!(!(0,n.A)(e,"exp")||!(0,o.isInteger)(e.exp)),d=(0,n.A)(e,"dealid")||(0,n.A)(e,"ext.dealid");h.hasOwnProperty(t)?r.cpm=e.price/h[t]:r.cpm=e.price/100,r.requestId=e.impid,d&&(r.dealId=d),r.netRevenue=true,r.currency=t,r.creativeId=e.hasOwnProperty("crid")?e.crid:"-",e.mtype!=k||(!e.ext||e.ext.vasturl)&&e.ext?e.ext&&e.ext.vasturl&&(r.vastUrl=e.ext.vasturl):r.vastXml=e.adm;let p=null;if("string"==typeof e.adm&&"{"===e.adm[0]&&"}"===e.adm[e.adm.length-1])try{p=JSON.parse(e.adm)}catch(e){(0,o.logWarn)("adm looks like JSON but failed to parse: ",e)}return e.ext&&e.ext.vasturl||e.mtype==k?(r.width=i.video.w,r.height=i.video.h,r.mediaType=s.G_,r.mediaTypes=i.mediaTypes,r.ttl=a?e.exp:3600):p&&p.native?(r.native={ortb:p.native},r.width=e.w?e.w:1,r.height=e.h?e.h:1,r.mediaType=s.s6,r.ttl=a?e.exp:3600):(r.ad=e.adm,r.width=e.w,r.height=e.h,r.mediaType=s.D4,r.ttl=a?e.exp:300),r.meta={},r.meta.networkId=(0,n.A)(e,"ext.dspid"),r.meta.brandId=(0,n.A)(e,"ext.advbrandid"),r.meta.brandName=(0,n.A)(e,"ext.advbrand"),e.adomain&&e.adomain.length>0&&(r.meta.advertiserDomains=e.adomain),e.ext?.dsa&&(r.meta.dsa=e.ext.dsa),r}function z(e){return Array.isArray(e)&&2===e.length&&(0,o.isInteger)(e[0])&&(0,o.isInteger)(e[1])}function R(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(z(e))return e[0]===t[0]&&e[1]===t[1];for(let i=0;i<e.length;i++)if(e[i][0]===t[0]&&e[i][1]===t[1])return!0;return!1}function $(e,t){const i=[];e||(0,o.logWarn)("IX Bid Adapter: mediaTypes.video is the preferred location for video params in ad unit");for(let r of w){const n=e&&e.hasOwnProperty(r),o=t&&t.hasOwnProperty(r);n||o||i.push(`IX Bid Adapter: ${r} is not included in either the adunit or params level`)}const r=e&&e.hasOwnProperty("protocol"),n=e&&e.hasOwnProperty("protocols"),a=t&&t.hasOwnProperty("protocol"),s=t&&t.hasOwnProperty("protocols");return r||n||a||s||i.push("IX Bid Adapter: protocol/protcols is not included in either the adunit or params level"),i}function W(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return z(e)?e:!!z(e[0])&&e[0]}function X(e,t,i){if(!e)return;return{...(0,l.I6)(i,(t=>t.bidId===e)),...(0,l.I6)(t,(t=>t.id===e))}}function N(e,t,i,r){let s="https://htlb.casalemedia.com/openrtb/pbjs",p=function(e){let t=[],i={};if((0,o.isArray)(e))for(const r of e){const e=A.hasOwnProperty(r.source),o=E.isFeatureEnabled("pbjs_allow_all_eids"),a=(0,n.A)(r,"uids.0");if((e||o)&&a&&(i[r.source]=!0,e&&""!==A[r.source]&&(r.uids[0].ext={rtiPartner:A[r.source]}),t.push(r),t.length>=x))break}return{toSend:t,seenSources:i}}((0,n.A)(e,"0.userIdAsEids")),l=p.toSend;window.headertag&&"function"==typeof window.headertag.getIdentityInfo&&function(e,t){let i=window.headertag.getIdentityInfo();if(i&&"object"==typeof i)for(const r in i){if(e.length>=x)return;if(i.hasOwnProperty(r)){let n=i[r];!n.responsePending&&n.data&&"object"==typeof n.data&&Object.keys(n.data).length&&!t.seenSources[n.data.source]&&e.push(n.data)}}}(l,p);const c=[];let u=function(e){const t={};return t.id=e[0].bidderRequestId.toString(),t.site={},t.ext={},t.ext.source="prebid",t.ext.ixdiag={},t.ext.ixdiag.ls=S.localStorageIsEnabled(),t.imp=[],t.at=1,t}(e);u=function(e,t){t.length>0&&(e.ext.features={},t.forEach((t=>{e.ext.features[t]={activated:E.isFeatureEnabled(t)}})));return e}(u,E.REQUESTED_FEATURE_TOGGLES);let m=function(e,t){var i=e.map((e=>e.adUnitCode)).filter(((e,t,i)=>i.indexOf(e)===t));let r=(0,n.A)(e,"0.userIdAsEids",[]),o={mfu:0,bu:0,iu:0,nu:0,ou:0,allu:0,ren:!1,version:"9.8.0-pre",userIds:V(e[0]),url:window.location.href.split("?")[0],vpd:_,ae:t,eidLength:r.length};for(let t of i){let i=e.filter((e=>e.adUnitCode===t))[0];(0,n.A)(i,"mediaTypes")&&(Object.keys(i.mediaTypes).length>1&&o.mfu++,(0,n.A)(i,"mediaTypes.native")&&o.nu++,(0,n.A)(i,"mediaTypes.banner")&&o.bu++,"outstream"===(0,n.A)(i,"mediaTypes.video.context")&&(o.ou++,re(i)&&(o.ren=!0)),"instream"===(0,n.A)(i,"mediaTypes.video.context")&&o.iu++,o.allu++)}return o}(e,(0,n.A)(t,"paapi.enabled"));for(let e in m)u.ext.ixdiag[e]=m[e];u=function(e,t,i,r,o){const a=(0,n.A)(t,"timeout");a&&(e.ext.ixdiag.tmax=a);d.$W.getConfig("userSync")&&(e.ext.ixdiag.syncsPerBidder=d.$W.getConfig("userSync").syncsPerBidder);e.ext.ixdiag.imps=Object.keys(i).length,e.source={tid:t?.ortb2?.source?.tid},r[0].schain&&(e.source.ext={},e.source.ext.schain=r[0].schain);o.length>0&&(e.user={},e.user.eids=o);document.referrer&&""!==document.referrer&&(e.site.ref=document.referrer);return e}(u,t,i,e,l),u=function(e,t){if(t){t.gdprConsent&&(T=t.gdprConsent,T.hasOwnProperty("gdprApplies")&&(e.regs={ext:{gdpr:T.gdprApplies?1:0}}),T.hasOwnProperty("consentString")&&(e.user=e.user||{},e.user.ext={consent:T.consentString||""},T.hasOwnProperty("addtlConsent")&&T.addtlConsent&&(e.user.ext.consented_providers_settings={addtl_consent:T.addtlConsent}))),t.uspConsent&&((0,a.J)(e,"regs.ext.us_privacy",t.uspConsent),D=t.uspConsent);const i=(0,n.A)(t,"refererInfo.page");i&&(e.site.page=i),t.gppConsent&&((0,a.J)(e,"regs.gpp",t.gppConsent.gppString),(0,a.J)(e,"regs.gpp_sid",t.gppConsent.applicableSections))}d.$W.getConfig("coppa")&&(0,a.J)(e,"regs.coppa",1);return e}(u,t);let f={};e[0].params.siteId&&(P=e[0].params.siteId,f.s=P);const g=Object.keys(i);let b=!1;for(let r=0;r<g.length&&!(c.length>=4);r++){u=q(i,g,u,r);const a=(0,n.A)(t,"ortb2")||{},p={...a.site||a.context};p.page=G(t);const l={...a.user};(0,o.isEmpty)(a)||b||(u=L(t,u,a,p,l),u.site=(0,o.mergeDeep)({},u.site,p),u.user=(0,o.mergeDeep)({},u.user,l),b=!0),u=M(i,u,g,r,f,s);const m=r===g.length-1;if(u=le(u),u=se(u),u=de(u),m){let t=`${s}?`;0!==P&&(t+=`s=${P}`),ne()&&(t+=0!==P?"&":"",t+=`p=${d.$W.getConfig("exchangeId")}`),c.push({method:"POST",url:t,data:(0,o.deepClone)(u),option:{contentType:"text/plain"},validBidRequests:e}),u.imp=[],b=!1}}return c}function q(e,t,i,r){const d=e[t[r]],{missingImps:p=[],ixImps:l=[]}=d,c={ixImps:l,missingBannerImpressions:p},u=Object.keys(c).map((e=>c[e])).filter((e=>Array.isArray(e))).reduce(((e,t)=>e.concat(...t)),[]),m=e[t[r]].gpid,f=e[t[r]].dfp_ad_unit_code,g=e[t[r]].tid,b=e[t[r]].sid,x=e[t[r]].ae,y=e[t[r]].paapi,h=u.filter((e=>s.D4 in e)),I=u.filter((e=>!(s.D4 in e)));if(h.length>0){const s=h.reduce(((e,t)=>(e[t.adunitCode]||(e[t.adunitCode]=[]),e[t.adunitCode].push(t),e)),{});for(const d in s){const p=s[d],{id:l,banner:{topframe:c}}=p[0];let u=(0,n.A)(p[0],"ext.externalID");const h={id:l,banner:{topframe:c,format:p.map((e=>{let{banner:{w:t,h:i},ext:r}=e;return{w:t,h:i,ext:r}}))}};for(let e=0;e<h.banner.format.length;e++)null!=h.banner.format[e].ext&&(null!=h.banner.format[e].ext.sid&&delete h.banner.format[e].ext.sid,null!=h.banner.format[e].ext.externalID&&delete h.banner.format[e].ext.externalID),"bidfloor"in p[e]&&(h.banner.format[e].ext.bidfloor=p[e].bidfloor),"{}"===JSON.stringify(h.banner.format[e].ext)&&delete h.banner.format[e].ext;const I=e[t[r]].pos;(0,o.isInteger)(I)&&(h.banner.pos=I),(f||m||g||b||x||u||y)&&(h.ext={},h.ext.dfp_ad_unit_code=f,h.ext.gpid=m,h.ext.tid=g,h.ext.sid=b,h.ext.externalID=u,1==x&&(h.ext.ae=1,h.ext.paapi=y)),"bidfloor"in p[0]&&(h.bidfloor=p[0].bidfloor),"bidfloorcur"in p[0]&&(h.bidfloorcur=p[0].bidfloorcur);const v=e[t[r]].adUnitFPD;v&&(0,a.J)(h,"ext.data",v),i.imp.push(h)}}return I.length>0&&I.forEach((e=>{if(m&&(0,a.J)(e,"ext.gpid",m),i.imp.length>0){let t=!1;i.imp.forEach(((r,o)=>{e.id===r.id&&s.G_ in e?(r.video=e.video,r.video.ext=Object.assign({},e.video.ext,e.ext),(0,n.A)(r,"video.ext.bidfloor",!1)&&(0,n.A)(r,"bidfloor",!1)&&r.video.ext.bidfloor<r.bidfloor&&(r.bidfloor=r.video.ext.bidfloor),!(0,n.A)(r,"ext.siteID",!1)&&(0,n.A)(e,"video.ext.siteID")&&((0,a.J)(r,"ext.siteID",e.video.ext.siteID),(0,a.J)(i,"ext.ixdiag.usid",!0)),t=!0):e.id===r.id&&s.s6 in e&&(r.native=e.native,r.native.ext=Object.assign({},e.native.ext,e.ext),(0,n.A)(r,"native.ext.bidfloor",!1)&&(0,n.A)(r,"bidfloor",!1)&&r.native.ext.bidfloor<r.bidfloor&&(r.bidfloor=r.native.ext.bidfloor),!(0,n.A)(r,"ext.siteID",!1)&&(0,n.A)(e,"native.ext.siteID",!1)&&((0,a.J)(r,"ext.siteID",e.native.ext.siteID),(0,a.J)(i,"ext.ixdiag.usid",!0)),t=!0)})),t||i.imp.push(e)}else i.imp.push(e)})),i}function G(e){const t=e&&e.bidderCode||"ix",i=d.$W.getConfig(t);let r="";if(r=(0,n.A)(e,"ortb2.site.page")?e.ortb2.site.page:(0,n.A)(e,"refererInfo.page"),i&&"object"==typeof i.firstPartyData){return function(e,t,i){let r;try{r=new URL(t)}catch(i){(0,o.logWarn)(`IX Bid Adapter: Invalid URL set in ortb2.site.page: ${t}. Using referer URL instead.`),r=new URL((0,n.A)(e,"refererInfo.page"))}const a=new URLSearchParams(r.search);for(const[e,t]of Object.entries(i))a.has(e)||a.append(e,t);return r.search=a.toString(),r.toString()}(e,r,i.firstPartyData)}return r}function L(e,t,i,r,n){if(t.ext.ixdiag.fpd=!0,Object.keys(r).forEach((e=>{-1===v.SITE.indexOf(e)&&delete r[e]})),Object.keys(n).forEach((e=>{-1===v.USER.indexOf(e)&&delete n[e]})),i.device){const e={...i.device.sua};(0,o.isEmpty)(e)||(0,a.J)(t,"device.sua",e)}if(i.hasOwnProperty("regs")&&!e.gppConsent&&(i.regs.hasOwnProperty("gpp")&&"string"==typeof i.regs.gpp&&(0,a.J)(t,"regs.gpp",i.regs.gpp),i.regs.hasOwnProperty("gpp_sid")&&Array.isArray(i.regs.gpp_sid)&&(0,a.J)(t,"regs.gpp_sid",i.regs.gpp_sid),i.regs.ext?.dsa)){const e=i.regs.ext.dsa,r={};if(["dsarequired","pubrender","datatopub"].forEach((t=>{(0,o.isNumber)(e[t])&&(r[t]=e[t])})),(0,o.isArray)(e.transparency)){const t=[];e.transparency.forEach((e=>{(0,o.isPlainObject)(e)&&(0,o.isStr)(e.domain)&&""!=e.domain&&(0,o.isArray)(e.dsaparams)&&e.dsaparams.every((e=>(0,o.isNumber)(e)))&&t.push(e)})),t.length>0&&(r.transparency=t)}(0,o.isEmpty)(r)||(0,a.J)(t,"regs.ext.dsa",r)}return t}function H(e,t){const i=(0,n.A)(t,"ortb2Imp.ext.data");i&&(0,a.J)(e,"ext.data",i)}function M(e,t,i,r,n,o){const a=e[i[r]].pbadslot,s=e[i[r]].tagId,d=e[i[r]].adUnitCode,p=e[i[r]].divId;return(a||s||d||p)&&(t.ext.ixdiag.pbadslot=a,t.ext.ixdiag.tagid=s,t.ext.ixdiag.adunitcode=d,t.ext.ixdiag.divId=p),t}function V(e){const t=e.userId||{};return C.filter((e=>t[e]))}function Q(e,t){if(t)for(let i=0;i<e.length;i++){const r=e[i];if(t[0]===r[0]&&t[1]===r[1]){e.splice(i,1);break}}}function Y(e,t){const i=function(e){const t=j(e,s.s6),i=e.nativeOrtbRequest;i.eventtrackers=[{event:1,methods:[1,2]}],i.privacy=1,t.native={request:JSON.stringify(i),ver:"1.2"};let r=(0,n.A)(e,"ortb2Imp.ext.tid");return r&&(0,a.J)(t,"ext.tid",r),H(t,e),F(e,t,s.s6),t}(e);if(0!=Object.keys(i).length){t[e.adUnitCode]={},t[e.adUnitCode].ixImps=[],t[e.adUnitCode].ixImps.push(i),t[e.adUnitCode].gpid=(0,n.A)(e,"ortb2Imp.ext.gpid"),t[e.adUnitCode].dfp_ad_unit_code=(0,n.A)(e,"ortb2Imp.ext.data.adserver.adslot"),t[e.adUnitCode].pbadslot=(0,n.A)(e,"ortb2Imp.ext.data.pbadslot"),t[e.adUnitCode].tagId=(0,n.A)(e,"params.tagId");const r=e.adUnitCode,o=document.getElementById(r)?r:(0,f.p)(r).divId;t[e.adUnitCode].adUnitCode=r,t[e.adUnitCode].divId=o}}function Z(e,t){const i=J(e);if(0!=Object.keys(i).length){t[e.adUnitCode]={},t[e.adUnitCode].ixImps=[],t[e.adUnitCode].ixImps.push(i),t[e.adUnitCode].gpid=(0,n.A)(e,"ortb2Imp.ext.gpid"),t[e.adUnitCode].dfp_ad_unit_code=(0,n.A)(e,"ortb2Imp.ext.data.adserver.adslot"),t[e.adUnitCode].pbadslot=(0,n.A)(e,"ortb2Imp.ext.data.pbadslot"),t[e.adUnitCode].tagId=(0,n.A)(e,"params.tagId");const r=e.adUnitCode,o=document.getElementById(r)?r:(0,f.p)(r).divId;t[e.adUnitCode].adUnitCode=r,t[e.adUnitCode].divId=o}}function K(e,t,i,r){let a=function(e){const t=j(e,s.D4);t.banner={},t.adunitCode=e.adUnitCode;const i=(0,n.A)(e,"params.size");return i&&(t.banner.w=i[0],t.banner.h=i[1]),t.banner.topframe=(0,o.inIframe)()?0:1,F(e,t,s.D4),t}(e);const d=R((0,n.A)(e,"mediaTypes.banner.sizes"),(0,n.A)(e,"params.size"));i.hasOwnProperty(e.adUnitCode)||(i[e.adUnitCode]={}),i[e.adUnitCode].gpid=(0,n.A)(e,"ortb2Imp.ext.gpid"),i[e.adUnitCode].dfp_ad_unit_code=(0,n.A)(e,"ortb2Imp.ext.data.adserver.adslot"),i[e.adUnitCode].tid=(0,n.A)(e,"ortb2Imp.ext.tid"),i[e.adUnitCode].pbadslot=(0,n.A)(e,"ortb2Imp.ext.data.pbadslot"),i[e.adUnitCode].tagId=(0,n.A)(e,"params.tagId"),i[e.adUnitCode].pos=(0,n.A)(e,"mediaTypes.banner.pos");if((0,n.A)(r,"paapi.enabled")){const t=(0,n.A)(e,"ortb2Imp.ext.ae"),r=(0,n.A)(e,"ortb2Imp.ext.paapi");r&&(i[e.adUnitCode].paapi=r),t&&((0,o.isInteger)(t)?i[e.adUnitCode].ae=t:(0,o.logWarn)("error setting auction environment flag - must be an integer"))}const p=(0,n.A)(e,"ortb2Imp.ext.data");p&&(i[e.adUnitCode].adUnitFPD=p);const l=(0,n.A)(e,"params.id");!l||"string"!=typeof l&&"number"!=typeof l||(i[e.adUnitCode].sid=String(l));const c=e.adUnitCode,u=document.getElementById(c)?c:(0,f.p)(c).divId;i[e.adUnitCode].adUnitCode=c,i[e.adUnitCode].divId=u,d&&(i[e.adUnitCode].hasOwnProperty("ixImps")||(i[e.adUnitCode].ixImps=[]),i[e.adUnitCode].ixImps.push(a)),function(e,t,i){if(t.hasOwnProperty(e.adUnitCode)){let i=[];t[e.adUnitCode].hasOwnProperty("missingSizes")&&(i=t[e.adUnitCode].missingSizes),Q(i,e.params.size),t[e.adUnitCode].missingSizes=i}else if((0,n.A)(e,"mediaTypes.banner.sizes")){let r=(0,o.deepClone)(e.mediaTypes.banner.sizes);Q(r,e.params.size);let n={missingSizes:r,impression:i};t[e.adUnitCode]=n}}(e,t,a)}function ee(e,t,i){const r=(0,o.deepClone)(t);return r.banner.w=i[0],r.banner.h=i[1],F(e,r,s.D4),r}function te(e){e.renderer.push((function(){const t=e.adUnitCode,i=document.getElementById(t)?t:(0,f.p)(t).divId;i?window.createIXPlayer(i,e):(0,o.logWarn)(`IX Bid Adapter: adUnitCode: ${i} not found on page.`)}))}function ie(e,t){const i=m.A4.install({id:e,url:t,loaded:!1});try{i.setRender(te)}catch(e){return(0,o.logWarn)("Prebid Error calling setRender on renderer",e),null}return t?i:((0,o.logWarn)("Outstream renderer URL not found"),null)}function re(e){if("outstream"!==(0,n.A)(e,"mediaTypes.video.context"))return!1;let t=(0,n.A)(e,"mediaTypes.video.renderer");t||(t=(0,n.A)(e,"renderer"));return!!("object"!=typeof t||!t.url||!t.render)||t.backupOnly}function ne(){let e=d.$W.getConfig("exchangeId");return!("number"!=typeof e||!isFinite(e))||!("string"!=typeof e||""===e.trim()||!isFinite(Number(e)))}const oe={code:g,gvlid:10,supportedMediaTypes:b,isBidRequestValid:function(e){const t=(0,n.A)(e,"params.video"),i=(0,n.A)(e,"params.size"),r=(0,n.A)(e,"mediaTypes.banner.sizes"),a=(0,n.A)(e,"mediaTypes.video"),s=(0,n.A)(e,"mediaTypes.video.playerSize"),d=e.params.hasOwnProperty("bidFloor"),p=e.params.hasOwnProperty("bidFloorCur");if(e.hasOwnProperty("mediaType")&&!(0,o.contains)(b,e.mediaType))return(0,o.logWarn)("IX Bid Adapter: media type is not supported."),!1;if((0,n.A)(e,"mediaTypes.banner")&&!r)return!1;if(i){const t=W(i);if(!t)return(0,o.logError)("IX Bid Adapter: size has invalid format."),!1;if(!R(e.sizes,t)&&!R(s,t)&&!R(r,t))return(0,o.logError)("IX Bid Adapter: bid size is not included in ad unit sizes or player size."),!1}if(!ne()&&null==e.params.siteId)return(0,o.logError)("IX Bid Adapter: Invalid configuration - either siteId or exchangeId must be configured."),!1;if(void 0!==e.params.siteId){if("string"!=typeof e.params.siteId&&"number"!=typeof e.params.siteId)return(0,o.logError)("IX Bid Adapter: siteId must be string or number type."),!1;if("string"!=typeof e.params.siteId&&isNaN(Number(e.params.siteId)))return(0,o.logError)("IX Bid Adapter: siteId must valid value"),!1}if((d||p)&&!(d&&p&&(l=e.params.bidFloor,c=e.params.bidFloorCur,Boolean("number"==typeof l&&"string"==typeof c&&c.match(/^[A-Z]{3}$/)))))return(0,o.logError)("IX Bid Adapter: bidFloor / bidFloorCur parameter has invalid format."),!1;var l,c;if(a&&t){const i=J(e).video,r=$(a,t);if((0,n.A)(e,"mediaTypes.video.context")===u.H6&&re(e)&&i){const e=[(0,n.A)(i,"w"),(0,n.A)(i,"h")];if(!(e[0]>=y[0]&&e[1]>=y[1]))return(0,o.logError)(`IX Bid Adapter: ${e} is an invalid size for IX outstream renderer`),!1}if(r.length)return r.forEach((e=>{(0,o.logError)(e)})),!1}return function(e){return void 0===(0,n.A)(e,"mediaTypes.native")||e.nativeOrtbRequest&&Array.isArray(e.nativeOrtbRequest.assets)&&e.nativeOrtbRequest.assets.length>0}(e)},resetSiteID:function(){P=0},buildRequests:function(e,t){const i=[],r={},a={},d={},p={};E.getFeatureToggles(),e.forEach((e=>{const i=Object.keys((0,n.A)(e,"mediaTypes",{}));for(const n in i)switch(i[n]){case s.D4:K(e,p,r,t);break;case s.G_:Z(e,a);break;case s.s6:Y(e,d);break;default:(0,o.logWarn)(`IX Bid Adapter: ad unit mediaTypes ${n} is not supported`)}}));for(let t in p)if(p.hasOwnProperty(t)){let i=p[t].missingSizes;r.hasOwnProperty(t)||(r[t]={}),r[t].hasOwnProperty("missingImps")||(r[t].missingImps=[],r[t].missingCount=0);let n=p[t].impression;for(let o=0;o<i.length;o++){let a=ee(e[0],n,i[o]);r[t].missingImps.push(a),r[t].missingCount++}}let l=[];return Object.keys(r).length>0&&l.push(r),Object.keys(a).length>0&&l.push(a),Object.keys(d).length>0&&l.push(d),E.isFeatureEnabled("pbjs_enable_multiformat")?i.push(...N(e,t,function(e){const t={};return e.forEach((e=>{Object.keys(e).forEach((i=>{Object.keys(t).includes(i)?t[i].hasOwnProperty("ixImps")&&e[i].hasOwnProperty("ixImps")?t[i].ixImps=[...t[i].ixImps,...e[i].ixImps]:t[i].hasOwnProperty("missingImps")&&e[i].hasOwnProperty("missingImps")?t[i].missingImps=[...t[i].missingImps,...e[i].missingImps]:e[i].hasOwnProperty("ixImps")?t[i].ixImps=e[i].ixImps:e[i].hasOwnProperty("missingImps")&&(t[i].missingImps=e[i].missingImps):t[i]=e[i]}))})),t}(l))):(Object.keys(r).length>0&&i.push(...N(e,t,r)),Object.keys(a).length>0&&i.push(...N(e,t,a)),Object.keys(d).length>0&&i.push(...N(e,t,d))),i},interpretResponse:function(e,t){const i=[];let r=null,a=(0,n.A)(e,"body.ext.protectedAudienceAuctionConfigs")||[];if(E.setFeatureToggles(e),!e.hasOwnProperty("body"))return i;const d=e.body,p=d.seatbid||[];for(let e=0;e<p.length;e++){if(!p[e].hasOwnProperty("bid"))continue;const a=p[e].bid,l=t.data;for(let e=0;e<a.length;e++){const o=X(a[e].impid,l.imp,t.validBidRequests);if(r=B(a[e],d.cur,o),r.mediaType===s.G_&&re(o)){const t=(0,n.A)(d,"ext.videoplayerurl");if(r.renderer=ie(a[e].bidId,t),!r.renderer)continue}i.push(r)}if((0,n.A)(l,"ext.ixdiag.err")&&S.localStorageIsEnabled())try{S.removeDataFromLocalStorage("ixdiag")}catch(e){(0,o.logError)("ix can not clear ixdiag from localStorage.")}}if(!(Array.isArray(a)&&a.length>0))return i;a=a.filter((e=>!!function(e){return"object"==typeof e&&null!==e}(e)||((0,o.logWarn)("Malformed auction config detected:",e),!1)));try{return{bids:i,paapi:a}}catch(e){return(0,o.logWarn)("Error attaching AuctionConfigs",e),i}},getUserSyncs:function(e,t){const i=[];let r=null;if(t.length>0&&(r=(0,n.A)(t[0],"body.ext.publishersyncsperbidderoverride")),void 0!==r&&0==r)return[];if(e.iframeEnabled)i.push({type:"iframe",url:"https://js-sec.indexww.com/um/ixmatch.html"});else{let e=null;d.$W.getConfig("userSync")&&(e=d.$W.getConfig("userSync").syncsPerBidder),0===e&&(e=r),e=r&&(0===e||e)?r>e?e:r:1;for(let t=0;t<e;t++)i.push({type:"image",url:ae(e,t)})}return i}};function ae(e,t){let i="",r="0";return T&&T.hasOwnProperty("gdprApplies")&&(r=T.gdprApplies?"1":"0"),T&&T.hasOwnProperty("consentString")&&(i=T.consentString||""),"https://dsum.casalemedia.com/pbusermatch?origin=prebid"+(0!==P?"&site_id="+P.toString():"")+"&p="+e.toString()+"&i="+t.toString()+"&gdpr="+r+"&gdpr_consent="+i+"&us_privacy="+(D||"")}function se(e){return e.imp.forEach(((t,i)=>{const r=t.ext;if(null==r)return e;pe(t)<2||Object.keys(r).forEach((n=>{if(s.D4 in t){const o=t.banner.ext;if(void 0!==o&&void 0!==o[n]&&o[n]==r[n]&&delete e.imp[i].banner.ext[n],void 0!==t.banner.format)for(let o=0;o<t.banner.format.length;o++)null!=t.banner.format[o].ext&&null!=t.banner.format[o].ext[n]&&t.banner.format[o].ext[n]==r[n]&&delete e.imp[i].banner.format[o].ext[n]}if(s.G_ in t){const o=t.video.ext;void 0!==o&&void 0!==o[n]&&o[n]==r[n]&&delete e.imp[i].video.ext[n]}if(s.s6 in t){const o=t.native.ext;void 0!==o&&void 0!==o[n]&&o[n]==r[n]&&delete e.imp[i].native.ext[n]}}))})),e}function de(e){return e.imp.forEach(((t,i)=>{if(null==t.ext)return e;if(!(pe(t)<2)){if(s.D4 in t){const r=t.banner.ext;if(void 0!==r&&void 0!==r.siteID&&delete e.imp[i].banner.ext.siteID,void 0!==t.banner.format)for(let r=0;r<t.banner.format.length;r++)void 0!==t.banner.format[r].ext&&void 0!==t.banner.format[r].ext.siteID&&((0,a.J)(e.imp[i],"ext.siteID",t.banner.format[r].ext.siteID),(0,a.J)(e,"ext.ixdiag.usid",!0),delete e.imp[i].banner.format[r].ext.siteID)}if(s.G_ in t){const r=t.video.ext;void 0!==r&&void 0!==r.siteID&&delete e.imp[i].video.ext.siteID}if(s.s6 in t){const r=t.native.ext;void 0!==r&&void 0!==r.siteID&&delete e.imp[i].native.ext.siteID}}})),e}function pe(e){let t=0;return void 0!==e.banner&&(t+=1),void 0!==e.video&&(t+=1),void 0!==e.native&&(t+=1),t}function le(e){return null==e.device&&(e.device={}),e.device.h=window.screen.height,e.device.w=window.screen.width,e}(0,c.a$)(oe),(0,r.E)("ixBidAdapter")}},e=>{e.O(0,[33005,60802,51085],(()=>{return t=77764,e(e.s=t);var t}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[41252],{63990:(e,r,t)=>{var a=t(7873),i=t(91069),n=t(70433),s=t(63172),o=t(57377),d=t(71371),p=t(43272),l=t(95789),m=t(12693),c=t(78969);const g="pubmatic",u="PubMatic: ",h="USD",f=void 0,b="https://pubmatic.bbvms.com/r/".concat("$RENDERER",".js"),y="Video.plcmt param missing",v={kadpageurl:"",gender:"",yob:"",lat:"",lon:"",wiid:"",profId:"",verId:""},w={NUMBER:"number",STRING:"string",BOOLEAN:"boolean",ARRAY:"array",OBJECT:"object"},x={mimes:w.ARRAY,minduration:w.NUMBER,maxduration:w.NUMBER,startdelay:w.NUMBER,playbackmethod:w.ARRAY,api:w.ARRAY,protocols:w.ARRAY,w:w.NUMBER,h:w.NUMBER,battr:w.ARRAY,linearity:w.NUMBER,placement:w.NUMBER,plcmt:w.NUMBER,minbitrate:w.NUMBER,maxbitrate:w.NUMBER,skip:w.NUMBER},I={ICON:1,IMAGE:3},R={battr:w.ARRAY},O={1:"PMP",5:"PREF",6:"PMPG"},A={bootstrapPlayer:function(e){const r={code:e.adUnitCode};if(e.vastXml?r.vastXml=e.vastXml:e.vastUrl&&(r.vastUrl=e.vastUrl),!e.vastXml&&!e.vastUrl)return void(0,i.logWarn)(`${u}: No vastXml or vastUrl on bid, bailing...`);const t=A.getRendererId("pubmatic",e.rendererCode),a=document.getElementById(e.adUnitCode);let n;for(let e=0;e<window.bluebillywig.renderers.length;e++)if(window.bluebillywig.renderers[e]._id===t){n=window.bluebillywig.renderers[e];break}n?n.bootstrap(r,a):(0,i.logWarn)(`${u}: Couldn't find a renderer with ${t}`)},newRenderer:function(e,r){var t=b.replace("$RENDERER",e);const a=l.A4.install({url:t,loaded:!1,adUnitCode:r});try{a.setRender(A.outstreamRender)}catch(e){(0,i.logWarn)(`${u}: Error tying to setRender on renderer`,e)}return a},outstreamRender:function(e){e.renderer.push((function(){A.bootstrapPlayer(e)}))},getRendererId:function(e,r){return`${e}-${r}`}},T=[d.D4,d.G_,d.s6];let E=0,_=!1,C=["pubmatic"];const S=["all"];function z(e,r){if(!(0,i.isStr)(r))return r&&(0,i.logWarn)(u+"Ignoring param key: "+e+", expects string-value, found "+typeof r),f;switch(e){case"pmzoneid":return r.split(",").slice(0,50).map((e=>e.trim())).join();case"kadfloor":case"lat":case"lon":return parseFloat(r)||f;case"yob":return parseInt(r)||f;default:return r}}function U(e){var r;e.params.adUnit="",e.params.adUnitIndex="0",e.params.width=0,e.params.height=0,e.params.adSlot=(r=e.params.adSlot,(0,i.isStr)(r)?r.replace(/^\s+/g,"").replace(/\s+$/g,""):(r&&(0,i.logWarn)(g+": adSlot must be a string. Ignoring adSlot"),""));var t=e.params.adSlot,a=t.split(":");if(t=a[0],2==a.length&&(e.params.adUnitIndex=a[1]),a=t.split("@"),e.params.adUnit=a[0],a.length>1){if(2!=(a=a[1].split("x")).length)return void(0,i.logWarn)(u+"AdSlot Error: adSlot not in required format");e.params.width=parseInt(a[0],10),e.params.height=parseInt(a[1],10)}else if(e.hasOwnProperty("mediaTypes")&&e.mediaTypes.hasOwnProperty(d.D4)&&e.mediaTypes.banner.hasOwnProperty("sizes")){for(var n=0,s=[];n<e.mediaTypes.banner.sizes.length;n++)2===e.mediaTypes.banner.sizes[n].length&&s.push(e.mediaTypes.banner.sizes[n]);e.mediaTypes.banner.sizes=s,e.mediaTypes.banner.sizes.length>=1&&(e.params.width=e.mediaTypes.banner.sizes[0][0],e.params.height=e.mediaTypes.banner.sizes[0][1],e.mediaTypes.banner.sizes=e.mediaTypes.banner.sizes.splice(1,e.mediaTypes.banner.sizes.length-1))}}function P(){let e=window.navigator&&(window.navigator.connection||window.navigator.mozConnection||window.navigator.webkitConnection);switch(e?.effectiveType){case"ethernet":return 1;case"wifi":return 2;case"slow-2g":case"2g":return 4;case"3g":return 5;case"4g":return 6;default:return 0}}function W(e,r,t){var a,n="Ignoring param key: "+e+", expects "+t+", found "+typeof r;switch(t){case w.BOOLEAN:a=i.isBoolean;break;case w.NUMBER:a=i.isNumber;break;case w.STRING:a=i.isStr;break;case w.ARRAY:a=i.isArray}return a(r)?r:((0,i.logWarn)(u+n),f)}const N={desc:"desc",desc2:"desc2",body:"desc",body2:"desc2",sponsoredBy:"sponsored",cta:"ctatext",rating:"rating",address:"address",downloads:"downloads",likes:"likes",phone:"phone",price:"price",salePrice:"saleprice",displayUrl:"displayurl",saleprice:"saleprice",displayurl:"displayurl"},$=Object.values(N);function k(e){var r;if(e.ortb){e=e.ortb,r={ver:"1.2",...e,assets:[]};const{assets:t}=e,a=e=>e.title||e.img||e.data||e.video;if(t.length<1||!t.some((e=>a(e))))return(0,i.logWarn)(`${u}: Native assets object is empty or contains some invalid object`),_=!0,r;t.forEach((e=>{var t=e;t.img&&(t.img.type==I.IMAGE?(t.w=t.w||t.width||(t.sizes?t.sizes[0]:f),t.h=t.h||t.height||(t.sizes?t.sizes[1]:f),t.wmin=t.wmin||t.minimumWidth||(t.minsizes?t.minsizes[0]:f),t.hmin=t.hmin||t.minimumHeight||(t.minsizes?t.minsizes[1]:f)):t.img.type==I.ICON&&(t.w=t.w||t.width||(t.sizes?t.sizes[0]:f),t.h=t.h||t.height||(t.sizes?t.sizes[1]:f))),t&&void 0!==t.id&&a(t)&&r.assets.push(t)}))}else r=function(e){if(!e&&!(0,i.isPlainObject)(e))return(0,i.logWarn)(`${u}: Native assets object is empty or not an object: ${e}`),void(_=!0);const r={ver:"1.2",assets:[]};for(let t in e){if(c._B.includes(t))continue;if(!c.x5.hasOwnProperty(t)&&!$.includes(t)){(0,i.logWarn)(`${u}: Unrecognized native asset code: ${t}. Asset will be ignored.`);continue}const a=e[t];let n=0;a.required&&(0,i.isBoolean)(a.required)&&(n=Number(a.required));const s={id:r.assets.length,required:n};if(t in N)s.data={type:c.jO[N[t]]},(a.len||a.length)&&(s.data.len=a.len||a.length),a.ext&&(s.data.ext=a.ext);else if("icon"===t||"image"===t){if(s.img={type:"icon"===t?c.oA.ICON:c.oA.MAIN},a.aspect_ratios)if((0,i.isArray)(a.aspect_ratios))if(a.aspect_ratios.length){const{min_width:e,min_height:r}=a.aspect_ratios[0];(0,i.isInteger)(e)&&(0,i.isInteger)(r)?(s.img.wmin=e,s.img.hmin=r):(0,i.logWarn)(`${u}: image.aspect_ratios min_width or min_height are invalid: ${e}, ${r}`);const t=a.aspect_ratios.filter((e=>e.ratio_width&&e.ratio_height)).map((e=>`${e.ratio_width}:${e.ratio_height}`));t.length>0&&(s.img.ext={aspectratios:t})}else(0,i.logWarn)(`${u}: image.aspect_ratios was passed, but it's empty: ${a.aspect_ratios}`);else(0,i.logWarn)(`${u}: image.aspect_ratios was passed, but it's not a an array: ${a.aspect_ratios}`);s.img.w=a.w||a.width,s.img.h=a.h||a.height,s.img.wmin=a.wmin||a.minimumWidth||(a.minsizes?a.minsizes[0]:f),s.img.hmin=a.hmin||a.minimumHeight||(a.minsizes?a.minsizes[1]:f),a.sizes&&(2===a.sizes.length&&(0,i.isInteger)(a.sizes[0])&&(0,i.isInteger)(a.sizes[1])?((0,i.logInfo)(`${u}: if asset.sizes exist, by OpenRTB spec we should remove wmin and hmin`),s.img.w=a.sizes[0],s.img.h=a.sizes[1],delete s.img.hmin,delete s.img.wmin):(0,i.logWarn)(`${u}: image.sizes was passed, but its value is not an array of integers: ${a.sizes}`)),a.ext&&(s.img.ext=a.ext),a.mimes&&(s.img.mimes=a.mimes)}else"title"===t?(s.title={len:a.len||a.length||140},a.ext&&(s.title.ext=a.ext)):"ext"===t&&(s.ext=a,delete s.required);r.assets.push(s)}return r.assets.length<1?((0,i.logWarn)(`${u}: Could not find any valid asset`),void(_=!0)):r}(e);return r}function j(e){var r,t=e.mediaTypes.banner.sizes,a=[];if(t!==f&&(0,i.isArray)(t)){if(r={},e.params.width||e.params.height)r.w=e.params.width,r.h=e.params.height;else{if(0===t.length)return r=f,(0,i.logWarn)(u+"Error: mediaTypes.banner.size missing for adunit: "+e.params.adUnit+". Ignoring the banner impression in the adunit."),r;r.w=parseInt(t[0][0],10),r.h=parseInt(t[0][1],10),t=t.splice(1,t.length-1)}t.length>0&&(a=[],t.forEach((function(e){e.length>1&&a.push({w:e[0],h:e[1]})})),a.length>0&&(r.format=a)),r.pos=0,r.topframe=(0,i.inIframe)()?0:1;const s={...(0,n.A)(e,"ortb2Imp.banner")};for(let e in R)s.hasOwnProperty(e)&&(r[e]=W(e,s[e],R[e]))}else(0,i.logWarn)(u+"Error: mediaTypes.banner.size missing for adunit: "+e.params.adUnit+". Ignoring the banner impression in the adunit."),r=f;return r}function B(e){var r,t=(0,i.mergeDeep)((0,n.A)(e.mediaTypes,"video"),e.params.video);if(t!==f){for(var a in r={},function(e,r){(0,n.A)(e,"plcmt")||(0,i.logWarn)(y+" for "+r)}(t,e.adUnitCode),x)t.hasOwnProperty(a)&&(r[a]=W(a,t[a],x[a]));(0,i.isArray)(e.mediaTypes.video.playerSize[0])?(r.w=parseInt(e.mediaTypes.video.playerSize[0][0],10),r.h=parseInt(e.mediaTypes.video.playerSize[0][1],10)):(0,i.isNumber)(e.mediaTypes.video.playerSize[0])&&(r.w=parseInt(e.mediaTypes.video.playerSize[0],10),r.h=parseInt(e.mediaTypes.video.playerSize[1],10))}else r=f,(0,i.logWarn)(u+"Error: Video config params missing for adunit: "+e.params.adUnit+" with mediaType set as video. Ignoring video impression in the adunit.");return r}function M(e,r){var t,a,o={},l={},m=e.hasOwnProperty("sizes")?e.sizes:[],c="",g=[],b=r?.paapi?.enabled;if(function(e,r){r.params.deals&&((0,i.isArray)(r.params.deals)?r.params.deals.forEach((function(r){(0,i.isStr)(r)&&r.length>3?(e.pmp||(e.pmp={private_auction:0,deals:[]}),e.pmp.deals.push({id:r})):(0,i.logWarn)(u+"Error: deal-id present in array bid.params.deals should be a strings with more than 3 charaters length, deal-id ignored: "+r)})):(0,i.logWarn)(u+"Error: bid.params.deals should be an array of strings."))}(o={id:e.bidId,tagid:e.params.adUnit||void 0,bidfloor:z("kadfloor",e.params.kadfloor),secure:1,ext:{pmZoneId:z("pmzoneid",e.params.pmzoneid)},bidfloorcur:e.params.currency?z("currency",e.params.currency):h,displaymanager:"Prebid.js",displaymanagerver:"9.8.0-pre",pmp:e.ortb2Imp?.pmp||void 0},e),function(e,r){var t,a="";if(r.params.dctr)if(a=r.params.dctr,(0,i.isStr)(a)&&a.length>0){var n=a.split("|");a="",n.forEach((e=>{a+=e.length>0?e.trim()+"|":""})),t=a.length,"|"===a.substring(t,t-1)&&(a=a.substring(0,t-1)),e.ext.key_val=a.trim()}else(0,i.logWarn)(u+"Ignoring param : dctr with value : "+a+", expects string-value, found empty or non-string value")}(o,e),function(e,r){var t=r.rtd&&r.rtd.jwplayer&&r.rtd.jwplayer.targeting||void 0,a="";if(void 0!==t&&""!==t&&t.hasOwnProperty("segments")){var i,n=t.segments.length;a+="jw-id="+t.content.id;for(var s=0;s<n;s++)a+="|jw-"+t.segments[s]+"=1";(i=e.ext)&&void 0===i.key_val?i.key_val=a:i.key_val+="|"+a}}(o,e),e.hasOwnProperty("mediaTypes"))for(c in e.mediaTypes)switch(c){case d.D4:(t=j(e))!==f&&(o.banner=t);break;case d.s6:l.request=JSON.stringify(k(e.nativeParams)),_?((0,i.logWarn)(u+"Error: Error in Native adunit "+e.params.adUnit+". Ignoring the adunit. Refer to http://prebid.org/dev-docs/show-native-ads.html for more details."),_=!1):o.native=l;break;case d.G_:(a=B(e))!==f&&(o.video=a)}else t={pos:0,w:e.params.width,h:e.params.height,topframe:(0,i.inIframe)()?0:1},(0,i.isArray)(m)&&m.length>1&&((m=m.splice(1,m.length-1)).forEach((e=>{g.push({w:e[0],h:e[1]})})),t.format=g),o.banner=t;return function(e,r){const t={...(0,n.A)(r,"ortb2Imp.ext.data")};Object.keys(t).forEach((r=>{"pbadslot"===r?"string"==typeof t[r]&&t[r]&&(0,s.J)(e,"ext.data.pbadslot",t[r]):"adserver"===r?["name","adslot"].forEach((r=>{const a=(0,n.A)(t,`adserver.${r}`);"string"==typeof a&&a&&((0,s.J)(e,`ext.data.adserver.${r.toLowerCase()}`,a),"adslot"===r&&(0,s.J)(e,"ext.dfp_ad_unit_code",a))})):(0,s.J)(e,`ext.data.${r}`,t[r])}));const a=(0,n.A)(r,"ortb2Imp.ext.gpid");a&&(0,s.J)(e,"ext.gpid",a)}(o,e),function(e,r){let t=-1;"function"!=typeof r.getFloor||p.$W.getConfig("pubmatic.disableFloors")||[d.D4,d.G_,d.s6].forEach((a=>{if(e.hasOwnProperty(a)){let n=[];"banner"===a&&(e[a].w&&e[a].h&&n.push([e[a].w,e[a].h]),(0,i.isArray)(e[a].format)&&e[a].format.forEach((e=>n.push([e.w,e.h])))),0===n.length&&n.push("*"),n.forEach((n=>{let s=r.getFloor({currency:e.bidfloorcur,mediaType:a,size:n});if((0,i.logInfo)(u,"floor from floor module returned for mediatype:",a," and size:",n," is: currency",s.currency,"floor",s.floor),"object"==typeof s&&s.currency===e.bidfloorcur&&!isNaN(parseInt(s.floor))){let e=parseFloat(s.floor);(0,i.logInfo)(u,"floor from floor module:",e,"previous floor value",t,"Min:",Math.min(e,t)),t=-1===t?e:Math.min(e,t),(0,i.logInfo)(u,"new floor value:",t)}}))}}));e.bidfloor&&((0,i.logInfo)(u,"floor from floor module:",t,"impObj.bidfloor",e.bidfloor,"Max:",Math.max(t,e.bidfloor)),t=Math.max(t,e.bidfloor));e.bidfloor=!isNaN(t)&&t>0?t:f,(0,i.logInfo)(u,"new impObj.bidfloor value:",e.bidfloor)}(o,e),function(e,r,t){t?(e.ext=e.ext||{},void 0!==r?.ortb2Imp?.ext?.ae&&(e.ext.ae=r.ortb2Imp.ext.ae)):e.ext?.ae&&delete e.ext.ae}(o,e,b),o.hasOwnProperty(d.D4)||o.hasOwnProperty(d.s6)||o.hasOwnProperty(d.G_)?o:f}function q(e,r){(r=r.filter((function(e){return"string"==typeof e||((0,i.logWarn)(u+"acat: Each category should be a string, ignoring category: "+e),!1)})).map((e=>e.trim())).filter(((e,r,t)=>t.indexOf(e)===r))).length>0&&((0,i.logWarn)(u+"acat: Selected: ",r),e.ext.acat=r)}function J(e){return!0===(0,i.isArray)(e)&&e.length>0}const D={code:g,gvlid:76,supportedMediaTypes:[d.D4,d.G_,d.s6],isBidRequestValid:e=>{if(e&&e.params){if(!(0,i.isStr)(e.params.publisherId))return(0,i.logWarn)(u+"Error: publisherId is mandatory and cannot be numeric (wrap it in quotes in your config). Call to OpenBid will not be sent for ad unit: "+JSON.stringify(e)),!1;if(e.hasOwnProperty("mediaTypes")&&e.mediaTypes.hasOwnProperty(d.G_)){let r=(0,n.A)(e.mediaTypes,"video.mimes"),t=(0,n.A)(e,"params.video.mimes");if(!1===J(r)&&!1===J(t))return(0,i.logWarn)(u+"Error: For video ads, bid.mediaTypes.video.mimes OR bid.params.video.mimes should be present and must be a non-empty array. Call to OpenBid will not be sent for ad unit:"+JSON.stringify(e)),!1;if(!e.mediaTypes[d.G_].hasOwnProperty("context"))return(0,i.logError)(`${u}: no context specified in bid. Rejecting bid: `,e),!1;if("outstream"===e.mediaTypes[d.G_].context&&!(0,i.isStr)(e.params.outstreamAU)&&!e.hasOwnProperty("renderer")&&!e.mediaTypes[d.G_].hasOwnProperty("renderer"))return e.mediaTypes.hasOwnProperty(d.D4)||e.mediaTypes.hasOwnProperty(d.s6)?(delete e.mediaTypes[d.G_],(0,i.logWarn)(`${u}: for "outstream" bids either outstreamAU parameter must be provided or ad unit supplied renderer is required. Rejecting mediatype Video of bid: `,e),!0):((0,i.logError)(`${u}: for "outstream" bids either outstreamAU parameter must be provided or ad unit supplied renderer is required. Rejecting bid: `,e),!1)}return!0}return!1},buildRequests:(e,r)=>{var t;r&&r.refererInfo&&(t=r.refererInfo);var a,o=function(e){return{pageURL:e?.page||window.location.href,refURL:e?.ref||window.document.referrer}}(t),l=function(e){return{id:""+(new Date).getTime(),at:1,cur:[h],imp:[],site:{page:e.pageURL,ref:e.refURL,publisher:{}},device:{ua:navigator.userAgent,js:1,dnt:"yes"==navigator.doNotTrack||"1"==navigator.doNotTrack||"1"==navigator.msDoNotTrack?1:0,h:screen.height,w:screen.width,language:navigator.language,connectiontype:P()},user:{},ext:{}}}(o),c="",g=[],b=[],y=[],w=(0,i.generateUUID)();if(e.forEach((e=>{if(e.params.wiid=e.params.wiid||r.auctionId||w,(a=(0,i.deepClone)(e)).params.adSlot=a.params.adSlot||"",U(a),a.mediaTypes&&a.mediaTypes.hasOwnProperty("video")||a.params.hasOwnProperty("video"));else if(!(a.hasOwnProperty("mediaTypes")&&a.mediaTypes.hasOwnProperty(d.s6)||0!==a.params.width||0!==a.params.height))return void(0,i.logWarn)(u+"Skipping the non-standard adslot: ",a.params.adSlot,JSON.stringify(a));o.pubId=o.pubId||a.params.publisherId,(o=function(e,r){var t,a,n;for(t in r.kadpageurl||(r.kadpageurl=r.pageURL),v)v.hasOwnProperty(t)&&(a=e[t])&&("object"==typeof(n=v[t])&&(a=n.f(a,r)),(0,i.isStr)(a)?r[t]=a:(0,i.logWarn)(u+"Ignoring param : "+t+" with value : "+v[t]+", expects string-value, found "+typeof a));return r}(a.params,o)).transactionId=a.ortb2Imp?.ext?.tid,""===c?c=a.params.currency||f:a.params.hasOwnProperty("currency")&&c!==a.params.currency&&(0,i.logWarn)(u+"Currency specifier ignored. Only one currency permitted."),a.params.currency=c,a.params.hasOwnProperty("dctr")&&(0,i.isStr)(a.params.dctr)&&g.push(a.params.dctr),a.params.hasOwnProperty("bcat")&&(0,i.isArray)(a.params.bcat)&&(b=b.concat(a.params.bcat)),a.params.hasOwnProperty("acat")&&(0,i.isArray)(a.params.acat)&&(y=y.concat(a.params.acat));var t=M(a,r);t&&l.imp.push(t)})),0==l.imp.length)return;l.site.publisher.id=o.pubId.trim(),E=o.pubId.trim(),l.ext.wrapper={},l.ext.wrapper.profile=parseInt(o.profId)||f,l.ext.wrapper.version=parseInt(o.verId)||f,l.ext.wrapper.wiid=o.wiid||r.auctionId,l.ext.wrapper.wv="prebid_prebid_9.8.0-pre",l.ext.wrapper.transactionId=o.transactionId,l.ext.wrapper.wp="pbjs";const x=r?m.u.get(r.bidderCode,"allowAlternateBidderCodes"):void 0;if(void 0!==x){if(l.ext.marketplace={},r&&1==x){let e=m.u.get(r.bidderCode,"allowedAlternateBidderCodes");(0,i.isArray)(e)?(e=e.map((e=>e.trim().toLowerCase())).filter((e=>!!e)).filter(i.uniques),C=e.includes("*")?S:[...C,...e]):C=S}l.ext.marketplace.allowedbidders=C.filter(i.uniques)}l.user.gender=o.gender?o.gender.trim():f,l.user.geo={},l.user.yob=z("yob",o.yob),l.site.page=o.kadpageurl.trim()||l.site.page.trim(),l.site.domain=function(e){let r=document.createElement("a");return r.href=e,r.hostname}(l.site.page),"object"==typeof p.$W.getConfig("content")&&(l.site.content=p.$W.getConfig("content")),"object"==typeof p.$W.getConfig("device")&&(l.device=Object.assign(l.device,p.$W.getConfig("device"))),l.device.language=l.device.language&&l.device.language.split("-")[0],(0,s.J)(l,"source.tid",r?.ortb2?.source?.tid),-1!==window.location.href.indexOf("pubmaticTest=true")&&(l.test=1),e[0].schain&&(0,s.J)(l,"source.ext.schain",e[0].schain),r&&r.gdprConsent&&((0,s.J)(l,"user.ext.consent",r.gdprConsent.consentString),(0,s.J)(l,"regs.ext.gdpr",r.gdprConsent.gdprApplies?1:0)),r&&r.uspConsent&&(0,s.J)(l,"regs.ext.us_privacy",r.uspConsent),r?.gppConsent?.gppString?((0,s.J)(l,"regs.gpp",r.gppConsent.gppString),(0,s.J)(l,"regs.gpp_sid",r.gppConsent.applicableSections)):r?.ortb2?.regs?.gpp&&((0,s.J)(l,"regs.gpp",r.ortb2.regs.gpp),(0,s.J)(l,"regs.gpp_sid",r.ortb2.regs.gpp_sid)),!0===p.$W.getConfig("coppa")&&(0,s.J)(l,"regs.coppa",1),r?.ortb2?.regs?.ext?.dsa&&(0,s.J)(l,"regs.ext.dsa",r.ortb2.regs.ext.dsa),function(e,r){let t=(0,n.A)(r,"0.userIdAsEids");(0,i.isArray)(t)&&t.length>0&&(0,s.J)(e,"user.eids",t)}(l,e);const I=r&&r.ortb2||{},{user:R,device:O,site:A,bcat:T,badv:_}=I;if(A){const{page:e,domain:r,ref:t}=l.site;(0,i.mergeDeep)(l,{site:A}),l.site.page=e,l.site.domain=r,l.site.ref=t}if(R&&(0,i.mergeDeep)(l,{user:R}),_&&(0,i.mergeDeep)(l,{badv:_}),T&&(b=b.concat(T)),O?.sua&&(l.device.sua=O?.sua),O?.ext?.cdep&&(0,s.J)(l,"device.ext.cdep",O.ext.cdep),R?.geo&&O?.geo?(l.device.geo={...l.device.geo,...O.geo},l.user.geo={...l.user.geo,...R.geo}):(R?.geo||O?.geo)&&(l.user.geo=l.device.geo=R?.geo?{...l.user.geo,...R.geo}:{...l.user.geo,...O.geo}),I.ext?.prebid?.bidderparams?.[r.bidderCode]?.acat){const e=I.ext.prebid.bidderparams[r.bidderCode].acat;q(l,e)}else y.length&&q(l,y);return function(e,r){(r=r.filter((function(e){return"string"==typeof e||((0,i.logWarn)(u+"bcat: Each category should be a string, ignoring category: "+e),!1)})).map((e=>e.trim())).filter((function(e,r,t){if(e.length>3)return t.indexOf(e)===r;(0,i.logWarn)(u+"bcat: Each category should have a value of a length of more than 3 characters, ignoring category: "+e)}))).length>0&&((0,i.logWarn)(u+"bcat: Selected: ",r),e.bcat=r)}(l,b),l.tmax=r?.timeout?r.timeout:window?.PWT?.versionDetails?.timeout,l.ext.epoch=(new Date).getTime(),"object"==typeof p.$W.getConfig("app")&&(l.app=p.$W.getConfig("app"),l.app.publisher=l.site.publisher,l.app.ext=l.site.ext||f,"object"!=typeof l.app.content&&(l.app.content=l.site.content||f),delete l.site),{method:"POST",url:"https://hbopenbid.pubmatic.com/translator?source=prebid-client",data:JSON.stringify(l),bidderRequest:r}},interpretResponse:(e,r)=>{const t=[];var a=h;let s=JSON.parse(r.data),o=s.site&&s.site.ref?s.site.ref:"";try{e.body&&e.body.seatbid&&(0,i.isArray)(e.body.seatbid)&&(a=e.body.cur||a,e.body.seatbid.forEach((e=>{e.bid&&(0,i.isArray)(e.bid)&&e.bid.forEach((p=>{let l={requestId:p.impid,cpm:parseFloat((p.price||0).toFixed(2)),width:p.w,height:p.h,creativeId:p.crid||p.id,dealId:p.dealid,currency:a,netRevenue:true,ttl:300,referrer:o,ad:p.adm,pm_seat:e.seat||null,pm_dspid:p.ext&&p.ext.dspid?p.ext.dspid:null,partnerImpId:p.id||""};s.imp&&s.imp.length>0&&s.imp.forEach((e=>{if(p.impid===e.id)switch(function(e,r){if(e.ext&&null!=e.ext.bidtype)r.mediaType=T[e.ext.bidtype];else{(0,i.logInfo)(u+"bid.ext.bidtype does not exist, checking alternatively for mediaType");var t=e.adm,a="",n=new RegExp(/VAST\s+version/);if(t.indexOf('span class="PubAPIAd"')>=0)r.mediaType=d.D4;else if(n.test(t))r.mediaType=d.G_;else try{(a=JSON.parse(t.replace(/\\/g,"")))&&a.native&&(r.mediaType=d.s6)}catch(e){(0,i.logWarn)(u+"Error: Cannot parse native reponse for ad response: "+t)}}}(p,l),l.mediaType){case d.D4:break;case d.G_:l.width=p.hasOwnProperty("w")?p.w:e.video.w,l.height=p.hasOwnProperty("h")?p.h:e.video.h,l.vastXml=p.adm,function(e,r){let t,a,i;if(r.bidderRequest&&r.bidderRequest.bids){for(let n=0;n<r.bidderRequest.bids.length;n++)r.bidderRequest.bids[n].bidId===e.requestId&&(t=r.bidderRequest.bids[n].params,a=r.bidderRequest.bids[n].mediaTypes[d.G_].context,i=r.bidderRequest.bids[n].adUnitCode);a&&"outstream"===a&&t&&t.outstreamAU&&i&&(e.rendererCode=t.outstreamAU,e.renderer=A.newRenderer(e.rendererCode,i))}}(l,r),function(e,r,t){if(!r?.ext?.prebiddealpriority)return;const a=(0,i.getBidRequest)(e.requestId,[t.bidderRequest]),s=(0,n.A)(a,"mediaTypes.video");if(s?.context!=d.LM)return;const o=r?.ext?.video?.duration||s?.maxduration;e.video={context:d.LM,durationSeconds:o,dealTier:r.ext.prebiddealpriority}}(l,p,r);break;case d.s6:!function(e,r){if(e.hasOwnProperty("adm")){var t="";try{t=JSON.parse(e.adm.replace(/\\/g,""))}catch(e){return void(0,i.logWarn)(u+"Error: Cannot parse native reponse for ad response: "+r.adm)}r.native={ortb:{...t.native}},r.mediaType=d.s6,r.width||(r.width=0),r.height||(r.height=0)}}(p,l)}})),p.ext&&p.ext.deal_channel&&(l.dealChannel=O[p.ext.deal_channel]||null),function(e,r,t){e.meta={},r.ext&&r.ext.dspid&&(e.meta.networkId=r.ext.dspid,e.meta.demandSource=r.ext.dspid),r.ext&&r.ext.dchain&&(e.meta.dchain=r.ext.dchain);const a=t||r.ext&&r.ext.advid;a&&(e.meta.advertiserId=a,e.meta.agencyId=a,e.meta.buyerId=a),r.adomain&&J(r.adomain)&&(e.meta.advertiserDomains=r.adomain,e.meta.clickUrl=r.adomain[0],e.meta.brandId=r.adomain[0]),r.cat&&J(r.cat)&&(e.meta.secondaryCatIds=r.cat,e.meta.primaryCatId=r.cat[0]),r.ext&&r.ext.dsa&&Object.keys(r.ext.dsa).length&&(e.meta.dsa=r.ext.dsa)}(l,p,e.seat),e.ext&&e.ext.buyid&&(l.adserverTargeting={hb_buyid_pubmatic:e.ext.buyid}),p.ext&&p.ext.marketplace&&(l.bidderCode=p.ext.marketplace),t.push(l)}))})));let p=(0,n.A)(e.body,"ext.fledge_auction_configs");if(p)return p=Object.entries(p).map((e=>{let[r,t]=e;return{bidId:r,config:Object.assign({auctionSignals:{}},t)}})),{bids:t,paapi:p}}catch(e){(0,i.logError)(e)}return t},getUserSyncs:(e,r,t,a,i)=>{let n=""+E;return t&&(n+="&gdpr="+(t.gdprApplies?1:0),n+="&gdpr_consent="+encodeURIComponent(t.consentString||"")),a&&(n+="&us_privacy="+encodeURIComponent(a)),i?.gppString&&i?.applicableSections?.length&&(n+="&gpp="+encodeURIComponent(i.gppString),n+="&gpp_sid="+encodeURIComponent(i?.applicableSections?.join(","))),!0===p.$W.getConfig("coppa")&&(n+="&coppa=1"),e.iframeEnabled?[{type:"iframe",url:"https://ads.pubmatic.com/AdServer/js/user_sync.html?kdntuid=1&p="+n}]:[{type:"image",url:"https://image8.pubmatic.com/AdServer/ImgSync?p="+n}]}};(0,o.a$)(D),(0,a.E)("pubmaticBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=63990,e(e.s=r);var r}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[62711],{99293:(e,t,r)=>{var i=r(7873),n=r(89766),o=r(34610),s=r(57377),a=r(43272),d=r(71371),c=r(15901),p=r(95789),u=r(91069),l=r(63172),m=r(70433),g=r(28656);const b="https://video-outstream.rubiconproject.com/apex-2.2.1.js";let f=a.$W.getConfig("rubicon")||{};a.$W.getConfig("rubicon",(e=>{(0,u.mergeDeep)(f,e.rubicon)}));var x={1:"468x60",2:"728x90",5:"120x90",7:"125x125",8:"120x600",9:"160x600",10:"300x600",13:"200x200",14:"250x250",15:"300x250",16:"336x280",17:"240x400",19:"300x100",31:"980x120",32:"250x360",33:"180x500",35:"980x150",37:"468x400",38:"930x180",39:"750x100",40:"750x200",41:"750x300",42:"2x4",43:"320x50",44:"300x50",48:"300x300",53:"1024x768",54:"300x1050",55:"970x90",57:"970x250",58:"1000x90",59:"320x80",60:"320x150",61:"1000x1000",64:"580x500",65:"640x480",66:"930x600",67:"320x480",68:"1800x1000",72:"320x320",73:"320x160",78:"980x240",79:"980x300",80:"980x400",83:"480x300",85:"300x120",90:"548x150",94:"970x310",95:"970x100",96:"970x210",101:"480x320",102:"768x1024",103:"480x280",105:"250x800",108:"320x240",113:"1000x300",117:"320x100",125:"800x250",126:"200x600",144:"980x600",145:"980x150",152:"1000x250",156:"640x320",159:"320x250",179:"250x600",195:"600x300",198:"640x360",199:"640x200",213:"1030x590",214:"980x360",221:"1x1",229:"320x180",230:"2000x1400",232:"580x400",234:"6x6",251:"2x2",256:"480x820",257:"400x600",258:"500x200",259:"998x200",261:"480x480",264:"970x1000",265:"1920x1080",274:"1800x200",278:"320x500",282:"320x400",288:"640x380",484:"720x1280",524:"1x2",548:"500x1000",550:"980x480",552:"300x200",558:"640x640",562:"300x431",564:"320x431",566:"320x300",568:"300x150",570:"300x125",572:"250x350",574:"620x891",576:"610x877",578:"980x552",580:"505x656",622:"192x160",632:"1200x450",634:"340x450"};(0,u._each)(x,((e,t)=>x[e]=t));const y=(0,n.A)({request(e,t,r,n){const{bidRequests:o}=n,s=e(t,r,n);var d;s.cur=["USD"],s.test=a.$W.getConfig("debug")?1:0,(0,l.J)(s,"ext.prebid.cache",{vastxml:{returnCreative:!0===f.returnVast}}),(0,l.J)(s,"ext.prebid.bidders",{rubicon:{integration:f.int_type||"pbjs"}}),(0,l.J)(s,"ext.prebid.targeting.pricegranularity",{ranges:{low:[{max:5,increment:.5}],medium:[{max:20,increment:.1}],high:[{max:20,increment:.01}],auto:[{max:5,increment:.05},{min:5,max:10,increment:.1},{min:10,max:20,increment:.5}],dense:[{max:3,increment:.01},{min:3,max:8,increment:.05},{min:8,max:20,increment:.5}],custom:(d=a.$W).getConfig("customPriceBucket")&&d.getConfig("customPriceBucket").buckets}[d.getConfig("priceGranularity")]});let c=(0,i.m)().installedModules;!c||c.length&&-1===c.indexOf("rubiconAnalyticsAdapter")||(0,l.J)(s,"ext.prebid.analytics",{rubicon:{"client-analytics":!0}}),function(e,t,r){let i={};const n=(0,g.D)(r,...t.map((e=>e.params.keywords)));t.forEach((t=>{const r={user:{ext:{data:{...t.params.visitor}}},site:{ext:{data:{...t.params.inventory}}}},n=e.imp.find((e=>e.ext?.prebid?.bidder?.rubicon?.video?.language));n&&(r.site.content={language:n.ext?.prebid?.bidder?.rubicon?.video?.language}),i=(0,u.mergeDeep)(i,t.ortb2||{},r);const o=a.$W.getConfig("user.id");i.user.id=i.user.id||o})),(0,u.mergeDeep)(e,i),n&&n.length&&(0,l.J)(e,"site.keywords",n.join(","));delete e?.ext?.prebid?.storedrequest}(s,o,r.ortb2),delete s?.ext?.prebid?.storedrequest,!0===f.disableFloors&&delete s.ext.prebid.floors;return o.filter((e=>"object"==typeof e.floorData)).length>0&&(s.ext.prebid.floors={enabled:!1}),s},imp(e,t,r){const i=k(t);if(i.includes(d.D4)&&1==i.length)return;const n=e(t,r);return n.id=t.adUnitCode,delete n.banner,"atf"===t.params.position&&n.video&&(n.video.pos=1),"btf"===t.params.position&&n.video&&(n.video.pos=3),delete n.ext?.prebid?.storedrequest,!0===t.params.bidonmultiformat&&i.length>1&&(0,l.J)(n,"ext.prebid.bidder.rubicon.formats",i),function(e,t){"USD"!=t.bidfloorcur&&(delete t.bidfloor,delete t.bidfloorcur);if(!t.bidfloor){let r=parseFloat((0,m.A)(e,"params.floor"));isNaN(r)||(t.bidfloor=r,t.bidfloorcur="USD")}}(t,n),n},bidResponse(e,t,r){const i=e(t,r);i.meta.mediaType=(0,m.A)(t,"ext.prebid.type");const{bidRequest:n}=r;let[o,s]="outstream"===n.mediaTypes.video?.context?A(n,d.G_):[void 0,void 0];return i.width=t.w||o||i.playerWidth||0,i.height=t.h||s||i.playerHeight||0,i.mediaType===d.G_&&"outstream"===n.mediaTypes.video.context&&(i.renderer=function(e){const t=p.A4.install({id:e.adId,url:f.rendererUrl||b,config:f.rendererConfig||{},loaded:!1,adUnitCode:e.adUnitCode});try{t.setRender(v)}catch(e){(0,u.logWarn)("Prebid Error calling setRender on renderer",e)}return t}(i)),(0,m.A)(t,"ext.bidder.rp.advid")&&(0,l.J)(i,"meta.advertiserId",t.ext.bidder.rp.advid),i},context:{netRevenue:!1!==f.netRevenue,ttl:360},processors:o.m}),_={code:"rubicon",gvlid:52,supportedMediaTypes:[d.D4,d.G_,d.s6],isBidRequestValid:function(e){let t=!0;if("object"!=typeof e.params)return!1;for(let t=0,r=["accountId","siteId","zoneId"];t<r.length;t++)if(e.params[r[t]]=parseInt(e.params[r[t]]),isNaN(e.params[r[t]]))return(0,u.logError)("Rubicon: wrong format of accountId or siteId or zoneId."),!1;let r=k(e,!0);if(!r.length)return!1;r.includes(d.G_)&&(t=function(e){let t=!0,r=Object.prototype.toString.call([]),i=Object.prototype.toString.call(0);var n={mimes:r,protocols:r,linearity:i};return Object.keys(n).forEach((function(r){Object.prototype.toString.call((0,m.A)(e,"mediaTypes.video."+r))!==n[r]&&(t=!1,(0,u.logError)("Rubicon: mediaTypes.video."+r+" is required and must be of type: "+n[r]))})),t}(e));const i=[d.D4,d.s6].filter((e=>r.includes(e))).length>0;return i?t&&i:t},buildRequests:function(e,t){let r,i=[],n=[];if(r=e.filter((e=>{const t=k(e)||[],{length:r}=t,{bidonmultiformat:i,video:n}=e.params||{};return 1===r&&(t.includes(d.G_)||t.includes(d.s6))||2===r&&!t.includes(d.D4)||n&&t.includes(d.G_)||i&&(t.includes(d.G_)||t.includes(d.s6))})),r&&r.length){const e=y.toORTB({bidRequests:r,bidderRequest:t});n.push({method:"POST",url:`https://${f.videoHost||"prebid-server"}.rubiconproject.com/openrtb2/auction`,data:e,bidRequest:r})}const o=e.filter((e=>{const t=k(e)||[],{bidonmultiformat:r,video:i}=e.params||{};return t.includes(d.D4)&&(1===t.length||r||!r&&!i||!r&&i&&!t.includes(d.G_))}));if(!0!==f.singleRequest)i=n.concat(o.map((e=>{const r=_.createSlotParams(e,t);return{method:"GET",url:`https://${f.bannerHost||"fastlane"}.rubiconproject.com/a/api/fastlane.json`,data:_.getOrderedParams(r).reduce(((e,t)=>{const i=r[t];return(0,u.isStr)(i)&&""!==i||(0,u.isNumber)(i)?`${e}${I(t,i)}&`:e}),"")+`slots=1&rand=${Math.random()}`,bidRequest:e}})));else{const e=o.reduce(((e,t)=>((e[t.params.siteId]=e[t.params.siteId]||[]).push(t),e)),{}),r=10;i=n.concat(Object.keys(e).reduce(((i,n)=>{var o,s;return(o=e[n],s=r,o.map(((e,t)=>t%s==0?o.slice(t,t+s):null)).filter((e=>e))).forEach((e=>{const r=_.combineSlotUrlParams(e.map((e=>_.createSlotParams(e,t))));i.push({method:"GET",url:`https://${f.bannerHost||"fastlane"}.rubiconproject.com/a/api/fastlane.json`,data:_.getOrderedParams(r).reduce(((e,t)=>{const i=r[t];return(0,u.isStr)(i)&&""!==i||(0,u.isNumber)(i)?`${e}${I(t,i)}&`:e}),"")+`slots=${e.length}&rand=${Math.random()}`,bidRequest:e})})),i}),[]))}return i},getOrderedParams:function(e){const t=/^tg_v/,r=/^tg_i/,i=/^eid_|^tpid_/,n=["account_id","site_id","zone_id","size_id","alt_size_ids","p_pos","gdpr","gdpr_consent","us_privacy","gpp","gpp_sid","rp_schain"].concat(Object.keys(e).filter((e=>i.test(e)))).concat(["x_liverampidl","ppuid","rf","p_geo.latitude","p_geo.longitude","kw"]).concat(Object.keys(e).filter((e=>t.test(e)))).concat(Object.keys(e).filter((e=>r.test(e)))).concat(["tk_flint","x_source.tid","l_pb_bid_id","p_screen_res","o_ae","o_cdep","rp_floor","rp_secure","tk_user_key"]);return n.concat(Object.keys(e).filter((e=>-1===n.indexOf(e))))},combineSlotUrlParams:function(e){if(1===e.length)return e[0];const t=e.reduce((function(t,r,i){return Object.keys(r).forEach((function(n){t.hasOwnProperty(n)||(t[n]=new Array(e.length)),t[n].splice(i,1,r[n])})),t}),{}),r=new RegExp("^([^;]*)(;\\1)+$");return Object.keys(t).forEach((function(e){const i=t[e].join(";"),n=i.match(r);t[e]=n?n[1]:i})),t},createSlotParams:function(e,t){e.startTime=(new Date).getTime();const r=e.params,i=A(e,"banner"),[n,o]=r.latLong||[],s={account_id:r.accountId,site_id:r.siteId,zone_id:r.zoneId,size_id:i[0],alt_size_ids:i.slice(1).join(",")||void 0,rp_floor:(r.floor=parseFloat(r.floor))>=.01?r.floor:void 0,rp_secure:"1",tk_flint:`${f.int_type||"pbjs_lite"}_v9.8.0-pre`,"x_source.tid":t.ortb2?.source?.tid,"x_imp.ext.tid":e.ortb2Imp?.ext?.tid,l_pb_bid_id:e.bidId,o_cdep:e.ortb2?.device?.ext?.cdep,p_screen_res:[window.screen.width,window.screen.height].join("x"),tk_user_key:r.userId,"p_geo.latitude":isNaN(parseFloat(n))?void 0:parseFloat(n).toFixed(4),"p_geo.longitude":isNaN(parseFloat(o))?void 0:parseFloat(o).toFixed(4),"tg_fl.eid":e.code,rf:h(e,t)};if("function"==typeof e.getFloor&&!f.disableFloors){let t;try{t=e.getFloor({currency:"USD",mediaType:"banner",size:"*"})}catch(e){(0,u.logError)("Rubicon: getFloor threw an error: ",e)}s.rp_hard_floor="object"!=typeof t||"USD"!==t.currency||isNaN(parseInt(t.floor))?void 0:t.floor}!0===r.bidonmultiformat&&(0,m.A)(e,"mediaTypes")&&Object.keys(e.mediaTypes).length>1&&(s.p_formats=Object.keys(e.mediaTypes).join(","));let p={1:"atf",3:"btf"}[(0,m.A)(e,"mediaTypes.banner.pos")]||"";s.p_pos="atf"===r.position||"btf"===r.position?r.position:p;const l=a.$W.getConfig("user.id");return l&&(s.ppuid=l),e?.ortb2Imp?.ext?.ae&&(s.o_ae=1),function(e,t){if(!1===f.readTopics)return;let r=[1,2,5,6,7,507].concat(f.sendSiteSegtax?.map((e=>Number(e)))||[]),i=[4,508].concat(f.sendUserSegtax?.map((e=>Number(e)))||[]),n=e.ortb2?.user?.data||[],o=e.ortb2?.site?.content?.data||[];n.forEach(j(t,"v",i)),o.forEach(j(t,"i",r))}(t,s),e.userIdAsEids&&e.userIdAsEids.forEach((e=>{try{if("adserver.org"===e.source)s.tpid_tdid=e.uids[0].id,s["eid_adserver.org"]=e.uids[0].id;else if("liveintent.com"===e.source)s["tpid_liveintent.com"]=e.uids[0].id,s["eid_liveintent.com"]=e.uids[0].id,e.ext&&Array.isArray(e.ext.segments)&&e.ext.segments.length&&(s["tg_v.LIseg"]=e.ext.segments.join(","));else if("liveramp.com"===e.source)s.x_liverampidl=e.uids[0].id;else if("id5-sync.com"===e.source)s["eid_id5-sync.com"]=`${e.uids[0].id}^${e.uids[0].atype}^${e.uids[0].ext&&e.uids[0].ext.linkType||""}`;else{const t="rubiconproject.com"===e.source?e.uids[0].id:`${e.uids[0].id}^${e.uids[0].atype||""}`;s[`eid_${e.source}`]=t}if(!s.ppuid){const t=(0,c.I6)(e.uids,(e=>e.ext&&"ppuid"===e.ext.stype));t&&t.id&&(s.ppuid=t.id)}}catch(t){(0,u.logWarn)("Rubicon: error reading eid:",e,t)}})),t.gdprConsent&&("boolean"==typeof t.gdprConsent.gdprApplies&&(s.gdpr=Number(t.gdprConsent.gdprApplies)),s.gdpr_consent=t.gdprConsent.consentString),t.uspConsent&&(s.us_privacy=encodeURIComponent(t.uspConsent)),t.gppConsent?.gppString&&(s.gpp=t.gppConsent.gppString,s.gpp_sid=t.gppConsent?.applicableSections?.toString()),s.rp_maxbids=t.bidLimit||1,function(e,t,r){const i={user:{ext:{data:{...e.params.visitor}}},site:{ext:{data:{...e.params.inventory}}}};e.params.keywords&&(i.site.keywords=(0,u.isArray)(e.params.keywords)?e.params.keywords.join(","):e.params.keywords);let n=(0,u.mergeDeep)({},e.ortb2||{},i),o=(0,m.A)(e.ortb2Imp,"ext")||{},s=(0,m.A)(e.ortb2Imp,"ext.data")||{};const a=(0,m.A)(e,"ortb2Imp.ext.gpid"),c=(0,m.A)(n,"regs.ext.dsa"),p={user:[4],site:[1,2,5,6]},l={user:"tg_v.",site:"tg_i.",adserver:"tg_i.dfp_ad_unit_code",pbadslot:"tg_i.pbadslot",keywords:"kw"},g=function(e,t,r){return"data"===t&&Array.isArray(e)?e.filter((e=>e.segment&&(0,m.A)(e,"ext.segtax")&&p[r]&&-1!==p[r].indexOf((0,m.A)(e,"ext.segtax")))).map((e=>{let t=e.segment.filter((e=>e.id)).reduce(((e,t)=>(e.push(t.id),e)),[]);if(t.length>0)return t.toString()})).toString():("object"!=typeof e||Array.isArray(e))&&void 0!==e?Array.isArray(e)?e.filter((e=>{if("object"!=typeof e&&void 0!==e)return e.toString();(0,u.logWarn)("Rubicon: Filtered value: ",e,"for key",t,": Expected value to be string, integer, or an array of strings/ints")})).toString():e.toString():void 0},b=function(e,t,i){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=g(e,i,t),s=l[i]&&n?`${l[i]}`:"data"===i?`${l[t]}iab`:`${l[t]}${i}`;r[s]=r[s]?r[s].concat(",",o):o};if(t===d.D4){["site","user"].forEach((e=>{Object.keys(n[e]).forEach((t=>{"site"===e&&"content"===t&&n[e][t].data?b(n[e][t].data,e,"data"):"ext"!==t?b(n[e][t],e,t):n[e][t].data&&Object.keys(n[e].ext.data).forEach((t=>{b(n[e].ext.data[t],e,t,!1)}))}))})),Object.keys(s).forEach((e=>{"adserver"!==e?b(s[e],"site",e):"gam"===s[e].name&&b(s[e].adslot,name,e)})),a&&(r.p_gpid=a),c&&Object.keys(c).length&&(0,u.pick)(c,["dsainfo",e=>r.dsainfo=e,"dsarequired",e=>r.dsarequired=e,"pubrender",e=>r.dsapubrender=e,"datatopub",e=>r.dsadatatopubs=e,"transparency",e=>{Array.isArray(e)&&e.length&&(r.dsatransparency=e.reduce(((e,t)=>{const r=t.domain||"";if(!r)return e;const i=t.dsaparams||t.params;return Array.isArray(i)&&0!==i.length?(e&&(e+="~~"),e+`${r}~${i.join("_")}`):e}),""))}]),r["tg_i.pbadslot"]&&delete r["tg_i.dfp_ad_unit_code"];const e=(0,m.A)(n,"device.sua");e&&!1!==f.chEnabled&&(0,u.pick)(e,["architecture",e=>r.m_ch_arch=e,"bitness",e=>r.m_ch_bitness=e,"browsers",e=>{if(!Array.isArray(e))return;const[t,i]=e.reduce(((e,t)=>(e[0].push(`"${t?.brand}"|v="${t?.version?.[0]}"`),e[1].push(`"${t?.brand}"|v="${t?.version?.join?.(".")}"`),e)),[[],[]]);r.m_ch_ua=t?.join?.(","),r.m_ch_full_ver=i?.join?.(",")},"mobile",e=>r.m_ch_mobile=`?${e}`,"model",e=>r.m_ch_model=e,"platform",e=>{r.m_ch_platform=e?.brand,r.m_ch_platform_ver=e?.version?.join?.(".")}])}else Object.keys(o).length&&(0,u.mergeDeep)(r.imp[0].ext,o),a&&(r.imp[0].ext.gpid=a),(0,u.mergeDeep)(r,n)}(e,d.D4,s),!0===a.$W.getConfig("coppa")&&(s.coppa=1),e.schain&&S(e.schain)&&(s.rp_schain=_.serializeSupplyChain(e.schain)),s},serializeSupplyChain:function(e){if(!S(e))return"";const{ver:t,complete:r,nodes:i}=e;return`${t},${r}!${_.serializeSupplyChainNodes(i)}`},serializeSupplyChainNodes:function(e){const t=["asi","sid","hp","rid","name","domain"];return e.map((e=>t.map((t=>encodeURIComponent(e[t]||""))).join(","))).join("!")},interpretResponse:function(e,t){e=e.body;const{data:r}=t;if(!e||"object"!=typeof e)return[];if(e.seatbid){const t=(0,m.A)(e,"ext.errors.rubicon");Array.isArray(t)&&t.length>0&&(0,u.logWarn)("Rubicon: Error in video response");return y.fromORTB({request:r,response:e}).bids}let i,n=e.ads,o=0;const{bidRequest:s}=t;if("object"==typeof s&&!Array.isArray(s)&&k(s).includes(d.G_)&&"object"==typeof n&&(n=n[s.adUnitCode]),!Array.isArray(n)||n.length<1)return[];let a=n.reduce(((t,r,n)=>{if(r.impression_id&&i===r.impression_id?o++:i=r.impression_id,"ok"!==r.status)return t;const a=Array.isArray(s)?s[n-o]:s;if(a&&"object"==typeof a){let e={requestId:a.bidId,currency:"USD",creativeId:r.creative_id||`${r.network||""}-${r.advertiser||""}`,cpm:r.cpm||0,dealId:r.deal,ttl:360,netRevenue:!1!==f.netRevenue,rubicon:{advertiserId:r.advertiser,networkId:r.network},meta:{advertiserId:r.advertiser,networkId:r.network,mediaType:d.D4}};r.creative_type&&(e.mediaType=r.creative_type),r.dsa&&Object.keys(r.dsa).length&&(e.meta.dsa=r.dsa),r.adomain&&(e.meta.advertiserDomains=Array.isArray(r.adomain)?r.adomain:[r.adomain]),r.creative_type===d.G_?(e.width=a.params.video.playerWidth,e.height=a.params.video.playerHeight,e.vastUrl=r.creative_depot_url,e.impression_id=r.impression_id,e.videoCacheKey=r.impression_id):(e.ad=(c=r.script,`<html>\n<head><script type='text/javascript'>inDapIF=true;<\/script></head>\n<body style='margin : 0; padding: 0;'>\n\x3c!-- Rubicon Project Ad Tag --\x3e\n<div data-rp-impression-id='${r.impression_id}'>\n<script type='text/javascript'>${c}<\/script>\n</div>\n</body>\n</html>`),[e.width,e.height]=x[r.size_id].split("x").map((e=>Number(e)))),e.rubiconTargeting=(Array.isArray(r.targeting)?r.targeting:[]).reduce(((e,t)=>(e[t.key]=t.values[0],e)),{rpfl_elemid:a.adUnitCode}),t.push(e)}else(0,u.logError)(`Rubicon: bidRequest undefined at index position:${n}`,s,e);var c;return t}),[]).sort(((e,t)=>(t.cpm||0)-(e.cpm||0))),c=e.component_auction_config?.map((e=>({config:e,bidId:e.bidId})));return c?{bids:a,paapi:c}:a},getUserSyncs:function(e,t,r,i,n){if(!R&&e.iframeEnabled){let e={};return r&&("boolean"==typeof r.gdprApplies&&(e.gdpr=Number(r.gdprApplies)),"string"==typeof r.consentString&&(e.gdpr_consent=r.consentString)),i&&(e.us_privacy=encodeURIComponent(i)),n?.gppString&&(e.gpp=n.gppString,e.gpp_sid=n.applicableSections?.toString()),e=Object.keys(e).length?`?${(0,u.formatQS)(e)}`:"",R=!0,{type:"iframe",url:`https://${f.syncHost||"eus"}.rubiconproject.com/usync.html`+e}}}};function h(e,t){let r;return r=e.params.referrer?e.params.referrer:t.refererInfo.page,e.params.secure?r.replace(/^http:/i,"https:"):r}function v(e){const t=document.getElementById(e.adUnitCode);!function(e){const t=e.querySelector("div[id^='google_ads']");t&&t.style.setProperty("display","none")}(t),function(e){const t=e.querySelector("script[id^='sas_script']"),r=t&&t.nextSibling;r&&"iframe"===r.localName&&r.style.setProperty("display","none")}(t);const r={...{align:"center",position:"append",closeButton:!1,label:void 0,collapse:!0},...e.renderer.getConfig()};e.renderer.push((()=>{window.MagniteApex.renderAd({width:e.width,height:e.height,vastUrl:e.vastUrl,placement:{attachTo:t,align:r.align,position:r.position},closeButton:r.closeButton,label:r.label,collapse:r.collapse})}))}function A(e,t){let r=e.params;if(t===d.G_){let t=[];return r.video&&r.video.playerWidth&&r.video.playerHeight?t=[r.video.playerWidth,r.video.playerHeight]:Array.isArray((0,m.A)(e,"mediaTypes.video.playerSize"))&&1===e.mediaTypes.video.playerSize.length?t=e.mediaTypes.video.playerSize[0]:Array.isArray(e.sizes)&&e.sizes.length>0&&Array.isArray(e.sizes[0])&&e.sizes[0].length>1&&(t=e.sizes[0]),t}let i=[];return Array.isArray(r.sizes)?i=r.sizes:void 0!==(0,m.A)(e,"mediaTypes.banner.sizes")?i=$(e.mediaTypes.banner.sizes):Array.isArray(e.sizes)&&e.sizes.length>0?i=$(e.sizes):(0,u.logWarn)("Rubicon: no sizes are setup or found"),function(e){const t=[15,2,9];return e.sort(((e,r)=>{const i=t.indexOf(e),n=t.indexOf(r);return i>-1||n>-1?-1===i?1:-1===n?-1:i-n:e-r}))}(i)}function j(e,t,r){return i=>{const n=Number(i.ext?.segtax);r.includes(n)&&(e[`tg_${t}.tax${n}`]=i.segment?.map((e=>e.id)).join(","))}}function $(e){return(0,u.parseSizesInput)(e).reduce(((e,t)=>{let r=parseInt(x[t],10);return r&&e.push(r),e}),[])}function k(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=[];if(function(e){let t=void 0!==(0,m.A)(e,`mediaTypes.${d.G_}`),r=void 0!==(0,m.A)(e,`mediaTypes.${d.D4}`),i=void 0!==(0,m.A)(e,"params.bidonmultiformat"),n="object"!=typeof(0,m.A)(e,"params.video");return!(!t||!i)||(r&&n&&(t=!1),t&&n&&(0,l.J)(e,"params.video",{}),t)}(e)){if(-1===["outstream","instream"].indexOf((0,m.A)(e,`mediaTypes.${d.G_}.context`)))return t&&(0,u.logError)("Rubicon: mediaTypes.video.context must be outstream or instream"),r;if(A(e,d.G_).length<2)return t&&(0,u.logError)("Rubicon: could not determine the playerSize of the video"),r;t&&(0,u.logMessage)("Rubicon: making video request for adUnit",e.adUnitCode),r.push(d.G_)}if(void 0!==(0,m.A)(e,`mediaTypes.${d.s6}`)&&r.push(d.s6),void 0!==(0,m.A)(e,`mediaTypes.${d.D4}`)){if(0===A(e,d.D4).length)return t&&(0,u.logError)("Rubicon: could not determine the sizes for banner request"),r;t&&(0,u.logMessage)("Rubicon: making banner request for adUnit",e.adUnitCode),r.push(d.D4)}return r}function S(e){let t=!1;const r=["asi","sid","hp"];return e.nodes?(t=e.nodes.reduce(((e,t)=>e?r.every((e=>t.hasOwnProperty(e))):e),!0),t||(0,u.logError)("Rubicon: required schain params missing"),t):t}function I(e,t){return"rp_schain"===e?`rp_schain=${t}`:`${e}=${encodeURIComponent(t)}`}var R=!1;(0,s.a$)(_),(0,i.E)("rubiconBidAdapter")}},e=>{e.O(0,[60802,58498,97247,47618,51085],(()=>{return t=99293,e(e.s=t);var t}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[84258],{95282:(e,t,n)=>{var i=n(7873),r=n(57377),s=n(43272),a=n(71371),o=n(91069);const d=["inScreen","inImage","inArticle","inBanner"],p={[a.D4]:"display",[a.G_]:"video"},c="fixed",u="mobile",l="unknown",g=()=>{const e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};switch(e.type||e.effectiveType){case"wifi":case"ethernet":return c;case"cellular":case"wimax":return u;default:return/iPad|iPhone|iPod/.test(navigator.userAgent)||/android/i.test(navigator.userAgent)?l:c}};function m(e){return!!e.mediaTypes&&!!e.mediaTypes.video}function b(e){const t=e.params;return!!t.publisherId&&!!t.adUnitId&&d.indexOf(t.placement)>-1}function h(e){const t=e.params,n=(0,o._map)(Object.keys(e.mediaTypes),(function(e){return p[e]})),i={id:e.bidId,transactionId:e.ortb2Imp?.ext?.tid,gpid:e.ortb2Imp?.ext?.gpid,sizes:e.sizes,supplyTypes:n,adUnitId:t.adUnitId,adUnitCode:e.adUnitCode,geom:S(e.adUnitCode),placement:t.placement,requestCount:e.bidderRequestsCount||1};return m(e)&&(i.videoParams=y(e)),i}function y(e){const t=e.mediaTypes.video||{};return t.playerSize&&(t.w=t.playerSize[0][0],t.h=t.playerSize[0][1]),t}function f(e){const t="display"===(n=e.mediaType)?a.D4:"video"===n?a.G_:n;var n;const i={requestId:e.bidId,cpm:e.price,width:e.width,height:e.height,creativeId:e.creativeId,currency:e.currency,netRevenue:!0,mediaType:t,ttl:e.ttl,nurl:e.nurl,meta:{advertiserDomains:e&&e.adomain&&e.adomain.length>0?e.adomain:[]}};return t===a.G_?i.vastXml=e.content:i.ad=e.content,i}function v(){const e=(()=>{try{const e=performance.getEntriesByType("navigation")[0];return Math.round(e.responseStart-e.startTime)}catch(e){try{const e=performance.timing;return Math.round(e.responseStart-e.fetchStart)}catch(e){return 0}}})();return e>=0&&e<=performance.now()?e:0}function S(e){const t=document.getElementById(e);if(t){const e=window.scrollY,{top:n,left:i,width:r,height:s}=t.getBoundingClientRect();return{scrollY:e,top:n,left:i,width:r,height:s,viewport:{width:window.innerWidth,height:window.innerHeight}}}}const I={code:"seedtag",gvlid:157,aliases:["st"],supportedMediaTypes:[a.D4,a.G_],isBidRequestValid:e=>m(e)?function(e){const t=y(e);let n=!!e.params.publisherId&&!!e.params.adUnitId&&m(e)&&!!t.playerSize&&(0,o.isArray)(t.playerSize)&&t.playerSize.length>0;return"inStream"===e.params.placement?n&&"instream"===t.context:n&&"outstream"===t.context&&function(e){return!!e.mediaTypes&&!!e.mediaTypes.banner}(e)&&b(e)}(e):b(e),buildRequests(e,t){const n={url:t.refererInfo.page,publisherToken:e[0].params.publisherId,cmp:!!t.gdprConsent,timeout:t.timeout,version:"9.8.0-pre",connectionType:g(),auctionStart:t.auctionStart||Date.now(),ttfb:v(),bidRequests:(0,o._map)(e,h),user:{topics:[],eids:[]}};if(n.cmp){const e=t.gdprConsent.gdprApplies;void 0!==e&&(n.ga=e),n.cd=t.gdprConsent.consentString}t.uspConsent&&(n.uspConsent=t.uspConsent),e[0].schain&&(n.schain=e[0].schain);let i=s.$W.getConfig("coppa");i&&(n.coppa=i),t.gppConsent?n.gppConsent={gppString:t.gppConsent.gppString,applicableSections:t.gppConsent.applicableSections}:t.ortb2?.regs?.gpp&&(n.gppConsent={gppString:t.ortb2.regs.gpp,applicableSections:t.ortb2.regs.gpp_sid}),t.ortb2?.user?.data&&(n.user.topics=t.ortb2.user.data),e[0]&&e[0].userIdAsEids&&(n.user.eids=e[0].userIdAsEids),t.ortb2?.bcat&&(n.bcat=t.ortb2?.bcat),t.ortb2?.badv&&(n.badv=t.ortb2?.badv),t.ortb2?.device?.sua&&(n.sua=t.ortb2.device.sua);return{method:"POST",url:"https://s.seedtag.com/c/hb/bid",data:JSON.stringify(n)}},interpretResponse:function(e){const t=e.body;return t&&t.bids&&(0,o.isArray)(t.bids)?(0,o._map)(t.bids,(function(e){return f(e)})):[]},getUserSyncs(e,t){const n=t[0];if(e.iframeEnabled&&n){const e=n.body.cookieSync;return e?[{type:"iframe",url:e}]:[]}return[]},onTimeout(e){const t=function(e){let t="";if((0,o.isArray)(e)&&e[0]&&(0,o.isArray)(e[0].params)&&e[0].params[0]){const n=e[0].params[0],i=e[0].timeout;t="?publisherToken="+n.publisherId+"&adUnitId="+n.adUnitId+"&timeout="+i}return"https://s.seedtag.com/se/hb/timeout"+t}(e);(0,o.triggerPixel)(t)},onBidWon:function(e){e&&e.nurl&&(0,o.triggerPixel)(e.nurl)}};(0,r.a$)(I),(0,i.E)("seedtagBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=95282,e(e.s=t);var t}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[4085],{43297:(e,n,t)=>{var r=t(7873),o=t(91069),u=t(70433),s=t(43272),p=t(11445),i=t(16916),l=t(75023),c=t(78969),a=t(45569),d=t(2604),f=t(95139),g=t(76811);const h={purpose:{},feature:{}},v={purpose:!1,feature:"specialFeatureOptins"},m={storage:{type:"purpose",default:{purpose:"storage",enforcePurpose:!0,enforceVendor:!0,vendorExceptions:[]},id:1},basicAds:{type:"purpose",id:2,default:{purpose:"basicAds",enforcePurpose:!0,enforceVendor:!0,vendorExceptions:[]}},personalizedAds:{type:"purpose",id:4},measurement:{type:"purpose",id:7},transmitPreciseGeo:{type:"feature",id:1}},y=new Set,B=new Set,E=new Set,k=new Set,q=new Set,A=new Set;let $=!1,b=!1;const C=[a.tW,a.fW,a.Tn,a.zu],D="TCF2",w=[],O=[2],W=[2,7,9,10];function P(e,n,t,r){const o=(0,u.A)(e,`vendorData.${n}`);return!!o?.consents?.[t]||r&&!!o?.legitimateInterests?.[t]}function S(e,n,t,r){let o;if(!1!==v[n])o=!!(0,u.A)(e,`vendorData.${v[n]}.${t}`);else{const[n,u]=r===i.B1?["publisher",W]:["purpose",O];o=P(e,n,t,u.includes(t))}return{purpose:o,vendor:P(e,"vendor",r,O.includes(t))}}function T(e,n,t,r){const o=m[e.purpose];if((e.vendorExceptions||[]).includes(t))return!0;const u=e.enforceVendor&&!(r===i.B1||(e.softVendorExceptions||[]).includes(t)),{purpose:s,vendor:p}=S(n,o.type,o.id,r);return(!e.enforcePurpose||s)&&(!u||p)}function x(e,n){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null;return function(u){const p=i.mW.getConsentData(),l=u[d.iK];if(function(e,n,t){return null==e&&i.mW.enabled?((0,o.logWarn)(`Attempting operation that requires purpose ${n} consent while consent data is not available${t?` (module: ${t})`:""}. Assuming no consent was given.`),!0):e&&e.gdprApplies}(p,e,l)){const e=function(e,n,t){if(n){const r=s.$W.getConfig("gvlMapping");if(r&&r[n])return r[n];if(e===a.tp)return i.B1;{let{gvlid:r,modules:u}=i.o2.get(n);if(null==r&&Object.keys(u).length>0)for(const t of C)if(u.hasOwnProperty(t)){r=u[t],t!==e&&(0,o.logWarn)(`Multiple GVL IDs found for module '${n}'; using the ${t} module's ID (${r}) instead of the ${e}'s ID (${u[e]})`);break}return null==r&&t&&(r=t()),r||null}}return null}(u[d.Dk],l,r(u));let c=!!n(p,l,e);if(!c)return t&&t.add(l),{allow:c}}}}function F(e){return x(e,((n,t,r)=>!!T(h.purpose[e],n,t,r)),arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>null)}function M(e){return function(n){if(n[d.Dk]!==a.tp)return e(n)}}const V=(j=F(1,y),function(e){if(e[d.Dk]!==a.tp||b)return j(e)});var j;const I=F(1,y),N=F(1,y),z=M(F(2,B)),G=F(7,E,(e=>function(e,n){const t=p.Ay.getAnalyticsAdapter(e);return(r=>{if("function"!=typeof r)return r;try{return r.call(t.adapter,n)}catch(n){(0,o.logError)(`Error invoking ${e} adapter.gvlid()`,n)}})(t?.adapter?.gvlid)}(e[d.iK],e[d.TQ]))),K=F(4,k),L=M((()=>{const e=x("2-10",(function(e,n,t){for(let r=2;r<=10;r++){if(h.purpose[r]?.vendorExceptions?.includes(n))return!0;const{purpose:o,vendor:u}=S(e,"purpose",r,t);if(o&&(u||h.purpose[r]?.softVendorExceptions?.includes(n)))return!0}return!1}),q),n=F(4,q);return function(){return(h.purpose[4]?.eidsRequireP4Consent?n:e).apply(this,arguments)}})()),R=x("Special Feature 1",((e,n,t)=>T(h.feature[1],e,n,t)),A);l.on(c.qY.AUCTION_END,(function(){const e=function(e){return Array.from(e.keys()).filter((e=>null!=e))},n={storageBlocked:e(y),biddersBlocked:e(B),analyticsBlocked:e(E),ufpdBlocked:e(k),eidsBlocked:e(q),geoBlocked:e(A)};l.emit(c.qY.TCF2_ENFORCEMENT,n),[y,B,E,k,q,A].forEach((e=>e.clear()))})),s.$W.getConfig("consentManagement",(e=>function(e){let n=(0,u.A)(e,"gdpr.rules");n||(0,o.logWarn)("TCF2: enforcing P1 and P2 by default"),n=Object.fromEntries((n||[]).map((e=>[e.purpose,e]))),b=!!(0,u.A)(e,"strictStorageEnforcement"),Object.entries(m).forEach((e=>{let[t,r]=e;h[r.type][r.id]=n[t]??r.default})),$||(null!=h.purpose[1]&&($=!0,w.push((0,f.qB)(g.Ue,D,V)),w.push((0,f.qB)(g.Ml,D,I)),w.push((0,f.qB)(g.yl,D,N))),null!=h.purpose[2]&&w.push((0,f.qB)(g.uc,D,z)),null!=h.purpose[4]&&w.push((0,f.qB)(g.DL,D,K),(0,f.qB)(g.qX,D,K)),null!=h.purpose[7]&&w.push((0,f.qB)(g.mo,D,G)),null!=h.feature[1]&&w.push((0,f.qB)(g.hE,D,R)),w.push((0,f.qB)(g.hq,D,L)))}(e.consentManagement))),(0,r.E)("tcfControl")}},e=>{e.O(0,[60802,51085],(()=>{return n=43297,e(e.s=n);var n}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[28746],{27454:(e,t,r)=>{var n=r(7873),i=r(91069),o=r(70433),a=r(57377),s=r(12938),d=r(72285);const c="teads",p=12,u=11,l=0,g=22,m=(0,s.vM)({bidderCode:c}),y={code:c,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let r=w((0,i.getValue)(e.params,"placementId")),n=w((0,i.getValue)(e.params,"pageId"));t=r&&n}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){const r=e.map(b),n=window.top,i={referrer:f(t),pageReferrer:document.referrer,pageTitle:v().slice(0,300),pageDescription:h().slice(0,300),networkBandwidth:(a=window.navigator,a&&a.connection&&a.connection.downlink>=0?a.connection.downlink.toString():""),timeToFirstByte:S(window),data:r,deviceWidth:screen.width,deviceHeight:screen.height,devicePixelRatio:n.devicePixelRatio,screenOrientation:screen.orientation?.type,historyLength:n.history?.length,viewportHeight:n.visualViewport?.height,viewportWidth:n.visualViewport?.width,hardwareConcurrency:n.navigator?.hardwareConcurrency,deviceMemory:n.navigator?.deviceMemory,hb_version:"9.8.0-pre",...I(e),...A(e)};var a;const s=e[0];s.schain&&(i.schain=s.schain);let d=t.gppConsent;if(t&&d){let e="string"==typeof d.gppString,t=Array.isArray(d.applicableSections)&&d.applicableSections.every((e=>"number"==typeof e));i.gpp={consentString:e?d.gppString:"",applicableSectionIds:t?d.applicableSections:[]}}let c=t.gdprConsent;if(t&&c){let e="boolean"==typeof c.gdprApplies,t="string"==typeof c.consentString,r=e?function(e,t){let r=p;e?t&&!t.isServiceSpecific&&(r=u):r=l;return r}(c.gdprApplies,c.vendorData):g;i.gdpr_iab={consent:t?c.consentString:"",status:r,apiVersion:c.apiVersion}}t&&t.uspConsent&&(i.us_privacy=t.uspConsent);const m=(0,o.A)(s,"ortb2.device.sua");m&&(i.userAgentClientHints=m);const y=(0,o.A)(t,"ortb2.regs.ext.dsa");y&&(i.dsa=y);return{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(i)}},interpretResponse:function(e,t){if(!(e=e.body).responses)return[];const r=(0,d.T)();return e.responses.filter((e=>!e.needAutoplay||r)).map((e=>{const t={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};return e.dealId&&(t.dealId=e.dealId),e?.ext?.dsa&&(t.meta.dsa=e.ext.dsa),t}))}};function I(e){const t={unifiedId2:"uid2.id",liveRampId:"idl_env",lotamePanoramaId:"lotamePanoramaId",id5Id:"id5id.uid",criteoId:"criteoId",yahooConnectId:"connectId",quantcastId:"quantcastId",epsilonPublisherLinkId:"publinkId",publisherFirstPartyViewerId:"pubcid",merkleId:"merkleId.id",kinessoId:"kpuid"};let r={};for(const n in t){const i=t[n],a=(0,o.A)(e,`0.userId.${i}`);a&&(r[n]=a)}return r}function f(e){let t="";return e&&e.refererInfo&&e.refererInfo.page&&(t=e.refererInfo.page),t}function v(){try{const e=window.top.document.querySelector('meta[property="og:title"]');return window.top.document.title||e&&e.content||""}catch(e){const t=document.querySelector('meta[property="og:title"]');return document.title||t&&t.content||""}}function h(){let e;try{e=window.top.document.querySelector('meta[name="description"]')||window.top.document.querySelector('meta[property="og:description"]')}catch(t){e=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]')}return e&&e.content||""}function S(e){const t=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,r=t&&"function"==typeof t.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType("navigation")[0]&&t.getEntriesByType("navigation")[0].responseStart&&t.getEntriesByType("navigation")[0].requestStart&&t.getEntriesByType("navigation")[0].responseStart>0&&t.getEntriesByType("navigation")[0].requestStart>0&&Math.round(t.getEntriesByType("navigation")[0].responseStart-t.getEntriesByType("navigation")[0].requestStart);if(r)return r.toString();const n=t&&t.timing.responseStart&&t.timing.requestStart&&t.timing.responseStart>0&&t.timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return n?n.toString():""}function b(e){const t={};let r=(0,i.getValue)(e.params,"placementId"),n=(0,i.getValue)(e.params,"pageId");const a=(0,o.A)(e,"ortb2Imp.ext.gpid"),s=(0,o.A)(e,"mediaTypes.video.plcmt");return t.sizes=function(e){return(0,i.parseSizesInput)(function(e){let t=(0,o.A)(e,"mediaTypes.video.playerSize"),r=(0,o.A)(e,"mediaTypes.video.sizes"),n=(0,o.A)(e,"mediaTypes.banner.sizes");if((0,i.isArray)(n)||(0,i.isArray)(t)||(0,i.isArray)(r)){return[n,r,t].reduce((function(e,t){return(0,i.isArray)(t)&&((0,i.isArray)(t[0])?t.forEach((function(t){e.push(t)})):e.push(t)),e}),[])}return e.sizes}(e))}(e),t.bidId=(0,i.getBidIdParameter)("bidId",e),t.bidderRequestId=(0,i.getBidIdParameter)("bidderRequestId",e),t.placementId=parseInt(r,10),t.pageId=parseInt(n,10),t.adUnitCode=(0,i.getBidIdParameter)("adUnitCode",e),t.transactionId=e.ortb2Imp?.ext?.tid||"",a&&(t.gpid=a),s&&(t.videoPlcmt=s),t}function w(e){return parseInt(e)>0}function A(e){const t=(0,o.A)(e,"0.userId.teadsId");if(t)return{firstPartyCookieTeadsId:t};if(m.cookiesAreEnabled(null)){const e=m.getCookie("_tfpvi",null);if(e)return{firstPartyCookieTeadsId:e}}return{}}(0,a.a$)(y),(0,n.E)("teadsBidAdapter")}},e=>{e.O(0,[42809,60802,51085],(()=>{return t=27454,e(e.s=t);var t}));e.O()}]);
(self.pbjsChunk=self.pbjsChunk||[]).push([[98282],{26504:(e,t,r)=>{var n=r(7873),i=r(70433),o=r(91069),a=r(71371),s=r(57377),p=r(43272),d=r(12938),l=r(76568);const u="triplelift";let c=null,m=null;const f=(0,d.vM)({bidderCode:u}),g={gvlid:28,code:u,supportedMediaTypes:[a.D4,a.G_],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",n=function(e,t){let r={},{schain:n}=e[0];const a=function(e){const t={},r={},n={},i=e.ortb2||{},a=function(){const e=f.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,o.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},i.site),p=Object.assign({},i.user);if(a){p.data=p.data||[];try{p.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,o.logError)("Triplelift: error adding 1plusX segments: ",e)}}x(r,s),x(n,p),(0,o.isEmpty)(r)||(t.context=r);(0,o.isEmpty)(n)||(t.user=n);return t}(t);r.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:h(e)};return b(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,o.logWarn)("Video size not defined",e)}t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!y(e)&&(r.banner={format:_(e.sizes)}),(0,o.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};x(r,e.ext),(0,o.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,o.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let s=[];e[0].userIdAsEids&&(s=i.A(e[0],"userIdAsEids"),r.user={ext:{eids:s}});let p=function(e,t){let r={};(0,o.isEmpty)(e)||(r.schain={...e});(0,o.isEmpty)(t)||(r.fpd={...t});return r}(n,a);(0,o.isEmpty)(p)||(r.ext=p);t?.ortb2?.regs?.gpp&&(r.regs=Object.assign({},t.ortb2.regs));t?.ortb2&&(r.ext.ortb2=Object.assign({},t.ortb2));return r}(e,t);if(r=(0,l.v)(r,"lib","prebid"),r=(0,l.v)(r,"v","9.8.0-pre"),t&&t.refererInfo){let e=t.refererInfo.page;r=(0,l.v)(r,"referrer",e)}return t&&t.timeout&&(r=(0,l.v)(r,"tmax",t.timeout)),t&&t.gdprConsent&&(c=void 0===t.gdprConsent.gdprApplies||t.gdprConsent.gdprApplies,r=(0,l.v)(r,"gdpr",c.toString()),void 0!==t.gdprConsent.consentString&&(m=t.gdprConsent.consentString,r=(0,l.v)(r,"cmp_cs",m))),t&&t.uspConsent&&(r=(0,l.v)(r,"us_privacy",t.uspConsent)),t?.paapi?.enabled&&(r=(0,l.v)(r,"fledge",t.paapi.enabled)),!0===p.$W.getConfig("coppa")&&(r=(0,l.v)(r,"coppa",!0)),r.lastIndexOf("&")===r.length-1&&(r=r.substring(0,r.length-1)),(0,o.logMessage)("tlCall request built: "+r),{method:"POST",url:r,data:n,bidderRequest:t}},interpretResponse:function(e,t){let{bidderRequest:r}=t,n=e.body.bids||[];const i=e.body.paapi||[];if(n=n.map((e=>function(e,t){let r={},n=t.width||1,i=t.height||1,o=t.deal_id||"",a=t.crid||"",s=e.bids[t.imp_id];0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:n,height:i,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency:"USD",ttl:300,tl_source:t.tl_source,meta:{}},b(s)&&"video"===t.media_type&&(r.vastXml=t.ad,r.mediaType="video",r.ttl=3600),t.advertiser_name&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&&"hdx"==t.tl_source&&(b(s)&&"video"===t.media_type?r.meta.mediaType="video":r.meta.mediaType="banner"),t.tl_source&&"tlx"==t.tl_source&&(r.meta.mediaType="native"),a&&(r.meta.networkId=a.slice(0,a.indexOf("_"))));return r}(r,e))),i.length>0){const e=i.map((e=>({bidId:r.bids[e.imp_id].bidId,config:e.auctionConfig})));return(0,o.logMessage)("Response with FLEDGE:",{bids:n,fledgeAuctionConfigs:e}),{bids:n,paapi:e}}return n},getUserSyncs:function(e,t,r,n,i){let o=function(e){if(!e)return;if(e.iframeEnabled)return"iframe";if(e.pixelEnabled)return"image"}(e);if(!o)return;let a="https://eb2.3lift.com/sync?";return"image"===o&&(a=(0,l.v)(a,"px",1),a=(0,l.v)(a,"src","prebid")),(null!==m||c)&&(a=(0,l.v)(a,"gdpr",c),a=(0,l.v)(a,"cmp_cs",m)),n&&(a=(0,l.v)(a,"us_privacy",n)),i&&(i.gppString&&(a=(0,l.v)(a,"gpp",i.gppString)),i.applicableSections&&0!==i.applicableSections.length&&(a=(0,l.v)(a,"gpp_sid",i.applicableSections.filter((e=>Number.isInteger(e))).join(",")))),[{type:o,url:a}]}};function b(e){return v(e)&&(y(e)||function(e){return v(e)&&"outstream"===e.mediaTypes.video.context.toLowerCase()}(e))}function y(e){return v(e)&&"instream"===e.mediaTypes.video.context.toLowerCase()}function v(e){return e.mediaTypes.video&&e.mediaTypes.video.context}function h(e){let t=null;if("function"==typeof e.getFloor)try{const r=e.getFloor({currency:"USD",mediaType:b(e)?"video":"banner",size:"*"});"object"!=typeof r||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}catch(e){(0,o.logError)("Triplelift: getFloor threw an error: ",e)}return null!==t?t:e.params.floor}function x(e,t){(0,o.isEmpty)(t)||Object.keys(t).forEach((r=>{null!=t[r]&&(e[r]=t[r])}))}function _(e){return e.filter(E).map((function(e){return{w:e[0],h:e[1]}}))}function E(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}(0,s.a$)(g),(0,n.E)("tripleliftBidAdapter")}},e=>{e.O(0,[14577,60802,51085],(()=>{return t=26504,e(e.s=t);var t}));e.O()}]);
})(),pbjs.processQueue();KL.Modules.movements = new function()
{
  var self = this;
  this.drag = 0;
  this.velocity = 0;
  this.captured = null;
  var draglisteners = {};

  this.adddraglistener = adddraglistener;
  function adddraglistener(id, rules)
  {
    draglisteners[id] = rules;
  }

  this.removedraglistener = removedraglistener;
  function removedraglistener(id)
  {
    delete draglisteners[id];
  }

  function startdrag(node)
  {
    // limpiamos los listeners que ya no funcionan (en caso de recargar la página)
    // buscamos el nodo afin
    for (var i in draglisteners)
    {
      if (draglisteners[i].startleft)
      {
        if (self.dragstartx >= draglisteners[i].startleft[0] && self.dragstartx <= draglisteners[i].startleft[1])
        {
          self.captured = i;
          draglisteners[i].listener('start', buildmetrics());
          break;
        }
      }
      if (draglisteners[i].startright)
      {
        var w = WA.browser.getScreenWidth();
        if (self.dragstartx >= draglisteners[i].startright[0]+w && self.dragstartx <= draglisteners[i].startright[1]+w)
        {
          self.captured = i;
          draglisteners[i].listener('start', buildmetrics());
          break;
        }
      }
      if (draglisteners[i].node)
      {
        var n = WA.toDOM(draglisteners[i].node);
        var p = node;
        while (n != p && p != window && p != null)
          p = p.parentNode;
        if (p == n)
        {
          self.captured = i;
          draglisteners[i].listener('start', buildmetrics());
          break;
        }
      }
    }
  }

  function drag()
  {
    if (self.captured)
      draglisteners[self.captured].listener('drag', buildmetrics());
  }

  function stopdrag()
  {
    if (self.captured)
      draglisteners[self.captured].listener(self.velocity<0?'izquierda':'derecha', buildmetrics());
  }

  function buildmetrics()
  {
    return {startx:self.dragstartx, x:self.dragx, dx:self.dragdx, velocity: self.velocity};
  }

  function touchstart(e)
  {
    self.drag = 1;
    self.dragstartx = WA.browser.getTouchDocumentX(e);
    self.dragstarty = WA.browser.getTouchDocumentY(e);
    self.dragdx = 0;
    self.dragx = self.dragstartx;

    self.velocity = 0;
    self.draglasttime = new Date().getTime();
    self.draglasttimex = self.dragstartx;

    startdrag(e.target);
  }

  function touchmove(e)
  {
    var deltax = self.dragstartx - WA.browser.getTouchDocumentX(e);
    var deltay = self.dragstarty - WA.browser.getTouchDocumentY(e);
    if (self.drag == 1)
    {
      // start drag when Delta move > 10 px
      if (Math.abs(deltax) < 5 && Math.abs(deltay) < 5)
        return;

      if (Math.abs(deltax) > Math.abs(deltay))
        self.drag = 2;   // move horizontaly
    }

    if (self.drag == 2)
    {
      // in cuadrant 2 and 4 (< and >) start drag;
      self.dragx = WA.browser.getTouchDocumentX(e);
      self.dragdx = self.dragx - self.dragstartx;

      var deltat = new Date().getTime() - self.draglasttime;
      if (deltat < 1)
        deltat = 1;
      var deltah = self.dragx - self.draglasttimex;
      self.draglasttime = new Date().getTime();
      self.draglasttimex = self.dragx;
      self.velocity = deltah / deltat * 700;
      drag();
    }
  }

  function touchend(e)
  {
    if (self.drag == 2)
    {
      if (Math.abs(self.velocity) < 50)
        self.velocity = 0;
      if (self.velocity > 1000)
        self.velocity = 1000;
      if (self.velocity < -1000)
        self.velocity = -1000;

      stopdrag();
    }

    self.drag = 0;
    self.captured = null;
  }

  function start()
  {
    WA.Managers.event.on('touchstart', document, touchstart, false);
    WA.Managers.event.on('touchmove', document, touchmove, false);
    WA.Managers.event.on('touchend', document, touchend, false);
  }

  KL.loader.addHookStart('general', start);
}
var flagFB = false;

KL.Modules.facebook = new function () {

    var self = this;
    var cargado = false;
    var FBresponse = null;
    this.facebookok = false;
    var serversent = false;
    var called = null;

    // Facebook asyncronous
    //this.fbAsyncInit = window.fbAsyncInit();
    window.fbAsyncInit = function () {
        //console.log("async fb")
        FB.init({
            appId: KL.fbid,
            cookie: true,  // enable cookies to allow the server to access
            xfbml: true,  // parse social plugins on this page
            version: 'v9.0' // use version 3.0
        });
        //  to send the response of authorization google
        FB.getLoginStatus(function (response) {
            self.FBlistener(response); // th Listener in the new structure is the start function
        });
        FB.Event.subscribe('auth.login', self.FBlistener);
        //FB.Event.subscribe('auth.logout', self.FBlistener);
        FB.Event.subscribe('auth.authResponseChange', self.FBlistener);
    };

    // FBlistener
    this.FBlistener = FBlistener;
    function FBlistener(response) {
//        console.log("fb listener")
//        console.log(response)
        FBresponse = response;
        if (called < new Date().getTime() / 1000 - 1) {
          called = null;
        }
        if (self.facebookok && FBresponse!==undefined && !called) {
            called = new Date().getTime() / 1000;
            loginFacebook();
            return;
        }
    }

    // login facebook
    function loginFacebook() {
        //console.log("fb login")
        if (FBresponse.status === 'connected') { // && flagFB
            let auxAccessToken = FBresponse.authResponse.accessToken;
            let auxSignedRequest = FBresponse.authResponse.signedRequest;
            if (serversent == true)
                return;
            WA.Managers.ajax.createPromiseRequest({ url: KL.identitydomains + '/sociallogin/fb', method: 'POST', send: false })
                .then(function (request) {
                    request.addParameter('language', KL.language); //language=es|en
                    request.addParameter('device', KL.device); //device="pc", "mobile", "ios", "android"
                    request.addParameter('user', "{ \"signedRequest\" : \"" + auxSignedRequest + "\", \"accessToken\" : \"" + auxAccessToken + "\" } "); //language=es|en
                    serversent = true;
                    return request.send(); //
                })
                .then(function (response) {
                    self.facebookok = false;
                    serversent = false;
                    var code = JSON.parse(response);
                    // proceso... mismo para todas las redes sociales...
                    switch (code.status) {
                        case "REGISTER":
                            KL.Modules.stat.registerEvent('loginset', 'loginset/social/fb/register');
                            KL.Modules.stat.registerEventGA4('loginset/social/fb/register', {'send_to': 'G-X0MHE23QYB'});
                            KL.Modules.client.loadclient();
                            KL.Modules.loginset.forms['enlaza'].fill(code, 'fb');
                            break;
                        case "OK":
                            KL.Modules.stat.registerEvent('loginset', 'loginset/social/fb/login');
                            KL.Modules.stat.registerEventGA4('loginset/social/fb/login', {'send_to': 'G-X0MHE23QYB'});
                            KL.Modules.client.loadclient();
                            KL.Modules.loginset.Logged();
                            break;
                        case "Error":
                            KL.Modules.stat.registerEvent('loginset', 'loginset/sociallogin/facebook/' + respuesta.code);
                            KL.Modules.stat.registerEventGA4('loginset/sociallogin/facebook/', {'send_to': 'G-X0MHE23QYB'});
                            KL.Modules.loginset.errorlogin('loginset-social-facebook' + respuesta.code, respuesta.message);
                            break;
                    }
                })
                .catch(function (code, err) {
                    KL.Modules.stat.registerEvent('loginset', 'loginset/sociallogin/' + code);
                    KL.Modules.stat.registerEventGA4('loginset/sociallogin/' + code, {'send_to': 'G-X0MHE23QYB'});
                });
        } else if (FBresponse.status === 'not_authorized') {
            //console.log("No autorizado");
        }/*
        else {
        } */
    }

    this.show = show;

    function show() { self.node.style.display = 'block'; }

    this.hide = hide;

    function hide() { self.node.style.display = 'none'; }


    this.loadFacebookBtn = loadFacebookBtn;
    function loadFacebookBtn() {
        if (window.FB && FB.XFBML) {
            self.facebookok = true;
            //console.log("FB loaded")
        }
        if (!self.facebookok) {
            //console.log("no carga window.FB")
            setTimeout(function () { loadFacebookBtn(); }, 100);
            return;
        }
        window.fbAsyncInit();
    }

    this.cargasdk = cargasdk;
    function cargasdk() {
      /* Facebook SDK */
      // already loaded ???
      if(cargado) {
        return;
      }
      WA.Managers.externloader.loadexterncode("https://connect.facebook.net/" + KL.locale + "/sdk.js#xfbml=1&version=v3.2&appId=" + KL.fbid);
      cargado=true;
    }


    this.share = share;
    function share(shareQuote, shareUrl) {
        var url = document.location.href;
        var quote = false;

        if (shareUrl && (typeof(shareUrl) === "string"))
            url = shareUrl;

        if (shareQuote && (typeof(shareQuote) === "string") && !(shareQuote === ""))
            quote = shareQuote;

        var params = {href: url, method: "share", display: "popup"};

        if (quote)
            params.quote = quote;

        if (url.indexOf('/quiz/') !== -1)
            ga('send', 'event', 'quiz', 'quiz/share', 'share', 0);

        // second parameter is a callback
        FB.ui(params, null);
    }

    this.start = start;
    function start() {
        self.cargasdk();
    }

    this.load = load;
    function load(){
        if (!WA.toDOM('botonfacebook'))
            return;
        self.loadFacebookBtn();
    }


    //
    KL.loader.addHookStart('facebook', start);
    KL.loader.addHookLoad('facebook', load);
}
/*
function KiwiFBlistener(response) {
    flagFB = true;
    KL.Modules.facebook.FBlistener(response);
}
*/
/* Manejo de los datos del cliente, conectado o no */
/*
  Escrito por: Phil
  Fecha: Julio 2016

  Control de cambios:
  10/07/2016: Phil, Creación
  18/08/2016: Phil, agregar control de notificaciones y tiempo de ultima lectura, depuración de atributos no usados
  15/02/2019: Wilmer, boton para el nuevo menu desplegable
  15/04/2019: Wilmer, manejo de origen
*/

KL.Modules.client = new function()
{
  var self = this;
  this.clientready = false;        // true cuando ya sabemos la info del client (o sin client)
  this.clientlogged = false;       // true si el client esta conectado
  this.clientpro = false;          // true si el client es PRO

  this.node = null;
  this.nodemenu = null;
  this.opened = false;
  this.closecandidate = false;
  this.loaded = false;

  var clientcode = null;           // codigo del client

  var hooksloaded = {};           // llamar cuando recibimos los datos del client (sea conectado o no)
  var hooksconnect = {};          // llamar cuando se conecta un client
  var hooksdisconnect = {};       // llamar cuando se desconecta un client

  this.addHookLoad = addHookLoad;
  function addHookLoad(id, hook)
  {
    hooksloaded[id] = hook;
    // Si ya paso por aqui, tenemos que llamar el hook !
    if (self.clientready)
      hook();
  }

  this.delHookLoad = delHookLoad;
  function delHookLoad(id)
  {
    delete hooksloaded[id];
  }

  function callHooksLoad()
  {
    for (var i in hooksloaded)
    {
      hooksloaded[i]();
    }
  }

  /* Chef conectado*/
  this.addHookConnect = addHookConnect;
  function addHookConnect(id, hook)
  {
    hooksconnect[id] = hook;
    if (self.clientready)
      hook();
  }

  this.callHooksConnect = callHooksConnect;
  function callHooksConnect()
  {
    for (var i in hooksconnect)
    {
      hooksconnect[i]();
    }
  }

  this.delHookConnect = delHookConnect;
  function delHookConnect(id)
  {
    delete hooksconnect[id];
  }
  /* Chef conectado*/

  /* Chef desconectado*/
  this.addHookDisconnect = addHookDisconnect;
  function addHookDisconnect(id, hook)
  {
    hooksdisconnect[id] = hook;
    if (self.clientready)
      hook();
  }

  this.callHooksDisconnect = callHooksDisconnect;
  function callHooksDisconnect()
  {
    for (var i in hooksdisconnect)
    {
      hooksdisconnect[i]();
    }
  }

  function buildClient()
  {
    if (clientcode == null) {
      self.clientready = false;
      return;
    }

    self.clientready = true;
    self.clientlogged = !!clientcode.client;
    self.clientpro = self.clientlogged && clientcode.client && (!!clientcode.client.p);
    
    node = WA.toDOM("header-client");
  
    if (self.clientlogged){
      temp = WA.templates['client_connected'](clientcode);

      if((KL.Modules.client.clientpro) && (KL.rootsite == "kiwi")){
        //WA.toDOM("header-icono-kiwipro").style.display = "block";
        WA.toDOM("header-div-logo-normal").style.display = "none";
        WA.toDOM("header-div-logo-pro").style.display = "block";
        WA.toDOM("header").style.backgroundColor = "var(--azul-kiwipro)";
        //WA.toDOM("header").style.backgroundImage = "url('" + KL.cdn7domains + "/img/static/header-azul-desk-fest.jpg')";
        WA.toDOM("header").style.backgroundRepeat = "repeat-x";
        WA.toDOM("footer-divfooter").style.backgroundColor = "var(--azul-kiwipro)";
        //WA.toDOM("footer-divfooter").style.backgroundImage = "url('" + KL.cdn7domains + "/img/static/footer-azul-desk-fest.jpg')";
        WA.toDOM("footer-divfooter").style.backgroundRepeat = "repeat-x";
        if (KL.device == "pc")
          WA.toDOM("header-search-go").style.backgroundColor = "#9fc7c4";
      }
      if((!KL.Modules.client.clientpro) && (KL.rootsite == "kiwi")){
        WA.toDOM("header-div-logo-normal").style.display = "block";
        WA.toDOM("header-div-logo-pro").style.display = "none";
        WA.toDOM("header").style.backgroundColor = "var(--verde-kiwi)";
        //WA.toDOM("header").style.backgroundImage = "url('" + KL.cdn7domains + "/img/static/header-verde-desk-fest.jpg')";
        WA.toDOM("header").style.backgroundRepeat = "repeat-x";
        //WA.toDOM("footer-divfooter").style.backgroundImage = "url('" + KL.cdn7domains + "/img/static/footer-verde-desk-fest.jpg')";
        WA.toDOM("footer-divfooter").style.backgroundRepeat = "repeat-x";
      }

    }
    else{
      temp = WA.templates['client_notconnected'](clientcode);
  
      if(KL.rootsite == "kiwi"){
        //WA.toDOM("header-icono-kiwipro").style.display = "none";
        WA.toDOM("header-div-logo-normal").style.display = "block";
        WA.toDOM("header-div-logo-pro").style.display = "none";
        WA.toDOM("header").style.backgroundColor = "var(--verde-kiwi)";
        //WA.toDOM("header").style.backgroundImage = "url('" + KL.cdn7domains + "/img/static/header-verde-desk-fest.jpg')";
        WA.toDOM("header").style.backgroundRepeat = "repeat-x";
        //WA.toDOM("footer-divfooter").style.backgroundImage = "url('" + KL.cdn7domains + "/img/static/footer-verde-desk-fest.jpg')";
        WA.toDOM("footer-divfooter").style.backgroundRepeat = "repeat-x";
        //WA.toDOM("header-search-go").style.backgroundColor = "#a8e05c";
      }
    }

    node.innerHTML = temp;

    if ((self.clientlogged) && (!KL.Modules.client.clientpro) && (KL.rootsite == "kiwi"))
    {
      //WA.toDOM("header-urliconpro").style.display = "block";
      WA.toDOM("header-urliconpro").style.display = "flex";
    }
  
    // Link menus
    self.loaded = false;
    self.node = WA.toDOM("header-client-button");
    self.nodemenu = WA.toDOM("header-client-menu");

    if (self.node)
    {
      self.node.onclick=switchmenu;
      self.node.ontouchstart=switchmenu;
      self.node.onmouseover=switchon;
      self.node.onmouseout=tryswitchoff;
    }
  
    if (self.nodemenu)
    {
      self.nodemenu.onmouseover=switchon;
      self.nodemenu.onmouseout=tryswitchoff;
    }
  }

  // MANEJO DEL MENU DEL CLIENTE:
  function switchmenu(event)
  {
    if (!self.opened)
      return switchon(event);
    switchoff();
    return WA.browser.cancelEvent(event);
  }

  function switchon(event)
  {
    self.closecandidate = false;
    if (self.closetimer)
    {
      clearTimeout(self.closetimer);
      self.closetimer = null;
    }
    if (self.opened)
      return;
    KL.Modules.menu.switchoff();
    KL.Modules.language.switchoff();
    KL.Modules.search.switchoff();
    KL.Modules.stat.registerEvent('headclient', 'head/client/open');
    KL.Modules.stat.registerEventGA4('head/client/open', {'send_to': 'G-X0MHE23QYB'});

    self.opened = true;
    if (KL.device == "mobile")
    {
      self.nodemenu.style.top = "46px";
      if((KL.Modules.client.clientpro) && (KL.rootsite == "kiwi")){
        self.node.className = "anim onpro";
        WA.toDOM('header-client-menu').classList.add("divmenupro");
      }
      else{
        self.node.className = "anim on";
      }
    }
    else
    {
      self.nodemenu.style.top = "60px";
      if((KL.Modules.client.clientpro) && (KL.rootsite == "kiwi")){
        self.node.className = "anim onpro";
        WA.toDOM('header-client-menu').classList.add("divmenupro");
      }
      else{
        self.node.className = "anim on";
      }
    }
    if (!self.loaded)
      load();
    return WA.browser.cancelEvent(event);
  }

  function tryswitchoff()
  {
    self.closecandidate = true;
    self.closetimer = setTimeout(switchoff, 200);
  }

  this.switchoff = switchoff;
  function switchoff(event)
  {
    self.closecandidate = false;
    if (self.closetimer)
    {
      clearTimeout(self.closetimer);
      self.closetimer = null;
    }
    if (!self.opened)
      return;
    KL.Modules.stat.registerEvent('headclient', 'head/client/close');
    KL.Modules.stat.registerEventGA4('head/client/close', {'send_to': 'G-X0MHE23QYB'});
    self.opened = false;
    // gets height of node
    h = WA.browser.getNodeOuterHeight(self.nodemenu);
    self.nodemenu.style.top = -h + "px";
    self.node.className = "anim";
    return WA.browser.cancelEvent(event);
  }

  function load()
  {
    var request = WA.Managers.ajax.createRequest('/data/menuclient' + (self.clientlogged ? '' : 'nc'), 'POST', null, loaded, true);
  }

  function loaded(request)
  {
    self.nodemenu.innerHTML = request.responseText;
    // Quita la coronita cuando el usuario no es pro
    if ((self.clientlogged) && (KL.Modules.client.clientpro) && (KL.rootsite == "kiwi")) {
      WA.toDOM("menuclient-padlock-planeador").style.display = "none";
    }

    // reajustar top -X si cerrado
    if (self.opened == false)
    {
      h = WA.browser.getNodeOuterHeight(self.nodemenu);
      self.nodemenu.style.top = -h + "px";
    }
    self.loaded = true;
    KL.loader.callHooksPostLoad();
  }

  function start()
  {
    // Start: load the 1rst time client data
    // Toma el objeto del cliente del JS precargado
    // Pone la plantilla correspondiente al client
    clientcode = KL.pagedata.client;
    buildClient();
  }

  this.getClaveChef = getClaveChef;
  function getClaveChef()
  {
    return clientcode.client.c;
  }

  this.getCountry = getCountry;
  function getCountry()
  {
    return clientcode.gep;
  }

  this.loadclient = loadclient;
  function loadclient()
  {
    var urlClient = self.clientlogged ? KL.graphdomains + '/v6/client' : KL.identitydomains + '/client';
    var request = WA.Managers.ajax.createRequest(urlClient, 'POST', 'device=' + KL.device + '&language=' + KL.language, getloadclient, true);
  }

  function getloadclient(request)
  {
    clientcode = JSON.parse(request.responseText);
    buildClient();
    updateCache();

    // para evitar display de publicidad usuario pro
    if(self.clientlogged && self.clientpro)
      KL.loader.reloadPro = true;
  }

  this.loadAvatarChef = loadAvatarChef;
  function loadAvatarChef()
  {
    var image = new Image();
    image.addEventListener('error', event => {
      var imgUrl = KL.rootsite == 'crafto' ? KL.cdn7domains + "/craftologia/static/icono-usuario.svg" : KL.cdn7domains + "/kiwilimon/static/icono-usuario.svg";
      var imgChef = WA.toDOM('img-avatar-chef');
      imgChef.style.backgroundImage = 'url(' + imgUrl + ')';
    })
    image.src = clientcode.client.i;
  }

  this.disconnect = disconnect;
  function disconnect()
  {
    KL.Modules.client.clientlogged = false;
    var request = WA.Managers.ajax.createRequest(KL.identitydomains + '/client', 'DELETE', 'device=' + KL.device+'&language=' + KL.language, loadclient, true);
    //var request = WA.Managers.ajax.createRequest(KL.graphdomains + '/v6/client', 'DELETE', 'device=' + KL.device+'&language=' + KL.language, loadclient, true); esté se va a manejar por el im 27/11/2023

    //delete cookie?
    var date = new Date();
    date.setTime(date.getTime()+(-24*60*60*1000));
    var expires = "; expires="+date.toGMTString();

    // Desconecta cierra session de facebook DAG
    FB.getLoginStatus(function (response) {
      if(response.status == "connected")
        KL.Modules.facebook.logout();
    });

    if(KL.devel)
    {
      document.cookie = "siteSessionDevel=" + expires + "; domain=" + KL.cookiedomain + "; path=/";
    } else {
      document.cookie = "siteSession=" + expires + "; domain=" + KL.cookiedomain + "; path=/";
    }
    KL.Modules.client.switchoff();
  }

  // llamado cada 30 segundos para saber si hay notificaciones nuevas del cliente
  function recon()
  {
    var request = WA.Managers.ajax.createRequest(KL.identitydomains + '/notification', 'GET', 'device=' + KL.device + '&language=' + KL.language, getnotif, true);
  }

  // newsletter 
  this.sendnewsletter = sendnewsletter;
  function sendnewsletter() {
    const mail = WA.toDOM('newsletter').value;
    if (mail == "") {
        return;
    }
    WA.Managers.ajax.createPromiseRequest({ url: KL.identitydomains + '/newsletter', method: 'POST', send: false })
      .then(function (request) {
          request.addParameter('language', KL.language);
          request.addParameter('device', KL.device);
          request.addParameter('user', mail);
          return request.send();
      })
      .then(function (response) {
          const resp = JSON.parse(response);
          /*
          if (resp.status == "OK") {
              KL.Modules.modal.notifica(resp.message);
          } else {
          */
          /* se modificó este pedacito para que si estamos parados en la landing newsletter entonces muestre un mensaje de bienvenida */
          if (resp.status == "OK") {
            var landingnews = window.location.pathname;
            if( landingnews == '/newsletter-registro' ){
              var bloqprincipalnews = WA.toDOM('newsletter-principal');
              var bloqregistronews = WA.toDOM('newsletter-area-registro-mail');
              var bloqrespregistronews = WA.toDOM('newsletter-respuesta-registro-mail');

              KL.Modules.modal.notifica(resp.message);
              
              setTimeout(
                function()
                {
                  bloqprincipalnews.removeChild(bloqregistronews);
                  bloqrespregistronews.style.display = 'flex';
                }, 4000);
            }
            else{
              KL.Modules.modal.notifica(resp.message);
            }
            
            
          } else {
              switch (resp.code) {
                  case 1504:
                      KL.Modules.modal.notifica(resp.message);
                      break;
                  default:
                      KL.Modules.modal.alerta(resp.message);
                      break;
              }
          }
      })
      .catch(function (code, err) {
          // 
      });
  }

  function updateCache()
  {
    caches.keys()
    .then(function(cacheNames){
  
      for(var name of cacheNames)
      {
        if(name.search(/kiwi/) != -1)
        {
          caches.open(name).then((cache) => cache.add("/"));
          caches.open(name).then((cache) => cache.add(document.location.origin + "/login/social?p=" + document.location.pathname));
          caches.open(name).then((cache) => cache.add(document.location.href));
        }
      }
    })
  }

  KL.loader.addHookRecon('client', recon);
  KL.loader.addHookStart('client', start);
}

/* search, main search field */

KL.Modules.search = new function()
{
  var self = this;
  this.node = null;
  this.nodesearch = null;
  this.nodeclose = null;
  this.nodego = null;
  this.nodesugg = null;
  this.opened = false;
  this.trx = 0;
  var flagsearch = false;  // Set to true when searching data from the server. Only 1 search authorize at the same time. If more we ignore them, just get the last one.
  var timer = null;        // timer set to search from server (delay 300ms)

  function hidesuggestion()
  {
    if (!self.nodesugg)
      return;
    self.nodesugg.style.display = "none";
  }

  function showsuggestion()
  {
    if (!self.nodesugg)
    { // No suggestions support
      return;
    }
    KL.Modules.menu.switchoff();
    KL.Modules.language.switchoff();
    KL.Modules.client.switchoff();
    self.nodesugg.style.display = "block";
    KL.Modules.stat.registerEvent('headsearch', 'head/search/suggest');
    KL.Modules.stat.registerEventGA4('head/search/suggest', {'send_to': 'G-X0MHE23QYB'});
  }

  // Activated only on mobile
  function hidesearch()
  {
    if (!self.nodesearch)
      return;
    hidesuggestion();
    self.opened = false;
    self.nodesearch.className = "anim";
    self.nodego.className = "icon-k7-search anim";
    self.node.value="";
  }

  // Activated only on mobile
  function showsearch()
  {
    if (!self.nodesearch)
      return;
    KL.Modules.menu.switchoff();
    KL.Modules.language.switchoff();
    KL.Modules.client.switchoff();
    self.opened = true;
    self.nodesearch.className = "anim on";
    
    if((KL.Modules.client.clientpro) && (KL.rootsite == "kiwi"))
      self.nodego.className = "icon-k7-search anim onpro";
    else
      self.nodego.className = "icon-k7-search anim on";
    
    self.node.focus();
  }

  function changeq(event)
  {
    setTimeout(function () {verificaq();}, 0);
  }

   function verificaq()
   {
     if (timer)
     {
       clearTimeout(timer);
       timer = null;
     }
     var numc = self.node.value.trim().length;
     var word = self.node.value.trim();
     if (numc >= 3)
       // Intentamos con timeout a 0: cada caracter es enviado a sugerencias
       timer = setTimeout(function() { gosuggestion(word); }, 0);
     else
       hidesuggestion();
   }

  function gosuggestion(word)
  {
    var request = WA.Managers.ajax.createRequest(KL.graphdomains + '/v6/suggestions', 'POST', null, getsuggestion, false);
    request.addParameter('q', word);
    request.addParameter('language', KL.language);
    request.addParameter('device', KL.device);
    request.addParameter('trx', ++self.trx);
    request.send();
  }

  function getsuggestion(request)
  {
    var resp = JSON.parse(request.responseText);
    if (resp.trx < self.trx)
      return;
    text = "";
    for (var i = 0, l = resp.payload.length; i < l; i++)
    {
      text += '<div class="header-search-suggestions-option" onclick="KL.Modules.search.select(this);">' + resp.payload[i] + '</div>';
    }
    WA.toDOM("header-search-suggestions-result").innerHTML = text;
    showsuggestion();
  }

  function search(event)
  {
    if (KL.device == "mobile")
    {
      // switch on/off barra
      if (!self.nodesearch)
        return;
      if (self.opened)
      {
        hidesearch();
      } else {
        showsearch();
      }
      return;
    }

    KL.Modules.stat.registerEvent('headsearch', 'head/search/go');
    KL.Modules.stat.registerEventGA4('head/search/go', {'send_to': 'G-X0MHE23QYB'});
    var numc = self.node.value.trim().length;
    var word = self.node.value.trim();
    if (numc < 3)
      return;
    hidesuggestion();
    
    // window.location = "/buscar?q="+word;
    if(KL.rootsite == 'kiwirec')
      window.location = "/search?q="+word;
    else
      window.location = "/buscar?q="+word;

    // KL.loader.loadPage("/buscar?q="+word, null, true);
  }

  this.select = select;
  function select(node)
  {
    KL.Modules.stat.registerEvent('headsearch', 'head/search/gosuggest');
    KL.Modules.stat.registerEventGA4('head/search/gosuggest', {'send_to': 'G-X0MHE23QYB'});
    var word = node.innerHTML;
    self.node.value = word;
    if (KL.device=="mobile")
    {
      // window.location = "/buscar?q="+word;
      if(KL.rootsite == 'kiwirec')
        window.location = "/search?q="+word;
      else
        window.location = "/buscar?q="+word;
      
      return;
    }
    search();
  }

  function clean(event)
  {
    KL.Modules.stat.registerEvent('headsearch', 'head/search/clean');
    KL.Modules.stat.registerEventGA4('head/search/clean', {'send_to': 'G-X0MHE23QYB'});
    if (KL.device == "mobile")
    {
      if (self.node.value.trim().length == 0)
      {
        hidesearch();
        return;
      }
      self.node.value = "";
      hidesuggestion();
      self.node.focus();
      return;
    }
    self.node.value = "";
    hidesuggestion();
  }

  // MENU:
  this.switchoff = switchoff;
  function switchoff(event)
  {
    hidesuggestion();
    hidesearch();
  }

  function start()
  {
    self.nodesearch = WA.toDOM("header-search");
    self.node = WA.toDOM("header-search-q");
    self.nodeclose = WA.toDOM("header-search-close");
    self.nodego = WA.toDOM("header-search-go");
    self.nodesugg = WA.toDOM("header-search-suggestions");
    if (self.node)
    {
      self.node.onkeyup=changeq;
    }
    if (self.nodeclose)
    {
      self.nodeclose.onclick=clean;
    }
    if (self.nodego)
    {
      self.nodego.onclick=search;
    }
  }
  KL.loader.addHookStart('search', start);
}

/* language, menu to change language */

KL.Modules.language = new function()
{
  var self = this;
  this.activated = false;
  this.node1 = null;
  this.node2 = null;
  this.nodemenu = null;
  this.opened = false;

  // MENU:
  function switchmenu(event)
  {
    if (!self.opened)
      return switchon(event);
    setTimeout(switchoff, 100);
    return WA.browser.cancelEvent(event);
  }

  function switchon(event)
  {
    KL.Modules.menu.switchoff();
    KL.Modules.search.switchoff();
    KL.Modules.client.switchoff();
    KL.Modules.stat.registerEvent('headlanguage', 'head/lang/open');
    KL.Modules.stat.registerEventGA4('head/lang/open', {'send_to': 'G-X0MHE23QYB'});
    self.opened = true;
    self.nodemenu.style.display = "block";
  }

  this.switchoff = switchoff;
  function switchoff(event)
  {
    if (!self.activated)
      return;
    KL.Modules.stat.registerEvent('headlanguage', 'head/lang/close');
    KL.Modules.stat.registerEventGA4('head/lang/close', {'send_to': 'G-X0MHE23QYB'});
    self.opened = false;
    self.nodemenu.style.display = "none";
  }

  function click(event)
  {
    if (KL.language == "es" && KL.pagedata.page.pathen)
    {
      KL.Modules.stat.registerEvent('headlanguage', 'head/lang/go-en');
      KL.Modules.stat.registerEventGA4('head/lang/go-en', {'send_to': 'G-X0MHE23QYB'});
      window.location = KL.pagedata.page.pathen;
    }
    if (KL.language == "en" && KL.pagedata.page.pathes)
    {
      window.location = KL.pagedata.page.pathes;
      KL.Modules.stat.registerEvent('headlanguage', 'head/lang/go-es');
      KL.Modules.stat.registerEventGA4('head/lang/go-es', {'send_to': 'G-X0MHE23QYB'});
    }
    return false;
  }

  function start()
  {
    self.node1 = WA.toDOM("header-language-button1");
    self.node2 = WA.toDOM("header-language-button2");
    self.nodemenu = WA.toDOM("header-language-menu");
    if (!self.node1 || !self.node2 || !self.nodemenu)
      return;
    self.activated = true;
    self.node1.onclick=switchmenu;
    self.node1.ontouchstart=switchmenu;
    self.node2.onclick=switchmenu;
    self.node2.ontouchstart=switchmenu;
    if (KL.language == "es")
    {
      var n = WA.toDOM("header-language-espanol");
      var m = WA.toDOM("header-language-ingles");
    } else {
      var n = WA.toDOM("header-language-ingles");
      var m = WA.toDOM("header-language-espanol");
    }
    n.className = "icon-k7-paloma on";
    m.parentNode.onclick = click;
  }

  KL.loader.addHookStart('language', start);
}

/* menu, main header menu */

KL.Modules.menu = new function()
{
  var self = this;
  this.node = null;
  this.nodemenu = null;
  this.nodemenupro = null;
  this.nodemenunormal = null;
  this.opened = false;
  this.closecandidate = false;
  this.closetimer = null;
  this.loaded = false;
  var fannode = null;
  var fannum = 0;
  var fanyear = 0;
  var fanmonth = 0;
  var fanday = 0;
  var fanhour = 0;
  var fanperday = 0;
  var fanstart = null;

  function switchmenu(event)
  {
    if (!self.opened)
      return switchon(event);
    switchoff();
    return WA.browser.cancelEvent(event);
  }

  function switchon(event)
  {
    self.closecandidate = false;
    if (self.closetimer)
    {
      clearTimeout(self.closetimer);
      self.closetimer = null;
    }
    if (self.opened)
      return;
    KL.Modules.language.switchoff();
    KL.Modules.search.switchoff();
    KL.Modules.client.switchoff();
    KL.Modules.stat.registerEvent('headmenu', 'head/menu/open');
    KL.Modules.stat.registerEventGA4('head/menu/open', {'send_to': 'G-X0MHE23QYB'});
    self.opened = true;
    if (KL.device == "mobile")
    {
      self.nodemenu.style.top = "46px";
      if((KL.Modules.client.clientpro) && (KL.rootsite == "kiwi"))
        self.node.className = "icon-k7-menu anim onpro";
      else
        self.node.className = "icon-k7-menu anim on";
    }
    else
    {
      self.nodemenu.style.top = "60px";
      if((KL.Modules.client.clientpro) && (KL.rootsite == "kiwi"))
        self.node.className = "icon-k7-menu anim onpro";
      else
        self.node.className = "icon-k7-menu anim on";
    }
    if (!self.loaded)
      load();
    return WA.browser.cancelEvent(event);
  }

  function tryswitchoff()
  {
    // TODO(phil) poner un timer
    self.closecandidate = true;
    self.closetimer = setTimeout(switchoff, 200);
  }

  this.switchoff = switchoff;
  function switchoff(event)
  {
    self.closecandidate = false;
    if (self.closetimer)
    {
      clearTimeout(self.closetimer);
      self.closetimer = null;
    }
    if (!self.opened)
      return;
    KL.Modules.stat.registerEvent('headmenu', 'head/menu/close');
    KL.Modules.stat.registerEventGA4('head/menu/close', {'send_to': 'G-X0MHE23QYB'});
    self.opened = false;
    if (KL.device == "mobile")
    {
      self.nodemenu.style.top = "-500px";
      self.node.className = "icon-k7-menu anim";
    }
    else
    {
      self.nodemenu.style.top = "-320px";
      self.node.className = "icon-k7-menu anim";
    }
    return WA.browser.cancelEvent(event);
  }

  function fancount() {
    fannode = WA.toDOM("header-menu-fans");
    if (!fannode)
      return;
    fannum = fannode.dataset.num;
    fanyear = fannode.dataset.year;
    fanmonth = fannode.dataset.month;
    fanday = fannode.dataset.day;
    fanhour = fannode.dataset.hour;
    fanperday = fannode.dataset.perday;
    fanstart = new Date();
    fanstart.setUTCFullYear(fanyear);
    fanstart.setUTCMonth(parseInt(fanmonth, 10)-1);
    fanstart.setUTCDate(fanday);
    fanstart.setUTCHours(fanhour);
    fanstart.setUTCMinutes(0);
    fanstart.setUTCSeconds(0);
    calcFans();
  }

  function calcFans() {
    var diffTime = Math.abs(new Date() - fanstart) / 1000 / 60 / 60 / 24;
    var newnum = Math.round(parseInt(fannum, 10) * 1.0 + diffTime * parseInt(fanperday, 10));
    fannode.innerHTML = newnum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

    // act each 1 sec
    setTimeout(function() { calcFans(); }, 1000);
  }

  function load()
  {
    var request = WA.Managers.ajax.createRequest('/data/menu', 'POST', null, loaded, true);
  }

  function loaded(request)
  {
    self.nodemenu.innerHTML = request.responseText;

    /* para mostrar opciones kiwipro en el menu */
    self.nodemenupro = WA.toDOM("menu-header-kiwipro");
    self.nodemenunormal = WA.toDOM("menu-header-normal");

    if ((KL.rootsite == "kiwi") || (KL.rootsite == "kiwirec")){
      if (KL.Modules.client.clientpro)
      {
        // console.log('chef es pro');
        self.nodemenupro.style.display = 'block';
        self.nodemenunormal.style.display = 'none';
      }
      else
      {
        // console.log('chef no es pro');
        self.nodemenunormal.style.display = 'block';
        self.nodemenupro.style.display = 'none';
      }
    }
    
    self.loaded = true;
    KL.loader.callHooksPostLoad();

    // start fans count
    fancount();
  }

  function start()
  {
    self.node = WA.toDOM("header-button-menu");
    self.nodemenu = WA.toDOM("header-menu");
    if (self.node)
    {
      self.node.onclick=switchmenu;
      self.node.ontouchstart=switchmenu;
      self.node.onmouseover=switchon;
      self.node.onmouseout=tryswitchoff;
    }
    if (self.nodemenu)
    {
      self.nodemenu.onmouseover=switchon;
      self.nodemenu.onmouseout=tryswitchoff;
    }
  }

//  this.container.style.transform = "translate("+this.position+"px,0)";
//  KL.Modules.general.adddraglistener('slider_' + this.node.id, {node: node, listener:listener});
  KL.loader.addHookStart('menu', start);
}

KL.Modules.wall = new function()
{
  var self = this;
  this.node = null;

  function load(wall){
    var request = WA.Managers.ajax.createRequest('/data/' + wall, 'POST', null, loaded, true);
  }

  function loaded(request){

    let auxnode = WA.toDOM("page_container");
    if (!self.node) {
      self.node = WA.createDomNode('div', 'wall', 'wall');
    }
    auxnode.appendChild(self.node);
    self.node.innerHTML = request.responseText;
  }

  this.removeWall = removeWall;
  function removeWall(){
    if (!WA.toDOM('wall'))
      return;
    
    //console.log('remueve wall');
    const wallElement = WA.toDOM('wall');
    //console.log(wallElement);
    
    const parentWall = wallElement.parentElement;
    //console.log(parentWall);
    parentWall.removeChild(wallElement);
  }

  function start(){

    if (KL.pagedata.page === null || typeof KL.pagedata.page.wall === undefined){
      return;
    }
    if ( KL.pagedata.page.wall!==undefined ){
      if (KL.pagedata.page.wall == 'register') {
        load('paywall-registro');
        KL.Modules.stat.registerEvent('wall', 'wall/register/show' + KL.pagedata.page.wallgroup);
        KL.Modules.stat.registerEventGA4('wall/register/show' + KL.pagedata.page.wallgroup, {'send_to': 'G-X0MHE23QYB'});
//        ga('send', 'event', 'wall', 'wall/register', 'wall/reg/show7', null);
      } else if (KL.pagedata.page.wall == 'pay') {
        load('paywall-suscripcion');
        KL.Modules.stat.registerEvent('wall', 'wall/subscription/show' + KL.pagedata.page.wallgroup);
        KL.Modules.stat.registerEventGA4('wall/subscription/show' + KL.pagedata.page.wallgroup, {'send_to': 'G-X0MHE23QYB'});
//        ga('send', 'event', 'wall', 'wall/subscription', 'wall/sub/show7', null);
      }
    }

  }

  KL.loader.addHookStart('wall', start);
  KL.loader.addHookLoad('wall', start);
  //KL.loader.addHookPostLoad('wall', start);
}

KL.device="mobile";
KL.language="es";

KL.pagedata={"client":{"client":null,"device":"mobile","geo":"","gep":"","ip":"66.249.93.2","locallanguage":"en","origin":"kiwi","server":"api7","skin":"","t":1731084811},"page":{"adprefix":"kiwi_","crosslink":[{"cl":6705,"cln":"Te Cuida ","cn":"Adriana  sanchez ","i":"29194.jpg","ip":"/articuloimagen/30578/th5-320x320-29194.jpg","k":30578,"level":1,"m":1,"ms":"\nEl apio es una hortaliza con un sabor intenso y aromático que tiene un sinfín de usos para la cocina, especialmente para sazonar recetas de caldo, arroz, puré, pasta y acompañarse con nutritivas ...","mstc":"\nEl apio es una hortaliza con un sabor intenso y aromático que tiene un sinfín de usos p...","mt":"normal","n":"Beneficios del apio y cómo aprovecharlo ","pa":"/blog/te-cuida/beneficios-del-apio-y-como-aprovecharlo","pr":"0.0%","s":"1","t":"articuloslider","vr":null,"x":"p|kiwi|crosslink||1|0|1"},{"cn":"Adriana  sanchez ","date":"2021-03-02T18:50:23Z","fv":0,"i":"2838.jpg","k":2838,"level":2,"m":1,"ms":"Disfruta esta temporada donde no se come carne con nuestras mejores recetas para consentir a tu familia. Estamos seguros que jamás has probado estos deliciosos platillos con pescado, que además son ...","mt":"normal","n":"13 recetas con pescado para tus comidas de Cuaresma","pa":"/tips/cocina/tips-de-platillos/13-recetas-con-pescado-para-tus-comidas-de-cuaresma","pr":"0.0%","s":1,"t":"tipslider","v":"","vh":"100.00%","vp":"","vr":"0.0","x":"p|kiwi|crosslink||1|0|2"},{"cn":"Eloísa Carmona","date":"2020-09-03T16:40:56Z","fv":0,"i":"2262.jpg","k":2262,"level":2,"m":1,"ms":"Todos tenemos elote en lata en la alacena, así que prepárate para sacarlo y aprovecharlo con estas recetas fáciles y deliciosas, en una variedad de platillos dulces y salados. Desde una salsa de el...","mt":"normal","n":"7 recetas deliciosas con elote en lata","pa":"/tips/cocina/tips-de-platillos/7-recetas-deliciosas-con-elote-en-lata","pr":"100.0%","s":1,"t":"tipslider","v":"","vh":"100.00%","vp":"","vr":"5.0","x":"p|kiwi|crosslink||1|0|3"},{"cl":36,"cln":"Consejos de Belleza","cn":"Gretel Morales","i":"31143.jpg","ip":"/articuloimagen/31607/th5-320x320-31143.jpg","k":31607,"level":1,"m":1,"ms":"\nEn tierras aztecas, el consumo de nopal comenzó hace más de 25, 000 años y rápidamente se convirtió en uno de los alimentos más importantes, pues no solo consumían la tuna y el nopal, sino que...","mstc":"\nEn tierras aztecas, el consumo de nopal comenzó hace más de 25, 000 años y rápidament...","mt":"normal","n":"Beneficios de la baba de nopal para la salud y la piel ","pa":"/blog/tips-y-consejos/consejos-de-belleza/beneficios-de-la-baba-de-nopal-para-la-salud-y-la-piel","pr":"0.0%","s":"1","t":"articuloslider","vr":null,"x":"p|kiwi|crosslink||1|0|4"},{"cl":54,"cln":"Tips de Cocina","cn":"Gretel Morales","i":"31129.jpg","ip":"/articuloimagen/31599/th5-320x320-31129.jpg","k":31599,"level":1,"m":1,"ms":"\nLa cocción al vapor es un método práctico, sencillo y saludable, pues te permite cocinar verduras, arroz y hasta pescado sin una gota de grasa, por lo que es una excelente opción para chicos y gr...","mstc":"\nLa cocción al vapor es un método práctico, sencillo y saludable, pues te permite cocin...","mt":"normal","n":"6 trucos para dominar la cocción al vapor ","pa":"/blog/tips-y-consejos/tips-de-cocina/6-trucos-para-dominar-la-coccion-al-vapor","pr":"0.0%","s":"1","t":"articuloslider","vr":null,"x":"p|kiwi|crosslink||1|0|5"},{"cn":"D´Gari  ","cooktime":"8","difficulty":"1","fv":18,"i":"52098.jpg","k":39712,"level":1,"m":1,"mt":"normal","n":"Pastel de Gelatina de Piña Colada","pa":"/receta/postres/recetas-de-gelatina/pastel-de-gelatina-de-pina-colada","pr":"100.0%","preptime":"300","pub":"23 Sep 22 12:22 +0000","s":1,"t":"recetaslider","totaltime":"308","v":"","vh":"100.00%","vp":"","vr":"5.0","x":"p|kiwi|crosslink||1|0|6"},{"cn":"Cristian L. Macias","date":"2015-07-08T12:45:48Z","fv":0,"i":"983.jpg","k":983,"level":2,"m":2,"ms":"Son las 6 de la tarde de un día de fin de semana y tus amigos te dicen que van en camino. Tienes que preparar algo rápido y sólo tienes pepinos, cacahuates japoneses, salsa valentina, clamato, cham...","mt":"normal","n":"Cómo hacer Vasitos Enchilados con Cacahuates Japoneses","pa":"/tips/cocina/tips-de-platillos/como-hacer-vasitos-enchilados-con-cacahuates-japoneses","pr":"77.1%","s":1,"t":"tipslider","v":"4856076310001","vh":"56.25%","vp":"B1xDbuGM","vr":"3.9","x":"p|kiwi|crosslink||1|0|7"},{"cn":"Carlos Lieja","date":"2016-02-26T13:31:07Z","fv":0,"i":"1218.jpg","k":1218,"level":2,"m":2,"ms":"Si tienes antojo de un rico pastel, solo que no quieres esperarte horas para cocinarlo, o quieres un postre sin horno, te tenemos el paso a paso perfecto. Aquí aprenderás a cocinar 3 diferentes past...","mt":"normal","n":"3 Pastelitos en 5 Minutos","pa":"/tips/cocina/tips-de-platillos/3-pastelitos-en-5-minutos","pr":"98.7%","s":1,"t":"tipslider","v":"4855978011001","vh":"100.00%","vp":"B1xDbuGM","vr":"4.9","x":"p|kiwi|crosslink||1|0|8"},{"cn":"Eloísa Carmona","date":"2020-05-12T12:00:30Z","fv":0,"i":"2098.jpg","k":2098,"level":2,"m":1,"ms":"No hay nada más básico en la cocina mexicana como hacer tacos dorados. Este gran platillo tiene muchísimas presentaciones diferentes, así como salsas para acompañarlos, son prácticos, deliciosos...","mt":"normal","n":"14 formas distintas de preparar tacos dorados","pa":"/tips/cocina/tips-de-platillos/14-formas-distintas-de-preparar-tacos-dorados","pr":"98.8%","s":1,"t":"tipslider","v":"","vh":"100.00%","vp":"","vr":"4.9","x":"p|kiwi|crosslink||1|0|9"},{"cn":"Brenda Villagomez","cooktime":"15","difficulty":"1","fv":11,"i":"52027.jpg","k":39680,"level":2,"m":1,"mt":"normal","n":"Tres Leches de Roles de Canela ","pa":"/receta/postres/postres-faciles/tres-leches-de-roles-de-canela","pr":"100.0%","preptime":"15","pub":"08 Sep 22 17:21 +0000","s":1,"t":"recetaslider","totaltime":"30","v":"","vh":"100.00%","vp":"","vr":"5.0","x":"p|kiwi|crosslink||1|0|10"}],"device":"mobile","keywords":["rss"],"language":"es","pathen":"https://us.kiwilimon.com","pathes":"https://www.kiwilimon.com","status":"OK","type":"sin-video","wallgroup":0}};
</script>



<script async src="https://www.googletagmanager.com/gtag/js?id=G-X0MHE23QYB"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-X0MHE23QYB');
</script>


<script type="text/javascript">
var PREBID_TIMEOUT = 3000;
var FAILSAFE_TIMEOUT = 4000;
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.setConfig({
    userSync: {
        filterSettings: {
            iframe: {
                bidders: '*',   // '*' means all bidders
                filter: 'include'
            }
        }
    }
});
</script>


<script type="text/javascript">
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function() {
  googletag.pubads().disableInitialLoad();
});


pbjs.que.push(function() {
    pbjs.setConfig({
      priceGranularity: "dense",
      enableSendAllBids: true,
      userSync: {
        filterSettings: {
          iframe: {
            bidders: ['gourmetads', 'ix', 'richaudience', 'appnexus', 'rubicon', 'triplelift'],
            filter: 'include'
          }
        }
      }
    });
});


var naveggCallback = function(){
    try {
        var name, col, persona = JSON.parse(window.localStorage.getItem("nvgpersona60896"));
        for (col in persona) {
            name = "nvg_" + col;
            name = name.substring(0, 10);
            if (typeof(googletag) == "object")
                googletag.pubads().setTargeting(name, persona[col]);
            if (typeof(GA_googleAddAttr) == "function")
                GA_googleAddAttr(name, persona[col]);
        }
    } catch (e) {}
}
googletag.cmd.push(naveggCallback);


googletag.cmd.push(function() {
  googletag.pubads().collapseEmptyDivs(); // hide ad units when empty.
  googletag.enableServices();
});

heatmap_ext = {
  getTemplates: function(current_url) {
    return [
      // Basica
      { name: 'Basica', value: current_url.match(/\//i) },
      // Receta
      { name: 'Receta', value: current_url.match(/\/receta\//i) },
      // Clasificaciones
      { name: 'Clasificacion', value: current_url.match(/\/recetas|temporada|preferencia|ingrediente|tipo-de-coccion\//i) },
      // tips
      { name: 'Tips', value: current_url.match(/\/tips/i) },
      // blog
      { name: 'Blog', value: current_url.match(/\/blog/i) }
    ];
  }
};
(function(h,e,a,t,m,p) {
m=e.createElement(a);m.async=!0;m.src=t;
p=e.getElementsByTagName(a)[0];p.parentNode.insertBefore(m,p);
})(window,document,'script','https://u.heatmap.it/log.js');
</script>
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="4879882a-8e97-4c8c-9eee-288323f00504" data-blockingmode="auto" type="text/javascript"></script>


<style>

/* http://meyerweb.com/eric/tools/css/reset/
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
}

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {display: block;}
body {line-height: 1;}
ol, ul {list-style: none;}
blockquote, q {quotes: none;}
blockquote:before, blockquote:after,q:before, q:after {content: '';content: none;}
table {border-collapse: collapse;border-spacing: 0;}

p{line-height: 1.6em;}
img {height: auto;}

:root{
  --verde-kiwi: #8cc63e; /* verde original */
  --color-base-ficha: #8cc63e;
  --azul-kiwipro: #8eb4b1;
  --color-base-ficha-pro: #8eb4b1;
  --color-texto-principal: #222222;
  --color-textopro-base: #708c89;
  --color-texto-base: #444444;
  
/* morados
  --verde-kiwi: #A746B9;
  --color-base-ficha: #A746B9;
  --azul-kiwipro: #A746B9;
  --color-base-ficha-pro: #A746B9;
*/
}

body {
  background:#f4f6f4;
  font-family:"Source Sans Pro", "times new roman";
  font-size:13px;
  line-height:1;
  color: var(--color-texto-principal);
  position:relative;
  -webkit-font-smoothing:antialiased;
  margin:0;
  width:100%;
}

/* No queremos underline sobre los A en el sitio */
a, a:hover {
  text-decoration: none;
}

.css-color-link, .breadcrumbs-link-activo, .feed-recetas-num, .feed-tip-num, .feed-ficha-tip-numrating, .icon-k7-estrellas-v, .icon-k7-estrellas-r, .recipelist-btn-next, .tiplist-btn-next, .feed-btn-vermas, .social-qualification-relleno, .compilationlist-btn-next, .quizzlist-btn-next{
  /*color: #8cc63e;*/
  color: var(--verde-kiwi);
}

.home_top10pro .feed-recetas-num, .home_top10pro .icon-k7-estrellas-v, .home_top10pro .icon-k7-estrellas-r, .home-top10pro .feed-tip-num, .home-top10pro .icon-k7-estrellas-v, .home-top10pro .icon-k7-estrellas-r, .home-recipelist-pro .recipelist-btn-next, .familiarecetas-top10pro .feed-recetas-num, .familiarecetas-top10pro .icon-k7-estrellas-v, .familiarecetas-top10pro .icon-k7-estrellas-r, .familia-recipelist-pro .recipelist-btn-next, .clasificacionrecetas-top10pro .feed-recetas-num, .clasificacionrecetas-top10pro .icon-k7-estrellas-v, .clasificacionrecetas-top10pro .icon-k7-estrellas-r, .clasificacion-recipelistpro .recipelist-btn-next, .familiatips-top10pro .feed-tip-num, .familiatips-top10pro .feed-ficha-tip-numrating, .familiatips-top10pro .icon-k7-estrellas-v, .familiatips-top10pro .icon-k7-estrellas-r, .clasificaciontips-top10pro .feed-tip-num, .clasificaciontips-top10pro .icon-k7-estrellas-v, .clasificaciontips-top10pro .icon-k7-estrellas-r, .compilaciones-listapro .compilationlist-btn-next, .hometiplist-pro .tiplist-btn-next, .familia-tiplistpro .tiplist-btn-next, .clasificacion-tiplistpro .tiplist-btn-next, .quizzes-listapro .quizzlist-btn-next{
  color: var(--azul-kiwipro);
}





/* para fichas festivas kiwi */
/* color numero rating */
/*
#home_top10 .recetaslider-ficha:nth-child(4n+1) .feed-recetas-num, #home_top10 .recetaslider-ficha:nth-child(4n+1) .icon-k7-estrellas-v, #home_top10 .recetaslider-ficha:nth-child(4n+1) .icon-k7-estrellas-r, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+1) .feed-recetas-num, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+1) .icon-k7-estrellas-v, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+1) .icon-k7-estrellas-r, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+1) .feed-recetas-num, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+1) .icon-k7-estrellas-v, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+1) .icon-k7-estrellas-r{
  color: #eb6f53;
}

#home_top10 .recetaslider-ficha:nth-child(4n+2) .feed-recetas-num, #home_top10 .recetaslider-ficha:nth-child(4n+2) .icon-k7-estrellas-v, #home_top10 .recetaslider-ficha:nth-child(4n+2) .icon-k7-estrellas-r, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+2) .feed-recetas-num, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+2) .icon-k7-estrellas-v, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+2) .icon-k7-estrellas-r, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+2) .feed-recetas-num, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+2) .icon-k7-estrellas-v, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+2) .icon-k7-estrellas-r{
  color: #f1c35e;
}

#home_top10 .recetaslider-ficha:nth-child(4n+3) .feed-recetas-num, #home_top10 .recetaslider-ficha:nth-child(4n+3) .icon-k7-estrellas-v, #home_top10 .recetaslider-ficha:nth-child(4n+3) .icon-k7-estrellas-r, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+3) .feed-recetas-num, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+3) .icon-k7-estrellas-v, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+3) .icon-k7-estrellas-r, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+3) .feed-recetas-num, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+3) .icon-k7-estrellas-v, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+3) .icon-k7-estrellas-r{
  color: #83b4b4;
}

#home_top10 .recetaslider-ficha:nth-child(4n+4) .feed-recetas-num, #home_top10 .recetaslider-ficha:nth-child(4n+4) .icon-k7-estrellas-v, #home_top10 .recetaslider-ficha:nth-child(4n+4) .icon-k7-estrellas-r, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+4) .feed-recetas-num, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+4) .icon-k7-estrellas-v, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+4) .icon-k7-estrellas-r, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+4) .feed-recetas-num, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+4) .icon-k7-estrellas-v, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+4) .icon-k7-estrellas-r{
  color: #9ad14f;
}

#home_top10 .recetaslider-ficha:nth-child(4n+1) .tools-favorites, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+1) .tools-favorites, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+1) .tools-favorites{
  background-color: #eb6f53;
}

#home_top10 .recetaslider-ficha:nth-child(4n+2) .tools-favorites, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+2) .tools-favorites, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+2) .tools-favorites{
  background-color: #f1c35e;
}

#home_top10 .recetaslider-ficha:nth-child(4n+3) .tools-favorites, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+3) .tools-favorites, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+3) .tools-favorites{
  background-color: #83b4b4;
}

#home_top10 .recetaslider-ficha:nth-child(4n+4) .tools-favorites, #familiarecetas_top10 .recetaslider-ficha:nth-child(4n+4) .tools-favorites, #clasificacionrecetas_top10 .recetaslider-ficha:nth-child(4n+4) .tools-favorites{
  background-color: #9ad14f;
}
*/
/* para fichas festivas kiwi */






.css-bgcolor-activado{
  background-color: var(--verde-kiwi);
}

.bgcolor-desactivado, .color-desactivado{
  background-color: #aaaaaa;
}

.css-bgimagen-activado{
  background-image: url('https://cdn7.kiwilimon.com/kiwi5/static/icono-usuario.svg');
}

@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 200;
  font-display: swap;
  src: local('Source Sans Pro ExtraLight'), local('SourceSansPro-ExtraLight'), url('/fonts/source-sans-pro-200.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Source Sans Pro ExtraLight'), local('SourceSansPro-ExtraLight'), url('/fonts/source-sans-pro-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: local('Source Sans Pro ExtraLight'), local('SourceSansPro-ExtraLight'), url('/fonts/source-sans-pro-700.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'museo-sans';
  src: local('museo-sans-500'),
       url('/fonts/museo-sans-500.eot?#iefix') format('embedded-opentype'),
       url('/fonts/museo-sans-500.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'museo-sans-semibold';
  src: local('museo-sans-700'),
       url('/fonts/museo-sans-700.eot?#iefix') format('embedded-opentype'),
       url('/fonts/museo-sans-700.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'museo-sans-bold';
  src: local('museo-sans-900'),
       url('/fonts/museo-sans-900.eot?#iefix') format('embedded-opentype'),
       url('/fonts/museo-sans-900.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-bold';
  src: local('CrimsonPro-Bold'),
       url('/fonts/CrimsonPro-Bold.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-Bold.woff') format('woff'),
       url('/fonts/CrimsonPro-Bold.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-bolditalic';
  src: local('CrimsonPro-BoldItalic'),
       url('/fonts/CrimsonPro-BoldItalic.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-BoldItalic.woff') format('woff'),
       url('/fonts/CrimsonPro-BoldItalic.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-light';
  src: local('CrimsonPro-Light'),
       url('/fonts/CrimsonPro-Light.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-Light.woff') format('woff'),
       url('/fonts/CrimsonPro-Light.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-lightitalic';
  src: local('CrimsonPro-LightItalic'),
       url('/fonts/CrimsonPro-LightItalic.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-LightItalic.woff') format('woff'),
       url('/fonts/CrimsonPro-LightItalic.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-regular';
  src: local('CrimsonPro-Regular'),
       url('/fonts/CrimsonPro-Regular.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-Regular.woff') format('woff'),
       url('/fonts/CrimsonPro-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-italic';
  src: local('CrimsonPro-Italic'),
       url('/fonts/CrimsonPro-Italic.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-Italic.woff') format('woff'),
       url('/fonts/CrimsonPro-Italic.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-semibold';
  src: local('CrimsonPro-SemiBold'),
       url('/fonts/CrimsonPro-SemiBold.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-SemiBold.woff') format('woff'),
       url('/fonts/CrimsonPro-SemiBold.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'crimsonpro-semibolditalic';
  src: local('CrimsonPro-SemiBoldItalic'),
       url('/fonts/CrimsonPro-SemiBoldItalic.eot?#iefix') format('embedded-opentype'),
       url('/fonts/CrimsonPro-SemiBoldItalic.woff') format('woff'),
       url('/fonts/CrimsonPro-SemiBoldItalic.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'icomoon';
  src:  url('/fonts/icomoon.eot?vgn9f');
  src:  url('/fonts/icomoon.eot?vgn9f') format('embedded-opentype'),
    url('/fonts/icomoon.woff2?vgn9f') format('woff2'),
    url('/fonts/icomoon.ttf?vgn9f') format('truetype'),
    url('/fonts/icomoon.woff?vgn9f') format('woff'),
    url('/fonts/icomoon.svg?vgn9f') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

.analyzethis {
  background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAEsCAMAAADaaRXwAAAAHWlUWHRDb21tZW50AAAAAABDcmVhdGVkIHdpdGggR0lNUGQuZQcAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAzUExURebn5/Pz8+jp6fz8/Onq6v3+/u/w8P////n5+ezt7evs7Pr7+/b29vT19e7v7/Hy8vf4+GkMZW8AAAXbSURBVHja7d2NdqMqFEBhQAH/9f2fdtrOWvd2pgMJgsk5yd4PMNP0i4hWwUQSleFXIA5kNCSlARBACBBACBBACBBACBBAAAGEAAGEAAGEAAGEAAGEACFAACFAACFAACFAACFACBBACBBACBBACBBACBACBBACBBACBBACBBAChAABhAABhAABhAABhAAhQAAhQAAxpudXCggggAACCCCAECCAECCAECCAAAIIIIAAQoAAQoAAQoAAAggggAACyLW5cbfr8NFiAXk6Rli6+H+APLdwxD8D5KkcXfy7CZCntf3kkPpE8zuA9EOMgAg6PHwERFA2JuoBeUZLyoNZljCPDhBJ41WMByCPb0x7xADI4+syID0gj788z3gMBhBRB0gA5OFNGQ+hc6zXBlkVHiAvDZIZsWYDyMPrMwfICMjj29IeqwFE0lW63AHrpUGSt7F8D8hzPpq6E8h7ggQDiCAQL9vj7UD8ZAARBHI4A4gcEL8ZA8jT2v/msM4AIuYImYNR0QuBuD8/xreb7/7Y1bwmoR5kCvYYvt3X9cNgw9cHGu1X++iMojSDuG1NXo0P62ZUphbE/Xi94OccNwDyKJDtpsbv8WuZAHnEwdHFuxtGQK6+vvCxKF0k6kC2Lha3OEAuqh/imfwGyCUFH092OEDan8yXeL5uAqT1cDXHmnwApO09Eh8rC4CI8tAhogWkhYcKESUgNzzmNYyfBTtrF9EBkvXowvcpbb9nrxxHQFrMd+ccR9G9Fd8D0uKHLHts2g1R5XO9WkBs+S2RVeWT70pA0m+mZZ56C1pPIwpA5hMePx8C0jJoyQexJ7/q6RtfFpCaGZY/+XtNT828A+R8y+k3/yeVh4h0kL5iaYxV4yEiHWSp+JafHu0ASf9Oq77kVuEhIhzEVn3H04dIAORcyRuFrs6TlRzOlXz3f7l+SgBIySn93p84+cTpDsiZfO3iSkHdmCUaZKu+Y+vUjVmiQZJXdlvB52NFuQfMsRrMmxdA2t02KVjActS2xp9kkK3FnY9YdyUDyD3DzVj0AXX94VAyyNDiy70quxKRDJI6p/uSf2RX9rCDZJAmi1KPypa2FgwyNpmx9squ1TWC2CbHGRu6lLa3AfGASJr1ZuZqgAgDYZe2whZAZIEMgAACCCCAAAIIIFyHXACyAqLkwrBsraUOkKtB2txc5G5vaaEJiOPvIa0ar/0D1QJIYVOTwabNcQZIbvQvOh03mhoAYjIvqE9FH5Dtu1t1tHgu17d4dAWQr/YG5+Ne2SRLNEiL53K1ndNlP/3e4OWORdetReEgDV5I03YKkQ2yV58ANmWXhcJB6l+iXdS9qC77pc+58pTs1I1YwkH2ynlWUDdiCQdxlQvwdvqW+RO+tMZSdYjoe0tdPMhYdYh0Che4lr5eVvLeYHf7vba9wZU+IHcfIjdfSesVLs6kYM3F4fT6u4PKdWLFg2SWUXbnBizZKynLX7c3vWr47M7cNImHAaTqWsSfEUlvcOEdIHVtsVxkSysK39JQw+4Ima0O5qnw/CF9cwQVILn9XPw/bjP2ircP0bGhS5/f8egvPpvbYMcB0mTum90TrFv/+wBuy+4G6uVv96lkl7Zwc4/uwdp1uLFHmwIPNfsY3hS5Z/NVDdvhqtnpM7yHxxvthTvr2C5a0W7RU9Vu0Vo2VFe1n/px3mM3BpALTiT+pYcrfSCmP3OQeGsMIFc1dqUeS28AuXTc6l6XQyXIB8m98y2/KuNQCvIxBV7uOL0fwRkDyKPa1tzQ5VVqqAb5/M/C+q8/fczHPhmtqQb5/T+Owdpl+Oywdh/1WrwIyIsFCCAECCAECCCAAAIIIIAAAgggBAggBAgggAACCCCAAAIIIAQIIPR8EAIEEAIEEAKEAAGEAAGEAAGEAAGEACFAACFAACFAACFAACFAAAEEEAIEEAIEEAIEEAIEEEAAIUAAIUAAIUAAIUAAIUAIEEAIEEAIEEAIEEAIEAIEEAIEEAIEEALkbUFIUoAI6xdEqwBEvrbq5gAAAABJRU5ErkJggg==') no-repeat;
  background-position: 50% 50%;
  background-size: cover;
}

[class^="icon-k7-"], [class*=" icon-k7-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'icomoon' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.icon-k7-menu:before {content: "\e953";}
.icon-k7-logo:before {content: "\e957";}
.icon-k7-logo-cumpleanios:before {content: "\e967";}
.icon-k7-logo-klpro:before {content: "\e964";}
.icon-k7-logo-txtpro:before {content: "\e963";}
.icon-k7-logo-kiwirecipes:before {content: "\e95c";}
.icon-k7-logo-kiwirecipes-kn:before {content: "\e95c";}
.icon-k7-language:before {content: "\e958";}
.icon-k7-langdown:before {content: "\e956";}
.icon-k7-close:before {content: "\e955";}
.icon-k7-search:before {content: "\e954";}
.icon-k7-notlogged:before {content: "\e903";}

.icon-k7-facebook:before {content: "\e94e";}
/*.icon-k7-twitter:before {content: "\e94d";}*/
.icon-k7-twitter:before {content: "\e965";}
.icon-k7-instagram:before {content: "\e94f";}
.icon-k7-youtube:before {content: "\e951";}
.icon-k7-pinterest:before {content: "\e94a";}
.icon-k7-whatsapp:before {content: "\e952";}
.icon-k7-mail:before {content: "\e920";}
.icon-k7-rss:before {content: "\e94c";}
.icon-k7-tiktok:before {content: "\e95e";}
.icon-k7-threads:before {content: "\e966";}

.icon-k7-collections:before {content: "\e907";}
.icon-k7-favorites:before {content: "\e908";}
.icon-k7-favorites-full:before {content: "\e924";}
.icon-k7-myrecipes:before {content: "\e909";}
.icon-k7-shoppinglist:before {content: "\e90a";}
.icon-k7-uploadrecipe:before {content: "\e90b";}
.icon-k7-menuplanner:before {content: "\e90c";}
.icon-k7-padlock:before {content: "\e906";}

.icon-k7-activity:before {content: "\e90d";}
.icon-k7-followers:before {content: "\e90e";}
.icon-k7-profile:before {content: "\e90f";}
.icon-k7-payments:before {content: "\e910";}
.icon-k7-signout:before {content: "\e911";}

.icon-k7-estrellas-v:before{content: "\e918";}
.icon-k7-estrellas-r:before{content: "\e91e";}

.icon-k7-icon-haciaabajo:before{content: "\e956";}

.icon-k7-sube-receta-footer:before{content: "\e92f";}
.icon-k7-registrate:before{content: "\e932";}
.icon-k7-o-footer:before{content: "\e933";}

.icon-k7-galeria-flecha-izq:before{content: "\e948";}
.icon-k7-galeria-flecha-der:before{content: "\e947";}
.icon-k7-pausa-proceso:before{content: "\e901";}

.icon-k7-play:before{content: "\e923";}
.icon-k7-closevideo:before{content: "\e955";}

.icon-k7-editar-l:before{content: "\e91c";}

.icon-k7-breadcrumbs:before{content: "\e947";}

.icon-k7-check:before{content: "\e91d";}

.icon-k7-cerrar:before{content: "\e955";}

.icon-k7-kiwipro:before{content: "\e95d";}


@keyframes bounce
{
  0% { margin-top: 0; }
  4% { margin-top: -10px; }
  8% { margin-top: 0; }
  10% { margin-top: -5px; }
  12% { margin-top: 0; }
  14% { margin-top: -2px; }
  16% { margin-top: 0; }
  100% { margin-top: 0; }
}

.anim {
    transition: all 0.3s ease 0s;
}

.videoplay{
  border: 2px solid #ffffff;
  border-radius: 100%;
  opacity: 0.8;
  transform: translateX(-50%) translateY(-50%);
  position: absolute;
  top: 50%;
  left: 50%;
  height: 35px;
  width: 43px;
  text-align: center;
  font-size: 20px;
  color: #ffffff;
  padding-top: 13px;
  padding-left: 5px;
}

.videoplay:hover{
  opacity: 1;
}

.wall{
  position: fixed;
  left: 0px;
  top: 0px;
  bottom: 0px;
  right: 0px;
  background-color: rgba(0, 0, 0, 0.75);
  z-index: 50000;
}

#backgroundpopup {
  position: fixed;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  background-color: black;
  opacity: 0.75;
  z-index: 50000;
}

#popup {
  position: fixed;
  left: 50%;
  top: 50%;
  width: auto;
  height: auto;
  background-color: white;
  border-radius: 5px;
  border: 1px solid #ccc;
  z-index: 50001;
  padding: 5px;
}

#popup .title {
  height: 20px;
  background-color: #f2f2f2;
  color: var(--verde-kiwi);
  font-size: 1.5em;
  padding: 10px;
  border-radius: 5px 5px 0px 0px;
  margin-bottom: 5px;
  text-transform: uppercase;
}

#popup .button {
  border: 1px solid #ccc;
  border-radius: 2px;
  color: white;
  background-color: var(--verde-kiwi);
  cursor: pointer;
  font-size: 1.2em;
  padding-top: 10px;
  text-align: center;
}

#header-modal em{
  margin: 0px 0px 0px 10px;
}

.modal-1 {
  background-color: #72c096;
}

.modal-2 {
  background-color: #f46a58;
}

.modal-3 {
  background-color:#6ca61e;
}

.modal-buttonok, .modal-buttonconfirma {
  border: 2px solid #ffffff;
  border-radius: 6px;
  box-sizing: border-box;
  cursor: pointer;
  margin: 0px 0px 0px 10px;
  padding: 5px 10px;
}

.modal-buttonok:hover {
  background-color: #ffffff;
  color: #f46a58;
}

.modal-buttonconfirma:hover {
  background-color: #ffffff;
  color: #6ca61e;
}
body {
  min-width:320px;
}

/* HEADER - Menu principal izquierda */
#header-button-menu.on, #header-client-button.on, #header-search-go.on {
  background-color: #addb45; /*verde original */
}

#header-button-menu.onpro, #header-client-button.onpro, #header-search-go.onpro {
  background-color: #9fc7c4;
}

/* HEADER - search */
#header-search {
  top: 0px;
}

#header-search.on {
  top: 46px;
}

.header-search-suggestions-option {
  padding: 15px;
  cursor: pointer;
}

.header-search-suggestions-option:hover {
  background-color: #8cc63e;
  color: white;
}

/* estilos reproductor player video */
.player-divcontenedor-scroll-up{
  position: fixed;
  left: 50%;
  width: 50%;
  top: 45px;
  height: 200px;
  z-index: 1000;
}

.player-divcontenedor-scroll-down{
  position: fixed;
  left: 50%;
  width: 50%;
  bottom: 0px;
  height: 200px;
  z-index: 1000;
}

.player-divcontenedor-noscroll{
  position: absolute;
  left: 0px;
  width: 100%;
  top: 0px;
  bottom: 0px;
  z-index: 10;
}
/* fin estilos reproductor player video */

/* sobreescribe los estilos de los campos de un formulario en iphone */
select, button, textarea, input[type="text"], input[type="password"], input[type="number"], input[type="email"], input[type="tel"], input[type="input"], input[type="submit"], input[type="button"]
{
  -webkit-appearance: none;
  -webkit-border-radius: 0;
  outline: 1px;
}

/* para que no aparezcan flechas en input number */
input[type=number]::-webkit-outer-spin-button, input[type=number]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

input[type=number] {
  -moz-appearance:textfield;
}

/* quitar borde en focus de campos */
select, button, input:focus[type="text"], input:focus[type="password"], input:focus[type="number"], input:focus[type="email"], input:focus[type="tel"], textarea
{
  outline: 0px;
}

/* color para textos en placeholder de inputs */
/* Chrome/Opera/Safari */
::-webkit-input-placeholder {
  color: #cccccc;
  font-size: 12px;
  font-style: italic;
  font-family: 'source sans pro';
  font-weight: normal;
  text-transform: initial;
}

/* Firefox 19+ */
::-moz-placeholder {
  color: #cccccc;
  font-size: 12px;
  font-style: italic;
  font-family: 'source sans pro';
  font-weight: normal;
  text-transform: initial;
}

/* IE 10+ */
:-ms-input-placeholder {
  color: #cccccc;
  font-size: 12px;
  font-style: italic;
  font-family: 'source sans pro';
  font-weight: normal;
  text-transform: initial;
}

/* Firefox 18- */
:-moz-placeholder {
  color: #cccccc;
  font-size: 12px;
  font-style: italic;
  font-family: 'source sans pro';
  font-weight: normal;
  text-transform: initial;
}
/* fin color para textos en placeholder de inputs */



/* estilos crosslink */
#footer-crosslink .recetaslider-ficha, #footer-crosslink .tipslider-ficha, #footer-crosslink .compilacionrecetaslider-ficha{
  height: auto;
}

#footer-crosslink .articuloslider-ficha{
  margin: 0px 4px !important;
}

/* area nombre ficha */
#footer-crosslink .recetaslider-areanombreficha, #footer-crosslink .tipslider-areanombreficha, #footer-crosslink .compilacionrecetaslider-areanombreficha, #footer-crosslink .articuloslider-areanombreficha, #footer-crosslink .articulosliderpro-areanombreficha{
  height: 42px; 
}

#footer-crosslink .recetasliderpro-areanombreficha, #footer-crosslink .articulosliderpro-areanombreficha{
  height: 42px; 
  display: flex;
  align-items: center;
  
}

#footer-crosslink .tipsliderpro-nombreficha{
  height: inherit;
}

#footer-crosslink .recetaslider-icon-pro, #footer-crosslink .articulosliderpro-icon-pro{
  width: 20px;
  height: 20px;
  margin: 0px 0px 0px 10px;
  font-size: 13px;
}

/* nombre de ficha */
#footer-crosslink .recetaslider-nombreficha, #footer-crosslink .tipslider-nombreficha, #footer-crosslink .compilacionrecetaslider-nombreficha, #footer-crosslink .articuloslider-nombreficha{
  color: #989898;
  font-size: 12px;
  font-weight: normal;
  letter-spacing: 1px;
  max-height: 28px;
}

#footer-crosslink .recetasliderpro-nombreficha, #footer-crosslink .articulosliderpro-nombreficha{
  font-size: 13px;
  max-height: 28px;
  width: calc(100% - 30px);
  line-height: 14px !important;
}

#footer-crosslink .tipsliderpro-nombreficha .tipsliderpro-icon{
  margin: 0px 0px 0px 10px !important;
  width: 20px !important;
  height: 20px !important;
  font-size: 13px !important;
}

#footer-crosslink .tipsliderpro-nombreficha .tipsliderpro-nombreficha-centrado{
  width: calc(100% - 40px) !important;
  font-size: 13px !important;
  max-height: 28px !important;
  line-height: 14px !important;
}

/* rating */
#footer-crosslink .recetaslider-rating, #footer-crosslink .tipslider-rating{
  display: none;
}
/* fin estilos crosslink */
</style>

  </head>
  <body onload="KL.onLoad();" onscroll="KL.paint();" onresize="KL.paint();" class="user-pending" id="body">
<div class="buildad" data-id="oop" style="height: 0px;"></div>
<div class="buildad" data-id="1x1" style="height: 0px;"></div>

<div id="header" style="color: white; position: fixed; top: 0; left: 0; right: 0; height: 46px; z-index: 400; background-color: var(--verde-kiwi); box-shadow: 0 0 4px rgba(0, 0, 0, 0.4);">
  <div id="header-loading" class="anim" style="background-color: red; position: absolute; top: 0; left: 0; height: 2px; width: 0;"></div>
  <div id="header-button-menu" class="icon-k7-menu" style="font-size:20px; color: white; position: relative; height: 33px; width: 39px; padding-top: 13px; padding-left: 15px; float: left;"></div>

  <div class="header-div-logo" style="padding-top: 13px; padding-left: 10px; width: 90px; height: 32px; position: relative; float: left;" onclick="KL.loader.loadPage('/');">
    <div id="header-div-logo-normal" class="icon-k7-logo" style="display: none; cursor: pointer; font-size:20px; color: white;" onclick="KL.loader.loadPage('/');">
      <a href="/pro"><div id="header-icono-kiwipro" class="icon-k7-kiwipro" style="display: none; position: absolute; top: 7px; right: -35px; color: #ffffff; font-size: 22px;"></div></a>
    </div>
    
    
    <a id="header-div-logo-pro" href="/pro" style="display: none; cursor: pointer; width: 100%; height: 100%; position: relative;">
      <div id="header-icono-klpro" class="icon-k7-logo-klpro" alt="" title="" style="position: absolute; top: -6px; left: -5px; color: #ffffff; font-size: 30px;"></div>
      <div id="header-icono-kltxtpro" class="icon-k7-logo-txtpro" style="position: absolute; top: -6px; left: 71px; color: #6d938d; font-size: 35px;"></div>
    </a>
  </div>



  <div id="header-client" style="float: right;"></div>
  <div id="header-search-go" class="icon-k7-search anim" style="cursor: pointer; padding-left: 12px; padding-top: 12px; color: white; font-size: 21px; float: right; height: 34px; width: 34px;"></div>

</div>

<div id="header-menu" class="anim" style="position: fixed; z-index: 398; /*height: 500px;*/ height: auto; top: -500px; left: 0; right: 0; box-shadow: rgba(0, 0, 0, 0.6) 0 10px 12px -7px; background-color: #f3f5f4; /*padding-top: 20px;*/ padding: 20px 0px;"></div>

<div id="header-client-menu" class="anim" style="color: black; position: fixed; z-index: 398; top: -400px; width: 300px; right: 0; min-height: 400px; background-color: white; box-shadow: rgba(0, 0, 0, 0.6) -10px 10px 12px -7px; background-color: #f3f5f4;"></div>
<div id="header-search" class="anim" style="position: fixed; z-index: 390; left: 0; right: 0; height: 38px; padding-top: 8px; width: auto; background-color: white;">
  <div id="header-search-close" class="icon-k7-close" style="cursor: pointer; padding: 8px; padding-top: 8px; color: #666; font-size: 12px; position: absolute; right: 11px; width: 12px; height: 14px;"></div>
  <form method="GET" action="/buscar" style="border: 0; outline: 0px;">
  <input type="text" id="header-search-q" name="q" placeholder="Busca una receta, ingrediente, palabra clave..." style="padding-left: 12px; height: 28px; border: 0; outline: 0px; width: calc(100% - 22px);" autocomplete="off" />
  </form>
  <div id="header-search-suggestions" style="display: none; color: #6a6a6a; position: relative; width: calc(100% - 22px); background-color: white; padding: 10px; font-size: 16px;">
    <div style="font-style: italic; color: #b0b0b0; padding-bottom: 5px;">Sugerencias</div><div id="header-search-suggestions-result"></div>
  </div>
</div>
<div id="header-modal" class="anim" style="align-items: center; box-sizing: border-box; color: #ffffff; display: flex; font-size: 13px; font-weight: bold; min-height: 40px; justify-content: center; left: 0; letter-spacing: 1px; padding: 6px 15px; position: fixed; right: 0; text-transform: uppercase; top: -10px; z-index: 398;"></div>

<div style="height: 46px;"></div>








<div id="page_container" style="max-width: 450px; clear: both; margin: 0 auto 0; overflow: hidden; min-height: 600px;">
</div>
<div id="scripts_container"><script>
WA.templates['client_notconnected'] = WA.templater`
<div id="header-client-button" style="float:right; height: 38px; width: 36px; padding-top: 8px; padding-right: 15px; padding-left: 10px;">
  <div class="icon-k7-notlogged" style="text-align: center; width: 30px; height: 24px; padding-top: 6px; color: var(--verde-kiwi); font-size: 18px; background-color: white; border-radius: 50%;">
    <div id="notif-salta" style="animation: bounce 5s infinite; color: white; background-color: #d85c45; border-radius: 8px 8px 8px 0; font-size: 10px; height: 15px; padding-top: 2px; position: absolute; text-align: center; width: 15px; right: 8px; top: 5px;">1</div>
  </div>
</div>

<a href="/pro" style="text-decoration: none;">

<div id="header-urliconpro" style="font-size: 17px; background-color: #8eb4b1; border: 1px solid #ffffff; width: 40px; height: 33px; border-radius: 3px; position: absolute; top: 6px; right: 108px;">
  <div class="icon-k7-kiwipro" style="position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); color: #ffffff; font-size: 22px;"></div>
</div>
</a>
`;
WA.templates['client_connected'] = WA.templater`
<div id="header-client-button" style="float:right; height: 38px; width: 36px; padding-top: 8px; padding-right: 15px; padding-left: 10px;">
  <div id="img-avatar-chef" class="base-img-avatar-chef" style="text-align: center; width: 30px; height: 30px; color: var(--verde-kiwi); font-size: 18px; background-image: url(${'client>i'}); background-position: center center; background-repeat: no-repeat; background-size: cover; background-color: #ffffff; border-radius: 50%; cursor: pointer;">
    <div id="notif-salta" style="display: none; animation: bounce 5s infinite; color: white; background-color: #d85c45; border-radius: 8px 8px 8px 0; font-size: 10px; height: 15px; padding-top: 2px; position: absolute; text-align: center; width: 15px; right: 8px; top: 5px;"></div>
  </div>
</div>

<a href="/pro" style="text-decoration: none;">
<div id="header-urliconpro" style="display: none; font-size: 17px; background-color: #8eb4b1; border: 1px solid #ffffff; width: 40px; height: 33px; border-radius: 3px; position: absolute; top: 6px; right: 108px;">
  <div class="icon-k7-kiwipro" style="position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); color: #ffffff; font-size: 22px;"></div>
</div>
</a>
`;
KL.Modules.gallery = new function()
{
  var self = this;
  var galleries = {};
  var counter = 1;

  function load()
  {
    var galleryNodes = document.getElementsByClassName('gallery');
    if (galleryNodes)
    {
      for (var i = 0; i < galleryNodes.length; i++)
      {
        id = galleryNodes[i].id;
        if (!id)
        {
          galleryNodes[i].id = id = "gallery" + counter++;
        }
        galleries[id] = new KL.Modules.onegallery(galleryNodes[i])
      }
    }
  }

  function unload()
  {
    for (var i = 0; i < galleries.length; i++)
      galleries[i].destroy();
    galleries = {};
  }

  KL.loader.addHookLoad('gallery', load);
  KL.loader.addHookPostLoad('gallery', load);
  KL.loader.addHookUnload('gallery', unload);
}

KL.Modules.onegallery = function(node)
{
  var self = this;
  var actual = null;
  var animation = '';
  var gallerynode = node;
  var containernode = null;
  var previousnode = null;
  var nextnode = null;
  var playing = false;
  var playnode = null;
  var withBullets = false;
  var bulletsnode = null;
  var timer = null;
  var timing = null;

  function clickplay(event, noevent)
  {
    if (playing)
    {  // para todo
      clearTimeout(timer);
      timer = null;
      playing = false;
      playnode.firstElementChild.className = 'icon-k7-gallery-pause';
      KL.Modules.stat.registerEvent('gallery', 'gallery/pause');
    }
    else
    {  // lanza
      timer = setTimeout( function() { play(); }, timing);
      playing = true;
      playnode.firstElementChild.className = 'icon-k7-gallery-play';
      if (!noevent)
        KL.Modules.stat.registerEvent('gallery', 'gallery/play');
    }
  }

  function clicknext(clave)
  {
    if (timer)
    {
      clearTimeout(timer);
      timer = setTimeout( function() { play(); }, timing); // todo: timing
    }
    continuousnext(clave);
  }

  function continuousnext(clave)
  {
    if (actual.nextElementSibling)
    {
      setNodeClasses(actual, actual.nextElementSibling);
      actual = actual.nextElementSibling;
    }
    else
    {
      var firstnode = containernode.childNodes[0];
      setNodeClasses(actual, firstnode);
      actual = firstnode;
    }
    updateBullets();
  }

  function clickprevious(clave)
  {
    if (timer)
    {
      clearTimeout(timer);
      timer = setTimeout( function() { play(); }, timing); // todo: timing
    }
    continuousprevious(clave);
  }

  function continuousprevious(clave)
  {
    if (actual.previousElementSibling)
    {
      setNodeClasses(actual, actual.previousElementSibling);
      actual = actual.previousElementSibling;
    }
    else
    {
      var lastindex = containernode.childNodes.length - 1;
      var lastnode = containernode.childNodes[lastindex];

      setNodeClasses(actual, lastnode);
      actual = lastnode;
    }
    updateBullets();
  }

  // onlick bullet, this is the bullet
  function gotoslide(event)
  {
    if (timer)
    {
      clearTimeout(timer);
      timer = setTimeout(play, timing);
    }

    if (this.linked != actual)
    {
      var nextone = this.linked;
      setNodeClasses(actual, nextone);
      actual = this.linked;
      updateBullets();
    }
    KL.Modules.stat.registerEvent('gallery', 'gallery/gotoslide');
  }

  function updateBullets()
  {
    if (!withBullets)
      return;

    for (i = 0, l = bulletsnode.childNodes.length; i < l; i++)
    {
      if (bulletsnode.childNodes[i].linked == actual)
        bulletsnode.childNodes[i].className = 'gallery-bullet on';
      else
        bulletsnode.childNodes[i].className = 'gallery-bullet';
    }
  }

  //current y next son los ids de los nodos
  function setNodeClasses(current, next)
  {
    var lastId = containernode.lastElementChild;
    var firstId = containernode.firstElementChild;
    var before = true;

    for (var i=0, l=containernode.childNodes.length; i<l; i++)
    {
      var node = containernode.childNodes[i];
      if (node == current)
      {
        var transition = '';

        if ((next !== firstId) && (next !== lastId))
          transition = (before?' before':' after');
        else
        {
          if (node === firstId)
            transition = ' after';
          else if (node === lastId)
            transition = ' before';
          else
            transition = (before?' before':' after');
        }
        containernode.childNodes[i].className = 'gallery-slide ' + animation + transition + ' anim';
      }
      else if (containernode.childNodes[i] == next)
      {
        containernode.childNodes[i].className = 'gallery-slide ' + animation + ' anim';
        gallerynode.dataset.current = containernode.childNodes[i].id;
        before = false;
      }
      else
      {
        var transition = '';

        if (node === firstId && (next === lastId))
          transition = ' after';
        else if ((node === lastId) && (next === firstId))
          transition = ' before';
        else if (node === lastId)
          transition = ' after';
        else
          transition = (before?' before':' after');

        containernode.childNodes[i].className = 'gallery-slide ' + animation + transition + '';
      }
    }
  }

  function draglistener(orden)
  {
    // replantear cuando haya mas de un slider principal...
    if (orden == 'izquierda')
    {
      KL.Modules.stat.registerEvent('gallery', 'gallery/dnext');
      clicknext();
    }
    if (orden == 'derecha')
    {
      KL.Modules.stat.registerEvent('gallery', 'gallery/dprevious');
      clickprevious();
    }
  }

  function play()
  {
    if (timer)
      clearTimeout(timer);
    timer = setTimeout(function() { play(); }, timing);

    continuousnext();
  }

  this.destroy = destroy;
  function destroy()
  {
    if (timer)
      clearTimeout(timer)
    timer = null;
    actual = null;
    gallerynode = null;
    containernode = null;
    previousnode = null;
    nextnode = null;
    playnode = null;
    bulletsnode = null;
    self = null;
  }

  // Note: only 1 gallery per page
  if (gallerynode.dataset.scanned)
    return;
  gallerynode.dataset.scanned = true;

  if (!gallerynode.firstElementChild)
    return;

  if (gallerynode.dataset.ratio)
    gallerynode.style.height = (WA.browser.getNodeWidth(gallerynode) / gallerynode.dataset.ratio) + "px";

  containernode = WA.createDomNode('div', gallerynode.id+'_container', 'gallery-container');
  while (gallerynode.hasChildNodes())
  {
    // Solo queremos nodos div
    if (gallerynode.firstChild.nodeType == 1)
    {
      gallerynode.firstChild.className = 'gallery-slide off';
      containernode.appendChild(gallerynode.firstChild);
    }
    else
      gallerynode.removeChild(gallerynode.firstChild);
  }
  containernode.firstChild.style.display = 'block';
  gallerynode.appendChild(containernode);
  actual = containernode.firstChild;

  // 3. boton left
  previousnode = WA.createDomNode('div', null, 'gallery-button left');
  gallerynode.appendChild(previousnode);
  previousnode.onclick = function() {
    KL.Modules.stat.registerEvent('gallery', 'gallery/previous');
    clickprevious();
  };
  n = WA.createDomNode('div', null, 'icon-k7-gallery-previous');
  previousnode.appendChild(n);

  // 4. boton right
  nextnode = WA.createDomNode('div', null, 'gallery-button right');
  gallerynode.appendChild(nextnode);
  nextnode.onclick = function() {
    KL.Modules.stat.registerEvent('gallery', 'gallery/next');
    clicknext();
  };
  n = WA.createDomNode('div', null, 'icon-k7-gallery-next');
  nextnode.appendChild(n);

  // 5. pause on/off
  playnode = WA.createDomNode('div', null, 'gallery-player');
  gallerynode.appendChild(playnode);
  playnode.onclick = clickplay;
  n = WA.createDomNode('div', null, 'icon-k7-gallery-pause');
  playnode.appendChild(n);

  if (gallerynode.dataset.animation)
    animation = gallerynode.dataset.animation;
  if (gallerynode.dataset.time)
  {
    var auxTime = gallerynode.dataset.time;
    timing = ((!isNaN(auxTime) && (auxTime > 0 && auxTime <= 99999)) ? auxTime: 5000);
  }

  if (gallerynode.dataset.bullets == 'yes')
  {
    withBullets = true;
    bulletsnode = WA.createDomNode('div', null, 'gallery-bullets');
    gallerynode.appendChild(bulletsnode);

    for (var i=0, l=containernode.childNodes.length; i<l; i++)
    {
      var auxNode = containernode.childNodes[i];
      var bNode = auxNode.getElementsByClassName('gallery-bullet');
      if (bNode)
      {
        for (var j = 0; j < bNode.length; j++)
        {
          bNode[j].linked = auxNode;
          bNode[j].onclick = gotoslide;
          bulletsnode.appendChild(bNode[j]);
        }
      }
    }
  }
  setNodeClasses(null, actual);
  updateBullets();

  if (gallerynode.dataset.autostart == 'yes' && !timer)
  {
    clickplay(null, true);
  }

  KL.Modules.movements.adddraglistener('gallery_' + gallerynode.id, {node: containernode, listener:draglistener});
}

KL.Modules.tools = new function()
{
  var self = this;
  var tools = {};
  var counter = 1;

  function load()
  {
    var toolsNodes = document.getElementsByClassName('tools');

    if (toolsNodes)
    {
      for (var i = 0; i < toolsNodes.length; i++)
      {
        id = toolsNodes[i].id;
        if (!id)
        {
          toolsNodes[i].id = id = "tools" + counter++;
        }
        // ONLY if not scanned yet

        tools[id] = new KL.Modules.onetoolset(toolsNodes[i]);
      }
    }
  }

  function unload()
  {
    for (var i = 0; i < tools.length; i++)
      tools[i].destroy();
    tools = {};
  }

  KL.loader.addHookLoad('tools', load);
  KL.loader.addHookPostLoad('tools', load);
  KL.loader.addHookUnload('tools', unload);
}

KL.Modules.onetoolset = function(node)
{
  var self = this;
  var containernode = node;
  var toolsshadow = null;
  var toolsnode = null;
  var type = '';
  var key = '';
  var buttons = [];
  var opened = false;

  function open()
  {
    toolsshadow.style.display = 'block';
    pos = 0;
    for (var i = 0, l = buttons.length; i < l; i++)
    {
      buttons[i].style.top = pos + 'px';
      pos += 40;
    }
    opened = true;
  }

  function close()
  {
    toolsshadow.style.display = 'none';
    for (var i = 0, l = buttons.length; i < l; i++)
    {
      buttons[i].style.top = '0px';
    }
    opened = false;
  }

  function clickclose(event)
  {
    close();
    WA.browser.cancelEvent(event);
  }

  function clickfav(event)
  {
    if (!KL.Modules.client.clientlogged)
    {
      KL.Modules.stat.registerEvent('tools', 'tools/gologin');
      KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
      // console.log(document.location.pathname);
      KL.loader.loadPage("/login?p="+document.location.pathname+"&o=/fav/"+type+"/"+key);
      return;
    }

    if (!opened)
    {
      open();
      WA.browser.cancelEvent(event);
      return;
    }

    WA.Managers.ajax.createPromiseRequest({ url: KL.graphdomains + '/v6/collection', method: 'post', send: false})
      .then(function(request) {
        request.addParameter('language', KL.language);
        request.addParameter('device', KL.device);
        request.addParameter('service', 'favorite');
        request.addParameter('type', type);
        request.addParameter('key', key);
        return request.send();
      })
      .then(function(response){
        var code = JSON.parse(response);
        if (code.status == 'ok')
        {
          KL.Modules.stat.registerEvent('tools', 'tools/addfav');
          KL.Modules.stat.registerEventGA4('tools/addfav', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.notifica(KL.i18n.tools_favoritos_ok1+' <em>'+KL.i18n.tools_favoritos_ok2+'</em>');
        }
        else
        {
          KL.Modules.stat.registerEvent('tools', 'tools/errorfav');
          KL.Modules.stat.registerEventGA4('tools/errorfav', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.alerta(code.message);
        }
      })
      .catch(function(code, err) {
        if (code == 401)  // not connected
        {
          KL.Modules.stat.registerEvent('tools', 'tools/gologin');
          KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
          KL.loader.loadPage("/login/fav/"+type+"/"+key);
          return;
        }
        // print error modal, send to server error
        KL.Modules.modal.alerta(code, err);
        console.log("Error sending fav:", code, err);
      });
    return WA.browser.cancelEvent(event);
  }

  function clickcollections(event)
  {
    if (!KL.Modules.client.clientlogged)
    {
      KL.Modules.stat.registerEvent('tools', 'tools/gologin');
      KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
      KL.loader.loadPage("/login/col/"+type+"/"+key);
      return;
    }

    WA.Managers.ajax.createPromiseRequest({ url: KL.graphdomains + '/v6/collection', method: 'post', send: false})
      .then(function(request) {
        request.addParameter('language', KL.language);
        request.addParameter('device', KL.device);
        request.addParameter('service', 'list');
        return request.send();
      })
      .then(function(response){
        var code = JSON.parse(response);
        KL.Modules.stat.registerEvent('tools', 'tools/opencol');
        KL.Modules.stat.registerEventGA4('tools/opencol', {'send_to': 'G-X0MHE23QYB'});
        data = WA.templates.tools_collectionselect({items:code.payload});
        KL.Modules.modal.buildpopup(data);

        // link clicks
        for (var i = 0, l = code.payload.length; i < l; i++)
        {
          var n = WA.toDOM("tools-collection-" + code.payload[i].clave);
          if (!n)
            continue;
          n.dataset.id = code.payload[i].clave;
          n.onclick = seleccionacoleccion;
        }
        var n = WA.toDOM("tools-collection-create");
        if (n) {
          n.onclick = creacoleccion;
        }
        KL.Modules.modal.showpopup({closeable:true});
      })
      .catch(function(code, err) {
        if (code == 401)  // not connected
        {
          KL.Modules.stat.registerEvent('tools', 'tools/gologin');
          KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
          KL.loader.loadPage("/login/createcol");
          return;
        }
        // print error modal, send to server error
        KL.Modules.modal.alerta(code, err);
        console.log("Error sending fav:", code, err);
      });
    return WA.browser.cancelEvent(event);
  }

  function seleccionacoleccion(event)
  {
    if (!KL.Modules.client.clientlogged)
    {
      KL.Modules.stat.registerEvent('tools', 'tools/gologin');
      KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
      KL.loader.loadPage("/login/addcol/"+type+"/"+key);
      return;
    }

    var cid = this.dataset.id;
    WA.Managers.ajax.createPromiseRequest({ url: KL.graphdomains + '/v6/collection', method: 'post', send: false})
      .then(function(request) {
        request.addParameter('language', KL.language);
        request.addParameter('device', KL.device);
        request.addParameter('service', 'insert');
        request.addParameter('collection', cid);
        request.addParameter('type', type);
        request.addParameter('key', key);
        return request.send();
      })
      .then(function(response){
        KL.Modules.modal.hidepopup();
        var code = JSON.parse(response);
        if (code.status == 'ok')
        {
          KL.Modules.stat.registerEvent('tools', 'tools/addcol');
          KL.Modules.stat.registerEventGA4('tools/addcol', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.notifica(KL.i18n.tools_collections_ok1+' <em>'+KL.i18n.tools_collections_ok2+'</em>');
        }
        else
        {
          KL.Modules.stat.registerEvent('tools', 'tools/errorcol');
          KL.Modules.stat.registerEventGA4('tools/errorcol', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.alerta(code.message);
        }
      })
      .catch(function(code, err) {
        if (code == 401)  // not connected
        {
          KL.Modules.stat.registerEvent('tools', 'tools/gologin');
          KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
          KL.loader.loadPage("/login/col/"+cid+"/"+type+"/"+key);
          return;
        }
        // print error modal, send to server error
        KL.Modules.modal.alerta(code, err);
        console.log("Error sending col:", code, err);
      });
    return WA.browser.cancelEvent(event);
  }

  function creacoleccion(event)
  {
    var v = WA.toDOM("tools-collection-name").value;

    if (!KL.Modules.client.clientlogged)
    {
      KL.Modules.stat.registerEvent('tools', 'tools/gologin');
      KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
      KL.loader.loadPage("/login/createcol/"+KL.fixedEncodeURIComponent(v)+"/"+type+"/"+key);
      return;
    }

    WA.Managers.ajax.createPromiseRequest({ url: KL.graphdomains + '/v6/collection', method: 'post', send: false})
      .then(function(request) {
        request.addParameter('language', KL.language);
        request.addParameter('device', KL.device);
        request.addParameter('service', 'create');
        request.addParameter('name', v);
        request.addParameter('type', type);
        request.addParameter('key', key);
        return request.send();
      })
      .then(function(response) {
        KL.Modules.modal.hidepopup();
        var code = JSON.parse(response);
        if (code.status == 'ok')
        {
          KL.Modules.stat.registerEvent('tools', 'tools/createaddcol');
          KL.Modules.stat.registerEventGA4('tools/createaddcol', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.notifica(KL.i18n.tools_collections_ok1+' <em>'+KL.i18n.tools_collections_ok2+'</em>');
        }
        else
        {
          KL.Modules.stat.registerEvent('tools', 'tools/errorcol');
          KL.Modules.stat.registerEventGA4('tools/errorcol', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.alerta(code.message);
        }
      })
      .catch(function(code, err) {
        if (code == 401)  // not connected
        {
          KL.Modules.stat.registerEvent('tools', 'tools/gologin');
          KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
          KL.loader.loadPage("/login/col/"+KL.fixedEncodeURIComponent(v)+"/"+type+"/"+key);
          return;
        }
        // print error modal, send to server error
        KL.Modules.modal.alerta(code, err);
        console.log("Error sending col:", code, err);
      });
    return WA.browser.cancelEvent(event);
  }

  function clickshoppinglist(event)
  {
    if (!KL.Modules.client.clientlogged)
    {
      KL.Modules.stat.registerEvent('tools', 'tools/gologin');
      KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
      KL.loader.loadPage("/login/shoppinglist/"+key);
      return;
    }

    if (type != 'r')
    {
      KL.Modules.modal.alerta("Error, el objeto no es una receta para agregar a la lista del súper.");
      return;
    }

    WA.Managers.ajax.createPromiseRequest({ url: KL.graphdomains + '/v6/shoppinglist', method: 'post', send: false})
      .then(function(request) {
        request.addParameter('language', KL.language);
        request.addParameter('device', KL.device);
        request.addParameter('service', 'addrecipe');
        request.addParameter('key', key);
        return request.send();
      })
      .then(function(response){
        var code = JSON.parse(response);
        if (code.status == 'ok')
        {
          KL.Modules.stat.registerEvent('tools', 'tools/addshoppinglist');
          KL.Modules.stat.registerEventGA4('tools/addshoppinglist', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.notifica(KL.i18n.tools_listasuper_ok1+' <em>'+KL.i18n.tools_listasuper_ok2+'</em>');
        }
        else
        {
          KL.Modules.stat.registerEvent('tools', 'tools/errorshoppinglist');
          KL.Modules.stat.registerEventGA4('tools/errorshoppinglist', {'send_to': 'G-X0MHE23QYB'});
          KL.Modules.modal.alerta(code.message);
        }
      })
      .catch(function(code, err) {
        if (code == 401)  // not connected
        {
          KL.Modules.stat.registerEvent('tools', 'tools/gologin');
          KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
          KL.loader.loadPage("/login/shoppinglist/"+type+"/"+key);
          return;
        }
        // print error modal, send to server error
        KL.Modules.modal.alerta(code, err);
        console.log("Error sending shoppinglist:", code, err);
      });
    return WA.browser.cancelEvent(event);
  }

  function getlistasuper(request)
  {
    // close tools
    // put heart filled
    var code = JSON.parse(request.responseText);
    if (code.estatus == 'OK')
    {
      KL.Modules.modal.hidepopup();
      KL.Modules.stat.registerEvent('tools', 'tools/addsup');
      KL.Modules.stat.registerEventGA4('tools/addsup', {'send_to': 'G-X0MHE23QYB'});
      KL.Modules.modal.notifica(KL.i18n.tools_listasuper_ok1+' <em>'+KL.i18n.tools_listasuper_ok2+'</em>');
    }
    else
    {
      if (code.code == 1)
      {
        KL.Modules.stat.registerEvent('tools', 'tools/gologin');
        KL.Modules.stat.registerEventGA4('tools/gologin', {'send_to': 'G-X0MHE23QYB'});
        KL.loader.loadPage("/login/sup/"+type+"/"+key);
      }
      else
      {
        KL.Modules.stat.registerEvent('tools', 'tools/errorsup');
        KL.Modules.stat.registerEventGA4('tools/errorsup', {'send_to': 'G-X0MHE23QYB'});
        KL.Modules.modal.alerta(code.mensaje);
      }
    }
  }

  function clickmenuplanner(event)
  {
    if (!KL.Modules.client.clientpro)
    {
      KL.Modules.stat.registerEvent('tools', 'tools/gologin');
      // KL.loader.loadPage("/pro/"+type+"/"+key);
      KL.loader.loadPage("/pro");
      return;
    }

    // call PRO MENU PLANNER

    WA.browser.cancelEvent(event);
  }

  this.destroy = destroy;
  function destroy()
  {
    containernode = null;
    toolsshadow = null;
    toolsnode = null;
    buttons = null;
    self = null;
  }

  // Note: only 1 gallery per page
  if (containernode.scanned)
    return;
  containernode.scanned = true;

  toolsshadow = WA.createDomNode('div', null, 'tools-shadow');
  toolsshadow.style.display = 'none';
  containernode.appendChild(toolsshadow);
  toolsnode = WA.createDomNode('div', null, 'tools-container');
  containernode.appendChild(toolsnode);

  // fill with the buttons template
  type = containernode.dataset.type;
  key = containernode.dataset.key;
  code = {t:type,k:key}

  // create buttons
  // close: always here
  var closebutton = WA.createDomNode('div', null, 'anim tools-close icon-k7-tools-close');
  closebutton.setAttribute('alt', WA.i18n.getMessage('txt-tools-cerrar'));
  closebutton.setAttribute('title', WA.i18n.getMessage('txt-tools-cerrar'));
  closebutton.onclick = clickclose;
  toolsnode.appendChild(closebutton);
  buttons.push(closebutton);
  if (type == 'r') {
    // menu planner: recipe only
    /*
    var mpbutton = WA.createDomNode('div', null, 'anim tools-menuplanner icon-k7-tools-menuplanner');
    mpbutton.setAttribute('alt', WA.i18n.getMessage('txt-tools-planeadormenu'));
    mpbutton.setAttribute('title', WA.i18n.getMessage('txt-tools-planeadormenu'));
    mpbutton.onclick = clickmenuplanner;
    toolsnode.appendChild(mpbutton);
    buttons.push(mpbutton);
    */
    // Shopping list / only recipe
    var slbutton = WA.createDomNode('div', null, 'anim tools-shoppinglist icon-k7-tools-shoppinglist');
    slbutton.setAttribute('alt', WA.i18n.getMessage('txt-tools-listasuper'));
    slbutton.setAttribute('title', WA.i18n.getMessage('txt-tools-listasuper'));
    slbutton.onclick = clickshoppinglist;
    toolsnode.appendChild(slbutton);
    buttons.push(slbutton);
  }
  var clbutton = WA.createDomNode('div', null, 'anim tools-collections icon-k7-tools-collections');
  clbutton.setAttribute('alt', WA.i18n.getMessage('txt-tools-colecciones'));
  clbutton.setAttribute('title', WA.i18n.getMessage('txt-tools-colecciones'));
  clbutton.onclick = clickcollections;
  toolsnode.appendChild(clbutton);
  buttons.push(clbutton);
  var fvbutton = WA.createDomNode('div', null, 'anim tools-favorites icon-k7-tools-favorites-empty');
  fvbutton.setAttribute('alt', WA.i18n.getMessage('txt-tools-favorito'));
  fvbutton.setAttribute('title', WA.i18n.getMessage('txt-tools-favorito'));
  fvbutton.onclick = clickfav;
  toolsnode.appendChild(fvbutton);
  buttons.push(fvbutton);
}

// tools
var translation = 
{
  "txt-tools-favorito": "Agregar a mis Favoritos",
  "txt-tools-colecciones": "Agregar a mis Colecciones",
  "txt-tools-listasuper": "Agregar a mi Lista del Súper",
  "txt-tools-planeadormenu": "Agregar a Planeador de Menú",
  "txt-tools-cerrar": "Cerrar",
};

WA.i18n.loadMessages(translation);

/* Funciones para manejar el feed */
/*
  Escrito por: Phil
  Fecha: Julio 2016

  Control de cambios:
  26/02/2020: Wilmer, Ajuste a feed search/v6
  10/07/2016: Phil, Creación
*/

KL.Modules.feed = new function()
{
  var self = this;

  function load()
  {
  }


  this.unload = unload;
  function unload()
  {
  }

  KL.loader.addHookLoad('feed', load);
  KL.loader.addHookPostLoad('feed', load);
  KL.loader.addHookUnload('feed', unload);
}

KL.Modules.feed.container = function(id, template, datos, q)
{
  var self = this;
}

KL.Modules.slider = new function()
{
  var self = this;
  var sliders = {};
  var counter = 1;

  function load()
  {
    var sliderNodes = document.getElementsByClassName('slider');
    if (sliderNodes)
    {
      for (var i = 0; i < sliderNodes.length; i++)
      {
        id = sliderNodes[i].id;
        if (!id)
        {
          sliderNodes[i].id = id = "slider" + counter++;
        }
        sliders[id] = new KL.Modules.oneslider(sliderNodes[i]);
      }
    }
  }

  function unload()
  {
    for (var i = 0; i < sliders.length; i++)
      sliders[i].destroy();
    sliders = {};
  }

  KL.loader.addHookLoad('slider', load);
  //KL.loader.addHookPostLoad('slider', load);
  KL.loader.addHookUnload('slider', unload);
}

KL.Modules.oneslider = function(node)
{
  var self = this;
  var slidernode = node;
  var containernode = null;
  var position = 0;
  //var percentmove = 0.9;
  var percentmove = 1;

  function clickprevious(event)
  {
    var width = WA.browser.getNodeWidth(slidernode);
    position += Math.round(width*percentmove);
    if (position > 0)
      position = 0;
    containernode.style.left = position + 'px';
    //KL.loader.callHooksPostLoad();
    KL.Modules.stat.registerEvent('slider', 'slider/previous');
    KL.Modules.stat.registerEventGA4('slider/previous', {'send_to': 'G-X0MHE23QYB'});
    // TODO(phil)
    // considerar enviar los IDs a analizar por la animacion
    // Se env�a a analizar las im�genes DAG 11/08/2022
    //KL.Modules.images.analyze();
  }

  function clicknext(event)
  {
    var width = WA.browser.getNodeWidth(slidernode);
    position -= Math.round(width*percentmove);
    var size = getsize();
    var min = -size+width;
    if (min > 0)
      min = 0;
    if (position < min)
      position = min;
    containernode.style.left = position + 'px';
    KL.Modules.stat.registerEvent('slider', 'slider/next');
    KL.Modules.stat.registerEventGA4('slider/next', {'send_to': 'G-X0MHE23QYB'});
    setTimeout(() => { KL.loader.callHooksPostLoad(); }, 700); //600

    // TODO(phil)
    // considerar enviar los IDs a analizar por la animacion
    // Se env�a a analizar las im�genes DAG 11/08/2022
    //KL.Modules.images.analyze();
  }

  function getsize()
  {
    var width = 0;
    for (var i=0, l=containernode.childNodes.length; i<l; i++)
    {
      if (containernode.childNodes[i].nodeType != 1)
        continue;
      var x = WA.browser.getNodeNodeLeft(containernode.childNodes[i], containernode) + WA.browser.getNodeOuterWidth(containernode.childNodes[i]);
      if (x > width)
        width = x;
    }
    return width;
  }

  function draglistener(type, metrics)
  {
    if (type == 'start')
    {
      // quitar el anim
      containernode.style.transition = 'none';
    }
    if (type == 'drag')
    {
      // mover a la posicion
      var p = position + metrics.dx;
      var width = WA.browser.getNodeWidth(slidernode);
      if (p > 0)
        p = 0;
      var size = getsize();
      var min = -size+width;

      if (min > 0)
        min = 0;
      if (p < min)
        p = min;
      //containernode.style.transform = "translate("+p+"px,0)";
      //position = p;
      containernode.style.left = p + 'px';
    }
    if (type == 'izquierda' || type == 'derecha')
    {
      // reponer el anim
      containernode.style.transition = '';
      // animar hasta la posicion correspondiente a la velocidad ?
      var p = position + metrics.dx + metrics.velocity/4;
      var width = WA.browser.getNodeWidth(slidernode);
      if (p > 0)
        p = 0;
      var size = getsize();
      var min = -size+width;
      if (min > 0)
        min = 0;
      if (p < min)
        p = min;
      position = p;
      containernode.style.left = position + 'px';
      // TODO(phil)
      // considerar enviar los IDs a analizar por la animacion
    }
    KL.Modules.images.analyze();
    KL.loader.callHooksPostLoad();
  }

  this.destroy = destroy;
  function destroy()
  {
    if (timer)
      clearTimeout(timer)
    timer = null;
    actual = null;
    gallerynode = null;
    containernode = null;
    previousnode = null;
    nextnode = null;
    playnode = null;
    bulletsnode = null;
    self = null;
  }

  // Note: only 1 gallery per page
  if (slidernode.dataset.scanned)
    return;
  slidernode.dataset.scanned = true;

  if (!slidernode.firstElementChild)
    return;

  containernode = WA.createDomNode('div', slidernode.id+'_container', 'slider-container');
  while (slidernode.hasChildNodes())
  {
    // Solo queremos nodos div
    if (slidernode.firstChild.nodeType == 1)
    {
      slidernode.firstChild.className += ' slider-element';
      containernode.appendChild(slidernode.firstChild);
    }
    else
      slidernode.removeChild(slidernode.firstChild);
  }
  slidernode.appendChild(containernode);

  // 3. boton left
  previousnode = WA.createDomNode('div', null, 'slider-button left');
  slidernode.appendChild(previousnode);
  previousnode.onclick = function() {
    KL.Modules.stat.registerEvent('slider', 'slider/previous');
    KL.Modules.stat.registerEventGA4('slider/previous', {'send_to': 'G-X0MHE23QYB'});
    clickprevious();
  };
  n = WA.createDomNode('div', null, 'icon-k7-slider-previous');
  previousnode.appendChild(n);

  // 4. boton right
  nextnode = WA.createDomNode('div', null, 'slider-button right');
  slidernode.appendChild(nextnode);
  nextnode.onclick = function() {
    KL.Modules.stat.registerEvent('slider', 'slider/next');
    KL.Modules.stat.registerEventGA4('slider/next', {'send_to': 'G-X0MHE23QYB'});
    clicknext();
  };
  n = WA.createDomNode('div', null, 'icon-k7-slider-next');
  nextnode.appendChild(n);

  KL.Modules.movements.adddraglistener('slider_' + slidernode.id, {node: containernode, listener:draglistener});
}

KL.Modules.recipelist = new function()
{
  var self = this;
  var node = null;
  var nodemasnuevo = null;
  var noderecomendado = null;
  var nodemaspopular = null;
  var nodenext = null;
  var actual = 1;
  var type = "";
  var key = "";
  var page = 1;
  var quantity = 10;
  var more = false;
  var total = 0;

  function cleandata()
  {
    node.innerHTML = "";
    page = 1;
  }

  function calldata()
  {
    var r = WA.Managers.ajax.createRequest(KL.graphdomains + '/v6/feed', 'POST', null, getdata, false);
    r.addParameter('v', 1 );
    r.addParameter('type', type );
    r.addParameter('key', key );
    r.addParameter('device', KL.device );
    r.addParameter('language', KL.language );
    r.addParameter('quantity', quantity );
    r.addParameter('order', actual );
    r.addParameter('page', page );
    r.addParameter('human', 1 );
    r.send();
  }

  function getdata(request)
  {
    //debugger
    code = JSON.parse(request.responseText);
    code.siteorigin = KL.rootsite;
    
    if ( (KL.Modules.client.clientpro) && (KL.rootsite == 'kiwi') )
    {
      // console.log('chef pro');
      code.sesionprochef = 'true';
    }else{
      if (KL.Modules.client.clientlogged)
      {
        // console.log('chef normal');
        code.sesionprochef = 'false';
      } else{
        // console.log('no hay chef');
        code.sesionprochef = null;
      }
    }

    // inject into template
    template = WA.templater`${['loop', 'payload','feed_payload']}`;
    text = template(code);
    ndiv = WA.createDomNode('div', null, null);
    ndiv.style = "clear: both;";
    ndiv.innerHTML = text;
    node.appendChild(ndiv);

    // set next, data into
    more = code.more
    nodenext.style.display = more?"block":"none";

    // analyze img and ads and an
    KL.loader.callHooksPostLoad();
  }

  function next()
  {
    if (!more)
      return;
    page++;
    calldata();
  }

  function masnuevo()
  {
    if (actual == 1)
      return;
    actual = 1;
    nodemasnuevo.className = "recipelist-button on";
    noderecomendado.className = "recipelist-button";
    nodemaspopular.className = "recipelist-button";
    // seek new list
    cleandata();
    calldata();
  }

  function recomendado()
  {
    if (actual == 2)
      return;
    actual = 2;
    nodemasnuevo.className = "recipelist-button";
    noderecomendado.className = "recipelist-button on";
    nodemaspopular.className = "recipelist-button";
    // seek new list
    cleandata();
    calldata();
  }

  function maspopular()
  {
    if (actual == 3)
      return;
    actual = 3;
    nodemasnuevo.className = "recipelist-button";
    noderecomendado.className = "recipelist-button";
    nodemaspopular.className = "recipelist-button on";
    // seek new list
    cleandata();
    calldata();
  }

  function load()
  {
    node = WA.toDOM('recipelist');
    if (!node)
      return;
    nodemasnuevo = WA.toDOM('recipelist-masnuevo');
    nodemasnuevo.onclick = masnuevo;
    noderecomendado = WA.toDOM('recipelist-recomendado')
    noderecomendado.onclick = recomendado;
    nodemaspopular = WA.toDOM('recipelist-maspopular')
    nodemaspopular.onclick = maspopular;
    nodenext = WA.toDOM('recipelist-next');
    nodenext.onclick = next;

    type = node.dataset.type;
    key = node.dataset.key;
    quantity = parseInt(node.dataset.quantity, 10);
    page = parseInt(node.dataset.page, 10);
    more = node.dataset.more=="true";
    total = parseInt(node.dataset.total, 10);

    // If more: adds the "get next page" button
    nodenext.style.display = more?"block":"none";
  }

  function unload()
  {
    if (!node)
      return;
    nodemasnuevo.onclick = function() {};
    noderecomendado.onclick = function() {};
    nodemaspopular.onclick = function() {};
    nodenext.onclick = function() {};
    nodemasnuevo = null;
    noderecomendado = null;
    nodemaspopular = null;
    nodenext = null;
    node = null;
  }

  KL.loader.addHookLoad('recipelist', load);
  KL.loader.addHookUnload('recipelist', unload);
}

KL.loader.createCSS(`.gallery{
  margin: 0px;
  width: 100%;
  max-width: inherit;
  height: 100%;
  position: relative;
}

.gallery-slide {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}

.gallery-slide.slide.anim {
  transition: all 1s ease 0s;
}

.gallery-slide.slide {
  transform: translate3d(0, 0, 0);
}

.gallery-slide.slide.before {
  transform: translate3d(-100%, 0, 0);
}

.gallery-slide.slide.after {
  transform: translate3d(100%, 0, 0);
}

.icon-k7-gallery-previous:before{content: "\\e948";}
.icon-k7-gallery-next:before{content: "\\e947";}
.icon-k7-gallery-play:before{content: "\\e923";}
.icon-k7-gallery-pause:before{content: "\\e922";}

.gallery-button
{
  position: absolute;
  opacity: 1;
  width: 48px;
  top: 0;
  bottom: 0;
  z-index: 14;
  background-color: transparent;
  font-size: 20px;
  cursor: pointer;
}

.gallery-button > div
{
  top: 50%;
  margin-top: -50%;
  position: relative;
  width: 100%;
  text-align: center;
  color: white;
}

.gallery-button:hover > div {
  color: #ccc;
  font-weight: bold;
}

.gallery-button.left{
  left: 0;
}

.gallery-button.right
{
  right: 0;
}

.gallery-player
{
  position: absolute;
  opacity: 1;
  width: 48px;
  left: 0px;
  top: 0px;
  height: 30px;
  width: 20px;
  padding-top: 10px;
  padding-left: 20px;
  z-index: 15;
  background-color: transparent;
  font-size: 20px;
  cursor: pointer;
}

.gallery-player > div
{
  position: relative;
  color: white;
}

.gallery-player:hover > div {
  color: #ccc;
  font-weight: bold;
}

.gallery-bullets {
  position: absolute;
  bottom: 0;
  width: auto;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  display: flex;
}

.gallery-bullet {
  cursor: pointer;
  padding: 10px;
  padding-bottom: 20px;
  display: inline-block;
}

.gallery-bullet.on > div {
  background-color: black;
}

.gallery-bullet > div {
  background-color: white;
  border-radius: 100%;
  width: 10px;
  height: 10px;
  box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.5);
}
`);
KL.loader.createCSS(`
.gallery-datacontainer{
  position: absolute;
  overflow: hidden;
  height: 42px;
  right: 0px;
  bottom: 0px;
  left: 0px;
  text-align: center;

  background-color: #ffffff;
  opacity: 0.8;
}

.gallery-datacontainer > div, .gallery-datacontainer > h1 {
  display: table;
  width: 100%;
  height: 42px;
}

.gallery-datacontainer > div > a, .gallery-datacontainer > h1 > a {
  display: table-cell;
  vertical-align: middle;
  text-align: center;

  padding: 2px 10px;

  color: #222222;
  font-size: 15px;
  font-weight: bold;
  line-height: 16px;
  text-transform: uppercase;
  text-decoration: none;
}

.gallery-bullets {
  bottom: -42px;
  z-index: 10;
}

.gallery-bullet > div {
  background-color: #ccc;
  box-shadow: none;
}
`);
KL.loader.createCSS(`.tools-shadow {
  position: absolute;
  top: 0px;
  bottom: 0px;
  width: 100%;
  background-color: #222222;
  opacity: 0.2;
  z-index: 1;
}

.tools-container {
  position: absolute;
  right: 10px;
  top: 10px;
  width: 30px;
  height: 30px;
  z-index: 1;
}

.tools-container .icon-k7-tools-close:before {
  content: "\\e946";
  font-size: 16px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translateX(-50%) translateY(-50%);
}

.tools-container .icon-k7-tools-menuplanner:before {
  content: "\\e90c";
  font-size: 16px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translateX(-50%) translateY(-50%);
}

.tools-container .icon-k7-tools-shoppinglist:before {
  content: "\\e90a";
  font-size: 15px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translateX(-50%) translateY(-50%);
}

.tools-container .icon-k7-tools-collections:before {
  content: "\\e907";
  font-size: 15px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translateX(-50%) translateY(-50%);
}

.tools-container .icon-k7-tools-favorites-empty:before {
  content: "\\e908";
  font-size: 16px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translateX(-50%) translateY(-50%);
}

.tools-container.icon-k7-tools-favorites-full:before {
  content: "\\e924";
  font-size: 16px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translateX(-50%) translateY(-50%);
}

.tools-container>div {
  border-radius: 100%;
  position: absolute;
  right: 0px;
  top: 0px;
  cursor: pointer;
  text-align: left;
}

.tools-close, .tools-menuplanner, .tools-shoppinglist, .tools-collections, .tools-favorites{
  background-color: #8cc63e;
  color: #ffffff;
  height: 30px;
  width: 30px;
}

.tools-favorites{
  background-color: #ff0000;
}

.tools-close{
  background-color: #eeeeee;
  color: #888;
}

.tools-coleccionentrada {
  height: 15px;
  cursor: pointer;
  padding: 5px;

}

.tools-coleccionentrada:hover {
  background-color: #ccc;
}
`);
KL.loader.createCSS(`/* generico */
.feed-articulolarge-thumb-titulo-seccion{
  background-color: #8cc63e;
}

/* nutricion */
.feed-articulolarge-thumb-titulo-seccion.id_tema_11{
  background-color: #9ec410;
}

/* bebidas */
.feed-articulolarge-thumb-titulo-seccion.id_tema_30{
  background-color: #f05d7f;
}

/* comida vegana */
.feed-articulolarge-thumb-titulo-seccion.id_tema_1{
  background-color: #28d9ff;
}

/* dieta */
.feed-articulolarge-thumb-titulo-seccion.id_tema_44{
  background-color: #2e94ba;
}

/* reposteria */
.feed-articulolarge-thumb-titulo-seccion.id_tema_20{
  background-color: #efc950;
}

/* tips cocina */
.feed-articulolarge-thumb-titulo-seccion.id_tema_54{
  background-color: #f39041;
}

/* tips consejos */
.feed-articulolarge-thumb-titulo-seccion.id_tema_25{
  background-color: #ca5dde;
}

.feed-divarticulolarge .tools-container, #home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .tools-container{
  left: 225px;
}


/* estilos slider top 10 */
/* estilos slider top 10 para tips kiwi / estilos slider top 10 para tips crafto */
div[id^="familiatips"] div[id^="p|kiwi|tipfamilia"], div[id^="clasificaciontips"] div[id^="p|kiwi|tipclasificacion"], div[id^="home_top10"] div[id^="p|kiwi|tiphome"], div[id^="home_top10"] div[id^="p|crafto|tiphome"], div[id^="familiatips"] div[id^="p|crafto|tipfamilia"], div[id^="clasificaciontips"] div[id^="p|crafto|tipclasificacion"], div[id^="familiatips"] div[id^="p|kiwi|tipclasificaciontop|"], div[id^="familiatips"] div[id^="p|crafto|tipclasificaciontop|"]{
  width: 190px;
  margin: 0px 15px 0px 0px;
  height: 267px;
}

div[id^="familiatips"] div[id^="feed-tip-divimg"], div[id^="clasificaciontips"] div[id^="feed-tip-divimg"], div[id^="home_top10"] div[id^="feed-tip-divimg"]{
  height: 190px;
  width: 190px;
}

div[id^="familiatips"] .feed-tip-nombreficha, div[id^="clasificaciontips"] .feed-tip-nombreficha, div[id^="home_top10"] .feed-tip-nombreficha{
  font-size: 14px;
  max-height: 46px;
  line-height: 15px;
  text-transform: uppercase;
}

div[id^="familiatips"] hr, div[id^="clasificaciontips"] hr, div[id^="familiatips"] .feed-tip-nombrechef, div[id^="clasificaciontips"] .feed-tip-nombrechef, div[id^="home_top10"] div[id^="p|kiwi"] hr, div[id^="home_top10"] div[id^="p|crafto"] hr, div[id^="home_top10"] div[id^="p|kiwi"] .feed-tip-nombrechef, div[id^="home_top10"] div[id^="p|crafto"] .feed-tip-nombrechef{
  display: none;
}

div[id^="familiatips"] div[id^="feed-tip-rating"], div[id^="clasificaciontips"] div[id^="feed-tip-rating"], div[id^="home_top10"] div[id^="p|kiwi|tiphometop"] div[id^="feed-tip-rating"], div[id^="home_top10"] div[id^="p|crafto|tiphometop"] div[id^="feed-tip-rating"]{
  margin: 0px auto;
  padding: 0px;
}
/* fin estilos slider top 10 para tips */

/* area nombre ficha */
#home_top10 .recetaslider-ficha, #familiarecetas_top10 .recetaslider-ficha, #clasificacionrecetas_top10 .recetaslider-ficha, #clasificacionrecetas_top10 .compilacionrecetaslider-ficha, #clasificaciontips_top10 .tipslider-ficha, #home_tecuidalist .feed-articulo-ficha, .pro-slider-fichaspro .feed-receta-ficha{
  height: 267px;
}

#home_top10 .recetaslider-areanombreficha, #familiarecetas_top10 .recetaslider-areanombreficha, #clasificacionrecetas_top10 .recetaslider-areanombreficha, #home_top10 .tipslider-areanombreficha, #home_top10 .articuloslider-areanombreficha{
  height: 52px; 
}

#home_top10 .recetasliderpro-areanombreficha, #familiarecetas_top10 .recetasliderpro-areanombreficha, #clasificacionrecetas_top10 .recetasliderpro-areanombreficha{
  height: 52px; 
  display: flex;
  align-items: center;
}

#home_videos .compilacionrecetaslider-areanombreficha{
  height: 75px; 
}


/* nombre de ficha */
#home_top10 .recetaslider-nombreficha, #familiarecetas_top10 .recetaslider-nombreficha, #clasificacionrecetas_top10 .recetaslider-nombreficha, #home_top10 .tipslider-nombreficha, #home_videos .compilacionrecetaslider-nombreficha, #home_top10 .articuloslider-nombreficha, #home_videos div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-nombreficha, #home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-nombre-articulo{
  font-weight: bold;
  font-size: 14px;
  color: #000000;
  max-height: 46px;
}

#home_top10 .recetaslider-icon-pro, #familiarecetas_top10 .recetaslider-icon-pro, #clasificacionrecetas_top10 .recetaslider-icon-pro{
  width: 30px;
  height: 30px;
  font-size: 20px;
  margin: 0px 0px 0px 10px;
}

#home_top10 .recetasliderpro-nombreficha, #familiarecetas_top10 .recetasliderpro-nombreficha, #clasificacionrecetas_top10 .recetasliderpro-nombreficha{
  font-size: 15px;
  max-height: 31px;
  width: calc(100% - 40px);
}

/* rating */
#home_top10 .recetaslider-rating, #familiarecetas_top10 .recetaslider-rating, #clasificacionrecetas_top10 .recetaslider-rating, #home_top10 .tipslider-rating{
  display: table;
}

#home_top10 div[id^="p|kiwi|"] [class$="-rating"], #home_top10 div[id^="p|crafto|"] [class$="-rating"], #familiarecetas_top10 div[id^="p|kiwi|"] [class$="-rating"], #clasificacionrecetas_top10 div[id^="p|kiwi|"] [class$="-rating"]{
  padding: 0px;
}
/* fin estilos slider top 10 */


/* Estilos feed fichas Normal */
/* Estilo solo para los tips, ya que slider top usa la misma ficha que en feed normal */
div[id^="p|kiwi|home"].feed-tip-ficha, div[id^="tiplist"] div[id^="p|kiwi|tipfamilia"], div[id^="tiplist"] div[id^="p|kiwi|tipclasificacion"], div[id^="tiplist"] div[id^="p|kiwi|tiphome"], div[id^="tiplist"] div[id^="p|crafto|tiphome"], div[id^="tiplist"] div[id^="p|crafto|tipfamilia"], div[id^="tiplist"] div[id^="p|crafto|tipclasificacion"]{
  width: 300px;
  margin: 0px 10px 16px;
  height: 275px;
}

div[id^="tiplist"] div[id^="feed-tip-divimg"]{
  height: 194px;
  width: 300px;
}

div[id^="p|kiwi|home"].feed-tip-ficha .feed-tip-nombreficha, div[id^="tiplist"] .feed-tip-nombreficha{
  font-size: 17px;
  max-height: 38px;
  line-height: 18px;
}

div[id^="tiplist"].feedtiplist-crafto .feed-tip-nombreficha{
  font-family: poppins-semibold;
  font-size: 15px;
  font-weight: normal !important;
  letter-spacing: 0.5px;
  color: var(--color-texto-base) !important;
}

div[id^="p|kiwi|home"].feed-tip-ficha div[id^="feed-tip-rating"], div[id^="tiplist"] div[id^="feed-tip-rating"]{
  margin: 0px 0px 0px 10px;
}
/* fin Estilo solo para los tips */

div[id^="p|kiwi|"][class$="-ficha"], div[id^="p|kiwirec|"][class$="-ficha"], div[id^="p|crafto|tipcompilaciones|"].feed-compilaciontip-ficha, div[id^="p|crafto|"][class$="-articulo-ficha"]{
  height: 275px;
}

div[id^="p|kiwi|client"][class$="feed-compilaciontip-ficha"] .compilaciontip-img, div[id^="p|crafto|client"][class$="feed-compilaciontip-ficha"] .compilaciontip-img{
  transform: translateY(-50%);
}

div[id^="p|kiwi|client"][class$="-ficha"], div[id^="p|crafto|client"][class$="-ficha"]{
  width: 300px;
  margin: 0px 10px 16px;
}

#prorecipeprolist .feed-producto-ficha{
width: 200px;
margin: 20px 15px;
display: inline-table;
float: none !important;
}

/* div[id^="p|kiwi|probooks|"][class$="-ficha"], div[id^="p|kiwi|prorecipes|"][class$="-ficha"], div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada */
div[id^="p|kiwi|probooks|"][class$="-ficha"], div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada{
  height: 262px;
  margin: 20px 15px;
  width: 200px;
  border-radius: 5px;
  float: none !important;
  display: inline-table;
}

div[id^="p|kiwi|procollections|"].coleccion-venta-ficha{
  float: none !important;
  display: inline-table;
}

div[id^="p|kiwi|procollections|"].coleccion-venta-ficha .coleccionventa-area{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  vertical-align: top;
  width: 100%;
}

div[id^="p|kiwi|probooks|"] .feed-producto-div-nombreprod, div[id^="p|kiwi|prorecipes|"] .feed-producto-div-nombreprod{
  display: none;
}

/* estilos fichas recetas slider pro*/
.pro-slider-fichaspro div[id^="p|kiwi|probooks|"].feed-producto-ficha{
  width: 200px;
  height: 262px;
  margin: 20px 15px;
  border-radius: 5px;
}

.pro-slider-fichaspro .feed-receta-ficha{
  width: 190px !important;
  margin: 0px 30px 0px 0px !important;
  position: relative;
}

.pro-slider-fichaspro .feed-divimagenficha{
  width: 190px !important;
  height: 190px !important;
}

.pro-slider-fichaspro .feed-receta-ficha img{
  left: 50% !important;
  top: 50% !important;
  transform: translateX(-50%) translateY(-50%) !important;
  height: 100%;
  width: auto !important;
  min-width: 300px;
}

.pro-slider-fichaspro .feed-receta-ficha hr, .pro-slider-fichaspro .feed-receta-nombrechef{
  display: none;
}

.pro-slider-fichaspro .feed-recetapro-icon{
  margin: 0px 0px 0px 10px !important;
}

.pro-slider-fichaspro .feed-receta-nombreficha-centrado{
  max-height: 47px !important;
  width: calc(100% - 40px) !important;
}
/* fin estilos fichas recetas slider pro*/

/* estilos fichas donde vienen cosas revueltas de kiwipro en el home */
.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-producto-ficha{
  width: 200px !important;
  height: 272px;
  /* border-radius: 5px; */
  margin: 0px 20px !important;
  background-color: #ffffff;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-producto-ficha{
  float: left;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-divimagenficha, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha .feed-divimagenficha{
  width: 100% !important;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-divimagenficha img, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha .feed-divimagenficha img{
  height: 100%;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha:first-child, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha:first-child{
  margin: 0px 20px 0px 0px !important;
}

#home-cont-kiwipro.home-cont-sliderpro div[id^="p|kiwi|pro|"] .feed-articulopro-divtextos-articulo, #home-cont-kiwipro.home-cont-sliderpro div[id^="p|kiwi|pro|"] [class$="recetapro-areanombreficha"]{
  height: 62px;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha hr, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha .feed-receta-nombrechef{
  display: none;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha .feed-receta-rating{
  position: relative;
  display: flex !important;
  justify-content: center;
  margin: -3px 0px 0px 0px !important;
  padding: 0px;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-separador, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-nombre-autor{
  display: none !important;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha{
  float: left;
}

/*
.home-cont-sliderpro div[id^="p|kiwi|pro|"] .feed-articulo-divimg-articulo{
  border-radius: 5px;
}
*/

.home-cont-sliderpro div[id^="p|kiwi|pro|"] .feed-recetapro-areanombreficha .feed-recetapro-icon, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-icon{
  margin: 0px 0px 0px 10px !important;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"] .feed-recetapro-areanombreficha .feed-receta-nombreficha-centrado, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-nombre-articulo{
  width: calc(100% - 40px) !important;
  max-height: 46px;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"] .feed-recetapro-areanombreficha .feed-receta-nombreficha-centrado{
  max-height: 46px !important;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-nombre-articulo{
  /*max-height: 34px;*/
  font-size: 16px;
  line-height: 15px;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-area-rating{
  display: none !important;
  padding: 0px;
  bottom: -10px;
  left: 50%;
  transform: translateX(-50%);
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulo-clasificacion-articulo{
  display: block !important;
  position: absolute;
  /*bottom: -10px;*/
  bottom: -11px;
  width: 100%;
  text-align: center;
  font-style: italic;
  color: #aaaaaa;
  box-sizing: border-box;
  padding: 0px 10px;
}
/* fin estilos fichas donde vienen cosas revueltas de kiwipro en el home */

.pro-slider-fichaspro .feed-receta-rating{
  margin: 0px auto !important;
  padding: 0px !important;
}

div[id^="p|kiwi|home|"].feed-compilaciontip-ficha, div[id^="p|crafto|tipcompilaciones|"].feed-compilaciontip-ficha{
  margin: 0px 10px 16px;
  overflow: hidden;
  width: 300px;
}

div[id^="p|crafto|tipcompilations|"].feed-compilaciontip-ficha{
  margin: 0px 10px 16px;
  width: 300px;
}

div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada{
  text-align: left;
}

div[id^="p|kiwi|"] [class$="-divimg-articulo"], div[id^="p|kiwirec|"] [class$="-divimg-articulo"], div[id^="p|crafto|"] [class$="-divimg-articulo"]{
  position: relative;
}

div[id^="p|kiwi|"] [class$="-divimg"], div[id^="p|kiwi|home|"] [class$="-divimg"], div[id^="p|kiwirec|"] [class$="-divimg"], div[id^="p|kiwirec|home|"] [class$="-divimg"], div[id^="p|kiwi|"] [class$="-divimg-articulo"], div[id^="p|kiwirec|"] [class$="-divimg-articulo"], div[id^="p|crafto|"] [class$="-divimg"], div[id^="p|crafto|"] [class$="-divimg-articulo"]{
  height: 194px;
  overflow: hidden;
}

div[id^="p|kiwi|"] .feed-compilaciontip-divimg, div[id^="p|crafto|"] .feed-compilaciontip-divimg{
  width: 300px;
}

div[id^="p|kiwi|"] .feed-compilacionreceta-divimg .compilacionreceta-img, div[id^="p|crafto|tipcompilaciones|"].feed-compilaciontip-ficha .compilaciontip-img{
  height: auto;
}

div[id^="p|crafto|"] .feed-compilaciontip-divimg .compilaciontip-img{
  transform: translateY(-50%);
}

#home_videos div[id^="p|crafto|"] .feed-compilaciontip-divimg .compilaciontip-img{
  transform: initial;
}


div[id^="p|kiwi|home|"] [class$="-divimg"] .imgcompilacion{
  transform: translateY(-50%);
}


/* estilos feed normal articulos */
div[id^="p|kiwi|"][class$="feed-articulo-ficha"], div[id^="p|kiwirec|"][class$="feed-articulo-ficha"], div[id^="p|crafto|"][class$="feed-articulo-ficha"]{
  background-color: #ffffff;
  float: left;
  margin: 0px 10px 16px;
  overflow: hidden;
  position: relative;
  width: 300px;
}

div[id^="p|kiwi|"] .feed-articulopro-divtextos-articulo, #home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"] .feed-articulopro-divtextos-articulo{
  display: flex;
  align-items: center;
  height: 52px;
  position: relative;
}

div[id^="p|kiwi|"] .feed-articulopro-area-titulo{
  display: flex;
  align-items: center;
  position: relative;
  width: 100%;
  flex: auto;
}

#home_tecuidalist div[id^="p|kiwi|"] .feed-articulopro-icon{
  margin: 0px 0px 0px 10px !important;
}

div[id^="p|kiwi|"] .feed-articulopro-nombre-articulo{
  box-sizing: border-box;
  color: #8eb4b1;
  font-family: crimsonpro-semibold;
  font-size: 19px;
  text-transform: uppercase;
  width: calc(100% - 50px);
  line-height: 17px;
  max-height: 38px;
  overflow: hidden;
  padding: 0px 10px;
  position: absolute;
  right: 0px;
}

#home_tecuidalist div[id^="p|kiwi|"] .feed-articulopro-nombre-articulo{
  font-size: 17px;
  line-height: 15px;
  max-height: 46px;
  width: calc(100% - 40px);
  text-transform: initial;
}

#home_tecuidalist div[id^="p|kiwi|"] .feed-articulopro-separador{
  display: none !important;
}

div[id^="p|kiwi|"] .feed-articulo-nombre-articulo, div[id^="p|kiwirec|"] .feed-articulo-nombre-articulo, div[id^="p|crafto|"] .feed-articulo-nombre-articulo{
  box-sizing: border-box;
  color: #000000;
  font-size: 17px;
  font-weight: bold;
  line-height: 18px;
  max-height: 38px;
  overflow: hidden;
  padding: 0px 10px;
  position: absolute;
  text-align: center;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
}

div[id^="p|kiwi|"] .feed-articulopro-desc-articulo, div[id^="p|kiwi|"] .feed-articulo-desc-articulo, div[id^="p|kiwirec|"] .feed-articulo-desc-articulo, div[id^="p|crafto|"] .feed-articulo-desc-articulo{
  display: none;
}

div[id^="p|kiwi|"] .feed-articulopro-separador, div[id^="p|kiwi|"] .feed-articulo-separador, div[id^="p|kiwirec|"] .feed-articulo-separador, div[id^="p|crafto|"] .feed-articulo-separador{
  display: block !important;
  bottom: -2px;
}

div[id^="p|kiwi|"] .feed-articulopro-nombre-autor, div[id^="p|kiwi|"] .feed-articulo-nombre-autor, div[id^="p|kiwirec|"] .feed-articulopro-nombre-autor, div[id^="p|kiwirec|"] .feed-articulo-nombre-autor, div[id^="p|crafto|"] .feed-articulo-nombre-autor{
  display: block !important;
  position: absolute;
  bottom: -22px;
  right: 10px;
  font-style: italic;
  color: #aaaaaa;
  /*bottom: 7px;*/
}

div[id^="p|kiwi|"] .feed-articulopro-area-rating, div[id^="p|kiwi|"] .feed-articulo-area-rating, div[id^="p|crafto|"] .feed-articulo-area-rating{
  display: block !important;
  position: absolute;
  bottom: -23px;
  left: 10px;
  /*bottom: 6px;*/
  height: 13px !important;
}

.feedtiplist-crafto div[id^="p|crafto|"] .feed-articulo-area-rating, .feedtiplist-kiwi div[id^="p|kiwi|"] .feed-articulo-area-rating, .feedtiplist-kiwirec div[id^="p|kiwirec|"] .feed-articulo-area-rating{
  left: 0px;
}

div[id^="p|kiwi|"] .feed-articulopro-area-rating .feed-articulo-rating, div[id^="p|kiwi|"] .feed-articulo-area-rating .feed-articulo-rating, div[id^="p|kiwirec|"] .feed-articulo-area-rating .feed-articulo-rating{
  color: #8cc63e;
}
/* fin estilos feed normal articulos */


/* estilos para ficha tips en home principal kiwi */
#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"]{
  width: 600px;
  height: auto;
  margin: 0px 15px 0px 0px;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-divimg{
    float: left;
    width: 265px;
    height: 265px;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-areanombreficha{
  float: left;
  width: calc(100% - 265px);
  height: 265px;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-nombreficha-div{
  color: #333333;
  /*font-size: 18px;*/
  font-size: 20px;
  font-weight: bold;
  /*line-height: 20px;*/
  line-height: 22px;
  margin: 0px 0px 15px;
  /*max-height: 62px;*/
  max-height: 68px;
  padding: 0px 10px;
  overflow: hidden;
  text-transform: uppercase;
  text-align: left;
}


#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-descripcionficha{
  box-sizing: border-box;
  color: #333333;
  font-size: 15px;
  font-weight: normal;
  line-height: 19px;
  max-height: 98px;
  overflow: hidden;
  padding: 0px 10px;
  position: relative;
  width: 100%;
  text-align: left;
  display: block !important;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-ficha-linkvertip{
  font-size: 16px;
  color: #8cc63e;
  text-align: left;
  margin: 10px 0px 0px;
  padding: 0px 10px;
  line-height: 22px;
  display: block !important;
}

.icon-k7-link-vertip:before{content: "\\e923";}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] hr, #home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-rating, #home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-nombrechef{
  display: none !important;
}
/* estilos para ficha tips en home principal kiwi */


/* estilos home fichas notas blog */
#home_notasblog div[id^="p|kiwi|articlehome|"].feed-articulo-ficha, #home_notasblog div[id^="p|kiwirec|articlehome|"].feed-articulo-ficha{
  background-color: #ffffff;
  width: 190px;
  height: 265px;
  float: left;
  position: relative;
  margin: 0px 15px 0px 0px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-divimg-articulo, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-divimg-articulo{
  /*height: 190px;*/
  height: 180px;
  position: relative;
  overflow: hidden;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-divtextos-articulo, #home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-divtextos-articulo, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-divtextos-articulo{
  /*height: 75px;*/
  height: 85px;
  position: relative;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-seccion, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-seccion{
  display: none;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-nombre-articulo, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-nombre-articulo{
  box-sizing: border-box;
  line-height: 15px;
  overflow: hidden;
  /*padding: 0px 10px;*/
  padding: 0px 7px;
  position: absolute;
  text-align: center;
  /*text-transform: uppercase;*/
  top: 38%;
  /*transform: translateY(-50%);*/
  transform: translateY(-46%);
  width: 100%;
  font-weight: bold;
  font-size: 14px;
  color: #000000;
  max-height: 46px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-area-titulo{
  position: absolute;
  top: 38%;
  transform: translateY(-46%);
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-icon{
  margin: 0px 0px 0px 10px !important;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-nombre-articulo{
  font-size: 17px;
  line-height: 15px;
  max-height: 45px;
  width: calc(100% - 40px) !important;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion{
  background-color: #8cc63e;
  box-sizing: border-box;
  color: #ffffff;
  font-size: 11px;
  left: 0px;
  letter-spacing: 1px;
  max-width: 140px;
  padding: 8px 13px;
  position: absolute;
  text-transform: uppercase;
  top: 15px;
  display: block !important;
}


#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_3, #home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_11, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_3, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_11{
  background-color: #9ec410;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_30, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_30{
  background-color: #f05d7f;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_1, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_1{
  background-color: #28d9ff;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_44, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_44{
  background-color: #2e94ba;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_20, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_20{
  background-color: #efc950;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_54, #home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_54{
  background-color: #f39041;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_25, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_25{
  background-color: #ca5dde;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-nombre-autor, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-nombre-autor{
  display: block !important;
  box-sizing: border-box;
  padding: 0px 10px;
  text-align: center;
  color: #aaaaaa;
  font-family: 'source sans pro';
  font-style: italic;
  font-size: 12px;
  height: 15px;
  overflow: hidden;
  position: absolute;
  bottom: 5px;
  right: 0px;
  width: 100%;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-nombre-autor{
  display: block !important;
  left: 50%;
  transform: translate(-50%);
  bottom: 8px;
  font-size: 12px;
  width: -webkit-fit-content; width: -moz-fit-content; width: -o-fit-content; width: -ms-fit-content; width: fit-content;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-area-rating, #home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-area-rating, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-area-rating, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulopro-area-rating{
  display: none !important;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-desc-articulo, #home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-desc-articulo{
  display: none;
}
/* fin home estilos fichas notas blog */

/* estilos home fichas te cuida */
#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha{
    background-color: #ffffff;
    display: table;
    float: left;
    margin: 0px 15px 0px 0px;
    position: relative;
    width: 190px;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-divcontenido{
  height: inherit;
  position: relative;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-divimg-articulo{
  width: 100%;
  /*height: 190px;*/
  height: 180px;
  position: relative;
  overflow: hidden;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-divimg-articulo img{
  vertical-align: top;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-divtextos-articulo, #home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"] .feed-articulopro-divtextos-articulo{
  height: 62px;
  position: relative;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-nombre-articulo{
  box-sizing: border-box;
  line-height: 15px;
  overflow: hidden;
  /*padding: 0px 10px;*/
  padding: 0px 7px;
  position: absolute;
  text-align: center;
  /*text-transform: uppercase;*/
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-separador{
  display: none !important;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-area-rating, #home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulopro-area-rating{
  display: block !important;
  color: #8cc63e;
  position: absolute;
  bottom: -16px;
  left: 50%;
  transform: translateX(-50%);
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulopro-area-rating{
  left: 50%;
  transform: translateX(-50%);
  bottom: -16px;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-desc-articulo, #home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-nombre-autor, #home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulopro-nombre-autor{
  display: none !important;
}
/* fin estilos home fichas te cuida */

/* estilos fichas productos feed normal */
div[id^="p|kiwi|"] .feed-producto-divimg, div[id^="p|kiwirec|"] .feed-producto-divimg, div[id^="p|kiwi|home|"] .feed-producto-divimg{
  height: 233px;
}
/* estilos fichas productos feed normal */

div[id^="p|kiwi|probooks|"] .feed-producto-divimg, div[id^="p|kiwi|prorecipes|"] .feed-producto-divimg{
  height: 100%;
}

div[id^="p|kiwi|"] [class$="-areanombreficha"], div[id^="p|kiwirec|"] [class$="-areanombreficha"], div[id^="p|crafto|"] [class$="-areanombreficha"], div[id^="p|kiwi|"] .feed-articulo-divtextos-articulo, div[id^="p|kiwirec|"] .feed-articulo-divtextos-articulo, div[id^="p|crafto|"] .feed-articulo-divtextos-articulo{
  height: 52px;
}

div[id^="p|kiwi|"] .feed-articulo-divtextos-articulo, div[id^="p|kiwirec|"] .feed-articulo-divtextos-articulo, div[id^="p|crafto|"] .feed-articulo-divtextos-articulo{
  position: relative;
}

div[id^="p|kiwi|"] [class$="recetapro-areanombreficha"]{
  height: 52px;
  display: flex;
  align-items: center;
}

div[id^="p|kiwi|"] .feed-compilacionreceta-areanombreficha, div[id^="p|kiwi|"] .feed-compilaciontip-areanombreficha, div[id^="p|crafto|"] .feed-compilaciontip-areanombreficha{
  height: 42px;
}


div[id^="p|kiwi|"] .feed-compilaciontip-areanombreficha .feed-compilaciontip-nombreficha, div[id^="p|crafto|"] .feed-compilaciontip-areanombreficha .feed-compilaciontip-nombreficha{
  color: #000000;
  font-size: 17px;
  font-weight: bold;
  line-height: 18px;
  max-height: 38px;
}

div[id^="p|kiwi|"] [class$="-titulo-seccion"], div[id^="p|kiwirec|"] [class$="-titulo-seccion"], div[id^="p|crafto|"] [class$="-titulo-seccion"]{
  display: none;
}

div[id^="p|kiwi|"] [class$="-rating"], div[id^="p|kiwirec|"] [class$="-rating"], div[id^="p|crafto|"] [class$="-rating"]{
  padding: 8px 0px 0px;
}

div[id^="p|crafto|client|"].feed-tip-ficha{
  height: 275px;
}

div[id^="p|kiwi|client|"] [class$="-rating"], div[id^="p|crafto|client|"] [class$="-rating"]{
  margin: 0px 0px 0px 10px;
  height: 275px;
}


div[id^="p|kiwi|"] [class$="-nombrechef"], div[id^="p|kiwirec|"] [class$="-nombrechef"], div[id^="p|crafto|"] [class$="-nombrechef"]{
  bottom: 5px;
}

.feedtiplist-crafto div[id^="p|crafto|"] [class$="-nombrechef"]{
  font-family: poppins-light !important;
  font-size: 11px !important;
  letter-spacing: 0.5px;
  color: var(--color-texto-base) !important;
}

/* Estilos feed fichas home videos compilacion craftologia / home tips kiwi */
#home_videos .feed-compilaciontip-ficha{
  height: auto;
  margin: 0px 10px 16px;
  width: 300px;
  color: var(--color-texto-base) !important;
}

div[id^="p|kiwi|tiphomecompilacion"] .feed-compilaciontip-divimg, div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-divimg{
  height: 222px;
  overflow: hidden;
}

div[id^="p|kiwi|tiphomecompilacion"] .feed-compilaciontip-divimg img, div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-divimg img {
  top: initial !important;
}

div[id^="p|kiwi|tiphomecompilacion"] .feed-compilaciontip-divimg .imgcompilacion, div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-divimg .imgcompilacion, div[id^="p|crafto|crosslink"] .feed-compilaciontip-divimg .compilaciontip-img{
  transform: translateX(-50%) translateY(-50%);
}

div[id^="p|kiwi|tiphomecompilacion"] .feed-linea-separador-compilacion, div[id^="p|kiwi|tiphomecompilacion"] .feed-compilaciontip-descripcion, div[id^="p|crafto|tiphomecompilacion"] .feed-linea-separador-compilacion, div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-descripcion{
  display: none;
}

#home_videos div[id^="p|kiwi|tiphomecompilacion"] .feed-compilaciontip-areanombreficha, #home_videos div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-areanombreficha{
  height: 75px;
}

div[id^="p|crafto|crosslink"] .feed-compilaciontip-divimg .compilaciontip-img{
  height: inherit;
}
/* Fin Estilos feed fichas home videos compilacion craftologia */


/* Estilos caja recomendaciones de tips */
.tip-recomendaciones .feed-tip-ficha .feed-tippro-icon{
  width: 20px !important;
  height: 20px !important;
  font-size: 13px !important;
}

.tip-recomendaciones .feed-tip-ficha .feed-tip-nombrefichapro-centrado{
  width: calc(100% - 30px) !important;
}
/* Fin estilos caja recomendaciones de tips */
/* Fin Estilos feed fichas Normal */


/* Estilos feed fichas Busqueda */
div[id^="p|search|"].feed-tip-ficha{
  width: 300px;
  margin: 0px 10px 16px;
}

#searchlist div[id^="p|search|"][class$="-ficha"], .searchlist-muestra{
  height: 250px;
}

#searchlist .coleccion-venta-soloportada{
  height: 250px !important;
  margin: 0px 10px 16px !important;
  width: 300px !important;
}

#searchlist .coleccion-venta-soloportada img{
  top: 0px !important;
  transform: initial !important;
}

#te-cuida-divcont-consejos-tips #searchlist div[id^="p|search|"][class$="-ficha"]{
  height: auto;
}

#te-cuida-divcont-consejos-tips .feed-articulo-ficha{
  height: auto;
}

div[id^="p|search|"] .feed-tip-divimg, div[id^="p|search|"].feed-compilaciontip-ficha{
  width: 300px;
}

div[id^="p|search|"].feed-compilaciontip-ficha{
  margin: 0px 10px 16px;
}

div[id^="p|search|"] [class$="-divimg"]{
  height: 185px;
}

div[id^="p|search|"] .feed-compilacionreceta-divimg, div[id^="p|search|"] .feed-compilaciontip-divimg{
  height: 208px;
}

div[id^="p|search|"] .feed-compilaciontip-divimg .compilaciontip-img{
  transform: translateY(-50%);
}

div[id^="p|search|"] [class$="-areanombreficha"]{
  height: 42px;
}

div[id^="p|search|"] [class$="recetapro-areanombreficha"]{
  height: 42px;
  display: flex;
  align-items: center;
}

div[id^="p|search|"] .feed-compilaciontip-areanombreficha .feed-compilaciontip-nombreficha{
  color: #000000;
  font-size: 17px;
  font-weight: bold;
  line-height: 18px;
  max-height: 38px;
}

div[id^="p|search|"] .feed-tip-nombreficha{
  font-size: 17px;
  max-height: 38px;
  line-height: 18px;
}

div[id^="p|search|"] .feed-linea-separador-compilacion, div[id^="p|search|"] .feed-compilacionreceta-descripcion, div[id^="p|search|"] .feed-compilaciontip-descripcion{
  display: none;
}

div[id^="p|search|"] [class$="-titulo-seccion"]{
  display: block;
}

div[id^="p|search|"] [class$="-rating"]{
  padding: 4px 0px 0px;
}

div[id^="p|search"] div[id^="feed-tip-rating"]{
  margin: 0px 0px 0px 10px;
}

div[id^="p|search|"] [class$="-nombrechef"]{
  bottom: 3px;
}



/* fichas articulo */
div[id^="p|search|"].feed-articulo-ficha{
  background-color: #ffffff;
  float: left;
  margin: 0px 10px 16px;
  overflow: hidden;
  position: relative;
  width: 300px;
  display: flex;
  flex-direction: column;
}

div[id^="p|search|"] .feed-articulo-divcontenido{
  width: 100%
}

div[id^="p|search|"] .feed-articulo-divimg-articulo{
  width: 100%;
  height: 208px;
  overflow: hidden;
  position: relative;
}

div[id^="p|search|"] .feed-articulo-divtextos-articulo, div[id^="p|search|"] .feed-articulopro-divtextos-articulo{
  height: 42px;
  position: relative;
}

div[id^="p|search|"] .feed-articulopro-divtextos-articulo{
  display: flex;
  align-items: center;
}

div[id^="p|search|"] .feed-articulo-nombre-articulo, div[id^="p|search|"] .feed-articulopro-nombre-articulo{
  color: #333333;
  text-decoration: none;
  font-size: 17px;
  font-weight: bold;
  line-height: 18px;
  max-height: 38px;
  overflow: hidden;
  position: absolute;
  text-align: center;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
  padding: 0px 10px;
  box-sizing: border-box;
}

div[id^="p|search|"] .feed-articulopro-nombre-articulo{
  color: #8eb4b1;
  font-family: crimsonpro-semibold;
  font-size: 16px;
  line-height: 15px;
  right: 0px;
  text-align: left;
  text-transform: uppercase;
  width: calc(100% - 50px);
  max-height: 32px;
}

div[id^="p|search|"] .feed-articulo-desc-articulo, div[id^="p|search|"] .feed-articulopro-desc-articulo{
  display: none;
}
/* fin fichas articulo */

/* estilos fichas productos feed busqueda */
div[id^="p|search|"] .feed-producto-divimg{
  height: 208px;
}
/* estilos fichas productos feed busqueda */
/* Estilos feed fichas Busqueda */


/* Estilo publicidad en feed */
.buildad.feed{
  margin: 0px 10px 16px;
  float: left;
}
/* fin Estilo publicidad en feed */


/* Estilo para ficha newsletter - columna derecha */
.feed-newsletter-ficha{
  margin: 20px auto 10px;
}
/* fin Estilo para ficha newsletter */

/* icono seguir chef */
.icon-k7-seguir-chef:before{content: "\\e918";}
/* */



/* estilos feed recetarios */
div[id^="p|kiwi|recipebooks|"].feed-producto-ficha, div[id^="p|kiwirec|recipebooks|"].feed-producto-ficha{
  width: 300px;
  margin: 0px 10px 16px;
}
/* fin estilos feed recetarios */



/* estilo sombra blanquecina sobre fichas de contenido interno */
/* .general-container .shadow-gris */
/*
.shadow-gris{
  position: absolute;
  top: 0px;
  bottom: 0px;
  width: 100%;
  background-color: #ffffff;
  opacity: 0.8;
  z-index: 10;
}
*/

.feedficha-bloqueo {
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  right: 9px;
  top: 9px;
  width: 30px;
  height: 30px;
  background-color: var(--azul-kiwipro);
  border: 1px solid var(--azul-kiwipro);
  border-radius: 100%;
  z-index: 5;
}
/* estilo sombra blanquecina sobre fichas de contenido interno */`);
KL.loader.createCSS(`.feed-divarticulolarge .tools-container {
  left: inherit;
  right: 10px;
}


/* estilos slider top 10 */
/* estilos slider top 10 para tips */
div[id^="familiatips"] div[id^="p|kiwi|tipfamilia"], div[id^="clasificaciontips"] div[id^="p|kiwi|tipclasificacion"], div[id^="familiatips"] div[id^="p|crafto|tipfamilia"], div[id^="clasificaciontips"] div[id^="p|crafto|tipclasificacion"]{
  width: 145px;
  margin: 0px 4px;
  height: 222px;
}

div[id^="familiatips"] div[id^="feed-tip-divimg"], div[id^="clasificaciontips"] div[id^="feed-tip-divimg"]{
  height: 190px;
  width: 190px;
}

div[id^="familiatips"] .feed-tip-nombreficha, div[id^="clasificaciontips"] .feed-tip-nombreficha{
  font-size: 14px;
  max-height: 46px;
  line-height: 15px;
}

div[id^="familiatips"] hr, div[id^="clasificaciontips"] hr, div[id^="familiatips"] .feed-tip-nombrechef, div[id^="clasificaciontips"] .feed-tip-nombrechef{
  display: none;
}

div[id^="familiatips"] div[id^="feed-tip-rating"], div[id^="clasificaciontips"] div[id^="feed-tip-rating"]{
  margin: 0px auto;
  padding: 0px;
}

div[id^="familiatips"] .feed-tip-areanombrechef, div[id^="clasificaciontips"] .feed-tip-areanombrechef{
  display: none;
}

div[id^="home_top10"] div[id^="p|kiwi|tiphometop"], div[id^="home_top10"] div[id^="p|crafto|tiphometop"]{
  height: 222px;
  margin: 0px 4px;
  width: 145px;
}

div[id^="home_top10"] div[id^="p|kiwi|"] [class$="-rating"], div[id^="home_top10"] div[id^="p|crafto|"] [class$="-rating"]{
  padding: 3px 0px 0px;
}

div[id^="home_top10"] div[id^="p|kiwi|"] [class$="feed-tip-areanombrechef"], div[id^="home_top10"] div[id^="p|crafto|"] [class$="feed-tip-areanombrechef"]{
  display: none;
}
/* fin estilos slider top 10 para tips */


#home_top10 .recetaslider-ficha, #familiarecetas_top10 .recetaslider-ficha, #clasificacionrecetas_top10 .recetaslider-ficha, #clasificacionrecetas_top10 .compilacionrecetaslider-ficha, #clasificaciontips_top10 .tipslider-ficha{
  height: 222px;
}

#home_top10 .recetaslider-areanombreficha, #familiarecetas_top10 .recetaslider-areanombreficha, #clasificacionrecetas_top10 .recetaslider-areanombreficha, #home_top10 .tipslider-areanombreficha, #home_top10 .articuloslider-areanombreficha{
  height: 52px; 
}

#home_videos .compilacionrecetaslider-areanombreficha{
  height: 75px; 
}

/* nombre de ficha */
#home_top10 .recetaslider-nombreficha, #familiarecetas_top10 .recetaslider-nombreficha, #clasificacionrecetas_top10 .recetaslider-nombreficha, #home_top10 .tipslider-nombreficha, #home_videos .compilacionrecetaslider-nombreficha, #home_top10 .articuloslider-nombreficha{
  font-weight: bold;
  font-size: 14px;
  color: #000000;
  max-height: 42px;
}

#home_top10 .recetasliderpro-nombreficha{
  font-size: 15px;
  line-height: 14px;
  height: 100%;
  max-height: 28px;
}

/* rating */
#home_top10 .recetaslider-rating, #familiarecetas_top10 .recetaslider-rating, #clasificacionrecetas_top10 .recetaslider-rating, #home_top10 .tipslider-rating{
  display: table;
  padding: 3px 0px 0px;
}

#home_top10 div[id^="p|kiwi|"] [class$="-rating"], #home_top10 div[id^="p|crafto|"] [class$="-rating"], #familiarecetas_top10 div[id^="p|kiwi|"] [class$="-rating"], #clasificacionrecetas_top10 div[id^="p|kiwi|"] [class$="-rating"]{
  padding: 3px 0px 0px;
}
/* fin estilos slider top 10 */




#recipelist, #tiplist, #compilationlist, #compilationtiplist{
  text-align: center;
  padding: 0px 5px;
  box-sizing: border-box;
}




/* Estilos feed fichas Normal */
/* Estilo solo para los tips, ya que slider top usa la misma ficha que en feed normal */
div[id^="p|kiwi|home"].feed-tip-ficha, div[id^="tiplist"] div[id^="p|kiwi|tipclasificacion"], div[id^="tiplist"] div[id^="p|kiwi|tipfamilia"], div[id^="tiplist"] div[id^="p|kiwi|tipclasificacion"], div[id^="tiplist"] div[id^="p|kiwi|tiphome"], div[id^="tiplist"] div[id^="p|crafto|tiphome"], div[id^="tiplist"] div[id^="p|crafto|tipfamilia"], div[id^="tiplist"] div[id^="p|crafto|tipclasificacion"]{
  width: 46.77%;
}

div[id^="p|kiwi|home"].feed-tip-ficha, div[id^="tiplist"] div[id^="p|kiwi|tipfamilia"], div[id^="tiplist"] div[id^="p|kiwi|tipclasificacion"], div[id^="tiplist"] div[id^="p|kiwi|tiphome"], div[id^="tiplist"] div[id^="p|crafto|tiphome"], div[id^="tiplist"] div[id^="p|crafto|tipfamilia"], div[id^="tiplist"] div[id^="p|crafto|tipclasificacion"]{
  margin: 5px 5px 10px 5px;
  height: auto;
}

div[id^="tiplist"] div[id^="p|kiwi|tipclasificacion"].feed-newsletter-ficha, div[id^="tiplist"] div[id^="p|crafto|tipclasificacion"].feed-newsletter-ficha{
  margin: 5px auto 10px;
}

div[id^="p|kiwi|client"][class$="-ficha"], div[id^="p|crafto|client"][class$="-ficha"]{
  width: 46.77%;
  margin: 5px 5px 10px 5px;
  height: auto;
}

div[id^="p|kiwi|"][class$="-ficha"], div[id^="p|kiwirec|"][class$="-ficha"], div[id^="p|crafto|"][class$="-ficha"], div[id^="p|crafto|tipcompilaciones|"].feed-compilaciontip-ficha{
  height: auto;
}

#prorecipeprolist .feed-producto-ficha{
  width: 200px;
  margin: 20px 15px;
  float: left !important;
}

div[id^="p|kiwi|home|"].feed-compilacionreceta-ficha, div[id^="p|kiwi|home|"].feed-compilaciontip-ficha, div[id^="p|kiwi|recetacompilaciones|"].feed-compilacionreceta-ficha, div[id^="p|crafto|tipcompilaciones|"].feed-compilaciontip-ficha{
  margin: 5px 5px 10px 5px;
  overflow: hidden;
  width: 46.77%;
}

div[id^="p|kiwi|home|"].feed-compilacionreceta-ficha .feed-compilacionreceta-divimg, div[id^="p|kiwi|home|"].feed-compilaciontip-ficha .feed-compilaciontip-divimg{
  height: auto;
}

div[id^="p|kiwi|client|"] .feed-compilaciontip-divimg{
  height: auto !important;
}

div[id^="p|kiwi|client"][class$="feed-compilaciontip-ficha"] .compilaciontip-img{
  transform: none;
}

div[id^="p|kiwi|home|"].feed-compilaciontip-ficha .feed-compilaciontip-divimg, div[id^="p|crafto|tiphome|"].feed-compilaciontip-ficha .feed-compilaciontip-divimg{
  width: 100%;
}

div[id^="p|kiwi|"] [class$="-divimg"]{
  height: 194px;
}


div[id^="p|kiwi|recetacompilaciones|"].feed-compilacionreceta-ficha .feed-compilacionreceta-divimg, div[id^="p|crafto|tipcompilaciones|"].feed-compilaciontip-ficha .feed-compilaciontip-divimg{
  height: auto;
}

div[id^="p|crafto|"] .feed-compilaciontip-divimg .compilaciontip-img{
  transform: initial;
}

div[id^="p|kiwi|tiphome|"] .feed-divimagenficha img, div[id^="p|crafto|tiphome|"] .feed-divimagenficha img, div[id^="p|kiwi|tipfamilia|"] .feed-divimagenficha img, div[id^="p|crafto|tipfamilia|"] .feed-divimagenficha img{
  min-height: 145px;
}

div[id^="p|kiwi|"] [class$="-areanombreficha"], div[id^="p|kiwirec|"] [class$="-areanombreficha"], div[id^="p|crafto|"] [class$="-areanombreficha"]{
  height: 52px;
}

div[id^="p|kiwi|recipecompilations|"] .feed-compilacionreceta-divimg, div[id^="p|crafto|tipcompilations|"] .feed-compilaciontip-divimg{
  height: auto;
}

div[id^="p|crafto|tipcompilations|"] .feed-compilaciontip-divimg .compilaciontip-img{
  transform: initial;
}

/* div[id^="p|kiwi|probooks|"][class$="-ficha"], div[id^="p|kiwi|prorecipes|"][class$="-ficha"], div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada, div[id^="p|kiwi|procollections|"].coleccion-venta-ficha */
div[id^="p|kiwi|probooks|"][class$="-ficha"], div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada, div[id^="p|kiwi|procollections|"].coleccion-venta-ficha{
  float: none !important;
  margin: 5px 4px 10px 4px !important;
  height: auto;
}

div[id^="p|kiwi|procollections|"].coleccion-venta-ficha .coleccionventa-area{
  position: relative;
  top: initial;
  transform: initial;
  vertical-align: top;
  width: 100%;
}

div[id^="p|kiwi|probooks|"] .feed-producto-areanombreficha, div[id^="p|kiwi|probooks|"] .feed-producto-descarga, div[id^="p|kiwi|prorecipes|"] .feed-producto-areanombreficha, div[id^="p|kiwi|prorecipes|"] .feed-producto-descarga{
  display: none;
}

/* estilos fichas recetas slider pro*/
.pro-slider-fichaspro div[id^="p|kiwi|probooks|"].feed-producto-ficha, .pro-slider-fichaspro div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada, .pro-slider-fichaspro div[id^="p|kiwi|procollections|"].coleccion-venta-ficha{
  width: 145px !important;
  height: auto;
  margin: 10px 7px !important;
  border-radius: 5px;
}

.pro-slider-fichaspro div[id^="p|kiwi|probooks|"].feed-producto-ficha .coleccion-venta-div-img-dot, .pro-slider-fichaspro div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada .coleccion-venta-div-img-dot{
  display: none;
}

.pro-slider-fichaspro div[id^="p|kiwi|probooks|"].feed-producto-ficha .coleccion-venta-img-portada, .pro-slider-fichaspro div[id^="p|kiwi|procollections|"].coleccion-venta-soloportada .coleccion-venta-img-portada{
  position: relative !important;
}

.pro-slider-fichaspro .feed-receta-ficha{
  width: 145px !important;
  height: 222px !important;
  margin: 0px 4px !important;
}

.pro-slider-fichaspro .feed-divimagenficha{
  width: 145px !important;
  height: 145px !important;
}

.pro-slider-fichaspro .feed-receta-ficha img{
  min-width: auto;
}

.pro-slider-fichaspro .feed-receta-nombrechef{
  display: none;
}
/* fin estilos fichas recetas slider pro*/

/* estilos fichas donde vienen cosas revueltas de kiwipro en el home */
.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-producto-ficha{
  width: 145px !important;
  margin: 0px 4px !important;
  height: 222px;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha:first-child, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-receta-ficha:first-child{
  margin: 0px 4px !important;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"] [class$="-areanombreficha"], .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-nombre-articulo{
  height: 62px;
  max-height: none;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulo-desc-articulo{
  display: none;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulo-divtextos-articulo{
  height: 62px;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"] .feed-recetapro-areanombreficha .feed-receta-nombreficha-centrado, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-nombre-articulo{
  width: 100% !important;
  height: 62px;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"] .feed-recetapro-areanombreficha .feed-recetapro-icon, .home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-icon{
  margin: 0px 0px 0px 6px !important;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulopro-area-nombre-articulo{
  width: calc(100% - 26px) !important;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulo-clasificacion-articulo{
  height: auto;
  border: 0px;
  margin: 3px 0px 0px;
  position: relative;
  bottom: initial;
}

.home-cont-sliderpro div[id^="p|kiwi|pro|"].feed-articulo-ficha .feed-articulo-area-nombre-clasificacion{
  padding: 0px;
  padding: 0px;
  margin: 0px;
  transform: translateX(-50%) translateY(-50%);
  left: 50%;  
}

#home-cont-kiwipro.home-cont-sliderpro div[id^="p|kiwi|pro|"] [class$="-areanombreficha"] .feed-recetapro-icon{
  width: 20px !important;
  height: 20px !important;
  margin: 0px 0px 0px 6px !important;
  font-size: 12px !important;
}

#home-cont-kiwipro.home-cont-sliderpro div[id^="p|kiwi|pro|"] [class$="-areanombreficha"] [class$="-nombrecentrado"]{
  max-height: 43px !important;
  font-size: 14px !important;
  width: calc(100% - 26px) !important;
  padding: 0px 10px 0px 6px !important;
}
/* fin estilos fichas donde vienen cosas revueltas de kiwipro en el home */

div[id^="p|kiwi|"] .feed-compilaciontip-areanombreficha{
  border-bottom: 1px solid #f4f6f4;
}

div[id^="p|kiwi|"] [class$="-nombrecentrado"], .home-tiplist [class$="-nombrecentrado"], div[id^="p|crafto|"] [class$="-nombrecentrado"], div[id^="p|kiwi|"] .feed-compilacionreceta-areanombreficha .feed-compilacionreceta-nombrecentrado{
  max-height: 46px;
  line-height: 15px;
}

div[id^="p|crafto|"] [class$="-nombrecentrado"]{
  font-family: poppins-semibold;
  font-size: 12px !important;
  font-weight: normal !important;
  color: #333333;
  letter-spacing: 0.5px;
  line-height: 15px;
}

div[id^="p|crafto|"] .feed-tip-nombrechef-duenotip{
  font-family: poppins-light !important;
  font-size: 11px !important;
  letter-spacing: 0.5px;
  color: var(--color-texto-base) !important;
}

div[id^="p|kiwi|"] .feed-compilaciontip-areanombreficha .feed-compilacionreceta-nombrecentrado, div[id^="p|crafto|"] .feed-compilaciontip-areanombreficha .feed-compilacionreceta-nombrecentrado{
  font-weight: bold;
  color: #333333;
  line-height: 15px;
  font-size: 14px;
  letter-spacing: 0px;
}

div[id^="p|kiwi|"] .feed-compilacionreceta-areanombreficha .feed-compilacionreceta-nombrecentrado, div[id^="p|kiwi|"] .feed-compilaciontip-areanombreficha .feed-compilaciontip-nombrecentrado{
  color: #333333;
  font-size: 14px;
  font-weight: bold;
  line-height: 15px;
}

div[id^="familiatips"] [class$="feed-tip-nombrecentrado"], div[id^="clasificaciontips"] [class$="feed-tip-nombrecentrado"]{
  max-height: 42px;
  text-transform: uppercase;
  line-height: 14px;
}

#home_top10 div[id^="p|kiwi|tiphometop|"] .feed-tip-nombrecentrado .feed-tip-titulonombre, #home_top10 div[id^="p|crafto|tiphometop|"] .feed-tip-nombrecentrado .feed-tip-titulonombre{
  text-transform: uppercase;
}

/* div[id^="p|kiwi|"] .feed-compilacionreceta-descripcion, div[id^="p|kiwi|"] .feed-compilaciontip-descripcion, div[id^="p|kiwi|"] .feed-producto-descripcion */

div[id^="p|kiwi|"] [class$="-descripcion"], div[id^="p|crafto|"] [class$="-descripcion"]{
  height: 48px;
}
  

div[id^="p|kiwi|"] [class$="-titulo-seccion"]{
  display: none;
}

div[id^="p|kiwi|"] [class$="-rating"], div[id^="p|kiwirec|"] [class$="-rating"]{
  /* padding: 8px 0px 0px; */
  padding: 0px;
}

div[id^="p|kiwi|"] [class$="feed-ficha-tip-rating"], div[id^="p|crafto|"] [class$="feed-ficha-tip-rating"]{
  padding: 0px;
}

div[id^="familiatips"] .feed-ficha-tip-rating, div[id^="clasificaciontips"] .feed-ficha-tip-rating{
  display: table;
  padding: 3px 0px 0px;
}

div[id^="p|kiwi|"] [class$="-nombrechef"]{
  bottom: 0px;
}


#home_videos div[id^="p|crafto|tiphomecompilacion"]{
  display: table;
  height: auto;
  margin: 0px 4px;
  width: 145px;
}

#home_videos div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-areanombreficha{
  height: 75px;
}

#home_videos div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-divimg{
  height: 145px;
  width: 145px;
}


#home_videos div[id^="p|crafto|tiphomecompilacion"] .feed-compilaciontip-areanombreficha .feed-compilaciontip-nombrecentrado{
  color: #333333;
  font-size: 14px;
  font-weight: bold;
  max-height: 42px;
  text-transform: uppercase;
}


/* estilos feed normal articulos */
div[id^="p|kiwi|"][class$="feed-articulo-ficha"], div[id^="p|kiwirec|"][class$="feed-articulo-ficha"], div[id^="p|crafto|"][class$="feed-articulo-ficha"]{
  background-color: #ffffff;
  width: 46.77%;
  float: left;
  margin: 5px 5px 10px 5px;
  position: relative;
}

div[id^="p|kiwi|"] [class$="-divimg-articulo"], div[id^="p|kiwirec|"] [class$="-divimg-articulo"], div[id^="p|crafto|"] [class$="-divimg-articulo"]{
  height: auto;
  width: 100%;
}

div[id^="p|kiwi|"] .feed-articulo-divtextos-articulo, div[id^="p|kiwirec|"] .feed-articulo-divtextos-articulo, div[id^="p|crafto|"] .feed-articulo-divtextos-articulo{
  height: auto;
  position: relative;
}

div[id^="p|kiwi|"] .feed-articulo-nombre-articulo, div[id^="p|kiwirec|"] .feed-articulo-nombre-articulo, div[id^="p|crafto|"] .feed-articulo-nombre-articulo{
  position: relative;
  top: initial;
  transform: initial;
  height: 52px;
  max-height: none;
  font-size: 14px;
  line-height: 15px;
  padding: 0px;
}

div[id^="p|kiwi|"] .feed-articulo-nombre-articulo, div[id^="p|kiwirec|"] .feed-articulo-nombre-articulo, div[id^="p|crafto|"] .feed-articulo-nombre-articulo{
  height: 35px;
}

div[id^="p|kiwi|"] .feed-articulo-area-nombre-articulo, div[id^="p|kiwirec|"] .feed-articulo-area-nombre-articulo, div[id^="p|crafto|"] .feed-articulo-area-nombre-articulo{
  box-sizing: border-box;
  color: #333333;
  font-size: 14px;
  font-weight: bold;
  line-height: 15px;
  max-height: 46px;
  overflow: hidden;
  padding: 0px 10px;
  position: absolute;
  text-align: center;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
}

div[id^="p|kiwi|"] .feed-articulo-area-nombre-articulo, div[id^="p|kiwirec|"] .feed-articulo-area-nombre-articulo, div[id^="p|crafto|"] .feed-articulo-area-nombre-articulo{
  max-height: 31px;
}

div[id^="p|kiwi|"] .feed-articulo-nombre-autor, div[id^="p|kiwirec|"] .feed-articulo-nombre-autor, div[id^="p|crafto|"] .feed-articulo-nombre-autor{
  display: none !important;
}

div[id^="p|kiwi|"] .feed-articulo-area-rating, div[id^="p|kiwirec|"] .feed-articulo-area-rating, div[id^="p|crafto|"] .feed-articulo-area-rating{
  display: none !important;
/*
  position: relative;
  bottom: initial;
  left: initial;
  display: table !important;
  margin: 3px auto;
*/
}
/* fin estilos feed normal articulos */


/* estilos home fichas notas blog */
#home_notasblog div[id^="p|kiwirec|articlehome|"].feed-articulo-ficha{
  width: 145px;
  height: auto;
  margin: 0px 4px;
}

#home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-divimg-articulo{
  height: auto;
}

#home_notasblog div[id^="p|kiwirec|articlehome|"] .feed-articulo-clasificacion-articulo{
  display: none;
}

#home_notasblog .feed{
  margin-top: 10px;
  box-sizing: border-box;
  padding: 0px 10px;
  position: relative;
}

#home_notasblog div[id^="p|kiwi|articlehome|"].feed-articulo-ficha{
  background-color: #ffffff;
  width: 100%;
  /*height: 125px;*/
  height: 140px;
  float: none;
  position: relative;
  margin: 10px 15px 0px 0px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"]:first-child .feed-articulo-ficha{
  margin: 0px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-divimg-articulo{
  /*
  height: 125px;
  width: 125px;
  */
  height: 140px;
  width: 140px;
  position: relative;
  float: left;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion{
  background-color: #8cc63e;
  box-sizing: border-box;
  color: #ffffff;
  font-size: 9px;
  left: 0px;
  letter-spacing: 1px;
  /*max-width: 80px;*/
  max-width: 95px;
  padding: 4px 9px;
  position: absolute;
  text-transform: uppercase;
  top: 5px;
  display: block !important;
  word-break: break-word;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_3, #home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_11{
  background-color: #9ec410;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_30{
  background-color: #f05d7f;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_1{
  background-color: #28d9ff;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_44{
  background-color: #2e94ba;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_20{
  background-color: #efc950;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_54{
  background-color: #f39041;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-titulo-nombreseccion.id_tema_25{
  background-color: #ca5dde;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-divtextos-articulo{
  box-sizing: border-box;
  position: relative;
  float: left;
  /*width: calc(100% - 125px);*/
  width: calc(100% - 140px);
  /*height: 125px;*/
  height: 140px;
  /*padding: 12px 14px;*/
  overflow: hidden;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-divtextos-articulo .feed-articulo-area-divtextos-articulo{
  box-sizing: border-box;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  padding: 0px 14px;
  width: 100%;
}

#home_notasblog div[id^="p|kiwi|articlehome|"][class$="-ficha"] .tools-container{
  /*left: 90px;*/
  left: 105px;
  top: 5px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-nombre-articulo{
    box-sizing: border-box;
    line-height: 16px;
    overflow: hidden;
    padding: 0px;
    position: relative;
    text-align: left;
    text-transform: none;
    top: initial;
    transform: initial;
    width: 100%;
    font-weight: bold;
    /*font-size: 14px;*/
    font-size: 15px;
    color: #000000;
    max-height: 32px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-nombre-articulo{
  width: 100% !important;
  height: auto;
  flex: auto;
  margin: 0px 0px 12px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-icon{
  margin: 0px !important;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-area-nombre-articulo{
  max-height: none;
  text-align: left;
  padding: 0px;
  position: relative;
  top: initial;
  transform: initial;
  line-height: 16px;
  font-size: 15px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulopro-area-nombre-articulo{
  max-height: 35px;
  font-size: 17px;
  line-height: 17px;
  width: calc(100% - 20px);
  padding: 0px 0px 0px 6px;
}



#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-nombre-autor{
display: block !important;
    box-sizing: border-box;
    padding: 0px;
    text-align: left;
    color: #aaaaaa;
    font-family: 'source sans pro';
    font-style: italic;
    font-size: 11px;
    height: 15px;
    margin: 6px 0px 0px;
    overflow: hidden;
    position: relative;
    bottom: initial;
    width: 100%;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-desc-articulo-home{
  display: block !important;
  height: 100%;
  margin: 6px 0px 0px;
  position: relative;
  font-size: 12px;
  text-align: left;
  line-height: 14px;
  color: #333;
  max-height: 70px;
  overflow: hidden;
  padding: 0px;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-area-desc-articulo{
  position: relative;
  transform: initial;
  text-align: left;
  padding: 0px;
  font-size: 12px;
  line-height: 14px;
  max-height: 70px;
  height: auto;
  color: #333333;
  top: initial;
}

#home_notasblog div[id^="p|kiwi|articlehome|"] .feed-articulo-clasificacion-articulo{
  display: none;
}
/* estilos home fichas notas blog */

/* estilos home fichas nota tip */
#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"]{
  float: none !important;
  position: relative;
  background-color: #ffffff;
  width: 100%;
  margin: 0px 15px 0px 0px;
  padding: 0px 0px 20px 0px;  
}

#home_tips div[id^="p|kiwi|tiphome|"] .feed-divimagenficha{
  position: relative;
  width: 100%;
  /*height: 40vh;*/
  height: 30vh;
  overflow: hidden;
}

#home_tips div[id^="p|kiwi|tiphome|"] .feed-divimagenficha img{
  position: absolute !important;
  left: 0px;
  top: 35%;
  transform: translateY(-50%);
}

.feed-divarticulolarge .tools-container, #home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .tools-container{
  left: auto;
  right: 10px;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-areanombreficha{
  float: none;
  width: 100%;
  height: auto;
  position: relative;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-nombrecentrado{
  position: relative !important;
  text-align: left !important;
  line-height: 20px;
  max-height: none;
  overflow: hidden;
  color: #333 !important;
  font-size: 18px !important;
  font-weight: bold;
  text-transform: uppercase;
  padding: 15px 20px 0px !important;
  transform: initial !important;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-ficha-tip-rating, #home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-areanombrechef{
  display: none !important;
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-descripcionficha{
box-sizing: border-box;
    color: #333333;
    font-size: 14px;
    font-weight: normal;
    line-height: 17px;
    max-height: none;
    overflow: hidden;
    margin: 5px 0px 0px;
    padding: 0px;
    position: relative;
    width: 100%;
    text-align: left;
    display: block !important;
    text-transform: initial;  
}

#home_tips div[id^="p|kiwi|tiphome|"][class$="-ficha"] .feed-tip-ficha-linkvertip{
  font-size: 14px;
  font-weight: bold;
  color: #8cc63e;
  text-align: left;
  margin: 10px 0px 0px;
  padding: 0px 20px;
  line-height: 22px;
  display: block !important;
}
/* fin estilos home fichas nota tip */

/* estilos home fichas te cuida */
#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha{
  margin: 0px 4px;
  width: 145px;
  height: 222px;
}

/*
#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-divcontenido{
  height: 100%;
}
*/

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-divimg-articulo{
  height: 145px;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-nombre-articulo{
  line-height: 14px;
  max-height: 42px;
  top: 44%;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-area-nombre-articulo{
  position: relative;
  top: initial;
  line-height: 14px;
  padding: 0px;
  transform: initial;
  max-height: 42px;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulopro-nombre-articulo{
  width: 100%;
  position: absolute;
  top: 44%;
  transform: translateY(-50%);
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-area-rating{
  box-sizing: border-box;
  position: relative;
  bottom: initial;
  transform: initial;
  left: initial;
  display: table !important;
  margin: -5px auto 0px;
  padding: 0px;
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulopro-area-nombre-articulo{
max-height: 44px;
    font-size: 14px;
    width: calc(100% - 30px);
}

#home_tecuidalist div[id^="p|kiwi|articuloclasificacion|"].feed-articulo-ficha .feed-articulo-clasificacion-articulo{
  display: none;
}
/* fin estilos home fichas te cuida */
/* Fin Estilos feed fichas Normal */


/* Estilos feed fichas Busqueda */
#searchlist div[id^="p|search|"][class$="-ficha"], .searchlist-muestra{
  height: auto;
}

#searchlist .coleccion-venta-soloportada{
  height: auto !important;
  margin: 5px 5px 10px 5px !important;
  width: 46.77% !important;
}

/* estilos feed fichas busqueda tips */
div[id^="p|search|"].feed-tip-ficha{
  width: 46.77%;
  margin: 5px 5px 10px 5px;
}

div[id^="p|search|"] [class$="feed-tip-nombrecentrado"]{
  line-height: 15px;
}
/* fin estilos feed fichas busqueda tips */

div[id^="p|search|"][class$="-ficha"], .searchlist-muestra{
  height: auto;
}

div[id^="p|search|"] [class$="-divimg"]{
  height: 185px;
}

div[id^="p|search|"] [class$="-areanombreficha"]{
  height: 40px;
}

#searchlist .feed-coleccion-venta-areanombreficha{
  display: block !important;
  height: 60px;
}

#searchlist .feed-coleccion-venta-aredescficha{
  display: block !important;
}

div[id^="p|search|"] .feed-producto-areanombreficha{
  height: 62px;
}

div[id^="p|search|"] .feed-compilacionreceta-areanombreficha, div[id^="p|search|"] .feed-compilaciontip-areanombreficha{
  height: 46px;
}

div[id^="p|search|"] .feed-compilacionreceta-descripcion, div[id^="p|search|"] .feed-compilaciontip-descripcion{
  display: block;
  height: 46px;
}

div[id^="p|search|"] [class$="-nombrecentrado"]{
  max-height: 30px;
}

div[id^="p|search|"] [class$="-nombrecentrado"] .feed-tip-area-nombrefichapro .feed-receta-nombreficha-centrado{
  max-height: 31px !important;
}

div[id^="p|search|"] .feed-compilaciontip-areanombreficha .feed-compilacionreceta-nombrecentrado{
  color: #333333;
  font-size: 14px;
  font-weight: bold;
  line-height: 15px;
  max-height: 30px;
}

div[id^="p|search|"] [class$="-titulo-seccion"]{
  display: block;
}

#searchlist .coleccion-venta-soloportada .feed-coleccion-venta-thumb-titulo-seccion{
  display: block !important;
}

div[id^="p|search|"] [class$="-rating"]{
  padding: 4px 0px 0px;
}

div[id^="p|search|"] [class$="-nombrechef"]{
  /*bottom: 3px;*/
  bottom: 0px;
}

/* fichas articulo */
div[id^="p|search|"].feed-articulo-ficha, div[id^="p|search|"].feed-compilacionreceta-ficha, div[id^="p|kiwi|recipecompilations|"].feed-compilacionreceta-ficha, div[id^="p|crafto|tipcompilations|"].feed-compilaciontip-ficha, div[id^="p|search|"].feed-compilaciontip-ficha{
  width: 46.77%;
  margin: 5px 5px 10px 5px;
}

div[id^="p|search|"] .feed-articulo-divimg-articulo, div[id^="p|search|"] .feed-compilacionreceta-divimg, div[id^="p|search|"] .feed-compilaciontip-divimg{
  width: 100%;
  /*
  height: 25.5vh;
  overflow: hidden;
  */
  position: relative;
  height: auto;
}

div[id^="p|search|"] .feed-compilaciontip-divimg .compilaciontip-img{
  transform: initial;
}

div[id^="p|search|"] .feed-articulo-divimg-articulo img{
/*
  position: absolute;
  width: auto !important;
  height: 100%;
  top: 50%;
  left: 50%;
  transform: translateX(-50%) translateY(-50%);
*/
  vertical-align: top;
}

div[id^="p|search|"] .feed-articulo-titulo-seccion{
position: relative;
    text-align: center;
    text-transform: uppercase;
    padding: 5px;
    color: #ffffff;
    font-size: 16px;
    height: 26px;
    width: 100%;
}

div[id^="p|search|"] .feed-articulo-divtextos-articulo{
  /* height: 70px; */
  height: auto;
}

div[id^="p|search|"] .feed-articulo-nombre-articulo, div[id^="p|search|"] .feed-articulopro-nombre-articulo, div[id^="p|kiwi|"] .feed-articulopro-nombre-articulo{
  position: relative;
  top: initial;
  transform: initial;
  padding: 0px;
  overflow: initial;
  /*height: 42px;*/
  height: 39px;
  max-height: none;  
}

div[id^="p|kiwi|"] .feed-articulopro-nombre-articulo{
  height: 52px;
}

div[id^="p|search|"] .feed-articulopro-nombre-articulo, div[id^="p|kiwi|"] .feed-articulopro-nombre-articulo{
  display: flex;
  align-items: center;
  width: auto;
}

div[id^="p|search|"] .feed-articulopro-icon, div[id^="p|kiwi|"] .feed-articulopro-icon{
  width: 20px;
  height: 20px;
  margin: 0px 0px 0px 6px;
  font-size: 12px;
}

div[id^="p|search|"] .feed-articulo-area-nombre-articulo, div[id^="p|search|"] .feed-articulopro-area-nombre-articulo, div[id^="p|kiwi|"] .feed-articulopro-area-nombre-articulo{
  color: #333333;
  font-size: 14px;
  font-weight: bold;
  line-height: 15px;
  max-height: 30px;
  overflow: hidden;
  position: absolute;
  text-align: center;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
  padding: 0px 10px;
  box-sizing: border-box;
}

div[id^="p|search|"] .feed-articulopro-area-nombre-articulo, div[id^="p|kiwi|"] .feed-articulopro-area-nombre-articulo{
  right: 0px;
  width: calc(100% - 26px);
  text-align: left;
  color: #8eb4b1;
  font-family: 'crimsonpro-semibold';
  font-size: 14px;
  text-transform: uppercase;
  padding: 0px 10px 0px 6px;
  line-height: 14px;
  max-height: 28px;
}

div[id^="p|kiwi|"] .feed-articulopro-area-nombre-articulo{
  max-height: 43px;
  font-size: 14px;  
}

div[id^="p|search|"] .feed-articulo-desc-articulo, div[id^="p|kiwi|"] .feed-articulo-desc-articulo, div[id^="p|kiwirec|"] .feed-articulo-desc-articulo, div[id^="p|crafto|"] .feed-articulo-desc-articulo{
display: block;
    box-sizing: border-box;
    overflow: hidden;
    height: 30px;
    position: relative;  
}

div[id^="p|search|"] .feed-articulo-area-desc-articulo, div[id^="p|kiwi|"] .feed-articulo-area-desc-articulo, div[id^="p|kiwirec|"] .feed-articulo-area-desc-articulo, div[id^="p|crafto|"] .feed-articulo-area-desc-articulo{
color: #777777;
    font-weight: normal;
    font-size: 11px;
    line-height: 12px;
    max-height: 24px;
    overflow: hidden;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    text-align: center;
    padding: 0px 10px 2px;
    width: 100%;
    box-sizing: border-box;
}

div[id^="p|search|"] .feed-articulo-clasificacion-articulo, div[id^="p|kiwi|"] .feed-articulo-clasificacion-articulo, div[id^="p|kiwirec|"] .feed-articulo-clasificacion-articulo, div[id^="p|crafto|"] .feed-articulo-clasificacion-articulo{
  position: relative;
  /*height: 22px;*/
  height: 23px;
  border-top: 1px solid #f4f6f4;
}

div[id^="p|kiwi|"] .feed-articulo-clasificacion-articulo, div[id^="p|kiwirec|"] .feed-articulo-clasificacion-articulo, div[id^="p|crafto|"] .feed-articulo-clasificacion-articulo{
  height: 30px;
  margin: 5px 0px 0px;
}

div[id^="p|search|"] .feed-articulo-area-nombre-clasificacion, div[id^="p|kiwi|"] .feed-articulo-area-nombre-clasificacion, div[id^="p|kiwirec|"] .feed-articulo-area-nombre-clasificacion, div[id^="p|crafto|"] .feed-articulo-area-nombre-clasificacion{
  color: #aaaaaa;
  position: absolute;
  box-sizing: border-box;
  padding: 0px 10px;
  width: 100%;
  text-align: center;
  font-size: 11px;
  top: 50%;
  line-height: 12px;
  max-height: 12px;
  overflow: hidden;
  transform: translateY(-50%);
  text-transform: uppercase;
}

div[id^="p|kiwi|"] .feed-articulo-area-nombre-clasificacion, div[id^="p|kiwirec|"] .feed-articulo-area-nombre-clasificacion, div[id^="p|crafto|"] .feed-articulo-area-nombre-clasificacion, div[id^="p|search|"] .feed-articulo-area-nombre-clasificacion{
  font-style: italic;
  text-transform: none;
}
/* fin fichas articulo */
/* Estilos feed fichas Busqueda */


/* Estilo publicidad en feed */
.buildad.feed{
  margin: 5px auto 10px;
}

.buildad.feed{
  float: none;
  margin: 5px auto 10px;
  padding: 5px 0px 0px;
  clear: both;
}
/* fin Estilo publicidad en feed */


/* Estilo para ficha newsletter - feed */
div[id^="tiplist"] div[id^="p|kiwi|tipfamilia"].feed-newsletter-ficha, div[id^="recipelist"] div[id^="p|kiwi|home"].feed-newsletter-ficha, div[id^="tiplist"] div[id^="p|kiwi|tiphome"].feed-newsletter-ficha, div[id^="tiplist"] div[id^="p|crafto|tiphome"].feed-newsletter-ficha, div[id^="tiplist"] div[id^="p|crafto|tipfamilia"].feed-newsletter-ficha{
  margin: 5px auto 10px;
}
/* fin Estilo para ficha newsletter */


/* estilos para fichas de articulos del blog */
.feed-articulo-tema{
  color: #aaaaaa;
}

/* nutricion */
.feed-articulo-tema.id_tema_11{
  color: #9ec410;
}

/* bebidas */
.feed-articulo-tema.id_tema_30{
  color: #f05d7f;
}

/* comida vegana */
.feed-articulo-tema.id_tema_1{
  color: #28d9ff;
}

/* dieta */
.feed-articulo-tema.id_tema_44{
  color: #2e94ba;
}

/* reposteria */
.feed-articulo-tema.id_tema_20{
  color: #efc950;
}

/* tips cocina */
.feed-articulo-tema.id_tema_54{
  color: #f39041;
}

/* tips consejos */
.feed-articulo-tema.id_tema_25{
  color: #ca5dde;
}

.feed-clasificacionarticulo-tema{
  background-color: #24b2b3;
}

/* nutricion */
.feed-clasificacionarticulo-tema.id_tema_11{
  color: #9ec410;
}

/* bebidas */
.feed-clasificacionarticulo-tema.id_tema_30{
  color: #f05d7f;
}

/* comida vegana */
.feed-clasificacionarticulo-tema.id_tema_1{
  color: #28d9ff;
}

/* dieta */
.feed-clasificacionarticulo-tema.id_tema_44{
  color: #2e94ba;
}

/* reposteria */
.feed-clasificacionarticulo-tema.id_tema_20{
  color: #efc950;
}

/* tips cocina */
.feed-clasificacionarticulo-tema.id_tema_54{
  color: #f39041;
}

/* tips consejos */
.feed-clasificacionarticulo-tema.id_tema_25{
  color: #ca5dde;
}

/* fin estilos para fichas de articulos del blog */`);
KL.loader.createCSS(`/* slider */

.slider
{
  position: relative;
  overflow: hidden;
  height: auto;
}

.slider-container
{
  width: 100000px;
  height: auto;
  position: relative;
  left: 0;
  transition: all 1s ease 0s;
}




.slider-container.noanim
{
  transition: none;
}


.slider-container:after
{
  content: "";
  clear: both;
}

.icon-k7-slider-previous:before{content: "\\e948";}
.icon-k7-slider-next:before{content: "\\e947";}

.slider-button
{
  position: absolute;
  width: 17px;
  height: 18px;
  border-radius: 50%;
  cursor: pointer;
  background-color: rgba(255, 255, 255, 0.8);
  z-index: 15;
  padding: 7px;
  padding-left: 8px;
  top: 50%;
  margin-top: -20px;
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
  transition: opacity 0.2s ease 0s;
  opacity: 0.8;
  font-size: 16px;
  font-weight: 700;
  color: #aaa;
}

.slider-button.left
{
  left: 5px;
}

.slider-button.left:hover
{
  color: #333;
}

.slider-button.right
{
  right: 5px;
}

.slider-button.right:hover
{
  color: #333;
}
`);
KL.loader.createCSS(``);
KL.loader.createCSS(`.recipelist-button {
  background-color: #ffffff;
  border-radius: 2px;
  color: #222;
  cursor: pointer;
  float: left;
  font-size: 1.1em;
  font-weight: normal;
  margin: 5px 10px;
  padding: 14px;
  text-align: center;
  width: 29.45%;
}

.home-recipelist-pro .recipelist-button.on, .familia-recipelist-pro .recipelist-button.on, .clasificacion-recipelistpro .recipelist-button.on{
  background-color: var(--azul-kiwipro);
  color: white;
  position: relative;
}

.recipelist-button.on {
  background-color: var(--verde-kiwi);
  color: white;
  position: relative;
}

/*
.recipelist-button.on:after {
  content: '';
  position: absolute;
  bottom: -10px;
  left: 50%;
  margin-left: -15px;
  width: 0;
  height: 0;
  border-top: solid 10px #8CC63E;
  border-left: solid 10px transparent;
  border-right: solid 10px transparent;
}
*/

.icon-k7-recipelist-seemore:before{content: "\\e956";}
`);
KL.loader.createCSS(`.recipelist-areabotones{
  padding: 0px 5px;
  box-sizing: border-box;
}

.recipelist-button {
    background-color: #ffffff;
    border-radius: inherit;
    color: #222;
    cursor: pointer;
    float: left;
    font-size: 12px;
    font-weight: normal;
    margin: 5px 4px;
    padding: 14px 5px;
    text-align: center;
    width: 30.7%;
    box-sizing: border-box;
}
`);
WA.templates['errorpage'] = WA.templater`
<div style="width: 100%; text-align: center;">
  <div class="buildad" data-id="mbillboard" data-position="relative"></div>
</div>

<div style="align-items: center; background-color: #ffffff; box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-evenly; margin: 20px auto; padding: 30px; position: relative; width: 100%;">
  <img class="analyzethis" data-src="${['eval','KL.cdn7domains']}/img/static/icono-olla-error.svg" data-width="155" data-height="93" data-webp="1" alt="Error 404" title="Error 404" style="background-image: none; width: 155px; margin: 20px 0px 0px; transform: translateX(18%); background-color: #ffffff;" />
  
  <div style="position: relative; text-align: center; margin: 20px auto 0px; width: 86%;">
    <h1 style="color: #777777; font-size: 19px; font-weight: bold; margin: 0px;">Error 404</h1>
    
    <h2 style="color: #333333; font-size: 24px; font-weight: bold; line-height: 32px;">¡Ups! Algo salió mal en la cocina</h2>
    
    <p style="color: #777777; font-size: 14px; line-height: 18px;">La información que buscas no se encuentra disponible, nuestros chefs ya están trabajando en ello.</p>
  </div>
</div>

<div id="error_categories" style="margin: 30px auto 0px; position: relative; width: 100%;">
  <h2 style="color: #333333; font-size: 15px; font-weight: lighter; letter-spacing: 0.3px; text-transform: uppercase; text-align: center;">Te damos más ideas de qué cocinar hoy</h2>
  
  <div style="background-color: #ffffff; box-sizing: border-box; display: flex; flex-wrap: wrap; justify-content: space-evenly; margin: 10px 0px 0px; padding: 10px; position: relative; width: 100%;">
    ${['loop', 'categories','error_clasificaciones']}


  </div>
</div>

<div id="error_recipelist" style="margin-top: 20px;">
  <div style="color: #333333; font-size: 14px; font-weight: lighter; text-transform: uppercase; letter-spacing: 0.3px; padding: 0px 15px; box-sizing: border-box; text-align: center;">Ver recetas por:</div>
  ${['call', 'recipelist','recipelist']}
  <div style="clear: both;"></div>
</div>
`;
WA.templates['error_clasificaciones'] = WA.templater`

    <div style="display: flex; flex-direction: column; margin: 5px; min-height: 136px; text-align: center; width: 90px;">
      <a href="${'path'}" style="color: #989898; font-size: 12px; letter-spacing: 1px; text-decoration: none; text-transform: uppercase;">
        <img class="analyzethis" data-src="/clasificacion/${'key'}/${['cond', 'icon','error_clasificaciones_icon']}" data-width="120" data-height="120" data-webp="1" style="margin: 0px 0px 5px; width: 100%;" />
        ${'shorttitle'}
      </a>
    </div>


`;
WA.templates['error_clasificaciones_icon'] = WA.templater`
${'icon'}`;
WA.templates['error_clasificaciones_icon.none'] = WA.templater`
${'image'}`;
WA.templates['recipefamilydata'] = WA.templater`
<h1 style="color: #333333; font-size: 16px; font-weight: bold; text-transform: uppercase; text-align: center;">${'h1title'}</h1>
<div style="color: #777777; font-size: 14px; line-height: 21px; margin: 12px 0px 20px;">${'description'}</div>
`;
WA.templates['gallery'] = WA.templater`
${['cond', 'datachefconectado>client>p','gallerypro']}



<div style="clear: both;"></div>












































































`;
WA.templates['gallery_slide.none'] = WA.templater`
`;
WA.templates['gallerylink1'] = WA.templater`

        <a href="${'link1'}" class="gallery-item-link" style="margin: 3px 0px;">
          ${'titlelink1'}
        </a>
`;
WA.templates['gallerylinkpro6'] = WA.templater`

        <a href="${'link6'}" class="gallery-item-linkpro" style="margin: 3px 0px;">
          ${'titlelink6'}
        </a>
`;
WA.templates['gallerylinkpro6.none'] = WA.templater`
`;
WA.templates['linkgallery.none'] = WA.templater`

          <div class="gallery-titlelink">
            ${'titlelink1'}
          </div>
`;
WA.templates['gallerylink'] = WA.templater`

        <a href="${'link1'}">
        <div class="gallery-cont-monolink">
          ${['cond', 'datachefconectado>client>p','linkgallery']}
        </div>
          
        </a>
`;
WA.templates['gallerylinkpro2.none'] = WA.templater`
`;
WA.templates['gallerylink4.none'] = WA.templater`
`;
WA.templates['gallerylink2'] = WA.templater`

        <a href="${'link2'}" class="gallery-item-link" style="margin: 3px 0px;">
          ${'titlelink2'}
        </a>
`;
WA.templates['gallerylink3.none'] = WA.templater`
`;
WA.templates['gallerylink2.none'] = WA.templater`
`;
WA.templates['gallerylink5'] = WA.templater`

        <a href="${'link5'}" class="gallery-item-link" style="margin: 3px 0px;">
          ${'titlelink5'}
        </a>
`;
WA.templates['gallerylink.none'] = WA.templater`
`;
WA.templates['gallerylinkpro2'] = WA.templater`

        <a href="${'link2'}" class="gallery-item-linkpro" style="margin: 3px 0px;">
          ${'titlelink2'}
        </a>
`;
WA.templates['gallerylinkpro3'] = WA.templater`

        <a href="${'link3'}" class="gallery-item-linkpro" style="margin: 3px 0px;">
          ${'titlelink3'}
        </a>
`;
WA.templates['gallerylinkpro1'] = WA.templater`

        <a href="${'link1'}" class="gallery-item-linkpro" style="margin: 3px 0px;">
          ${'titlelink1'}
        </a>
`;
WA.templates['gallerylinkpro4'] = WA.templater`

        <a href="${'link4'}" class="gallery-item-linkpro" style="margin: 3px 0px;">
          ${'titlelink4'}
        </a>
`;
WA.templates['gallerylink6.none'] = WA.templater`
`;
WA.templates['gallerylinkpro3.none'] = WA.templater`
`;
WA.templates['gallerylink4'] = WA.templater`

        <a href="${'link4'}" class="gallery-item-link" style="margin: 3px 0px;">
          ${'titlelink4'}
        </a>
`;
WA.templates['gallerypro'] = WA.templater`

<div class="gallery gallerypro" data-autostart="yes" data-bullets="yes" data-keyboard="yes" data-time="15000" data-animation="slide" data-ratio="2.25" style="width: 100%;">
  ${['loop', 'slides','gallery_slide']}
</div>
`;
WA.templates['gallerylink1.none'] = WA.templater`
`;
WA.templates['gallerylinkpro4.none'] = WA.templater`
`;
WA.templates['linkgallery'] = WA.templater`

          <div class="gallery-titlelinkpro">
            ${'titlelink1'}
          </div>
`;
WA.templates['gallerypro.none'] = WA.templater`

  ${['cond', 'siteorigin','sliderhome']}
  
  
  
  
`;
WA.templates['sliderhome'] = WA.templater`

  <div class="gallery" data-autostart="yes" data-bullets="yes" data-keyboard="yes" data-time="15000" data-animation="slide" data-ratio="2.25" style="width: 100%;">
    ${['loop', 'slides','gallery_slide']}
  </div>
  `;
WA.templates['sliderhome.crafto'] = WA.templater`

  <div class="gallery" data-autostart="yes" data-bullets="yes" data-keyboard="yes" data-time="15000" data-animation="slide" data-ratio="2.05" style="width: 100%;">
    ${['loop', 'slides','gallery_slide']}
  </div>
  `;
WA.templates['gallerylinkpro5.none'] = WA.templater`
`;
WA.templates['gallery_slide'] = WA.templater`

<div id="gallery-key-${'key'}">
  <div class="gallery-link">
    
    ${['cond', 'container','rutacontainer']}
    
    

    
    
    
    
    
    



  </div>
  
  ${['cond', 'siteorigin','sliderhomedatacontainer']}
  
  
  
  
</div>

`;
WA.templates['sliderhomedatacontainer'] = WA.templater`

  <div class="gallery-datacontainer">
    <div class="gallery-sombra" style="display: none;"></div>
    <h1><a href="${'link1'}">${'title'}</a></h1>
    <div style="clear: both;"></div>
    <div class="gallery-bullet">
      <div></div>
    </div>
  </div>
  `;
WA.templates['rutacontainer.galeriahome'] = WA.templater`

      
      <a href="${'link'}"><img class="analyzethis" data-src="/${'container'}/${'key'}/${['cond', 'mobileimage','gallery_slide_image']}" data-width="450" data-height="200" data-webp="1" style="width: 100%;" /></a>
    `;
WA.templates['rutacontainer.craftohome'] = WA.templater`

    
    <a href="${'link'}"><img class="analyzethis" data-src="/${'container'}/${'key'}/${['cond', 'mobileimage','gallery_slide_image']}" data-width="420" data-height="370" data-webp="1" style="width: 100%;" /></a>
    `;
WA.templates['rutacontainer.galeria'] = WA.templater`

      
      ${['cond', 'sliderhomeblog>key','keygaleria']}
      
    `;
WA.templates['keygaleria.124'] = WA.templater`

        <a href="${'link'}"><img class="analyzethis" data-src="/articuloimagen/${'objectkey'}/${['cond', 'mobileimage','gallery_slide_image']}" data-width="450" data-height="200" data-webp="1" style="width: 100%;" /></a>
      `;
WA.templates['gallery_slide_image'] = WA.templater`
${'mobileimage'}`;
WA.templates['gallery_slide_image.none'] = WA.templater`
${'image'}`;
WA.templates['sliderhomedatacontainer.crafto'] = WA.templater`

  <div class="gallery-datacontainer">
    <div class="gallery-area-data-container-centrado" style="position: absolute; top: calc(50% - 7px); transform: translateY(-50%); height: auto; display: flex; flex-direction: column;">
      
      <h1 class="gallery-title"><a href="${'link1'}">${'title'}</a></h1>
      <div class="gallery-description">
        ${'description'}
      </div>
      
      ${['cond', 'slidetype','gallery-tipo-slide']}
      
      <div style="clear: both;"></div>
      <div class="gallery-bullet">
        <div></div>
      </div>
    </div>
  </div>
  `;
WA.templates['gallerylinkpro5'] = WA.templater`

        <a href="${'link5'}" class="gallery-item-linkpro" style="margin: 3px 0px;">
          ${'titlelink5'}
        </a>
`;
WA.templates['gallerylink5.none'] = WA.templater`
`;
WA.templates['gallery-tipo-slide.2'] = WA.templater`

        <hr style="height: 1px; border-top: 1px solid #999999; border-bottom: 0px; border-left: 0px; border-right: 0px; width: 50%; margin: 0px auto;" />
        <div class="gallery-cont-multilink" style="position: relative; display: flex; flex-direction: column; padding: 10px 15px 0px; box-sizing: border-box; width: 100%; margin: 0px auto; font-size: 16px;">
          ${['cond', 'datachefconectado>client>p','islinkpro']}
          
          
        </div>
`;
WA.templates['islinkpro'] = WA.templater`

            ${['cond', 'link1','gallerylinkpro1']}
            ${['cond', 'link2','gallerylinkpro2']}
            ${['cond', 'link3','gallerylinkpro3']}
            ${['cond', 'link4','gallerylinkpro4']}
            ${['cond', 'link5','gallerylinkpro5']}
          `;
WA.templates['islinkpro.none'] = WA.templater`

            ${['cond', 'link1','gallerylink1']}
            ${['cond', 'link2','gallerylink2']}
            ${['cond', 'link3','gallerylink3']}
            ${['cond', 'link4','gallerylink4']}
            ${['cond', 'link5','gallerylink5']}
          `;
WA.templates['gallerylinkpro1.none'] = WA.templater`
`;
WA.templates['gallery-tipo-slide.1'] = WA.templater`

        ${['cond', 'link1','gallerylink']}
`;
WA.templates['gallery-tipo-slide.none'] = WA.templater`
`;
WA.templates['gallerylink6'] = WA.templater`

        <a href="${'link6'}" class="gallery-item-link" style="margin: 3px 0px;">
          ${'titlelink6'}
        </a>
`;
WA.templates['gallerylink3'] = WA.templater`

        <a href="${'link3'}" class="gallery-item-link" style="margin: 3px 0px;">
          ${'titlelink3'}
        </a>
`;
WA.templates['slider'] = WA.templater`
<div class="slider" style="margin-top: 10px; ">
  ${['loop', 'payload','feed_payload']}
  ${['loop', 'families','slider_families']}
  
${['cond', 'siteorigin','sliderorigen']}





</div>




































`;
WA.templates['rutaimg'] = WA.templater`

<img class="analyzethis" data-src="${'imagepath'}${['cond', 'icon','slider_icon']}" data-width="70" data-height="70" data-webp="1" style="height: 70px; margin: 0px 0px 8px; width: 70px;" />
`;
WA.templates['slider_classifications'] = WA.templater`

<div class="slider-clasification-${'key'}" style="float: left; width: 70px; text-align: center; padding-left: 6px; padding-right: 6px;">
  <a href="${'path'}" style="color: #ababab; font-size: 11px; text-decoration: none; text-transform: uppercase;">
    ${['cond', 'imagepath','rutaimg']}
    ${'shorttitle'}
  </a>
</div>
`;
WA.templates['rutaimg.none'] = WA.templater`

<img class="analyzethis" data-src="${'icon'}" data-width="70" data-height="70" data-webp="1" style="height: 70px; margin: 0px 0px 8px; width: 70px;" />
`;
WA.templates['sliderorigen.crafto'] = WA.templater`

  ${['loop', 'classifications','slider-classifications-crafto']}
`;
WA.templates['slider_families'] = WA.templater`

<div class="slider-family-${'key'}" style="float: left; width: 70px; text-align: center; padding-left: 6px; padding-right: 6px;">
  <a href="${'path'}" style="color: #ababab; font-size: 11px; text-decoration: none; text-transform: uppercase;">
    <img class="analyzethis icon-family-${'key'}" data-src="${'imagepath'}${['cond', 'icon','slider_icon']}" data-width="70" data-height="70" data-webp="1" style="height: 70px; margin: 0px 0px 8px; width: 70px;" />
    ${'shorttitle'}
  </a>
</div>
`;
WA.templates['slider-classifications-crafto'] = WA.templater`

<div class="slider-clasification-${'key'}" style="float: left; padding: 0px 7px; text-align: center; width: 75px;">
  <a href="${'path'}" style="color: #989898; font-size: 12px; letter-spacing: 1px; text-decoration: none; text-transform: uppercase;">
    <img class="analyzethis" data-src="${'imagepath'}${['cond', 'icon','slider_icon']}" data-width="75" data-height="75" data-webp="1" style="height: 75px; margin: 0px 0px 8px; width: 75px;" />${'shorttitle'}
  </a>
</div>
`;
WA.templates['slider_classifications.none'] = WA.templater`
`;
WA.templates['slider_icon'] = WA.templater`
${'icon'}`;
WA.templates['feed'] = WA.templater`
<div class="feed" style="margin-top: 10px;">
  ${['loop', 'payload','feed_payload']}
</div>



`;
WA.templates['feed_video'] = WA.templater`
<div class="videoplay video" data-containerid="${'x'}" data-videoid="${'v'}"><span class="icon-k7-play"></span></div>

`;
WA.templates['feed_video.none'] = WA.templater`
`;
WA.templates['feed_coleccioncliente'] = WA.templater`
<div id="${'x'}" class="searchlist-muestra feed-coleccioncliente-ficha" data-type="cc" data-key="${'c'}">

  
  
  ${['cond', 'myaccount','micuentabtnelimina']}
  
  


  
  ${['cond', 'myaccount','linkcoleccion']}
  
  
  
  
  

  
    <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top; background-color: #dddddd;" />
    
    <div style="background-color: #dddddd; display: flex; flex-wrap: wrap; height: auto; overflow: hidden; justify-content: space-between; position: absolute; width: 100%; top: 0px; left: 0px;">
    
      ${['loop', 'el','coleccionelementos']}

      
      
      

    </div>
  </a>

  <div class="feed-coleccioncliente-areanombre" style="position: relative; height: 46px; border-bottom: 1px solid #dedede;">
    <div id="divnombrecoleccionor-${'c'}" class="coleccioncliente-nombrecentrado" style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
      ${'n'}
    </div>
    <input type="text" id="inputnombrecoleccion-${'c'}" value="" class="colecciones-inputnombre" style="display: none; width: 100%; font-size: 12px; margin: 0px; position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%);" />
  </div>
  
  <div class="coleccioncliente-area-edicion" style="position: relative; height: 46px; display: flex; align-items: center;">
  
    ${['cond', 'myaccount','micuentabtnupdate']}
    
    
    
    
    
    
    
    
    
    
  </div>
</div>











`;
WA.templates['micuentabtnupdate.none'] = WA.templater`

    <div class="coleccioncliente-nochef-areanombre" style="box-sizing: border-box; font-style: italic; padding: 0 10px; position: relative; margin: 6px 0px; width: 100%;">
      ${'qt'} elementos
    </div>
    `;
WA.templates['tipocoleccion.8'] = WA.templater`

    <div style="box-sizing: border-box; font-style: italic; padding: 0 10px; position: relative; margin: 6px 0px; width: 100%;">
      ${'qt'} elementos
    </div>
    `;
WA.templates['coleccionelementos'] = WA.templater`

        <div class="elemento-${'c'}" style="height: auto; margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49.6%;">
          ${['cond', 'c','idelemento']}
        </div>
      `;
WA.templates['imgelemento'] = WA.templater`

  <img class="analyzethis" data-src="${'ip'}${'i'}" data-width="150" data-height="150" data-webp="1" style="width: 100%; vertical-align: top; position: relative; min-height: 12vh; min-width: 100%;" />
`;
WA.templates['linkcoleccion'] = WA.templater`

    ${['cond', 'siteorigin','linkmicuentakiwi']}
    
    
  `;
WA.templates['linkmicuentakiwi'] = WA.templater`

      <a href="/mi-cuenta${'pa'}" class="kl-micuenta" style="text-decoration: none;">
    `;
WA.templates['linkmicuentakiwi.kiwirec'] = WA.templater`

      <a href="/my-account${'pa'}" class="kr-micuenta" style="text-decoration: none;">
    `;
WA.templates['imgelemento.none'] = WA.templater`

  <img class="analyzethis" data-src="/img/static/logo-o-320x320.png" data-width="150" data-height="150" data-webp="1" style="width: 100%; vertical-align: top; position: relative;" />
`;
WA.templates['micuentabtnelimina'] = WA.templater`

    
    ${['cond', 'tipo','tipocoleccionemilina']}
    
    
  `;
WA.templates['tipocoleccionemilina'] = WA.templater`

    <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientcoleccioneslist.eliminaColeccion(${'c'});" alt="Borrar colección" title="Borrar colección" style="display: flex; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
      <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
    </div>
    `;
WA.templates['tipocoleccionemilina.8'] = WA.templater`

    `;
WA.templates['micuentabtnelimina.none'] = WA.templater`
`;
WA.templates['micuentabtnupdate'] = WA.templater`

      ${['cond', 'tipo','tipocoleccion']}
    `;
WA.templates['tipocoleccion'] = WA.templater`

    <div class="coleccion-cliente-num-elementos" style="box-sizing: border-box; font-style: italic; padding: 0 10px; position: relative; margin: 6px 0px; width: calc(100% - 40px);">
      ${'qt'} elementos
    </div>
    
    <div id="coleccioncliente-editanombrecol" onclick="KL.Modules.clientcoleccioneslist.modificaNombreColeccion(${'c'});" class="icon-k7-clientp-editaperfil" style="position: relative; width: 40px; height: inherit; border-left: 1px solid #dedede; color: #808080; cursor: pointer; font-size: 16px; display: flex; justify-content: center; align-items: center;"></div>
    `;
WA.templates['linkcoleccion.none'] = WA.templater`

    ${['cond', 'siteorigin','linkchefkiwi']}
    
    
    
  `;
WA.templates['linkchefkiwi'] = WA.templater`

      <a href="/chef/coleccion/${'clientperfil>rid'}/${'c'}" class="kl-chef" style="text-decoration: none;">
    `;
WA.templates['linkchefkiwi.kiwirec'] = WA.templater`

      <a href="/chef/collection/${'clientperfil>rid'}/${'c'}" class="kl-chef" style="text-decoration: none;">
    `;
WA.templates['linkchefkiwi.crafto'] = WA.templater`

      <a href="/creador/coleccion/${'clientperfil>rid'}/${'c'}" class="crafto-creador" style="text-decoration: none;">
    `;
WA.templates['coleccionelementos.none'] = WA.templater`

      `;
WA.templates['idelemento'] = WA.templater`

${['cond', 'i','imgelemento']}
`;
WA.templates['feed_articuloclasificacion'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra tools feed-articuloclasificacion-ficha" data-type="ca" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('ca', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    <div style="position: relative; width: 100%;">
      <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i1','src-clasificacionarticulo1']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i2','src-clasificacionarticulo2']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i3','src-clasificacionarticulo3']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i4','src-clasificacionarticulo4']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
    </div>
    
    <div style="background-color: #24b2b3; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Clasificación
    </div>
    
    <div class="feed-clasificacionarticulo-areanombre" style="position: relative; height: 46px; border-bottom: 1px solid #f4f6f4;">
      <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div style="position: relative; height: 46px;">
      <div style="color: #777777; font-weight: normal; font-style: italic; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        Blog
      </div>
    </div>
  </a>
</div>














`;
WA.templates['src-clasificacionarticulo2'] = WA.templater`
/articuloimagen/${'ci2'}/${'i2'}`;
WA.templates['src-clasificacionarticulo2.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificacionarticulo3'] = WA.templater`
/articuloimagen/${'ci3'}/${'i3'}`;
WA.templates['src-clasificacionarticulo3.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificacionarticulo4'] = WA.templater`
/articuloimagen/${'ci4'}/${'i4'}`;
WA.templates['src-clasificacionarticulo4.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificacionarticulo1'] = WA.templater`
/articuloimagen/${'ci1'}/${'i1'}`;
WA.templates['src-clasificacionarticulo1.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_chef'] = WA.templater`

<div id="${'x'}" class="chef-ficha-${'k'} searchlist-muestra feed-chef-ficha" data-type="c" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  
  <div class="chef-eliminar-usuario" onclick="KL.Modules.clientperfil.dejarseguirachef(${'k'}, 'stopfollowing');" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  
  <div class="div_imgfeedficha ${['cond', 'bg','bgclassdefault']}" style="${['cond', 'bg','bgpersonalizado']} background-repeat: no-repeat; background-position: right center; background-size: cover; position: relative; overflow: hidden;">
    <a id="feed_a_receta_1335219482" href="${'pa'}" style="text-decoration: none;">
      
      
      <img src="https://cdn.kiwilimon.com/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div class="div_cont_fichaavatarchef" style="background-color: ${['cond', 'co','cheffondocolor']}; position: absolute; height: 68px; left: 50%; top: 50%; width: 68px; border-radius: 100%; transform: translateX(-50%) translateY(-50%);">
        ${['cond', 'av','avatarchef']}
      </div>
      
      <div class="chef-num-seguidores" style="position: absolute; top: 8px;right: 10px; color: #ffffff; font-size: 11px;">Seguidores: <span style="font-weight: bold;">${'qs'}</span></div>
      <div class="chef-num-siguiendo" style="position: absolute; top: 20px; right: 10px; color: #ffffff; font-size: 11px;">Siguiendo: <span style="font-weight: bold;">${'qg'}</span></div>
      
      
      <div class="chef-ficha-nombre-chef" style="bottom: 0px; background: rgba(0, 0, 0, 0) linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.4) 100%) repeat scroll 0px 0px; position: absolute; height: 36px; box-sizing: border-box; width: 100%;">
        <div class="chef-ficha-nombre-chef-centrado" style="box-sizing: border-box; position: absolute; top: 50%; transform: translateY(-50%); padding: 0px 10px 2px; max-height: 30px; overflow: hidden; color: #ffffff; font-size: 14px; font-weight: bold; text-decoration: none; text-align: center; width: 100%;">
          ${'fn'} ${'ln'}
        </div>
      </div>
    </a>
  </div>
  
  <div class="feed-chef-titulo-seccion" style="box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
    Perfil
  </div>
  
  <div class="chef-area-data-elementos" style="box-sizing: border-box; height: 52px; position: relative; width: 100%; border-bottom: 1px solid #f4f6f4; color: #777777; font-size: 12px; text-align: center; display: flex; flex-wrap: wrap; align-content: center; justify-content: space-evenly;">
    ${['cond', 'qr','numrecetas']}
    ${['cond', 'qt','numtips']}
    ${['cond', 'qc','numcolecciones']}
  </div>
  
  
  <div class="chef-area-botones-seguir" style="position: relative; height: 41px;">
    
    
    
    ${['cond', 'sesionprochef','btnseguirchef']}
    

    

    
    

    
    
    
    
    
    
  </div>
</div>



























`;
WA.templates['avatarchef'] = WA.templater`


<img class="analyzethis clientactivity-avatar-kl" data-src="${'av'}" data-width="96" data-height="96" data-webp="1" data-imgavatarchef="${'k'}" alt="${'fn'} ${'ln'}" title="${'fn'} ${'ln'}" style="background-color: #ffffff; background-image: none; border-radius: 100%; left: 50%; max-height: 62px; max-width: 62px; position: absolute; top: 50%; transform: translateX(-50%) translateY(-50%); width: 100%;" />
`;
WA.templates['numcolecciones'] = WA.templater`

      <div class="chef-area-data-numelementos-colecciones" style="padding: 2px 5px; text-transform: uppercase;">
        Colecciones: <span style="color: #555555; font-size: 14px; font-weight: bold;">${'qc'}</span>
      </div>
`;
WA.templates['cheffondocolor'] = WA.templater`
${'co'}`;
WA.templates['numrecetas'] = WA.templater`

      <div class="chef-area-data-numelementos-recetas" style="padding: 2px 5px; text-transform: uppercase;">
        Recetas: <span style="color: #555555; font-size: 14px; font-weight: bold;">${'qr'}</span>
      </div>
`;
WA.templates['bgclassdefault.none'] = WA.templater`
imgfondochefdefault`;
WA.templates['cheffondocolor.none'] = WA.templater`
#ffffff`;
WA.templates['btnseguirchef'] = WA.templater`

      <a href="/login/social?p=${'pa'}" id="btnSeguirChef_${'k'}" class="chef-area-botones-seguir-btn-seguir" style="display: none; background: #f4f6f4; border-radius: 2px; color: #333333; cursor: pointer; height: auto; padding: 4px 10px 4px 10px; position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); white-space: nowrap;">
        <span class="icon-k7-check css-color-link" style="vertical-align: middle; margin-right: 3px;"></span> Seguir
      </a>
    `;
WA.templates['paysigochefsesionprochef'] = WA.templater`

      <div id="btnSiguiendoChef_${'k'}" onclick="KL.Modules.clientperfil.dejarseguirachef(${'k'}, 'stopfollowing');" class="chef-area-botones-seguir-btn-siguiendo" style="display: none; background: #f4f6f4; border-radius: 2px; color: #333333; cursor: pointer; height: auto; padding: 4px 10px 4px 10px; position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); white-space: nowrap;">
        <span class="icon-k7-check css-color-link" style="vertical-align: middle; margin-right: 3px;"></span> Siguiendo
      </div>
    `;
WA.templates['btnseguirchef.false'] = WA.templater`

      ${['cond', 'f','paysigochefsesionprochef']}
    `;
WA.templates['bgpersonalizado.none'] = WA.templater`
`;
WA.templates['numtips.none'] = WA.templater`
`;
WA.templates['btnseguirchef.true'] = WA.templater`

      ${['cond', 'f','paysigochefsesionprochef']}
    `;
WA.templates['bgpersonalizado'] = WA.templater`
background-image: url('${'bg'}');`;
WA.templates['numtips'] = WA.templater`

      <div class="chef-area-data-numelementos-tips" style="padding: 2px 5px; text-transform: uppercase;">
        Tips: <span style="color: #555555; font-size: 14px; font-weight: bold;">${'qt'}</span>
      </div>
`;
WA.templates['numrecetas.none'] = WA.templater`
`;
WA.templates['numcolecciones.none'] = WA.templater`
`;
WA.templates['avatarchef.none'] = WA.templater`

<img class="analyzethis clientactivity-avatar-kl" data-src="/kiwilimon/static/icono-usuario.svg" data-width="62" data-height="62" data-webp="1" alt="${'fn'} ${'ln'}" title="${'fn'} ${'ln'}" style="background-color: #ffffff; background-image: none; border-radius: 100%; left: 50%; max-height: 62px; max-width: 62px; position: absolute; top: 50%; transform: translateX(-50%) translateY(-50%); width: 100%;" />
`;
WA.templates['paysigochefsesionprochef.none'] = WA.templater`

      <div id="btnSeguirChef_${'k'}" onclick="KL.Modules.clientperfil.seguirachef(${'k'}, 'follow');" class="chef-area-botones-seguir-btn-seguir myaccount" style="display: none; background: #f4f6f4; border-radius: 2px; color: #333333; cursor: pointer; height: auto; padding: 4px 10px 4px 10px; position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); white-space: nowrap;">
        <span class="icon-k7-check css-color-link" style="vertical-align: middle; margin-right: 3px;"></span> Seguir
      </div>
    `;
WA.templates['bgclassdefault'] = WA.templater`
`;
WA.templates['feed_clasificacionreceta'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra tools feed-clasificacionreceta-ficha" data-type="cr" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <a href="${'pa'}" style="text-decoration: none;">
    <div style="position: relative; width: 100%;">
      <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i1','src-clasificacionreceta1']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i2','src-clasificacionreceta2']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i3','src-clasificacionreceta3']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i4','src-clasificacionreceta4']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
    </div>
    
    <div style="background-color: #f7a841; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Clasificación
    </div>
    
    <div style="position: relative; height: 46px; border-bottom: 1px solid #f4f6f4;">
      <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div style="position: relative; height: 46px;">
      <div style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        ${'d'}
      </div>
    </div>
  </a>
</div>
















`;
WA.templates['src-clasificacionreceta3'] = WA.templater`
/recetaimagen/${'ci3'}/${'i3'}`;
WA.templates['src-clasificacionreceta3.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificacionreceta4'] = WA.templater`
/recetaimagen/${'ci4'}/${'i4'}`;
WA.templates['src-clasificacionreceta4.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificacionreceta1'] = WA.templater`
/recetaimagen/${'ci1'}/${'i1'}`;
WA.templates['src-clasificacionreceta1.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificacionreceta2'] = WA.templater`
/recetaimagen/${'ci2'}/${'i2'}`;
WA.templates['src-clasificacionreceta2.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_producto'] = WA.templater`


${['cond', 'siteorigin','origensitio']}





































`;
WA.templates['src-producto.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['origensitio.kiwi'] = WA.templater`

  ${['cond', 'type','tipofeedrecetarios']}
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  



  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  
  
  
  
`;
WA.templates['tipofeedrecetarios.collectiondetalle'] = WA.templater`

    <div id="${'x'}" class="origen-kiwi tools feed-coleccion-producto-ficha" data-type="p" data-key="${'k'}" style="box-sizing: border-box; background-color: #ffffff; position: relative; float: left; width: 46.77%; margin: 5px 5px 10px 5px; height: auto; overflow: visible;">
      <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('p', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
        <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
      </div>

      <a href="${'pa'}">
        <div class="searchlist-muestra feed-coleccion-producto-divimg" style="overflow: hidden; position: relative; width: 100%;">
          <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="300" data-height="300" data-webp="1" style="width: 100%; position: relative; vertical-align: top; display: block;" />
        </div>
        
        <div class="feed-coleccion-producto-ficha-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
          Producto
        </div>
        
        <div class="feed-coleccion-producto-ficha-areanombre" style="position: relative; height: 46px; border-bottom: 1px solid #f4f6f4;">
          <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
            ${'n'}
          </div>
        </div>
        
        <div style="position: relative; height: 46px;">
          <div class="area-desc-clasificacion" style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
            ${'d'}
          </div>
        </div> 
      </a>
    </div>
  `;
WA.templates['tipofeedrecetarios.pro'] = WA.templater`

    ${['cond', 'datachefconectado','productospro']}
    
  
    
  `;
WA.templates['productospro.none'] = WA.templater`
`;
WA.templates['productospro'] = WA.templater`

      <div id="${'x'}" class="origen-kiwi feed-producto-ficha" data-type="p" data-key="${'k'}" style="box-sizing: border-box; position: relative; display: flex; background-color: #ffffff;">
        <a href="${'pa'}">
          <img class="analyzethis" data-src="/productoventa/${'k'}/${'i'}" data-width="320" data-height="420" data-webp="1" alt="${'n'}" title="${'n'}" style="height: 100%; left: 50%; margin: 0px 0px 10px; position: absolute; top: 50%; transform: translateX(-50%) translateY(-50%); width: 100%;" />
        </a>
        
      </div>
    `;
WA.templates['tipofeedrecetarios.probooks'] = WA.templater`

    <div id="${'x'}" class="origen-kiwi feed-producto-ficha" data-type="p" data-key="${'k'}" style="float: left; /*margin: 0px 10px 16px;*/ overflow: hidden; position: relative; /*width: 300px;*/ background-color: #ffffff;">
      <a href="${'pa'}">

        <div class="searchlist-muestra feed-producto-divimg" style="overflow: hidden; position: relative; width: 100%;">
          ${['cond', 'g','familiaproducto']}
          
          
      
          

          <div class="feed-producto-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; color: #ffffff; font-size: 11px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; right: 0px; text-transform: uppercase; top: 15px;">
            Producto
          </div>
        </div>

        <div class="feed-producto-div-nombreprod" style="clear: both; position: relative; height: 42px;">
          <div style="box-sizing: border-box; color: #333333; font-size: 17px; font-weight: bold; line-height: 18px; max-height: 38px; overflow: hidden; padding: 0px 10px 2px; position: absolute; text-align: center; text-decoration: none; top: 50%; transform: translateY(-50%); width: 100%;">
            ${'n'}
          </div>
        </div>
      </a>
    </div>
  `;
WA.templates['familiaproducto.4'] = WA.templater`

            <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="320" data-height="420" data-webp="1" style="width: 100%; position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%);" />
          `;
WA.templates['familiaproducto'] = WA.templater`

            <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="500" data-height="500" data-webp="1" style="width: 100%; position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%);" />
          `;
WA.templates['tipofeedrecetarios.collectionfavorite'] = WA.templater`

    <div id="${'x'}" class="origen-kiwi-favoritos feed-producto-ficha" data-type="p" data-key="${'k'}" style="float: left; /*margin: 0px 10px 16px;*/ overflow: hidden; position: relative; /*width: 300px;*/ background-color: #ffffff;">
      <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('p', ${'k'});" alt="" title="" style="display: flex; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
        <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
      </div>

      <a href="${'pa'}">

        <div class="searchlist-muestra feed-producto-divimg" style="overflow: hidden; position: relative; width: 100%;">
          ${['cond', 'g','familiaproducto']}
          
          
        
          
        </div>
        
        <div class="feed-compilacionreceta-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
          Producto
        </div>

        <div class="feed-producto-div-nombreprod" style="clear: both; position: relative; height: 42px; border: 1px solid #f4f6f4;">
          <div style="box-sizing: border-box; color: #333333; font-size: 17px; font-weight: bold; line-height: 18px; max-height: 38px; overflow: hidden; padding: 0px 10px 2px; position: absolute; text-align: center; text-decoration: none; top: 50%; transform: translateY(-50%); width: 100%;">
            ${'n'}
          </div>
        </div>
        
        
        <div class="feed-producto-areadescarga" style="position: relative;">
          <div class="feed-producto-btn-descarga" style="border: 1px solid #dddddd; border-radius: 4px; display: flex; align-items: center; justify-content: center; color: #aaaaaa; font-family: 'source sans pro'; font-weight: normal; font-style: italic; font-size: 11px; line-height: 12px; max-height: 25px; overflow: hidden; position: absolute; top: 50%; left: 50%; transform: translatex(-50%) translateY(-50%); text-align: center; padding: 10px; box-sizing: border-box;">
            Descargar
          </div>
        </div>
        
      </a>
    </div>
  `;
WA.templates['familiaproducto.4'] = WA.templater`

            <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="320" data-height="420" data-webp="1" style="width: 100%; position: relative; vertical-align: top;" />
          `;
WA.templates['familiaproducto'] = WA.templater`

            <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="500" data-height="500" data-webp="1" style="width: 100%; position: relative; vertical-align: top;" />
          `;
WA.templates['tipofeedrecetarios.recetaclasificacion'] = WA.templater`

  <div id="${'x'}" class="searchlist-muestra feed-producto-ficha" data-type="p" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
    <a href="${'pa'}" class="feed-producto-link" style="text-decoration: none;">
      <img class="analyzethis feed-producto-img" data-src="${['cond', 'i','src-producto']}" data-width="500" data-height="500" data-webp="1" alt="${'n'}" title="${'n'}" style="position: relativa; /*top: 50%;*/ top: 0px; /*transform: translateY(-50%);*/ vertical-align: top; width: 100%;" />
      <div class="feed-producto-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
        Producto
      </div>
      
      <div class="feed-producto-areanombreficha" style="height: 70px; position: relative; border-bottom: 1px solid #f4f6f4;">
        <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 46px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
          ${'n'}
        </div>
      </div>
      
      <div class="feed-producto-descarga" style="height: 30px; position: relative;">
        <div class="area-txt-descarga" style="box-sizing: border-box; color: #aaaaaa; font-family: 'source sans pro'; font-size: 12px; text-align: center; max-height: 25px; overflow: hidden; padding: 0px 10px; position: absolute; line-height: 12px; top: 50%; width: 100%; transform: translateY(-50%); text-transform: uppercase;">
          Descargar
        </div>
      </div>
    </a>
  </div>
  `;
WA.templates['tipofeedrecetarios.recipebooks'] = WA.templater`

    <div id="${'x'}" class="searchlist-muestra origen-kiwilimon feed-producto-ficha" data-type="p" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
      <a href="${['cond', 'k','idrecretos']}" style="text-decoration: none;">
        

        
        

        
        

        
        

        

      
        ${['cond', 'g','familiaproducto']}
        
        
        
        
        
        
        <div class="feed-producto-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
          Producto
        </div>
        
        <div class="feed-producto-areanombreficha" style="position: relative; border-bottom: 1px solid #f4f6f4;">
          <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 46px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
            ${'n'}
          </div>
        </div>
        
        <div class="feed-producto-descarga" style="height: 30px; position: relative;">
          <div class="area-txt-descarga" style="box-sizing: border-box; color: #aaaaaa; font-family: 'source sans pro'; font-size: 12px; text-align: center; max-height: 25px; overflow: hidden; padding: 0px 10px; position: absolute; line-height: 12px; top: 50%; width: 100%; transform: translateY(-50%); text-transform: uppercase;">
            Descargar
          </div>
        </div>
      </a>
    </div>
  `;
WA.templates['idrecretos.7'] = WA.templater`
/menu/reto-vegano/reto-vegano-dia-1`;
WA.templates['idrecretos.8'] = WA.templater`
/menu/reto-kiwilimon/dia-1`;
WA.templates['idrecretos.9'] = WA.templater`
/menu/reto-paleo/reto-paleo-dia-1`;
WA.templates['idrecretos'] = WA.templater`
${'pa'}`;
WA.templates['familiaproducto.4'] = WA.templater`

          <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="320" data-height="420" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
        `;
WA.templates['familiaproducto'] = WA.templater`

          <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="500" data-height="500" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
        `;
WA.templates['tipofeedrecetarios.search'] = WA.templater`

    <div id="${'x'}" class="searchlist-muestra origen-kiwilimon tools feed-search-producto-ficha" data-type="p" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
      <a href="${['cond', 'k','idsearchrecretos']}" style="text-decoration: none;">
        

        
        

        
        

        
        

        
        
        
        ${['cond', 'g','searchgrupoproducto']}
        
        
      
        

        <div class="feed-producto-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
          Producto
        </div>
        
        ${['cond', 'k','productogrupo']}
        
        

        
        
      </a>
    </div>
  `;
WA.templates['idsearchrecretos.7'] = WA.templater`
/menu/reto-vegano/reto-vegano-dia-1`;
WA.templates['idsearchrecretos.8'] = WA.templater`
/menu/reto-kiwilimon/dia-1`;
WA.templates['idsearchrecretos.9'] = WA.templater`
/menu/reto-paleo/reto-paleo-dia-1`;
WA.templates['idsearchrecretos'] = WA.templater`
${'pa'}`;
WA.templates['searchgrupoproducto.4'] = WA.templater`

          <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="320" data-height="420" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
        `;
WA.templates['searchgrupoproducto'] = WA.templater`

          ${['cond', 'k','imgproducto']}
          
          
          
        `;
WA.templates['imgproducto'] = WA.templater`

          <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="500" data-height="500" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
          `;
WA.templates['imgproducto.128'] = WA.templater`

          <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="400" data-height="400" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
          `;
WA.templates['productogrupo.128'] = WA.templater`

        <div class="feed-producto-areanombreficha" style="position: relative; height: 46px; border-bottom: 1px solid #f4f6f4;">
          <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 46px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
            ${'n'}
          </div>
        </div>

        <div style="position: relative; height: 46px;">
          <div style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
            ${'d'}
          </div>
        </div>
        `;
WA.templates['productogrupo'] = WA.templater`

        <div class="feed-producto-areanombreficha" style="position: relative; border-bottom: 1px solid #f4f6f4;">
          <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 46px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
            ${'n'}
          </div>
        </div>

        <div class="feed-producto-descarga" style="height: 30px; position: relative;">
          <div class="area-txt-descarga" style="box-sizing: border-box; color: #aaaaaa; font-family: 'source sans pro'; font-size: 12px; text-align: center; max-height: 25px; overflow: hidden; padding: 0px 10px; position: absolute; line-height: 12px; top: 50%; width: 100%; transform: translateY(-50%); text-transform: uppercase;">
            Descargar
          </div>
        </div>
        `;
WA.templates['origensitio.crafto'] = WA.templater`


  ${['cond', 'g','grupomanualidades']}
  
  
  
  
`;
WA.templates['grupomanualidades.6'] = WA.templater`

    <div id="${'x'}" class="searchlist-muestra feed-producto-ficha origen-crafto manualidades-cont-ficha" data-type="p" data-key="${'k'}" style="box-sizing: border-box; position: relative; width: 100%; background-color: #ffffff;">
      
      <div class="manualidades-area-multimedia" style="box-sizing: border-box; position: relative; width: 100%">
        
        <div class="manualidades-multimedia-principal" style="width: 100%; height: auto; position: relative;">
          
          <a href="${'pa'}">
            <img class="analyzethis" data-src="/productoventa/${'k'}/${'i'}" data-width="612" data-height="792" data-webp="1" alt="${'n'}" title="${'n'}" style="position: relative; width: 100%;" />
          </a>
        </div>
        
        
        
      </div>

      
      <div class="manualidades-area-txtmanualidad" style="box-sizing: border-box; position: relative; width: 100%;">
        <div class="manualidades-dov-cont-nombre" style="position: relative; display: flex; align-items: flex-start; justify-content: space-between;">
          <div class="manualidades-div-nombre" style="width: calc(100% - 162px); position: relative; box-sizing: border-box; padding: 0px 15px 0px 0px;">
            
            
            <a href="${'pa'}" class="manualidades-nombre" style="
            color: var(--color-texto-base); font-family: dmserifdisplay; font-size: 18px; line-height: 19px; letter-spacing: 0.5px; margin: 0px; position: relative;">
              ${'n'}
            </a>
            
          </div>
          
          <a href="${'pa'}" class="manualidades-btn-descarga" style="background-color: #e5579a; border-radius: 24px; color: #ffffff; cursor: pointer; display: flex; align-items: center; font-family: poppins-semibold; font-size: 14px; letter-spacing: 0.5px; padding: 10px 10px 10px 20px; text-transform: uppercase; white-space: nowrap; width: -webkit-fit-content; width: -moz-fit-content; width: -o-fit-content; width: -ms-fit-content; width: fit-content;">
            <div class="icon-k7-flecha-descarga" style="margin: 1px 0px 0px 0px; padding: 0px; font-size: 11px; -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -o-transform: rotate(90deg); -ms-transform: rotate(90deg); writing-mode: vertical-rl; transform: rotate(90deg) translateY(10px);"></div> Descarga gratis
          </a>
        </div>
        
        <div class="manualidades-txtdescripcion" style="font-family: poppins; font-size: 12px; line-height: 18px; color: var(--color-texto-base); margin: 10px 0px 0px;">
          ${'d'}
        </div>
        
      </div>
    </div>
  `;
WA.templates['grupomanualidades'] = WA.templater`
`;
WA.templates['origensitio.kiwirec'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra origen-kiwirec feed-producto-ficha" data-type="p" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <a href="${'pa'}" style="text-decoration: none;">
    ${['cond', 'g','familiaproducto']}
    
    
    
    
    
    
    <div class="feed-producto-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Producto
    </div>
    
    <div class="feed-producto-areanombreficha" style="position: relative; border-bottom: 1px solid #f4f6f4;">
      <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 46px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div class="feed-producto-descarga" style="height: 30px; position: relative;">
      <div class="area-txt-descarga" style="box-sizing: border-box; color: #aaaaaa; font-family: 'source sans pro'; font-size: 12px; text-align: center; max-height: 25px; overflow: hidden; padding: 0px 10px; position: absolute; line-height: 12px; top: 50%; width: 100%; transform: translateY(-50%); text-transform: uppercase;">
        Descargar
      </div>
    </div>
  </a>
</div>
`;
WA.templates['familiaproducto.4'] = WA.templater`

      <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="320" data-height="420" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
    `;
WA.templates['familiaproducto'] = WA.templater`

      <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','src-producto']}" data-width="500" data-height="500" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
    `;
WA.templates['src-producto'] = WA.templater`
/productoventa/${'k'}/${'i'}`;
WA.templates['feed_receta'] = WA.templater`
<div id="${'x'}" class="searchlist-muestra tools feed-receta-ficha" data-type="r" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('r', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    <div class="feed-divimagenficha" style="position: relative; width: 100%;">
      <img class="analyzethis" data-src="${['cond', 'i','src-receta']}" data-width="320" data-height="320" data-webp="1" style="position: relative; width: 100%; vertical-align: top;" />
      ${['cond', 'v','feed_video']}

      
      
      ${['cond', 'sesionprochef','tiposesion']}
      
      
      
      
      
      
      
      
      
      
      
      
      
      

      
      
      

      
      
      






      
    </div>

    <div class="feed-receta-thumb-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Receta
    </div>

    
    ${['cond', 's','estatusreceta']}
    
    
    
    
    
    

    
    <div class="feed-receta-rating" style="display: table; height: 13px; margin: 0px auto 5px; position: relative;">
      <div style="color: #8cc63e; display: table-cell; font-family: 'source sans pro'; font-weight: normal; height: 13px; padding: 0px 5px 0px 0px; position: relative; vertical-align: middle;">
        ${'vr'}
      </div>
      <div class="feed-ficha icon-k7-estrellas-v" style="color: #8cc63e; display: table-cell; height: 13px; position: relative; vertical-align: middle; width: 62px;">
        <div class="feed-ficha icon-k7-estrellas-r" style="height: 13px; left: 0px; overflow: hidden; position: absolute; top: 0px; width: ${'pr'};"></div>
      </div>
    </div>

    
    <div class="feed-receta-nombrechef" style="border-top: 1px solid #f4f6f4; height: 30px; position: relative; margin: 2px 0px 0px 0px;">
      <div style="box-sizing: border-box; color: #aaaaaa; font-family: 'source sans pro'; font-size: 11px; font-style: italic; text-align: center; max-height: 25px; overflow: hidden; padding: 0px 10px; position: absolute; line-height: 12px; top: 50%; width: 100%; transform: translateY(-50%);">
        ${'cn'}
      </div>
    </div>
  </a>
</div>







`;
WA.templates['estatusreceta'] = WA.templater`

    
    <div class="feed-receta-areanombreficha" style="/*height: 52px;*/ position: relative;">
      <div class="feed-receta-nombrecentrado" style="box-sizing: border-box; color: #000000; font-size: 14px; font-weight: bold; line-height: 15px; /*max-height: 46px;*/ overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%;">
        ${'n'}
      </div>
    </div>
    `;
WA.templates['tiposesion.true'] = WA.templater`

        
      `;
WA.templates['estatusreceta.none'] = WA.templater`
`;
WA.templates['src-receta.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['tiposesion.false'] = WA.templater`

        ${['cond', 'level','recetalevelchef']}
      `;
WA.templates['recetalevelchef.2'] = WA.templater`

        ${['cond', 'siteorigin','origenfeedreccontinterno']}
        
      `;
WA.templates['origenfeedreccontinterno.kiwi'] = WA.templater`

          <div class="feedficha-bloqueo cont-interno">
            <div class="icon-k7-kiwipro" alt="KiwiPro" title="KiwiPro" style="color: #ffffff; font-size: 19px;"></div>
          </div>

          
        `;
WA.templates['recetalevelchef.3'] = WA.templater`

        ${['cond', 'siteorigin','origenfeedreccontpro']}
        
      `;
WA.templates['origenfeedreccontpro.kiwi'] = WA.templater`

          <div class="feedficha-bloqueo cont-pro">
            <div class="icon-k7-kiwipro" alt="KiwiPro" title="KiwiPro" style="color: #ffffff; font-size: 19px;"></div>
          </div>

          
        `;
WA.templates['src-receta'] = WA.templater`
/recetaimagen/${'k'}/${'i'}`;
WA.templates['tiposesion'] = WA.templater`

        ${['cond', 'level','recetalevelchef']}
      `;
WA.templates['recetalevelchef.1'] = WA.templater`

        ${['cond', 'siteorigin','origenfeedreccontmarca']}
        
      `;
WA.templates['origenfeedreccontmarca.kiwi'] = WA.templater`

          

          
        `;
WA.templates['estatusreceta.10'] = WA.templater`

    
    <div class="feed-recetapro-areanombreficha" style="/*height: 52px;*/ position: relative;">
      <div class="icon-k7-kiwipro feed-recetapro-icon" style="box-sizing: border-box; position: relative; width: 24px; height: 24px; background-color: #8eb4b1; border-radius: 100%; color: #ffffff; margin: 0px 0px 0px 10px; display: flex; align-items: center; justify-content: center; font-size: 14px;"></div>
      
      <div class="feed-receta-nombrecentrado" style="box-sizing: border-box; color: #8eb4b1; font-family: crimsonpro-semibold; font-size: 14px; letter-spacing: 0.5px; line-height: 14px; /* max-height: 46px; */ overflow: hidden; padding: 3px 10px; position: absolute; text-align: left; text-transform: uppercase; top: 50%; right: 0px; transform: translateY(-50%); width: calc(100% - 34px);">
        ${'n'}
      </div>
    </div>
    `;
WA.templates['feed_ad'] = WA.templater`

<div class="buildad feed" style="width: 300px; min-height: 250px; position: relative;" data-id="300x250"></div>
`;
WA.templates['feed_recetaslider'] = WA.templater`

<div id="${'x'}" class="tools recetaslider-ficha" data-type="r" data-key="${'k'}" style="background-color: #ffffff; display: table; float: left; margin: 0px 4px; position: relative; width: 145px;">
  <a href="${'pa'}">
    <div style="width: 145px; height: 145px; position: relative;">
      <img class="analyzethis" data-src="${['cond', 'i','src-recetaslider']}" data-width="145" data-height="145" data-webp="1" style="width: 145px; height: 145px; vertical-align: top;" />
      ${['cond', 'v','feed_video']}
      
      
      ${['cond', 'level','nivelfichaslider']}
      

      
  
      
    </div>

    
    
    ${['cond', 's','estatusrecetaslider']}
    
    
    
    
    
    

    
    <div class="recetaslider-rating" style="height: 13px; margin: 0px auto; position: relative;">
      <div class="feed-recetas-num" style="display: table-cell; font-family: 'source sans pro'; font-weight: normal; height: 13px; padding: 0 5px 0 0; position: relative; vertical-align: middle;">
        ${'vr'}
      </div>
      <div class="feed-ficha icon-k7-estrellas-v" style="display: table-cell; height: 13px; position: relative; vertical-align: middle; width: 62px;">
        <div class="feed-ficha icon-k7-estrellas-r" style="height: 13px; left: 0px; overflow: hidden; position: absolute; top: 0px; width: ${'pr'};"></div>
      </div>
    </div>
  </a>
</div>






`;
WA.templates['nivelfichaslider.2'] = WA.templater`

        
        ${['cond', 'datachefconectado>client>p','nivelfichanormalslider']}
        
    
        
      `;
WA.templates['nivelfichanormalslider'] = WA.templater`

        `;
WA.templates['nivelfichanormalslider.none'] = WA.templater`

          ${['cond', 'siteorigin','origenfeedinternoslider']}
          
        `;
WA.templates['origenfeedinternoslider.kiwi'] = WA.templater`

            <div class="feedficha-bloqueo cont-interno-slider">
              <div class="icon-k7-kiwipro" alt="KiwiPro" title="KiwiPro" style="color: #ffffff; font-size: 19px;"></div>
            </div>
          `;
WA.templates['nivelfichaslider.3'] = WA.templater`

        
        ${['cond', 'datachefconectado>client>p','nivelfichaproslider']}
        
    
        
      `;
WA.templates['nivelfichaproslider'] = WA.templater`

        `;
WA.templates['nivelfichaproslider.none'] = WA.templater`

          ${['cond', 'siteorigin','origenfeedpro']}
          
        `;
WA.templates['origenfeedpro.kiwi'] = WA.templater`

            <div class="feedficha-bloqueo cont-pro-slider">
              <div class="icon-k7-kiwipro" alt="KiwiPro" title="KiwiPro" style="color: #ffffff; font-size: 19px;"></div>
            </div>
          `;
WA.templates['estatusrecetaslider.10'] = WA.templater`

    <div class="recetasliderpro-areanombreficha" style="position: relative;">
      <div class="icon-k7-kiwipro recetaslider-icon-pro" style="box-sizing: border-box; position: relative; width: 20px; height: 20px; background-color: #8eb4b1; border-radius: 100%; color: #ffffff; margin: 0px 0px 0px 10px; display: flex; align-items: center; justify-content: center; font-size: 13px;"></div>
      
      <div class="recetasliderpro-nombreficha" style="box-sizing: border-box; color: #8eb4b1; font-family: crimsonpro-semibold; /*font-size: 13px;*/ letter-spacing: 0.5px; /*line-height: 14px;*/ overflow: hidden; padding: 0px 10px; position: absolute; top: 50%; right: 0px; transform: translateY(-50%); text-align: left; text-transform: uppercase; width: calc(100% - 30px);">
        ${'n'}
      </div>
    </div>
    `;
WA.templates['estatusrecetaslider'] = WA.templater`

    <div class="recetaslider-areanombreficha" style="position: relative;">
      <div class="recetaslider-nombreficha" style="box-sizing: border-box; line-height: 14px; overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; text-transform: uppercase; top: 50%; transform: translateY(-50%); width: 100%;">
        ${'n'}
      </div>
    </div>
    `;
WA.templates['estatusrecetaslider.none'] = WA.templater`
`;
WA.templates['src-recetaslider'] = WA.templater`
/recetaimagen/${'k'}/${'i'}`;
WA.templates['src-recetaslider.none'] = WA.templater`
/img/static/logo-o-150.png`;
WA.templates['nivelfichaslider.1'] = WA.templater`
`;
WA.templates['feed_articuloslider'] = WA.templater`
<div id="${'x'}" class="tools articuloslider-ficha" data-type="a" data-key="${'k'}" style="float: left; position: relative; background-color: #ffffff; width: 145px; margin: 0px 4px 0px 0px;">
  <a href="${'pa'}">
  <img class="analyzethis" data-src="${['cond', 'i','src-articuloslider']}" data-width="145" data-height="145" data-webp="1" style="width: 145px; height: 145px; vertical-align: top;" />

  
  
  ${['cond', 's','estatusarticuloslider']}
  
  
  
  
  
  
  
  </a>
</div>









`;
WA.templates['estatusarticuloslider.none'] = WA.templater`
`;
WA.templates['src-articuloslider'] = WA.templater`
/articuloimagen/${'k'}/${'i'}`;
WA.templates['src-articuloslider.none'] = WA.templater`

  ${['cond', 'ip','src-altarticuloslider']}
  
  
  
`;
WA.templates['src-altarticuloslider.none'] = WA.templater`
/img/static/logo-o-150.png`;
WA.templates['src-altarticuloslider'] = WA.templater`
${'ip'}`;
WA.templates['estatusarticuloslider.10'] = WA.templater`

  <div class="articulosliderpro-areanombreficha" style="position: relative; overflow: hidden;">
    <div class="icon-k7-kiwipro articulosliderpro-icon-pro" style="box-sizing: border-box; position: relative; /*width: 20px; height: 20px;*/ background-color: #8eb4b1; border-radius: 100%; color: #ffffff; /*margin: 0px 0px 0px 10px;*/ display: flex; align-items: center; justify-content: center; /*font-size: 13px;*/"></div>
    
    <div class="articulosliderpro-nombreficha" style="box-sizing: border-box; color: #8eb4b1; font-family: crimsonpro-semibold; /*font-size: 13px;*/ letter-spacing: 0.5px; line-height: 15px; /*max-height: 32px;*/ overflow: hidden; padding: 0px 10px; position: absolute; top: 50%; right: 0px; transform: translateY(-50%); text-align: left; text-transform: uppercase; /*width: calc(100% - 30px);*/">
      ${'n'}
    </div>
  </div>
  `;
WA.templates['estatusarticuloslider'] = WA.templater`

  <div class="articuloslider-areanombreficha" style="position: relative;">
    <div class="articuloslider-nombreficha" style="box-sizing: border-box; line-height: 14px; overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; text-transform: uppercase; top: 50%; transform: translateY(-50%); width: 100%;">
      ${'n'}
    </div>
  </div>
  `;
WA.templates['feed_coleccion'] = WA.templater`
<div id="${'x'}" class="tools coleccion-ficha" data-type="cc" data-key="${'k'}" style="background-color: #ffffff; cursor: pointer; float: left; height: auto; margin: 5px 5px 10px 5px; position: relative; width: 46.77%;">
  <a href="${'pa'}">
    <div style="position: relative; width: 100%;">
      <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-coleccion']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-coleccion']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-coleccion']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-coleccion']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
    </div>
  </a>
  
  <div onclick="borrarcoleccion(${'k'});" style="background-color: #dddddd;border: 2px solid #ffffff;border-radius: 100%;cursor: pointer;height: 16px;position: absolute;right: -10px;top: -11px;width: 16px;z-index: 999;">
    <span class="icon-k7-close" style="color: #ffffff; font-size: 7px; left: 50%; position: absolute; top: 50%; transform: translateX(-50%) translateY(-50%);"></span>
  </div>
  
  <div style="position: relative;height: 52px;border-bottom: 1px solid #f4f6f4;">
    <div id="nombrecoleccion_${'k'}" onclick="vercoleccion(${'k'});" style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 46px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
      ${'n'}
    </div>
  </div>
  
  <div style="box-sizing: border-box; color: #aaaaaa; font-weight: normal; font-style: italic; font-size: 11px; line-height: 12px; overflow: hidden; position: relative; text-align: center; padding: 7px 10px 7px; width: 100%; display: table;">
    <div style="display: table-cell; vertical-align: middle; position: relative; width: 65%; padding: 0px 10px 0px 0px;">
      <div style="max-height: 26px; overflow: hidden;">${'cn'}</div>
    </div>
    
    <div class="boton-seguir-chef" style="display: table-cell; vertical-align: middle; position: relative; width: 35px; padding: 0px 0px 0px 0px; border: 1px solid #eeeeee; border-radius: 5px;" chef="">
      <div class="icon-k7-seguir-chef" style="font-size: 12px;"></div>
    </div>
  </div>
</div>







`;
WA.templates['src-coleccion'] = WA.templater`
/recetaimagen/${'k'}/${'i'}`;
WA.templates['src-coleccion.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_coleccionventa'] = WA.templater`


${['cond', 'i','portadacoleccion']}










`;
WA.templates['portadacoleccion'] = WA.templater`

<div id="${'x'}" class="tools coleccion-venta-soloportada" data-type="cv" data-key="${'k'}" style="float: left; overflow: hidden; position: relative; width: 46.77%; margin: 5px 5px 10px 5px; border-radius: 5px;">
  <a href="${'pa'}">
    <img class="analyzethis" alt="${'n'}" title="${'n'}" data-src="${['cond', 'i','imgcoleccion']}" data-width="320" data-height="420" data-webp="1" style="width: 100%; vertical-align: top;" />
  </a>
</div>




`;
WA.templates['imgcoleccion'] = WA.templater`
/coleccionventa/${'k'}/${'i'}`;
WA.templates['imgcoleccion.none'] = WA.templater`
`;
WA.templates['portadacoleccion.none'] = WA.templater`

<div id="${'x'}" class="tools coleccion-venta-ficha" data-type="cv" data-key="${'k'}" style="background-color: #ffffff; float: left; margin: 5px 5px 10px 5px; overflow: hidden; position: relative; width: 46.77%; box-shadow: 0px 0px 2px rgb(0, 0, 0, 0.4);">
  <a href="${'pa'}">
    <div class="coleccionventa-area">
    <img src="${['eval','KL.cdn7domains']}/img/static/dot-320x420.gif" style="width: 100%; vertical-align: top;" />
    <div style="position: absolute; width: 100%; top: 0px;">
      <div style="position: relative; width: 100%; display: flex; flex-wrap: wrap; justify-content: space-between;">
        
        <div style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49.8%;">
          <img class="analyzethis" data-src="${['cond', 'i1','coleccion1']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
        <div style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49.8%;">
          <img class="analyzethis" data-src="${['cond', 'i2','coleccion2']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
        <div style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49.8%;">
          <img class="analyzethis" data-src="${['cond', 'i3','coleccion3']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
        <div style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49.8%;">
          <img class="analyzethis" data-src="${['cond', 'i4','coleccion4']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      </div>

      
      <div style="clear: both; position: relative; height: 7.87vh;">
        <div style="box-sizing: border-box; color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; text-decoration: none; top: 50%; transform: translateY(-50%); width: 100%;">
          ${'n'}
        </div>
      </div>
    </div>
    </div>
  </a>

  <div class="feed-coleccionventa-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
    Colección de Venta
  </div>
</div>














`;
WA.templates['coleccion4'] = WA.templater`
/recetaimagen/${'ci4'}/${'i4'}`;
WA.templates['coleccion4.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['coleccion1'] = WA.templater`
/recetaimagen/${'ci1'}/${'i1'}`;
WA.templates['coleccion1.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['coleccion2'] = WA.templater`
/recetaimagen/${'ci2'}/${'i2'}`;
WA.templates['coleccion2.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['coleccion3'] = WA.templater`
/recetaimagen/${'ci3'}/${'i3'}`;
WA.templates['coleccion3.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_familiatip'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra tools feed-familiatip-ficha" data-type="ft" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('ft', '${'k'}');" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    <div style="position: relative; width: 100%;">
      <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i1','src-familiatip1']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i2','src-familiatip2']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i3','src-familiatip3']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i4','src-familiatip4']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
    </div>
    
    <div class="feed-familiatip-titulo-seccion" style="background-color: #704a98; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Familia
    </div>
    
    <div class="feed-familiatip-areanombre" style="position: relative; height: 46px; border-bottom: 1px solid #f4f6f4;">
      <div class="feed-familiatip-nombre" style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div class="feed-clasificaciontip-areadesctip" style="position: relative; height: 46px;">
      <div class="area-desc-clasificacion" style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        ${'d'}
      </div>
    </div>
  </a>
</div>
















`;
WA.templates['src-familiatip2.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiatip3'] = WA.templater`
/ss_secreto/${'ci3'}/${'i3'}`;
WA.templates['src-familiatip3.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiatip4'] = WA.templater`
/ss_secreto/${'ci4'}/${'i4'}`;
WA.templates['src-familiatip4.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiatip1'] = WA.templater`
/ss_secreto/${'ci1'}/${'i1'}`;
WA.templates['src-familiatip1.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiatip2'] = WA.templater`
/ss_secreto/${'ci2'}/${'i2'}`;
WA.templates['feed_confoto'] = WA.templater`
${['cond', 'tipoevento','feedfichaeventoconfoto']}





















`;
WA.templates['tipoconfoto.r'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: var(--verde-kiwi); box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Receta
</div>
`;
WA.templates['tipoconfoto.t'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: #e6007e; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Tip
</div>
`;
WA.templates['tipoconfoto.a'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: #24b2b3; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Blog
</div>
`;
WA.templates['feedfichaeventoconfoto'] = WA.templater`

  ${['cond', 's','estatusficha']}
  
  
  
  
  
  
  
`;
WA.templates['estatusficha.2'] = WA.templater`
`;
WA.templates['estatusficha.4'] = WA.templater`
`;
WA.templates['estatusficha'] = WA.templater`

  <div id="${'x'}" class="searchlist-muestra feed-confoto-receta-ficha" data-type="confoto" data-key="${'k'}" style="">
    
    <div class="perfil-fichatipo-{tipoevento}}" style="position: relative; display: flex; align-items: center; width: 100%;">
      <div class="perfil-txtdesde">
         ${'fecha'}
      </div>
      <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
    </div>

    
    <div class="perfil-data-ficha perfil-confoto">
      
      <div class="perfil-txtdesde" style="position: relative; height: 130px; padding: 0px;">
        <a href="${'pa'}">
          <img class="analyzethis" data-src="${['cond', 'ipa','src-imgperfilficha']}" data-width="200" data-height="200" data-webp="1" style="position: relative; width: 100%;" />
          ${['cond', 'type','tipoconfoto']}
        </a>
      </div>
      
      
      <div class="perfil-areamensaje" style="background-color: #f4f6f4;">
        ${['cond', 's','estatusfichapro']}
        
        
        
        
        
        
        
        

        
        <p class="confoto-descripcion-ficha" style="color: #777777; font-size: 12px; line-height: 14px; position: relative; margin: 3px 0px 0px; max-height: 58px; overflow: hidden;">
          ${'d'}
        </p>
        
      </div>
      
    </div>
  </div>
  `;
WA.templates['estatusfichapro.10'] = WA.templater`

        
        <div class="confoto-area-nombre-fichapro" style="position: relative; height: 44px; margin: 0px; width: 100%; display: flex; align-items: center;">
          <div class="icon-k7-kiwipro perfil-confoto-fichapro-icon" style="box-sizing: border-box; position: relative; width: 24px; height: 24px; background-color: var(--azul-kiwipro); border-radius: 100%; color: #ffffff; margin: 0px 0px 0px 5px; display: flex; align-items: center; justify-content: center; font-size: 14px;"></div>
          
          <a href="${'pa'}" class="perfil-confoto-nombrefichapro-centrado" style="box-sizing: border-box; color: var(--azul-kiwipro); font-family: crimsonpro-semibold; font-size: 14px; letter-spacing: 0.5px; line-height: 14px; max-height: 44px; overflow: hidden; padding: 0px 0px 0px 10px; position: absolute; top: 50%; right: 0px; transform: translateY(-50%); text-transform: uppercase; width: calc(100% - 30px);">
            ${'n'}
          </a>
        </div>
        
        `;
WA.templates['estatusfichapro'] = WA.templater`

        
        <div class="confoto-area-nombre-ficha" style="position: relative; height: 30px; margin: 0px; width: 100%;">
          <a class="confoto-nombre-ficha" href="${'pa'}" style="color: #343434; font-size: 13px; font-weight: bold; line-height: 14px; margin: 0px; text-transform: uppercase; position: absolute; max-height: 28px; overflow: hidden; top: 50%; transform: translateY(-50%);">
            ${'n'}
          </a>
        </div>
        
        `;
WA.templates['feedfichaeventoconfoto.none'] = WA.templater`
`;
WA.templates['src-imgperfilficha'] = WA.templater`
${'ipa'}`;
WA.templates['src-imgperfilficha.none'] = WA.templater`
/img/static/logo_o-400x300.png`;
WA.templates['tipoconfoto.p'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: var(--verde-kiwi); box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Producto
</div>
`;
WA.templates['feed_articulolarge'] = WA.templater`
<div id="${'x'}" class="tools feed-divarticulolarge" data-type="a" data-key="${'k'}" style="float: left; position: relative; background-color: #ffffff; width: 100%; margin: 0px 15px 0px 0px; padding: 0px 0px 20px 0px;">
  <a href="${'pa'}">
    <img class="analyzethis" data-src="${['cond', 'ip','src-articulolarge']}" data-width="400" data-height="300" data-webp="1" style="width: 100%; vertical-align: top;" />
    <div class="feed-articulolarge-thumb-titulo-seccion id_tema_${'cl'}" style="color: #ffffff; font-size: 10px; left: 0px; letter-spacing: 1px; max-width: 125px; padding: 5px 10px; position: absolute; text-transform: uppercase; top: 15px;">
      ${'cln'}
    </div>
    
    <h2 style="text-align: left; line-height: 20px; max-height: 42px; overflow: hidden; color: #333; font-size: 18px; font-weight: bold; text-transform: uppercase; padding: 15px 20px 0px;">
      ${'n'}
    </h2>
    <div style="margin: 5px 0px 0px; position: relative; font-size: 14px; text-align: left; line-height: 17px; color: #333; max-height: 52px; overflow: hidden; padding: 0px 20px;">
      ${'ms'}<span style="color: #8cc63e;">...continurar leyendo</span>
    </div>
  </a>
</div>







`;
WA.templates['src-articulolarge.none'] = WA.templater`
/img/static/logo_o-400x300.png`;
WA.templates['src-articulolarge'] = WA.templater`
${'ip'}`;
WA.templates['feed_clasificacionarticulo'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra feed-clasificacionarticulo-ficha" data-type="ca" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <a href="${'pa'}" style="text-decoration: none;">
    <div style="position: relative; width: 100%;">
      <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-clasificacionarticulo']}" data-width="150" data-height="150" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-clasificacionarticulo']}" data-width="150" data-height="150" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-clasificacionarticulo']}" data-width="150" data-height="150" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i','src-clasificacionarticulo']}" data-width="150" data-height="150" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
    </div>
    
    <div class="feed-clasificacionarticulo-tema id_tema_${'cl'}" style="box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Clasificación
    </div>
    
    <div style="position: relative; height: 44px; border-bottom: 1px solid #f4f6f4;">
      <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div style="position: relative; height: 44px;">
      <div style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        ${'description'}
      </div>
    </div>
  </a>
</div>







`;
WA.templates['src-clasificacionarticulo.none'] = WA.templater`
/img/static/logo-o-150.png`;
WA.templates['src-clasificacionarticulo'] = WA.templater`
/articuloimagen/${'k'}/${'i'}`;
WA.templates['feed_clasificaciontip'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra tools feed-clasificaciontip-ficha" data-type="ct" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('ct', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    <div style="position: relative; width: 100%;">
      <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i1','src-clasificaciontip1']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i2','src-clasificaciontip2']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i3','src-clasificaciontip3']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'i4','src-clasificaciontip4']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
    </div>
    
    <div class="feed-clasificaciontip-titulo-seccion" style="background-color: #e6007e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Clasificación
    </div>
    
    <div class="feed-clasificaciontip-areanombre" style="position: relative; height: 46px; border-bottom: 1px solid #f4f6f4;">
      <div class="feed-clasificaciontip-nombretip" style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div class="feed-clasificaciontip-areadesctip" style="position: relative; height: 46px;">
      <div class="feed-clasificaciontip-desctip" style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        ${'d'}
      </div>
    </div>
  </a>
</div>















`;
WA.templates['src-clasificaciontip1'] = WA.templater`
/ss_secreto/${'ci1'}/${'i1'}`;
WA.templates['src-clasificaciontip1.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificaciontip2'] = WA.templater`
/ss_secreto/${'ci2'}/${'i2'}`;
WA.templates['src-clasificaciontip2.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificaciontip3'] = WA.templater`
/ss_secreto/${'ci3'}/${'i3'}`;
WA.templates['src-clasificaciontip3.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-clasificaciontip4'] = WA.templater`
/ss_secreto/${'ci4'}/${'i4'}`;
WA.templates['src-clasificaciontip4.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_sinfoto'] = WA.templater`
${['cond', 'tipoevento','feedfichaeventosinfoto']}











`;
WA.templates['feedfichaeventosinfoto'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra feed-sinfoto-ficha" data-type="sinfoto" data-key="${'k'}" style="">
  <div class="perfil-fichatipo-{tipoevento}}" style="position: relative; display: flex; align-items: center; width: 100%;">
    <div class="perfil-txtdesde">
       ${'fecha'}
    </div>
    <div class="perfil-areamensaje titmensaje"> ${'titulo'} </div>
  </div>

  
  <div class="perfil-areamensaje txt-descripcion-mensaje" style="background-color: #f4f6f4; border-top: 1px solid #dedede; width: 100%; color: #777777; font-size: 12px; line-height: 14px;">${'mensaje'}</div>
  
</div>
`;
WA.templates['feedfichaeventosinfoto.103'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra feed-sinfoto-ficha" data-type="sinfoto" data-key="${'k'}" style="">
  <div class="perfil-fichatipo-103" style="position: relative; display: flex; align-items: center; width: 100%;">
    <div class="perfil-txtdesde">
       ${'fecha'}
    </div>
    <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
  </div>
</div>
`;
WA.templates['feedfichaeventosinfoto.101'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra feed-sinfoto-ficha" data-type="sinfoto" data-key="${'k'}" style="">
  <div class="perfil-fichatipo-103" style="position: relative; display: flex; align-items: center; width: 100%;">
    <div class="perfil-txtdesde">
       ${'fecha'}
    </div>
    <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
  </div>
</div>
`;
WA.templates['feed_quiz'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra feed-quiz-ficha" data-type="q" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <a href="${'pa'}" class="feed-quiz-link" style="text-decoration: none;">
    <img class="analyzethis feed-quiz-img" data-src="${['cond', 'i','src-quizz']}" data-width="320" data-height="320" data-webp="1" style="position: relative; width: 100%; vertical-align: top;" />

    <div class="feed-quiz-thumb-titulo-seccion" style="background-color: #f76d85; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Quiz
    </div>

    
    <div class="feed-quiz-areanombreficha" style="/*height: 52px;*/ position: relative;">
      <div class="feed-quiz-nombrecentrado" style="box-sizing: border-box; color: #000000; font-size: 14px; font-weight: bold; line-height: 15px; /*max-height: 46px;*/ overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%;">
        ${'n'}
      </div>

      <div class="feed-quiz-desc" style="display: none;">
        ${'d'}
      </div>
      
      <div class="feed-quiz-txtconesta" style="display: none;">¡Contesta el Quiz!</div>
    </div>

    
    <div class="feed-quiz-rating" style="display: table; height: 13px; margin: 0px auto; position: relative;">
      <div style="color: #8cc63e; display: table-cell; font-family: 'source sans pro'; font-weight: normal; height: 13px; padding: 0px 5px 0px 0px; position: relative; vertical-align: middle;">
        ${'vr'}
      </div>
      <div class="feed-ficha icon-k7-estrellas-v" style="color: #8cc63e; display: table-cell; height: 13px; position: relative; vertical-align: middle; width: 62px;">
        <div class="feed-ficha icon-k7-estrellas-r" style="height: 13px; left: 0px; overflow: hidden; position: absolute; top: 0px; width: ${'pr'};"></div>
      </div>
    </div>

    
    <div style="border-top: 1px solid #f4f6f4; height: 30px; position: relative; margin: 5px 0px 0px 0px;">
      <div style="box-sizing: border-box; color: #aaaaaa; font-family: 'source sans pro'; font-size: 11px; font-style: italic; text-align: center; max-height: 25px; overflow: hidden; padding: 0px 10px; position: absolute; line-height: 12px; top: 50%; width: 100%; transform: translateY(-50%);">
         Chef Kiwilimón
      </div>
    </div>
  </a>
</div>







`;
WA.templates['src-quizz'] = WA.templater`
/quizz/${'k'}/${'i'}`;
WA.templates['src-quizz.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_newsletter'] = WA.templater`
<div id="${'x'}" class="feed-newsletter-ficha" style="width: 100%; position: relative; float: left;">
  <div style="box-sizing: border-box; min-width: 300px; width: 100%; margin: 0px auto; box-sizing: border-box; position: relative; background-color: #97d179;">
    <img src="${['eval','KL.cdn7domains']}/img/static/carta-news.gif" alt="" title="" style="position: relative; width: 100%;" />
    
    <h2 style="box-sizing: border-box; position: relative; width: 100%; font-family: museo-sans-bold; font-size: 21px; color: #222222; text-align: center; padding: 0px 15px;">
      Regístrate al newsletter
    </h2>
    
    <p style="box-sizing: border-box; font-family: museo-sans-semibold; font-size: 15px; color: #222222; text-align: center; padding: 0px 45px; line-height: 19px; margin: 3px 0px 0px;">
      y recibe las mejores recetas de kiwilimón.
    </p>
    
    
    
    <div style="box-sizing: border-box; position: relative; margin: 15px 0px 0px; box-sizing: border-box; width: 100%; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; padding: 0px 15px 20px;">
      <input id="newsletter" type="text" name="newsletter" placeholder="Escribe tu correo" style="box-sizing: border-box; font-size: 14px; padding: 8px 5px; width: 50%; border: 0px; font-family: museo-sans; height: 34px;" value="${'correoParaSuscribir'}" />
      
      <div onclick="KL.Modules.client.sendnewsletter();" style="box-sizing: border-box; background-color: #4aa351; cursor: pointer; color: #fffdfd; font-family: museo-sans; font-size: 14px; font-weight: normal; letter-spacing: 1px; padding: 10px 15px; text-align: center; text-transform: uppercase; width: 50%; height: 34px;">
        Suscribirme
      </div>
    </div>
    
  </div>
</div>




`;
WA.templates['feed_clientactivity'] = WA.templater`


${['cond', 'tipoevento','feedfichaeventoclientactivity']}





















































`;
WA.templates['numerosiguiendo.none'] = WA.templater`
`;
WA.templates['numerorecetas.none'] = WA.templater`
`;
WA.templates['numerocolecciones'] = WA.templater`

<div class="perfil-clientactivity-data-seguidor">
  <span style="margin: 0px 5px 0px 0px; font-size: 11px;">${'qc'}</span> Colecciones
</div>
`;
WA.templates['numerocolecciones.none'] = WA.templater`
`;
WA.templates['numerosiguiendo'] = WA.templater`

<div class="perfil-clientactivity-data-seguidor">
  <span style="margin: 0px 5px 0px 0px; font-size: 11px;">${'qg'}</span> Siguiendo
</div>
`;
WA.templates['imgusuariocrafto.none'] = WA.templater`

<img src="${['eval','KL.cdn7domains']}/craftologia/static/icono-usuario.svg" alt="${'fn'} ${'ln'}" title="${'fn'} ${'ln'}" style="background-color: #ffffff; background-image: none; border-radius: 100%; right: 0px; max-height: 66px; max-width: 66px; min-height: 62px; min-width: 62px; position: absolute; top: 50%; transform: translateY(-50%); width: 100%; box-sizing: border-box; padding: 2px; box-shadow: 0px 0px 2px rgb(0, 0, 0, 0.25);" />
`;
WA.templates['numeroseguidores'] = WA.templater`

<div class="perfil-clientactivity-data-seguidor">
  <span style="margin: 0px 5px 0px 0px; font-size: 11px;">${'qs'}</span> Seguidores
</div>
`;
WA.templates['numeroseguidores.none'] = WA.templater`
`;
WA.templates['feedfichaeventoclientactivity'] = WA.templater`

  ${['cond', 'siteorigin','clientorigensigue']}
  
  
  
  
  
  
  
  
  
  
  
`;
WA.templates['clientorigensigue'] = WA.templater`

    ${['cond', 's','estatusperfilchef']}
    
    
    
    
    
    
    
    
    
    
  `;
WA.templates['estatusperfilchef.none'] = WA.templater`

      <div id="${'x'}" class="searchlist-muestra tipo-${'tipoevento'} perfil-kiwi-clientactivity-ficha" data-type="clientactivity" data-key="${'k'}">
        <div class="perfil-fichatipo-{tipoevento}}" style="position: relative; display: flex; align-items: center; width: 100%;">
          <div class="perfil-txtdesde">
             ${'fecha'}
          </div>
          <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
        </div>
        
        <div class="perfil-areamensaje" style="background-color: #f4f6f4; border-top: 1px solid #dedede; width: 100%; color: #777777; font-size: 12px; line-height: 14px;">
          
        </div>
      </div>
    `;
WA.templates['estatusperfilchef.1'] = WA.templater`

      <div id="${'x'}" class="searchlist-muestra tipo-${'tipoevento'} perfil-kiwi-clientactivity-ficha" data-type="clientactivity" data-key="${'k'}">
        <div class="perfil-fichatipo-{tipoevento}}" style="position: relative; display: flex; align-items: center; width: 100%;">
          <div class="perfil-txtdesde">
             ${'fecha'}
          </div>
          <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
        </div>
        
        <div class="perfil-contfichatipo-{tipoevento}} clientactivity-data" style="position: relative; width: 100%; background-image: url('${'bg'}'); background-position: right center; background-repeat: no-repeat; background-size: cover;">
          <div class="client-bg-sombra-externa" style="background-color: #000000; left: 0; opacity: 0.3; position: absolute; top: 0px; bottom: 0px; width: 100%;"></div>
          
          <div style="position: relative; display: flex; width: 100%; background: rgba(0, 0, 0, 0) linear-gradient(to left, rgba(255, 255, 255, 0) 50%, #070707 175%);">
            
            <div class="perfil-txtdesde" style="height: 135px; width: 86px;">
              <a href="${'pa'}">
                ${['cond', 'siteorigen','origenimgusuario']}
                
                
                
                
                
              </a>
            </div>
          
            
            <div class="clientactivity-area-data-usuario" style="box-sizing: border-box; position: relative; padding: 0px 20px; width: calc(100% - 86px); display: flex; flex-direction: column; justify-content: center;">
              <a href="${'pa'}" class="clientactivity-usuario-nombre-comp" style="color: #ffffff; font-style: italic; font-family: 'times'; font-weight: bold; font-size: 14px; display: flex;">
                ${'fn'} ${'ln'}
              </a>
              
              <div style="display: flex; flex-direction: column; position: relative;">
                ${['cond', 'qr','numerorecetas']}
              
                ${['cond', 'qt','numerotips']}

                ${['cond', 'qc','numerocolecciones']}
                
                ${['cond', 'qs','numeroseguidores']}
                
                ${['cond', 'qg','numerosiguiendo']}
              </div>
            </div>
          </div>
        </div>
      </div>
    `;
WA.templates['origenimgusuario'] = WA.templater`

                  ${['cond', 'av','imgusuario']}
                `;
WA.templates['origenimgusuario.crafto'] = WA.templater`

                  ${['cond', 'av','imgusuariocrafto']}
                `;
WA.templates['clientorigensigue.crafto'] = WA.templater`

    ${['cond', 's','estatusperfilcreador']}
    
    
    
    
    
    
    
    
    
    
    
  `;
WA.templates['estatusperfilcreador.1'] = WA.templater`

      <div id="${'x'}" class="searchlist-muestra tipo-${'tipoevento'} perfil-creador-clientactivity-ficha" data-type="clientactivity" data-key="${'k'}">
        <div class="perfil-fichatipo-{tipoevento}}" style="position: relative; display: flex; align-items: center; width: 100%;">
          <div class="perfil-txtdesde">
             ${'fecha'}
          </div>
          <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
        </div>
        
        <div class="perfil-contfichatipo-{tipoevento}} clientactivity-data" style="position: relative; width: 100%; background-image: url('${'bg'}'); background-position: right center; background-repeat: no-repeat; background-size: cover;">
          <div class="client-bg-sombra-externa" style="background-color: #000000; left: 0; opacity: 0.3; position: absolute; top: 0px; bottom: 0px; width: 100%;"></div>
          
          <div style="position: relative; display: flex; width: 100%; background: rgba(0, 0, 0, 0) linear-gradient(to left, rgba(255, 255, 255, 0) 50%, #070707 175%);">
            
            <div class="perfil-txtdesde" style="height: 135px; width: 86px;">
              <a href="${'pa'}">
                ${['cond', 'siteorigen','origenimgusuario']}
                
                
                
                
                
              </a>
            </div>
          
            
            <div class="clientactivity-area-data-usuario" style="box-sizing: border-box; position: relative; padding: 0px 20px; width: calc(100% - 86px); display: flex; flex-direction: column; justify-content: center;">
              <a href="${'pa'}" class="clientactivity-usuario-nombre-comp" style="color: #ffffff; font-style: italic; font-family: 'times'; font-weight: bold; font-size: 14px; display: flex;">
                ${'fn'} ${'ln'}
              </a>
              
              <div style="display: flex; flex-direction: column; position: relative;">
                ${['cond', 'qr','numerorecetas']}
              
                ${['cond', 'qt','numerotips']}

                ${['cond', 'qc','numerocolecciones']}
                
                ${['cond', 'qs','numeroseguidores']}
                
                ${['cond', 'qg','numerosiguiendo']}
              </div>
            </div>
          </div>
        </div>
      </div>
    `;
WA.templates['origenimgusuario'] = WA.templater`

                  ${['cond', 'av','imgusuario']}
                `;
WA.templates['origenimgusuario.crafto'] = WA.templater`

                  ${['cond', 'av','imgusuariocrafto']}
                `;
WA.templates['estatusperfilcreador.none'] = WA.templater`

      <div id="${'x'}" class="searchlist-muestra tipo-${'tipoevento'} perfil-creador-clientactivity-ficha" data-type="clientactivity" data-key="${'k'}">
        <div class="perfil-fichatipo-{tipoevento}}" style="position: relative; display: flex; align-items: center; width: 100%;">
          <div class="perfil-txtdesde">
             ${'fecha'}
          </div>
          <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
        </div>
        
        <div class="perfil-areamensaje" style="background-color: #f4f6f4; border-top: 1px solid #dedede; width: 100%; color: #777777; font-size: 16px; line-height: 22px;">
          
        </div>
      </div>
    `;
WA.templates['imgusuariocrafto'] = WA.templater`

<img class="analyzethis clientactivity-avatar-crafto" data-src="${'av'}" data-width="62" data-height="62" data-webp="1" alt="${'fn'} ${'ln'}" title="${'fn'} ${'ln'}" style="background-color: ${['cond', 'co','imgcolorfondo']}; background-image: none; border-radius: 100%; right: 0px; max-height: 66px; max-width: 66px; min-height: 62px; min-width: 62px; position: absolute; top: 50%; transform: translateY(-50%); width: 100%; box-sizing: border-box; padding: 2px; box-shadow: 0px 0px 2px rgb(0, 0, 0, 0.25);" />
`;
WA.templates['imgusuario.none'] = WA.templater`

<img src="${['eval','KL.cdn7domains']}/kiwilimon/static/icono-usuario.svg" alt="${'fn'} ${'ln'}" title="${'fn'} ${'ln'}" style="background-color: #ffffff; background-image: none; border-radius: 100%; right: 0px; max-height: 66px; max-width: 66px; min-height: 62px; min-width: 62px; position: absolute; top: 50%; transform: translateY(-50%); width: 100%; box-sizing: border-box; padding: 2px; box-shadow: 0px 0px 2px rgb(0, 0, 0, 0.25);" />
`;
WA.templates['imgcolorfondo'] = WA.templater`

${'co'}
`;
WA.templates['numerorecetas'] = WA.templater`

<div class="perfil-clientactivity-data-seguidor">
  <span style="margin: 0px 5px 0px 0px; font-size: 11px;">${'qr'}</span> Recetas
</div>
`;
WA.templates['imgusuario'] = WA.templater`

<img class="analyzethis clientactivity-avatar-kl" data-src="${'av'}" data-width="62" data-height="62" data-webp="1" alt="${'fn'} ${'ln'}" title="${'fn'} ${'ln'}" style="background-color: ${['cond', 'co','imgcolorfondo']}; background-image: none; border-radius: 100%; right: 0px; max-height: 66px; max-width: 66px; min-height: 62px; min-width: 62px; position: absolute; top: 50%; transform: translateY(-50%); width: 100%; box-sizing: border-box; padding: 2px; box-shadow: 0px 0px 2px rgb(0, 0, 0, 0.25);" />
`;
WA.templates['numerotips'] = WA.templater`

<div class="perfil-clientactivity-data-seguidor">
  <span style="margin: 0px 5px 0px 0px; font-size: 11px;">${'qt'}</span> Tips
</div>
`;
WA.templates['imgcolorfondo.none'] = WA.templater`

#ffffff
`;
WA.templates['numerotips.none'] = WA.templater`
`;
WA.templates['feed_fotoclasificaciones'] = WA.templater`
${['cond', 'tipoevento','feedfichaeventofotoclasificaciones']}













































































`;
WA.templates['tipofotoclasificaciones.ft'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: #704a98; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Familia
</div>
`;
WA.templates['tipofotoclasificaciones.fr'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: #fca032; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Familia
</div>
`;
WA.templates['clasifarticuloimg3'] = WA.templater`

/articuloimagen/${'ci3'}/${'i3'}
`;
WA.templates['clasifimg1.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasiftipimg4'] = WA.templater`

/ss_secreto/${'ci4'}/${'i4'}
`;
WA.templates['clasifarticuloimg2'] = WA.templater`

/articuloimagen/${'ci2'}/${'i2'}
`;
WA.templates['clasifimg3.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasifarticuloimg3.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['tipofotoclasificaciones.cr'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: #fca032; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Clasificación
</div>
`;
WA.templates['clasiftipimg2.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasifarticuloimg2.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasifimg4'] = WA.templater`

/recetaimagen/${'ci4'}/${'i4'}
`;
WA.templates['clasiftipimg4.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasifarticuloimg1.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['tipofotoclasificaciones.ct'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: #e6007e; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Clasificación
</div>
`;
WA.templates['clasifimg2'] = WA.templater`

/recetaimagen/${'ci2'}/${'i2'}
`;
WA.templates['clasiftipimg3.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasifimg2.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasiftipimg1'] = WA.templater`

/ss_secreto/${'ci1'}/${'i1'}
`;
WA.templates['clasifimg3'] = WA.templater`

/recetaimagen/${'ci3'}/${'i3'}
`;
WA.templates['clasifarticuloimg4'] = WA.templater`

/articuloimagen/${'ci4'}/${'i4'}
`;
WA.templates['clasifarticuloimg4.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasifimg4.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['clasifimg1'] = WA.templater`

/recetaimagen/${'ci1'}/${'i1'}
`;
WA.templates['clasiftipimg3'] = WA.templater`

/ss_secreto/${'ci3'}/${'i3'}
`;
WA.templates['feedfichaeventofotoclasificaciones'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra tipo-${'tipoevento'} feed-fotoclasificaciones-ficha" data-type="fotoclasificaciones" data-key="${'k'}">
  <div class="perfil-fichatipo-{tipoevento}}" style="position: relative; display: flex; align-items: center; width: 100%;">
    <div class="perfil-txtdesde">
       ${'fecha'}
    </div>
    <div class="perfil-areamensaje titmensaje">${'titulo'}</div>
  </div>
  
  <div class="perfil-contfichatipo-502 fotoclasificaciones-data" style="position: relative; width: 100%;">
    <div style="position: relative; display: flex; width: 100%;">
      <a href="${'pa'}">
        
        <div class="perfil-txtdesde" style="border-right: 1px solid #ffffff; display: flex; flex-wrap: wrap; justify-content: space-evenly; align-content: center; position: relative; padding: 0px;">

          ${['cond', 'type','tipofotoclasificaciones']}
          
          ${['cond', 'type','tipofichaactividad']}
          
          



          
          



          
          



          

        </div>
        
      </a>
    
      
      <div class="perfil-areamensaje" style="position: relative; background-color: #f4f6f4;">
        <div style="height: 30px; margin: 0px; position: relative; width: 100%;">
          <a href="${'pa'}">
            <h2 style="color: #343434; font-size: 13px; font-weight: bold; line-height: 14px; margin: 0px; text-transform: uppercase; position: absolute; max-height: 28px; overflow: hidden; top: 50%; transform: translateY(-50%);">
              ${'n'}
            </h2>
          </a>
        </div>
        
        <p style="color: #777777; font-size: 12px; line-height: 14px; position: relative; margin: 3px 0px 0px; max-height: 72px; overflow: hidden;">
          ${'d'}
        </p>
      </div>
    </div>
    
  </div>
</div>
`;
WA.templates['tipofichaactividad.ca'] = WA.templater`

            <div class="clasificacionarticulo-${'ci1'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i1','clasifarticuloimg1']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="clasificacionarticulo-${'ci2'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i2','clasifarticuloimg2']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="clasificacionarticulo-${'ci3'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i3','clasifarticuloimg3']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          
            <div class="clasificacionarticulo-${'ci4'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i4','clasifarticuloimg4']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          `;
WA.templates['tipofichaactividad.ft'] = WA.templater`

            <div class="familiatip-${'ci1'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i1','clasiftipimg1']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="familiatip-${'ci2'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i2','clasiftipimg2']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="familiatip-${'ci3'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i3','clasiftipimg3']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          
            <div class="familiatip-${'ci4'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i4','clasiftipimg4']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          `;
WA.templates['tipofichaactividad.ct'] = WA.templater`

            <div class="clasificaciontip-${'ci1'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i1','clasiftipimg1']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="clasificaciontip-${'ci2'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i2','clasiftipimg2']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="clasificaciontip-${'ci3'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i3','clasiftipimg3']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          
            <div class="clasificaciontip-${'ci4'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i4','clasiftipimg4']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          `;
WA.templates['tipofichaactividad'] = WA.templater`

            <div class="clasificacionreceta-${'ci1'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i1','clasifimg1']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="clasificacionreceta-${'ci2'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i2','clasifimg2']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>

            <div class="clasificacionreceta-${'ci3'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i3','clasifimg3']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          
            <div class="clasificacionreceta-${'ci4'}" style="margin: 0px 0px 1px; overflow: hidden; position: relative; width: 49%;">
              <img class="analyzethis" data-src="${['cond', 'i4','clasifimg4']}" data-width="160" data-height="160" data-webp="1" style="vertical-align: top; width: 100%; display: block; position: relative;" />
            </div>
          `;
WA.templates['clasiftipimg1.none'] = WA.templater`

/img/static/logo_o-400x300.png
`;
WA.templates['tipofotoclasificaciones.ca'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: #24b2b3; box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Clasificación
</div>
`;
WA.templates['tipofotoclasificaciones.kr'] = WA.templater`

<div class="feed-receta-titulo-seccion" style="background-color: var(--verde-kiwi); box-sizing: border-box; color: #ffffff; font-size: 11px; left: 0px; letter-spacing: 1px; max-width: 140px; padding: 8px 13px; position: absolute; text-transform: uppercase; top: 15px;">
  Compilación
</div>
`;
WA.templates['clasiftipimg2'] = WA.templater`

/ss_secreto/${'ci2'}/${'i2'}
`;
WA.templates['clasifarticuloimg1'] = WA.templater`

/articuloimagen/${'ci1'}/${'i1'}
`;
WA.templates['feed_compilacionrecetaslider'] = WA.templater`

<div id="${'x'}" class="tools compilacionrecetaslider-ficha" data-type="kr" data-key="${'k'}" style="background-color: #ffffff; display: table; float: left; margin: 0px 4px; position: relative; width: 145px;">
  <a href="${'pa'}">
    <div style="width: 145px; height: 145px; position: relative;">
      <img class="analyzethis" data-src="${['cond', 'i','src-compilacionrecetaslider']}" data-width="145" data-height="145" data-webp="1" style="width: 145px; height: 145px; vertical-align: top;" />
      ${['cond', 'v','feed_video']}
    </div>

    
    
    <div class="compilacionrecetaslider-areanombreficha" style="position: relative;">
      
      <div class="compilacionrecetaslider-nombreficha" style="box-sizing: border-box; line-height: 14px; overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; text-transform: uppercase; top: 50%; transform: translateY(-50%); width: 100%;">
        ${'n'}
      </div>
    </div>
  </a>
</div>







`;
WA.templates['src-compilacionrecetaslider'] = WA.templater`
/menu/${'k'}/${'i'}`;
WA.templates['src-compilacionrecetaslider.none'] = WA.templater`
/img/static/logo-o-150.png`;
WA.templates['feed_tipslider'] = WA.templater`
<div id="${'x'}" class="tools tipslider-ficha" data-type="t" data-key="${'k'}" style="background-color: #ffffff; display: table; float: left; margin: 0px 4px; position: relative; width: 145px;">
  <a href="${'pa'}">
    <div style="width: 145px; height: 145px; position: relative;">
      <img class="analyzethis" data-src="${['cond', 'i','src-tipslider']}" data-width="145" data-height="145" data-webp="1" style="position: relative; width: 145px; height: 145px; vertical-align: top;" />
      ${['cond', 'v','feed_video']}

      
      ${['cond', 'level','nivelfichatipslider']}
      

      
  
      
    </div>

    <div class="tipslider-areanombreficha" style="position: relative;">

      
      
      ${['cond', 's','estatustipslider']}

      
      
      

    </div>

    
    <div class="tipslider-rating" style="height: 13px; margin: 0px auto; position: relative;">
      <div class="tipslider-rating-numero" style="color: #8cc63e; display: table-cell; font-family: 'source sans pro'; font-weight: normal; height: 13px; padding: 0 5px 0 0; position: relative; vertical-align: middle;">
        ${'vr'}
      </div>
      <div class="feed-ficha icon-k7-estrellas-v" style="/*color: #8cc63e;*/ display: table-cell; height: 13px; position: relative; vertical-align: middle; width: 62px;">
        <div class="feed-ficha icon-k7-estrellas-r" style="height: 13px; left: 0px; overflow: hidden; position: absolute; top: 0px; width: ${'pr'};"></div>
      </div>
    </div>
  </a>
</div>






`;
WA.templates['nivelfichatipslider.3'] = WA.templater`

        
        ${['cond', 'datachefconectado>client>p','nivelfichatipproslider']}
        
    
        
      `;
WA.templates['nivelfichatipproslider'] = WA.templater`

        `;
WA.templates['nivelfichatipproslider.none'] = WA.templater`

          ${['cond', 'siteorigin','origenfeedinternotipproslider']}
          
        `;
WA.templates['origenfeedinternotipproslider.kiwi'] = WA.templater`

            <div class="feedficha-bloqueo cont-pro-slider">
              <div class="icon-k7-kiwipro" alt="KiwiPro" title="KiwiPro" style="color: #ffffff; font-size: 19px;"></div>
            </div>
          `;
WA.templates['estatustipslider.10'] = WA.templater`

      <div class="tipsliderpro-nombreficha" style="display: flex; align-items: center; justify-content: space-between;">
        <div class="icon-k7-kiwipro tipsliderpro-icon" style="box-sizing: border-box; position: relative; width: 30px; height: 30px; background-color: #8eb4b1; border-radius: 100%; color: #ffffff; margin: 0px; display: flex; align-items: center; justify-content: center; font-size: 20px;"></div>
        <div class="tipsliderpro-nombreficha-centrado" style="box-sizing: border-box; padding: 0px; width: calc(100% - 40px); position: relative; max-height: 46px; overflow: hidden; color: #8eb4b1; font-family: crimsonpro-semibold; font-size: 16px; letter-spacing: 0.5px; line-height: 15px; text-align: left; text-transform: uppercase;">
          ${'n'}
        </div>
      </div>
      `;
WA.templates['estatustipslider'] = WA.templater`

      <div class="tipslider-nombreficha" style="box-sizing: border-box; line-height: 15px; overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; text-transform: uppercase; top: 50%; transform: translateY(-50%); width: 100%;">
        ${'n'}
      </div>
      `;
WA.templates['src-tipslider'] = WA.templater`
/ss_secreto/${'k'}/${'i'}`;
WA.templates['src-tipslider.none'] = WA.templater`
/img/static/logo-o-150.png`;
WA.templates['nivelfichatipslider.1'] = WA.templater`
`;
WA.templates['nivelfichatipslider.2'] = WA.templater`

        
        ${['cond', 'datachefconectado>client>p','nivelfichatipnormalslider']}
        
    
        
      `;
WA.templates['nivelfichatipnormalslider'] = WA.templater`

        `;
WA.templates['nivelfichatipnormalslider.none'] = WA.templater`

          ${['cond', 'siteorigin','origenfeedinternotipslider']}
          
        `;
WA.templates['origenfeedinternotipslider.kiwi'] = WA.templater`

            <div class="feedficha-bloqueo cont-interno-slider">
              <div class="icon-k7-kiwipro" alt="KiwiPro" title="KiwiPro" style="color: #ffffff; font-size: 19px;"></div>
            </div>
          `;
WA.templates['feed_productoslider'] = WA.templater`
${['cond', 'k','claverecetario']}














`;
WA.templates['claverecetario'] = WA.templater`

<div id="${'x'}" class="tools productoslider-ficha" data-type="p" data-key="${'k'}" style="float: left; position: relative; width: 250px; margin-right: 15px; display: table; background-color: white;">
  <a href="${'pa'}">
    <img class="analyzethis" data-src="${['cond', 'i','src-productoslider']}" data-width="250" data-height="250" data-webp="1" alt="${'n'}" title="${'n'}" style="width: 250px; height: 250px; vertical-align: top;" />
  </a>
</div>
`;
WA.templates['src-productoslider'] = WA.templater`
/productoventa/${'k'}/${'i'}`;
WA.templates['src-productoslider.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['claverecetario.106'] = WA.templater`
`;
WA.templates['feed_payload_none'] = WA.templater`
`;
WA.templates['feed_payload'] = WA.templater`
${['call', '','t','feed_']}`;
WA.templates['feed_articuloresumen'] = WA.templater`


<div id="${'x'}" class="tools feed-articuloresumen-ficha" data-type="a" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <a href="${'pa'}" style="text-decoration: none;">
    <img class="analyzethis" data-src="${['cond', 'i','src-articuloresumen']}" data-width="320" data-height="320" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
    
    <div style="background-color: #24b2b3; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      
    </div>
    
    <div style="position: relative; height: 38px;">
      <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div style="position: relative; height: 24px;">
      <div style="color: #777777; font-size: 9px; line-height: 9px; max-height: 19px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-65%); width: 100%; padding: 0px 10px 2px; box-sizing: border-box;">
        ${'description'}
      </div>
    </div>
    
    <div style="position: relative; height: 26px; border-top: 1px solid #f4f6f4;">
      <div class="feed-articuloresumen-tema id_tema_${'cl'}" style="font-size: 11px; text-transform: uppercase; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-50%); text-align: center; padding: 0px 10px; width: 100%; box-sizing: border-box;">
        ${'cln'}
      </div>
    </div>
  </a>
</div>







`;
WA.templates['src-articulo'] = WA.templater`
${'ip'}`;
WA.templates['src-articulo.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-articuloresumen'] = WA.templater`
/articuloimagen/${'k'}/${'i'}`;
WA.templates['src-articuloresumen.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_compilacionreceta'] = WA.templater`

<div id="${'x'}" class="tools feed-compilacionreceta-ficha" data-type="kr" data-key="${'k'}" style="background-color: #ffffff; float: left; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('kr', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    <div class="feed-compilacionreceta-divimg" style="width: 100%; position: relative;">
      <img class="analyzethis" data-src="${['cond', 'i','src-compilacionreceta']}" data-width="320" data-height="320" data-webp="1" style="position: relative; vertical-align: top; width: 100%;" />
      ${['cond', 'v','feed_video']}
    </div>
    
    <div class="feed-compilacionreceta-titulo-seccion" style="background-color: #8cc63e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Compilación
    </div>
    
    
    <div class="feed-compilacionreceta-areanombreficha" style="position: relative; border-bottom: 1px solid #f4f6f4;">
      <div class="feed-compilacionreceta-nombrecentrado" style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; /*max-height: 30px;*/ overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    
    <div class="feed-compilacionreceta-descripcion" style="position: relative;">
      <div class="feed-compilacionreceta-desccentrado" style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        ${'d'}
      </div>
    </div>
  </a>
</div>







`;
WA.templates['src-compilacionreceta'] = WA.templater`
/menu/${'k'}/${'i'}`;
WA.templates['src-compilacionreceta.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_tip'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra tools feed-tip-ficha" data-type="t" data-key="${'k'}" style="background-color: #ffffff; float: left; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('t', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    <div class="feed-tip-ficha-horizontal">
      <div class="feed-divimagenficha" style="position: relative; width: 100%;">
        <img class="analyzethis" data-src="${['cond', 'i','src-tip']}" data-width="320" data-height="320" data-webp="1" style="position: relative; width: 100%; vertical-align: top;" />
        ${['cond', 'v','feed_video']}
        
      
      </div>

      <div class="feed-tip-thumb-titulo-seccion" style="background-color: #e6007e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
        Tip
      </div>

      
      <div class="feed-tip-areanombreficha" style="/*height: 52px;*/ position: relative;">
        
        <div class="feed-tip-nombrecentrado" style="box-sizing: border-box; color: #000000; font-size: 14px; font-weight: bold; overflow: hidden; padding: 0px 10px; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%;">
          
          
          ${['cond', 's','estatustip']}
    
          
          
          
          
          
          
          
          
          <div class="feed-tip-descripcionficha" style="display: none;">
            ${'ms'}
          </div>
        </div>
        
        
        <div class="feed-tip-ficha-linkvertip" style="display: none; ">
          Ver el tip <div class="icon-k7-link-vertip" style="color: #8cc63e; display: inline-block; vertical-align: middle; font-size: 10px; margin: 0px 0px 0px 5px;"></div>
        </div>
      </div>

      
      <div class="feed-ficha-tip-rating" style="display: table; height: 13px; margin: 0px auto; position: relative;">
        <div class="feed-ficha-tip-numrating" style="display: table-cell; font-family: 'source sans pro'; font-weight: normal; height: 13px; padding: 0px 5px 0px 0px; position: relative; vertical-align: middle;">
          ${'vr'}
        </div>
        <div class="feed-ficha icon-k7-estrellas-v" style="display: table-cell; height: 13px; position: relative; vertical-align: middle; width: 62px;">
          <div class="feed-ficha icon-k7-estrellas-r" style="height: 13px; left: 0px; overflow: hidden; position: absolute; top: 0px; width: ${'pr'};"></div>
        </div>
      </div>

      
      <div class="feed-tip-areanombrechef" style="border-top: 1px solid #f4f6f4; height: 30px; position: relative; margin: 5px 0px 0px 0px;">
        <div class="feed-tip-nombrechef-duenotip" style="box-sizing: border-box; color: #aaaaaa; font-family: 'source sans pro'; font-size: 11px; font-style: italic; text-align: center; max-height: 25px; overflow: hidden; padding: 0px 10px; position: absolute; line-height: 12px; top: 50%; width: 100%; transform: translateY(-50%);">
          ${'cn'}
        </div>
      </div>
    </div>
  </a>
</div>











`;
WA.templates['estatustip.10'] = WA.templater`

          <div class="feed-tip-area-nombrefichapro" style="display: flex; align-items: center; justify-content: space-between;">
            <div class="icon-k7-kiwipro feed-tippro-icon" style="box-sizing: border-box; position: relative; width: 20px; height: 20px; background-color: #8eb4b1; border-radius: 100%; color: #ffffff; margin: 0px; display: flex; align-items: center; justify-content: center; font-size: 13px;"></div>
            
            <div class="feed-tip-nombreficha-centrado" style="box-sizing: border-box; padding: 0px; width: calc(100% - 30px); position: relative; max-height: 42px; overflow: hidden; color: #8eb4b1; font-family: crimsonpro-semibold; font-size: 15px; letter-spacing: 0.5px; line-height: 15px; text-align: left; text-transform: uppercase;">
              ${'n'}
            </div>
          </div>
          `;
WA.templates['estatustip'] = WA.templater`

          <div class="feed-tip-titulonombre">
            ${'n'}
          </div>
          `;
WA.templates['src-tip'] = WA.templater`
/ss_secreto/${'k'}/${'i'}`;
WA.templates['src-tip.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_articulo'] = WA.templater`


<div id="${'x'}" class="tools searchlist-muestra feed-articulo-ficha" data-type="a" data-key="${'k'}">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('a', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" class="feed-articulo-href-articulo" style="text-decoration: none;">
  <div class="feed-articulo-divcontenido">
    <div class="feed-articulo-divimg-articulo">
      <img class="analyzethis" data-src="${['cond', 'i','src-articuloi']}" data-width="640" data-height="640" data-webp="1" alt="${'n'}" title="${'n'}" style="position: relative; width: 100%; vertical-align: top;" />
      
      <div class="id_tema_${'cl'} feed-articulo-titulo-nombreseccion" style="display: none;">
        ${'cln'}
      </div>
    </div>
    
    <div class="id_tema_${'cl'} feed-articulo-titulo-seccion" style="background-color: #24b2b3; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Blog
    </div>
    
    <div class="feed-articulo-divtextos-articulo">
      <div class="feed-articulo-area-divtextos-articulo">
    
        
        ${['cond', 's','estatusarticulo']}

        
    
        
    
        

        <div class="feed-articulo-nombre-autor" style="display: none;">
          ${'cn'}
        </div>

        
        <div class="feed-articulo-desc-articulo">
          <div class="feed-articulo-area-desc-articulo">
            ${'ms'}
          </div>
        </div>

        
        <div class="feed-articulo-desc-articulo-home" style="display: none;">
          <div class="feed-articulo-area-desc-articulo">
            ${'mstc'}
          </div>
        </div>
        
        <div class="feed-articulo-cont-lectura" style="display: none;">
          Continuar leyendo
        </div>
      </div>
    </div>

    <div class="feed-articulo-area-rating" style="display: none;">
      ${['cond', 'vr','ratingarticulo']}
    </div>
    
    <div class="feed-articulo-clasificacion-articulo">
      <div class="feed-articulo-area-nombre-clasificacion">
        ${'cln'}
      </div>
    </div>
    
  </div>
  </a>
</div>




    

















`;
WA.templates['estatusarticulo'] = WA.templater`

        <div class="feed-articulo-nombre-articulo">
          <div class="feed-articulo-area-nombre-articulo">
            ${'n'}
          </div>
        </div>
        `;
WA.templates['src-articuloi.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-articulo.none'] = WA.templater`
/img/static/logo_o-400x300.png`;
WA.templates['ratingarticulo'] = WA.templater`

<div class="feed-articulo-rating" style="display: table-cell; font-family: 'source sans pro'; font-weight: normal; height: 13px; padding: 0px 5px 0px 0px; position: relative; vertical-align: middle;">
  ${'vr'}
</div>
<div class="feed-ficha icon-k7-estrellas-v" style="display: table-cell; height: 13px; position: relative; vertical-align: middle; width: 62px;">
  <div class="feed-ficha icon-k7-estrellas-r" style="height: 13px; left: 0px; overflow: hidden; position: absolute; top: 0px; width: ${'pr'};"></div>
</div>
`;
WA.templates['estatusarticulo.none'] = WA.templater`
`;
WA.templates['estatusarticulo.10'] = WA.templater`

        <div class="feed-articulopro-nombre-articulo">
          <div class="icon-k7-kiwipro feed-articulopro-icon" style="box-sizing: border-box; position: relative; background-color: #8eb4b1; border-radius: 100%; color: #ffffff; display: flex; align-items: center; justify-content: center;"></div>
          <div class="feed-articulopro-area-nombre-articulo">
            ${'n'}
          </div>
        </div>
        `;
WA.templates['ratingarticulo.none'] = WA.templater`

<div class="feed-articulo-rating" style="display: table-cell; font-family: 'source sans pro'; font-weight: normal; height: 13px; padding: 0px 5px 0px 0px; position: relative; vertical-align: middle;">
  5.0
</div>
<div class="feed-ficha icon-k7-estrellas-v" style="display: table-cell; height: 13px; position: relative; vertical-align: middle; width: 62px;">
  <div class="feed-ficha icon-k7-estrellas-r" style="height: 13px; left: 0px; overflow: hidden; position: absolute; top: 0px; width: 100%;"></div>
</div>
`;
WA.templates['src-articuloi'] = WA.templater`
/articuloimagen/${'k'}/${'i'}`;
WA.templates['src-articulo'] = WA.templater`
${'ip'}`;
WA.templates['feed_compilaciontip'] = WA.templater`


<div id="${'x'}" class="tools feed-compilaciontip-ficha" data-type="kt" data-key="${'k'}" style="background-color: #ffffff; float: left; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('kt', ${'k'});" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    
    <div class="feed-compilaciontip-divimg" style="width: 100%; position: relative;">
      <img class="analyzethis compilaciontip-img" data-src="${['cond', 'i','src-compilaciontip']}" data-width="320" data-height="320" data-webp="1" style="/*position: relative;*/ vertical-align: top; width: 100%;" />
      ${['cond', 'v','feed_video']}
    </div>
    
    <div class="feed-compilaciontip-titulo-seccion" style="background-color: #e6007e; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Compilación
    </div>
    
    
    <div class="feed-compilaciontip-areanombreficha" style="position: relative; border-bottom: 1px solid #f4f6f4;">
      <div class="feed-compilacionreceta-nombrecentrado" style="/*color: #333333;*/ /*font-size: 14px;*/ /*font-weight: bold;*/ /*line-height: 15px;*/ /*max-height: 30px;*/ overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    
    <div class="feed-compilaciontip-descripcion" style="position: relative;">
      <div class="feed-compilaciontip-desccentrado" style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        
        ${'d'}
      </div>
    </div>
  </a>
</div>







`;
WA.templates['src-compilaciontip'] = WA.templater`
/menutip/${'k'}/${'i'}`;
WA.templates['src-compilaciontip.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['feed_familiareceta'] = WA.templater`

<div id="${'x'}" class="searchlist-muestra tools feed-familiareceta-ficha" data-type="fr" data-key="${'k'}" style="background-color: #ffffff; width: 46.77%; float: left; margin: 5px 5px 10px 5px; position: relative;">
  <div class="coleccion-elemento-eliminar" onclick="KL.Modules.clientperfil.borraItemcoleccion('fr', '${'k'}');" alt="" title="" style="display: none; position: absolute; top: -12px; right: -12px; background-color: #dddddd; border: 2px solid #ffffff; border-radius: 100%; z-index: 10; cursor: pointer; width: 20px; height: 20px; align-items: center; justify-content: center;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 10px; font-weight: bold;"></div>
  </div>

  <a href="${'pa'}" style="text-decoration: none;">
    <div style="position: relative; width: 100%;">
      <img src="${['eval','KL.cdn7domains']}/img/static/dot.gif" style="width: 100%; vertical-align: top;" />
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'ci1','src-familiareceta1']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; top: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'ci2','src-familiareceta2']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; left: 0px;">
        <img class="analyzethis" data-src="${['cond', 'ci3','src-familiareceta3']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
      <div style="position: absolute; width: 49.8%; overflow: hidden; bottom: 0px; right: 0px;">
        <img class="analyzethis" data-src="${['cond', 'ci4','src-familiareceta4']}" data-width="160" data-height="160" data-webp="1" style="width: 100%; vertical-align: top;" /></div>
    </div>
    
    <div style="background-color: #f7a841; box-sizing: border-box; position: relative; text-align: center; text-transform: uppercase; padding: 5px; color: #ffffff; font-size: 16px; height: 26px;">
      Familia
    </div>
    
    <div class="feed-familiareceta-areanombre" style="position: relative; height: 46px; border-bottom: 1px solid #f4f6f4;">
      <div style="color: #333333; font-size: 14px; font-weight: bold; line-height: 15px; max-height: 30px; overflow: hidden; position: absolute; text-align: center; top: 50%; transform: translateY(-50%); width: 100%; padding: 0px 10px; box-sizing: border-box;">
        ${'n'}
      </div>
    </div>
    
    <div style="position: relative; height: 46px;">
      <div class="area-desc-clasificacion" style="color: #777777; font-weight: normal; font-size: 11px; line-height: 12px; max-height: 24px; overflow: hidden; position: absolute; top: 50%; transform: translateY(-55%); text-align: center; padding: 0px 10px 2px; width: 100%; box-sizing: border-box;">
        ${'d'}
      </div>
    </div>
  </a>
</div>
















`;
WA.templates['src-familiareceta2.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiareceta3'] = WA.templater`
/recetaimagen/${'ci3'}/${'i3'}`;
WA.templates['src-familiareceta3.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiareceta4'] = WA.templater`
/recetaimagen/${'ci4'}/${'i4'}`;
WA.templates['src-familiareceta4.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiareceta1'] = WA.templater`
/recetaimagen/${'ci1'}/${'i1'}`;
WA.templates['src-familiareceta1.none'] = WA.templater`
/img/static/logo-o-320x320.png`;
WA.templates['src-familiareceta2'] = WA.templater`
/recetaimagen/${'ci2'}/${'i2'}`;
WA.templates['sliderorigen'] = WA.templater`

  ${['loop', 'classifications','slider_classifications']}
`;
WA.templates['slider-classifications-crafto.first'] = WA.templater`

<div class="slider-clasification-${'key'}" style="float: left; padding: 0px 7px 0px 0px; text-align: center; width: 75px;">
  <a href="${'path'}" style="color: #989898; font-size: 12px; letter-spacing: 1px; text-decoration: none; text-transform: uppercase;">
    <img class="analyzethis" data-src="${'imagepath'}${['cond', 'icon','slider_icon']}" data-width="75" data-height="75" data-webp="1" style="height: 75px; margin: 0px 0px 8px; width: 75px;" />${'shorttitle'}
  </a>
</div>
`;
WA.templates['slider-classifications-crafto.none'] = WA.templater`
`;
WA.templates['slider_families.none'] = WA.templater`
`;
WA.templates['slider-classifications-crafto.last'] = WA.templater`

<div class="slider-clasification-${'key'}" style="float: left; padding: 0px 0px 0px 7px; text-align: center; width: 75px;">
  <a href="${'path'}" style="color: #989898; font-size: 12px; letter-spacing: 1px; text-decoration: none; text-transform: uppercase;">
    <img class="analyzethis" data-src="${'imagepath'}${['cond', 'icon','slider_icon']}" data-width="75" data-height="75" data-webp="1" style="height: 75px; margin: 0px 0px 3px; width: 75px;" />${'shorttitle'}
  </a>
</div>
`;
WA.templates['slider_icon.none'] = WA.templater`
${'image'}`;
WA.templates['tools'] = WA.templater`



`;
WA.templates['tools_collectionitem'] = WA.templater`

<div id="tools-collection-${'clave'}" class="tools-coleccionentrada">${'nombre'}</div>
`;
WA.templates['tools_collectionitem.none'] = WA.templater`

Aún no hay colecciones
`;
WA.templates['tools_collectionselect'] = WA.templater`

<div class="tools-divcont" style="height: 300px; width: 300px; position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); background-color: #ffffff; border-radius: 5px; padding: 5px; box-sizing: border-box;">
  <div class="title"><span class="icon-k7-collections"></span> Selecciona una colección</div>
  <div style="position: absolute; overflow: auto; top: 60px; bottom: 60px; left: 8px; right: 8px; padding: 5px; border: 1px solid #ccc; border-radius: 3px;">
${['loop', 'items','tools_collectionitem']}
  </div>
  <div style="position: absolute; bottom: 10px; left: 5px; right: 8px; padding: 0px 0px 0px 5px; box-sizing: border-box;">
    <input id="tools-collection-create" type="button" class="button" style="float: right; width: 60px; height: 38px; padding-top: 2px;" value="Crear">
    ó
    <input id="tools-collection-name" type="text" style="vertical-align: middle; height: 20px; margin-left: 10px; width: 190px; height: 30px; padding-top: 2px;" placeholder="Crea una nueva colección">
  </div>
</div>
`;
WA.templates['recipelist'] = WA.templater`
<div class="recipelist-areabotones" style="margin-top: 5px; display: table; position: relative; width: 100%;">
  <div id="recipelist-masnuevo" class="recipelist-button on">Lo más nuevo</div>
  <div id="recipelist-recomendado" class="recipelist-button">Recomendado</div>
  <div id="recipelist-maspopular" class="recipelist-button">Lo más popular</div>
</div>

<div id="recipelist" style="clear: both;" data-type="${'type'}" data-key="${'key'}" data-quantity="${'quantity'}" data-more="${'more'}" data-total="${'total'}" data-page="${'page'}">
  ${['loop', 'payload','feed_payload']}
</div>
<div id="recipelist-next" class="recipelist-btn-next" style="clear: both; margin-top: 15px; cursor: pointer; text-transform: uppercase; text-align: center; line-height: 1.6em; letter-spacing: 0.05em; font-size: 13px;">
Ver más<br />
<span class="icon-k7-recipelist-seemore"></span>
</div>
`;

KL.currentcode={"categories":[{"icon":"i4003.jpg","image":"4003.png","imagepath":"/clasificacion/4003/","key":4003,"link":"faciles","path":"/preferencia/faciles","shorttitle":"Fáciles","virtual":null},{"icon":"i1.jpg","image":"1.jpg","imagepath":"/clasificacion/1/","key":1,"link":"postres","path":"/recetas/postres","shorttitle":"Postres","virtual":null},{"icon":"i48.jpg","image":"48.jpg","imagepath":"/clasificacion/48/","key":48,"link":"pollo-y-carne","path":"/recetas/pollo-y-carne","shorttitle":"Pollo y Carne","virtual":null},{"icon":"i3356.jpg","image":"3356.jpg","imagepath":"/clasificacion/3356/","key":3356,"link":"recetas-a-la-parrilla","path":"/temporada/recetas-a-la-parrilla","shorttitle":"Recetas a la Parrilla","virtual":null},{"icon":"i67.jpg","image":"67.jpg","imagepath":"/clasificacion/67/","key":67,"link":"ensaladas","path":"/recetas/ensaladas","shorttitle":"Ensaladas","virtual":null},{"icon":"i74.jpg","image":"74.jpg","imagepath":"/clasificacion/74/","key":74,"link":"guarniciones","path":"/recetas/guarniciones","shorttitle":"Guarniciones","virtual":null},{"icon":"i3119.jpg","image":"3119.jpg","imagepath":"/clasificacion/3119/","key":3119,"link":"recetas-navidenas","path":"/temporada/recetas-navidenas","shorttitle":"Recetas Navideñas","virtual":null},{"icon":"i93.jpg","image":"93.jpg","imagepath":"/clasificacion/93/","key":93,"link":"pescados-y-mariscos","path":"/recetas/pescados-y-mariscos","shorttitle":"Pescados y Mariscos","virtual":null},{"icon":"i3675.jpg","image":"3675.jpg","imagepath":"/clasificacion/3675/","key":3675,"link":"platos-fuertes","path":"/recetas/platos-fuertes","shorttitle":"Platos Fuertes","virtual":null},{"icon":"i104.jpg","image":"104.jpg","imagepath":"/clasificacion/104/","key":104,"link":"recetas-de-botanas-faciles","path":"/recetas/recetas-de-botanas-faciles","shorttitle":"Recetas de Botanas Fáciles","virtual":null},{"icon":"i115.jpg","image":"115.jpg","imagepath":"/clasificacion/115/","key":115,"link":"recetas-de-pastas","path":"/recetas/recetas-de-pastas","shorttitle":"Recetas de Pastas","virtual":null},{"icon":"i127.jpg","image":"127.jpg","imagepath":"/clasificacion/127/","key":127,"link":"comida-para-ninos","path":"/recetas/comida-para-ninos","shorttitle":"Comida para Niños","virtual":null},{"icon":"i128.jpg","image":"128.jpg","imagepath":"/clasificacion/128/","key":128,"link":"postres-para-ninos","path":"/recetas/postres-para-ninos","shorttitle":"Postres para Niños","virtual":null},{"icon":"i122.jpg","image":"122.jpg","imagepath":"/clasificacion/122/","key":122,"link":"sopas","path":"/recetas/sopas","shorttitle":"Sopas","virtual":null},{"icon":"i129.jpg","image":"129.jpg","imagepath":"/clasificacion/129/","key":129,"link":"saludables","path":"/recetas/saludables","shorttitle":"Saludables","virtual":null},{"icon":"i130.jpg","image":"130.jpg","imagepath":"/clasificacion/130/","key":130,"link":"desayunos","path":"/recetas/desayunos","shorttitle":"Desayunos","virtual":null},{"icon":"i142.jpg","image":"142.jpg","imagepath":"/clasificacion/142/","key":142,"link":"panes","path":"/recetas/panes","shorttitle":"Panes","virtual":null},{"icon":"i3406.jpg","image":"3406.jpg","imagepath":"/clasificacion/3406/","key":3406,"link":"guarniciones-de-exito","path":"/recetas/guarniciones-de-exito","shorttitle":"Guarniciones de Éxito","virtual":null},{"icon":"i144.jpg","image":"144.jpg","imagepath":"/clasificacion/144/","key":144,"link":"salsas","path":"/recetas/salsas","shorttitle":"Salsas","virtual":null},{"icon":"i1000.jpg","image":"1000.jpg","imagepath":"/clasificacion/1000/","key":1000,"link":"bebidas","path":"/recetas/bebidas","shorttitle":"Bebidas","virtual":null}],"recipelist":{"key":"","more":true,"page":1,"payload":[{"cn":"Nutella  ","cooktime":"10","difficulty":"1","fv":36,"i":"54576.jpg","k":40729,"level":1,"m":2,"mt":"normal","n":"Galletas de jengibre rellenas de Nutella","pa":"/receta/postres/recetas-de-galletas-faciles/galletas-de-navidad/galletas-de-jengibre-rellenas-de-nutella","pr":"60.0%","preptime":"20","pub":"06 Nov 24 08:28 +0000","s":1,"t":"receta","totaltime":"30","v":"686908262448","vh":"100.00%","vp":"B1xDbuGM","vr":"3.0","x":"p|kiwi|home||1|1|1"},{"cn":"Danonino   ","cooktime":"10","difficulty":"1","fv":0,"i":"56018.jpg","k":41266,"level":1,"m":2,"mt":"normal","n":"Waffles de chocolate para Halloween","pa":"/receta/postres-para-ninos/waffles-de-chocolate-para-halloween","pr":"100.0%","preptime":"20","pub":"16 Oct 24 11:31 +0000","s":1,"t":"receta","totaltime":"30","v":"622316661942","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|2"},{"k":"","mt":"sola","t":"newsletter","x":"p|kiwi|home||1|1|3"},{"cn":"NatureSweet   ","cooktime":"20","difficulty":"1","fv":1,"i":"56015.jpg","k":41265,"level":1,"m":2,"mt":"normal","n":"Quesadillas de pollo Catrina ","pa":"/receta/platos-fuertes/mexicanos/quesadillas-de-pollo-catrina","pr":"100.0%","preptime":"15","pub":"16 Oct 24 10:35 +0000","s":1,"t":"receta","totaltime":"35","v":"326005970174","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|4"},{"cn":"McCormick®  ","cooktime":"0","difficulty":"1","fv":6,"i":"56012.jpg","k":41264,"level":1,"m":2,"mt":"normal","n":"Pumpkin spice latte ","pa":"/receta/bebidas/bebidas-calientes/pumpkin-spice-latte","pr":"100.0%","preptime":"10","pub":"15 Oct 24 16:51 +0000","s":1,"t":"receta","totaltime":"10","v":"680000321038","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|5"},{"class":"adnetwork","formatid":"72089","k":"","mt":"sola","nid":"300x250","num":"p|kiwi|home||1|1|6","placementid":"13081605","preid":"300x250","size":"[[300,250],[336,280]]","t":"ad","x":"p|kiwi|home||1|1|6"},{"cn":"Mara Alpizar","cooktime":"10","difficulty":"1","fv":6,"i":"56009.jpg","k":41263,"level":2,"m":2,"mt":"normal","n":"Salsa tatemada ","pa":"/receta/salsas/salsas-picantes/salsa-tatemada","pr":"100.0%","preptime":"10","pub":"15 Oct 24 15:34 +0000","s":1,"t":"receta","totaltime":"20","v":"216020648024","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|7"},{"cn":"Capullo   ","cooktime":"55","difficulty":"1","fv":3,"i":"56006.jpg","k":41262,"level":1,"m":2,"mt":"normal","n":"Pastel de pollo Cordon Bleu","pa":"/receta/platos-fuertes/pollo/pastel-de-pollo-cordon-bleu","pr":"100.0%","preptime":"20","pub":"15 Oct 24 15:18 +0000","s":1,"t":"receta","totaltime":"75","v":"429963178001","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|8"},{"cn":"Casillero del Diablo","cooktime":"5","difficulty":"2","fv":2,"i":"56003.jpg","k":41261,"level":1,"m":2,"mt":"normal","n":"Clericot de pumpkin spice ","pa":"/receta/bebidas/bebidas-con-vino/clericot-de-pumpkin-spice","pr":"100.0%","preptime":"20","pub":"15 Oct 24 12:32 +0000","s":1,"t":"receta","totaltime":"25","v":"355832763776","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|9"},{"cn":"Mara Alpizar","cooktime":"45","difficulty":"1","fv":1,"i":"56000.jpg","k":41260,"level":2,"m":2,"mt":"normal","n":"Tacos estilo Sinaloa","pa":"/receta/platos-fuertes/mexicanos/tacos-estilo-sinaloa","pr":"100.0%","preptime":"10","pub":"15 Oct 24 11:37 +0000","s":1,"t":"receta","totaltime":"55","v":"213605400114","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|10"},{"class":"adnetwork","formatid":"72089","k":"","mt":"sola","nid":"300x250","num":"p|kiwi|home||1|1|11","placementid":"13081605","preid":"300x250","size":"[[300,250],[336,280]]","t":"ad","x":"p|kiwi|home||1|1|11"},{"cn":"Yamilette González","cooktime":"5","difficulty":"2","fv":4,"i":"55997.jpg","k":41259,"level":2,"m":2,"mt":"normal","n":"Trenza de pan dulce","pa":"/receta/panes/pan-dulce-casero/trenza-de-pan-dulce","pr":"100.0%","preptime":"90","pub":"15 Oct 24 10:45 +0000","s":1,"t":"receta","totaltime":"95","v":"386265757692","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|12"},{"cn":"alexandra romero","cooktime":"20","difficulty":"1","fv":4,"i":"55992.jpg","k":41256,"level":2,"m":2,"mt":"normal","n":"Tacos de chicharrón prensado ","pa":"/receta/platos-fuertes/mexicanos/tacos-de-chicharron-prensado","pr":"100.0%","preptime":"15","pub":"14 Oct 24 12:36 +0000","s":1,"t":"receta","totaltime":"35","v":"367323945150","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|13"},{"cn":"Bayon   ","cooktime":"90","difficulty":"2","fv":7,"i":"55989.jpg","k":41255,"level":1,"m":2,"mt":"normal","n":"Pavo a la miel","pa":"/receta/pollo-y-carne/pavos/pavo-a-la-miel","pr":"100.0%","preptime":"15","pub":"14 Oct 24 10:37 +0000","s":1,"t":"receta","totaltime":"105","v":"093620080029","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|14"},{"cn":"Huevo San Juan®","cooktime":"90","difficulty":"2","fv":0,"i":"55986.jpg","k":41254,"level":1,"m":2,"mt":"normal","n":"Merengues rosas para regalar","pa":"/receta/postres/merengues/merengues-rosas-para-regalar","pr":"100.0%","preptime":"20","pub":"14 Oct 24 09:33 +0000","s":1,"t":"receta","totaltime":"110","v":"616457576509","vh":"100.00%","vp":"B1xDbuGM","vr":"5.0","x":"p|kiwi|home||1|1|15"},{"class":"adnetwork","formatid":"72089","k":"","mt":"sola","nid":"300x250","num":"p|kiwi|home||1|1|16","placementid":"13081605","preid":"300x250","size":"[[300,250],[336,280]]","t":"ad","x":"p|kiwi|home||1|1|16"}],"quantity":16,"time":0,"total":6938,"type":"home"}};

KL.LoadedModules.push('errorpage');

KL.currenttemplate=WA.templates['errorpage'];

KL.LoadedModules.push('gallery');


KL.LoadedModules.push('slider');


KL.LoadedModules.push('tools');


KL.LoadedModules.push('feed');


KL.LoadedModules.push('recipelist');

</script></div>
<div style="clear: both; margin: 0 auto 0;">

  <div id="footer-div-crosslink" style="background-color: #ffffff; box-sizing: border-box; color: #aaaaaa; font-size: 12px; font-weight: 200; letter-spacing: 0.8px; margin: 30px 0px 0px; padding: 15px 7px 5px; text-align: center;">
    También te puede interesar
    
    <div id="footer-crosslink" class="slider" style="margin-top: 10px; width: 100%;"></div>
    <div style="clear: both;"></div>
  </div>

  <div id="taboola-below-article-thumbnails" style="margin: 15px 0px 0px 0px;"></div>
  
  <div id="footer-adbanner" style="width: 100%; text-align: center; margin: 15px 0px 0px 0px;">
    <div class="buildad" data-id="mfooter"></div>
  </div>
</div>

<div id="footer-adbannersticky" class="footer-k7-movil" style="max-width: 320px; margin: 15px auto 0px; position: -webkit-sticky; position: sticky; bottom: 0px; z-index: 390; display: flex; justify-content: center;  clear: both;">
  <div id="footer-remueve-sticky" onclick="KL.Modules.ads.removeStickyStyle();" style="position: absolute; top: -12px; right: 0px; background-color: #dddddd; border-radius: 100%; border: 3px solid #ffffff; padding: 5px; box-sizing: border-box; cursor: pointer;">
    <div class="icon-k7-cerrar" style="color: #ffffff; font-size: 8px; font-weight: bold;"></div>
  </div>
  <div class="buildad" data-id="sticky_web" data-position="sticky"></div>
</div>





<div id="footer-divfooter" style="background-color: var(--verde-kiwi); box-sizing: border-box; color: #ffffff; margin: 15px 0px 0px 0px; position: relative; width: 100%;">

  <div style="box-sizing: border-box; color: #ffffff; position: relative; text-align: center; display: table; width: 100%; padding: 10px; text-transform: uppercase;">
    <a href="/informacion/politicas-de-uso" style="color: #ffffff; display: table-cell; font-size: 12px;">Políticas</a>
    <a href="/informacion/contacto" style="color: #ffffff; display: table-cell; font-size: 12px;">Contacto</a>
    <a href="/login" target="_blank" style="color: #ffffff; display: table-cell; font-size: 12px;">Regístrate</a>
    <a href="/mapa-del-sitio" style="color: #ffffff; display: table-cell; font-size: 12px;">Sitemap</a>
    <a href="/informacion" style="color: #ffffff; display: table-cell; font-size: 12px;">Kiwilimón</a>
  </div>

  <div style="box-sizing: border-box; color: #ffffff; position: relative; display: table; margin: 0px auto;">
    <a href="https://www.facebook.com/kiwilimon" target="_blank" style="color: #ffffff;"><span class="icon-k7-facebook" style="font-size: 16px; padding: 0px 20px 0px 0px;"></span></a>
    <a href="https://twitter.com/Kiwilimon_LAT" target="_blank" style="color: #ffffff;"><span class="icon-k7-twitter" style="font-size: 15px; padding: 0px 20px 0px 0px;"></span></a>
    <a href="https://instagram.com/kiwilimon" target="_blank" style="color: #ffffff;"><span class="icon-k7-instagram" style="font-size: 16px; padding: 0px 20px 0px 0px;"></span></a>
    <a href="https://www.youtube.com/user/chefkiwilimon?sub_confirmation=1" target="_blank" style="color: #ffffff;"><span class="icon-k7-youtube" style="font-size: 15px; padding: 0px 20px 0px 0px;"></span></a>
    <a href="https://www.pinterest.com/kiwilimon/" target="_blank" style="color: #ffffff;"><span class="icon-k7-pinterest" style="font-size: 16px; padding: 0px 20px 0px 0px;"></span></a>
    <a href="https://www.tiktok.com/@kiwilimonoficial?" target="_blank" style="color: #ffffff;"><span class="icon-k7-tiktok" style="font-size: 17px; padding: 0px 20px 0px 0px;"></span></a>
    <a href="https://www.threads.net/@kiwilimon" target="_blank" style="color: #ffffff;"><span class="icon-k7-threads" style="font-size: 17px; padding: 0px 20px 0px 0px;"></span></a>
    <a href="https://whatsapp.com/channel/0029Vabb2OwIiRoumOfnKh2j" target="_blank" style="color: #ffffff;"><span class="icon-k7-whatsapp" style="font-size: 17px; padding: 0px 20px 0px 0px;"></span></a>
    
  </div>

  <div class="footer-mobile-siguenos" style="box-sizing: border-box; color: #bCe67E; position: relative; width: 100%; text-align: center; font-size: 10px; padding: 5px;">
    Síguenos en Redes Sociales
  </div>

  <div style="box-sizing: border-box; color: #ffffff; position: relative; width: 100%; text-align: center; padding: 5px 10px 10px 10px; font-size: 12px;">
    kiwilimón® ©2024
  </div>

</div>











    <div id="backgroundpopup" style="display: none;"></div>
    <div id="popup" style="display: none;"></div>
  </body>
</html>
