/* Generated by the Nim Compiler v0.20.2 */
/*   (c) 2019 Andreas Rumpf */

var framePtr = null;
var excHandler = 0;
var lastJSError = null;
if (typeof Int8Array === 'undefined') Int8Array = Array;
if (typeof Int16Array === 'undefined') Int16Array = Array;
if (typeof Int32Array === 'undefined') Int32Array = Array;
if (typeof Uint8Array === 'undefined') Uint8Array = Array;
if (typeof Uint16Array === 'undefined') Uint16Array = Array;
if (typeof Uint32Array === 'undefined') Uint32Array = Array;
if (typeof Float32Array === 'undefined') Float32Array = Array;
if (typeof Float64Array === 'undefined') Float64Array = Array;
var NTI44032 = {size: 0,kind: 1,base: null,node: null,finalizer: null};
var NTI205074 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
var NTI47862 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI207579 = {size: 0,kind: 24,base: null,node: null,finalizer: null};
var NTI85448 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85444 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85440 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85436 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85432 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85428 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85424 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85420 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85416 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85412 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85408 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85404 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85400 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85396 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85392 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85388 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85384 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85380 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85376 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85372 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
var NTI85205 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI85283 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI85281 = {size: 0,kind: 22,base: null,node: null,finalizer: null};
var NTI85227 = {size: 0, kind: 14, base: null, node: null, finalizer: null};
var NTI85565 = {size: 0,kind: 24,base: null,node: null,finalizer: null};
var NTI85563 = {size: 0,kind: 24,base: null,node: null,finalizer: null};
var NTI85561 = {size: 0,kind: 24,base: null,node: null,finalizer: null};
var NTI85231 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI85229 = {size: 0,kind: 22,base: null,node: null,finalizer: null};
var NTI87305 = {size: 0,kind: 24,base: null,node: null,finalizer: null};
var NTI47850 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI47858 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI44006 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
var NTI64156 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
var NTI47808 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI47914 = {size: 0,kind: 22,base: null,node: null,finalizer: null};
var NTI44016 = {size: 0,kind: 40,base: null,node: null,finalizer: null};
var NTI44040 = {size: 0,kind: 28,base: null,node: null,finalizer: null};
var NTI44042 = {size: 0,kind: 29,base: null,node: null,finalizer: null};
var NTI47908 = {size: 0,kind: 22,base: null,node: null,finalizer: null};
var NTI47826 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI47828 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI47842 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI47846 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NNI47846 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI47846.node = NNI47846;
var NNI47842 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI47842.node = NNI47842;
var NNI47828 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI47828.node = NNI47828;
NTI47908.base = NTI47826;
NTI47914.base = NTI47826;
var NNI47826 = {kind: 2, len: 6, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI47908, name: "parent", sons: null}, 
{kind: 1, offset: "name", len: 0, typ: NTI44042, name: "name", sons: null}, 
{kind: 1, offset: "message", len: 0, typ: NTI44040, name: "msg", sons: null}, 
{kind: 1, offset: "trace", len: 0, typ: NTI44040, name: "trace", sons: null}, 
{kind: 1, offset: "raiseId", len: 0, typ: NTI44016, name: "raiseId", sons: null}, 
{kind: 1, offset: "up", len: 0, typ: NTI47914, name: "up", sons: null}]};
NTI47826.node = NNI47826;
var NNI47808 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI47808.node = NNI47808;
NTI47826.base = NTI47808;
NTI47828.base = NTI47826;
NTI47842.base = NTI47828;
NTI47846.base = NTI47842;
var NNI64156 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI44042, name: "Field0", sons: null}, 
{kind: 1, offset: "Field1", len: 0, typ: NTI44006, name: "Field1", sons: null}]};
NTI64156.node = NNI64156;
var NNI47858 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI47858.node = NNI47858;
NTI47858.base = NTI47828;
var NNI47850 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI47850.node = NNI47850;
NTI47850.base = NTI47828;
NTI85561.base = NTI85229;
NTI85563.base = NTI85229;
NTI85565.base = NTI85229;
var NNI85227 = {kind: 2, offset: 0, typ: null, name: null, len: 12, sons: {"1": {kind: 1, offset: 1, typ: NTI85227, name: "ElementNode", len: 0, sons: null}, 
"2": {kind: 1, offset: 2, typ: NTI85227, name: "AttributeNode", len: 0, sons: null}, 
"3": {kind: 1, offset: 3, typ: NTI85227, name: "TextNode", len: 0, sons: null}, 
"4": {kind: 1, offset: 4, typ: NTI85227, name: "CDATANode", len: 0, sons: null}, 
"5": {kind: 1, offset: 5, typ: NTI85227, name: "EntityRefNode", len: 0, sons: null}, 
"6": {kind: 1, offset: 6, typ: NTI85227, name: "EntityNode", len: 0, sons: null}, 
"7": {kind: 1, offset: 7, typ: NTI85227, name: "ProcessingInstructionNode", len: 0, sons: null}, 
"8": {kind: 1, offset: 8, typ: NTI85227, name: "CommentNode", len: 0, sons: null}, 
"9": {kind: 1, offset: 9, typ: NTI85227, name: "DocumentNode", len: 0, sons: null}, 
"10": {kind: 1, offset: 10, typ: NTI85227, name: "DocumentTypeNode", len: 0, sons: null}, 
"11": {kind: 1, offset: 11, typ: NTI85227, name: "DocumentFragmentNode", len: 0, sons: null}, 
"12": {kind: 1, offset: 12, typ: NTI85227, name: "NotationNode", len: 0, sons: null}}};
NTI85227.node = NNI85227;
var NNI85283 = {kind: 2, len: 91, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "background", len: 0, typ: NTI44042, name: "background", sons: null}, 
{kind: 1, offset: "backgroundAttachment", len: 0, typ: NTI44042, name: "backgroundAttachment", sons: null}, 
{kind: 1, offset: "backgroundColor", len: 0, typ: NTI44042, name: "backgroundColor", sons: null}, 
{kind: 1, offset: "backgroundImage", len: 0, typ: NTI44042, name: "backgroundImage", sons: null}, 
{kind: 1, offset: "backgroundPosition", len: 0, typ: NTI44042, name: "backgroundPosition", sons: null}, 
{kind: 1, offset: "backgroundRepeat", len: 0, typ: NTI44042, name: "backgroundRepeat", sons: null}, 
{kind: 1, offset: "border", len: 0, typ: NTI44042, name: "border", sons: null}, 
{kind: 1, offset: "borderBottom", len: 0, typ: NTI44042, name: "borderBottom", sons: null}, 
{kind: 1, offset: "borderBottomColor", len: 0, typ: NTI44042, name: "borderBottomColor", sons: null}, 
{kind: 1, offset: "borderBottomStyle", len: 0, typ: NTI44042, name: "borderBottomStyle", sons: null}, 
{kind: 1, offset: "borderBottomWidth", len: 0, typ: NTI44042, name: "borderBottomWidth", sons: null}, 
{kind: 1, offset: "borderColor", len: 0, typ: NTI44042, name: "borderColor", sons: null}, 
{kind: 1, offset: "borderLeft", len: 0, typ: NTI44042, name: "borderLeft", sons: null}, 
{kind: 1, offset: "borderLeftColor", len: 0, typ: NTI44042, name: "borderLeftColor", sons: null}, 
{kind: 1, offset: "borderLeftStyle", len: 0, typ: NTI44042, name: "borderLeftStyle", sons: null}, 
{kind: 1, offset: "borderLeftWidth", len: 0, typ: NTI44042, name: "borderLeftWidth", sons: null}, 
{kind: 1, offset: "borderRight", len: 0, typ: NTI44042, name: "borderRight", sons: null}, 
{kind: 1, offset: "borderRightColor", len: 0, typ: NTI44042, name: "borderRightColor", sons: null}, 
{kind: 1, offset: "borderRightStyle", len: 0, typ: NTI44042, name: "borderRightStyle", sons: null}, 
{kind: 1, offset: "borderRightWidth", len: 0, typ: NTI44042, name: "borderRightWidth", sons: null}, 
{kind: 1, offset: "borderStyle", len: 0, typ: NTI44042, name: "borderStyle", sons: null}, 
{kind: 1, offset: "borderTop", len: 0, typ: NTI44042, name: "borderTop", sons: null}, 
{kind: 1, offset: "borderTopColor", len: 0, typ: NTI44042, name: "borderTopColor", sons: null}, 
{kind: 1, offset: "borderTopStyle", len: 0, typ: NTI44042, name: "borderTopStyle", sons: null}, 
{kind: 1, offset: "borderTopWidth", len: 0, typ: NTI44042, name: "borderTopWidth", sons: null}, 
{kind: 1, offset: "borderWidth", len: 0, typ: NTI44042, name: "borderWidth", sons: null}, 
{kind: 1, offset: "bottom", len: 0, typ: NTI44042, name: "bottom", sons: null}, 
{kind: 1, offset: "captionSide", len: 0, typ: NTI44042, name: "captionSide", sons: null}, 
{kind: 1, offset: "clear", len: 0, typ: NTI44042, name: "clear", sons: null}, 
{kind: 1, offset: "clip", len: 0, typ: NTI44042, name: "clip", sons: null}, 
{kind: 1, offset: "color", len: 0, typ: NTI44042, name: "color", sons: null}, 
{kind: 1, offset: "cursor", len: 0, typ: NTI44042, name: "cursor", sons: null}, 
{kind: 1, offset: "direction", len: 0, typ: NTI44042, name: "direction", sons: null}, 
{kind: 1, offset: "display", len: 0, typ: NTI44042, name: "display", sons: null}, 
{kind: 1, offset: "emptyCells", len: 0, typ: NTI44042, name: "emptyCells", sons: null}, 
{kind: 1, offset: "cssFloat", len: 0, typ: NTI44042, name: "cssFloat", sons: null}, 
{kind: 1, offset: "font", len: 0, typ: NTI44042, name: "font", sons: null}, 
{kind: 1, offset: "fontFamily", len: 0, typ: NTI44042, name: "fontFamily", sons: null}, 
{kind: 1, offset: "fontSize", len: 0, typ: NTI44042, name: "fontSize", sons: null}, 
{kind: 1, offset: "fontStretch", len: 0, typ: NTI44042, name: "fontStretch", sons: null}, 
{kind: 1, offset: "fontStyle", len: 0, typ: NTI44042, name: "fontStyle", sons: null}, 
{kind: 1, offset: "fontVariant", len: 0, typ: NTI44042, name: "fontVariant", sons: null}, 
{kind: 1, offset: "fontWeight", len: 0, typ: NTI44042, name: "fontWeight", sons: null}, 
{kind: 1, offset: "height", len: 0, typ: NTI44042, name: "height", sons: null}, 
{kind: 1, offset: "left", len: 0, typ: NTI44042, name: "left", sons: null}, 
{kind: 1, offset: "letterSpacing", len: 0, typ: NTI44042, name: "letterSpacing", sons: null}, 
{kind: 1, offset: "lineHeight", len: 0, typ: NTI44042, name: "lineHeight", sons: null}, 
{kind: 1, offset: "listStyle", len: 0, typ: NTI44042, name: "listStyle", sons: null}, 
{kind: 1, offset: "listStyleImage", len: 0, typ: NTI44042, name: "listStyleImage", sons: null}, 
{kind: 1, offset: "listStylePosition", len: 0, typ: NTI44042, name: "listStylePosition", sons: null}, 
{kind: 1, offset: "listStyleType", len: 0, typ: NTI44042, name: "listStyleType", sons: null}, 
{kind: 1, offset: "margin", len: 0, typ: NTI44042, name: "margin", sons: null}, 
{kind: 1, offset: "marginBottom", len: 0, typ: NTI44042, name: "marginBottom", sons: null}, 
{kind: 1, offset: "marginLeft", len: 0, typ: NTI44042, name: "marginLeft", sons: null}, 
{kind: 1, offset: "marginRight", len: 0, typ: NTI44042, name: "marginRight", sons: null}, 
{kind: 1, offset: "marginTop", len: 0, typ: NTI44042, name: "marginTop", sons: null}, 
{kind: 1, offset: "maxHeight", len: 0, typ: NTI44042, name: "maxHeight", sons: null}, 
{kind: 1, offset: "maxWidth", len: 0, typ: NTI44042, name: "maxWidth", sons: null}, 
{kind: 1, offset: "minHeight", len: 0, typ: NTI44042, name: "minHeight", sons: null}, 
{kind: 1, offset: "minWidth", len: 0, typ: NTI44042, name: "minWidth", sons: null}, 
{kind: 1, offset: "overflow", len: 0, typ: NTI44042, name: "overflow", sons: null}, 
{kind: 1, offset: "padding", len: 0, typ: NTI44042, name: "padding", sons: null}, 
{kind: 1, offset: "paddingBottom", len: 0, typ: NTI44042, name: "paddingBottom", sons: null}, 
{kind: 1, offset: "paddingLeft", len: 0, typ: NTI44042, name: "paddingLeft", sons: null}, 
{kind: 1, offset: "paddingRight", len: 0, typ: NTI44042, name: "paddingRight", sons: null}, 
{kind: 1, offset: "paddingTop", len: 0, typ: NTI44042, name: "paddingTop", sons: null}, 
{kind: 1, offset: "pageBreakAfter", len: 0, typ: NTI44042, name: "pageBreakAfter", sons: null}, 
{kind: 1, offset: "pageBreakBefore", len: 0, typ: NTI44042, name: "pageBreakBefore", sons: null}, 
{kind: 1, offset: "pointerEvents", len: 0, typ: NTI44042, name: "pointerEvents", sons: null}, 
{kind: 1, offset: "position", len: 0, typ: NTI44042, name: "position", sons: null}, 
{kind: 1, offset: "right", len: 0, typ: NTI44042, name: "right", sons: null}, 
{kind: 1, offset: "scrollbar3dLightColor", len: 0, typ: NTI44042, name: "scrollbar3dLightColor", sons: null}, 
{kind: 1, offset: "scrollbarArrowColor", len: 0, typ: NTI44042, name: "scrollbarArrowColor", sons: null}, 
{kind: 1, offset: "scrollbarBaseColor", len: 0, typ: NTI44042, name: "scrollbarBaseColor", sons: null}, 
{kind: 1, offset: "scrollbarDarkshadowColor", len: 0, typ: NTI44042, name: "scrollbarDarkshadowColor", sons: null}, 
{kind: 1, offset: "scrollbarFaceColor", len: 0, typ: NTI44042, name: "scrollbarFaceColor", sons: null}, 
{kind: 1, offset: "scrollbarHighlightColor", len: 0, typ: NTI44042, name: "scrollbarHighlightColor", sons: null}, 
{kind: 1, offset: "scrollbarShadowColor", len: 0, typ: NTI44042, name: "scrollbarShadowColor", sons: null}, 
{kind: 1, offset: "scrollbarTrackColor", len: 0, typ: NTI44042, name: "scrollbarTrackColor", sons: null}, 
{kind: 1, offset: "tableLayout", len: 0, typ: NTI44042, name: "tableLayout", sons: null}, 
{kind: 1, offset: "textAlign", len: 0, typ: NTI44042, name: "textAlign", sons: null}, 
{kind: 1, offset: "textDecoration", len: 0, typ: NTI44042, name: "textDecoration", sons: null}, 
{kind: 1, offset: "textIndent", len: 0, typ: NTI44042, name: "textIndent", sons: null}, 
{kind: 1, offset: "textTransform", len: 0, typ: NTI44042, name: "textTransform", sons: null}, 
{kind: 1, offset: "transform", len: 0, typ: NTI44042, name: "transform", sons: null}, 
{kind: 1, offset: "top", len: 0, typ: NTI44042, name: "top", sons: null}, 
{kind: 1, offset: "verticalAlign", len: 0, typ: NTI44042, name: "verticalAlign", sons: null}, 
{kind: 1, offset: "visibility", len: 0, typ: NTI44042, name: "visibility", sons: null}, 
{kind: 1, offset: "width", len: 0, typ: NTI44042, name: "width", sons: null}, 
{kind: 1, offset: "wordSpacing", len: 0, typ: NTI44042, name: "wordSpacing", sons: null}, 
{kind: 1, offset: "zIndex", len: 0, typ: NTI44006, name: "zIndex", sons: null}]};
NTI85283.node = NNI85283;
NTI85283.base = NTI47808;
NTI85281.base = NTI85283;
var NNI85231 = {kind: 2, len: 14, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "attributes", len: 0, typ: NTI85561, name: "attributes", sons: null}, 
{kind: 1, offset: "childNodes", len: 0, typ: NTI85563, name: "childNodes", sons: null}, 
{kind: 1, offset: "children", len: 0, typ: NTI85565, name: "children", sons: null}, 
{kind: 1, offset: "data", len: 0, typ: NTI44042, name: "data", sons: null}, 
{kind: 1, offset: "firstChild", len: 0, typ: NTI85229, name: "firstChild", sons: null}, 
{kind: 1, offset: "lastChild", len: 0, typ: NTI85229, name: "lastChild", sons: null}, 
{kind: 1, offset: "nextSibling", len: 0, typ: NTI85229, name: "nextSibling", sons: null}, 
{kind: 1, offset: "nodeName", len: 0, typ: NTI44042, name: "nodeName", sons: null}, 
{kind: 1, offset: "nodeType", len: 0, typ: NTI85227, name: "nodeType", sons: null}, 
{kind: 1, offset: "nodeValue", len: 0, typ: NTI44042, name: "nodeValue", sons: null}, 
{kind: 1, offset: "parentNode", len: 0, typ: NTI85229, name: "parentNode", sons: null}, 
{kind: 1, offset: "previousSibling", len: 0, typ: NTI85229, name: "previousSibling", sons: null}, 
{kind: 1, offset: "innerHTML", len: 0, typ: NTI44042, name: "innerHTML", sons: null}, 
{kind: 1, offset: "style", len: 0, typ: NTI85281, name: "style", sons: null}]};
NTI85231.node = NNI85231;
var NNI85205 = {kind: 2, len: 20, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "onabort", len: 0, typ: NTI85372, name: "onabort", sons: null}, 
{kind: 1, offset: "onblur", len: 0, typ: NTI85376, name: "onblur", sons: null}, 
{kind: 1, offset: "onchange", len: 0, typ: NTI85380, name: "onchange", sons: null}, 
{kind: 1, offset: "onclick", len: 0, typ: NTI85384, name: "onclick", sons: null}, 
{kind: 1, offset: "ondblclick", len: 0, typ: NTI85388, name: "ondblclick", sons: null}, 
{kind: 1, offset: "onerror", len: 0, typ: NTI85392, name: "onerror", sons: null}, 
{kind: 1, offset: "onfocus", len: 0, typ: NTI85396, name: "onfocus", sons: null}, 
{kind: 1, offset: "onkeydown", len: 0, typ: NTI85400, name: "onkeydown", sons: null}, 
{kind: 1, offset: "onkeypress", len: 0, typ: NTI85404, name: "onkeypress", sons: null}, 
{kind: 1, offset: "onkeyup", len: 0, typ: NTI85408, name: "onkeyup", sons: null}, 
{kind: 1, offset: "onload", len: 0, typ: NTI85412, name: "onload", sons: null}, 
{kind: 1, offset: "onmousedown", len: 0, typ: NTI85416, name: "onmousedown", sons: null}, 
{kind: 1, offset: "onmousemove", len: 0, typ: NTI85420, name: "onmousemove", sons: null}, 
{kind: 1, offset: "onmouseout", len: 0, typ: NTI85424, name: "onmouseout", sons: null}, 
{kind: 1, offset: "onmouseover", len: 0, typ: NTI85428, name: "onmouseover", sons: null}, 
{kind: 1, offset: "onmouseup", len: 0, typ: NTI85432, name: "onmouseup", sons: null}, 
{kind: 1, offset: "onreset", len: 0, typ: NTI85436, name: "onreset", sons: null}, 
{kind: 1, offset: "onselect", len: 0, typ: NTI85440, name: "onselect", sons: null}, 
{kind: 1, offset: "onsubmit", len: 0, typ: NTI85444, name: "onsubmit", sons: null}, 
{kind: 1, offset: "onunload", len: 0, typ: NTI85448, name: "onunload", sons: null}]};
NTI85205.node = NNI85205;
NTI85205.base = NTI47808;
NTI85231.base = NTI85205;
NTI85229.base = NTI85231;
NTI87305.base = NTI85229;
NTI207579.base = NTI44042;
var NNI47862 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI47862.node = NNI47862;
NTI47862.base = NTI47828;
var NNI205074 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI44006, name: "Field0", sons: null}, 
{kind: 1, offset: "Field1", len: 0, typ: NTI44032, name: "Field1", sons: null}]};
NTI205074.node = NNI205074;

