UNPKG

to-amp

Version:

Google AMP (Accelerated Mobile Pages) utility module.

948 lines 85.9 kB
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory(require("cherio"), require("consola"), require("es6-error"), require("isobject"), require("sanitize-html"));
	else if(typeof define === 'function' && define.amd)
		define(["cherio", "consola", "es6-error", "isobject", "sanitize-html"], factory);
	else if(typeof exports === 'object')
		exports["to-amp"] = factory(require("cherio"), require("consola"), require("es6-error"), require("isobject"), require("sanitize-html"));
	else
		root["to-amp"] = factory(root["cherio"], root["consola"], root["es6-error"], root["isobject"], root["sanitize-html"]);
})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_cherio__, __WEBPACK_EXTERNAL_MODULE_consola__, __WEBPACK_EXTERNAL_MODULE_es6_error__, __WEBPACK_EXTERNAL_MODULE_isobject__, __WEBPACK_EXTERNAL_MODULE_sanitize_html__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ 	function hotDisposeChunk(chunkId) {
/******/ 		delete installedChunks[chunkId];
/******/ 	}
/******/ 	var parentHotUpdateCallback = (typeof self !== 'undefined' ? self : this)["webpackHotUpdateto_amp"];
/******/ 	(typeof self !== 'undefined' ? self : this)["webpackHotUpdateto_amp"] = // eslint-disable-next-line no-unused-vars
/******/ 	function webpackHotUpdateCallback(chunkId, moreModules) {
/******/ 		hotAddUpdateChunk(chunkId, moreModules);
/******/ 		if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
/******/ 	} ;
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotDownloadUpdateChunk(chunkId) {
/******/ 		var script = document.createElement("script");
/******/ 		script.charset = "utf-8";
/******/ 		script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js";
/******/ 		if (null) script.crossOrigin = null;
/******/ 		document.head.appendChild(script);
/******/ 	}
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotDownloadManifest(requestTimeout) {
/******/ 		requestTimeout = requestTimeout || 10000;
/******/ 		return new Promise(function(resolve, reject) {
/******/ 			if (typeof XMLHttpRequest === "undefined") {
/******/ 				return reject(new Error("No browser support"));
/******/ 			}
/******/ 			try {
/******/ 				var request = new XMLHttpRequest();
/******/ 				var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json";
/******/ 				request.open("GET", requestPath, true);
/******/ 				request.timeout = requestTimeout;
/******/ 				request.send(null);
/******/ 			} catch (err) {
/******/ 				return reject(err);
/******/ 			}
/******/ 			request.onreadystatechange = function() {
/******/ 				if (request.readyState !== 4) return;
/******/ 				if (request.status === 0) {
/******/ 					// timeout
/******/ 					reject(
/******/ 						new Error("Manifest request to " + requestPath + " timed out.")
/******/ 					);
/******/ 				} else if (request.status === 404) {
/******/ 					// no update available
/******/ 					resolve();
/******/ 				} else if (request.status !== 200 && request.status !== 304) {
/******/ 					// other failure
/******/ 					reject(new Error("Manifest request to " + requestPath + " failed."));
/******/ 				} else {
/******/ 					// success
/******/ 					try {
/******/ 						var update = JSON.parse(request.responseText);
/******/ 					} catch (e) {
/******/ 						reject(e);
/******/ 						return;
/******/ 					}
/******/ 					resolve(update);
/******/ 				}
/******/ 			};
/******/ 		});
/******/ 	}
/******/
/******/ 	var hotApplyOnUpdate = true;
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	var hotCurrentHash = "86d5091afa060f39b4a5";
/******/ 	var hotRequestTimeout = 10000;
/******/ 	var hotCurrentModuleData = {};
/******/ 	var hotCurrentChildModule;
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	var hotCurrentParents = [];
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	var hotCurrentParentsTemp = [];
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotCreateRequire(moduleId) {
/******/ 		var me = installedModules[moduleId];
/******/ 		if (!me) return __webpack_require__;
/******/ 		var fn = function(request) {
/******/ 			if (me.hot.active) {
/******/ 				if (installedModules[request]) {
/******/ 					if (installedModules[request].parents.indexOf(moduleId) === -1) {
/******/ 						installedModules[request].parents.push(moduleId);
/******/ 					}
/******/ 				} else {
/******/ 					hotCurrentParents = [moduleId];
/******/ 					hotCurrentChildModule = request;
/******/ 				}
/******/ 				if (me.children.indexOf(request) === -1) {
/******/ 					me.children.push(request);
/******/ 				}
/******/ 			} else {
/******/ 				console.warn(
/******/ 					"[HMR] unexpected require(" +
/******/ 						request +
/******/ 						") from disposed module " +
/******/ 						moduleId
/******/ 				);
/******/ 				hotCurrentParents = [];
/******/ 			}
/******/ 			return __webpack_require__(request);
/******/ 		};
/******/ 		var ObjectFactory = function ObjectFactory(name) {
/******/ 			return {
/******/ 				configurable: true,
/******/ 				enumerable: true,
/******/ 				get: function() {
/******/ 					return __webpack_require__[name];
/******/ 				},
/******/ 				set: function(value) {
/******/ 					__webpack_require__[name] = value;
/******/ 				}
/******/ 			};
/******/ 		};
/******/ 		for (var name in __webpack_require__) {
/******/ 			if (
/******/ 				Object.prototype.hasOwnProperty.call(__webpack_require__, name) &&
/******/ 				name !== "e" &&
/******/ 				name !== "t"
/******/ 			) {
/******/ 				Object.defineProperty(fn, name, ObjectFactory(name));
/******/ 			}
/******/ 		}
/******/ 		fn.e = function(chunkId) {
/******/ 			if (hotStatus === "ready") hotSetStatus("prepare");
/******/ 			hotChunksLoading++;
/******/ 			return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {
/******/ 				finishChunkLoading();
/******/ 				throw err;
/******/ 			});
/******/
/******/ 			function finishChunkLoading() {
/******/ 				hotChunksLoading--;
/******/ 				if (hotStatus === "prepare") {
/******/ 					if (!hotWaitingFilesMap[chunkId]) {
/******/ 						hotEnsureUpdateChunk(chunkId);
/******/ 					}
/******/ 					if (hotChunksLoading === 0 && hotWaitingFiles === 0) {
/******/ 						hotUpdateDownloaded();
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 		fn.t = function(value, mode) {
/******/ 			if (mode & 1) value = fn(value);
/******/ 			return __webpack_require__.t(value, mode & ~1);
/******/ 		};
/******/ 		return fn;
/******/ 	}
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotCreateModule(moduleId) {
/******/ 		var hot = {
/******/ 			// private stuff
/******/ 			_acceptedDependencies: {},
/******/ 			_declinedDependencies: {},
/******/ 			_selfAccepted: false,
/******/ 			_selfDeclined: false,
/******/ 			_disposeHandlers: [],
/******/ 			_main: hotCurrentChildModule !== moduleId,
/******/
/******/ 			// Module API
/******/ 			active: true,
/******/ 			accept: function(dep, callback) {
/******/ 				if (dep === undefined) hot._selfAccepted = true;
/******/ 				else if (typeof dep === "function") hot._selfAccepted = dep;
/******/ 				else if (typeof dep === "object")
/******/ 					for (var i = 0; i < dep.length; i++)
/******/ 						hot._acceptedDependencies[dep[i]] = callback || function() {};
/******/ 				else hot._acceptedDependencies[dep] = callback || function() {};
/******/ 			},
/******/ 			decline: function(dep) {
/******/ 				if (dep === undefined) hot._selfDeclined = true;
/******/ 				else if (typeof dep === "object")
/******/ 					for (var i = 0; i < dep.length; i++)
/******/ 						hot._declinedDependencies[dep[i]] = true;
/******/ 				else hot._declinedDependencies[dep] = true;
/******/ 			},
/******/ 			dispose: function(callback) {
/******/ 				hot._disposeHandlers.push(callback);
/******/ 			},
/******/ 			addDisposeHandler: function(callback) {
/******/ 				hot._disposeHandlers.push(callback);
/******/ 			},
/******/ 			removeDisposeHandler: function(callback) {
/******/ 				var idx = hot._disposeHandlers.indexOf(callback);
/******/ 				if (idx >= 0) hot._disposeHandlers.splice(idx, 1);
/******/ 			},
/******/
/******/ 			// Management API
/******/ 			check: hotCheck,
/******/ 			apply: hotApply,
/******/ 			status: function(l) {
/******/ 				if (!l) return hotStatus;
/******/ 				hotStatusHandlers.push(l);
/******/ 			},
/******/ 			addStatusHandler: function(l) {
/******/ 				hotStatusHandlers.push(l);
/******/ 			},
/******/ 			removeStatusHandler: function(l) {
/******/ 				var idx = hotStatusHandlers.indexOf(l);
/******/ 				if (idx >= 0) hotStatusHandlers.splice(idx, 1);
/******/ 			},
/******/
/******/ 			//inherit from previous dispose call
/******/ 			data: hotCurrentModuleData[moduleId]
/******/ 		};
/******/ 		hotCurrentChildModule = undefined;
/******/ 		return hot;
/******/ 	}
/******/
/******/ 	var hotStatusHandlers = [];
/******/ 	var hotStatus = "idle";
/******/
/******/ 	function hotSetStatus(newStatus) {
/******/ 		hotStatus = newStatus;
/******/ 		for (var i = 0; i < hotStatusHandlers.length; i++)
/******/ 			hotStatusHandlers[i].call(null, newStatus);
/******/ 	}
/******/
/******/ 	// while downloading
/******/ 	var hotWaitingFiles = 0;
/******/ 	var hotChunksLoading = 0;
/******/ 	var hotWaitingFilesMap = {};
/******/ 	var hotRequestedFilesMap = {};
/******/ 	var hotAvailableFilesMap = {};
/******/ 	var hotDeferred;
/******/
/******/ 	// The update info
/******/ 	var hotUpdate, hotUpdateNewHash;
/******/
/******/ 	function toModuleId(id) {
/******/ 		var isNumber = +id + "" === id;
/******/ 		return isNumber ? +id : id;
/******/ 	}
/******/
/******/ 	function hotCheck(apply) {
/******/ 		if (hotStatus !== "idle") {
/******/ 			throw new Error("check() is only allowed in idle status");
/******/ 		}
/******/ 		hotApplyOnUpdate = apply;
/******/ 		hotSetStatus("check");
/******/ 		return hotDownloadManifest(hotRequestTimeout).then(function(update) {
/******/ 			if (!update) {
/******/ 				hotSetStatus("idle");
/******/ 				return null;
/******/ 			}
/******/ 			hotRequestedFilesMap = {};
/******/ 			hotWaitingFilesMap = {};
/******/ 			hotAvailableFilesMap = update.c;
/******/ 			hotUpdateNewHash = update.h;
/******/
/******/ 			hotSetStatus("prepare");
/******/ 			var promise = new Promise(function(resolve, reject) {
/******/ 				hotDeferred = {
/******/ 					resolve: resolve,
/******/ 					reject: reject
/******/ 				};
/******/ 			});
/******/ 			hotUpdate = {};
/******/ 			var chunkId = "to-amp.umd.min";
/******/ 			// eslint-disable-next-line no-lone-blocks
/******/ 			{
/******/ 				/*globals chunkId */
/******/ 				hotEnsureUpdateChunk(chunkId);
/******/ 			}
/******/ 			if (
/******/ 				hotStatus === "prepare" &&
/******/ 				hotChunksLoading === 0 &&
/******/ 				hotWaitingFiles === 0
/******/ 			) {
/******/ 				hotUpdateDownloaded();
/******/ 			}
/******/ 			return promise;
/******/ 		});
/******/ 	}
/******/
/******/ 	// eslint-disable-next-line no-unused-vars
/******/ 	function hotAddUpdateChunk(chunkId, moreModules) {
/******/ 		if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])
/******/ 			return;
/******/ 		hotRequestedFilesMap[chunkId] = false;
/******/ 		for (var moduleId in moreModules) {
/******/ 			if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ 				hotUpdate[moduleId] = moreModules[moduleId];
/******/ 			}
/******/ 		}
/******/ 		if (--hotWaitingFiles === 0 && hotChunksLoading === 0) {
/******/ 			hotUpdateDownloaded();
/******/ 		}
/******/ 	}
/******/
/******/ 	function hotEnsureUpdateChunk(chunkId) {
/******/ 		if (!hotAvailableFilesMap[chunkId]) {
/******/ 			hotWaitingFilesMap[chunkId] = true;
/******/ 		} else {
/******/ 			hotRequestedFilesMap[chunkId] = true;
/******/ 			hotWaitingFiles++;
/******/ 			hotDownloadUpdateChunk(chunkId);
/******/ 		}
/******/ 	}
/******/
/******/ 	function hotUpdateDownloaded() {
/******/ 		hotSetStatus("ready");
/******/ 		var deferred = hotDeferred;
/******/ 		hotDeferred = null;
/******/ 		if (!deferred) return;
/******/ 		if (hotApplyOnUpdate) {
/******/ 			// Wrap deferred object in Promise to mark it as a well-handled Promise to
/******/ 			// avoid triggering uncaught exception warning in Chrome.
/******/ 			// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666
/******/ 			Promise.resolve()
/******/ 				.then(function() {
/******/ 					return hotApply(hotApplyOnUpdate);
/******/ 				})
/******/ 				.then(
/******/ 					function(result) {
/******/ 						deferred.resolve(result);
/******/ 					},
/******/ 					function(err) {
/******/ 						deferred.reject(err);
/******/ 					}
/******/ 				);
/******/ 		} else {
/******/ 			var outdatedModules = [];
/******/ 			for (var id in hotUpdate) {
/******/ 				if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
/******/ 					outdatedModules.push(toModuleId(id));
/******/ 				}
/******/ 			}
/******/ 			deferred.resolve(outdatedModules);
/******/ 		}
/******/ 	}
/******/
/******/ 	function hotApply(options) {
/******/ 		if (hotStatus !== "ready")
/******/ 			throw new Error("apply() is only allowed in ready status");
/******/ 		options = options || {};
/******/
/******/ 		var cb;
/******/ 		var i;
/******/ 		var j;
/******/ 		var module;
/******/ 		var moduleId;
/******/
/******/ 		function getAffectedStuff(updateModuleId) {
/******/ 			var outdatedModules = [updateModuleId];
/******/ 			var outdatedDependencies = {};
/******/
/******/ 			var queue = outdatedModules.map(function(id) {
/******/ 				return {
/******/ 					chain: [id],
/******/ 					id: id
/******/ 				};
/******/ 			});
/******/ 			while (queue.length > 0) {
/******/ 				var queueItem = queue.pop();
/******/ 				var moduleId = queueItem.id;
/******/ 				var chain = queueItem.chain;
/******/ 				module = installedModules[moduleId];
/******/ 				if (!module || module.hot._selfAccepted) continue;
/******/ 				if (module.hot._selfDeclined) {
/******/ 					return {
/******/ 						type: "self-declined",
/******/ 						chain: chain,
/******/ 						moduleId: moduleId
/******/ 					};
/******/ 				}
/******/ 				if (module.hot._main) {
/******/ 					return {
/******/ 						type: "unaccepted",
/******/ 						chain: chain,
/******/ 						moduleId: moduleId
/******/ 					};
/******/ 				}
/******/ 				for (var i = 0; i < module.parents.length; i++) {
/******/ 					var parentId = module.parents[i];
/******/ 					var parent = installedModules[parentId];
/******/ 					if (!parent) continue;
/******/ 					if (parent.hot._declinedDependencies[moduleId]) {
/******/ 						return {
/******/ 							type: "declined",
/******/ 							chain: chain.concat([parentId]),
/******/ 							moduleId: moduleId,
/******/ 							parentId: parentId
/******/ 						};
/******/ 					}
/******/ 					if (outdatedModules.indexOf(parentId) !== -1) continue;
/******/ 					if (parent.hot._acceptedDependencies[moduleId]) {
/******/ 						if (!outdatedDependencies[parentId])
/******/ 							outdatedDependencies[parentId] = [];
/******/ 						addAllToSet(outdatedDependencies[parentId], [moduleId]);
/******/ 						continue;
/******/ 					}
/******/ 					delete outdatedDependencies[parentId];
/******/ 					outdatedModules.push(parentId);
/******/ 					queue.push({
/******/ 						chain: chain.concat([parentId]),
/******/ 						id: parentId
/******/ 					});
/******/ 				}
/******/ 			}
/******/
/******/ 			return {
/******/ 				type: "accepted",
/******/ 				moduleId: updateModuleId,
/******/ 				outdatedModules: outdatedModules,
/******/ 				outdatedDependencies: outdatedDependencies
/******/ 			};
/******/ 		}
/******/
/******/ 		function addAllToSet(a, b) {
/******/ 			for (var i = 0; i < b.length; i++) {
/******/ 				var item = b[i];
/******/ 				if (a.indexOf(item) === -1) a.push(item);
/******/ 			}
/******/ 		}
/******/
/******/ 		// at begin all updates modules are outdated
/******/ 		// the "outdated" status can propagate to parents if they don't accept the children
/******/ 		var outdatedDependencies = {};
/******/ 		var outdatedModules = [];
/******/ 		var appliedUpdate = {};
/******/
/******/ 		var warnUnexpectedRequire = function warnUnexpectedRequire() {
/******/ 			console.warn(
/******/ 				"[HMR] unexpected require(" + result.moduleId + ") to disposed module"
/******/ 			);
/******/ 		};
/******/
/******/ 		for (var id in hotUpdate) {
/******/ 			if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
/******/ 				moduleId = toModuleId(id);
/******/ 				/** @type {TODO} */
/******/ 				var result;
/******/ 				if (hotUpdate[id]) {
/******/ 					result = getAffectedStuff(moduleId);
/******/ 				} else {
/******/ 					result = {
/******/ 						type: "disposed",
/******/ 						moduleId: id
/******/ 					};
/******/ 				}
/******/ 				/** @type {Error|false} */
/******/ 				var abortError = false;
/******/ 				var doApply = false;
/******/ 				var doDispose = false;
/******/ 				var chainInfo = "";
/******/ 				if (result.chain) {
/******/ 					chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
/******/ 				}
/******/ 				switch (result.type) {
/******/ 					case "self-declined":
/******/ 						if (options.onDeclined) options.onDeclined(result);
/******/ 						if (!options.ignoreDeclined)
/******/ 							abortError = new Error(
/******/ 								"Aborted because of self decline: " +
/******/ 									result.moduleId +
/******/ 									chainInfo
/******/ 							);
/******/ 						break;
/******/ 					case "declined":
/******/ 						if (options.onDeclined) options.onDeclined(result);
/******/ 						if (!options.ignoreDeclined)
/******/ 							abortError = new Error(
/******/ 								"Aborted because of declined dependency: " +
/******/ 									result.moduleId +
/******/ 									" in " +
/******/ 									result.parentId +
/******/ 									chainInfo
/******/ 							);
/******/ 						break;
/******/ 					case "unaccepted":
/******/ 						if (options.onUnaccepted) options.onUnaccepted(result);
/******/ 						if (!options.ignoreUnaccepted)
/******/ 							abortError = new Error(
/******/ 								"Aborted because " + moduleId + " is not accepted" + chainInfo
/******/ 							);
/******/ 						break;
/******/ 					case "accepted":
/******/ 						if (options.onAccepted) options.onAccepted(result);
/******/ 						doApply = true;
/******/ 						break;
/******/ 					case "disposed":
/******/ 						if (options.onDisposed) options.onDisposed(result);
/******/ 						doDispose = true;
/******/ 						break;
/******/ 					default:
/******/ 						throw new Error("Unexception type " + result.type);
/******/ 				}
/******/ 				if (abortError) {
/******/ 					hotSetStatus("abort");
/******/ 					return Promise.reject(abortError);
/******/ 				}
/******/ 				if (doApply) {
/******/ 					appliedUpdate[moduleId] = hotUpdate[moduleId];
/******/ 					addAllToSet(outdatedModules, result.outdatedModules);
/******/ 					for (moduleId in result.outdatedDependencies) {
/******/ 						if (
/******/ 							Object.prototype.hasOwnProperty.call(
/******/ 								result.outdatedDependencies,
/******/ 								moduleId
/******/ 							)
/******/ 						) {
/******/ 							if (!outdatedDependencies[moduleId])
/******/ 								outdatedDependencies[moduleId] = [];
/******/ 							addAllToSet(
/******/ 								outdatedDependencies[moduleId],
/******/ 								result.outdatedDependencies[moduleId]
/******/ 							);
/******/ 						}
/******/ 					}
/******/ 				}
/******/ 				if (doDispose) {
/******/ 					addAllToSet(outdatedModules, [result.moduleId]);
/******/ 					appliedUpdate[moduleId] = warnUnexpectedRequire;
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// Store self accepted outdated modules to require them later by the module system
/******/ 		var outdatedSelfAcceptedModules = [];
/******/ 		for (i = 0; i < outdatedModules.length; i++) {
/******/ 			moduleId = outdatedModules[i];
/******/ 			if (
/******/ 				installedModules[moduleId] &&
/******/ 				installedModules[moduleId].hot._selfAccepted &&
/******/ 				// removed self-accepted modules should not be required
/******/ 				appliedUpdate[moduleId] !== warnUnexpectedRequire
/******/ 			) {
/******/ 				outdatedSelfAcceptedModules.push({
/******/ 					module: moduleId,
/******/ 					errorHandler: installedModules[moduleId].hot._selfAccepted
/******/ 				});
/******/ 			}
/******/ 		}
/******/
/******/ 		// Now in "dispose" phase
/******/ 		hotSetStatus("dispose");
/******/ 		Object.keys(hotAvailableFilesMap).forEach(function(chunkId) {
/******/ 			if (hotAvailableFilesMap[chunkId] === false) {
/******/ 				hotDisposeChunk(chunkId);
/******/ 			}
/******/ 		});
/******/
/******/ 		var idx;
/******/ 		var queue = outdatedModules.slice();
/******/ 		while (queue.length > 0) {
/******/ 			moduleId = queue.pop();
/******/ 			module = installedModules[moduleId];
/******/ 			if (!module) continue;
/******/
/******/ 			var data = {};
/******/
/******/ 			// Call dispose handlers
/******/ 			var disposeHandlers = module.hot._disposeHandlers;
/******/ 			for (j = 0; j < disposeHandlers.length; j++) {
/******/ 				cb = disposeHandlers[j];
/******/ 				cb(data);
/******/ 			}
/******/ 			hotCurrentModuleData[moduleId] = data;
/******/
/******/ 			// disable module (this disables requires from this module)
/******/ 			module.hot.active = false;
/******/
/******/ 			// remove module from cache
/******/ 			delete installedModules[moduleId];
/******/
/******/ 			// when disposing there is no need to call dispose handler
/******/ 			delete outdatedDependencies[moduleId];
/******/
/******/ 			// remove "parents" references from all children
/******/ 			for (j = 0; j < module.children.length; j++) {
/******/ 				var child = installedModules[module.children[j]];
/******/ 				if (!child) continue;
/******/ 				idx = child.parents.indexOf(moduleId);
/******/ 				if (idx >= 0) {
/******/ 					child.parents.splice(idx, 1);
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// remove outdated dependency from module children
/******/ 		var dependency;
/******/ 		var moduleOutdatedDependencies;
/******/ 		for (moduleId in outdatedDependencies) {
/******/ 			if (
/******/ 				Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
/******/ 			) {
/******/ 				module = installedModules[moduleId];
/******/ 				if (module) {
/******/ 					moduleOutdatedDependencies = outdatedDependencies[moduleId];
/******/ 					for (j = 0; j < moduleOutdatedDependencies.length; j++) {
/******/ 						dependency = moduleOutdatedDependencies[j];
/******/ 						idx = module.children.indexOf(dependency);
/******/ 						if (idx >= 0) module.children.splice(idx, 1);
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// Now in "apply" phase
/******/ 		hotSetStatus("apply");
/******/
/******/ 		hotCurrentHash = hotUpdateNewHash;
/******/
/******/ 		// insert new code
/******/ 		for (moduleId in appliedUpdate) {
/******/ 			if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {
/******/ 				modules[moduleId] = appliedUpdate[moduleId];
/******/ 			}
/******/ 		}
/******/
/******/ 		// call accept handlers
/******/ 		var error = null;
/******/ 		for (moduleId in outdatedDependencies) {
/******/ 			if (
/******/ 				Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
/******/ 			) {
/******/ 				module = installedModules[moduleId];
/******/ 				if (module) {
/******/ 					moduleOutdatedDependencies = outdatedDependencies[moduleId];
/******/ 					var callbacks = [];
/******/ 					for (i = 0; i < moduleOutdatedDependencies.length; i++) {
/******/ 						dependency = moduleOutdatedDependencies[i];
/******/ 						cb = module.hot._acceptedDependencies[dependency];
/******/ 						if (cb) {
/******/ 							if (callbacks.indexOf(cb) !== -1) continue;
/******/ 							callbacks.push(cb);
/******/ 						}
/******/ 					}
/******/ 					for (i = 0; i < callbacks.length; i++) {
/******/ 						cb = callbacks[i];
/******/ 						try {
/******/ 							cb(moduleOutdatedDependencies);
/******/ 						} catch (err) {
/******/ 							if (options.onErrored) {
/******/ 								options.onErrored({
/******/ 									type: "accept-errored",
/******/ 									moduleId: moduleId,
/******/ 									dependencyId: moduleOutdatedDependencies[i],
/******/ 									error: err
/******/ 								});
/******/ 							}
/******/ 							if (!options.ignoreErrored) {
/******/ 								if (!error) error = err;
/******/ 							}
/******/ 						}
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// Load self accepted modules
/******/ 		for (i = 0; i < outdatedSelfAcceptedModules.length; i++) {
/******/ 			var item = outdatedSelfAcceptedModules[i];
/******/ 			moduleId = item.module;
/******/ 			hotCurrentParents = [moduleId];
/******/ 			try {
/******/ 				__webpack_require__(moduleId);
/******/ 			} catch (err) {
/******/ 				if (typeof item.errorHandler === "function") {
/******/ 					try {
/******/ 						item.errorHandler(err);
/******/ 					} catch (err2) {
/******/ 						if (options.onErrored) {
/******/ 							options.onErrored({
/******/ 								type: "self-accept-error-handler-errored",
/******/ 								moduleId: moduleId,
/******/ 								error: err2,
/******/ 								originalError: err
/******/ 							});
/******/ 						}
/******/ 						if (!options.ignoreErrored) {
/******/ 							if (!error) error = err2;
/******/ 						}
/******/ 						if (!error) error = err;
/******/ 					}
/******/ 				} else {
/******/ 					if (options.onErrored) {
/******/ 						options.onErrored({
/******/ 							type: "self-accept-errored",
/******/ 							moduleId: moduleId,
/******/ 							error: err
/******/ 						});
/******/ 					}
/******/ 					if (!options.ignoreErrored) {
/******/ 						if (!error) error = err;
/******/ 					}
/******/ 				}
/******/ 			}
/******/ 		}
/******/
/******/ 		// handle errors in accept handlers and self accepted module load
/******/ 		if (error) {
/******/ 			hotSetStatus("fail");
/******/ 			return Promise.reject(error);
/******/ 		}
/******/
/******/ 		hotSetStatus("idle");
/******/ 		return new Promise(function(resolve) {
/******/ 			resolve(outdatedModules);
/******/ 		});
/******/ 	}
/******/
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {},
/******/ 			hot: hotCreateModule(moduleId),
/******/ 			parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),
/******/ 			children: []
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/ 	// __webpack_hash__
/******/ 	__webpack_require__.h = function() { return hotCurrentHash; };
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return hotCreateRequire("./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js")(__webpack_require__.s = "./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js");
/******/ })
/************************************************************************/
/******/ ({

/***/ "./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setPublicPath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPublicPath */ \"./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\");\n/* harmony import */ var _entry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~entry */ \"./src/main.js\");\n/* empty/unused harmony star reexport */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_entry__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS9saWIvY29tbWFuZHMvYnVpbGQvZW50cnktbGliLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdG8tYW1wLy4vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL2VudHJ5LWxpYi5qcz9mYjE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9zZXRQdWJsaWNQYXRoJ1xuaW1wb3J0IG1vZCBmcm9tICd+ZW50cnknXG5leHBvcnQgZGVmYXVsdCBtb2RcbmV4cG9ydCAqIGZyb20gJ35lbnRyeSdcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n");

/***/ }),

/***/ "./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  if (true) {\n    __webpack_require__(/*! current-script-polyfill */ \"./node_modules/current-script-polyfill/currentScript.js\")\n  }\n\n  var i\n  if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n    __webpack_require__.p = i[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ __webpack_exports__[\"default\"] = (null);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS9saWIvY29tbWFuZHMvYnVpbGQvc2V0UHVibGljUGF0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3RvLWFtcC8uL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlL2xpYi9jb21tYW5kcy9idWlsZC9zZXRQdWJsaWNQYXRoLmpzPzFlYjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGltcG9ydGVkIGludG8gbGliL3djIGNsaWVudCBidW5kbGVzLlxuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5FRURfQ1VSUkVOVFNDUklQVF9QT0xZRklMTCkge1xuICAgIHJlcXVpcmUoJ2N1cnJlbnQtc2NyaXB0LXBvbHlmaWxsJylcbiAgfVxuXG4gIHZhciBpXG4gIGlmICgoaSA9IHdpbmRvdy5kb2N1bWVudC5jdXJyZW50U2NyaXB0KSAmJiAoaSA9IGkuc3JjLm1hdGNoKC8oLitcXC8pW14vXStcXC5qcyhcXD8uKik/JC8pKSkge1xuICAgIF9fd2VicGFja19wdWJsaWNfcGF0aF9fID0gaVsxXSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIH1cbn1cblxuLy8gSW5kaWNhdGUgdG8gd2VicGFjayB0aGF0IHRoaXMgZmlsZSBjYW4gYmUgY29uY2F0ZW5hdGVkXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n");

/***/ }),

/***/ "./node_modules/current-script-polyfill/currentScript.js":
/*!***************************************************************!*\
  !*** ./node_modules/current-script-polyfill/currentScript.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n  var currentScript = \"currentScript\",\n      scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n  // If browser needs currentScript polyfill, add get currentScript() to the document object\n  if (!(currentScript in document)) {\n    Object.defineProperty(document, currentScript, {\n      get: function(){\n\n        // IE 6-10 supports script readyState\n        // IE 10+ support stack trace\n        try { throw new Error(); }\n        catch (err) {\n\n          // Find the second match for the \"at\" string to get file src url from stack.\n          // Specifically works with the format of stack traces in IE.\n          var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n          // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n          for(i in scripts){\n            if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n              return scripts[i];\n            }\n          }\n\n          // If no match, return null\n          return null;\n        }\n      }\n    });\n  }\n})(document);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3VycmVudC1zY3JpcHQtcG9seWZpbGwvY3VycmVudFNjcmlwdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3RvLWFtcC8uL25vZGVfbW9kdWxlcy9jdXJyZW50LXNjcmlwdC1wb2x5ZmlsbC9jdXJyZW50U2NyaXB0LmpzP2Y2ZmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZG9jdW1lbnQuY3VycmVudFNjcmlwdCBwb2x5ZmlsbCBieSBBZGFtIE1pbGxlclxuXG4vLyBNSVQgbGljZW5zZVxuXG4oZnVuY3Rpb24oZG9jdW1lbnQpe1xuICB2YXIgY3VycmVudFNjcmlwdCA9IFwiY3VycmVudFNjcmlwdFwiLFxuICAgICAgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsgLy8gTGl2ZSBOb2RlTGlzdCBjb2xsZWN0aW9uXG5cbiAgLy8gSWYgYnJvd3NlciBuZWVkcyBjdXJyZW50U2NyaXB0IHBvbHlmaWxsLCBhZGQgZ2V0IGN1cnJlbnRTY3JpcHQoKSB0byB0aGUgZG9jdW1lbnQgb2JqZWN0XG4gIGlmICghKGN1cnJlbnRTY3JpcHQgaW4gZG9jdW1lbnQpKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCBjdXJyZW50U2NyaXB0LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgLy8gSUUgNi0xMCBzdXBwb3J0cyBzY3JpcHQgcmVhZHlTdGF0ZVxuICAgICAgICAvLyBJRSAxMCsgc3VwcG9ydCBzdGFjayB0cmFjZVxuICAgICAgICB0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG5cbiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWNvbmQgbWF0Y2ggZm9yIHRoZSBcImF0XCIgc3RyaW5nIHRvIGdldCBmaWxlIHNyYyB1cmwgZnJvbSBzdGFjay5cbiAgICAgICAgICAvLyBTcGVjaWZpY2FsbHkgd29ya3Mgd2l0aCB0aGUgZm9ybWF0IG9mIHN0YWNrIHRyYWNlcyBpbiBJRS5cbiAgICAgICAgICB2YXIgaSwgcmVzID0gKCgvLiphdCBbXlxcKF0qXFwoKC4qKTouKzouK1xcKSQvaWcpLmV4ZWMoZXJyLnN0YWNrKSB8fCBbZmFsc2VdKVsxXTtcblxuICAgICAgICAgIC8vIEZvciBhbGwgc2NyaXB0cyBvbiB0aGUgcGFnZSwgaWYgc3JjIG1hdGNoZXMgb3IgaWYgcmVhZHkgc3RhdGUgaXMgaW50ZXJhY3RpdmUsIHJldHVybiB0aGUgc2NyaXB0IHRhZ1xuICAgICAgICAgIGZvcihpIGluIHNjcmlwdHMpe1xuICAgICAgICAgICAgaWYoc2NyaXB0c1tpXS5zcmMgPT0gcmVzIHx8IHNjcmlwdHNbaV0ucmVhZHlTdGF0ZSA9PSBcImludGVyYWN0aXZlXCIpe1xuICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59KShkb2N1bWVudCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/current-script-polyfill/currentScript.js\n");

/***/ }),

/***/ "./src/errors.js":
/*!***********************!*\
  !*** ./src/errors.js ***!
  \***********************/
/*! exports provided: NoBody, HtmlNotString, AmpImgAttrs, NotObjError, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoBody\", function() { return NoBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HtmlNotString\", function() { return HtmlNotString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AmpImgAttrs\", function() { return AmpImgAttrs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NotObjError\", function() { return NotObjError; });\n/* harmony import */ var es6_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! es6-error */ \"es6-error\");\n/* harmony import */ var es6_error__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(es6_error__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var consola__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! consola */ \"consola\");\n/* harmony import */ var consola__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(consola__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst NoBody = class extends es6_error__WEBPACK_IMPORTED_MODULE_0___default.a {\n  constructor(message = 'Error: no body tags found in html string') {\n    super(message);\n    consola__WEBPACK_IMPORTED_MODULE_1___default.a.error(message, this);\n  }\n\n};\nconst HtmlNotString = class extends es6_error__WEBPACK_IMPORTED_MODULE_0___default.a {\n  constructor(message = 'Error: html provided is not a string') {\n    super(message);\n    consola__WEBPACK_IMPORTED_MODULE_1___default.a.error(message, this);\n  }\n\n};\nconst AmpImgAttrs = class extends es6_error__WEBPACK_IMPORTED_MODULE_0___default.a {\n  constructor(l1, l2, message = '') {\n    message = `Error: Additional amp-img attributes array not the legth of the loaded images array /n addlAttribsArr:${l1} != ${l2}`;\n    super(message);\n    consola__WEBPACK_IMPORTED_MODULE_1___default.a.error(message, this);\n  }\n\n};\nconst NotObjError = class extends es6_error__WEBPACK_IMPORTED_MODULE_0___default.a {\n  constructor(message = 'Error: Additional amp-img attributes contains a non object') {\n    super(message);\n    consola__WEBPACK_IMPORTED_MODULE_1___default.a.error(message, this);\n  }\n\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  NoBody,\n  HtmlNotString,\n  AmpImgAttrs,\n  NotObjError\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZXJyb3JzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdG8tYW1wLy4vc3JjL2Vycm9ycy5qcz9jOGNiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHRlbmRhYmxlRXJyb3IgZnJvbSAnZXM2LWVycm9yJ1xuaW1wb3J0IGNvbnNvbGEgZnJvbSAnY29uc29sYSdcblxuZXhwb3J0IGNvbnN0IE5vQm9keSA9IGNsYXNzIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9ye1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSA9ICdFcnJvcjogbm8gYm9keSB0YWdzIGZvdW5kIGluIGh0bWwgc3RyaW5nJyl7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBjb25zb2xhLmVycm9yKG1lc3NhZ2UsIHRoaXMpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEh0bWxOb3RTdHJpbmcgPSBjbGFzcyBleHRlbmRzIEV4dGVuZGFibGVFcnJvcntcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UgPSAnRXJyb3I6IGh0bWwgcHJvdmlkZWQgaXMgbm90IGEgc3RyaW5nJyl7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICBjb25zb2xhLmVycm9yKG1lc3NhZ2UsIHRoaXMpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFtcEltZ0F0dHJzID0gY2xhc3MgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3J7XG4gIGNvbnN0cnVjdG9yIChsMSwgbDIsIG1lc3NhZ2UgPSAnJyl7XG4gICAgbWVzc2FnZSA9IGBFcnJvcjogQWRkaXRpb25hbCBhbXAtaW1nIGF0dHJpYnV0ZXMgYXJyYXkgbm90IHRoZSBsZWd0aCBvZiB0aGUgbG9hZGVkIGltYWdlcyBhcnJheSAvbiBhZGRsQXR0cmlic0Fycjoke2wxfSAhPSAke2wyfWBcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIGNvbnNvbGEuZXJyb3IobWVzc2FnZSwgdGhpcylcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTm90T2JqRXJyb3IgPSBjbGFzcyBleHRlbmRzIEV4dGVuZGFibGVFcnJvcntcbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UgPSAnRXJyb3I6IEFkZGl0aW9uYWwgYW1wLWltZyBhdHRyaWJ1dGVzIGNvbnRhaW5zIGEgbm9uIG9iamVjdCcpe1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgY29uc29sYS5lcnJvcihtZXNzYWdlLCB0aGlzKVxuICB9XG59XG5leHBvcnQgZGVmYXVsdCB7IE5vQm9keSwgSHRtbE5vdFN0cmluZywgQW1wSW1nQXR0cnMsIE5vdE9iakVycm9yIH1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/errors.js\n");

/***/ }),

/***/ "./src/filters.js":
/*!************************!*\
  !*** ./src/filters.js ***!
  \************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst isScriptJson = attribs => attribs && attribs.type && attribs.type === 'application/json';\n\nconst isEmptyTag = text => !text.trim();\n\nconst excludeScripts = frame => {\n  const {\n    tag,\n    attribs,\n    text\n  } = frame;\n  const isScript = tag === 'script';\n  const isJson = isScriptJson(attribs);\n  const isEmpty = isEmptyTag(text);\n  return isScript && (!isJson || isEmpty);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  isEmptyTag,\n  excludeScripts,\n  isScriptJson\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZmlsdGVycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3RvLWFtcC8uL3NyYy9maWx0ZXJzLmpzPzk4ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTY3JpcHRKc29uID0gKGF0dHJpYnMpID0+IChhdHRyaWJzICYmIGF0dHJpYnMudHlwZSAmJiBhdHRyaWJzLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJylcblxuXG5jb25zdCBpc0VtcHR5VGFnID0gKHRleHQpID0+ICF0ZXh0LnRyaW0oKVxuXG5jb25zdCBleGNsdWRlU2NyaXB0cyA9IChmcmFtZSkgPT4ge1xuICBjb25zdCB7IHRhZywgYXR0cmlicywgdGV4dCB9ID0gZnJhbWVcbiAgY29uc3QgaXNTY3JpcHQgPSAodGFnID09PSAnc2NyaXB0JylcbiAgY29uc3QgaXNKc29uICAgPSBpc1NjcmlwdEpzb24oYXR0cmlicylcbiAgY29uc3QgaXNFbXB0eSAgPSBpc0VtcHR5VGFnKHRleHQpXG5cbiAgcmV0dXJuIGlzU2NyaXB0ICYmICghaXNKc29uIHx8IGlzRW1wdHkpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHsgaXNFbXB0eVRhZywgZXhjbHVkZVNjcmlwdHMsIGlzU2NyaXB0SnNvbiB9XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/filters.js\n");

/***/ }),

