diff --git a/dochack.js b/dochack.js
new file mode 100644
index 0000000..2a87bc8
--- /dev/null
+++ b/dochack.js
@@ -0,0 +1,1609 @@
+/* Generated by the Nim Compiler v2.1.1 */
+var framePtr = null;
+var excHandler = 0;
+var lastJSError = null;
+var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null};
+var NTI704643086 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI33554435 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
+var NTI939524173 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
+var NTI939524179 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI134217745 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217749 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217751 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555169 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555177 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
+var NTI33554449 = {size: 0,kind: 28,base: null,node: null,finalizer: null};
+var NTI33554450 = {size: 0,kind: 29,base: null,node: null,finalizer: null};
+var NTI33555176 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
+var NTI33555173 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555174 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217741 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217743 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NNI134217743 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217743.node = NNI134217743;
+var NNI134217741 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217741.node = NNI134217741;
+var NNI33555174 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555174.node = NNI33555174;
+NTI33555176.base = NTI33555173;
+NTI33555177.base = NTI33555173;
+var NNI33555173 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI33555176, name: "parent", sons: null},
+{kind: 1, offset: "name", len: 0, typ: NTI33554450, name: "name", sons: null},
+{kind: 1, offset: "message", len: 0, typ: NTI33554449, name: "msg", sons: null},
+{kind: 1, offset: "trace", len: 0, typ: NTI33554449, name: "trace", sons: null},
+{kind: 1, offset: "up", len: 0, typ: NTI33555177, name: "up", sons: null}]};
+NTI33555173.node = NNI33555173;
+var NNI33555169 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555169.node = NNI33555169;
+NTI33555173.base = NTI33555169;
+NTI33555174.base = NTI33555173;
+NTI134217741.base = NTI33555174;
+NTI134217743.base = NTI134217741;
+var NNI134217751 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217751.node = NNI134217751;
+NTI134217751.base = NTI33555174;
+var NNI134217749 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217749.node = NNI134217749;
+NTI134217749.base = NTI33555174;
+var NNI134217745 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217745.node = NNI134217745;
+NTI134217745.base = NTI33555174;
+var NNI939524179 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI939524173, name: "a", sons: null},
+{kind: 1, offset: "b", len: 0, typ: NTI33554435, name: "b", sons: null}]};
+NTI939524179.node = NNI939524179;
+var NNI704643086 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI33554435, name: "Field0", sons: null},
+{kind: 1, offset: "Field1", len: 0, typ: NTI33554466, name: "Field1", sons: null}]};
+NTI704643086.node = NNI704643086;
+
+function mnewString(len_33556990) {
+ var result = new Array(len_33556990);
+ for (var i = 0; i < len_33556990; i++) {result[i] = 0;}
+ return result;
+
+
+
+}
+
+function toJSStr(s_33556891) {
+ var result_33556892 = null;
+
+ var res_33556933 = newSeq_33556909((s_33556891).length);
+ var i_33556934 = 0;
+ var j_33556935 = 0;
+ Label1: {
+ Label2: while (true) {
+ if (!(i_33556934 < (s_33556891).length)) break Label2;
+ var c_33556936 = s_33556891[i_33556934];
+ if ((c_33556936 < 128)) {
+ res_33556933[j_33556935] = String.fromCharCode(c_33556936);
+ i_33556934 += 1;
+ }
+ else {
+ var helper_33556948 = newSeq_33556909(0);
+ Label3: {
+ Label4: while (true) {
+ if (!true) break Label4;
+ var code_33556949 = c_33556936.toString(16);
+ if ((((code_33556949) == null ? 0 : (code_33556949).length) == 1)) {
+ helper_33556948.push("%0");;
+ }
+ else {
+ helper_33556948.push("%");;
+ }
+
+ helper_33556948.push(code_33556949);;
+ i_33556934 += 1;
+ if ((((s_33556891).length <= i_33556934) || (s_33556891[i_33556934] < 128))) {
+ break Label3;
+ }
+
+ c_33556936 = s_33556891[i_33556934];
+ }
+ };
+++excHandler;
+ try {
+ res_33556933[j_33556935] = decodeURIComponent(helper_33556948.join(""));
+--excHandler;
+} catch (EXCEPTION) {
+ var prevJSError = lastJSError;
+ lastJSError = EXCEPTION;
+ --excHandler;
+ res_33556933[j_33556935] = helper_33556948.join("");
+ lastJSError = prevJSError;
+ } finally {
+ }
+ }
+
+ j_33556935 += 1;
+ }
+ };
+ if (res_33556933.length < j_33556935) { for (var i = res_33556933.length ; i < j_33556935 ; ++i) res_33556933.push(null); }
+ else { res_33556933.length = j_33556935; };
+ result_33556892 = res_33556933.join("");
+
+ return result_33556892;
+
+}
+
+function raiseException(e_33556643, ename_33556644) {
+ e_33556643.name = ename_33556644;
+ if ((excHandler == 0)) {
+ unhandledException(e_33556643);
+ }
+
+ throw e_33556643;
+
+
+}
+
+function addInt(a_33557037, b_33557038) {
+ var result = a_33557037 + b_33557038;
+ checkOverflowInt(result);
+ return result;
+
+
+
+}
+
+function chckRange(i_33557311, a_33557312, b_33557313) {
+ var result_33557314 = 0;
+
+ BeforeRet: {
+ if (((a_33557312 <= i_33557311) && (i_33557311 <= b_33557313))) {
+ result_33557314 = i_33557311;
+ break BeforeRet;
+ }
+ else {
+ raiseRangeError();
+ }
+
+ };
+
+ return result_33557314;
+
+}
+
+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_33557255, src_33557256, ti_33557257) {
+ var result_33557266 = null;
+
+ switch (ti_33557257.kind) {
+ case 21:
+ case 22:
+ case 23:
+ case 5:
+ if (!(isFatPointer_33557246(ti_33557257))) {
+ result_33557266 = src_33557256;
+ }
+ else {
+ result_33557266 = [src_33557256[0], src_33557256[1]];
+ }
+
+ break;
+ case 19:
+ if (dest_33557255 === null || dest_33557255 === undefined) {
+ dest_33557255 = {};
+ }
+ else {
+ for (var key in dest_33557255) { delete dest_33557255[key]; }
+ }
+ for (var key in src_33557256) { dest_33557255[key] = src_33557256[key]; }
+ result_33557266 = dest_33557255;
+
+ break;
+ case 18:
+ case 17:
+ if (!((ti_33557257.base == null))) {
+ result_33557266 = nimCopy(dest_33557255, src_33557256, ti_33557257.base);
+ }
+ else {
+ if ((ti_33557257.kind == 17)) {
+ result_33557266 = (dest_33557255 === null || dest_33557255 === undefined) ? {m_type: ti_33557257} : dest_33557255;
+ }
+ else {
+ result_33557266 = (dest_33557255 === null || dest_33557255 === undefined) ? {} : dest_33557255;
+ }
+ }
+ nimCopyAux(result_33557266, src_33557256, ti_33557257.node);
+ break;
+ case 4:
+ case 16:
+ if(ArrayBuffer.isView(src_33557256)) {
+ if(dest_33557255 === null || dest_33557255 === undefined || dest_33557255.length != src_33557256.length) {
+ dest_33557255 = new src_33557256.constructor(src_33557256);
+ } else {
+ dest_33557255.set(src_33557256, 0);
+ }
+ result_33557266 = dest_33557255;
+ } else {
+ if (src_33557256 === null) {
+ result_33557266 = null;
+ }
+ else {
+ if (dest_33557255 === null || dest_33557255 === undefined || dest_33557255.length != src_33557256.length) {
+ dest_33557255 = new Array(src_33557256.length);
+ }
+ result_33557266 = dest_33557255;
+ for (var i = 0; i < src_33557256.length; ++i) {
+ result_33557266[i] = nimCopy(result_33557266[i], src_33557256[i], ti_33557257.base);
+ }
+ }
+ }
+
+ break;
+ case 24:
+ case 27:
+ if (src_33557256 === null) {
+ result_33557266 = null;
+ }
+ else {
+ if (dest_33557255 === null || dest_33557255 === undefined || dest_33557255.length != src_33557256.length) {
+ dest_33557255 = new Array(src_33557256.length);
+ }
+ result_33557266 = dest_33557255;
+ for (var i = 0; i < src_33557256.length; ++i) {
+ result_33557266[i] = nimCopy(result_33557266[i], src_33557256[i], ti_33557257.base);
+ }
+ }
+
+ break;
+ case 28:
+ if (src_33557256 !== null) {
+ result_33557266 = src_33557256.slice(0);
+ }
+
+ break;
+ default:
+ result_33557266 = src_33557256;
+ break;
+ }
+
+ return result_33557266;
+
+}
+
+function chckIndx(i_33557306, a_33557307, b_33557308) {
+ var result_33557309 = 0;
+
+ BeforeRet: {
+ if (((a_33557307 <= i_33557306) && (i_33557306 <= b_33557308))) {
+ result_33557309 = i_33557306;
+ break BeforeRet;
+ }
+ else {
+ raiseIndexError(i_33557306, a_33557307, b_33557308);
+ }
+
+ };
+
+ return result_33557309;
+
+}
+
+function makeNimstrLit(c_33556885) {
+ var result = [];
+ for (var i = 0; i < c_33556885.length; ++i) {
+ result[i] = c_33556885.charCodeAt(i);
+ }
+ return result;
+
+
+
+}
+
+function subInt(a_33557041, b_33557042) {
+ var result = a_33557041 - b_33557042;
+ checkOverflowInt(result);
+ return result;
+
+
+
+}
+
+function cstrToNimstr(c_33556888) {
+ var ln = c_33556888.length;
+ var result = new Array(ln);
+ var r = 0;
+ for (var i = 0; i < ln; ++i) {
+ var ch = c_33556888.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_33556888.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;
+
+
+
+}
+var ConstSet2 = setConstr([65, 90]);
+var ConstSet3 = setConstr(95, 32, 46);
+var ConstSet4 = setConstr(95, 32, 46);
+
+function mulInt(a_33557045, b_33557046) {
+ var result = a_33557045 * b_33557046;
+ checkOverflowInt(result);
+ return result;
+
+
+
+}
+var ConstSet5 = setConstr([97, 122]);
+var ConstSet6 = setConstr([65, 90], [97, 122]);
+var ConstSet7 = setConstr([97, 122]);
+var ConstSet8 = setConstr([65, 90]);
+var ConstSet9 = setConstr([65, 90], [97, 122]);
+
+function nimMax(a_33557095, b_33557096) {
+ var Temporary1;
+
+ var result_33557097 = 0;
+
+ BeforeRet: {
+ if ((b_33557096 <= a_33557095)) {
+ Temporary1 = a_33557095;
+ }
+ else {
+ Temporary1 = b_33557096;
+ }
+
+ result_33557097 = Temporary1;
+ break BeforeRet;
+ };
+
+ return result_33557097;
+
+}
+
+function nimMin(a_33557091, b_33557092) {
+ var Temporary1;
+
+ var result_33557093 = 0;
+
+ BeforeRet: {
+ if ((a_33557091 <= b_33557092)) {
+ Temporary1 = a_33557091;
+ }
+ else {
+ Temporary1 = b_33557092;
+ }
+
+ result_33557093 = Temporary1;
+ break BeforeRet;
+ };
+
+ return result_33557093;
+
+}
+
+function addChar(x_33557402, c_33557403) {
+ x_33557402.push(c_33557403);
+
+
+}
+var objectID_1157628079 = [0];
+
+function setTheme(theme_553648134) {
+ document.documentElement.setAttribute("data-theme", theme_553648134);
+ window.localStorage.setItem("theme", theme_553648134);
+
+
+}
+
+function add_33556366(x_33556367, x_33556367_Idx, y_33556368) {
+ if (x_33556367[x_33556367_Idx] === null) { x_33556367[x_33556367_Idx] = []; }
+ var off = x_33556367[x_33556367_Idx].length;
+ x_33556367[x_33556367_Idx].length += y_33556368.length;
+ for (var i = 0; i < y_33556368.length; ++i) {
+ x_33556367[x_33556367_Idx][off+i] = y_33556368.charCodeAt(i);
+ }
+
+
+
+}
+
+function newSeq_33556909(len_33556911) {
+ var result_33556912 = [];
+
+ result_33556912 = new Array(len_33556911); for (var i = 0 ; i < len_33556911 ; ++i) { result_33556912[i] = null; }
+ return result_33556912;
+
+}
+
+function unhandledException(e_33556639) {
+ var buf_33556640 = [[]];
+ if (!(((e_33556639.message).length == 0))) {
+ buf_33556640[0].push.apply(buf_33556640[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110,58,32]);;
+ buf_33556640[0].push.apply(buf_33556640[0], e_33556639.message);;
+ }
+ else {
+ buf_33556640[0].push.apply(buf_33556640[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110]);;
+ }
+
+ buf_33556640[0].push.apply(buf_33556640[0], [32,91]);;
+ add_33556366(buf_33556640, 0, e_33556639.name);
+ buf_33556640[0].push.apply(buf_33556640[0], [93,10]);;
+ var cbuf_33556641 = toJSStr(buf_33556640[0]);
+ if (typeof(Error) !== "undefined") {
+ throw new Error(cbuf_33556641);
+ }
+ else {
+ throw cbuf_33556641;
+ }
+
+
+
+}
+
+function raiseOverflow() {
+ raiseException({message: [111,118,101,114,45,32,111,114,32,117,110,100,101,114,102,108,111,119], parent: null, m_type: NTI134217743, name: null, trace: [], up: null}, "OverflowDefect");
+
+
+}
+
+function checkOverflowInt(a_33557035) {
+ if (a_33557035 > 2147483647 || a_33557035 < -2147483648) raiseOverflow();
+
+
+
+}
+
+function raiseRangeError() {
+ raiseException({message: [118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101], parent: null, m_type: NTI134217751, name: null, trace: [], up: null}, "RangeDefect");
+
+
+}
+
+function addChars_301990087(result_301990089, result_301990089_Idx, x_301990090, start_301990091, n_301990092) {
+ var Temporary1;
+
+ var old_301990093 = (result_301990089[result_301990089_Idx]).length;
+ if (result_301990089[result_301990089_Idx].length < (Temporary1 = chckRange(addInt(old_301990093, n_301990092), 0, 2147483647), Temporary1)) { for (var i = result_301990089[result_301990089_Idx].length; i < Temporary1; ++i) result_301990089[result_301990089_Idx].push(0); }
+ else {result_301990089[result_301990089_Idx].length = Temporary1; };
+ Label2: {
+ var iHEX60gensym4_301990107 = 0;
+ var i_553649320 = 0;
+ Label3: {
+ Label4: while (true) {
+ if (!(i_553649320 < n_301990092)) break Label4;
+ iHEX60gensym4_301990107 = i_553649320;
+ result_301990089[result_301990089_Idx][chckIndx(addInt(old_301990093, iHEX60gensym4_301990107), 0, (result_301990089[result_301990089_Idx]).length - 1)] = x_301990090.charCodeAt(chckIndx(addInt(start_301990091, iHEX60gensym4_301990107), 0, (x_301990090).length - 1));
+ i_553649320 = addInt(i_553649320, 1);
+ }
+ };
+ };
+
+
+}
+
+function addChars_301990083(result_301990085, result_301990085_Idx, x_301990086) {
+ addChars_301990087(result_301990085, result_301990085_Idx, x_301990086, 0, ((x_301990086) == null ? 0 : (x_301990086).length));
+
+
+}
+
+function addInt_301990108(result_301990109, result_301990109_Idx, x_301990110) {
+ addChars_301990083(result_301990109, result_301990109_Idx, ((x_301990110) + ""));
+
+
+}
+
+function addInt_301990126(result_301990127, result_301990127_Idx, x_301990128) {
+ addInt_301990108(result_301990127, result_301990127_Idx, BigInt(x_301990128));
+
+
+}
+
+function HEX24_385875976(x_385875977) {
+ var result_385875978 = [[]];
+
+ addInt_301990126(result_385875978, 0, x_385875977);
+
+ return result_385875978[0];
+
+}
+
+function isFatPointer_33557246(ti_33557247) {
+ var result_33557248 = false;
+
+ BeforeRet: {
+ result_33557248 = !((ConstSet1[ti_33557247.base.kind] != undefined));
+ break BeforeRet;
+ };
+
+ return result_33557248;
+
+}
+
+function nimCopyAux(dest_33557259, src_33557260, n_33557261) {
+ switch (n_33557261.kind) {
+ case 0:
+ break;
+ case 1:
+ dest_33557259[n_33557261.offset] = nimCopy(dest_33557259[n_33557261.offset], src_33557260[n_33557261.offset], n_33557261.typ);
+
+ break;
+ case 2:
+ for (var i = 0; i < n_33557261.sons.length; i++) {
+ nimCopyAux(dest_33557259, src_33557260, n_33557261.sons[i]);
+ }
+
+ break;
+ case 3:
+ dest_33557259[n_33557261.offset] = nimCopy(dest_33557259[n_33557261.offset], src_33557260[n_33557261.offset], n_33557261.typ);
+ for (var i = 0; i < n_33557261.sons.length; ++i) {
+ nimCopyAux(dest_33557259, src_33557260, n_33557261.sons[i][1]);
+ }
+
+ break;
+ }
+
+
+}
+
+function raiseIndexError(i_33556802, a_33556803, b_33556804) {
+ var Temporary1;
+
+ if ((b_33556804 < a_33556803)) {
+ Temporary1 = [105,110,100,101,120,32,111,117,116,32,111,102,32,98,111,117,110,100,115,44,32,116,104,101,32,99,111,110,116,97,105,110,101,114,32,105,115,32,101,109,112,116,121];
+ }
+ else {
+ Temporary1 = ([105,110,100,101,120,32] || []).concat(HEX24_385875976(i_33556802) || [],[32,110,111,116,32,105,110,32] || [],HEX24_385875976(a_33556803) || [],[32,46,46,32] || [],HEX24_385875976(b_33556804) || []);
+ }
+
+ raiseException({message: nimCopy(null, Temporary1, NTI33554449), parent: null, m_type: NTI134217749, name: null, trace: [], up: null}, "IndexDefect");
+
+
+}
+
+function sysFatal_268435501(message_268435504) {
+ raiseException({message: nimCopy(null, message_268435504, NTI33554449), m_type: NTI134217745, parent: null, name: null, trace: [], up: null}, "AssertionDefect");
+
+
+}
+
+function raiseAssert_268435499(msg_268435500) {
+ sysFatal_268435501(msg_268435500);
+
+
+}
+
+function failedAssertImpl_268435541(msg_268435542) {
+ raiseAssert_268435499(msg_268435542);
+
+
+}
+
+function onDOMLoaded(e_553648169) {
+
+function HEX3Aanonymous_553648192(event_553648193) {
+ event_553648193.target.parentNode.style.display = "none";
+ event_553648193.target.parentNode.nextSibling.style.display = "inline";
+
+
+ }
+
+ document.getElementById("theme-select").value = window.localStorage.getItem("theme");
+ Label1: {
+ var pragmaDots_553648191 = null;
+ var colontmp__553649311 = [];
+ colontmp__553649311 = document.getElementsByClassName("pragmadots");
+ var i_553649313 = 0;
+ var L_553649314 = (colontmp__553649311).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649313 < L_553649314)) break Label3;
+ pragmaDots_553648191 = colontmp__553649311[chckIndx(i_553649313, 0, (colontmp__553649311).length - 1)];
+ pragmaDots_553648191.onclick = HEX3Aanonymous_553648192;
+ i_553649313 += 1;
+ if (!(((colontmp__553649311).length == L_553649314))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(251, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+
+
+}
+
+function isWhitespace_553648533(x_553648534) {
+ var result_553648535 = false;
+
+ result_553648535 = (((x_553648534.nodeName == "#text") && !/\S/.test(x_553648534.textContent)) || (x_553648534.nodeName == "#comment"));
+
+ return result_553648535;
+
+}
+
+function toToc_553648536(x_553648537, father_553648538) {
+ var Temporary5;
+ var Temporary6;
+ var Temporary7;
+ var Temporary8;
+ var Temporary15;
+
+ if ((x_553648537.nodeName == "UL")) {
+ var f_553648546 = {heading: null, kids: [], sortId: (father_553648538.kids).length, doSort: false};
+ var i_553648547 = 0;
+ Label1: {
+ Label2: while (true) {
+ if (!(i_553648547 < x_553648537.childNodes.length)) break Label2;
+ var nxt_553648548 = addInt(i_553648547, 1);
+ Label3: {
+ Label4: while (true) {
+ if (!(nxt_553648548 < x_553648537.childNodes.length)) Temporary5 = false; else { Temporary5 = isWhitespace_553648533(x_553648537.childNodes[nxt_553648548]); } if (!Temporary5) break Label4;
+ nxt_553648548 = addInt(nxt_553648548, 1);
+ }
+ };
+ if (!(nxt_553648548 < x_553648537.childNodes.length)) Temporary8 = false; else { Temporary8 = (x_553648537.childNodes[i_553648547].nodeName == "LI"); } if (!Temporary8) Temporary7 = false; else { Temporary7 = (x_553648537.childNodes[i_553648547].childNodes.length == 1); } if (!Temporary7) Temporary6 = false; else { Temporary6 = (x_553648537.childNodes[nxt_553648548].nodeName == "UL"); } if (Temporary6) {
+ var e_553648560 = {heading: x_553648537.childNodes[i_553648547].childNodes[0], kids: [], sortId: (f_553648546.kids).length, doSort: false};
+ var it_553648561 = x_553648537.childNodes[nxt_553648548];
+ Label9: {
+ var j_553648566 = 0;
+ var colontmp__553649327 = 0;
+ colontmp__553649327 = it_553648561.childNodes.length;
+ var i_553649328 = 0;
+ Label10: {
+ Label11: while (true) {
+ if (!(i_553649328 < colontmp__553649327)) break Label11;
+ j_553648566 = i_553649328;
+ toToc_553648536(it_553648561.childNodes[j_553648566], e_553648560);
+ i_553649328 = addInt(i_553649328, 1);
+ }
+ };
+ };
+ f_553648546.kids.push(e_553648560);;
+ i_553648547 = addInt(nxt_553648548, 1);
+ }
+ else {
+ toToc_553648536(x_553648537.childNodes[i_553648547], f_553648546);
+ i_553648547 = addInt(i_553648547, 1);
+ }
+
+ }
+ };
+ father_553648538.kids.push(f_553648546);;
+ }
+ else {
+ if (isWhitespace_553648533(x_553648537)) {
+ }
+ else {
+ if ((x_553648537.nodeName == "LI")) {
+ var idx_553648583 = [];
+ Label12: {
+ var i_553648588 = 0;
+ var colontmp__553649331 = 0;
+ colontmp__553649331 = x_553648537.childNodes.length;
+ var i_553649332 = 0;
+ Label13: {
+ Label14: while (true) {
+ if (!(i_553649332 < colontmp__553649331)) break Label14;
+ i_553648588 = i_553649332;
+ if (!(isWhitespace_553648533(x_553648537.childNodes[i_553648588]))) {
+ idx_553648583.push(i_553648588);;
+ }
+
+ i_553649332 = addInt(i_553649332, 1);
+ }
+ };
+ };
+ if (!((idx_553648583).length == 2)) Temporary15 = false; else { Temporary15 = (x_553648537.childNodes[idx_553648583[chckIndx(1, 0, (idx_553648583).length - 1)]].nodeName == "UL"); } if (Temporary15) {
+ var e_553648604 = {heading: x_553648537.childNodes[idx_553648583[chckIndx(0, 0, (idx_553648583).length - 1)]], kids: [], sortId: (father_553648538.kids).length, doSort: false};
+ var it_553648605 = x_553648537.childNodes[idx_553648583[chckIndx(1, 0, (idx_553648583).length - 1)]];
+ Label16: {
+ var j_553648610 = 0;
+ var colontmp__553649335 = 0;
+ colontmp__553649335 = it_553648605.childNodes.length;
+ var i_553649336 = 0;
+ Label17: {
+ Label18: while (true) {
+ if (!(i_553649336 < colontmp__553649335)) break Label18;
+ j_553648610 = i_553649336;
+ toToc_553648536(it_553648605.childNodes[j_553648610], e_553648604);
+ i_553649336 = addInt(i_553649336, 1);
+ }
+ };
+ };
+ father_553648538.kids.push(e_553648604);;
+ }
+ else {
+ Label19: {
+ var i_553648619 = 0;
+ var colontmp__553649339 = 0;
+ colontmp__553649339 = x_553648537.childNodes.length;
+ var i_553649340 = 0;
+ Label20: {
+ Label21: while (true) {
+ if (!(i_553649340 < colontmp__553649339)) break Label21;
+ i_553648619 = i_553649340;
+ toToc_553648536(x_553648537.childNodes[i_553648619], father_553648538);
+ i_553649340 = addInt(i_553649340, 1);
+ }
+ };
+ };
+ }
+
+ }
+ else {
+ father_553648538.kids.push({heading: x_553648537, kids: [], sortId: (father_553648538.kids).length, doSort: false});;
+ }
+ }}
+
+
+}
+
+function extractItems_553648325(x_553648326, heading_553648327, items_553648328, items_553648328_Idx) {
+ BeforeRet: {
+ if ((x_553648326 == null)) {
+ break BeforeRet;
+ }
+
+ if ((!((x_553648326.heading == null)) && (x_553648326.heading.textContent == heading_553648327))) {
+ Label1: {
+ var i_553648345 = 0;
+ var colontmp__553649343 = 0;
+ colontmp__553649343 = (x_553648326.kids).length;
+ var i_553649344 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649344 < colontmp__553649343)) break Label3;
+ i_553648345 = i_553649344;
+ items_553648328[items_553648328_Idx].push(x_553648326.kids[chckIndx(i_553648345, 0, (x_553648326.kids).length - 1)].heading);;
+ i_553649344 = addInt(i_553649344, 1);
+ }
+ };
+ };
+ }
+ else {
+ Label4: {
+ var k_553648370 = null;
+ var i_553649348 = 0;
+ var L_553649349 = (x_553648326.kids).length;
+ Label5: {
+ Label6: while (true) {
+ if (!(i_553649348 < L_553649349)) break Label6;
+ k_553648370 = x_553648326.kids[chckIndx(i_553649348, 0, (x_553648326.kids).length - 1)];
+ extractItems_553648325(k_553648370, heading_553648327, items_553648328, items_553648328_Idx);
+ i_553649348 += 1;
+ if (!(((x_553648326.kids).length == L_553649349))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(251, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ }
+
+ };
+
+
+}
+
+function tree_553648257(tag_553648258, kids_553648259) {
+ var result_553648260 = null;
+
+ result_553648260 = document.createElement(tag_553648258);
+ Label1: {
+ var k_553648273 = null;
+ var i_553649361 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649361 < (kids_553648259).length)) break Label3;
+ k_553648273 = kids_553648259[chckIndx(i_553649361, 0, (kids_553648259).length - 1)];
+ result_553648260.appendChild(k_553648273);
+ i_553649361 += 1;
+ }
+ };
+ };
+
+ return result_553648260;
+
+}
+
+function text_553648281(s_553648282) {
+ var result_553648283 = null;
+
+ result_553648283 = document.createTextNode(s_553648282);
+
+ return result_553648283;
+
+}
+
+function uncovered_553648723(x_553648724) {
+ var Temporary1;
+
+ var result_553648725 = null;
+
+ BeforeRet: {
+ if ((((x_553648724.kids).length == 0) && !((x_553648724.heading == null)))) {
+ if (!(x_553648724.heading.hasOwnProperty('__karaxMarker__'))) {
+ Temporary1 = x_553648724;
+ }
+ else {
+ Temporary1 = null;
+ }
+
+ result_553648725 = Temporary1;
+ break BeforeRet;
+ }
+
+ result_553648725 = {heading: x_553648724.heading, kids: [], sortId: x_553648724.sortId, doSort: x_553648724.doSort};
+ Label2: {
+ var k_553648740 = null;
+ var i_553649368 = 0;
+ var L_553649369 = (x_553648724.kids).length;
+ Label3: {
+ Label4: while (true) {
+ if (!(i_553649368 < L_553649369)) break Label4;
+ k_553648740 = x_553648724.kids[chckIndx(i_553649368, 0, (x_553648724.kids).length - 1)];
+ var y_553648741 = uncovered_553648723(k_553648740);
+ if (!((y_553648741 == null))) {
+ result_553648725.kids.push(y_553648741);;
+ }
+
+ i_553649368 += 1;
+ if (!(((x_553648724.kids).length == L_553649369))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(251, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ if (((result_553648725.kids).length == 0)) {
+ result_553648725 = null;
+ }
+
+ };
+
+ return result_553648725;
+
+}
+
+function mergeTocs_553648753(orig_553648754, news_553648755) {
+ var result_553648756 = null;
+
+ result_553648756 = uncovered_553648723(orig_553648754);
+ if ((result_553648756 == null)) {
+ result_553648756 = news_553648755;
+ }
+ else {
+ Label1: {
+ var i_553648768 = 0;
+ var colontmp__553649364 = 0;
+ colontmp__553649364 = (news_553648755.kids).length;
+ var i_553649365 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649365 < colontmp__553649364)) break Label3;
+ i_553648768 = i_553649365;
+ result_553648756.kids.push(news_553648755.kids[chckIndx(i_553648768, 0, (news_553648755.kids).length - 1)]);;
+ i_553649365 = addInt(i_553649365, 1);
+ }
+ };
+ };
+ }
+
+
+ return result_553648756;
+
+}
+
+function buildToc_553648773(orig_553648774, types_553648775, procs_553648776) {
+ var result_553648777 = null;
+
+ var newStuff_553648782 = {heading: null, kids: [], doSort: true, sortId: 0};
+ Label1: {
+ var t_553648786 = null;
+ var i_553649356 = 0;
+ var L_553649357 = (types_553648775).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649356 < L_553649357)) break Label3;
+ t_553648786 = types_553648775[chckIndx(i_553649356, 0, (types_553648775).length - 1)];
+ var c_553648791 = {heading: t_553648786.cloneNode(true), kids: [], doSort: true, sortId: 0};
+ t_553648786.__karaxMarker__ = true;
+ Label4: {
+ var p_553648795 = null;
+ var i_553649353 = 0;
+ var L_553649354 = (procs_553648776).length;
+ Label5: {
+ Label6: while (true) {
+ if (!(i_553649353 < L_553649354)) break Label6;
+ p_553648795 = procs_553648776[chckIndx(i_553649353, 0, (procs_553648776).length - 1)];
+ if (!(p_553648795.hasOwnProperty('__karaxMarker__'))) {
+ var xx_553648796 = p_553648795.parentNode.getElementsByClassName("attachedType");
+ if ((((xx_553648796).length == 1) && (xx_553648796[chckIndx(0, 0, (xx_553648796).length - 1)].textContent == t_553648786.textContent))) {
+ var q_553648801 = tree_553648257("A", [text_553648281(p_553648795.title)]);
+ q_553648801.setAttribute("href", p_553648795.getAttribute("href"));
+ c_553648791.kids.push({heading: q_553648801, kids: [], sortId: 0, doSort: false});;
+ p_553648795.__karaxMarker__ = true;
+ }
+
+ }
+
+ i_553649353 += 1;
+ if (!(((procs_553648776).length == L_553649354))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(251, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ newStuff_553648782.kids.push(c_553648791);;
+ i_553649356 += 1;
+ if (!(((types_553648775).length == L_553649357))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(251, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ result_553648777 = mergeTocs_553648753(orig_553648774, newStuff_553648782);
+
+ return result_553648777;
+
+}
+
+function add_553648274(parent_553648275, kid_553648276) {
+ if (((parent_553648275.nodeName == "TR") && ((kid_553648276.nodeName == "TD") || (kid_553648276.nodeName == "TH")))) {
+ var k_553648277 = document.createElement("TD");
+ k_553648277.appendChild(kid_553648276);
+ parent_553648275.appendChild(k_553648277);
+ }
+ else {
+ parent_553648275.appendChild(kid_553648276);
+ }
+
+
+
+}
+
+function setClass_553648278(e_553648279, value_553648280) {
+ e_553648279.setAttribute("class", value_553648280);
+
+
+}
+
+function toHtml_553648403(x_553648404, isRoot_553648405) {
+
+function HEX3Aanonymous_553648423(a_553648424, b_553648425) {
+ var result_553648426 = 0;
+
+ BeforeRet: {
+ if ((!((a_553648424.heading == null)) && !((b_553648425.heading == null)))) {
+ var x_553648435 = a_553648424.heading.textContent;
+ var y_553648436 = b_553648425.heading.textContent;
+ if ((x_553648435 < y_553648436)) {
+ result_553648426 = (-1);
+ break BeforeRet;
+ }
+
+ if ((y_553648436 < x_553648435)) {
+ result_553648426 = 1;
+ break BeforeRet;
+ }
+
+ result_553648426 = 0;
+ break BeforeRet;
+ }
+ else {
+ result_553648426 = subInt(a_553648424.sortId, b_553648425.sortId);
+ break BeforeRet;
+ }
+
+ };
+
+ return result_553648426;
+
+ }
+
+ var result_553648406 = null;
+
+ BeforeRet: {
+ if ((x_553648404 == null)) {
+ result_553648406 = null;
+ break BeforeRet;
+ }
+
+ if (((x_553648404.kids).length == 0)) {
+ if ((x_553648404.heading == null)) {
+ result_553648406 = null;
+ break BeforeRet;
+ }
+
+ result_553648406 = x_553648404.heading.cloneNode(true);
+ break BeforeRet;
+ }
+
+ result_553648406 = tree_553648257("DIV", []);
+ if ((!((x_553648404.heading == null)) && !(x_553648404.heading.hasOwnProperty('__karaxMarker__')))) {
+ add_553648274(result_553648406, x_553648404.heading.cloneNode(true));
+ }
+
+ var ul_553648422 = tree_553648257("UL", []);
+ if (isRoot_553648405) {
+ setClass_553648278(ul_553648422, "simple simple-toc");
+ }
+ else {
+ setClass_553648278(ul_553648422, "simple");
+ }
+
+ if (x_553648404.doSort) {
+ x_553648404.kids.sort(HEX3Aanonymous_553648423);
+ }
+
+ Label1: {
+ var k_553648448 = null;
+ var i_553649372 = 0;
+ var L_553649373 = (x_553648404.kids).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649372 < L_553649373)) break Label3;
+ k_553648448 = x_553648404.kids[chckIndx(i_553649372, 0, (x_553648404.kids).length - 1)];
+ var y_553648449 = toHtml_553648403(k_553648448, false);
+ if (!((y_553648449 == null))) {
+ add_553648274(ul_553648422, tree_553648257("LI", [y_553648449]));
+ }
+
+ i_553649372 += 1;
+ if (!(((x_553648404.kids).length == L_553649373))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(251, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ if (!((ul_553648422.childNodes.length == 0))) {
+ add_553648274(result_553648406, ul_553648422);
+ }
+
+ if ((result_553648406.childNodes.length == 0)) {
+ result_553648406 = null;
+ }
+
+ };
+
+ return result_553648406;
+
+}
+
+function replaceById_553648284(id_553648285, newTree_553648286) {
+ var x_553648287 = document.getElementById(id_553648285);
+ x_553648287.parentNode.replaceChild(newTree_553648286, x_553648287);
+ newTree_553648286.id = id_553648285;
+
+
+}
+
+function togglevis_553648831(d_553648832) {
+ if ((d_553648832.style.display == "none")) {
+ d_553648832.style.display = "inline";
+ }
+ else {
+ d_553648832.style.display = "none";
+ }
+
+
+
+}
+
+function groupBy(value_553648834) {
+ var toc_553648835 = document.getElementById("toc-list");
+ if ((alternative_553648830[0] == null)) {
+ var tt_553648843 = {heading: null, kids: [], sortId: 0, doSort: false};
+ toToc_553648536(toc_553648835, tt_553648843);
+ tt_553648843 = tt_553648843.kids[chckIndx(0, 0, (tt_553648843.kids).length - 1)];
+ var types_553648848 = [[]];
+ var procs_553648853 = [[]];
+ extractItems_553648325(tt_553648843, "Types", types_553648848, 0);
+ extractItems_553648325(tt_553648843, "Procs", procs_553648853, 0);
+ extractItems_553648325(tt_553648843, "Converters", procs_553648853, 0);
+ extractItems_553648325(tt_553648843, "Methods", procs_553648853, 0);
+ extractItems_553648325(tt_553648843, "Templates", procs_553648853, 0);
+ extractItems_553648325(tt_553648843, "Macros", procs_553648853, 0);
+ extractItems_553648325(tt_553648843, "Iterators", procs_553648853, 0);
+ var ntoc_553648854 = buildToc_553648773(tt_553648843, types_553648848[0], procs_553648853[0]);
+ var x_553648855 = toHtml_553648403(ntoc_553648854, true);
+ alternative_553648830[0] = tree_553648257("DIV", [x_553648855]);
+ }
+
+ if ((value_553648834 == "type")) {
+ replaceById_553648284("tocRoot", alternative_553648830[0]);
+ }
+ else {
+ replaceById_553648284("tocRoot", tree_553648257("DIV", []));
+ }
+
+ togglevis_553648831(document.getElementById("toc-list"));
+
+
+}
+
+function HEX5BHEX5D_721421547(s_721421550, x_721421551) {
+ var result_721421552 = [];
+
+ var a_721421554 = x_721421551.a;
+ var L_721421556 = addInt(subInt(subInt((s_721421550).length, x_721421551.b), a_721421554), 1);
+ result_721421552 = nimCopy(null, mnewString(chckRange(L_721421556, 0, 2147483647)), NTI33554449);
+ Label1: {
+ var i_721421561 = 0;
+ var i_553649382 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649382 < L_721421556)) break Label3;
+ i_721421561 = i_553649382;
+ result_721421552[chckIndx(i_721421561, 0, (result_721421552).length - 1)] = s_721421550[chckIndx(addInt(i_721421561, a_721421554), 0, (s_721421550).length - 1)];
+ i_553649382 = addInt(i_553649382, 1);
+ }
+ };
+ };
+
+ return result_721421552;
+
+}
+
+function HEX2EHEX2E_939524199(a_939524202, b_939524203) {
+ var result_939524206 = ({a: 0, b: 0});
+
+ result_939524206 = nimCopy(result_939524206, {a: a_939524202, b: b_939524203}, NTI939524179);
+
+ return result_939524206;
+
+}
+async function loadIndex_553649049() {
+ var result_553649051 = null;
+
+ BeforeRet: {
+ var indexURL_553649057 = document.getElementById("indexLink").getAttribute("href");
+ var rootURL_553649082 = HEX5BHEX5D_721421547(cstrToNimstr(indexURL_553649057), HEX2EHEX2E_939524199(0, 14));
+ var resp_553649094 = (await (await fetch(indexURL_553649057)).text());
+ var indexElem_553649095 = document.createElement("div");
+ indexElem_553649095.innerHTML = resp_553649094;
+ Label1: {
+ var href_553649116 = null;
+ var colontmp__553649376 = [];
+ colontmp__553649376 = indexElem_553649095.getElementsByClassName("reference");
+ var i_553649378 = 0;
+ var L_553649379 = (colontmp__553649376).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649378 < L_553649379)) break Label3;
+ href_553649116 = colontmp__553649376[chckIndx(i_553649378, 0, (colontmp__553649376).length - 1)];
+ href_553649116.setAttribute("href", toJSStr((rootURL_553649082 || []).concat(cstrToNimstr(href_553649116.getAttribute("href")) || [])));
+ db_553648872[0].push(href_553649116);;
+ contents_553648873[0].push(href_553649116.getAttribute("data-doc-search-tag"));;
+ i_553649378 += 1;
+ if (!(((colontmp__553649376).length == L_553649379))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(251, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ result_553649051 = undefined;
+ break BeforeRet;
+ };
+
+ return result_553649051;
+
+}
+
+function then_553649225(future_553649228, onSuccess_553649229, onReject_553649230) {
+ var result_553649231 = null;
+
+ BeforeRet: {
+ var ret_553649241 = null;
+ ret_553649241 = future_553649228.then(onSuccess_553649229, onReject_553649230)
+ result_553649231 = ret_553649241;
+ break BeforeRet;
+ };
+
+ return result_553649231;
+
+}
+
+function nsuToLowerAsciiChar(c_721420373) {
+ var result_721420374 = 0;
+
+ if ((ConstSet2[c_721420373] != undefined)) {
+ result_721420374 = (c_721420373 ^ 32);
+ }
+ else {
+ result_721420374 = c_721420373;
+ }
+
+
+ return result_721420374;
+
+}
+
+function fuzzyMatch_704643088(pattern_704643089, str_704643090) {
+ var Temporary4;
+ var Temporary5;
+ var Temporary6;
+ var Temporary7;
+ var Temporary8;
+
+ var result_704643093 = {Field0: 0, Field1: false};
+
+ var scoreState_704643094 = (-100);
+ var headerMatched_704643095 = false;
+ var unmatchedLeadingCharCount_704643096 = 0;
+ var consecutiveMatchCount_704643097 = 0;
+ var strIndex_704643098 = 0;
+ var patIndex_704643099 = 0;
+ var score_704643100 = 0;
+ Label1: {
+ Label2: while (true) {
+ if (!((strIndex_704643098 < ((str_704643090) == null ? 0 : (str_704643090).length)) && (patIndex_704643099 < ((pattern_704643089) == null ? 0 : (pattern_704643089).length)))) break Label2;
+ Label3: {
+ var patternChar_704643103 = nsuToLowerAsciiChar(pattern_704643089.charCodeAt(chckIndx(patIndex_704643099, 0, (pattern_704643089).length - 1)));
+ var strChar_704643104 = nsuToLowerAsciiChar(str_704643090.charCodeAt(chckIndx(strIndex_704643098, 0, (str_704643090).length - 1)));
+ if ((ConstSet3[patternChar_704643103] != undefined)) {
+ patIndex_704643099 = addInt(patIndex_704643099, 1);
+ break Label3;
+ }
+
+ if ((ConstSet4[strChar_704643104] != undefined)) {
+ strIndex_704643098 = addInt(strIndex_704643098, 1);
+ break Label3;
+ }
+
+ if ((!(headerMatched_704643095) && (strChar_704643104 == 58))) {
+ headerMatched_704643095 = true;
+ scoreState_704643094 = (-100);
+ score_704643100 = ((Math.floor((0.5 * score_704643100))) | 0);
+ patIndex_704643099 = 0;
+ strIndex_704643098 = addInt(strIndex_704643098, 1);
+ break Label3;
+ }
+
+ if ((strChar_704643104 == patternChar_704643103)) {
+ switch (scoreState_704643094) {
+ case (-100):
+ case 20:
+ scoreState_704643094 = 10;
+ break;
+ case 0:
+ scoreState_704643094 = 5;
+ score_704643100 = addInt(score_704643100, scoreState_704643094);
+ break;
+ case 10:
+ case 5:
+ consecutiveMatchCount_704643097 = addInt(consecutiveMatchCount_704643097, 1);
+ scoreState_704643094 = 5;
+ score_704643100 = addInt(score_704643100, mulInt(5, consecutiveMatchCount_704643097));
+ if ((scoreState_704643094 == 10)) {
+ score_704643100 = addInt(score_704643100, 10);
+ }
+
+ var onBoundary_704643156 = (patIndex_704643099 == ((pattern_704643089) == null ? -1 : (pattern_704643089).length - 1));
+ if ((!(onBoundary_704643156) && (strIndex_704643098 < ((str_704643090) == null ? -1 : (str_704643090).length - 1)))) {
+ var nextPatternChar_704643157 = nsuToLowerAsciiChar(pattern_704643089.charCodeAt(chckIndx(addInt(patIndex_704643099, 1), 0, (pattern_704643089).length - 1)));
+ var nextStrChar_704643158 = nsuToLowerAsciiChar(str_704643090.charCodeAt(chckIndx(addInt(strIndex_704643098, 1), 0, (str_704643090).length - 1)));
+ if (!!((ConstSet5[nextStrChar_704643158] != undefined))) Temporary4 = false; else { Temporary4 = !((nextStrChar_704643158 == nextPatternChar_704643157)); } onBoundary_704643156 = Temporary4;
+ }
+
+ if (onBoundary_704643156) {
+ scoreState_704643094 = 20;
+ score_704643100 = addInt(score_704643100, scoreState_704643094);
+ }
+
+ break;
+ case (-1):
+ case (-3):
+ if (!((ConstSet6[str_704643090.charCodeAt(chckIndx(subInt(strIndex_704643098, 1), 0, (str_704643090).length - 1))] != undefined))) Temporary5 = true; else { if (!(ConstSet7[str_704643090.charCodeAt(chckIndx(subInt(strIndex_704643098, 1), 0, (str_704643090).length - 1))] != undefined)) Temporary6 = false; else { Temporary6 = (ConstSet8[str_704643090.charCodeAt(chckIndx(strIndex_704643098, 0, (str_704643090).length - 1))] != undefined); } Temporary5 = Temporary6; } var isLeadingChar_704643182 = Temporary5;
+ if (isLeadingChar_704643182) {
+ scoreState_704643094 = 10;
+ }
+ else {
+ scoreState_704643094 = 0;
+ score_704643100 = addInt(score_704643100, scoreState_704643094);
+ }
+
+ break;
+ }
+ patIndex_704643099 = addInt(patIndex_704643099, 1);
+ }
+ else {
+ switch (scoreState_704643094) {
+ case (-100):
+ scoreState_704643094 = (-3);
+ score_704643100 = addInt(score_704643100, scoreState_704643094);
+ break;
+ case 5:
+ scoreState_704643094 = (-1);
+ score_704643100 = addInt(score_704643100, scoreState_704643094);
+ consecutiveMatchCount_704643097 = 0;
+ break;
+ case (-3):
+ if ((unmatchedLeadingCharCount_704643096 < 3)) {
+ scoreState_704643094 = (-3);
+ score_704643100 = addInt(score_704643100, scoreState_704643094);
+ }
+
+ unmatchedLeadingCharCount_704643096 = addInt(unmatchedLeadingCharCount_704643096, 1);
+ break;
+ default:
+ scoreState_704643094 = (-1);
+ score_704643100 = addInt(score_704643100, scoreState_704643094);
+ break;
+ }
+ }
+
+ strIndex_704643098 = addInt(strIndex_704643098, 1);
+ };
+ }
+ };
+ if (!(patIndex_704643099 == ((pattern_704643089) == null ? 0 : (pattern_704643089).length))) Temporary7 = false; else { if ((strIndex_704643098 == ((str_704643090) == null ? 0 : (str_704643090).length))) Temporary8 = true; else { Temporary8 = !((ConstSet9[str_704643090.charCodeAt(chckIndx(strIndex_704643098, 0, (str_704643090).length - 1))] != undefined)); } Temporary7 = Temporary8; } if (Temporary7) {
+ score_704643100 = addInt(score_704643100, 10);
+ }
+
+ var colontmp__553649395 = nimMax(0, score_704643100);
+ var colontmp__553649396 = (0 < score_704643100);
+ result_704643093 = nimCopy(result_704643093, {Field0: colontmp__553649395, Field1: colontmp__553649396}, NTI704643086);
+
+ return result_704643093;
+
+}
+
+function escapeCString_553648874(x_553648875, x_553648875_Idx) {
+ var s_553648876 = [];
+ Label1: {
+ var c_553648877 = 0;
+ var iHEX60gensym12_553649399 = 0;
+ var nHEX60gensym12_553649400 = ((x_553648875[x_553648875_Idx]) == null ? 0 : (x_553648875[x_553648875_Idx]).length);
+ Label2: {
+ Label3: while (true) {
+ if (!(iHEX60gensym12_553649399 < nHEX60gensym12_553649400)) break Label3;
+ c_553648877 = x_553648875[x_553648875_Idx].charCodeAt(chckIndx(iHEX60gensym12_553649399, 0, (x_553648875[x_553648875_Idx]).length - 1));
+ switch (c_553648877) {
+ case 60:
+ s_553648876.push.apply(s_553648876, [38,108,116,59]);;
+ break;
+ case 62:
+ s_553648876.push.apply(s_553648876, [38,103,116,59]);;
+ break;
+ default:
+ addChar(s_553648876, c_553648877);;
+ break;
+ }
+ iHEX60gensym12_553649399 += 1;
+ }
+ };
+ };
+ x_553648875[x_553648875_Idx] = toJSStr(s_553648876);
+
+
+}
+
+function dosearch_553648878(value_553648879) {
+
+function HEX3Aanonymous_553648906(a_553648911, b_553648912) {
+ var result_553648917 = 0;
+
+ result_553648917 = subInt(b_553648912["Field1"], a_553648911["Field1"]);
+
+ return result_553648917;
+
+ }
+
+ var result_553648880 = null;
+
+ BeforeRet: {
+ if (((db_553648872[0]).length == 0)) {
+ break BeforeRet;
+ }
+
+ var ul_553648884 = tree_553648257("UL", []);
+ result_553648880 = tree_553648257("DIV", []);
+ setClass_553648278(result_553648880, "search_results");
+ var matches_553648889 = [];
+ Label1: {
+ var i_553648897 = 0;
+ var colontmp__553649386 = 0;
+ colontmp__553649386 = (db_553648872[0]).length;
+ var i_553649387 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_553649387 < colontmp__553649386)) break Label3;
+ i_553648897 = i_553649387;
+ Label4: {
+ var c_553648898 = contents_553648873[0][chckIndx(i_553648897, 0, (contents_553648873[0]).length - 1)];
+ if (((c_553648898 == "Examples") || (c_553648898 == "PEG construction"))) {
+ break Label4;
+ }
+
+ var tmpTuple_553648899 = fuzzyMatch_704643088(value_553648879, c_553648898);
+ var score_553648900 = tmpTuple_553648899["Field0"];
+ var matched_553648901 = tmpTuple_553648899["Field1"];
+ if (matched_553648901) {
+ matches_553648889.push({Field0: db_553648872[0][chckIndx(i_553648897, 0, (db_553648872[0]).length - 1)], Field1: score_553648900});;
+ }
+
+ };
+ i_553649387 = addInt(i_553649387, 1);
+ }
+ };
+ };
+ matches_553648889.sort(HEX3Aanonymous_553648906);
+ Label5: {
+ var i_553648934 = 0;
+ var colontmp__553649390 = 0;
+ colontmp__553649390 = nimMin((matches_553648889).length, 29);
+ var i_553649391 = 0;
+ Label6: {
+ Label7: while (true) {
+ if (!(i_553649391 < colontmp__553649390)) break Label7;
+ i_553648934 = i_553649391;
+ matches_553648889[chckIndx(i_553648934, 0, (matches_553648889).length - 1)]["Field0"].innerHTML = matches_553648889[chckIndx(i_553648934, 0, (matches_553648889).length - 1)]["Field0"].getAttribute("data-doc-search-tag");
+ escapeCString_553648874(matches_553648889[chckIndx(i_553648934, 0, (matches_553648889).length - 1)]["Field0"], "innerHTML");
+ add_553648274(ul_553648884, tree_553648257("LI", [matches_553648889[chckIndx(i_553648934, 0, (matches_553648889).length - 1)]["Field0"]]));
+ i_553649391 = addInt(i_553649391, 1);
+ }
+ };
+ };
+ if ((ul_553648884.childNodes.length == 0)) {
+ add_553648274(result_553648880, tree_553648257("B", [text_553648281("no search results")]));
+ }
+ else {
+ add_553648274(result_553648880, tree_553648257("B", [text_553648281("search results")]));
+ add_553648274(result_553648880, ul_553648884);
+ }
+
+ };
+
+ return result_553648880;
+
+}
+
+function search() {
+
+function wrapper_553649210() {
+ var elem_553649211 = document.getElementById("searchInput");
+ var value_553649212 = elem_553649211.value;
+ if (!((((value_553649212) == null ? 0 : (value_553649212).length) == 0))) {
+ if ((oldtoc_553649205[0] == null)) {
+ oldtoc_553649205[0] = document.getElementById("tocRoot");
+ }
+
+ var results_553649216 = dosearch_553648878(value_553649212);
+ replaceById_553648284("tocRoot", results_553649216);
+ }
+ else {
+ if (!((oldtoc_553649205[0] == null))) {
+ replaceById_553648284("tocRoot", oldtoc_553649205[0]);
+ }
+ }
+
+
+ }
+
+ if ((loadIndexFut_553649208[0] == null)) {
+ loadIndexFut_553649208[0] = loadIndex_553649049();
+ var _ = then_553649225(loadIndexFut_553649208[0], wrapper_553649210, null);
+ }
+
+ if (!((timer_553649206[0] == null))) {
+ clearTimeout(timer_553649206[0]);
+ }
+
+ timer_553649206[0] = setTimeout(wrapper_553649210, 400);
+
+
+}
+
+function copyToClipboard() {
+
+ function updatePreTags() {
+
+ const allPreTags = document.querySelectorAll("pre")
+
+ allPreTags.forEach((e) => {
+
+ const div = document.createElement("div")
+ div.classList.add("copyToClipBoard")
+
+ const preTag = document.createElement("pre")
+ preTag.innerHTML = e.innerHTML
+
+ const button = document.createElement("button")
+ button.value = e.textContent.replace('...', '')
+ button.classList.add("copyToClipBoardBtn")
+ button.style.cursor = "pointer"
+
+ div.appendChild(preTag)
+ div.appendChild(button)
+
+ e.outerHTML = div.outerHTML
+
+ })
+ }
+
+
+ function copyTextToClipboard(e) {
+ const clipBoardContent = e.target.value
+ navigator.clipboard.writeText(clipBoardContent).then(function() {
+ e.target.style.setProperty("--clipboard-image", "var(--clipboard-image-selected)")
+ }, function(err) {
+ console.error("Could not copy text: ", err);
+ });
+ }
+
+ window.addEventListener("click", (e) => {
+ if (e.target.classList.contains("copyToClipBoardBtn")) {
+ copyTextToClipboard(e)
+ }
+ })
+
+ window.addEventListener("mouseover", (e) => {
+ if (e.target.nodeName === "PRE") {
+ e.target.nextElementSibling.style.setProperty("--clipboard-image", "var(--clipboard-image-normal)")
+ }
+ })
+
+ window.addEventListener("DOMContentLoaded", updatePreTags)
+
+
+
+
+}
+var Temporary1;
+var t_553648167 = window.localStorage.getItem("theme");
+if ((t_553648167 == null)) {
+Temporary1 = "auto";
+}
+else {
+Temporary1 = t_553648167;
+}
+
+setTheme(Temporary1);
+var alternative_553648830 = [null];
+var db_553648872 = [[]];
+var contents_553648873 = [[]];
+var oldtoc_553649205 = [null];
+var timer_553649206 = [null];
+var loadIndexFut_553649208 = [null];
+copyToClipboard();
+window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
diff --git a/gittyup.html b/gittyup.html
new file mode 100644
index 0000000..159d2ac
--- /dev/null
+++ b/gittyup.html
@@ -0,0 +1,2710 @@
+
+
+
+
+
+
+
+gittyup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
gittyup
+
+
+
+ Theme:
+
+ 🌗 Match OS
+ 🌑 Dark
+ 🌕 Light
+
+
+
+
+ Search:
+
+
+ Group by:
+
+ Section
+ Type
+
+
+
+
+
+ Types
+
+
+
+
+
+ Consts
+
+
+
+
+
+ Procs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Iterators
+
+
+
+
+
+ Templates
+
+
+
+
+
+
+
+
+
Source
+
Edit
+
+
+
+
+
+
+
+
+
+
+
+
func `$` ( annotated : ptr git_annotated_commit ) : string {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
func `$` ( buffer : git_buf ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
func `$` ( buffer : ptr git_buf ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
func `$` ( entry : GitTreeEntry ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
func `$` ( obj : GitObject ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ string representation of git object
+ Source
+Edit
+
+
+
+
+
func `$` ( oid : GitOid ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
func `$` ( tag : GitTag ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc `==` ( a , b : GitOid ) : bool {.... raises : [ Exception , OSError ] , tags : [
+ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ compare two oids using libgit2's special method
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc branchName ( got : GitReference ) : string {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ fetch a branch name assuming the reference is a branch
+ Source
+Edit
+
+
+
+
+
+
+
+
proc branchRemoteName ( repo : GitRepository ; branch : string ) : GitResult [ string ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ try to fetch a single remote for a remote tracking branch
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc checkoutHead ( repo : GitRepository ; strategy = defaultCheckoutStrategy ) : GitResultCode {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ checkout a repository's head
+ Source
+Edit
+
+
+
+
+
+
+
+
proc checkoutTree ( repo : GitRepository ; reference : string ;
+ paths : seq [ string ] = @ [ ] ; strategy = defaultCheckoutStrategy ) : GitResultCode {.
+ ... raises : [ Exception , OSError , ResultError[system.void] ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ checkout a repository using a reference string; supply paths to limit the checkout to, uh, those particular paths
+ Source
+Edit
+
+
+
+
+
proc checkoutTree ( repo : GitRepository ; thing : GitThing ;
+ paths : seq [ string ] = @ [ ] ; strategy = defaultCheckoutStrategy ) : GitResultCode {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ checkout a repository using a thing; supply paths to limit the checkout to, uh, those particular paths
+ Source
+Edit
+
+
+
+
+
+
+
+
proc clone ( uri : Uri ; path : string ; branch = "" ) : GitResult [ GitRepository ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ clone a repository
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc defaultSignature ( repo : GitRepository ; time : Time ) : GitResult [ GitSignature ] {.... raises : [
+ Exception , OSError , ResultError[errors.git_error_code] ,
+ ResultError[system.void] , Exception , OSError ,
+ ResultError[errors.git_error_code] , ResultError[system.void] ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ create a new signature using git configuration; must be freed
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc fetchRemote ( repo : GitRepository ; remoteName : string ) : GitResultCode {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ fetch from repo at given remoteName
+ Source
+Edit
+
+
+
+
+
proc fetchRemote ( repo : GitRepository ; remoteName : string ;
+ refSpecs : GittyStrArray ) : GitResultCode {.
+ ... raises : [ Exception , OSError , Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ fetch from repo at remoteName using provided refSpecs
+ Source
+Edit
+
+
+
+
+
+
+
+
proc fetchRemotes ( repo : GitRepository ; remoteNames : seq [ string ] ) : seq [
+ GitResultCode ] {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] ,
+ forbids : [ ] .}
+
+
+ fetch from repo at given remoteNames
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc free ( entries : sink GitTreeEntries ) {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ git tree entries need a special free
+ Source
+Edit
+
+
+
+
+
proc free ( gstrings : var GitStrArray ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ free a git_strarray allocated by libgit2
+ Source
+Edit
+
+
+
+
+
proc free ( gstrings : var GittyStrArray ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ free a git_strarray allocated by nim
+ Source
+Edit
+
+
+
+
+
proc free ( s : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ for template compatability only
+ Source
+Edit
+
+
+
+
+
proc free ( table : sink GitTagTable ) {.... raises : [ Exception , OSError ] , tags : [
+ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ free a tag table
+ Source
+Edit
+
+
+
+
+
proc free ( thing : sink GitThing ) {.... raises : [ Exception , OSError ] , tags : [
+ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ free a git thing and its gitobject contents appropriately
+ Source
+Edit
+
+
+
+
+
proc free [ T : GitHeapGits ] ( point : ptr T )
+
+
+ perform a free of a git-managed pointer
+ Source
+Edit
+
+
+
+
+
proc free [ T : NimHeapGits ] ( point : ptr T )
+
+
+ perform a free of a nim-alloced pointer to git data
+ Source
+Edit
+
+
+
+
+
+
+
+
proc getHeadOid ( repo : GitRepository ) : GitResult [ GitOid ] {.
+ ... raises : [ Exception , OSError , ResultError[system.void] ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ try to retrieve the #head oid from a repository
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc hash ( oid : GitOid ) : Hash {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ the hash of a git oid is a function of its string representation
+ Source
+Edit
+
+
+
+
+
proc hash ( tag : GitTag ) : Hash {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ two tags are the same if they have the same name
+ Source
+Edit
+
+
+
+
+
proc hash ( thing : GitThing ) : Hash {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ two git things are unique unless they share the same oid
+ Source
+Edit
+
+
+
+
+
+
+
+
proc hasThing ( tags : GitTagTable ; thing : GitThing ) : bool {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ true if the thing is tagged; think hasValue() to table's hasKey()
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc init ( ) : bool {.... raises : [ Exception ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] ,
+ forbids : [ ] .}
+
+
+ initialize the library to prepare for git operations; returns true if libgit2 was initialized
+ Source
+Edit
+
+
+
+
+
+
+
+
proc isBranch ( got : GitReference ) : bool {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ true if the supplied reference is a branch
+ Source
+Edit
+
+
+
+
+
+
+
+
func isTag ( got : GitReference ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ true if the supplied reference is a tag
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc lookupThing ( repo : GitRepository ; name : string ) : GitResult [ GitThing ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ try to look some thing up in the repository with the given name
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc message ( commit : GitCommit ) : string {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ retrieve the message associated with a git commit
+ Source
+Edit
+
+
+
+
+
proc message ( tag : GitTag ) : string {.... raises : [ Exception , OSError ] , tags : [
+ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ retrieve the message associated with a git tag
+ Source
+Edit
+
+
+
+
+
proc message ( thing : GitThing ) : string {.... raises : [ Exception , OSError , ValueError ] , tags : [
+ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ retrieve the message associated with a git thing
+ Source
+Edit
+
+
+
+
+
+
+
+
func name ( entry : GitTreeEntry ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ retrieve the name of the input
+ Source
+Edit
+
+
+
+
+
func name ( got : GitReference ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ retrieve the name of the input
+ Source
+Edit
+
+
+
+
+
func name ( remote : GitRemote ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ retrieve the name of the input
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newPathSpec ( spec : openArray [ string ] ) : GitResult [ GitPathSpec ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ instantiate a new path spec from a strarray
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newSignature ( name , email : string ; time : Time ) : GitResult [ GitSignature ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ create a new signature using arguments; must be freed (this does not yet support the offset-in-minutes specification)
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc next ( walker : GitRevWalker ) : GitResult [ GitOid ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ try to get the next oid that we should walk to
+ Source
+Edit
+
+
+
+
+
+
+
+
proc oid ( entry : GitTreeEntry ) : GitOid {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ retrieve the oid of the input
+ Source
+Edit
+
+
+
+
+
+
+
proc oid ( tag : GitTag ) : GitOid {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ retrieve the oid of the input
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc openRepository ( path : string ) : GitResult [ GitRepository ] {.
+ ... deprecated : "use repositoryOpen" , raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ Deprecated: use repositoryOpen
+
+
+ alias for repositoryOpen
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc push ( walker : GitRevWalker ; oid : GitOid ) : GitResultCode {.
+ ... raises : [ Exception , OSError , ResultError[system.void] ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ add a starting oid for the walker to begin at
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc remoteRename ( repo : GitRepository ; prior : string ; next : string ) : GitResult [
+ seq [ string ] ] {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ rename a remote
+ Source
+Edit
+
+
+
+
+
+
+
+
proc repositoryDiscover ( path : string ; ceilings : seq [ string ] = @ [ ] ; xfs = true ) : GitResult [
+ string ] {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ try to find the path of a repository in path or a parent; xfs allows cross-filesystem traversal, while ceilings holds stop-dirs.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc repositoryOpen ( path : string ) : GitResult [ GitRepository ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ open a repository by path; the repository must be freed
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc setBranchUpstream ( branch : GitReference ; name : string ) : GitResultCode {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ set the upstream for the branch to the given branch name
+ Source
+Edit
+
+
+
+
+
+
+
+
proc setHead ( repo : GitRepository ; short : string ) : GitResultCode {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ set the head of a repository
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc setHeadDetached ( repo : GitRepository ; reference : string ) : GitResultCode {.
+ ... raises : [ Exception , OSError , Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ point the repo's head at the given reference
+ Source
+Edit
+
+
+
+
+
+
+
+
proc short ( oid : GitOid ; size : int ) : GitResult [ string ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ shorten an oid to a string of the given length
+ Source
+Edit
+
+
+
+
+
+
+
+
proc shortestTag ( table : GitTagTable ; oid : string ) : string {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ pick the shortest tag that matches the oid supplied
+ Source
+Edit
+
+
+
+
+
+
+
+
proc shutdown ( ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ shutdown the library, freeing any libgit2 data; returns true if shutdown was successful
+ Source
+Edit
+
+
+
+
+
+
+
+
proc summary ( commit : GitCommit ) : string {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ produce a summary for a given commit
+ Source
+Edit
+
+
+
+
+
proc summary ( thing : GitThing ) : string {.... raises : [ Exception , OSError , ValueError ] , tags : [
+ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ produce a summary for a git thing
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc tagCreate ( repo : GitRepository ; target : GitThing ; name : string ;
+ message = "" ; force = false ) : GitResult [ GitOid ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ lightweight routine to create a heavyweight signed and dated tag
+ Source
+Edit
+
+
+
+
+
proc tagCreate ( target : GitThing ; name : string ; message = "" ; force = false ) : GitResult [
+ GitOid ] {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ lightweight routine to create a heavyweight signed and dated tag
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc tagCreateLightweight ( target : GitThing ; name : string ; force = false ) : GitResult [
+ GitOid ] {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ create a new lightweight tag in the repository
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc tagList ( repo : GitRepository ) : GitResult [ seq [ string ] ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ retrieve a list of tags from the repo
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tagTable ( repo : GitRepository ) : GitResult [ GitTagTable ] {.... raises : [ Exception ,
+ OSError , ResultError[system.void] , ResultError[errors.git_error_code] ,
+ ValueError ] , tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ compose a table of tags and their associated references
+ Source
+Edit
+
+
+
+
+
+
+
+
proc target ( thing : GitThing ) : GitResult [ GitThing ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ find the thing to which a tag points
+ Source
+Edit
+
+
+
+
+
+
+
+
proc targetId ( thing : GitThing ) : GitOid {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ find the target oid to which a tag points
+ Source
+Edit
+
+
+
+
+
+
+
+
proc toStrArray ( values : openArray [ string ] ) : GittyStrArray {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ future converter (?) to nim-alloc'd string array
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc treeEntryByPath ( thing : GitThing ; path : string ) : GitResult [ GitTreeEntry ] {.
+ ... raises : [ Exception , OSError , Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ get a tree entry using its path and that of the repo
+ Source
+Edit
+
+
+
+
+
+
+
+
proc treeEntryToThing ( repo : GitRepository ; entry : GitTreeEntry ) : GitResult [
+ GitThing ] {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ convert a tree entry into a thing
+ Source
+Edit
+
+
+
+
+
+
+
+
proc treeWalk ( tree : GitThing ; mode = GIT_TREEWALK_PRE ) : GitResult [ GitTreeEntries ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ the laziest way to walk a tree, ever
+ Source
+Edit
+
+
+
+
+
proc treeWalk ( tree : GitTree ; mode : git_treewalk_mode ) : GitResult [ GitTreeEntries ] {.
+ ... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ try to walk a tree and return a sequence of its entries
+ Source
+Edit
+
+
+
+
+
proc treeWalk ( tree : GitTree ; mode : git_treewalk_mode ; callback : git_treewalk_cb ;
+ payload : pointer ) : git_error_code {.... raises : [ Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ walk a tree and run a callback on every entry
+ Source
+Edit
+
+
+
+
+
+
+
+
proc url ( remote : GitRemote ) : Uri {.... raises : [ Exception , OSError ] , tags : [
+ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ retrieve the url of a remote
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
iterator branches ( repo : GitRepository ;
+ flags = { GIT_BRANCH_LOCAL , GIT_BRANCH_REMOTE } ) : GitResult [
+ GitReference ] {.... raises : [ ValueError , Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] ,
+ forbids : [ ] .}
+
+
+ this time, you're just gonna have to guess at what this proc might do... (also, you're just gonna have to free your references...)
+ Source
+Edit
+
+
+
+
+
+
+
+
iterator commitsForSpec ( repo : GitRepository ; spec : openArray [ string ] ) : GitResult [
+ GitThing ] {.... raises : [ Exception , OSError , ResultError[system.void] ,
+ ResultError[errors.git_error_code] ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ yield each commit that matches the provided pathspec
+ Source
+Edit
+
+
+
+
+
+
+
+
iterator revWalk ( repo : GitRepository ; walker : GitRevWalker ) : GitResult [ GitThing ] {.... raises : [
+ Exception , OSError , ResultError[system.void] ,
+ ResultError[errors.git_error_code] , ResultError[system.void] , Exception ,
+ OSError ] , tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ sic the walker on a repo starting with the given oid
+ Source
+Edit
+
+
+
+
+
+
+
+
iterator status ( repository : GitRepository ; show : GitStatusShow ;
+ flags = defaultStatusFlags ) : GitResult [ GitStatus ] {.
+ ... raises : [ Exception , OSError , Exception , OSError ] ,
+ tags : [ ReadEnvEffect , ReadDirEffect , RootEffect ] , forbids : [ ] .}
+
+
+ iterate over files in the repo using the given search flags
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
template gitFail ( allocd : typed ; code : GitResultCode ; body : untyped )
+
+
+ a version of gitTrap that expects failure; no error messages!
+ Source
+Edit
+
+
+
+
+
+
+
+
+
template gitTrap ( allocd : typed ; code : GitResultCode ; body : untyped )
+
+
+ trap an api result code, dump it via logging, run the body as an error handler
+ Source
+Edit
+
+
+
+
+
template gitTrap ( code : GitResultCode ; body : untyped )
+
+
+ trap an api result code, dump it via logging, run the body as an error handler
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Made with Nim. Generated: 2023-11-03 22:38:32 UTC
+
+
+
+
+
+
+
+
+
diff --git a/gittyup.idx b/gittyup.idx
new file mode 100644
index 0000000..a3db683
--- /dev/null
+++ b/gittyup.idx
@@ -0,0 +1,192 @@
+nimTitle gittyup gittyup.html module gittyup 0
+nim GIT_DIFF_OPTIONS_VERSION gittyup.html#GIT_DIFF_OPTIONS_VERSION const GIT_DIFF_OPTIONS_VERSION 44
+nim GIT_STATUS_OPTIONS_VERSION gittyup.html#GIT_STATUS_OPTIONS_VERSION const GIT_STATUS_OPTIONS_VERSION 45
+nim GIT_CLONE_OPTIONS_VERSION gittyup.html#GIT_CLONE_OPTIONS_VERSION const GIT_CLONE_OPTIONS_VERSION 46
+nim GIT_CHECKOUT_OPTIONS_VERSION gittyup.html#GIT_CHECKOUT_OPTIONS_VERSION const GIT_CHECKOUT_OPTIONS_VERSION 47
+nim GIT_FETCH_OPTIONS_VERSION gittyup.html#GIT_FETCH_OPTIONS_VERSION const GIT_FETCH_OPTIONS_VERSION 48
+nim GitTreeWalkCallback gittyup.html#GitTreeWalkCallback type GitTreeWalkCallback 67
+nim GitObjectKind gittyup.html#GitObjectKind type GitObjectKind 70
+nim GitThing gittyup.html#GitThing type GitThing 71
+nim GitBuf gittyup.html#GitBuf type GitBuf 85
+nim GitDiff gittyup.html#GitDiff type GitDiff 86
+nim GitPathSpec gittyup.html#GitPathSpec type GitPathSpec 87
+nim GitRevWalker gittyup.html#GitRevWalker type GitRevWalker 88
+nim GitTreeEntry gittyup.html#GitTreeEntry type GitTreeEntry 89
+nim GitTreeEntries gittyup.html#GitTreeEntries type GitTreeEntries 90
+nim GitObject gittyup.html#GitObject type GitObject 91
+nim GitOid gittyup.html#GitOid type GitOid 92
+nim GitOids gittyup.html#GitOids type GitOids 93
+nim GitRemote gittyup.html#GitRemote type GitRemote 94
+nim GitReference gittyup.html#GitReference type GitReference 95
+nim GitRepository gittyup.html#GitRepository type GitRepository 96
+nim GitStrArray gittyup.html#GitStrArray type GitStrArray 97
+nim GittyStrArray gittyup.html#GittyStrArray type GittyStrArray 98
+nim GitTag gittyup.html#GitTag type GitTag 99
+nim GitCommit gittyup.html#GitCommit type GitCommit 100
+nim GitStatus gittyup.html#GitStatus type GitStatus 101
+nim GitStatusList gittyup.html#GitStatusList type GitStatusList 102
+nim GitTree gittyup.html#GitTree type GitTree 103
+nim GitSignature gittyup.html#GitSignature type GitSignature 104
+nim GitTagTable gittyup.html#GitTagTable type GitTagTable 105
+nim GitResult gittyup.html#GitResult type GitResult 106
+nim GitResultCode gittyup.html#GitResultCode type GitResultCode 108
+nim GitRepoState gittyup.html#GitRepoState type GitRepoState 109
+nim GitCheckoutNotify gittyup.html#GitCheckoutNotify type GitCheckoutNotify 110
+nim GitTreeWalkMode gittyup.html#GitTreeWalkMode type GitTreeWalkMode 111
+nim GitStatusShow gittyup.html#GitStatusShow type GitStatusShow 112
+nim GitStatusFlag gittyup.html#GitStatusFlag type GitStatusFlag 113
+nim GitCheckoutStrategy gittyup.html#GitCheckoutStrategy type GitCheckoutStrategy 114
+nim GitErrorClass gittyup.html#GitErrorClass type GitErrorClass 115
+nim GitStatusOption gittyup.html#GitStatusOption type GitStatusOption 116
+nim GitBranchType gittyup.html#GitBranchType type GitBranchType 117
+nim GitPathSpecFlag gittyup.html#GitPathSpecFlag type GitPathSpecFlag 118
+nim hash gittyup.html#hash,git_checkout_strategy_t proc hash(gcs: GitCheckoutStrategy): Hash 140
+nim dumpError gittyup.html#dumpError,git_error_code proc dumpError(code: GitResultCode): string 176
+nim gitFail gittyup.html#gitFail.t,git_error_code,untyped template gitFail(code: GitResultCode; body: untyped) 189
+nim gitFail gittyup.html#gitFail.t,typed,git_error_code,untyped template gitFail(allocd: typed; code: GitResultCode; body: untyped) 194
+nim gitTrap gittyup.html#gitTrap.t,git_error_code,untyped template gitTrap(code: GitResultCode; body: untyped) 201
+nim gitTrap gittyup.html#gitTrap.t,typed,git_error_code,untyped template gitTrap(allocd: typed; code: GitResultCode; body: untyped) 208
+nim ok gittyup.html#ok.t,Result[T,git_error_code],T template ok[T](self: var Result[T, GitResultCode]; x: T): auto 217
+nim err gittyup.html#err.t,Result[T,git_error_code],git_error_code template err[T](self: var Result[T, GitResultCode]; x: GitResultCode): auto 219
+nim ok gittyup.html#ok.t,T template ok[T](x: T): auto 223
+nim err gittyup.html#err.t,git_error_code template err[T](x: GitResultCode): auto 226
+nim `:=` gittyup.html#:=.t,,Result[T,git_error_code],untyped template `:=`[T](v: untyped{nkIdent}; vv: Result[T, GitResultCode]; body: untyped): untyped 230
+nim init gittyup.html#init proc init(): bool 289
+nim shutdown gittyup.html#shutdown proc shutdown(): bool 301
+nim free gittyup.html#free,ptr.T proc free[T: GitHeapGits](point: ptr T) 340
+nim free gittyup.html#free,ptr.T_2 proc free[T: NimHeapGits](point: ptr T) 388
+nim free gittyup.html#free,sinkGitThing proc free(thing: sink GitThing) 400
+nim free gittyup.html#free,sinkGitTreeEntries proc free(entries: sink GitTreeEntries) 415
+nim free gittyup.html#free,string proc free(s: string) 420
+nim free gittyup.html#free,GitStrArray proc free(gstrings: var GitStrArray) 428
+nim free gittyup.html#free,GittyStrArray proc free(gstrings: var GittyStrArray) 435
+nim toStrArray gittyup.html#toStrArray,openArray[string] proc toStrArray(values: openArray[string]): GittyStrArray 448
+nim toStringSeq gittyup.html#toStringSeq proc toStringSeq(gstrings: GitStrArray | GittyStrArray): seq[string] 455
+nim short gittyup.html#short,GitOid,int proc short(oid: GitOid; size: int): GitResult[string] 479
+nim url gittyup.html#url,GitRemote proc url(remote: GitRemote): Uri 491
+nim oid gittyup.html#oid,GitTreeEntry proc oid(entry: GitTreeEntry): GitOid 497
+nim oid gittyup.html#oid,GitReference proc oid(got: GitReference): GitOid 503
+nim oid gittyup.html#oid,GitObject proc oid(obj: GitObject): GitOid 509
+nim oid gittyup.html#oid,GitThing proc oid(thing: GitThing): GitOid 515
+nim oid gittyup.html#oid,GitTag proc oid(tag: GitTag): GitOid 522
+nim name gittyup.html#name,GitReference proc name(got: GitReference): string 528
+nim name gittyup.html#name,GitTreeEntry proc name(entry: GitTreeEntry): string 533
+nim name gittyup.html#name,GitRemote proc name(remote: GitRemote): string 538
+nim isTag gittyup.html#isTag,GitReference proc isTag(got: GitReference): bool 543
+nim flags gittyup.html#flags,GitStatus proc flags(status: GitStatus): set[GitStatusFlag] 548
+nim repositoryPath gittyup.html#repositoryPath,GitRepository proc repositoryPath(repo: GitRepository): string 555
+nim `$` gittyup.html#$,GitTagTable proc `$`(tags: GitTagTable): string 559
+nim `$` gittyup.html#$,GitPathSpec proc `$`(ps: GitPathSpec): string 563
+nim `$` gittyup.html#$,GitRevWalker proc `$`(walker: GitRevWalker): string 567
+nim `$` gittyup.html#$,GitRemote proc `$`(remote: GitRemote): string 571
+nim `$` gittyup.html#$,GitRepository proc `$`(repo: GitRepository): string 575
+nim `$` gittyup.html#$,git_buf proc `$`(buffer: git_buf): string 579
+nim `$` gittyup.html#$,ptr.git_buf proc `$`(buffer: ptr git_buf): string 582
+nim `$` gittyup.html#$,ptr.git_annotated_commit proc `$`(annotated: ptr git_annotated_commit): string 586
+nim `$` gittyup.html#$,GitOid proc `$`(oid: GitOid): string 590
+nim `$` gittyup.html#$,GitTag proc `$`(tag: GitTag): string 594
+nim `$` gittyup.html#$,GitReference proc `$`(reference: GitReference): string 601
+nim `$` gittyup.html#$,GitTreeEntry proc `$`(entry: GitTreeEntry): string 608
+nim `$` gittyup.html#$,GitObject proc `$`(obj: GitObject): string 612
+nim `$` gittyup.html#$,GitCommit proc `$`(commit: GitCommit): string 623
+nim `$` gittyup.html#$,GitThing proc `$`(thing: GitThing): string 627
+nim `$` gittyup.html#$,GitStatus proc `$`(status: GitStatus): string 632
+nim copy gittyup.html#copy,GitCommit proc copy(commit: GitCommit): GitResult[GitCommit] 639
+nim copy gittyup.html#copy,GitThing proc copy(thing: GitThing): GitResult[GitThing] 648
+nim copy gittyup.html#copy,GitOid proc copy(oid: GitOid): GitResult[GitOid] 671
+nim branchName gittyup.html#branchName,GitReference proc branchName(got: GitReference): string 679
+nim isBranch gittyup.html#isBranch,GitReference proc isBranch(got: GitReference): bool 695
+nim owner gittyup.html#owner,GitThing proc owner(thing: GitThing): GitRepository 701
+nim owner gittyup.html#owner,GitCommit proc owner(commit: GitCommit): GitRepository 708
+nim owner gittyup.html#owner,GitReference proc owner(reference: GitReference): GitRepository 714
+nim message gittyup.html#message,GitCommit proc message(commit: GitCommit): string 724
+nim message gittyup.html#message,GitTag proc message(tag: GitTag): string 730
+nim message gittyup.html#message,GitThing proc message(thing: GitThing): string 736
+nim summary gittyup.html#summary,GitCommit proc summary(commit: GitCommit): string 750
+nim summary gittyup.html#summary,GitThing proc summary(thing: GitThing): string 756
+nim free gittyup.html#free,sinkGitTagTable proc free(table: sink GitTagTable) 772
+nim hash gittyup.html#hash,GitOid proc hash(oid: GitOid): Hash 804
+nim hash gittyup.html#hash,GitTag proc hash(tag: GitTag): Hash 811
+nim hash gittyup.html#hash,GitThing proc hash(thing: GitThing): Hash 818
+nim commit gittyup.html#commit,GitThing proc commit(thing: GitThing): GitCommit 825
+nim committer gittyup.html#committer,GitThing proc committer(thing: GitThing): GitSignature 831
+nim author gittyup.html#author,GitThing proc author(thing: GitThing): GitSignature 837
+nim clone gittyup.html#clone,Uri,string,string proc clone(uri: Uri; path: string; branch = ""): GitResult[GitRepository] 843
+nim setHeadDetached gittyup.html#setHeadDetached,GitRepository,GitOid proc setHeadDetached(repo: GitRepository; oid: GitOid): GitResultCode 860
+nim setHeadDetached gittyup.html#setHeadDetached,GitRepository,string proc setHeadDetached(repo: GitRepository; reference: string): GitResultCode 865
+nim repositoryOpen gittyup.html#repositoryOpen,string proc repositoryOpen(path: string): GitResult[GitRepository] 877
+nim openRepository gittyup.html#openRepository,string proc openRepository(path: string): GitResult[GitRepository] 885
+nim fetchRemote gittyup.html#fetchRemote,GitRepository,string,GittyStrArray proc fetchRemote(repo: GitRepository; remoteName: string; refSpecs: GittyStrArray): GitResultCode 890
+nim fetchRemote gittyup.html#fetchRemote,GitRepository,string proc fetchRemote(repo: GitRepository; remoteName: string): GitResultCode 904
+nim repositoryHead gittyup.html#repositoryHead,GitRepository proc repositoryHead(repo: GitRepository): GitResult[GitReference] 910
+nim headReference gittyup.html#headReference,GitRepository proc headReference(repo: GitRepository): GitResult[GitReference] 919
+nim getRemoteNames gittyup.html#getRemoteNames,GitRepository proc getRemoteNames(repo: GitRepository): GitResult[seq[string]] 923
+nim fetchRemotes gittyup.html#fetchRemotes,GitRepository,seq[string] proc fetchRemotes(repo: GitRepository; remoteNames: seq[string]): seq[GitResultCode] 934
+nim remoteLookup gittyup.html#remoteLookup,GitRepository,string proc remoteLookup(repo: GitRepository; name: string): GitResult[GitRemote] 941
+nim remoteRename gittyup.html#remoteRename,GitRepository,string,string proc remoteRename(repo: GitRepository; prior: string; next: string): GitResult[\n seq[string]] 950
+nim remoteDelete gittyup.html#remoteDelete,GitRepository,string proc remoteDelete(repo: GitRepository; name: string): GitResultCode 962
+nim remoteCreate gittyup.html#remoteCreate,GitRepository,string,Uri proc remoteCreate(repo: GitRepository; name: string; url: Uri): GitResult[GitRemote] 967
+nim `==` gittyup.html#==,GitOid,GitOid proc `==`(a, b: GitOid): bool 977
+nim targetId gittyup.html#targetId,GitThing proc targetId(thing: GitThing): GitOid 989
+nim target gittyup.html#target,GitThing proc target(thing: GitThing): GitResult[GitThing] 997
+nim tagList gittyup.html#tagList,GitRepository proc tagList(repo: GitRepository): GitResult[seq[string]] 1008
+nim lookupThing gittyup.html#lookupThing,GitRepository,string proc lookupThing(repo: GitRepository; name: string): GitResult[GitThing] 1019
+nim newTagTable gittyup.html#newTagTable,int proc newTagTable(size = 32): GitTagTable 1027
+nim tagTable gittyup.html#tagTable,GitRepository proc tagTable(repo: GitRepository): GitResult[GitTagTable] 1055
+nim shortestTag gittyup.html#shortestTag,GitTagTable,string proc shortestTag(table: GitTagTable; oid: string): string 1087
+nim getHeadOid gittyup.html#getHeadOid,GitRepository proc getHeadOid(repo: GitRepository): GitResult[GitOid] 1096
+nim repositoryState gittyup.html#repositoryState,GitRepository proc repositoryState(repository: GitRepository): GitRepoState 1107
+nim status gittyup.html#status.i,GitRepository,git_status_show_t iterator status(repository: GitRepository; show: GitStatusShow;\n flags = defaultStatusFlags): GitResult[GitStatus] 1112
+nim checkoutTree gittyup.html#checkoutTree,GitRepository,GitThing,seq[string] proc checkoutTree(repo: GitRepository; thing: GitThing; paths: seq[string] = @[];\n strategy = defaultCheckoutStrategy): GitResultCode 1153
+nim checkoutTree gittyup.html#checkoutTree,GitRepository,string,seq[string] proc checkoutTree(repo: GitRepository; reference: string; paths: seq[string] = @[];\n strategy = defaultCheckoutStrategy): GitResultCode 1208
+nim checkoutHead gittyup.html#checkoutHead,GitRepository proc checkoutHead(repo: GitRepository; strategy = defaultCheckoutStrategy): GitResultCode 1220
+nim setHead gittyup.html#setHead,GitRepository,string proc setHead(repo: GitRepository; short: string): GitResultCode 1238
+nim referenceDWIM gittyup.html#referenceDWIM,GitRepository,string proc referenceDWIM(repo: GitRepository; short: string): GitResult[GitReference] 1243
+nim lookupTreeThing gittyup.html#lookupTreeThing,GitRepository,string proc lookupTreeThing(repo: GitRepository; path = "HEAD"): GitResult[GitThing] 1253
+nim treeEntryByPath gittyup.html#treeEntryByPath,GitThing,string proc treeEntryByPath(thing: GitThing; path: string): GitResult[GitTreeEntry] 1257
+nim treeEntryToThing gittyup.html#treeEntryToThing,GitRepository,GitTreeEntry proc treeEntryToThing(repo: GitRepository; entry: GitTreeEntry): GitResult[GitThing] 1276
+nim treeWalk gittyup.html#treeWalk,GitTree,git_treewalk_mode,git_treewalk_cb,pointer proc treeWalk(tree: GitTree; mode: git_treewalk_mode; callback: git_treewalk_cb;\n payload: pointer): git_error_code 1286
+nim treeWalk gittyup.html#treeWalk,GitTree,git_treewalk_mode proc treeWalk(tree: GitTree; mode: git_treewalk_mode): GitResult[GitTreeEntries] 1292
+nim treeWalk gittyup.html#treeWalk,GitThing proc treeWalk(tree: GitThing; mode = GIT_TREEWALK_PRE): GitResult[GitTreeEntries] 1311
+nim newRevWalk gittyup.html#newRevWalk,GitRepository proc newRevWalk(repo: GitRepository): GitResult[GitRevWalker] 1316
+nim next gittyup.html#next,GitRevWalker proc next(walker: GitRevWalker): GitResult[GitOid] 1325
+nim push gittyup.html#push,GitRevWalker,GitOid proc push(walker: GitRevWalker; oid: GitOid): GitResultCode 1338
+nim lookupCommit gittyup.html#lookupCommit,GitRepository,GitOid proc lookupCommit(repo: GitRepository; oid: GitOid): GitResult[GitThing] 1347
+nim revWalk gittyup.html#revWalk.i,GitRepository,GitRevWalker iterator revWalk(repo: GitRepository; walker: GitRevWalker): GitResult[GitThing] 1356
+nim newPathSpec gittyup.html#newPathSpec,openArray[string] proc newPathSpec(spec: openArray[string]): GitResult[GitPathSpec] 1408
+nim commitsForSpec gittyup.html#commitsForSpec.i,GitRepository,openArray[string] iterator commitsForSpec(repo: GitRepository; spec: openArray[string]): GitResult[GitThing] 1523
+nim tagCreateLightweight gittyup.html#tagCreateLightweight,GitRepository,GitThing,string proc tagCreateLightweight(repo: GitRepository; target: GitThing; name: string;\n force = false): GitResult[GitOid] 1587
+nim tagCreateLightweight gittyup.html#tagCreateLightweight,GitThing,string proc tagCreateLightweight(target: GitThing; name: string; force = false): GitResult[\n GitOid] 1606
+nim branchUpstream gittyup.html#branchUpstream,GitReference proc branchUpstream(branch: GitReference): GitResult[GitReference] 1611
+nim setBranchUpstream gittyup.html#setBranchUpstream,GitReference,string proc setBranchUpstream(branch: GitReference; name: string): GitResultCode 1620
+nim branchRemoteName gittyup.html#branchRemoteName,GitRepository,string proc branchRemoteName(repo: GitRepository; branch: string): GitResult[string] 1626
+nim branches gittyup.html#branches.i,GitRepository iterator branches(repo: GitRepository; flags = {GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE}): GitResult[\n GitReference] 1641
+nim hasThing gittyup.html#hasThing,GitTagTable,GitThing proc hasThing(tags: GitTagTable; thing: GitThing): bool 1709
+nim newSignature gittyup.html#newSignature,string,string,Time proc newSignature(name, email: string; time: Time): GitResult[GitSignature] 1716
+nim defaultSignature gittyup.html#defaultSignature,GitRepository proc defaultSignature(repo: GitRepository): GitResult[GitSignature] 1727
+nim defaultSignature gittyup.html#defaultSignature,GitRepository,Time proc defaultSignature(repo: GitRepository; time: Time): GitResult[GitSignature] 1736
+nim tagCreate gittyup.html#tagCreate,GitRepository,GitThing,string,GitSignature,string proc tagCreate(repo: GitRepository; target: GitThing; name: string;\n tagger: GitSignature; message = ""; force = false): GitResult[GitOid] 1748
+nim tagCreate gittyup.html#tagCreate,GitRepository,GitThing,string,string proc tagCreate(repo: GitRepository; target: GitThing; name: string; message = "";\n force = false): GitResult[GitOid] 1770
+nim tagCreate gittyup.html#tagCreate,GitThing,string,string proc tagCreate(target: GitThing; name: string; message = ""; force = false): GitResult[\n GitOid] 1782
+nim tagDelete gittyup.html#tagDelete,GitRepository,string proc tagDelete(repo: GitRepository; name: string): GitResultCode 1794
+nim repositoryDiscover gittyup.html#repositoryDiscover,string,seq[string] proc repositoryDiscover(path: string; ceilings: seq[string] = @[]; xfs = true): GitResult[\n string] 1800
+nimgrp $ gittyup.html#$-procs-all proc 559
+nimgrp defaultsignature gittyup.html#defaultSignature-procs-all proc 1727
+nimgrp treewalk gittyup.html#treeWalk-procs-all proc 1286
+nimgrp tagcreate gittyup.html#tagCreate-procs-all proc 1748
+nimgrp setheaddetached gittyup.html#setHeadDetached-procs-all proc 860
+nimgrp fetchremote gittyup.html#fetchRemote-procs-all proc 890
+nimgrp message gittyup.html#message-procs-all proc 724
+nimgrp tagcreatelightweight gittyup.html#tagCreateLightweight-procs-all proc 1587
+nimgrp summary gittyup.html#summary-procs-all proc 750
+nimgrp checkouttree gittyup.html#checkoutTree-procs-all proc 1153
+nimgrp owner gittyup.html#owner-procs-all proc 701
+nimgrp free gittyup.html#free-procs-all proc 340
+nimgrp name gittyup.html#name-procs-all proc 528
+nimgrp oid gittyup.html#oid-procs-all proc 497
+nimgrp copy gittyup.html#copy-procs-all proc 639
+nimgrp hash gittyup.html#hash-procs-all proc 140
+nimgrp err gittyup.html#err-templates-all template 219
+nimgrp gittrap gittyup.html#gitTrap-templates-all template 201
+nimgrp ok gittyup.html#ok-templates-all template 217
+nimgrp gitfail gittyup.html#gitFail-templates-all template 189
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..a87de5b
--- /dev/null
+++ b/index.html
@@ -0,0 +1,644 @@
+
+
+
+
+
+
+
+Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nimdoc.out.css b/nimdoc.out.css
new file mode 100644
index 0000000..a9e4ac9
--- /dev/null
+++ b/nimdoc.out.css
@@ -0,0 +1,1033 @@
+/*
+Stylesheet for use with Docutils/rst2html.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+
+Modified from Chad Skeeters' rst2html-style
+https://bitbucket.org/cskeeters/rst2html-style/
+
+Modified by Boyd Greenfield and narimiran
+*/
+
+:root {
+ --primary-background: #fff;
+ --secondary-background: ghostwhite;
+ --third-background: #e8e8e8;
+ --info-background: #50c050;
+ --warning-background: #c0a000;
+ --error-background: #e04040;
+ --border: #dde;
+ --text: #222;
+ --anchor: #07b;
+ --anchor-focus: #607c9f;
+ --input-focus: #1fa0eb;
+ --strong: #3c3c3c;
+ --hint: #9A9A9A;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1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");
+
+ --keyword: #5e8f60;
+ --identifier: #222;
+ --comment: #484a86;
+ --operator: #155da4;
+ --punctuation: black;
+ --other: black;
+ --escapeSequence: #c4891b;
+ --number: #252dbe;
+ --literal: #a4255b;
+ --program: #6060c0;
+ --option: #508000;
+ --raw-data: #a4255b;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal)
+}
+
+[data-theme="dark"] {
+ --primary-background: #171921;
+ --secondary-background: #1e202a;
+ --third-background: #2b2e3b;
+ --info-background: #008000;
+ --warning-background: #807000;
+ --error-background: #c03000;
+ --border: #0e1014;
+ --text: #fff;
+ --anchor: #8be9fd;
+ --anchor-focus: #8be9fd;
+ --input-focus: #8be9fd;
+ --strong: #bd93f9;
+ --hint: #7A7C85;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHN0RXZ0OndoZW49IjIwMTktMTItMDNUMDE6MTg6MjIrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4JZNR8AAAfG0lEQVR4nO2deViTZ7r/7yxkJaxJ2MK+GCBAMCwS1kgUFQSKK4XWWqsz1jpjp3b0tDP1V+eqU391fqfT/mpPPd20drTFDS0KFEVWJSGAEgLIZpAICBJACIRs549Rj1WILAkBfD/XlevySp68z/0S3+/7vPdzLyidTgcLkU2bd+z39/f/q1gshsrKSoJELFCa2iaEuU9K6kb+8uXxv54/fzE8L/eswNT2zCfQpjbAGKS8lPFKSEjIXiaTCSEhIeDj4xNnapsQ5j6rktZGp6UlfxIdzQVzCplmanvmG1hTG2BIAtlc26CgoDfT0tL2e3l5AQCAjY0NkMnk/a9s2k6rrKw8UV8n1JjYTIQ5RlAw14KzmL3xze1vfJyUuMJaq9UCFovFm9qu+YbBxcSPFUYkk8l2Q0NDsvo6ocrQx5+I8Ih4bz6f/0l8fHyKlZXV4/dRKBQwmcwwMpn8A4FAoPgHhH9bV1sxa488wZxoaycnJ/a9e/duCa5fkc3WvAiTI4Ib77p+XdqHG9anbfLy8gAAgLGxMdBpF+bjvzExqJj4scKI0dHRnwQHB++orq7+AgDeMuTxJ2Jl4rqU9PT0EwEBAUQCgTDuGAaDAampqYepVKpHUHDk325Ulw0a266YuFW+Gzdu/MDPz29jfn7+XgA4aOw5ESZP6kvpCXv3vnM8NiaSamVl+fj9BepGNDoGFRN7e/slcXFxO1xcXMDJyWnH7j//H/fi4uJdgutXmgw5z5O8smn7X9euXbvf29sbMBjMhONQKBRYWVlBbGzsbjMzM3JoOG+/sKKwy1h2rd/4elpGRsYuLy+vaDweD2w2Oy1h5ZrCvEunEaeeiVnMiabyl/F2/+X9P+8JDPQHHA5napMWBAYTk6DgSNuEhIS9DAYDAP7tq1i6dOkqOp3OWbNu0wens44emeoxA9lcWwKBYEMkEm2JRKIdHo+3QKFQWJ1Op8ZgMER3d/dVq1evTnFycpr0MSkUCsTExGzH4/Gk1LTME/39/TI0Go1FoVCg1WrVY2NjipGRkcGRkRH5dPwrEZHLXMPCwjJSUlIy3dzcfB+97+rqGhYSEpIOAIiYmBguN3zL77dt3uPh4W5qUxYUBhMTb2/vjeHh4cvR6P/dILK0tITIyEg7BweHr363/Z3Ampqaf1Zcu/zMKiVsyVJvMplsRyKR7IhEor2FhYUbhUJhJCYm2pFIJB6JRAIymQx4PB7QaDRoNBowMzMDJycnwOOn7icjEokQGxu7icFgbLp///7jFY1WqwWlUgkjIyOgUCgO7Ni5Rz48PCwfHh7uGRkZeaBQKOSjo6ODCoVCXlNVKn/6uCsT13FXrVr1emho6BYKhfLMnP7+/omrU9LPX8g+UThloxEMxqJFXjxESAyPQcSEExrLWLNmzW57e/txP/fw8ABHR8cdDAaDt3xF2ru9vb03sVgs0cbGxs/FxWVZUlISj0aj+dna2oKtrS1M5PcwJCgUCry8vODRrs84vPfoH6OjoyCXy6Gvr+/R6+CWrX9s7evrk/b19bWr1Wqli4sLZ8OGDe95eXmxUSjUuAd0cHDwjoqK2sYKXFIhvnldYYTTQpgU4/8+jyASCYDGoCd+ZkYYF8OICYezl8PhuOkbQyAQIDo62s/NzS2np6cHbGxsgEajAYFAAAwGA1gsFia6CE0NgUAABwcHsLe3B61WC2q1eo9WqwWNRgNKpRLUajUQiUSgUCh6zwGHwwGTydzo5+eXBQBnZu8MEJ5keHhYPqyYWMtHR0ZBpVIhYj9FUDONgOUvT12+du3avMDAQJjssdRqNWCxCyrEZdLodDoQi8Ulx44de628NL/V1Pa8iERE8l2dHB2CJvpcq9Nqbt1qKURWj1Njxld0ZGTkAW9v70kLCQC8sEIC8O/HKx8fn2gmk8kHgCk7pRFmzrWyAikASE1tx0Jj2uH0EZHL/N7YtuvT4OBgzmz4OBYSeDweIiMjt2S++vtMP1YYEmmJsCCY8mNOIJtr6+zsHBcZGXmIw+G4mZubG8m0hU9HRwcUFxe/KxQKTyDRsQjznSmJCS9+dVRERMTfQ0NDo2xtbfUGiSFMjtHRUaitrc3Jzc09kHvxVLmp7UFAmC6oZQkvrZLL5RJhReHtiQb5scKIXC7371FRUX90dnYGIpE4JR8Jgn40Gg20t7fXFxYWfnr9+vWjz8sdYi+Osh4vzgUBwZSgtu94V+fs7Hx7YGCgra6u7khLS0u2RCwYeTQgKmYFh8fj/f/g4OAldnZ2prR1wdPd3Q1CofBQSUnJkdLi3N8E93FCY6k+Pj48FxcXjlar1ZSWlh65VvYr4kREmDNg79+/D3FxcW5OTk5uXl5evNbW1tL0jK3ZXV1d1ykUintycvInoaGhdkj+gvGxs7MDPp+/m0AgWMQvS/lyeHhYTqPRPJycnIJSU1NZ3t7eW2g0Gly/fv2oWq1Gij0hzClQ/gHhpLS0tEM8Hm/7I8Ho7++HlpYWsLa2Bg8PDxOb+OKhUCigqakJ7t+/D25ubuDu7g4oFAp0Oh08ePAAvv7666TTWUdzTG0nAsKTYMU3ryuSU18+4+bmFrZo0SIOAICVlRUsXrx4zkakLnRIJBI8CgJ8MtdJp9NBZ2enqL29XWRC8xAQxgUNAHD+3L8KGhoaCp78ABES04JCoX4jJAAAAwMDUFtbe96YpRMQEKbL41DU5ubmko6Ojj2PSgggzD36+/vrb9y4cX425zzw93/8EBjon2is44+NjSkePBjqGRwc7G5v7xBV19w8U5B/3qgrr9+/uWtXUuKKD/TZ9MXh/066/OuFmunO8dGBQ98HBbGSp/t9U6LRaDXK0dHBoeFhuVzeL22/0yFqamopufjLqRJ933ssJi0tLSXV1dWHGAzGbuObOzs8ubqa71vZKpUKOjo6blwpOF8zm/Mu5cVkLlkSaswprAHAaVihgK7O7oSGxltvfXLon3nXK4RHT2cdN4pfKDCAlZyUuMJan02nTmczAaBmunPw4qI3cbnh0/36XICq0+lgcPABp7OrK629vUP5z8++LLh2XXD05L++yxrvC4/F5EZ12WBS8saLS5Ys2U2lUufUY45SqQSlUgkqlQrUavXj19jYGGg0GtBoNKDT6UCn05VotVq1TqfToFAojFar1eh0Og0Wi8XhcDgeGo1+/PhgZmYGOBwOsFgsmJmZ/eY1F+nt7YXa2trs2Z73wdCQBgCMHp1IJpHA09MdPD3dLRIS+OtKisvWvbP7vf2lZdePVFwzbHTwyMiI3hidkZFRUKvUYzOZ48HQkBIA5nWqBAqFAktLC7C0tADmIh88Pz4uMSyUk7hn776DV4tKPn/6d/lNxp1MJqsRCASf8vn8XdMpOjRTVCoVjI2NgUqlAq1WCyMjI9DX1wf379+Hvr6+/Q8ePOgdGRmRKxSKx0WLFAqFXKlUKnQ6nUar1arHq47mxwrD4/F4Eg6HI2GxWDwej7cgkUjWFAqFam5uTjU3N6eRyeQPLSwswNraGqysrIBAIDwWFywW+zja11Qi29LSclIikeSZZPJZBovBAI8XA8HBQR9kZZ3lR8cmvFZSlGe00p8IkwONRkNERBj4+i7a4+XpHv307/IbMakWlciXJbx0nMPh7Jqo0JGh0el0MDo6Cl1dXSCVSkEmk7177969W319fe1DQ0M9KpVKoVarlWq1WjndNhUPG3ApAWDcOxLTLwSDwWAOotFoDBaLxRMIBAsrKysne3t7Xzqd7k2n0/c4OzsDlUoFHA4364IyMDAATU1NxdWikhcq6tXKyhJezljPJZKI2eERS5cZeoWCMD2srCwhPX0tVzk2djiCG//GtfLLUoBxShB0dHTU3Lx580sLC4vtJBLJKMZoNBqQSqUglUqPdnR01PT09DT19/fLHjx40DM0NNQ72933GiSVGgB4JFQK+LfoSAGgnL04yppEIh2xtLS0t7GxcaFSqR7Ozs4fMRgMcHR0nJX8pJs3b54Ui8UXjT7RHIRMIkFK8irfwcEHPwQELUmqvYHUGJkLmJubw8YNa/i9vfffY/px3myQiDTPiEl9nVDDX576jaenZ7SnpyfLUJNrNBqQyWRw+/bt4x0dHTdkMlltV1dXw/XygjkdEv4wB0YOAK0AUM70C8HQ6fSzdDrdm0qlejg6OrLc3Ny2MBiMadWjfR4PHjyAmzdvZs/1v5MxoVAokJK8iicWS95k+nH+s0EiQhqpzQGoVFtYk5a87ba0XQAA34xbpagg/5zoT7s/OGNnZ8eaaYkBuVwOnZ2d5VKpVNTS0lLS2NhYWFVZ3Dujg5qQh6uY+ocvCAiKIPn4+Jz19PSMdnV15VCpVL6Dg4NBViw6nQ5EItHRpqamqzM+2DzHzo4O69amftLQeKsAZrDLgmBY/PyYsCIhfs+SiKUFE5Y8EwqFx11cXDihoaFTjjFAoVAwPDwMHR0dourq6jNCofDHhZqUVnvjmgIAcgAgJyg40mLRokX8kJCQjT4+PussLS1n1JPl7t27UFxcfHguB6mNjY2B7G4naNRTWyygUCjAYDGAx+PB0sICSCSi3vFYLBbCwjjA8vddBQtATKb7d3saBwc7IJPJBpsHjUGDGRYLJBIJLK0sAfucmyIGg4FFi3y8AwNZtycUk5KiS02vvf7WWQaDkejg4DApQwAeh3xDaWnpPoFAcPxFqnP6sEvgGf+A8Bx3d/cvIyIiNi1evHjT8wpNj8fAwACUlZW9P9dD5+/ckcFbf9gd2dcnn9LNAovF4inmZHtXNxdOdBR3+/JlS33pdP29wolEInA4weuiYxOy5vvuTkeHDHb+8c8xvb33Z3R9/N+Df+uIjYk02DwkEsna2trS1d/fNyGeF7uTyw1/7g3R3t4O2OxA/TVghULhcQqFQk1JSfmYSNR/5wD4d6EfgUBwvLS09IhUKhW9qAV5H9YjKQwJi6uvrKw8ERoamhkSEpKp7w7yJEqlEiQSyZmysrJv53qjdaVSCZdyTk+3qFMrAJRHRPLPN95qeifj5fU7mYt8JhyMRqMhMJDFdnF25gDAvBYTpXIMWlpay2fq/8m5mDcIABYGnEcGAGI/VlhBZWX1yZdSkz55OX0dV5+7w9bGGvz8mPrFpK62QskJjf2GTqd7x8bGbpnID4BCoUAmk0lLSkqOiESik2UleS/MakQflYKrXQDQxY1a3tTe3i6KiIjY5OXlxX7e9+rr6wsuXbr0t4ffn9OgMWjghMZQRcLp+8GulRVI/QPC37Wxtnal0ajJtjY2E451ZjiBra31vE9lR2PQQKFQaAAwo98Yi8Xq9fpPd56HO6rlvKWJv/PwcK+JilyCmajWMw6HAzs7+rMFpQOCIn6zHywSFvXm5eUdFAqFZ9Rq9bgHa2trq79w4cK+zz49cAARkmcpL81v/a/Dhz49d+7c3qqqqjyVSjXuOJ1OBxKJpDw3N/fA5V+zax6978cKw/sHhM/raMrnUVdboSy4fPWQSFSjd5yFBQWIRNKEd2IEw1J4JUd88WL+R51d3XrHWVDMnxUTa2tr1zXrNiUGsrmPf7DS4tymCxcu7Kuurs55+kKQSqVN586d23vs+8NHDXUCC5Wzp3/Iy8rKeruysvLM2Nhvo7VVKhXU1tYWnj17du/T7UOdnZ2D7OzsfGGB09raVi4S1RzXl0eFw+EAj8chYjKLVFffyOrq1C8mJBLpWTFRKBRyDofzC4vFWvXk+1ev/CLOzs7eKxAIslQqFeh0Oujp6enKzs7em/XTd7OayTqfKb56sT4rK+sPAoHg5KO/o0KhAKFQmHXy5MkdF3/5+TeZmctXpIXZ29v7zqVcKWNRX1epuXu3U/y8pEw0GmndOZt0dnXVDw0P6/W5oNHoZ30mQ0NDPb29vfvj4+Pf3rR5B/7od188XnEUXr4gDgmL+0NfX5/U19d3d3l5+YGfTnyDtLmcIhXXLsu4UcvfR6PRGGtra9eysrIjYrE45+kt4Fheou/69es/unnz5vm7d+/Wmsre2WRkZGTQ1DYg/JYGiUiTm1ugBAC9IfHPiEmDpFITE7fqJI/H27lmzZpDq5LWtz55t6wUXO3ihMYerK+vz2tpaUFaM0yT8tL81ujYle+TSCTrvEunBU9/voTLd92wYcPHVCqV39XVdXCu7+oYCp1O90Kc50Jk3I5+xVcv1jc3N5d4enpSMzIyvkpK3sh78nORsKg3++yPBS/q1q+hKCm61DSekERGJ3ikp6d/ERsbm1xVVXWwtbX1hRFtFAqFPMLMUyZsDyoQCI7LZDKIiIjwzczM/GpV0vro2TTsRSUqZoX3+vXrP1u9enXi0NAQiESirIdRtggIc5oJ40zq6uryGhoa8ry8vBJCQ0O9USjU94mrN7yWc+EnvaXb5gJMvxCMp6cnl0Kh2Le1tZVXXLs8L1LXefGrWRkZGZ/x+XyeUqkEkUh0vqenZ14HZyG8OEwoJjdrygd37NxTEBkZmWBtbQ3BwcEeKBTq+/UbX3/355Pfzlmn66qk9dGbN29+k8PhbCSRSNDZ2Snb9ae/HCkpKTksEhbN2QTD5NSX+Vu3bj0cHBzsjcFg4O7du1BWVvbNwxB9BIQ5j94I2Fu3bhXW19cDl8sFLBYLHA7Hg0wmf/e77e84ffXlPz6fLSMnQ2paZkJ4eHjmtm3b+B4eHvZkMhlQKBTY29s72dvbfxgUFJT8x7ffP1NRUfHjXErnZ/qFYKKjo7dt3rz5g8DAQPtH/XHa2tpqGhsbC55/BASEuYFeMblz505NTU3NgfDw8PcwGAygUCjw9fW1IJPJn/1130Hv0tLSI4WXL4hny9inYS+Osvbz80tgMpn8jIwMPovFch2vpoiDgwM4ODhwfH19OYsWLeJv3/Hu+cbGxquzXZz5aZYlvMRJT0/fFhkZue3JZmfd3d0gEolOIr4ShPmEXjFpkFRqXlrzSnFnZ+d7Tk5OjzNfXVxcICMjY6ezszNnVdL6vU8HWhmbgKAIkrOzMyc1NTXz0YU4maAuOp0OK1as4EVFRfGEQqHg1dfePHzr1q2rs71S8WOF4f38/BLS09M/iIyM5DxdxLq5uVlcVVU1bgVwBIS5il4xAQCQyWRigUBwJikpKe3JVGQcDgdLly7l2tranti0ecf7IpEoy9hbxX6sMDydTvdevXr1ltjY2F3u7u6AxT73FJ7B3Nwc4uLiwthsdphQKCzZkL7l0/r6+oKbNeVG90+EhMXZL1++fFtycvKHrq6uz4igUqmE5ubmEiTHCWG+8dwrUXD9imz9xtd/jIuLS7N5KpsTjUZDUFCQE4PB+F4oFGYmJW888Mv5k4UTHGpGxC9LYaenp78VEhKyxdHRESgUyoyOh0KhwNraGuLi4qIDAgKi6+rqyjekb/mHMSN6N6RvSdu+ffseNpsdZm09ftuW+vp6EIvFSB9hhHnHpG7rUqm0orW1tdXS0tLj6TIEaDQaaDQaxMfH811dXTl/3Xfw+JUrVz411J01cfWG6IiIiC07d+5McHNzs7ewMGyOFw6HAwcHB6BSqVx3d/fwz7/4rkAgEBwXCoUnHpZonDGrU9J5MTEx27du3Zrm4uKC0beaqq6u/ry+vj7XEPMiIMwmkxKTimuXZe/u+fCkp6fnexPdUfF4PPj7+1szGIydLi4unF1/+kvenTt3RG1tbRXTqfma8lIG39/fP/HVV19NZrFYHpMpzjQTzMzMwNPTE+Pp6Zng6emZ4Ofnl5CesfV8bW1tznQe3/wDwvFeXl7Rvr6+Ca+88kpaUFCQh74GXzqdDrq7u6GpqankRQmdR1hYTNrhUFVVlcXj8d6ysrKy0OfstLS0hPj4eC6Xy+U2NzeDRCI5/sa2XeX37t1rGhwc7BoYGJBN1P+FFbiE5OzszGaxWImvvvrqpoCAAKfp+ERmCpPJBCaTmcnhcDJLS0u/TE59+YxUKhXoi/lg+oVgrKysGJaWlna2trYeaWlpXDabvTMgIGDSfp2KiorzbW1tL0zoPMLCYtJX6uVfs2u++PKowMPDgz+ZIslEIhECAgKAxWJlajSazJ6eHmhra4PW1tZvtmz9o6Czs7O+r6+vfWxsbFir1WosLCzsV6xYkcnj8d7z9vaelmPV0Hh5eYGnp+f2mJiY7UVFRZ/HL0v5tru7+5ZGo1FisVg8Docj4fF4CxsbG1c+nx/m7e39sYeHB7i4uIC5ufmU6r4ODQ1BZWXlifkSrYuA8DRTumIrKytPent78728vCb9HRQKBVgsFhwcHIBOpwObzd4yNja2RaVSwdDQEHR1dcHo6CjQaDRwdXWdsWPV0KBQKPDw8AA7O7udERERO2tra2FgYACoVCo4OTkBjUYDMpkMeDz+8WuqaLVaaGxsbL19+/YzSX8ICPOFqYrJidDQ0AwvLy/e80c/CwaDARKJBI86BdJoNHB3dwe1Wj0nViL6IJPJwGQywdnZGZRKJRAIBDBUx8OBgQEoLS39BtkORpjPTJg1PB61N64pmpqarvb39xvUiLkuJE9CJpPBxsbGYEICANDZ2SlHgtQQ5jtTEhMAgLq6ulyJRFJvDGNeREZGRkAikRSUFuci2cEI85opi0l+7hmBWCzOeV6dToTJcfv27cHr168jxbgR5j1TFhMAgObm5hKZDNl0MAQtLS3Xzpw6hkS8Isx7piUmUqlUIBAIJuyjgzA5Ojs7QSKRINGuCAuCaYmJsKKw68qVK59KJJIu5HFneiiVSigqKjouEolOmtoWBARDMC0xAQC4+MvPJadOnXq3ra1N8yL0dDEkOp0OSktLy/Pz8w8+3d4CAWG+Mm0xAQA4fuy/jl+8ePGju3fvGsqeBY9Wq4XKysrWU6dOvX31yi8mKyyFgGBoZiQmAAD/79D+fadPn96PCMrz0el0UFVV1frtt9+mj9fiAgFhPjNjMQEAyMvLO3Ds2LE/tLS0INmuerh27Vr9999//xoiJAgLEYOEntbVVigB4PNNm3cMpqSkfMRms50McdyFgkqlgqKiovJTp069nZ97BhEShAWJQePYj373xdF1GzbLFQrFx6Ghob766ne8KNy7dw+KiopO5ubmfmTK4tsICMbG4EkxWT99d35l4rre/v7+D0NCQvh0Ot3QU8wL1Go1SKVSTX5+/sH8/PyDSP8bhIWOUTLsLuVklQcFR65pbGzcvnLlyvfc3NwsCASCMaaac+h0OhgaGoLq6uqaCxcu/OV01tGcTw7uM7VZCAhGx2jpug/vxAd58atzoqKitq1cuXKnvb29saabE+h0Oqiurpbm5eUdrK6uPlspuDrvY0hmO4YIhUIBGq1/X2CmNqFQKL3/79HomZ/z82xEowyy9zFr80zGDqPn/hdeviBmL47ad+fOnRsRERGbQkNDo62srIw97azT2dkJxcXFx0tKSo7Mdh8hY4LD4TDPH2U4MFjMc6tLmZmZzaj+Aw6H0/t9PB4PGCxmRudNJBL0ngeZTAI0Gj3jv+1szfM88Hic8cUEAKCmqlQOAN/ELU2qkEgkySwWK3HRokVcBoMxG9MbDZ1OB83NzdDU1FRQW1t7XiAQHJ+ovu18pbr6Rg6L5ZtoM0EhcUPT0tJW8tWRb0vQqIkvgKqqmhnVfrl2TfANXo+gjKlUio4OWc1M5sjOzjnQUH8rbqLPu3t6moaGhmfc+3q25tGHUqmECoEIUKbIrVkcEkONiIh4jcvlvu7s7OxLo9GmVe7QVCgUCujq6oKGhoaCioqKo9XV1WeM3YDMVPDik1gpyas+XrVyeaKXl8czjyANjbcgI/MNmkg49Q4ECPOH3NyC4RUr+M8IcHt7B1y9WlKRl3/5kElKnD1sfXEoJCzueEBAQGJYWFgGk8nk2djYAIFAgLm4pTw6Ogqjo6Mgl8vhxo0b50tLS4/U19fnLvS2FIWXfxEDQNLmLW9ueW1TxtchHDaQyWRTm4VgYkZHR6G+vhF+/NfP+y5e+vVjiVgwZpKVydOwF0dZW1lZOTGZTD6bzU4LCAiIptPp8HTDL1MwOjoKLS0tUFdXd1IsFudIpdKKgYGB7tloJTrX4MUnsVJTEj9etzY10dHRAQAAGm81wcsZW5CVyQInL69gNCGBjwcAGBx8ANnncypOnTr3H9nn/reD55wovvrQpyIHAHFUzIocGo3mQaPRfBwdHVlubm7bXF1dgcFgABqNNvruglwuh7t374JMJoOOjo7P79y5I+ru7m7q7e1tXQi7MzOh8PIv4pCw2DdaWtte37Au7aPIyCWAxWABjUbPif9HCMbjURtKiaQBfvr5zH9evlJ0uLQ4r/nJMXNiZTIRrMAlJAcHB18HBweWo6Mjy8rKajeJRAJLS0uwtLQECwsLoFAogMfjAYvFgpmZ2XNXMyqVCoaHh2FoaAiGh4cfvwYGBqCvrw+6u7vfvnfvXlNvb29rT09Pq0QsUM7S6c4rNqS/lrZ5U+YPRBKR9M7u9xwqBUUvtNAudH766XSLE8PR49ixE78/8tVnX403Zk7fUR46NUUAIPIPCMdTKJTdNjY2QKPRgE6nA51OB1tbWyCRSIDD4YBAIAAejwcCgfDYUajVakGlUoFarQadTvfY79HX1wf9/f0gl8tBLpfDvXv3HvXw+dxQPYYXMj+d+P7Mmzv+5OHr6/OJWq1GBHeB09TcUiKuq/coKS3/eqIx/wPkiIXC3w6YjAAAAABJRU5ErkJggg==");
+
+ --keyword: #ff79c6;
+ --identifier: #f8f8f2;
+ --comment: #6272a4;
+ --operator: #ff79c6;
+ --punctuation: #f8f8f2;
+ --other: #f8f8f2;
+ --escapeSequence: #bd93f9;
+ --number: #bd93f9;
+ --literal: #f1fa8c;
+ --program: #9090c0;
+ --option: #90b010;
+ --raw-data: #8be9fd;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal);
+}
+
+@media (prefers-color-scheme: dark) {
+ [data-theme="auto"] {
+ --primary-background: #171921;
+ --secondary-background: #1e202a;
+ --third-background: #2b2e3b;
+ --info-background: #008000;
+ --warning-background: #807000;
+ --error-background: #c03000;
+ --border: #0e1014;
+ --text: #fff;
+ --anchor: #8be9fd;
+ --anchor-focus: #8be9fd;
+ --input-focus: #8be9fd;
+ --strong: #bd93f9;
+ --hint: #7A7C85;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHN0RXZ0OndoZW49IjIwMTktMTItMDNUMDE6MTg6MjIrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4JZNR8AAAfG0lEQVR4nO2deViTZ7r/7yxkJaxJ2MK+GCBAMCwS1kgUFQSKK4XWWqsz1jpjp3b0tDP1V+eqU391fqfT/mpPPd20drTFDS0KFEVWJSGAEgLIZpAICBJACIRs549Rj1WILAkBfD/XlevySp68z/0S3+/7vPdzLyidTgcLkU2bd+z39/f/q1gshsrKSoJELFCa2iaEuU9K6kb+8uXxv54/fzE8L/eswNT2zCfQpjbAGKS8lPFKSEjIXiaTCSEhIeDj4xNnapsQ5j6rktZGp6UlfxIdzQVzCplmanvmG1hTG2BIAtlc26CgoDfT0tL2e3l5AQCAjY0NkMnk/a9s2k6rrKw8UV8n1JjYTIQ5RlAw14KzmL3xze1vfJyUuMJaq9UCFovFm9qu+YbBxcSPFUYkk8l2Q0NDsvo6ocrQx5+I8Ih4bz6f/0l8fHyKlZXV4/dRKBQwmcwwMpn8A4FAoPgHhH9bV1sxa488wZxoaycnJ/a9e/duCa5fkc3WvAiTI4Ib77p+XdqHG9anbfLy8gAAgLGxMdBpF+bjvzExqJj4scKI0dHRnwQHB++orq7+AgDeMuTxJ2Jl4rqU9PT0EwEBAUQCgTDuGAaDAampqYepVKpHUHDk325Ulw0a266YuFW+Gzdu/MDPz29jfn7+XgA4aOw5ESZP6kvpCXv3vnM8NiaSamVl+fj9BepGNDoGFRN7e/slcXFxO1xcXMDJyWnH7j//H/fi4uJdgutXmgw5z5O8smn7X9euXbvf29sbMBjMhONQKBRYWVlBbGzsbjMzM3JoOG+/sKKwy1h2rd/4elpGRsYuLy+vaDweD2w2Oy1h5ZrCvEunEaeeiVnMiabyl/F2/+X9P+8JDPQHHA5napMWBAYTk6DgSNuEhIS9DAYDAP7tq1i6dOkqOp3OWbNu0wens44emeoxA9lcWwKBYEMkEm2JRKIdHo+3QKFQWJ1Op8ZgMER3d/dVq1evTnFycpr0MSkUCsTExGzH4/Gk1LTME/39/TI0Go1FoVCg1WrVY2NjipGRkcGRkRH5dPwrEZHLXMPCwjJSUlIy3dzcfB+97+rqGhYSEpIOAIiYmBguN3zL77dt3uPh4W5qUxYUBhMTb2/vjeHh4cvR6P/dILK0tITIyEg7BweHr363/Z3Ampqaf1Zcu/zMKiVsyVJvMplsRyKR7IhEor2FhYUbhUJhJCYm2pFIJB6JRAIymQx4PB7QaDRoNBowMzMDJycnwOOn7icjEokQGxu7icFgbLp///7jFY1WqwWlUgkjIyOgUCgO7Ni5Rz48PCwfHh7uGRkZeaBQKOSjo6ODCoVCXlNVKn/6uCsT13FXrVr1emho6BYKhfLMnP7+/omrU9LPX8g+UThloxEMxqJFXjxESAyPQcSEExrLWLNmzW57e/txP/fw8ABHR8cdDAaDt3xF2ru9vb03sVgs0cbGxs/FxWVZUlISj0aj+dna2oKtrS1M5PcwJCgUCry8vODRrs84vPfoH6OjoyCXy6Gvr+/R6+CWrX9s7evrk/b19bWr1Wqli4sLZ8OGDe95eXmxUSjUuAd0cHDwjoqK2sYKXFIhvnldYYTTQpgU4/8+jyASCYDGoCd+ZkYYF8OICYezl8PhuOkbQyAQIDo62s/NzS2np6cHbGxsgEajAYFAAAwGA1gsFia6CE0NgUAABwcHsLe3B61WC2q1eo9WqwWNRgNKpRLUajUQiUSgUCh6zwGHwwGTydzo5+eXBQBnZu8MEJ5keHhYPqyYWMtHR0ZBpVIhYj9FUDONgOUvT12+du3avMDAQJjssdRqNWCxCyrEZdLodDoQi8Ulx44de628NL/V1Pa8iERE8l2dHB2CJvpcq9Nqbt1qKURWj1Njxld0ZGTkAW9v70kLCQC8sEIC8O/HKx8fn2gmk8kHgCk7pRFmzrWyAikASE1tx0Jj2uH0EZHL/N7YtuvT4OBgzmz4OBYSeDweIiMjt2S++vtMP1YYEmmJsCCY8mNOIJtr6+zsHBcZGXmIw+G4mZubG8m0hU9HRwcUFxe/KxQKTyDRsQjznSmJCS9+dVRERMTfQ0NDo2xtbfUGiSFMjtHRUaitrc3Jzc09kHvxVLmp7UFAmC6oZQkvrZLL5RJhReHtiQb5scKIXC7371FRUX90dnYGIpE4JR8Jgn40Gg20t7fXFxYWfnr9+vWjz8sdYi+Osh4vzgUBwZSgtu94V+fs7Hx7YGCgra6u7khLS0u2RCwYeTQgKmYFh8fj/f/g4OAldnZ2prR1wdPd3Q1CofBQSUnJkdLi3N8E93FCY6k+Pj48FxcXjlar1ZSWlh65VvYr4kREmDNg79+/D3FxcW5OTk5uXl5evNbW1tL0jK3ZXV1d1ykUintycvInoaGhdkj+gvGxs7MDPp+/m0AgWMQvS/lyeHhYTqPRPJycnIJSU1NZ3t7eW2g0Gly/fv2oWq1Gij0hzClQ/gHhpLS0tEM8Hm/7I8Ho7++HlpYWsLa2Bg8PDxOb+OKhUCigqakJ7t+/D25ubuDu7g4oFAp0Oh08ePAAvv7666TTWUdzTG0nAsKTYMU3ryuSU18+4+bmFrZo0SIOAICVlRUsXrx4zkakLnRIJBI8CgJ8MtdJp9NBZ2enqL29XWRC8xAQxgUNAHD+3L8KGhoaCp78ABES04JCoX4jJAAAAwMDUFtbe96YpRMQEKbL41DU5ubmko6Ojj2PSgggzD36+/vrb9y4cX425zzw93/8EBjon2is44+NjSkePBjqGRwc7G5v7xBV19w8U5B/3qgrr9+/uWtXUuKKD/TZ9MXh/066/OuFmunO8dGBQ98HBbGSp/t9U6LRaDXK0dHBoeFhuVzeL22/0yFqamopufjLqRJ933ssJi0tLSXV1dWHGAzGbuObOzs8ubqa71vZKpUKOjo6blwpOF8zm/Mu5cVkLlkSaswprAHAaVihgK7O7oSGxltvfXLon3nXK4RHT2cdN4pfKDCAlZyUuMJan02nTmczAaBmunPw4qI3cbnh0/36XICq0+lgcPABp7OrK629vUP5z8++LLh2XXD05L++yxrvC4/F5EZ12WBS8saLS5Ys2U2lUufUY45SqQSlUgkqlQrUavXj19jYGGg0GtBoNKDT6UCn05VotVq1TqfToFAojFar1eh0Og0Wi8XhcDgeGo1+/PhgZmYGOBwOsFgsmJmZ/eY1F+nt7YXa2trs2Z73wdCQBgCMHp1IJpHA09MdPD3dLRIS+OtKisvWvbP7vf2lZdePVFwzbHTwyMiI3hidkZFRUKvUYzOZ48HQkBIA5nWqBAqFAktLC7C0tADmIh88Pz4uMSyUk7hn776DV4tKPn/6d/lNxp1MJqsRCASf8vn8XdMpOjRTVCoVjI2NgUqlAq1WCyMjI9DX1wf379+Hvr6+/Q8ePOgdGRmRKxSKx0WLFAqFXKlUKnQ6nUar1arHq47mxwrD4/F4Eg6HI2GxWDwej7cgkUjWFAqFam5uTjU3N6eRyeQPLSwswNraGqysrIBAIDwWFywW+zja11Qi29LSclIikeSZZPJZBovBAI8XA8HBQR9kZZ3lR8cmvFZSlGe00p8IkwONRkNERBj4+i7a4+XpHv307/IbMakWlciXJbx0nMPh7Jqo0JGh0el0MDo6Cl1dXSCVSkEmk7177969W319fe1DQ0M9KpVKoVarlWq1WjndNhUPG3ApAWDcOxLTLwSDwWAOotFoDBaLxRMIBAsrKysne3t7Xzqd7k2n0/c4OzsDlUoFHA4364IyMDAATU1NxdWikhcq6tXKyhJezljPJZKI2eERS5cZeoWCMD2srCwhPX0tVzk2djiCG//GtfLLUoBxShB0dHTU3Lx580sLC4vtJBLJKMZoNBqQSqUglUqPdnR01PT09DT19/fLHjx40DM0NNQ72933GiSVGgB4JFQK+LfoSAGgnL04yppEIh2xtLS0t7GxcaFSqR7Ozs4fMRgMcHR0nJX8pJs3b54Ui8UXjT7RHIRMIkFK8irfwcEHPwQELUmqvYHUGJkLmJubw8YNa/i9vfffY/px3myQiDTPiEl9nVDDX576jaenZ7SnpyfLUJNrNBqQyWRw+/bt4x0dHTdkMlltV1dXw/XygjkdEv4wB0YOAK0AUM70C8HQ6fSzdDrdm0qlejg6OrLc3Ny2MBiMadWjfR4PHjyAmzdvZs/1v5MxoVAokJK8iicWS95k+nH+s0EiQhqpzQGoVFtYk5a87ba0XQAA34xbpagg/5zoT7s/OGNnZ8eaaYkBuVwOnZ2d5VKpVNTS0lLS2NhYWFVZ3Dujg5qQh6uY+ocvCAiKIPn4+Jz19PSMdnV15VCpVL6Dg4NBViw6nQ5EItHRpqamqzM+2DzHzo4O69amftLQeKsAZrDLgmBY/PyYsCIhfs+SiKUFE5Y8EwqFx11cXDihoaFTjjFAoVAwPDwMHR0dourq6jNCofDHhZqUVnvjmgIAcgAgJyg40mLRokX8kJCQjT4+PussLS1n1JPl7t27UFxcfHguB6mNjY2B7G4naNRTWyygUCjAYDGAx+PB0sICSCSi3vFYLBbCwjjA8vddBQtATKb7d3saBwc7IJPJBpsHjUGDGRYLJBIJLK0sAfucmyIGg4FFi3y8AwNZtycUk5KiS02vvf7WWQaDkejg4DApQwAeh3xDaWnpPoFAcPxFqnP6sEvgGf+A8Bx3d/cvIyIiNi1evHjT8wpNj8fAwACUlZW9P9dD5+/ckcFbf9gd2dcnn9LNAovF4inmZHtXNxdOdBR3+/JlS33pdP29wolEInA4weuiYxOy5vvuTkeHDHb+8c8xvb33Z3R9/N+Df+uIjYk02DwkEsna2trS1d/fNyGeF7uTyw1/7g3R3t4O2OxA/TVghULhcQqFQk1JSfmYSNR/5wD4d6EfgUBwvLS09IhUKhW9qAV5H9YjKQwJi6uvrKw8ERoamhkSEpKp7w7yJEqlEiQSyZmysrJv53qjdaVSCZdyTk+3qFMrAJRHRPLPN95qeifj5fU7mYt8JhyMRqMhMJDFdnF25gDAvBYTpXIMWlpay2fq/8m5mDcIABYGnEcGAGI/VlhBZWX1yZdSkz55OX0dV5+7w9bGGvz8mPrFpK62QskJjf2GTqd7x8bGbpnID4BCoUAmk0lLSkqOiESik2UleS/MakQflYKrXQDQxY1a3tTe3i6KiIjY5OXlxX7e9+rr6wsuXbr0t4ffn9OgMWjghMZQRcLp+8GulRVI/QPC37Wxtnal0ajJtjY2E451ZjiBra31vE9lR2PQQKFQaAAwo98Yi8Xq9fpPd56HO6rlvKWJv/PwcK+JilyCmajWMw6HAzs7+rMFpQOCIn6zHywSFvXm5eUdFAqFZ9Rq9bgHa2trq79w4cK+zz49cAARkmcpL81v/a/Dhz49d+7c3qqqqjyVSjXuOJ1OBxKJpDw3N/fA5V+zax6978cKw/sHhM/raMrnUVdboSy4fPWQSFSjd5yFBQWIRNKEd2IEw1J4JUd88WL+R51d3XrHWVDMnxUTa2tr1zXrNiUGsrmPf7DS4tymCxcu7Kuurs55+kKQSqVN586d23vs+8NHDXUCC5Wzp3/Iy8rKeruysvLM2Nhvo7VVKhXU1tYWnj17du/T7UOdnZ2D7OzsfGGB09raVi4S1RzXl0eFw+EAj8chYjKLVFffyOrq1C8mJBLpWTFRKBRyDofzC4vFWvXk+1ev/CLOzs7eKxAIslQqFeh0Oujp6enKzs7em/XTd7OayTqfKb56sT4rK+sPAoHg5KO/o0KhAKFQmHXy5MkdF3/5+TeZmctXpIXZ29v7zqVcKWNRX1epuXu3U/y8pEw0GmndOZt0dnXVDw0P6/W5oNHoZ30mQ0NDPb29vfvj4+Pf3rR5B/7od188XnEUXr4gDgmL+0NfX5/U19d3d3l5+YGfTnyDtLmcIhXXLsu4UcvfR6PRGGtra9eysrIjYrE45+kt4Fheou/69es/unnz5vm7d+/Wmsre2WRkZGTQ1DYg/JYGiUiTm1ugBAC9IfHPiEmDpFITE7fqJI/H27lmzZpDq5LWtz55t6wUXO3ihMYerK+vz2tpaUFaM0yT8tL81ujYle+TSCTrvEunBU9/voTLd92wYcPHVCqV39XVdXCu7+oYCp1O90Kc50Jk3I5+xVcv1jc3N5d4enpSMzIyvkpK3sh78nORsKg3++yPBS/q1q+hKCm61DSekERGJ3ikp6d/ERsbm1xVVXWwtbX1hRFtFAqFPMLMUyZsDyoQCI7LZDKIiIjwzczM/GpV0vro2TTsRSUqZoX3+vXrP1u9enXi0NAQiESirIdRtggIc5oJ40zq6uryGhoa8ry8vBJCQ0O9USjU94mrN7yWc+EnvaXb5gJMvxCMp6cnl0Kh2Le1tZVXXLs8L1LXefGrWRkZGZ/x+XyeUqkEkUh0vqenZ14HZyG8OEwoJjdrygd37NxTEBkZmWBtbQ3BwcEeKBTq+/UbX3/355Pfzlmn66qk9dGbN29+k8PhbCSRSNDZ2Snb9ae/HCkpKTksEhbN2QTD5NSX+Vu3bj0cHBzsjcFg4O7du1BWVvbNwxB9BIQ5j94I2Fu3bhXW19cDl8sFLBYLHA7Hg0wmf/e77e84ffXlPz6fLSMnQ2paZkJ4eHjmtm3b+B4eHvZkMhlQKBTY29s72dvbfxgUFJT8x7ffP1NRUfHjXErnZ/qFYKKjo7dt3rz5g8DAQPtH/XHa2tpqGhsbC55/BASEuYFeMblz505NTU3NgfDw8PcwGAygUCjw9fW1IJPJn/1130Hv0tLSI4WXL4hny9inYS+Osvbz80tgMpn8jIwMPovFch2vpoiDgwM4ODhwfH19OYsWLeJv3/Hu+cbGxquzXZz5aZYlvMRJT0/fFhkZue3JZmfd3d0gEolOIr4ShPmEXjFpkFRqXlrzSnFnZ+d7Tk5OjzNfXVxcICMjY6ezszNnVdL6vU8HWhmbgKAIkrOzMyc1NTXz0YU4maAuOp0OK1as4EVFRfGEQqHg1dfePHzr1q2rs71S8WOF4f38/BLS09M/iIyM5DxdxLq5uVlcVVU1bgVwBIS5il4xAQCQyWRigUBwJikpKe3JVGQcDgdLly7l2tranti0ecf7IpEoy9hbxX6sMDydTvdevXr1ltjY2F3u7u6AxT73FJ7B3Nwc4uLiwthsdphQKCzZkL7l0/r6+oKbNeVG90+EhMXZL1++fFtycvKHrq6uz4igUqmE5ubmEiTHCWG+8dwrUXD9imz9xtd/jIuLS7N5KpsTjUZDUFCQE4PB+F4oFGYmJW888Mv5k4UTHGpGxC9LYaenp78VEhKyxdHRESgUyoyOh0KhwNraGuLi4qIDAgKi6+rqyjekb/mHMSN6N6RvSdu+ffseNpsdZm09ftuW+vp6EIvFSB9hhHnHpG7rUqm0orW1tdXS0tLj6TIEaDQaaDQaxMfH811dXTl/3Xfw+JUrVz411J01cfWG6IiIiC07d+5McHNzs7ewMGyOFw6HAwcHB6BSqVx3d/fwz7/4rkAgEBwXCoUnHpZonDGrU9J5MTEx27du3Zrm4uKC0beaqq6u/ry+vj7XEPMiIMwmkxKTimuXZe/u+fCkp6fnexPdUfF4PPj7+1szGIydLi4unF1/+kvenTt3RG1tbRXTqfma8lIG39/fP/HVV19NZrFYHpMpzjQTzMzMwNPTE+Pp6Zng6emZ4Ofnl5CesfV8bW1tznQe3/wDwvFeXl7Rvr6+Ca+88kpaUFCQh74GXzqdDrq7u6GpqankRQmdR1hYTNrhUFVVlcXj8d6ysrKy0OfstLS0hPj4eC6Xy+U2NzeDRCI5/sa2XeX37t1rGhwc7BoYGJBN1P+FFbiE5OzszGaxWImvvvrqpoCAAKfp+ERmCpPJBCaTmcnhcDJLS0u/TE59+YxUKhXoi/lg+oVgrKysGJaWlna2trYeaWlpXDabvTMgIGDSfp2KiorzbW1tL0zoPMLCYtJX6uVfs2u++PKowMPDgz+ZIslEIhECAgKAxWJlajSazJ6eHmhra4PW1tZvtmz9o6Czs7O+r6+vfWxsbFir1WosLCzsV6xYkcnj8d7z9vaelmPV0Hh5eYGnp+f2mJiY7UVFRZ/HL0v5tru7+5ZGo1FisVg8Docj4fF4CxsbG1c+nx/m7e39sYeHB7i4uIC5ufmU6r4ODQ1BZWXlifkSrYuA8DRTumIrKytPent78728vCb9HRQKBVgsFhwcHIBOpwObzd4yNja2RaVSwdDQEHR1dcHo6CjQaDRwdXWdsWPV0KBQKPDw8AA7O7udERERO2tra2FgYACoVCo4OTkBjUYDMpkMeDz+8WuqaLVaaGxsbL19+/YzSX8ICPOFqYrJidDQ0AwvLy/e80c/CwaDARKJBI86BdJoNHB3dwe1Wj0nViL6IJPJwGQywdnZGZRKJRAIBDBUx8OBgQEoLS39BtkORpjPTJg1PB61N64pmpqarvb39xvUiLkuJE9CJpPBxsbGYEICANDZ2SlHgtQQ5jtTEhMAgLq6ulyJRFJvDGNeREZGRkAikRSUFuci2cEI85opi0l+7hmBWCzOeV6dToTJcfv27cHr168jxbgR5j1TFhMAgObm5hKZDNl0MAQtLS3Xzpw6hkS8Isx7piUmUqlUIBAIJuyjgzA5Ojs7QSKRINGuCAuCaYmJsKKw68qVK59KJJIu5HFneiiVSigqKjouEolOmtoWBARDMC0xAQC4+MvPJadOnXq3ra1N8yL0dDEkOp0OSktLy/Pz8w8+3d4CAWG+Mm0xAQA4fuy/jl+8ePGju3fvGsqeBY9Wq4XKysrWU6dOvX31yi8mKyyFgGBoZiQmAAD/79D+fadPn96PCMrz0el0UFVV1frtt9+mj9fiAgFhPjNjMQEAyMvLO3Ds2LE/tLS0INmuerh27Vr9999//xoiJAgLEYOEntbVVigB4PNNm3cMpqSkfMRms50McdyFgkqlgqKiovJTp069nZ97BhEShAWJQePYj373xdF1GzbLFQrFx6Ghob766ne8KNy7dw+KiopO5ubmfmTK4tsICMbG4EkxWT99d35l4rre/v7+D0NCQvh0Ot3QU8wL1Go1SKVSTX5+/sH8/PyDSP8bhIWOUTLsLuVklQcFR65pbGzcvnLlyvfc3NwsCASCMaaac+h0OhgaGoLq6uqaCxcu/OV01tGcTw7uM7VZCAhGx2jpug/vxAd58atzoqKitq1cuXKnvb29saabE+h0Oqiurpbm5eUdrK6uPlspuDrvY0hmO4YIhUIBGq1/X2CmNqFQKL3/79HomZ/z82xEowyy9zFr80zGDqPn/hdeviBmL47ad+fOnRsRERGbQkNDo62srIw97azT2dkJxcXFx0tKSo7Mdh8hY4LD4TDPH2U4MFjMc6tLmZmZzaj+Aw6H0/t9PB4PGCxmRudNJBL0ngeZTAI0Gj3jv+1szfM88Hic8cUEAKCmqlQOAN/ELU2qkEgkySwWK3HRokVcBoMxG9MbDZ1OB83NzdDU1FRQW1t7XiAQHJ+ovu18pbr6Rg6L5ZtoM0EhcUPT0tJW8tWRb0vQqIkvgKqqmhnVfrl2TfANXo+gjKlUio4OWc1M5sjOzjnQUH8rbqLPu3t6moaGhmfc+3q25tGHUqmECoEIUKbIrVkcEkONiIh4jcvlvu7s7OxLo9GmVe7QVCgUCujq6oKGhoaCioqKo9XV1WeM3YDMVPDik1gpyas+XrVyeaKXl8czjyANjbcgI/MNmkg49Q4ECPOH3NyC4RUr+M8IcHt7B1y9WlKRl3/5kElKnD1sfXEoJCzueEBAQGJYWFgGk8nk2djYAIFAgLm4pTw6Ogqjo6Mgl8vhxo0b50tLS4/U19fnLvS2FIWXfxEDQNLmLW9ueW1TxtchHDaQyWRTm4VgYkZHR6G+vhF+/NfP+y5e+vVjiVgwZpKVydOwF0dZW1lZOTGZTD6bzU4LCAiIptPp8HTDL1MwOjoKLS0tUFdXd1IsFudIpdKKgYGB7tloJTrX4MUnsVJTEj9etzY10dHRAQAAGm81wcsZW5CVyQInL69gNCGBjwcAGBx8ANnncypOnTr3H9nn/reD55wovvrQpyIHAHFUzIocGo3mQaPRfBwdHVlubm7bXF1dgcFgABqNNvruglwuh7t374JMJoOOjo7P79y5I+ru7m7q7e1tXQi7MzOh8PIv4pCw2DdaWtte37Au7aPIyCWAxWABjUbPif9HCMbjURtKiaQBfvr5zH9evlJ0uLQ4r/nJMXNiZTIRrMAlJAcHB18HBweWo6Mjy8rKajeJRAJLS0uwtLQECwsLoFAogMfjAYvFgpmZ2XNXMyqVCoaHh2FoaAiGh4cfvwYGBqCvrw+6u7vfvnfvXlNvb29rT09Pq0QsUM7S6c4rNqS/lrZ5U+YPRBKR9M7u9xwqBUUvtNAudH766XSLE8PR49ixE78/8tVnX403Zk7fUR46NUUAIPIPCMdTKJTdNjY2QKPRgE6nA51OB1tbWyCRSIDD4YBAIAAejwcCgfDYUajVakGlUoFarQadTvfY79HX1wf9/f0gl8tBLpfDvXv3HvXw+dxQPYYXMj+d+P7Mmzv+5OHr6/OJWq1GBHeB09TcUiKuq/coKS3/eqIx/wPkiIXC3w6YjAAAAABJRU5ErkJggg==");
+
+ --keyword: #ff79c6;
+ --identifier: #f8f8f2;
+ --comment: #6272a4;
+ --operator: #ff79c6;
+ --punctuation: #f8f8f2;
+ --other: #f8f8f2;
+ --escapeSequence: #bd93f9;
+ --number: #bd93f9;
+ --literal: #f1fa8c;
+ --program: #9090c0;
+ --option: #90b010;
+ --raw-data: #8be9fd;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal);
+ }
+}
+
+.theme-select-wrapper {
+ display: flex;
+ align-items: center;
+}
+
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%; }
+
+body {
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ font-size: 1.125em;
+ line-height: 1.5;
+ color: var(--text);
+ background-color: var(--primary-background); }
+
+/* Skeleton grid */
+.container {
+ position: relative;
+ width: 100%;
+ max-width: 1050px;
+ margin: 0 auto;
+ padding: 0;
+ box-sizing: border-box; }
+
+.column, .columns {
+ width: 100%;
+ float: left;
+ box-sizing: border-box;
+ margin-left: 1%; }
+
+@media print {
+ #global-links, .link-seesrc, .theme-switch-wrapper, #searchInputDiv, .search-groupby {
+ display:none;
+ }
+ .columns {
+ width:100% !important;
+ }
+}
+
+.column:first-child, .columns:first-child {
+ margin-left: 0; }
+
+.container .row {
+ display: flex; }
+
+.three.columns {
+ width: 25.0%;
+ height: 100vh;
+ position: sticky;
+ top: 0px;
+ overflow-y: auto;
+ padding: 2px;
+}
+
+.nine.columns {
+ width: 75.0%;
+ padding-left: 1.5em; }
+
+.twelve.columns {
+ width: 100%;
+ margin-left: 0; }
+
+@media screen and (max-width: 860px) {
+ .three.columns {
+ display: none;
+ }
+ .nine.columns {
+ width: 98.0%;
+ }
+ body {
+ font-size: 1em;
+ line-height: 1.35;
+ }
+}
+
+cite {
+ font-style: italic !important; }
+
+
+/* Nim search input */
+div#searchInputDiv {
+ margin-bottom: 1em;
+}
+input#searchInput {
+ width: 80%;
+}
+
+/*
+ * Some custom formatting for input forms.
+ * This also fixes input form colors on Firefox with a dark system theme on Linux.
+ */
+input {
+ -moz-appearance: none;
+ background-color: var(--secondary-background);
+ color: var(--text);
+ border: 1px solid var(--border);
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-size: 0.9em;
+ padding: 6px;
+}
+
+input:focus {
+ border: 1px solid var(--input-focus);
+ box-shadow: 0 0 3px var(--input-focus);
+}
+
+select {
+ -moz-appearance: none;
+ background-color: var(--secondary-background);
+ color: var(--text);
+ border: 1px solid var(--border);
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-size: 0.9em;
+ padding: 6px;
+}
+
+select:focus {
+ border: 1px solid var(--input-focus);
+ box-shadow: 0 0 3px var(--input-focus);
+}
+
+/* Docgen styles */
+
+:target {
+ border: 2px solid #B5651D;
+ border-style: dotted;
+}
+
+/* Links */
+a {
+ color: var(--anchor);
+ text-decoration: none;
+}
+
+a span.Identifier {
+ text-decoration: underline;
+ text-decoration-color: #aab;
+}
+
+a.reference-toplevel {
+ font-weight: bold;
+}
+
+a.nimdoc {
+ word-spacing: 0.3em;
+}
+
+a.toc-backref {
+ text-decoration: none;
+ color: var(--text);
+}
+
+a.link-seesrc {
+ color: #607c9f;
+ font-size: 0.9em;
+ font-style: italic;
+}
+
+a:hover, a:focus {
+ color: var(--anchor-focus);
+ text-decoration: underline;
+}
+
+a:hover span.Identifier {
+ color: var(--anchor);
+}
+
+
+sub, sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline; }
+
+sup {
+ top: -0.5em; }
+
+sub {
+ bottom: -0.25em; }
+
+img {
+ width: auto;
+ height: auto;
+ max-width: 100%;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic; }
+
+@media print {
+ * {
+ color: black !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ box-shadow: none !important; }
+
+ a, a:visited {
+ text-decoration: underline; }
+
+ a[href]:after {
+ content: " (" attr(href) ")"; }
+
+ abbr[title]:after {
+ content: " (" attr(title) ")"; }
+
+ .ir a:after,
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: ""; }
+
+ pre, blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid; }
+
+ thead {
+ display: table-header-group; }
+
+ tr, img {
+ page-break-inside: avoid; }
+
+ img {
+ max-width: 100% !important; }
+
+ @page {
+ margin: 0.5cm; }
+
+ h1 {
+ page-break-before: always; }
+
+ h1.title {
+ page-break-before: avoid; }
+
+ p, h2, h3 {
+ orphans: 3;
+ widows: 3; }
+
+ h2, h3 {
+ page-break-after: avoid; }
+}
+
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em; }
+
+small {
+ font-size: 85%; }
+
+strong {
+ font-weight: 600;
+ font-size: 0.95em;
+ color: var(--strong); }
+
+em {
+ font-style: italic; }
+
+h1 {
+ font-size: 1.8em;
+ font-weight: 400;
+ padding-bottom: .25em;
+ border-bottom: 6px solid var(--third-background);
+ margin-top: 2.5em;
+ margin-bottom: 1em;
+ line-height: 1.2em; }
+
+h1.title {
+ padding-bottom: 1em;
+ border-bottom: 0px;
+ font-size: 2.5em;
+ text-align: center;
+ font-weight: 900;
+ margin-top: 0.75em;
+ margin-bottom: 0em; }
+
+h2 {
+ font-size: 1.3em;
+ margin-top: 2em; }
+
+h2.subtitle {
+ margin-top: 0em;
+ text-align: center; }
+
+h3 {
+ font-size: 1.125em;
+ font-style: italic;
+ margin-top: 1.5em; }
+
+h4 {
+ font-size: 1.125em;
+ margin-top: 1em; }
+
+h5 {
+ font-size: 1.125em;
+ margin-top: 0.75em; }
+
+h6 {
+ font-size: 1.1em; }
+
+
+ul, ol {
+ padding: 0;
+ margin-top: 0.5em;
+ margin-left: 0.75em; }
+
+ul ul, ul ol, ol ol, ol ul {
+ margin-bottom: 0;
+ margin-left: 1.25em; }
+
+ul.simple > li {
+ list-style-type: circle; }
+
+ul.simple-boot li {
+ list-style-type: none;
+ margin-left: 0em;
+ margin-bottom: 0.5em; }
+
+ol.simple > li, ul.simple > li {
+ margin-bottom: 0.2em;
+ margin-left: 0.4em }
+
+ul.simple.simple-toc > li {
+ margin-top: 1em; }
+
+ul.simple-toc {
+ list-style: none;
+ font-size: 0.9em;
+ margin-left: -0.3em;
+ margin-top: 1em; }
+
+ul.simple-toc > li {
+ list-style-type: none; }
+
+ul.simple-toc-section {
+ list-style-type: circle;
+ margin-left: 0.8em;
+ color: #6c9aae; }
+
+ul.nested-toc-section {
+ list-style-type: circle;
+ margin-left: -0.75em;
+ color: var(--text); }
+
+ul.nested-toc-section > li {
+ margin-left: 1.25em; }
+
+
+ol.arabic {
+ list-style: decimal; }
+
+ol.loweralpha {
+ list-style: lower-alpha; }
+
+ol.upperalpha {
+ list-style: upper-alpha; }
+
+ol.lowerroman {
+ list-style: lower-roman; }
+
+ol.upperroman {
+ list-style: upper-roman; }
+
+ul.auto-toc {
+ list-style-type: none; }
+
+
+dl {
+ margin-bottom: 1.5em; }
+
+dt {
+ margin-bottom: -0.5em;
+ margin-left: 0.0em; }
+
+dd {
+ margin-left: 2.0em;
+ margin-bottom: 3.0em;
+ margin-top: 0.5em; }
+
+
+hr {
+ margin: 2em 0;
+ border: 0;
+ border-top: 1px solid #aaa; }
+
+hr.footnote {
+ width: 25%;
+ border-top: 0.15em solid #999;
+ margin-bottom: 0.15em;
+ margin-top: 0.15em;
+}
+div.footnote-group {
+ margin-left: 1em;
+}
+div.footnote-label {
+ display: inline-block;
+ min-width: 1.7em;
+}
+
+div.option-list {
+ border: 0.1em solid var(--border);
+}
+div.option-list-item {
+ padding-left: 12em;
+ padding-right: 0;
+ padding-bottom: 0.3em;
+ padding-top: 0.3em;
+}
+div.odd {
+ background-color: var(--secondary-background);
+}
+div.option-list-label {
+ margin-left: -11.5em;
+ margin-right: 0em;
+ min-width: 11.5em;
+ display: inline-block;
+ vertical-align: top;
+}
+div.option-list-description {
+ width: calc(100% - 1em);
+ padding-left: 1em;
+ padding-right: 0;
+ display: inline-block;
+}
+
+blockquote {
+ font-size: 0.9em;
+ font-style: italic;
+ padding-left: 0.5em;
+ margin-left: 0;
+ border-left: 5px solid #bbc;
+}
+
+blockquote.markdown-quote {
+ font-size: 0.9rem; /* use rem to avoid recursion */
+ font-style: normal;
+}
+
+.pre, span.tok {
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-weight: 500;
+ font-size: 0.85em;
+ color: var(--text);
+ background-color: var(--third-background);
+ padding-left: 3px;
+ padding-right: 3px;
+ border-radius: 4px;
+}
+
+span.tok {
+ border: 1px solid #808080;
+ padding-bottom: 0.1em;
+ margin-right: 0.2em;
+}
+
+.copyToClipBoard {
+ position: relative;
+}
+
+pre {
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ color: var(--text);
+ font-weight: 500;
+ display: inline-block;
+ box-sizing: border-box;
+ min-width: 100%;
+ padding: 0.5em;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ font-size: 0.85em;
+ white-space: pre !important;
+ overflow-y: hidden;
+ overflow-x: visible;
+ background-color: var(--secondary-background);
+ border: 1px solid var(--border);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.copyToClipBoardBtn {
+ visibility: hidden;
+ position: absolute;
+ width: 24px;
+ border-radius: 4px;
+ background-image: var(--clipboard-image);
+ right: 5px;
+ top: 13px;
+ background-color: var(--secondary-background);
+ padding: 11px;
+ border: 0;
+}
+
+.copyToClipBoard:hover .copyToClipBoardBtn {
+ visibility: visible;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll; }
+
+
+/* Nim line-numbered tables */
+.line-nums-table {
+ width: 100%;
+ table-layout: fixed; }
+
+table.line-nums-table {
+ border-radius: 4px;
+ border: 1px solid #cccccc;
+ background-color: ghostwhite;
+ border-collapse: separate;
+ margin-top: 15px;
+ margin-bottom: 25px; }
+
+.line-nums-table tbody {
+ border: none; }
+
+.line-nums-table td pre {
+ border: none;
+ background-color: transparent; }
+
+.line-nums-table td.blob-line-nums {
+ width: 28px; }
+
+.line-nums-table td.blob-line-nums pre {
+ color: #b0b0b0;
+ -webkit-filter: opacity(75%);
+ filter: opacity(75%);
+ text-align: right;
+ border-color: transparent;
+ background-color: transparent;
+ padding-left: 0px;
+ margin-left: 0px;
+ padding-right: 0px;
+ margin-right: 0px; }
+
+
+table {
+ max-width: 100%;
+ background-color: transparent;
+ margin-top: 0.5em;
+ margin-bottom: 1.5em;
+ border-collapse: collapse;
+ border-color: var(--third-background);
+ border-spacing: 0;
+ font-size: 0.9em;
+}
+
+table th, table td {
+ padding: 0px 0.5em 0px;
+ border-color: var(--third-background);
+}
+
+table th {
+ background-color: var(--third-background);
+ border-color: var(--third-background);
+ font-weight: bold; }
+
+table th.docinfo-name {
+ background-color: transparent;
+ text-align: right;
+}
+
+table tr:hover {
+ background-color: var(--third-background); }
+
+
+/* rst2html default used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+ border: 0; }
+
+table.borderless td, table.borderless th {
+ /* Override padding for "table.docutils td" with "! important".
+ The right padding separates the table cells. */
+ padding: 0 0.5em 0 0 !important; }
+
+.admonition {
+ padding: 0.3em;
+ background-color: var(--secondary-background);
+ border-left: 0.4em solid #7f7f84;
+ margin-bottom: 0.5em;
+ -webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+ -moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+ box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+}
+.admonition-info {
+ border-color: var(--info-background);
+}
+.admonition-info-text {
+ color: var(--info-background);
+}
+.admonition-warning {
+ border-color: var(--warning-background);
+}
+.admonition-warning-text {
+ color: var(--warning-background);
+}
+.admonition-error {
+ border-color: var(--error-background);
+}
+.admonition-error-text {
+ color: var(--error-background);
+}
+
+.first {
+ /* Override more specific margin styles with "! important". */
+ margin-top: 0 !important; }
+
+.last, .with-subtitle {
+ margin-bottom: 0 !important; }
+
+.hidden {
+ display: none; }
+
+blockquote.epigraph {
+ margin: 2em 5em; }
+
+dl.docutils dd {
+ margin-bottom: 0.5em; }
+
+object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
+ overflow: hidden; }
+
+
+div.figure {
+ margin-left: 2em;
+ margin-right: 2em; }
+
+div.footer, div.header {
+ clear: both;
+ text-align: center;
+ color: #666;
+ font-size: smaller; }
+
+div.footer {
+ padding-top: 5em; }
+
+div.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em; }
+
+div.line-block div.line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em; }
+
+div.topic {
+ margin: 2em; }
+
+div.search_results {
+ background-color: var(--third-background);
+ margin: 3vh 5vw;
+ padding: 1em;
+ border: 1px solid #4d4d4d;
+ position: fixed;
+ top: 10px;
+ isolation: isolate;
+ max-width: calc(100vw - 6em);
+ z-index: 1;
+ max-height: calc(100vh - 6em);
+ overflow-y: scroll;}
+
+div#global-links ul {
+ margin-left: 0;
+ list-style-type: none; }
+
+div#global-links > simple-boot {
+ margin-left: 3em; }
+
+hr.docutils {
+ width: 75%; }
+
+img.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em; }
+
+img.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em; }
+
+img.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto; }
+
+.align-left {
+ text-align: left; }
+
+.align-center {
+ clear: both;
+ text-align: center; }
+
+.align-right {
+ text-align: right; }
+
+/* reset inner alignment in figures */
+div.align-right {
+ text-align: inherit; }
+
+p.attribution {
+ text-align: right;
+ margin-left: 50%; }
+
+p.caption {
+ font-style: italic; }
+
+p.credits {
+ font-style: italic;
+ font-size: smaller; }
+
+p.label {
+ white-space: nowrap; }
+
+p.rubric {
+ font-weight: bold;
+ font-size: larger;
+ color: maroon;
+ text-align: center; }
+
+p.topic-title {
+ font-weight: bold; }
+
+pre.address {
+ margin-bottom: 0;
+ margin-top: 0;
+ font: inherit; }
+
+pre.literal-block, pre.doctest-block, pre.math, pre.code {
+ margin-left: 2em;
+ margin-right: 2em; }
+
+pre.code .ln {
+ color: grey; }
+
+/* line numbers */
+pre.code, code {
+ background-color: #eeeeee; }
+
+pre.code .comment, code .comment {
+ color: #5c6576; }
+
+pre.code .keyword, code .keyword {
+ color: #3B0D06;
+ font-weight: bold; }
+
+pre.code .literal.string, code .literal.string {
+ color: #0c5404; }
+
+pre.code .name.builtin, code .name.builtin {
+ color: #352b84; }
+
+pre.code .deleted, code .deleted {
+ background-color: #DEB0A1; }
+
+pre.code .inserted, code .inserted {
+ background-color: #A3D289; }
+
+span.classifier {
+ font-style: oblique; }
+
+span.classifier-delimiter {
+ font-weight: bold; }
+
+span.problematic {
+ color: #b30000; }
+
+span.section-subtitle {
+ /* font-size relative to parent (h1..h6 element) */
+ font-size: 80%; }
+
+span.DecNumber {
+ color: var(--number); }
+
+span.BinNumber {
+ color: var(--number); }
+
+span.HexNumber {
+ color: var(--number); }
+
+span.OctNumber {
+ color: var(--number); }
+
+span.FloatNumber {
+ color: var(--number); }
+
+span.Identifier {
+ color: var(--identifier); }
+
+span.Keyword {
+ font-weight: 600;
+ color: var(--keyword); }
+
+span.StringLit {
+ color: var(--literal); }
+
+span.LongStringLit {
+ color: var(--literal); }
+
+span.CharLit {
+ color: var(--literal); }
+
+span.EscapeSequence {
+ color: var(--escapeSequence); }
+
+span.Operator {
+ color: var(--operator); }
+
+span.Punctuation {
+ color: var(--punctuation); }
+
+span.Comment, span.LongComment {
+ font-style: italic;
+ font-weight: 400;
+ color: var(--comment); }
+
+span.RegularExpression {
+ color: darkviolet; }
+
+span.TagStart {
+ color: darkviolet; }
+
+span.TagEnd {
+ color: darkviolet; }
+
+span.Key {
+ color: #252dbe; }
+
+span.Value {
+ color: #252dbe; }
+
+span.RawData {
+ color: var(--raw-data); }
+
+span.Assembler {
+ color: #252dbe; }
+
+span.Preprocessor {
+ color: #252dbe; }
+
+span.Directive {
+ color: #252dbe; }
+
+span.option {
+ font-weight: bold;
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ color: var(--option); }
+
+span.Prompt {
+ font-weight: bold;
+ color: red; }
+
+span.ProgramOutput {
+ font-weight: bold;
+ color: #808080; }
+
+span.program {
+ font-weight: bold;
+ color: var(--program);
+ text-decoration: underline;
+ text-decoration-color: var(--hint);
+ text-decoration-thickness: 0.05em;
+ text-underline-offset: 0.15em; }
+
+span.Command, span.Rule, span.Hyperlink,
+span.Label, span.Reference, span.Other {
+ color: var(--other); }
+
+/* Pop type, const, proc, and iterator defs in nim def blocks */
+dt pre > span.Identifier, dt pre > span.Operator {
+ color: var(--identifier);
+ font-weight: 700; }
+
+dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier,
+dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier {
+ color: var(--identifier);
+ font-weight: inherit; }
+
+/* Nim sprite for the footer (taken from main page favicon) */
+.nim-sprite {
+ display: inline-block;
+ width: 51px;
+ height: 14px;
+ background-position: 0 0;
+ background-size: 51px 14px;
+ -webkit-filter: opacity(50%);
+ filter: opacity(50%);
+ background-repeat: no-repeat;
+ background-image: var(--nim-sprite-base64);
+ margin-bottom: 5px; }
+
+span.pragmadots {
+ /* Position: relative frees us up to make the dots
+ look really nice without fucking up the layout and
+ causing bulging in the parent container */
+ position: relative;
+ /* 1px down looks slightly nicer */
+ top: 1px;
+ padding: 2px;
+ background-color: var(--third-background);
+ border-radius: 4px;
+ margin: 0 2px;
+ cursor: pointer;
+ font-size: 0.8em; }
+
+span.pragmadots:hover {
+ background-color: var(--hint); }
+
+span.pragmawrap {
+ display: none; }
+
+span.attachedType {
+ display: none;
+ visibility: hidden; }
diff --git a/theindex.html b/theindex.html
new file mode 100644
index 0000000..a87de5b
--- /dev/null
+++ b/theindex.html
@@ -0,0 +1,644 @@
+
+
+
+
+
+
+
+Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+