storm-cookie-banner
Advanced tools
Comparing version 0.3.0 to 0.3.1
/** | ||
* @name storm-cookie-banner: | ||
* @version 0.2.1: Thu, 11 Oct 2018 08:01:48 GMT | ||
* @version 0.3.0: Mon, 17 Dec 2018 11:58:36 GMT | ||
* @author stormid | ||
@@ -5,0 +5,0 @@ * @license MIT |
@@ -1,2 +0,2 @@ | ||
import { composeUpdateUIModel, shouldExecute, writeCookie } from './utils'; | ||
import { composeUpdateUIModel, shouldExecute, writeCookie, deleteCookies } from './utils'; | ||
import { TRIGGER_EVENTS } from './constants'; | ||
@@ -21,3 +21,4 @@ import { apply } from './consent'; | ||
!consent.performance | ||
? [ | ||
? [ | ||
deleteCookies, | ||
writeCookie, | ||
@@ -42,5 +43,3 @@ () => { | ||
export const initUpdateBtn = Store => state => { | ||
console.log('init btn'); | ||
const updateBtnContainer = document.querySelector(`.${state.settings.classNames.updateBtnContainer}`); | ||
console.log('Attemping to render...'); | ||
if(!updateBtnContainer) return; | ||
@@ -47,0 +46,0 @@ const updateBtn = document.querySelector(`.${state.settings.classNames.updateBtn}`); |
@@ -29,2 +29,21 @@ import { TRIGGER_KEYCODES } from './constants'; | ||
const updateCookie = state => model => document.cookie = [ | ||
`${model.name}=${model.value};`, | ||
`expires=${model.expiry};`, | ||
`path=${state.settings.path};`, | ||
state.settings.domain ? `domain=${state.settings.domain};` : '', | ||
state.settings.secure ? `secure` : '' | ||
].join(''); | ||
export const deleteCookies = state => { | ||
document.cookie | ||
.split('; ') | ||
.map(part => ({ | ||
name: part.split('=')[0], | ||
value: part.split('=')[1], | ||
expiry: 'Thu, 01 Jan 1970 00:00:01 GMT' | ||
})) | ||
.map(updateCookie(state)); | ||
}; | ||
export const composeUpdateUIModel = state => { | ||
@@ -31,0 +50,0 @@ return Object.assign({}, state.settings, { |
/** | ||
* @name storm-cookie-banner: | ||
* @version 0.2.1: Thu, 11 Oct 2018 08:01:49 GMT | ||
* @version 0.3.0: Mon, 17 Dec 2018 11:58:36 GMT | ||
* @author stormid | ||
@@ -55,2 +55,18 @@ * @license MIT | ||
var updateCookie = function updateCookie(state) { | ||
return function (model) { | ||
return document.cookie = [model.name + '=' + model.value + ';', 'expires=' + model.expiry + ';', 'path=' + state.settings.path + ';', state.settings.domain ? 'domain=' + state.settings.domain + ';' : '', state.settings.secure ? 'secure' : ''].join(''); | ||
}; | ||
}; | ||
var deleteCookies = function deleteCookies(state) { | ||
document.cookie.split('; ').map(function (part) { | ||
return { | ||
name: part.split('=')[0], | ||
value: part.split('=')[1], | ||
expiry: 'Thu, 01 Jan 1970 00:00:01 GMT' | ||
}; | ||
}).map(updateCookie(state)); | ||
}; | ||
var composeUpdateUIModel = function composeUpdateUIModel(state) { | ||
@@ -142,3 +158,3 @@ return Object.assign({}, state.settings, { | ||
}, {}); | ||
Store.update(setConsent, { consent: consent }, !consent.performance ? [writeCookie, function () { | ||
Store.update(setConsent, { consent: consent }, !consent.performance ? [deleteCookies, writeCookie, function () { | ||
window.setTimeout(function () { | ||
@@ -158,5 +174,3 @@ return location.reload(); | ||
return function (state) { | ||
console.log('init btn'); | ||
var updateBtnContainer = document.querySelector('.' + state.settings.classNames.updateBtnContainer); | ||
console.log('Attemping to render...'); | ||
if (!updateBtnContainer) return; | ||
@@ -163,0 +177,0 @@ var updateBtn = document.querySelector('.' + state.settings.classNames.updateBtn); |
@@ -258,3 +258,3 @@ (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ | ||
}, {}); | ||
Store.update(_reducers.setConsent, { consent: consent }, !consent.performance ? [_utils.writeCookie, function () { | ||
Store.update(_reducers.setConsent, { consent: consent }, !consent.performance ? [_utils.deleteCookies, _utils.writeCookie, function () { | ||
window.setTimeout(function () { | ||
@@ -274,5 +274,3 @@ return location.reload(); | ||
return function (state) { | ||
console.log('init btn'); | ||
var updateBtnContainer = document.querySelector('.' + state.settings.classNames.updateBtnContainer); | ||
console.log('Attemping to render...'); | ||
if (!updateBtnContainer) return; | ||
@@ -303,3 +301,3 @@ var updateBtn = document.querySelector('.' + state.settings.classNames.updateBtn); | ||
}); | ||
exports.shouldExecute = exports.composeUpdateUIModel = exports.readCookie = exports.writeCookie = exports.cookiesEnabled = undefined; | ||
exports.shouldExecute = exports.composeUpdateUIModel = exports.deleteCookies = exports.readCookie = exports.writeCookie = exports.cookiesEnabled = undefined; | ||
@@ -333,2 +331,18 @@ var _constants = require('./constants'); | ||
var updateCookie = function updateCookie(state) { | ||
return function (model) { | ||
return document.cookie = [model.name + '=' + model.value + ';', 'expires=' + model.expiry + ';', 'path=' + state.settings.path + ';', state.settings.domain ? 'domain=' + state.settings.domain + ';' : '', state.settings.secure ? 'secure' : ''].join(''); | ||
}; | ||
}; | ||
var deleteCookies = exports.deleteCookies = function deleteCookies(state) { | ||
document.cookie.split('; ').map(function (part) { | ||
return { | ||
name: part.split('=')[0], | ||
value: part.split('=')[1], | ||
expiry: 'Thu, 01 Jan 1970 00:00:01 GMT' | ||
}; | ||
}).map(updateCookie(state)); | ||
}; | ||
var composeUpdateUIModel = exports.composeUpdateUIModel = function composeUpdateUIModel(state) { | ||
@@ -352,2 +366,2 @@ return Object.assign({}, state.settings, { | ||
},{"./constants":4}]},{},[1]) | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJleGFtcGxlL3NyYy9hcHAuanMiLCJzcmMvaW5kZXguanMiLCJzcmMvbGliL2NvbnNlbnQuanMiLCJzcmMvbGliL2NvbnN0YW50cy5qcyIsInNyYy9saWIvZGVmYXVsdHMuanMiLCJzcmMvbGliL2luZGV4LmpzIiwic3JjL2xpYi9yZWR1Y2Vycy5qcyIsInNyYy9saWIvc3RvcmUuanMiLCJzcmMvbGliL3VpLmpzIiwic3JjL2xpYi91dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0FDQUEsSUFBQSxPQUFBLFFBQUEsV0FBQSxDQUFBOzs7Ozs7OztBQUVBLE9BQUEsZ0JBQUEsQ0FBQSxrQkFBQSxFQUE0QyxZQUFNO0FBQzlDLFVBQUEsT0FBQSxDQUFBLElBQUEsQ0FBa0I7QUFDZCxlQUFPO0FBQ0gseUJBQWE7QUFDVCxxQkFBSyxDQUNELFlBQU07QUFBRSw0QkFBQSxHQUFBLENBQUEsY0FBQTtBQURQLGlCQUFBO0FBREksYUFEVjtBQU1ILDJCQUFlO0FBQ1gseUJBRFcsSUFBQTtBQUVYLHFCQUFLLENBQ0QsWUFBTTtBQUFFLDRCQUFBLEdBQUEsQ0FBQSxnQkFBQTtBQURQLGlCQUFBO0FBRk0sYUFOWjtBQVlILHlDQUE2QjtBQUN6Qix5QkFEeUIsS0FBQTtBQUV6QixxQkFBSyxDQUNELFlBQU07QUFBRSw0QkFBQSxHQUFBLENBQUEsOEJBQUE7QUFEUCxpQkFBQTtBQUZvQjtBQVoxQjtBQURPLEtBQWxCO0FBREosQ0FBQTs7Ozs7Ozs7O0FDRkEsSUFBQSxZQUFBLFFBQUEsZ0JBQUEsQ0FBQTs7OztBQUNBLElBQUEsT0FBQSxRQUFBLE9BQUEsQ0FBQTs7Ozs7Ozs7a0JBRWU7QUFDWCxVQUFNLFNBQUEsSUFBQSxDQUFBLElBQUEsRUFBQTtBQUFBLGVBQVEsQ0FBQSxHQUFBLE1BQUEsT0FBQSxFQUFRLE9BQUEsTUFBQSxDQUFBLEVBQUEsRUFBa0IsV0FBbEIsT0FBQSxF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QSxFQUFBLElBQUEsRUFBZTtBQUMzRCxnQkFBRyxNQUFBLE9BQUEsQ0FBQSxJQUFBLE1BQUgsU0FBQSxFQUFzQztBQUNsQyxvQkFBQSxJQUFBLElBQVksT0FBQSxNQUFBLENBQUEsRUFBQSxFQUFrQixNQUFBLFFBQUEsQ0FBQSxLQUFBLENBQWxCLElBQWtCLENBQWxCLEVBQThDO0FBQ3RELDZCQUFTLE1BQUEsT0FBQSxDQUFBLElBQUEsTUFBQSxTQUFBLEdBQW9DLE1BQUEsT0FBQSxDQUFwQyxJQUFvQyxDQUFwQyxHQUEwRCxNQUFBLFFBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxFQUEyQjtBQUR4QyxpQkFBOUMsQ0FBWjtBQURKLGFBQUEsTUFJTyxJQUFBLElBQUEsSUFBWSxNQUFBLFFBQUEsQ0FBQSxLQUFBLENBQVosSUFBWSxDQUFaO0FBQ1AsbUJBQUEsR0FBQTtBQU5HLFNBQUEsRUFBQSxFQUFBO0FBRDhCLEtBQWxDLENBQVA7QUFERyxDQUFBOztBQWFBLElBQU0sZ0JBQUEsUUFBQSxhQUFBLEdBQWdCLFNBQWhCLGFBQWdCLENBQUEsQ0FBQSxFQUFBO0FBQUEsV0FBTSxDQUFDLENBQUMsRUFBRixPQUFBLElBQWUsQ0FBQyxXQUFBLGdCQUFBLENBQUEsUUFBQSxDQUEwQixFQUEzQyxPQUFpQixDQUFoQixJQUF5RCxFQUFFLEVBQUEsS0FBQSxLQUFBLENBQUEsSUFBaUIsRUFBQSxNQUFBLEtBQWxGLENBQStELENBQS9EO0FBQXRCLENBQUEiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJpbXBvcnQgQ29va2llQmFubmVyIGZyb20gJy4uLy4uL3NyYyc7XG4gICAgXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcbiAgICBDb29raWVCYW5uZXIuaW5pdCh7XG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICAnbmVjZXNzYXJ5Jzoge1xuICAgICAgICAgICAgICAgIGZuczogW1xuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7IGNvbnNvbGUubG9nKCdOZWNlc3NhcnkgZm4nKTsgfSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ3BlcmZvcm1hbmNlJzoge1xuICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgZm5zOiBbXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHsgY29uc29sZS5sb2coJ1BlcmZvcm1hbmNlIGZuJyk7IH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2FkdmVydGlzaW5nIGFuZCBtYXJrZXRpbmcnOiB7XG4gICAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm5zOiBbXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHsgY29uc29sZS5sb2coJ0FkdmVydGlzaW5nIGFuZCBtYXJrZXRpbmcgZm4nKTsgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufSk7IiwiaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4vbGliL2RlZmF1bHRzJztcbmltcG9ydCBmYWN0b3J5IGZyb20gJy4vbGliJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGluaXQ6IG9wdHMgPT4gZmFjdG9yeShPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0cywge1xuICAgICAgICB0eXBlczogT2JqZWN0LmtleXMob3B0cy50eXBlcykucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICAgIGlmKGFjY1tjdXJyXSkge1xuICAgICAgICAgICAgICAgIGFjY1tjdXJyXSA9IE9iamVjdC5hc3NpZ24oe30sIGFjY1tjdXJyXSwge1xuICAgICAgICAgICAgICAgICAgICBmbnM6IGFjY1tjdXJyXS5mbnMuY29uY2F0KG9wdHMudHlwZXNbY3Vycl0uZm5zKSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogb3B0cy50eXBlc1tjdXJyXS5jaGVja2VkICE9PSB1bmRlZmluZWQgPyBvcHRzLnR5cGVzW2N1cnJdLmNoZWNrZWQgOiBkZWZhdWx0cy50eXBlc1tjdXJyXS5jaGVja2VkICE9PSB1bmRlZmluZWQgPyBkZWZhdWx0cy50eXBlc1tjdXJyXS5jaGVja2VkIDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gIGVsc2UgYWNjW2N1cnJdID0gb3B0cy50eXBlc1tjdXJyXTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIGRlZmF1bHRzLnR5cGVzKVxuICAgIH0pKVxufTsiLCJleHBvcnQgY29uc3QgYXBwbHkgPSAocGVyZiA9ICdhZGQnKSA9PiBzdGF0ZSA9PiB7XG4gICAgLy87XzsgbmVlZHMgcHJvcGVyIGVudW1cbiAgICBjb25zdCBhcHBsaWVkU3RhdGUgPSBwZXJmID09PSAnYWRkJyBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHsgY29uc2VudDogIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmNvbnNlbnQsIHsgcGVyZm9ybWFuY2U6IHRydWUgfSkgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcGVyZiA9PT0gJ3JlbW92ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7IGNvbnNlbnQ6ICBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5jb25zZW50LCB7IHBlcmZvcm1hbmNlOiBmYWxzZSB9KX0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHN0YXRlO1xuXG4gICAgT2JqZWN0LmtleXMoYXBwbGllZFN0YXRlLmNvbnNlbnQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgKGFwcGxpZWRTdGF0ZS5jb25zZW50W2tleV0gJiYgYXBwbGllZFN0YXRlLnNldHRpbmdzLnR5cGVzW2tleV0pICYmIGFwcGxpZWRTdGF0ZS5zZXR0aW5ncy50eXBlc1trZXldLmZucy5mb3JFYWNoKGZuID0+IGZuKGFwcGxpZWRTdGF0ZSkpO1xuICAgIH0pO1xufTsiLCJleHBvcnQgY29uc3QgVFJJR0dFUl9FVkVOVFMgPSB3aW5kb3cuUG9pbnRlckV2ZW50ID8gWydwb2ludGVydXAnLCAna2V5ZG93biddIDogWydvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyA/ICd0b3VjaHN0YXJ0JyA6ICdjbGljaycsICdrZXlkb3duJyBdO1xuXG5leHBvcnQgY29uc3QgVFJJR0dFUl9LRVlDT0RFUyA9IFsxMywgMzJdO1xuXG5leHBvcnQgY29uc3QgQ0xBU1NOQU1FID0ge1xuICAgIEJBTk5FUjogJ3ByZWZlcmVuY2VzLWJhbm5lcicsXG4gICAgRklFTEQ6ICdwcmVmZXJlbmNlcy1iYW5uZXJfX2ZpZWxkJyxcbiAgICBCVE46ICdwcmVmZXJlbmNlcy1iYW5uZXJfX2J0bidcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRBX0FUVFJJQlVURSA9IHtcbiAgICBUWVBFOiAnZGF0YS1jb25zZW50LXR5cGUnLFxuICAgIElEOiAnZGF0YS1jb25zZW50LWlkJ1xufTsiLCJpbXBvcnQgeyB3cml0ZUNvb2tpZSB9IGZyb20gJy4vdXRpbHMnOyBcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnQ29va2llUHJlZmVyZW5jZXMnLFxuXHRwYXRoOiAnLycsXG5cdGRvbWFpbjogJycsXG5cdHNlY3VyZTogdHJ1ZSxcblx0ZXhwaXJ5OiAzNjUsXG5cdHR5cGVzOiB7XG5cdFx0J25lY2Vzc2FyeSc6IHtcblx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHRcdGZuczogW11cblx0XHR9XG5cdH0sXG5cdHBvbGljeVVSTDogJy9jb29raWUtcG9saWN5Jyxcblx0Y2xhc3NOYW1lczoge1xuXHRcdGJhbm5lcjogJ3ByZWZlcmVuY2VzLWJhbm5lcicsXG5cdFx0YnRuOiAncHJlZmVyZW5jZXMtYmFubmVyX19idG4nLFxuXHRcdGZpZWxkOiAncHJlZmVyZW5jZXMtYmFubmVyX19maWVsZCcsXG5cdFx0dXBkYXRlQnRuQ29udGFpbmVyOiAncHJlZmVyZW5jZXMtYmFubmVyX191cGRhdGUnLFxuXHRcdHVwZGF0ZUJ0bjogJ3ByZWZlcmVuY2VzLWJhbm5lcl9fdXBkYXRlLWJ0bidcblx0fSxcblx0dXBkYXRlQnRuVGVtcGxhdGUobW9kZWwpe1xuXHRcdHJldHVybiBgPGJ1dHRvbiBjbGFzcz1cIiR7bW9kZWwuY2xhc3NOYW1lcy51cGRhdGVCdG59XCI+VXBkYXRlIGNvb2tpZSBwcmVmZXJlbmNlczwvYnV0dG9uPmBcblx0fSxcblx0YmFubmVyVGVtcGxhdGUobW9kZWwpe1xuXHRcdHJldHVybiBgPHNlY3Rpb24gcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGFyaWEtbGFiZWw9XCJDb29raWUgY29uc2VudFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJwcmVmZXJlbmNlcy1iYW5uZXJfX2Rlc2NcIiBjbGFzcz1cIiR7bW9kZWwuY2xhc3NOYW1lcy5iYW5uZXJ9XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwicHJlZmVyZW5jZXMtY29udGVudFwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwid3JhcFwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cblx0XHRcdFx0XHRcdDwhLS1nb29nbGVvZmY6IGFsbC0tPlxuXHRcdFx0XHRcdFx0PGRpdiBpZD1cInByZWZlcmVuY2VzLWJhbm5lcl9fZGVzY1wiPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicHJlZmVyZW5jZXMtYmFubmVyX19oZWFkaW5nXCI+VGhpcyB3ZWJzaXRlIHVzZXMgY29va2llcy48L2Rpdj5cblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJwcmVmZXJlbmNlcy1iYW5uZXJfX3RleHRcIj5XZSB1c2UgY29va2llcyB0byBhbmFseXNlIG91ciB0cmFmZmljIGFuZCB0byBwcm92aWRlIHNvY2lhbCBtZWRpYSBmZWF0dXJlcy4gWW91IGNhbiBjaG9vc2Ugd2hpY2ggY2F0ZWdvcmllcyBvZiBjb29raWVzIHlvdSBjb25zZW50IHRvLCBvciBhY2NlcHQgb3VyIHJlY29tbWVuZGVkIHNldHRpbmdzLlxuXHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cInByZWZlcmVuY2VzLWJhbm5lcl9fbGlua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXIgbm9mb2xsb3dcIiBocmVmPVwiJHttb2RlbC5wb2xpY3lVUkx9XCI+IEZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlIGNvb2tpZXMgd2UgdXNlLjwvYT48L3A+XG5cdFx0XHRcdFx0XHRcdDx1bCBjbGFzcz1cInByZWZlcmVuY2VzLWJhbm5lcl9fbGlzdFwiPlxuXHRcdFx0XHRcdFx0XHRcdCR7T2JqZWN0LmtleXMobW9kZWwudHlwZXMpLm1hcCh0eXBlID0+IGA8bGkgY2xhc3M9XCJwcmVmZXJlbmNlcy1iYW5uZXJfX2xpc3QtaXRlbVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGlkPVwicHJlZmVyZW5jZXMtYmFubmVyX18ke3R5cGUuc3BsaXQoJyAnKVswXS5yZXBsYWNlKCcgJywgJy0nKX1cIiBjbGFzcz1cIiR7bW9kZWwuY2xhc3NOYW1lcy5maWVsZH1cIiB2YWx1ZT1cIiR7dHlwZX1cIiB0eXBlPVwiY2hlY2tib3hcIiR7bW9kZWwudHlwZXNbdHlwZV0uY2hlY2tlZCA/IGAgY2hlY2tlZGAgOiAnJ30ke21vZGVsLnR5cGVzW3R5cGVdLmRpc2FibGVkID8gYCBkaXNhYmxlZGAgOiAnJ30+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJwcmVmZXJlbmNlcy1iYW5uZXJfX2xhYmVsXCIgZm9yPVwicHJlZmVyZW5jZXMtYmFubmVyX18ke3R5cGUuc3BsaXQoJyAnKVswXS5yZXBsYWNlKCcgJywgJy0nKX1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0JHt0eXBlLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpfSR7dHlwZS5zdWJzdHIoMSl9IGNvb2tpZXNcblx0XHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+ICBcblx0XHRcdFx0XHRcdFx0XHQ8L2xpPmApLmpvaW4oJycpfVxuXHRcdFx0XHRcdFx0XHQ8L3VsPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwiJHttb2RlbC5jbGFzc05hbWVzLmJ0bn1cIj5PSzwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0PCEtLWdvb2dsZW9uOiBhbGwtLT5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L3NlY3Rpb24+YDtcblx0fVxufTsiLCJpbXBvcnQgeyBjb29raWVzRW5hYmxlZCwgcmVhZENvb2tpZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgaW5pdEJhbm5lciwgaW5pdFVwZGF0ZUJ0biB9IGZyb20gJy4vdWknO1xuaW1wb3J0IHsgYXBwbHkgfSBmcm9tICcuL2NvbnNlbnQnO1xuaW1wb3J0IENyZWF0ZVN0b3JlIGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHsgaW5pdGlhbFN0YXRlIH0gZnJvbSAnLi9yZWR1Y2Vycyc7XG5cbmV4cG9ydCBkZWZhdWx0IHNldHRpbmdzID0+IHtcbiAgICBpZighY29va2llc0VuYWJsZWQoKSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IFN0b3JlID0gQ3JlYXRlU3RvcmUoKTtcbiAgICBjb25zdCBjb29raWVzID0gcmVhZENvb2tpZShzZXR0aW5ncyk7XG4gICAgU3RvcmUudXBkYXRlKFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgIHsgXG4gICAgICAgICAgICBzZXR0aW5ncyxcbiAgICAgICAgICAgIGNvbnNlbnQ6IGNvb2tpZXMgPyBKU09OLnBhcnNlKGNvb2tpZXMudmFsdWUpIDoge30gXG4gICAgICAgIH0sXG4gICAgICAgIFthcHBseSghY29va2llcyA/ICdhZGQnIDogJ3JlbWFpbicpLCBjb29raWVzID8gaW5pdFVwZGF0ZUJ0bihTdG9yZSkgOiBpbml0QmFubmVyKFN0b3JlKV1cbiAgICApO1xufTsiLCJleHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlID0gKHN0YXRlLCBkYXRhKSA9PiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgZGF0YSk7XG5leHBvcnQgY29uc3Qgc2V0Q29uc2VudCA9IChzdGF0ZSwgZGF0YSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIGRhdGEpO1xuZXhwb3J0IGNvbnN0IHVwZGF0ZUNvbnNlbnQgPSAoc3RhdGUsIGRhdGEpID0+IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBkYXRhKTsiLCJleHBvcnQgZGVmYXVsdCAoKSA9PiAoe1xuICAgIHN0YXRlOiB7fSxcbiAgICB1cGRhdGUocmVkdWNlciwgbmV4dFN0YXRlLCBlZmZlY3RzID0gW10peyBcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHJlZHVjZXIodGhpcy5zdGF0ZSwgbmV4dFN0YXRlKTtcbiAgICAgICAgaWYoZWZmZWN0cy5sZW5ndGggPiAwKSBlZmZlY3RzLmZvckVhY2goZWZmZWN0ID0+IHsgZWZmZWN0KHRoaXMuc3RhdGUpIH0pO1xuICAgIH0sXG4gICAgZ2V0U3RhdGUoKSB7IHJldHVybiB0aGlzLnN0YXRlIH1cbn0pOyIsImltcG9ydCB7IGNvbXBvc2VVcGRhdGVVSU1vZGVsLCBzaG91bGRFeGVjdXRlLCB3cml0ZUNvb2tpZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVFJJR0dFUl9FVkVOVFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhcHBseSB9IGZyb20gJy4vY29uc2VudCc7XG5pbXBvcnQgeyBzZXRDb25zZW50LCB1cGRhdGVDb25zZW50IH0gZnJvbSAnLi9yZWR1Y2Vycyc7XG5cbmV4cG9ydCBjb25zdCBpbml0QmFubmVyID0gU3RvcmUgPT4gc3RhdGUgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuZmlyc3RFbGVtZW50Q2hpbGQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmViZWdpbicsIHN0YXRlLnNldHRpbmdzLmJhbm5lclRlbXBsYXRlKGNvbXBvc2VVcGRhdGVVSU1vZGVsKHN0YXRlKSkpO1xuICAgIGNvbnN0IGZpZWxkcyA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgLiR7c3RhdGUuc2V0dGluZ3MuY2xhc3NOYW1lcy5maWVsZH1gKSk7XG4gICAgY29uc3QgYmFubmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7c3RhdGUuc2V0dGluZ3MuY2xhc3NOYW1lcy5iYW5uZXJ9YCk7XG4gICAgY29uc3QgYnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7c3RhdGUuc2V0dGluZ3MuY2xhc3NOYW1lcy5idG59YCk7XG5cbiAgICBUUklHR0VSX0VWRU5UUy5mb3JFYWNoKGV2ID0+IHtcbiAgICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoZXYsIGUgPT4ge1xuICAgICAgICAgICAgaWYoIXNob3VsZEV4ZWN1dGUoZSkpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgY29uc2VudCA9IGZpZWxkcy5yZWR1Y2UoKGFjYywgZmllbGQpID0+IHsgcmV0dXJuIGFjY1tmaWVsZC52YWx1ZV0gPSBmaWVsZC5jaGVja2VkLCBhY2MgfSwge30pO1xuICAgICAgICAgICAgU3RvcmUudXBkYXRlKFxuICAgICAgICAgICAgICAgIHNldENvbnNlbnQsXG4gICAgICAgICAgICAgICAgeyBjb25zZW50IH0sXG4gICAgICAgICAgICAgICAgIWNvbnNlbnQucGVyZm9ybWFuY2UgXG4gICAgICAgICAgICAgICAgPyBbIFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUNvb2tpZSxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gbG9jYXRpb24ucmVsb2FkKCksIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVDb29raWUsXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5KHN0YXRlLmNvbnNlbnQucGVyZm9ybWFuY2UgPyAncmVtYWluJyA6ICdyZW1vdmUnKSxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4geyBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhbm5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGJhbm5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0VXBkYXRlQnRuKFN0b3JlKShzdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGluaXRVcGRhdGVCdG4gPSBTdG9yZSA9PiBzdGF0ZSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2luaXQgYnRuJyk7XG4gICAgY29uc3QgdXBkYXRlQnRuQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7c3RhdGUuc2V0dGluZ3MuY2xhc3NOYW1lcy51cGRhdGVCdG5Db250YWluZXJ9YCk7XG4gICAgY29uc29sZS5sb2coJ0F0dGVtcGluZyB0byByZW5kZXIuLi4nKTtcbiAgICBpZighdXBkYXRlQnRuQ29udGFpbmVyKSByZXR1cm47XG4gICAgY29uc3QgdXBkYXRlQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7c3RhdGUuc2V0dGluZ3MuY2xhc3NOYW1lcy51cGRhdGVCdG59YCk7XG4gICAgaWYodXBkYXRlQnRuKSB1cGRhdGVCdG4ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgIGVsc2UgdXBkYXRlQnRuQ29udGFpbmVyLmlubmVySFRNTCA9IHN0YXRlLnNldHRpbmdzLnVwZGF0ZUJ0blRlbXBsYXRlKHN0YXRlLnNldHRpbmdzKTtcbiAgICBjb25zdCBoYW5kbGVyID0gZSA9PiB7XG4gICAgICAgIGlmKCFzaG91bGRFeGVjdXRlKGUpKSByZXR1cm47XG4gICAgICAgIFN0b3JlLnVwZGF0ZSh1cGRhdGVDb25zZW50LCB7fSwgWyBpbml0QmFubmVyKFN0b3JlKSwgKCkgPT4geyBcbiAgICAgICAgICAgIGUudGFyZ2V0LnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIFRSSUdHRVJfRVZFTlRTLmZvckVhY2goZXYgPT4ge1xuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXYsIGhhbmRsZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1dKTtcbiAgICB9O1xuXG4gICAgVFJJR0dFUl9FVkVOVFMuZm9yRWFjaChldiA9PiB7XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3N0YXRlLnNldHRpbmdzLmNsYXNzTmFtZXMudXBkYXRlQnRufWApLmFkZEV2ZW50TGlzdGVuZXIoZXYsIGhhbmRsZXIpO1xuICAgIH0pO1xufTsiLCJpbXBvcnQgeyBUUklHR0VSX0tFWUNPREVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vL01vZGVybml6ciBjb29raWUgdGVzdFxuZXhwb3J0IGNvbnN0IGNvb2tpZXNFbmFibGVkID0gKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICdjb29raWV0ZXN0PTEnO1xuICAgICAgICBjb25zdCByZXQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZignY29va2lldGVzdD0nKSAhPT0gLTE7XG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICdjb29raWV0ZXN0PTE7IGV4cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAwMDowMDowMSBHTVQnO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHdyaXRlQ29va2llID0gc3RhdGUgPT4gZG9jdW1lbnQuY29va2llID0gW1xuICAgIGAke3N0YXRlLnNldHRpbmdzLm5hbWV9PSR7SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuY29uc2VudCwgeyBpbnRlbnQ6IHN0YXRlLmludGVudCB9KSl9O2AsXG4gICAgYGV4cGlyZXM9JHsobmV3IERhdGUobmV3IERhdGUoKS5nZXRUaW1lKCkgKyAoc3RhdGUuc2V0dGluZ3MuZXhwaXJ5KjI0KjYwKjYwKjEwMDApKSkudG9HTVRTdHJpbmcoKX07YCxcbiAgICBgcGF0aD0ke3N0YXRlLnNldHRpbmdzLnBhdGh9O2AsXG4gICAgc3RhdGUuc2V0dGluZ3MuZG9tYWluID8gYGRvbWFpbj0ke3N0YXRlLnNldHRpbmdzLmRvbWFpbn1gIDogJycsXG4gICAgc3RhdGUuc2V0dGluZ3Muc2VjdXJlID8gYHNlY3VyZWAgOiAnJ1xuXS5qb2luKCcnKTtcblxuZXhwb3J0IGNvbnN0IHJlYWRDb29raWUgPSBzZXR0aW5ncyA9PiB7XG4gICAgY29uc3QgY29va2llID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7ICcpLm1hcChwYXJ0ID0+ICh7IG5hbWU6IHBhcnQuc3BsaXQoJz0nKVswXSwgdmFsdWU6IHBhcnQuc3BsaXQoJz0nKVsxXSB9KSkuZmlsdGVyKHBhcnQgPT4gcGFydC5uYW1lID09PSBzZXR0aW5ncy5uYW1lKVswXTtcbiAgICByZXR1cm4gY29va2llICE9PSB1bmRlZmluZWQgPyBjb29raWUgOiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21wb3NlVXBkYXRlVUlNb2RlbCA9IHN0YXRlID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc2V0dGluZ3MsIHtcbiAgICAgICAgdHlwZXM6IE9iamVjdC5rZXlzKHN0YXRlLnNldHRpbmdzLnR5cGVzKS5yZWR1Y2UoKGFjYywgdHlwZSkgPT4ge1xuICAgICAgICAgICAgaWYoc3RhdGUuY29uc2VudFt0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYWNjW3R5cGVdID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc2V0dGluZ3MudHlwZXNbdHlwZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogc3RhdGUuY29uc2VudFt0eXBlXSAhPT0gdW5kZWZpbmVkID8gc3RhdGUuY29uc2VudFt0eXBlXSA6IHN0YXRlLnNldHRpbmdzLnR5cGVzW3R5cGVdLmNoZWNrZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBhY2NbdHlwZV0gPSBzdGF0ZS5zZXR0aW5ncy50eXBlc1t0eXBlXTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KVxuICAgIH0pXG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkRXhlY3V0ZSA9IGUgPT4gKCEhZS5rZXlDb2RlICYmICFUUklHR0VSX0tFWUNPREVTLmluY2x1ZGVzKGUua2V5Q29kZSkpIHx8ICEoZS53aGljaCA9PT0gMyB8fCBlLmJ1dHRvbiA9PT0gMik7Il19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJleGFtcGxlL3NyYy9hcHAuanMiLCJzcmMvaW5kZXguanMiLCJzcmMvbGliL2NvbnNlbnQuanMiLCJzcmMvbGliL2NvbnN0YW50cy5qcyIsInNyYy9saWIvZGVmYXVsdHMuanMiLCJzcmMvbGliL2luZGV4LmpzIiwic3JjL2xpYi9yZWR1Y2Vycy5qcyIsInNyYy9saWIvc3RvcmUuanMiLCJzcmMvbGliL3VpLmpzIiwic3JjL2xpYi91dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0FDQUEsSUFBQSxPQUFBLFFBQUEsV0FBQSxDQUFBOzs7Ozs7OztBQUVBLE9BQUEsZ0JBQUEsQ0FBQSxrQkFBQSxFQUE0QyxZQUFNO0FBQzlDLFVBQUEsT0FBQSxDQUFBLElBQUEsQ0FBa0I7QUFDZCxlQUFPO0FBQ0gseUJBQWE7QUFDVCxxQkFBSyxDQUNELFlBQU07QUFBRSw0QkFBQSxHQUFBLENBQUEsY0FBQTtBQURQLGlCQUFBO0FBREksYUFEVjtBQU1ILDJCQUFlO0FBQ1gseUJBRFcsSUFBQTtBQUVYLHFCQUFLLENBQ0QsWUFBTTtBQUFFLDRCQUFBLEdBQUEsQ0FBQSxnQkFBQTtBQURQLGlCQUFBO0FBRk0sYUFOWjtBQVlILHlDQUE2QjtBQUN6Qix5QkFEeUIsS0FBQTtBQUV6QixxQkFBSyxDQUNELFlBQU07QUFBRSw0QkFBQSxHQUFBLENBQUEsOEJBQUE7QUFEUCxpQkFBQTtBQUZvQjtBQVoxQjtBQURPLEtBQWxCO0FBREosQ0FBQTs7Ozs7Ozs7O0FDRkEsSUFBQSxZQUFBLFFBQUEsZ0JBQUEsQ0FBQTs7OztBQUNBLElBQUEsT0FBQSxRQUFBLE9BQUEsQ0FBQTs7Ozs7Ozs7a0JBRWU7QUFDWCxVQUFNLFNBQUEsSUFBQSxDQUFBLElBQUEsRUFBQTtBQUFBLGVBQVEsQ0FBQSxHQUFBLE1BQUEsT0FBQSxFQUFRLE9BQUEsTUFBQSxDQUFBLEVBQUEsRUFBa0IsV0FBbEIsT0FBQSxF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TUFBQSxRQUFBLENBQUEsS0FBQSxDQUFBLElBQUEsRUFBMkI7QUFEeEMsaUJBQTlDLENBQVo7QUFESixhQUFBLE1BSU8sSUFBQSxJQUFBLElBQVksTUFBQSxRQUFBLENBQUEsS0FBQSxDQUFaLElBQVksQ0FBWjtBQUNQLG1CQUFBLEdBQUE7QUFORyxTQUFBLEVBQUEsRUFBQTtBQUQ4QixLQUFsQyxDQUFQO0FBREcsQ0FBQTs7QUFhQSxJQUFNLGdCQUFBLFFBQUEsYUFBQSxHQUFnQixTQUFoQixhQUFnQixDQUFBLENBQUEsRUFBQTtBQUFBLFdBQU0sQ0FBQyxDQUFDLEVBQUYsT0FBQSxJQUFlLENBQUMsV0FBQSxnQkFBQSxDQUFBLFFBQUEsQ0FBMEIsRUFBM0MsT0FBaUIsQ0FBaEIsSUFBeUQsRUFBRSxFQUFBLEtBQUEsS0FBQSxDQUFBLElBQWlCLEVBQUEsTUFBQSxLQUFsRixDQUErRCxDQUEvRDtBQUF0QixDQUFBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiaW1wb3J0IENvb2tpZUJhbm5lciBmcm9tICcuLi8uLi9zcmMnO1xuICAgIFxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgQ29va2llQmFubmVyLmluaXQoe1xuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgJ25lY2Vzc2FyeSc6IHtcbiAgICAgICAgICAgICAgICBmbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4geyBjb25zb2xlLmxvZygnTmVjZXNzYXJ5IGZuJyk7IH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdwZXJmb3JtYW5jZSc6IHtcbiAgICAgICAgICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZuczogW1xuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7IGNvbnNvbGUubG9nKCdQZXJmb3JtYW5jZSBmbicpOyB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdhZHZlcnRpc2luZyBhbmQgbWFya2V0aW5nJzoge1xuICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZuczogW1xuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7IGNvbnNvbGUubG9nKCdBZHZlcnRpc2luZyBhbmQgbWFya2V0aW5nIGZuJyk7IH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn0pOyIsImltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2xpYi9kZWZhdWx0cyc7XG5pbXBvcnQgZmFjdG9yeSBmcm9tICcuL2xpYic7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBpbml0OiBvcHRzID0+IGZhY3RvcnkoT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdHMsIHtcbiAgICAgICAgdHlwZXM6IE9iamVjdC5rZXlzKG9wdHMudHlwZXMpLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgICBpZihhY2NbY3Vycl0pIHtcbiAgICAgICAgICAgICAgICBhY2NbY3Vycl0gPSBPYmplY3QuYXNzaWduKHt9LCBhY2NbY3Vycl0sIHtcbiAgICAgICAgICAgICAgICAgICAgZm5zOiBhY2NbY3Vycl0uZm5zLmNvbmNhdChvcHRzLnR5cGVzW2N1cnJdLmZucyksXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IG9wdHMudHlwZXNbY3Vycl0uY2hlY2tlZCAhPT0gdW5kZWZpbmVkID8gb3B0cy50eXBlc1tjdXJyXS5jaGVja2VkIDogZGVmYXVsdHMudHlwZXNbY3Vycl0uY2hlY2tlZCAhPT0gdW5kZWZpbmVkID8gZGVmYXVsdHMudHlwZXNbY3Vycl0uY2hlY2tlZCA6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9ICBlbHNlIGFjY1tjdXJyXSA9IG9wdHMudHlwZXNbY3Vycl07XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBkZWZhdWx0cy50eXBlcylcbiAgICB9KSlcbn07IiwiZXhwb3J0IGNvbnN0IGFwcGx5ID0gKHBlcmYgPSAnYWRkJykgPT4gc3RhdGUgPT4ge1xuICAgIC8vO187IG5lZWRzIHByb3BlciBlbnVtXG4gICAgY29uc3QgYXBwbGllZFN0YXRlID0gcGVyZiA9PT0gJ2FkZCcgXG4gICAgICAgICAgICAgICAgICAgICAgICA/IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7IGNvbnNlbnQ6ICBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5jb25zZW50LCB7IHBlcmZvcm1hbmNlOiB0cnVlIH0pIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHBlcmYgPT09ICdyZW1vdmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgeyBjb25zZW50OiAgT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuY29uc2VudCwgeyBwZXJmb3JtYW5jZTogZmFsc2UgfSl9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGF0ZTtcblxuICAgIE9iamVjdC5rZXlzKGFwcGxpZWRTdGF0ZS5jb25zZW50KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIChhcHBsaWVkU3RhdGUuY29uc2VudFtrZXldICYmIGFwcGxpZWRTdGF0ZS5zZXR0aW5ncy50eXBlc1trZXldKSAmJiBhcHBsaWVkU3RhdGUuc2V0dGluZ3MudHlwZXNba2V5XS5mbnMuZm9yRWFjaChmbiA9PiBmbihhcHBsaWVkU3RhdGUpKTtcbiAgICB9KTtcbn07IiwiZXhwb3J0IGNvbnN0IFRSSUdHRVJfRVZFTlRTID0gd2luZG93LlBvaW50ZXJFdmVudCA/IFsncG9pbnRlcnVwJywgJ2tleWRvd24nXSA6IFsnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgPyAndG91Y2hzdGFydCcgOiAnY2xpY2snLCAna2V5ZG93bicgXTtcblxuZXhwb3J0IGNvbnN0IFRSSUdHRVJfS0VZQ09ERVMgPSBbMTMsIDMyXTtcblxuZXhwb3J0IGNvbnN0IENMQVNTTkFNRSA9IHtcbiAgICBCQU5ORVI6ICdwcmVmZXJlbmNlcy1iYW5uZXInLFxuICAgIEZJRUxEOiAncHJlZmVyZW5jZXMtYmFubmVyX19maWVsZCcsXG4gICAgQlROOiAncHJlZmVyZW5jZXMtYmFubmVyX19idG4nXG59O1xuXG5leHBvcnQgY29uc3QgREFUQV9BVFRSSUJVVEUgPSB7XG4gICAgVFlQRTogJ2RhdGEtY29uc2VudC10eXBlJyxcbiAgICBJRDogJ2RhdGEtY29uc2VudC1pZCdcbn07IiwiaW1wb3J0IHsgd3JpdGVDb29raWUgfSBmcm9tICcuL3V0aWxzJzsgXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0bmFtZTogJ0Nvb2tpZVByZWZlcmVuY2VzJyxcblx0cGF0aDogJy8nLFxuXHRkb21haW46ICcnLFxuXHRzZWN1cmU6IHRydWUsXG5cdGV4cGlyeTogMzY1LFxuXHR0eXBlczoge1xuXHRcdCduZWNlc3NhcnknOiB7XG5cdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRmbnM6IFtdXG5cdFx0fVxuXHR9LFxuXHRwb2xpY3lVUkw6ICcvY29va2llLXBvbGljeScsXG5cdGNsYXNzTmFtZXM6IHtcblx0XHRiYW5uZXI6ICdwcmVmZXJlbmNlcy1iYW5uZXInLFxuXHRcdGJ0bjogJ3ByZWZlcmVuY2VzLWJhbm5lcl9fYnRuJyxcblx0XHRmaWVsZDogJ3ByZWZlcmVuY2VzLWJhbm5lcl9fZmllbGQnLFxuXHRcdHVwZGF0ZUJ0bkNvbnRhaW5lcjogJ3ByZWZlcmVuY2VzLWJhbm5lcl9fdXBkYXRlJyxcblx0XHR1cGRhdGVCdG46ICdwcmVmZXJlbmNlcy1iYW5uZXJfX3VwZGF0ZS1idG4nXG5cdH0sXG5cdHVwZGF0ZUJ0blRlbXBsYXRlKG1vZGVsKXtcblx0XHRyZXR1cm4gYDxidXR0b24gY2xhc3M9XCIke21vZGVsLmNsYXNzTmFtZXMudXBkYXRlQnRufVwiPlVwZGF0ZSBjb29raWUgcHJlZmVyZW5jZXM8L2J1dHRvbj5gXG5cdH0sXG5cdGJhbm5lclRlbXBsYXRlKG1vZGVsKXtcblx0XHRyZXR1cm4gYDxzZWN0aW9uIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWxhYmVsPVwiQ29va2llIGNvbnNlbnRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwicHJlZmVyZW5jZXMtYmFubmVyX19kZXNjXCIgY2xhc3M9XCIke21vZGVsLmNsYXNzTmFtZXMuYmFubmVyfVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInByZWZlcmVuY2VzLWNvbnRlbnRcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIndyYXBcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XG5cdFx0XHRcdFx0XHQ8IS0tZ29vZ2xlb2ZmOiBhbGwtLT5cblx0XHRcdFx0XHRcdDxkaXYgaWQ9XCJwcmVmZXJlbmNlcy1iYW5uZXJfX2Rlc2NcIj5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInByZWZlcmVuY2VzLWJhbm5lcl9faGVhZGluZ1wiPlRoaXMgd2Vic2l0ZSB1c2VzIGNvb2tpZXMuPC9kaXY+XG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwicHJlZmVyZW5jZXMtYmFubmVyX190ZXh0XCI+V2UgdXNlIGNvb2tpZXMgdG8gYW5hbHlzZSBvdXIgdHJhZmZpYyBhbmQgdG8gcHJvdmlkZSBzb2NpYWwgbWVkaWEgZmVhdHVyZXMuIFlvdSBjYW4gY2hvb3NlIHdoaWNoIGNhdGVnb3JpZXMgb2YgY29va2llcyB5b3UgY29uc2VudCB0bywgb3IgYWNjZXB0IG91ciByZWNvbW1lbmRlZCBzZXR0aW5ncy5cblx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJwcmVmZXJlbmNlcy1iYW5uZXJfX2xpbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyIG5vZm9sbG93XCIgaHJlZj1cIiR7bW9kZWwucG9saWN5VVJMfVwiPiBGaW5kIG91dCBtb3JlIGFib3V0IHRoZSBjb29raWVzIHdlIHVzZS48L2E+PC9wPlxuXHRcdFx0XHRcdFx0XHQ8dWwgY2xhc3M9XCJwcmVmZXJlbmNlcy1iYW5uZXJfX2xpc3RcIj5cblx0XHRcdFx0XHRcdFx0XHQke09iamVjdC5rZXlzKG1vZGVsLnR5cGVzKS5tYXAodHlwZSA9PiBgPGxpIGNsYXNzPVwicHJlZmVyZW5jZXMtYmFubmVyX19saXN0LWl0ZW1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBpZD1cInByZWZlcmVuY2VzLWJhbm5lcl9fJHt0eXBlLnNwbGl0KCcgJylbMF0ucmVwbGFjZSgnICcsICctJyl9XCIgY2xhc3M9XCIke21vZGVsLmNsYXNzTmFtZXMuZmllbGR9XCIgdmFsdWU9XCIke3R5cGV9XCIgdHlwZT1cImNoZWNrYm94XCIke21vZGVsLnR5cGVzW3R5cGVdLmNoZWNrZWQgPyBgIGNoZWNrZWRgIDogJyd9JHttb2RlbC50eXBlc1t0eXBlXS5kaXNhYmxlZCA/IGAgZGlzYWJsZWRgIDogJyd9PlxuXHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwicHJlZmVyZW5jZXMtYmFubmVyX19sYWJlbFwiIGZvcj1cInByZWZlcmVuY2VzLWJhbm5lcl9fJHt0eXBlLnNwbGl0KCcgJylbMF0ucmVwbGFjZSgnICcsICctJyl9XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR7dHlwZS5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKX0ke3R5cGUuc3Vic3RyKDEpfSBjb29raWVzXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPiAgXG5cdFx0XHRcdFx0XHRcdFx0PC9saT5gKS5qb2luKCcnKX1cblx0XHRcdFx0XHRcdFx0PC91bD5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cIiR7bW9kZWwuY2xhc3NOYW1lcy5idG59XCI+T0s8L2J1dHRvbj5cblx0XHRcdFx0XHRcdDwhLS1nb29nbGVvbjogYWxsLS0+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9zZWN0aW9uPmA7XG5cdH1cbn07IiwiaW1wb3J0IHsgY29va2llc0VuYWJsZWQsIHJlYWRDb29raWUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGluaXRCYW5uZXIsIGluaXRVcGRhdGVCdG4gfSBmcm9tICcuL3VpJztcbmltcG9ydCB7IGFwcGx5IH0gZnJvbSAnLi9jb25zZW50JztcbmltcG9ydCBDcmVhdGVTdG9yZSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJy4vcmVkdWNlcnMnO1xuXG5leHBvcnQgZGVmYXVsdCBzZXR0aW5ncyA9PiB7XG4gICAgaWYoIWNvb2tpZXNFbmFibGVkKCkpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBTdG9yZSA9IENyZWF0ZVN0b3JlKCk7XG4gICAgY29uc3QgY29va2llcyA9IHJlYWRDb29raWUoc2V0dGluZ3MpO1xuICAgIFN0b3JlLnVwZGF0ZShcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICB7IFxuICAgICAgICAgICAgc2V0dGluZ3MsXG4gICAgICAgICAgICBjb25zZW50OiBjb29raWVzID8gSlNPTi5wYXJzZShjb29raWVzLnZhbHVlKSA6IHt9IFxuICAgICAgICB9LFxuICAgICAgICBbYXBwbHkoIWNvb2tpZXMgPyAnYWRkJyA6ICdyZW1haW4nKSwgY29va2llcyA/IGluaXRVcGRhdGVCdG4oU3RvcmUpIDogaW5pdEJhbm5lcihTdG9yZSldXG4gICAgKTtcbn07IiwiZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZSA9IChzdGF0ZSwgZGF0YSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIGRhdGEpO1xuZXhwb3J0IGNvbnN0IHNldENvbnNlbnQgPSAoc3RhdGUsIGRhdGEpID0+IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBkYXRhKTtcbmV4cG9ydCBjb25zdCB1cGRhdGVDb25zZW50ID0gKHN0YXRlLCBkYXRhKSA9PiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgZGF0YSk7IiwiZXhwb3J0IGRlZmF1bHQgKCkgPT4gKHtcbiAgICBzdGF0ZToge30sXG4gICAgdXBkYXRlKHJlZHVjZXIsIG5leHRTdGF0ZSwgZWZmZWN0cyA9IFtdKXsgXG4gICAgICAgIHRoaXMuc3RhdGUgPSByZWR1Y2VyKHRoaXMuc3RhdGUsIG5leHRTdGF0ZSk7XG4gICAgICAgIGlmKGVmZmVjdHMubGVuZ3RoID4gMCkgZWZmZWN0cy5mb3JFYWNoKGVmZmVjdCA9PiB7IGVmZmVjdCh0aGlzLnN0YXRlKSB9KTtcbiAgICB9LFxuICAgIGdldFN0YXRlKCkgeyByZXR1cm4gdGhpcy5zdGF0ZSB9XG59KTsiLCJpbXBvcnQgeyBjb21wb3NlVXBkYXRlVUlNb2RlbCwgc2hvdWxkRXhlY3V0ZSwgd3JpdGVDb29raWUsIGRlbGV0ZUNvb2tpZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRSSUdHRVJfRVZFTlRTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgYXBwbHkgfSBmcm9tICcuL2NvbnNlbnQnO1xuaW1wb3J0IHsgc2V0Q29uc2VudCwgdXBkYXRlQ29uc2VudCB9IGZyb20gJy4vcmVkdWNlcnMnO1xuXG5leHBvcnQgY29uc3QgaW5pdEJhbm5lciA9IFN0b3JlID0+IHN0YXRlID0+IHtcbiAgICBkb2N1bWVudC5ib2R5LmZpcnN0RWxlbWVudENoaWxkLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlYmVnaW4nLCBzdGF0ZS5zZXR0aW5ncy5iYW5uZXJUZW1wbGF0ZShjb21wb3NlVXBkYXRlVUlNb2RlbChzdGF0ZSkpKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3N0YXRlLnNldHRpbmdzLmNsYXNzTmFtZXMuZmllbGR9YCkpO1xuICAgIGNvbnN0IGJhbm5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3N0YXRlLnNldHRpbmdzLmNsYXNzTmFtZXMuYmFubmVyfWApO1xuICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3N0YXRlLnNldHRpbmdzLmNsYXNzTmFtZXMuYnRufWApO1xuXG4gICAgVFJJR0dFUl9FVkVOVFMuZm9yRWFjaChldiA9PiB7XG4gICAgICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKGV2LCBlID0+IHtcbiAgICAgICAgICAgIGlmKCFzaG91bGRFeGVjdXRlKGUpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnNlbnQgPSBmaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkKSA9PiB7IHJldHVybiBhY2NbZmllbGQudmFsdWVdID0gZmllbGQuY2hlY2tlZCwgYWNjIH0sIHt9KTtcbiAgICAgICAgICAgIFN0b3JlLnVwZGF0ZShcbiAgICAgICAgICAgICAgICBzZXRDb25zZW50LFxuICAgICAgICAgICAgICAgIHsgY29uc2VudCB9LFxuICAgICAgICAgICAgICAgICFjb25zZW50LnBlcmZvcm1hbmNlIFxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICBkZWxldGVDb29raWVzLFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUNvb2tpZSxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gbG9jYXRpb24ucmVsb2FkKCksIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVDb29raWUsXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5KHN0YXRlLmNvbnNlbnQucGVyZm9ybWFuY2UgPyAncmVtYWluJyA6ICdyZW1vdmUnKSxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4geyBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhbm5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGJhbm5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0VXBkYXRlQnRuKFN0b3JlKShzdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGluaXRVcGRhdGVCdG4gPSBTdG9yZSA9PiBzdGF0ZSA9PiB7XG4gICAgY29uc3QgdXBkYXRlQnRuQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7c3RhdGUuc2V0dGluZ3MuY2xhc3NOYW1lcy51cGRhdGVCdG5Db250YWluZXJ9YCk7XG4gICAgaWYoIXVwZGF0ZUJ0bkNvbnRhaW5lcikgcmV0dXJuO1xuICAgIGNvbnN0IHVwZGF0ZUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3N0YXRlLnNldHRpbmdzLmNsYXNzTmFtZXMudXBkYXRlQnRufWApO1xuICAgIGlmKHVwZGF0ZUJ0bikgdXBkYXRlQnRuLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICBlbHNlIHVwZGF0ZUJ0bkNvbnRhaW5lci5pbm5lckhUTUwgPSBzdGF0ZS5zZXR0aW5ncy51cGRhdGVCdG5UZW1wbGF0ZShzdGF0ZS5zZXR0aW5ncyk7XG4gICAgY29uc3QgaGFuZGxlciA9IGUgPT4ge1xuICAgICAgICBpZighc2hvdWxkRXhlY3V0ZShlKSkgcmV0dXJuO1xuICAgICAgICBTdG9yZS51cGRhdGUodXBkYXRlQ29uc2VudCwge30sIFsgaW5pdEJhbm5lcihTdG9yZSksICgpID0+IHsgXG4gICAgICAgICAgICBlLnRhcmdldC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICBUUklHR0VSX0VWRU5UUy5mb3JFYWNoKGV2ID0+IHtcbiAgICAgICAgICAgICAgICBlLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2LCBoYW5kbGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XSk7XG4gICAgfTtcblxuICAgIFRSSUdHRVJfRVZFTlRTLmZvckVhY2goZXYgPT4ge1xuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtzdGF0ZS5zZXR0aW5ncy5jbGFzc05hbWVzLnVwZGF0ZUJ0bn1gKS5hZGRFdmVudExpc3RlbmVyKGV2LCBoYW5kbGVyKTtcbiAgICB9KTtcbn07IiwiaW1wb3J0IHsgVFJJR0dFUl9LRVlDT0RFUyB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLy9Nb2Rlcm5penIgY29va2llIHRlc3RcbmV4cG9ydCBjb25zdCBjb29raWVzRW5hYmxlZCA9ICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBkb2N1bWVudC5jb29raWUgPSAnY29va2lldGVzdD0xJztcbiAgICAgICAgY29uc3QgcmV0ID0gZG9jdW1lbnQuY29va2llLmluZGV4T2YoJ2Nvb2tpZXRlc3Q9JykgIT09IC0xO1xuICAgICAgICBkb2N1bWVudC5jb29raWUgPSAnY29va2lldGVzdD0xOyBleHBpcmVzPVRodSwgMDEtSmFuLTE5NzAgMDA6MDA6MDEgR01UJztcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3cml0ZUNvb2tpZSA9IHN0YXRlID0+IGRvY3VtZW50LmNvb2tpZSA9IFtcbiAgICBgJHtzdGF0ZS5zZXR0aW5ncy5uYW1lfT0ke0pTT04uc3RyaW5naWZ5KE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmNvbnNlbnQsIHsgaW50ZW50OiBzdGF0ZS5pbnRlbnQgfSkpfTtgLFxuICAgIGBleHBpcmVzPSR7KG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgKHN0YXRlLnNldHRpbmdzLmV4cGlyeSoyNCo2MCo2MCoxMDAwKSkpLnRvR01UU3RyaW5nKCl9O2AsXG4gICAgYHBhdGg9JHtzdGF0ZS5zZXR0aW5ncy5wYXRofTtgLFxuICAgIHN0YXRlLnNldHRpbmdzLmRvbWFpbiA/IGBkb21haW49JHtzdGF0ZS5zZXR0aW5ncy5kb21haW59YCA6ICcnLFxuICAgIHN0YXRlLnNldHRpbmdzLnNlY3VyZSA/IGBzZWN1cmVgIDogJydcbl0uam9pbignJyk7XG5cbmV4cG9ydCBjb25zdCByZWFkQ29va2llID0gc2V0dGluZ3MgPT4ge1xuICAgIGNvbnN0IGNvb2tpZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOyAnKS5tYXAocGFydCA9PiAoeyBuYW1lOiBwYXJ0LnNwbGl0KCc9JylbMF0sIHZhbHVlOiBwYXJ0LnNwbGl0KCc9JylbMV0gfSkpLmZpbHRlcihwYXJ0ID0+IHBhcnQubmFtZSA9PT0gc2V0dGluZ3MubmFtZSlbMF07XG4gICAgcmV0dXJuIGNvb2tpZSAhPT0gdW5kZWZpbmVkID8gY29va2llIDogZmFsc2U7XG59O1xuXG5jb25zdCB1cGRhdGVDb29raWUgPSBzdGF0ZSA9PiBtb2RlbCA9PiBkb2N1bWVudC5jb29raWUgPSBbXG4gICAgYCR7bW9kZWwubmFtZX09JHttb2RlbC52YWx1ZX07YCxcbiAgICBgZXhwaXJlcz0ke21vZGVsLmV4cGlyeX07YCxcbiAgICBgcGF0aD0ke3N0YXRlLnNldHRpbmdzLnBhdGh9O2AsXG4gICAgc3RhdGUuc2V0dGluZ3MuZG9tYWluID8gYGRvbWFpbj0ke3N0YXRlLnNldHRpbmdzLmRvbWFpbn07YCA6ICcnLFxuICAgIHN0YXRlLnNldHRpbmdzLnNlY3VyZSA/IGBzZWN1cmVgIDogJydcbl0uam9pbignJyk7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVDb29raWVzID0gc3RhdGUgPT4ge1xuICAgIGRvY3VtZW50LmNvb2tpZVxuICAgICAgICAuc3BsaXQoJzsgJylcbiAgICAgICAgLm1hcChwYXJ0ID0+ICh7IFxuICAgICAgICAgICAgbmFtZTogcGFydC5zcGxpdCgnPScpWzBdLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnQuc3BsaXQoJz0nKVsxXSxcbiAgICAgICAgICAgIGV4cGlyeTogJ1RodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UJ1xuICAgICAgICB9KSlcbiAgICAgICAgLm1hcCh1cGRhdGVDb29raWUoc3RhdGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21wb3NlVXBkYXRlVUlNb2RlbCA9IHN0YXRlID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc2V0dGluZ3MsIHtcbiAgICAgICAgdHlwZXM6IE9iamVjdC5rZXlzKHN0YXRlLnNldHRpbmdzLnR5cGVzKS5yZWR1Y2UoKGFjYywgdHlwZSkgPT4ge1xuICAgICAgICAgICAgaWYoc3RhdGUuY29uc2VudFt0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYWNjW3R5cGVdID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc2V0dGluZ3MudHlwZXNbdHlwZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogc3RhdGUuY29uc2VudFt0eXBlXSAhPT0gdW5kZWZpbmVkID8gc3RhdGUuY29uc2VudFt0eXBlXSA6IHN0YXRlLnNldHRpbmdzLnR5cGVzW3R5cGVdLmNoZWNrZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBhY2NbdHlwZV0gPSBzdGF0ZS5zZXR0aW5ncy50eXBlc1t0eXBlXTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KVxuICAgIH0pXG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkRXhlY3V0ZSA9IGUgPT4gKCEhZS5rZXlDb2RlICYmICFUUklHR0VSX0tFWUNPREVTLmluY2x1ZGVzKGUua2V5Q29kZSkpIHx8ICEoZS53aGljaCA9PT0gMyB8fCBlLmJ1dHRvbiA9PT0gMik7Il19 |
{ | ||
"name": "storm-cookie-banner", | ||
"version": "0.3.0", | ||
"version": "0.3.1", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "author": "stormid", |
@@ -8,3 +8,3 @@ # Storm cookie banner | ||
## Example | ||
[https://mjbp.github.io/storm-cookie-banner](https://mjbp.github.io/storm-cookie-banner) | ||
[https://stormid.github.io/storm-cookie-banner](https://mjbp.github.io/storm-cookie-banner) | ||
@@ -14,3 +14,3 @@ ## Usage | ||
Cookies category names can be any valid String. Preference cookies are a mandatory category that is used by the banner itself to save preferences if consented. | ||
Cookies category names can be any valid String. | ||
@@ -34,18 +34,2 @@ JS | ||
}, | ||
'preference': { | ||
checked: true, //whether the checkbox shown to the user is checked by default or not | ||
fns: [ //array of cookie-reliant functions | ||
model => { | ||
//function that depends upon or creates a 'preference' cookie | ||
} | ||
] | ||
}, | ||
'performance': { | ||
checked: true, | ||
fns: [ | ||
model => { | ||
//function that depends upon or creates a 'performance' cookie | ||
} | ||
] | ||
}, | ||
'advertising and marketing': { | ||
@@ -80,3 +64,3 @@ checked: false, | ||
domain: '', | ||
secure: '', | ||
secure: true, | ||
expiry: 365, | ||
@@ -88,16 +72,11 @@ types: { | ||
fns: [] | ||
}, | ||
'preference': { | ||
checked: true, | ||
fns: [ | ||
model => { document.cookie = writeCookie(model); } | ||
] | ||
} | ||
}, | ||
policyURL: '/cookie-policy', | ||
classNames: { | ||
banner: 'cookie-banner', | ||
btn: 'cookie-banner__btn', | ||
field: 'cookie-banner__field', | ||
updateBtnContainer: 'cookie-banner__update', | ||
updateBtn: 'cookie-banner__update-btn' | ||
banner: 'preferences-banner', | ||
btn: 'preferences-banner__btn', | ||
field: 'preferences-banner__field', | ||
updateBtnContainer: 'preferences-banner__update', | ||
updateBtn: 'preferences-banner__update-btn' | ||
}, | ||
@@ -108,20 +87,27 @@ updateBtnTemplate(model){ | ||
bannerTemplate(model){ | ||
return `<section role="dialog" aria-live="polite" aria-label="Cookie consent" aria-describedby="cookie-banner__desc" class="${model.classNames.banner}"> | ||
<!--googleoff: all--> | ||
<div class="small-12" id="cookie-banner__desc"> | ||
<h1 class="cookie-banner__heading">This website uses cookies.</h1> | ||
<p class="cookie-banner__text gamma">We use cookies to analyse our traffic and to provide social media features. You can choose which categories | ||
of cookies you consent to, or accept our recommended settings. | ||
<a class="cookie-banner__link" rel="noopener noreferrer nofollow" href="/cookies/">Find out more</a> about the cookies we use before you consent.</p> | ||
<ul class="cookie-banner__list lister push--bottom large-10"> | ||
${Object.keys(model.types).map(type => `<li class="cookie-banner__list-item"> | ||
<input id="cookie-banner__${type.split(' ')[0].replace(' ', '-')}" class="${model.classNames.field}" value="${type}" type="checkbox"${model.types[type].checked ? ` checked` : ''}${model.types[type].disabled ? ` disabled` : ''}> | ||
<label class="cookie-banner__label gamma" for="cookie-banner__${type.split(' ')[0].replace(' ', '-')}">${type.substr(0, 1).toUpperCase()}${type.substr(1)} cookies</label> | ||
</li>`).join('')} | ||
</ul> | ||
return `<section role="dialog" aria-live="polite" aria-label="Cookie consent" aria-describedby="preferences-banner__desc" class="${model.classNames.banner}"> | ||
<div class="preferences-content"> | ||
<div class="wrap"> | ||
<div class="row"> | ||
<!--googleoff: all--> | ||
<div id="preferences-banner__desc"> | ||
<div class="preferences-banner__heading">This website uses cookies.</div> | ||
<p class="preferences-banner__text">We use cookies to analyse our traffic and to provide social media features. You can choose which categories of cookies you consent to, or accept our recommended settings. | ||
<a class="preferences-banner__link" rel="noopener noreferrer nofollow" href="${model.policyURL}"> Find out more about the cookies we use.</a></p> | ||
<ul class="preferences-banner__list"> | ||
${Object.keys(model.types).map(type => `<li class="preferences-banner__list-item"> | ||
<input id="preferences-banner__${type.split(' ')[0].replace(' ', '-')}" class="${model.classNames.field}" value="${type}" type="checkbox"${model.types[type].checked ? ` checked` : ''}${model.types[type].disabled ? ` disabled` : ''}> | ||
<label class="preferences-banner__label" for="preferences-banner__${type.split(' ')[0].replace(' ', '-')}"> | ||
${type.substr(0, 1).toUpperCase()}${type.substr(1)} cookies | ||
</label> | ||
</li>`).join('')} | ||
</ul> | ||
</div> | ||
<button class="${model.classNames.btn}">OK</button> | ||
<!--googleon: all--> | ||
</div> | ||
</div> | ||
</div> | ||
<button class="${model.classNames.btn}">Continue</button> | ||
<!--googleon: all--> | ||
</section>`; | ||
} | ||
} | ||
@@ -128,0 +114,0 @@ ``` |
@@ -1,2 +0,2 @@ | ||
import { composeUpdateUIModel, shouldExecute, writeCookie } from './utils'; | ||
import { composeUpdateUIModel, shouldExecute, writeCookie, deleteCookies } from './utils'; | ||
import { TRIGGER_EVENTS } from './constants'; | ||
@@ -21,3 +21,4 @@ import { apply } from './consent'; | ||
!consent.performance | ||
? [ | ||
? [ | ||
deleteCookies, | ||
writeCookie, | ||
@@ -24,0 +25,0 @@ () => { |
@@ -29,2 +29,21 @@ import { TRIGGER_KEYCODES } from './constants'; | ||
const updateCookie = state => model => document.cookie = [ | ||
`${model.name}=${model.value};`, | ||
`expires=${model.expiry};`, | ||
`path=${state.settings.path};`, | ||
state.settings.domain ? `domain=${state.settings.domain};` : '', | ||
state.settings.secure ? `secure` : '' | ||
].join(''); | ||
export const deleteCookies = state => { | ||
document.cookie | ||
.split('; ') | ||
.map(part => ({ | ||
name: part.split('=')[0], | ||
value: part.split('=')[1], | ||
expiry: 'Thu, 01 Jan 1970 00:00:01 GMT' | ||
})) | ||
.map(updateCookie(state)); | ||
}; | ||
export const composeUpdateUIModel = state => { | ||
@@ -31,0 +50,0 @@ return Object.assign({}, state.settings, { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
100915
1376
125