/***/ "./src/head/index.js":
/*!***************************!*\
  !*** ./src/head/index.js ***!
  \***************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Head; });\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors */ \"./src/errors.js\");\n/* harmony import */ var _filters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../filters */ \"./src/filters.js\");\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! sanitize-html */ \"sanitize-html\");\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst SCOPE = 'DEFAULT';\nconst ampBoilerplate = '<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>';\nclass Head {\n  static toAMP(html, components, scope = SCOPE) {\n    Head.oneStyle = '';\n    Head.componentsOnPage = components.filter(name => ~html.indexOf(name));\n    if (~html.indexOf('amp-fx')) Head.componentsOnPage.push('amp-fx-collection');\n    html = cleanHead(html, scope);\n    html = addAmpStyles(html);\n    html = addAmpScripts(html, Head.componentsOnPage);\n    return html;\n  }\n\n}\nHead.componentsOnPage = [];\nHead.oneStyle = '';\n\nfunction cleanHead(html) {\n  html = html.replace('<head>', '<head>\\n');\n  let head = extractHead(html);\n  if (!head) throw new _errors__WEBPACK_IMPORTED_MODULE_0__[\"default\"].NoBody();\n  head = sanitize_html__WEBPACK_IMPORTED_MODULE_2___default()(head, sanitizeConfig());\n  return replaceHead(html, head);\n} // remove existing js scripts and add amp scripts\n\n\nfunction addAmpScripts(html, components = Head.components) {\n  const scriptString = `<script async src=\"https://cdn.ampproject.org/${Head.version}.js\"></script> `; // Add AMP script before </head>\n\n  return html.replace('</head>', addComponentScripts(scriptString, components) + '\\n</head>');\n}\n\nfunction addComponentScripts(scriptString, components = Head.components) {\n  components.forEach(name => {\n    scriptString += `<script custom-element=\"${name}\" src=\"https://cdn.ampproject.org/${Head.version}/${name}-${Head.componentVersion}.js\" async=\"\"></script> `;\n  });\n  return scriptString;\n}\n\nfunction addAmpStyles(html) {\n  Head.oneStyle = Head.oneStyle.replace(/!important/gi, '');\n  html = html.replace('</head>', `\\n<style amp-custom >${Head.oneStyle}</style>\\n` + '\\n</head>');\n  return html.replace('</head>', ampBoilerplate + '\\n</head>');\n}\n\nfunction extractHead(html) {\n  if (!html) throw new _errors__WEBPACK_IMPORTED_MODULE_0__[\"default\"].HtmlNotString();\n  return (html.match(/<head[^>]*>[\\s\\S]*<\\/head>/gi) || [])[0];\n}\n\nfunction replaceHead(html, newHead) {\n  html = html.replace(/<head[^>]*>[\\s\\S]*<\\/head>/gi, '');\n  html = html.replace('<body>', `${newHead}\\n\\n<body>\\n`);\n  return html;\n}\n\nfunction sanitizeConfig() {\n  return {\n    allowedTags: ['head', 'title', 'meta', 'link', 'base', 'style', 'script'],\n    allowedAttributes: {\n      head: [],\n      title: [],\n      meta: ['name', 'content', 'charset', 'http-equiv'],\n      link: ['href', 'rel'],\n      base: ['href'],\n      style: ['amp-custom', 'amp-boilerplate']\n    },\n    selfClosing: [],\n    exclusiveFilter\n  };\n}\n\nfunction exclusiveFilter(frame) {\n  if (frame.tag === 'style') return styleFilter(frame);\n  return _filters__WEBPACK_IMPORTED_MODULE_1__[\"default\"].excludeScripts(frame);\n}\n\nfunction styleFilter(frame) {\n  let styleString = frame.text.replace(/\\r?\\n|\\r/g, '');\n  styleString = styleString.replace(/{\\s*/g, '{');\n  styleString = styleString.replace(/\\s*}/g, '}');\n  styleString = styleString.replace(/:\\s*/g, ':');\n  styleString = styleString.replace(/;\\s*/g, ';');\n  styleString = styleString.replace(/\\s*;/g, ';');\n  Head.oneStyle += styleString;\n  return true;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaGVhZC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3RvLWFtcC8uL3NyYy9oZWFkL2luZGV4LmpzPzdlZTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVycm9ycyAgICAgICBmcm9tICcuLi9lcnJvcnMnXG5pbXBvcnQgZmlsdGVycyAgICAgIGZyb20gJy4uL2ZpbHRlcnMnXG5pbXBvcnQgc2FuaXRpemVIdG1sIGZyb20gJ3Nhbml0aXplLWh0bWwnXG5cblxuY29uc3QgU0NPUEUgPSAnREVGQVVMVCdcbmNvbnN0IGFtcEJvaWxlcnBsYXRlID0gJzxzdHlsZSBhbXAtYm9pbGVycGxhdGU+Ym9keXstd2Via2l0LWFuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RoOy1tb3otYW5pbWF0aW9uOi1hbXAtc3RhcnQgOHMgc3RlcHMoMSxlbmQpIDBzIDEgbm9ybWFsIGJvdGg7LW1zLWFuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RoO2FuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RofUAtd2Via2l0LWtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1ALW1vei1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QC1tcy1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QC1vLWtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1Aa2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fTwvc3R5bGU+PG5vc2NyaXB0PjxzdHlsZSBhbXAtYm9pbGVycGxhdGU+Ym9keXstd2Via2l0LWFuaW1hdGlvbjpub25lOy1tb3otYW5pbWF0aW9uOm5vbmU7LW1zLWFuaW1hdGlvbjpub25lO2FuaW1hdGlvbjpub25lfTwvc3R5bGU+PC9ub3NjcmlwdD4nXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhlYWR7XG4gIHN0YXRpYyB0b0FNUCAoaHRtbCwgY29tcG9uZW50cywgc2NvcGUgPSBTQ09QRSl7XG4gICAgSGVhZC5vbmVTdHlsZSA9ICcnXG5cbiAgICBIZWFkLmNvbXBvbmVudHNPblBhZ2UgPSBjb21wb25lbnRzLmZpbHRlcihuYW1lID0+IH5odG1sLmluZGV4T2YobmFtZSkpXG5cbiAgICBpZiAofmh0bWwuaW5kZXhPZignYW1wLWZ4JykpXG4gICAgICBIZWFkLmNvbXBvbmVudHNPblBhZ2UucHVzaCgnYW1wLWZ4LWNvbGxlY3Rpb24nKVxuXG4gICAgaHRtbCA9IGNsZWFuSGVhZChodG1sLCBzY29wZSlcbiAgICBodG1sID0gYWRkQW1wU3R5bGVzKGh0bWwpXG4gICAgaHRtbCA9IGFkZEFtcFNjcmlwdHMoaHRtbCwgSGVhZC5jb21wb25lbnRzT25QYWdlKVxuXG4gICAgcmV0dXJuIGh0bWxcbiAgfVxufVxuXG5IZWFkLmNvbXBvbmVudHNPblBhZ2UgPSBbXVxuSGVhZC5vbmVTdHlsZSA9ICcnXG5cbmZ1bmN0aW9uIGNsZWFuSGVhZCAoaHRtbCl7XG4gIGh0bWwgPSBodG1sLnJlcGxhY2UoJzxoZWFkPicsICc8aGVhZD5cXG4nKVxuICBsZXQgaGVhZCA9IGV4dHJhY3RIZWFkKGh0bWwpXG5cbiAgaWYgKCFoZWFkKSB0aHJvdyBuZXcgRXJyb3JzLk5vQm9keSgpXG5cbiAgaGVhZCA9IHNhbml0aXplSHRtbChoZWFkLCBzYW5pdGl6ZUNvbmZpZygpKVxuXG4gIHJldHVybiByZXBsYWNlSGVhZChodG1sLCBoZWFkKVxufVxuXG4vLyByZW1vdmUgZXhpc3RpbmcganMgc2NyaXB0cyBhbmQgYWRkIGFtcCBzY3JpcHRzXG5mdW5jdGlvbiBhZGRBbXBTY3JpcHRzIChodG1sLCBjb21wb25lbnRzID0gSGVhZC5jb21wb25lbnRzKXtcbiAgY29uc3Qgc2NyaXB0U3RyaW5nID0gYDxzY3JpcHQgYXN5bmMgc3JjPVwiaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvJHtIZWFkLnZlcnNpb259LmpzXCI+PC9zY3JpcHQ+IGBcblxuICAvLyBBZGQgQU1QIHNjcmlwdCBiZWZvcmUgPC9oZWFkPlxuICByZXR1cm4gaHRtbC5yZXBsYWNlKCc8L2hlYWQ+JywgYWRkQ29tcG9uZW50U2NyaXB0cyhzY3JpcHRTdHJpbmcsIGNvbXBvbmVudHMpICsgJ1xcbjwvaGVhZD4nKVxufVxuXG5mdW5jdGlvbiBhZGRDb21wb25lbnRTY3JpcHRzIChzY3JpcHRTdHJpbmcsIGNvbXBvbmVudHMgPSBIZWFkLmNvbXBvbmVudHMpe1xuICBjb21wb25lbnRzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgc2NyaXB0U3RyaW5nICs9IGA8c2NyaXB0IGN1c3RvbS1lbGVtZW50PVwiJHtuYW1lfVwiIHNyYz1cImh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnLyR7SGVhZC52ZXJzaW9ufS8ke25hbWV9LSR7SGVhZC5jb21wb25lbnRWZXJzaW9ufS5qc1wiIGFzeW5jPVwiXCI+PC9zY3JpcHQ+IGBcbiAgfSlcbiAgcmV0dXJuIHNjcmlwdFN0cmluZ1xufVxuXG5mdW5jdGlvbiBhZGRBbXBTdHlsZXMgKGh0bWwpe1xuICBIZWFkLm9uZVN0eWxlID0gSGVhZC5vbmVTdHlsZS5yZXBsYWNlKC8haW1wb3J0YW50L2dpLCAnJylcbiAgaHRtbCA9IGh0bWwucmVwbGFjZSgnPC9oZWFkPicsIGBcXG48c3R5bGUgYW1wLWN1c3RvbSA+JHtIZWFkLm9uZVN0eWxlfTwvc3R5bGU+XFxuYCArICdcXG48L2hlYWQ+JylcblxuICByZXR1cm4gaHRtbC5yZXBsYWNlKCc8L2hlYWQ+JywgYW1wQm9pbGVycGxhdGUgKyAnXFxuPC9oZWFkPicpXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RIZWFkIChodG1sKXtcbiAgaWYgKCFodG1sKSB0aHJvdyBuZXcgRXJyb3JzLkh0bWxOb3RTdHJpbmcoKVxuICByZXR1cm4gKGh0bWwubWF0Y2goLzxoZWFkW14+XSo+W1xcc1xcU10qPFxcL2hlYWQ+L2dpKSB8fCBbXSlbMF1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZUhlYWQgKGh0bWwsIG5ld0hlYWQpe1xuICBodG1sID0gaHRtbC5yZXBsYWNlKC88aGVhZFtePl0qPltcXHNcXFNdKjxcXC9oZWFkPi9naSwgJycpXG4gIGh0bWwgPSBodG1sLnJlcGxhY2UoJzxib2R5PicsIGAke25ld0hlYWR9XFxuXFxuPGJvZHk+XFxuYClcbiAgcmV0dXJuIGh0bWxcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVDb25maWcgKCl7XG4gIHJldHVybiB7XG4gICAgYWxsb3dlZFRhZ3MgICAgICA6IFsgJ2hlYWQnLCAndGl0bGUnLCAnbWV0YScsICdsaW5rJywgJ2Jhc2UnLCAnc3R5bGUnLCAnc2NyaXB0JyBdLFxuICAgIGFsbG93ZWRBdHRyaWJ1dGVzOiB7XG4gICAgICBoZWFkIDogW10sXG4gICAgICB0aXRsZTogW10sXG4gICAgICBtZXRhIDogWyAnbmFtZScsICdjb250ZW50JywgJ2NoYXJzZXQnLCAnaHR0cC1lcXVpdicgXSxcbiAgICAgIGxpbmsgOiBbICdocmVmJywgJ3JlbCcgXSxcbiAgICAgIGJhc2UgOiBbICdocmVmJyBdLFxuICAgICAgc3R5bGU6IFsgJ2FtcC1jdXN0b20nLCAnYW1wLWJvaWxlcnBsYXRlJyBdXG4gICAgfSxcbiAgICBzZWxmQ2xvc2luZzogWyBdLFxuICAgIGV4Y2x1c2l2ZUZpbHRlclxuICB9XG59XG5cbmZ1bmN0aW9uIGV4Y2x1c2l2ZUZpbHRlciAoZnJhbWUpe1xuICBpZiAoZnJhbWUudGFnID09PSAnc3R5bGUnKVxuICAgIHJldHVybiBzdHlsZUZpbHRlcihmcmFtZSlcbiAgcmV0dXJuIGZpbHRlcnMuZXhjbHVkZVNjcmlwdHMoZnJhbWUpXG59XG5cbmZ1bmN0aW9uIHN0eWxlRmlsdGVyIChmcmFtZSl7XG4gIGxldCBzdHlsZVN0cmluZyA9IGZyYW1lLnRleHQucmVwbGFjZSgvXFxyP1xcbnxcXHIvZywgJycpXG5cbiAgc3R5bGVTdHJpbmcgPSBzdHlsZVN0cmluZy5yZXBsYWNlKC97XFxzKi9nLCAneycpXG4gIHN0eWxlU3RyaW5nID0gc3R5bGVTdHJpbmcucmVwbGFjZSgvXFxzKn0vZywgJ30nKVxuICBzdHlsZVN0cmluZyA9IHN0eWxlU3RyaW5nLnJlcGxhY2UoLzpcXHMqL2csICc6JylcbiAgc3R5bGVTdHJpbmcgPSBzdHlsZVN0cmluZy5yZXBsYWNlKC87XFxzKi9nLCAnOycpXG4gIHN0eWxlU3RyaW5nID0gc3R5bGVTdHJpbmcucmVwbGFjZSgvXFxzKjsvZywgJzsnKVxuICBIZWFkLm9uZVN0eWxlICs9IHN0eWxlU3RyaW5nXG4gIHJldHVybiB0cnVlXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBZkE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFYQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/head/index.js\n");