function makeNimstrLit(c_66254) {
		  var ln = c_66254.length;
  var result = new Array(ln);
  for (var i = 0; i < ln; ++i) {
    result[i] = c_66254.charCodeAt(i);
  }
  return result;
  

	
}

function setConstr() {
		    var result = {};
    for (var i = 0; i < arguments.length; ++i) {
      var x = arguments[i];
      if (typeof(x) == "object") {
        for (var j = x[0]; j <= x[1]; ++j) {
          result[j] = true;
        }
      } else {
        result[x] = true;
      }
    }
    return result;
  

	
}
var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21);

function nimCopy(dest_67427, src_67428, ti_67429) {
	var result_67619 = null;

		switch (ti_67429.kind) {
		case 21:
		case 22:
		case 23:
		case 5:
			if (!(is_fat_pointer_67401(ti_67429))) {
			result_67619 = src_67428;
			}
			else {
				result_67619 = [src_67428[0], src_67428[1]];
			}
			
			break;
		case 19:
			      if (dest_67427 === null || dest_67427 === undefined) {
        dest_67427 = {};
      }
      else {
        for (var key in dest_67427) { delete dest_67427[key]; }
      }
      for (var key in src_67428) { dest_67427[key] = src_67428[key]; }
      result_67619 = dest_67427;
    
			break;
		case 18:
		case 17:
			if (!((ti_67429.base == null))) {
			result_67619 = nimCopy(dest_67427, src_67428, ti_67429.base);
			}
			else {
			if ((ti_67429.kind == 17)) {
			result_67619 = (dest_67427 === null || dest_67427 === undefined) ? {m_type: ti_67429} : dest_67427;
			}
			else {
				result_67619 = (dest_67427 === null || dest_67427 === undefined) ? {} : dest_67427;
			}
			}
			nimCopyAux(result_67619, src_67428, ti_67429.node);
			break;
		case 24:
		case 4:
		case 27:
		case 16:
			      if (src_67428 === null) {
        result_67619 = null;
      }
      else {
        if (dest_67427 === null || dest_67427 === undefined) {
          dest_67427 = new Array(src_67428.length);
        }
        else {
          dest_67427.length = src_67428.length;
        }
        result_67619 = dest_67427;
        for (var i = 0; i < src_67428.length; ++i) {
          result_67619[i] = nimCopy(result_67619[i], src_67428[i], ti_67429.base);
        }
      }
    
			break;
		case 28:
			      if (src_67428 !== null) {
        result_67619 = src_67428.slice(0);
      }
    
			break;
		default: 
			result_67619 = src_67428;
			break;
		}

	return result_67619;

}

