MailChimp for WordPress - Version 4.1.2

Version Description

Download this release

Release Info

Developer DvanKooten
Plugin Icon 128x128 MailChimp for WordPress
Version 4.1.2
Comparing to
See all releases

Code changes from version 4.1.1 to 4.1.2

CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
  Changelog
2
  =========
3
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  #### 4.1.1 - April 11, 2017
5
 
6
  **Fixes**
1
  Changelog
2
  =========
3
 
4
+ #### 4.1.2 - May 8, 2017
5
+
6
+ **Fixes**
7
+
8
+ - Use earlier hook priority for Ninja Forms 3 integration so action is registered on time.
9
+
10
+ **Improvements**
11
+
12
+ - Improved MailChimp list fetching & memory usage for accounts with many lists.
13
+ - Show error message when fetching lists fails.
14
+ - Updated plugin translations.
15
+
16
  #### 4.1.1 - April 11, 2017
17
 
18
  **Fixes**
assets/js/admin.js CHANGED
@@ -133,7 +133,7 @@ function ListFetcher() {
133
  this.done = false;
134
 
135
  // start fetching right away when no lists but api key given
136
- if (config.mailchimp.api_connected && config.mailchimp.lists.length == 0) {
137
  this.fetch();
138
  }
139
  }
@@ -147,12 +147,16 @@ ListFetcher.prototype.fetch = function (e) {
147
  $.post(ajaxurl, {
148
  action: "mc4wp_renew_mailchimp_lists"
149
  }).done(function (data) {
 
 
150
  if (data) {
151
  window.setTimeout(function () {
152
  window.location.reload();
153
  }, 3000);
154
  }
155
- }).always(function (data) {
 
 
156
  this.working = false;
157
  this.done = true;
158
 
@@ -169,7 +173,7 @@ ListFetcher.prototype.view = function () {
169
  value: this.working ? i18n.fetching_mailchimp_lists : i18n.renew_mailchimp_lists,
170
  className: "button",
171
  disabled: !!this.working
172
- }), m.trust('   '), this.working ? [m('span.mc4wp-loader', "Loading..."), m.trust('   '), m('em.help', i18n.fetching_mailchimp_lists_can_take_a_while)] : '', this.done ? [m('em.help.green', i18n.fetching_mailchimp_lists_done)] : ''])]);
173
  };
174
 
175
  module.exports = ListFetcher;
133
  this.done = false;
134
 
135
  // start fetching right away when no lists but api key given
136
+ if (config.mailchimp.api_connected && config.mailchimp.lists.length === 0) {
137
  this.fetch();
138
  }
139
  }
147
  $.post(ajaxurl, {
148
  action: "mc4wp_renew_mailchimp_lists"
149
  }).done(function (data) {
150
+ this.success = true;
151
+
152
  if (data) {
153
  window.setTimeout(function () {
154
  window.location.reload();
155
  }, 3000);
156
  }
157
+ }.bind(this)).fail(function (data) {
158
+ this.success = false;
159
+ }.bind(this)).always(function (data) {
160
  this.working = false;
161
  this.done = true;
162
 
173
  value: this.working ? i18n.fetching_mailchimp_lists : i18n.renew_mailchimp_lists,
174
  className: "button",
175
  disabled: !!this.working
176
+ }), m.trust('   '), this.working ? [m('span.mc4wp-loader', "Loading..."), m.trust('   '), m('em.help', i18n.fetching_mailchimp_lists_can_take_a_while)] : '', this.done ? [this.success ? m('em.help.green', i18n.fetching_mailchimp_lists_done) : m('em.help.red', i18n.fetching_mailchimp_lists_error)] : ''])]);
177
  };
178
 
179
  module.exports = ListFetcher;
assets/js/admin.min.js CHANGED
@@ -1,3 +1,3 @@
1
- !function(){var e=void 0,t=void 0;!function t(n,r,i){function o(l,s){if(!r[l]){if(!n[l]){var u="function"==typeof e&&e;if(!s&&u)return u(l,!0);if(a)return a(l,!0);var c=new Error("Cannot find module '"+l+"'");throw c.code="MODULE_NOT_FOUND",c}var f=r[l]={exports:{}};n[l][0].call(f.exports,function(e){var t=n[l][1][e];return o(t||e)},f,f.exports,t,n,r,i)}return r[l].exports}for(var a="function"==typeof e&&e,l=0;l<i.length;l++)o(i[l]);return o}({1:[function(e,t,n){"use strict";var r=window.m=e("mithril"),i=e("wolfy87-eventemitter"),o=document.getElementById("mc4wp-admin"),a=new i,l=e("./admin/tabs.js")(o),s=e("./admin/helpers.js"),u=e("./admin/settings.js")(o,s,a),c=e("./admin/list-fetcher.js"),f=document.getElementById("mc4wp-list-fetcher");f&&r.mount(f,new c),window.mc4wp=window.mc4wp||{},window.mc4wp.deps=window.mc4wp.deps||{},window.mc4wp.deps.mithril=r,window.mc4wp.helpers=s,window.mc4wp.events=a,window.mc4wp.settings=u,window.mc4wp.tabs=l},{"./admin/helpers.js":2,"./admin/list-fetcher.js":3,"./admin/settings.js":4,"./admin/tabs.js":5,mithril:7,"wolfy87-eventemitter":8}],2:[function(e,t,n){"use strict";var r={};r.toggleElement=function(e){for(var t=document.querySelectorAll(e),n=0;n<t.length;n++){var r=t[n].clientHeight<=0;t[n].style.display=r?"":"none"}},r.bindEventToElement=function(e,t,n){e.addEventListener?e.addEventListener(t,n):e.attachEvent&&e.attachEvent("on"+t,n)},r.bindEventToElements=function(e,t,n){Array.prototype.forEach.call(e,function(e){r.bindEventToElement(e,t,n)})},r.debounce=function(e,t,n){var r;return function(){var i=this,o=arguments,a=function(){r=null,n||e.apply(i,o)},l=n&&!r;clearTimeout(r),r=setTimeout(a,t),l&&e.apply(i,o)}},function(){var e=document.querySelectorAll("[data-showif]");Array.prototype.forEach.call(e,function(e){function t(){if("radio"!==this.getAttribute("type")||this.checked){var t="checkbox"===this.getAttribute("type")?this.checked:this.value,r=t==n.value;a?(e.style.display=r?"":"none",e.style.visibility=r?"":"hidden"):e.style.opacity=r?"":"0.4",Array.prototype.forEach.call(o,function(e){r?e.removeAttribute("readonly"):e.setAttribute("readonly","readonly")})}}var n=JSON.parse(e.getAttribute("data-showif")),i=document.querySelectorAll('[name="'+n.element+'"]'),o=e.querySelectorAll("input,select,textarea:not([readonly])"),a=void 0===n.hide||n.hide;Array.prototype.forEach.call(i,function(e){t.call(e)}),r.bindEventToElements(i,"change",t)})}(),t.exports=r},{}],3:[function(e,t,n){"use strict";function r(){this.working=!1,this.done=!1,o.mailchimp.api_connected&&0==o.mailchimp.lists.length&&this.fetch()}var i=window.jQuery,o=mc4wp_vars,a=o.i18n;r.prototype.fetch=function(e){e&&e.preventDefault(),this.working=!0,this.done=!1,i.post(ajaxurl,{action:"mc4wp_renew_mailchimp_lists"}).done(function(e){e&&window.setTimeout(function(){window.location.reload()},3e3)}).always(function(e){this.working=!1,this.done=!0,m.redraw()}.bind(this))},r.prototype.view=function(){return m("form",{method:"POST",onsubmit:this.fetch.bind(this)},[m("p",[m("input",{type:"submit",value:this.working?a.fetching_mailchimp_lists:a.renew_mailchimp_lists,className:"button",disabled:!!this.working}),m.trust(" &nbsp; "),this.working?[m("span.mc4wp-loader","Loading..."),m.trust(" &nbsp; "),m("em.help",a.fetching_mailchimp_lists_can_take_a_while)]:"",this.done?[m("em.help.green",a.fetching_mailchimp_lists_done)]:""])])},t.exports=r},{}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(e,t,n){function i(e,t){return c.filter(function(n){return n[e]===t})}function o(){return c}function a(){return c=[],Array.prototype.forEach.call(s,function(e){("boolean"!=typeof e.checked||e.checked)&&"object"===r(u[e.value])&&c.push(u[e.value])}),n.trigger("selectedLists.change",[c]),c}function l(){var e=document.querySelectorAll(".lists--only-selected > *");Array.prototype.forEach.call(e,function(e){i("id",e.getAttribute("data-list-id")).length>0?e.setAttribute("class",e.getAttribute("class").replace("hidden","")):e.setAttribute("class",e.getAttribute("class")+" hidden")})}var s=(e.querySelector("form"),e.querySelectorAll(".mc4wp-list-input")),u=mc4wp_vars.mailchimp.lists,c=[];return n.on("selectedLists.change",l),t.bindEventToElements(s,"change",a),a(),{getSelectedLists:o}};t.exports=i},{}],5:[function(e,t,n){"use strict";var r=e("./url.js"),i=function(e){function t(e){for(var t=0;t<f.length;t++)if(f[t].id===e)return f[t]}function n(e,n){if("string"==typeof e&&(e=t(e)),!e)return!1;void 0==n&&(n=!0),s.removeClass("tab-active").css("display","none"),u.removeClass("nav-tab-active"),Array.prototype.forEach.call(e.nav,function(e){e.className+=" nav-tab-active",e.blur()}),e.element.style.display="block",e.element.className+=" tab-active";var o=r.setParameter(window.location.href,"tab",e.id);return history.pushState&&n&&history.pushState(e.id,"",o),i(e),c.value=o,"function"==typeof tb_remove&&tb_remove(),"fields"===e.id&&window.mc4wp&&window.mc4wp.forms&&window.mc4wp.forms.editor&&mc4wp.forms.editor.refresh(),!0}function i(e){var t=document.title.split("-");document.title=document.title.replace(t[0],e.title+" ")}function o(e){e=e||window.event;var t=this.getAttribute("data-tab");if(!t){var i=this.className.match(/nav-tab-(\w+)?/);i&&(t=i[1])}if(!t){var o=r.parse(this.href);if(!o.tab)return;t=o.tab}return!n(t)||(e.preventDefault(),e.returnValue=!1,!1)}var a=window.jQuery,l=a(e),s=l.find(".tab"),u=l.find(".nav-tab"),c=e.querySelector('input[name="_wp_http_referer"]'),f=[];return a.each(s,function(t,r){var i=r.id.substring(4),o=a(r).find("h2").first().text();f.push({id:i,title:o,element:r,nav:e.querySelectorAll(".nav-tab-"+i),open:function(){return n(i)}})}),u.click(o),a(document.body).on("click",".tab-link",o),function(){if(history.pushState){var e=s.filter(":visible").get(0);if(e){var n=t(e.id.substring(4));n&&(history.replaceState&&null===history.state&&history.replaceState(n.id,""),i(n))}}}(),window.addEventListener&&history.pushState&&window.addEventListener("popstate",function(e){return!e.state||n(e.state,!1)}),{open:n,get:t}};t.exports=i},{"./url.js":6}],6:[function(e,t,n){"use strict";var r={parse:function(e){var t={},n=e.split("&");for(var r in n)if(n.hasOwnProperty(r)){var i=n[r].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t},build:function(e){var t=[];for(var n in e)t.push(n+"="+encodeURIComponent(e[n]));return t.join("&")},setParameter:function(e,t,n){var i=r.parse(e);return i[t]=n,r.build(i)}};t.exports=r},{}],7:[function(e,t,n){(function(e){!function(){"use strict";function n(e,t,n,r,i,o){return{tag:e,key:t,attrs:n,children:r,text:i,dom:o,domSize:void 0,state:void 0,_state:void 0,events:void 0,instance:void 0,skip:!1}}function r(e){for(var t,n="div",r=[],i={};t=l.exec(e);){var o=t[1],a=t[2];if(""===o&&""!==a)n=a;else if("#"===o)i.id=a;else if("."===o)r.push(a);else if("["===t[3][0]){var u=t[6];u&&(u=u.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),"class"===t[4]?r.push(u):i[t[4]]=u||!0}}return r.length>0&&(i.className=r.join(" ")),s[e]={tag:n,attrs:i}}function i(e,t,r){var i,o,a=!1,l=t.className||t.class;for(var s in e.attrs)u.call(e.attrs,s)&&(t[s]=e.attrs[s]);void 0!==l&&(void 0!==t.class&&(t.class=void 0,t.className=l),null!=e.attrs.className&&(t.className=e.attrs.className+" "+l));for(var s in t)if(u.call(t,s)&&"key"!==s){a=!0;break}return Array.isArray(r)&&1===r.length&&null!=r[0]&&"#"===r[0].tag?o=r[0].children:i=r,n(e.tag,t.key,a?t:void 0,i,o)}function o(e){var t,o=arguments[1],a=2;if(null==e||"string"!=typeof e&&"function"!=typeof e&&"function"!=typeof e.view)throw Error("The selector must be either a string or a component.");if("string"==typeof e)var l=s[e]||r(e);if(null==o?o={}:("object"!=typeof o||null!=o.tag||Array.isArray(o))&&(o={},a=1),arguments.length===a+1)t=arguments[a],Array.isArray(t)||(t=[t]);else for(t=[];a<arguments.length;)t.push(arguments[a++]);var u=n.normalizeChildren(t);return"string"==typeof e?i(l,o,u):n(e,o.key,o,u)}function a(e){var t=0,n=null,r="function"==typeof requestAnimationFrame?requestAnimationFrame:setTimeout;return function(){var i=Date.now();0===t||i-t>=16?(t=i,e()):null===n&&(n=r(function(){n=null,e(),t=Date.now()},16-(i-t)))}}n.normalize=function(e){return Array.isArray(e)?n("[",void 0,void 0,n.normalizeChildren(e),void 0,void 0):null!=e&&"object"!=typeof e?n("#",void 0,void 0,!1===e?"":e,void 0,void 0):e},n.normalizeChildren=function(e){for(var t=0;t<e.length;t++)e[t]=n.normalize(e[t]);return e};var l=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,s={},u={}.hasOwnProperty;o.trust=function(e){return null==e&&(e=""),n("<",void 0,void 0,e,void 0,void 0)},o.fragment=function(e,t){return n("[",e.key,e,n.normalizeChildren(t),void 0,void 0)};var c=o,f=function(e){function t(e,t){return function a(c){var f;try{if(!t||null==c||"object"!=typeof c&&"function"!=typeof c||"function"!=typeof(f=c.then))u(function(){t||0!==e.length||console.error("Possible unhandled promise rejection:",c);for(var n=0;n<e.length;n++)e[n](c);i.length=0,o.length=0,s.state=t,s.retry=function(){a(c)}});else{if(c===r)throw new TypeError("Promise can't be resolved w/ itself");n(f.bind(c))}}catch(e){l(e)}}}function n(e){function t(e){return function(t){n++>0||e(t)}}var n=0,r=t(l);try{e(t(a),r)}catch(e){r(e)}}if(!(this instanceof f))throw new Error("Promise must be called with `new`");if("function"!=typeof e)throw new TypeError("executor must be a function");var r=this,i=[],o=[],a=t(i,!0),l=t(o,!1),s=r._instance={resolvers:i,rejectors:o},u="function"==typeof setImmediate?setImmediate:setTimeout;n(e)};if(f.prototype.then=function(e,t){function n(e,t,n,o){t.push(function(t){if("function"!=typeof e)n(t);else try{r(e(t))}catch(e){i&&i(e)}}),"function"==typeof a.retry&&o===a.state&&a.retry()}var r,i,o=this,a=o._instance,l=new f(function(e,t){r=e,i=t});return n(e,a.resolvers,r,!0),n(t,a.rejectors,i,!1),l},f.prototype.catch=function(e){return this.then(null,e)},f.resolve=function(e){return e instanceof f?e:new f(function(t){t(e)})},f.reject=function(e){return new f(function(t,n){n(e)})},f.all=function(e){return new f(function(t,n){var r=e.length,i=0,o=[];if(0===e.length)t([]);else for(var a=0;a<e.length;a++)!function(a){function l(e){i++,o[a]=e,i===r&&t(o)}null==e[a]||"object"!=typeof e[a]&&"function"!=typeof e[a]||"function"!=typeof e[a].then?l(e[a]):e[a].then(l,n)}(a)})},f.race=function(e){return new f(function(t,n){for(var r=0;r<e.length;r++)e[r].then(t,n)})},"undefined"!=typeof window){void 0===window.Promise&&(window.Promise=f);var f=window.Promise}else if(void 0!==e){void 0===e.Promise&&(e.Promise=f);var f=e.Promise}var d=function(e){function t(e,r){if(Array.isArray(r))for(var i=0;i<r.length;i++)t(e+"["+i+"]",r[i]);else if("[object Object]"===Object.prototype.toString.call(r))for(var i in r)t(e+"["+i+"]",r[i]);else n.push(encodeURIComponent(e)+(null!=r&&""!==r?"="+encodeURIComponent(r):""))}if("[object Object]"!==Object.prototype.toString.call(e))return"";var n=[];for(var r in e)t(r,e[r]);return n.join("&")},h=new RegExp("^file://","i"),v=function(e,t){function n(e){v=e}function r(){function e(){0==--t&&"function"==typeof v&&v()}var t=0;return function n(r){var i=r.then;return r.then=function(){t++;var o=i.apply(r,arguments);return o.then(e,function(n){if(e(),0===t)throw n}),n(o)},r}}function i(e,t){if("string"==typeof e){var n=e;e=t||{},null==e.url&&(e.url=n)}return e}function o(n,o){var a=r();n=i(n,o);var d=new t(function(t,r){null==n.method&&(n.method="GET"),n.method=n.method.toUpperCase();var i="GET"!==n.method&&"TRACE"!==n.method&&("boolean"!=typeof n.useBody||n.useBody);"function"!=typeof n.serialize&&(n.serialize="undefined"!=typeof FormData&&n.data instanceof FormData?function(e){return e}:JSON.stringify),"function"!=typeof n.deserialize&&(n.deserialize=u),"function"!=typeof n.extract&&(n.extract=c),n.url=l(n.url,n.data),i?n.data=n.serialize(n.data):n.url=s(n.url,n.data);var o=new e.XMLHttpRequest,a=!1,d=o.abort;o.abort=function(){a=!0,d.call(o)},o.open(n.method,n.url,"boolean"!=typeof n.async||n.async,"string"==typeof n.user?n.user:void 0,"string"==typeof n.password?n.password:void 0),n.serialize===JSON.stringify&&i&&o.setRequestHeader("Content-Type","application/json; charset=utf-8"),n.deserialize===u&&o.setRequestHeader("Accept","application/json, text/*"),n.withCredentials&&(o.withCredentials=n.withCredentials);for(var v in n.headers)({}).hasOwnProperty.call(n.headers,v)&&o.setRequestHeader(v,n.headers[v]);"function"==typeof n.config&&(o=n.config(o,n)||o),o.onreadystatechange=function(){if(!a&&4===o.readyState)try{var e=n.extract!==c?n.extract(o,n):n.deserialize(n.extract(o,n));if(o.status>=200&&o.status<300||304===o.status||h.test(n.url))t(f(n.type,e));else{var i=new Error(o.responseText);for(var l in e)i[l]=e[l];r(i)}}catch(e){r(e)}},i&&null!=n.data?o.send(n.data):o.send()});return!0===n.background?d:a(d)}function a(n,o){var a=r();n=i(n,o);var u=new t(function(t,r){var i=n.callbackName||"_mithril_"+Math.round(1e16*Math.random())+"_"+p++,o=e.document.createElement("script");e[i]=function(r){o.parentNode.removeChild(o),t(f(n.type,r)),delete e[i]},o.onerror=function(){o.parentNode.removeChild(o),r(new Error("JSONP request failed")),delete e[i]},null==n.data&&(n.data={}),n.url=l(n.url,n.data),n.data[n.callbackKey||"callback"]=i,o.src=s(n.url,n.data),e.document.documentElement.appendChild(o)});return!0===n.background?u:a(u)}function l(e,t){if(null==t)return e;for(var n=e.match(/:[^\/]+/gi)||[],r=0;r<n.length;r++){var i=n[r].slice(1);null!=t[i]&&(e=e.replace(n[r],t[i]))}return e}function s(e,t){var n=d(t);if(""!==n){e+=(e.indexOf("?")<0?"?":"&")+n}return e}function u(e){try{return""!==e?JSON.parse(e):null}catch(t){throw new Error(e)}}function c(e){return e.responseText}function f(e,t){if("function"==typeof e){if(!Array.isArray(t))return new e(t);for(var n=0;n<t.length;n++)t[n]=new e(t[n])}return t}var v,p=0;return{request:o,jsonp:a,setCompletionCallback:n}}(window,f),p=function(e){function t(e){return V=e}function r(e,t,n,r,o,a,l){for(var s=n;s<r;s++){var u=t[s];null!=u&&i(e,u,o,l,a)}}function i(e,t,n,r,i){var u=t.tag;if("string"!=typeof u)return c(e,t,n,r,i);switch(t.state={},null!=t.attrs&&M(t.attrs,t,n),u){case"#":return o(e,t,i);case"<":return a(e,t,i);case"[":return l(e,t,n,r,i);default:return s(e,t,n,r,i)}}function o(e,t,n){return t.dom=H.createTextNode(t.children),E(e,t.dom,n),t.dom}function a(e,t,n){var r=t.children.match(/^\s*?<(\w+)/im)||[],i={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[r[1]]||"div",o=H.createElement(i);o.innerHTML=t.children,t.dom=o.firstChild,t.domSize=o.childNodes.length;for(var a,l=H.createDocumentFragment();a=o.firstChild;)l.appendChild(a);return E(e,l,n),l}function l(e,t,n,i,o){var a=H.createDocumentFragment();if(null!=t.children){var l=t.children;r(a,l,0,l.length,n,null,i)}return t.dom=a.firstChild,t.domSize=a.childNodes.length,E(e,a,o),a}function s(e,t,i,o,a){var l=t.tag;switch(t.tag){case"svg":o="http://www.w3.org/2000/svg";break;case"math":o="http://www.w3.org/1998/Math/MathML"}var s=t.attrs,u=s&&s.is,c=o?u?H.createElementNS(o,l,{is:u}):H.createElementNS(o,l):u?H.createElement(l,{is:u}):H.createElement(l);if(t.dom=c,null!=s&&j(t,s,o),E(e,c,a),null!=t.attrs&&null!=t.attrs.contenteditable)A(t);else if(null!=t.text&&(""!==t.text?c.textContent=t.text:t.children=[n("#",void 0,void 0,t.text,void 0,void 0)]),null!=t.children){var f=t.children;r(c,f,0,f.length,i,null,o),O(t)}return c}function u(e,t){var r;if("function"==typeof e.tag.view){if(e.state=Object.create(e.tag),r=e.state.view,null!=r.$$reentrantLock$$)return B;r.$$reentrantLock$$=!0}else{if(e.state=void 0,r=e.tag,null!=r.$$reentrantLock$$)return B;r.$$reentrantLock$$=!0,e.state=null!=e.tag.prototype&&"function"==typeof e.tag.prototype.view?new e.tag(e):e.tag(e)}if(e._state=e.state,null!=e.attrs&&M(e.attrs,e,t),M(e._state,e,t),e.instance=n.normalize(e._state.view.call(e.state,e)),e.instance===e)throw Error("A view cannot return the vnode it received as argument");r.$$reentrantLock$$=null}function c(e,t,n,r,o){if(u(t,n),null!=t.instance){var a=i(e,t.instance,n,r,o);return t.dom=t.instance.dom,t.domSize=null!=t.dom?t.instance.domSize:0,E(e,a,o),a}return t.domSize=0,B}function f(e,t,n,o,a,l,s){if(t!==n&&(null!=t||null!=n))if(null==t)r(e,n,0,n.length,a,l,void 0);else if(null==n)k(t,0,t.length,n);else{if(t.length===n.length){for(var u=!1,c=0;c<n.length;c++)if(null!=n[c]&&null!=t[c]){u=null==n[c].key&&null==t[c].key;break}if(u){for(var c=0;c<t.length;c++)t[c]!==n[c]&&(null==t[c]&&null!=n[c]?i(e,n[c],a,s,x(t,c+1,l)):null==n[c]?k(t,c,c+1,n):d(e,t[c],n[c],a,x(t,c+1,l),o,s));return}}if(o=o||g(t,n)){var f=t.pool;t=t.concat(t.pool)}for(var h,v=0,p=0,m=t.length-1,y=n.length-1;m>=v&&y>=p;){var A=t[v],S=n[p];if(A!==S||o)if(null==A)v++;else if(null==S)p++;else if(A.key===S.key){var _=null!=f&&v>=t.length-f.length||null==f&&o;v++,p++,d(e,A,S,a,x(t,v,l),_,s),o&&A.tag===S.tag&&E(e,b(A),l)}else{var A=t[m];if(A!==S||o)if(null==A)m--;else if(null==S)p++;else{if(A.key!==S.key)break;var _=null!=f&&m>=t.length-f.length||null==f&&o;d(e,A,S,a,x(t,m+1,l),_,s),(o||p<y)&&E(e,b(A),x(t,v,l)),m--,p++}else m--,p++}else v++,p++}for(;m>=v&&y>=p;){var A=t[m],S=n[y];if(A!==S||o)if(null==A)m--;else if(null==S)y--;else if(A.key===S.key){var _=null!=f&&m>=t.length-f.length||null==f&&o;d(e,A,S,a,x(t,m+1,l),_,s),o&&A.tag===S.tag&&E(e,b(A),l),null!=A.dom&&(l=A.dom),m--,y--}else{if(h||(h=w(t,m)),null!=S){var L=h[S.key];if(null!=L){var j=t[L],_=null!=f&&L>=t.length-f.length||null==f&&o;d(e,j,S,a,x(t,m+1,l),o,s),E(e,b(j),l),t[L].skip=!0,null!=j.dom&&(l=j.dom)}else{var C=i(e,S,a,void 0,l);l=C}}y--}else m--,y--;if(y<p)break}r(e,n,p,y+1,a,l,s),k(t,v,m+1,n)}}function d(e,t,n,r,o,a,l){var s=t.tag;if(s===n.tag){if(n.state=t.state,n._state=t._state,n.events=t.events,!a&&U(n,t))return;if("string"==typeof s)switch(null!=n.attrs&&(a?(n.state={},M(n.attrs,n,r)):D(n.attrs,n,r)),s){case"#":h(t,n);break;case"<":v(e,t,n,o);break;case"[":p(e,t,n,a,r,o,l);break;default:m(t,n,a,r,l)}else y(e,t,n,r,o,a,l)}else S(t,null),i(e,n,r,l,o)}function h(e,t){e.children.toString()!==t.children.toString()&&(e.dom.nodeValue=t.children),t.dom=e.dom}function v(e,t,n,r){t.children!==n.children?(b(t),a(e,n,r)):(n.dom=t.dom,n.domSize=t.domSize)}function p(e,t,n,r,i,o,a){f(e,t.children,n.children,r,i,o,a);var l=0,s=n.children;if(n.dom=null,null!=s){for(var u=0;u<s.length;u++){var c=s[u];null!=c&&null!=c.dom&&(null==n.dom&&(n.dom=c.dom),l+=c.domSize||1)}1!==l&&(n.domSize=l)}}function m(e,t,r,i,o){var a=t.dom=e.dom;switch(t.tag){case"svg":o="http://www.w3.org/2000/svg";break;case"math":o="http://www.w3.org/1998/Math/MathML"}"textarea"===t.tag&&(null==t.attrs&&(t.attrs={}),null!=t.text&&(t.attrs.value=t.text,t.text=void 0)),z(t,e.attrs,t.attrs,o),null!=t.attrs&&null!=t.attrs.contenteditable?A(t):null!=e.text&&null!=t.text&&""!==t.text?e.text.toString()!==t.text.toString()&&(e.dom.firstChild.nodeValue=t.text):(null!=e.text&&(e.children=[n("#",void 0,void 0,e.text,void 0,e.dom.firstChild)]),null!=t.text&&(t.children=[n("#",void 0,void 0,t.text,void 0,void 0)]),f(a,e.children,t.children,r,i,null,o))}function y(e,t,r,o,a,l,s){if(l)u(r,o);else{if(r.instance=n.normalize(r._state.view.call(r.state,r)),r.instance===r)throw Error("A view cannot return the vnode it received as argument");null!=r.attrs&&D(r.attrs,r,o),D(r._state,r,o)}null!=r.instance?(null==t.instance?i(e,r.instance,o,s,a):d(e,t.instance,r.instance,o,a,l,s),r.dom=r.instance.dom,r.domSize=r.instance.domSize):null!=t.instance?(S(t.instance,null),r.dom=void 0,r.domSize=0):(r.dom=t.dom,r.domSize=t.domSize)}function g(e,t){if(null!=e.pool&&Math.abs(e.pool.length-t.length)<=Math.abs(e.length-t.length)){var n=e[0]&&e[0].children&&e[0].children.length||0,r=e.pool[0]&&e.pool[0].children&&e.pool[0].children.length||0,i=t[0]&&t[0].children&&t[0].children.length||0;if(Math.abs(r-i)<=Math.abs(n-i))return!0}return!1}function w(e,t){for(var n={},r=0,r=0;r<t;r++){var i=e[r];if(null!=i){var o=i.key;null!=o&&(n[o]=r)}}return n}function b(e){var t=e.domSize;if(null!=t||null==e.dom){var n=H.createDocumentFragment();if(t>0){for(var r=e.dom;--t;)n.appendChild(r.nextSibling);n.insertBefore(r,n.firstChild)}return n}return e.dom}function x(e,t,n){for(;t<e.length;t++)if(null!=e[t]&&null!=e[t].dom)return e[t].dom;return n}function E(e,t,n){n&&n.parentNode?e.insertBefore(t,n):e.appendChild(t)}function A(e){var t=e.children;if(null!=t&&1===t.length&&"<"===t[0].tag){var n=t[0].children;e.dom.innerHTML!==n&&(e.dom.innerHTML=n)}else if(null!=e.text||null!=t&&0!==t.length)throw new Error("Child node of a contenteditable must be trusted")}function k(e,t,n,r){for(var i=t;i<n;i++){var o=e[i];null!=o&&(o.skip?o.skip=!1:S(o,r))}}function S(e,t){function n(){if(++i===r&&(L(e),e.dom)){var n=e.domSize||1;if(n>1)for(var o=e.dom;--n;)_(o.nextSibling);_(e.dom),null==t||null!=e.domSize||$(e.attrs)||"string"!=typeof e.tag||(t.pool?t.pool.push(e):t.pool=[e])}}var r=1,i=0;if(e.attrs&&"function"==typeof e.attrs.onbeforeremove){var o=e.attrs.onbeforeremove.call(e.state,e);null!=o&&"function"==typeof o.then&&(r++,o.then(n,n))}if("string"!=typeof e.tag&&"function"==typeof e._state.onbeforeremove){var o=e._state.onbeforeremove.call(e.state,e);null!=o&&"function"==typeof o.then&&(r++,o.then(n,n))}n()}function _(e){var t=e.parentNode;null!=t&&t.removeChild(e)}function L(e){if(e.attrs&&"function"==typeof e.attrs.onremove&&e.attrs.onremove.call(e.state,e),"string"!=typeof e.tag&&"function"==typeof e._state.onremove&&e._state.onremove.call(e.state,e),null!=e.instance)L(e.instance);else{var t=e.children;if(Array.isArray(t))for(var n=0;n<t.length;n++){var r=t[n];null!=r&&L(r)}}}function j(e,t,n){for(var r in t)C(e,r,null,t[r],n)}function C(e,t,n,r,i){var o=e.dom;if("key"!==t&&"is"!==t&&(n!==r||T(e,t)||"object"==typeof r)&&void 0!==r&&!N(t)){var a=t.indexOf(":");if(a>-1&&"xlink"===t.substr(0,a))o.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(a+1),r);else if("o"===t[0]&&"n"===t[1]&&"function"==typeof r)q(e,t,r);else if("style"===t)I(o,n,r);else if(t in o&&!P(t)&&void 0===i&&!R(e)){if("input"===e.tag&&"value"===t&&e.dom.value==r&&e.dom===H.activeElement)return;if("select"===e.tag&&"value"===t&&e.dom.value==r&&e.dom===H.activeElement)return;if("option"===e.tag&&"value"===t&&e.dom.value==r)return;if("input"===e.tag&&"type"===t)return void o.setAttribute(t,r);o[t]=r}else"boolean"==typeof r?r?o.setAttribute(t,""):o.removeAttribute(t):o.setAttribute("className"===t?"class":t,r)}}function O(e){var t=e.attrs;"select"===e.tag&&null!=t&&("value"in t&&C(e,"value",null,t.value,void 0),"selectedIndex"in t&&C(e,"selectedIndex",null,t.selectedIndex,void 0))}function z(e,t,n,r){if(null!=n)for(var i in n)C(e,i,t&&t[i],n[i],r);if(null!=t)for(var i in t)null!=n&&i in n||("className"===i&&(i="class"),"o"!==i[0]||"n"!==i[1]||N(i)?"key"!==i&&e.dom.removeAttribute(i):q(e,i,void 0))}function T(e,t){return"value"===t||"checked"===t||"selectedIndex"===t||"selected"===t&&e.dom===H.activeElement}function N(e){return"oninit"===e||"oncreate"===e||"onupdate"===e||"onremove"===e||"onbeforeremove"===e||"onbeforeupdate"===e}function P(e){return"href"===e||"list"===e||"form"===e||"width"===e||"height"===e}function R(e){return e.attrs.is||e.tag.indexOf("-")>-1}function $(e){return null!=e&&(e.oncreate||e.onupdate||e.onbeforeremove||e.onremove)}function I(e,t,n){if(t===n&&(e.style.cssText="",t=null),null==n)e.style.cssText="";else if("string"==typeof n)e.style.cssText=n;else{"string"==typeof t&&(e.style.cssText="");for(var r in n)e.style[r]=n[r];if(null!=t&&"string"!=typeof t)for(var r in t)r in n||(e.style[r]="")}}function q(e,t,n){var r=e.dom,i="function"!=typeof V?n:function(e){var t=n.call(r,e);return V.call(r,e),t};if(t in r)r[t]="function"==typeof n?i:null;else{var o=t.slice(2);if(void 0===e.events&&(e.events={}),e.events[t]===i)return;null!=e.events[t]&&r.removeEventListener(o,e.events[t],!1),"function"==typeof n&&(e.events[t]=i,r.addEventListener(o,e.events[t],!1))}}function M(e,t,n){"function"==typeof e.oninit&&e.oninit.call(t.state,t),"function"==typeof e.oncreate&&n.push(e.oncreate.bind(t.state,t))}function D(e,t,n){"function"==typeof e.onupdate&&n.push(e.onupdate.bind(t.state,t))}function U(e,t){var n,r;return null!=e.attrs&&"function"==typeof e.attrs.onbeforeupdate&&(n=e.attrs.onbeforeupdate.call(e.state,e,t)),"string"!=typeof e.tag&&"function"==typeof e._state.onbeforeupdate&&(r=e._state.onbeforeupdate.call(e.state,e,t)),!(void 0===n&&void 0===r||n||r)&&(e.dom=t.dom,e.domSize=t.domSize,e.instance=t.instance,!0)}function F(e,t){if(!e)throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.");var r=[],i=H.activeElement;null==e.vnodes&&(e.textContent=""),Array.isArray(t)||(t=[t]),f(e,e.vnodes,n.normalizeChildren(t),!1,r,null,void 0),e.vnodes=t;for(var o=0;o<r.length;o++)r[o]();H.activeElement!==i&&i.focus()}var V,H=e.document,B=H.createDocumentFragment();return{render:F,setEventCallback:t}},m=function(e){function t(e,t){n(e),o.push(e,a(t))}function n(e){var t=o.indexOf(e);t>-1&&o.splice(t,2)}function r(){for(var e=1;e<o.length;e+=2)o[e]()}var i=p(e);i.setEventCallback(function(e){!1!==e.redraw&&r()});var o=[];return{subscribe:t,unsubscribe:n,redraw:r,render:i.render}}(window);v.setCompletionCallback(m.redraw);c.mount=function(e){return function(t,r){if(null===r)return e.render(t,[]),void e.unsubscribe(t);if(null==r.view&&"function"!=typeof r)throw new Error("m.mount(element, component) expects a component, not a vnode");var i=function(){e.render(t,n(r))};e.subscribe(t,i),e.redraw()}}(m);var y=f,g=function(e){if(""===e||null==e)return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t=e.split("&"),n={},r={},i=0;i<t.length;i++){var o=t[i].split("="),a=decodeURIComponent(o[0]),l=2===o.length?decodeURIComponent(o[1]):"";"true"===l?l=!0:"false"===l&&(l=!1);var s=a.split(/\]\[?|\[/),u=n;a.indexOf("[")>-1&&s.pop();for(var c=0;c<s.length;c++){var f=s[c],d=s[c+1],h=""==d||!isNaN(parseInt(d,10)),v=c===s.length-1;if(""===f){var a=s.slice(0,c).join();null==r[a]&&(r[a]=0),f=r[a]++}null==u[f]&&(u[f]=v?l:h?[]:{}),u=u[f]}}return n},w=function(e){function t(t){var n=e.location[t].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);return"pathname"===t&&"/"!==n[0]&&(n="/"+n),n}function n(e){return function(){null==i&&(i=a(function(){i=null,e()}))}}function r(e,t,n){var r=e.indexOf("?"),i=e.indexOf("#"),o=r>-1?r:i>-1?i:e.length;if(r>-1){var a=i>-1?i:e.length,l=g(e.slice(r+1,a));for(var s in l)t[s]=l[s]}if(i>-1){var u=g(e.slice(i+1));for(var s in u)n[s]=u[s]}return e.slice(0,o)}var i,o="function"==typeof e.history.pushState,a="function"==typeof setImmediate?setImmediate:setTimeout,l={prefix:"#!"};return l.getPath=function(){switch(l.prefix.charAt(0)){case"#":return t("hash").slice(l.prefix.length);case"?":return t("search").slice(l.prefix.length)+t("hash");default:return t("pathname").slice(l.prefix.length)+t("search")+t("hash")}},l.setPath=function(t,n,i){var a={},s={};if(t=r(t,a,s),null!=n){for(var u in n)a[u]=n[u];t=t.replace(/:([^\/]+)/g,function(e,t){return delete a[t],n[t]})}var c=d(a);c&&(t+="?"+c);var f=d(s);if(f&&(t+="#"+f),o){var h=i?i.state:null,v=i?i.title:null;e.onpopstate(),i&&i.replace?e.history.replaceState(h,v,l.prefix+t):e.history.pushState(h,v,l.prefix+t)}else e.location.href=l.prefix+t},l.defineRoutes=function(t,i,a){function s(){var n=l.getPath(),o={},s=r(n,o,o),u=e.history.state;if(null!=u)for(var c in u)o[c]=u[c];for(var f in t){var d=new RegExp("^"+f.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(d.test(s))return void s.replace(d,function(){for(var e=f.match(/:[^\/]+/g)||[],r=[].slice.call(arguments,1,-2),a=0;a<e.length;a++)o[e[a].replace(/:|\./g,"")]=decodeURIComponent(r[a]);i(t[f],o,n,f)})}a(n,o)}o?e.onpopstate=n(s):"#"===l.prefix.charAt(0)&&(e.onhashchange=s),s()},l};c.route=function(e,t){var r,i,o,a,l,s=w(e),u=function(e){return e},c=function(e,c,f){if(null==e)throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined");var d=function(){null!=r&&t.render(e,r(n(i,o.key,o)))},h=function(e){if(e===c)throw new Error("Could not resolve default route "+c);s.setPath(c,null,{replace:!0})};s.defineRoutes(f,function(e,t,n){var s=l=function(e,c){s===l&&(i=null==c||"function"!=typeof c.view&&"function"!=typeof c?"div":c,o=t,a=n,l=null,r=(e.render||u).bind(e),d())};e.view||"function"==typeof e?s({},e):e.onmatch?y.resolve(e.onmatch(t,n)).then(function(t){s(e,t)},h):s(e,"div")},h),t.subscribe(e,d)};return c.set=function(e,t,n){null!=l&&(n={replace:!0}),l=null,s.setPath(e,t,n)},c.get=function(){return a},c.prefix=function(e){s.prefix=e},c.link=function(e){e.dom.setAttribute("href",s.prefix+e.attrs.href),e.dom.onclick=function(e){if(!(e.ctrlKey||e.metaKey||e.shiftKey||2===e.which)){e.preventDefault(),e.redraw=!1;var t=this.getAttribute("href");0===t.indexOf(s.prefix)&&(t=t.slice(s.prefix.length)),c.set(t,void 0,void 0)}}},c.param=function(e){return void 0!==o&&void 0!==e?o[e]:o},c}(window,m),c.withAttr=function(e,t,n){return function(r){t.call(n||this,e in r.currentTarget?r.currentTarget[e]:r.currentTarget.getAttribute(e))}};var b=p(window);c.render=b.render,c.redraw=m.redraw,c.request=v.request,c.jsonp=v.jsonp,c.parseQueryString=g,c.buildQueryString=d,c.version="1.1.1",c.vnode=n,void 0!==t?t.exports=c:window.m=c}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],8:[function(e,n,r){!function(e){"use strict";function r(){}function i(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function o(e){return function(){return this[e].apply(this,arguments)}}function a(e){return"function"==typeof e||e instanceof RegExp||!(!e||"object"!=typeof e)&&a(e.listener)}var l=r.prototype,s=e.EventEmitter;l.getListeners=function(e){var t,n,r=this._getEvents();if(e instanceof RegExp){t={};for(n in r)r.hasOwnProperty(n)&&e.test(n)&&(t[n]=r[n])}else t=r[e]||(r[e]=[]);return t},l.flattenListeners=function(e){var t,n=[];for(t=0;t<e.length;t+=1)n.push(e[t].listener);return n},l.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},l.addListener=function(e,t){if(!a(t))throw new TypeError("listener must be a function");var n,r=this.getListenersAsObject(e),o="object"==typeof t;for(n in r)r.hasOwnProperty(n)&&-1===i(r[n],t)&&r[n].push(o?t:{listener:t,once:!1});return this},l.on=o("addListener"),l.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},l.once=o("addOnceListener"),l.defineEvent=function(e){return this.getListeners(e),this},l.defineEvents=function(e){for(var t=0;t<e.length;t+=1)this.defineEvent(e[t]);return this},l.removeListener=function(e,t){var n,r,o=this.getListenersAsObject(e);for(r in o)o.hasOwnProperty(r)&&-1!==(n=i(o[r],t))&&o[r].splice(n,1);return this},l.off=o("removeListener"),l.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},l.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},l.manipulateListeners=function(e,t,n){var r,i,o=e?this.removeListener:this.addListener,a=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(r=n.length;r--;)o.call(this,t,n[r]);else for(r in t)t.hasOwnProperty(r)&&(i=t[r])&&("function"==typeof i?o.call(this,r,i):a.call(this,r,i));return this},l.removeEvent=function(e){var t,n=typeof e,r=this._getEvents();if("string"===n)delete r[e];else if(e instanceof RegExp)for(t in r)r.hasOwnProperty(t)&&e.test(t)&&delete r[t];else delete this._events;return this},l.removeAllListeners=o("removeEvent"),l.emitEvent=function(e,t){var n,r,i,o,a=this.getListenersAsObject(e);for(o in a)if(a.hasOwnProperty(o))for(n=a[o].slice(0),i=0;i<n.length;i++)r=n[i],!0===r.once&&this.removeListener(e,r.listener),
2
- r.listener.apply(this,t||[])===this._getOnceReturnValue()&&this.removeListener(e,r.listener);return this},l.trigger=o("emitEvent"),l.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},l.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},l._getOnceReturnValue=function(){return!this.hasOwnProperty("_onceReturnValue")||this._onceReturnValue},l._getEvents=function(){return this._events||(this._events={})},r.noConflict=function(){return e.EventEmitter=s,r},"function"==typeof t&&t.amd?t(function(){return r}):"object"==typeof n&&n.exports?n.exports=r:e.EventEmitter=r}(this||{})},{}]},{},[1])}();
3
  //# sourceMappingURL=admin.min.js.map
1
+ !function(){var e=void 0,t=void 0;!function t(n,r,i){function o(l,s){if(!r[l]){if(!n[l]){var u="function"==typeof e&&e;if(!s&&u)return u(l,!0);if(a)return a(l,!0);var c=new Error("Cannot find module '"+l+"'");throw c.code="MODULE_NOT_FOUND",c}var f=r[l]={exports:{}};n[l][0].call(f.exports,function(e){var t=n[l][1][e];return o(t||e)},f,f.exports,t,n,r,i)}return r[l].exports}for(var a="function"==typeof e&&e,l=0;l<i.length;l++)o(i[l]);return o}({1:[function(e,t,n){"use strict";var r=window.m=e("mithril"),i=e("wolfy87-eventemitter"),o=document.getElementById("mc4wp-admin"),a=new i,l=e("./admin/tabs.js")(o),s=e("./admin/helpers.js"),u=e("./admin/settings.js")(o,s,a),c=e("./admin/list-fetcher.js"),f=document.getElementById("mc4wp-list-fetcher");f&&r.mount(f,new c),window.mc4wp=window.mc4wp||{},window.mc4wp.deps=window.mc4wp.deps||{},window.mc4wp.deps.mithril=r,window.mc4wp.helpers=s,window.mc4wp.events=a,window.mc4wp.settings=u,window.mc4wp.tabs=l},{"./admin/helpers.js":2,"./admin/list-fetcher.js":3,"./admin/settings.js":4,"./admin/tabs.js":5,mithril:7,"wolfy87-eventemitter":8}],2:[function(e,t,n){"use strict";var r={};r.toggleElement=function(e){for(var t=document.querySelectorAll(e),n=0;n<t.length;n++){var r=t[n].clientHeight<=0;t[n].style.display=r?"":"none"}},r.bindEventToElement=function(e,t,n){e.addEventListener?e.addEventListener(t,n):e.attachEvent&&e.attachEvent("on"+t,n)},r.bindEventToElements=function(e,t,n){Array.prototype.forEach.call(e,function(e){r.bindEventToElement(e,t,n)})},r.debounce=function(e,t,n){var r;return function(){var i=this,o=arguments,a=function(){r=null,n||e.apply(i,o)},l=n&&!r;clearTimeout(r),r=setTimeout(a,t),l&&e.apply(i,o)}},function(){var e=document.querySelectorAll("[data-showif]");Array.prototype.forEach.call(e,function(e){function t(){if("radio"!==this.getAttribute("type")||this.checked){var t="checkbox"===this.getAttribute("type")?this.checked:this.value,r=t==n.value;a?(e.style.display=r?"":"none",e.style.visibility=r?"":"hidden"):e.style.opacity=r?"":"0.4",Array.prototype.forEach.call(o,function(e){r?e.removeAttribute("readonly"):e.setAttribute("readonly","readonly")})}}var n=JSON.parse(e.getAttribute("data-showif")),i=document.querySelectorAll('[name="'+n.element+'"]'),o=e.querySelectorAll("input,select,textarea:not([readonly])"),a=void 0===n.hide||n.hide;Array.prototype.forEach.call(i,function(e){t.call(e)}),r.bindEventToElements(i,"change",t)})}(),t.exports=r},{}],3:[function(e,t,n){"use strict";function r(){this.working=!1,this.done=!1,o.mailchimp.api_connected&&0===o.mailchimp.lists.length&&this.fetch()}var i=window.jQuery,o=mc4wp_vars,a=o.i18n;r.prototype.fetch=function(e){e&&e.preventDefault(),this.working=!0,this.done=!1,i.post(ajaxurl,{action:"mc4wp_renew_mailchimp_lists"}).done(function(e){this.success=!0,e&&window.setTimeout(function(){window.location.reload()},3e3)}.bind(this)).fail(function(e){this.success=!1}.bind(this)).always(function(e){this.working=!1,this.done=!0,m.redraw()}.bind(this))},r.prototype.view=function(){return m("form",{method:"POST",onsubmit:this.fetch.bind(this)},[m("p",[m("input",{type:"submit",value:this.working?a.fetching_mailchimp_lists:a.renew_mailchimp_lists,className:"button",disabled:!!this.working}),m.trust(" &nbsp; "),this.working?[m("span.mc4wp-loader","Loading..."),m.trust(" &nbsp; "),m("em.help",a.fetching_mailchimp_lists_can_take_a_while)]:"",this.done?[this.success?m("em.help.green",a.fetching_mailchimp_lists_done):m("em.help.red",a.fetching_mailchimp_lists_error)]:""])])},t.exports=r},{}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(e,t,n){function i(e,t){return c.filter(function(n){return n[e]===t})}function o(){return c}function a(){return c=[],Array.prototype.forEach.call(s,function(e){("boolean"!=typeof e.checked||e.checked)&&"object"===r(u[e.value])&&c.push(u[e.value])}),n.trigger("selectedLists.change",[c]),c}function l(){var e=document.querySelectorAll(".lists--only-selected > *");Array.prototype.forEach.call(e,function(e){i("id",e.getAttribute("data-list-id")).length>0?e.setAttribute("class",e.getAttribute("class").replace("hidden","")):e.setAttribute("class",e.getAttribute("class")+" hidden")})}var s=(e.querySelector("form"),e.querySelectorAll(".mc4wp-list-input")),u=mc4wp_vars.mailchimp.lists,c=[];return n.on("selectedLists.change",l),t.bindEventToElements(s,"change",a),a(),{getSelectedLists:o}};t.exports=i},{}],5:[function(e,t,n){"use strict";var r=e("./url.js"),i=function(e){function t(e){for(var t=0;t<f.length;t++)if(f[t].id===e)return f[t]}function n(e,n){if("string"==typeof e&&(e=t(e)),!e)return!1;void 0==n&&(n=!0),s.removeClass("tab-active").css("display","none"),u.removeClass("nav-tab-active"),Array.prototype.forEach.call(e.nav,function(e){e.className+=" nav-tab-active",e.blur()}),e.element.style.display="block",e.element.className+=" tab-active";var o=r.setParameter(window.location.href,"tab",e.id);return history.pushState&&n&&history.pushState(e.id,"",o),i(e),c.value=o,"function"==typeof tb_remove&&tb_remove(),"fields"===e.id&&window.mc4wp&&window.mc4wp.forms&&window.mc4wp.forms.editor&&mc4wp.forms.editor.refresh(),!0}function i(e){var t=document.title.split("-");document.title=document.title.replace(t[0],e.title+" ")}function o(e){e=e||window.event;var t=this.getAttribute("data-tab");if(!t){var i=this.className.match(/nav-tab-(\w+)?/);i&&(t=i[1])}if(!t){var o=r.parse(this.href);if(!o.tab)return;t=o.tab}return!n(t)||(e.preventDefault(),e.returnValue=!1,!1)}var a=window.jQuery,l=a(e),s=l.find(".tab"),u=l.find(".nav-tab"),c=e.querySelector('input[name="_wp_http_referer"]'),f=[];return a.each(s,function(t,r){var i=r.id.substring(4),o=a(r).find("h2").first().text();f.push({id:i,title:o,element:r,nav:e.querySelectorAll(".nav-tab-"+i),open:function(){return n(i)}})}),u.click(o),a(document.body).on("click",".tab-link",o),function(){if(history.pushState){var e=s.filter(":visible").get(0);if(e){var n=t(e.id.substring(4));n&&(history.replaceState&&null===history.state&&history.replaceState(n.id,""),i(n))}}}(),window.addEventListener&&history.pushState&&window.addEventListener("popstate",function(e){return!e.state||n(e.state,!1)}),{open:n,get:t}};t.exports=i},{"./url.js":6}],6:[function(e,t,n){"use strict";var r={parse:function(e){var t={},n=e.split("&");for(var r in n)if(n.hasOwnProperty(r)){var i=n[r].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t},build:function(e){var t=[];for(var n in e)t.push(n+"="+encodeURIComponent(e[n]));return t.join("&")},setParameter:function(e,t,n){var i=r.parse(e);return i[t]=n,r.build(i)}};t.exports=r},{}],7:[function(e,t,n){(function(e){!function(){"use strict";function n(e,t,n,r,i,o){return{tag:e,key:t,attrs:n,children:r,text:i,dom:o,domSize:void 0,state:void 0,_state:void 0,events:void 0,instance:void 0,skip:!1}}function r(e){for(var t,n="div",r=[],i={};t=l.exec(e);){var o=t[1],a=t[2];if(""===o&&""!==a)n=a;else if("#"===o)i.id=a;else if("."===o)r.push(a);else if("["===t[3][0]){var u=t[6];u&&(u=u.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),"class"===t[4]?r.push(u):i[t[4]]=u||!0}}return r.length>0&&(i.className=r.join(" ")),s[e]={tag:n,attrs:i}}function i(e,t,r){var i,o,a=!1,l=t.className||t.class;for(var s in e.attrs)u.call(e.attrs,s)&&(t[s]=e.attrs[s]);void 0!==l&&(void 0!==t.class&&(t.class=void 0,t.className=l),null!=e.attrs.className&&(t.className=e.attrs.className+" "+l));for(var s in t)if(u.call(t,s)&&"key"!==s){a=!0;break}return Array.isArray(r)&&1===r.length&&null!=r[0]&&"#"===r[0].tag?o=r[0].children:i=r,n(e.tag,t.key,a?t:void 0,i,o)}function o(e){var t,o=arguments[1],a=2;if(null==e||"string"!=typeof e&&"function"!=typeof e&&"function"!=typeof e.view)throw Error("The selector must be either a string or a component.");if("string"==typeof e)var l=s[e]||r(e);if(null==o?o={}:("object"!=typeof o||null!=o.tag||Array.isArray(o))&&(o={},a=1),arguments.length===a+1)t=arguments[a],Array.isArray(t)||(t=[t]);else for(t=[];a<arguments.length;)t.push(arguments[a++]);var u=n.normalizeChildren(t);return"string"==typeof e?i(l,o,u):n(e,o.key,o,u)}function a(e){var t=0,n=null,r="function"==typeof requestAnimationFrame?requestAnimationFrame:setTimeout;return function(){var i=Date.now();0===t||i-t>=16?(t=i,e()):null===n&&(n=r(function(){n=null,e(),t=Date.now()},16-(i-t)))}}n.normalize=function(e){return Array.isArray(e)?n("[",void 0,void 0,n.normalizeChildren(e),void 0,void 0):null!=e&&"object"!=typeof e?n("#",void 0,void 0,!1===e?"":e,void 0,void 0):e},n.normalizeChildren=function(e){for(var t=0;t<e.length;t++)e[t]=n.normalize(e[t]);return e};var l=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,s={},u={}.hasOwnProperty;o.trust=function(e){return null==e&&(e=""),n("<",void 0,void 0,e,void 0,void 0)},o.fragment=function(e,t){return n("[",e.key,e,n.normalizeChildren(t),void 0,void 0)};var c=o,f=function(e){function t(e,t){return function a(c){var f;try{if(!t||null==c||"object"!=typeof c&&"function"!=typeof c||"function"!=typeof(f=c.then))u(function(){t||0!==e.length||console.error("Possible unhandled promise rejection:",c);for(var n=0;n<e.length;n++)e[n](c);i.length=0,o.length=0,s.state=t,s.retry=function(){a(c)}});else{if(c===r)throw new TypeError("Promise can't be resolved w/ itself");n(f.bind(c))}}catch(e){l(e)}}}function n(e){function t(e){return function(t){n++>0||e(t)}}var n=0,r=t(l);try{e(t(a),r)}catch(e){r(e)}}if(!(this instanceof f))throw new Error("Promise must be called with `new`");if("function"!=typeof e)throw new TypeError("executor must be a function");var r=this,i=[],o=[],a=t(i,!0),l=t(o,!1),s=r._instance={resolvers:i,rejectors:o},u="function"==typeof setImmediate?setImmediate:setTimeout;n(e)};if(f.prototype.then=function(e,t){function n(e,t,n,o){t.push(function(t){if("function"!=typeof e)n(t);else try{r(e(t))}catch(e){i&&i(e)}}),"function"==typeof a.retry&&o===a.state&&a.retry()}var r,i,o=this,a=o._instance,l=new f(function(e,t){r=e,i=t});return n(e,a.resolvers,r,!0),n(t,a.rejectors,i,!1),l},f.prototype.catch=function(e){return this.then(null,e)},f.resolve=function(e){return e instanceof f?e:new f(function(t){t(e)})},f.reject=function(e){return new f(function(t,n){n(e)})},f.all=function(e){return new f(function(t,n){var r=e.length,i=0,o=[];if(0===e.length)t([]);else for(var a=0;a<e.length;a++)!function(a){function l(e){i++,o[a]=e,i===r&&t(o)}null==e[a]||"object"!=typeof e[a]&&"function"!=typeof e[a]||"function"!=typeof e[a].then?l(e[a]):e[a].then(l,n)}(a)})},f.race=function(e){return new f(function(t,n){for(var r=0;r<e.length;r++)e[r].then(t,n)})},"undefined"!=typeof window){void 0===window.Promise&&(window.Promise=f);var f=window.Promise}else if(void 0!==e){void 0===e.Promise&&(e.Promise=f);var f=e.Promise}var d=function(e){function t(e,r){if(Array.isArray(r))for(var i=0;i<r.length;i++)t(e+"["+i+"]",r[i]);else if("[object Object]"===Object.prototype.toString.call(r))for(var i in r)t(e+"["+i+"]",r[i]);else n.push(encodeURIComponent(e)+(null!=r&&""!==r?"="+encodeURIComponent(r):""))}if("[object Object]"!==Object.prototype.toString.call(e))return"";var n=[];for(var r in e)t(r,e[r]);return n.join("&")},h=new RegExp("^file://","i"),v=function(e,t){function n(e){v=e}function r(){function e(){0==--t&&"function"==typeof v&&v()}var t=0;return function n(r){var i=r.then;return r.then=function(){t++;var o=i.apply(r,arguments);return o.then(e,function(n){if(e(),0===t)throw n}),n(o)},r}}function i(e,t){if("string"==typeof e){var n=e;e=t||{},null==e.url&&(e.url=n)}return e}function o(n,o){var a=r();n=i(n,o);var d=new t(function(t,r){null==n.method&&(n.method="GET"),n.method=n.method.toUpperCase();var i="GET"!==n.method&&"TRACE"!==n.method&&("boolean"!=typeof n.useBody||n.useBody);"function"!=typeof n.serialize&&(n.serialize="undefined"!=typeof FormData&&n.data instanceof FormData?function(e){return e}:JSON.stringify),"function"!=typeof n.deserialize&&(n.deserialize=u),"function"!=typeof n.extract&&(n.extract=c),n.url=l(n.url,n.data),i?n.data=n.serialize(n.data):n.url=s(n.url,n.data);var o=new e.XMLHttpRequest,a=!1,d=o.abort;o.abort=function(){a=!0,d.call(o)},o.open(n.method,n.url,"boolean"!=typeof n.async||n.async,"string"==typeof n.user?n.user:void 0,"string"==typeof n.password?n.password:void 0),n.serialize===JSON.stringify&&i&&o.setRequestHeader("Content-Type","application/json; charset=utf-8"),n.deserialize===u&&o.setRequestHeader("Accept","application/json, text/*"),n.withCredentials&&(o.withCredentials=n.withCredentials);for(var v in n.headers)({}).hasOwnProperty.call(n.headers,v)&&o.setRequestHeader(v,n.headers[v]);"function"==typeof n.config&&(o=n.config(o,n)||o),o.onreadystatechange=function(){if(!a&&4===o.readyState)try{var e=n.extract!==c?n.extract(o,n):n.deserialize(n.extract(o,n));if(o.status>=200&&o.status<300||304===o.status||h.test(n.url))t(f(n.type,e));else{var i=new Error(o.responseText);for(var l in e)i[l]=e[l];r(i)}}catch(e){r(e)}},i&&null!=n.data?o.send(n.data):o.send()});return!0===n.background?d:a(d)}function a(n,o){var a=r();n=i(n,o);var u=new t(function(t,r){var i=n.callbackName||"_mithril_"+Math.round(1e16*Math.random())+"_"+p++,o=e.document.createElement("script");e[i]=function(r){o.parentNode.removeChild(o),t(f(n.type,r)),delete e[i]},o.onerror=function(){o.parentNode.removeChild(o),r(new Error("JSONP request failed")),delete e[i]},null==n.data&&(n.data={}),n.url=l(n.url,n.data),n.data[n.callbackKey||"callback"]=i,o.src=s(n.url,n.data),e.document.documentElement.appendChild(o)});return!0===n.background?u:a(u)}function l(e,t){if(null==t)return e;for(var n=e.match(/:[^\/]+/gi)||[],r=0;r<n.length;r++){var i=n[r].slice(1);null!=t[i]&&(e=e.replace(n[r],t[i]))}return e}function s(e,t){var n=d(t);if(""!==n){e+=(e.indexOf("?")<0?"?":"&")+n}return e}function u(e){try{return""!==e?JSON.parse(e):null}catch(t){throw new Error(e)}}function c(e){return e.responseText}function f(e,t){if("function"==typeof e){if(!Array.isArray(t))return new e(t);for(var n=0;n<t.length;n++)t[n]=new e(t[n])}return t}var v,p=0;return{request:o,jsonp:a,setCompletionCallback:n}}(window,f),p=function(e){function t(e){return V=e}function r(e,t,n,r,o,a,l){for(var s=n;s<r;s++){var u=t[s];null!=u&&i(e,u,o,l,a)}}function i(e,t,n,r,i){var u=t.tag;if("string"!=typeof u)return c(e,t,n,r,i);switch(t.state={},null!=t.attrs&&M(t.attrs,t,n),u){case"#":return o(e,t,i);case"<":return a(e,t,i);case"[":return l(e,t,n,r,i);default:return s(e,t,n,r,i)}}function o(e,t,n){return t.dom=H.createTextNode(t.children),E(e,t.dom,n),t.dom}function a(e,t,n){var r=t.children.match(/^\s*?<(\w+)/im)||[],i={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[r[1]]||"div",o=H.createElement(i);o.innerHTML=t.children,t.dom=o.firstChild,t.domSize=o.childNodes.length;for(var a,l=H.createDocumentFragment();a=o.firstChild;)l.appendChild(a);return E(e,l,n),l}function l(e,t,n,i,o){var a=H.createDocumentFragment();if(null!=t.children){var l=t.children;r(a,l,0,l.length,n,null,i)}return t.dom=a.firstChild,t.domSize=a.childNodes.length,E(e,a,o),a}function s(e,t,i,o,a){var l=t.tag;switch(t.tag){case"svg":o="http://www.w3.org/2000/svg";break;case"math":o="http://www.w3.org/1998/Math/MathML"}var s=t.attrs,u=s&&s.is,c=o?u?H.createElementNS(o,l,{is:u}):H.createElementNS(o,l):u?H.createElement(l,{is:u}):H.createElement(l);if(t.dom=c,null!=s&&j(t,s,o),E(e,c,a),null!=t.attrs&&null!=t.attrs.contenteditable)A(t);else if(null!=t.text&&(""!==t.text?c.textContent=t.text:t.children=[n("#",void 0,void 0,t.text,void 0,void 0)]),null!=t.children){var f=t.children;r(c,f,0,f.length,i,null,o),O(t)}return c}function u(e,t){var r;if("function"==typeof e.tag.view){if(e.state=Object.create(e.tag),r=e.state.view,null!=r.$$reentrantLock$$)return B;r.$$reentrantLock$$=!0}else{if(e.state=void 0,r=e.tag,null!=r.$$reentrantLock$$)return B;r.$$reentrantLock$$=!0,e.state=null!=e.tag.prototype&&"function"==typeof e.tag.prototype.view?new e.tag(e):e.tag(e)}if(e._state=e.state,null!=e.attrs&&M(e.attrs,e,t),M(e._state,e,t),e.instance=n.normalize(e._state.view.call(e.state,e)),e.instance===e)throw Error("A view cannot return the vnode it received as argument");r.$$reentrantLock$$=null}function c(e,t,n,r,o){if(u(t,n),null!=t.instance){var a=i(e,t.instance,n,r,o);return t.dom=t.instance.dom,t.domSize=null!=t.dom?t.instance.domSize:0,E(e,a,o),a}return t.domSize=0,B}function f(e,t,n,o,a,l,s){if(t!==n&&(null!=t||null!=n))if(null==t)r(e,n,0,n.length,a,l,void 0);else if(null==n)k(t,0,t.length,n);else{if(t.length===n.length){for(var u=!1,c=0;c<n.length;c++)if(null!=n[c]&&null!=t[c]){u=null==n[c].key&&null==t[c].key;break}if(u){for(var c=0;c<t.length;c++)t[c]!==n[c]&&(null==t[c]&&null!=n[c]?i(e,n[c],a,s,x(t,c+1,l)):null==n[c]?k(t,c,c+1,n):d(e,t[c],n[c],a,x(t,c+1,l),o,s));return}}if(o=o||g(t,n)){var f=t.pool;t=t.concat(t.pool)}for(var h,v=0,p=0,m=t.length-1,y=n.length-1;m>=v&&y>=p;){var A=t[v],S=n[p];if(A!==S||o)if(null==A)v++;else if(null==S)p++;else if(A.key===S.key){var _=null!=f&&v>=t.length-f.length||null==f&&o;v++,p++,d(e,A,S,a,x(t,v,l),_,s),o&&A.tag===S.tag&&E(e,b(A),l)}else{var A=t[m];if(A!==S||o)if(null==A)m--;else if(null==S)p++;else{if(A.key!==S.key)break;var _=null!=f&&m>=t.length-f.length||null==f&&o;d(e,A,S,a,x(t,m+1,l),_,s),(o||p<y)&&E(e,b(A),x(t,v,l)),m--,p++}else m--,p++}else v++,p++}for(;m>=v&&y>=p;){var A=t[m],S=n[y];if(A!==S||o)if(null==A)m--;else if(null==S)y--;else if(A.key===S.key){var _=null!=f&&m>=t.length-f.length||null==f&&o;d(e,A,S,a,x(t,m+1,l),_,s),o&&A.tag===S.tag&&E(e,b(A),l),null!=A.dom&&(l=A.dom),m--,y--}else{if(h||(h=w(t,m)),null!=S){var L=h[S.key];if(null!=L){var j=t[L],_=null!=f&&L>=t.length-f.length||null==f&&o;d(e,j,S,a,x(t,m+1,l),o,s),E(e,b(j),l),t[L].skip=!0,null!=j.dom&&(l=j.dom)}else{var C=i(e,S,a,void 0,l);l=C}}y--}else m--,y--;if(y<p)break}r(e,n,p,y+1,a,l,s),k(t,v,m+1,n)}}function d(e,t,n,r,o,a,l){var s=t.tag;if(s===n.tag){if(n.state=t.state,n._state=t._state,n.events=t.events,!a&&U(n,t))return;if("string"==typeof s)switch(null!=n.attrs&&(a?(n.state={},M(n.attrs,n,r)):D(n.attrs,n,r)),s){case"#":h(t,n);break;case"<":v(e,t,n,o);break;case"[":p(e,t,n,a,r,o,l);break;default:m(t,n,a,r,l)}else y(e,t,n,r,o,a,l)}else S(t,null),i(e,n,r,l,o)}function h(e,t){e.children.toString()!==t.children.toString()&&(e.dom.nodeValue=t.children),t.dom=e.dom}function v(e,t,n,r){t.children!==n.children?(b(t),a(e,n,r)):(n.dom=t.dom,n.domSize=t.domSize)}function p(e,t,n,r,i,o,a){f(e,t.children,n.children,r,i,o,a);var l=0,s=n.children;if(n.dom=null,null!=s){for(var u=0;u<s.length;u++){var c=s[u];null!=c&&null!=c.dom&&(null==n.dom&&(n.dom=c.dom),l+=c.domSize||1)}1!==l&&(n.domSize=l)}}function m(e,t,r,i,o){var a=t.dom=e.dom;switch(t.tag){case"svg":o="http://www.w3.org/2000/svg";break;case"math":o="http://www.w3.org/1998/Math/MathML"}"textarea"===t.tag&&(null==t.attrs&&(t.attrs={}),null!=t.text&&(t.attrs.value=t.text,t.text=void 0)),z(t,e.attrs,t.attrs,o),null!=t.attrs&&null!=t.attrs.contenteditable?A(t):null!=e.text&&null!=t.text&&""!==t.text?e.text.toString()!==t.text.toString()&&(e.dom.firstChild.nodeValue=t.text):(null!=e.text&&(e.children=[n("#",void 0,void 0,e.text,void 0,e.dom.firstChild)]),null!=t.text&&(t.children=[n("#",void 0,void 0,t.text,void 0,void 0)]),f(a,e.children,t.children,r,i,null,o))}function y(e,t,r,o,a,l,s){if(l)u(r,o);else{if(r.instance=n.normalize(r._state.view.call(r.state,r)),r.instance===r)throw Error("A view cannot return the vnode it received as argument");null!=r.attrs&&D(r.attrs,r,o),D(r._state,r,o)}null!=r.instance?(null==t.instance?i(e,r.instance,o,s,a):d(e,t.instance,r.instance,o,a,l,s),r.dom=r.instance.dom,r.domSize=r.instance.domSize):null!=t.instance?(S(t.instance,null),r.dom=void 0,r.domSize=0):(r.dom=t.dom,r.domSize=t.domSize)}function g(e,t){if(null!=e.pool&&Math.abs(e.pool.length-t.length)<=Math.abs(e.length-t.length)){var n=e[0]&&e[0].children&&e[0].children.length||0,r=e.pool[0]&&e.pool[0].children&&e.pool[0].children.length||0,i=t[0]&&t[0].children&&t[0].children.length||0;if(Math.abs(r-i)<=Math.abs(n-i))return!0}return!1}function w(e,t){for(var n={},r=0,r=0;r<t;r++){var i=e[r];if(null!=i){var o=i.key;null!=o&&(n[o]=r)}}return n}function b(e){var t=e.domSize;if(null!=t||null==e.dom){var n=H.createDocumentFragment();if(t>0){for(var r=e.dom;--t;)n.appendChild(r.nextSibling);n.insertBefore(r,n.firstChild)}return n}return e.dom}function x(e,t,n){for(;t<e.length;t++)if(null!=e[t]&&null!=e[t].dom)return e[t].dom;return n}function E(e,t,n){n&&n.parentNode?e.insertBefore(t,n):e.appendChild(t)}function A(e){var t=e.children;if(null!=t&&1===t.length&&"<"===t[0].tag){var n=t[0].children;e.dom.innerHTML!==n&&(e.dom.innerHTML=n)}else if(null!=e.text||null!=t&&0!==t.length)throw new Error("Child node of a contenteditable must be trusted")}function k(e,t,n,r){for(var i=t;i<n;i++){var o=e[i];null!=o&&(o.skip?o.skip=!1:S(o,r))}}function S(e,t){function n(){if(++i===r&&(L(e),e.dom)){var n=e.domSize||1;if(n>1)for(var o=e.dom;--n;)_(o.nextSibling);_(e.dom),null==t||null!=e.domSize||$(e.attrs)||"string"!=typeof e.tag||(t.pool?t.pool.push(e):t.pool=[e])}}var r=1,i=0;if(e.attrs&&"function"==typeof e.attrs.onbeforeremove){var o=e.attrs.onbeforeremove.call(e.state,e);null!=o&&"function"==typeof o.then&&(r++,o.then(n,n))}if("string"!=typeof e.tag&&"function"==typeof e._state.onbeforeremove){var o=e._state.onbeforeremove.call(e.state,e);null!=o&&"function"==typeof o.then&&(r++,o.then(n,n))}n()}function _(e){var t=e.parentNode;null!=t&&t.removeChild(e)}function L(e){if(e.attrs&&"function"==typeof e.attrs.onremove&&e.attrs.onremove.call(e.state,e),"string"!=typeof e.tag&&"function"==typeof e._state.onremove&&e._state.onremove.call(e.state,e),null!=e.instance)L(e.instance);else{var t=e.children;if(Array.isArray(t))for(var n=0;n<t.length;n++){var r=t[n];null!=r&&L(r)}}}function j(e,t,n){for(var r in t)C(e,r,null,t[r],n)}function C(e,t,n,r,i){var o=e.dom;if("key"!==t&&"is"!==t&&(n!==r||T(e,t)||"object"==typeof r)&&void 0!==r&&!N(t)){var a=t.indexOf(":");if(a>-1&&"xlink"===t.substr(0,a))o.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(a+1),r);else if("o"===t[0]&&"n"===t[1]&&"function"==typeof r)q(e,t,r);else if("style"===t)I(o,n,r);else if(t in o&&!P(t)&&void 0===i&&!R(e)){if("input"===e.tag&&"value"===t&&e.dom.value==r&&e.dom===H.activeElement)return;if("select"===e.tag&&"value"===t&&e.dom.value==r&&e.dom===H.activeElement)return;if("option"===e.tag&&"value"===t&&e.dom.value==r)return;if("input"===e.tag&&"type"===t)return void o.setAttribute(t,r);o[t]=r}else"boolean"==typeof r?r?o.setAttribute(t,""):o.removeAttribute(t):o.setAttribute("className"===t?"class":t,r)}}function O(e){var t=e.attrs;"select"===e.tag&&null!=t&&("value"in t&&C(e,"value",null,t.value,void 0),"selectedIndex"in t&&C(e,"selectedIndex",null,t.selectedIndex,void 0))}function z(e,t,n,r){if(null!=n)for(var i in n)C(e,i,t&&t[i],n[i],r);if(null!=t)for(var i in t)null!=n&&i in n||("className"===i&&(i="class"),"o"!==i[0]||"n"!==i[1]||N(i)?"key"!==i&&e.dom.removeAttribute(i):q(e,i,void 0))}function T(e,t){return"value"===t||"checked"===t||"selectedIndex"===t||"selected"===t&&e.dom===H.activeElement}function N(e){return"oninit"===e||"oncreate"===e||"onupdate"===e||"onremove"===e||"onbeforeremove"===e||"onbeforeupdate"===e}function P(e){return"href"===e||"list"===e||"form"===e||"width"===e||"height"===e}function R(e){return e.attrs.is||e.tag.indexOf("-")>-1}function $(e){return null!=e&&(e.oncreate||e.onupdate||e.onbeforeremove||e.onremove)}function I(e,t,n){if(t===n&&(e.style.cssText="",t=null),null==n)e.style.cssText="";else if("string"==typeof n)e.style.cssText=n;else{"string"==typeof t&&(e.style.cssText="");for(var r in n)e.style[r]=n[r];if(null!=t&&"string"!=typeof t)for(var r in t)r in n||(e.style[r]="")}}function q(e,t,n){var r=e.dom,i="function"!=typeof V?n:function(e){var t=n.call(r,e);return V.call(r,e),t};if(t in r)r[t]="function"==typeof n?i:null;else{var o=t.slice(2);if(void 0===e.events&&(e.events={}),e.events[t]===i)return;null!=e.events[t]&&r.removeEventListener(o,e.events[t],!1),"function"==typeof n&&(e.events[t]=i,r.addEventListener(o,e.events[t],!1))}}function M(e,t,n){"function"==typeof e.oninit&&e.oninit.call(t.state,t),"function"==typeof e.oncreate&&n.push(e.oncreate.bind(t.state,t))}function D(e,t,n){"function"==typeof e.onupdate&&n.push(e.onupdate.bind(t.state,t))}function U(e,t){var n,r;return null!=e.attrs&&"function"==typeof e.attrs.onbeforeupdate&&(n=e.attrs.onbeforeupdate.call(e.state,e,t)),"string"!=typeof e.tag&&"function"==typeof e._state.onbeforeupdate&&(r=e._state.onbeforeupdate.call(e.state,e,t)),!(void 0===n&&void 0===r||n||r)&&(e.dom=t.dom,e.domSize=t.domSize,e.instance=t.instance,!0)}function F(e,t){if(!e)throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.");var r=[],i=H.activeElement;null==e.vnodes&&(e.textContent=""),Array.isArray(t)||(t=[t]),f(e,e.vnodes,n.normalizeChildren(t),!1,r,null,void 0),e.vnodes=t;for(var o=0;o<r.length;o++)r[o]();H.activeElement!==i&&i.focus()}var V,H=e.document,B=H.createDocumentFragment();return{render:F,setEventCallback:t}},m=function(e){function t(e,t){n(e),o.push(e,a(t))}function n(e){var t=o.indexOf(e);t>-1&&o.splice(t,2)}function r(){for(var e=1;e<o.length;e+=2)o[e]()}var i=p(e);i.setEventCallback(function(e){!1!==e.redraw&&r()});var o=[];return{subscribe:t,unsubscribe:n,redraw:r,render:i.render}}(window);v.setCompletionCallback(m.redraw);c.mount=function(e){return function(t,r){if(null===r)return e.render(t,[]),void e.unsubscribe(t);if(null==r.view&&"function"!=typeof r)throw new Error("m.mount(element, component) expects a component, not a vnode");var i=function(){e.render(t,n(r))};e.subscribe(t,i),e.redraw()}}(m);var y=f,g=function(e){if(""===e||null==e)return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t=e.split("&"),n={},r={},i=0;i<t.length;i++){var o=t[i].split("="),a=decodeURIComponent(o[0]),l=2===o.length?decodeURIComponent(o[1]):"";"true"===l?l=!0:"false"===l&&(l=!1);var s=a.split(/\]\[?|\[/),u=n;a.indexOf("[")>-1&&s.pop();for(var c=0;c<s.length;c++){var f=s[c],d=s[c+1],h=""==d||!isNaN(parseInt(d,10)),v=c===s.length-1;if(""===f){var a=s.slice(0,c).join();null==r[a]&&(r[a]=0),f=r[a]++}null==u[f]&&(u[f]=v?l:h?[]:{}),u=u[f]}}return n},w=function(e){function t(t){var n=e.location[t].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);return"pathname"===t&&"/"!==n[0]&&(n="/"+n),n}function n(e){return function(){null==i&&(i=a(function(){i=null,e()}))}}function r(e,t,n){var r=e.indexOf("?"),i=e.indexOf("#"),o=r>-1?r:i>-1?i:e.length;if(r>-1){var a=i>-1?i:e.length,l=g(e.slice(r+1,a));for(var s in l)t[s]=l[s]}if(i>-1){var u=g(e.slice(i+1));for(var s in u)n[s]=u[s]}return e.slice(0,o)}var i,o="function"==typeof e.history.pushState,a="function"==typeof setImmediate?setImmediate:setTimeout,l={prefix:"#!"};return l.getPath=function(){switch(l.prefix.charAt(0)){case"#":return t("hash").slice(l.prefix.length);case"?":return t("search").slice(l.prefix.length)+t("hash");default:return t("pathname").slice(l.prefix.length)+t("search")+t("hash")}},l.setPath=function(t,n,i){var a={},s={};if(t=r(t,a,s),null!=n){for(var u in n)a[u]=n[u];t=t.replace(/:([^\/]+)/g,function(e,t){return delete a[t],n[t]})}var c=d(a);c&&(t+="?"+c);var f=d(s);if(f&&(t+="#"+f),o){var h=i?i.state:null,v=i?i.title:null;e.onpopstate(),i&&i.replace?e.history.replaceState(h,v,l.prefix+t):e.history.pushState(h,v,l.prefix+t)}else e.location.href=l.prefix+t},l.defineRoutes=function(t,i,a){function s(){var n=l.getPath(),o={},s=r(n,o,o),u=e.history.state;if(null!=u)for(var c in u)o[c]=u[c];for(var f in t){var d=new RegExp("^"+f.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(d.test(s))return void s.replace(d,function(){for(var e=f.match(/:[^\/]+/g)||[],r=[].slice.call(arguments,1,-2),a=0;a<e.length;a++)o[e[a].replace(/:|\./g,"")]=decodeURIComponent(r[a]);i(t[f],o,n,f)})}a(n,o)}o?e.onpopstate=n(s):"#"===l.prefix.charAt(0)&&(e.onhashchange=s),s()},l};c.route=function(e,t){var r,i,o,a,l,s=w(e),u=function(e){return e},c=function(e,c,f){if(null==e)throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined");var d=function(){null!=r&&t.render(e,r(n(i,o.key,o)))},h=function(e){if(e===c)throw new Error("Could not resolve default route "+c);s.setPath(c,null,{replace:!0})};s.defineRoutes(f,function(e,t,n){var s=l=function(e,c){s===l&&(i=null==c||"function"!=typeof c.view&&"function"!=typeof c?"div":c,o=t,a=n,l=null,r=(e.render||u).bind(e),d())};e.view||"function"==typeof e?s({},e):e.onmatch?y.resolve(e.onmatch(t,n)).then(function(t){s(e,t)},h):s(e,"div")},h),t.subscribe(e,d)};return c.set=function(e,t,n){null!=l&&(n={replace:!0}),l=null,s.setPath(e,t,n)},c.get=function(){return a},c.prefix=function(e){s.prefix=e},c.link=function(e){e.dom.setAttribute("href",s.prefix+e.attrs.href),e.dom.onclick=function(e){if(!(e.ctrlKey||e.metaKey||e.shiftKey||2===e.which)){e.preventDefault(),e.redraw=!1;var t=this.getAttribute("href");0===t.indexOf(s.prefix)&&(t=t.slice(s.prefix.length)),c.set(t,void 0,void 0)}}},c.param=function(e){return void 0!==o&&void 0!==e?o[e]:o},c}(window,m),c.withAttr=function(e,t,n){return function(r){t.call(n||this,e in r.currentTarget?r.currentTarget[e]:r.currentTarget.getAttribute(e))}};var b=p(window);c.render=b.render,c.redraw=m.redraw,c.request=v.request,c.jsonp=v.jsonp,c.parseQueryString=g,c.buildQueryString=d,c.version="1.1.1",c.vnode=n,void 0!==t?t.exports=c:window.m=c}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],8:[function(e,n,r){!function(e){"use strict";function r(){}function i(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function o(e){return function(){return this[e].apply(this,arguments)}}function a(e){return"function"==typeof e||e instanceof RegExp||!(!e||"object"!=typeof e)&&a(e.listener)}var l=r.prototype,s=e.EventEmitter;l.getListeners=function(e){var t,n,r=this._getEvents();if(e instanceof RegExp){t={};for(n in r)r.hasOwnProperty(n)&&e.test(n)&&(t[n]=r[n])}else t=r[e]||(r[e]=[]);return t},l.flattenListeners=function(e){var t,n=[];for(t=0;t<e.length;t+=1)n.push(e[t].listener);return n},l.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},l.addListener=function(e,t){if(!a(t))throw new TypeError("listener must be a function");var n,r=this.getListenersAsObject(e),o="object"==typeof t;for(n in r)r.hasOwnProperty(n)&&-1===i(r[n],t)&&r[n].push(o?t:{listener:t,once:!1});return this},l.on=o("addListener"),l.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},l.once=o("addOnceListener"),l.defineEvent=function(e){return this.getListeners(e),this},l.defineEvents=function(e){for(var t=0;t<e.length;t+=1)this.defineEvent(e[t]);return this},l.removeListener=function(e,t){var n,r,o=this.getListenersAsObject(e);for(r in o)o.hasOwnProperty(r)&&-1!==(n=i(o[r],t))&&o[r].splice(n,1);return this},l.off=o("removeListener"),l.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},l.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},l.manipulateListeners=function(e,t,n){var r,i,o=e?this.removeListener:this.addListener,a=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(r=n.length;r--;)o.call(this,t,n[r]);else for(r in t)t.hasOwnProperty(r)&&(i=t[r])&&("function"==typeof i?o.call(this,r,i):a.call(this,r,i));return this},l.removeEvent=function(e){var t,n=typeof e,r=this._getEvents();if("string"===n)delete r[e];else if(e instanceof RegExp)for(t in r)r.hasOwnProperty(t)&&e.test(t)&&delete r[t];else delete this._events;return this},l.removeAllListeners=o("removeEvent"),l.emitEvent=function(e,t){var n,r,i,o,a=this.getListenersAsObject(e)
2
+ ;for(o in a)if(a.hasOwnProperty(o))for(n=a[o].slice(0),i=0;i<n.length;i++)r=n[i],!0===r.once&&this.removeListener(e,r.listener),r.listener.apply(this,t||[])===this._getOnceReturnValue()&&this.removeListener(e,r.listener);return this},l.trigger=o("emitEvent"),l.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},l.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},l._getOnceReturnValue=function(){return!this.hasOwnProperty("_onceReturnValue")||this._onceReturnValue},l._getEvents=function(){return this._events||(this._events={})},r.noConflict=function(){return e.EventEmitter=s,r},"function"==typeof t&&t.amd?t(function(){return r}):"object"==typeof n&&n.exports?n.exports=r:e.EventEmitter=r}(this||{})},{}]},{},[1])}();
3
  //# sourceMappingURL=admin.min.js.map
assets/js/admin.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["admin.js"],"names":["require","undefined","define","e","t","n","r","s","o","u","a","i","f","Error","code","l","exports","call","length","1","module","m","window","EventEmitter","context","document","getElementById","events","tabs","helpers","settings","ListFetcher","mount","mc4wp","deps","mithril","./admin/helpers.js","./admin/list-fetcher.js","./admin/settings.js","./admin/tabs.js","wolfy87-eventemitter","2","toggleElement","selector","elements","querySelectorAll","show","clientHeight","style","display","bindEventToElement","element","event","handler","addEventListener","attachEvent","bindEventToElements","Array","prototype","forEach","debounce","func","wait","immediate","timeout","this","args","arguments","later","apply","callNow","clearTimeout","setTimeout","showIfElements","getAttribute","checked","value","conditionMet","config","hide","visibility","opacity","inputs","inputElement","removeAttribute","setAttribute","JSON","parse","parentElements","parentElement","3","working","done","mailchimp","api_connected","lists","fetch","$","jQuery","mc4wp_vars","i18n","preventDefault","post","ajaxurl","action","data","location","reload","always","redraw","bind","view","method","onsubmit","type","fetching_mailchimp_lists","renew_mailchimp_lists","className","disabled","trust","fetching_mailchimp_lists_can_take_a_while","fetching_mailchimp_lists_done","4","_typeof","Symbol","iterator","obj","constructor","Settings","getSelectedListsWhere","searchKey","searchValue","selectedLists","filter","el","getSelectedLists","updateSelectedLists","listInputs","input","push","trigger","toggleVisibleLists","rows","replace","querySelector","on","5","URL","Tabs","get","id","_open","tab","updateState","$tabs","removeClass","css","$tabNavs","nav","blur","url","setParameter","href","history","pushState","title","refererField","tb_remove","forms","editor","refresh","split","switchTab","tabId","match","urlParams","returnValue","$context","find","each","substring","first","text","open","click","body","activeTab","replaceState","state","./url.js","6","query","hasOwnProperty","b","decodeURIComponent","build","ret","d","encodeURIComponent","join","key","7","global","Vnode","tag","attrs0","children","dom","attrs","domSize","_state","instance","skip","compileSelector","classes","selectorParser","exec","attrValue","selectorCache","execSelector","childList","hasAttrs","class","hasOwn","isArray","hyperscript","start","cached","normalized","normalizeChildren","throttle","callback","last","pending","requestAnimationFrame","now","Date","normalize","node","html","fragment","attrs1","PromisePolyfill","executor","list","shouldAbsorb","execute","then","callAsync","console","error","resolvers","rejectors","retry","self","TypeError","executeOnce","rejectCurrent","run","fn","runs","onerror","resolveCurrent","_instance","setImmediate","onFulfilled","onRejection","handle","next","resolveNext","rejectNext","promise","resolve","reject","catch","all","total","count","values","consume","race","Promise","buildQueryString","object","destructure","key0","Object","toString","FILE_PROTOCOL_REGEX","RegExp","requestService","$window","setCompletionCallback","oncompletion","finalizer","complete","finalize","promise0","then0","extra","request","toUpperCase","useBody","serialize","FormData","stringify","deserialize","extract","interpolate","assemble","xhr","XMLHttpRequest","aborted","_abort","abort","async","user","password","setRequestHeader","withCredentials","headers","onreadystatechange","readyState","response","status","test","cast","responseText","send","background","jsonp","callbackName","Math","round","random","callbackCount","script","createElement","parentNode","removeChild","callbackKey","src","documentElement","appendChild","tokens","slice","querystring","indexOf","type0","coreRenderer","setEventCallback","onevent","createNodes","parent","vnodes","end","hooks","nextSibling","ns","vnode","createNode","createComponent","initLifecycle","createText","createHTML","createFragment","$doc","createTextNode","insertNode","match1","parent1","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","temp","innerHTML","firstChild","childNodes","child","createDocumentFragment","attrs2","is","createElementNS","setAttrs","contenteditable","setContentEditable","textContent","setLateAttrs","initComponent","sentinel","create","$$reentrantLock$$","$emptyFragment","updateNodes","old","recycling","removeNodes","isUnkeyed","getNextSibling","updateNode","isRecyclable","pool","concat","map","oldStart","oldEnd","v","shouldRecycle","toFragment","getKeyMap","oldIndex","movable","oldTag","shouldNotUpdate","updateLifecycle","updateText","updateHTML","updateFragment","updateElement","updateComponent","removeNode","nodeValue","updateAttrs","abs","oldChildrenLength","poolChildrenLength","vnodesChildrenLength","key2","count0","insertBefore","content","continuation","called","expected","onremove","removeNodeFromDOM","hasIntegrationMethods","onbeforeremove","result","setAttr","isFormAttribute","isLifecycleMethod","nsLastIndex","substr","setAttributeNS","updateEvent","updateStyle","isAttribute","isCustomElement","activeElement","selectedIndex","attr","source","oncreate","onupdate","cssText","eventName","removeEventListener","oninit","forceVnodeUpdate","forceComponentUpdate","onbeforeupdate","render","active","focus","redrawService","subscribe","key1","unsubscribe","callbacks","index","splice","renderService","redrawService0","root","component","run0","parseQueryString","string","charAt","entries","data0","counters","entry","key5","levels","cursor","pop","j","level","nextLevel","isNumber","isNaN","parseInt","isValue","coreRouter","normalize1","fragment0","debounceAsync","callback0","asyncId","callAsync0","parsePath","path","queryData","hashData","queryIndex","hashIndex","pathEnd","queryEnd","queryParams","key4","hashParams","supportsPushState","router","prefix","getPath","setPath","options","match2","token","hash","onpopstate","defineRoutes","routes","resolveRoute","params","pathname","k","route0","matcher","keys","onhashchange","route","render1","attrs3","currentPath","lastUpdate","routeService","identity","defaultRoute","run1","bail","payload","update","routeResolver","comp","onmatch","resolved","set","prefix0","link","vnode1","onclick","ctrlKey","metaKey","shiftKey","which","param","key3","withAttr","attrName","callback1","currentTarget","_28","version","8","indexOfListener","listeners","listener","alias","name","isValidListener","proto","originalGlobalValue","getListeners","evt","_getEvents","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","once","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","remove","single","multiple","removeEvent","_events","removeAllListeners","emitEvent","listenersMap","_getOnceReturnValue","emit","setOnceReturnValue","_onceReturnValue","noConflict","amd"],"mappings":"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","file":"admin.min.js","sourcesContent":["(function () { var require = undefined; var define = undefined; (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n'use strict';\n\n// dependencies\n\nvar m = window.m = require('mithril');\nvar EventEmitter = require('wolfy87-eventemitter');\n\n// vars\nvar context = document.getElementById('mc4wp-admin');\nvar events = new EventEmitter();\nvar tabs = require('./admin/tabs.js')(context);\nvar helpers = require('./admin/helpers.js');\nvar settings = require('./admin/settings.js')(context, helpers, events);\n\n// list fetcher\nvar ListFetcher = require('./admin/list-fetcher.js');\nvar mount = document.getElementById('mc4wp-list-fetcher');\nif (mount) {\n m.mount(mount, new ListFetcher());\n}\n\n// expose some things\nwindow.mc4wp = window.mc4wp || {};\nwindow.mc4wp.deps = window.mc4wp.deps || {};\nwindow.mc4wp.deps.mithril = m;\nwindow.mc4wp.helpers = helpers;\nwindow.mc4wp.events = events;\nwindow.mc4wp.settings = settings;\nwindow.mc4wp.tabs = tabs;\n\n},{\"./admin/helpers.js\":2,\"./admin/list-fetcher.js\":3,\"./admin/settings.js\":4,\"./admin/tabs.js\":5,\"mithril\":7,\"wolfy87-eventemitter\":8}],2:[function(require,module,exports){\n'use strict';\n\nvar helpers = {};\n\nhelpers.toggleElement = function (selector) {\n\tvar elements = document.querySelectorAll(selector);\n\tfor (var i = 0; i < elements.length; i++) {\n\t\tvar show = elements[i].clientHeight <= 0;\n\t\telements[i].style.display = show ? '' : 'none';\n\t}\n};\n\nhelpers.bindEventToElement = function (element, event, handler) {\n\tif (element.addEventListener) {\n\t\telement.addEventListener(event, handler);\n\t} else if (element.attachEvent) {\n\t\telement.attachEvent('on' + event, handler);\n\t}\n};\n\nhelpers.bindEventToElements = function (elements, event, handler) {\n\tArray.prototype.forEach.call(elements, function (element) {\n\t\thelpers.bindEventToElement(element, event, handler);\n\t});\n};\n\n// polling\nhelpers.debounce = function (func, wait, immediate) {\n\tvar timeout;\n\treturn function () {\n\t\tvar context = this,\n\t\t args = arguments;\n\t\tvar later = function later() {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) func.apply(context, args);\n\t\t};\n\t\tvar callNow = immediate && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t\tif (callNow) func.apply(context, args);\n\t};\n};\n\n/**\n * Showif.js\n */\n(function () {\n\tvar showIfElements = document.querySelectorAll('[data-showif]');\n\n\t// dependent elements\n\tArray.prototype.forEach.call(showIfElements, function (element) {\n\t\tvar config = JSON.parse(element.getAttribute('data-showif'));\n\t\tvar parentElements = document.querySelectorAll('[name=\"' + config.element + '\"]');\n\t\tvar inputs = element.querySelectorAll('input,select,textarea:not([readonly])');\n\t\tvar hide = config.hide === undefined || config.hide;\n\n\t\tfunction toggleElement() {\n\n\t\t\t// do nothing with unchecked radio inputs\n\t\t\tif (this.getAttribute('type') === \"radio\" && !this.checked) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar value = this.getAttribute(\"type\") === \"checkbox\" ? this.checked : this.value;\n\t\t\tvar conditionMet = value == config.value;\n\n\t\t\tif (hide) {\n\t\t\t\telement.style.display = conditionMet ? '' : 'none';\n\t\t\t\telement.style.visibility = conditionMet ? '' : 'hidden';\n\t\t\t} else {\n\t\t\t\telement.style.opacity = conditionMet ? '' : '0.4';\n\t\t\t}\n\n\t\t\t// disable input fields to stop sending their values to server\n\t\t\tArray.prototype.forEach.call(inputs, function (inputElement) {\n\t\t\t\tconditionMet ? inputElement.removeAttribute('readonly') : inputElement.setAttribute('readonly', 'readonly');\n\t\t\t});\n\t\t}\n\n\t\t// find checked element and call toggleElement function\n\t\tArray.prototype.forEach.call(parentElements, function (parentElement) {\n\t\t\ttoggleElement.call(parentElement);\n\t\t});\n\n\t\t// bind on all changes\n\t\thelpers.bindEventToElements(parentElements, 'change', toggleElement);\n\t});\n})();\n\nmodule.exports = helpers;\n\n},{}],3:[function(require,module,exports){\n'use strict';\n\nvar $ = window.jQuery;\nvar config = mc4wp_vars;\nvar i18n = config.i18n;\n\nfunction ListFetcher() {\n this.working = false;\n this.done = false;\n\n // start fetching right away when no lists but api key given\n if (config.mailchimp.api_connected && config.mailchimp.lists.length == 0) {\n this.fetch();\n }\n}\n\nListFetcher.prototype.fetch = function (e) {\n e && e.preventDefault();\n\n this.working = true;\n this.done = false;\n\n $.post(ajaxurl, {\n action: \"mc4wp_renew_mailchimp_lists\"\n }).done(function (data) {\n if (data) {\n window.setTimeout(function () {\n window.location.reload();\n }, 3000);\n }\n }).always(function (data) {\n this.working = false;\n this.done = true;\n\n m.redraw();\n }.bind(this));\n};\n\nListFetcher.prototype.view = function () {\n return m('form', {\n method: \"POST\",\n onsubmit: this.fetch.bind(this)\n }, [m('p', [m('input', {\n type: \"submit\",\n value: this.working ? i18n.fetching_mailchimp_lists : i18n.renew_mailchimp_lists,\n className: \"button\",\n disabled: !!this.working\n }), m.trust(' &nbsp; '), this.working ? [m('span.mc4wp-loader', \"Loading...\"), m.trust(' &nbsp; '), m('em.help', i18n.fetching_mailchimp_lists_can_take_a_while)] : '', this.done ? [m('em.help.green', i18n.fetching_mailchimp_lists_done)] : ''])]);\n};\n\nmodule.exports = ListFetcher;\n\n},{}],4:[function(require,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar Settings = function Settings(context, helpers, events) {\n\t'use strict';\n\n\t// vars\n\n\tvar form = context.querySelector('form');\n\tvar listInputs = context.querySelectorAll('.mc4wp-list-input');\n\tvar lists = mc4wp_vars.mailchimp.lists;\n\tvar selectedLists = [];\n\n\t// functions\n\tfunction getSelectedListsWhere(searchKey, searchValue) {\n\t\treturn selectedLists.filter(function (el) {\n\t\t\treturn el[searchKey] === searchValue;\n\t\t});\n\t}\n\n\tfunction getSelectedLists() {\n\t\treturn selectedLists;\n\t}\n\n\tfunction updateSelectedLists() {\n\t\tselectedLists = [];\n\n\t\tArray.prototype.forEach.call(listInputs, function (input) {\n\t\t\t// skip unchecked checkboxes\n\t\t\tif (typeof input.checked === \"boolean\" && !input.checked) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_typeof(lists[input.value]) === \"object\") {\n\t\t\t\tselectedLists.push(lists[input.value]);\n\t\t\t}\n\t\t});\n\n\t\tevents.trigger('selectedLists.change', [selectedLists]);\n\t\treturn selectedLists;\n\t}\n\n\tfunction toggleVisibleLists() {\n\t\tvar rows = document.querySelectorAll('.lists--only-selected > *');\n\t\tArray.prototype.forEach.call(rows, function (el) {\n\n\t\t\tvar listId = el.getAttribute('data-list-id');\n\t\t\tvar isSelected = getSelectedListsWhere('id', listId).length > 0;\n\n\t\t\tif (isSelected) {\n\t\t\t\tel.setAttribute('class', el.getAttribute('class').replace('hidden', ''));\n\t\t\t} else {\n\t\t\t\tel.setAttribute('class', el.getAttribute('class') + \" hidden\");\n\t\t\t}\n\t\t});\n\t}\n\n\tevents.on('selectedLists.change', toggleVisibleLists);\n\thelpers.bindEventToElements(listInputs, 'change', updateSelectedLists);\n\n\tupdateSelectedLists();\n\n\treturn {\n\t\tgetSelectedLists: getSelectedLists\n\t};\n};\n\nmodule.exports = Settings;\n\n},{}],5:[function(require,module,exports){\n'use strict';\n\nvar URL = require('./url.js');\n\n// Tabs\nvar Tabs = function Tabs(context) {\n\n\t// TODO: last piece of jQuery... can we get rid of it?\n\tvar $ = window.jQuery;\n\n\tvar $context = $(context);\n\tvar $tabs = $context.find('.tab');\n\tvar $tabNavs = $context.find('.nav-tab');\n\tvar refererField = context.querySelector('input[name=\"_wp_http_referer\"]');\n\tvar tabs = [];\n\n\t$.each($tabs, function (i, t) {\n\t\tvar id = t.id.substring(4);\n\t\tvar title = $(t).find('h2').first().text();\n\n\t\ttabs.push({\n\t\t\tid: id,\n\t\t\ttitle: title,\n\t\t\telement: t,\n\t\t\tnav: context.querySelectorAll('.nav-tab-' + id),\n\t\t\topen: function open() {\n\t\t\t\treturn _open(id);\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction get(id) {\n\n\t\tfor (var i = 0; i < tabs.length; i++) {\n\t\t\tif (tabs[i].id === id) {\n\t\t\t\treturn tabs[i];\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction _open(tab, updateState) {\n\n\t\t// make sure we have a tab object\n\t\tif (typeof tab === \"string\") {\n\t\t\ttab = get(tab);\n\t\t}\n\n\t\tif (!tab) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// should we update state?\n\t\tif (updateState == undefined) {\n\t\t\tupdateState = true;\n\t\t}\n\n\t\t// hide all tabs & remove active class\n\t\t$tabs.removeClass('tab-active').css('display', 'none');\n\t\t$tabNavs.removeClass('nav-tab-active');\n\n\t\t// add `nav-tab-active` to this tab\n\t\tArray.prototype.forEach.call(tab.nav, function (nav) {\n\t\t\tnav.className += \" nav-tab-active\";\n\t\t\tnav.blur();\n\t\t});\n\n\t\t// show target tab\n\t\ttab.element.style.display = 'block';\n\t\ttab.element.className += \" tab-active\";\n\n\t\t// create new URL\n\t\tvar url = URL.setParameter(window.location.href, \"tab\", tab.id);\n\n\t\t// update hash\n\t\tif (history.pushState && updateState) {\n\t\t\thistory.pushState(tab.id, '', url);\n\t\t}\n\n\t\t// update document title\n\t\ttitle(tab);\n\n\t\t// update referer field\n\t\trefererField.value = url;\n\n\t\t// if thickbox is open, close it.\n\t\tif (typeof tb_remove === \"function\") {\n\t\t\ttb_remove();\n\t\t}\n\n\t\t// refresh editor after switching tabs\n\t\t// TODO: decouple this! law of demeter etc.\n\t\tif (tab.id === 'fields' && window.mc4wp && window.mc4wp.forms && window.mc4wp.forms.editor) {\n\t\t\tmc4wp.forms.editor.refresh();\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction title(tab) {\n\t\tvar title = document.title.split('-');\n\t\tdocument.title = document.title.replace(title[0], tab.title + \" \");\n\t}\n\n\tfunction switchTab(e) {\n\t\te = e || window.event;\n\n\t\t// get from data attribute\n\t\tvar tabId = this.getAttribute('data-tab');\n\n\t\t// get from classname\n\t\tif (!tabId) {\n\t\t\tvar match = this.className.match(/nav-tab-(\\w+)?/);\n\t\t\tif (match) {\n\t\t\t\ttabId = match[1];\n\t\t\t}\n\t\t}\n\n\t\t// get from href\n\t\tif (!tabId) {\n\t\t\tvar urlParams = URL.parse(this.href);\n\t\t\tif (!urlParams.tab) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttabId = urlParams.tab;\n\t\t}\n\n\t\tvar opened = _open(tabId);\n\n\t\tif (opened) {\n\t\t\te.preventDefault();\n\t\t\te.returnValue = false;\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction init() {\n\n\t\t// check for current tab\n\t\tif (!history.pushState) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar activeTab = $tabs.filter(':visible').get(0);\n\t\tif (!activeTab) {\n\t\t\treturn;\n\t\t}\n\t\tvar tab = get(activeTab.id.substring(4));\n\t\tif (!tab) return;\n\n\t\t// check if tab is in html5 history\n\t\tif (history.replaceState && history.state === null) {\n\t\t\thistory.replaceState(tab.id, '');\n\t\t}\n\n\t\t// update document title\n\t\ttitle(tab);\n\t}\n\n\t$tabNavs.click(switchTab);\n\t$(document.body).on('click', '.tab-link', switchTab);\n\tinit();\n\n\tif (window.addEventListener && history.pushState) {\n\t\twindow.addEventListener('popstate', function (e) {\n\t\t\tif (!e.state) return true;\n\t\t\tvar tabId = e.state;\n\t\t\treturn _open(tabId, false);\n\t\t});\n\t}\n\n\treturn {\n\t\topen: _open,\n\t\tget: get\n\t};\n};\n\nmodule.exports = Tabs;\n\n},{\"./url.js\":6}],6:[function(require,module,exports){\n'use strict';\n\nvar URL = {\n\tparse: function parse(url) {\n\t\tvar query = {};\n\t\tvar a = url.split('&');\n\t\tfor (var i in a) {\n\t\t\tif (!a.hasOwnProperty(i)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar b = a[i].split('=');\n\t\t\tquery[decodeURIComponent(b[0])] = decodeURIComponent(b[1]);\n\t\t}\n\n\t\treturn query;\n\t},\n\tbuild: function build(data) {\n\t\tvar ret = [];\n\t\tfor (var d in data) {\n\t\t\tret.push(d + \"=\" + encodeURIComponent(data[d]));\n\t\t}return ret.join(\"&\");\n\t},\n\tsetParameter: function setParameter(url, key, value) {\n\t\tvar data = URL.parse(url);\n\t\tdata[key] = value;\n\t\treturn URL.build(data);\n\t}\n};\n\nmodule.exports = URL;\n\n},{}],7:[function(require,module,exports){\n(function (global){\n;(function() {\n\"use strict\"\nfunction Vnode(tag, key, attrs0, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs0, children: children, text: text, dom: dom, domSize: undefined, state: undefined, _state: undefined, events: undefined, instance: undefined, skip: false}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node != null && typeof node !== \"object\") return Vnode(\"#\", undefined, undefined, node === false ? \"\" : node, undefined, undefined)\n\treturn node\n}\nVnode.normalizeChildren = function normalizeChildren(children) {\n\tfor (var i = 0; i < children.length; i++) {\n\t\tchildren[i] = Vnode.normalize(children[i])\n\t}\n\treturn children\n}\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\nfunction execSelector(state, attrs, children) {\n\tvar hasAttrs = false, childList, text\n\tvar className = attrs.className || attrs.class\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key)) {\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className !== undefined) {\n\t\tif (attrs.class !== undefined) {\n\t\t\tattrs.class = undefined\n\t\t\tattrs.className = className\n\t\t}\n\t\tif (state.attrs.className != null) {\n\t\t\tattrs.className = state.attrs.className + \" \" + className\n\t\t}\n\t}\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\thasAttrs = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\ttext = children[0].children\n\t} else {\n\t\tchildList = children\n\t}\n\treturn Vnode(state.tag, attrs.key, hasAttrs ? attrs : undefined, childList, text)\n}\nfunction hyperscript(selector) {\n\t// Because sloppy mode sucks\n\tvar attrs = arguments[1], start = 2, children\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\tif (typeof selector === \"string\") {\n\t\tvar cached = selectorCache[selector] || compileSelector(selector)\n\t}\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = 1\n\t}\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\tvar normalized = Vnode.normalizeChildren(children)\n\tif (typeof selector === \"string\") {\n\t\treturn execSelector(cached, attrs, normalized)\n\t} else {\n\t\treturn Vnode(selector, attrs.key, attrs, normalized)\n\t}\n}\nhyperscript.trust = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\nhyperscript.fragment = function(attrs1, children) {\n\treturn Vnode(\"[\", attrs1.key, attrs1, Vnode.normalizeChildren(children), undefined, undefined)\n}\nvar m = hyperscript\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") window.Promise = PromisePolyfill\n\tvar PromisePolyfill = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") global.Promise = PromisePolyfill\n\tvar PromisePolyfill = global.Promise\n} else {\n}\nvar buildQueryString = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\tvar args = []\n\tfor (var key0 in object) {\n\t\tdestructure(key0, object[key0])\n\t}\n\treturn args.join(\"&\")\n\tfunction destructure(key0, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key0) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\nvar FILE_PROTOCOL_REGEX = new RegExp(\"^file://\", \"i\")\nvar _8 = function($window, Promise) {\n\tvar callbackCount = 0\n\tvar oncompletion\n\tfunction setCompletionCallback(callback) {oncompletion = callback}\n\tfunction finalizer() {\n\t\tvar count = 0\n\t\tfunction complete() {if (--count === 0 && typeof oncompletion === \"function\") oncompletion()}\n\t\treturn function finalize(promise0) {\n\t\t\tvar then0 = promise0.then\n\t\t\tpromise0.then = function() {\n\t\t\t\tcount++\n\t\t\t\tvar next = then0.apply(promise0, arguments)\n\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\tcomplete()\n\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t})\n\t\t\t\treturn finalize(next)\n\t\t\t}\n\t\t\treturn promise0\n\t\t}\n\t}\n\tfunction normalize(args, extra) {\n\t\tif (typeof args === \"string\") {\n\t\t\tvar url = args\n\t\t\targs = extra || {}\n\t\t\tif (args.url == null) args.url = url\n\t\t}\n\t\treturn args\n\t}\n\tfunction request(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tif (args.method == null) args.method = \"GET\"\n\t\t\targs.method = args.method.toUpperCase()\n\t\t\tvar useBody = (args.method === \"GET\" || args.method === \"TRACE\") ? false : (typeof args.useBody === \"boolean\" ? args.useBody : true)\n\t\t\tif (typeof args.serialize !== \"function\") args.serialize = typeof FormData !== \"undefined\" && args.data instanceof FormData ? function(value) {return value} : JSON.stringify\n\t\t\tif (typeof args.deserialize !== \"function\") args.deserialize = deserialize\n\t\t\tif (typeof args.extract !== \"function\") args.extract = extract\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\tif (useBody) args.data = args.serialize(args.data)\n\t\t\telse args.url = assemble(args.url, args.data)\n\t\t\tvar xhr = new $window.XMLHttpRequest(),\n\t\t\t\taborted = false,\n\t\t\t\t_abort = xhr.abort\n\t\t\txhr.abort = function abort() {\n\t\t\t\taborted = true\n\t\t\t\t_abort.call(xhr)\n\t\t\t}\n\t\t\txhr.open(args.method, args.url, typeof args.async === \"boolean\" ? args.async : true, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\t\t\tif (args.serialize === JSON.stringify && useBody) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (args.deserialize === deserialize) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tfor (var key in args.headers) if ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t}\n\t\t\tif (typeof args.config === \"function\") xhr = args.config(xhr, args) || xhr\n\t\t\txhr.onreadystatechange = function() {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif(aborted) return\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args))\n\t\t\t\t\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || FILE_PROTOCOL_REGEX.test(args.url)) {\n\t\t\t\t\t\t\tresolve(cast(args.type, response))\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar error = new Error(xhr.responseText)\n\t\t\t\t\t\t\tfor (var key in response) error[key] = response[key]\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (useBody && (args.data != null)) xhr.send(args.data)\n\t\t\telse xhr.send()\n\t\t})\n\t\treturn args.background === true ? promise0 : finalize(promise0)\n\t}\n\tfunction jsonp(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(cast(args.type, data))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tif (args.data == null) args.data = {}\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\targs.data[args.callbackKey || \"callback\"] = callbackName\n\t\t\tscript.src = assemble(args.url, args.data)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t})\n\t\treturn args.background === true? promise0 : finalize(promise0)\n\t}\n\tfunction interpolate(url, data) {\n\t\tif (data == null) return url\n\t\tvar tokens = url.match(/:[^\\/]+/gi) || []\n\t\tfor (var i = 0; i < tokens.length; i++) {\n\t\t\tvar key = tokens[i].slice(1)\n\t\t\tif (data[key] != null) {\n\t\t\t\turl = url.replace(tokens[i], data[key])\n\t\t\t}\n\t\t}\n\t\treturn url\n\t}\n\tfunction assemble(url, data) {\n\t\tvar querystring = buildQueryString(data)\n\t\tif (querystring !== \"\") {\n\t\t\tvar prefix = url.indexOf(\"?\") < 0 ? \"?\" : \"&\"\n\t\t\turl += prefix + querystring\n\t\t}\n\t\treturn url\n\t}\n\tfunction deserialize(data) {\n\t\ttry {return data !== \"\" ? JSON.parse(data) : null}\n\t\tcatch (e) {throw new Error(data)}\n\t}\n\tfunction extract(xhr) {return xhr.responseText}\n\tfunction cast(type0, data) {\n\t\tif (typeof type0 === \"function\") {\n\t\t\tif (Array.isArray(data)) {\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\tdata[i] = new type0(data[i])\n\t\t\t\t}\n\t\t\t}\n\t\t\telse return new type0(data)\n\t\t}\n\t\treturn data\n\t}\n\treturn {request: request, jsonp: jsonp, setCompletionCallback: setCompletionCallback}\n}\nvar requestService = _8(window, PromisePolyfill)\nvar coreRenderer = function($window) {\n\tvar $doc = $window.document\n\tvar $emptyFragment = $doc.createDocumentFragment()\n\tvar onevent\n\tfunction setEventCallback(callback) {return onevent = callback}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": return createText(parent, vnode, nextSibling)\n\t\t\t\tcase \"<\": return createHTML(parent, vnode, nextSibling)\n\t\t\t\tcase \"[\": return createFragment(parent, vnode, hooks, ns, nextSibling)\n\t\t\t\tdefault: return createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse return createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t\treturn vnode.dom\n\t}\n\tfunction createHTML(parent, vnode, nextSibling) {\n\t\tvar match1 = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\tvar parent1 = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}[match1[1]] || \"div\"\n\t\tvar temp = $doc.createElement(parent1)\n\t\ttemp.innerHTML = vnode.children\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tswitch (vnode.tag) {\n\t\t\tcase \"svg\": ns = \"http://www.w3.org/2000/svg\"; break\n\t\t\tcase \"math\": ns = \"http://www.w3.org/1998/Math/MathML\"; break\n\t\t}\n\t\tvar attrs2 = vnode.attrs\n\t\tvar is = attrs2 && attrs2.is\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\t\tif (attrs2 != null) {\n\t\t\tsetAttrs(vnode, attrs2, ns)\n\t\t}\n\t\tinsertNode(parent, element, nextSibling)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tsetLateAttrs(vnode)\n\t\t\t}\n\t\t}\n\t\treturn element\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tvnode._state = vnode.state\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tinitLifecycle(vnode._state, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tvar element = createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t\tinsertNode(parent, element, nextSibling)\n\t\t\treturn element\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t\treturn $emptyFragment\n\t\t}\n\t}\n\t//update\n\tfunction updateNodes(parent, old, vnodes, recycling, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, undefined)\n\t\telse if (vnodes == null) removeNodes(old, 0, old.length, vnodes)\n\t\telse {\n\t\t\tif (old.length === vnodes.length) {\n\t\t\t\tvar isUnkeyed = false\n\t\t\t\tfor (var i = 0; i < vnodes.length; i++) {\n\t\t\t\t\tif (vnodes[i] != null && old[i] != null) {\n\t\t\t\t\t\tisUnkeyed = vnodes[i].key == null && old[i].key == null\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isUnkeyed) {\n\t\t\t\t\tfor (var i = 0; i < old.length; i++) {\n\t\t\t\t\t\tif (old[i] === vnodes[i]) continue\n\t\t\t\t\t\telse if (old[i] == null && vnodes[i] != null) createNode(parent, vnodes[i], hooks, ns, getNextSibling(old, i + 1, nextSibling))\n\t\t\t\t\t\telse if (vnodes[i] == null) removeNodes(old, i, i + 1, vnodes)\n\t\t\t\t\t\telse updateNode(parent, old[i], vnodes[i], hooks, getNextSibling(old, i + 1, nextSibling), recycling, ns)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\trecycling = recycling || isRecyclable(old, vnodes)\n\t\t\tif (recycling) {\n\t\t\t\tvar pool = old.pool\n\t\t\t\told = old.concat(old.pool)\n\t\t\t}\n\t\t\tvar oldStart = 0, start = 0, oldEnd = old.length - 1, end = vnodes.length - 1, map\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldStart], v = vnodes[start]\n\t\t\t\tif (o === v && !recycling) oldStart++, start++\n\t\t\t\telse if (o == null) oldStart++\n\t\t\t\telse if (v == null) start++\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldStart >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar o = old[oldEnd]\n\t\t\t\t\tif (o === v && !recycling) oldEnd--, start++\n\t\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\t\telse if (v == null) start++\n\t\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\t\tif (recycling || start < end) insertNode(parent, toFragment(o), getNextSibling(old, oldStart, nextSibling))\n\t\t\t\t\t\toldEnd--, start++\n\t\t\t\t\t}\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldEnd], v = vnodes[end]\n\t\t\t\tif (o === v && !recycling) oldEnd--, end--\n\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\telse if (v == null) end--\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t\tif (o.dom != null) nextSibling = o.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!map) map = getKeyMap(old, oldEnd)\n\t\t\t\t\tif (v != null) {\n\t\t\t\t\t\tvar oldIndex = map[v.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tvar movable = old[oldIndex]\n\t\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldIndex >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\t\tupdateNode(parent, movable, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns)\n\t\t\t\t\t\t\tinsertNode(parent, toFragment(movable), nextSibling)\n\t\t\t\t\t\t\told[oldIndex].skip = true\n\t\t\t\t\t\t\tif (movable.dom != null) nextSibling = movable.dom\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar dom = createNode(parent, v, hooks, undefined, nextSibling)\n\t\t\t\t\t\t\tnextSibling = dom\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tend--\n\t\t\t\t}\n\t\t\t\tif (end < start) break\n\t\t\t}\n\t\t\tcreateNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\tremoveNodes(old, oldStart, oldEnd + 1, vnodes)\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode._state = old._state\n\t\t\tvnode.events = old.events\n\t\t\tif (!recycling && shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tif (recycling) {\n\t\t\t\t\t\tvnode.state = {}\n\t\t\t\t\t\tinitLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t\t}\n\t\t\t\t\telse updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, recycling, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(old, null)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\ttoFragment(old)\n\t\t\tcreateHTML(parent, vnode, nextSibling)\n\t\t}\n\t\telse vnode.dom = old.dom, vnode.domSize = old.domSize\n\t}\n\tfunction updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, recycling, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, recycling, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tswitch (vnode.tag) {\n\t\t\tcase \"svg\": ns = \"http://www.w3.org/2000/svg\"; break\n\t\t\tcase \"math\": ns = \"http://www.w3.org/1998/Math/MathML\"; break\n\t\t}\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle0 multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse if (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t}\n\t\telse {\n\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\tupdateNodes(element, old.children, vnode.children, recycling, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tif (recycling) {\n\t\t\tinitComponent(vnode, hooks)\n\t\t} else {\n\t\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tupdateLifecycle(vnode._state, vnode, hooks)\n\t\t}\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, recycling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(old.instance, null)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction isRecyclable(old, vnodes) {\n\t\tif (old.pool != null && Math.abs(old.pool.length - vnodes.length) <= Math.abs(old.length - vnodes.length)) {\n\t\t\tvar oldChildrenLength = old[0] && old[0].children && old[0].children.length || 0\n\t\t\tvar poolChildrenLength = old.pool[0] && old.pool[0].children && old.pool[0].children.length || 0\n\t\t\tvar vnodesChildrenLength = vnodes[0] && vnodes[0].children && vnodes[0].children.length || 0\n\t\t\tif (Math.abs(poolChildrenLength - vnodesChildrenLength) <= Math.abs(oldChildrenLength - vnodesChildrenLength)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tfunction getKeyMap(vnodes, end) {\n\t\tvar map = {}, i = 0\n\t\tfor (var i = 0; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key2 = vnode.key\n\t\t\t\tif (key2 != null) map[key2] = i\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\tfunction toFragment(vnode) {\n\t\tvar count0 = vnode.domSize\n\t\tif (count0 != null || vnode.dom == null) {\n\t\t\tvar fragment = $doc.createDocumentFragment()\n\t\t\tif (count0 > 0) {\n\t\t\t\tvar dom = vnode.dom\n\t\t\t\twhile (--count0) fragment.appendChild(dom.nextSibling)\n\t\t\t\tfragment.insertBefore(dom, fragment.firstChild)\n\t\t\t}\n\t\t\treturn fragment\n\t\t}\n\t\telse return vnode.dom\n\t}\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling && nextSibling.parentNode) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\tfunction setContentEditable(vnode) {\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t}\n\t//remove\n\tfunction removeNodes(vnodes, start, end, context) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tif (vnode.skip) vnode.skip = false\n\t\t\t\telse removeNode(vnode, context)\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNode(vnode, context) {\n\t\tvar expected = 1, called = 0\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode.attrs.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode._state.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tcontinuation()\n\t\tfunction continuation() {\n\t\t\tif (++called === expected) {\n\t\t\t\tonremove(vnode)\n\t\t\t\tif (vnode.dom) {\n\t\t\t\t\tvar count0 = vnode.domSize || 1\n\t\t\t\t\tif (count0 > 1) {\n\t\t\t\t\t\tvar dom = vnode.dom\n\t\t\t\t\t\twhile (--count0) {\n\t\t\t\t\t\t\tremoveNodeFromDOM(dom.nextSibling)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tremoveNodeFromDOM(vnode.dom)\n\t\t\t\t\tif (context != null && vnode.domSize == null && !hasIntegrationMethods(vnode.attrs) && typeof vnode.tag === \"string\") { //TODO test custom elements\n\t\t\t\t\t\tif (!context.pool) context.pool = [vnode]\n\t\t\t\t\t\telse context.pool.push(vnode)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNodeFromDOM(node) {\n\t\tvar parent = node.parentNode\n\t\tif (parent != null) parent.removeChild(node)\n\t}\n\tfunction onremove(vnode) {\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") vnode.attrs.onremove.call(vnode.state, vnode)\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onremove === \"function\") vnode._state.onremove.call(vnode.state, vnode)\n\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\telse {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//attrs2\n\tfunction setAttrs(vnode, attrs2, ns) {\n\t\tfor (var key2 in attrs2) {\n\t\t\tsetAttr(vnode, key2, null, attrs2[key2], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key2, old, value, ns) {\n\t\tvar element = vnode.dom\n\t\tif (key2 === \"key\" || key2 === \"is\" || (old === value && !isFormAttribute(vnode, key2)) && typeof value !== \"object\" || typeof value === \"undefined\" || isLifecycleMethod(key2)) return\n\t\tvar nsLastIndex = key2.indexOf(\":\")\n\t\tif (nsLastIndex > -1 && key2.substr(0, nsLastIndex) === \"xlink\") {\n\t\t\telement.setAttributeNS(\"http://www.w3.org/1999/xlink\", key2.slice(nsLastIndex + 1), value)\n\t\t}\n\t\telse if (key2[0] === \"o\" && key2[1] === \"n\" && typeof value === \"function\") updateEvent(vnode, key2, value)\n\t\telse if (key2 === \"style\") updateStyle(element, old, value)\n\t\telse if (key2 in element && !isAttribute(key2) && ns === undefined && !isCustomElement(vnode)) {\n\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\tif (vnode.tag === \"input\" && key2 === \"value\" && vnode.dom.value == value && vnode.dom === $doc.activeElement) return\n\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\tif (vnode.tag === \"select\" && key2 === \"value\" && vnode.dom.value == value && vnode.dom === $doc.activeElement) return\n\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\tif (vnode.tag === \"option\" && key2 === \"value\" && vnode.dom.value == value) return\n\t\t\t// If you assign an input type1 that is not supported by IE 11 with an assignment expression, an error0 will occur.\n\t\t\tif (vnode.tag === \"input\" && key2 === \"type\") {\n\t\t\t\telement.setAttribute(key2, value)\n\t\t\t\treturn\n\t\t\t}\n\t\t\telement[key2] = value\n\t\t}\n\t\telse {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) element.setAttribute(key2, \"\")\n\t\t\t\telse element.removeAttribute(key2)\n\t\t\t}\n\t\t\telse element.setAttribute(key2 === \"className\" ? \"class\" : key2, value)\n\t\t}\n\t}\n\tfunction setLateAttrs(vnode) {\n\t\tvar attrs2 = vnode.attrs\n\t\tif (vnode.tag === \"select\" && attrs2 != null) {\n\t\t\tif (\"value\" in attrs2) setAttr(vnode, \"value\", null, attrs2.value, undefined)\n\t\t\tif (\"selectedIndex\" in attrs2) setAttr(vnode, \"selectedIndex\", null, attrs2.selectedIndex, undefined)\n\t\t}\n\t}\n\tfunction updateAttrs(vnode, old, attrs2, ns) {\n\t\tif (attrs2 != null) {\n\t\t\tfor (var key2 in attrs2) {\n\t\t\t\tsetAttr(vnode, key2, old && old[key2], attrs2[key2], ns)\n\t\t\t}\n\t\t}\n\t\tif (old != null) {\n\t\t\tfor (var key2 in old) {\n\t\t\t\tif (attrs2 == null || !(key2 in attrs2)) {\n\t\t\t\t\tif (key2 === \"className\") key2 = \"class\"\n\t\t\t\t\tif (key2[0] === \"o\" && key2[1] === \"n\" && !isLifecycleMethod(key2)) updateEvent(vnode, key2, undefined)\n\t\t\t\t\telse if (key2 !== \"key\") vnode.dom.removeAttribute(key2)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction isAttribute(attr) {\n\t\treturn attr === \"href\" || attr === \"list\" || attr === \"form\" || attr === \"width\" || attr === \"height\"// || attr === \"type\"\n\t}\n\tfunction isCustomElement(vnode){\n\t\treturn vnode.attrs.is || vnode.tag.indexOf(\"-\") > -1\n\t}\n\tfunction hasIntegrationMethods(source) {\n\t\treturn source != null && (source.oncreate || source.onupdate || source.onbeforeremove || source.onremove)\n\t}\n\t//style\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) element.style.cssText = \"\", old = null\n\t\tif (style == null) element.style.cssText = \"\"\n\t\telse if (typeof style === \"string\") element.style.cssText = style\n\t\telse {\n\t\t\tif (typeof old === \"string\") element.style.cssText = \"\"\n\t\t\tfor (var key2 in style) {\n\t\t\t\telement.style[key2] = style[key2]\n\t\t\t}\n\t\t\tif (old != null && typeof old !== \"string\") {\n\t\t\t\tfor (var key2 in old) {\n\t\t\t\t\tif (!(key2 in style)) element.style[key2] = \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//event\n\tfunction updateEvent(vnode, key2, value) {\n\t\tvar element = vnode.dom\n\t\tvar callback = typeof onevent !== \"function\" ? value : function(e) {\n\t\t\tvar result = value.call(element, e)\n\t\t\tonevent.call(element, e)\n\t\t\treturn result\n\t\t}\n\t\tif (key2 in element) element[key2] = typeof value === \"function\" ? callback : null\n\t\telse {\n\t\t\tvar eventName = key2.slice(2)\n\t\t\tif (vnode.events === undefined) vnode.events = {}\n\t\t\tif (vnode.events[key2] === callback) return\n\t\t\tif (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false)\n\t\t\tif (typeof value === \"function\") {\n\t\t\t\tvnode.events[key2] = callback\n\t\t\t\telement.addEventListener(eventName, vnode.events[key2], false)\n\t\t\t}\n\t\t}\n\t}\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") source.oninit.call(vnode.state, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(source.oncreate.bind(vnode.state, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(source.onupdate.bind(vnode.state, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tvar forceVnodeUpdate, forceComponentUpdate\n\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") forceVnodeUpdate = vnode.attrs.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeupdate === \"function\") forceComponentUpdate = vnode._state.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (!(forceVnodeUpdate === undefined && forceComponentUpdate === undefined) && !forceVnodeUpdate && !forceComponentUpdate) {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\tfunction render(dom, vnodes) {\n\t\tif (!dom) throw new Error(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = $doc.activeElement\n\t\t// First time0 rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\tif (!Array.isArray(vnodes)) vnodes = [vnodes]\n\t\tupdateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), false, hooks, null, undefined)\n\t\tdom.vnodes = vnodes\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t\tif ($doc.activeElement !== active) active.focus()\n\t}\n\treturn {render: render, setEventCallback: setEventCallback}\n}\nfunction throttle(callback) {\n\t//60fps translates to 16.6ms, round it down since setTimeout requires int\n\tvar time = 16\n\tvar last = 0, pending = null\n\tvar timeout = typeof requestAnimationFrame === \"function\" ? requestAnimationFrame : setTimeout\n\treturn function() {\n\t\tvar now = Date.now()\n\t\tif (last === 0 || now - last >= time) {\n\t\t\tlast = now\n\t\t\tcallback()\n\t\t}\n\t\telse if (pending === null) {\n\t\t\tpending = timeout(function() {\n\t\t\t\tpending = null\n\t\t\t\tcallback()\n\t\t\t\tlast = Date.now()\n\t\t\t}, time - (now - last))\n\t\t}\n\t}\n}\nvar _11 = function($window) {\n\tvar renderService = coreRenderer($window)\n\trenderService.setEventCallback(function(e) {\n\t\tif (e.redraw !== false) redraw()\n\t})\n\tvar callbacks = []\n\tfunction subscribe(key1, callback) {\n\t\tunsubscribe(key1)\n\t\tcallbacks.push(key1, throttle(callback))\n\t}\n\tfunction unsubscribe(key1) {\n\t\tvar index = callbacks.indexOf(key1)\n\t\tif (index > -1) callbacks.splice(index, 2)\n\t}\n\tfunction redraw() {\n\t\tfor (var i = 1; i < callbacks.length; i += 2) {\n\t\t\tcallbacks[i]()\n\t\t}\n\t}\n\treturn {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render}\n}\nvar redrawService = _11(window)\nrequestService.setCompletionCallback(redrawService.redraw)\nvar _16 = function(redrawService0) {\n\treturn function(root, component) {\n\t\tif (component === null) {\n\t\t\tredrawService0.render(root, [])\n\t\t\tredrawService0.unsubscribe(root)\n\t\t\treturn\n\t\t}\n\t\t\n\t\tif (component.view == null && typeof component !== \"function\") throw new Error(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t\n\t\tvar run0 = function() {\n\t\t\tredrawService0.render(root, Vnode(component))\n\t\t}\n\t\tredrawService0.subscribe(root, run0)\n\t\tredrawService0.redraw()\n\t}\n}\nm.mount = _16(redrawService)\nvar Promise = PromisePolyfill\nvar parseQueryString = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\tvar entries = string.split(\"&\"), data0 = {}, counters = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key5 = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\t\tvar levels = key5.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data0\n\t\tif (key5.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tvar isValue = j === levels.length - 1\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key5 = levels.slice(0, j).join()\n\t\t\t\tif (counters[key5] == null) counters[key5] = 0\n\t\t\t\tlevel = counters[key5]++\n\t\t\t}\n\t\t\tif (cursor[level] == null) {\n\t\t\t\tcursor[level] = isValue ? value : isNumber ? [] : {}\n\t\t\t}\n\t\t\tcursor = cursor[level]\n\t\t}\n\t}\n\treturn data0\n}\nvar coreRouter = function($window) {\n\tvar supportsPushState = typeof $window.history.pushState === \"function\"\n\tvar callAsync0 = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction normalize1(fragment0) {\n\t\tvar data = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\tif (fragment0 === \"pathname\" && data[0] !== \"/\") data = \"/\" + data\n\t\treturn data\n\t}\n\tvar asyncId\n\tfunction debounceAsync(callback0) {\n\t\treturn function() {\n\t\t\tif (asyncId != null) return\n\t\t\tasyncId = callAsync0(function() {\n\t\t\t\tasyncId = null\n\t\t\t\tcallback0()\n\t\t\t})\n\t\t}\n\t}\n\tfunction parsePath(path, queryData, hashData) {\n\t\tvar queryIndex = path.indexOf(\"?\")\n\t\tvar hashIndex = path.indexOf(\"#\")\n\t\tvar pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length\n\t\tif (queryIndex > -1) {\n\t\t\tvar queryEnd = hashIndex > -1 ? hashIndex : path.length\n\t\t\tvar queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))\n\t\t\tfor (var key4 in queryParams) queryData[key4] = queryParams[key4]\n\t\t}\n\t\tif (hashIndex > -1) {\n\t\t\tvar hashParams = parseQueryString(path.slice(hashIndex + 1))\n\t\t\tfor (var key4 in hashParams) hashData[key4] = hashParams[key4]\n\t\t}\n\t\treturn path.slice(0, pathEnd)\n\t}\n\tvar router = {prefix: \"#!\"}\n\trouter.getPath = function() {\n\t\tvar type2 = router.prefix.charAt(0)\n\t\tswitch (type2) {\n\t\t\tcase \"#\": return normalize1(\"hash\").slice(router.prefix.length)\n\t\t\tcase \"?\": return normalize1(\"search\").slice(router.prefix.length) + normalize1(\"hash\")\n\t\t\tdefault: return normalize1(\"pathname\").slice(router.prefix.length) + normalize1(\"search\") + normalize1(\"hash\")\n\t\t}\n\t}\n\trouter.setPath = function(path, data, options) {\n\t\tvar queryData = {}, hashData = {}\n\t\tpath = parsePath(path, queryData, hashData)\n\t\tif (data != null) {\n\t\t\tfor (var key4 in data) queryData[key4] = data[key4]\n\t\t\tpath = path.replace(/:([^\\/]+)/g, function(match2, token) {\n\t\t\t\tdelete queryData[token]\n\t\t\t\treturn data[token]\n\t\t\t})\n\t\t}\n\t\tvar query = buildQueryString(queryData)\n\t\tif (query) path += \"?\" + query\n\t\tvar hash = buildQueryString(hashData)\n\t\tif (hash) path += \"#\" + hash\n\t\tif (supportsPushState) {\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\t$window.onpopstate()\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, router.prefix + path)\n\t\t\telse $window.history.pushState(state, title, router.prefix + path)\n\t\t}\n\t\telse $window.location.href = router.prefix + path\n\t}\n\trouter.defineRoutes = function(routes, resolve, reject) {\n\t\tfunction resolveRoute() {\n\t\t\tvar path = router.getPath()\n\t\t\tvar params = {}\n\t\t\tvar pathname = parsePath(path, params, params)\n\t\t\tvar state = $window.history.state\n\t\t\tif (state != null) {\n\t\t\t\tfor (var k in state) params[k] = state[k]\n\t\t\t}\n\t\t\tfor (var route0 in routes) {\n\t\t\t\tvar matcher = new RegExp(\"^\" + route0.replace(/:[^\\/]+?\\.{3}/g, \"(.*?)\").replace(/:[^\\/]+/g, \"([^\\\\/]+)\") + \"\\/?$\")\n\t\t\t\tif (matcher.test(pathname)) {\n\t\t\t\t\tpathname.replace(matcher, function() {\n\t\t\t\t\t\tvar keys = route0.match(/:[^\\/]+/g) || []\n\t\t\t\t\t\tvar values = [].slice.call(arguments, 1, -2)\n\t\t\t\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\t\t\t\tparams[keys[i].replace(/:|\\./g, \"\")] = decodeURIComponent(values[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(routes[route0], params, path, route0)\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(path, params)\n\t\t}\n\t\tif (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)\n\t\telse if (router.prefix.charAt(0) === \"#\") $window.onhashchange = resolveRoute\n\t\tresolveRoute()\n\t}\n\treturn router\n}\nvar _20 = function($window, redrawService0) {\n\tvar routeService = coreRouter($window)\n\tvar identity = function(v) {return v}\n\tvar render1, component, attrs3, currentPath, lastUpdate\n\tvar route = function(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\tvar run1 = function() {\n\t\t\tif (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3)))\n\t\t}\n\t\tvar bail = function(path) {\n\t\t\tif (path !== defaultRoute) routeService.setPath(defaultRoute, null, {replace: true})\n\t\t\telse throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t}\n\t\trouteService.defineRoutes(routes, function(payload, params, path) {\n\t\t\tvar update = lastUpdate = function(routeResolver, comp) {\n\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\tattrs3 = params, currentPath = path, lastUpdate = null\n\t\t\t\trender1 = (routeResolver.render || identity).bind(routeResolver)\n\t\t\t\trun1()\n\t\t\t}\n\t\t\tif (payload.view || typeof payload === \"function\") update({}, payload)\n\t\t\telse {\n\t\t\t\tif (payload.onmatch) {\n\t\t\t\t\tPromise.resolve(payload.onmatch(params, path)).then(function(resolved) {\n\t\t\t\t\t\tupdate(payload, resolved)\n\t\t\t\t\t}, bail)\n\t\t\t\t}\n\t\t\t\telse update(payload, \"div\")\n\t\t\t}\n\t\t}, bail)\n\t\tredrawService0.subscribe(root, run1)\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) options = {replace: true}\n\t\tlastUpdate = null\n\t\trouteService.setPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = function(prefix0) {routeService.prefix = prefix0}\n\troute.link = function(vnode1) {\n\t\tvnode1.dom.setAttribute(\"href\", routeService.prefix + vnode1.attrs.href)\n\t\tvnode1.dom.onclick = function(e) {\n\t\t\tif (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return\n\t\t\te.preventDefault()\n\t\t\te.redraw = false\n\t\t\tvar href = this.getAttribute(\"href\")\n\t\t\tif (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length)\n\t\t\troute.set(href, undefined, undefined)\n\t\t}\n\t}\n\troute.param = function(key3) {\n\t\tif(typeof attrs3 !== \"undefined\" && typeof key3 !== \"undefined\") return attrs3[key3]\n\t\treturn attrs3\n\t}\n\treturn route\n}\nm.route = _20(window, redrawService)\nm.withAttr = function(attrName, callback1, context) {\n\treturn function(e) {\n\t\tcallback1.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName))\n\t}\n}\nvar _28 = coreRenderer(window)\nm.render = _28.render\nm.redraw = redrawService.redraw\nm.request = requestService.request\nm.jsonp = requestService.jsonp\nm.parseQueryString = parseQueryString\nm.buildQueryString = buildQueryString\nm.version = \"1.1.1\"\nm.vnode = Vnode\nif (typeof module !== \"undefined\") module[\"exports\"] = m\nelse window.m = m\n}());\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],8:[function(require,module,exports){\n/*!\n * EventEmitter v5.1.0 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - http://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(this || {}));\n\n},{}]},{},[1]);\n })();"]}
1
+ {"version":3,"sources":["admin.js"],"names":["require","undefined","define","e","t","n","r","s","o","u","a","i","f","Error","code","l","exports","call","length","1","module","m","window","EventEmitter","context","document","getElementById","events","tabs","helpers","settings","ListFetcher","mount","mc4wp","deps","mithril","./admin/helpers.js","./admin/list-fetcher.js","./admin/settings.js","./admin/tabs.js","wolfy87-eventemitter","2","toggleElement","selector","elements","querySelectorAll","show","clientHeight","style","display","bindEventToElement","element","event","handler","addEventListener","attachEvent","bindEventToElements","Array","prototype","forEach","debounce","func","wait","immediate","timeout","this","args","arguments","later","apply","callNow","clearTimeout","setTimeout","showIfElements","getAttribute","checked","value","conditionMet","config","hide","visibility","opacity","inputs","inputElement","removeAttribute","setAttribute","JSON","parse","parentElements","parentElement","3","working","done","mailchimp","api_connected","lists","fetch","$","jQuery","mc4wp_vars","i18n","preventDefault","post","ajaxurl","action","data","success","location","reload","bind","fail","always","redraw","view","method","onsubmit","type","fetching_mailchimp_lists","renew_mailchimp_lists","className","disabled","trust","fetching_mailchimp_lists_can_take_a_while","fetching_mailchimp_lists_done","fetching_mailchimp_lists_error","4","_typeof","Symbol","iterator","obj","constructor","Settings","getSelectedListsWhere","searchKey","searchValue","selectedLists","filter","el","getSelectedLists","updateSelectedLists","listInputs","input","push","trigger","toggleVisibleLists","rows","replace","querySelector","on","5","URL","Tabs","get","id","_open","tab","updateState","$tabs","removeClass","css","$tabNavs","nav","blur","url","setParameter","href","history","pushState","title","refererField","tb_remove","forms","editor","refresh","split","switchTab","tabId","match","urlParams","returnValue","$context","find","each","substring","first","text","open","click","body","activeTab","replaceState","state","./url.js","6","query","hasOwnProperty","b","decodeURIComponent","build","ret","d","encodeURIComponent","join","key","7","global","Vnode","tag","attrs0","children","dom","attrs","domSize","_state","instance","skip","compileSelector","classes","selectorParser","exec","attrValue","selectorCache","execSelector","childList","hasAttrs","class","hasOwn","isArray","hyperscript","start","cached","normalized","normalizeChildren","throttle","callback","last","pending","requestAnimationFrame","now","Date","normalize","node","html","fragment","attrs1","PromisePolyfill","executor","list","shouldAbsorb","execute","then","callAsync","console","error","resolvers","rejectors","retry","self","TypeError","executeOnce","rejectCurrent","run","fn","runs","onerror","resolveCurrent","_instance","setImmediate","onFulfilled","onRejection","handle","next","resolveNext","rejectNext","promise","resolve","reject","catch","all","total","count","values","consume","race","Promise","buildQueryString","object","destructure","key0","Object","toString","FILE_PROTOCOL_REGEX","RegExp","requestService","$window","setCompletionCallback","oncompletion","finalizer","complete","finalize","promise0","then0","extra","request","toUpperCase","useBody","serialize","FormData","stringify","deserialize","extract","interpolate","assemble","xhr","XMLHttpRequest","aborted","_abort","abort","async","user","password","setRequestHeader","withCredentials","headers","onreadystatechange","readyState","response","status","test","cast","responseText","send","background","jsonp","callbackName","Math","round","random","callbackCount","script","createElement","parentNode","removeChild","callbackKey","src","documentElement","appendChild","tokens","slice","querystring","indexOf","type0","coreRenderer","setEventCallback","onevent","createNodes","parent","vnodes","end","hooks","nextSibling","ns","vnode","createNode","createComponent","initLifecycle","createText","createHTML","createFragment","$doc","createTextNode","insertNode","match1","parent1","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","temp","innerHTML","firstChild","childNodes","child","createDocumentFragment","attrs2","is","createElementNS","setAttrs","contenteditable","setContentEditable","textContent","setLateAttrs","initComponent","sentinel","create","$$reentrantLock$$","$emptyFragment","updateNodes","old","recycling","removeNodes","isUnkeyed","getNextSibling","updateNode","isRecyclable","pool","concat","map","oldStart","oldEnd","v","shouldRecycle","toFragment","getKeyMap","oldIndex","movable","oldTag","shouldNotUpdate","updateLifecycle","updateText","updateHTML","updateFragment","updateElement","updateComponent","removeNode","nodeValue","updateAttrs","abs","oldChildrenLength","poolChildrenLength","vnodesChildrenLength","key2","count0","insertBefore","content","continuation","called","expected","onremove","removeNodeFromDOM","hasIntegrationMethods","onbeforeremove","result","setAttr","isFormAttribute","isLifecycleMethod","nsLastIndex","substr","setAttributeNS","updateEvent","updateStyle","isAttribute","isCustomElement","activeElement","selectedIndex","attr","source","oncreate","onupdate","cssText","eventName","removeEventListener","oninit","forceVnodeUpdate","forceComponentUpdate","onbeforeupdate","render","active","focus","redrawService","subscribe","key1","unsubscribe","callbacks","index","splice","renderService","redrawService0","root","component","run0","parseQueryString","string","charAt","entries","data0","counters","entry","key5","levels","cursor","pop","j","level","nextLevel","isNumber","isNaN","parseInt","isValue","coreRouter","normalize1","fragment0","debounceAsync","callback0","asyncId","callAsync0","parsePath","path","queryData","hashData","queryIndex","hashIndex","pathEnd","queryEnd","queryParams","key4","hashParams","supportsPushState","router","prefix","getPath","setPath","options","match2","token","hash","onpopstate","defineRoutes","routes","resolveRoute","params","pathname","k","route0","matcher","keys","onhashchange","route","render1","attrs3","currentPath","lastUpdate","routeService","identity","defaultRoute","run1","bail","payload","update","routeResolver","comp","onmatch","resolved","set","prefix0","link","vnode1","onclick","ctrlKey","metaKey","shiftKey","which","param","key3","withAttr","attrName","callback1","currentTarget","_28","version","8","indexOfListener","listeners","listener","alias","name","isValidListener","proto","originalGlobalValue","getListeners","evt","_getEvents","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","once","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","remove","single","multiple","removeEvent","_events","removeAllListeners","emitEvent","listenersMap","_getOnceReturnValue","emit","setOnceReturnValue","_onceReturnValue","noConflict","amd"],"mappings":"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","file":"admin.min.js","sourcesContent":["(function () { var require = undefined; var define = undefined; (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n'use strict';\n\n// dependencies\n\nvar m = window.m = require('mithril');\nvar EventEmitter = require('wolfy87-eventemitter');\n\n// vars\nvar context = document.getElementById('mc4wp-admin');\nvar events = new EventEmitter();\nvar tabs = require('./admin/tabs.js')(context);\nvar helpers = require('./admin/helpers.js');\nvar settings = require('./admin/settings.js')(context, helpers, events);\n\n// list fetcher\nvar ListFetcher = require('./admin/list-fetcher.js');\nvar mount = document.getElementById('mc4wp-list-fetcher');\nif (mount) {\n m.mount(mount, new ListFetcher());\n}\n\n// expose some things\nwindow.mc4wp = window.mc4wp || {};\nwindow.mc4wp.deps = window.mc4wp.deps || {};\nwindow.mc4wp.deps.mithril = m;\nwindow.mc4wp.helpers = helpers;\nwindow.mc4wp.events = events;\nwindow.mc4wp.settings = settings;\nwindow.mc4wp.tabs = tabs;\n\n},{\"./admin/helpers.js\":2,\"./admin/list-fetcher.js\":3,\"./admin/settings.js\":4,\"./admin/tabs.js\":5,\"mithril\":7,\"wolfy87-eventemitter\":8}],2:[function(require,module,exports){\n'use strict';\n\nvar helpers = {};\n\nhelpers.toggleElement = function (selector) {\n\tvar elements = document.querySelectorAll(selector);\n\tfor (var i = 0; i < elements.length; i++) {\n\t\tvar show = elements[i].clientHeight <= 0;\n\t\telements[i].style.display = show ? '' : 'none';\n\t}\n};\n\nhelpers.bindEventToElement = function (element, event, handler) {\n\tif (element.addEventListener) {\n\t\telement.addEventListener(event, handler);\n\t} else if (element.attachEvent) {\n\t\telement.attachEvent('on' + event, handler);\n\t}\n};\n\nhelpers.bindEventToElements = function (elements, event, handler) {\n\tArray.prototype.forEach.call(elements, function (element) {\n\t\thelpers.bindEventToElement(element, event, handler);\n\t});\n};\n\n// polling\nhelpers.debounce = function (func, wait, immediate) {\n\tvar timeout;\n\treturn function () {\n\t\tvar context = this,\n\t\t args = arguments;\n\t\tvar later = function later() {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) func.apply(context, args);\n\t\t};\n\t\tvar callNow = immediate && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t\tif (callNow) func.apply(context, args);\n\t};\n};\n\n/**\n * Showif.js\n */\n(function () {\n\tvar showIfElements = document.querySelectorAll('[data-showif]');\n\n\t// dependent elements\n\tArray.prototype.forEach.call(showIfElements, function (element) {\n\t\tvar config = JSON.parse(element.getAttribute('data-showif'));\n\t\tvar parentElements = document.querySelectorAll('[name=\"' + config.element + '\"]');\n\t\tvar inputs = element.querySelectorAll('input,select,textarea:not([readonly])');\n\t\tvar hide = config.hide === undefined || config.hide;\n\n\t\tfunction toggleElement() {\n\n\t\t\t// do nothing with unchecked radio inputs\n\t\t\tif (this.getAttribute('type') === \"radio\" && !this.checked) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar value = this.getAttribute(\"type\") === \"checkbox\" ? this.checked : this.value;\n\t\t\tvar conditionMet = value == config.value;\n\n\t\t\tif (hide) {\n\t\t\t\telement.style.display = conditionMet ? '' : 'none';\n\t\t\t\telement.style.visibility = conditionMet ? '' : 'hidden';\n\t\t\t} else {\n\t\t\t\telement.style.opacity = conditionMet ? '' : '0.4';\n\t\t\t}\n\n\t\t\t// disable input fields to stop sending their values to server\n\t\t\tArray.prototype.forEach.call(inputs, function (inputElement) {\n\t\t\t\tconditionMet ? inputElement.removeAttribute('readonly') : inputElement.setAttribute('readonly', 'readonly');\n\t\t\t});\n\t\t}\n\n\t\t// find checked element and call toggleElement function\n\t\tArray.prototype.forEach.call(parentElements, function (parentElement) {\n\t\t\ttoggleElement.call(parentElement);\n\t\t});\n\n\t\t// bind on all changes\n\t\thelpers.bindEventToElements(parentElements, 'change', toggleElement);\n\t});\n})();\n\nmodule.exports = helpers;\n\n},{}],3:[function(require,module,exports){\n'use strict';\n\nvar $ = window.jQuery;\nvar config = mc4wp_vars;\nvar i18n = config.i18n;\n\nfunction ListFetcher() {\n this.working = false;\n this.done = false;\n\n // start fetching right away when no lists but api key given\n if (config.mailchimp.api_connected && config.mailchimp.lists.length === 0) {\n this.fetch();\n }\n}\n\nListFetcher.prototype.fetch = function (e) {\n e && e.preventDefault();\n\n this.working = true;\n this.done = false;\n\n $.post(ajaxurl, {\n action: \"mc4wp_renew_mailchimp_lists\"\n }).done(function (data) {\n this.success = true;\n\n if (data) {\n window.setTimeout(function () {\n window.location.reload();\n }, 3000);\n }\n }.bind(this)).fail(function (data) {\n this.success = false;\n }.bind(this)).always(function (data) {\n this.working = false;\n this.done = true;\n\n m.redraw();\n }.bind(this));\n};\n\nListFetcher.prototype.view = function () {\n return m('form', {\n method: \"POST\",\n onsubmit: this.fetch.bind(this)\n }, [m('p', [m('input', {\n type: \"submit\",\n value: this.working ? i18n.fetching_mailchimp_lists : i18n.renew_mailchimp_lists,\n className: \"button\",\n disabled: !!this.working\n }), m.trust(' &nbsp; '), this.working ? [m('span.mc4wp-loader', \"Loading...\"), m.trust(' &nbsp; '), m('em.help', i18n.fetching_mailchimp_lists_can_take_a_while)] : '', this.done ? [this.success ? m('em.help.green', i18n.fetching_mailchimp_lists_done) : m('em.help.red', i18n.fetching_mailchimp_lists_error)] : ''])]);\n};\n\nmodule.exports = ListFetcher;\n\n},{}],4:[function(require,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar Settings = function Settings(context, helpers, events) {\n\t'use strict';\n\n\t// vars\n\n\tvar form = context.querySelector('form');\n\tvar listInputs = context.querySelectorAll('.mc4wp-list-input');\n\tvar lists = mc4wp_vars.mailchimp.lists;\n\tvar selectedLists = [];\n\n\t// functions\n\tfunction getSelectedListsWhere(searchKey, searchValue) {\n\t\treturn selectedLists.filter(function (el) {\n\t\t\treturn el[searchKey] === searchValue;\n\t\t});\n\t}\n\n\tfunction getSelectedLists() {\n\t\treturn selectedLists;\n\t}\n\n\tfunction updateSelectedLists() {\n\t\tselectedLists = [];\n\n\t\tArray.prototype.forEach.call(listInputs, function (input) {\n\t\t\t// skip unchecked checkboxes\n\t\t\tif (typeof input.checked === \"boolean\" && !input.checked) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_typeof(lists[input.value]) === \"object\") {\n\t\t\t\tselectedLists.push(lists[input.value]);\n\t\t\t}\n\t\t});\n\n\t\tevents.trigger('selectedLists.change', [selectedLists]);\n\t\treturn selectedLists;\n\t}\n\n\tfunction toggleVisibleLists() {\n\t\tvar rows = document.querySelectorAll('.lists--only-selected > *');\n\t\tArray.prototype.forEach.call(rows, function (el) {\n\n\t\t\tvar listId = el.getAttribute('data-list-id');\n\t\t\tvar isSelected = getSelectedListsWhere('id', listId).length > 0;\n\n\t\t\tif (isSelected) {\n\t\t\t\tel.setAttribute('class', el.getAttribute('class').replace('hidden', ''));\n\t\t\t} else {\n\t\t\t\tel.setAttribute('class', el.getAttribute('class') + \" hidden\");\n\t\t\t}\n\t\t});\n\t}\n\n\tevents.on('selectedLists.change', toggleVisibleLists);\n\thelpers.bindEventToElements(listInputs, 'change', updateSelectedLists);\n\n\tupdateSelectedLists();\n\n\treturn {\n\t\tgetSelectedLists: getSelectedLists\n\t};\n};\n\nmodule.exports = Settings;\n\n},{}],5:[function(require,module,exports){\n'use strict';\n\nvar URL = require('./url.js');\n\n// Tabs\nvar Tabs = function Tabs(context) {\n\n\t// TODO: last piece of jQuery... can we get rid of it?\n\tvar $ = window.jQuery;\n\n\tvar $context = $(context);\n\tvar $tabs = $context.find('.tab');\n\tvar $tabNavs = $context.find('.nav-tab');\n\tvar refererField = context.querySelector('input[name=\"_wp_http_referer\"]');\n\tvar tabs = [];\n\n\t$.each($tabs, function (i, t) {\n\t\tvar id = t.id.substring(4);\n\t\tvar title = $(t).find('h2').first().text();\n\n\t\ttabs.push({\n\t\t\tid: id,\n\t\t\ttitle: title,\n\t\t\telement: t,\n\t\t\tnav: context.querySelectorAll('.nav-tab-' + id),\n\t\t\topen: function open() {\n\t\t\t\treturn _open(id);\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction get(id) {\n\n\t\tfor (var i = 0; i < tabs.length; i++) {\n\t\t\tif (tabs[i].id === id) {\n\t\t\t\treturn tabs[i];\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction _open(tab, updateState) {\n\n\t\t// make sure we have a tab object\n\t\tif (typeof tab === \"string\") {\n\t\t\ttab = get(tab);\n\t\t}\n\n\t\tif (!tab) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// should we update state?\n\t\tif (updateState == undefined) {\n\t\t\tupdateState = true;\n\t\t}\n\n\t\t// hide all tabs & remove active class\n\t\t$tabs.removeClass('tab-active').css('display', 'none');\n\t\t$tabNavs.removeClass('nav-tab-active');\n\n\t\t// add `nav-tab-active` to this tab\n\t\tArray.prototype.forEach.call(tab.nav, function (nav) {\n\t\t\tnav.className += \" nav-tab-active\";\n\t\t\tnav.blur();\n\t\t});\n\n\t\t// show target tab\n\t\ttab.element.style.display = 'block';\n\t\ttab.element.className += \" tab-active\";\n\n\t\t// create new URL\n\t\tvar url = URL.setParameter(window.location.href, \"tab\", tab.id);\n\n\t\t// update hash\n\t\tif (history.pushState && updateState) {\n\t\t\thistory.pushState(tab.id, '', url);\n\t\t}\n\n\t\t// update document title\n\t\ttitle(tab);\n\n\t\t// update referer field\n\t\trefererField.value = url;\n\n\t\t// if thickbox is open, close it.\n\t\tif (typeof tb_remove === \"function\") {\n\t\t\ttb_remove();\n\t\t}\n\n\t\t// refresh editor after switching tabs\n\t\t// TODO: decouple this! law of demeter etc.\n\t\tif (tab.id === 'fields' && window.mc4wp && window.mc4wp.forms && window.mc4wp.forms.editor) {\n\t\t\tmc4wp.forms.editor.refresh();\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction title(tab) {\n\t\tvar title = document.title.split('-');\n\t\tdocument.title = document.title.replace(title[0], tab.title + \" \");\n\t}\n\n\tfunction switchTab(e) {\n\t\te = e || window.event;\n\n\t\t// get from data attribute\n\t\tvar tabId = this.getAttribute('data-tab');\n\n\t\t// get from classname\n\t\tif (!tabId) {\n\t\t\tvar match = this.className.match(/nav-tab-(\\w+)?/);\n\t\t\tif (match) {\n\t\t\t\ttabId = match[1];\n\t\t\t}\n\t\t}\n\n\t\t// get from href\n\t\tif (!tabId) {\n\t\t\tvar urlParams = URL.parse(this.href);\n\t\t\tif (!urlParams.tab) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttabId = urlParams.tab;\n\t\t}\n\n\t\tvar opened = _open(tabId);\n\n\t\tif (opened) {\n\t\t\te.preventDefault();\n\t\t\te.returnValue = false;\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction init() {\n\n\t\t// check for current tab\n\t\tif (!history.pushState) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar activeTab = $tabs.filter(':visible').get(0);\n\t\tif (!activeTab) {\n\t\t\treturn;\n\t\t}\n\t\tvar tab = get(activeTab.id.substring(4));\n\t\tif (!tab) return;\n\n\t\t// check if tab is in html5 history\n\t\tif (history.replaceState && history.state === null) {\n\t\t\thistory.replaceState(tab.id, '');\n\t\t}\n\n\t\t// update document title\n\t\ttitle(tab);\n\t}\n\n\t$tabNavs.click(switchTab);\n\t$(document.body).on('click', '.tab-link', switchTab);\n\tinit();\n\n\tif (window.addEventListener && history.pushState) {\n\t\twindow.addEventListener('popstate', function (e) {\n\t\t\tif (!e.state) return true;\n\t\t\tvar tabId = e.state;\n\t\t\treturn _open(tabId, false);\n\t\t});\n\t}\n\n\treturn {\n\t\topen: _open,\n\t\tget: get\n\t};\n};\n\nmodule.exports = Tabs;\n\n},{\"./url.js\":6}],6:[function(require,module,exports){\n'use strict';\n\nvar URL = {\n\tparse: function parse(url) {\n\t\tvar query = {};\n\t\tvar a = url.split('&');\n\t\tfor (var i in a) {\n\t\t\tif (!a.hasOwnProperty(i)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar b = a[i].split('=');\n\t\t\tquery[decodeURIComponent(b[0])] = decodeURIComponent(b[1]);\n\t\t}\n\n\t\treturn query;\n\t},\n\tbuild: function build(data) {\n\t\tvar ret = [];\n\t\tfor (var d in data) {\n\t\t\tret.push(d + \"=\" + encodeURIComponent(data[d]));\n\t\t}return ret.join(\"&\");\n\t},\n\tsetParameter: function setParameter(url, key, value) {\n\t\tvar data = URL.parse(url);\n\t\tdata[key] = value;\n\t\treturn URL.build(data);\n\t}\n};\n\nmodule.exports = URL;\n\n},{}],7:[function(require,module,exports){\n(function (global){\n;(function() {\n\"use strict\"\nfunction Vnode(tag, key, attrs0, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs0, children: children, text: text, dom: dom, domSize: undefined, state: undefined, _state: undefined, events: undefined, instance: undefined, skip: false}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node != null && typeof node !== \"object\") return Vnode(\"#\", undefined, undefined, node === false ? \"\" : node, undefined, undefined)\n\treturn node\n}\nVnode.normalizeChildren = function normalizeChildren(children) {\n\tfor (var i = 0; i < children.length; i++) {\n\t\tchildren[i] = Vnode.normalize(children[i])\n\t}\n\treturn children\n}\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\nfunction execSelector(state, attrs, children) {\n\tvar hasAttrs = false, childList, text\n\tvar className = attrs.className || attrs.class\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key)) {\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className !== undefined) {\n\t\tif (attrs.class !== undefined) {\n\t\t\tattrs.class = undefined\n\t\t\tattrs.className = className\n\t\t}\n\t\tif (state.attrs.className != null) {\n\t\t\tattrs.className = state.attrs.className + \" \" + className\n\t\t}\n\t}\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\thasAttrs = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\ttext = children[0].children\n\t} else {\n\t\tchildList = children\n\t}\n\treturn Vnode(state.tag, attrs.key, hasAttrs ? attrs : undefined, childList, text)\n}\nfunction hyperscript(selector) {\n\t// Because sloppy mode sucks\n\tvar attrs = arguments[1], start = 2, children\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\tif (typeof selector === \"string\") {\n\t\tvar cached = selectorCache[selector] || compileSelector(selector)\n\t}\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = 1\n\t}\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\tvar normalized = Vnode.normalizeChildren(children)\n\tif (typeof selector === \"string\") {\n\t\treturn execSelector(cached, attrs, normalized)\n\t} else {\n\t\treturn Vnode(selector, attrs.key, attrs, normalized)\n\t}\n}\nhyperscript.trust = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\nhyperscript.fragment = function(attrs1, children) {\n\treturn Vnode(\"[\", attrs1.key, attrs1, Vnode.normalizeChildren(children), undefined, undefined)\n}\nvar m = hyperscript\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") window.Promise = PromisePolyfill\n\tvar PromisePolyfill = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") global.Promise = PromisePolyfill\n\tvar PromisePolyfill = global.Promise\n} else {\n}\nvar buildQueryString = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\tvar args = []\n\tfor (var key0 in object) {\n\t\tdestructure(key0, object[key0])\n\t}\n\treturn args.join(\"&\")\n\tfunction destructure(key0, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key0) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\nvar FILE_PROTOCOL_REGEX = new RegExp(\"^file://\", \"i\")\nvar _8 = function($window, Promise) {\n\tvar callbackCount = 0\n\tvar oncompletion\n\tfunction setCompletionCallback(callback) {oncompletion = callback}\n\tfunction finalizer() {\n\t\tvar count = 0\n\t\tfunction complete() {if (--count === 0 && typeof oncompletion === \"function\") oncompletion()}\n\t\treturn function finalize(promise0) {\n\t\t\tvar then0 = promise0.then\n\t\t\tpromise0.then = function() {\n\t\t\t\tcount++\n\t\t\t\tvar next = then0.apply(promise0, arguments)\n\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\tcomplete()\n\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t})\n\t\t\t\treturn finalize(next)\n\t\t\t}\n\t\t\treturn promise0\n\t\t}\n\t}\n\tfunction normalize(args, extra) {\n\t\tif (typeof args === \"string\") {\n\t\t\tvar url = args\n\t\t\targs = extra || {}\n\t\t\tif (args.url == null) args.url = url\n\t\t}\n\t\treturn args\n\t}\n\tfunction request(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tif (args.method == null) args.method = \"GET\"\n\t\t\targs.method = args.method.toUpperCase()\n\t\t\tvar useBody = (args.method === \"GET\" || args.method === \"TRACE\") ? false : (typeof args.useBody === \"boolean\" ? args.useBody : true)\n\t\t\tif (typeof args.serialize !== \"function\") args.serialize = typeof FormData !== \"undefined\" && args.data instanceof FormData ? function(value) {return value} : JSON.stringify\n\t\t\tif (typeof args.deserialize !== \"function\") args.deserialize = deserialize\n\t\t\tif (typeof args.extract !== \"function\") args.extract = extract\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\tif (useBody) args.data = args.serialize(args.data)\n\t\t\telse args.url = assemble(args.url, args.data)\n\t\t\tvar xhr = new $window.XMLHttpRequest(),\n\t\t\t\taborted = false,\n\t\t\t\t_abort = xhr.abort\n\t\t\txhr.abort = function abort() {\n\t\t\t\taborted = true\n\t\t\t\t_abort.call(xhr)\n\t\t\t}\n\t\t\txhr.open(args.method, args.url, typeof args.async === \"boolean\" ? args.async : true, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\t\t\tif (args.serialize === JSON.stringify && useBody) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (args.deserialize === deserialize) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tfor (var key in args.headers) if ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t}\n\t\t\tif (typeof args.config === \"function\") xhr = args.config(xhr, args) || xhr\n\t\t\txhr.onreadystatechange = function() {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif(aborted) return\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args))\n\t\t\t\t\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || FILE_PROTOCOL_REGEX.test(args.url)) {\n\t\t\t\t\t\t\tresolve(cast(args.type, response))\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar error = new Error(xhr.responseText)\n\t\t\t\t\t\t\tfor (var key in response) error[key] = response[key]\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (useBody && (args.data != null)) xhr.send(args.data)\n\t\t\telse xhr.send()\n\t\t})\n\t\treturn args.background === true ? promise0 : finalize(promise0)\n\t}\n\tfunction jsonp(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(cast(args.type, data))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tif (args.data == null) args.data = {}\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\targs.data[args.callbackKey || \"callback\"] = callbackName\n\t\t\tscript.src = assemble(args.url, args.data)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t})\n\t\treturn args.background === true? promise0 : finalize(promise0)\n\t}\n\tfunction interpolate(url, data) {\n\t\tif (data == null) return url\n\t\tvar tokens = url.match(/:[^\\/]+/gi) || []\n\t\tfor (var i = 0; i < tokens.length; i++) {\n\t\t\tvar key = tokens[i].slice(1)\n\t\t\tif (data[key] != null) {\n\t\t\t\turl = url.replace(tokens[i], data[key])\n\t\t\t}\n\t\t}\n\t\treturn url\n\t}\n\tfunction assemble(url, data) {\n\t\tvar querystring = buildQueryString(data)\n\t\tif (querystring !== \"\") {\n\t\t\tvar prefix = url.indexOf(\"?\") < 0 ? \"?\" : \"&\"\n\t\t\turl += prefix + querystring\n\t\t}\n\t\treturn url\n\t}\n\tfunction deserialize(data) {\n\t\ttry {return data !== \"\" ? JSON.parse(data) : null}\n\t\tcatch (e) {throw new Error(data)}\n\t}\n\tfunction extract(xhr) {return xhr.responseText}\n\tfunction cast(type0, data) {\n\t\tif (typeof type0 === \"function\") {\n\t\t\tif (Array.isArray(data)) {\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\tdata[i] = new type0(data[i])\n\t\t\t\t}\n\t\t\t}\n\t\t\telse return new type0(data)\n\t\t}\n\t\treturn data\n\t}\n\treturn {request: request, jsonp: jsonp, setCompletionCallback: setCompletionCallback}\n}\nvar requestService = _8(window, PromisePolyfill)\nvar coreRenderer = function($window) {\n\tvar $doc = $window.document\n\tvar $emptyFragment = $doc.createDocumentFragment()\n\tvar onevent\n\tfunction setEventCallback(callback) {return onevent = callback}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": return createText(parent, vnode, nextSibling)\n\t\t\t\tcase \"<\": return createHTML(parent, vnode, nextSibling)\n\t\t\t\tcase \"[\": return createFragment(parent, vnode, hooks, ns, nextSibling)\n\t\t\t\tdefault: return createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse return createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t\treturn vnode.dom\n\t}\n\tfunction createHTML(parent, vnode, nextSibling) {\n\t\tvar match1 = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\tvar parent1 = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}[match1[1]] || \"div\"\n\t\tvar temp = $doc.createElement(parent1)\n\t\ttemp.innerHTML = vnode.children\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tswitch (vnode.tag) {\n\t\t\tcase \"svg\": ns = \"http://www.w3.org/2000/svg\"; break\n\t\t\tcase \"math\": ns = \"http://www.w3.org/1998/Math/MathML\"; break\n\t\t}\n\t\tvar attrs2 = vnode.attrs\n\t\tvar is = attrs2 && attrs2.is\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\t\tif (attrs2 != null) {\n\t\t\tsetAttrs(vnode, attrs2, ns)\n\t\t}\n\t\tinsertNode(parent, element, nextSibling)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tsetLateAttrs(vnode)\n\t\t\t}\n\t\t}\n\t\treturn element\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tvnode._state = vnode.state\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tinitLifecycle(vnode._state, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tvar element = createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t\tinsertNode(parent, element, nextSibling)\n\t\t\treturn element\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t\treturn $emptyFragment\n\t\t}\n\t}\n\t//update\n\tfunction updateNodes(parent, old, vnodes, recycling, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, undefined)\n\t\telse if (vnodes == null) removeNodes(old, 0, old.length, vnodes)\n\t\telse {\n\t\t\tif (old.length === vnodes.length) {\n\t\t\t\tvar isUnkeyed = false\n\t\t\t\tfor (var i = 0; i < vnodes.length; i++) {\n\t\t\t\t\tif (vnodes[i] != null && old[i] != null) {\n\t\t\t\t\t\tisUnkeyed = vnodes[i].key == null && old[i].key == null\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isUnkeyed) {\n\t\t\t\t\tfor (var i = 0; i < old.length; i++) {\n\t\t\t\t\t\tif (old[i] === vnodes[i]) continue\n\t\t\t\t\t\telse if (old[i] == null && vnodes[i] != null) createNode(parent, vnodes[i], hooks, ns, getNextSibling(old, i + 1, nextSibling))\n\t\t\t\t\t\telse if (vnodes[i] == null) removeNodes(old, i, i + 1, vnodes)\n\t\t\t\t\t\telse updateNode(parent, old[i], vnodes[i], hooks, getNextSibling(old, i + 1, nextSibling), recycling, ns)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\trecycling = recycling || isRecyclable(old, vnodes)\n\t\t\tif (recycling) {\n\t\t\t\tvar pool = old.pool\n\t\t\t\told = old.concat(old.pool)\n\t\t\t}\n\t\t\tvar oldStart = 0, start = 0, oldEnd = old.length - 1, end = vnodes.length - 1, map\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldStart], v = vnodes[start]\n\t\t\t\tif (o === v && !recycling) oldStart++, start++\n\t\t\t\telse if (o == null) oldStart++\n\t\t\t\telse if (v == null) start++\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldStart >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar o = old[oldEnd]\n\t\t\t\t\tif (o === v && !recycling) oldEnd--, start++\n\t\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\t\telse if (v == null) start++\n\t\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\t\tif (recycling || start < end) insertNode(parent, toFragment(o), getNextSibling(old, oldStart, nextSibling))\n\t\t\t\t\t\toldEnd--, start++\n\t\t\t\t\t}\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldEnd], v = vnodes[end]\n\t\t\t\tif (o === v && !recycling) oldEnd--, end--\n\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\telse if (v == null) end--\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t\tif (o.dom != null) nextSibling = o.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!map) map = getKeyMap(old, oldEnd)\n\t\t\t\t\tif (v != null) {\n\t\t\t\t\t\tvar oldIndex = map[v.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tvar movable = old[oldIndex]\n\t\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldIndex >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\t\tupdateNode(parent, movable, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns)\n\t\t\t\t\t\t\tinsertNode(parent, toFragment(movable), nextSibling)\n\t\t\t\t\t\t\told[oldIndex].skip = true\n\t\t\t\t\t\t\tif (movable.dom != null) nextSibling = movable.dom\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar dom = createNode(parent, v, hooks, undefined, nextSibling)\n\t\t\t\t\t\t\tnextSibling = dom\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tend--\n\t\t\t\t}\n\t\t\t\tif (end < start) break\n\t\t\t}\n\t\t\tcreateNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\tremoveNodes(old, oldStart, oldEnd + 1, vnodes)\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode._state = old._state\n\t\t\tvnode.events = old.events\n\t\t\tif (!recycling && shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tif (recycling) {\n\t\t\t\t\t\tvnode.state = {}\n\t\t\t\t\t\tinitLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t\t}\n\t\t\t\t\telse updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, recycling, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(old, null)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\ttoFragment(old)\n\t\t\tcreateHTML(parent, vnode, nextSibling)\n\t\t}\n\t\telse vnode.dom = old.dom, vnode.domSize = old.domSize\n\t}\n\tfunction updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, recycling, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, recycling, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tswitch (vnode.tag) {\n\t\t\tcase \"svg\": ns = \"http://www.w3.org/2000/svg\"; break\n\t\t\tcase \"math\": ns = \"http://www.w3.org/1998/Math/MathML\"; break\n\t\t}\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle0 multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse if (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t}\n\t\telse {\n\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\tupdateNodes(element, old.children, vnode.children, recycling, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tif (recycling) {\n\t\t\tinitComponent(vnode, hooks)\n\t\t} else {\n\t\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tupdateLifecycle(vnode._state, vnode, hooks)\n\t\t}\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, recycling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(old.instance, null)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction isRecyclable(old, vnodes) {\n\t\tif (old.pool != null && Math.abs(old.pool.length - vnodes.length) <= Math.abs(old.length - vnodes.length)) {\n\t\t\tvar oldChildrenLength = old[0] && old[0].children && old[0].children.length || 0\n\t\t\tvar poolChildrenLength = old.pool[0] && old.pool[0].children && old.pool[0].children.length || 0\n\t\t\tvar vnodesChildrenLength = vnodes[0] && vnodes[0].children && vnodes[0].children.length || 0\n\t\t\tif (Math.abs(poolChildrenLength - vnodesChildrenLength) <= Math.abs(oldChildrenLength - vnodesChildrenLength)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tfunction getKeyMap(vnodes, end) {\n\t\tvar map = {}, i = 0\n\t\tfor (var i = 0; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key2 = vnode.key\n\t\t\t\tif (key2 != null) map[key2] = i\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\tfunction toFragment(vnode) {\n\t\tvar count0 = vnode.domSize\n\t\tif (count0 != null || vnode.dom == null) {\n\t\t\tvar fragment = $doc.createDocumentFragment()\n\t\t\tif (count0 > 0) {\n\t\t\t\tvar dom = vnode.dom\n\t\t\t\twhile (--count0) fragment.appendChild(dom.nextSibling)\n\t\t\t\tfragment.insertBefore(dom, fragment.firstChild)\n\t\t\t}\n\t\t\treturn fragment\n\t\t}\n\t\telse return vnode.dom\n\t}\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling && nextSibling.parentNode) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\tfunction setContentEditable(vnode) {\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t}\n\t//remove\n\tfunction removeNodes(vnodes, start, end, context) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tif (vnode.skip) vnode.skip = false\n\t\t\t\telse removeNode(vnode, context)\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNode(vnode, context) {\n\t\tvar expected = 1, called = 0\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode.attrs.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode._state.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tcontinuation()\n\t\tfunction continuation() {\n\t\t\tif (++called === expected) {\n\t\t\t\tonremove(vnode)\n\t\t\t\tif (vnode.dom) {\n\t\t\t\t\tvar count0 = vnode.domSize || 1\n\t\t\t\t\tif (count0 > 1) {\n\t\t\t\t\t\tvar dom = vnode.dom\n\t\t\t\t\t\twhile (--count0) {\n\t\t\t\t\t\t\tremoveNodeFromDOM(dom.nextSibling)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tremoveNodeFromDOM(vnode.dom)\n\t\t\t\t\tif (context != null && vnode.domSize == null && !hasIntegrationMethods(vnode.attrs) && typeof vnode.tag === \"string\") { //TODO test custom elements\n\t\t\t\t\t\tif (!context.pool) context.pool = [vnode]\n\t\t\t\t\t\telse context.pool.push(vnode)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNodeFromDOM(node) {\n\t\tvar parent = node.parentNode\n\t\tif (parent != null) parent.removeChild(node)\n\t}\n\tfunction onremove(vnode) {\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") vnode.attrs.onremove.call(vnode.state, vnode)\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onremove === \"function\") vnode._state.onremove.call(vnode.state, vnode)\n\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\telse {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//attrs2\n\tfunction setAttrs(vnode, attrs2, ns) {\n\t\tfor (var key2 in attrs2) {\n\t\t\tsetAttr(vnode, key2, null, attrs2[key2], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key2, old, value, ns) {\n\t\tvar element = vnode.dom\n\t\tif (key2 === \"key\" || key2 === \"is\" || (old === value && !isFormAttribute(vnode, key2)) && typeof value !== \"object\" || typeof value === \"undefined\" || isLifecycleMethod(key2)) return\n\t\tvar nsLastIndex = key2.indexOf(\":\")\n\t\tif (nsLastIndex > -1 && key2.substr(0, nsLastIndex) === \"xlink\") {\n\t\t\telement.setAttributeNS(\"http://www.w3.org/1999/xlink\", key2.slice(nsLastIndex + 1), value)\n\t\t}\n\t\telse if (key2[0] === \"o\" && key2[1] === \"n\" && typeof value === \"function\") updateEvent(vnode, key2, value)\n\t\telse if (key2 === \"style\") updateStyle(element, old, value)\n\t\telse if (key2 in element && !isAttribute(key2) && ns === undefined && !isCustomElement(vnode)) {\n\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\tif (vnode.tag === \"input\" && key2 === \"value\" && vnode.dom.value == value && vnode.dom === $doc.activeElement) return\n\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\tif (vnode.tag === \"select\" && key2 === \"value\" && vnode.dom.value == value && vnode.dom === $doc.activeElement) return\n\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\tif (vnode.tag === \"option\" && key2 === \"value\" && vnode.dom.value == value) return\n\t\t\t// If you assign an input type1 that is not supported by IE 11 with an assignment expression, an error0 will occur.\n\t\t\tif (vnode.tag === \"input\" && key2 === \"type\") {\n\t\t\t\telement.setAttribute(key2, value)\n\t\t\t\treturn\n\t\t\t}\n\t\t\telement[key2] = value\n\t\t}\n\t\telse {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) element.setAttribute(key2, \"\")\n\t\t\t\telse element.removeAttribute(key2)\n\t\t\t}\n\t\t\telse element.setAttribute(key2 === \"className\" ? \"class\" : key2, value)\n\t\t}\n\t}\n\tfunction setLateAttrs(vnode) {\n\t\tvar attrs2 = vnode.attrs\n\t\tif (vnode.tag === \"select\" && attrs2 != null) {\n\t\t\tif (\"value\" in attrs2) setAttr(vnode, \"value\", null, attrs2.value, undefined)\n\t\t\tif (\"selectedIndex\" in attrs2) setAttr(vnode, \"selectedIndex\", null, attrs2.selectedIndex, undefined)\n\t\t}\n\t}\n\tfunction updateAttrs(vnode, old, attrs2, ns) {\n\t\tif (attrs2 != null) {\n\t\t\tfor (var key2 in attrs2) {\n\t\t\t\tsetAttr(vnode, key2, old && old[key2], attrs2[key2], ns)\n\t\t\t}\n\t\t}\n\t\tif (old != null) {\n\t\t\tfor (var key2 in old) {\n\t\t\t\tif (attrs2 == null || !(key2 in attrs2)) {\n\t\t\t\t\tif (key2 === \"className\") key2 = \"class\"\n\t\t\t\t\tif (key2[0] === \"o\" && key2[1] === \"n\" && !isLifecycleMethod(key2)) updateEvent(vnode, key2, undefined)\n\t\t\t\t\telse if (key2 !== \"key\") vnode.dom.removeAttribute(key2)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction isAttribute(attr) {\n\t\treturn attr === \"href\" || attr === \"list\" || attr === \"form\" || attr === \"width\" || attr === \"height\"// || attr === \"type\"\n\t}\n\tfunction isCustomElement(vnode){\n\t\treturn vnode.attrs.is || vnode.tag.indexOf(\"-\") > -1\n\t}\n\tfunction hasIntegrationMethods(source) {\n\t\treturn source != null && (source.oncreate || source.onupdate || source.onbeforeremove || source.onremove)\n\t}\n\t//style\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) element.style.cssText = \"\", old = null\n\t\tif (style == null) element.style.cssText = \"\"\n\t\telse if (typeof style === \"string\") element.style.cssText = style\n\t\telse {\n\t\t\tif (typeof old === \"string\") element.style.cssText = \"\"\n\t\t\tfor (var key2 in style) {\n\t\t\t\telement.style[key2] = style[key2]\n\t\t\t}\n\t\t\tif (old != null && typeof old !== \"string\") {\n\t\t\t\tfor (var key2 in old) {\n\t\t\t\t\tif (!(key2 in style)) element.style[key2] = \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//event\n\tfunction updateEvent(vnode, key2, value) {\n\t\tvar element = vnode.dom\n\t\tvar callback = typeof onevent !== \"function\" ? value : function(e) {\n\t\t\tvar result = value.call(element, e)\n\t\t\tonevent.call(element, e)\n\t\t\treturn result\n\t\t}\n\t\tif (key2 in element) element[key2] = typeof value === \"function\" ? callback : null\n\t\telse {\n\t\t\tvar eventName = key2.slice(2)\n\t\t\tif (vnode.events === undefined) vnode.events = {}\n\t\t\tif (vnode.events[key2] === callback) return\n\t\t\tif (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false)\n\t\t\tif (typeof value === \"function\") {\n\t\t\t\tvnode.events[key2] = callback\n\t\t\t\telement.addEventListener(eventName, vnode.events[key2], false)\n\t\t\t}\n\t\t}\n\t}\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") source.oninit.call(vnode.state, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(source.oncreate.bind(vnode.state, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(source.onupdate.bind(vnode.state, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tvar forceVnodeUpdate, forceComponentUpdate\n\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") forceVnodeUpdate = vnode.attrs.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeupdate === \"function\") forceComponentUpdate = vnode._state.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (!(forceVnodeUpdate === undefined && forceComponentUpdate === undefined) && !forceVnodeUpdate && !forceComponentUpdate) {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\tfunction render(dom, vnodes) {\n\t\tif (!dom) throw new Error(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = $doc.activeElement\n\t\t// First time0 rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\tif (!Array.isArray(vnodes)) vnodes = [vnodes]\n\t\tupdateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), false, hooks, null, undefined)\n\t\tdom.vnodes = vnodes\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t\tif ($doc.activeElement !== active) active.focus()\n\t}\n\treturn {render: render, setEventCallback: setEventCallback}\n}\nfunction throttle(callback) {\n\t//60fps translates to 16.6ms, round it down since setTimeout requires int\n\tvar time = 16\n\tvar last = 0, pending = null\n\tvar timeout = typeof requestAnimationFrame === \"function\" ? requestAnimationFrame : setTimeout\n\treturn function() {\n\t\tvar now = Date.now()\n\t\tif (last === 0 || now - last >= time) {\n\t\t\tlast = now\n\t\t\tcallback()\n\t\t}\n\t\telse if (pending === null) {\n\t\t\tpending = timeout(function() {\n\t\t\t\tpending = null\n\t\t\t\tcallback()\n\t\t\t\tlast = Date.now()\n\t\t\t}, time - (now - last))\n\t\t}\n\t}\n}\nvar _11 = function($window) {\n\tvar renderService = coreRenderer($window)\n\trenderService.setEventCallback(function(e) {\n\t\tif (e.redraw !== false) redraw()\n\t})\n\tvar callbacks = []\n\tfunction subscribe(key1, callback) {\n\t\tunsubscribe(key1)\n\t\tcallbacks.push(key1, throttle(callback))\n\t}\n\tfunction unsubscribe(key1) {\n\t\tvar index = callbacks.indexOf(key1)\n\t\tif (index > -1) callbacks.splice(index, 2)\n\t}\n\tfunction redraw() {\n\t\tfor (var i = 1; i < callbacks.length; i += 2) {\n\t\t\tcallbacks[i]()\n\t\t}\n\t}\n\treturn {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render}\n}\nvar redrawService = _11(window)\nrequestService.setCompletionCallback(redrawService.redraw)\nvar _16 = function(redrawService0) {\n\treturn function(root, component) {\n\t\tif (component === null) {\n\t\t\tredrawService0.render(root, [])\n\t\t\tredrawService0.unsubscribe(root)\n\t\t\treturn\n\t\t}\n\t\t\n\t\tif (component.view == null && typeof component !== \"function\") throw new Error(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t\n\t\tvar run0 = function() {\n\t\t\tredrawService0.render(root, Vnode(component))\n\t\t}\n\t\tredrawService0.subscribe(root, run0)\n\t\tredrawService0.redraw()\n\t}\n}\nm.mount = _16(redrawService)\nvar Promise = PromisePolyfill\nvar parseQueryString = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\tvar entries = string.split(\"&\"), data0 = {}, counters = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key5 = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\t\tvar levels = key5.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data0\n\t\tif (key5.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tvar isValue = j === levels.length - 1\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key5 = levels.slice(0, j).join()\n\t\t\t\tif (counters[key5] == null) counters[key5] = 0\n\t\t\t\tlevel = counters[key5]++\n\t\t\t}\n\t\t\tif (cursor[level] == null) {\n\t\t\t\tcursor[level] = isValue ? value : isNumber ? [] : {}\n\t\t\t}\n\t\t\tcursor = cursor[level]\n\t\t}\n\t}\n\treturn data0\n}\nvar coreRouter = function($window) {\n\tvar supportsPushState = typeof $window.history.pushState === \"function\"\n\tvar callAsync0 = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction normalize1(fragment0) {\n\t\tvar data = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\tif (fragment0 === \"pathname\" && data[0] !== \"/\") data = \"/\" + data\n\t\treturn data\n\t}\n\tvar asyncId\n\tfunction debounceAsync(callback0) {\n\t\treturn function() {\n\t\t\tif (asyncId != null) return\n\t\t\tasyncId = callAsync0(function() {\n\t\t\t\tasyncId = null\n\t\t\t\tcallback0()\n\t\t\t})\n\t\t}\n\t}\n\tfunction parsePath(path, queryData, hashData) {\n\t\tvar queryIndex = path.indexOf(\"?\")\n\t\tvar hashIndex = path.indexOf(\"#\")\n\t\tvar pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length\n\t\tif (queryIndex > -1) {\n\t\t\tvar queryEnd = hashIndex > -1 ? hashIndex : path.length\n\t\t\tvar queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))\n\t\t\tfor (var key4 in queryParams) queryData[key4] = queryParams[key4]\n\t\t}\n\t\tif (hashIndex > -1) {\n\t\t\tvar hashParams = parseQueryString(path.slice(hashIndex + 1))\n\t\t\tfor (var key4 in hashParams) hashData[key4] = hashParams[key4]\n\t\t}\n\t\treturn path.slice(0, pathEnd)\n\t}\n\tvar router = {prefix: \"#!\"}\n\trouter.getPath = function() {\n\t\tvar type2 = router.prefix.charAt(0)\n\t\tswitch (type2) {\n\t\t\tcase \"#\": return normalize1(\"hash\").slice(router.prefix.length)\n\t\t\tcase \"?\": return normalize1(\"search\").slice(router.prefix.length) + normalize1(\"hash\")\n\t\t\tdefault: return normalize1(\"pathname\").slice(router.prefix.length) + normalize1(\"search\") + normalize1(\"hash\")\n\t\t}\n\t}\n\trouter.setPath = function(path, data, options) {\n\t\tvar queryData = {}, hashData = {}\n\t\tpath = parsePath(path, queryData, hashData)\n\t\tif (data != null) {\n\t\t\tfor (var key4 in data) queryData[key4] = data[key4]\n\t\t\tpath = path.replace(/:([^\\/]+)/g, function(match2, token) {\n\t\t\t\tdelete queryData[token]\n\t\t\t\treturn data[token]\n\t\t\t})\n\t\t}\n\t\tvar query = buildQueryString(queryData)\n\t\tif (query) path += \"?\" + query\n\t\tvar hash = buildQueryString(hashData)\n\t\tif (hash) path += \"#\" + hash\n\t\tif (supportsPushState) {\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\t$window.onpopstate()\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, router.prefix + path)\n\t\t\telse $window.history.pushState(state, title, router.prefix + path)\n\t\t}\n\t\telse $window.location.href = router.prefix + path\n\t}\n\trouter.defineRoutes = function(routes, resolve, reject) {\n\t\tfunction resolveRoute() {\n\t\t\tvar path = router.getPath()\n\t\t\tvar params = {}\n\t\t\tvar pathname = parsePath(path, params, params)\n\t\t\tvar state = $window.history.state\n\t\t\tif (state != null) {\n\t\t\t\tfor (var k in state) params[k] = state[k]\n\t\t\t}\n\t\t\tfor (var route0 in routes) {\n\t\t\t\tvar matcher = new RegExp(\"^\" + route0.replace(/:[^\\/]+?\\.{3}/g, \"(.*?)\").replace(/:[^\\/]+/g, \"([^\\\\/]+)\") + \"\\/?$\")\n\t\t\t\tif (matcher.test(pathname)) {\n\t\t\t\t\tpathname.replace(matcher, function() {\n\t\t\t\t\t\tvar keys = route0.match(/:[^\\/]+/g) || []\n\t\t\t\t\t\tvar values = [].slice.call(arguments, 1, -2)\n\t\t\t\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\t\t\t\tparams[keys[i].replace(/:|\\./g, \"\")] = decodeURIComponent(values[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(routes[route0], params, path, route0)\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(path, params)\n\t\t}\n\t\tif (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)\n\t\telse if (router.prefix.charAt(0) === \"#\") $window.onhashchange = resolveRoute\n\t\tresolveRoute()\n\t}\n\treturn router\n}\nvar _20 = function($window, redrawService0) {\n\tvar routeService = coreRouter($window)\n\tvar identity = function(v) {return v}\n\tvar render1, component, attrs3, currentPath, lastUpdate\n\tvar route = function(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\tvar run1 = function() {\n\t\t\tif (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3)))\n\t\t}\n\t\tvar bail = function(path) {\n\t\t\tif (path !== defaultRoute) routeService.setPath(defaultRoute, null, {replace: true})\n\t\t\telse throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t}\n\t\trouteService.defineRoutes(routes, function(payload, params, path) {\n\t\t\tvar update = lastUpdate = function(routeResolver, comp) {\n\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\tattrs3 = params, currentPath = path, lastUpdate = null\n\t\t\t\trender1 = (routeResolver.render || identity).bind(routeResolver)\n\t\t\t\trun1()\n\t\t\t}\n\t\t\tif (payload.view || typeof payload === \"function\") update({}, payload)\n\t\t\telse {\n\t\t\t\tif (payload.onmatch) {\n\t\t\t\t\tPromise.resolve(payload.onmatch(params, path)).then(function(resolved) {\n\t\t\t\t\t\tupdate(payload, resolved)\n\t\t\t\t\t}, bail)\n\t\t\t\t}\n\t\t\t\telse update(payload, \"div\")\n\t\t\t}\n\t\t}, bail)\n\t\tredrawService0.subscribe(root, run1)\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) options = {replace: true}\n\t\tlastUpdate = null\n\t\trouteService.setPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = function(prefix0) {routeService.prefix = prefix0}\n\troute.link = function(vnode1) {\n\t\tvnode1.dom.setAttribute(\"href\", routeService.prefix + vnode1.attrs.href)\n\t\tvnode1.dom.onclick = function(e) {\n\t\t\tif (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return\n\t\t\te.preventDefault()\n\t\t\te.redraw = false\n\t\t\tvar href = this.getAttribute(\"href\")\n\t\t\tif (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length)\n\t\t\troute.set(href, undefined, undefined)\n\t\t}\n\t}\n\troute.param = function(key3) {\n\t\tif(typeof attrs3 !== \"undefined\" && typeof key3 !== \"undefined\") return attrs3[key3]\n\t\treturn attrs3\n\t}\n\treturn route\n}\nm.route = _20(window, redrawService)\nm.withAttr = function(attrName, callback1, context) {\n\treturn function(e) {\n\t\tcallback1.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName))\n\t}\n}\nvar _28 = coreRenderer(window)\nm.render = _28.render\nm.redraw = redrawService.redraw\nm.request = requestService.request\nm.jsonp = requestService.jsonp\nm.parseQueryString = parseQueryString\nm.buildQueryString = buildQueryString\nm.version = \"1.1.1\"\nm.vnode = Vnode\nif (typeof module !== \"undefined\") module[\"exports\"] = m\nelse window.m = m\n}());\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],8:[function(require,module,exports){\n/*!\n * EventEmitter v5.1.0 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - http://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(this || {}));\n\n},{}]},{},[1]);\n })();"]}
includes/admin/class-admin-ajax.php CHANGED
@@ -28,7 +28,6 @@ class MC4WP_Admin_Ajax {
28
  * Empty lists cache & fetch lists again.
29
  */
30
  public function refresh_mailchimp_lists() {
31
-
32
  if( ! $this->tools->is_user_authorized() ) {
33
  wp_send_json(false);
34
  }
28
  * Empty lists cache & fetch lists again.
29
  */
30
  public function refresh_mailchimp_lists() {
 
31
  if( ! $this->tools->is_user_authorized() ) {
32
  wp_send_json(false);
33
  }
includes/admin/class-admin.php CHANGED
@@ -297,7 +297,7 @@ class MC4WP_Admin {
297
  array(
298
  'mailchimp' => array(
299
  'api_connected' => ! empty( $opts['api_key'] ),
300
- 'lists' => $this->mailchimp->get_cached_lists()
301
  ),
302
  'countries' => MC4WP_Tools::get_countries(),
303
  'i18n' => array(
@@ -305,7 +305,8 @@ class MC4WP_Admin {
305
  'renew_mailchimp_lists' => __( 'Renew MailChimp lists', 'mailchimp-for-wp' ),
306
  'fetching_mailchimp_lists' => __( 'Fetching MailChimp lists', 'mailchimp-for-wp' ),
307
  'fetching_mailchimp_lists_done' => __( 'Done! MailChimp lists renewed.', 'mailchimp-for-wp' ),
308
- 'fetching_mailchimp_lists_can_take_a_while' => __( 'This can take a while if you have many MailChimp lists.', 'mailchimp-for-wp' )
 
309
  )
310
  )
311
  );
@@ -421,7 +422,7 @@ class MC4WP_Admin {
421
  }
422
  }
423
 
424
- $lists = $this->mailchimp->get_cached_lists();
425
  $obfuscated_api_key = mc4wp_obfuscate_string( $opts['api_key'] );
426
  require MC4WP_PLUGIN_DIR . 'includes/views/general-settings.php';
427
  }
297
  array(
298
  'mailchimp' => array(
299
  'api_connected' => ! empty( $opts['api_key'] ),
300
+ 'lists' => $this->mailchimp->get_lists()
301
  ),
302
  'countries' => MC4WP_Tools::get_countries(),
303
  'i18n' => array(
305
  'renew_mailchimp_lists' => __( 'Renew MailChimp lists', 'mailchimp-for-wp' ),
306
  'fetching_mailchimp_lists' => __( 'Fetching MailChimp lists', 'mailchimp-for-wp' ),
307
  'fetching_mailchimp_lists_done' => __( 'Done! MailChimp lists renewed.', 'mailchimp-for-wp' ),
308
+ 'fetching_mailchimp_lists_can_take_a_while' => __( 'This can take a while if you have many MailChimp lists.', 'mailchimp-for-wp' ),
309
+ 'fetching_mailchimp_lists_error' => __( 'Failed to renew your lists. An error occured.', 'mailchimp-for-wp' ),
310
  )
311
  )
312
  );
422
  }
423
  }
424
 
425
+ $lists = $this->mailchimp->get_lists();
426
  $obfuscated_api_key = mc4wp_obfuscate_string( $opts['api_key'] );
427
  require MC4WP_PLUGIN_DIR . 'includes/views/general-settings.php';
428
  }
includes/admin/class-ads.php CHANGED
@@ -99,8 +99,10 @@ class MC4WP_Admin_Ads {
99
  public function admin_sidebar() {
100
 
101
  echo '<div class="mc4wp-box">';
102
- $block = new MC4WP_Remote_Content_Block( 'https://mc4wp.com/api/content-blocks?id=106689' );
103
- echo $block;
 
 
104
  echo '</div>';
105
 
106
  ?>
99
  public function admin_sidebar() {
100
 
101
  echo '<div class="mc4wp-box">';
102
+ echo '<div style="border: 5px dotted #cc4444; padding: 0 20px; background: white;">';
103
+ echo '<h3>MailChimp for WordPress Premium</h3>';
104
+ echo '<p>This plugin has a Premium add-on, unlocking several powerful features. <a href="https://mc4wp.com/features/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=upgrade-box">Have a look at its benefits</a>!</p>';
105
+ echo '</div>';
106
  echo '</div>';
107
 
108
  ?>
includes/admin/class-remote-content-block.php DELETED
@@ -1,135 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Class MC4WP_Remote_Content_Block
5
- *
6
- * @package MailChimp for WordPress
7
- * @author Danny van Kooten
8
- * @ignore
9
- */
10
- class MC4WP_Remote_Content_Block {
11
-
12
- /**
13
- * @var string
14
- */
15
- protected $content = '';
16
-
17
- /**
18
- * @var int
19
- */
20
- protected $cache_time = 7200; // 2 hours
21
-
22
- /**
23
- * @var string
24
- */
25
- protected $cache_key = '';
26
-
27
- /**
28
- * @var string
29
- */
30
- protected $url = '';
31
-
32
- /**
33
- * @param string $url
34
- * @param int $cache_time
35
- * @param string $fallback_content
36
- */
37
- public function __construct( $url, $cache_time = 86400, $fallback_content = '' ) {
38
- $this->url = $url;
39
- $this->cache_time = $cache_time;
40
- $this->content = $fallback_content;
41
-
42
- // don't let this transient key exceed 45 characters total
43
- // use end of url as key because it's likely same domain is used
44
- $this->cache_key = 'mc4wp_remote_content_' . substr( sanitize_key( $this->url ), -23 ); // 44 characters
45
- }
46
-
47
- /**
48
- * @return bool
49
- */
50
- public function fetch() {
51
-
52
- // first, try transient cache
53
- if( $this->fetch_from_cache() ) {
54
- return true;
55
- }
56
-
57
- // no? try remote url
58
- if( $this->fetch_from_remote() ) {
59
- return true;
60
- }
61
-
62
- return false;
63
- }
64
-
65
- /**
66
- * @return bool
67
- */
68
- protected function fetch_from_cache() {
69
- $content = get_transient( $this->cache_key );
70
-
71
- if( ! is_string( $content ) ) {
72
- return false;
73
- }
74
-
75
- $this->content = $content;
76
- return true;
77
- }
78
-
79
- /**
80
- * @return bool
81
- */
82
- protected function fetch_from_remote() {
83
-
84
- $args = array(
85
- 'timeout' => 5,
86
- 'user-agent' => ''
87
- );
88
-
89
- $response = wp_remote_get( $this->url, $args );
90
- $response_code = (int) wp_remote_retrieve_response_code( $response );
91
- if( $response_code !== 200 ) {
92
- return false;
93
- }
94
-
95
- $content = wp_remote_retrieve_body( $response );
96
- if( empty( $content ) ) {
97
- return false;
98
- }
99
-
100
- $this->content = $content;
101
- $this->cache( $content );
102
- return true;
103
- }
104
-
105
- /**
106
- * @return string
107
- */
108
- public function __toString() {
109
- $this->fetch();
110
- return $this->content;
111
- }
112
-
113
- /**
114
- * Output the content block
115
- */
116
- public function output() {
117
- echo $this;
118
- }
119
-
120
- /**
121
- * Refresh content
122
- */
123
- public function refresh() {
124
- delete_transient( $this->cache_key );
125
- }
126
-
127
- /**
128
- * Cache content for the given cache time
129
- *
130
- * @param string $content
131
- */
132
- protected function cache( $content ) {
133
- set_transient( $this->cache_key, $content, $this->cache_time );
134
- }
135
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/class-usage-tracking.php CHANGED
@@ -155,8 +155,8 @@ class MC4WP_Usage_Tracking {
155
  */
156
  protected function get_mailchimp_lists_count() {
157
  $mailchimp = new MC4WP_MailChimp();
158
- $lists = $mailchimp->get_cached_lists();
159
- return count( $lists );
160
  }
161
 
162
 
155
  */
156
  protected function get_mailchimp_lists_count() {
157
  $mailchimp = new MC4WP_MailChimp();
158
+ $list_ids = $mailchimp->get_list_ids( false );
159
+ return count( $list_ids );
160
  }
161
 
162
 
includes/admin/migrations/4.1.2-flush-list-cache.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) or exit;
4
+
5
+ if( function_exists( 'mc4wp_refresh_mailchimp_lists' ) ) {
6
+ mc4wp_refresh_mailchimp_lists();
7
+ }
8
+
9
+ delete_transient( 'mc4wp_mailchimp_lists_v3' );
10
+ delete_option( 'mc4wp_mailchimp_lists_v3_fallback' );
11
+
12
+ wp_schedule_event( strtotime('tomorrow 3 am'), 'daily', 'mc4wp_refresh_mailchimp_lists' );
13
+
includes/class-list-data-mapper.php CHANGED
@@ -46,7 +46,7 @@ class MC4WP_List_Data_Mapper {
46
  $map = array();
47
 
48
  foreach( $this->list_ids as $list_id ) {
49
- $list = $mailchimp->get_list( $list_id );
50
 
51
  if( $list instanceof MC4WP_MailChimp_List ) {
52
  $map[ $list_id ] = $this->map_list( $list );
46
  $map = array();
47
 
48
  foreach( $this->list_ids as $list_id ) {
49
+ $list = $mailchimp->get_list( $list_id, true );
50
 
51
  if( $list instanceof MC4WP_MailChimp_List ) {
52
  $map[ $list_id ] = $this->map_list( $list );
includes/class-mailchimp.php CHANGED
@@ -156,55 +156,43 @@ class MC4WP_MailChimp {
156
  * Empty the Lists cache
157
  */
158
  public function empty_cache() {
159
- delete_transient( 'mc4wp_mailchimp_lists_v3' );
 
 
160
  delete_transient( 'mc4wp_list_counts' );
161
- delete_option( 'mc4wp_mailchimp_lists_v3_fallback' );
 
162
  }
163
 
164
  /**
165
  * Get MailChimp lists from cache.
166
- *
167
- * @param boolean $force Force a result, by hitting remote API.
168
  * @return array
169
  */
170
- public function get_cached_lists( $force = false ) {
171
-
172
- // then, get from option cache
173
- $cached_lists = get_option( 'mc4wp_mailchimp_lists_v3_fallback' );
174
- if( is_array( $cached_lists ) ) {
175
- return $cached_lists;
176
- }
177
-
178
- return $force ? $this->fetch_lists() : array();
179
  }
180
 
181
  /**
182
  * Get MailChimp lists, from cache or remote API.
183
  *
184
- * The following data sources are tried in the following order.
185
- *
186
- * - Transient Cache (5 days)
187
- * - Remote MailChimp API
188
- * - Option Cache (forever)
189
- *
190
  * @return array
191
  */
192
- public function get_lists() {
193
 
194
- // first, try to get from transient.
195
- $lists = get_transient( 'mc4wp_mailchimp_lists_v3' );
196
- if( is_array( $lists ) ) {
197
- return $lists;
198
- }
199
 
200
- // then, fetch from MailChimp API.
201
- $lists = $this->fetch_lists();
202
- if( ! empty( $lists ) ) {
203
- return $lists;
204
- }
 
205
 
206
- // if that failed, get from option cache.
207
- return $this->get_cached_lists();
208
  }
209
 
210
  /**
@@ -213,102 +201,117 @@ class MC4WP_MailChimp {
213
  * @return MC4WP_MailChimp_List
214
  */
215
  private function fetch_list( $list_id ) {
216
- $list_data = $this->api->get_list( $list_id, array( 'fields' => 'id,name,stats' ) );
217
-
218
- // create local object
219
- $list = new MC4WP_MailChimp_List( $list_data->id, $list_data->name );
220
- $list->subscriber_count = $list_data->stats->member_count;
221
-
222
- // parse web_id from the "link" response header
223
- $headers = $this->api->get_last_response_headers();
224
- $link_header = $headers['link'];
225
- preg_match( '/\?id=(\d+)/', $link_header, $matches );
226
- if( ! empty( $matches[1] ) ) {
227
- $list->web_id = $matches[1];
228
- };
229
-
230
- // get merge fields (if any)
231
- if( $list_data->stats->merge_field_count > 0 ) {
232
- $field_data = $this->api->get_list_merge_fields( $list->id, array( 'count' => 100, 'fields' => 'merge_fields.name,merge_fields.tag,merge_fields.type,merge_fields.required,merge_fields.default_value,merge_fields.options,merge_fields.public' ) );
233
-
234
- // hydrate data into object
235
- foreach( $field_data as $data ) {
236
- $object = MC4WP_MailChimp_Merge_Field::from_data( $data );
237
- $list->merge_fields[] = $object;
238
- }
239
- }
240
-
241
- // get interest categories
242
- $interest_categories_data = $this->api->get_list_interest_categories( $list->id, array( 'count' => 100, 'fields' => 'categories.id,categories.title,categories.type' ) );
243
- foreach( $interest_categories_data as $interest_category_data ) {
244
- $interest_category = MC4WP_MailChimp_Interest_Category::from_data( $interest_category_data );
245
 
246
- // fetch groups for this interest
247
- $interests_data = $this->api->get_list_interest_category_interests( $list->id, $interest_category->id, array( 'count' => 100, 'fields' => 'interests.id,interests.name') );
248
- foreach( $interests_data as $interest_data ) {
249
- $interest_category->interests[ $interest_data->id ] = $interest_data->name;
250
- }
251
 
252
- $list->interest_categories[] = $interest_category;
253
- }
 
 
 
254
 
 
 
 
 
 
 
 
 
255
  return $list;
256
- }
257
-
258
-
259
 
260
- /**
261
- * @return array
262
- */
263
- public function fetch_lists() {
 
 
 
 
264
 
265
- // try to increase time limit as this can take a while
266
- @set_time_limit(600);
 
 
 
 
267
 
268
- try{
269
- $lists_data = $this->api->get_lists( array( 'count' => 500, 'fields' => 'lists.id' ) );
 
 
 
 
270
  } catch( MC4WP_API_Exception $e ) {
271
  return array();
272
  }
273
 
274
- $list_ids = wp_list_pluck( $lists_data, 'id' );
275
 
276
- /**
277
- * @var MC4WP_MailChimp_List[]
278
- */
279
- $lists = array();
280
- foreach ( $list_ids as $list_id ) {
281
- try {
282
- $lists["{$list_id}"] = $this->fetch_list( $list_id );
283
- } catch( MC4WP_API_Exception $e ) {
284
- continue;
285
- }
286
- }
287
 
288
- // store lists in transients
289
- if( ! empty( $lists ) ) {
290
- set_transient( 'mc4wp_mailchimp_lists_v3', $lists, ( 60 * 60 * 24 * 5 ) ); // 5 days
291
- update_option( 'mc4wp_mailchimp_lists_v3_fallback', $lists, false ); // forever
292
- }
 
 
 
 
 
293
 
294
- return $lists;
 
 
 
295
  }
296
 
297
  /**
298
  * Get a given MailChimp list
299
  *
300
  * @param string $list_id
301
- *
302
  * @return MC4WP_MailChimp_List
303
  */
304
- public function get_list( $list_id ) {
305
- $lists = $this->get_cached_lists( true );
 
 
 
 
306
 
307
- if( isset( $lists["{$list_id}"] ) ) {
308
- return $lists["{$list_id}"];
309
  }
310
 
311
- return new MC4WP_MailChimp_List( '', 'Unknown List' );
312
  }
313
 
314
  /**
156
  * Empty the Lists cache
157
  */
158
  public function empty_cache() {
159
+ global $wpdb;
160
+ $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'mc4wp_mailchimp_list_%'");
161
+
162
  delete_transient( 'mc4wp_list_counts' );
163
+
164
+ /* deprecated */
165
  }
166
 
167
  /**
168
  * Get MailChimp lists from cache.
169
+ *
170
+ * @param boolean deprecated parameter.
171
  * @return array
172
  */
173
+ public function get_cached_lists() {
174
+ return $this->get_lists( false );
 
 
 
 
 
 
 
175
  }
176
 
177
  /**
178
  * Get MailChimp lists, from cache or remote API.
179
  *
180
+ * @param boolean $force Whether to force a result by hitting MailChimp API
 
 
 
 
 
181
  * @return array
182
  */
183
+ public function get_lists( $force = true ) {
184
 
185
+ // first, get all list id's
186
+ $list_ids = $this->get_list_ids( $force );
 
 
 
187
 
188
+ // then, fill $lists array with individual list details
189
+ $lists = array();
190
+ foreach( $list_ids as $list_id ) {
191
+ $list = $this->get_list( $list_id, $force );
192
+ $lists["{$list_id}"] = $list;
193
+ }
194
 
195
+ return $lists;
 
196
  }
197
 
198
  /**
201
  * @return MC4WP_MailChimp_List
202
  */
203
  private function fetch_list( $list_id ) {
204
+ try{
205
+ $list_data = $this->api->get_list( $list_id, array( 'fields' => 'id,name,stats,web_id' ) );
206
+
207
+ // create local object
208
+ $list = new MC4WP_MailChimp_List( $list_data->id, $list_data->name );
209
+ $list->subscriber_count = $list_data->stats->member_count;
210
+ $list->web_id = $list_data->web_id;
211
+
212
+ // get merge fields (if any)
213
+ if( $list_data->stats->merge_field_count > 0 ) {
214
+ $field_data = $this->api->get_list_merge_fields( $list->id, array( 'count' => 100, 'fields' => 'merge_fields.name,merge_fields.tag,merge_fields.type,merge_fields.required,merge_fields.default_value,merge_fields.options,merge_fields.public' ) );
215
+
216
+ // hydrate data into object
217
+ foreach( $field_data as $data ) {
218
+ $object = MC4WP_MailChimp_Merge_Field::from_data( $data );
219
+ $list->merge_fields[] = $object;
220
+ }
221
+ }
 
 
 
 
 
 
 
 
 
 
 
222
 
223
+ // get interest categories
224
+ $interest_categories_data = $this->api->get_list_interest_categories( $list->id, array( 'count' => 100, 'fields' => 'categories.id,categories.title,categories.type' ) );
225
+ foreach( $interest_categories_data as $interest_category_data ) {
226
+ $interest_category = MC4WP_MailChimp_Interest_Category::from_data( $interest_category_data );
 
227
 
228
+ // fetch groups for this interest
229
+ $interests_data = $this->api->get_list_interest_category_interests( $list->id, $interest_category->id, array( 'count' => 100, 'fields' => 'interests.id,interests.name') );
230
+ foreach( $interests_data as $interest_data ) {
231
+ $interest_category->interests[ $interest_data->id ] = $interest_data->name;
232
+ }
233
 
234
+ $list->interest_categories[] = $interest_category;
235
+ }
236
+ } catch( MC4WP_API_Exception $e ) {
237
+ return null;
238
+ }
239
+
240
+ // save in option
241
+ update_option( 'mc4wp_mailchimp_list_' . $list_id, $list, false );
242
  return $list;
243
+ }
 
 
244
 
245
+ /**
246
+ * Get MailChimp list ID's
247
+ *
248
+ * @param bool $force Force result by hitting MailChimp API
249
+ * @return array
250
+ */
251
+ public function get_list_ids( $force = false ) {
252
+ $list_ids = (array) get_option( 'mc4wp_mailchimp_list_ids', array() );
253
 
254
+ if( empty( $list_ids ) && $force ) {
255
+ $list_ids = $this->fetch_list_ids();
256
+ }
257
+
258
+ return $list_ids;
259
+ }
260
 
261
+ /**
262
+ * @return array
263
+ */
264
+ public function fetch_list_ids() {
265
+ try{
266
+ $lists_data = $this->api->get_lists( array( 'count' => 200, 'fields' => 'lists.id' ) );
267
  } catch( MC4WP_API_Exception $e ) {
268
  return array();
269
  }
270
 
271
+ $list_ids = wp_list_pluck( $lists_data, 'id' );
272
 
273
+ // store list id's
274
+ update_option( 'mc4wp_mailchimp_list_ids', $list_ids, false );
275
+
276
+ return $list_ids;
277
+ }
 
 
 
 
 
 
278
 
279
+ /**
280
+ * Fetch list ID's + lists from MailChimp.
281
+ */
282
+ public function fetch_lists() {
283
+ // try to increase time limit as this can take a while
284
+ @set_time_limit(300);
285
+ $list_ids = $this->fetch_list_ids();
286
+
287
+ // randomize array order
288
+ shuffle( $list_ids );
289
 
290
+ // fetch individual list details
291
+ foreach ( $list_ids as $list_id ) {
292
+ $list = $this->fetch_list( $list_id );
293
+ }
294
  }
295
 
296
  /**
297
  * Get a given MailChimp list
298
  *
299
  * @param string $list_id
300
+ * @param bool $force Whether to force a result by hitting remote API
301
  * @return MC4WP_MailChimp_List
302
  */
303
+ public function get_list( $list_id, $force = false ) {
304
+ $list = get_option( 'mc4wp_mailchimp_list_' . $list_id );
305
+
306
+ if( empty( $list ) && $force ) {
307
+ $list = $this->fetch_list( $list_id );
308
+ }
309
 
310
+ if( empty( $list ) ) {
311
+ return new MC4WP_MailChimp_List( '', 'Unknown List' );
312
  }
313
 
314
+ return $list;
315
  }
316
 
317
  /**
includes/class-visitor-tracking.php DELETED
@@ -1,100 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Class MC4WP_Visitor_Tracking
5
- *
6
- * @ignore
7
- * @access private
8
- * @deprecated 3.1
9
- */
10
- class MC4WP_Visitor_Tracking {
11
-
12
- /**
13
- * @var array
14
- */
15
- protected $data;
16
-
17
- /**
18
- * @const string
19
- */
20
- const COOKIE_NAME = '_mc4wp';
21
-
22
- /**
23
- * Add hooks
24
- *
25
- * @todo Hook into integration success as well
26
- */
27
- public function add_hooks() {
28
- add_action( 'mc4wp_form_subscribed', array( $this, 'on_form_success' ) );
29
- }
30
-
31
- /**
32
- * @hooked `mc4wp_form_subscribed`
33
- * @param MC4WP_Form $form
34
- */
35
- public function on_form_success( MC4WP_Form $form ) {
36
- $data = $form->get_data();
37
- $this->save( $data );
38
- }
39
-
40
- /**
41
- * @param string $key
42
- * @param null $default
43
- * @return mixed
44
- */
45
- public function get_field( $key, $default = null ) {
46
- $data = $this->load();
47
-
48
- if( isset( $data[ $key ] ) ) {
49
- return $data[ $key ];
50
- }
51
-
52
- return $default;
53
- }
54
-
55
- /**
56
- * @param array $data
57
- *
58
- * @todo Now, all previous is data is overwritten whenever this method is called.
59
- */
60
- public function save( array $data ) {
61
- $this->data = $data;
62
-
63
- $timestamp = strtotime( '+90 days' );
64
-
65
- /**
66
- * Filters the total expiration time for the tracking cookie.
67
- *
68
- * Defaults to 90 days in the future.
69
- *
70
- * @since 3.0
71
- * @param int $timestamp
72
- * @ignore
73
- */
74
- $expiration_time = apply_filters( 'mc4wp_cookie_expiration_time', $timestamp );
75
-
76
- setcookie( self::COOKIE_NAME, json_encode( $data ), $expiration_time, '/' );
77
- }
78
-
79
- /**
80
- * Load stored data from cookie.
81
- */
82
- public function load() {
83
-
84
- if( empty( $this->data ) ) {
85
- if( ! empty( $_COOKIE[ self::COOKIE_NAME ] ) ) {
86
- $raw = stripslashes( $_COOKIE[ self::COOKIE_NAME ] );
87
- $data = json_decode( $raw, true );
88
-
89
- if( is_array( $data ) ) {
90
- $this->data = mc4wp_sanitize_deep( $data );
91
- }
92
-
93
- }
94
- }
95
-
96
- return $this->data;
97
- }
98
-
99
-
100
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/forms/class-form-listener.php CHANGED
@@ -26,12 +26,14 @@ class MC4WP_Form_Listener {
26
  */
27
  public function listen( MC4WP_Request $request ) {
28
 
29
- if( ! $request->post->get( '_mc4wp_form_id' ) ) {
 
30
  return false;
31
  }
32
 
 
33
  try {
34
- $form = mc4wp_get_form( $request->post->get( '_mc4wp_form_id' ) );
35
  } catch( Exception $e ) {
36
  return false;
37
  }
26
  */
27
  public function listen( MC4WP_Request $request ) {
28
 
29
+ $form_id = $request->post->get( '_mc4wp_form_id' );
30
+ if( empty( $form_id ) ) {
31
  return false;
32
  }
33
 
34
+ // get form instance
35
  try {
36
+ $form = mc4wp_get_form( $form_id );
37
  } catch( Exception $e ) {
38
  return false;
39
  }
includes/forms/class-output-manager.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
 
 
3
  /**
4
  * Class MC4WP_Form_Output_Manager
5
  *
1
  <?php
2
 
3
+
4
  /**
5
  * Class MC4WP_Form_Output_Manager
6
  *
includes/forms/functions.php CHANGED
@@ -26,7 +26,7 @@ function mc4wp_get_form( $form_id = 0 ) {
26
  function mc4wp_get_forms( array $args = array() ) {
27
  $default_args = array(
28
  'post_status' => 'publish',
29
- 'numberposts' => -1
30
  );
31
  $args = array_merge( $default_args, $args );
32
  $args['post_type'] = 'mc4wp-form';
26
  function mc4wp_get_forms( array $args = array() ) {
27
  $default_args = array(
28
  'post_status' => 'publish',
29
+ 'numberposts' => -1,
30
  );
31
  $args = array_merge( $default_args, $args );
32
  $args['post_type'] = 'mc4wp-form';
integrations/ninja-forms/class-action.php CHANGED
@@ -102,7 +102,7 @@ final class MC4WP_Ninja_Forms_Action extends NF_Abstracts_ActionNewsletter
102
  $list_id = $action_settings['newsletter_list'];
103
  $email_address = $action_settings['EMAIL'];
104
  $mailchimp = new MC4WP_MailChimp();
105
- $list = $mailchimp->get_list( $list_id );
106
 
107
  $merge_fields = array();
108
  foreach( $list->merge_fields as $merge_field ) {
@@ -135,7 +135,7 @@ final class MC4WP_Ninja_Forms_Action extends NF_Abstracts_ActionNewsletter
135
  $mailchimp = new MC4WP_MailChimp();
136
 
137
  /** @var MC4WP_MailChimp_List[] $lists */
138
- $lists = $mailchimp->get_cached_lists();
139
  $return = array();
140
 
141
  foreach( $lists as $list ) {
102
  $list_id = $action_settings['newsletter_list'];
103
  $email_address = $action_settings['EMAIL'];
104
  $mailchimp = new MC4WP_MailChimp();
105
+ $list = $mailchimp->get_list( $list_id, true );
106
 
107
  $merge_fields = array();
108
  foreach( $list->merge_fields as $merge_field ) {
135
  $mailchimp = new MC4WP_MailChimp();
136
 
137
  /** @var MC4WP_MailChimp_List[] $lists */
138
+ $lists = $mailchimp->get_lists();
139
  $return = array();
140
 
141
  foreach( $lists as $list ) {
languages/mailchimp-for-wp-da_DK.mo CHANGED
Binary file
languages/mailchimp-for-wp-da_DK.po CHANGED
@@ -1,74 +1,28 @@
1
- # Copyright (C) 2015 MailChimp for WordPress
2
- # This file is distributed under the same license as the MailChimp for WordPress package.
3
  # Translators:
 
4
  # Mathias Brask <seo@bravocom.dk>, 2015
5
  # Rasmus Larsen <rasmus@rblarsen.dk>, 2014
6
  # Ronni Andersen <ronniva@gmail.com>, 2015
7
  msgid ""
8
  msgstr ""
9
  "Project-Id-Version: MailChimp for WordPress\n"
10
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mailchimp-for-wp\n"
11
- "POT-Creation-Date: 2015-11-30 10:15:18+00:00\n"
12
- "PO-Revision-Date: 2015-12-08 12:27+0000\n"
13
- "Last-Translator: Ronni Andersen <ronniva@gmail.com>\n"
14
  "Language-Team: Danish (Denmark) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/da_DK/)\n"
15
  "MIME-Version: 1.0\n"
16
  "Content-Type: text/plain; charset=UTF-8\n"
17
  "Content-Transfer-Encoding: 8bit\n"
18
  "Language: da_DK\n"
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 
 
 
 
20
 
21
- #: config/default-form-content.php:3
22
- msgid "Email address"
23
- msgstr "Email adresse"
24
-
25
- #: config/default-form-content.php:4
26
- msgid "Your email address"
27
- msgstr "Din email adresse"
28
-
29
- #: config/default-form-content.php:5
30
- msgid "Sign up"
31
- msgstr "Tilmeld"
32
-
33
- #: config/default-form-messages.php:5
34
- msgid ""
35
- "Thank you, your sign-up request was successful! Please check your email "
36
- "inbox to confirm."
37
- msgstr "TAK! Du er nu tilmeldt nyhedsbrevet! Tjek venligst din mail."
38
-
39
- #: config/default-form-messages.php:9
40
- msgid "Oops. Something went wrong. Please try again later."
41
- msgstr "Oops. Noget gik galt. Prøv venligst igen senere."
42
-
43
- #: config/default-form-messages.php:13
44
- msgid "Please provide a valid email address."
45
- msgstr "Venligst udfyld en gyldig email adresse."
46
-
47
- #: config/default-form-messages.php:17
48
- msgid "Given email address is already subscribed, thank you!"
49
- msgstr "Prøv lige en anden email adresse, denne er allerede tilmeldt."
50
-
51
- #: config/default-form-messages.php:21
52
- msgid "Please fill in the required fields."
53
- msgstr "Venligst udfyld de påkrævede felter."
54
-
55
- #: config/default-form-messages.php:25
56
- msgid "You were successfully unsubscribed."
57
- msgstr "Du er nu afmeldt nyhedsbrevet."
58
-
59
- #: config/default-form-messages.php:29
60
- msgid "Given email address is not subscribed."
61
- msgstr "Denne mail adresse er ikke tilmeldt nyhedsbrevet."
62
-
63
- #: config/default-form-messages.php:33
64
- msgid "Please select at least one list."
65
- msgstr "Vælg venligst mindst én liste."
66
-
67
- #: config/default-integration-options.php:5
68
- msgid "Sign me up for the newsletter!"
69
- msgstr "Tilmeld mig nyhedsbrevet!"
70
-
71
- #: includes/admin/class-admin-texts.php:62
72
  #: includes/forms/views/edit-form.php:6
73
  msgid "Settings"
74
  msgstr "Indstillinger"
@@ -77,141 +31,388 @@ msgstr "Indstillinger"
77
  msgid "Documentation"
78
  msgstr "Dokumentation"
79
 
80
- #: includes/admin/class-admin.php:167
81
  msgid ""
82
  "Success! The cached configuration for your MailChimp lists has been renewed."
83
  msgstr "Succes! Den cachede konfiguration for din MailChimp lister er blevet fornyet."
84
 
85
- #: includes/admin/class-admin.php:257
86
  msgid ""
87
  "This is a pro-only feature. Please upgrade to the premium version to be able"
88
  " to use it."
89
  msgstr "Dette er en PRO funktion. Opgrader til premium-version for at bruge dette."
90
 
91
- #: includes/admin/class-admin.php:323 includes/views/general-settings.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  msgid "MailChimp API Settings"
93
  msgstr "MailChimp API indstillinger"
94
 
95
- #: includes/admin/class-admin.php:324
96
- #: integrations/ninja-forms/class-ninja-forms.php:34
97
  msgid "MailChimp"
98
  msgstr "MailChimp"
99
 
100
- #: includes/admin/class-ads.php:33
101
- msgid "Upgrade to MailChimp for WordPress Pro"
102
- msgstr "Opgrader til Mailchimp for Wordpress Pro"
 
 
 
 
 
 
 
 
 
103
 
104
- #: includes/admin/class-ads.php:41
105
  msgid ""
106
- "Enjoying this plugin? <a href=\"%s\">Purchase our bundle of premium "
107
- "features</a> for an even better plugin."
108
- msgstr "Nyder du dette plugin? <a href=“%s”>Køb vores pakke af premium-funktioner</a> for et endnu bedre plugin."
109
 
110
- #: includes/admin/class-ads.php:62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  msgid "More subscribers, better newsletters."
112
  msgstr "Flere abonnenter, bedre nyhedsbreve."
113
 
114
- #: includes/admin/class-ads.php:63
115
  msgid ""
116
  "Learn how to best grow your lists & write better emails by subscribing to "
117
  "our monthly tips."
118
  msgstr "Lær hvordan du bedst få dine lister til at vokse og skriver bedre mails ved at abonnere på vores månedlige tips."
119
 
120
- #: includes/admin/class-ads.php:66
121
  msgid "Email Address"
122
  msgstr "E-mail adresse"
123
 
124
- #: includes/admin/class-ads.php:70
125
  msgid "First Name"
126
  msgstr "Fornavn"
127
 
128
- #: includes/admin/class-ads.php:77
129
  msgid "Subscribe"
130
  msgstr "Tilmeld"
131
 
132
- #: includes/admin/class-usage-tracking.php:57
133
- msgid "Once a month"
134
- msgstr "En gang om måneden"
 
 
 
 
 
 
 
 
135
 
136
- #: includes/admin/migrations/3.0-form-1-post-type.php:35
137
- msgid "Default sign-up form"
138
- msgstr "Standard tilmeldings formular"
 
 
 
 
 
 
 
 
 
 
 
 
139
 
140
- #: includes/class-api.php:83
141
  msgid "Read more about common connectivity issues."
142
  msgstr "Læs mere om almindelige forbindelsesproblemer."
143
 
144
- #: includes/forms/class-admin.php:71 includes/forms/class-admin.php:72
145
- #: includes/forms/views/edit-form.php:17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  msgid "Forms"
147
  msgstr "Formularer"
148
 
149
- #: includes/forms/class-admin.php:101 includes/forms/class-admin.php:176
150
  msgid "<strong>Success!</strong> Form successfully saved."
151
  msgstr "<strong>Succes!</strong> Formular er nu gemt."
152
 
153
- #: includes/forms/class-admin.php:176
154
  msgid "Preview form"
155
  msgstr "Vis formular"
156
 
157
- #: includes/forms/class-admin.php:279
158
- msgid "Form not found."
159
- msgstr "Formular ikke fundet"
160
 
161
- #: includes/forms/class-admin.php:281
162
- msgid "Go back"
163
- msgstr "Gå tilbage"
164
 
165
- #: includes/forms/class-form-previewer.php:162
166
  msgid "Form preview"
167
  msgstr "Vis formular"
168
 
169
- #: includes/forms/class-form-tags.php:51
170
  msgid "Replaced with the form response (error or success messages)."
171
  msgstr "Erstattet med formularens svar (fejl eller succes meddelelser)."
172
 
173
- #: includes/forms/class-form-tags.php:56
174
  msgid "Data from the URL or a submitted form."
175
  msgstr "Data fra URL eller en indsendt formular."
176
 
177
- #: includes/forms/class-form-tags.php:62
 
 
 
 
178
  #: includes/integrations/class-integration-tags.php:45
179
  msgid "Replaced with the number of subscribers on the selected list(s)"
180
  msgstr "Erstattet med antallet af abonnenter på den valgte liste(r)"
181
 
182
- #: includes/forms/class-form-tags.php:67
183
  msgid "The email address of the current visitor (if known)."
184
  msgstr "Email-adressen på den aktuelle besøgende (hvis kendt)."
185
 
186
- #: includes/forms/class-form-tags.php:72
187
  msgid "The URL of the page."
188
  msgstr "Sidens URL"
189
 
190
- #: includes/forms/class-form-tags.php:77
191
  msgid "The path of the page."
192
  msgstr "Sidens sti"
193
 
194
- #: includes/forms/class-form-tags.php:82
195
  msgid "The current date. Example: %s."
196
  msgstr "Den aktuelle dato. Eksempel: %s."
197
 
198
- #: includes/forms/class-form-tags.php:87
199
  msgid "The current time. Example: %s."
200
  msgstr "Den aktuelle tid. Eksempel: %s."
201
 
202
- #: includes/forms/class-form-tags.php:92
203
  msgid "The site's language. Example: %s."
204
  msgstr "Webstedets sprog. Eksempel: %s."
205
 
206
- #: includes/forms/class-form-tags.php:97
207
  msgid "The visitor's IP address. Example: %s."
208
  msgstr "Den besøgendes IP-adresse. Eksempel: %s."
209
 
210
- #: includes/forms/class-form-tags.php:102
211
  msgid "The property of the currently logged-in user."
212
  msgstr "Ejet af den bruger som er logget på."
213
 
214
- #: includes/forms/class-form.php:128
 
 
 
 
215
  msgid "There is no form with ID %d, perhaps it was deleted?"
216
  msgstr "Der er ingen formular med ID %d, måske er den blev slettet?"
217
 
@@ -219,10 +420,6 @@ msgstr "Der er ingen formular med ID %d, måske er den blev slettet?"
219
  msgid "Newsletter"
220
  msgstr "Nyhedsbrev"
221
 
222
- #: includes/forms/class-widget.php:30
223
- msgid "MailChimp Sign-Up Form"
224
- msgstr "MailChimp tilmeldings formular"
225
-
226
  #: includes/forms/class-widget.php:32
227
  msgid "Displays your MailChimp for WordPress sign-up form"
228
  msgstr "Viser din MailChimp for WordPress tilmeldings formular"
@@ -237,7 +434,114 @@ msgid ""
237
  " form settings</a>."
238
  msgstr "Du kan redigere din tilmeldings formular i <a href=“%s”>MailChimp til WordPress farmular indstillinger.</a>"
239
 
240
- #: includes/forms/views/add-form.php:10 includes/forms/views/add-form.php:60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
  msgid "Add new form"
242
  msgstr "Tilføj ny formular"
243
 
@@ -265,38 +569,266 @@ msgstr "Felter"
265
  msgid "Messages"
266
  msgstr "Beskeder"
267
 
268
- #: includes/forms/views/edit-form.php:7
269
- msgid "Appearance"
270
- msgstr "Udseende"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
 
272
- #: includes/forms/views/edit-form.php:15
273
- #: includes/integrations/views/integration-settings.php:8
274
- #: includes/integrations/views/integrations.php:7
275
- #: includes/views/general-settings.php:7
276
- msgid "You are here: "
277
- msgstr "Du er her:"
278
 
279
- #: includes/forms/views/edit-form.php:27
280
- msgid "Edit Form"
281
- msgstr "Redigér formular"
282
 
283
- #: includes/forms/views/edit-form.php:45
284
- msgid "Enter form title here"
285
- msgstr "Indtast formular titel her"
286
 
287
- #: includes/forms/views/edit-form.php:46
288
- msgid "Enter the title of your sign-up form"
289
- msgstr "Indtast titlen på din tilmeldings formular"
290
 
291
- #: includes/forms/views/edit-form.php:54
292
- msgid "Get shortcode"
293
- msgstr " “shortcode”"
294
 
295
- #: includes/forms/views/edit-form.php:59
296
- msgid "Preview this form"
297
- msgstr "Vis formular"
298
 
299
- #: includes/forms/views/parts/add-fields-help.php:4
300
  #: includes/forms/views/tabs/form-fields.php:10
301
  msgid "Add more fields"
302
  msgstr "Tilføj flere felter"
@@ -333,11 +865,6 @@ msgid ""
333
  "changes."
334
  msgstr "Klik på følgende knap for at få MailChimp for WordPress indsamle dine ændringer."
335
 
336
- #: includes/forms/views/parts/add-fields-help.php:43
337
- #: includes/views/parts/lists-overview.php:8
338
- msgid "Renew MailChimp lists"
339
- msgstr "Forny MailChimp lister"
340
-
341
  #: includes/forms/views/parts/dynamic-content-tags.php:6
342
  msgid "Add dynamic form variable"
343
  msgstr "Tilføj dynamisk formular variabel"
@@ -410,87 +937,101 @@ msgstr "Formular Felter"
410
  msgid "Enter the HTML code for your form fields.."
411
  msgstr "Indtast HTML-kode til dit formularfelter .."
412
 
413
- #: includes/forms/views/tabs/form-fields.php:27
414
- msgid "Your form is missing the following (required) form fields:"
415
- msgstr "Din formular mangler følgende (påkrævet) formular felter:"
416
-
417
- #: includes/forms/views/tabs/form-fields.php:34
418
  msgid ""
419
  "Use the shortcode %s to display this form inside a post, page or text "
420
  "widget."
421
  msgstr "Brug denne shortcode%s for at vise denne formular i en post, side eller tekst widget."
422
 
423
- #: includes/forms/views/tabs/form-messages.php:3
424
  msgid "Form Messages"
425
  msgstr "Formular beskeder"
426
 
427
- #: includes/forms/views/tabs/form-messages.php:10
428
  msgid "Successfully subscribed"
429
  msgstr "Du er nu tilmeldt"
430
 
431
- #: includes/forms/views/tabs/form-messages.php:13
432
  msgid ""
433
  "The text that shows when an email address is successfully subscribed to the "
434
  "selected list(s)."
435
  msgstr "Den tekst, der viser, hvornår en email adresse er korrekt tilmeldt den valgte liste(r)."
436
 
437
- #: includes/forms/views/tabs/form-messages.php:17
438
  msgid "Invalid email address"
439
  msgstr "Ugyldig email adresse"
440
 
441
- #: includes/forms/views/tabs/form-messages.php:20
442
  msgid "The text that shows when an invalid email address is given."
443
  msgstr "Den tekst, der viser, hvornår en ugyldig email adresse er givet."
444
 
445
- #: includes/forms/views/tabs/form-messages.php:24
446
  msgid "Required field missing"
447
  msgstr "Påkrævet felt mangler"
448
 
449
- #: includes/forms/views/tabs/form-messages.php:27
450
  msgid ""
451
  "The text that shows when a required field for the selected list(s) is "
452
  "missing."
453
  msgstr "Den tekst, der viser, hvornår et obligatorisk felt for den valgte liste(r) mangler."
454
 
455
- #: includes/forms/views/tabs/form-messages.php:31
456
  msgid "Already subscribed"
457
  msgstr "Allerede tilmeldt"
458
 
459
- #: includes/forms/views/tabs/form-messages.php:34
460
  msgid ""
461
  "The text that shows when the given email is already subscribed to the "
462
  "selected list(s)."
463
  msgstr "Den tekst, der viser, hvornår en email adresse allerede er tilmeldt den valgte liste(r)."
464
 
465
- #: includes/forms/views/tabs/form-messages.php:38
466
  msgid "General error"
467
  msgstr "Generel fejl"
468
 
469
- #: includes/forms/views/tabs/form-messages.php:41
470
  msgid "The text that shows when a general error occured."
471
  msgstr "Den tekst, der viser, at en generel fejl er opstået."
472
 
473
- #: includes/forms/views/tabs/form-messages.php:45
474
  msgid "Unsubscribed"
475
  msgstr "Afmeldt"
476
 
477
- #: includes/forms/views/tabs/form-messages.php:48
478
  msgid ""
479
  "When using the unsubscribe method, this is the text that shows when the "
480
  "given email address is successfully unsubscribed from the selected list(s)."
481
  msgstr "Ved brug af “afmeld metoden”, er dette den tekst, der viser, hvornår den givne e-mail adresse er afmeldt den valgte liste (r)."
482
 
483
- #: includes/forms/views/tabs/form-messages.php:52
484
  msgid "Not subscribed"
485
  msgstr "Ikke tilmeldt"
486
 
487
- #: includes/forms/views/tabs/form-messages.php:55
488
  msgid ""
489
  "When using the unsubscribe method, this is the text that shows when the "
490
  "given email address is not on the selected list(s)."
491
  msgstr "Ved brug af “afmelde metode”, er dette den tekst, der viser, hvis den givne email adressen ikke er på den valgte liste (r)."
492
 
493
- #: includes/forms/views/tabs/form-messages.php:64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
494
  msgid "HTML tags like %s are allowed in the message fields."
495
  msgstr "HTML-tags som %s er tilladt i besked felterne."
496
 
@@ -502,379 +1043,52 @@ msgstr "Formular indstillinger"
502
  msgid "MailChimp specific settings"
503
  msgstr "MailChimp specifikke indstillinger"
504
 
505
- #: includes/forms/views/tabs/form-settings.php:12
506
  msgid "Lists this form subscribes to"
507
  msgstr "Lister denne formular abonnerer på"
508
 
509
- #: includes/forms/views/tabs/form-settings.php:15
510
- #: includes/integrations/views/integration-settings.php:93
511
- msgid "No lists found, <a href=\"%s\">are you connected to MailChimp</a>?"
512
- msgstr "Ingen lister fundet, <a href=“%s”>er du forbundet til MailChimp?</a>"
513
-
514
- #: includes/forms/views/tabs/form-settings.php:29
515
  msgid ""
516
  "Select the list(s) to which people who submit this form should be "
517
  "subscribed."
518
  msgstr "Vælg liste(r), som folk, der indsender denne formular skal tilmeldes på."
519
 
520
- #: includes/forms/views/tabs/form-settings.php:35
521
  msgid "Use double opt-in?"
522
  msgstr "Brug dobbelt opt-in?"
523
 
524
- #: includes/forms/views/tabs/form-settings.php:39
525
- #: includes/forms/views/tabs/form-settings.php:54
526
- #: includes/forms/views/tabs/form-settings.php:69
527
- #: includes/forms/views/tabs/form-settings.php:85
528
- #: includes/forms/views/tabs/form-settings.php:115
529
- #: includes/integrations/views/integration-settings.php:53
530
- #: includes/integrations/views/integration-settings.php:66
531
- #: includes/integrations/views/integration-settings.php:117
532
- #: includes/integrations/views/integration-settings.php:129
533
- #: includes/integrations/views/integration-settings.php:142
534
- #: includes/integrations/views/integration-settings.php:163
535
- #: includes/integrations/views/integration-settings.php:180
536
- #: includes/integrations/views/integration-settings.php:199
537
- #: integrations/contact-form-7/class-contact-form-7.php:69
538
- msgid "Yes"
539
- msgstr "Ja"
540
-
541
- #: includes/forms/views/tabs/form-settings.php:43
542
- #: includes/forms/views/tabs/form-settings.php:58
543
- #: includes/forms/views/tabs/form-settings.php:73
544
- #: includes/forms/views/tabs/form-settings.php:89
545
- #: includes/forms/views/tabs/form-settings.php:119
546
- #: includes/integrations/views/integration-settings.php:54
547
- #: includes/integrations/views/integration-settings.php:67
548
- #: includes/integrations/views/integration-settings.php:118
549
- #: includes/integrations/views/integration-settings.php:130
550
- #: includes/integrations/views/integration-settings.php:146
551
- #: includes/integrations/views/integration-settings.php:167
552
- #: includes/integrations/views/integration-settings.php:184
553
- #: includes/integrations/views/integration-settings.php:203
554
- #: integrations/contact-form-7/class-contact-form-7.php:69
555
- msgid "No"
556
- msgstr "Nej"
557
-
558
- #: includes/forms/views/tabs/form-settings.php:45
559
- #: includes/integrations/views/integration-settings.php:149
560
- msgid ""
561
- "Select \"yes\" if you want people to confirm their email address before "
562
- "being subscribed (recommended)"
563
- msgstr "Vælg “Ja”, hvis du vil have folk til at bekræfte deres e-mail adresse, før de tilmeldes (anbefales)"
564
-
565
- #: includes/forms/views/tabs/form-settings.php:50
566
- msgid "Send final welcome email?"
567
- msgstr "Send endelig velkomst email?"
568
-
569
- #: includes/forms/views/tabs/form-settings.php:60
570
- #: includes/integrations/views/integration-settings.php:169
571
- msgid ""
572
- "Select \"yes\" if you want to send your lists Welcome Email if a subscribe "
573
- "succeeds (only when double opt-in is disabled)."
574
- msgstr "Vælg “Ja”, hvis du vil sende dine lister Velkomst Email, hvis en tilmelding lykkes (kun når dobbelt opt-in er deaktiveret)."
575
-
576
- #: includes/forms/views/tabs/form-settings.php:65
577
- #: includes/integrations/views/integration-settings.php:176
578
- msgid "Update existing subscribers?"
579
- msgstr "Opdatere eksisterende abonnenter?"
580
-
581
- #: includes/forms/views/tabs/form-settings.php:75
582
- #: includes/integrations/views/integration-settings.php:186
583
- msgid ""
584
- "Select \"yes\" if you want to update existing subscribers with the data that"
585
- " is sent."
586
- msgstr "Vælg “Ja”, hvis du ønsker at opdatere eksisterende abonnenter med de data, der sendes."
587
-
588
- #: includes/forms/views/tabs/form-settings.php:81
589
- #: includes/integrations/views/integration-settings.php:195
590
- msgid "Replace interest groups?"
591
- msgstr "Udskift interesse grupper?"
592
 
593
- #: includes/forms/views/tabs/form-settings.php:92
594
- #: includes/integrations/views/integration-settings.php:206
595
  msgid ""
596
- "Select \"no\" if you want to add the selected groupings to any previously "
597
- "selected groupings when updating a subscriber."
598
- msgstr "Vælg “nej”, hvis du ønsker at tilføje de valgte grupperinger på eventuelle tidligere valgte grupperinger ved opdatering en abonnent."
599
-
600
- #: includes/forms/views/tabs/form-settings.php:93
601
- #: includes/integrations/views/integration-settings.php:207
602
- msgid "What does this do?"
603
- msgstr "Hvad gør denne?"
604
 
605
- #: includes/forms/views/tabs/form-settings.php:104
606
  msgid "Form behaviour"
607
  msgstr "Formular adfærd"
608
 
609
- #: includes/forms/views/tabs/form-settings.php:111
610
  msgid "Hide form after a successful sign-up?"
611
  msgstr "Skjul formular efter en vellykket tilmelding?"
612
 
613
- #: includes/forms/views/tabs/form-settings.php:122
614
  msgid "Select \"yes\" to hide the form fields after a successful sign-up."
615
  msgstr "Vælg “Ja” for at skjule formularfelterne efter en vellykket tilmelding."
616
 
617
- #: includes/forms/views/tabs/form-settings.php:127
618
  msgid "Redirect to URL after successful sign-ups"
619
  msgstr "Omdiriger til URL efter vellykkede tilmelding"
620
 
621
- #: includes/forms/views/tabs/form-settings.php:129
622
  msgid "Example: %s"
623
  msgstr "Eksempel: %s"
624
 
625
- #: includes/forms/views/tabs/form-settings.php:130
626
  msgid ""
627
  "Leave empty or enter <code>0</code> for no redirect. Otherwise, use complete"
628
  " (absolute) URLs, including <code>http://</code>."
629
  msgstr "Efterlad tomt eller indtast <code>0</code> for ingen omdirigering. Ellers skal du bruge komplet (absolut) URL’er, herunder <code>http://</code>"
630
-
631
- #: includes/integrations/class-admin.php:79
632
- #: includes/integrations/class-admin.php:80
633
- #: includes/integrations/views/integration-settings.php:10
634
- #: includes/integrations/views/integrations.php:9
635
- #: includes/integrations/views/integrations.php:17
636
- msgid "Integrations"
637
- msgstr "Integrationer"
638
-
639
- #: includes/integrations/views/integration-settings.php:20
640
- msgid "%s integration"
641
- msgstr "%s integration"
642
-
643
- #: includes/integrations/views/integration-settings.php:51
644
- msgid "Enabled?"
645
- msgstr "Aktiveret?"
646
-
647
- #: includes/integrations/views/integration-settings.php:55
648
- msgid ""
649
- "Enable the %s integration? This will add a sign-up checkbox to the form."
650
- msgstr "Aktiver %s integration? Dette vil tilføje et tilmeldings afkrydsningsboks til formularen."
651
-
652
- #: includes/integrations/views/integration-settings.php:64
653
- msgid "Implicit?"
654
- msgstr "Underforstået?"
655
-
656
- #: includes/integrations/views/integration-settings.php:68
657
- msgid ""
658
- "Select \"no\" if you want to ask your visitors before they are subscribed "
659
- "(recommended)."
660
- msgstr "Vælg “nej”, hvis du ønsker at spørge dine besøgende, før de bliver tilmeldt (anbefales)."
661
-
662
- #: includes/integrations/views/integration-settings.php:78
663
- msgid "MailChimp Lists"
664
- msgstr "MailChimp Lister"
665
-
666
- #: includes/integrations/views/integration-settings.php:89
667
- msgid ""
668
- "Select the list(s) to which people who check the checkbox should be "
669
- "subscribed."
670
- msgstr "Vælg liste(r), som folk, der afkrydser afkrydsningsfeltet skal tilmeldes."
671
-
672
- #: includes/integrations/views/integration-settings.php:102
673
- msgid "Checkbox label text"
674
- msgstr "Afkrydsningsfelt label tekst"
675
-
676
- #: includes/integrations/views/integration-settings.php:105
677
- msgid "HTML tags like %s are allowed in the label text."
678
- msgstr "HTML-tags som %s er tilladt i labelen tekst."
679
-
680
- #: includes/integrations/views/integration-settings.php:115
681
- msgid "Pre-check the checkbox?"
682
- msgstr "Marker afkrydsningsfeltet?"
683
-
684
- #: includes/integrations/views/integration-settings.php:119
685
- msgid "Select \"yes\" if the checkbox should be pre-checked."
686
- msgstr "Vælg “ja”, hvis afkrydsningsfeltet skal være markeret."
687
-
688
- #: includes/integrations/views/integration-settings.php:127
689
- msgid "Load some default CSS?"
690
- msgstr "Indlæs noget standard CSS?"
691
-
692
- #: includes/integrations/views/integration-settings.php:131
693
- msgid "Select \"yes\" if the checkbox appears in a weird place."
694
- msgstr "Vælg “ja”, hvis afkrydsningsfeltet vises et mærkeligt sted."
695
-
696
- #: includes/integrations/views/integration-settings.php:138
697
- msgid "Double opt-in?"
698
- msgstr "Dobbelt opt-in?"
699
-
700
- #: includes/integrations/views/integration-settings.php:159
701
- msgid "Send Welcome Email?"
702
- msgstr "Send Velkomst Email?"
703
-
704
- #: includes/integrations/views/integration-settings.php:244
705
- msgid ""
706
- "The selected MailChimp lists require non-default fields, which may prevent "
707
- "this integration from working."
708
- msgstr "De valgte MailChimp lister kræver ikke-standard felter, som kan hindre denne integration i at fungere."
709
-
710
- #: includes/integrations/views/integration-settings.php:245
711
- msgid ""
712
- "Please ensure you <a href=\"%s\">configure the plugin to send all required "
713
- "fields</a> or <a href=\"%s\">log into your MailChimp account</a> and make "
714
- "sure only the email & name fields are marked as required fields for the "
715
- "selected list(s)."
716
- msgstr "Kontroller, at du <a href=“%s”>konfigurerer dette plugin til at sende alle nødvendige felter</a> eller <a href=“%s”>log ind på din MailChimp konto</a> og sørg for kun de e-mail & navne felter der er påkrævet for den valgte liste(r) er markeret."
717
-
718
- #: includes/integrations/views/integrations.php:30
719
- msgid "Enabled"
720
- msgstr "Aktiveret"
721
-
722
- #: includes/integrations/views/integrations.php:31
723
- msgid "Name"
724
- msgstr "Navn"
725
-
726
- #: includes/integrations/views/integrations.php:32
727
- msgid "Description"
728
- msgstr "Beskrivelse"
729
-
730
- #: includes/integrations/views/integrations.php:50
731
- msgid ""
732
- "This integration is enabled by default as it requires manual actions to "
733
- "work."
734
- msgstr "Denne integration er aktiveret som standard, da det kræver manuelle handlinger for at fungere."
735
-
736
- #: includes/integrations/views/integrations.php:57
737
- msgid "Configure this integration"
738
- msgstr "Konfigurere denne integration"
739
-
740
- #: includes/views/general-settings.php:18
741
- msgid "General Settings"
742
- msgstr "Generelle indstillinger"
743
-
744
- #: includes/views/general-settings.php:35
745
- msgid "Status"
746
- msgstr "Status"
747
-
748
- #: includes/views/general-settings.php:39
749
- msgid "CONNECTED"
750
- msgstr "TILSLUTTET"
751
-
752
- #: includes/views/general-settings.php:41
753
- msgid "NOT CONNECTED"
754
- msgstr "IKKE TILSLUTTET"
755
-
756
- #: includes/views/general-settings.php:48
757
- msgid "API Key"
758
- msgstr "API nøgle"
759
-
760
- #: includes/views/general-settings.php:50
761
- msgid "Your MailChimp API key"
762
- msgstr "Din MailChimp API nøgle"
763
-
764
- #: includes/views/general-settings.php:52
765
- msgid "The API key for connecting with your MailChimp account."
766
- msgstr "API nøgle til at forbinde med din MailChimp konto."
767
-
768
- #: includes/views/general-settings.php:53
769
- msgid "Get your API key here."
770
- msgstr "Få din API nøgle her."
771
-
772
- #: includes/views/general-settings.php:65
773
- msgid "Usage Tracking"
774
- msgstr "Anvendelse Sporing"
775
-
776
- #: includes/views/general-settings.php:71
777
- msgid ""
778
- "Allow us to anonymously track how this plugin is used to help us make it "
779
- "better fit your needs."
780
- msgstr "Tillad os at anonymt spore, hvor dette plugin bruges, for at hjælpe os med at få det bedre at passe til dine behov."
781
-
782
- #: includes/views/general-settings.php:73
783
- msgid "This is what we track."
784
- msgstr "Dette er hvad vi sporer."
785
-
786
- #: includes/views/parts/admin-footer.php:11
787
- msgid ""
788
- "MailChimp for WordPress is in need of translations. Is the plugin not "
789
- "translated in your language or do you spot errors with the current "
790
- "translations? Helping out is easy! Head over to <a href=\"%s\">the "
791
- "translation project and click \"help translate\"</a>."
792
- msgstr "MailChimp til WordPress har behov for oversættelser. Er dette plugin ikke oversat på dit sprog, eller har du fundet fejl i de nuværende oversættelser? At hjælpe til er nemt! Smut over til <a href=“%s”>oversættelses projektet og klik på “hjælp med at oversætte”.</a>"
793
-
794
- #: includes/views/parts/admin-footer.php:31
795
- msgid ""
796
- "This plugin is not developed by or affiliated with MailChimp in any way."
797
- msgstr "Dette plugin er ikke udviklet af eller tilknyttet MailChimp på nogen måde."
798
-
799
- #: includes/views/parts/lists-overview.php:1
800
- msgid "Your MailChimp Account"
801
- msgstr "Din MailChimp konto"
802
-
803
- #: includes/views/parts/lists-overview.php:2
804
- msgid ""
805
- "The table below shows your MailChimp lists and their details. If you just "
806
- "applied changes to your MailChimp lists, please use the following button to "
807
- "renew the cached lists configuration."
808
- msgstr "Tabellen nedenfor viser dine MailChimp lister og deres detaljer. Hvis du lige har tilføjet ændringer til en af dine MailChimp lister, skal du bruge følgende knap for at forny “lagerede lister konfigurationen”."
809
-
810
- #: includes/views/parts/lists-overview.php:14
811
- msgid "No lists were found in your MailChimp account"
812
- msgstr "Ingen lister blev fundet i din MailChimp konto"
813
-
814
- #: includes/views/parts/lists-overview.php:16
815
- msgid "A total of %d lists were found in your MailChimp account."
816
- msgstr "Der blev i alt fundet % d lister på din MailChimp konto."
817
-
818
- #: includes/views/parts/lists-overview.php:21
819
- msgid "List Name"
820
- msgstr "Liste Navn"
821
-
822
- #: includes/views/parts/lists-overview.php:22
823
- msgid "ID"
824
- msgstr "ID"
825
-
826
- #: includes/views/parts/lists-overview.php:23
827
- msgid "Subscribers"
828
- msgstr "Abonnenter"
829
-
830
- #: includes/views/parts/lists-overview.php:45
831
- msgid "Edit this list in MailChimp"
832
- msgstr "Redigere denne liste i MailChimp"
833
-
834
- #: includes/views/parts/lists-overview.php:59
835
- msgid "%s (%s) with field type %s."
836
- msgstr "%s (%s) med felttype %s."
837
-
838
- #: includes/views/parts/lists-overview.php:83
839
- msgid "%s (ID: %s) with type %s."
840
- msgstr "%s (ID:%s) med type %s."
841
-
842
- #: integrations/contact-form-7/admin-before.php:2
843
- msgid ""
844
- "To integrate with Contact Form 7, configure the settings below and then add "
845
- "%s to your CF7 form mark-up."
846
- msgstr "For at integrere med Contact Form 7, skal du konfigurere indstillingerne nedenfor og derefter tilføje %s til din CF7 formular mark-up."
847
-
848
- #: integrations/custom/admin-before.php:2
849
- msgid ""
850
- "To get a custom integration to work, include the following HTML in the form "
851
- "you are trying to integrate with."
852
- msgstr "For at få en brugerdefineret integration til fungere, skal du inkludere følgende HTML i den formular, du forsøger at integrere med."
853
-
854
- #: integrations/woocommerce/class-woocommerce.php:102
855
- msgid "Order #%d"
856
- msgstr "Ordre %d"
857
-
858
- #. Plugin Name of the plugin/theme
859
- msgid "MailChimp for WordPress"
860
- msgstr "MailChimp til WordPress"
861
-
862
- #. Plugin URI of the plugin/theme
863
- msgid ""
864
- "https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-"
865
- "wp&utm_campaign=plugins-page"
866
- msgstr "https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page"
867
-
868
- #. Description of the plugin/theme
869
- msgid ""
870
- "MailChimp for WordPress by ibericode. Adds various highly effective sign-up "
871
- "methods to your site."
872
- msgstr "MailChimp for WordPress af ibericode. Tilføjer forskellige yderst effektive tilmeldings metoder til dit websted."
873
-
874
- #. Author of the plugin/theme
875
- msgid "ibericode"
876
- msgstr "ibericode"
877
-
878
- #. Author URI of the plugin/theme
879
- msgid "https://ibericode.com/"
880
- msgstr "https://ibericode.com/"
1
+ # Copyright (C) 2017 mailchimp-for-wp
2
+ # This file is distributed under the same license as the mailchimp-for-wp package.
3
  # Translators:
4
+ # Jens Bindløv <jens.bindlov@gmail.com>, 2017
5
  # Mathias Brask <seo@bravocom.dk>, 2015
6
  # Rasmus Larsen <rasmus@rblarsen.dk>, 2014
7
  # Ronni Andersen <ronniva@gmail.com>, 2015
8
  msgid ""
9
  msgstr ""
10
  "Project-Id-Version: MailChimp for WordPress\n"
11
+ "PO-Revision-Date: 2017-05-04 19:52+0000\n"
12
+ "Last-Translator: Jens Bindløv <jens.bindlov@gmail.com>\n"
 
 
13
  "Language-Team: Danish (Denmark) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/da_DK/)\n"
14
  "MIME-Version: 1.0\n"
15
  "Content-Type: text/plain; charset=UTF-8\n"
16
  "Content-Transfer-Encoding: 8bit\n"
17
  "Language: da_DK\n"
18
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+ "X-Poedit-Basepath: ..\n"
20
+ "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
23
+ "X-Poedit-SourceCharset: UTF-8\n"
24
 
25
+ #: includes/admin/class-admin-texts.php62,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  #: includes/forms/views/edit-form.php:6
27
  msgid "Settings"
28
  msgstr "Indstillinger"
31
  msgid "Documentation"
32
  msgstr "Dokumentation"
33
 
34
+ #: includes/admin/class-admin.php:204
35
  msgid ""
36
  "Success! The cached configuration for your MailChimp lists has been renewed."
37
  msgstr "Succes! Den cachede konfiguration for din MailChimp lister er blevet fornyet."
38
 
39
+ #: includes/admin/class-admin.php:304
40
  msgid ""
41
  "This is a pro-only feature. Please upgrade to the premium version to be able"
42
  " to use it."
43
  msgstr "Dette er en PRO funktion. Opgrader til premium-version for at bruge dette."
44
 
45
+ #: includes/admin/class-admin.php305,
46
+ #: includes/views/parts/lists-overview.php10,
47
+ #: includes/forms/views/parts/add-fields-help.php:43
48
+ msgid "Renew MailChimp lists"
49
+ msgstr "Forny MailChimp lister"
50
+
51
+ #: includes/admin/class-admin.php:306
52
+ msgid "Fetching MailChimp lists"
53
+ msgstr "Henter MailChimp lister"
54
+
55
+ #: includes/admin/class-admin.php:307
56
+ msgid "Done! MailChimp lists renewed."
57
+ msgstr "Færdig! MailChimp lister er fornyet."
58
+
59
+ #: includes/admin/class-admin.php:308
60
+ msgid "This can take a while if you have many MailChimp lists."
61
+ msgstr "Det kan tage lidt tid hvis du har mange MailChimp lister."
62
+
63
+ #: includes/admin/class-admin.php336, includes/views/general-settings.php:31
64
  msgid "MailChimp API Settings"
65
  msgstr "MailChimp API indstillinger"
66
 
67
+ #: includes/admin/class-admin.php:337
 
68
  msgid "MailChimp"
69
  msgstr "MailChimp"
70
 
71
+ #: includes/admin/class-admin.php343, includes/views/other-settings.php60,
72
+ #: includes/views/other-settings.php:70
73
+ msgid "Other Settings"
74
+ msgstr "Andre instillinger"
75
+
76
+ #: includes/admin/class-admin.php:344
77
+ msgid "Other"
78
+ msgstr "Andet"
79
+
80
+ #: includes/admin/class-admin.php:458
81
+ msgid "Log successfully emptied."
82
+ msgstr "Log er tømt."
83
 
84
+ #: includes/admin/class-admin.php:488
85
  msgid ""
86
+ "To get started with MailChimp for WordPress, please <a href=\"%s\">enter "
87
+ "your MailChimp API key on the settings page of the plugin</a>."
88
+ msgstr "For at komme i gang med MailChimp til WordPress, du <a href=\"%s\">indsætte din MailChimp API key siden Indstillinger i plugin'et</a>."
89
 
90
+ #: includes/admin/class-ads.php:39
91
+ msgid ""
92
+ "Want to customize the style of your form? <a href=\"%s\">Try our Styles "
93
+ "Builder</a> & edit the look of your forms with just a few clicks."
94
+ msgstr "Vil du ændre udseendet af din formular? <a href=\"%s\">Prøv vores grafiske redigering</a> & rediger dine formularer med nogle få klik."
95
+
96
+ #: includes/admin/class-ads.php:54
97
+ msgid ""
98
+ "Be notified whenever someone subscribes? <a href=\"%s\">MailChimp for "
99
+ "WordPress Premium</a> allows you to set up email notifications for your "
100
+ "forms."
101
+ msgstr "Få besked hvergang nogen tilmelder sig? <a href=\"%s\">MailChimp for WordPress Premium</a> giver dig mulighed for at indstille e-mail notifikationer for dine formularer."
102
+
103
+ #: includes/admin/class-ads.php:56
104
+ msgid ""
105
+ "Increased conversions? <a href=\"%s\">MailChimp for WordPress Premium</a> "
106
+ "submits forms without reloading the entire page, resulting in a much better "
107
+ "experience for your visitors."
108
+ msgstr ""
109
+
110
+ #: includes/admin/class-ads.php:70
111
+ msgid "Upgrade to Premium"
112
+ msgstr ""
113
+
114
+ #: includes/admin/class-ads.php:83
115
+ msgid ""
116
+ "Do you want translated forms for all of your languages? <a href=\"%s\">Try "
117
+ "MailChimp for WordPress Premium</a>, which does just that plus more."
118
+ msgstr ""
119
+
120
+ #: includes/admin/class-ads.php:88
121
+ msgid ""
122
+ "Do you want to create more than one form? Our Premium add-on does just that!"
123
+ " <a href=\"%s\">Have a look at all Premium benefits</a>."
124
+ msgstr ""
125
+
126
+ #: includes/admin/class-ads.php:93
127
+ msgid ""
128
+ "Are you enjoying this plugin? The Premium add-on unlocks several powerful "
129
+ "features. <a href=\"%s\">Find out about all benefits now</a>."
130
+ msgstr ""
131
+
132
+ #: includes/admin/class-ads.php:112
133
  msgid "More subscribers, better newsletters."
134
  msgstr "Flere abonnenter, bedre nyhedsbreve."
135
 
136
+ #: includes/admin/class-ads.php:113
137
  msgid ""
138
  "Learn how to best grow your lists & write better emails by subscribing to "
139
  "our monthly tips."
140
  msgstr "Lær hvordan du bedst få dine lister til at vokse og skriver bedre mails ved at abonnere på vores månedlige tips."
141
 
142
+ #: includes/admin/class-ads.php:116
143
  msgid "Email Address"
144
  msgstr "E-mail adresse"
145
 
146
+ #: includes/admin/class-ads.php:120
147
  msgid "First Name"
148
  msgstr "Fornavn"
149
 
150
+ #: includes/admin/class-ads.php127, includes/forms/class-admin.php:94
151
  msgid "Subscribe"
152
  msgstr "Tilmeld"
153
 
154
+ #: includes/admin/class-ads.php:150
155
+ msgid ""
156
+ "Do you want to track all WooCommerce orders in MailChimp so you can send "
157
+ "emails based on the purchase activity of your subscribers?"
158
+ msgstr ""
159
+
160
+ #: includes/admin/class-ads.php:153
161
+ msgid ""
162
+ "<a href=\"%s\">Upgrade to MailChimp for WordPress Premium</a> or <a "
163
+ "href=\"%s\">read more about MailChimp's E-Commerce features</a>."
164
+ msgstr ""
165
 
166
+ #: includes/admin/class-review-notice.php:68
167
+ msgid ""
168
+ "You've been using MailChimp for WordPress for some time now; we hope you "
169
+ "love it!"
170
+ msgstr ""
171
+
172
+ #: includes/admin/class-review-notice.php:69
173
+ msgid ""
174
+ "If you do, please <a href=\"%s\">leave us a 5★ rating on WordPress.org</a>. "
175
+ "It would be of great help to us."
176
+ msgstr ""
177
+
178
+ #: includes/admin/class-review-notice.php:71
179
+ msgid "Dismiss this notice."
180
+ msgstr "Afvis denne besked"
181
 
182
+ #: includes/api/class-api.php:84
183
  msgid "Read more about common connectivity issues."
184
  msgstr "Læs mere om almindelige forbindelsesproblemer."
185
 
186
+ #: includes/forms/class-admin.php:62
187
+ msgid "Add to form"
188
+ msgstr "Tilføj til formular"
189
+
190
+ #: includes/forms/class-admin.php:63
191
+ msgid "City"
192
+ msgstr "By"
193
+
194
+ #: includes/forms/class-admin.php:64
195
+ msgid "Checkboxes"
196
+ msgstr "Checkbokse"
197
+
198
+ #: includes/forms/class-admin.php:65
199
+ msgid "Choices"
200
+ msgstr "Valg"
201
+
202
+ #: includes/forms/class-admin.php:66
203
+ msgid "Choice type"
204
+ msgstr ""
205
+
206
+ #: includes/forms/class-admin.php:67
207
+ msgid "Choose a field to add to the form"
208
+ msgstr "Vælg et felt der skal tilføjes formularen"
209
+
210
+ #: includes/forms/class-admin.php:68
211
+ msgid "Close"
212
+ msgstr "Luk"
213
+
214
+ #: includes/forms/class-admin.php:69
215
+ msgid "Country"
216
+ msgstr "Land"
217
+
218
+ #: includes/forms/class-admin.php:70
219
+ msgid "Dropdown"
220
+ msgstr "Dropdown"
221
+
222
+ #: includes/forms/class-admin.php:71
223
+ msgid "Field type"
224
+ msgstr "Felt type"
225
+
226
+ #: includes/forms/class-admin.php:72
227
+ msgid "Field label"
228
+ msgstr "Felt label"
229
+
230
+ #: includes/forms/class-admin.php:73
231
+ msgid "Form action"
232
+ msgstr "Formular handling"
233
+
234
+ #: includes/forms/class-admin.php:74
235
+ msgid ""
236
+ "This field will allow your visitors to choose whether they would like to "
237
+ "subscribe or unsubscribe"
238
+ msgstr "Dette felt tillader dine besøgende at vælge om de vil tilmelde eller afmelde"
239
+
240
+ #: includes/forms/class-admin.php:75
241
+ msgid "Form fields"
242
+ msgstr ""
243
+
244
+ #: includes/forms/class-admin.php:76
245
+ msgid "This field is marked as required in MailChimp."
246
+ msgstr "Dette felt er markeret som nødvendigt i MailChimp"
247
+
248
+ #: includes/forms/class-admin.php:77
249
+ msgid "Initial value"
250
+ msgstr "Start værdi"
251
+
252
+ #: includes/forms/class-admin.php:78
253
+ msgid "Interest categories"
254
+ msgstr "Interesse kategorier"
255
+
256
+ #: includes/forms/class-admin.php:79
257
+ msgid "Is this field required?"
258
+ msgstr "Er dette felt påkrævet?"
259
+
260
+ #: includes/forms/class-admin.php:80
261
+ msgid "List choice"
262
+ msgstr "Vis valg"
263
+
264
+ #: includes/forms/class-admin.php:81
265
+ msgid "This field will allow your visitors to choose a list to subscribe to."
266
+ msgstr "Dette felt vil tillade dine besøgende at vælge en liste de kan tilmelde sig."
267
+
268
+ #: includes/forms/class-admin.php:82
269
+ msgid "List fields"
270
+ msgstr "List felter"
271
+
272
+ #: includes/forms/class-admin.php:83
273
+ msgid "Min"
274
+ msgstr "Min."
275
+
276
+ #: includes/forms/class-admin.php:84
277
+ msgid "Max"
278
+ msgstr "Max."
279
+
280
+ #: includes/forms/class-admin.php:85
281
+ msgid ""
282
+ "No available fields. Did you select a MailChimp list in the form settings?"
283
+ msgstr "Ingen tilgængelige felter. Har du valgt en MailChimp liste i formular indstillingerne?"
284
+
285
+ #: includes/forms/class-admin.php:86
286
+ msgid "Optional"
287
+ msgstr "Valgfri"
288
+
289
+ #: includes/forms/class-admin.php:87
290
+ msgid "Placeholder"
291
+ msgstr "Placeholder"
292
+
293
+ #: includes/forms/class-admin.php:88
294
+ msgid "Text to show when field has no value."
295
+ msgstr ""
296
+
297
+ #: includes/forms/class-admin.php:89
298
+ msgid "Preselect"
299
+ msgstr ""
300
+
301
+ #: includes/forms/class-admin.php:90
302
+ msgid "Remove"
303
+ msgstr ""
304
+
305
+ #: includes/forms/class-admin.php:91
306
+ msgid "Radio buttons"
307
+ msgstr ""
308
+
309
+ #: includes/forms/class-admin.php:92
310
+ msgid "Street Address"
311
+ msgstr ""
312
+
313
+ #: includes/forms/class-admin.php:93
314
+ msgid "State"
315
+ msgstr ""
316
+
317
+ #: includes/forms/class-admin.php:95
318
+ msgid "Submit button"
319
+ msgstr ""
320
+
321
+ #: includes/forms/class-admin.php:96
322
+ msgid "Wrap in paragraph tags?"
323
+ msgstr ""
324
+
325
+ #: includes/forms/class-admin.php:97
326
+ msgid "Value"
327
+ msgstr ""
328
+
329
+ #: includes/forms/class-admin.php:98
330
+ msgid "Text to prefill this field with."
331
+ msgstr ""
332
+
333
+ #: includes/forms/class-admin.php:99
334
+ msgid "ZIP"
335
+ msgstr ""
336
+
337
+ #: includes/forms/class-admin.php111, includes/forms/class-admin.php112,
338
+ #: includes/forms/views/edit-form.php:24
339
  msgid "Forms"
340
  msgstr "Formularer"
341
 
342
+ #: includes/forms/class-admin.php152, includes/forms/class-admin.php:276
343
  msgid "<strong>Success!</strong> Form successfully saved."
344
  msgstr "<strong>Succes!</strong> Formular er nu gemt."
345
 
346
+ #: includes/forms/class-admin.php:276
347
  msgid "Preview form"
348
  msgstr "Vis formular"
349
 
350
+ #: includes/forms/class-admin.php449, includes/forms/class-widget.php:30
351
+ msgid "MailChimp Sign-Up Form"
352
+ msgstr "MailChimp tilmeldings formular"
353
 
354
+ #: includes/forms/class-admin.php:453
355
+ msgid "Select the form to show"
356
+ msgstr ""
357
 
358
+ #: includes/forms/class-form-previewer.php:146
359
  msgid "Form preview"
360
  msgstr "Vis formular"
361
 
362
+ #: includes/forms/class-form-tags.php:60
363
  msgid "Replaced with the form response (error or success messages)."
364
  msgstr "Erstattet med formularens svar (fejl eller succes meddelelser)."
365
 
366
+ #: includes/forms/class-form-tags.php:65
367
  msgid "Data from the URL or a submitted form."
368
  msgstr "Data fra URL eller en indsendt formular."
369
 
370
+ #: includes/forms/class-form-tags.php:71
371
+ msgid "Data from a cookie."
372
+ msgstr ""
373
+
374
+ #: includes/forms/class-form-tags.php77,
375
  #: includes/integrations/class-integration-tags.php:45
376
  msgid "Replaced with the number of subscribers on the selected list(s)"
377
  msgstr "Erstattet med antallet af abonnenter på den valgte liste(r)"
378
 
379
+ #: includes/forms/class-form-tags.php:82
380
  msgid "The email address of the current visitor (if known)."
381
  msgstr "Email-adressen på den aktuelle besøgende (hvis kendt)."
382
 
383
+ #: includes/forms/class-form-tags.php:87
384
  msgid "The URL of the page."
385
  msgstr "Sidens URL"
386
 
387
+ #: includes/forms/class-form-tags.php:92
388
  msgid "The path of the page."
389
  msgstr "Sidens sti"
390
 
391
+ #: includes/forms/class-form-tags.php:97
392
  msgid "The current date. Example: %s."
393
  msgstr "Den aktuelle dato. Eksempel: %s."
394
 
395
+ #: includes/forms/class-form-tags.php:102
396
  msgid "The current time. Example: %s."
397
  msgstr "Den aktuelle tid. Eksempel: %s."
398
 
399
+ #: includes/forms/class-form-tags.php:107
400
  msgid "The site's language. Example: %s."
401
  msgstr "Webstedets sprog. Eksempel: %s."
402
 
403
+ #: includes/forms/class-form-tags.php:112
404
  msgid "The visitor's IP address. Example: %s."
405
  msgstr "Den besøgendes IP-adresse. Eksempel: %s."
406
 
407
+ #: includes/forms/class-form-tags.php:117
408
  msgid "The property of the currently logged-in user."
409
  msgstr "Ejet af den bruger som er logget på."
410
 
411
+ #: includes/forms/class-form-tags.php:123
412
+ msgid "Property of the current page or post."
413
+ msgstr ""
414
+
415
+ #: includes/forms/class-form.php:133
416
  msgid "There is no form with ID %d, perhaps it was deleted?"
417
  msgstr "Der er ingen formular med ID %d, måske er den blev slettet?"
418
 
420
  msgid "Newsletter"
421
  msgstr "Nyhedsbrev"
422
 
 
 
 
 
423
  #: includes/forms/class-widget.php:32
424
  msgid "Displays your MailChimp for WordPress sign-up form"
425
  msgstr "Viser din MailChimp for WordPress tilmeldings formular"
434
  " form settings</a>."
435
  msgstr "Du kan redigere din tilmeldings formular i <a href=“%s”>MailChimp til WordPress farmular indstillinger.</a>"
436
 
437
+ #: includes/integrations/class-admin.php79,
438
+ #: includes/integrations/class-admin.php80,
439
+ #: includes/integrations/views/integration-settings.php10,
440
+ #: includes/integrations/views/integrations.php57,
441
+ #: includes/integrations/views/integrations.php:65
442
+ msgid "Integrations"
443
+ msgstr "Integrationer"
444
+
445
+ #: includes/views/general-settings.php7, includes/views/other-settings.php58,
446
+ #: includes/forms/views/edit-form.php22,
447
+ #: includes/integrations/views/integration-settings.php8,
448
+ #: includes/integrations/views/integrations.php:55
449
+ msgid "You are here: "
450
+ msgstr "Du er her:"
451
+
452
+ #: includes/views/general-settings.php:18
453
+ msgid "General Settings"
454
+ msgstr "Generelle indstillinger"
455
+
456
+ #: includes/views/general-settings.php:38
457
+ msgid "Status"
458
+ msgstr "Status"
459
+
460
+ #: includes/views/general-settings.php:42
461
+ msgid "CONNECTED"
462
+ msgstr "TILSLUTTET"
463
+
464
+ #: includes/views/general-settings.php:44
465
+ msgid "NOT CONNECTED"
466
+ msgstr "IKKE TILSLUTTET"
467
+
468
+ #: includes/views/general-settings.php:51
469
+ msgid "API Key"
470
+ msgstr "API nøgle"
471
+
472
+ #: includes/views/general-settings.php:53
473
+ msgid "Your MailChimp API key"
474
+ msgstr "Din MailChimp API nøgle"
475
+
476
+ #: includes/views/general-settings.php:55
477
+ msgid "The API key for connecting with your MailChimp account."
478
+ msgstr "API nøgle til at forbinde med din MailChimp konto."
479
+
480
+ #: includes/views/general-settings.php:56
481
+ msgid "Get your API key here."
482
+ msgstr "Få din API nøgle her."
483
+
484
+ #: includes/views/other-settings.php:14
485
+ msgid "Miscellaneous settings"
486
+ msgstr ""
487
+
488
+ #: includes/views/other-settings.php:17
489
+ msgid "Usage Tracking"
490
+ msgstr "Anvendelse Sporing"
491
+
492
+ #: includes/views/other-settings.php:29
493
+ msgid ""
494
+ "Allow us to anonymously track how this plugin is used to help us make it "
495
+ "better fit your needs."
496
+ msgstr "Tillad os at anonymt spore, hvor dette plugin bruges, for at hjælpe os med at få det bedre at passe til dine behov."
497
+
498
+ #: includes/views/other-settings.php:31
499
+ msgid "This is what we track."
500
+ msgstr "Dette er hvad vi sporer."
501
+
502
+ #: includes/views/other-settings.php:37
503
+ msgid "Logging"
504
+ msgstr ""
505
+
506
+ #: includes/views/other-settings.php:44
507
+ msgid ""
508
+ "Determines what events should be written to <a href=\"%s\">the debug log</a>"
509
+ " (see below)."
510
+ msgstr ""
511
+
512
+ #: includes/views/other-settings.php:99
513
+ msgid "Debug Log"
514
+ msgstr ""
515
+
516
+ #: includes/views/other-settings.php:99
517
+ msgid "Filter.."
518
+ msgstr ""
519
+
520
+ #: includes/views/other-settings.php:104
521
+ msgid "Log file is not writable."
522
+ msgstr ""
523
+
524
+ #: includes/views/other-settings.php:105
525
+ msgid "Please ensure %s has the proper <a href=\"%s\">file permissions</a>."
526
+ msgstr ""
527
+
528
+ #: includes/views/other-settings.php:123
529
+ msgid "Nothing here. Which means there are no errors!"
530
+ msgstr ""
531
+
532
+ #: includes/views/other-settings.php:133
533
+ msgid "Empty Log"
534
+ msgstr ""
535
+
536
+ #: includes/views/other-settings.php:141
537
+ msgid "Right now, the plugin is configured to only log errors and warnings."
538
+ msgstr ""
539
+
540
+ #: includes/admin/migrations/3.0.0-form-1-post-type.php:35
541
+ msgid "Default sign-up form"
542
+ msgstr "Standard tilmeldings formular"
543
+
544
+ #: includes/forms/views/add-form.php10, includes/forms/views/add-form.php:60
545
  msgid "Add new form"
546
  msgstr "Tilføj ny formular"
547
 
569
  msgid "Messages"
570
  msgstr "Beskeder"
571
 
572
+ #: includes/forms/views/edit-form.php:7
573
+ msgid "Appearance"
574
+ msgstr "Udseende"
575
+
576
+ #: includes/forms/views/edit-form.php:25
577
+ msgid "Form"
578
+ msgstr ""
579
+
580
+ #: includes/forms/views/edit-form.php:34
581
+ msgid "Edit Form"
582
+ msgstr "Redigér formular"
583
+
584
+ #: includes/forms/views/edit-form.php:58
585
+ msgid "Enter form title here"
586
+ msgstr "Indtast formular titel her"
587
+
588
+ #: includes/forms/views/edit-form.php:59
589
+ msgid "Enter the title of your sign-up form"
590
+ msgstr "Indtast titlen på din tilmeldings formular"
591
+
592
+ #: includes/forms/views/edit-form.php:65
593
+ msgid "Shortcode"
594
+ msgstr ""
595
+
596
+ #: includes/forms/views/edit-form.php:67
597
+ msgid "Get shortcode"
598
+ msgstr "Få “shortcode”"
599
+
600
+ #: includes/forms/views/edit-form.php:72
601
+ msgid "Preview this form"
602
+ msgstr "Vis formular"
603
+
604
+ #: includes/integrations/views/integration-settings.php:20
605
+ msgid "%s integration"
606
+ msgstr "%s integration"
607
+
608
+ #: includes/integrations/views/integration-settings.php:27
609
+ msgid ""
610
+ "The selected MailChimp lists require non-default fields, which may prevent "
611
+ "this integration from working."
612
+ msgstr "De valgte MailChimp lister kræver ikke-standard felter, som kan hindre denne integration i at fungere."
613
+
614
+ #: includes/integrations/views/integration-settings.php:28
615
+ msgid ""
616
+ "Please ensure you <a href=\"%s\">configure the plugin to send all required "
617
+ "fields</a> or <a href=\"%s\">log into your MailChimp account</a> and make "
618
+ "sure only the email & name fields are marked as required fields for the "
619
+ "selected list(s)."
620
+ msgstr "Kontroller, at du <a href=“%s”>konfigurerer dette plugin til at sende alle nødvendige felter</a> eller <a href=“%s”>log ind på din MailChimp konto</a> og sørg for kun de e-mail & navne felter der er påkrævet for den valgte liste(r) er markeret."
621
+
622
+ #: includes/integrations/views/integration-settings.php:62
623
+ msgid "Enabled?"
624
+ msgstr "Aktiveret?"
625
+
626
+ #: includes/integrations/views/integration-settings.php:66
627
+ msgid ""
628
+ "Enable the %s integration? This will add a sign-up checkbox to the form."
629
+ msgstr "Aktiver %s integration? Dette vil tilføje et tilmeldings afkrydsningsboks til formularen."
630
+
631
+ #: includes/integrations/views/integration-settings.php:76
632
+ msgid "Implicit?"
633
+ msgstr "Underforstået?"
634
+
635
+ #: includes/integrations/views/integration-settings.php:80
636
+ msgid ""
637
+ "Select \"no\" if you want to ask your visitors before they are subscribed "
638
+ "(recommended)."
639
+ msgstr "Vælg “nej”, hvis du ønsker at spørge dine besøgende, før de bliver tilmeldt (anbefales)."
640
+
641
+ #: includes/integrations/views/integration-settings.php:90
642
+ msgid "MailChimp Lists"
643
+ msgstr "MailChimp Lister"
644
+
645
+ #: includes/integrations/views/integration-settings.php:103
646
+ msgid ""
647
+ "Select the list(s) to which people who check the checkbox should be "
648
+ "subscribed."
649
+ msgstr "Vælg liste(r), som folk, der afkrydser afkrydsningsfeltet skal tilmeldes."
650
+
651
+ #: includes/integrations/views/integration-settings.php107,
652
+ #: includes/forms/views/tabs/form-settings.php:18
653
+ msgid "No lists found, <a href=\"%s\">are you connected to MailChimp</a>?"
654
+ msgstr "Ingen lister fundet, <a href=“%s”>er du forbundet til MailChimp?</a>"
655
+
656
+ #: includes/integrations/views/integration-settings.php:116
657
+ msgid "Checkbox label text"
658
+ msgstr "Afkrydsningsfelt label tekst"
659
+
660
+ #: includes/integrations/views/integration-settings.php:119
661
+ msgid "HTML tags like %s are allowed in the label text."
662
+ msgstr "HTML-tags som %s er tilladt i labelen tekst."
663
+
664
+ #: includes/integrations/views/integration-settings.php:129
665
+ msgid "Pre-check the checkbox?"
666
+ msgstr "Marker afkrydsningsfeltet?"
667
+
668
+ #: includes/integrations/views/integration-settings.php:133
669
+ msgid "Select \"yes\" if the checkbox should be pre-checked."
670
+ msgstr "Vælg “ja”, hvis afkrydsningsfeltet skal være markeret."
671
+
672
+ #: includes/integrations/views/integration-settings.php:141
673
+ msgid "Load some default CSS?"
674
+ msgstr "Indlæs noget standard CSS?"
675
+
676
+ #: includes/integrations/views/integration-settings.php:145
677
+ msgid "Select \"yes\" if the checkbox appears in a weird place."
678
+ msgstr "Vælg “ja”, hvis afkrydsningsfeltet vises et mærkeligt sted."
679
+
680
+ #: includes/integrations/views/integration-settings.php:152
681
+ msgid "Double opt-in?"
682
+ msgstr "Dobbelt opt-in?"
683
+
684
+ #: includes/integrations/views/integration-settings.php:163
685
+ msgid ""
686
+ "Select \"yes\" if you want people to confirm their email address before "
687
+ "being subscribed (recommended)"
688
+ msgstr "Vælg “Ja”, hvis du vil have folk til at bekræfte deres e-mail adresse, før de tilmeldes (anbefales)"
689
+
690
+ #: includes/integrations/views/integration-settings.php171,
691
+ #: includes/forms/views/tabs/form-settings.php:52
692
+ msgid "Update existing subscribers?"
693
+ msgstr "Opdatere eksisterende abonnenter?"
694
+
695
+ #: includes/integrations/views/integration-settings.php181,
696
+ #: includes/forms/views/tabs/form-settings.php:62
697
+ msgid ""
698
+ "Select \"yes\" if you want to update existing subscribers with the data that"
699
+ " is sent."
700
+ msgstr "Vælg “Ja”, hvis du ønsker at opdatere eksisterende abonnenter med de data, der sendes."
701
+
702
+ #: includes/integrations/views/integration-settings.php190,
703
+ #: includes/forms/views/tabs/form-settings.php:68
704
+ msgid "Replace interest groups?"
705
+ msgstr "Udskift interesse grupper?"
706
+
707
+ #: includes/integrations/views/integration-settings.php201,
708
+ #: includes/forms/views/tabs/form-settings.php:79
709
+ msgid ""
710
+ "Select \"no\" if you want to add the selected interests to any previously "
711
+ "selected interests when updating a subscriber."
712
+ msgstr ""
713
+
714
+ #: includes/integrations/views/integration-settings.php202,
715
+ #: includes/forms/views/tabs/form-settings.php:80
716
+ msgid "What does this do?"
717
+ msgstr "Hvad gør denne?"
718
+
719
+ #: includes/integrations/views/integrations.php:17
720
+ msgid "Name"
721
+ msgstr "Navn"
722
+
723
+ #: includes/integrations/views/integrations.php:18
724
+ msgid "Description"
725
+ msgstr "Beskrivelse"
726
+
727
+ #: includes/integrations/views/integrations.php:35
728
+ msgid "Configure this integration"
729
+ msgstr "Konfigurere denne integration"
730
+
731
+ #: includes/integrations/views/integrations.php:71
732
+ msgid "The table below shows all available integrations."
733
+ msgstr ""
734
+
735
+ #: includes/integrations/views/integrations.php:72
736
+ msgid ""
737
+ "Click on the name of an integration to edit all settings specific to that "
738
+ "integration."
739
+ msgstr ""
740
+
741
+ #: includes/integrations/views/integrations.php:79
742
+ msgid "Enabled integrations"
743
+ msgstr ""
744
+
745
+ #: includes/integrations/views/integrations.php:84
746
+ msgid "Available integrations"
747
+ msgstr ""
748
+
749
+ #: includes/views/parts/admin-footer.php:15
750
+ msgid ""
751
+ "MailChimp for WordPress is in need of translations. Is the plugin not "
752
+ "translated in your language or do you spot errors with the current "
753
+ "translations? Helping out is easy! Head over to <a href=\"%s\">the "
754
+ "translation project and click \"help translate\"</a>."
755
+ msgstr "MailChimp til WordPress har behov for oversættelser. Er dette plugin ikke oversat på dit sprog, eller har du fundet fejl i de nuværende oversættelser? At hjælpe til er nemt! Smut over til <a href=“%s”>oversættelses projektet og klik på “hjælp med at oversætte”.</a>"
756
+
757
+ #: includes/views/parts/admin-footer.php:35
758
+ msgid ""
759
+ "This plugin is not developed by or affiliated with MailChimp in any way."
760
+ msgstr "Dette plugin er ikke udviklet af eller tilknyttet MailChimp på nogen måde."
761
+
762
+ #: includes/views/parts/admin-sidebar.php:11
763
+ msgid "Looking for help?"
764
+ msgstr ""
765
+
766
+ #: includes/views/parts/admin-sidebar.php:12
767
+ msgid "We have some resources available to help you in the right direction."
768
+ msgstr ""
769
+
770
+ #: includes/views/parts/admin-sidebar.php:14
771
+ msgid "Knowledge Base"
772
+ msgstr ""
773
+
774
+ #: includes/views/parts/admin-sidebar.php:15
775
+ msgid "Frequently Asked Questions"
776
+ msgstr ""
777
+
778
+ #: includes/views/parts/admin-sidebar.php:16
779
+ msgid "Code reference for developers"
780
+ msgstr ""
781
+
782
+ #: includes/views/parts/admin-sidebar.php:36
783
+ msgid "Looking to improve your sign-up rates?"
784
+ msgstr ""
785
+
786
+ #: includes/views/parts/admin-sidebar.php:37
787
+ msgid ""
788
+ "Our <a href=\"%s\">Boxzilla plugin</a> allows you to create pop-ups or "
789
+ "slide-ins with a subscribe form. A sure way to grow your lists faster."
790
+ msgstr ""
791
+
792
+ #: includes/views/parts/lists-overview.php:1
793
+ msgid "Your MailChimp Account"
794
+ msgstr "Din MailChimp konto"
795
+
796
+ #: includes/views/parts/lists-overview.php:2
797
+ msgid ""
798
+ "The table below shows your MailChimp lists and their details. If you just "
799
+ "applied changes to your MailChimp lists, please use the following button to "
800
+ "renew the cached lists configuration."
801
+ msgstr "Tabellen nedenfor viser dine MailChimp lister og deres detaljer. Hvis du lige har tilføjet ændringer til en af dine MailChimp lister, skal du bruge følgende knap for at forny “lagerede lister konfigurationen”."
802
+
803
+ #: includes/views/parts/lists-overview.php:17
804
+ msgid "No lists were found in your MailChimp account"
805
+ msgstr "Ingen lister blev fundet i din MailChimp konto"
806
 
807
+ #: includes/views/parts/lists-overview.php:19
808
+ msgid "A total of %d lists were found in your MailChimp account."
809
+ msgstr "Der blev i alt fundet % d lister på din MailChimp konto."
 
 
 
810
 
811
+ #: includes/views/parts/lists-overview.php:24
812
+ msgid "List Name"
813
+ msgstr "Liste Navn"
814
 
815
+ #: includes/views/parts/lists-overview.php:25
816
+ msgid "ID"
817
+ msgstr "ID"
818
 
819
+ #: includes/views/parts/lists-overview.php:26
820
+ msgid "Subscribers"
821
+ msgstr "Abonnenter"
822
 
823
+ #: includes/views/parts/lists-overview.php:48
824
+ msgid "Edit this list in MailChimp"
825
+ msgstr "Redigere denne liste i MailChimp"
826
 
827
+ #: includes/views/parts/lists-overview.php:62
828
+ msgid "%s (%s) with field type %s."
829
+ msgstr "%s (%s) med felttype %s."
830
 
831
+ #: includes/forms/views/parts/add-fields-help.php4,
832
  #: includes/forms/views/tabs/form-fields.php:10
833
  msgid "Add more fields"
834
  msgstr "Tilføj flere felter"
865
  "changes."
866
  msgstr "Klik på følgende knap for at få MailChimp for WordPress indsamle dine ændringer."
867
 
 
 
 
 
 
868
  #: includes/forms/views/parts/dynamic-content-tags.php:6
869
  msgid "Add dynamic form variable"
870
  msgstr "Tilføj dynamisk formular variabel"
937
  msgid "Enter the HTML code for your form fields.."
938
  msgstr "Indtast HTML-kode til dit formularfelter .."
939
 
940
+ #: includes/forms/views/tabs/form-fields.php:26
 
 
 
 
941
  msgid ""
942
  "Use the shortcode %s to display this form inside a post, page or text "
943
  "widget."
944
  msgstr "Brug denne shortcode%s for at vise denne formular i en post, side eller tekst widget."
945
 
946
+ #: includes/forms/views/tabs/form-messages.php:6
947
  msgid "Form Messages"
948
  msgstr "Formular beskeder"
949
 
950
+ #: includes/forms/views/tabs/form-messages.php:16
951
  msgid "Successfully subscribed"
952
  msgstr "Du er nu tilmeldt"
953
 
954
+ #: includes/forms/views/tabs/form-messages.php:19
955
  msgid ""
956
  "The text that shows when an email address is successfully subscribed to the "
957
  "selected list(s)."
958
  msgstr "Den tekst, der viser, hvornår en email adresse er korrekt tilmeldt den valgte liste(r)."
959
 
960
+ #: includes/forms/views/tabs/form-messages.php:23
961
  msgid "Invalid email address"
962
  msgstr "Ugyldig email adresse"
963
 
964
+ #: includes/forms/views/tabs/form-messages.php:26
965
  msgid "The text that shows when an invalid email address is given."
966
  msgstr "Den tekst, der viser, hvornår en ugyldig email adresse er givet."
967
 
968
+ #: includes/forms/views/tabs/form-messages.php:30
969
  msgid "Required field missing"
970
  msgstr "Påkrævet felt mangler"
971
 
972
+ #: includes/forms/views/tabs/form-messages.php:33
973
  msgid ""
974
  "The text that shows when a required field for the selected list(s) is "
975
  "missing."
976
  msgstr "Den tekst, der viser, hvornår et obligatorisk felt for den valgte liste(r) mangler."
977
 
978
+ #: includes/forms/views/tabs/form-messages.php:37
979
  msgid "Already subscribed"
980
  msgstr "Allerede tilmeldt"
981
 
982
+ #: includes/forms/views/tabs/form-messages.php:40
983
  msgid ""
984
  "The text that shows when the given email is already subscribed to the "
985
  "selected list(s)."
986
  msgstr "Den tekst, der viser, hvornår en email adresse allerede er tilmeldt den valgte liste(r)."
987
 
988
+ #: includes/forms/views/tabs/form-messages.php:44
989
  msgid "General error"
990
  msgstr "Generel fejl"
991
 
992
+ #: includes/forms/views/tabs/form-messages.php:47
993
  msgid "The text that shows when a general error occured."
994
  msgstr "Den tekst, der viser, at en generel fejl er opstået."
995
 
996
+ #: includes/forms/views/tabs/form-messages.php:51
997
  msgid "Unsubscribed"
998
  msgstr "Afmeldt"
999
 
1000
+ #: includes/forms/views/tabs/form-messages.php:54
1001
  msgid ""
1002
  "When using the unsubscribe method, this is the text that shows when the "
1003
  "given email address is successfully unsubscribed from the selected list(s)."
1004
  msgstr "Ved brug af “afmeld metoden”, er dette den tekst, der viser, hvornår den givne e-mail adresse er afmeldt den valgte liste (r)."
1005
 
1006
+ #: includes/forms/views/tabs/form-messages.php:58
1007
  msgid "Not subscribed"
1008
  msgstr "Ikke tilmeldt"
1009
 
1010
+ #: includes/forms/views/tabs/form-messages.php:61
1011
  msgid ""
1012
  "When using the unsubscribe method, this is the text that shows when the "
1013
  "given email address is not on the selected list(s)."
1014
  msgstr "Ved brug af “afmelde metode”, er dette den tekst, der viser, hvis den givne email adressen ikke er på den valgte liste (r)."
1015
 
1016
+ #: includes/forms/views/tabs/form-messages.php:65
1017
+ msgid "No list selected"
1018
+ msgstr ""
1019
+
1020
+ #: includes/forms/views/tabs/form-messages.php:68
1021
+ msgid ""
1022
+ "When offering a list choice, this is the text that shows when no lists were "
1023
+ "selected."
1024
+ msgstr ""
1025
+
1026
+ #: includes/forms/views/tabs/form-messages.php:74
1027
+ msgid "Updated"
1028
+ msgstr ""
1029
+
1030
+ #: includes/forms/views/tabs/form-messages.php:77
1031
+ msgid "The text that shows when an existing subscriber is updated."
1032
+ msgstr ""
1033
+
1034
+ #: includes/forms/views/tabs/form-messages.php:89
1035
  msgid "HTML tags like %s are allowed in the message fields."
1036
  msgstr "HTML-tags som %s er tilladt i besked felterne."
1037
 
1043
  msgid "MailChimp specific settings"
1044
  msgstr "MailChimp specifikke indstillinger"
1045
 
1046
+ #: includes/forms/views/tabs/form-settings.php:15
1047
  msgid "Lists this form subscribes to"
1048
  msgstr "Lister denne formular abonnerer på"
1049
 
1050
+ #: includes/forms/views/tabs/form-settings.php:31
 
 
 
 
 
1051
  msgid ""
1052
  "Select the list(s) to which people who submit this form should be "
1053
  "subscribed."
1054
  msgstr "Vælg liste(r), som folk, der indsender denne formular skal tilmeldes på."
1055
 
1056
+ #: includes/forms/views/tabs/form-settings.php:37
1057
  msgid "Use double opt-in?"
1058
  msgstr "Brug dobbelt opt-in?"
1059
 
1060
+ #: includes/forms/views/tabs/form-settings.php:44
1061
+ msgid "Are you sure you want to disable double opt-in?"
1062
+ msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1063
 
1064
+ #: includes/forms/views/tabs/form-settings.php:47
 
1065
  msgid ""
1066
+ "We strongly suggest keeping double opt-in enabled. Disabling double opt-in "
1067
+ "may result in abuse."
1068
+ msgstr ""
 
 
 
 
 
1069
 
1070
+ #: includes/forms/views/tabs/form-settings.php:94
1071
  msgid "Form behaviour"
1072
  msgstr "Formular adfærd"
1073
 
1074
+ #: includes/forms/views/tabs/form-settings.php:104
1075
  msgid "Hide form after a successful sign-up?"
1076
  msgstr "Skjul formular efter en vellykket tilmelding?"
1077
 
1078
+ #: includes/forms/views/tabs/form-settings.php:115
1079
  msgid "Select \"yes\" to hide the form fields after a successful sign-up."
1080
  msgstr "Vælg “Ja” for at skjule formularfelterne efter en vellykket tilmelding."
1081
 
1082
+ #: includes/forms/views/tabs/form-settings.php:120
1083
  msgid "Redirect to URL after successful sign-ups"
1084
  msgstr "Omdiriger til URL efter vellykkede tilmelding"
1085
 
1086
+ #: includes/forms/views/tabs/form-settings.php:122
1087
  msgid "Example: %s"
1088
  msgstr "Eksempel: %s"
1089
 
1090
+ #: includes/forms/views/tabs/form-settings.php:123
1091
  msgid ""
1092
  "Leave empty or enter <code>0</code> for no redirect. Otherwise, use complete"
1093
  " (absolute) URLs, including <code>http://</code>."
1094
  msgstr "Efterlad tomt eller indtast <code>0</code> for ingen omdirigering. Ellers skal du bruge komplet (absolut) URL’er, herunder <code>http://</code>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/mailchimp-for-wp-fr_FR.mo CHANGED
Binary file
languages/mailchimp-for-wp-fr_FR.po CHANGED
@@ -18,13 +18,15 @@
18
  # Mamadou Gaye Diop <ridialass@gmail.com>, 2016
19
  # Marie Chausse <mariechausse83@gmail.com>, 2016
20
  # Martin Dulude <mdulude@duludeit.ca>, 2017
 
 
21
  # sleininger <stef.leininger@gmail.com>, 2014
22
  # Yan Chardard <ychardard@gmail.com>, 2016
23
  msgid ""
24
  msgstr ""
25
  "Project-Id-Version: MailChimp for WordPress\n"
26
- "PO-Revision-Date: 2017-03-17 21:29+0000\n"
27
- "Last-Translator: JAILLET Christophe <c.jaillet@meci.fr>\n"
28
  "Language-Team: French (France) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/fr_FR/)\n"
29
  "MIME-Version: 1.0\n"
30
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -113,7 +115,7 @@ msgid ""
113
  "Be notified whenever someone subscribes? <a href=\"%s\">MailChimp for "
114
  "WordPress Premium</a> allows you to set up email notifications for your "
115
  "forms."
116
- msgstr ""
117
 
118
  #: includes/admin/class-ads.php:56
119
  msgid ""
@@ -124,13 +126,13 @@ msgstr ""
124
 
125
  #: includes/admin/class-ads.php:70
126
  msgid "Upgrade to Premium"
127
- msgstr ""
128
 
129
  #: includes/admin/class-ads.php:83
130
  msgid ""
131
  "Do you want translated forms for all of your languages? <a href=\"%s\">Try "
132
  "MailChimp for WordPress Premium</a>, which does just that plus more."
133
- msgstr ""
134
 
135
  #: includes/admin/class-ads.php:88
136
  msgid ""
@@ -224,7 +226,7 @@ msgstr "Choisissez un champ à ajouter au formulaire"
224
 
225
  #: includes/forms/class-admin.php:68
226
  msgid "Close"
227
- msgstr ""
228
 
229
  #: includes/forms/class-admin.php:69
230
  msgid "Country"
@@ -236,7 +238,7 @@ msgstr "Liste déroulante"
236
 
237
  #: includes/forms/class-admin.php:71
238
  msgid "Field type"
239
- msgstr ""
240
 
241
  #: includes/forms/class-admin.php:72
242
  msgid "Field label"
@@ -282,7 +284,7 @@ msgstr ""
282
 
283
  #: includes/forms/class-admin.php:82
284
  msgid "List fields"
285
- msgstr ""
286
 
287
  #: includes/forms/class-admin.php:83
288
  msgid "Min"
@@ -315,7 +317,7 @@ msgstr ""
315
 
316
  #: includes/forms/class-admin.php:90
317
  msgid "Remove"
318
- msgstr ""
319
 
320
  #: includes/forms/class-admin.php:91
321
  msgid "Radio buttons"
@@ -323,11 +325,11 @@ msgstr "Boutons radio"
323
 
324
  #: includes/forms/class-admin.php:92
325
  msgid "Street Address"
326
- msgstr ""
327
 
328
  #: includes/forms/class-admin.php:93
329
  msgid "State"
330
- msgstr ""
331
 
332
  #: includes/forms/class-admin.php:95
333
  msgid "Submit button"
@@ -339,7 +341,7 @@ msgstr ""
339
 
340
  #: includes/forms/class-admin.php:97
341
  msgid "Value"
342
- msgstr ""
343
 
344
  #: includes/forms/class-admin.php:98
345
  msgid "Text to prefill this field with."
@@ -347,7 +349,7 @@ msgstr "Libellé utilisé pour remplir ce champ."
347
 
348
  #: includes/forms/class-admin.php:99
349
  msgid "ZIP"
350
- msgstr ""
351
 
352
  #: includes/forms/class-admin.php111, includes/forms/class-admin.php112,
353
  #: includes/forms/views/edit-form.php:24
@@ -368,7 +370,7 @@ msgstr "Formulaire d’enregistrement à MailChimp"
368
 
369
  #: includes/forms/class-admin.php:453
370
  msgid "Select the form to show"
371
- msgstr ""
372
 
373
  #: includes/forms/class-form-previewer.php:146
374
  msgid "Form preview"
@@ -384,7 +386,7 @@ msgstr "Données de l\"URL ou d'un formulaire envoyé."
384
 
385
  #: includes/forms/class-form-tags.php:71
386
  msgid "Data from a cookie."
387
- msgstr ""
388
 
389
  #: includes/forms/class-form-tags.php77,
390
  #: includes/integrations/class-integration-tags.php:45
@@ -425,7 +427,7 @@ msgstr "La propriété de l'utilisateur connecté."
425
 
426
  #: includes/forms/class-form-tags.php:123
427
  msgid "Property of the current page or post."
428
- msgstr ""
429
 
430
  #: includes/forms/class-form.php:133
431
  msgid "There is no form with ID %d, perhaps it was deleted?"
@@ -478,7 +480,7 @@ msgstr "CONNECTÉ"
478
 
479
  #: includes/views/general-settings.php:44
480
  msgid "NOT CONNECTED"
481
- msgstr "NON CONNECTE"
482
 
483
  #: includes/views/general-settings.php:51
484
  msgid "API Key"
@@ -498,7 +500,7 @@ msgstr "Récupérez votre clé API ici."
498
 
499
  #: includes/views/other-settings.php:14
500
  msgid "Miscellaneous settings"
501
- msgstr ""
502
 
503
  #: includes/views/other-settings.php:17
504
  msgid "Usage Tracking"
@@ -530,7 +532,7 @@ msgstr "Trace de mise au point"
530
 
531
  #: includes/views/other-settings.php:99
532
  msgid "Filter.."
533
- msgstr "Filtre.."
534
 
535
  #: includes/views/other-settings.php:104
536
  msgid "Log file is not writable."
@@ -590,7 +592,7 @@ msgstr "Apparence"
590
 
591
  #: includes/forms/views/edit-form.php:25
592
  msgid "Form"
593
- msgstr ""
594
 
595
  #: includes/forms/views/edit-form.php:34
596
  msgid "Edit Form"
@@ -792,7 +794,7 @@ msgstr "Foire Aux Questions"
792
 
793
  #: includes/views/parts/admin-sidebar.php:16
794
  msgid "Code reference for developers"
795
- msgstr ""
796
 
797
  #: includes/views/parts/admin-sidebar.php:36
798
  msgid "Looking to improve your sign-up rates?"
@@ -1074,13 +1076,13 @@ msgstr "Utiliser le double opt-in ?"
1074
 
1075
  #: includes/forms/views/tabs/form-settings.php:44
1076
  msgid "Are you sure you want to disable double opt-in?"
1077
- msgstr ""
1078
 
1079
  #: includes/forms/views/tabs/form-settings.php:47
1080
  msgid ""
1081
  "We strongly suggest keeping double opt-in enabled. Disabling double opt-in "
1082
  "may result in abuse."
1083
- msgstr ""
1084
 
1085
  #: includes/forms/views/tabs/form-settings.php:94
1086
  msgid "Form behaviour"
18
  # Mamadou Gaye Diop <ridialass@gmail.com>, 2016
19
  # Marie Chausse <mariechausse83@gmail.com>, 2016
20
  # Martin Dulude <mdulude@duludeit.ca>, 2017
21
+ # Sabrina Antunez <sabrina.antunez@hotmail.com>, 2017
22
+ # rafie <s.rafie@gmail.com>, 2017
23
  # sleininger <stef.leininger@gmail.com>, 2014
24
  # Yan Chardard <ychardard@gmail.com>, 2016
25
  msgid ""
26
  msgstr ""
27
  "Project-Id-Version: MailChimp for WordPress\n"
28
+ "PO-Revision-Date: 2017-05-04 15:20+0000\n"
29
+ "Last-Translator: Sabrina Antunez <sabrina.antunez@hotmail.com>\n"
30
  "Language-Team: French (France) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/fr_FR/)\n"
31
  "MIME-Version: 1.0\n"
32
  "Content-Type: text/plain; charset=UTF-8\n"
115
  "Be notified whenever someone subscribes? <a href=\"%s\">MailChimp for "
116
  "WordPress Premium</a> allows you to set up email notifications for your "
117
  "forms."
118
+ msgstr "Recevoir une notification chaque fois que quelqu'un s'abonne ? <a href=\"%s\"> La version Premium de MailChimp pour WordPress</a> vous permet de mettre en place des emails de notification pour vos formulaires."
119
 
120
  #: includes/admin/class-ads.php:56
121
  msgid ""
126
 
127
  #: includes/admin/class-ads.php:70
128
  msgid "Upgrade to Premium"
129
+ msgstr "Passez à la version supérieure"
130
 
131
  #: includes/admin/class-ads.php:83
132
  msgid ""
133
  "Do you want translated forms for all of your languages? <a href=\"%s\">Try "
134
  "MailChimp for WordPress Premium</a>, which does just that plus more."
135
+ msgstr "Vous souhaitez avoir des formulaires traduits pour toutes vos langues ? <a href=\"%s\"> Essayez la version Premium de MailChimp pour Wordpress </a>, qui inclue ce détail supplémentaire."
136
 
137
  #: includes/admin/class-ads.php:88
138
  msgid ""
226
 
227
  #: includes/forms/class-admin.php:68
228
  msgid "Close"
229
+ msgstr "Fermer"
230
 
231
  #: includes/forms/class-admin.php:69
232
  msgid "Country"
238
 
239
  #: includes/forms/class-admin.php:71
240
  msgid "Field type"
241
+ msgstr "Type de champ"
242
 
243
  #: includes/forms/class-admin.php:72
244
  msgid "Field label"
284
 
285
  #: includes/forms/class-admin.php:82
286
  msgid "List fields"
287
+ msgstr "Lister les champs"
288
 
289
  #: includes/forms/class-admin.php:83
290
  msgid "Min"
317
 
318
  #: includes/forms/class-admin.php:90
319
  msgid "Remove"
320
+ msgstr "Retirer"
321
 
322
  #: includes/forms/class-admin.php:91
323
  msgid "Radio buttons"
325
 
326
  #: includes/forms/class-admin.php:92
327
  msgid "Street Address"
328
+ msgstr "Nom de la rue"
329
 
330
  #: includes/forms/class-admin.php:93
331
  msgid "State"
332
+ msgstr "État"
333
 
334
  #: includes/forms/class-admin.php:95
335
  msgid "Submit button"
341
 
342
  #: includes/forms/class-admin.php:97
343
  msgid "Value"
344
+ msgstr "Valeur"
345
 
346
  #: includes/forms/class-admin.php:98
347
  msgid "Text to prefill this field with."
349
 
350
  #: includes/forms/class-admin.php:99
351
  msgid "ZIP"
352
+ msgstr "zip"
353
 
354
  #: includes/forms/class-admin.php111, includes/forms/class-admin.php112,
355
  #: includes/forms/views/edit-form.php:24
370
 
371
  #: includes/forms/class-admin.php:453
372
  msgid "Select the form to show"
373
+ msgstr "Choisissez le formulaire à afficher"
374
 
375
  #: includes/forms/class-form-previewer.php:146
376
  msgid "Form preview"
386
 
387
  #: includes/forms/class-form-tags.php:71
388
  msgid "Data from a cookie."
389
+ msgstr "Données à partir d'un cookie"
390
 
391
  #: includes/forms/class-form-tags.php77,
392
  #: includes/integrations/class-integration-tags.php:45
427
 
428
  #: includes/forms/class-form-tags.php:123
429
  msgid "Property of the current page or post."
430
+ msgstr "Propriété de la page ou de l'article actuels"
431
 
432
  #: includes/forms/class-form.php:133
433
  msgid "There is no form with ID %d, perhaps it was deleted?"
480
 
481
  #: includes/views/general-settings.php:44
482
  msgid "NOT CONNECTED"
483
+ msgstr "NON CONNECTÉ"
484
 
485
  #: includes/views/general-settings.php:51
486
  msgid "API Key"
500
 
501
  #: includes/views/other-settings.php:14
502
  msgid "Miscellaneous settings"
503
+ msgstr "Réglages divers"
504
 
505
  #: includes/views/other-settings.php:17
506
  msgid "Usage Tracking"
532
 
533
  #: includes/views/other-settings.php:99
534
  msgid "Filter.."
535
+ msgstr "Filtrer.."
536
 
537
  #: includes/views/other-settings.php:104
538
  msgid "Log file is not writable."
592
 
593
  #: includes/forms/views/edit-form.php:25
594
  msgid "Form"
595
+ msgstr "Formulaire"
596
 
597
  #: includes/forms/views/edit-form.php:34
598
  msgid "Edit Form"
794
 
795
  #: includes/views/parts/admin-sidebar.php:16
796
  msgid "Code reference for developers"
797
+ msgstr "Code de référence pour les développeurs"
798
 
799
  #: includes/views/parts/admin-sidebar.php:36
800
  msgid "Looking to improve your sign-up rates?"
1076
 
1077
  #: includes/forms/views/tabs/form-settings.php:44
1078
  msgid "Are you sure you want to disable double opt-in?"
1079
+ msgstr "Etes-vous sûr de vouloir désactiver la double validation d'abonnement ?"
1080
 
1081
  #: includes/forms/views/tabs/form-settings.php:47
1082
  msgid ""
1083
  "We strongly suggest keeping double opt-in enabled. Disabling double opt-in "
1084
  "may result in abuse."
1085
+ msgstr "Nous vous recommandons fortement de conserver l'option de double validation d'abonnement activée. En la désactivant, vos emails pourraient être considérés comme non spams."
1086
 
1087
  #: includes/forms/views/tabs/form-settings.php:94
1088
  msgid "Form behaviour"
languages/mailchimp-for-wp-nl_NL.mo CHANGED
Binary file
languages/mailchimp-for-wp-nl_NL.po CHANGED
@@ -1,76 +1,30 @@
1
- # Copyright (C) 2015 MailChimp for WordPress
2
- # This file is distributed under the same license as the MailChimp for WordPress package.
3
  # Translators:
4
- # Danny van Kooten <dannyvankooten@gmail.com>, 2014-2016
5
  # Eelco Martens <eelco.martens@gmail.com>, 2015
6
  # Form App <formappmobile@gmail.com>, 2016
 
7
  # Martijn van Egmond <developer@tensheep.nl>, 2015
8
  # Yola Maas <post@basicsoflive.nl>, 2016
9
  msgid ""
10
  msgstr ""
11
  "Project-Id-Version: MailChimp for WordPress\n"
12
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mailchimp-for-wp\n"
13
- "POT-Creation-Date: 2015-11-30 10:15:18+00:00\n"
14
- "PO-Revision-Date: 2016-07-05 08:40+0000\n"
15
- "Last-Translator: Danny van Kooten <dannyvankooten@gmail.com>\n"
16
  "Language-Team: Dutch (Netherlands) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/nl_NL/)\n"
17
  "MIME-Version: 1.0\n"
18
  "Content-Type: text/plain; charset=UTF-8\n"
19
  "Content-Transfer-Encoding: 8bit\n"
20
  "Language: nl_NL\n"
21
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 
 
 
 
22
 
23
- #: config/default-form-content.php:3
24
- msgid "Email address"
25
- msgstr "Emailadres"
26
-
27
- #: config/default-form-content.php:4
28
- msgid "Your email address"
29
- msgstr "Jouw emailadres"
30
-
31
- #: config/default-form-content.php:5
32
- msgid "Sign up"
33
- msgstr "Inschrijven"
34
-
35
- #: config/default-form-messages.php:5
36
- msgid ""
37
- "Thank you, your sign-up request was successful! Please check your email "
38
- "inbox to confirm."
39
- msgstr "Dankjewel, je inschrijfverzoek was succesvol. Controleer je email inbox voor 'n bevestiging."
40
-
41
- #: config/default-form-messages.php:9
42
- msgid "Oops. Something went wrong. Please try again later."
43
- msgstr "Oeps, er ging iets fout. Probeer het aub later opnieuw."
44
-
45
- #: config/default-form-messages.php:13
46
- msgid "Please provide a valid email address."
47
- msgstr "Geef een geldig emailadres in."
48
-
49
- #: config/default-form-messages.php:17
50
- msgid "Given email address is already subscribed, thank you!"
51
- msgstr "Dit emailadres is reeds ingeschreven, dankjewel!"
52
-
53
- #: config/default-form-messages.php:21
54
- msgid "Please fill in the required fields."
55
- msgstr "Vul aub de verplichte velden in."
56
-
57
- #: config/default-form-messages.php:25
58
- msgid "You were successfully unsubscribed."
59
- msgstr "Je bent succesvol uitgeschreven."
60
-
61
- #: config/default-form-messages.php:29
62
- msgid "Given email address is not subscribed."
63
- msgstr "Dit emailadres is niet ingeschreven."
64
-
65
- #: config/default-form-messages.php:33
66
- msgid "Please select at least one list."
67
- msgstr "Selecteer ten minste 1 lijst."
68
-
69
- #: config/default-integration-options.php:5
70
- msgid "Sign me up for the newsletter!"
71
- msgstr "Schrijf me in voor de nieuwsbrief!"
72
-
73
- #: includes/admin/class-admin-texts.php:62
74
  #: includes/forms/views/edit-form.php:6
75
  msgid "Settings"
76
  msgstr "Instellingen"
@@ -79,141 +33,388 @@ msgstr "Instellingen"
79
  msgid "Documentation"
80
  msgstr "Documentatie"
81
 
82
- #: includes/admin/class-admin.php:167
83
  msgid ""
84
  "Success! The cached configuration for your MailChimp lists has been renewed."
85
  msgstr "Succes! De configuratie voor je MailChimp lijsten is ververst."
86
 
87
- #: includes/admin/class-admin.php:257
88
  msgid ""
89
  "This is a pro-only feature. Please upgrade to the premium version to be able"
90
  " to use it."
91
  msgstr "Dit is een premium-feature. Upgrade naar de premium versie om deze te unlocken."
92
 
93
- #: includes/admin/class-admin.php:323 includes/views/general-settings.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  msgid "MailChimp API Settings"
95
  msgstr "MailChimp API Instellingen"
96
 
97
- #: includes/admin/class-admin.php:324
98
- #: integrations/ninja-forms/class-ninja-forms.php:34
99
  msgid "MailChimp"
100
  msgstr "MailChimp"
101
 
102
- #: includes/admin/class-ads.php:33
103
- msgid "Upgrade to MailChimp for WordPress Pro"
104
- msgstr "Upgrade naar de premium versie van MailChimp for WordPress"
 
105
 
106
- #: includes/admin/class-ads.php:41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  msgid ""
108
- "Enjoying this plugin? <a href=\"%s\">Purchase our bundle of premium "
109
- "features</a> for an even better plugin."
110
- msgstr "Gebruik je deze plugin met plezier? <a href=\"%s\">Koop de Premium add-on </a> voor een nog betere plugin."
111
 
112
- #: includes/admin/class-ads.php:62
 
 
 
 
 
 
 
 
 
 
 
 
113
  msgid "More subscribers, better newsletters."
114
  msgstr "Meer abonnees, betere nieuwsbrieven."
115
 
116
- #: includes/admin/class-ads.php:63
117
  msgid ""
118
  "Learn how to best grow your lists & write better emails by subscribing to "
119
  "our monthly tips."
120
- msgstr "Leer hoe je de lijst kan vergroten en schrijf betere mails door je in te schrijven voor onze maandelijkse tips"
121
 
122
- #: includes/admin/class-ads.php:66
123
  msgid "Email Address"
124
- msgstr "Email adres"
125
 
126
- #: includes/admin/class-ads.php:70
127
  msgid "First Name"
128
  msgstr "Voornaam"
129
 
130
- #: includes/admin/class-ads.php:77
131
  msgid "Subscribe"
132
  msgstr "Inschrijven"
133
 
134
- #: includes/admin/class-usage-tracking.php:57
135
- msgid "Once a month"
136
- msgstr "Eens per maand"
 
 
137
 
138
- #: includes/admin/migrations/3.0-form-1-post-type.php:35
139
- msgid "Default sign-up form"
140
- msgstr "Standaard inschrijfformulier"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
 
142
- #: includes/class-api.php:83
143
  msgid "Read more about common connectivity issues."
144
  msgstr "Lees meer over veel voorkomende verbindingsproblemen."
145
 
146
- #: includes/forms/class-admin.php:71 includes/forms/class-admin.php:72
147
- #: includes/forms/views/edit-form.php:17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  msgid "Forms"
149
  msgstr "Formulieren"
150
 
151
- #: includes/forms/class-admin.php:101 includes/forms/class-admin.php:176
152
  msgid "<strong>Success!</strong> Form successfully saved."
153
  msgstr "<strong>Succes!</strong> Formulier succesvol opgeslagen."
154
 
155
- #: includes/forms/class-admin.php:176
156
  msgid "Preview form"
157
  msgstr "Voorbeeld formulier"
158
 
159
- #: includes/forms/class-admin.php:279
160
- msgid "Form not found."
161
- msgstr "Formulier niet gevonden."
162
 
163
- #: includes/forms/class-admin.php:281
164
- msgid "Go back"
165
- msgstr "Ga terug"
166
 
167
- #: includes/forms/class-form-previewer.php:162
168
  msgid "Form preview"
169
  msgstr "Formulier voorbeeld"
170
 
171
- #: includes/forms/class-form-tags.php:51
172
  msgid "Replaced with the form response (error or success messages)."
173
  msgstr "Wordt vervangen door de formulier response (fout- en succesmeldingen)."
174
 
175
- #: includes/forms/class-form-tags.php:56
176
  msgid "Data from the URL or a submitted form."
177
- msgstr "Data van de URL of een bestaand formulier"
178
 
179
- #: includes/forms/class-form-tags.php:62
 
 
 
 
180
  #: includes/integrations/class-integration-tags.php:45
181
  msgid "Replaced with the number of subscribers on the selected list(s)"
182
  msgstr "Vervangen door het aantal subscribers op de geselecteerde lijst(en)"
183
 
184
- #: includes/forms/class-form-tags.php:67
185
  msgid "The email address of the current visitor (if known)."
186
  msgstr "Emailadres van huidige bezoeker (wanneer bekend)"
187
 
188
- #: includes/forms/class-form-tags.php:72
189
  msgid "The URL of the page."
190
  msgstr "De URL van de pagina."
191
 
192
- #: includes/forms/class-form-tags.php:77
193
  msgid "The path of the page."
194
  msgstr "Het codepad van de pagina"
195
 
196
- #: includes/forms/class-form-tags.php:82
197
  msgid "The current date. Example: %s."
198
  msgstr "De huidige datum. Voorbeeld: %S."
199
 
200
- #: includes/forms/class-form-tags.php:87
201
  msgid "The current time. Example: %s."
202
  msgstr "De huidige tijd. Voorbeeld: %S."
203
 
204
- #: includes/forms/class-form-tags.php:92
205
  msgid "The site's language. Example: %s."
206
  msgstr "Taal van de site. bijvoorbeeld: %s"
207
 
208
- #: includes/forms/class-form-tags.php:97
209
  msgid "The visitor's IP address. Example: %s."
210
  msgstr "Bezoekers IP adres. Bijvoorbeeld: %s."
211
 
212
- #: includes/forms/class-form-tags.php:102
213
  msgid "The property of the currently logged-in user."
214
  msgstr "De rechten van de huidige ingelogte gebruiker."
215
 
216
- #: includes/forms/class-form.php:128
 
 
 
 
217
  msgid "There is no form with ID %d, perhaps it was deleted?"
218
  msgstr "Er is geen formulier met ID %d. Is het verwijderd?"
219
 
@@ -221,10 +422,6 @@ msgstr "Er is geen formulier met ID %d. Is het verwijderd?"
221
  msgid "Newsletter"
222
  msgstr "Nieuwsbrief"
223
 
224
- #: includes/forms/class-widget.php:30
225
- msgid "MailChimp Sign-Up Form"
226
- msgstr "MailChimp Inschrijfformulier"
227
-
228
  #: includes/forms/class-widget.php:32
229
  msgid "Displays your MailChimp for WordPress sign-up form"
230
  msgstr "Toont je MailChimp voor WordPress inschrijfformulier"
@@ -239,7 +436,114 @@ msgid ""
239
  " form settings</a>."
240
  msgstr "Je kunt je inschrijfformulier wijzigen in de <a href=\"%s\">MailChimp voor WordPress formulier instellingen</a>."
241
 
242
- #: includes/forms/views/add-form.php:10 includes/forms/views/add-form.php:60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  msgid "Add new form"
244
  msgstr "Voeg nieuw formulier toe"
245
 
@@ -267,38 +571,266 @@ msgstr "Velden"
267
  msgid "Messages"
268
  msgstr "Berichten"
269
 
270
- #: includes/forms/views/edit-form.php:7
271
- msgid "Appearance"
272
- msgstr "Weergave"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
 
274
- #: includes/forms/views/edit-form.php:15
275
- #: includes/integrations/views/integration-settings.php:8
276
- #: includes/integrations/views/integrations.php:7
277
- #: includes/views/general-settings.php:7
278
- msgid "You are here: "
279
- msgstr "Je bent hier:"
280
 
281
- #: includes/forms/views/edit-form.php:27
282
- msgid "Edit Form"
283
- msgstr "Wijzig Formulier"
284
 
285
- #: includes/forms/views/edit-form.php:45
286
- msgid "Enter form title here"
287
- msgstr "Typ je formulier titel hier"
288
 
289
- #: includes/forms/views/edit-form.php:46
290
- msgid "Enter the title of your sign-up form"
291
- msgstr "Typ de titel van je inschrijfformulier"
292
 
293
- #: includes/forms/views/edit-form.php:54
294
- msgid "Get shortcode"
295
- msgstr "Toon shortcode"
296
 
297
- #: includes/forms/views/edit-form.php:59
298
- msgid "Preview this form"
299
- msgstr "Toon een voorbeeld van dit formulier"
300
 
301
- #: includes/forms/views/parts/add-fields-help.php:4
302
  #: includes/forms/views/tabs/form-fields.php:10
303
  msgid "Add more fields"
304
  msgstr "Meer velden toevoegen"
@@ -335,11 +867,6 @@ msgid ""
335
  "changes."
336
  msgstr "Klik op de volgende knop, voor MailChimp voor Wordpress pick up en jouw wijzigingen"
337
 
338
- #: includes/forms/views/parts/add-fields-help.php:43
339
- #: includes/views/parts/lists-overview.php:8
340
- msgid "Renew MailChimp lists"
341
- msgstr "Vernieuw MailChimp lijsten"
342
-
343
  #: includes/forms/views/parts/dynamic-content-tags.php:6
344
  msgid "Add dynamic form variable"
345
  msgstr "Voeg een dynamisch formulier variabelen toe"
@@ -412,87 +939,101 @@ msgstr "Formulier Velden"
412
  msgid "Enter the HTML code for your form fields.."
413
  msgstr "Voer de HTML code voor je formulier velden in."
414
 
415
- #: includes/forms/views/tabs/form-fields.php:27
416
- msgid "Your form is missing the following (required) form fields:"
417
- msgstr "Je formulier mist de volgende (verplichte) velden:"
418
-
419
- #: includes/forms/views/tabs/form-fields.php:34
420
  msgid ""
421
  "Use the shortcode %s to display this form inside a post, page or text "
422
  "widget."
423
  msgstr "Gebruik de %s shortcode om dit formulier in een post, pagina of tekst widget te tonen."
424
 
425
- #: includes/forms/views/tabs/form-messages.php:3
426
  msgid "Form Messages"
427
  msgstr "Formulier Berichten"
428
 
429
- #: includes/forms/views/tabs/form-messages.php:10
430
  msgid "Successfully subscribed"
431
  msgstr "Succesvol ingeschreven"
432
 
433
- #: includes/forms/views/tabs/form-messages.php:13
434
  msgid ""
435
  "The text that shows when an email address is successfully subscribed to the "
436
  "selected list(s)."
437
  msgstr "De tekst die verschijnt wanneer een emailadres succesvol toegevoegd is aan de geselecteerde MailChimp lijst(en)."
438
 
439
- #: includes/forms/views/tabs/form-messages.php:17
440
  msgid "Invalid email address"
441
  msgstr "Ongeldig emailadres"
442
 
443
- #: includes/forms/views/tabs/form-messages.php:20
444
  msgid "The text that shows when an invalid email address is given."
445
  msgstr "De tekst die verschijnt wanneer een foutief email adres is ingevuld.Î"
446
 
447
- #: includes/forms/views/tabs/form-messages.php:24
448
  msgid "Required field missing"
449
  msgstr "Verplicht veld mist"
450
 
451
- #: includes/forms/views/tabs/form-messages.php:27
452
  msgid ""
453
  "The text that shows when a required field for the selected list(s) is "
454
  "missing."
455
  msgstr "De tekst die verschijnt wanneer een verplicht veld voor de geselecteerde MailChimp lijst(en) niet ingevuld is."
456
 
457
- #: includes/forms/views/tabs/form-messages.php:31
458
  msgid "Already subscribed"
459
  msgstr "Reeds ingeschreven"
460
 
461
- #: includes/forms/views/tabs/form-messages.php:34
462
  msgid ""
463
  "The text that shows when the given email is already subscribed to the "
464
  "selected list(s)."
465
  msgstr "De tekst die verschijnt wanneer het gegeven email adres reeds ingeschreven is op de geselecteerde MailChimp lijst(en)."
466
 
467
- #: includes/forms/views/tabs/form-messages.php:38
468
  msgid "General error"
469
  msgstr "Algemene fout"
470
 
471
- #: includes/forms/views/tabs/form-messages.php:41
472
  msgid "The text that shows when a general error occured."
473
  msgstr "De tekst die verschijnt wanneer een algemene fout optreedt."
474
 
475
- #: includes/forms/views/tabs/form-messages.php:45
476
  msgid "Unsubscribed"
477
  msgstr "Uitgeschreven"
478
 
479
- #: includes/forms/views/tabs/form-messages.php:48
480
  msgid ""
481
  "When using the unsubscribe method, this is the text that shows when the "
482
  "given email address is successfully unsubscribed from the selected list(s)."
483
  msgstr "Wanneer gebruik gemaakt wordt van de functie om zich uit te schrijven, is dit de tekst die getoond wordt wanneer het aangegeven e-mailadres succesvol is uitgeschreven van de geselecteerde lijst(en)."
484
 
485
- #: includes/forms/views/tabs/form-messages.php:52
486
  msgid "Not subscribed"
487
  msgstr "Niet ingeschreven"
488
 
489
- #: includes/forms/views/tabs/form-messages.php:55
490
  msgid ""
491
  "When using the unsubscribe method, this is the text that shows when the "
492
  "given email address is not on the selected list(s)."
493
  msgstr "Wanneer gebruik gemaakt wordt van de functie om zich uit te schrijven, is dit de tekst die getoond wordt wanneer het aangegeven e-mailadres niet voorkomt op de geselecteerde lijst(en)."
494
 
495
- #: includes/forms/views/tabs/form-messages.php:64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
  msgid "HTML tags like %s are allowed in the message fields."
497
  msgstr "HTML tags als %s zijn toegestaan in de meldingteksten."
498
 
@@ -504,379 +1045,52 @@ msgstr "Formulier Instellingen"
504
  msgid "MailChimp specific settings"
505
  msgstr "MailChimp specifieke instellingen"
506
 
507
- #: includes/forms/views/tabs/form-settings.php:12
508
  msgid "Lists this form subscribes to"
509
  msgstr "Lijsten op welke dit formulier inschrijft"
510
 
511
- #: includes/forms/views/tabs/form-settings.php:15
512
- #: includes/integrations/views/integration-settings.php:93
513
- msgid "No lists found, <a href=\"%s\">are you connected to MailChimp</a>?"
514
- msgstr "Geen lijsten gevonden, <a href=\"%s\">ben je verbonden met je MailChimp account</a>?"
515
-
516
- #: includes/forms/views/tabs/form-settings.php:29
517
  msgid ""
518
  "Select the list(s) to which people who submit this form should be "
519
  "subscribed."
520
  msgstr "Selecteer de lijst(en) aan welke mensen die dit formulier invullen toegevoegd moeten worden."
521
 
522
- #: includes/forms/views/tabs/form-settings.php:35
523
  msgid "Use double opt-in?"
524
  msgstr "Gebruik dubbele opt-in?"
525
 
526
- #: includes/forms/views/tabs/form-settings.php:39
527
- #: includes/forms/views/tabs/form-settings.php:54
528
- #: includes/forms/views/tabs/form-settings.php:69
529
- #: includes/forms/views/tabs/form-settings.php:85
530
- #: includes/forms/views/tabs/form-settings.php:115
531
- #: includes/integrations/views/integration-settings.php:53
532
- #: includes/integrations/views/integration-settings.php:66
533
- #: includes/integrations/views/integration-settings.php:117
534
- #: includes/integrations/views/integration-settings.php:129
535
- #: includes/integrations/views/integration-settings.php:142
536
- #: includes/integrations/views/integration-settings.php:163
537
- #: includes/integrations/views/integration-settings.php:180
538
- #: includes/integrations/views/integration-settings.php:199
539
- #: integrations/contact-form-7/class-contact-form-7.php:69
540
- msgid "Yes"
541
- msgstr "Ja"
542
-
543
- #: includes/forms/views/tabs/form-settings.php:43
544
- #: includes/forms/views/tabs/form-settings.php:58
545
- #: includes/forms/views/tabs/form-settings.php:73
546
- #: includes/forms/views/tabs/form-settings.php:89
547
- #: includes/forms/views/tabs/form-settings.php:119
548
- #: includes/integrations/views/integration-settings.php:54
549
- #: includes/integrations/views/integration-settings.php:67
550
- #: includes/integrations/views/integration-settings.php:118
551
- #: includes/integrations/views/integration-settings.php:130
552
- #: includes/integrations/views/integration-settings.php:146
553
- #: includes/integrations/views/integration-settings.php:167
554
- #: includes/integrations/views/integration-settings.php:184
555
- #: includes/integrations/views/integration-settings.php:203
556
- #: integrations/contact-form-7/class-contact-form-7.php:69
557
- msgid "No"
558
- msgstr "Nee"
559
-
560
- #: includes/forms/views/tabs/form-settings.php:45
561
- #: includes/integrations/views/integration-settings.php:149
562
- msgid ""
563
- "Select \"yes\" if you want people to confirm their email address before "
564
- "being subscribed (recommended)"
565
- msgstr "Selecteer \"ja\" wanneer je wilt dat mensen hun emailadres moeten bevestigen alvorens ze aan je MailChimp lijst worden toegevoegd (aanbevolen)"
566
-
567
- #: includes/forms/views/tabs/form-settings.php:50
568
- msgid "Send final welcome email?"
569
- msgstr "Verzend welkomstemail?"
570
-
571
- #: includes/forms/views/tabs/form-settings.php:60
572
- #: includes/integrations/views/integration-settings.php:169
573
- msgid ""
574
- "Select \"yes\" if you want to send your lists Welcome Email if a subscribe "
575
- "succeeds (only when double opt-in is disabled)."
576
- msgstr "Selecteer \"ja\" als je de \"Welcome Email\" wilt sturen naar nieuwe abonnees (enkel wanneer \"double opt-in\" uitgeschakeld is)"
577
-
578
- #: includes/forms/views/tabs/form-settings.php:65
579
- #: includes/integrations/views/integration-settings.php:176
580
- msgid "Update existing subscribers?"
581
- msgstr "Bestaande inschrijven updaten?"
582
-
583
- #: includes/forms/views/tabs/form-settings.php:75
584
- #: includes/integrations/views/integration-settings.php:186
585
- msgid ""
586
- "Select \"yes\" if you want to update existing subscribers with the data that"
587
- " is sent."
588
- msgstr "Selecteer \"ja\" als je bestaande abonnees wilt updaten met de gegeven data."
589
-
590
- #: includes/forms/views/tabs/form-settings.php:81
591
- #: includes/integrations/views/integration-settings.php:195
592
- msgid "Replace interest groups?"
593
- msgstr "Interessegroepen vervangen?"
594
 
595
- #: includes/forms/views/tabs/form-settings.php:92
596
- #: includes/integrations/views/integration-settings.php:206
597
  msgid ""
598
- "Select \"no\" if you want to add the selected groupings to any previously "
599
- "selected groupings when updating a subscriber."
600
- msgstr "Selecteer \"nee\" als je de geselecteerde groepen wenst toe te voegen aan alle eerder geselecteerde groeperingen bij het updaten van een abonnee."
601
-
602
- #: includes/forms/views/tabs/form-settings.php:93
603
- #: includes/integrations/views/integration-settings.php:207
604
- msgid "What does this do?"
605
- msgstr "Wat doet dit?"
606
 
607
- #: includes/forms/views/tabs/form-settings.php:104
608
  msgid "Form behaviour"
609
  msgstr "'Gedrag' van het formuulier"
610
 
611
- #: includes/forms/views/tabs/form-settings.php:111
612
  msgid "Hide form after a successful sign-up?"
613
  msgstr "Verberg formulier na succesvolle inschrijvingen?"
614
 
615
- #: includes/forms/views/tabs/form-settings.php:122
616
  msgid "Select \"yes\" to hide the form fields after a successful sign-up."
617
  msgstr "Selecteer \"ja\" om de formuliervelden te verbergen na elke succesvolle inschrijving."
618
 
619
- #: includes/forms/views/tabs/form-settings.php:127
620
  msgid "Redirect to URL after successful sign-ups"
621
  msgstr "Doorsturen naar URL na succesvolle inschrijving"
622
 
623
- #: includes/forms/views/tabs/form-settings.php:129
624
  msgid "Example: %s"
625
  msgstr "Voorbeeld: %s"
626
 
627
- #: includes/forms/views/tabs/form-settings.php:130
628
  msgid ""
629
  "Leave empty or enter <code>0</code> for no redirect. Otherwise, use complete"
630
  " (absolute) URLs, including <code>http://</code>."
631
  msgstr "Laat leeg of vul <code>0</code> in voor geen doorverwijzing. Anders, gebruik complete (absolute) URL's, inclusief <code>http://</code>."
632
-
633
- #: includes/integrations/class-admin.php:79
634
- #: includes/integrations/class-admin.php:80
635
- #: includes/integrations/views/integration-settings.php:10
636
- #: includes/integrations/views/integrations.php:9
637
- #: includes/integrations/views/integrations.php:17
638
- msgid "Integrations"
639
- msgstr "Integraties"
640
-
641
- #: includes/integrations/views/integration-settings.php:20
642
- msgid "%s integration"
643
- msgstr "%s integratie"
644
-
645
- #: includes/integrations/views/integration-settings.php:51
646
- msgid "Enabled?"
647
- msgstr "Ingeschakeld?"
648
-
649
- #: includes/integrations/views/integration-settings.php:55
650
- msgid ""
651
- "Enable the %s integration? This will add a sign-up checkbox to the form."
652
- msgstr "Schakel de %s integratie in? Dit zal een inschrijfoptie aan het formulier toevoegen."
653
-
654
- #: includes/integrations/views/integration-settings.php:64
655
- msgid "Implicit?"
656
- msgstr "Impliciet?"
657
-
658
- #: includes/integrations/views/integration-settings.php:68
659
- msgid ""
660
- "Select \"no\" if you want to ask your visitors before they are subscribed "
661
- "(recommended)."
662
- msgstr "Selecteer \"nee\" als je je bezoekers de optie wilt geven om in te kunnen schrijven (aanbevolen)."
663
-
664
- #: includes/integrations/views/integration-settings.php:78
665
- msgid "MailChimp Lists"
666
- msgstr "MailChimp Lijsten"
667
-
668
- #: includes/integrations/views/integration-settings.php:89
669
- msgid ""
670
- "Select the list(s) to which people who check the checkbox should be "
671
- "subscribed."
672
- msgstr "Selecteer de lijsten aan welke mensen die checkbox aanvinken toegevoegd zouden moeten worden."
673
-
674
- #: includes/integrations/views/integration-settings.php:102
675
- msgid "Checkbox label text"
676
- msgstr "Checkbox label tekst"
677
-
678
- #: includes/integrations/views/integration-settings.php:105
679
- msgid "HTML tags like %s are allowed in the label text."
680
- msgstr "HTML tags als %s zijn toegestaan in de label tekst."
681
-
682
- #: includes/integrations/views/integration-settings.php:115
683
- msgid "Pre-check the checkbox?"
684
- msgstr "Vink de checkbox standaard aan?"
685
-
686
- #: includes/integrations/views/integration-settings.php:119
687
- msgid "Select \"yes\" if the checkbox should be pre-checked."
688
- msgstr "Selecteer \"ja\" als de checkbox standaard aangevinkt moet zijn."
689
-
690
- #: includes/integrations/views/integration-settings.php:127
691
- msgid "Load some default CSS?"
692
- msgstr "Laad standaard CSS?"
693
-
694
- #: includes/integrations/views/integration-settings.php:131
695
- msgid "Select \"yes\" if the checkbox appears in a weird place."
696
- msgstr "Selecteer \"ja\" als de checkbox op een vreemde plaats verschijnt."
697
-
698
- #: includes/integrations/views/integration-settings.php:138
699
- msgid "Double opt-in?"
700
- msgstr "Emailadres bevestigen?"
701
-
702
- #: includes/integrations/views/integration-settings.php:159
703
- msgid "Send Welcome Email?"
704
- msgstr "Welkomstemail versturen?"
705
-
706
- #: includes/integrations/views/integration-settings.php:244
707
- msgid ""
708
- "The selected MailChimp lists require non-default fields, which may prevent "
709
- "this integration from working."
710
- msgstr "De geselecteerde MailChimp lijst vereist niet-standaard velden, waardoor de integratie mogelijk niet zal werken."
711
-
712
- #: includes/integrations/views/integration-settings.php:245
713
- msgid ""
714
- "Please ensure you <a href=\"%s\">configure the plugin to send all required "
715
- "fields</a> or <a href=\"%s\">log into your MailChimp account</a> and make "
716
- "sure only the email & name fields are marked as required fields for the "
717
- "selected list(s)."
718
- msgstr "Zorg ervoor dat je <a href=\"%s\"> om de plugin te configureren, alle verplichte velden </a> of <a href=\"%s\"> kunnen inloggen op je MailChimp account </a> en zorg ervoor dat alleen de e-mail en verzend naam velden zijn gemarkeerd als verplichte velden voor de geselecteerde lijst(en)."
719
-
720
- #: includes/integrations/views/integrations.php:30
721
- msgid "Enabled"
722
- msgstr "Ingeschakeld"
723
-
724
- #: includes/integrations/views/integrations.php:31
725
- msgid "Name"
726
- msgstr "Naam"
727
-
728
- #: includes/integrations/views/integrations.php:32
729
- msgid "Description"
730
- msgstr "Omschrijving"
731
-
732
- #: includes/integrations/views/integrations.php:50
733
- msgid ""
734
- "This integration is enabled by default as it requires manual actions to "
735
- "work."
736
- msgstr "Deze integratie is geblokkeerd omdat u het handmatig moet aanpassen om het te laten werken."
737
-
738
- #: includes/integrations/views/integrations.php:57
739
- msgid "Configure this integration"
740
- msgstr "Configureer deze integratie"
741
-
742
- #: includes/views/general-settings.php:18
743
- msgid "General Settings"
744
- msgstr "Algemene Instellingen"
745
-
746
- #: includes/views/general-settings.php:35
747
- msgid "Status"
748
- msgstr "Status"
749
-
750
- #: includes/views/general-settings.php:39
751
- msgid "CONNECTED"
752
- msgstr "VERBONDEN"
753
-
754
- #: includes/views/general-settings.php:41
755
- msgid "NOT CONNECTED"
756
- msgstr "NIET VERBONDEN"
757
-
758
- #: includes/views/general-settings.php:48
759
- msgid "API Key"
760
- msgstr "API Sleutel"
761
-
762
- #: includes/views/general-settings.php:50
763
- msgid "Your MailChimp API key"
764
- msgstr "Je MailChimp API sleutel"
765
-
766
- #: includes/views/general-settings.php:52
767
- msgid "The API key for connecting with your MailChimp account."
768
- msgstr "De API sleutel voor het verbinden met je MailChimp account."
769
-
770
- #: includes/views/general-settings.php:53
771
- msgid "Get your API key here."
772
- msgstr "Verkrijg hier je API sleutel."
773
-
774
- #: includes/views/general-settings.php:65
775
- msgid "Usage Tracking"
776
- msgstr "Gebruikstype bijhouden"
777
-
778
- #: includes/views/general-settings.php:71
779
- msgid ""
780
- "Allow us to anonymously track how this plugin is used to help us make it "
781
- "better fit your needs."
782
- msgstr "Sta ons toe, anoniem, uw plugin te onderzoeken om u te helpen in beter gebruik voor uw noodzakelijkheden. "
783
-
784
- #: includes/views/general-settings.php:73
785
- msgid "This is what we track."
786
- msgstr "Dit is wat we tracken."
787
-
788
- #: includes/views/parts/admin-footer.php:11
789
- msgid ""
790
- "MailChimp for WordPress is in need of translations. Is the plugin not "
791
- "translated in your language or do you spot errors with the current "
792
- "translations? Helping out is easy! Head over to <a href=\"%s\">the "
793
- "translation project and click \"help translate\"</a>."
794
- msgstr "De MailChimp for WordPres plugin is op zoek naar vertalers. Is de plugin niet vertaald in jouw taal of heb je een fout in de vertalingen gespot? Helpen is makkelijk! Ga naar <a href=\"%s\">het vertaalproject op Transifex en klik op \"help translate\"</a>."
795
-
796
- #: includes/views/parts/admin-footer.php:31
797
- msgid ""
798
- "This plugin is not developed by or affiliated with MailChimp in any way."
799
- msgstr "Deze plugin is niet ontwikkeld of verbonden met MailChimp op welke manier dan ook."
800
-
801
- #: includes/views/parts/lists-overview.php:1
802
- msgid "Your MailChimp Account"
803
- msgstr "Je MailChimp Account"
804
-
805
- #: includes/views/parts/lists-overview.php:2
806
- msgid ""
807
- "The table below shows your MailChimp lists and their details. If you just "
808
- "applied changes to your MailChimp lists, please use the following button to "
809
- "renew the cached lists configuration."
810
- msgstr "The tabel hieronder toont je MailChimp lijst configuratie. Wanneer je hier veranderingen aan hebt doorgevoerd die nog niet weergegeven worden kun je de volgende button gebruiken om je configuratie opnieuw in te laden."
811
-
812
- #: includes/views/parts/lists-overview.php:14
813
- msgid "No lists were found in your MailChimp account"
814
- msgstr "Geen lijsten gevonden in je MailChimp account."
815
-
816
- #: includes/views/parts/lists-overview.php:16
817
- msgid "A total of %d lists were found in your MailChimp account."
818
- msgstr "Een totaal van %d aan lijsten zijn gevonden in uw MailChimp account."
819
-
820
- #: includes/views/parts/lists-overview.php:21
821
- msgid "List Name"
822
- msgstr "Lijstnaam"
823
-
824
- #: includes/views/parts/lists-overview.php:22
825
- msgid "ID"
826
- msgstr "ID"
827
-
828
- #: includes/views/parts/lists-overview.php:23
829
- msgid "Subscribers"
830
- msgstr "Abonnees"
831
-
832
- #: includes/views/parts/lists-overview.php:45
833
- msgid "Edit this list in MailChimp"
834
- msgstr "Bewerk deze lijst in MailChimp"
835
-
836
- #: includes/views/parts/lists-overview.php:59
837
- msgid "%s (%s) with field type %s."
838
- msgstr "%s(%s) met veldtype %s."
839
-
840
- #: includes/views/parts/lists-overview.php:83
841
- msgid "%s (ID: %s) with type %s."
842
- msgstr "%s (ID:%s) met type %s."
843
-
844
- #: integrations/contact-form-7/admin-before.php:2
845
- msgid ""
846
- "To integrate with Contact Form 7, configure the settings below and then add "
847
- "%s to your CF7 form mark-up."
848
- msgstr "Om te integreren met Contact Form 7, configureer de onderstaande instellingen en voeg %s toe aan de markering van het CF7 formulier."
849
-
850
- #: integrations/custom/admin-before.php:2
851
- msgid ""
852
- "To get a custom integration to work, include the following HTML in the form "
853
- "you are trying to integrate with."
854
- msgstr "Om de aangepaste integratie te laten werken, voeg de volgende HTML in het formulier dat je probeert te integreren."
855
-
856
- #: integrations/woocommerce/class-woocommerce.php:102
857
- msgid "Order #%d"
858
- msgstr "Bestelling #%d"
859
-
860
- #. Plugin Name of the plugin/theme
861
- msgid "MailChimp for WordPress"
862
- msgstr "MailChimp voor WordPress"
863
-
864
- #. Plugin URI of the plugin/theme
865
- msgid ""
866
- "https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-"
867
- "wp&utm_campaign=plugins-page"
868
- msgstr "https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page"
869
-
870
- #. Description of the plugin/theme
871
- msgid ""
872
- "MailChimp for WordPress by ibericode. Adds various highly effective sign-up "
873
- "methods to your site."
874
- msgstr "MailChimp for WordPress door ibericode. Verschillende zeer effective inschrijfmethodes voor uw website."
875
-
876
- #. Author of the plugin/theme
877
- msgid "ibericode"
878
- msgstr "ibericode"
879
-
880
- #. Author URI of the plugin/theme
881
- msgid "https://ibericode.com/"
882
- msgstr "https://ibericode.com/"
1
+ # Copyright (C) 2017 mailchimp-for-wp
2
+ # This file is distributed under the same license as the mailchimp-for-wp package.
3
  # Translators:
4
+ # Danny van Kooten <dannyvankooten@gmail.com>, 2014-2017
5
  # Eelco Martens <eelco.martens@gmail.com>, 2015
6
  # Form App <formappmobile@gmail.com>, 2016
7
+ # Maartje L <maartje2@hotmail.com>, 2017
8
  # Martijn van Egmond <developer@tensheep.nl>, 2015
9
  # Yola Maas <post@basicsoflive.nl>, 2016
10
  msgid ""
11
  msgstr ""
12
  "Project-Id-Version: MailChimp for WordPress\n"
13
+ "PO-Revision-Date: 2017-05-08 08:23+0000\n"
14
+ "Last-Translator: Maartje L <maartje2@hotmail.com>\n"
 
 
15
  "Language-Team: Dutch (Netherlands) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/nl_NL/)\n"
16
  "MIME-Version: 1.0\n"
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
  "Content-Transfer-Encoding: 8bit\n"
19
  "Language: nl_NL\n"
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
+ "X-Poedit-Basepath: ..\n"
22
+ "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
25
+ "X-Poedit-SourceCharset: UTF-8\n"
26
 
27
+ #: includes/admin/class-admin-texts.php62,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  #: includes/forms/views/edit-form.php:6
29
  msgid "Settings"
30
  msgstr "Instellingen"
33
  msgid "Documentation"
34
  msgstr "Documentatie"
35
 
36
+ #: includes/admin/class-admin.php:204
37
  msgid ""
38
  "Success! The cached configuration for your MailChimp lists has been renewed."
39
  msgstr "Succes! De configuratie voor je MailChimp lijsten is ververst."
40
 
41
+ #: includes/admin/class-admin.php:304
42
  msgid ""
43
  "This is a pro-only feature. Please upgrade to the premium version to be able"
44
  " to use it."
45
  msgstr "Dit is een premium-feature. Upgrade naar de premium versie om deze te unlocken."
46
 
47
+ #: includes/admin/class-admin.php305,
48
+ #: includes/views/parts/lists-overview.php10,
49
+ #: includes/forms/views/parts/add-fields-help.php:43
50
+ msgid "Renew MailChimp lists"
51
+ msgstr "Vernieuw MailChimp lijsten"
52
+
53
+ #: includes/admin/class-admin.php:306
54
+ msgid "Fetching MailChimp lists"
55
+ msgstr "MailChimp-lijsten ophalen"
56
+
57
+ #: includes/admin/class-admin.php:307
58
+ msgid "Done! MailChimp lists renewed."
59
+ msgstr "Klaar! De MailChimp-lijsten zijn vernieuwd!"
60
+
61
+ #: includes/admin/class-admin.php:308
62
+ msgid "This can take a while if you have many MailChimp lists."
63
+ msgstr "Dit kan even duren als je veel MailChimp-lijsten hebt."
64
+
65
+ #: includes/admin/class-admin.php336, includes/views/general-settings.php:31
66
  msgid "MailChimp API Settings"
67
  msgstr "MailChimp API Instellingen"
68
 
69
+ #: includes/admin/class-admin.php:337
 
70
  msgid "MailChimp"
71
  msgstr "MailChimp"
72
 
73
+ #: includes/admin/class-admin.php343, includes/views/other-settings.php60,
74
+ #: includes/views/other-settings.php:70
75
+ msgid "Other Settings"
76
+ msgstr "Andere instellingen"
77
 
78
+ #: includes/admin/class-admin.php:344
79
+ msgid "Other"
80
+ msgstr "Overig"
81
+
82
+ #: includes/admin/class-admin.php:458
83
+ msgid "Log successfully emptied."
84
+ msgstr ""
85
+
86
+ #: includes/admin/class-admin.php:488
87
+ msgid ""
88
+ "To get started with MailChimp for WordPress, please <a href=\"%s\">enter "
89
+ "your MailChimp API key on the settings page of the plugin</a>."
90
+ msgstr "Ga aan de slag met MailChimp voor WordPress. <a href=\"%s\">Vul je MailChimp API-sleutel in op de instellingenpagina van de plugin</a>."
91
+
92
+ #: includes/admin/class-ads.php:39
93
+ msgid ""
94
+ "Want to customize the style of your form? <a href=\"%s\">Try our Styles "
95
+ "Builder</a> & edit the look of your forms with just a few clicks."
96
+ msgstr "Wil je de stijl van het formulier aanpassen? <a href=\"%s\">Probeer onze Styles Builder</a> en pas het uiterlijk van je formulieren aan in een paar klikjes."
97
+
98
+ #: includes/admin/class-ads.php:54
99
+ msgid ""
100
+ "Be notified whenever someone subscribes? <a href=\"%s\">MailChimp for "
101
+ "WordPress Premium</a> allows you to set up email notifications for your "
102
+ "forms."
103
+ msgstr "Wil je een melding bij een nieuwe inschrijving? Met <a href=\"%s\">MailChimp for WordPress Premium</a> kun je e-mailmeldingen instellen bij je formulieren."
104
+
105
+ #: includes/admin/class-ads.php:56
106
+ msgid ""
107
+ "Increased conversions? <a href=\"%s\">MailChimp for WordPress Premium</a> "
108
+ "submits forms without reloading the entire page, resulting in a much better "
109
+ "experience for your visitors."
110
+ msgstr ""
111
+
112
+ #: includes/admin/class-ads.php:70
113
+ msgid "Upgrade to Premium"
114
+ msgstr "Upgraden naar Premium"
115
+
116
+ #: includes/admin/class-ads.php:83
117
  msgid ""
118
+ "Do you want translated forms for all of your languages? <a href=\"%s\">Try "
119
+ "MailChimp for WordPress Premium</a>, which does just that plus more."
120
+ msgstr ""
121
 
122
+ #: includes/admin/class-ads.php:88
123
+ msgid ""
124
+ "Do you want to create more than one form? Our Premium add-on does just that!"
125
+ " <a href=\"%s\">Have a look at all Premium benefits</a>."
126
+ msgstr ""
127
+
128
+ #: includes/admin/class-ads.php:93
129
+ msgid ""
130
+ "Are you enjoying this plugin? The Premium add-on unlocks several powerful "
131
+ "features. <a href=\"%s\">Find out about all benefits now</a>."
132
+ msgstr ""
133
+
134
+ #: includes/admin/class-ads.php:112
135
  msgid "More subscribers, better newsletters."
136
  msgstr "Meer abonnees, betere nieuwsbrieven."
137
 
138
+ #: includes/admin/class-ads.php:113
139
  msgid ""
140
  "Learn how to best grow your lists & write better emails by subscribing to "
141
  "our monthly tips."
142
+ msgstr "Leer hoe je je lijst kan vergroten en schrijf betere emails door je in te schrijven voor onze maandelijkse tips"
143
 
144
+ #: includes/admin/class-ads.php:116
145
  msgid "Email Address"
146
+ msgstr "Emailadres"
147
 
148
+ #: includes/admin/class-ads.php:120
149
  msgid "First Name"
150
  msgstr "Voornaam"
151
 
152
+ #: includes/admin/class-ads.php127, includes/forms/class-admin.php:94
153
  msgid "Subscribe"
154
  msgstr "Inschrijven"
155
 
156
+ #: includes/admin/class-ads.php:150
157
+ msgid ""
158
+ "Do you want to track all WooCommerce orders in MailChimp so you can send "
159
+ "emails based on the purchase activity of your subscribers?"
160
+ msgstr ""
161
 
162
+ #: includes/admin/class-ads.php:153
163
+ msgid ""
164
+ "<a href=\"%s\">Upgrade to MailChimp for WordPress Premium</a> or <a "
165
+ "href=\"%s\">read more about MailChimp's E-Commerce features</a>."
166
+ msgstr ""
167
+
168
+ #: includes/admin/class-review-notice.php:68
169
+ msgid ""
170
+ "You've been using MailChimp for WordPress for some time now; we hope you "
171
+ "love it!"
172
+ msgstr ""
173
+
174
+ #: includes/admin/class-review-notice.php:69
175
+ msgid ""
176
+ "If you do, please <a href=\"%s\">leave us a 5★ rating on WordPress.org</a>. "
177
+ "It would be of great help to us."
178
+ msgstr ""
179
+
180
+ #: includes/admin/class-review-notice.php:71
181
+ msgid "Dismiss this notice."
182
+ msgstr ""
183
 
184
+ #: includes/api/class-api.php:84
185
  msgid "Read more about common connectivity issues."
186
  msgstr "Lees meer over veel voorkomende verbindingsproblemen."
187
 
188
+ #: includes/forms/class-admin.php:62
189
+ msgid "Add to form"
190
+ msgstr "Voeg toe aan formulier"
191
+
192
+ #: includes/forms/class-admin.php:63
193
+ msgid "City"
194
+ msgstr "Stad"
195
+
196
+ #: includes/forms/class-admin.php:64
197
+ msgid "Checkboxes"
198
+ msgstr ""
199
+
200
+ #: includes/forms/class-admin.php:65
201
+ msgid "Choices"
202
+ msgstr "Keuzes"
203
+
204
+ #: includes/forms/class-admin.php:66
205
+ msgid "Choice type"
206
+ msgstr "Keuzetype"
207
+
208
+ #: includes/forms/class-admin.php:67
209
+ msgid "Choose a field to add to the form"
210
+ msgstr "Kies een veld voor het formulier"
211
+
212
+ #: includes/forms/class-admin.php:68
213
+ msgid "Close"
214
+ msgstr "Sluiten"
215
+
216
+ #: includes/forms/class-admin.php:69
217
+ msgid "Country"
218
+ msgstr "Land"
219
+
220
+ #: includes/forms/class-admin.php:70
221
+ msgid "Dropdown"
222
+ msgstr "Uitklappen"
223
+
224
+ #: includes/forms/class-admin.php:71
225
+ msgid "Field type"
226
+ msgstr "Veldtype"
227
+
228
+ #: includes/forms/class-admin.php:72
229
+ msgid "Field label"
230
+ msgstr "Veldlabel"
231
+
232
+ #: includes/forms/class-admin.php:73
233
+ msgid "Form action"
234
+ msgstr "Formulieractie"
235
+
236
+ #: includes/forms/class-admin.php:74
237
+ msgid ""
238
+ "This field will allow your visitors to choose whether they would like to "
239
+ "subscribe or unsubscribe"
240
+ msgstr "Dit veld geeft bezoekers de mogelijkheid om te kiezen of ze zich willen inschrijven of uitschrijven"
241
+
242
+ #: includes/forms/class-admin.php:75
243
+ msgid "Form fields"
244
+ msgstr "Formuliervelden"
245
+
246
+ #: includes/forms/class-admin.php:76
247
+ msgid "This field is marked as required in MailChimp."
248
+ msgstr "Dit veld is gemarkeerd als vereist in MailChimp"
249
+
250
+ #: includes/forms/class-admin.php:77
251
+ msgid "Initial value"
252
+ msgstr "Beginwaarde"
253
+
254
+ #: includes/forms/class-admin.php:78
255
+ msgid "Interest categories"
256
+ msgstr ""
257
+
258
+ #: includes/forms/class-admin.php:79
259
+ msgid "Is this field required?"
260
+ msgstr "Is dit veld vereist?"
261
+
262
+ #: includes/forms/class-admin.php:80
263
+ msgid "List choice"
264
+ msgstr "Lijstkeuze"
265
+
266
+ #: includes/forms/class-admin.php:81
267
+ msgid "This field will allow your visitors to choose a list to subscribe to."
268
+ msgstr "Met dit veld kunnen bezoekers een lijst kiezen om zich voor in te schrijven."
269
+
270
+ #: includes/forms/class-admin.php:82
271
+ msgid "List fields"
272
+ msgstr "Lijstvelden"
273
+
274
+ #: includes/forms/class-admin.php:83
275
+ msgid "Min"
276
+ msgstr "Min"
277
+
278
+ #: includes/forms/class-admin.php:84
279
+ msgid "Max"
280
+ msgstr "Max"
281
+
282
+ #: includes/forms/class-admin.php:85
283
+ msgid ""
284
+ "No available fields. Did you select a MailChimp list in the form settings?"
285
+ msgstr "Geen velden beschikbaar. Heb je een MailChimp-lijst geselecteerd in de formulierinstellingen?"
286
+
287
+ #: includes/forms/class-admin.php:86
288
+ msgid "Optional"
289
+ msgstr "Optioneel"
290
+
291
+ #: includes/forms/class-admin.php:87
292
+ msgid "Placeholder"
293
+ msgstr ""
294
+
295
+ #: includes/forms/class-admin.php:88
296
+ msgid "Text to show when field has no value."
297
+ msgstr "Tekst die verschijnt als een veld geen waarde heeft"
298
+
299
+ #: includes/forms/class-admin.php:89
300
+ msgid "Preselect"
301
+ msgstr "Voorselecteren"
302
+
303
+ #: includes/forms/class-admin.php:90
304
+ msgid "Remove"
305
+ msgstr "Verwijderen"
306
+
307
+ #: includes/forms/class-admin.php:91
308
+ msgid "Radio buttons"
309
+ msgstr "Radioknoppen"
310
+
311
+ #: includes/forms/class-admin.php:92
312
+ msgid "Street Address"
313
+ msgstr ""
314
+
315
+ #: includes/forms/class-admin.php:93
316
+ msgid "State"
317
+ msgstr ""
318
+
319
+ #: includes/forms/class-admin.php:95
320
+ msgid "Submit button"
321
+ msgstr ""
322
+
323
+ #: includes/forms/class-admin.php:96
324
+ msgid "Wrap in paragraph tags?"
325
+ msgstr ""
326
+
327
+ #: includes/forms/class-admin.php:97
328
+ msgid "Value"
329
+ msgstr "Waarde"
330
+
331
+ #: includes/forms/class-admin.php:98
332
+ msgid "Text to prefill this field with."
333
+ msgstr "Tekst om het veld vooraf mee te vullen"
334
+
335
+ #: includes/forms/class-admin.php:99
336
+ msgid "ZIP"
337
+ msgstr "Postcode"
338
+
339
+ #: includes/forms/class-admin.php111, includes/forms/class-admin.php112,
340
+ #: includes/forms/views/edit-form.php:24
341
  msgid "Forms"
342
  msgstr "Formulieren"
343
 
344
+ #: includes/forms/class-admin.php152, includes/forms/class-admin.php:276
345
  msgid "<strong>Success!</strong> Form successfully saved."
346
  msgstr "<strong>Succes!</strong> Formulier succesvol opgeslagen."
347
 
348
+ #: includes/forms/class-admin.php:276
349
  msgid "Preview form"
350
  msgstr "Voorbeeld formulier"
351
 
352
+ #: includes/forms/class-admin.php449, includes/forms/class-widget.php:30
353
+ msgid "MailChimp Sign-Up Form"
354
+ msgstr "MailChimp Inschrijfformulier"
355
 
356
+ #: includes/forms/class-admin.php:453
357
+ msgid "Select the form to show"
358
+ msgstr "Selecteer het formulier om het te tonen"
359
 
360
+ #: includes/forms/class-form-previewer.php:146
361
  msgid "Form preview"
362
  msgstr "Formulier voorbeeld"
363
 
364
+ #: includes/forms/class-form-tags.php:60
365
  msgid "Replaced with the form response (error or success messages)."
366
  msgstr "Wordt vervangen door de formulier response (fout- en succesmeldingen)."
367
 
368
+ #: includes/forms/class-form-tags.php:65
369
  msgid "Data from the URL or a submitted form."
370
+ msgstr "Data uit de URL of een verzonden formulier"
371
 
372
+ #: includes/forms/class-form-tags.php:71
373
+ msgid "Data from a cookie."
374
+ msgstr "Data van een cookie"
375
+
376
+ #: includes/forms/class-form-tags.php77,
377
  #: includes/integrations/class-integration-tags.php:45
378
  msgid "Replaced with the number of subscribers on the selected list(s)"
379
  msgstr "Vervangen door het aantal subscribers op de geselecteerde lijst(en)"
380
 
381
+ #: includes/forms/class-form-tags.php:82
382
  msgid "The email address of the current visitor (if known)."
383
  msgstr "Emailadres van huidige bezoeker (wanneer bekend)"
384
 
385
+ #: includes/forms/class-form-tags.php:87
386
  msgid "The URL of the page."
387
  msgstr "De URL van de pagina."
388
 
389
+ #: includes/forms/class-form-tags.php:92
390
  msgid "The path of the page."
391
  msgstr "Het codepad van de pagina"
392
 
393
+ #: includes/forms/class-form-tags.php:97
394
  msgid "The current date. Example: %s."
395
  msgstr "De huidige datum. Voorbeeld: %S."
396
 
397
+ #: includes/forms/class-form-tags.php:102
398
  msgid "The current time. Example: %s."
399
  msgstr "De huidige tijd. Voorbeeld: %S."
400
 
401
+ #: includes/forms/class-form-tags.php:107
402
  msgid "The site's language. Example: %s."
403
  msgstr "Taal van de site. bijvoorbeeld: %s"
404
 
405
+ #: includes/forms/class-form-tags.php:112
406
  msgid "The visitor's IP address. Example: %s."
407
  msgstr "Bezoekers IP adres. Bijvoorbeeld: %s."
408
 
409
+ #: includes/forms/class-form-tags.php:117
410
  msgid "The property of the currently logged-in user."
411
  msgstr "De rechten van de huidige ingelogte gebruiker."
412
 
413
+ #: includes/forms/class-form-tags.php:123
414
+ msgid "Property of the current page or post."
415
+ msgstr "Eigendom van de huidige pagina of bericht"
416
+
417
+ #: includes/forms/class-form.php:133
418
  msgid "There is no form with ID %d, perhaps it was deleted?"
419
  msgstr "Er is geen formulier met ID %d. Is het verwijderd?"
420
 
422
  msgid "Newsletter"
423
  msgstr "Nieuwsbrief"
424
 
 
 
 
 
425
  #: includes/forms/class-widget.php:32
426
  msgid "Displays your MailChimp for WordPress sign-up form"
427
  msgstr "Toont je MailChimp voor WordPress inschrijfformulier"
436
  " form settings</a>."
437
  msgstr "Je kunt je inschrijfformulier wijzigen in de <a href=\"%s\">MailChimp voor WordPress formulier instellingen</a>."
438
 
439
+ #: includes/integrations/class-admin.php79,
440
+ #: includes/integrations/class-admin.php80,
441
+ #: includes/integrations/views/integration-settings.php10,
442
+ #: includes/integrations/views/integrations.php57,
443
+ #: includes/integrations/views/integrations.php:65
444
+ msgid "Integrations"
445
+ msgstr "Integraties"
446
+
447
+ #: includes/views/general-settings.php7, includes/views/other-settings.php58,
448
+ #: includes/forms/views/edit-form.php22,
449
+ #: includes/integrations/views/integration-settings.php8,
450
+ #: includes/integrations/views/integrations.php:55
451
+ msgid "You are here: "
452
+ msgstr "Je bent hier:"
453
+
454
+ #: includes/views/general-settings.php:18
455
+ msgid "General Settings"
456
+ msgstr "Algemene Instellingen"
457
+
458
+ #: includes/views/general-settings.php:38
459
+ msgid "Status"
460
+ msgstr "Status"
461
+
462
+ #: includes/views/general-settings.php:42
463
+ msgid "CONNECTED"
464
+ msgstr "VERBONDEN"
465
+
466
+ #: includes/views/general-settings.php:44
467
+ msgid "NOT CONNECTED"
468
+ msgstr "NIET VERBONDEN"
469
+
470
+ #: includes/views/general-settings.php:51
471
+ msgid "API Key"
472
+ msgstr "API Sleutel"
473
+
474
+ #: includes/views/general-settings.php:53
475
+ msgid "Your MailChimp API key"
476
+ msgstr "Je MailChimp API sleutel"
477
+
478
+ #: includes/views/general-settings.php:55
479
+ msgid "The API key for connecting with your MailChimp account."
480
+ msgstr "De API sleutel voor het verbinden met je MailChimp account."
481
+
482
+ #: includes/views/general-settings.php:56
483
+ msgid "Get your API key here."
484
+ msgstr "Verkrijg hier je API sleutel."
485
+
486
+ #: includes/views/other-settings.php:14
487
+ msgid "Miscellaneous settings"
488
+ msgstr "Diverse instellingen"
489
+
490
+ #: includes/views/other-settings.php:17
491
+ msgid "Usage Tracking"
492
+ msgstr "Gebruikstype bijhouden"
493
+
494
+ #: includes/views/other-settings.php:29
495
+ msgid ""
496
+ "Allow us to anonymously track how this plugin is used to help us make it "
497
+ "better fit your needs."
498
+ msgstr "Sta ons toe, anoniem, uw plugin te onderzoeken om u te helpen in beter gebruik voor uw noodzakelijkheden. "
499
+
500
+ #: includes/views/other-settings.php:31
501
+ msgid "This is what we track."
502
+ msgstr "Dit is wat we tracken."
503
+
504
+ #: includes/views/other-settings.php:37
505
+ msgid "Logging"
506
+ msgstr ""
507
+
508
+ #: includes/views/other-settings.php:44
509
+ msgid ""
510
+ "Determines what events should be written to <a href=\"%s\">the debug log</a>"
511
+ " (see below)."
512
+ msgstr ""
513
+
514
+ #: includes/views/other-settings.php:99
515
+ msgid "Debug Log"
516
+ msgstr ""
517
+
518
+ #: includes/views/other-settings.php:99
519
+ msgid "Filter.."
520
+ msgstr ""
521
+
522
+ #: includes/views/other-settings.php:104
523
+ msgid "Log file is not writable."
524
+ msgstr ""
525
+
526
+ #: includes/views/other-settings.php:105
527
+ msgid "Please ensure %s has the proper <a href=\"%s\">file permissions</a>."
528
+ msgstr ""
529
+
530
+ #: includes/views/other-settings.php:123
531
+ msgid "Nothing here. Which means there are no errors!"
532
+ msgstr ""
533
+
534
+ #: includes/views/other-settings.php:133
535
+ msgid "Empty Log"
536
+ msgstr ""
537
+
538
+ #: includes/views/other-settings.php:141
539
+ msgid "Right now, the plugin is configured to only log errors and warnings."
540
+ msgstr ""
541
+
542
+ #: includes/admin/migrations/3.0.0-form-1-post-type.php:35
543
+ msgid "Default sign-up form"
544
+ msgstr "Standaard inschrijfformulier"
545
+
546
+ #: includes/forms/views/add-form.php10, includes/forms/views/add-form.php:60
547
  msgid "Add new form"
548
  msgstr "Voeg nieuw formulier toe"
549
 
571
  msgid "Messages"
572
  msgstr "Berichten"
573
 
574
+ #: includes/forms/views/edit-form.php:7
575
+ msgid "Appearance"
576
+ msgstr "Weergave"
577
+
578
+ #: includes/forms/views/edit-form.php:25
579
+ msgid "Form"
580
+ msgstr "Formulier"
581
+
582
+ #: includes/forms/views/edit-form.php:34
583
+ msgid "Edit Form"
584
+ msgstr "Wijzig Formulier"
585
+
586
+ #: includes/forms/views/edit-form.php:58
587
+ msgid "Enter form title here"
588
+ msgstr "Typ je formulier titel hier"
589
+
590
+ #: includes/forms/views/edit-form.php:59
591
+ msgid "Enter the title of your sign-up form"
592
+ msgstr "Typ de titel van je inschrijfformulier"
593
+
594
+ #: includes/forms/views/edit-form.php:65
595
+ msgid "Shortcode"
596
+ msgstr "Shortcode"
597
+
598
+ #: includes/forms/views/edit-form.php:67
599
+ msgid "Get shortcode"
600
+ msgstr "Toon shortcode"
601
+
602
+ #: includes/forms/views/edit-form.php:72
603
+ msgid "Preview this form"
604
+ msgstr "Toon een voorbeeld van dit formulier"
605
+
606
+ #: includes/integrations/views/integration-settings.php:20
607
+ msgid "%s integration"
608
+ msgstr "%s integratie"
609
+
610
+ #: includes/integrations/views/integration-settings.php:27
611
+ msgid ""
612
+ "The selected MailChimp lists require non-default fields, which may prevent "
613
+ "this integration from working."
614
+ msgstr "De geselecteerde MailChimp lijst vereist niet-standaard velden, waardoor de integratie mogelijk niet zal werken."
615
+
616
+ #: includes/integrations/views/integration-settings.php:28
617
+ msgid ""
618
+ "Please ensure you <a href=\"%s\">configure the plugin to send all required "
619
+ "fields</a> or <a href=\"%s\">log into your MailChimp account</a> and make "
620
+ "sure only the email & name fields are marked as required fields for the "
621
+ "selected list(s)."
622
+ msgstr "Zorg ervoor dat je <a href=\"%s\"> om de plugin te configureren, alle verplichte velden </a> of <a href=\"%s\"> kunnen inloggen op je MailChimp account </a> en zorg ervoor dat alleen de e-mail en verzend naam velden zijn gemarkeerd als verplichte velden voor de geselecteerde lijst(en)."
623
+
624
+ #: includes/integrations/views/integration-settings.php:62
625
+ msgid "Enabled?"
626
+ msgstr "Ingeschakeld?"
627
+
628
+ #: includes/integrations/views/integration-settings.php:66
629
+ msgid ""
630
+ "Enable the %s integration? This will add a sign-up checkbox to the form."
631
+ msgstr "Schakel de %s integratie in? Dit zal een inschrijfoptie aan het formulier toevoegen."
632
+
633
+ #: includes/integrations/views/integration-settings.php:76
634
+ msgid "Implicit?"
635
+ msgstr "Impliciet?"
636
+
637
+ #: includes/integrations/views/integration-settings.php:80
638
+ msgid ""
639
+ "Select \"no\" if you want to ask your visitors before they are subscribed "
640
+ "(recommended)."
641
+ msgstr "Selecteer \"nee\" als je je bezoekers de optie wilt geven om in te kunnen schrijven (aanbevolen)."
642
+
643
+ #: includes/integrations/views/integration-settings.php:90
644
+ msgid "MailChimp Lists"
645
+ msgstr "MailChimp Lijsten"
646
+
647
+ #: includes/integrations/views/integration-settings.php:103
648
+ msgid ""
649
+ "Select the list(s) to which people who check the checkbox should be "
650
+ "subscribed."
651
+ msgstr "Selecteer de lijsten aan welke mensen die checkbox aanvinken toegevoegd zouden moeten worden."
652
+
653
+ #: includes/integrations/views/integration-settings.php107,
654
+ #: includes/forms/views/tabs/form-settings.php:18
655
+ msgid "No lists found, <a href=\"%s\">are you connected to MailChimp</a>?"
656
+ msgstr "Geen lijsten gevonden, <a href=\"%s\">ben je verbonden met je MailChimp account</a>?"
657
+
658
+ #: includes/integrations/views/integration-settings.php:116
659
+ msgid "Checkbox label text"
660
+ msgstr "Checkbox label tekst"
661
+
662
+ #: includes/integrations/views/integration-settings.php:119
663
+ msgid "HTML tags like %s are allowed in the label text."
664
+ msgstr "HTML tags als %s zijn toegestaan in de label tekst."
665
+
666
+ #: includes/integrations/views/integration-settings.php:129
667
+ msgid "Pre-check the checkbox?"
668
+ msgstr "Vink de checkbox standaard aan?"
669
+
670
+ #: includes/integrations/views/integration-settings.php:133
671
+ msgid "Select \"yes\" if the checkbox should be pre-checked."
672
+ msgstr "Selecteer \"ja\" als de checkbox standaard aangevinkt moet zijn."
673
+
674
+ #: includes/integrations/views/integration-settings.php:141
675
+ msgid "Load some default CSS?"
676
+ msgstr "Laad standaard CSS?"
677
+
678
+ #: includes/integrations/views/integration-settings.php:145
679
+ msgid "Select \"yes\" if the checkbox appears in a weird place."
680
+ msgstr "Selecteer \"ja\" als de checkbox op een vreemde plaats verschijnt."
681
+
682
+ #: includes/integrations/views/integration-settings.php:152
683
+ msgid "Double opt-in?"
684
+ msgstr "Emailadres bevestigen?"
685
+
686
+ #: includes/integrations/views/integration-settings.php:163
687
+ msgid ""
688
+ "Select \"yes\" if you want people to confirm their email address before "
689
+ "being subscribed (recommended)"
690
+ msgstr "Selecteer \"ja\" wanneer je wilt dat mensen hun emailadres moeten bevestigen alvorens ze aan je MailChimp lijst worden toegevoegd (aanbevolen)"
691
+
692
+ #: includes/integrations/views/integration-settings.php171,
693
+ #: includes/forms/views/tabs/form-settings.php:52
694
+ msgid "Update existing subscribers?"
695
+ msgstr "Bestaande inschrijven updaten?"
696
+
697
+ #: includes/integrations/views/integration-settings.php181,
698
+ #: includes/forms/views/tabs/form-settings.php:62
699
+ msgid ""
700
+ "Select \"yes\" if you want to update existing subscribers with the data that"
701
+ " is sent."
702
+ msgstr "Selecteer \"ja\" als je bestaande abonnees wilt updaten met de gegeven data."
703
+
704
+ #: includes/integrations/views/integration-settings.php190,
705
+ #: includes/forms/views/tabs/form-settings.php:68
706
+ msgid "Replace interest groups?"
707
+ msgstr "Interessegroepen vervangen?"
708
+
709
+ #: includes/integrations/views/integration-settings.php201,
710
+ #: includes/forms/views/tabs/form-settings.php:79
711
+ msgid ""
712
+ "Select \"no\" if you want to add the selected interests to any previously "
713
+ "selected interests when updating a subscriber."
714
+ msgstr ""
715
+
716
+ #: includes/integrations/views/integration-settings.php202,
717
+ #: includes/forms/views/tabs/form-settings.php:80
718
+ msgid "What does this do?"
719
+ msgstr "Wat doet dit?"
720
+
721
+ #: includes/integrations/views/integrations.php:17
722
+ msgid "Name"
723
+ msgstr "Naam"
724
+
725
+ #: includes/integrations/views/integrations.php:18
726
+ msgid "Description"
727
+ msgstr "Omschrijving"
728
+
729
+ #: includes/integrations/views/integrations.php:35
730
+ msgid "Configure this integration"
731
+ msgstr "Configureer deze integratie"
732
+
733
+ #: includes/integrations/views/integrations.php:71
734
+ msgid "The table below shows all available integrations."
735
+ msgstr ""
736
+
737
+ #: includes/integrations/views/integrations.php:72
738
+ msgid ""
739
+ "Click on the name of an integration to edit all settings specific to that "
740
+ "integration."
741
+ msgstr ""
742
+
743
+ #: includes/integrations/views/integrations.php:79
744
+ msgid "Enabled integrations"
745
+ msgstr ""
746
+
747
+ #: includes/integrations/views/integrations.php:84
748
+ msgid "Available integrations"
749
+ msgstr ""
750
+
751
+ #: includes/views/parts/admin-footer.php:15
752
+ msgid ""
753
+ "MailChimp for WordPress is in need of translations. Is the plugin not "
754
+ "translated in your language or do you spot errors with the current "
755
+ "translations? Helping out is easy! Head over to <a href=\"%s\">the "
756
+ "translation project and click \"help translate\"</a>."
757
+ msgstr "De MailChimp for WordPres plugin is op zoek naar vertalers. Is de plugin niet vertaald in jouw taal of heb je een fout in de vertalingen gespot? Helpen is makkelijk! Ga naar <a href=\"%s\">het vertaalproject op Transifex en klik op \"help translate\"</a>."
758
+
759
+ #: includes/views/parts/admin-footer.php:35
760
+ msgid ""
761
+ "This plugin is not developed by or affiliated with MailChimp in any way."
762
+ msgstr "Deze plugin is niet ontwikkeld of verbonden met MailChimp op welke manier dan ook."
763
+
764
+ #: includes/views/parts/admin-sidebar.php:11
765
+ msgid "Looking for help?"
766
+ msgstr "Hulp nodig?"
767
+
768
+ #: includes/views/parts/admin-sidebar.php:12
769
+ msgid "We have some resources available to help you in the right direction."
770
+ msgstr ""
771
+
772
+ #: includes/views/parts/admin-sidebar.php:14
773
+ msgid "Knowledge Base"
774
+ msgstr ""
775
+
776
+ #: includes/views/parts/admin-sidebar.php:15
777
+ msgid "Frequently Asked Questions"
778
+ msgstr "Veelgestelde Vragen"
779
+
780
+ #: includes/views/parts/admin-sidebar.php:16
781
+ msgid "Code reference for developers"
782
+ msgstr ""
783
+
784
+ #: includes/views/parts/admin-sidebar.php:36
785
+ msgid "Looking to improve your sign-up rates?"
786
+ msgstr ""
787
+
788
+ #: includes/views/parts/admin-sidebar.php:37
789
+ msgid ""
790
+ "Our <a href=\"%s\">Boxzilla plugin</a> allows you to create pop-ups or "
791
+ "slide-ins with a subscribe form. A sure way to grow your lists faster."
792
+ msgstr ""
793
+
794
+ #: includes/views/parts/lists-overview.php:1
795
+ msgid "Your MailChimp Account"
796
+ msgstr "Je MailChimp Account"
797
+
798
+ #: includes/views/parts/lists-overview.php:2
799
+ msgid ""
800
+ "The table below shows your MailChimp lists and their details. If you just "
801
+ "applied changes to your MailChimp lists, please use the following button to "
802
+ "renew the cached lists configuration."
803
+ msgstr "The tabel hieronder toont je MailChimp lijst configuratie. Wanneer je hier veranderingen aan hebt doorgevoerd die nog niet weergegeven worden kun je de volgende button gebruiken om je configuratie opnieuw in te laden."
804
+
805
+ #: includes/views/parts/lists-overview.php:17
806
+ msgid "No lists were found in your MailChimp account"
807
+ msgstr "Geen lijsten gevonden in je MailChimp account."
808
 
809
+ #: includes/views/parts/lists-overview.php:19
810
+ msgid "A total of %d lists were found in your MailChimp account."
811
+ msgstr "Een totaal van %d aan lijsten zijn gevonden in uw MailChimp account."
 
 
 
812
 
813
+ #: includes/views/parts/lists-overview.php:24
814
+ msgid "List Name"
815
+ msgstr "Lijstnaam"
816
 
817
+ #: includes/views/parts/lists-overview.php:25
818
+ msgid "ID"
819
+ msgstr "ID"
820
 
821
+ #: includes/views/parts/lists-overview.php:26
822
+ msgid "Subscribers"
823
+ msgstr "Abonnees"
824
 
825
+ #: includes/views/parts/lists-overview.php:48
826
+ msgid "Edit this list in MailChimp"
827
+ msgstr "Bewerk deze lijst in MailChimp"
828
 
829
+ #: includes/views/parts/lists-overview.php:62
830
+ msgid "%s (%s) with field type %s."
831
+ msgstr "%s(%s) met veldtype %s."
832
 
833
+ #: includes/forms/views/parts/add-fields-help.php4,
834
  #: includes/forms/views/tabs/form-fields.php:10
835
  msgid "Add more fields"
836
  msgstr "Meer velden toevoegen"
867
  "changes."
868
  msgstr "Klik op de volgende knop, voor MailChimp voor Wordpress pick up en jouw wijzigingen"
869
 
 
 
 
 
 
870
  #: includes/forms/views/parts/dynamic-content-tags.php:6
871
  msgid "Add dynamic form variable"
872
  msgstr "Voeg een dynamisch formulier variabelen toe"
939
  msgid "Enter the HTML code for your form fields.."
940
  msgstr "Voer de HTML code voor je formulier velden in."
941
 
942
+ #: includes/forms/views/tabs/form-fields.php:26
 
 
 
 
943
  msgid ""
944
  "Use the shortcode %s to display this form inside a post, page or text "
945
  "widget."
946
  msgstr "Gebruik de %s shortcode om dit formulier in een post, pagina of tekst widget te tonen."
947
 
948
+ #: includes/forms/views/tabs/form-messages.php:6
949
  msgid "Form Messages"
950
  msgstr "Formulier Berichten"
951
 
952
+ #: includes/forms/views/tabs/form-messages.php:16
953
  msgid "Successfully subscribed"
954
  msgstr "Succesvol ingeschreven"
955
 
956
+ #: includes/forms/views/tabs/form-messages.php:19
957
  msgid ""
958
  "The text that shows when an email address is successfully subscribed to the "
959
  "selected list(s)."
960
  msgstr "De tekst die verschijnt wanneer een emailadres succesvol toegevoegd is aan de geselecteerde MailChimp lijst(en)."
961
 
962
+ #: includes/forms/views/tabs/form-messages.php:23
963
  msgid "Invalid email address"
964
  msgstr "Ongeldig emailadres"
965
 
966
+ #: includes/forms/views/tabs/form-messages.php:26
967
  msgid "The text that shows when an invalid email address is given."
968
  msgstr "De tekst die verschijnt wanneer een foutief email adres is ingevuld.Î"
969
 
970
+ #: includes/forms/views/tabs/form-messages.php:30
971
  msgid "Required field missing"
972
  msgstr "Verplicht veld mist"
973
 
974
+ #: includes/forms/views/tabs/form-messages.php:33
975
  msgid ""
976
  "The text that shows when a required field for the selected list(s) is "
977
  "missing."
978
  msgstr "De tekst die verschijnt wanneer een verplicht veld voor de geselecteerde MailChimp lijst(en) niet ingevuld is."
979
 
980
+ #: includes/forms/views/tabs/form-messages.php:37
981
  msgid "Already subscribed"
982
  msgstr "Reeds ingeschreven"
983
 
984
+ #: includes/forms/views/tabs/form-messages.php:40
985
  msgid ""
986
  "The text that shows when the given email is already subscribed to the "
987
  "selected list(s)."
988
  msgstr "De tekst die verschijnt wanneer het gegeven email adres reeds ingeschreven is op de geselecteerde MailChimp lijst(en)."
989
 
990
+ #: includes/forms/views/tabs/form-messages.php:44
991
  msgid "General error"
992
  msgstr "Algemene fout"
993
 
994
+ #: includes/forms/views/tabs/form-messages.php:47
995
  msgid "The text that shows when a general error occured."
996
  msgstr "De tekst die verschijnt wanneer een algemene fout optreedt."
997
 
998
+ #: includes/forms/views/tabs/form-messages.php:51
999
  msgid "Unsubscribed"
1000
  msgstr "Uitgeschreven"
1001
 
1002
+ #: includes/forms/views/tabs/form-messages.php:54
1003
  msgid ""
1004
  "When using the unsubscribe method, this is the text that shows when the "
1005
  "given email address is successfully unsubscribed from the selected list(s)."
1006
  msgstr "Wanneer gebruik gemaakt wordt van de functie om zich uit te schrijven, is dit de tekst die getoond wordt wanneer het aangegeven e-mailadres succesvol is uitgeschreven van de geselecteerde lijst(en)."
1007
 
1008
+ #: includes/forms/views/tabs/form-messages.php:58
1009
  msgid "Not subscribed"
1010
  msgstr "Niet ingeschreven"
1011
 
1012
+ #: includes/forms/views/tabs/form-messages.php:61
1013
  msgid ""
1014
  "When using the unsubscribe method, this is the text that shows when the "
1015
  "given email address is not on the selected list(s)."
1016
  msgstr "Wanneer gebruik gemaakt wordt van de functie om zich uit te schrijven, is dit de tekst die getoond wordt wanneer het aangegeven e-mailadres niet voorkomt op de geselecteerde lijst(en)."
1017
 
1018
+ #: includes/forms/views/tabs/form-messages.php:65
1019
+ msgid "No list selected"
1020
+ msgstr "Geen lijst geselecteerd"
1021
+
1022
+ #: includes/forms/views/tabs/form-messages.php:68
1023
+ msgid ""
1024
+ "When offering a list choice, this is the text that shows when no lists were "
1025
+ "selected."
1026
+ msgstr ""
1027
+
1028
+ #: includes/forms/views/tabs/form-messages.php:74
1029
+ msgid "Updated"
1030
+ msgstr "Bijgewerkt"
1031
+
1032
+ #: includes/forms/views/tabs/form-messages.php:77
1033
+ msgid "The text that shows when an existing subscriber is updated."
1034
+ msgstr ""
1035
+
1036
+ #: includes/forms/views/tabs/form-messages.php:89
1037
  msgid "HTML tags like %s are allowed in the message fields."
1038
  msgstr "HTML tags als %s zijn toegestaan in de meldingteksten."
1039
 
1045
  msgid "MailChimp specific settings"
1046
  msgstr "MailChimp specifieke instellingen"
1047
 
1048
+ #: includes/forms/views/tabs/form-settings.php:15
1049
  msgid "Lists this form subscribes to"
1050
  msgstr "Lijsten op welke dit formulier inschrijft"
1051
 
1052
+ #: includes/forms/views/tabs/form-settings.php:31
 
 
 
 
 
1053
  msgid ""
1054
  "Select the list(s) to which people who submit this form should be "
1055
  "subscribed."
1056
  msgstr "Selecteer de lijst(en) aan welke mensen die dit formulier invullen toegevoegd moeten worden."
1057
 
1058
+ #: includes/forms/views/tabs/form-settings.php:37
1059
  msgid "Use double opt-in?"
1060
  msgstr "Gebruik dubbele opt-in?"
1061
 
1062
+ #: includes/forms/views/tabs/form-settings.php:44
1063
+ msgid "Are you sure you want to disable double opt-in?"
1064
+ msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1065
 
1066
+ #: includes/forms/views/tabs/form-settings.php:47
 
1067
  msgid ""
1068
+ "We strongly suggest keeping double opt-in enabled. Disabling double opt-in "
1069
+ "may result in abuse."
1070
+ msgstr ""
 
 
 
 
 
1071
 
1072
+ #: includes/forms/views/tabs/form-settings.php:94
1073
  msgid "Form behaviour"
1074
  msgstr "'Gedrag' van het formuulier"
1075
 
1076
+ #: includes/forms/views/tabs/form-settings.php:104
1077
  msgid "Hide form after a successful sign-up?"
1078
  msgstr "Verberg formulier na succesvolle inschrijvingen?"
1079
 
1080
+ #: includes/forms/views/tabs/form-settings.php:115
1081
  msgid "Select \"yes\" to hide the form fields after a successful sign-up."
1082
  msgstr "Selecteer \"ja\" om de formuliervelden te verbergen na elke succesvolle inschrijving."
1083
 
1084
+ #: includes/forms/views/tabs/form-settings.php:120
1085
  msgid "Redirect to URL after successful sign-ups"
1086
  msgstr "Doorsturen naar URL na succesvolle inschrijving"
1087
 
1088
+ #: includes/forms/views/tabs/form-settings.php:122
1089
  msgid "Example: %s"
1090
  msgstr "Voorbeeld: %s"
1091
 
1092
+ #: includes/forms/views/tabs/form-settings.php:123
1093
  msgid ""
1094
  "Leave empty or enter <code>0</code> for no redirect. Otherwise, use complete"
1095
  " (absolute) URLs, including <code>http://</code>."
1096
  msgstr "Laat leeg of vul <code>0</code> in voor geen doorverwijzing. Anders, gebruik complete (absolute) URL's, inclusief <code>http://</code>."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/mailchimp-for-wp-pl_PL.mo CHANGED
Binary file
languages/mailchimp-for-wp-pl_PL.po CHANGED
@@ -1,7 +1,9 @@
1
- # Copyright (C) 2015 MailChimp for WordPress
2
- # This file is distributed under the same license as the MailChimp for WordPress package.
3
  # Translators:
4
- # Bart <info@archimedesign.co.uk>, 2015
 
 
5
  # Jan Rusakiewicz <jan.rusakiewicz@gmail.com>, 2015
6
  # Mateusz Lomber <lumberpack@gmail.com>, 2017
7
  # Paweł Tomkiel <neonkowy@gmail.com>, 2016
@@ -9,68 +11,21 @@
9
  msgid ""
10
  msgstr ""
11
  "Project-Id-Version: MailChimp for WordPress\n"
12
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mailchimp-for-wp\n"
13
- "POT-Creation-Date: 2015-11-30 10:15:18+00:00\n"
14
- "PO-Revision-Date: 2017-01-03 09:50+0000\n"
15
- "Last-Translator: Mateusz Lomber <lumberpack@gmail.com>\n"
16
  "Language-Team: Polish (Poland) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/pl_PL/)\n"
17
  "MIME-Version: 1.0\n"
18
  "Content-Type: text/plain; charset=UTF-8\n"
19
  "Content-Transfer-Encoding: 8bit\n"
20
  "Language: pl_PL\n"
21
- "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
22
-
23
- #: config/default-form-content.php:3
24
- msgid "Email address"
25
- msgstr "Adres e-mail"
26
-
27
- #: config/default-form-content.php:4
28
- msgid "Your email address"
29
- msgstr "Twój adres e-mail"
30
-
31
- #: config/default-form-content.php:5
32
- msgid "Sign up"
33
- msgstr "Zarejestruj się"
34
-
35
- #: config/default-form-messages.php:5
36
- msgid ""
37
- "Thank you, your sign-up request was successful! Please check your email "
38
- "inbox to confirm."
39
- msgstr "Dziękujemy, Twoja rejestracja przebiegła pomyślnie! Sprawdź swoją skrzynkę e-mail, aby potwierdzić."
40
-
41
- #: config/default-form-messages.php:9
42
- msgid "Oops. Something went wrong. Please try again later."
43
- msgstr "Ups. Coś poszło nie tak. Spróbuj ponownie później."
44
-
45
- #: config/default-form-messages.php:13
46
- msgid "Please provide a valid email address."
47
- msgstr "Proszę podać poprawny adres e-mail."
48
-
49
- #: config/default-form-messages.php:17
50
- msgid "Given email address is already subscribed, thank you!"
51
- msgstr "Podany adres e-mail został już wcześniej dodany do listy, dziękujemy!"
52
-
53
- #: config/default-form-messages.php:21
54
- msgid "Please fill in the required fields."
55
- msgstr "Proszę wypełnić wymagane pola."
56
-
57
- #: config/default-form-messages.php:25
58
- msgid "You were successfully unsubscribed."
59
- msgstr "Zostałeś wypisany z listy subskrypcji."
60
-
61
- #: config/default-form-messages.php:29
62
- msgid "Given email address is not subscribed."
63
- msgstr "Podany adres e-mail nie został dodany do naszej listy subskrybcji."
64
-
65
- #: config/default-form-messages.php:33
66
- msgid "Please select at least one list."
67
- msgstr "Wybierz co najmniej jedną listę subskrypcji."
68
-
69
- #: config/default-integration-options.php:5
70
- msgid "Sign me up for the newsletter!"
71
- msgstr "Zapisz mnie do newslettera!"
72
-
73
- #: includes/admin/class-admin-texts.php:62
74
  #: includes/forms/views/edit-form.php:6
75
  msgid "Settings"
76
  msgstr "Ustawienia"
@@ -79,141 +34,388 @@ msgstr "Ustawienia"
79
  msgid "Documentation"
80
  msgstr "Dokumentacja"
81
 
82
- #: includes/admin/class-admin.php:167
83
  msgid ""
84
  "Success! The cached configuration for your MailChimp lists has been renewed."
85
  msgstr "Operacja przywrócenia listy subskrypcji twojego konta MailChimp została zakończona pomyślnie."
86
 
87
- #: includes/admin/class-admin.php:257
88
  msgid ""
89
  "This is a pro-only feature. Please upgrade to the premium version to be able"
90
  " to use it."
91
  msgstr "Opcja premium. Kup wersję premium, aby móc korzystać z tej opcji."
92
 
93
- #: includes/admin/class-admin.php:323 includes/views/general-settings.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  msgid "MailChimp API Settings"
95
  msgstr "Ustawienia API MailChimp"
96
 
97
- #: includes/admin/class-admin.php:324
98
- #: integrations/ninja-forms/class-ninja-forms.php:34
99
  msgid "MailChimp"
100
  msgstr "MailChimp"
101
 
102
- #: includes/admin/class-ads.php:33
103
- msgid "Upgrade to MailChimp for WordPress Pro"
104
- msgstr "Kup Mailchimp for WordPress Pro"
 
105
 
106
- #: includes/admin/class-ads.php:41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  msgid ""
108
- "Enjoying this plugin? <a href=\"%s\">Purchase our bundle of premium "
109
- "features</a> for an even better plugin."
110
- msgstr "Chcesz korzystać z tej wtyczki? <a href=\"%s\">Kup nasz pakiet premium</a> aby korzystać z jeszcze lepszych wtyczek."
111
 
112
- #: includes/admin/class-ads.php:62
113
  msgid "More subscribers, better newsletters."
114
  msgstr "Więcej subskrybentów, lepsze newslettery."
115
 
116
- #: includes/admin/class-ads.php:63
117
  msgid ""
118
  "Learn how to best grow your lists & write better emails by subscribing to "
119
  "our monthly tips."
120
  msgstr "Dowiedz się jak pozyskać więcej subskrybentów oraz jak pisać lepsze wiadomości email w naszych comiesięcznych poradach."
121
 
122
- #: includes/admin/class-ads.php:66
123
  msgid "Email Address"
124
  msgstr "Adres e-mail"
125
 
126
- #: includes/admin/class-ads.php:70
127
  msgid "First Name"
128
  msgstr "Imię"
129
 
130
- #: includes/admin/class-ads.php:77
131
  msgid "Subscribe"
132
  msgstr "Subskrybuj"
133
 
134
- #: includes/admin/class-usage-tracking.php:57
135
- msgid "Once a month"
136
- msgstr "Raz na miesiąc"
 
 
137
 
138
- #: includes/admin/migrations/3.0-form-1-post-type.php:35
139
- msgid "Default sign-up form"
140
- msgstr "Domyślny formularz zapisu"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
 
142
- #: includes/class-api.php:83
 
 
 
 
143
  msgid "Read more about common connectivity issues."
144
  msgstr "Czytaj więcej o rozwiązywaniu problemów z łącznością."
145
 
146
- #: includes/forms/class-admin.php:71 includes/forms/class-admin.php:72
147
- #: includes/forms/views/edit-form.php:17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  msgid "Forms"
149
  msgstr "Formularze"
150
 
151
- #: includes/forms/class-admin.php:101 includes/forms/class-admin.php:176
152
  msgid "<strong>Success!</strong> Form successfully saved."
153
  msgstr "<strong>Sukces!</strong> Formularz został pomyślnie zapisany."
154
 
155
- #: includes/forms/class-admin.php:176
156
  msgid "Preview form"
157
  msgstr "Podejrzyj formularz."
158
 
159
- #: includes/forms/class-admin.php:279
160
- msgid "Form not found."
161
- msgstr "Nie odnaleziono formularza."
162
 
163
- #: includes/forms/class-admin.php:281
164
- msgid "Go back"
165
- msgstr "Wróć"
166
 
167
- #: includes/forms/class-form-previewer.php:162
168
  msgid "Form preview"
169
  msgstr "Podgląd formularza"
170
 
171
- #: includes/forms/class-form-tags.php:51
172
  msgid "Replaced with the form response (error or success messages)."
173
  msgstr "Zamienione na odpowiedź formularza (wiadomość o błędzie lub powodzeniu)"
174
 
175
- #: includes/forms/class-form-tags.php:56
176
  msgid "Data from the URL or a submitted form."
177
  msgstr "Dane z adresu URL lub formularza."
178
 
179
- #: includes/forms/class-form-tags.php:62
 
 
 
 
180
  #: includes/integrations/class-integration-tags.php:45
181
  msgid "Replaced with the number of subscribers on the selected list(s)"
182
  msgstr "Zamienione na liczbę subskrybentów na zaznaczonej liście (listach)."
183
 
184
- #: includes/forms/class-form-tags.php:67
185
  msgid "The email address of the current visitor (if known)."
186
  msgstr "Adres e-mail aktualnie odwiedzającego (jeśli znany)"
187
 
188
- #: includes/forms/class-form-tags.php:72
189
  msgid "The URL of the page."
190
  msgstr "URL strony."
191
 
192
- #: includes/forms/class-form-tags.php:77
193
  msgid "The path of the page."
194
  msgstr "Ścieżka strony."
195
 
196
- #: includes/forms/class-form-tags.php:82
197
  msgid "The current date. Example: %s."
198
  msgstr "Aktualna data. Przykład: %s."
199
 
200
- #: includes/forms/class-form-tags.php:87
201
  msgid "The current time. Example: %s."
202
  msgstr "Aktualny czas. Przykład: %s."
203
 
204
- #: includes/forms/class-form-tags.php:92
205
  msgid "The site's language. Example: %s."
206
  msgstr "Aktualny język strony. Przykład: %s."
207
 
208
- #: includes/forms/class-form-tags.php:97
209
  msgid "The visitor's IP address. Example: %s."
210
  msgstr "Adres IP odwiedzającego. Przykład %s."
211
 
212
- #: includes/forms/class-form-tags.php:102
213
  msgid "The property of the currently logged-in user."
214
  msgstr "Dane aktualnie zalogowanego usera."
215
 
216
- #: includes/forms/class-form.php:128
 
 
 
 
217
  msgid "There is no form with ID %d, perhaps it was deleted?"
218
  msgstr "Brak formularza o ID %d. Może został usunięty?"
219
 
@@ -221,10 +423,6 @@ msgstr "Brak formularza o ID %d. Może został usunięty?"
221
  msgid "Newsletter"
222
  msgstr "Newsletter"
223
 
224
- #: includes/forms/class-widget.php:30
225
- msgid "MailChimp Sign-Up Form"
226
- msgstr "Formularz rejestracyjny MailChimp"
227
-
228
  #: includes/forms/class-widget.php:32
229
  msgid "Displays your MailChimp for WordPress sign-up form"
230
  msgstr "Wyświetla Twój formularz MailChimp for WordPress."
@@ -239,7 +437,114 @@ msgid ""
239
  " form settings</a>."
240
  msgstr "Możesz edytować swój formularz zapisu do newslettera w <a href=\"%s\">Ustawieniach \"MailChimp dla Wordpress\"</a>"
241
 
242
- #: includes/forms/views/add-form.php:10 includes/forms/views/add-form.php:60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  msgid "Add new form"
244
  msgstr "Dodaj nowy formularz"
245
 
@@ -271,34 +576,262 @@ msgstr "Wiadomości"
271
  msgid "Appearance"
272
  msgstr "Wygląd"
273
 
274
- #: includes/forms/views/edit-form.php:15
275
- #: includes/integrations/views/integration-settings.php:8
276
- #: includes/integrations/views/integrations.php:7
277
- #: includes/views/general-settings.php:7
278
- msgid "You are here: "
279
- msgstr "Jesteś tutaj:"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
 
281
- #: includes/forms/views/edit-form.php:27
282
- msgid "Edit Form"
283
- msgstr "Edytuj formularz"
284
 
285
- #: includes/forms/views/edit-form.php:45
286
- msgid "Enter form title here"
287
- msgstr "Wprowadź tytuł formularza..."
288
 
289
- #: includes/forms/views/edit-form.php:46
290
- msgid "Enter the title of your sign-up form"
291
- msgstr "Wprowadź tytuł fromularza do zapisu subskrybentów"
292
 
293
- #: includes/forms/views/edit-form.php:54
294
- msgid "Get shortcode"
295
- msgstr "Pobierz Shortcode'a"
296
 
297
- #: includes/forms/views/edit-form.php:59
298
- msgid "Preview this form"
299
- msgstr "Podejrzyj formularz."
300
 
301
- #: includes/forms/views/parts/add-fields-help.php:4
302
  #: includes/forms/views/tabs/form-fields.php:10
303
  msgid "Add more fields"
304
  msgstr "Dodaj więcej pól do formularza"
@@ -323,7 +856,7 @@ msgstr "Dodaj pola do wszystkich zaznaczonych list subskrybentów."
323
 
324
  #: includes/forms/views/parts/add-fields-help.php:23
325
  msgid "Clicking the following links will take you to the right screen."
326
- msgstr ""
327
 
328
  #: includes/forms/views/parts/add-fields-help.php:29
329
  msgid "Edit list fields for"
@@ -335,14 +868,9 @@ msgid ""
335
  "changes."
336
  msgstr "Kliknij poniższy button, by \"Mailchimp dla WordPress\" zaktualizował wprowadzone przez Ciebie zmiany."
337
 
338
- #: includes/forms/views/parts/add-fields-help.php:43
339
- #: includes/views/parts/lists-overview.php:8
340
- msgid "Renew MailChimp lists"
341
- msgstr "Odnów listy MailChimp"
342
-
343
  #: includes/forms/views/parts/dynamic-content-tags.php:6
344
  msgid "Add dynamic form variable"
345
- msgstr ""
346
 
347
  #: includes/forms/views/parts/dynamic-content-tags.php:8
348
  msgid ""
@@ -412,471 +940,158 @@ msgstr "Pola formularza"
412
  msgid "Enter the HTML code for your form fields.."
413
  msgstr "Wprowadź kod HTML dla pól twojego formularza."
414
 
415
- #: includes/forms/views/tabs/form-fields.php:27
416
- msgid "Your form is missing the following (required) form fields:"
417
- msgstr "Nie wypełniłeś/aś poniższych (wymaganych) pól formularza:"
418
-
419
- #: includes/forms/views/tabs/form-fields.php:34
420
  msgid ""
421
  "Use the shortcode %s to display this form inside a post, page or text "
422
  "widget."
423
  msgstr "Użyj shortcode'u %s, by wyświetlić ten formularz we wpisie, stronie lub tekstowym widgetcie."
424
 
425
- #: includes/forms/views/tabs/form-messages.php:3
426
  msgid "Form Messages"
427
  msgstr "Wiadomości formularza"
428
 
429
- #: includes/forms/views/tabs/form-messages.php:10
430
  msgid "Successfully subscribed"
431
  msgstr "Zostałeś pomyślnie zapisany do naszej bazy."
432
 
433
- #: includes/forms/views/tabs/form-messages.php:13
434
  msgid ""
435
  "The text that shows when an email address is successfully subscribed to the "
436
  "selected list(s)."
437
  msgstr "Tekst, który pokazuje się, gdy adres e-mail zostanie pomyślnie zapisany do konkretnej listy (list) subskrybentów."
438
 
439
- #: includes/forms/views/tabs/form-messages.php:17
440
  msgid "Invalid email address"
441
  msgstr "Nieprawidłowy adres e-mail"
442
 
443
- #: includes/forms/views/tabs/form-messages.php:20
444
  msgid "The text that shows when an invalid email address is given."
445
  msgstr "Tekst, który pokazuje się, gdy zostanie wprowadzony błędny adres e-mail."
446
 
447
- #: includes/forms/views/tabs/form-messages.php:24
448
  msgid "Required field missing"
449
  msgstr "Wymagane pole nie zostało wypełnione."
450
 
451
- #: includes/forms/views/tabs/form-messages.php:27
452
  msgid ""
453
  "The text that shows when a required field for the selected list(s) is "
454
  "missing."
455
  msgstr "Tekst, który pokazuje się, gdy wymagane pole dla wybranej listy (list) subskrybentów nie zostanie wypełnione."
456
 
457
- #: includes/forms/views/tabs/form-messages.php:31
458
  msgid "Already subscribed"
459
  msgstr "Adres już istnieje w bazie mailingowej."
460
 
461
- #: includes/forms/views/tabs/form-messages.php:34
462
  msgid ""
463
  "The text that shows when the given email is already subscribed to the "
464
  "selected list(s)."
465
  msgstr "Tekst, który pokazuje się, gdy adres e-mail jest już zapisany do konkretnej listy (list) subskrybentów."
466
 
467
- #: includes/forms/views/tabs/form-messages.php:38
468
  msgid "General error"
469
  msgstr "Ogólny błąd."
470
 
471
- #: includes/forms/views/tabs/form-messages.php:41
472
  msgid "The text that shows when a general error occured."
473
  msgstr "Tekst, który pokazuje się, gdy wystąpi ogólny błąd."
474
 
475
- #: includes/forms/views/tabs/form-messages.php:45
476
  msgid "Unsubscribed"
477
  msgstr "Wypisany z listy mailingowej."
478
 
479
- #: includes/forms/views/tabs/form-messages.php:48
480
  msgid ""
481
  "When using the unsubscribe method, this is the text that shows when the "
482
  "given email address is successfully unsubscribed from the selected list(s)."
483
- msgstr ""
484
 
485
- #: includes/forms/views/tabs/form-messages.php:52
486
  msgid "Not subscribed"
487
- msgstr ""
488
 
489
- #: includes/forms/views/tabs/form-messages.php:55
490
  msgid ""
491
  "When using the unsubscribe method, this is the text that shows when the "
492
  "given email address is not on the selected list(s)."
 
 
 
 
493
  msgstr ""
494
 
495
- #: includes/forms/views/tabs/form-messages.php:64
496
- msgid "HTML tags like %s are allowed in the message fields."
 
 
 
 
 
 
497
  msgstr ""
498
 
 
 
 
 
 
 
 
 
499
  #: includes/forms/views/tabs/form-settings.php:1
500
  msgid "Form Settings"
501
  msgstr "Ustawienia formularza"
502
 
503
  #: includes/forms/views/tabs/form-settings.php:5
504
  msgid "MailChimp specific settings"
505
- msgstr ""
506
-
507
- #: includes/forms/views/tabs/form-settings.php:12
508
- msgid "Lists this form subscribes to"
509
- msgstr ""
510
 
511
  #: includes/forms/views/tabs/form-settings.php:15
512
- #: includes/integrations/views/integration-settings.php:93
513
- msgid "No lists found, <a href=\"%s\">are you connected to MailChimp</a>?"
514
- msgstr ""
515
 
516
- #: includes/forms/views/tabs/form-settings.php:29
517
  msgid ""
518
  "Select the list(s) to which people who submit this form should be "
519
  "subscribed."
520
- msgstr ""
521
 
522
- #: includes/forms/views/tabs/form-settings.php:35
523
  msgid "Use double opt-in?"
524
  msgstr "Użyć double opt-in?"
525
 
526
- #: includes/forms/views/tabs/form-settings.php:39
527
- #: includes/forms/views/tabs/form-settings.php:54
528
- #: includes/forms/views/tabs/form-settings.php:69
529
- #: includes/forms/views/tabs/form-settings.php:85
530
- #: includes/forms/views/tabs/form-settings.php:115
531
- #: includes/integrations/views/integration-settings.php:53
532
- #: includes/integrations/views/integration-settings.php:66
533
- #: includes/integrations/views/integration-settings.php:117
534
- #: includes/integrations/views/integration-settings.php:129
535
- #: includes/integrations/views/integration-settings.php:142
536
- #: includes/integrations/views/integration-settings.php:163
537
- #: includes/integrations/views/integration-settings.php:180
538
- #: includes/integrations/views/integration-settings.php:199
539
- #: integrations/contact-form-7/class-contact-form-7.php:69
540
- msgid "Yes"
541
- msgstr "Tak"
542
-
543
- #: includes/forms/views/tabs/form-settings.php:43
544
- #: includes/forms/views/tabs/form-settings.php:58
545
- #: includes/forms/views/tabs/form-settings.php:73
546
- #: includes/forms/views/tabs/form-settings.php:89
547
- #: includes/forms/views/tabs/form-settings.php:119
548
- #: includes/integrations/views/integration-settings.php:54
549
- #: includes/integrations/views/integration-settings.php:67
550
- #: includes/integrations/views/integration-settings.php:118
551
- #: includes/integrations/views/integration-settings.php:130
552
- #: includes/integrations/views/integration-settings.php:146
553
- #: includes/integrations/views/integration-settings.php:167
554
- #: includes/integrations/views/integration-settings.php:184
555
- #: includes/integrations/views/integration-settings.php:203
556
- #: integrations/contact-form-7/class-contact-form-7.php:69
557
- msgid "No"
558
- msgstr "Nie"
559
-
560
- #: includes/forms/views/tabs/form-settings.php:45
561
- #: includes/integrations/views/integration-settings.php:149
562
- msgid ""
563
- "Select \"yes\" if you want people to confirm their email address before "
564
- "being subscribed (recommended)"
565
- msgstr ""
566
-
567
- #: includes/forms/views/tabs/form-settings.php:50
568
- msgid "Send final welcome email?"
569
- msgstr ""
570
-
571
- #: includes/forms/views/tabs/form-settings.php:60
572
- #: includes/integrations/views/integration-settings.php:169
573
- msgid ""
574
- "Select \"yes\" if you want to send your lists Welcome Email if a subscribe "
575
- "succeeds (only when double opt-in is disabled)."
576
- msgstr ""
577
-
578
- #: includes/forms/views/tabs/form-settings.php:65
579
- #: includes/integrations/views/integration-settings.php:176
580
- msgid "Update existing subscribers?"
581
- msgstr "Zaktualizować istniejących subskrybentów?"
582
-
583
- #: includes/forms/views/tabs/form-settings.php:75
584
- #: includes/integrations/views/integration-settings.php:186
585
- msgid ""
586
- "Select \"yes\" if you want to update existing subscribers with the data that"
587
- " is sent."
588
  msgstr ""
589
 
590
- #: includes/forms/views/tabs/form-settings.php:81
591
- #: includes/integrations/views/integration-settings.php:195
592
- msgid "Replace interest groups?"
593
- msgstr "Zamienić grupy zainteresowań"
594
-
595
- #: includes/forms/views/tabs/form-settings.php:92
596
- #: includes/integrations/views/integration-settings.php:206
597
  msgid ""
598
- "Select \"no\" if you want to add the selected groupings to any previously "
599
- "selected groupings when updating a subscriber."
600
  msgstr ""
601
 
602
- #: includes/forms/views/tabs/form-settings.php:93
603
- #: includes/integrations/views/integration-settings.php:207
604
- msgid "What does this do?"
605
- msgstr "Co to robi?"
606
-
607
- #: includes/forms/views/tabs/form-settings.php:104
608
  msgid "Form behaviour"
609
  msgstr "Zachowanie formularza"
610
 
611
- #: includes/forms/views/tabs/form-settings.php:111
612
  msgid "Hide form after a successful sign-up?"
613
  msgstr "Ukryć formularz po udanym zapisie?"
614
 
615
- #: includes/forms/views/tabs/form-settings.php:122
616
  msgid "Select \"yes\" to hide the form fields after a successful sign-up."
617
  msgstr "Wybierz \"tak\", by ukryć pola formularza po udanym zapisie."
618
 
619
- #: includes/forms/views/tabs/form-settings.php:127
620
  msgid "Redirect to URL after successful sign-ups"
621
  msgstr "Zrób przekierowanie na adres URL po udanym zapisie."
622
 
623
- #: includes/forms/views/tabs/form-settings.php:129
624
  msgid "Example: %s"
625
  msgstr "Przykład: %s"
626
 
627
- #: includes/forms/views/tabs/form-settings.php:130
628
  msgid ""
629
  "Leave empty or enter <code>0</code> for no redirect. Otherwise, use complete"
630
  " (absolute) URLs, including <code>http://</code>."
631
  msgstr ""
632
-
633
- #: includes/integrations/class-admin.php:79
634
- #: includes/integrations/class-admin.php:80
635
- #: includes/integrations/views/integration-settings.php:10
636
- #: includes/integrations/views/integrations.php:9
637
- #: includes/integrations/views/integrations.php:17
638
- msgid "Integrations"
639
- msgstr "Integracje"
640
-
641
- #: includes/integrations/views/integration-settings.php:20
642
- msgid "%s integration"
643
- msgstr "Integracja: \"%s\""
644
-
645
- #: includes/integrations/views/integration-settings.php:51
646
- msgid "Enabled?"
647
- msgstr ""
648
-
649
- #: includes/integrations/views/integration-settings.php:55
650
- msgid ""
651
- "Enable the %s integration? This will add a sign-up checkbox to the form."
652
- msgstr "Włączyć integracje: \"%s\"? Doda to checkboxa z zapisem do formularza."
653
-
654
- #: includes/integrations/views/integration-settings.php:64
655
- msgid "Implicit?"
656
- msgstr ""
657
-
658
- #: includes/integrations/views/integration-settings.php:68
659
- msgid ""
660
- "Select \"no\" if you want to ask your visitors before they are subscribed "
661
- "(recommended)."
662
- msgstr "Wybierz \"nie\" jeśli chcesz pytać swoich gości zanim zostaną zapisani (polecane)."
663
-
664
- #: includes/integrations/views/integration-settings.php:78
665
- msgid "MailChimp Lists"
666
- msgstr "Listy MailChimp"
667
-
668
- #: includes/integrations/views/integration-settings.php:89
669
- msgid ""
670
- "Select the list(s) to which people who check the checkbox should be "
671
- "subscribed."
672
- msgstr "Wybierz listę (listy) do których ludzie, którzy zaznaczą checkboxa powinni zostać zapisani."
673
-
674
- #: includes/integrations/views/integration-settings.php:102
675
- msgid "Checkbox label text"
676
- msgstr "Tekst pola wyboru"
677
-
678
- #: includes/integrations/views/integration-settings.php:105
679
- msgid "HTML tags like %s are allowed in the label text."
680
- msgstr ""
681
-
682
- #: includes/integrations/views/integration-settings.php:115
683
- msgid "Pre-check the checkbox?"
684
- msgstr "Czy checkbox powinien być od razu zaznaczony?"
685
-
686
- #: includes/integrations/views/integration-settings.php:119
687
- msgid "Select \"yes\" if the checkbox should be pre-checked."
688
- msgstr "Wybierz \"tak\", jeśli checkbox powinien być od razu zaznaczony."
689
-
690
- #: includes/integrations/views/integration-settings.php:127
691
- msgid "Load some default CSS?"
692
- msgstr "Załadować podstawowe style CSS?"
693
-
694
- #: includes/integrations/views/integration-settings.php:131
695
- msgid "Select \"yes\" if the checkbox appears in a weird place."
696
- msgstr "Wybierz \"tak\", jeśli checkbox pojawi się w dziwnym miejscu."
697
-
698
- #: includes/integrations/views/integration-settings.php:138
699
- msgid "Double opt-in?"
700
- msgstr "Double opt-in?"
701
-
702
- #: includes/integrations/views/integration-settings.php:159
703
- msgid "Send Welcome Email?"
704
- msgstr "Wysłać wiadomość powitalną?"
705
-
706
- #: includes/integrations/views/integration-settings.php:244
707
- msgid ""
708
- "The selected MailChimp lists require non-default fields, which may prevent "
709
- "this integration from working."
710
- msgstr ""
711
-
712
- #: includes/integrations/views/integration-settings.php:245
713
- msgid ""
714
- "Please ensure you <a href=\"%s\">configure the plugin to send all required "
715
- "fields</a> or <a href=\"%s\">log into your MailChimp account</a> and make "
716
- "sure only the email & name fields are marked as required fields for the "
717
- "selected list(s)."
718
- msgstr ""
719
-
720
- #: includes/integrations/views/integrations.php:30
721
- msgid "Enabled"
722
- msgstr ""
723
-
724
- #: includes/integrations/views/integrations.php:31
725
- msgid "Name"
726
- msgstr "Nazwa"
727
-
728
- #: includes/integrations/views/integrations.php:32
729
- msgid "Description"
730
- msgstr "Opis"
731
-
732
- #: includes/integrations/views/integrations.php:50
733
- msgid ""
734
- "This integration is enabled by default as it requires manual actions to "
735
- "work."
736
- msgstr ""
737
-
738
- #: includes/integrations/views/integrations.php:57
739
- msgid "Configure this integration"
740
- msgstr "Skonfiguruj tą integrację"
741
-
742
- #: includes/views/general-settings.php:18
743
- msgid "General Settings"
744
- msgstr "Ogólne ustawienia"
745
-
746
- #: includes/views/general-settings.php:35
747
- msgid "Status"
748
- msgstr "Status"
749
-
750
- #: includes/views/general-settings.php:39
751
- msgid "CONNECTED"
752
- msgstr "POŁĄCZONY"
753
-
754
- #: includes/views/general-settings.php:41
755
- msgid "NOT CONNECTED"
756
- msgstr "BRAK POŁĄCZENIA"
757
-
758
- #: includes/views/general-settings.php:48
759
- msgid "API Key"
760
- msgstr "Klucz API"
761
-
762
- #: includes/views/general-settings.php:50
763
- msgid "Your MailChimp API key"
764
- msgstr "Twoj klucz API z MailChimp."
765
-
766
- #: includes/views/general-settings.php:52
767
- msgid "The API key for connecting with your MailChimp account."
768
- msgstr ""
769
-
770
- #: includes/views/general-settings.php:53
771
- msgid "Get your API key here."
772
- msgstr "Zdobądź klucz API tutaj."
773
-
774
- #: includes/views/general-settings.php:65
775
- msgid "Usage Tracking"
776
- msgstr ""
777
-
778
- #: includes/views/general-settings.php:71
779
- msgid ""
780
- "Allow us to anonymously track how this plugin is used to help us make it "
781
- "better fit your needs."
782
- msgstr ""
783
-
784
- #: includes/views/general-settings.php:73
785
- msgid "This is what we track."
786
- msgstr ""
787
-
788
- #: includes/views/parts/admin-footer.php:11
789
- msgid ""
790
- "MailChimp for WordPress is in need of translations. Is the plugin not "
791
- "translated in your language or do you spot errors with the current "
792
- "translations? Helping out is easy! Head over to <a href=\"%s\">the "
793
- "translation project and click \"help translate\"</a>."
794
- msgstr ""
795
-
796
- #: includes/views/parts/admin-footer.php:31
797
- msgid ""
798
- "This plugin is not developed by or affiliated with MailChimp in any way."
799
- msgstr ""
800
-
801
- #: includes/views/parts/lists-overview.php:1
802
- msgid "Your MailChimp Account"
803
- msgstr ""
804
-
805
- #: includes/views/parts/lists-overview.php:2
806
- msgid ""
807
- "The table below shows your MailChimp lists and their details. If you just "
808
- "applied changes to your MailChimp lists, please use the following button to "
809
- "renew the cached lists configuration."
810
- msgstr ""
811
-
812
- #: includes/views/parts/lists-overview.php:14
813
- msgid "No lists were found in your MailChimp account"
814
- msgstr ""
815
-
816
- #: includes/views/parts/lists-overview.php:16
817
- msgid "A total of %d lists were found in your MailChimp account."
818
- msgstr ""
819
-
820
- #: includes/views/parts/lists-overview.php:21
821
- msgid "List Name"
822
- msgstr "Nazwa listy"
823
-
824
- #: includes/views/parts/lists-overview.php:22
825
- msgid "ID"
826
- msgstr "ID"
827
-
828
- #: includes/views/parts/lists-overview.php:23
829
- msgid "Subscribers"
830
- msgstr "Subskrybenci"
831
-
832
- #: includes/views/parts/lists-overview.php:45
833
- msgid "Edit this list in MailChimp"
834
- msgstr ""
835
-
836
- #: includes/views/parts/lists-overview.php:59
837
- msgid "%s (%s) with field type %s."
838
- msgstr ""
839
-
840
- #: includes/views/parts/lists-overview.php:83
841
- msgid "%s (ID: %s) with type %s."
842
- msgstr ""
843
-
844
- #: integrations/contact-form-7/admin-before.php:2
845
- msgid ""
846
- "To integrate with Contact Form 7, configure the settings below and then add "
847
- "%s to your CF7 form mark-up."
848
- msgstr ""
849
-
850
- #: integrations/custom/admin-before.php:2
851
- msgid ""
852
- "To get a custom integration to work, include the following HTML in the form "
853
- "you are trying to integrate with."
854
- msgstr ""
855
-
856
- #: integrations/woocommerce/class-woocommerce.php:102
857
- msgid "Order #%d"
858
- msgstr "Zamówienie #%d"
859
-
860
- #. Plugin Name of the plugin/theme
861
- msgid "MailChimp for WordPress"
862
- msgstr "MailChimp for WordPress"
863
-
864
- #. Plugin URI of the plugin/theme
865
- msgid ""
866
- "https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-"
867
- "wp&utm_campaign=plugins-page"
868
- msgstr "https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page"
869
-
870
- #. Description of the plugin/theme
871
- msgid ""
872
- "MailChimp for WordPress by ibericode. Adds various highly effective sign-up "
873
- "methods to your site."
874
- msgstr ""
875
-
876
- #. Author of the plugin/theme
877
- msgid "ibericode"
878
- msgstr "ibericode"
879
-
880
- #. Author URI of the plugin/theme
881
- msgid "https://ibericode.com/"
882
- msgstr "https://ibericode.com/"
1
+ # Copyright (C) 2017 mailchimp-for-wp
2
+ # This file is distributed under the same license as the mailchimp-for-wp package.
3
  # Translators:
4
+ # Albert Zasłonka <bercik156@gmail.com>, 2017
5
+ # Bart Fischer (Archimedesign) <info@archimedesign.co.uk>, 2015
6
+ # Albert Zasłonka <bercik156@gmail.com>, 2017
7
  # Jan Rusakiewicz <jan.rusakiewicz@gmail.com>, 2015
8
  # Mateusz Lomber <lumberpack@gmail.com>, 2017
9
  # Paweł Tomkiel <neonkowy@gmail.com>, 2016
11
  msgid ""
12
  msgstr ""
13
  "Project-Id-Version: MailChimp for WordPress\n"
14
+ "PO-Revision-Date: 2017-05-02 04:22+0000\n"
15
+ "Last-Translator: Albert Zasłonka <bercik156@gmail.com>\n"
 
 
16
  "Language-Team: Polish (Poland) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/pl_PL/)\n"
17
  "MIME-Version: 1.0\n"
18
  "Content-Type: text/plain; charset=UTF-8\n"
19
  "Content-Transfer-Encoding: 8bit\n"
20
  "Language: pl_PL\n"
21
+ "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
22
+ "X-Poedit-Basepath: ..\n"
23
+ "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
24
+ "X-Poedit-SearchPath-0: .\n"
25
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
26
+ "X-Poedit-SourceCharset: UTF-8\n"
27
+
28
+ #: includes/admin/class-admin-texts.php62,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  #: includes/forms/views/edit-form.php:6
30
  msgid "Settings"
31
  msgstr "Ustawienia"
34
  msgid "Documentation"
35
  msgstr "Dokumentacja"
36
 
37
+ #: includes/admin/class-admin.php:204
38
  msgid ""
39
  "Success! The cached configuration for your MailChimp lists has been renewed."
40
  msgstr "Operacja przywrócenia listy subskrypcji twojego konta MailChimp została zakończona pomyślnie."
41
 
42
+ #: includes/admin/class-admin.php:304
43
  msgid ""
44
  "This is a pro-only feature. Please upgrade to the premium version to be able"
45
  " to use it."
46
  msgstr "Opcja premium. Kup wersję premium, aby móc korzystać z tej opcji."
47
 
48
+ #: includes/admin/class-admin.php305,
49
+ #: includes/views/parts/lists-overview.php10,
50
+ #: includes/forms/views/parts/add-fields-help.php:43
51
+ msgid "Renew MailChimp lists"
52
+ msgstr "Odnów listy MailChimp"
53
+
54
+ #: includes/admin/class-admin.php:306
55
+ msgid "Fetching MailChimp lists"
56
+ msgstr ""
57
+
58
+ #: includes/admin/class-admin.php:307
59
+ msgid "Done! MailChimp lists renewed."
60
+ msgstr "Gotowe! Listy MailChimp odnowione."
61
+
62
+ #: includes/admin/class-admin.php:308
63
+ msgid "This can take a while if you have many MailChimp lists."
64
+ msgstr ""
65
+
66
+ #: includes/admin/class-admin.php336, includes/views/general-settings.php:31
67
  msgid "MailChimp API Settings"
68
  msgstr "Ustawienia API MailChimp"
69
 
70
+ #: includes/admin/class-admin.php:337
 
71
  msgid "MailChimp"
72
  msgstr "MailChimp"
73
 
74
+ #: includes/admin/class-admin.php343, includes/views/other-settings.php60,
75
+ #: includes/views/other-settings.php:70
76
+ msgid "Other Settings"
77
+ msgstr "Inne Ustawienia"
78
 
79
+ #: includes/admin/class-admin.php:344
80
+ msgid "Other"
81
+ msgstr "Inne"
82
+
83
+ #: includes/admin/class-admin.php:458
84
+ msgid "Log successfully emptied."
85
+ msgstr "Logi Usunięte."
86
+
87
+ #: includes/admin/class-admin.php:488
88
+ msgid ""
89
+ "To get started with MailChimp for WordPress, please <a href=\"%s\">enter "
90
+ "your MailChimp API key on the settings page of the plugin</a>."
91
+ msgstr ""
92
+
93
+ #: includes/admin/class-ads.php:39
94
+ msgid ""
95
+ "Want to customize the style of your form? <a href=\"%s\">Try our Styles "
96
+ "Builder</a> & edit the look of your forms with just a few clicks."
97
+ msgstr ""
98
+
99
+ #: includes/admin/class-ads.php:54
100
+ msgid ""
101
+ "Be notified whenever someone subscribes? <a href=\"%s\">MailChimp for "
102
+ "WordPress Premium</a> allows you to set up email notifications for your "
103
+ "forms."
104
+ msgstr ""
105
+
106
+ #: includes/admin/class-ads.php:56
107
+ msgid ""
108
+ "Increased conversions? <a href=\"%s\">MailChimp for WordPress Premium</a> "
109
+ "submits forms without reloading the entire page, resulting in a much better "
110
+ "experience for your visitors."
111
+ msgstr ""
112
+
113
+ #: includes/admin/class-ads.php:70
114
+ msgid "Upgrade to Premium"
115
+ msgstr "Zaktualizuj do Wersji Premium"
116
+
117
+ #: includes/admin/class-ads.php:83
118
+ msgid ""
119
+ "Do you want translated forms for all of your languages? <a href=\"%s\">Try "
120
+ "MailChimp for WordPress Premium</a>, which does just that plus more."
121
+ msgstr ""
122
+
123
+ #: includes/admin/class-ads.php:88
124
+ msgid ""
125
+ "Do you want to create more than one form? Our Premium add-on does just that!"
126
+ " <a href=\"%s\">Have a look at all Premium benefits</a>."
127
+ msgstr ""
128
+
129
+ #: includes/admin/class-ads.php:93
130
  msgid ""
131
+ "Are you enjoying this plugin? The Premium add-on unlocks several powerful "
132
+ "features. <a href=\"%s\">Find out about all benefits now</a>."
133
+ msgstr ""
134
 
135
+ #: includes/admin/class-ads.php:112
136
  msgid "More subscribers, better newsletters."
137
  msgstr "Więcej subskrybentów, lepsze newslettery."
138
 
139
+ #: includes/admin/class-ads.php:113
140
  msgid ""
141
  "Learn how to best grow your lists & write better emails by subscribing to "
142
  "our monthly tips."
143
  msgstr "Dowiedz się jak pozyskać więcej subskrybentów oraz jak pisać lepsze wiadomości email w naszych comiesięcznych poradach."
144
 
145
+ #: includes/admin/class-ads.php:116
146
  msgid "Email Address"
147
  msgstr "Adres e-mail"
148
 
149
+ #: includes/admin/class-ads.php:120
150
  msgid "First Name"
151
  msgstr "Imię"
152
 
153
+ #: includes/admin/class-ads.php127, includes/forms/class-admin.php:94
154
  msgid "Subscribe"
155
  msgstr "Subskrybuj"
156
 
157
+ #: includes/admin/class-ads.php:150
158
+ msgid ""
159
+ "Do you want to track all WooCommerce orders in MailChimp so you can send "
160
+ "emails based on the purchase activity of your subscribers?"
161
+ msgstr ""
162
 
163
+ #: includes/admin/class-ads.php:153
164
+ msgid ""
165
+ "<a href=\"%s\">Upgrade to MailChimp for WordPress Premium</a> or <a "
166
+ "href=\"%s\">read more about MailChimp's E-Commerce features</a>."
167
+ msgstr ""
168
+
169
+ #: includes/admin/class-review-notice.php:68
170
+ msgid ""
171
+ "You've been using MailChimp for WordPress for some time now; we hope you "
172
+ "love it!"
173
+ msgstr ""
174
+
175
+ #: includes/admin/class-review-notice.php:69
176
+ msgid ""
177
+ "If you do, please <a href=\"%s\">leave us a 5★ rating on WordPress.org</a>. "
178
+ "It would be of great help to us."
179
+ msgstr ""
180
 
181
+ #: includes/admin/class-review-notice.php:71
182
+ msgid "Dismiss this notice."
183
+ msgstr "Usuń to powiadomienie"
184
+
185
+ #: includes/api/class-api.php:84
186
  msgid "Read more about common connectivity issues."
187
  msgstr "Czytaj więcej o rozwiązywaniu problemów z łącznością."
188
 
189
+ #: includes/forms/class-admin.php:62
190
+ msgid "Add to form"
191
+ msgstr "Dodaj do formularza"
192
+
193
+ #: includes/forms/class-admin.php:63
194
+ msgid "City"
195
+ msgstr "Miasto"
196
+
197
+ #: includes/forms/class-admin.php:64
198
+ msgid "Checkboxes"
199
+ msgstr "Pola wyboru"
200
+
201
+ #: includes/forms/class-admin.php:65
202
+ msgid "Choices"
203
+ msgstr ""
204
+
205
+ #: includes/forms/class-admin.php:66
206
+ msgid "Choice type"
207
+ msgstr ""
208
+
209
+ #: includes/forms/class-admin.php:67
210
+ msgid "Choose a field to add to the form"
211
+ msgstr ""
212
+
213
+ #: includes/forms/class-admin.php:68
214
+ msgid "Close"
215
+ msgstr "Zamknij"
216
+
217
+ #: includes/forms/class-admin.php:69
218
+ msgid "Country"
219
+ msgstr "Kraj"
220
+
221
+ #: includes/forms/class-admin.php:70
222
+ msgid "Dropdown"
223
+ msgstr "Upuść"
224
+
225
+ #: includes/forms/class-admin.php:71
226
+ msgid "Field type"
227
+ msgstr ""
228
+
229
+ #: includes/forms/class-admin.php:72
230
+ msgid "Field label"
231
+ msgstr ""
232
+
233
+ #: includes/forms/class-admin.php:73
234
+ msgid "Form action"
235
+ msgstr ""
236
+
237
+ #: includes/forms/class-admin.php:74
238
+ msgid ""
239
+ "This field will allow your visitors to choose whether they would like to "
240
+ "subscribe or unsubscribe"
241
+ msgstr ""
242
+
243
+ #: includes/forms/class-admin.php:75
244
+ msgid "Form fields"
245
+ msgstr ""
246
+
247
+ #: includes/forms/class-admin.php:76
248
+ msgid "This field is marked as required in MailChimp."
249
+ msgstr ""
250
+
251
+ #: includes/forms/class-admin.php:77
252
+ msgid "Initial value"
253
+ msgstr ""
254
+
255
+ #: includes/forms/class-admin.php:78
256
+ msgid "Interest categories"
257
+ msgstr ""
258
+
259
+ #: includes/forms/class-admin.php:79
260
+ msgid "Is this field required?"
261
+ msgstr ""
262
+
263
+ #: includes/forms/class-admin.php:80
264
+ msgid "List choice"
265
+ msgstr ""
266
+
267
+ #: includes/forms/class-admin.php:81
268
+ msgid "This field will allow your visitors to choose a list to subscribe to."
269
+ msgstr ""
270
+
271
+ #: includes/forms/class-admin.php:82
272
+ msgid "List fields"
273
+ msgstr ""
274
+
275
+ #: includes/forms/class-admin.php:83
276
+ msgid "Min"
277
+ msgstr ""
278
+
279
+ #: includes/forms/class-admin.php:84
280
+ msgid "Max"
281
+ msgstr ""
282
+
283
+ #: includes/forms/class-admin.php:85
284
+ msgid ""
285
+ "No available fields. Did you select a MailChimp list in the form settings?"
286
+ msgstr ""
287
+
288
+ #: includes/forms/class-admin.php:86
289
+ msgid "Optional"
290
+ msgstr ""
291
+
292
+ #: includes/forms/class-admin.php:87
293
+ msgid "Placeholder"
294
+ msgstr ""
295
+
296
+ #: includes/forms/class-admin.php:88
297
+ msgid "Text to show when field has no value."
298
+ msgstr ""
299
+
300
+ #: includes/forms/class-admin.php:89
301
+ msgid "Preselect"
302
+ msgstr ""
303
+
304
+ #: includes/forms/class-admin.php:90
305
+ msgid "Remove"
306
+ msgstr ""
307
+
308
+ #: includes/forms/class-admin.php:91
309
+ msgid "Radio buttons"
310
+ msgstr ""
311
+
312
+ #: includes/forms/class-admin.php:92
313
+ msgid "Street Address"
314
+ msgstr ""
315
+
316
+ #: includes/forms/class-admin.php:93
317
+ msgid "State"
318
+ msgstr ""
319
+
320
+ #: includes/forms/class-admin.php:95
321
+ msgid "Submit button"
322
+ msgstr ""
323
+
324
+ #: includes/forms/class-admin.php:96
325
+ msgid "Wrap in paragraph tags?"
326
+ msgstr ""
327
+
328
+ #: includes/forms/class-admin.php:97
329
+ msgid "Value"
330
+ msgstr ""
331
+
332
+ #: includes/forms/class-admin.php:98
333
+ msgid "Text to prefill this field with."
334
+ msgstr ""
335
+
336
+ #: includes/forms/class-admin.php:99
337
+ msgid "ZIP"
338
+ msgstr ""
339
+
340
+ #: includes/forms/class-admin.php111, includes/forms/class-admin.php112,
341
+ #: includes/forms/views/edit-form.php:24
342
  msgid "Forms"
343
  msgstr "Formularze"
344
 
345
+ #: includes/forms/class-admin.php152, includes/forms/class-admin.php:276
346
  msgid "<strong>Success!</strong> Form successfully saved."
347
  msgstr "<strong>Sukces!</strong> Formularz został pomyślnie zapisany."
348
 
349
+ #: includes/forms/class-admin.php:276
350
  msgid "Preview form"
351
  msgstr "Podejrzyj formularz."
352
 
353
+ #: includes/forms/class-admin.php449, includes/forms/class-widget.php:30
354
+ msgid "MailChimp Sign-Up Form"
355
+ msgstr "Formularz rejestracyjny MailChimp"
356
 
357
+ #: includes/forms/class-admin.php:453
358
+ msgid "Select the form to show"
359
+ msgstr ""
360
 
361
+ #: includes/forms/class-form-previewer.php:146
362
  msgid "Form preview"
363
  msgstr "Podgląd formularza"
364
 
365
+ #: includes/forms/class-form-tags.php:60
366
  msgid "Replaced with the form response (error or success messages)."
367
  msgstr "Zamienione na odpowiedź formularza (wiadomość o błędzie lub powodzeniu)"
368
 
369
+ #: includes/forms/class-form-tags.php:65
370
  msgid "Data from the URL or a submitted form."
371
  msgstr "Dane z adresu URL lub formularza."
372
 
373
+ #: includes/forms/class-form-tags.php:71
374
+ msgid "Data from a cookie."
375
+ msgstr ""
376
+
377
+ #: includes/forms/class-form-tags.php77,
378
  #: includes/integrations/class-integration-tags.php:45
379
  msgid "Replaced with the number of subscribers on the selected list(s)"
380
  msgstr "Zamienione na liczbę subskrybentów na zaznaczonej liście (listach)."
381
 
382
+ #: includes/forms/class-form-tags.php:82
383
  msgid "The email address of the current visitor (if known)."
384
  msgstr "Adres e-mail aktualnie odwiedzającego (jeśli znany)"
385
 
386
+ #: includes/forms/class-form-tags.php:87
387
  msgid "The URL of the page."
388
  msgstr "URL strony."
389
 
390
+ #: includes/forms/class-form-tags.php:92
391
  msgid "The path of the page."
392
  msgstr "Ścieżka strony."
393
 
394
+ #: includes/forms/class-form-tags.php:97
395
  msgid "The current date. Example: %s."
396
  msgstr "Aktualna data. Przykład: %s."
397
 
398
+ #: includes/forms/class-form-tags.php:102
399
  msgid "The current time. Example: %s."
400
  msgstr "Aktualny czas. Przykład: %s."
401
 
402
+ #: includes/forms/class-form-tags.php:107
403
  msgid "The site's language. Example: %s."
404
  msgstr "Aktualny język strony. Przykład: %s."
405
 
406
+ #: includes/forms/class-form-tags.php:112
407
  msgid "The visitor's IP address. Example: %s."
408
  msgstr "Adres IP odwiedzającego. Przykład %s."
409
 
410
+ #: includes/forms/class-form-tags.php:117
411
  msgid "The property of the currently logged-in user."
412
  msgstr "Dane aktualnie zalogowanego usera."
413
 
414
+ #: includes/forms/class-form-tags.php:123
415
+ msgid "Property of the current page or post."
416
+ msgstr ""
417
+
418
+ #: includes/forms/class-form.php:133
419
  msgid "There is no form with ID %d, perhaps it was deleted?"
420
  msgstr "Brak formularza o ID %d. Może został usunięty?"
421
 
423
  msgid "Newsletter"
424
  msgstr "Newsletter"
425
 
 
 
 
 
426
  #: includes/forms/class-widget.php:32
427
  msgid "Displays your MailChimp for WordPress sign-up form"
428
  msgstr "Wyświetla Twój formularz MailChimp for WordPress."
437
  " form settings</a>."
438
  msgstr "Możesz edytować swój formularz zapisu do newslettera w <a href=\"%s\">Ustawieniach \"MailChimp dla Wordpress\"</a>"
439
 
440
+ #: includes/integrations/class-admin.php79,
441
+ #: includes/integrations/class-admin.php80,
442
+ #: includes/integrations/views/integration-settings.php10,
443
+ #: includes/integrations/views/integrations.php57,
444
+ #: includes/integrations/views/integrations.php:65
445
+ msgid "Integrations"
446
+ msgstr "Integracje"
447
+
448
+ #: includes/views/general-settings.php7, includes/views/other-settings.php58,
449
+ #: includes/forms/views/edit-form.php22,
450
+ #: includes/integrations/views/integration-settings.php8,
451
+ #: includes/integrations/views/integrations.php:55
452
+ msgid "You are here: "
453
+ msgstr "Jesteś tutaj:"
454
+
455
+ #: includes/views/general-settings.php:18
456
+ msgid "General Settings"
457
+ msgstr "Ogólne ustawienia"
458
+
459
+ #: includes/views/general-settings.php:38
460
+ msgid "Status"
461
+ msgstr "Status"
462
+
463
+ #: includes/views/general-settings.php:42
464
+ msgid "CONNECTED"
465
+ msgstr "POŁĄCZONY"
466
+
467
+ #: includes/views/general-settings.php:44
468
+ msgid "NOT CONNECTED"
469
+ msgstr "BRAK POŁĄCZENIA"
470
+
471
+ #: includes/views/general-settings.php:51
472
+ msgid "API Key"
473
+ msgstr "Klucz API"
474
+
475
+ #: includes/views/general-settings.php:53
476
+ msgid "Your MailChimp API key"
477
+ msgstr "Twoj klucz API z MailChimp."
478
+
479
+ #: includes/views/general-settings.php:55
480
+ msgid "The API key for connecting with your MailChimp account."
481
+ msgstr "Klucz API do połączenia z Twoim konem MailChimp."
482
+
483
+ #: includes/views/general-settings.php:56
484
+ msgid "Get your API key here."
485
+ msgstr "Zdobądź klucz API tutaj."
486
+
487
+ #: includes/views/other-settings.php:14
488
+ msgid "Miscellaneous settings"
489
+ msgstr ""
490
+
491
+ #: includes/views/other-settings.php:17
492
+ msgid "Usage Tracking"
493
+ msgstr "Śledzenie"
494
+
495
+ #: includes/views/other-settings.php:29
496
+ msgid ""
497
+ "Allow us to anonymously track how this plugin is used to help us make it "
498
+ "better fit your needs."
499
+ msgstr "Pozwól nam anonimowo śledzić jak wykorzystywany jest ten plugin, aby lepiej dopasować go do Twoich potrzeb."
500
+
501
+ #: includes/views/other-settings.php:31
502
+ msgid "This is what we track."
503
+ msgstr "Oto jak śledzimy."
504
+
505
+ #: includes/views/other-settings.php:37
506
+ msgid "Logging"
507
+ msgstr ""
508
+
509
+ #: includes/views/other-settings.php:44
510
+ msgid ""
511
+ "Determines what events should be written to <a href=\"%s\">the debug log</a>"
512
+ " (see below)."
513
+ msgstr ""
514
+
515
+ #: includes/views/other-settings.php:99
516
+ msgid "Debug Log"
517
+ msgstr ""
518
+
519
+ #: includes/views/other-settings.php:99
520
+ msgid "Filter.."
521
+ msgstr ""
522
+
523
+ #: includes/views/other-settings.php:104
524
+ msgid "Log file is not writable."
525
+ msgstr ""
526
+
527
+ #: includes/views/other-settings.php:105
528
+ msgid "Please ensure %s has the proper <a href=\"%s\">file permissions</a>."
529
+ msgstr ""
530
+
531
+ #: includes/views/other-settings.php:123
532
+ msgid "Nothing here. Which means there are no errors!"
533
+ msgstr ""
534
+
535
+ #: includes/views/other-settings.php:133
536
+ msgid "Empty Log"
537
+ msgstr ""
538
+
539
+ #: includes/views/other-settings.php:141
540
+ msgid "Right now, the plugin is configured to only log errors and warnings."
541
+ msgstr ""
542
+
543
+ #: includes/admin/migrations/3.0.0-form-1-post-type.php:35
544
+ msgid "Default sign-up form"
545
+ msgstr "Domyślny formularz zapisu"
546
+
547
+ #: includes/forms/views/add-form.php10, includes/forms/views/add-form.php:60
548
  msgid "Add new form"
549
  msgstr "Dodaj nowy formularz"
550
 
576
  msgid "Appearance"
577
  msgstr "Wygląd"
578
 
579
+ #: includes/forms/views/edit-form.php:25
580
+ msgid "Form"
581
+ msgstr ""
582
+
583
+ #: includes/forms/views/edit-form.php:34
584
+ msgid "Edit Form"
585
+ msgstr "Edytuj formularz"
586
+
587
+ #: includes/forms/views/edit-form.php:58
588
+ msgid "Enter form title here"
589
+ msgstr "Wprowadź tytuł formularza..."
590
+
591
+ #: includes/forms/views/edit-form.php:59
592
+ msgid "Enter the title of your sign-up form"
593
+ msgstr "Wprowadź tytuł fromularza do zapisu subskrybentów"
594
+
595
+ #: includes/forms/views/edit-form.php:65
596
+ msgid "Shortcode"
597
+ msgstr ""
598
+
599
+ #: includes/forms/views/edit-form.php:67
600
+ msgid "Get shortcode"
601
+ msgstr "Pobierz Shortcode'a"
602
+
603
+ #: includes/forms/views/edit-form.php:72
604
+ msgid "Preview this form"
605
+ msgstr "Podejrzyj formularz."
606
+
607
+ #: includes/integrations/views/integration-settings.php:20
608
+ msgid "%s integration"
609
+ msgstr "Integracja: \"%s\""
610
+
611
+ #: includes/integrations/views/integration-settings.php:27
612
+ msgid ""
613
+ "The selected MailChimp lists require non-default fields, which may prevent "
614
+ "this integration from working."
615
+ msgstr ""
616
+
617
+ #: includes/integrations/views/integration-settings.php:28
618
+ msgid ""
619
+ "Please ensure you <a href=\"%s\">configure the plugin to send all required "
620
+ "fields</a> or <a href=\"%s\">log into your MailChimp account</a> and make "
621
+ "sure only the email & name fields are marked as required fields for the "
622
+ "selected list(s)."
623
+ msgstr ""
624
+
625
+ #: includes/integrations/views/integration-settings.php:62
626
+ msgid "Enabled?"
627
+ msgstr ""
628
+
629
+ #: includes/integrations/views/integration-settings.php:66
630
+ msgid ""
631
+ "Enable the %s integration? This will add a sign-up checkbox to the form."
632
+ msgstr "Włączyć integracje: \"%s\"? Doda to checkboxa z zapisem do formularza."
633
+
634
+ #: includes/integrations/views/integration-settings.php:76
635
+ msgid "Implicit?"
636
+ msgstr ""
637
+
638
+ #: includes/integrations/views/integration-settings.php:80
639
+ msgid ""
640
+ "Select \"no\" if you want to ask your visitors before they are subscribed "
641
+ "(recommended)."
642
+ msgstr "Wybierz \"nie\" jeśli chcesz pytać swoich gości zanim zostaną zapisani (polecane)."
643
+
644
+ #: includes/integrations/views/integration-settings.php:90
645
+ msgid "MailChimp Lists"
646
+ msgstr "Listy MailChimp"
647
+
648
+ #: includes/integrations/views/integration-settings.php:103
649
+ msgid ""
650
+ "Select the list(s) to which people who check the checkbox should be "
651
+ "subscribed."
652
+ msgstr "Wybierz listę (listy) do których ludzie, którzy zaznaczą checkboxa powinni zostać zapisani."
653
+
654
+ #: includes/integrations/views/integration-settings.php107,
655
+ #: includes/forms/views/tabs/form-settings.php:18
656
+ msgid "No lists found, <a href=\"%s\">are you connected to MailChimp</a>?"
657
+ msgstr "Nie znaleziono listy, <a href=\\\"%s\\\"> czy jesteś połączony z MailChimp</a>?"
658
+
659
+ #: includes/integrations/views/integration-settings.php:116
660
+ msgid "Checkbox label text"
661
+ msgstr "Tekst pola wyboru"
662
+
663
+ #: includes/integrations/views/integration-settings.php:119
664
+ msgid "HTML tags like %s are allowed in the label text."
665
+ msgstr "Znaczniki HTML takie jak %s są dozwolone w obszarach wiadomości."
666
+
667
+ #: includes/integrations/views/integration-settings.php:129
668
+ msgid "Pre-check the checkbox?"
669
+ msgstr "Czy checkbox powinien być od razu zaznaczony?"
670
+
671
+ #: includes/integrations/views/integration-settings.php:133
672
+ msgid "Select \"yes\" if the checkbox should be pre-checked."
673
+ msgstr "Wybierz \"tak\", jeśli checkbox powinien być od razu zaznaczony."
674
+
675
+ #: includes/integrations/views/integration-settings.php:141
676
+ msgid "Load some default CSS?"
677
+ msgstr "Załadować podstawowe style CSS?"
678
+
679
+ #: includes/integrations/views/integration-settings.php:145
680
+ msgid "Select \"yes\" if the checkbox appears in a weird place."
681
+ msgstr "Wybierz \"tak\", jeśli checkbox pojawi się w dziwnym miejscu."
682
+
683
+ #: includes/integrations/views/integration-settings.php:152
684
+ msgid "Double opt-in?"
685
+ msgstr "Double opt-in?"
686
+
687
+ #: includes/integrations/views/integration-settings.php:163
688
+ msgid ""
689
+ "Select \"yes\" if you want people to confirm their email address before "
690
+ "being subscribed (recommended)"
691
+ msgstr "Zaznacz \\\"yes\\\" jeśli chcesz potwierdzenia adresu email \nprzed subskrybowaniem (rekomendowane)"
692
+
693
+ #: includes/integrations/views/integration-settings.php171,
694
+ #: includes/forms/views/tabs/form-settings.php:52
695
+ msgid "Update existing subscribers?"
696
+ msgstr "Zaktualizować istniejących subskrybentów?"
697
+
698
+ #: includes/integrations/views/integration-settings.php181,
699
+ #: includes/forms/views/tabs/form-settings.php:62
700
+ msgid ""
701
+ "Select \"yes\" if you want to update existing subscribers with the data that"
702
+ " is sent."
703
+ msgstr "Wybierz \"Tak\", jeśli chcesz uaktualnić istniejących subskrybentów wraz z danymi które są wysyłane."
704
+
705
+ #: includes/integrations/views/integration-settings.php190,
706
+ #: includes/forms/views/tabs/form-settings.php:68
707
+ msgid "Replace interest groups?"
708
+ msgstr "Zamienić grupy zainteresowań"
709
+
710
+ #: includes/integrations/views/integration-settings.php201,
711
+ #: includes/forms/views/tabs/form-settings.php:79
712
+ msgid ""
713
+ "Select \"no\" if you want to add the selected interests to any previously "
714
+ "selected interests when updating a subscriber."
715
+ msgstr ""
716
+
717
+ #: includes/integrations/views/integration-settings.php202,
718
+ #: includes/forms/views/tabs/form-settings.php:80
719
+ msgid "What does this do?"
720
+ msgstr "Co to robi?"
721
+
722
+ #: includes/integrations/views/integrations.php:17
723
+ msgid "Name"
724
+ msgstr "Nazwa"
725
+
726
+ #: includes/integrations/views/integrations.php:18
727
+ msgid "Description"
728
+ msgstr "Opis"
729
+
730
+ #: includes/integrations/views/integrations.php:35
731
+ msgid "Configure this integration"
732
+ msgstr "Skonfiguruj tą integrację"
733
+
734
+ #: includes/integrations/views/integrations.php:71
735
+ msgid "The table below shows all available integrations."
736
+ msgstr ""
737
+
738
+ #: includes/integrations/views/integrations.php:72
739
+ msgid ""
740
+ "Click on the name of an integration to edit all settings specific to that "
741
+ "integration."
742
+ msgstr ""
743
+
744
+ #: includes/integrations/views/integrations.php:79
745
+ msgid "Enabled integrations"
746
+ msgstr ""
747
+
748
+ #: includes/integrations/views/integrations.php:84
749
+ msgid "Available integrations"
750
+ msgstr ""
751
+
752
+ #: includes/views/parts/admin-footer.php:15
753
+ msgid ""
754
+ "MailChimp for WordPress is in need of translations. Is the plugin not "
755
+ "translated in your language or do you spot errors with the current "
756
+ "translations? Helping out is easy! Head over to <a href=\"%s\">the "
757
+ "translation project and click \"help translate\"</a>."
758
+ msgstr ""
759
+
760
+ #: includes/views/parts/admin-footer.php:35
761
+ msgid ""
762
+ "This plugin is not developed by or affiliated with MailChimp in any way."
763
+ msgstr ""
764
+
765
+ #: includes/views/parts/admin-sidebar.php:11
766
+ msgid "Looking for help?"
767
+ msgstr ""
768
+
769
+ #: includes/views/parts/admin-sidebar.php:12
770
+ msgid "We have some resources available to help you in the right direction."
771
+ msgstr ""
772
+
773
+ #: includes/views/parts/admin-sidebar.php:14
774
+ msgid "Knowledge Base"
775
+ msgstr ""
776
+
777
+ #: includes/views/parts/admin-sidebar.php:15
778
+ msgid "Frequently Asked Questions"
779
+ msgstr ""
780
+
781
+ #: includes/views/parts/admin-sidebar.php:16
782
+ msgid "Code reference for developers"
783
+ msgstr ""
784
+
785
+ #: includes/views/parts/admin-sidebar.php:36
786
+ msgid "Looking to improve your sign-up rates?"
787
+ msgstr ""
788
+
789
+ #: includes/views/parts/admin-sidebar.php:37
790
+ msgid ""
791
+ "Our <a href=\"%s\">Boxzilla plugin</a> allows you to create pop-ups or "
792
+ "slide-ins with a subscribe form. A sure way to grow your lists faster."
793
+ msgstr ""
794
+
795
+ #: includes/views/parts/lists-overview.php:1
796
+ msgid "Your MailChimp Account"
797
+ msgstr "Twoje konto MailChimp"
798
+
799
+ #: includes/views/parts/lists-overview.php:2
800
+ msgid ""
801
+ "The table below shows your MailChimp lists and their details. If you just "
802
+ "applied changes to your MailChimp lists, please use the following button to "
803
+ "renew the cached lists configuration."
804
+ msgstr "Poniższa tabela przedstawia twoje dane z MailChimp. Jeśli wprowadziłeś zmiany do list MailChimp, należy użyć poniższy przycisk, aby odnowić buforowane dane."
805
+
806
+ #: includes/views/parts/lists-overview.php:17
807
+ msgid "No lists were found in your MailChimp account"
808
+ msgstr "Nie znaleziono list na Twoim koncie MailChimp."
809
+
810
+ #: includes/views/parts/lists-overview.php:19
811
+ msgid "A total of %d lists were found in your MailChimp account."
812
+ msgstr ""
813
 
814
+ #: includes/views/parts/lists-overview.php:24
815
+ msgid "List Name"
816
+ msgstr "Nazwa listy"
817
 
818
+ #: includes/views/parts/lists-overview.php:25
819
+ msgid "ID"
820
+ msgstr "ID"
821
 
822
+ #: includes/views/parts/lists-overview.php:26
823
+ msgid "Subscribers"
824
+ msgstr "Subskrybenci"
825
 
826
+ #: includes/views/parts/lists-overview.php:48
827
+ msgid "Edit this list in MailChimp"
828
+ msgstr "Edytuj tą liste w MailChimp"
829
 
830
+ #: includes/views/parts/lists-overview.php:62
831
+ msgid "%s (%s) with field type %s."
832
+ msgstr ""
833
 
834
+ #: includes/forms/views/parts/add-fields-help.php4,
835
  #: includes/forms/views/tabs/form-fields.php:10
836
  msgid "Add more fields"
837
  msgstr "Dodaj więcej pól do formularza"
856
 
857
  #: includes/forms/views/parts/add-fields-help.php:23
858
  msgid "Clicking the following links will take you to the right screen."
859
+ msgstr "Kliknięcie poniższych linków przeniesie Cię do odpowiedniego ekranu."
860
 
861
  #: includes/forms/views/parts/add-fields-help.php:29
862
  msgid "Edit list fields for"
868
  "changes."
869
  msgstr "Kliknij poniższy button, by \"Mailchimp dla WordPress\" zaktualizował wprowadzone przez Ciebie zmiany."
870
 
 
 
 
 
 
871
  #: includes/forms/views/parts/dynamic-content-tags.php:6
872
  msgid "Add dynamic form variable"
873
+ msgstr "Dodaj dynamiczną zmienną formularza."
874
 
875
  #: includes/forms/views/parts/dynamic-content-tags.php:8
876
  msgid ""
940
  msgid "Enter the HTML code for your form fields.."
941
  msgstr "Wprowadź kod HTML dla pól twojego formularza."
942
 
943
+ #: includes/forms/views/tabs/form-fields.php:26
 
 
 
 
944
  msgid ""
945
  "Use the shortcode %s to display this form inside a post, page or text "
946
  "widget."
947
  msgstr "Użyj shortcode'u %s, by wyświetlić ten formularz we wpisie, stronie lub tekstowym widgetcie."
948
 
949
+ #: includes/forms/views/tabs/form-messages.php:6
950
  msgid "Form Messages"
951
  msgstr "Wiadomości formularza"
952
 
953
+ #: includes/forms/views/tabs/form-messages.php:16
954
  msgid "Successfully subscribed"
955
  msgstr "Zostałeś pomyślnie zapisany do naszej bazy."
956
 
957
+ #: includes/forms/views/tabs/form-messages.php:19
958
  msgid ""
959
  "The text that shows when an email address is successfully subscribed to the "
960
  "selected list(s)."
961
  msgstr "Tekst, który pokazuje się, gdy adres e-mail zostanie pomyślnie zapisany do konkretnej listy (list) subskrybentów."
962
 
963
+ #: includes/forms/views/tabs/form-messages.php:23
964
  msgid "Invalid email address"
965
  msgstr "Nieprawidłowy adres e-mail"
966
 
967
+ #: includes/forms/views/tabs/form-messages.php:26
968
  msgid "The text that shows when an invalid email address is given."
969
  msgstr "Tekst, który pokazuje się, gdy zostanie wprowadzony błędny adres e-mail."
970
 
971
+ #: includes/forms/views/tabs/form-messages.php:30
972
  msgid "Required field missing"
973
  msgstr "Wymagane pole nie zostało wypełnione."
974
 
975
+ #: includes/forms/views/tabs/form-messages.php:33
976
  msgid ""
977
  "The text that shows when a required field for the selected list(s) is "
978
  "missing."
979
  msgstr "Tekst, który pokazuje się, gdy wymagane pole dla wybranej listy (list) subskrybentów nie zostanie wypełnione."
980
 
981
+ #: includes/forms/views/tabs/form-messages.php:37
982
  msgid "Already subscribed"
983
  msgstr "Adres już istnieje w bazie mailingowej."
984
 
985
+ #: includes/forms/views/tabs/form-messages.php:40
986
  msgid ""
987
  "The text that shows when the given email is already subscribed to the "
988
  "selected list(s)."
989
  msgstr "Tekst, który pokazuje się, gdy adres e-mail jest już zapisany do konkretnej listy (list) subskrybentów."
990
 
991
+ #: includes/forms/views/tabs/form-messages.php:44
992
  msgid "General error"
993
  msgstr "Ogólny błąd."
994
 
995
+ #: includes/forms/views/tabs/form-messages.php:47
996
  msgid "The text that shows when a general error occured."
997
  msgstr "Tekst, który pokazuje się, gdy wystąpi ogólny błąd."
998
 
999
+ #: includes/forms/views/tabs/form-messages.php:51
1000
  msgid "Unsubscribed"
1001
  msgstr "Wypisany z listy mailingowej."
1002
 
1003
+ #: includes/forms/views/tabs/form-messages.php:54
1004
  msgid ""
1005
  "When using the unsubscribe method, this is the text that shows when the "
1006
  "given email address is successfully unsubscribed from the selected list(s)."
1007
+ msgstr "Jeśli użyto metody odsubskrybuj, ten tekst pojawi się, \njeśli wybrany adres email, zostanie poprawnie odsubskrybowany z wybranej listy (list)."
1008
 
1009
+ #: includes/forms/views/tabs/form-messages.php:58
1010
  msgid "Not subscribed"
1011
+ msgstr "Nie subskrybuj"
1012
 
1013
+ #: includes/forms/views/tabs/form-messages.php:61
1014
  msgid ""
1015
  "When using the unsubscribe method, this is the text that shows when the "
1016
  "given email address is not on the selected list(s)."
1017
+ msgstr "Jeśli użyto metody odsubskrybuj, ten tekst pojawi się\njeśli wybranego adresu email nie ma na wybranej liście (listach)."
1018
+
1019
+ #: includes/forms/views/tabs/form-messages.php:65
1020
+ msgid "No list selected"
1021
  msgstr ""
1022
 
1023
+ #: includes/forms/views/tabs/form-messages.php:68
1024
+ msgid ""
1025
+ "When offering a list choice, this is the text that shows when no lists were "
1026
+ "selected."
1027
+ msgstr ""
1028
+
1029
+ #: includes/forms/views/tabs/form-messages.php:74
1030
+ msgid "Updated"
1031
  msgstr ""
1032
 
1033
+ #: includes/forms/views/tabs/form-messages.php:77
1034
+ msgid "The text that shows when an existing subscriber is updated."
1035
+ msgstr ""
1036
+
1037
+ #: includes/forms/views/tabs/form-messages.php:89
1038
+ msgid "HTML tags like %s are allowed in the message fields."
1039
+ msgstr "Znaczniki HTML takie jak %s są dozwolone w obszarach wiadomości."
1040
+
1041
  #: includes/forms/views/tabs/form-settings.php:1
1042
  msgid "Form Settings"
1043
  msgstr "Ustawienia formularza"
1044
 
1045
  #: includes/forms/views/tabs/form-settings.php:5
1046
  msgid "MailChimp specific settings"
1047
+ msgstr "Dodatkowe ustawienia MailChimp"
 
 
 
 
1048
 
1049
  #: includes/forms/views/tabs/form-settings.php:15
1050
+ msgid "Lists this form subscribes to"
1051
+ msgstr "Subskrybuj ten formularz dla"
 
1052
 
1053
+ #: includes/forms/views/tabs/form-settings.php:31
1054
  msgid ""
1055
  "Select the list(s) to which people who submit this form should be "
1056
  "subscribed."
1057
+ msgstr "Wybierz z listy (list), które osoby po przesłaniu tego formularza\npowinni zostać subskrybowani."
1058
 
1059
+ #: includes/forms/views/tabs/form-settings.php:37
1060
  msgid "Use double opt-in?"
1061
  msgstr "Użyć double opt-in?"
1062
 
1063
+ #: includes/forms/views/tabs/form-settings.php:44
1064
+ msgid "Are you sure you want to disable double opt-in?"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1065
  msgstr ""
1066
 
1067
+ #: includes/forms/views/tabs/form-settings.php:47
 
 
 
 
 
 
1068
  msgid ""
1069
+ "We strongly suggest keeping double opt-in enabled. Disabling double opt-in "
1070
+ "may result in abuse."
1071
  msgstr ""
1072
 
1073
+ #: includes/forms/views/tabs/form-settings.php:94
 
 
 
 
 
1074
  msgid "Form behaviour"
1075
  msgstr "Zachowanie formularza"
1076
 
1077
+ #: includes/forms/views/tabs/form-settings.php:104
1078
  msgid "Hide form after a successful sign-up?"
1079
  msgstr "Ukryć formularz po udanym zapisie?"
1080
 
1081
+ #: includes/forms/views/tabs/form-settings.php:115
1082
  msgid "Select \"yes\" to hide the form fields after a successful sign-up."
1083
  msgstr "Wybierz \"tak\", by ukryć pola formularza po udanym zapisie."
1084
 
1085
+ #: includes/forms/views/tabs/form-settings.php:120
1086
  msgid "Redirect to URL after successful sign-ups"
1087
  msgstr "Zrób przekierowanie na adres URL po udanym zapisie."
1088
 
1089
+ #: includes/forms/views/tabs/form-settings.php:122
1090
  msgid "Example: %s"
1091
  msgstr "Przykład: %s"
1092
 
1093
+ #: includes/forms/views/tabs/form-settings.php:123
1094
  msgid ""
1095
  "Leave empty or enter <code>0</code> for no redirect. Otherwise, use complete"
1096
  " (absolute) URLs, including <code>http://</code>."
1097
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/mailchimp-for-wp-tr_TR.mo CHANGED
Binary file
languages/mailchimp-for-wp-tr_TR.po CHANGED
@@ -7,14 +7,15 @@
7
  # Erdem Akgöl <erdem@kobimedya.com>, 2017
8
  # Ferhat, 2015
9
  # Hüseyin Sekmenoğlu <inactive+sekmenhuseyin@transifex.com>, 2015
 
10
  # Müge Çevik <muge.cevik@gmail.com>, 2016
11
  # Murat Aksoy <istanbuldaemlakk@gmail.com>, 2015
12
  # Tuna Sakar, 2017
13
  msgid ""
14
  msgstr ""
15
  "Project-Id-Version: MailChimp for WordPress\n"
16
- "PO-Revision-Date: 2017-03-26 19:38+0000\n"
17
- "Last-Translator: Tuna Sakar\n"
18
  "Language-Team: Turkish (Turkey) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/tr_TR/)\n"
19
  "MIME-Version: 1.0\n"
20
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -182,7 +183,7 @@ msgstr "Eğer WordPress.org adresinde bize 5★ <a href=\"%s\"> verirseniz komü
182
 
183
  #: includes/admin/class-review-notice.php:71
184
  msgid "Dismiss this notice."
185
- msgstr ""
186
 
187
  #: includes/api/class-api.php:84
188
  msgid "Read more about common connectivity issues."
@@ -198,19 +199,19 @@ msgstr "Şehir"
198
 
199
  #: includes/forms/class-admin.php:64
200
  msgid "Checkboxes"
201
- msgstr ""
202
 
203
  #: includes/forms/class-admin.php:65
204
  msgid "Choices"
205
- msgstr ""
206
 
207
  #: includes/forms/class-admin.php:66
208
  msgid "Choice type"
209
- msgstr ""
210
 
211
  #: includes/forms/class-admin.php:67
212
  msgid "Choose a field to add to the form"
213
- msgstr ""
214
 
215
  #: includes/forms/class-admin.php:68
216
  msgid "Close"
@@ -226,7 +227,7 @@ msgstr ""
226
 
227
  #: includes/forms/class-admin.php:71
228
  msgid "Field type"
229
- msgstr ""
230
 
231
  #: includes/forms/class-admin.php:72
232
  msgid "Field label"
@@ -240,19 +241,19 @@ msgstr ""
240
  msgid ""
241
  "This field will allow your visitors to choose whether they would like to "
242
  "subscribe or unsubscribe"
243
- msgstr ""
244
 
245
  #: includes/forms/class-admin.php:75
246
  msgid "Form fields"
247
- msgstr ""
248
 
249
  #: includes/forms/class-admin.php:76
250
  msgid "This field is marked as required in MailChimp."
251
- msgstr ""
252
 
253
  #: includes/forms/class-admin.php:77
254
  msgid "Initial value"
255
- msgstr ""
256
 
257
  #: includes/forms/class-admin.php:78
258
  msgid "Interest categories"
@@ -260,19 +261,19 @@ msgstr ""
260
 
261
  #: includes/forms/class-admin.php:79
262
  msgid "Is this field required?"
263
- msgstr ""
264
 
265
  #: includes/forms/class-admin.php:80
266
  msgid "List choice"
267
- msgstr ""
268
 
269
  #: includes/forms/class-admin.php:81
270
  msgid "This field will allow your visitors to choose a list to subscribe to."
271
- msgstr ""
272
 
273
  #: includes/forms/class-admin.php:82
274
  msgid "List fields"
275
- msgstr ""
276
 
277
  #: includes/forms/class-admin.php:83
278
  msgid "Min"
@@ -285,7 +286,7 @@ msgstr "En fazla"
285
  #: includes/forms/class-admin.php:85
286
  msgid ""
287
  "No available fields. Did you select a MailChimp list in the form settings?"
288
- msgstr ""
289
 
290
  #: includes/forms/class-admin.php:86
291
  msgid "Optional"
@@ -297,7 +298,7 @@ msgstr "Yer tutucu"
297
 
298
  #: includes/forms/class-admin.php:88
299
  msgid "Text to show when field has no value."
300
- msgstr ""
301
 
302
  #: includes/forms/class-admin.php:89
303
  msgid "Preselect"
@@ -358,7 +359,7 @@ msgstr "MailChimp Kayıt Formu"
358
 
359
  #: includes/forms/class-admin.php:453
360
  msgid "Select the form to show"
361
- msgstr ""
362
 
363
  #: includes/forms/class-form-previewer.php:146
364
  msgid "Form preview"
@@ -498,7 +499,7 @@ msgstr ""
498
  msgid ""
499
  "Allow us to anonymously track how this plugin is used to help us make it "
500
  "better fit your needs."
501
- msgstr ""
502
 
503
  #: includes/views/other-settings.php:31
504
  msgid "This is what we track."
@@ -506,7 +507,7 @@ msgstr ""
506
 
507
  #: includes/views/other-settings.php:37
508
  msgid "Logging"
509
- msgstr ""
510
 
511
  #: includes/views/other-settings.php:44
512
  msgid ""
@@ -516,7 +517,7 @@ msgstr ""
516
 
517
  #: includes/views/other-settings.php:99
518
  msgid "Debug Log"
519
- msgstr ""
520
 
521
  #: includes/views/other-settings.php:99
522
  msgid "Filter.."
@@ -524,7 +525,7 @@ msgstr "Filtrele..."
524
 
525
  #: includes/views/other-settings.php:104
526
  msgid "Log file is not writable."
527
- msgstr ""
528
 
529
  #: includes/views/other-settings.php:105
530
  msgid "Please ensure %s has the proper <a href=\"%s\">file permissions</a>."
@@ -532,11 +533,11 @@ msgstr ""
532
 
533
  #: includes/views/other-settings.php:123
534
  msgid "Nothing here. Which means there are no errors!"
535
- msgstr ""
536
 
537
  #: includes/views/other-settings.php:133
538
  msgid "Empty Log"
539
- msgstr ""
540
 
541
  #: includes/views/other-settings.php:141
542
  msgid "Right now, the plugin is configured to only log errors and warnings."
@@ -735,21 +736,21 @@ msgstr "Bu entegrasyonu konfigüre edin"
735
 
736
  #: includes/integrations/views/integrations.php:71
737
  msgid "The table below shows all available integrations."
738
- msgstr ""
739
 
740
  #: includes/integrations/views/integrations.php:72
741
  msgid ""
742
  "Click on the name of an integration to edit all settings specific to that "
743
  "integration."
744
- msgstr ""
745
 
746
  #: includes/integrations/views/integrations.php:79
747
  msgid "Enabled integrations"
748
- msgstr ""
749
 
750
  #: includes/integrations/views/integrations.php:84
751
  msgid "Available integrations"
752
- msgstr ""
753
 
754
  #: includes/views/parts/admin-footer.php:15
755
  msgid ""
@@ -762,15 +763,15 @@ msgstr ""
762
  #: includes/views/parts/admin-footer.php:35
763
  msgid ""
764
  "This plugin is not developed by or affiliated with MailChimp in any way."
765
- msgstr ""
766
 
767
  #: includes/views/parts/admin-sidebar.php:11
768
  msgid "Looking for help?"
769
- msgstr ""
770
 
771
  #: includes/views/parts/admin-sidebar.php:12
772
  msgid "We have some resources available to help you in the right direction."
773
- msgstr ""
774
 
775
  #: includes/views/parts/admin-sidebar.php:14
776
  msgid "Knowledge Base"
@@ -782,11 +783,11 @@ msgstr "Sık Sorulan Sorular"
782
 
783
  #: includes/views/parts/admin-sidebar.php:16
784
  msgid "Code reference for developers"
785
- msgstr ""
786
 
787
  #: includes/views/parts/admin-sidebar.php:36
788
  msgid "Looking to improve your sign-up rates?"
789
- msgstr ""
790
 
791
  #: includes/views/parts/admin-sidebar.php:37
792
  msgid ""
@@ -827,7 +828,7 @@ msgstr "Aboneler"
827
 
828
  #: includes/views/parts/lists-overview.php:48
829
  msgid "Edit this list in MailChimp"
830
- msgstr ""
831
 
832
  #: includes/views/parts/lists-overview.php:62
833
  msgid "%s (%s) with field type %s."
@@ -1020,13 +1021,13 @@ msgstr "Abonelikten çıkma işlemi gerçekleştirilmek istendiğinde, bu metin
1020
 
1021
  #: includes/forms/views/tabs/form-messages.php:65
1022
  msgid "No list selected"
1023
- msgstr ""
1024
 
1025
  #: includes/forms/views/tabs/form-messages.php:68
1026
  msgid ""
1027
  "When offering a list choice, this is the text that shows when no lists were "
1028
  "selected."
1029
- msgstr ""
1030
 
1031
  #: includes/forms/views/tabs/form-messages.php:74
1032
  msgid "Updated"
@@ -1060,17 +1061,17 @@ msgstr ""
1060
 
1061
  #: includes/forms/views/tabs/form-settings.php:37
1062
  msgid "Use double opt-in?"
1063
- msgstr ""
1064
 
1065
  #: includes/forms/views/tabs/form-settings.php:44
1066
  msgid "Are you sure you want to disable double opt-in?"
1067
- msgstr ""
1068
 
1069
  #: includes/forms/views/tabs/form-settings.php:47
1070
  msgid ""
1071
  "We strongly suggest keeping double opt-in enabled. Disabling double opt-in "
1072
  "may result in abuse."
1073
- msgstr ""
1074
 
1075
  #: includes/forms/views/tabs/form-settings.php:94
1076
  msgid "Form behaviour"
7
  # Erdem Akgöl <erdem@kobimedya.com>, 2017
8
  # Ferhat, 2015
9
  # Hüseyin Sekmenoğlu <inactive+sekmenhuseyin@transifex.com>, 2015
10
+ # İlbey Furkan Özden <ilbeyfurkanozden@gmail.com>, 2017
11
  # Müge Çevik <muge.cevik@gmail.com>, 2016
12
  # Murat Aksoy <istanbuldaemlakk@gmail.com>, 2015
13
  # Tuna Sakar, 2017
14
  msgid ""
15
  msgstr ""
16
  "Project-Id-Version: MailChimp for WordPress\n"
17
+ "PO-Revision-Date: 2017-04-29 14:25+0000\n"
18
+ "Last-Translator: İlbey Furkan Özden <ilbeyfurkanozden@gmail.com>\n"
19
  "Language-Team: Turkish (Turkey) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/tr_TR/)\n"
20
  "MIME-Version: 1.0\n"
21
  "Content-Type: text/plain; charset=UTF-8\n"
183
 
184
  #: includes/admin/class-review-notice.php:71
185
  msgid "Dismiss this notice."
186
+ msgstr "Bu uyarıyı görmezden gel."
187
 
188
  #: includes/api/class-api.php:84
189
  msgid "Read more about common connectivity issues."
199
 
200
  #: includes/forms/class-admin.php:64
201
  msgid "Checkboxes"
202
+ msgstr "Onay kutuları"
203
 
204
  #: includes/forms/class-admin.php:65
205
  msgid "Choices"
206
+ msgstr "Seçimler"
207
 
208
  #: includes/forms/class-admin.php:66
209
  msgid "Choice type"
210
+ msgstr "Seçim tipi"
211
 
212
  #: includes/forms/class-admin.php:67
213
  msgid "Choose a field to add to the form"
214
+ msgstr "Forma eklemek için bir alan seçin"
215
 
216
  #: includes/forms/class-admin.php:68
217
  msgid "Close"
227
 
228
  #: includes/forms/class-admin.php:71
229
  msgid "Field type"
230
+ msgstr "Alan tipi"
231
 
232
  #: includes/forms/class-admin.php:72
233
  msgid "Field label"
241
  msgid ""
242
  "This field will allow your visitors to choose whether they would like to "
243
  "subscribe or unsubscribe"
244
+ msgstr "Bu alan, ziyaretçilerinizin abone olup olmadıklarını veya abone olduklarını seçmelerini sağlayacak"
245
 
246
  #: includes/forms/class-admin.php:75
247
  msgid "Form fields"
248
+ msgstr "Form Alanları"
249
 
250
  #: includes/forms/class-admin.php:76
251
  msgid "This field is marked as required in MailChimp."
252
+ msgstr "Bu alan MailChimp'de gerekli olarak işaretlenmiştir."
253
 
254
  #: includes/forms/class-admin.php:77
255
  msgid "Initial value"
256
+ msgstr "Başlangıç değeri"
257
 
258
  #: includes/forms/class-admin.php:78
259
  msgid "Interest categories"
261
 
262
  #: includes/forms/class-admin.php:79
263
  msgid "Is this field required?"
264
+ msgstr "Bu alan gerekli mi?"
265
 
266
  #: includes/forms/class-admin.php:80
267
  msgid "List choice"
268
+ msgstr "Liste Seçimi"
269
 
270
  #: includes/forms/class-admin.php:81
271
  msgid "This field will allow your visitors to choose a list to subscribe to."
272
+ msgstr "Bu alan ziyaretçilerin abone olacak bir liste seçmelerine izin verecektir."
273
 
274
  #: includes/forms/class-admin.php:82
275
  msgid "List fields"
276
+ msgstr "Liste alanları"
277
 
278
  #: includes/forms/class-admin.php:83
279
  msgid "Min"
286
  #: includes/forms/class-admin.php:85
287
  msgid ""
288
  "No available fields. Did you select a MailChimp list in the form settings?"
289
+ msgstr "Mevcut alan yok. Form ayarlarında bir MailChimp listesi seçtiniz mi?"
290
 
291
  #: includes/forms/class-admin.php:86
292
  msgid "Optional"
298
 
299
  #: includes/forms/class-admin.php:88
300
  msgid "Text to show when field has no value."
301
+ msgstr "Alanın hiçbir değeri olmadığında gösterilecek metin."
302
 
303
  #: includes/forms/class-admin.php:89
304
  msgid "Preselect"
359
 
360
  #: includes/forms/class-admin.php:453
361
  msgid "Select the form to show"
362
+ msgstr "Gösterilecek formu seçin"
363
 
364
  #: includes/forms/class-form-previewer.php:146
365
  msgid "Form preview"
499
  msgid ""
500
  "Allow us to anonymously track how this plugin is used to help us make it "
501
  "better fit your needs."
502
+ msgstr "Bu eklentinin ihtiyaçlarınıza daha iyi yardımcı olması için nasıl kullanıldığını anonim olarak izlememize izin verin."
503
 
504
  #: includes/views/other-settings.php:31
505
  msgid "This is what we track."
507
 
508
  #: includes/views/other-settings.php:37
509
  msgid "Logging"
510
+ msgstr "Giriş yapılıyor"
511
 
512
  #: includes/views/other-settings.php:44
513
  msgid ""
517
 
518
  #: includes/views/other-settings.php:99
519
  msgid "Debug Log"
520
+ msgstr "Hata Ayıklama Günlüğü"
521
 
522
  #: includes/views/other-settings.php:99
523
  msgid "Filter.."
525
 
526
  #: includes/views/other-settings.php:104
527
  msgid "Log file is not writable."
528
+ msgstr "Hata ayıklama günlüğü dosyası yazılabilir değil."
529
 
530
  #: includes/views/other-settings.php:105
531
  msgid "Please ensure %s has the proper <a href=\"%s\">file permissions</a>."
533
 
534
  #: includes/views/other-settings.php:123
535
  msgid "Nothing here. Which means there are no errors!"
536
+ msgstr "Burada hiçbir şey yok. Yani, hiç hata yok!"
537
 
538
  #: includes/views/other-settings.php:133
539
  msgid "Empty Log"
540
+ msgstr "Boş hata ayıklama günlüğü"
541
 
542
  #: includes/views/other-settings.php:141
543
  msgid "Right now, the plugin is configured to only log errors and warnings."
736
 
737
  #: includes/integrations/views/integrations.php:71
738
  msgid "The table below shows all available integrations."
739
+ msgstr "Aşağıdaki tablo kullanılabilir tüm eklentiler gösterilmektedir."
740
 
741
  #: includes/integrations/views/integrations.php:72
742
  msgid ""
743
  "Click on the name of an integration to edit all settings specific to that "
744
  "integration."
745
+ msgstr "Bir eklentinin ayarlarını düzenlemek için eklenti ismine tıklayın."
746
 
747
  #: includes/integrations/views/integrations.php:79
748
  msgid "Enabled integrations"
749
+ msgstr "Etkinleştirilmiş eklentiler"
750
 
751
  #: includes/integrations/views/integrations.php:84
752
  msgid "Available integrations"
753
+ msgstr "Kullanılabilir eklentiler"
754
 
755
  #: includes/views/parts/admin-footer.php:15
756
  msgid ""
763
  #: includes/views/parts/admin-footer.php:35
764
  msgid ""
765
  "This plugin is not developed by or affiliated with MailChimp in any way."
766
+ msgstr "Bu eklenti herhangi bir şekilde MailChimp tarafından geliştirilmemiştir veya MailChimp ile ilişkili değildir."
767
 
768
  #: includes/views/parts/admin-sidebar.php:11
769
  msgid "Looking for help?"
770
+ msgstr "Yardım mı arıyorsunuz?"
771
 
772
  #: includes/views/parts/admin-sidebar.php:12
773
  msgid "We have some resources available to help you in the right direction."
774
+ msgstr "Size doğru yönde yardımcı olacak bazı kaynaklara sahibiz."
775
 
776
  #: includes/views/parts/admin-sidebar.php:14
777
  msgid "Knowledge Base"
783
 
784
  #: includes/views/parts/admin-sidebar.php:16
785
  msgid "Code reference for developers"
786
+ msgstr "Geliştiriciler için kod referansı"
787
 
788
  #: includes/views/parts/admin-sidebar.php:36
789
  msgid "Looking to improve your sign-up rates?"
790
+ msgstr "Kaydolma oranlarını iyileştirmek mi istiyorsunuz?"
791
 
792
  #: includes/views/parts/admin-sidebar.php:37
793
  msgid ""
828
 
829
  #: includes/views/parts/lists-overview.php:48
830
  msgid "Edit this list in MailChimp"
831
+ msgstr "Bu listeyi MailChimp'de düzenle"
832
 
833
  #: includes/views/parts/lists-overview.php:62
834
  msgid "%s (%s) with field type %s."
1021
 
1022
  #: includes/forms/views/tabs/form-messages.php:65
1023
  msgid "No list selected"
1024
+ msgstr "Seçilmiş bir liste yok"
1025
 
1026
  #: includes/forms/views/tabs/form-messages.php:68
1027
  msgid ""
1028
  "When offering a list choice, this is the text that shows when no lists were "
1029
  "selected."
1030
+ msgstr "Bu metin, liste seçimi yaparken hiçbir liste seçilmediğinde gösterilen metindir."
1031
 
1032
  #: includes/forms/views/tabs/form-messages.php:74
1033
  msgid "Updated"
1061
 
1062
  #: includes/forms/views/tabs/form-settings.php:37
1063
  msgid "Use double opt-in?"
1064
+ msgstr "Üye Doğrulamayı kullanmak istiyor musun?"
1065
 
1066
  #: includes/forms/views/tabs/form-settings.php:44
1067
  msgid "Are you sure you want to disable double opt-in?"
1068
+ msgstr "Üye doğrulamayı kapatmak istediğine emin misin?"
1069
 
1070
  #: includes/forms/views/tabs/form-settings.php:47
1071
  msgid ""
1072
  "We strongly suggest keeping double opt-in enabled. Disabling double opt-in "
1073
  "may result in abuse."
1074
+ msgstr "Üye doğrulama özelliğini açık tutmanızı şiddetle öneririz. Üye doğrulamayı kapatmak kötüye kullanıma neden olabilir."
1075
 
1076
  #: includes/forms/views/tabs/form-settings.php:94
1077
  msgid "Form behaviour"
languages/mailchimp-for-wp.pot CHANGED
@@ -45,27 +45,31 @@ msgstr ""
45
  msgid "This can take a while if you have many MailChimp lists."
46
  msgstr ""
47
 
48
- #: includes/admin/class-admin.php:336, includes/views/general-settings.php:31
 
 
 
 
49
  msgid "MailChimp API Settings"
50
  msgstr ""
51
 
52
- #: includes/admin/class-admin.php:337
53
  msgid "MailChimp"
54
  msgstr ""
55
 
56
- #: includes/admin/class-admin.php:343, includes/views/other-settings.php:60, includes/views/other-settings.php:70
57
  msgid "Other Settings"
58
  msgstr ""
59
 
60
- #: includes/admin/class-admin.php:344
61
  msgid "Other"
62
  msgstr ""
63
 
64
- #: includes/admin/class-admin.php:458
65
  msgid "Log successfully emptied."
66
  msgstr ""
67
 
68
- #: includes/admin/class-admin.php:488
69
  msgid "To get started with MailChimp for WordPress, please <a href=\"%s\">enter your MailChimp API key on the settings page of the plugin</a>."
70
  msgstr ""
71
 
@@ -97,31 +101,31 @@ msgstr ""
97
  msgid "Are you enjoying this plugin? The Premium add-on unlocks several powerful features. <a href=\"%s\">Find out about all benefits now</a>."
98
  msgstr ""
99
 
100
- #: includes/admin/class-ads.php:112
101
  msgid "More subscribers, better newsletters."
102
  msgstr ""
103
 
104
- #: includes/admin/class-ads.php:113
105
  msgid "Learn how to best grow your lists & write better emails by subscribing to our monthly tips."
106
  msgstr ""
107
 
108
- #: includes/admin/class-ads.php:116
109
  msgid "Email Address"
110
  msgstr ""
111
 
112
- #: includes/admin/class-ads.php:120
113
  msgid "First Name"
114
  msgstr ""
115
 
116
- #: includes/admin/class-ads.php:127, includes/forms/class-admin.php:94
117
  msgid "Subscribe"
118
  msgstr ""
119
 
120
- #: includes/admin/class-ads.php:150
121
  msgid "Do you want to track all WooCommerce orders in MailChimp so you can send emails based on the purchase activity of your subscribers?"
122
  msgstr ""
123
 
124
- #: includes/admin/class-ads.php:153
125
  msgid "<a href=\"%s\">Upgrade to MailChimp for WordPress Premium</a> or <a href=\"%s\">read more about MailChimp's E-Commerce features</a>."
126
  msgstr ""
127
 
45
  msgid "This can take a while if you have many MailChimp lists."
46
  msgstr ""
47
 
48
+ #: includes/admin/class-admin.php:309
49
+ msgid "Failed to renew your lists. An error occured."
50
+ msgstr ""
51
+
52
+ #: includes/admin/class-admin.php:337, includes/views/general-settings.php:31
53
  msgid "MailChimp API Settings"
54
  msgstr ""
55
 
56
+ #: includes/admin/class-admin.php:338
57
  msgid "MailChimp"
58
  msgstr ""
59
 
60
+ #: includes/admin/class-admin.php:344, includes/views/other-settings.php:60, includes/views/other-settings.php:70
61
  msgid "Other Settings"
62
  msgstr ""
63
 
64
+ #: includes/admin/class-admin.php:345
65
  msgid "Other"
66
  msgstr ""
67
 
68
+ #: includes/admin/class-admin.php:459
69
  msgid "Log successfully emptied."
70
  msgstr ""
71
 
72
+ #: includes/admin/class-admin.php:489
73
  msgid "To get started with MailChimp for WordPress, please <a href=\"%s\">enter your MailChimp API key on the settings page of the plugin</a>."
74
  msgstr ""
75
 
101
  msgid "Are you enjoying this plugin? The Premium add-on unlocks several powerful features. <a href=\"%s\">Find out about all benefits now</a>."
102
  msgstr ""
103
 
104
+ #: includes/admin/class-ads.php:114
105
  msgid "More subscribers, better newsletters."
106
  msgstr ""
107
 
108
+ #: includes/admin/class-ads.php:115
109
  msgid "Learn how to best grow your lists & write better emails by subscribing to our monthly tips."
110
  msgstr ""
111
 
112
+ #: includes/admin/class-ads.php:118
113
  msgid "Email Address"
114
  msgstr ""
115
 
116
+ #: includes/admin/class-ads.php:122
117
  msgid "First Name"
118
  msgstr ""
119
 
120
+ #: includes/admin/class-ads.php:129, includes/forms/class-admin.php:94
121
  msgid "Subscribe"
122
  msgstr ""
123
 
124
+ #: includes/admin/class-ads.php:152
125
  msgid "Do you want to track all WooCommerce orders in MailChimp so you can send emails based on the purchase activity of your subscribers?"
126
  msgstr ""
127
 
128
+ #: includes/admin/class-ads.php:155
129
  msgid "<a href=\"%s\">Upgrade to MailChimp for WordPress Premium</a> or <a href=\"%s\">read more about MailChimp's E-Commerce features</a>."
130
  msgstr ""
131
 
mailchimp-for-wp.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: MailChimp for WordPress
4
  Plugin URI: https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page
5
  Description: MailChimp for WordPress by ibericode. Adds various highly effective sign-up methods to your site.
6
- Version: 4.1.1
7
  Author: ibericode
8
  Author URI: https://ibericode.com/
9
  Text Domain: mailchimp-for-wp
@@ -47,7 +47,7 @@ function _mc4wp_load_plugin() {
47
  }
48
 
49
  // bootstrap the core plugin
50
- define( 'MC4WP_VERSION', '4.1.1' );
51
  define( 'MC4WP_PLUGIN_DIR', dirname( __FILE__ ) . '/' );
52
  define( 'MC4WP_PLUGIN_URL', plugins_url( '/' , __FILE__ ) );
53
  define( 'MC4WP_PLUGIN_FILE', __FILE__ );
@@ -74,9 +74,8 @@ function _mc4wp_load_plugin() {
74
  $mc4wp['integrations'] = new MC4WP_Integration_Manager();
75
  $mc4wp['integrations']->add_hooks();
76
 
77
- // schedule bootstrapping of core integrations
78
- add_action( 'plugins_loaded', '_mc4wp_bootstrap_integrations', 90 );
79
-
80
 
81
  // Doing cron? Load Usage Tracking class.
82
  if( defined( 'DOING_CRON' ) && DOING_CRON ) {
@@ -125,10 +124,6 @@ add_action( 'plugins_loaded', '_mc4wp_load_plugin', 8 );
125
  * @since 3.0
126
  */
127
  function _mc4wp_on_plugin_activation() {
128
- delete_transient( 'mc4wp_mailchimp_lists_v3' );
129
- delete_transient( 'mc4wp_mailchimp_lists_v3_fallback' );
130
- delete_transient( 'mc4wp_list_counts' );
131
-
132
  wp_schedule_event( strtotime('tomorrow 3 am'), 'daily', 'mc4wp_refresh_mailchimp_lists' );
133
  }
134
 
@@ -139,7 +134,10 @@ function _mc4wp_on_plugin_activation() {
139
  * @since 4.0.3
140
  */
141
  function _mc4wp_on_plugin_deactivation() {
142
- wp_clear_scheduled_hook( 'mc4wp_refresh_mailchimp_lists' );
 
 
 
143
  }
144
 
145
  register_activation_hook( __FILE__, '_mc4wp_on_plugin_activation' );
3
  Plugin Name: MailChimp for WordPress
4
  Plugin URI: https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page
5
  Description: MailChimp for WordPress by ibericode. Adds various highly effective sign-up methods to your site.
6
+ Version: 4.1.2
7
  Author: ibericode
8
  Author URI: https://ibericode.com/
9
  Text Domain: mailchimp-for-wp
47
  }
48
 
49
  // bootstrap the core plugin
50
+ define( 'MC4WP_VERSION', '4.1.2' );
51
  define( 'MC4WP_PLUGIN_DIR', dirname( __FILE__ ) . '/' );
52
  define( 'MC4WP_PLUGIN_URL', plugins_url( '/' , __FILE__ ) );
53
  define( 'MC4WP_PLUGIN_FILE', __FILE__ );
74
  $mc4wp['integrations'] = new MC4WP_Integration_Manager();
75
  $mc4wp['integrations']->add_hooks();
76
 
77
+ // bootstrapping of core integrations
78
+ _mc4wp_bootstrap_integrations();
 
79
 
80
  // Doing cron? Load Usage Tracking class.
81
  if( defined( 'DOING_CRON' ) && DOING_CRON ) {
124
  * @since 3.0
125
  */
126
  function _mc4wp_on_plugin_activation() {
 
 
 
 
127
  wp_schedule_event( strtotime('tomorrow 3 am'), 'daily', 'mc4wp_refresh_mailchimp_lists' );
128
  }
129
 
134
  * @since 4.0.3
135
  */
136
  function _mc4wp_on_plugin_deactivation() {
137
+ global $wpdb;
138
+ wp_clear_scheduled_hook( 'mc4wp_refresh_mailchimp_lists' );
139
+
140
+ $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'mc4wp_mailchimp_list_%'");
141
  }
142
 
143
  register_activation_hook( __FILE__, '_mc4wp_on_plugin_activation' );
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-f
4
  Tags: mailchimp, mc4wp, email, marketing, newsletter, subscribe, widget, mc4wp, contact form 7, woocommerce, buddypress, ibericode, mailchimp forms, mailchimp integrations
5
  Requires at least: 4.1
6
  Tested up to: 4.7.4
7
- Stable tag: 4.1.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -194,6 +194,18 @@ MailChimp for WordPress comes with many filter & action hooks which allow you to
194
  == Changelog ==
195
 
196
 
 
 
 
 
 
 
 
 
 
 
 
 
197
  #### 4.1.1 - April 11, 2017
198
 
199
  **Fixes**
4
  Tags: mailchimp, mc4wp, email, marketing, newsletter, subscribe, widget, mc4wp, contact form 7, woocommerce, buddypress, ibericode, mailchimp forms, mailchimp integrations
5
  Requires at least: 4.1
6
  Tested up to: 4.7.4
7
+ Stable tag: 4.1.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
194
  == Changelog ==
195
 
196
 
197
+ #### 4.1.2 - May 8, 2017
198
+
199
+ **Fixes**
200
+
201
+ - Use earlier hook priority for Ninja Forms 3 integration so action is registered on time.
202
+
203
+ **Improvements**
204
+
205
+ - Improved MailChimp list fetching & memory usage for accounts with many lists.
206
+ - Show error message when fetching lists fails.
207
+ - Updated plugin translations.
208
+
209
  #### 4.1.1 - April 11, 2017
210
 
211
  **Fixes**
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInitef76aa1bb6f3ca98f87763d7c82e66ab::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit5bf7af865abd357743e770c4549a200a::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -63,7 +63,6 @@ return array(
63
  'MC4WP_Queue' => $baseDir . '/includes/class-queue.php',
64
  'MC4WP_Queue_Job' => $baseDir . '/includes/class-queue-job.php',
65
  'MC4WP_Registration_Form_Integration' => $baseDir . '/integrations/wp-registration-form/class-registration-form.php',
66
- 'MC4WP_Remote_Content_Block' => $baseDir . '/includes/admin/class-remote-content-block.php',
67
  'MC4WP_Request' => $baseDir . '/includes/class-request.php',
68
  'MC4WP_Tools' => $baseDir . '/includes/class-tools.php',
69
  'MC4WP_Update_Optin' => $baseDir . '/includes/admin/class-update-optin.php',
@@ -71,7 +70,6 @@ return array(
71
  'MC4WP_Usage_Tracking' => $baseDir . '/includes/admin/class-usage-tracking.php',
72
  'MC4WP_User_Integration' => $baseDir . '/includes/integrations/class-user-integration.php',
73
  'MC4WP_Validator' => $baseDir . '/includes/class-validator.php',
74
- 'MC4WP_Visitor_Tracking' => $baseDir . '/includes/class-visitor-tracking.php',
75
  'MC4WP_WooCommerce_Integration' => $baseDir . '/integrations/woocommerce/class-woocommerce.php',
76
  'xrstf\\Composer52\\AutoloadGenerator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
77
  'xrstf\\Composer52\\Generator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
63
  'MC4WP_Queue' => $baseDir . '/includes/class-queue.php',
64
  'MC4WP_Queue_Job' => $baseDir . '/includes/class-queue-job.php',
65
  'MC4WP_Registration_Form_Integration' => $baseDir . '/integrations/wp-registration-form/class-registration-form.php',
 
66
  'MC4WP_Request' => $baseDir . '/includes/class-request.php',
67
  'MC4WP_Tools' => $baseDir . '/includes/class-tools.php',
68
  'MC4WP_Update_Optin' => $baseDir . '/includes/admin/class-update-optin.php',
70
  'MC4WP_Usage_Tracking' => $baseDir . '/includes/admin/class-usage-tracking.php',
71
  'MC4WP_User_Integration' => $baseDir . '/includes/integrations/class-user-integration.php',
72
  'MC4WP_Validator' => $baseDir . '/includes/class-validator.php',
 
73
  'MC4WP_WooCommerce_Integration' => $baseDir . '/integrations/woocommerce/class-woocommerce.php',
74
  'xrstf\\Composer52\\AutoloadGenerator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
75
  'xrstf\\Composer52\\Generator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInitef76aa1bb6f3ca98f87763d7c82e66ab {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitef76aa1bb6f3ca98f87763d7c82e66ab {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitef76aa1bb6f3ca98f87763d7c82e66ab', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitef76aa1bb6f3ca98f87763d7c82e66ab', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit5bf7af865abd357743e770c4549a200a {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit5bf7af865abd357743e770c4549a200a', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit5bf7af865abd357743e770c4549a200a', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/autoload_static.php CHANGED
@@ -83,7 +83,6 @@ class ComposerStaticInitc16a50fb3cb50a786a944e8e9cbf2f72
83
  'MC4WP_Queue' => __DIR__ . '/../..' . '/includes/class-queue.php',
84
  'MC4WP_Queue_Job' => __DIR__ . '/../..' . '/includes/class-queue-job.php',
85
  'MC4WP_Registration_Form_Integration' => __DIR__ . '/../..' . '/integrations/wp-registration-form/class-registration-form.php',
86
- 'MC4WP_Remote_Content_Block' => __DIR__ . '/../..' . '/includes/admin/class-remote-content-block.php',
87
  'MC4WP_Request' => __DIR__ . '/../..' . '/includes/class-request.php',
88
  'MC4WP_Tools' => __DIR__ . '/../..' . '/includes/class-tools.php',
89
  'MC4WP_Update_Optin' => __DIR__ . '/../..' . '/includes/admin/class-update-optin.php',
@@ -91,7 +90,6 @@ class ComposerStaticInitc16a50fb3cb50a786a944e8e9cbf2f72
91
  'MC4WP_Usage_Tracking' => __DIR__ . '/../..' . '/includes/admin/class-usage-tracking.php',
92
  'MC4WP_User_Integration' => __DIR__ . '/../..' . '/includes/integrations/class-user-integration.php',
93
  'MC4WP_Validator' => __DIR__ . '/../..' . '/includes/class-validator.php',
94
- 'MC4WP_Visitor_Tracking' => __DIR__ . '/../..' . '/includes/class-visitor-tracking.php',
95
  'MC4WP_WooCommerce_Integration' => __DIR__ . '/../..' . '/integrations/woocommerce/class-woocommerce.php',
96
  'xrstf\\Composer52\\AutoloadGenerator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
97
  'xrstf\\Composer52\\Generator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
83
  'MC4WP_Queue' => __DIR__ . '/../..' . '/includes/class-queue.php',
84
  'MC4WP_Queue_Job' => __DIR__ . '/../..' . '/includes/class-queue-job.php',
85
  'MC4WP_Registration_Form_Integration' => __DIR__ . '/../..' . '/integrations/wp-registration-form/class-registration-form.php',
 
86
  'MC4WP_Request' => __DIR__ . '/../..' . '/includes/class-request.php',
87
  'MC4WP_Tools' => __DIR__ . '/../..' . '/includes/class-tools.php',
88
  'MC4WP_Update_Optin' => __DIR__ . '/../..' . '/includes/admin/class-update-optin.php',
90
  'MC4WP_Usage_Tracking' => __DIR__ . '/../..' . '/includes/admin/class-usage-tracking.php',
91
  'MC4WP_User_Integration' => __DIR__ . '/../..' . '/includes/integrations/class-user-integration.php',
92
  'MC4WP_Validator' => __DIR__ . '/../..' . '/includes/class-validator.php',
 
93
  'MC4WP_WooCommerce_Integration' => __DIR__ . '/../..' . '/integrations/woocommerce/class-woocommerce.php',
94
  'xrstf\\Composer52\\AutoloadGenerator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
95
  'xrstf\\Composer52\\Generator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',