/***/ }),

/***/ "./src/main.js":
/*!*********************!*\
  !*** ./src/main.js ***!
  \*********************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ToAMP; });\n/* harmony import */ var cherio__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cherio */ \"cherio\");\n/* harmony import */ var cherio__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cherio__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var consola__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! consola */ \"consola\");\n/* harmony import */ var consola__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(consola__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var isobject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! isobject */ \"isobject\");\n/* harmony import */ var isobject__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(isobject__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./errors */ \"./src/errors.js\");\n/* harmony import */ var _head__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./head */ \"./src/head/index.js\");\n/* harmony import */ var _filters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./filters */ \"./src/filters.js\");\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! sanitize-html */ \"sanitize-html\");\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\nconst SCOPE = 'AMP';\nconst reqImgAttribs = ['src', 'width', 'height', 'layout'];\nconst cheerioOptions = {\n  cwd: '',\n  round: true,\n  normalizeWhitespace: true,\n  xmlMode: false\n};\nconsola__WEBPACK_IMPORTED_MODULE_1___default.a.withScope('ToAMP');\nclass ToAMP {\n  static domToAMPHtml(html = false, addlAtts = false, scope = SCOPE) {\n    if (html) convert(html, addlAtts, scope);\n    return ToAMP.html[scope].$('body').html();\n  }\n\n  static toHTML(scope = SCOPE) {\n    return ToAMP.html[scope].$('body').html();\n  }\n\n  static bodyToAMPHtml(html = false, addlAtts = false, scope = SCOPE) {\n    let body = extractBody(html);\n    if (!body) throw new _errors__WEBPACK_IMPORTED_MODULE_3__[\"default\"].NoBody();\n    body = ToAMP.domToAMPHtml(body, addlAtts, scope);\n    return replaceBody(html, body);\n  }\n\n  static loadHtml(html, setDefault = true, scope = SCOPE) {\n    ToAMP.html[scope] = {\n      $: cherio__WEBPACK_IMPORTED_MODULE_0___default.a.load(html, cheerioOptions)\n    };\n    if (setDefault) setParseingDefaults(scope);\n  }\n\n  static loadImages(setDefault = true, scope = SCOPE) {\n    ToAMP.html[scope].images = {\n      elements: ToAMP.html[scope].$('img')\n    };\n    linkAttribs(scope);\n    if (setDefault) setImageDefaults(scope);\n  }\n\n  static convertImages(addlAtts = false, scope = SCOPE) {\n    isAddlAttsArrValid(addlAtts);\n    const imgElements = ToAMP.html[scope].images.elements;\n    const imgAttribs = ToAMP.html[scope].images.attribs;\n\n    for (let i = 0; i < imgElements.length; i++) {\n      const el = imgElements[i];\n      const attribs = imgAttribs[i];\n      const addlAttribs = addlAtts[i];\n      ToAMP.imgToAmpImg({\n        el,\n        attribs\n      }, addlAttribs);\n    }\n  }\n\n  static imgToAmpImg({\n    el,\n    attribs\n  }, addlAttribs) {\n    const ampAttribs = Object.assign(attribs, addlAttribs || {});\n    if (!isAmpAttrsValid(ampAttribs)) ToAMP.$(el).remove();\n    const attrStr = buildAttrString(ampAttribs);\n    ToAMP.$(`<amp-img ${attrStr}></amp-img>`).insertAfter(el);\n    ToAMP.$(el).remove();\n  }\n\n  static htmlDocToAmpHtmlDoc(html, components = ToAMP.components, processBody = false) {\n    const componentsOnPage = components.filter(name => ~html.indexOf(name));\n    if (~html.indexOf('amp-fx')) componentsOnPage.push('amp-fx-collection');\n    html = html.replace('<html', '<html ⚡');\n    html = ToAMP.clean(html);\n\n    if (processBody) {\n      html = ToAMP.bodyToAMPHtml(html, false, 'FULL_PAGE');\n      html = ToAMP.cleanBody(html, componentsOnPage, 'FULL_PAGE');\n    } //\n\n\n    html = _head__WEBPACK_IMPORTED_MODULE_4__[\"default\"].toAMP(html, components);\n    return html;\n  }\n\n  static setDefaultOpts(options = {}) {\n    /*eslint-disable */\n    ToAMP.version = ToAMP.Head.version = options.version || 'v0';\n    ToAMP.componentVersion = ToAMP.Head.componentVersion = options.componentVersion || '0.1';\n    ToAMP.components = ToAMP.Head.components = options.components || [];\n    /* eslint-enable */\n\n    ToAMP.imgLayout = options.imgLayout || 'responsive';\n    ToAMP.svgLayout = options.svgLayout || 'intrinsic';\n    ToAMP.html = {};\n  }\n\n  static clean(html) {\n    if (~html.indexOf('<!doctype html>') > -1) html = '<!doctype html>' + html; // if (!html.match(/<meta charset=\"UTF-8\">/i))\n    //   html = html.replace('<head>', '<head>\\n<meta charset=\"UTF-8\"></meta>\\n')\n\n    return html;\n  }\n\n  static cleanBody(html, componentsOnPage = []) {\n    let body = extractBody(html);\n    if (!body) throw new _errors__WEBPACK_IMPORTED_MODULE_3__[\"default\"].NoBody();\n    body = sanitize_html__WEBPACK_IMPORTED_MODULE_6___default()(body, bodySanitizeConfig(componentsOnPage));\n    return replaceBody(html, body);\n  }\n\n  static domClean(scope = SCOPE) {\n    const ampTags = ToAMP.components.concat('amp-img');\n    ampTags.forEach(tag => {\n      const tagElements = ToAMP.html[scope].$(tag);\n      removeVDatas(tagElements);\n    });\n  }\n\n  static cleanHead(html, componentsOnPage = []) {\n    let body = extractBody(html);\n    if (!body) throw new _errors__WEBPACK_IMPORTED_MODULE_3__[\"default\"].NoBody();\n    body = sanitize_html__WEBPACK_IMPORTED_MODULE_6___default()(body, bodySanitizeConfig(componentsOnPage));\n    return replaceBody(html, body);\n  }\n\n  static destroy() {\n    ToAMP.html = {};\n  }\n\n}\nToAMP.Head = _head__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\nToAMP.setDefaultOpts();\n\nfunction removeVDatas(tags) {\n  if (!tags.length) return;\n  const dataV = new RegExp(/(data-v-)\\w+/g);\n\n  for (let i = 0; i < tags.length; i++) for (const key in tags[i].attribs) if (dataV.test(key)) delete tags[i].attribs[key];\n}\n\nfunction isAddlAttsArrValid(addlAttribsArr = []) {\n  if (!addlAttribsArr) return;\n  if (addlAttribsArr.length != ToAMP.imgAttribs.length) throw new _errors__WEBPACK_IMPORTED_MODULE_3__[\"default\"].AmpImgAttrs(addlAttribsArr.length, ToAMP.imgAttribs.length);\n\n  for (let i = 0; i < addlAttribsArr.length; i++) if (!isobject__WEBPACK_IMPORTED_MODULE_2___default()(addlAttribsArr[i])) _errors__WEBPACK_IMPORTED_MODULE_3__[\"default\"].NotObjError();\n}\n\nfunction isAmpAttrsValid(attribs) {\n  let isValid = 0;\n\n  for (const name in attribs) if (reqImgAttribs.includes(name)) isValid++;\n\n  return isValid == 3;\n}\n\nfunction setParseingDefaults(scope = SCOPE) {\n  ToAMP.$ = ToAMP.html[scope].$;\n}\n\nfunction setImageDefaults(scope = SCOPE) {\n  ToAMP.images = ToAMP.html[scope].images;\n  ToAMP.imageElms = ToAMP.html[scope].images.elements || [];\n  ToAMP.imgAttribs = ToAMP.html[scope].images.attribs || [];\n  ToAMP.imgSrcs = ToAMP.html[scope].images.srcs || [];\n}\n\nfunction linkAttribs(scope = SCOPE) {\n  const imgElements = ToAMP.html[scope].images.elements;\n  const imgAttribs = [];\n  const imgSrcs = [];\n\n  for (let i = 0; i < imgElements.length; i++) {\n    const imgElm = imgElements[i];\n    imgAttribs[i] = imgElm.attribs;\n    imgSrcs[i] = imgAttribs[i].src;\n  }\n\n  ToAMP.html[scope].images.attribs = imgAttribs;\n  ToAMP.html[scope].images.srcs = imgSrcs;\n}\n\nfunction buildAttrString(attribs) {\n  addImgLayout(attribs);\n  let attrStr = '';\n\n  for (const name in attribs) attrStr += `${name}=\"${attribs[name]}\" `;\n\n  return attrStr;\n}\n\nfunction getImgLayout(imageFormat) {\n  if (imageFormat === 'svg') return ToAMP.svgLayout;\n  return ToAMP.imgLayout;\n}\n\nfunction addImgLayout(attribs) {\n  if (!attribs.layout) {\n    const format = ~attribs.src.indexOf('.svg') ? 'svg' : false;\n    attribs.layout = getImgLayout(format);\n  }\n}\n\nfunction convert(html = false, addlAtts = false, scope = SCOPE) {\n  ToAMP.loadHtml(html, true, scope);\n  ToAMP.loadImages(true, scope);\n  ToAMP.convertImages(addlAtts, scope);\n  ToAMP.domClean(scope);\n}\n\nfunction extractBody(html) {\n  if (!html) throw new _errors__WEBPACK_IMPORTED_MODULE_3__[\"default\"].HtmlNotString();\n  return (html.match(/<body[^>]*>[\\s\\S]*<\\/body>/gi) || [])[0];\n}\n\nfunction replaceBody(html, newBody) {\n  html = html.replace(/<body[^>]*>[\\s\\S]*<\\/body>/gi, '');\n  html = html.replace('</head>', `\\n</head>\\n <body>\\n${newBody}\\n</body>\\n`);\n  return html;\n}\n\nfunction bodySanitizeConfig(componentsOnPage = []) {\n  return {\n    allowedTags: sanitize_html__WEBPACK_IMPORTED_MODULE_6___default.a.defaults.allowedTags.concat(['amp-menu-container', 'header', 'nuxt-link', 'amp-accordion', 'amp-img', 'amp-sidebar', 'h2', 'h1', 'section', 'span', 'header', 'nav', 'footer', 'center', 'b', 'main', 'figure', 'amp-fx', 'svg', 'defs', 'symbol', 'title', 'path', 'use', 'linearGradient', 'rect', 'polygon', 'amp-youtube', 'script'].concat(componentsOnPage)),\n    allowedAttributes: {\n      '*': ['style', 'class', 'layout', 'alt', 'width', 'height', 'aria*', 'data-*', 'role', 'on', 'hidden', 'id', 'side', 'tabindex', 'media', 'type', 'controls', 'loop'],\n      a: ['href', 'name', 'target', 'rel', 'aria*'],\n      img: ['src', 'alt', 'width', 'height', 'layout', 'srcset'],\n      'amp-img': ['src', 'alt', 'width', 'height', 'layout', 'srcset', 'amp-fx'],\n      'amp-install-serviceworker': ['src', 'data-iframe-src', 'data-scope', 'layout', 'data-no-service-worker-fallback-url-match', 'data-no-service-worker-fallback-shell-url'],\n      'amp-*': ['*'],\n      svg: ['*'],\n      symbol: ['*'],\n      use: ['*'],\n      path: ['*']\n    },\n    // allowedAttributes: false,\n    selfClosing: ['img', 'amp-img', 'br', 'hr', 'area', 'use'],\n    // URL schemes we permit\n    allowedSchemes: ['http', 'https', 'ftp', 'mailto', 'data'],\n    allowedSchemesAppliedToAttributes: ['href', 'src', 'cite'],\n    allowProtocolRelative: true,\n    // nonTextTags: [],\n    transformTags: {\n      iframe: iframeTransform\n    },\n    exclusiveFilter: exclude\n  };\n}\n\nfunction exclude(frame) {\n  return _filters__WEBPACK_IMPORTED_MODULE_5__[\"default\"].excludeScripts(frame);\n}\n\nfunction iframeTransform(tagName, attribs) {\n  if (attribs.src.includes('https://www.youtube.com/embed/')) return ampYoutube(attribs);\n  return {};\n}\n\nfunction ampYoutube(attribs) {\n  if (!ToAMP.Head.componentsOnPage.includes('amp-youtube')) ToAMP.Head.componentsOnPage.push('amp-youtube');\n  return {\n    tagName: 'amp-youtube',\n    attribs: {\n      width: '480',\n      height: '270',\n      layout: 'responsive',\n      'data-videoid': attribs.src.replace('https://www.youtube.com/embed/', '')\n    }\n  };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3RvLWFtcC8uL3NyYy9tYWluLmpzPzU2ZDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoZWVyaW8gICAgICBmcm9tICdjaGVyaW8nXG5pbXBvcnQgY29uc29sYSAgICAgIGZyb20gJ2NvbnNvbGEnXG5pbXBvcnQgaXNPYmplY3QgICAgIGZyb20gJ2lzb2JqZWN0J1xuaW1wb3J0IEVycm9ycyAgICAgICBmcm9tICcuL2Vycm9ycydcbmltcG9ydCBIZWFkICAgICAgICAgZnJvbSAnLi9oZWFkJ1xuaW1wb3J0IGZpbHRlcnMgICAgICBmcm9tICcuL2ZpbHRlcnMnXG5pbXBvcnQgc2FuaXRpemVIdG1sIGZyb20gJ3Nhbml0aXplLWh0bWwnXG5cbmNvbnN0IFNDT1BFICAgICAgICAgID0gJ0FNUCdcbmNvbnN0IHJlcUltZ0F0dHJpYnMgID0gWyAnc3JjJywgJ3dpZHRoJywgJ2hlaWdodCcsICdsYXlvdXQnIF1cbmNvbnN0IGNoZWVyaW9PcHRpb25zID0geyAgY3dkICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVdoaXRlc3BhY2U6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhtbE1vZGUgICAgICAgICAgICA6IGZhbHNlIH1cblxuY29uc29sYS53aXRoU2NvcGUoJ1RvQU1QJylcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9BTVB7XG4gIHN0YXRpYyBkb21Ub0FNUEh0bWwgKGh0bWwgPSBmYWxzZSwgYWRkbEF0dHMgPSBmYWxzZSwgc2NvcGUgPSBTQ09QRSl7XG4gICAgaWYgKGh0bWwpIGNvbnZlcnQoaHRtbCwgYWRkbEF0dHMsIHNjb3BlKVxuXG4gICAgcmV0dXJuIFRvQU1QLmh0bWxbc2NvcGVdLiQoJ2JvZHknKS5odG1sKClcbiAgfVxuXG4gIHN0YXRpYyB0b0hUTUwgKHNjb3BlID0gU0NPUEUpe1xuICAgIHJldHVybiBUb0FNUC5odG1sW3Njb3BlXS4kKCdib2R5JykuaHRtbCgpXG4gIH1cblxuICBzdGF0aWMgYm9keVRvQU1QSHRtbCAoaHRtbCA9IGZhbHNlLCBhZGRsQXR0cyA9IGZhbHNlLCBzY29wZSA9IFNDT1BFKXtcbiAgICBsZXQgYm9keSA9IGV4dHJhY3RCb2R5KGh0bWwpXG5cbiAgICBpZiAoIWJvZHkpIHRocm93IG5ldyBFcnJvcnMuTm9Cb2R5KClcblxuICAgIGJvZHkgPSBUb0FNUC5kb21Ub0FNUEh0bWwoYm9keSwgYWRkbEF0dHMsIHNjb3BlKVxuXG4gICAgcmV0dXJuIHJlcGxhY2VCb2R5KGh0bWwsIGJvZHkpXG4gIH1cblxuICBzdGF0aWMgbG9hZEh0bWwgKGh0bWwsIHNldERlZmF1bHQgPSB0cnVlLCBzY29wZSA9IFNDT1BFKXtcbiAgICBUb0FNUC5odG1sW3Njb3BlXSA9IHsgJDogY2hlZXJpby5sb2FkKGh0bWwsIGNoZWVyaW9PcHRpb25zKSB9XG5cbiAgICBpZiAoc2V0RGVmYXVsdCkgc2V0UGFyc2VpbmdEZWZhdWx0cyhzY29wZSlcbiAgfVxuXG4gIHN0YXRpYyBsb2FkSW1hZ2VzIChzZXREZWZhdWx0ID0gdHJ1ZSwgc2NvcGUgPSBTQ09QRSl7XG4gICAgVG9BTVAuaHRtbFtzY29wZV0uaW1hZ2VzID0geyBlbGVtZW50czogVG9BTVAuaHRtbFtzY29wZV0uJCgnaW1nJykgfVxuICAgIGxpbmtBdHRyaWJzKHNjb3BlKVxuICAgIGlmIChzZXREZWZhdWx0KSBzZXRJbWFnZURlZmF1bHRzKHNjb3BlKVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRJbWFnZXMgKGFkZGxBdHRzID0gZmFsc2UsIHNjb3BlID0gU0NPUEUpe1xuICAgIGlzQWRkbEF0dHNBcnJWYWxpZChhZGRsQXR0cylcbiAgICBjb25zdCBpbWdFbGVtZW50cyA9IFRvQU1QLmh0bWxbc2NvcGVdLmltYWdlcy5lbGVtZW50c1xuICAgIGNvbnN0IGltZ0F0dHJpYnMgPSBUb0FNUC5odG1sW3Njb3BlXS5pbWFnZXMuYXR0cmlic1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbWdFbGVtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICBjb25zdCBlbCA9IGltZ0VsZW1lbnRzW2ldXG4gICAgICBjb25zdCBhdHRyaWJzID0gaW1nQXR0cmlic1tpXVxuICAgICAgY29uc3QgYWRkbEF0dHJpYnMgPSBhZGRsQXR0c1tpXVxuXG4gICAgICBUb0FNUC5pbWdUb0FtcEltZyh7IGVsLCBhdHRyaWJzIH0sIGFkZGxBdHRyaWJzKVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpbWdUb0FtcEltZyAoeyBlbCwgYXR0cmlicyB9LCBhZGRsQXR0cmlicyl7XG4gICAgY29uc3QgYW1wQXR0cmlicyA9IE9iamVjdC5hc3NpZ24oYXR0cmlicywgYWRkbEF0dHJpYnMgfHwge30pXG5cbiAgICBpZiAoIWlzQW1wQXR0cnNWYWxpZChhbXBBdHRyaWJzKSkgVG9BTVAuJChlbCkucmVtb3ZlKClcblxuICAgIGNvbnN0IGF0dHJTdHIgPSBidWlsZEF0dHJTdHJpbmcoYW1wQXR0cmlicylcblxuICAgIFRvQU1QLiQoYDxhbXAtaW1nICR7YXR0clN0cn0+PC9hbXAtaW1nPmApLmluc2VydEFmdGVyKGVsKVxuXG4gICAgVG9BTVAuJChlbCkucmVtb3ZlKClcbiAgfVxuXG4gIHN0YXRpYyBodG1sRG9jVG9BbXBIdG1sRG9jIChodG1sLCBjb21wb25lbnRzID0gVG9BTVAuY29tcG9uZW50cywgcHJvY2Vzc0JvZHkgPSBmYWxzZSl7XG4gICAgY29uc3QgY29tcG9uZW50c09uUGFnZSA9IGNvbXBvbmVudHMuZmlsdGVyKG5hbWUgPT4gfmh0bWwuaW5kZXhPZihuYW1lKSlcblxuICAgIGlmICh+aHRtbC5pbmRleE9mKCdhbXAtZngnKSlcbiAgICAgIGNvbXBvbmVudHNPblBhZ2UucHVzaCgnYW1wLWZ4LWNvbGxlY3Rpb24nKVxuXG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgnPGh0bWwnLCAnPGh0bWwg4pqhJylcbiAgICBodG1sID0gVG9BTVAuY2xlYW4oaHRtbClcblxuICAgIGlmIChwcm9jZXNzQm9keSl7XG4gICAgICBodG1sID0gVG9BTVAuYm9keVRvQU1QSHRtbChodG1sLCBmYWxzZSwgJ0ZVTExfUEFHRScpXG4gICAgICBodG1sID0gVG9BTVAuY2xlYW5Cb2R5KGh0bWwsIGNvbXBvbmVudHNPblBhZ2UsICdGVUxMX1BBR0UnKVxuICAgIH1cbiAgICAvL1xuICAgIGh0bWwgPSAgSGVhZC50b0FNUChodG1sLCBjb21wb25lbnRzKVxuICAgIHJldHVybiBodG1sXG4gIH1cblxuICBzdGF0aWMgc2V0RGVmYXVsdE9wdHMgKG9wdGlvbnMgPSB7fSl7XG4gICAgLyplc2xpbnQtZGlzYWJsZSAqL1xuICAgIFRvQU1QLnZlcnNpb24gICAgICAgICAgPSBUb0FNUC5IZWFkLnZlcnNpb24gICAgICAgICAgPSBvcHRpb25zLnZlcnNpb24gICAgICAgICAgfHwgJ3YwJ1xuICAgIFRvQU1QLmNvbXBvbmVudFZlcnNpb24gPSBUb0FNUC5IZWFkLmNvbXBvbmVudFZlcnNpb24gPSBvcHRpb25zLmNvbXBvbmVudFZlcnNpb24gfHwgJzAuMSdcbiAgICBUb0FNUC5jb21wb25lbnRzICAgICAgID0gVG9BTVAuSGVhZC5jb21wb25lbnRzICAgICAgID0gb3B0aW9ucy5jb21wb25lbnRzICAgICAgIHx8IFtdXG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xuICAgIFRvQU1QLmltZ0xheW91dCAgICAgICAgPSBvcHRpb25zLmltZ0xheW91dCB8fCAncmVzcG9uc2l2ZSdcbiAgICBUb0FNUC5zdmdMYXlvdXQgICAgICAgID0gb3B0aW9ucy5zdmdMYXlvdXQgfHwgJ2ludHJpbnNpYydcbiAgICBUb0FNUC5odG1sICAgICAgICAgICAgID0ge31cbiAgfVxuXG4gIHN0YXRpYyBjbGVhbiAoaHRtbCl7XG4gICAgaWYgKH5odG1sLmluZGV4T2YoJzwhZG9jdHlwZSBodG1sPicpID4gLTEpXG4gICAgICBodG1sID0gJzwhZG9jdHlwZSBodG1sPicgKyBodG1sXG4gICAgLy8gaWYgKCFodG1sLm1hdGNoKC88bWV0YSBjaGFyc2V0PVwiVVRGLThcIj4vaSkpXG4gICAgLy8gICBodG1sID0gaHRtbC5yZXBsYWNlKCc8aGVhZD4nLCAnPGhlYWQ+XFxuPG1ldGEgY2hhcnNldD1cIlVURi04XCI+PC9tZXRhPlxcbicpXG5cbiAgICByZXR1cm4gaHRtbFxuICB9XG5cbiAgc3RhdGljIGNsZWFuQm9keSAoaHRtbCwgY29tcG9uZW50c09uUGFnZSA9IFtdKXtcbiAgICBsZXQgYm9keSA9IGV4dHJhY3RCb2R5KGh0bWwpXG5cbiAgICBpZiAoIWJvZHkpIHRocm93IG5ldyBFcnJvcnMuTm9Cb2R5KClcblxuICAgIGJvZHkgPSBzYW5pdGl6ZUh0bWwoYm9keSwgYm9keVNhbml0aXplQ29uZmlnKGNvbXBvbmVudHNPblBhZ2UpKVxuXG4gICAgcmV0dXJuIHJlcGxhY2VCb2R5KGh0bWwsIGJvZHkpXG4gIH1cblxuICBzdGF0aWMgZG9tQ2xlYW4gKHNjb3BlID0gU0NPUEUpe1xuICAgIGNvbnN0IGFtcFRhZ3MgPSBUb0FNUC5jb21wb25lbnRzLmNvbmNhdCgnYW1wLWltZycpXG5cbiAgICBhbXBUYWdzLmZvckVhY2godGFnID0+IHtcbiAgICAgIGNvbnN0IHRhZ0VsZW1lbnRzID0gVG9BTVAuaHRtbFtzY29wZV0uJCh0YWcpXG5cbiAgICAgIHJlbW92ZVZEYXRhcyh0YWdFbGVtZW50cylcbiAgICB9KVxuICB9XG5cbiAgc3RhdGljIGNsZWFuSGVhZCAoaHRtbCwgY29tcG9uZW50c09uUGFnZSA9IFtdKXtcbiAgICBsZXQgYm9keSA9IGV4dHJhY3RCb2R5KGh0bWwpXG5cbiAgICBpZiAoIWJvZHkpIHRocm93IG5ldyBFcnJvcnMuTm9Cb2R5KClcblxuICAgIGJvZHkgPSBzYW5pdGl6ZUh0bWwoYm9keSwgYm9keVNhbml0aXplQ29uZmlnKGNvbXBvbmVudHNPblBhZ2UpKVxuXG4gICAgcmV0dXJuIHJlcGxhY2VCb2R5KGh0bWwsIGJvZHkpXG4gIH1cblxuICBzdGF0aWMgZGVzdHJveSAoKXtcbiAgICBUb0FNUC5odG1sID0ge31cbiAgfVxufVxuVG9BTVAuSGVhZCA9IEhlYWRcblRvQU1QLnNldERlZmF1bHRPcHRzKClcblxuZnVuY3Rpb24gcmVtb3ZlVkRhdGFzICh0YWdzKXtcbiAgaWYgKCF0YWdzLmxlbmd0aCkgcmV0dXJuXG4gIGNvbnN0IGRhdGFWID0gbmV3IFJlZ0V4cCgvKGRhdGEtdi0pXFx3Ky9nKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFncy5sZW5ndGg7IGkrKylcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0YWdzW2ldLmF0dHJpYnMpXG4gICAgICBpZiAoZGF0YVYudGVzdChrZXkpKVxuICAgICAgICBkZWxldGUgKHRhZ3NbaV0uYXR0cmlic1trZXldKVxufVxuXG5mdW5jdGlvbiBpc0FkZGxBdHRzQXJyVmFsaWQgKGFkZGxBdHRyaWJzQXJyID0gW10pe1xuICBpZiAoIWFkZGxBdHRyaWJzQXJyKSByZXR1cm5cblxuICBpZiAoYWRkbEF0dHJpYnNBcnIubGVuZ3RoICE9IFRvQU1QLmltZ0F0dHJpYnMubGVuZ3RoKVxuICAgIHRocm93IG5ldyBFcnJvcnMuQW1wSW1nQXR0cnMoYWRkbEF0dHJpYnNBcnIubGVuZ3RoLCBUb0FNUC5pbWdBdHRyaWJzLmxlbmd0aClcblxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkbEF0dHJpYnNBcnIubGVuZ3RoOyBpKyspXG4gICAgaWYgKCFpc09iamVjdChhZGRsQXR0cmlic0FycltpXSkpXG4gICAgICBFcnJvcnMuTm90T2JqRXJyb3IoKVxufVxuXG5cbmZ1bmN0aW9uIGlzQW1wQXR0cnNWYWxpZCAoYXR0cmlicyl7XG4gIGxldCBpc1ZhbGlkID0gMFxuXG4gIGZvciAoY29uc3QgbmFtZSBpbiBhdHRyaWJzKSBpZiAocmVxSW1nQXR0cmlicy5pbmNsdWRlcyhuYW1lKSkgaXNWYWxpZCsrXG5cbiAgcmV0dXJuIGlzVmFsaWQgPT0gM1xufVxuXG5mdW5jdGlvbiBzZXRQYXJzZWluZ0RlZmF1bHRzIChzY29wZSA9IFNDT1BFKXtcbiAgVG9BTVAuJCA9IFRvQU1QLmh0bWxbc2NvcGVdLiRcbn1cblxuZnVuY3Rpb24gc2V0SW1hZ2VEZWZhdWx0cyAoc2NvcGUgPSBTQ09QRSl7XG4gIFRvQU1QLmltYWdlcyA9IFRvQU1QLmh0bWxbc2NvcGVdLmltYWdlc1xuICBUb0FNUC5pbWFnZUVsbXMgPSBUb0FNUC5odG1sW3Njb3BlXS5pbWFnZXMuZWxlbWVudHMgfHwgW11cbiAgVG9BTVAuaW1nQXR0cmlicyA9IFRvQU1QLmh0bWxbc2NvcGVdLmltYWdlcy5hdHRyaWJzIHx8IFtdXG4gIFRvQU1QLmltZ1NyY3MgPSBUb0FNUC5odG1sW3Njb3BlXS5pbWFnZXMuc3JjcyB8fCBbXVxufVxuXG5mdW5jdGlvbiBsaW5rQXR0cmlicyAoc2NvcGUgPSBTQ09QRSl7XG4gIGNvbnN0IGltZ0VsZW1lbnRzID0gVG9BTVAuaHRtbFtzY29wZV0uaW1hZ2VzLmVsZW1lbnRzXG4gIGNvbnN0IGltZ0F0dHJpYnMgPSBbXVxuICBjb25zdCBpbWdTcmNzID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGltZ0VsZW1lbnRzLmxlbmd0aDsgaSsrKXtcbiAgICBjb25zdCBpbWdFbG0gPSBpbWdFbGVtZW50c1tpXVxuXG4gICAgaW1nQXR0cmlic1tpXSA9IGltZ0VsbS5hdHRyaWJzXG4gICAgaW1nU3Jjc1tpXSA9IGltZ0F0dHJpYnNbaV0uc3JjXG4gIH1cblxuICBUb0FNUC5odG1sW3Njb3BlXS5pbWFnZXMuYXR0cmlicyA9IGltZ0F0dHJpYnNcbiAgVG9BTVAuaHRtbFtzY29wZV0uaW1hZ2VzLnNyY3MgPSBpbWdTcmNzXG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXR0clN0cmluZyAoYXR0cmlicyl7XG4gIGFkZEltZ0xheW91dChhdHRyaWJzKVxuXG4gIGxldCBhdHRyU3RyID0gJydcblxuICBmb3IgKGNvbnN0IG5hbWUgaW4gYXR0cmlicylcbiAgICBhdHRyU3RyICs9IGAke25hbWV9PVwiJHthdHRyaWJzW25hbWVdfVwiIGBcblxuICByZXR1cm4gYXR0clN0clxufVxuXG5mdW5jdGlvbiBnZXRJbWdMYXlvdXQgKGltYWdlRm9ybWF0KXtcbiAgaWYgKGltYWdlRm9ybWF0ID09PSAnc3ZnJylcbiAgICByZXR1cm4gVG9BTVAuc3ZnTGF5b3V0XG4gIHJldHVybiBUb0FNUC5pbWdMYXlvdXRcbn1cblxuZnVuY3Rpb24gYWRkSW1nTGF5b3V0IChhdHRyaWJzKXtcbiAgaWYgKCFhdHRyaWJzLmxheW91dCl7XG4gICAgY29uc3QgZm9ybWF0ID0gfmF0dHJpYnMuc3JjLmluZGV4T2YoJy5zdmcnKSA/ICdzdmcnIDogZmFsc2VcblxuICAgIGF0dHJpYnMubGF5b3V0ID0gZ2V0SW1nTGF5b3V0KGZvcm1hdClcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGNvbnZlcnQgKGh0bWwgPSBmYWxzZSwgYWRkbEF0dHMgPSBmYWxzZSwgc2NvcGUgPSBTQ09QRSl7XG4gIFRvQU1QLmxvYWRIdG1sKGh0bWwsIHRydWUsIHNjb3BlKVxuICBUb0FNUC5sb2FkSW1hZ2VzKHRydWUsIHNjb3BlKVxuICBUb0FNUC5jb252ZXJ0SW1hZ2VzKGFkZGxBdHRzLCBzY29wZSlcbiAgVG9BTVAuZG9tQ2xlYW4oc2NvcGUpXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RCb2R5IChodG1sKXtcbiAgaWYgKCFodG1sKSB0aHJvdyBuZXcgRXJyb3JzLkh0bWxOb3RTdHJpbmcoKVxuICByZXR1cm4gKGh0bWwubWF0Y2goLzxib2R5W14+XSo+W1xcc1xcU10qPFxcL2JvZHk+L2dpKSB8fCBbXSlbMF1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZUJvZHkgKGh0bWwsIG5ld0JvZHkpe1xuICBodG1sID0gaHRtbC5yZXBsYWNlKC88Ym9keVtePl0qPltcXHNcXFNdKjxcXC9ib2R5Pi9naSwgJycpXG4gIGh0bWwgPSBodG1sLnJlcGxhY2UoJzwvaGVhZD4nLCBgXFxuPC9oZWFkPlxcbiA8Ym9keT5cXG4ke25ld0JvZHl9XFxuPC9ib2R5PlxcbmApXG4gIHJldHVybiBodG1sXG59XG5cbmZ1bmN0aW9uIGJvZHlTYW5pdGl6ZUNvbmZpZyAoY29tcG9uZW50c09uUGFnZSA9IFtdKXtcbiAgcmV0dXJuIHtcbiAgICBhbGxvd2VkVGFnczogc2FuaXRpemVIdG1sLmRlZmF1bHRzLmFsbG93ZWRUYWdzLmNvbmNhdChbXG4gICAgICAnYW1wLW1lbnUtY29udGFpbmVyJywgJ2hlYWRlcicsICdudXh0LWxpbmsnLCAnYW1wLWFjY29yZGlvbicsICdhbXAtaW1nJywgJ2FtcC1zaWRlYmFyJywgJ2gyJywgJ2gxJywgJ3NlY3Rpb24nLFxuICAgICAgJ3NwYW4nLFxuICAgICAgJ2hlYWRlcicsXG4gICAgICAnbmF2JyxcbiAgICAgICdmb290ZXInLFxuICAgICAgJ2NlbnRlcicsXG4gICAgICAnYicsXG4gICAgICAnbWFpbicsXG4gICAgICAnZmlndXJlJyxcbiAgICAgICdhbXAtZngnLFxuICAgICAgJ3N2ZycsXG4gICAgICAnZGVmcycsXG4gICAgICAnc3ltYm9sJyxcbiAgICAgICd0aXRsZScsXG4gICAgICAncGF0aCcsXG4gICAgICAndXNlJyxcbiAgICAgICdsaW5lYXJHcmFkaWVudCcsXG4gICAgICAncmVjdCcsXG4gICAgICAncG9seWdvbicsXG4gICAgICAnYW1wLXlvdXR1YmUnLFxuICAgICAgJ3NjcmlwdCdcbiAgICBdLmNvbmNhdChjb21wb25lbnRzT25QYWdlKSksXG4gICAgYWxsb3dlZEF0dHJpYnV0ZXM6IHtcbiAgICAgICcqJyAgICAgICAgICAgICAgICAgICAgICAgIDogWyAnc3R5bGUnLCAnY2xhc3MnLCAnbGF5b3V0JywgJ2FsdCcsICd3aWR0aCcsICdoZWlnaHQnLCAnYXJpYSonLCAnZGF0YS0qJywgJ3JvbGUnLCAnb24nLCAnaGlkZGVuJywgJ2lkJywgJ3NpZGUnLCAndGFiaW5kZXgnLCAnbWVkaWEnLCAndHlwZScsICdjb250cm9scycsICdsb29wJyBdLFxuICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbICdocmVmJywgJ25hbWUnLCAndGFyZ2V0JywgJ3JlbCcsICdhcmlhKicgXSxcbiAgICAgIGltZyAgICAgICAgICAgICAgICAgICAgICAgIDogWyAnc3JjJywgJ2FsdCcsICd3aWR0aCcsICdoZWlnaHQnLCAnbGF5b3V0JywgJ3NyY3NldCcgXSxcbiAgICAgICdhbXAtaW1nJyAgICAgICAgICAgICAgICAgIDogWyAnc3JjJywgJ2FsdCcsICd3aWR0aCcsICdoZWlnaHQnLCAnbGF5b3V0JywgJ3NyY3NldCcsICdhbXAtZngnIF0sXG4gICAgICAnYW1wLWluc3RhbGwtc2VydmljZXdvcmtlcic6IFsgJ3NyYycsICdkYXRhLWlmcmFtZS1zcmMnLCAnZGF0YS1zY29wZScsICdsYXlvdXQnLCAnZGF0YS1uby1zZXJ2aWNlLXdvcmtlci1mYWxsYmFjay11cmwtbWF0Y2gnLCAnZGF0YS1uby1zZXJ2aWNlLXdvcmtlci1mYWxsYmFjay1zaGVsbC11cmwnIF0sXG4gICAgICAnYW1wLSonICAgICAgICAgICAgICAgICAgICA6IFsgJyonIF0sXG4gICAgICBzdmcgICAgICAgICAgICAgICAgICAgICAgICA6IFsgJyonIF0sXG4gICAgICBzeW1ib2wgICAgICAgICAgICAgICAgICAgICA6IFsgJyonIF0sXG4gICAgICB1c2UgICAgICAgICAgICAgICAgICAgICAgICA6IFsgJyonIF0sXG4gICAgICBwYXRoICAgICAgICAgICAgICAgICAgICAgICA6IFsgJyonIF1cbiAgICB9LFxuICAgIC8vIGFsbG93ZWRBdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICBzZWxmQ2xvc2luZyAgICAgICAgICAgICAgICAgICAgICA6IFsgJ2ltZycsICdhbXAtaW1nJywgJ2JyJywgJ2hyJywgJ2FyZWEnLCAndXNlJyBdLFxuICAgIC8vIFVSTCBzY2hlbWVzIHdlIHBlcm1pdFxuICAgIGFsbG93ZWRTY2hlbWVzICAgICAgICAgICAgICAgICAgIDogWyAnaHR0cCcsICdodHRwcycsICdmdHAnLCAnbWFpbHRvJywgJ2RhdGEnIF0sXG4gICAgYWxsb3dlZFNjaGVtZXNBcHBsaWVkVG9BdHRyaWJ1dGVzOiBbICdocmVmJywgJ3NyYycsICdjaXRlJyBdLFxuICAgIGFsbG93UHJvdG9jb2xSZWxhdGl2ZSAgICAgICAgICAgIDogdHJ1ZSxcbiAgICAvLyBub25UZXh0VGFnczogW10sXG4gICAgdHJhbnNmb3JtVGFncyAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICBpZnJhbWU6IGlmcmFtZVRyYW5zZm9ybVxuICAgIH0sXG4gICAgZXhjbHVzaXZlRmlsdGVyOiBleGNsdWRlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXhjbHVkZShmcmFtZSl7XG4gIHJldHVybiBmaWx0ZXJzLmV4Y2x1ZGVTY3JpcHRzKGZyYW1lKVxufVxuXG5cbmZ1bmN0aW9uIGlmcmFtZVRyYW5zZm9ybSAodGFnTmFtZSwgYXR0cmlicyl7XG4gIGlmIChhdHRyaWJzLnNyYy5pbmNsdWRlcygnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJykpXG4gICAgcmV0dXJuIGFtcFlvdXR1YmUoYXR0cmlicylcbiAgcmV0dXJuIHt9XG59XG5cbmZ1bmN0aW9uIGFtcFlvdXR1YmUgKGF0dHJpYnMpe1xuICBpZiAoIVRvQU1QLkhlYWQuY29tcG9uZW50c09uUGFnZS5pbmNsdWRlcygnYW1wLXlvdXR1YmUnKSlcbiAgICBUb0FNUC5IZWFkLmNvbXBvbmVudHNPblBhZ2UucHVzaCgnYW1wLXlvdXR1YmUnKVxuXG4gIHJldHVybiB7XG4gICAgdGFnTmFtZTogJ2FtcC15b3V0dWJlJyxcbiAgICBhdHRyaWJzOiB7XG4gICAgICB3aWR0aCAgICAgICAgIDogJzQ4MCcsXG4gICAgICBoZWlnaHQgICAgICAgIDogJzI3MCcsXG4gICAgICBsYXlvdXQgICAgICAgIDogJ3Jlc3BvbnNpdmUnLFxuICAgICAgJ2RhdGEtdmlkZW9pZCc6IGF0dHJpYnMuc3JjLnJlcGxhY2UoJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLycsICcnKVxuICAgIH1cbiAgfVxufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxJQTtBQW1JQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQTlDQTtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFGQTtBQVNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/main.js\n");

