diff options
| author | Jakub Hampl <kopomir@gmail.com> | 2018-06-19 09:07:51 +0100 | 
|---|---|---|
| committer | Jakub Hampl <kopomir@gmail.com> | 2018-06-19 09:07:51 +0100 | 
| commit | 33692211beb4705ad79a1cc90c28f864a28686ba (patch) | |
| tree | e03a5b3a9c42119e425dcaf5b99aa397d10590fe /index.html | |
| parent | 5fdcf1fbe9a56951799d89bfc43e286742a2495f (diff) | |
Remove some compiled stuff
Diffstat (limited to 'index.html')
| -rw-r--r-- | index.html | 7982 | 
1 files changed, 0 insertions, 7982 deletions
| diff --git a/index.html b/index.html deleted file mode 100644 index f7f1716..0000000 --- a/index.html +++ /dev/null @@ -1,7982 +0,0 @@ -<!DOCTYPE HTML> -<html><head><meta charset="UTF-8"><title>Mapbox.Style</title><style>html,head,body { padding:0; margin:0; } -body { font-family: calibri, helvetica, arial, sans-serif; }</style><script type="text/javascript"> -(function() { -'use strict'; - -function F2(fun) -{ -  function wrapper(a) { return function(b) { return fun(a,b); }; } -  wrapper.arity = 2; -  wrapper.func = fun; -  return wrapper; -} - -function F3(fun) -{ -  function wrapper(a) { -    return function(b) { return function(c) { return fun(a, b, c); }; }; -  } -  wrapper.arity = 3; -  wrapper.func = fun; -  return wrapper; -} - -function F4(fun) -{ -  function wrapper(a) { return function(b) { return function(c) { -    return function(d) { return fun(a, b, c, d); }; }; }; -  } -  wrapper.arity = 4; -  wrapper.func = fun; -  return wrapper; -} - -function F5(fun) -{ -  function wrapper(a) { return function(b) { return function(c) { -    return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; }; -  } -  wrapper.arity = 5; -  wrapper.func = fun; -  return wrapper; -} - -function F6(fun) -{ -  function wrapper(a) { return function(b) { return function(c) { -    return function(d) { return function(e) { return function(f) { -    return fun(a, b, c, d, e, f); }; }; }; }; }; -  } -  wrapper.arity = 6; -  wrapper.func = fun; -  return wrapper; -} - -function F7(fun) -{ -  function wrapper(a) { return function(b) { return function(c) { -    return function(d) { return function(e) { return function(f) { -    return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; }; -  } -  wrapper.arity = 7; -  wrapper.func = fun; -  return wrapper; -} - -function F8(fun) -{ -  function wrapper(a) { return function(b) { return function(c) { -    return function(d) { return function(e) { return function(f) { -    return function(g) { return function(h) { -    return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; }; -  } -  wrapper.arity = 8; -  wrapper.func = fun; -  return wrapper; -} - -function F9(fun) -{ -  function wrapper(a) { return function(b) { return function(c) { -    return function(d) { return function(e) { return function(f) { -    return function(g) { return function(h) { return function(i) { -    return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; }; -  } -  wrapper.arity = 9; -  wrapper.func = fun; -  return wrapper; -} - -function A2(fun, a, b) -{ -  return fun.arity === 2 -    ? fun.func(a, b) -    : fun(a)(b); -} -function A3(fun, a, b, c) -{ -  return fun.arity === 3 -    ? fun.func(a, b, c) -    : fun(a)(b)(c); -} -function A4(fun, a, b, c, d) -{ -  return fun.arity === 4 -    ? fun.func(a, b, c, d) -    : fun(a)(b)(c)(d); -} -function A5(fun, a, b, c, d, e) -{ -  return fun.arity === 5 -    ? fun.func(a, b, c, d, e) -    : fun(a)(b)(c)(d)(e); -} -function A6(fun, a, b, c, d, e, f) -{ -  return fun.arity === 6 -    ? fun.func(a, b, c, d, e, f) -    : fun(a)(b)(c)(d)(e)(f); -} -function A7(fun, a, b, c, d, e, f, g) -{ -  return fun.arity === 7 -    ? fun.func(a, b, c, d, e, f, g) -    : fun(a)(b)(c)(d)(e)(f)(g); -} -function A8(fun, a, b, c, d, e, f, g, h) -{ -  return fun.arity === 8 -    ? fun.func(a, b, c, d, e, f, g, h) -    : fun(a)(b)(c)(d)(e)(f)(g)(h); -} -function A9(fun, a, b, c, d, e, f, g, h, i) -{ -  return fun.arity === 9 -    ? fun.func(a, b, c, d, e, f, g, h, i) -    : fun(a)(b)(c)(d)(e)(f)(g)(h)(i); -} -//import Native.List // - -var _elm_lang$core$Native_Array = function() { - -// A RRB-Tree has two distinct data types. -// Leaf -> "height"  is always 0 -//         "table"   is an array of elements -// Node -> "height"  is always greater than 0 -//         "table"   is an array of child nodes -//         "lengths" is an array of accumulated lengths of the child nodes - -// M is the maximal table size. 32 seems fast. E is the allowed increase -// of search steps when concatting to find an index. Lower values will -// decrease balancing, but will increase search steps. -var M = 32; -var E = 2; - -// An empty array. -var empty = { -	ctor: '_Array', -	height: 0, -	table: [] -}; - - -function get(i, array) -{ -	if (i < 0 || i >= length(array)) -	{ -		throw new Error( -			'Index ' + i + ' is out of range. Check the length of ' + -			'your array first or use getMaybe or getWithDefault.'); -	} -	return unsafeGet(i, array); -} - - -function unsafeGet(i, array) -{ -	for (var x = array.height; x > 0; x--) -	{ -		var slot = i >> (x * 5); -		while (array.lengths[slot] <= i) -		{ -			slot++; -		} -		if (slot > 0) -		{ -			i -= array.lengths[slot - 1]; -		} -		array = array.table[slot]; -	} -	return array.table[i]; -} - - -// Sets the value at the index i. Only the nodes leading to i will get -// copied and updated. -function set(i, item, array) -{ -	if (i < 0 || length(array) <= i) -	{ -		return array; -	} -	return unsafeSet(i, item, array); -} - - -function unsafeSet(i, item, array) -{ -	array = nodeCopy(array); - -	if (array.height === 0) -	{ -		array.table[i] = item; -	} -	else -	{ -		var slot = getSlot(i, array); -		if (slot > 0) -		{ -			i -= array.lengths[slot - 1]; -		} -		array.table[slot] = unsafeSet(i, item, array.table[slot]); -	} -	return array; -} - - -function initialize(len, f) -{ -	if (len <= 0) -	{ -		return empty; -	} -	var h = Math.floor( Math.log(len) / Math.log(M) ); -	return initialize_(f, h, 0, len); -} - -function initialize_(f, h, from, to) -{ -	if (h === 0) -	{ -		var table = new Array((to - from) % (M + 1)); -		for (var i = 0; i < table.length; i++) -		{ -		  table[i] = f(from + i); -		} -		return { -			ctor: '_Array', -			height: 0, -			table: table -		}; -	} - -	var step = Math.pow(M, h); -	var table = new Array(Math.ceil((to - from) / step)); -	var lengths = new Array(table.length); -	for (var i = 0; i < table.length; i++) -	{ -		table[i] = initialize_(f, h - 1, from + (i * step), Math.min(from + ((i + 1) * step), to)); -		lengths[i] = length(table[i]) + (i > 0 ? lengths[i-1] : 0); -	} -	return { -		ctor: '_Array', -		height: h, -		table: table, -		lengths: lengths -	}; -} - -function fromList(list) -{ -	if (list.ctor === '[]') -	{ -		return empty; -	} - -	// Allocate M sized blocks (table) and write list elements to it. -	var table = new Array(M); -	var nodes = []; -	var i = 0; - -	while (list.ctor !== '[]') -	{ -		table[i] = list._0; -		list = list._1; -		i++; - -		// table is full, so we can push a leaf containing it into the -		// next node. -		if (i === M) -		{ -			var leaf = { -				ctor: '_Array', -				height: 0, -				table: table -			}; -			fromListPush(leaf, nodes); -			table = new Array(M); -			i = 0; -		} -	} - -	// Maybe there is something left on the table. -	if (i > 0) -	{ -		var leaf = { -			ctor: '_Array', -			height: 0, -			table: table.splice(0, i) -		}; -		fromListPush(leaf, nodes); -	} - -	// Go through all of the nodes and eventually push them into higher nodes. -	for (var h = 0; h < nodes.length - 1; h++) -	{ -		if (nodes[h].table.length > 0) -		{ -			fromListPush(nodes[h], nodes); -		} -	} - -	var head = nodes[nodes.length - 1]; -	if (head.height > 0 && head.table.length === 1) -	{ -		return head.table[0]; -	} -	else -	{ -		return head; -	} -} - -// Push a node into a higher node as a child. -function fromListPush(toPush, nodes) -{ -	var h = toPush.height; - -	// Maybe the node on this height does not exist. -	if (nodes.length === h) -	{ -		var node = { -			ctor: '_Array', -			height: h + 1, -			table: [], -			lengths: [] -		}; -		nodes.push(node); -	} - -	nodes[h].table.push(toPush); -	var len = length(toPush); -	if (nodes[h].lengths.length > 0) -	{ -		len += nodes[h].lengths[nodes[h].lengths.length - 1]; -	} -	nodes[h].lengths.push(len); - -	if (nodes[h].table.length === M) -	{ -		fromListPush(nodes[h], nodes); -		nodes[h] = { -			ctor: '_Array', -			height: h + 1, -			table: [], -			lengths: [] -		}; -	} -} - -// Pushes an item via push_ to the bottom right of a tree. -function push(item, a) -{ -	var pushed = push_(item, a); -	if (pushed !== null) -	{ -		return pushed; -	} - -	var newTree = create(item, a.height); -	return siblise(a, newTree); -} - -// Recursively tries to push an item to the bottom-right most -// tree possible. If there is no space left for the item, -// null will be returned. -function push_(item, a) -{ -	// Handle resursion stop at leaf level. -	if (a.height === 0) -	{ -		if (a.table.length < M) -		{ -			var newA = { -				ctor: '_Array', -				height: 0, -				table: a.table.slice() -			}; -			newA.table.push(item); -			return newA; -		} -		else -		{ -		  return null; -		} -	} - -	// Recursively push -	var pushed = push_(item, botRight(a)); - -	// There was space in the bottom right tree, so the slot will -	// be updated. -	if (pushed !== null) -	{ -		var newA = nodeCopy(a); -		newA.table[newA.table.length - 1] = pushed; -		newA.lengths[newA.lengths.length - 1]++; -		return newA; -	} - -	// When there was no space left, check if there is space left -	// for a new slot with a tree which contains only the item -	// at the bottom. -	if (a.table.length < M) -	{ -		var newSlot = create(item, a.height - 1); -		var newA = nodeCopy(a); -		newA.table.push(newSlot); -		newA.lengths.push(newA.lengths[newA.lengths.length - 1] + length(newSlot)); -		return newA; -	} -	else -	{ -		return null; -	} -} - -// Converts an array into a list of elements. -function toList(a) -{ -	return toList_(_elm_lang$core$Native_List.Nil, a); -} - -function toList_(list, a) -{ -	for (var i = a.table.length - 1; i >= 0; i--) -	{ -		list = -			a.height === 0 -				? _elm_lang$core$Native_List.Cons(a.table[i], list) -				: toList_(list, a.table[i]); -	} -	return list; -} - -// Maps a function over the elements of an array. -function map(f, a) -{ -	var newA = { -		ctor: '_Array', -		height: a.height, -		table: new Array(a.table.length) -	}; -	if (a.height > 0) -	{ -		newA.lengths = a.lengths; -	} -	for (var i = 0; i < a.table.length; i++) -	{ -		newA.table[i] = -			a.height === 0 -				? f(a.table[i]) -				: map(f, a.table[i]); -	} -	return newA; -} - -// Maps a function over the elements with their index as first argument. -function indexedMap(f, a) -{ -	return indexedMap_(f, a, 0); -} - -function indexedMap_(f, a, from) -{ -	var newA = { -		ctor: '_Array', -		height: a.height, -		table: new Array(a.table.length) -	}; -	if (a.height > 0) -	{ -		newA.lengths = a.lengths; -	} -	for (var i = 0; i < a.table.length; i++) -	{ -		newA.table[i] = -			a.height === 0 -				? A2(f, from + i, a.table[i]) -				: indexedMap_(f, a.table[i], i == 0 ? from : from + a.lengths[i - 1]); -	} -	return newA; -} - -function foldl(f, b, a) -{ -	if (a.height === 0) -	{ -		for (var i = 0; i < a.table.length; i++) -		{ -			b = A2(f, a.table[i], b); -		} -	} -	else -	{ -		for (var i = 0; i < a.table.length; i++) -		{ -			b = foldl(f, b, a.table[i]); -		} -	} -	return b; -} - -function foldr(f, b, a) -{ -	if (a.height === 0) -	{ -		for (var i = a.table.length; i--; ) -		{ -			b = A2(f, a.table[i], b); -		} -	} -	else -	{ -		for (var i = a.table.length; i--; ) -		{ -			b = foldr(f, b, a.table[i]); -		} -	} -	return b; -} - -// TODO: currently, it slices the right, then the left. This can be -// optimized. -function slice(from, to, a) -{ -	if (from < 0) -	{ -		from += length(a); -	} -	if (to < 0) -	{ -		to += length(a); -	} -	return sliceLeft(from, sliceRight(to, a)); -} - -function sliceRight(to, a) -{ -	if (to === length(a)) -	{ -		return a; -	} - -	// Handle leaf level. -	if (a.height === 0) -	{ -		var newA = { ctor:'_Array', height:0 }; -		newA.table = a.table.slice(0, to); -		return newA; -	} - -	// Slice the right recursively. -	var right = getSlot(to, a); -	var sliced = sliceRight(to - (right > 0 ? a.lengths[right - 1] : 0), a.table[right]); - -	// Maybe the a node is not even needed, as sliced contains the whole slice. -	if (right === 0) -	{ -		return sliced; -	} - -	// Create new node. -	var newA = { -		ctor: '_Array', -		height: a.height, -		table: a.table.slice(0, right), -		lengths: a.lengths.slice(0, right) -	}; -	if (sliced.table.length > 0) -	{ -		newA.table[right] = sliced; -		newA.lengths[right] = length(sliced) + (right > 0 ? newA.lengths[right - 1] : 0); -	} -	return newA; -} - -function sliceLeft(from, a) -{ -	if (from === 0) -	{ -		return a; -	} - -	// Handle leaf level. -	if (a.height === 0) -	{ -		var newA = { ctor:'_Array', height:0 }; -		newA.table = a.table.slice(from, a.table.length + 1); -		return newA; -	} - -	// Slice the left recursively. -	var left = getSlot(from, a); -	var sliced = sliceLeft(from - (left > 0 ? a.lengths[left - 1] : 0), a.table[left]); - -	// Maybe the a node is not even needed, as sliced contains the whole slice. -	if (left === a.table.length - 1) -	{ -		return sliced; -	} - -	// Create new node. -	var newA = { -		ctor: '_Array', -		height: a.height, -		table: a.table.slice(left, a.table.length + 1), -		lengths: new Array(a.table.length - left) -	}; -	newA.table[0] = sliced; -	var len = 0; -	for (var i = 0; i < newA.table.length; i++) -	{ -		len += length(newA.table[i]); -		newA.lengths[i] = len; -	} - -	return newA; -} - -// Appends two trees. -function append(a,b) -{ -	if (a.table.length === 0) -	{ -		return b; -	} -	if (b.table.length === 0) -	{ -		return a; -	} - -	var c = append_(a, b); - -	// Check if both nodes can be crunshed together. -	if (c[0].table.length + c[1].table.length <= M) -	{ -		if (c[0].table.length === 0) -		{ -			return c[1]; -		} -		if (c[1].table.length === 0) -		{ -			return c[0]; -		} - -		// Adjust .table and .lengths -		c[0].table = c[0].table.concat(c[1].table); -		if (c[0].height > 0) -		{ -			var len = length(c[0]); -			for (var i = 0; i < c[1].lengths.length; i++) -			{ -				c[1].lengths[i] += len; -			} -			c[0].lengths = c[0].lengths.concat(c[1].lengths); -		} - -		return c[0]; -	} - -	if (c[0].height > 0) -	{ -		var toRemove = calcToRemove(a, b); -		if (toRemove > E) -		{ -			c = shuffle(c[0], c[1], toRemove); -		} -	} - -	return siblise(c[0], c[1]); -} - -// Returns an array of two nodes; right and left. One node _may_ be empty. -function append_(a, b) -{ -	if (a.height === 0 && b.height === 0) -	{ -		return [a, b]; -	} - -	if (a.height !== 1 || b.height !== 1) -	{ -		if (a.height === b.height) -		{ -			a = nodeCopy(a); -			b = nodeCopy(b); -			var appended = append_(botRight(a), botLeft(b)); - -			insertRight(a, appended[1]); -			insertLeft(b, appended[0]); -		} -		else if (a.height > b.height) -		{ -			a = nodeCopy(a); -			var appended = append_(botRight(a), b); - -			insertRight(a, appended[0]); -			b = parentise(appended[1], appended[1].height + 1); -		} -		else -		{ -			b = nodeCopy(b); -			var appended = append_(a, botLeft(b)); - -			var left = appended[0].table.length === 0 ? 0 : 1; -			var right = left === 0 ? 1 : 0; -			insertLeft(b, appended[left]); -			a = parentise(appended[right], appended[right].height + 1); -		} -	} - -	// Check if balancing is needed and return based on that. -	if (a.table.length === 0 || b.table.length === 0) -	{ -		return [a, b]; -	} - -	var toRemove = calcToRemove(a, b); -	if (toRemove <= E) -	{ -		return [a, b]; -	} -	return shuffle(a, b, toRemove); -} - -// Helperfunctions for append_. Replaces a child node at the side of the parent. -function insertRight(parent, node) -{ -	var index = parent.table.length - 1; -	parent.table[index] = node; -	parent.lengths[index] = length(node); -	parent.lengths[index] += index > 0 ? parent.lengths[index - 1] : 0; -} - -function insertLeft(parent, node) -{ -	if (node.table.length > 0) -	{ -		parent.table[0] = node; -		parent.lengths[0] = length(node); - -		var len = length(parent.table[0]); -		for (var i = 1; i < parent.lengths.length; i++) -		{ -			len += length(parent.table[i]); -			parent.lengths[i] = len; -		} -	} -	else -	{ -		parent.table.shift(); -		for (var i = 1; i < parent.lengths.length; i++) -		{ -			parent.lengths[i] = parent.lengths[i] - parent.lengths[0]; -		} -		parent.lengths.shift(); -	} -} - -// Returns the extra search steps for E. Refer to the paper. -function calcToRemove(a, b) -{ -	var subLengths = 0; -	for (var i = 0; i < a.table.length; i++) -	{ -		subLengths += a.table[i].table.length; -	} -	for (var i = 0; i < b.table.length; i++) -	{ -		subLengths += b.table[i].table.length; -	} - -	var toRemove = a.table.length + b.table.length; -	return toRemove - (Math.floor((subLengths - 1) / M) + 1); -} - -// get2, set2 and saveSlot are helpers for accessing elements over two arrays. -function get2(a, b, index) -{ -	return index < a.length -		? a[index] -		: b[index - a.length]; -} - -function set2(a, b, index, value) -{ -	if (index < a.length) -	{ -		a[index] = value; -	} -	else -	{ -		b[index - a.length] = value; -	} -} - -function saveSlot(a, b, index, slot) -{ -	set2(a.table, b.table, index, slot); - -	var l = (index === 0 || index === a.lengths.length) -		? 0 -		: get2(a.lengths, a.lengths, index - 1); - -	set2(a.lengths, b.lengths, index, l + length(slot)); -} - -// Creates a node or leaf with a given length at their arrays for perfomance. -// Is only used by shuffle. -function createNode(h, length) -{ -	if (length < 0) -	{ -		length = 0; -	} -	var a = { -		ctor: '_Array', -		height: h, -		table: new Array(length) -	}; -	if (h > 0) -	{ -		a.lengths = new Array(length); -	} -	return a; -} - -// Returns an array of two balanced nodes. -function shuffle(a, b, toRemove) -{ -	var newA = createNode(a.height, Math.min(M, a.table.length + b.table.length - toRemove)); -	var newB = createNode(a.height, newA.table.length - (a.table.length + b.table.length - toRemove)); - -	// Skip the slots with size M. More precise: copy the slot references -	// to the new node -	var read = 0; -	while (get2(a.table, b.table, read).table.length % M === 0) -	{ -		set2(newA.table, newB.table, read, get2(a.table, b.table, read)); -		set2(newA.lengths, newB.lengths, read, get2(a.lengths, b.lengths, read)); -		read++; -	} - -	// Pulling items from left to right, caching in a slot before writing -	// it into the new nodes. -	var write = read; -	var slot = new createNode(a.height - 1, 0); -	var from = 0; - -	// If the current slot is still containing data, then there will be at -	// least one more write, so we do not break this loop yet. -	while (read - write - (slot.table.length > 0 ? 1 : 0) < toRemove) -	{ -		// Find out the max possible items for copying. -		var source = get2(a.table, b.table, read); -		var to = Math.min(M - slot.table.length, source.table.length); - -		// Copy and adjust size table. -		slot.table = slot.table.concat(source.table.slice(from, to)); -		if (slot.height > 0) -		{ -			var len = slot.lengths.length; -			for (var i = len; i < len + to - from; i++) -			{ -				slot.lengths[i] = length(slot.table[i]); -				slot.lengths[i] += (i > 0 ? slot.lengths[i - 1] : 0); -			} -		} - -		from += to; - -		// Only proceed to next slots[i] if the current one was -		// fully copied. -		if (source.table.length <= to) -		{ -			read++; from = 0; -		} - -		// Only create a new slot if the current one is filled up. -		if (slot.table.length === M) -		{ -			saveSlot(newA, newB, write, slot); -			slot = createNode(a.height - 1, 0); -			write++; -		} -	} - -	// Cleanup after the loop. Copy the last slot into the new nodes. -	if (slot.table.length > 0) -	{ -		saveSlot(newA, newB, write, slot); -		write++; -	} - -	// Shift the untouched slots to the left -	while (read < a.table.length + b.table.length ) -	{ -		saveSlot(newA, newB, write, get2(a.table, b.table, read)); -		read++; -		write++; -	} - -	return [newA, newB]; -} - -// Navigation functions -function botRight(a) -{ -	return a.table[a.table.length - 1]; -} -function botLeft(a) -{ -	return a.table[0]; -} - -// Copies a node for updating. Note that you should not use this if -// only updating only one of "table" or "lengths" for performance reasons. -function nodeCopy(a) -{ -	var newA = { -		ctor: '_Array', -		height: a.height, -		table: a.table.slice() -	}; -	if (a.height > 0) -	{ -		newA.lengths = a.lengths.slice(); -	} -	return newA; -} - -// Returns how many items are in the tree. -function length(array) -{ -	if (array.height === 0) -	{ -		return array.table.length; -	} -	else -	{ -		return array.lengths[array.lengths.length - 1]; -	} -} - -// Calculates in which slot of "table" the item probably is, then -// find the exact slot via forward searching in  "lengths". Returns the index. -function getSlot(i, a) -{ -	var slot = i >> (5 * a.height); -	while (a.lengths[slot] <= i) -	{ -		slot++; -	} -	return slot; -} - -// Recursively creates a tree with a given height containing -// only the given item. -function create(item, h) -{ -	if (h === 0) -	{ -		return { -			ctor: '_Array', -			height: 0, -			table: [item] -		}; -	} -	return { -		ctor: '_Array', -		height: h, -		table: [create(item, h - 1)], -		lengths: [1] -	}; -} - -// Recursively creates a tree that contains the given tree. -function parentise(tree, h) -{ -	if (h === tree.height) -	{ -		return tree; -	} - -	return { -		ctor: '_Array', -		height: h, -		table: [parentise(tree, h - 1)], -		lengths: [length(tree)] -	}; -} - -// Emphasizes blood brotherhood beneath two trees. -function siblise(a, b) -{ -	return { -		ctor: '_Array', -		height: a.height + 1, -		table: [a, b], -		lengths: [length(a), length(a) + length(b)] -	}; -} - -function toJSArray(a) -{ -	var jsArray = new Array(length(a)); -	toJSArray_(jsArray, 0, a); -	return jsArray; -} - -function toJSArray_(jsArray, i, a) -{ -	for (var t = 0; t < a.table.length; t++) -	{ -		if (a.height === 0) -		{ -			jsArray[i + t] = a.table[t]; -		} -		else -		{ -			var inc = t === 0 ? 0 : a.lengths[t - 1]; -			toJSArray_(jsArray, i + inc, a.table[t]); -		} -	} -} - -function fromJSArray(jsArray) -{ -	if (jsArray.length === 0) -	{ -		return empty; -	} -	var h = Math.floor(Math.log(jsArray.length) / Math.log(M)); -	return fromJSArray_(jsArray, h, 0, jsArray.length); -} - -function fromJSArray_(jsArray, h, from, to) -{ -	if (h === 0) -	{ -		return { -			ctor: '_Array', -			height: 0, -			table: jsArray.slice(from, to) -		}; -	} - -	var step = Math.pow(M, h); -	var table = new Array(Math.ceil((to - from) / step)); -	var lengths = new Array(table.length); -	for (var i = 0; i < table.length; i++) -	{ -		table[i] = fromJSArray_(jsArray, h - 1, from + (i * step), Math.min(from + ((i + 1) * step), to)); -		lengths[i] = length(table[i]) + (i > 0 ? lengths[i - 1] : 0); -	} -	return { -		ctor: '_Array', -		height: h, -		table: table, -		lengths: lengths -	}; -} - -return { -	empty: empty, -	fromList: fromList, -	toList: toList, -	initialize: F2(initialize), -	append: F2(append), -	push: F2(push), -	slice: F3(slice), -	get: F2(get), -	set: F3(set), -	map: F2(map), -	indexedMap: F2(indexedMap), -	foldl: F3(foldl), -	foldr: F3(foldr), -	length: length, - -	toJSArray: toJSArray, -	fromJSArray: fromJSArray -}; - -}();//import Native.Utils // - -var _elm_lang$core$Native_Basics = function() { - -function div(a, b) -{ -	return (a / b) | 0; -} -function rem(a, b) -{ -	return a % b; -} -function mod(a, b) -{ -	if (b === 0) -	{ -		throw new Error('Cannot perform mod 0. Division by zero error.'); -	} -	var r = a % b; -	var m = a === 0 ? 0 : (b > 0 ? (a >= 0 ? r : r + b) : -mod(-a, -b)); - -	return m === b ? 0 : m; -} -function logBase(base, n) -{ -	return Math.log(n) / Math.log(base); -} -function negate(n) -{ -	return -n; -} -function abs(n) -{ -	return n < 0 ? -n : n; -} - -function min(a, b) -{ -	return _elm_lang$core$Native_Utils.cmp(a, b) < 0 ? a : b; -} -function max(a, b) -{ -	return _elm_lang$core$Native_Utils.cmp(a, b) > 0 ? a : b; -} -function clamp(lo, hi, n) -{ -	return _elm_lang$core$Native_Utils.cmp(n, lo) < 0 -		? lo -		: _elm_lang$core$Native_Utils.cmp(n, hi) > 0 -			? hi -			: n; -} - -var ord = ['LT', 'EQ', 'GT']; - -function compare(x, y) -{ -	return { ctor: ord[_elm_lang$core$Native_Utils.cmp(x, y) + 1] }; -} - -function xor(a, b) -{ -	return a !== b; -} -function not(b) -{ -	return !b; -} -function isInfinite(n) -{ -	return n === Infinity || n === -Infinity; -} - -function truncate(n) -{ -	return n | 0; -} - -function degrees(d) -{ -	return d * Math.PI / 180; -} -function turns(t) -{ -	return 2 * Math.PI * t; -} -function fromPolar(point) -{ -	var r = point._0; -	var t = point._1; -	return _elm_lang$core$Native_Utils.Tuple2(r * Math.cos(t), r * Math.sin(t)); -} -function toPolar(point) -{ -	var x = point._0; -	var y = point._1; -	return _elm_lang$core$Native_Utils.Tuple2(Math.sqrt(x * x + y * y), Math.atan2(y, x)); -} - -return { -	div: F2(div), -	rem: F2(rem), -	mod: F2(mod), - -	pi: Math.PI, -	e: Math.E, -	cos: Math.cos, -	sin: Math.sin, -	tan: Math.tan, -	acos: Math.acos, -	asin: Math.asin, -	atan: Math.atan, -	atan2: F2(Math.atan2), - -	degrees: degrees, -	turns: turns, -	fromPolar: fromPolar, -	toPolar: toPolar, - -	sqrt: Math.sqrt, -	logBase: F2(logBase), -	negate: negate, -	abs: abs, -	min: F2(min), -	max: F2(max), -	clamp: F3(clamp), -	compare: F2(compare), - -	xor: F2(xor), -	not: not, - -	truncate: truncate, -	ceiling: Math.ceil, -	floor: Math.floor, -	round: Math.round, -	toFloat: function(x) { return x; }, -	isNaN: isNaN, -	isInfinite: isInfinite -}; - -}();//import // - -var _elm_lang$core$Native_Utils = function() { - -// COMPARISONS - -function eq(x, y) -{ -	var stack = []; -	var isEqual = eqHelp(x, y, 0, stack); -	var pair; -	while (isEqual && (pair = stack.pop())) -	{ -		isEqual = eqHelp(pair.x, pair.y, 0, stack); -	} -	return isEqual; -} - - -function eqHelp(x, y, depth, stack) -{ -	if (depth > 100) -	{ -		stack.push({ x: x, y: y }); -		return true; -	} - -	if (x === y) -	{ -		return true; -	} - -	if (typeof x !== 'object') -	{ -		if (typeof x === 'function') -		{ -			throw new Error( -				'Trying to use `(==)` on functions. There is no way to know if functions are "the same" in the Elm sense.' -				+ ' Read more about this at http://package.elm-lang.org/packages/elm-lang/core/latest/Basics#==' -				+ ' which describes why it is this way and what the better version will look like.' -			); -		} -		return false; -	} - -	if (x === null || y === null) -	{ -		return false -	} - -	if (x instanceof Date) -	{ -		return x.getTime() === y.getTime(); -	} - -	if (!('ctor' in x)) -	{ -		for (var key in x) -		{ -			if (!eqHelp(x[key], y[key], depth + 1, stack)) -			{ -				return false; -			} -		} -		return true; -	} - -	// convert Dicts and Sets to lists -	if (x.ctor === 'RBNode_elm_builtin' || x.ctor === 'RBEmpty_elm_builtin') -	{ -		x = _elm_lang$core$Dict$toList(x); -		y = _elm_lang$core$Dict$toList(y); -	} -	if (x.ctor === 'Set_elm_builtin') -	{ -		x = _elm_lang$core$Set$toList(x); -		y = _elm_lang$core$Set$toList(y); -	} - -	// check if lists are equal without recursion -	if (x.ctor === '::') -	{ -		var a = x; -		var b = y; -		while (a.ctor === '::' && b.ctor === '::') -		{ -			if (!eqHelp(a._0, b._0, depth + 1, stack)) -			{ -				return false; -			} -			a = a._1; -			b = b._1; -		} -		return a.ctor === b.ctor; -	} - -	// check if Arrays are equal -	if (x.ctor === '_Array') -	{ -		var xs = _elm_lang$core$Native_Array.toJSArray(x); -		var ys = _elm_lang$core$Native_Array.toJSArray(y); -		if (xs.length !== ys.length) -		{ -			return false; -		} -		for (var i = 0; i < xs.length; i++) -		{ -			if (!eqHelp(xs[i], ys[i], depth + 1, stack)) -			{ -				return false; -			} -		} -		return true; -	} - -	if (!eqHelp(x.ctor, y.ctor, depth + 1, stack)) -	{ -		return false; -	} - -	for (var key in x) -	{ -		if (!eqHelp(x[key], y[key], depth + 1, stack)) -		{ -			return false; -		} -	} -	return true; -} - -// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on -// the particular integer values assigned to LT, EQ, and GT. - -var LT = -1, EQ = 0, GT = 1; - -function cmp(x, y) -{ -	if (typeof x !== 'object') -	{ -		return x === y ? EQ : x < y ? LT : GT; -	} - -	if (x instanceof String) -	{ -		var a = x.valueOf(); -		var b = y.valueOf(); -		return a === b ? EQ : a < b ? LT : GT; -	} - -	if (x.ctor === '::' || x.ctor === '[]') -	{ -		while (x.ctor === '::' && y.ctor === '::') -		{ -			var ord = cmp(x._0, y._0); -			if (ord !== EQ) -			{ -				return ord; -			} -			x = x._1; -			y = y._1; -		} -		return x.ctor === y.ctor ? EQ : x.ctor === '[]' ? LT : GT;< | 