function arrayConstr(len_67686, value_67687, typ_67688) {
		    var result = new Array(len_67686);
    for (var i = 0; i < len_67686; ++i) result[i] = nimCopy(null, value_67687, typ_67688);
    return result;
  

	
}

function cstrToNimstr(c_66271) {
		  var ln = c_66271.length;
  var result = new Array(ln);
  var r = 0;
  for (var i = 0; i < ln; ++i) {
    var ch = c_66271.charCodeAt(i);

    if (ch < 128) {
      result[r] = ch;
    }
    else {
      if (ch < 2048) {
        result[r] = (ch >> 6) | 192;
      }
      else {
        if (ch < 55296 || ch >= 57344) {
          result[r] = (ch >> 12) | 224;
        }
        else {
            ++i;
            ch = 65536 + (((ch & 1023) << 10) | (c_66271.charCodeAt(i) & 1023));
            result[r] = (ch >> 18) | 240;
            ++r;
            result[r] = ((ch >> 12) & 63) | 128;
        }
        ++r;
        result[r] = ((ch >> 6) & 63) | 128;
      }
      ++r;
      result[r] = (ch & 63) | 128;
    }
    ++r;
  }
  return result;
  

	
}

function toJSStr(s_66288) {
		  if (s_66288 === null) return "";
  var len = s_66288.length;
  var asciiPart = new Array(len);
  var fcc = String.fromCharCode;
  var nonAsciiPart = null;
  var nonAsciiOffset = 0;
  for (var i = 0; i < len; ++i) {
    if (nonAsciiPart !== null) {
      var offset = (i - nonAsciiOffset) * 2;
      var code = s_66288[i].toString(16);
      if (code.length == 1) {
        code = "0"+code;
      }
      nonAsciiPart[offset] = "%";
      nonAsciiPart[offset + 1] = code;
    }
    else if (s_66288[i] < 128)
      asciiPart[i] = fcc(s_66288[i]);
    else {
      asciiPart.length = i;
      nonAsciiOffset = i;
      nonAsciiPart = new Array((len - i) * 2);
      --i;
    }
  }
  asciiPart = asciiPart.join("");
  return (nonAsciiPart === null) ?
      asciiPart : asciiPart + decodeURIComponent(nonAsciiPart.join(""));
  

	
}

function raiseException(e_64618, ename_64619) {
		e_64618.name = ename_64619;
		if ((excHandler == 0)) {
		unhandledException(e_64618);
		}
		
		e_64618.trace = nimCopy(null, raw_write_stack_trace_64468(), NTI44040);
		throw e_64618;

	
}

function addInt(a_66603, b_66604) {
		    var result = a_66603 + b_66604;
    if (result > 2147483647 || result < -2147483648) raiseOverflow();
    return result;
  

	
}

function chckIndx(i_67705, a_67706, b_67707) {
			var Tmp1;

	var result_67708 = 0;

	BeforeRet: do {
			if (!(a_67706 <= i_67705)) Tmp1 = false; else {				Tmp1 = (i_67705 <= b_67707);			}		if (Tmp1) {
		result_67708 = i_67705;
		break BeforeRet;
		}
		else {
		raiseIndexError(i_67705, a_67706, b_67707);
		}
		
	} while (false);

	return result_67708;

}

function subInt(a_66621, b_66622) {
		    var result = a_66621 - b_66622;
    if (result > 2147483647 || result < -2147483648) raiseOverflow();
    return result;
  

	
}
var ConstSet2 = setConstr([65, 90]);

function chckRange(i_67724, a_67725, b_67726) {
			var Tmp1;

	var result_67727 = 0;

	BeforeRet: do {
			if (!(a_67725 <= i_67724)) Tmp1 = false; else {				Tmp1 = (i_67724 <= b_67726);			}		if (Tmp1) {
		result_67727 = i_67724;
		break BeforeRet;
		}
		else {
		raiseRangeError();
		}
		
	} while (false);

	return result_67727;

}
var ConstSet3 = setConstr(95, 32, 46);
var ConstSet4 = setConstr(95, 32, 46);

function mulInt(a_66639, b_66640) {
		    var result = a_66639 * b_66640;
    if (result > 2147483647 || result < -2147483648) raiseOverflow();
    return result;
  

	
}
var ConstSet5 = setConstr([97, 122]);
var ConstSet6 = setConstr([65, 90], [97, 122]);
var ConstSet7 = setConstr([97, 122]);
var ConstSet8 = setConstr([65, 90]);

function nimMax(a_67021, b_67022) {
		var Tmp1;

	var result_67023 = 0;

	BeforeRet: do {
		if ((b_67022 <= a_67021)) {
		Tmp1 = a_67021;
		}
		else {
		Tmp1 = b_67022;
		}
		
		result_67023 = Tmp1;
		break BeforeRet;
	} while (false);

	return result_67023;

}

function nimMin(a_67003, b_67004) {
		var Tmp1;

	var result_67005 = 0;

	BeforeRet: do {
		if ((a_67003 <= b_67004)) {
		Tmp1 = a_67003;
		}
		else {
		Tmp1 = b_67004;
		}
		
		result_67005 = Tmp1;
		break BeforeRet;
	} while (false);

	return result_67005;

}
var nim_program_result = 0;
var global_raise_hook_61618 = [null];
var local_raise_hook_61623 = [null];
var out_of_mem_hook_61626 = [null];
  if (!Math.trunc) {
    Math.trunc = function(v) {
      v = +v;
      if (!isFinite(v)) return v;

      return (v - v % 1)   ||   (v < 0 ? -0 : v === 0 ? v : 0);
    };
  }
var alternative_207315 = [null];

function is_fat_pointer_67401(ti_67403) {
	var result_67404 = false;

	BeforeRet: do {
		result_67404 = !((ConstSet1[ti_67403.base.kind] != undefined));
		break BeforeRet;
	} while (false);

	return result_67404;

}

function nimCopyAux(dest_67432, src_67433, n_67435) {
		switch (n_67435.kind) {
		case 0:
			break;
		case 1:
			      dest_67432[n_67435.offset] = nimCopy(dest_67432[n_67435.offset], src_67433[n_67435.offset], n_67435.typ);
    
			break;
		case 2:
			    for (var i = 0; i < n_67435.sons.length; i++) {
      nimCopyAux(dest_67432, src_67433, n_67435.sons[i]);
    }
    
			break;
		case 3:
			      dest_67432[n_67435.offset] = nimCopy(dest_67432[n_67435.offset], src_67433[n_67435.offset], n_67435.typ);
      for (var i = 0; i < n_67435.sons.length; ++i) {
        nimCopyAux(dest_67432, src_67433, n_67435.sons[i][1]);
      }
    
			break;
		}

	
}