/***/ }),

/***/ "cherio":
/*!*************************!*\
  !*** external "cherio" ***!
  \*************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = __WEBPACK_EXTERNAL_MODULE_cherio__;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlcmlvLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdG8tYW1wL2V4dGVybmFsIFwiY2hlcmlvXCI/MmE3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfY2hlcmlvX187Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///cherio\n");

/***/ }),

/***/ "consola":
/*!**************************!*\
  !*** external "consola" ***!
  \**************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = __WEBPACK_EXTERNAL_MODULE_consola__;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sYS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3RvLWFtcC9leHRlcm5hbCBcImNvbnNvbGFcIj9jNTg1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9jb25zb2xhX187Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///consola\n");

/***/ }),

/***/ "es6-error":
/*!****************************!*\
  !*** external "es6-error" ***!
  \****************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = __WEBPACK_EXTERNAL_MODULE_es6_error__;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXM2LWVycm9yLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdG8tYW1wL2V4dGVybmFsIFwiZXM2LWVycm9yXCI/MTI1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfZXM2X2Vycm9yX187Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///es6-error\n");

/***/ }),

/***/ "isobject":
/*!***************************!*\
  !*** external "isobject" ***!
  \***************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = __WEBPACK_EXTERNAL_MODULE_isobject__;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvYmplY3QuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly90by1hbXAvZXh0ZXJuYWwgXCJpc29iamVjdFwiP2I3NDYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX2lzb2JqZWN0X187Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///isobject\n");

/***/ }),

/***/ "sanitize-html":
/*!********************************!*\
  !*** external "sanitize-html" ***!
  \********************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = __WEBPACK_EXTERNAL_MODULE_sanitize_html__;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUtaHRtbC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3RvLWFtcC9leHRlcm5hbCBcInNhbml0aXplLWh0bWxcIj82ODA5Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9zYW5pdGl6ZV9odG1sX187Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///sanitize-html\n");

/***/ })

/******/ })["default"];
});