function add_61638(x_61641, x_61641_Idx, y_61642) {
		      if (x_61641[x_61641_Idx] === null) { x_61641[x_61641_Idx] = []; }
      var off = x_61641[x_61641_Idx].length;
      x_61641[x_61641_Idx].length += y_61642.length;
      for (var i = 0; i < y_61642.length; ++i) {
        x_61641[x_61641_Idx][off+i] = y_61642.charCodeAt(i);
      }
    

	
}

function aux_write_stack_trace_64151(f_64153) {
					var Tmp3;

	var result_64154 = [null];

		var it_64162 = f_64153;
		var i_64164 = 0;
		var total_64166 = 0;
		var temp_frames_64173 = arrayConstr(64, {Field0: null, Field1: 0}, NTI64156);
		L1: do {
				L2: while (true) {
					if (!!((it_64162 == null))) Tmp3 = false; else {						Tmp3 = (i_64164 <= 63);					}				if (!Tmp3) break L2;
					temp_frames_64173[i_64164].Field0 = it_64162.procname;
					temp_frames_64173[i_64164].Field1 = it_64162.line;
					i_64164 += 1;
					total_64166 += 1;
					it_64162 = it_64162.prev;
				}
		} while(false);
		L4: do {
				L5: while (true) {
				if (!!((it_64162 == null))) break L5;
					total_64166 += 1;
					it_64162 = it_64162.prev;
				}
		} while(false);
		result_64154[0] = nimCopy(null, [], NTI44040);
		if (!((total_64166 == i_64164))) {
		if (result_64154[0] != null) { result_64154[0] = (result_64154[0]).concat(makeNimstrLit("(")); } else { result_64154[0] = makeNimstrLit("("); };
		if (result_64154[0] != null) { result_64154[0] = (result_64154[0]).concat(cstrToNimstr(((total_64166 - i_64164))+"")); } else { result_64154[0] = cstrToNimstr(((total_64166 - i_64164))+"").slice(); };
		if (result_64154[0] != null) { result_64154[0] = (result_64154[0]).concat(makeNimstrLit(" calls omitted) ...\x0A")); } else { result_64154[0] = makeNimstrLit(" calls omitted) ...\x0A"); };
		}
		
		L6: do {
			var j_64421 = 0;
			var colontmp__207456 = 0;
			colontmp__207456 = (i_64164 - 1);
			var res_207461 = colontmp__207456;
			L7: do {
					L8: while (true) {
					if (!(0 <= res_207461)) break L8;
						j_64421 = res_207461;
						add_61638(result_64154, 0, temp_frames_64173[j_64421].Field0);
						if ((0 < temp_frames_64173[j_64421].Field1)) {
						if (result_64154[0] != null) { result_64154[0] = (result_64154[0]).concat(makeNimstrLit(", line: ")); } else { result_64154[0] = makeNimstrLit(", line: "); };
						if (result_64154[0] != null) { result_64154[0] = (result_64154[0]).concat(cstrToNimstr((temp_frames_64173[j_64421].Field1)+"")); } else { result_64154[0] = cstrToNimstr((temp_frames_64173[j_64421].Field1)+"").slice(); };
						}
						
						if (result_64154[0] != null) { result_64154[0] = (result_64154[0]).concat(makeNimstrLit("\x0A")); } else { result_64154[0] = makeNimstrLit("\x0A"); };
						res_207461 -= 1;
					}
			} while(false);
		} while(false);

	return result_64154[0];

}

function raw_write_stack_trace_64468() {
	var result_64470 = null;

		if (!((framePtr == null))) {
		result_64470 = nimCopy(null, (makeNimstrLit("Traceback (most recent call last)\x0A") || []).concat(aux_write_stack_trace_64151(framePtr) || []), NTI44040);
		}
		else {
			result_64470 = nimCopy(null, makeNimstrLit("No stack traceback available\x0A"), NTI44040);
		}
		

	return result_64470;

}

function unhandledException(e_64529) {
		var buf_64530 = [[]];
		if (!(((e_64529.message != null ? e_64529.message.length : 0) == 0))) {
		if (buf_64530[0] != null) { buf_64530[0] = (buf_64530[0]).concat(makeNimstrLit("Error: unhandled exception: ")); } else { buf_64530[0] = makeNimstrLit("Error: unhandled exception: "); };
		if (buf_64530[0] != null) { buf_64530[0] = (buf_64530[0]).concat(e_64529.message); } else { buf_64530[0] = e_64529.message.slice(); };
		}
		else {
		if (buf_64530[0] != null) { buf_64530[0] = (buf_64530[0]).concat(makeNimstrLit("Error: unhandled exception")); } else { buf_64530[0] = makeNimstrLit("Error: unhandled exception"); };
		}
		
		if (buf_64530[0] != null) { buf_64530[0] = (buf_64530[0]).concat(makeNimstrLit(" [")); } else { buf_64530[0] = makeNimstrLit(" ["); };
		add_61638(buf_64530, 0, e_64529.name);
		if (buf_64530[0] != null) { buf_64530[0] = (buf_64530[0]).concat(makeNimstrLit("]\x0A")); } else { buf_64530[0] = makeNimstrLit("]\x0A"); };
		if (buf_64530[0] != null) { buf_64530[0] = (buf_64530[0]).concat(raw_write_stack_trace_64468()); } else { buf_64530[0] = raw_write_stack_trace_64468().slice(); };
		var cbuf_64601 = toJSStr(buf_64530[0]);
		framePtr = null;
		  if (typeof(Error) !== "undefined") {
    throw new Error(cbuf_64601);
  }
  else {
    throw cbuf_64601;
  }
  

	
}

function raiseOverflow() {
		var e_65042 = null;
		e_65042 = {m_type: NTI47846, parent: null, name: null, message: null, trace: null, raiseId: 0, up: null};
		e_65042.message = nimCopy(null, makeNimstrLit("over- or underflow"), NTI44040);
		e_65042.parent = null;
		raiseException(e_65042, "OverflowError");

	
}

function is_whitespace_206654(text_206656) {
		     return !/[^\s]/.test(text_206656);
  

	
}

function is_whitespace_206671(x_206673) {
		var Tmp1;
		var Tmp2;

	var result_206674 = false;

	var F={procname:"dochack.isWhitespace",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 134;
		if (!(x_206673.nodeName == "#text")) Tmp2 = false; else {			Tmp2 = is_whitespace_206654(x_206673.textContent);		}		if (Tmp2) Tmp1 = true; else {			Tmp1 = (x_206673.nodeName == "#comment");		}		result_206674 = Tmp1;
	framePtr = F.prev;

	return result_206674;

}

function raiseIndexError(i_65639, a_65640, b_65641) {
		var Tmp1;

		var e_65802 = null;
		e_65802 = {m_type: NTI47858, parent: null, name: null, message: null, trace: null, raiseId: 0, up: null};
		if ((b_65641 < a_65640)) {
		Tmp1 = makeNimstrLit("index out of bounds, the container is empty");
		}
		else {
		Tmp1 = (makeNimstrLit("index ") || []).concat(cstrToNimstr((i_65639)+"") || [],makeNimstrLit(" not in ") || [],cstrToNimstr((a_65640)+"") || [],makeNimstrLit(" .. ") || [],cstrToNimstr((b_65641)+"") || []);
		}
		
		e_65802.message = nimCopy(null, Tmp1, NTI44040);
		e_65802.parent = null;
		raiseException(e_65802, "IndexError");

	
}

function to_toc_206688(x_206690, father_206691) {
								var Tmp5;
						var Tmp6;
						var Tmp7;
						var Tmp8;
			var Tmp15;

	var F={procname:"dochack.toToc",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		if ((x_206690.nodeName == "UL")) {
		F.line = 139;
		var f_206710 = {heading: null, kids: [], sortId: (father_206691.kids != null ? father_206691.kids.length : 0), doSort: false};
		F.line = 140;
		var i_206712 = 0;
		L1: do {
			F.line = 141;
				L2: while (true) {
				if (!(i_206712 < x_206690.childNodes.length)) break L2;
					F.line = 142;
					var nxt_206713 = addInt(i_206712, 1);
					L3: do {
						F.line = 143;
							L4: while (true) {
								if (!(nxt_206713 < x_206690.childNodes.length)) Tmp5 = false; else {									Tmp5 = is_whitespace_206671(x_206690.childNodes[nxt_206713]);								}							if (!Tmp5) break L4;
								F.line = 144;
								nxt_206713 = addInt(nxt_206713, 1);
							}
					} while(false);
						if (!(nxt_206713 < x_206690.childNodes.length)) Tmp8 = false; else {							Tmp8 = (x_206690.childNodes[i_206712].nodeName == "LI");						}						if (!Tmp8) Tmp7 = false; else {							Tmp7 = (x_206690.childNodes[i_206712].childNodes.length == 1);						}						if (!Tmp7) Tmp6 = false; else {							Tmp6 = (x_206690.childNodes[nxt_206713].nodeName == "UL");						}					if (Tmp6) {
					F.line = 147;
					var e_206738 = {heading: x_206690.childNodes[i_206712].childNodes[0], kids: [], sortId: (f_206710.kids != null ? f_206710.kids.length : 0), doSort: false};
					F.line = 148;
					var it_206739 = x_206690.childNodes[nxt_206713];
					L9: do {
						F.line = 149;
						var j_206747 = 0;
						F.line = 2716;
						var colontmp__207432 = 0;
						F.line = 149;
						colontmp__207432 = it_206739.childNodes.length;
						F.line = 2717;
						var i_207433 = 0;
						L10: do {
							F.line = 2718;
								L11: while (true) {
								if (!(i_207433 < colontmp__207432)) break L11;
									F.line = 149;
									j_206747 = i_207433;
									F.line = 150;
									to_toc_206688(it_206739.childNodes[j_206747], e_206738);
									F.line = 2720;
									i_207433 = addInt(i_207433, 1);
								}
						} while(false);
					} while(false);
					F.line = 151;
					if (f_206710.kids != null) { f_206710.kids.push(e_206738); } else { f_206710.kids = [e_206738]; };
					F.line = 152;
					i_206712 = addInt(nxt_206713, 1);
					}
					else {
						F.line = 154;
						to_toc_206688(x_206690.childNodes[i_206712], f_206710);
						F.line = 155;
						i_206712 = addInt(i_206712, 1);
					}
					
				}
		} while(false);
		F.line = 156;
		if (father_206691.kids != null) { father_206691.kids.push(f_206710); } else { father_206691.kids = [f_206710]; };
		}
		else {
		if (is_whitespace_206671(x_206690)) {
		}
		else {
		if ((x_206690.nodeName == "LI")) {
		F.line = 160;
		var idx_206782 = [];
		L12: do {
			F.line = 161;
			var i_206790 = 0;
			F.line = 2716;
			var colontmp__207437 = 0;
			F.line = 161;
			colontmp__207437 = x_206690.childNodes.length;
			F.line = 2717;
			var i_207438 = 0;
			L13: do {
				F.line = 2718;
					L14: while (true) {
					if (!(i_207438 < colontmp__207437)) break L14;
						F.line = 161;
						i_206790 = i_207438;
						if (!(is_whitespace_206671(x_206690.childNodes[i_206790]))) {
						F.line = 162;
						if (idx_206782 != null) { idx_206782.push(i_206790); } else { idx_206782 = [i_206790]; };
						}
						
						F.line = 2720;
						i_207438 = addInt(i_207438, 1);
					}
			} while(false);
		} while(false);
			if (!((idx_206782 != null ? idx_206782.length : 0) == 2)) Tmp15 = false; else {				Tmp15 = (x_206690.childNodes[idx_206782[chckIndx(1, 0, idx_206782.length+0-1)-0]].nodeName == "UL");			}		if (Tmp15) {
		F.line = 164;
		var e_206821 = {heading: x_206690.childNodes[idx_206782[chckIndx(0, 0, idx_206782.length+0-1)-0]], kids: [], sortId: (father_206691.kids != null ? father_206691.kids.length : 0), doSort: false};
		F.line = 166;
		var it_206822 = x_206690.childNodes[idx_206782[chckIndx(1, 0, idx_206782.length+0-1)-0]];
		L16: do {
			F.line = 167;
			var j_206830 = 0;
			F.line = 2716;
			var colontmp__207443 = 0;
			F.line = 167;
			colontmp__207443 = it_206822.childNodes.length;
			F.line = 2717;
			var i_207444 = 0;
			L17: do {
				F.line = 2718;
					L18: while (true) {
					if (!(i_207444 < colontmp__207443)) break L18;
						F.line = 167;
						j_206830 = i_207444;
						F.line = 168;
						to_toc_206688(it_206822.childNodes[j_206830], e_206821);
						F.line = 2720;
						i_207444 = addInt(i_207444, 1);
					}
			} while(false);
		} while(false);
		F.line = 169;
		if (father_206691.kids != null) { father_206691.kids.push(e_206821); } else { father_206691.kids = [e_206821]; };
		}
		else {
			L19: do {
				F.line = 171;
				var i_206845 = 0;
				F.line = 2716;
				var colontmp__207448 = 0;
				F.line = 171;
				colontmp__207448 = x_206690.childNodes.length;
				F.line = 2717;
				var i_207449 = 0;
				L20: do {
					F.line = 2718;
						L21: while (true) {
						if (!(i_207449 < colontmp__207448)) break L21;
							F.line = 171;
							i_206845 = i_207449;
							F.line = 172;
							to_toc_206688(x_206690.childNodes[i_206845], father_206691);
							F.line = 2720;
							i_207449 = addInt(i_207449, 1);
						}
				} while(false);
			} while(false);
		}
		
		}
		else {
			F.line = 174;
		if (father_206691.kids != null) { father_206691.kids.push({heading: x_206690, kids: [], sortId: (father_206691.kids != null ? father_206691.kids.length : 0), doSort: false}); } else { father_206691.kids = [{heading: x_206690, kids: [], sortId: (father_206691.kids != null ? father_206691.kids.length : 0), doSort: false}]; };
		}
		}}
	framePtr = F.prev;

	
}

function extract_items_206339(x_206341, heading_206342, items_206345, items_206345_Idx) {
			var Tmp1;

	var F={procname:"dochack.extractItems",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
	BeforeRet: do {
		if ((x_206341 == null)) {
		F.line = 81;
		break BeforeRet;
		}
		
			if (!!((x_206341.heading == null))) Tmp1 = false; else {				Tmp1 = (x_206341.heading.textContent == heading_206342);			}		if (Tmp1) {
		L2: do {
			F.line = 83;
			var i_206374 = 0;
			F.line = 2716;
			var colontmp__207475 = 0;
			F.line = 83;
			colontmp__207475 = (x_206341.kids != null ? x_206341.kids.length : 0);
			F.line = 2717;
			var i_207476 = 0;
			L3: do {
				F.line = 2718;
					L4: while (true) {
					if (!(i_207476 < colontmp__207475)) break L4;
						F.line = 83;
						i_206374 = i_207476;
						F.line = 84;
						if (items_206345[items_206345_Idx] != null) { items_206345[items_206345_Idx].push(x_206341.kids[chckIndx(i_206374, 0, x_206341.kids.length+0-1)-0].heading); } else { items_206345[items_206345_Idx] = [x_206341.kids[chckIndx(i_206374, 0, x_206341.kids.length+0-1)-0].heading]; };
						F.line = 2720;
						i_207476 = addInt(i_207476, 1);
					}
			} while(false);
		} while(false);
		}
		else {
			L5: do {
				F.line = 86;
				var i_206394 = 0;
				F.line = 2716;
				var colontmp__207480 = 0;
				F.line = 86;
				colontmp__207480 = (x_206341.kids != null ? x_206341.kids.length : 0);
				F.line = 2717;
				var i_207481 = 0;
				L6: do {
					F.line = 2718;
						L7: while (true) {
						if (!(i_207481 < colontmp__207480)) break L7;
							F.line = 86;
							i_206394 = i_207481;
							F.line = 87;
							var it_206395 = x_206341.kids[chckIndx(i_206394, 0, x_206341.kids.length+0-1)-0];
							F.line = 88;
							extract_items_206339(it_206395, heading_206342, items_206345, items_206345_Idx);
							F.line = 2720;
							i_207481 = addInt(i_207481, 1);
						}
				} while(false);
			} while(false);
		}
		
	} while (false);
	framePtr = F.prev;

	
}

function tree_206020(tag_206022, kids_206024) {
	var result_206025 = null;

	var F={procname:"dochack.tree",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 11;
		result_206025 = document.createElement(toJSStr(tag_206022));
		L1: do {
			F.line = 12;
			var k_206056 = null;
			F.line = 3;
			var i_207498 = 0;
			L2: do {
				F.line = 4;
					L3: while (true) {
					if (!(i_207498 < (kids_206024 != null ? kids_206024.length : 0))) break L3;
						F.line = 12;
						k_206056 = kids_206024[chckIndx(i_207498, 0, kids_206024.length+0-1)-0];
						F.line = 13;
						result_206025.appendChild(k_206056);
						F.line = 6;
						i_207498 = addInt(i_207498, 1);
					}
			} while(false);
		} while(false);
	framePtr = F.prev;

	return result_206025;

}

function text_206152(s_206154) {
	var result_206155 = null;

	var F={procname:"dochack.text",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 27;
		result_206155 = document.createTextNode(s_206154);
	framePtr = F.prev;

	return result_206155;

}

function sys_fatal_58662(message_58666) {
	var F={procname:"sysFatal.sysFatal",prev:framePtr,filename:"fatal.nim",line:0};
	framePtr = F;
		F.line = 34;
		var e_58803 = null;
		F.line = 37;
		e_58803 = {m_type: NTI47850, parent: null, name: null, message: null, trace: null, raiseId: 0, up: null};
		F.line = 38;
		e_58803.message = nimCopy(null, message_58666, NTI44040);
		F.line = 39;
		raiseException(e_58803, "AssertionError");
	framePtr = F.prev;

	
}

function raise_assert_58658(msg_58660) {
	var F={procname:"assertions.raiseAssert",prev:framePtr,filename:"assertions.nim",line:0};
	framePtr = F;
		F.line = 20;
		sys_fatal_58662(msg_58660);
	framePtr = F.prev;

	
}

function failed_assert_impl_58851(msg_58853) {
	var F={procname:"assertions.failedAssertImpl",prev:framePtr,filename:"assertions.nim",line:0};
	framePtr = F;
		F.line = 27;
		raise_assert_58658(msg_58853);
	framePtr = F.prev;

	
}

function uncovered_206940(x_206942) {
			var Tmp1;
		var Tmp2;

	var result_206943 = null;

	var F={procname:"dochack.uncovered",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
	BeforeRet: do {
			if (!((x_206942.kids != null ? x_206942.kids.length : 0) == 0)) Tmp1 = false; else {				Tmp1 = !((x_206942.heading == null));			}		if (Tmp1) {
		F.line = 194;
		if (!(x_206942.heading.hasOwnProperty('__karaxMarker__'))) {
		Tmp2 = x_206942;
		}
		else {
		Tmp2 = null;
		}
		
		result_206943 = Tmp2;
		break BeforeRet;
		}
		
		F.line = 195;
		result_206943 = {heading: x_206942.heading, kids: [], sortId: x_206942.sortId, doSort: x_206942.doSort};
		L3: do {
			F.line = 197;
			var i_206982 = 0;
			F.line = 2716;
			var colontmp__207510 = 0;
			F.line = 197;
			colontmp__207510 = (x_206942.kids != null ? x_206942.kids.length : 0);
			F.line = 2717;
			var i_207511 = 0;
			L4: do {
				F.line = 2718;
					L5: while (true) {
					if (!(i_207511 < colontmp__207510)) break L5;
						F.line = 197;
						i_206982 = i_207511;
						F.line = 198;
						var y_206983 = uncovered_206940(x_206942.kids[chckIndx(i_206982, 0, x_206942.kids.length+0-1)-0]);
						if (!((y_206983 == null))) {
						F.line = 199;
						if (result_206943.kids != null) { result_206943.kids.push(y_206983); } else { result_206943.kids = [y_206983]; };
						}
						
						F.line = 2720;
						i_207511 = addInt(i_207511, 1);
					}
			} while(false);
		} while(false);
		if (((result_206943.kids != null ? result_206943.kids.length : 0) == 0)) {
		F.line = 200;
		result_206943 = null;
		}
		
	} while (false);
	framePtr = F.prev;

	return result_206943;

}

function merge_tocs_207017(orig_207019, news_207020) {
	var result_207021 = null;

	var F={procname:"dochack.mergeTocs",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 203;
		result_207021 = uncovered_206940(orig_207019);
		if ((result_207021 == null)) {
		F.line = 205;
		result_207021 = news_207020;
		}
		else {
			L1: do {
				F.line = 207;
				var i_207042 = 0;
				F.line = 2716;
				var colontmp__207504 = 0;
				F.line = 207;
				colontmp__207504 = (news_207020.kids != null ? news_207020.kids.length : 0);
				F.line = 2717;
				var i_207505 = 0;
				L2: do {
					F.line = 2718;
						L3: while (true) {
						if (!(i_207505 < colontmp__207504)) break L3;
							F.line = 207;
							i_207042 = i_207505;
							F.line = 208;
							if (result_207021.kids != null) { result_207021.kids.push(news_207020.kids[chckIndx(i_207042, 0, news_207020.kids.length+0-1)-0]); } else { result_207021.kids = [news_207020.kids[chckIndx(i_207042, 0, news_207020.kids.length+0-1)-0]]; };
							F.line = 2720;
							i_207505 = addInt(i_207505, 1);
						}
				} while(false);
			} while(false);
		}
		
	framePtr = F.prev;

	return result_207021;

}

function build_toc_207063(orig_207065, types_207067, procs_207068) {
	var result_207069 = null;

	var F={procname:"dochack.buildToc",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 211;
		var new_stuff_207083 = {heading: null, kids: [], doSort: true, sortId: 0};
		L1: do {
			F.line = 212;
			var t_207214 = null;
			F.line = 185;
			var i_207493 = 0;
			F.line = 186;
			var l_207494 = (types_207067 != null ? types_207067.length : 0);
			L2: do {
				F.line = 187;
					L3: while (true) {
					if (!(i_207493 < l_207494)) break L3;
						F.line = 212;
						t_207214 = types_207067[chckIndx(i_207493, 0, types_207067.length+0-1)-0];
						F.line = 213;
						var c_207228 = {heading: t_207214.cloneNode(true), kids: [], doSort: true, sortId: 0};
						F.line = 214;
						t_207214.__karaxMarker__ = true;
						L4: do {
							F.line = 215;
							var p_207235 = null;
							F.line = 185;
							var i_207490 = 0;
							F.line = 186;
							var l_207491 = (procs_207068 != null ? procs_207068.length : 0);
							L5: do {
								F.line = 187;
									L6: while (true) {
									if (!(i_207490 < l_207491)) break L6;
										F.line = 215;
										p_207235 = procs_207068[chckIndx(i_207490, 0, procs_207068.length+0-1)-0];
										if (!(p_207235.hasOwnProperty('__karaxMarker__'))) {
										F.line = 217;
										var xx_207236 = p_207235.parentNode.getElementsByClassName("attachedType");
										if ((((xx_207236 != null ? xx_207236.length : 0) == 1) && (xx_207236[chckIndx(0, 0, xx_207236.length+0-1)-0].textContent == t_207214.textContent))) {
										F.line = 220;
										var q_207244 = tree_206020(makeNimstrLit("A"), [text_206152(p_207235.title)]);
										F.line = 221;
										q_207244.setAttribute("href", p_207235.getAttribute("href"));
										F.line = 222;
										if (c_207228.kids != null) { c_207228.kids.push({heading: q_207244, kids: [], sortId: 0, doSort: false}); } else { c_207228.kids = [{heading: q_207244, kids: [], sortId: 0, doSort: false}]; };
										F.line = 223;
										p_207235.__karaxMarker__ = true;
										}
										
										}
										
										F.line = 189;
										i_207490 = addInt(i_207490, 1);
										if (!(((procs_207068 != null ? procs_207068.length : 0) == l_207491))) {
										F.line = 190;
										failed_assert_impl_58851(makeNimstrLit("C:\\Users\\travis\\build\\nim-lang\\nightlies\\nim\\88a0edba4b1a3d535b54336fd589746add54e937\\lib\\system\\iterators.nim(190, 11) `len(a) == L` the length of the seq changed while iterating over it"));
										}
										
									}
							} while(false);
						} while(false);
						F.line = 224;
						if (new_stuff_207083.kids != null) { new_stuff_207083.kids.push(c_207228); } else { new_stuff_207083.kids = [c_207228]; };
						F.line = 189;
						i_207493 = addInt(i_207493, 1);
						if (!(((types_207067 != null ? types_207067.length : 0) == l_207494))) {
						F.line = 190;
						failed_assert_impl_58851(makeNimstrLit("C:\\Users\\travis\\build\\nim-lang\\nightlies\\nim\\88a0edba4b1a3d535b54336fd589746add54e937\\lib\\system\\iterators.nim(190, 11) `len(a) == L` the length of the seq changed while iterating over it"));
						}
						
					}
			} while(false);
		} while(false);
		F.line = 225;
		result_207069 = merge_tocs_207017(orig_207065, new_stuff_207083);
	framePtr = F.prev;

	return result_207069;

}

function add_206085(parent_206087, kid_206088) {
			var Tmp1;
				var Tmp2;

	var F={procname:"dochack.add",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
			if (!(parent_206087.nodeName == "TR")) Tmp1 = false; else {				if ((kid_206088.nodeName == "TD")) Tmp2 = true; else {					Tmp2 = (kid_206088.nodeName == "TH");				}				Tmp1 = Tmp2;			}		if (Tmp1) {
		F.line = 18;
		var k_206089 = document.createElement("TD");
		F.line = 19;
		k_206089.appendChild(kid_206088);
		F.line = 20;
		parent_206087.appendChild(k_206089);
		}
		else {
			F.line = 22;
		parent_206087.appendChild(kid_206088);
		}
		
	framePtr = F.prev;

	
}

function set_class_206103(e_206105, value_206106) {
	var F={procname:"dochack.setClass",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 25;
		e_206105.setAttribute("class", toJSStr(value_206106));
	framePtr = F.prev;

	
}

function to_html_206424(x_206426, is_root_206427) {
			var Tmp1;

		function HEX3Aanonymous_206467(a_206469, b_206470) {
					var Tmp1;

			var result_206471 = 0;

			var F={procname:"toHtml.:anonymous",prev:framePtr,filename:"dochack.nim",line:0};
			framePtr = F;
			BeforeRet: do {
					if (!!((a_206469.heading == null))) Tmp1 = false; else {						Tmp1 = !((b_206470.heading == null));					}				if (Tmp1) {
				F.line = 106;
				var x_206488 = a_206469.heading.textContent;
				F.line = 107;
				var y_206489 = b_206470.heading.textContent;
				if ((x_206488 < y_206489)) {
				F.line = 108;
				result_206471 = -1;
				break BeforeRet;
				}
				
				if ((y_206489 < x_206488)) {
				F.line = 109;
				result_206471 = 1;
				break BeforeRet;
				}
				
				F.line = 110;
				result_206471 = 0;
				break BeforeRet;
				}
				else {
					F.line = 113;
					result_206471 = subInt(a_206469.sortId, b_206470.sortId);
					break BeforeRet;
				}
				
			} while (false);
			framePtr = F.prev;

			return result_206471;

		}

	var result_206428 = null;

	var F={procname:"dochack.toHtml",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
	BeforeRet: do {
		if ((x_206426 == null)) {
		F.line = 91;
		result_206428 = null;
		break BeforeRet;
		}
		
		if (((x_206426.kids != null ? x_206426.kids.length : 0) == 0)) {
		if ((x_206426.heading == null)) {
		F.line = 93;
		result_206428 = null;
		break BeforeRet;
		}
		
		F.line = 94;
		result_206428 = x_206426.heading.cloneNode(true);
		break BeforeRet;
		}
		
		F.line = 95;
		result_206428 = tree_206020(makeNimstrLit("DIV"), []);
			if (!!((x_206426.heading == null))) Tmp1 = false; else {				Tmp1 = !(x_206426.heading.hasOwnProperty('__karaxMarker__'));			}		if (Tmp1) {
		F.line = 97;
		add_206085(result_206428, x_206426.heading.cloneNode(true));
		}
		
		F.line = 98;
		var ul_206464 = tree_206020(makeNimstrLit("UL"), []);
		if (is_root_206427) {
		F.line = 100;
		set_class_206103(ul_206464, makeNimstrLit("simple simple-toc"));
		}
		else {
			F.line = 102;
		set_class_206103(ul_206464, makeNimstrLit("simple"));
		}
		
		if (x_206426.doSort) {
		F.line = 104;
		x_206426.kids.sort(HEX3Aanonymous_206467);
		}
		
		L2: do {
			F.line = 115;
			var k_206614 = null;
			F.line = 183;
			var colontmp__207517 = null;
			F.line = 115;
			colontmp__207517 = x_206426.kids;
			F.line = 185;
			var i_207519 = 0;
			F.line = 186;
			var l_207520 = (colontmp__207517 != null ? colontmp__207517.length : 0);
			L3: do {
				F.line = 187;
					L4: while (true) {
					if (!(i_207519 < l_207520)) break L4;
						F.line = 115;
						k_206614 = colontmp__207517[chckIndx(i_207519, 0, colontmp__207517.length+0-1)-0];
						F.line = 116;
						var y_206615 = to_html_206424(k_206614, false);
						if (!((y_206615 == null))) {
						F.line = 118;
						add_206085(ul_206464, tree_206020(makeNimstrLit("LI"), [y_206615]));
						}
						
						F.line = 189;
						i_207519 = addInt(i_207519, 1);
						if (!(((colontmp__207517 != null ? colontmp__207517.length : 0) == l_207520))) {
						F.line = 190;
						failed_assert_impl_58851(makeNimstrLit("C:\\Users\\travis\\build\\nim-lang\\nightlies\\nim\\88a0edba4b1a3d535b54336fd589746add54e937\\lib\\system\\iterators.nim(190, 11) `len(a) == L` the length of the seq changed while iterating over it"));
						}
						
					}
			} while(false);
		} while(false);
		if (!((ul_206464.childNodes.length == 0))) {
		F.line = 119;
		add_206085(result_206428, ul_206464);
		}
		
		if ((result_206428.childNodes.length == 0)) {
		F.line = 120;
		result_206428 = null;
		}
		
	} while (false);
	framePtr = F.prev;

	return result_206428;

}

function replace_by_id_206172(id_206174, new_tree_206175) {
	var F={procname:"dochack.replaceById",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 32;
		var x_206176 = document.getElementById(id_206174);
		F.line = 33;
		x_206176.parentNode.replaceChild(new_tree_206175, x_206176);
		F.line = 34;
		new_tree_206175.id = id_206174;
	framePtr = F.prev;

	
}

function togglevis_207329(d_207331) {
	var F={procname:"dochack.togglevis",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 230;
		    if (d_207331.style.display == 'none')
      d_207331.style.display = 'inline';
    else
      d_207331.style.display = 'none';
  
	framePtr = F.prev;

	
}

function groupBy(value_207347) {
	var F={procname:"dochack.groupBy",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 238;
		var toc_207348 = document.getElementById("toc-list");
		if ((alternative_207315[0] == null)) {
		F.line = 240;
		var tt_207367 = {heading: null, kids: [], sortId: 0, doSort: false};
		F.line = 241;
		to_toc_206688(toc_207348, tt_207367);
		F.line = 242;
		tt_207367 = tt_207367.kids[chckIndx(0, 0, tt_207367.kids.length+0-1)-0];
		F.line = 244;
		var types_207382 = [[]];
		F.line = 245;
		var procs_207397 = [[]];
		F.line = 247;
		extract_items_206339(tt_207367, "Types", types_207382, 0);
		F.line = 248;
		extract_items_206339(tt_207367, "Procs", procs_207397, 0);
		F.line = 249;
		extract_items_206339(tt_207367, "Converters", procs_207397, 0);
		F.line = 250;
		extract_items_206339(tt_207367, "Methods", procs_207397, 0);
		F.line = 251;
		extract_items_206339(tt_207367, "Templates", procs_207397, 0);
		F.line = 252;
		extract_items_206339(tt_207367, "Macros", procs_207397, 0);
		F.line = 253;
		extract_items_206339(tt_207367, "Iterators", procs_207397, 0);
		F.line = 255;
		var ntoc_207405 = build_toc_207063(tt_207367, types_207382[0], procs_207397[0]);
		F.line = 256;
		var x_207406 = to_html_206424(ntoc_207405, true);
		F.line = 257;
		alternative_207315[0] = tree_206020(makeNimstrLit("DIV"), [x_207406]);
		}
		
		if ((value_207347 == "type")) {
		F.line = 259;
		replace_by_id_206172("tocRoot", alternative_207315[0]);
		}
		else {
			F.line = 261;
		replace_by_id_206172("tocRoot", tree_206020(makeNimstrLit("DIV"), []));
		}
		
		F.line = 262;
		togglevis_207329(document.getElementById("toc-list"));
	framePtr = F.prev;

	
}
var db_207523 = [null];
var contents_207525 = [null];
var oldtoc_207959 = [null];
var timer_207960 = [null];

function raiseRangeError() {
		var e_65441 = null;
		e_65441 = {m_type: NTI47862, parent: null, name: null, message: null, trace: null, raiseId: 0, up: null};
		e_65441.message = nimCopy(null, makeNimstrLit("value out of range"), NTI44040);
		e_65441.parent = null;
		raiseException(e_65441, "RangeError");

	
}

function nsuToLowerAsciiChar(c_194780) {
	var result_194781 = 0;

	var F={procname:"strutils.toLowerAscii",prev:framePtr,filename:"strutils.nim",line:0};
	framePtr = F;
		if ((ConstSet2[c_194780] != undefined)) {
		F.line = 222;
		result_194781 = chckRange(addInt(c_194780, 32), 0, 255);
		}
		else {
			F.line = 224;
			result_194781 = c_194780;
		}
		
	framePtr = F.prev;

	return result_194781;

}

function fuzzy_match_205070(pattern_205072, str_205073) {
							var Tmp4;
							var Tmp5;
								var Tmp6;

	var result_205077 = {Field0: 0, Field1: false};

	var F={procname:"fuzzysearch.fuzzyMatch",prev:framePtr,filename:"fuzzysearch.nim",line:0};
	framePtr = F;
		F.line = 37;
		var score_state_205078 = -100;
		F.line = 38;
		var header_matched_205079 = false;
		F.line = 39;
		var unmatched_leading_char_count_205081 = 0;
		F.line = 40;
		var consecutive_match_count_205083 = 0;
		F.line = 41;
		var str_index_205085 = 0;
		F.line = 42;
		var pat_index_205087 = 0;
		F.line = 43;
		var score_205089 = 0;
		L1: do {
			F.line = 49;
				L2: while (true) {
				if (!((str_index_205085 < (str_205073 != null ? str_205073.length : 0)) && (pat_index_205087 < (pattern_205072 != null ? pattern_205072.length : 0)))) break L2;
					L3: do {
						F.line = 51;
						var pattern_char_205095 = nsuToLowerAsciiChar(pattern_205072.charCodeAt(chckIndx(pat_index_205087, 0, pattern_205072.length+0-1)-0));
						F.line = 52;
						var str_char_205096 = nsuToLowerAsciiChar(str_205073.charCodeAt(chckIndx(str_index_205085, 0, str_205073.length+0-1)-0));
						if ((ConstSet3[pattern_char_205095] != undefined)) {
						F.line = 56;
						pat_index_205087 = addInt(pat_index_205087, 1);
						F.line = 57;
						break L3;
						}
						
						if ((ConstSet4[str_char_205096] != undefined)) {
						F.line = 59;
						str_index_205085 = addInt(str_index_205085, 1);
						F.line = 60;
						break L3;
						}
						
						if ((!(header_matched_205079) && (str_char_205096 == 58))) {
						F.line = 65;
						header_matched_205079 = true;
						F.line = 66;
						score_state_205078 = -100;
						F.line = 67;
						score_205089 = Math.trunc(Math.floor((5.0000000000000000e-001 * score_205089)));
						F.line = 68;
						pat_index_205087 = 0;
						F.line = 69;
						str_index_205085 = addInt(str_index_205085, 1);
						F.line = 70;
						break L3;
						}
						
						if ((str_char_205096 == pattern_char_205095)) {
						F.line = 73;
						switch (score_state_205078) {
						case -100:
						case 20:
							F.line = 75;
							score_state_205078 = 10;
							break;
						case 0:
							F.line = 78;
							score_state_205078 = 5;
							F.line = 78;
							score_205089 = addInt(score_205089, score_state_205078);
							break;
						case 10:
						case 5:
							F.line = 81;
							consecutive_match_count_205083 = addInt(consecutive_match_count_205083, 1);
							F.line = 82;
							score_state_205078 = 5;
							F.line = 83;
							score_205089 = addInt(score_205089, mulInt(5, consecutive_match_count_205083));
							if ((score_state_205078 == 10)) {
							F.line = 86;
							score_205089 = addInt(score_205089, 10);
							}
							
							F.line = 88;
							var on_boundary_205171 = (pat_index_205087 == (pattern_205072 != null ? (pattern_205072.length-1) : -1));
							if ((!(on_boundary_205171) && (str_index_205085 < (str_205073 != null ? (str_205073.length-1) : -1)))) {
							F.line = 91;
							var next_pattern_char_205172 = nsuToLowerAsciiChar(pattern_205072.charCodeAt(chckIndx(addInt(pat_index_205087, 1), 0, pattern_205072.length+0-1)-0));
							F.line = 92;
							var next_str_char_205173 = nsuToLowerAsciiChar(str_205073.charCodeAt(chckIndx(addInt(str_index_205085, 1), 0, str_205073.length+0-1)-0));
							F.line = 95;
							if (!!((ConstSet5[next_str_char_205173] != undefined))) Tmp4 = false; else {								Tmp4 = !((next_str_char_205173 == next_pattern_char_205172));							}							on_boundary_205171 = Tmp4;
							}
							
							if (on_boundary_205171) {
							F.line = 100;
							score_state_205078 = 20;
							F.line = 100;
							score_205089 = addInt(score_205089, score_state_205078);
							}
							
							break;
						case -1:
						case -3:
							F.line = 103;
							if (!((ConstSet6[str_205073.charCodeAt(chckIndx(subInt(str_index_205085, 1), 0, str_205073.length+0-1)-0)] != undefined))) Tmp5 = true; else {								if (!(ConstSet7[str_205073.charCodeAt(chckIndx(subInt(str_index_205085, 1), 0, str_205073.length+0-1)-0)] != undefined)) Tmp6 = false; else {									Tmp6 = (ConstSet8[str_205073.charCodeAt(chckIndx(str_index_205085, 0, str_205073.length+0-1)-0)] != undefined);								}								Tmp5 = Tmp6;							}							var is_leading_char_205211 = Tmp5;
							if (is_leading_char_205211) {
							F.line = 110;
							score_state_205078 = 10;
							}
							else {
								F.line = 114;
								score_state_205078 = 0;
								F.line = 114;
								score_205089 = addInt(score_205089, score_state_205078);
							}
							
							break;
						}
						F.line = 115;
						pat_index_205087 = addInt(pat_index_205087, 1);
						}
						else {
							F.line = 118;
							switch (score_state_205078) {
							case -100:
								F.line = 120;
								score_state_205078 = -3;
								F.line = 120;
								score_205089 = addInt(score_205089, score_state_205078);
								break;
							case 5:
								F.line = 123;
								score_state_205078 = -1;
								F.line = 123;
								score_205089 = addInt(score_205089, score_state_205078);
								F.line = 124;
								consecutive_match_count_205083 = 0;
								break;
							case -3:
								if ((unmatched_leading_char_count_205081 < 3)) {
								F.line = 128;
								score_state_205078 = -3;
								F.line = 128;
								score_205089 = addInt(score_205089, score_state_205078);
								}
								
								F.line = 129;
								unmatched_leading_char_count_205081 = addInt(unmatched_leading_char_count_205081, 1);
								break;
							default: 
								F.line = 132;
								score_state_205078 = -1;
								F.line = 132;
								score_205089 = addInt(score_205089, score_state_205078);
								break;
							}
						}
						
						F.line = 134;
						str_index_205085 = addInt(str_index_205085, 1);
					} while(false);
				}
		} while(false);
		F.line = 137;
		var colontmp__208063 = nimMax(0, score_205089);
		F.line = 138;
		var colontmp__208064 = (0 < score_205089);
		F.line = 136;
		nimCopy(result_205077, {Field0: colontmp__208063, Field1: colontmp__208064}, NTI205074);
	framePtr = F.prev;

	return result_205077;

}

function text_206120(s_206122) {
	var result_206123 = null;

	var F={procname:"dochack.text",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		F.line = 26;
		result_206123 = document.createTextNode(toJSStr(s_206122));
	framePtr = F.prev;

	return result_206123;

}

function dosearch_207557(value_207559) {

		function HEX3Aanonymous_207871(a_207880, b_207881) {
			var result_207885 = 0;

			var F={procname:"dosearch.:anonymous",prev:framePtr,filename:"dochack.nim",line:0};
			framePtr = F;
				F.line = 305;
				result_207885 = subInt(b_207881["Field1"], a_207880["Field1"]);
			framePtr = F.prev;

			return result_207885;

		}

	var result_207560 = null;

	var F={procname:"dochack.dosearch",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		if (((db_207523[0] != null ? db_207523[0].length : 0) == 0)) {
		F.line = 272;
		var stuff_207566 = null;
		F.line = 273;
		    var request = new XMLHttpRequest();
    request.open("GET", "theindex.html", false);
    request.send(null);

    var doc = document.implementation.createHTMLDocument("theindex");
    doc.documentElement.innerHTML = request.responseText;

    //parser=new DOMParser();
    //doc=parser.parseFromString("<html></html>", "text/html");

    stuff_207566 = doc.documentElement;
    
		F.line = 286;
		db_207523[0] = nimCopy(null, stuff_207566.getElementsByClassName("reference"), NTI87305);
		F.line = 287;
		contents_207525[0] = nimCopy(null, [], NTI207579);
		L1: do {
			F.line = 288;
			var ahref_207814 = null;
			F.line = 185;
			var i_208043 = 0;
			F.line = 186;
			var l_208044 = (db_207523[0] != null ? db_207523[0].length : 0);
			L2: do {
				F.line = 187;
					L3: while (true) {
					if (!(i_208043 < l_208044)) break L3;
						F.line = 288;
						ahref_207814 = db_207523[0][chckIndx(i_208043, 0, db_207523[0].length+0-1)-0];
						F.line = 289;
						if (contents_207525[0] != null) { contents_207525[0].push(ahref_207814.getAttribute("data-doc-search-tag")); } else { contents_207525[0] = [ahref_207814.getAttribute("data-doc-search-tag")]; };
						F.line = 189;
						i_208043 = addInt(i_208043, 1);
						if (!(((db_207523[0] != null ? db_207523[0].length : 0) == l_208044))) {
						F.line = 190;
						failed_assert_impl_58851(makeNimstrLit("C:\\Users\\travis\\build\\nim-lang\\nightlies\\nim\\88a0edba4b1a3d535b54336fd589746add54e937\\lib\\system\\iterators.nim(190, 11) `len(a) == L` the length of the seq changed while iterating over it"));
						}
						
					}
			} while(false);
		} while(false);
		}
		
		F.line = 290;
		var ul_207825 = tree_206020(makeNimstrLit("UL"), []);
		F.line = 291;
		result_207560 = tree_206020(makeNimstrLit("DIV"), []);
		F.line = 292;
		set_class_206103(result_207560, makeNimstrLit("search_results"));
		F.line = 293;
		var matches_207844 = [];
		L4: do {
			F.line = 294;
			var i_207857 = 0;
			F.line = 2716;
			var colontmp__208050 = 0;
			F.line = 294;
			colontmp__208050 = (db_207523[0] != null ? db_207523[0].length : 0);
			F.line = 2717;
			var i_208051 = 0;
			L5: do {
				F.line = 2718;
					L6: while (true) {
					if (!(i_208051 < colontmp__208050)) break L6;
						F.line = 294;
						i_207857 = i_208051;
						L7: do {
							F.line = 295;
							var c_207858 = contents_207525[0][chckIndx(i_207857, 0, contents_207525[0].length+0-1)-0];
							if (((c_207858 == "Examples") || (c_207858 == "PEG construction"))) {
							F.line = 300;
							break L7;
							}
							
							F.line = 301;
							var colontmp__208060 = {Field0: 0, Field1: false};
							F.line = 301;
							var score_207859 = 0;
							F.line = 301;
							var matched_207860 = false;
							F.line = 301;
							nimCopy(colontmp__208060, fuzzy_match_205070(value_207559, c_207858), NTI205074);
							F.line = 301;
							score_207859 = colontmp__208060["Field0"];
							F.line = 301;
							matched_207860 = colontmp__208060["Field1"];
							if (matched_207860) {
							F.line = 303;
							if (matches_207844 != null) { matches_207844.push({Field0: db_207523[0][chckIndx(i_207857, 0, db_207523[0].length+0-1)-0], Field1: score_207859}); } else { matches_207844 = [{Field0: db_207523[0][chckIndx(i_207857, 0, db_207523[0].length+0-1)-0], Field1: score_207859}]; };
							}
							
						} while(false);
						F.line = 2720;
						i_208051 = addInt(i_208051, 1);
					}
			} while(false);
		} while(false);
		F.line = 305;
		matches_207844.sort(HEX3Aanonymous_207871);
		L8: do {
			F.line = 306;
			var i_207924 = 0;
			F.line = 2716;
			var colontmp__208056 = 0;
			F.line = 306;
			colontmp__208056 = nimMin((matches_207844 != null ? matches_207844.length : 0), 19);
			F.line = 2717;
			var i_208057 = 0;
			L9: do {
				F.line = 2718;
					L10: while (true) {
					if (!(i_208057 < colontmp__208056)) break L10;
						F.line = 306;
						i_207924 = i_208057;
						F.line = 307;
						matches_207844[chckIndx(i_207924, 0, matches_207844.length+0-1)-0]["Field0"].innerHTML = matches_207844[chckIndx(i_207924, 0, matches_207844.length+0-1)-0]["Field0"].getAttribute("data-doc-search-tag");
						F.line = 308;
						add_206085(ul_207825, tree_206020(makeNimstrLit("LI"), [matches_207844[chckIndx(i_207924, 0, matches_207844.length+0-1)-0]["Field0"]]));
						F.line = 2720;
						i_208057 = addInt(i_208057, 1);
					}
			} while(false);
		} while(false);
		if ((ul_207825.childNodes.length == 0)) {
		F.line = 310;
		add_206085(result_207560, tree_206020(makeNimstrLit("B"), [text_206120(makeNimstrLit("no search results"))]));
		}
		else {
			F.line = 312;
			add_206085(result_207560, tree_206020(makeNimstrLit("B"), [text_206120(makeNimstrLit("search results"))]));
			F.line = 313;
			add_206085(result_207560, ul_207825);
		}
		
	framePtr = F.prev;

	return result_207560;

}

function search() {

		function wrapper_207991() {
			var F={procname:"search.wrapper",prev:framePtr,filename:"dochack.nim",line:0};
			framePtr = F;
				F.line = 320;
				var elem_207993 = document.getElementById("searchInput");
				F.line = 321;
				var value_207994 = elem_207993.value;
				if (!(((value_207994 != null ? value_207994.length : 0) == 0))) {
				if ((oldtoc_207959[0] == null)) {
				F.line = 324;
				oldtoc_207959[0] = document.getElementById("tocRoot");
				}
				
				F.line = 325;
				var results_208000 = dosearch_207557(value_207994);
				F.line = 326;
				replace_by_id_206172("tocRoot", results_208000);
				}
				else {
				if (!((oldtoc_207959[0] == null))) {
				F.line = 328;
				replace_by_id_206172("tocRoot", oldtoc_207959[0]);
				}
				}
			framePtr = F.prev;

			
		}

	var F={procname:"dochack.search",prev:framePtr,filename:"dochack.nim",line:0};
	framePtr = F;
		if (!((timer_207960[0] == null))) {
		F.line = 330;
		clearTimeout(timer_207960[0]);
		}
		
		F.line = 331;
		timer_207960[0] = setTimeout(wrapper_207991, 400);
	framePtr = F.prev;

	
}
