From 564417c985ba45c66961e329cc285169f4ea8c18 Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Sat, 15 Jan 2022 15:30:38 -0800 Subject: [PATCH] Bring in the Nim implementation. --- implementations/nim/README.md | 51 + implementations/nim/defs.nim | 45 + implementations/nim/defs.txt | 115 ++ implementations/nim/htmldocs/defs.html | 152 ++ implementations/nim/htmldocs/defs.idx | 1 + implementations/nim/htmldocs/dochack.js | 1996 +++++++++++++++++++++++++++ implementations/nim/htmldocs/joy.html | 128 ++ implementations/nim/htmldocs/joylib.html | 379 +++++ implementations/nim/htmldocs/joylib.idx | 15 + implementations/nim/htmldocs/nimdoc.out.css | 904 ++++++++++++ implementations/nim/htmldocs/printer.html | 173 +++ implementations/nim/htmldocs/printer.idx | 2 + implementations/nim/htmldocs/reader.html | 156 +++ implementations/nim/htmldocs/reader.idx | 1 + implementations/nim/htmldocs/theindex.html | 239 ++++ implementations/nim/htmldocs/types.html | 268 ++++ implementations/nim/htmldocs/types.idx | 14 + implementations/nim/htmldocs/utils.html | 251 ++++ implementations/nim/htmldocs/utils.idx | 7 + implementations/nim/joy.nim | 145 ++ implementations/nim/joylib.nim | 110 ++ implementations/nim/printer.nim | 43 + implementations/nim/reader.nim | 107 ++ implementations/nim/types.nim | 58 + implementations/nim/utils.nim | 69 + 25 files changed, 5429 insertions(+) create mode 100644 implementations/nim/README.md create mode 100644 implementations/nim/defs.nim create mode 100644 implementations/nim/defs.txt create mode 100644 implementations/nim/htmldocs/defs.html create mode 100644 implementations/nim/htmldocs/defs.idx create mode 100644 implementations/nim/htmldocs/dochack.js create mode 100644 implementations/nim/htmldocs/joy.html create mode 100644 implementations/nim/htmldocs/joylib.html create mode 100644 implementations/nim/htmldocs/joylib.idx create mode 100644 implementations/nim/htmldocs/nimdoc.out.css create mode 100644 implementations/nim/htmldocs/printer.html create mode 100644 implementations/nim/htmldocs/printer.idx create mode 100644 implementations/nim/htmldocs/reader.html create mode 100644 implementations/nim/htmldocs/reader.idx create mode 100644 implementations/nim/htmldocs/theindex.html create mode 100644 implementations/nim/htmldocs/types.html create mode 100644 implementations/nim/htmldocs/types.idx create mode 100644 implementations/nim/htmldocs/utils.html create mode 100644 implementations/nim/htmldocs/utils.idx create mode 100644 implementations/nim/joy.nim create mode 100644 implementations/nim/joylib.nim create mode 100644 implementations/nim/printer.nim create mode 100644 implementations/nim/reader.nim create mode 100644 implementations/nim/types.nim create mode 100644 implementations/nim/utils.nim diff --git a/implementations/nim/README.md b/implementations/nim/README.md new file mode 100644 index 0000000..84cf477 --- /dev/null +++ b/implementations/nim/README.md @@ -0,0 +1,51 @@ +# Joy interpreter in Nim + +This interpreter written in Nim is part of the Thun project, which +includes interpreters written in Python and Prolog, and some explorations +towards compilers for Joy written in Prolog. + + +## Building + +To build an executable just run: + + nim c joy.nim + +To build and immediately run an executable use: + + nim c -r joy.nim + +To build a smaller binary do: + + nim c -d:release joy.nim + strip --strip-debug joy.exe + + +## Dependencies + +- Nim functional programming library https://github.com/vegansk/nimfp +- Pure Nim (i.e. not GMP) BigInts library https://github.com/def-/nim-bigints +- ... + + +## TODOs: + +- link to other Thun sub-projects & info on Joy in general +- ctrl-c should exit cleanly +- graphics? +- `words` and `help`? +- How to integrate docs? + + +nim cc \ +-d:release \ +--stackTrace:off \ +--lineTrace:off \ +--checks:off \ +--assertions:off \ +--debugger:native \ +joy.nim + +nim doc --project --index:on --git.url:"https://git.sr.ht/~sforman/Bliss" --git.commit:10b5651ed242fb16c29f2c1f7340d77f65926ca4 --outdir:htmldocs joy.nim + +https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/item/types.nim#L26 diff --git a/implementations/nim/defs.nim b/implementations/nim/defs.nim new file mode 100644 index 0000000..49c6b4b --- /dev/null +++ b/implementations/nim/defs.nim @@ -0,0 +1,45 @@ +#[ + + Copyright © 2021 Simon Forman + + This file is part of Bliss + + Bliss is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bliss is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bliss. If not see . + + +]# +import streams, strutils, fp, reader, types + +proc add_def(def: string, dictionary: var JoyMapType) = + let d = read_str(def) + let sym = d.head + case sym.kind: + of joyAtom: + dictionary = dictionary + (sym.atomVal, d.tail) + else: + raise newException(ValueError, def) + +proc defs_file2dict(defs_filename: string = "defs.txt"): JoyMapType = + var strm = newFileStream(defs_filename, fmRead) + var dictionary = newMap[string, JoyListType]() + var line = "" + if not isNil(strm): + while strm.readLine(line): + if line.isEmptyOrWhitespace: + continue + add_def(line, dictionary) + strm.close() + return dictionary + +var dictionary* = defs_file2dict() diff --git a/implementations/nim/defs.txt b/implementations/nim/defs.txt new file mode 100644 index 0000000..5a40424 --- /dev/null +++ b/implementations/nim/defs.txt @@ -0,0 +1,115 @@ +-- 1 - +? dup bool +&& nulco [nullary [false]] dip branch +++ 1 + +|| nulco [nullary] dip [true] branch +!- 0 >= +<{} [] swap +<<{} [] rolldown +abs dup 0 < [] [neg] branch +anamorphism [pop []] swap [dip swons] genrec +app1 grba infrst +app2 [grba swap grba swap] dip [infrst] cons ii +app3 3 appN +appN [grabN] codi map disenstacken +at drop first +average [sum] [size] cleave / +b [i] dip i +binary unary popd +ccccons ccons ccons +ccons cons cons +clear stack bool [pop stack bool] loop +cleave fork popdd +clop cleave popdd +codi cons dip +codireco codi reco +dinfrirst dip infrst +dipd [dip] codi +disenstacken ? [uncons ?] loop pop +down_to_zero [0 >] [dup --] while +drop [rest] times +dupd [dup] dip +dupdd [dup] dipd +dupdip dupd dip +dupdipd dup dipd +enstacken stack [clear] dip +flatten <{} [concat] step +fork [i] app2 +fourth rest third +gcd true [tuck mod dup 0 >] loop pop +genrec [[genrec] ccccons] nullary swons concat ifte +grabN <{} [cons] times +grba [stack popd] dip +hypot [sqr] ii + sqrt +ifte [nullary] dipd swap branch +ii [dip] dupdip i +infra swons swaack [i] dip swaack +infrst infra first +make_generator [codireco] ccons +mod % +neg 0 swap - +not [true] [false] branch +nulco [nullary] cons +nullary [stack] dinfrirst +of swap at +pam [i] map +pm [+] [-] clop +popd [pop] dip +popdd [pop] dipd +popop pop pop +popopop pop popop +popopd [popop] dip +popopdd [popop] dipd +product 1 swap [*] step +quoted [unit] dip +range [0 <=] [1 - dup] anamorphism +range_to_zero unit [down_to_zero] infra +reco rest cons +rest [pop] infra +reverse <{} shunt +roll> swap swapd +roll< swapd swap +rollup roll> +rolldown roll< +rrest rest rest +run <{} infra +second rest first +shift uncons [swons] dip +shunt [swons] step +size [pop ++] step_zero +spiral_next [[[abs] ii <=] [[<>] [pop !-] ||] &&] [[!-] [[++]] [[--]] ifte dip] [[pop !-] [--] [++] ifte] ifte +split_at [drop] [take] clop +split_list [take reverse] [drop] clop +sqr dup * +stackd [stack] dip +step_zero 0 roll> step +sum [+] step_zero +swapd [swap] dip +swons swap cons +swoncat swap concat +tailrec [i] genrec +take [] roll> [shift] times pop +ternary binary popd +third rest second +tuck dup swapd +unary nullary popd +uncons [first] [rest] cleave +unit [] cons +unquoted [i] dip +unswons uncons swap +while swap nulco dupdipd concat loop +x dup i +step [_step0] x +_step0 _step1 [popopop] [_stept] branch +_step1 [?] dipd roll< +_stept [uncons] dipd [dupdipd] dip x +times [_times0] x +_times0 _times1 [popopop] [_timest] branch +_times1 [dup 0 >] dipd roll< +_timest [[--] dip dupdipd] dip x +map [_map0] cons [[] [_map?] [_mape]] dip tailrec +_map? pop bool not +_mape popd reverse +_map0 [_map1] dipd _map2 +_map1 stackd shift +_map2 [infrst] cons dipd roll< swons diff --git a/implementations/nim/htmldocs/defs.html b/implementations/nim/htmldocs/defs.html new file mode 100644 index 0000000..38d6c83 --- /dev/null +++ b/implementations/nim/htmldocs/defs.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +defs + + + + + + + + +
+
+

defs

+
+
+
+ +     Dark Mode +
+ +
+ Search: +
+
+ Group by: + +
+ + +
+
+
+ +

+ +
+

Vars

+
+ +
dictionary = defs_file2dict("defs.txt")
+
+ + +  Source +Edit + +
+ +
+ +
+
+ +
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/defs.idx b/implementations/nim/htmldocs/defs.idx new file mode 100644 index 0000000..a112ada --- /dev/null +++ b/implementations/nim/htmldocs/defs.idx @@ -0,0 +1 @@ +dictionary defs.html#dictionary defs: dictionary diff --git a/implementations/nim/htmldocs/dochack.js b/implementations/nim/htmldocs/dochack.js new file mode 100644 index 0000000..a350f8a --- /dev/null +++ b/implementations/nim/htmldocs/dochack.js @@ -0,0 +1,1996 @@ +/* Generated by the Nim Compiler v1.4.2 */ +var framePtr = null; +var excHandler = 0; +var lastJSError = null; +var NTI10436058 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1214653 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI10595580 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872476 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872472 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872468 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872464 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872460 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872456 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872452 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872448 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872444 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872440 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872436 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872432 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872428 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872424 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872420 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872416 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872412 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872408 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872404 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872400 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872396 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872392 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872388 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1872205 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872293 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872291 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1873628 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1873619 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1873618 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1872385 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1873626 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1872387 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872269 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872267 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872661 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872273 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872271 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872659 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872657 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872289 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872287 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872655 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872653 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872277 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872275 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872651 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872675 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872281 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872279 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872673 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1208044 = {size: 0,kind: 31,base: null,node: null,finalizer: null}; +var NTI1872767 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872285 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872283 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1208064 = {size: 0,kind: 1,base: null,node: null,finalizer: null}; +var NTI1872231 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872229 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872245 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872243 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872241 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872239 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1872233 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI1872614 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872612 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872610 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1872237 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1872235 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1900505 = {size: 0,kind: 24,base: null,node: null,finalizer: null}; +var NTI1214641 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1214649 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1214408 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1214728 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1208013 = {size: 0,kind: 28,base: null,node: null,finalizer: null}; +var NTI1208015 = {size: 0,kind: 29,base: null,node: null,finalizer: null}; +var NTI1214723 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI1214617 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1214619 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1214633 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1214637 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NNI1214637 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1214637.node = NNI1214637; +var NNI1214633 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1214633.node = NNI1214633; +var NNI1214619 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1214619.node = NNI1214619; +NTI1214723.base = NTI1214617; +NTI1214728.base = NTI1214617; +var NNI1214617 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI1214723, name: "parent", sons: null}, +{kind: 1, offset: "name", len: 0, typ: NTI1208015, name: "name", sons: null}, +{kind: 1, offset: "message", len: 0, typ: NTI1208013, name: "msg", sons: null}, +{kind: 1, offset: "trace", len: 0, typ: NTI1208013, name: "trace", sons: null}, +{kind: 1, offset: "up", len: 0, typ: NTI1214728, name: "up", sons: null}]}; +NTI1214617.node = NNI1214617; +var NNI1214408 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1214408.node = NNI1214408; +NTI1214617.base = NTI1214408; +NTI1214619.base = NTI1214617; +NTI1214633.base = NTI1214619; +NTI1214637.base = NTI1214633; +var NNI1214649 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1214649.node = NNI1214649; +NTI1214649.base = NTI1214619; +var NNI1214641 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1214641.node = NNI1214641; +NTI1214641.base = NTI1214619; +NTI1872610.base = NTI1872235; +NTI1872612.base = NTI1872235; +NTI1872614.base = NTI1872235; +var NNI1872233 = {kind: 2, offset: 0, typ: null, name: null, len: 12, sons: {"1": {kind: 1, offset: 1, typ: NTI1872233, name: "ElementNode", len: 0, sons: null}, +"2": {kind: 1, offset: 2, typ: NTI1872233, name: "AttributeNode", len: 0, sons: null}, +"3": {kind: 1, offset: 3, typ: NTI1872233, name: "TextNode", len: 0, sons: null}, +"4": {kind: 1, offset: 4, typ: NTI1872233, name: "CDATANode", len: 0, sons: null}, +"5": {kind: 1, offset: 5, typ: NTI1872233, name: "EntityRefNode", len: 0, sons: null}, +"6": {kind: 1, offset: 6, typ: NTI1872233, name: "EntityNode", len: 0, sons: null}, +"7": {kind: 1, offset: 7, typ: NTI1872233, name: "ProcessingInstructionNode", len: 0, sons: null}, +"8": {kind: 1, offset: 8, typ: NTI1872233, name: "CommentNode", len: 0, sons: null}, +"9": {kind: 1, offset: 9, typ: NTI1872233, name: "DocumentNode", len: 0, sons: null}, +"10": {kind: 1, offset: 10, typ: NTI1872233, name: "DocumentTypeNode", len: 0, sons: null}, +"11": {kind: 1, offset: 11, typ: NTI1872233, name: "DocumentFragmentNode", len: 0, sons: null}, +"12": {kind: 1, offset: 12, typ: NTI1872233, name: "NotationNode", len: 0, sons: null}}}; +NTI1872233.node = NNI1872233; +var NNI1872231 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1872231.node = NNI1872231; +NTI1872231.base = NTI1214408; +NTI1872229.base = NTI1872231; +NTI1872767.base = NTI1872243; +var NNI1872285 = {kind: 2, len: 10, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "acceptCharset", len: 0, typ: NTI1208015, name: "acceptCharset", sons: null}, +{kind: 1, offset: "action", len: 0, typ: NTI1208015, name: "action", sons: null}, +{kind: 1, offset: "autocomplete", len: 0, typ: NTI1208015, name: "autocomplete", sons: null}, +{kind: 1, offset: "elements", len: 0, typ: NTI1872767, name: "elements", sons: null}, +{kind: 1, offset: "encoding", len: 0, typ: NTI1208015, name: "encoding", sons: null}, +{kind: 1, offset: "enctype", len: 0, typ: NTI1208015, name: "enctype", sons: null}, +{kind: 1, offset: "length", len: 0, typ: NTI1208044, name: "length", sons: null}, +{kind: 1, offset: "method", len: 0, typ: NTI1208015, name: "method", sons: null}, +{kind: 1, offset: "noValidate", len: 0, typ: NTI1208064, name: "noValidate", sons: null}, +{kind: 1, offset: "target", len: 0, typ: NTI1208015, name: "target", sons: null}]}; +NTI1872285.node = NNI1872285; +NTI1872285.base = NTI1872245; +NTI1872283.base = NTI1872285; +var NNI1872281 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "defaultSelected", len: 0, typ: NTI1208064, name: "defaultSelected", sons: null}, +{kind: 1, offset: "selected", len: 0, typ: NTI1208064, name: "selected", sons: null}, +{kind: 1, offset: "selectedIndex", len: 0, typ: NTI1208044, name: "selectedIndex", sons: null}, +{kind: 1, offset: "text", len: 0, typ: NTI1208015, name: "text", sons: null}, +{kind: 1, offset: "value", len: 0, typ: NTI1208015, name: "value", sons: null}]}; +NTI1872281.node = NNI1872281; +NTI1872281.base = NTI1872245; +NTI1872279.base = NTI1872281; +NTI1872673.base = NTI1872279; +NTI1872675.base = NTI1872279; +var NNI1872245 = {kind: 2, len: 20, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "className", len: 0, typ: NTI1208015, name: "className", sons: null}, +{kind: 1, offset: "classList", len: 0, typ: NTI1872229, name: "classList", sons: null}, +{kind: 1, offset: "checked", len: 0, typ: NTI1208064, name: "checked", sons: null}, +{kind: 1, offset: "defaultChecked", len: 0, typ: NTI1208064, name: "defaultChecked", sons: null}, +{kind: 1, offset: "defaultValue", len: 0, typ: NTI1208015, name: "defaultValue", sons: null}, +{kind: 1, offset: "disabled", len: 0, typ: NTI1208064, name: "disabled", sons: null}, +{kind: 1, offset: "form", len: 0, typ: NTI1872283, name: "form", sons: null}, +{kind: 1, offset: "name", len: 0, typ: NTI1208015, name: "name", sons: null}, +{kind: 1, offset: "readOnly", len: 0, typ: NTI1208064, name: "readOnly", sons: null}, +{kind: 1, offset: "options", len: 0, typ: NTI1872673, name: "options", sons: null}, +{kind: 1, offset: "selectedOptions", len: 0, typ: NTI1872675, name: "selectedOptions", sons: null}, +{kind: 1, offset: "clientWidth", len: 0, typ: NTI1208044, name: "clientWidth", sons: null}, +{kind: 1, offset: "clientHeight", len: 0, typ: NTI1208044, name: "clientHeight", sons: null}, +{kind: 1, offset: "contentEditable", len: 0, typ: NTI1208015, name: "contentEditable", sons: null}, +{kind: 1, offset: "isContentEditable", len: 0, typ: NTI1208064, name: "isContentEditable", sons: null}, +{kind: 1, offset: "dir", len: 0, typ: NTI1208015, name: "dir", sons: null}, +{kind: 1, offset: "offsetHeight", len: 0, typ: NTI1208044, name: "offsetHeight", sons: null}, +{kind: 1, offset: "offsetWidth", len: 0, typ: NTI1208044, name: "offsetWidth", sons: null}, +{kind: 1, offset: "offsetLeft", len: 0, typ: NTI1208044, name: "offsetLeft", sons: null}, +{kind: 1, offset: "offsetTop", len: 0, typ: NTI1208044, name: "offsetTop", sons: null}]}; +NTI1872245.node = NNI1872245; +NTI1872245.base = NTI1872237; +NTI1872243.base = NTI1872245; +var NNI1872277 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "text", len: 0, typ: NTI1208015, name: "text", sons: null}, +{kind: 1, offset: "x", len: 0, typ: NTI1208044, name: "x", sons: null}, +{kind: 1, offset: "y", len: 0, typ: NTI1208044, name: "y", sons: null}]}; +NTI1872277.node = NNI1872277; +NTI1872277.base = NTI1872245; +NTI1872275.base = NTI1872277; +NTI1872651.base = NTI1872275; +NTI1872653.base = NTI1872283; +var NNI1872289 = {kind: 2, len: 8, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "border", len: 0, typ: NTI1208044, name: "border", sons: null}, +{kind: 1, offset: "complete", len: 0, typ: NTI1208064, name: "complete", sons: null}, +{kind: 1, offset: "height", len: 0, typ: NTI1208044, name: "height", sons: null}, +{kind: 1, offset: "hspace", len: 0, typ: NTI1208044, name: "hspace", sons: null}, +{kind: 1, offset: "lowsrc", len: 0, typ: NTI1208015, name: "lowsrc", sons: null}, +{kind: 1, offset: "src", len: 0, typ: NTI1208015, name: "src", sons: null}, +{kind: 1, offset: "vspace", len: 0, typ: NTI1208044, name: "vspace", sons: null}, +{kind: 1, offset: "width", len: 0, typ: NTI1208044, name: "width", sons: null}]}; +NTI1872289.node = NNI1872289; +NTI1872289.base = NTI1872245; +NTI1872287.base = NTI1872289; +NTI1872655.base = NTI1872287; +NTI1872657.base = NTI1872243; +var NNI1872273 = {kind: 2, len: 6, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "height", len: 0, typ: NTI1208044, name: "height", sons: null}, +{kind: 1, offset: "hspace", len: 0, typ: NTI1208044, name: "hspace", sons: null}, +{kind: 1, offset: "src", len: 0, typ: NTI1208015, name: "src", sons: null}, +{kind: 1, offset: "width", len: 0, typ: NTI1208044, name: "width", sons: null}, +{kind: 1, offset: "type", len: 0, typ: NTI1208015, name: "type", sons: null}, +{kind: 1, offset: "vspace", len: 0, typ: NTI1208044, name: "vspace", sons: null}]}; +NTI1872273.node = NNI1872273; +NTI1872273.base = NTI1872245; +NTI1872271.base = NTI1872273; +NTI1872659.base = NTI1872271; +var NNI1872269 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "target", len: 0, typ: NTI1208015, name: "target", sons: null}, +{kind: 1, offset: "text", len: 0, typ: NTI1208015, name: "text", sons: null}, +{kind: 1, offset: "x", len: 0, typ: NTI1208044, name: "x", sons: null}, +{kind: 1, offset: "y", len: 0, typ: NTI1208044, name: "y", sons: null}]}; +NTI1872269.node = NNI1872269; +NTI1872269.base = NTI1872245; +NTI1872267.base = NTI1872269; +NTI1872661.base = NTI1872267; +var NNI1873618 = {kind: 1, offset: "then", len: 0, typ: NTI1873619, name: "then", sons: null}; +NTI1873618.node = NNI1873618; +NTI1872385.base = NTI1873618; +var NNI1873626 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "ready", len: 0, typ: NTI1872385, name: "ready", sons: null}, +{kind: 1, offset: "onloadingdone", len: 0, typ: NTI1873628, name: "onloadingdone", sons: null}]}; +NTI1873626.node = NNI1873626; +NTI1872387.base = NTI1873626; +var NNI1872241 = {kind: 2, len: 23, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "activeElement", len: 0, typ: NTI1872243, name: "activeElement", sons: null}, +{kind: 1, offset: "documentElement", len: 0, typ: NTI1872243, name: "documentElement", sons: null}, +{kind: 1, offset: "alinkColor", len: 0, typ: NTI1208015, name: "alinkColor", sons: null}, +{kind: 1, offset: "bgColor", len: 0, typ: NTI1208015, name: "bgColor", sons: null}, +{kind: 1, offset: "body", len: 0, typ: NTI1872243, name: "body", sons: null}, +{kind: 1, offset: "charset", len: 0, typ: NTI1208015, name: "charset", sons: null}, +{kind: 1, offset: "cookie", len: 0, typ: NTI1208015, name: "cookie", sons: null}, +{kind: 1, offset: "defaultCharset", len: 0, typ: NTI1208015, name: "defaultCharset", sons: null}, +{kind: 1, offset: "fgColor", len: 0, typ: NTI1208015, name: "fgColor", sons: null}, +{kind: 1, offset: "head", len: 0, typ: NTI1872243, name: "head", sons: null}, +{kind: 1, offset: "lastModified", len: 0, typ: NTI1208015, name: "lastModified", sons: null}, +{kind: 1, offset: "linkColor", len: 0, typ: NTI1208015, name: "linkColor", sons: null}, +{kind: 1, offset: "referrer", len: 0, typ: NTI1208015, name: "referrer", sons: null}, +{kind: 1, offset: "title", len: 0, typ: NTI1208015, name: "title", sons: null}, +{kind: 1, offset: "URL", len: 0, typ: NTI1208015, name: "URL", sons: null}, +{kind: 1, offset: "vlinkColor", len: 0, typ: NTI1208015, name: "vlinkColor", sons: null}, +{kind: 1, offset: "anchors", len: 0, typ: NTI1872651, name: "anchors", sons: null}, +{kind: 1, offset: "forms", len: 0, typ: NTI1872653, name: "forms", sons: null}, +{kind: 1, offset: "images", len: 0, typ: NTI1872655, name: "images", sons: null}, +{kind: 1, offset: "applets", len: 0, typ: NTI1872657, name: "applets", sons: null}, +{kind: 1, offset: "embeds", len: 0, typ: NTI1872659, name: "embeds", sons: null}, +{kind: 1, offset: "links", len: 0, typ: NTI1872661, name: "links", sons: null}, +{kind: 1, offset: "fonts", len: 0, typ: NTI1872387, name: "fonts", sons: null}]}; +NTI1872241.node = NNI1872241; +NTI1872241.base = NTI1872237; +NTI1872239.base = NTI1872241; +var NNI1872293 = {kind: 2, len: 368, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "alignContent", len: 0, typ: NTI1208015, name: "alignContent", sons: null}, +{kind: 1, offset: "alignItems", len: 0, typ: NTI1208015, name: "alignItems", sons: null}, +{kind: 1, offset: "alignSelf", len: 0, typ: NTI1208015, name: "alignSelf", sons: null}, +{kind: 1, offset: "all", len: 0, typ: NTI1208015, name: "all", sons: null}, +{kind: 1, offset: "animation", len: 0, typ: NTI1208015, name: "animation", sons: null}, +{kind: 1, offset: "animationDelay", len: 0, typ: NTI1208015, name: "animationDelay", sons: null}, +{kind: 1, offset: "animationDirection", len: 0, typ: NTI1208015, name: "animationDirection", sons: null}, +{kind: 1, offset: "animationDuration", len: 0, typ: NTI1208015, name: "animationDuration", sons: null}, +{kind: 1, offset: "animationFillMode", len: 0, typ: NTI1208015, name: "animationFillMode", sons: null}, +{kind: 1, offset: "animationIterationCount", len: 0, typ: NTI1208015, name: "animationIterationCount", sons: null}, +{kind: 1, offset: "animationName", len: 0, typ: NTI1208015, name: "animationName", sons: null}, +{kind: 1, offset: "animationPlayState", len: 0, typ: NTI1208015, name: "animationPlayState", sons: null}, +{kind: 1, offset: "animationTimingFunction", len: 0, typ: NTI1208015, name: "animationTimingFunction", sons: null}, +{kind: 1, offset: "backdropFilter", len: 0, typ: NTI1208015, name: "backdropFilter", sons: null}, +{kind: 1, offset: "backfaceVisibility", len: 0, typ: NTI1208015, name: "backfaceVisibility", sons: null}, +{kind: 1, offset: "background", len: 0, typ: NTI1208015, name: "background", sons: null}, +{kind: 1, offset: "backgroundAttachment", len: 0, typ: NTI1208015, name: "backgroundAttachment", sons: null}, +{kind: 1, offset: "backgroundBlendMode", len: 0, typ: NTI1208015, name: "backgroundBlendMode", sons: null}, +{kind: 1, offset: "backgroundClip", len: 0, typ: NTI1208015, name: "backgroundClip", sons: null}, +{kind: 1, offset: "backgroundColor", len: 0, typ: NTI1208015, name: "backgroundColor", sons: null}, +{kind: 1, offset: "backgroundImage", len: 0, typ: NTI1208015, name: "backgroundImage", sons: null}, +{kind: 1, offset: "backgroundOrigin", len: 0, typ: NTI1208015, name: "backgroundOrigin", sons: null}, +{kind: 1, offset: "backgroundPosition", len: 0, typ: NTI1208015, name: "backgroundPosition", sons: null}, +{kind: 1, offset: "backgroundRepeat", len: 0, typ: NTI1208015, name: "backgroundRepeat", sons: null}, +{kind: 1, offset: "backgroundSize", len: 0, typ: NTI1208015, name: "backgroundSize", sons: null}, +{kind: 1, offset: "blockSize", len: 0, typ: NTI1208015, name: "blockSize", sons: null}, +{kind: 1, offset: "border", len: 0, typ: NTI1208015, name: "border", sons: null}, +{kind: 1, offset: "borderBlock", len: 0, typ: NTI1208015, name: "borderBlock", sons: null}, +{kind: 1, offset: "borderBlockColor", len: 0, typ: NTI1208015, name: "borderBlockColor", sons: null}, +{kind: 1, offset: "borderBlockEnd", len: 0, typ: NTI1208015, name: "borderBlockEnd", sons: null}, +{kind: 1, offset: "borderBlockEndColor", len: 0, typ: NTI1208015, name: "borderBlockEndColor", sons: null}, +{kind: 1, offset: "borderBlockEndStyle", len: 0, typ: NTI1208015, name: "borderBlockEndStyle", sons: null}, +{kind: 1, offset: "borderBlockEndWidth", len: 0, typ: NTI1208015, name: "borderBlockEndWidth", sons: null}, +{kind: 1, offset: "borderBlockStart", len: 0, typ: NTI1208015, name: "borderBlockStart", sons: null}, +{kind: 1, offset: "borderBlockStartColor", len: 0, typ: NTI1208015, name: "borderBlockStartColor", sons: null}, +{kind: 1, offset: "borderBlockStartStyle", len: 0, typ: NTI1208015, name: "borderBlockStartStyle", sons: null}, +{kind: 1, offset: "borderBlockStartWidth", len: 0, typ: NTI1208015, name: "borderBlockStartWidth", sons: null}, +{kind: 1, offset: "borderBlockStyle", len: 0, typ: NTI1208015, name: "borderBlockStyle", sons: null}, +{kind: 1, offset: "borderBlockWidth", len: 0, typ: NTI1208015, name: "borderBlockWidth", sons: null}, +{kind: 1, offset: "borderBottom", len: 0, typ: NTI1208015, name: "borderBottom", sons: null}, +{kind: 1, offset: "borderBottomColor", len: 0, typ: NTI1208015, name: "borderBottomColor", sons: null}, +{kind: 1, offset: "borderBottomLeftRadius", len: 0, typ: NTI1208015, name: "borderBottomLeftRadius", sons: null}, +{kind: 1, offset: "borderBottomRightRadius", len: 0, typ: NTI1208015, name: "borderBottomRightRadius", sons: null}, +{kind: 1, offset: "borderBottomStyle", len: 0, typ: NTI1208015, name: "borderBottomStyle", sons: null}, +{kind: 1, offset: "borderBottomWidth", len: 0, typ: NTI1208015, name: "borderBottomWidth", sons: null}, +{kind: 1, offset: "borderCollapse", len: 0, typ: NTI1208015, name: "borderCollapse", sons: null}, +{kind: 1, offset: "borderColor", len: 0, typ: NTI1208015, name: "borderColor", sons: null}, +{kind: 1, offset: "borderEndEndRadius", len: 0, typ: NTI1208015, name: "borderEndEndRadius", sons: null}, +{kind: 1, offset: "borderEndStartRadius", len: 0, typ: NTI1208015, name: "borderEndStartRadius", sons: null}, +{kind: 1, offset: "borderImage", len: 0, typ: NTI1208015, name: "borderImage", sons: null}, +{kind: 1, offset: "borderImageOutset", len: 0, typ: NTI1208015, name: "borderImageOutset", sons: null}, +{kind: 1, offset: "borderImageRepeat", len: 0, typ: NTI1208015, name: "borderImageRepeat", sons: null}, +{kind: 1, offset: "borderImageSlice", len: 0, typ: NTI1208015, name: "borderImageSlice", sons: null}, +{kind: 1, offset: "borderImageSource", len: 0, typ: NTI1208015, name: "borderImageSource", sons: null}, +{kind: 1, offset: "borderImageWidth", len: 0, typ: NTI1208015, name: "borderImageWidth", sons: null}, +{kind: 1, offset: "borderInline", len: 0, typ: NTI1208015, name: "borderInline", sons: null}, +{kind: 1, offset: "borderInlineColor", len: 0, typ: NTI1208015, name: "borderInlineColor", sons: null}, +{kind: 1, offset: "borderInlineEnd", len: 0, typ: NTI1208015, name: "borderInlineEnd", sons: null}, +{kind: 1, offset: "borderInlineEndColor", len: 0, typ: NTI1208015, name: "borderInlineEndColor", sons: null}, +{kind: 1, offset: "borderInlineEndStyle", len: 0, typ: NTI1208015, name: "borderInlineEndStyle", sons: null}, +{kind: 1, offset: "borderInlineEndWidth", len: 0, typ: NTI1208015, name: "borderInlineEndWidth", sons: null}, +{kind: 1, offset: "borderInlineStart", len: 0, typ: NTI1208015, name: "borderInlineStart", sons: null}, +{kind: 1, offset: "borderInlineStartColor", len: 0, typ: NTI1208015, name: "borderInlineStartColor", sons: null}, +{kind: 1, offset: "borderInlineStartStyle", len: 0, typ: NTI1208015, name: "borderInlineStartStyle", sons: null}, +{kind: 1, offset: "borderInlineStartWidth", len: 0, typ: NTI1208015, name: "borderInlineStartWidth", sons: null}, +{kind: 1, offset: "borderInlineStyle", len: 0, typ: NTI1208015, name: "borderInlineStyle", sons: null}, +{kind: 1, offset: "borderInlineWidth", len: 0, typ: NTI1208015, name: "borderInlineWidth", sons: null}, +{kind: 1, offset: "borderLeft", len: 0, typ: NTI1208015, name: "borderLeft", sons: null}, +{kind: 1, offset: "borderLeftColor", len: 0, typ: NTI1208015, name: "borderLeftColor", sons: null}, +{kind: 1, offset: "borderLeftStyle", len: 0, typ: NTI1208015, name: "borderLeftStyle", sons: null}, +{kind: 1, offset: "borderLeftWidth", len: 0, typ: NTI1208015, name: "borderLeftWidth", sons: null}, +{kind: 1, offset: "borderRadius", len: 0, typ: NTI1208015, name: "borderRadius", sons: null}, +{kind: 1, offset: "borderRight", len: 0, typ: NTI1208015, name: "borderRight", sons: null}, +{kind: 1, offset: "borderRightColor", len: 0, typ: NTI1208015, name: "borderRightColor", sons: null}, +{kind: 1, offset: "borderRightStyle", len: 0, typ: NTI1208015, name: "borderRightStyle", sons: null}, +{kind: 1, offset: "borderRightWidth", len: 0, typ: NTI1208015, name: "borderRightWidth", sons: null}, +{kind: 1, offset: "borderSpacing", len: 0, typ: NTI1208015, name: "borderSpacing", sons: null}, +{kind: 1, offset: "borderStartEndRadius", len: 0, typ: NTI1208015, name: "borderStartEndRadius", sons: null}, +{kind: 1, offset: "borderStartStartRadius", len: 0, typ: NTI1208015, name: "borderStartStartRadius", sons: null}, +{kind: 1, offset: "borderStyle", len: 0, typ: NTI1208015, name: "borderStyle", sons: null}, +{kind: 1, offset: "borderTop", len: 0, typ: NTI1208015, name: "borderTop", sons: null}, +{kind: 1, offset: "borderTopColor", len: 0, typ: NTI1208015, name: "borderTopColor", sons: null}, +{kind: 1, offset: "borderTopLeftRadius", len: 0, typ: NTI1208015, name: "borderTopLeftRadius", sons: null}, +{kind: 1, offset: "borderTopRightRadius", len: 0, typ: NTI1208015, name: "borderTopRightRadius", sons: null}, +{kind: 1, offset: "borderTopStyle", len: 0, typ: NTI1208015, name: "borderTopStyle", sons: null}, +{kind: 1, offset: "borderTopWidth", len: 0, typ: NTI1208015, name: "borderTopWidth", sons: null}, +{kind: 1, offset: "borderWidth", len: 0, typ: NTI1208015, name: "borderWidth", sons: null}, +{kind: 1, offset: "bottom", len: 0, typ: NTI1208015, name: "bottom", sons: null}, +{kind: 1, offset: "boxDecorationBreak", len: 0, typ: NTI1208015, name: "boxDecorationBreak", sons: null}, +{kind: 1, offset: "boxShadow", len: 0, typ: NTI1208015, name: "boxShadow", sons: null}, +{kind: 1, offset: "boxSizing", len: 0, typ: NTI1208015, name: "boxSizing", sons: null}, +{kind: 1, offset: "breakAfter", len: 0, typ: NTI1208015, name: "breakAfter", sons: null}, +{kind: 1, offset: "breakBefore", len: 0, typ: NTI1208015, name: "breakBefore", sons: null}, +{kind: 1, offset: "breakInside", len: 0, typ: NTI1208015, name: "breakInside", sons: null}, +{kind: 1, offset: "captionSide", len: 0, typ: NTI1208015, name: "captionSide", sons: null}, +{kind: 1, offset: "caretColor", len: 0, typ: NTI1208015, name: "caretColor", sons: null}, +{kind: 1, offset: "clear", len: 0, typ: NTI1208015, name: "clear", sons: null}, +{kind: 1, offset: "clip", len: 0, typ: NTI1208015, name: "clip", sons: null}, +{kind: 1, offset: "clipPath", len: 0, typ: NTI1208015, name: "clipPath", sons: null}, +{kind: 1, offset: "color", len: 0, typ: NTI1208015, name: "color", sons: null}, +{kind: 1, offset: "colorAdjust", len: 0, typ: NTI1208015, name: "colorAdjust", sons: null}, +{kind: 1, offset: "columnCount", len: 0, typ: NTI1208015, name: "columnCount", sons: null}, +{kind: 1, offset: "columnFill", len: 0, typ: NTI1208015, name: "columnFill", sons: null}, +{kind: 1, offset: "columnGap", len: 0, typ: NTI1208015, name: "columnGap", sons: null}, +{kind: 1, offset: "columnRule", len: 0, typ: NTI1208015, name: "columnRule", sons: null}, +{kind: 1, offset: "columnRuleColor", len: 0, typ: NTI1208015, name: "columnRuleColor", sons: null}, +{kind: 1, offset: "columnRuleStyle", len: 0, typ: NTI1208015, name: "columnRuleStyle", sons: null}, +{kind: 1, offset: "columnRuleWidth", len: 0, typ: NTI1208015, name: "columnRuleWidth", sons: null}, +{kind: 1, offset: "columnSpan", len: 0, typ: NTI1208015, name: "columnSpan", sons: null}, +{kind: 1, offset: "columnWidth", len: 0, typ: NTI1208015, name: "columnWidth", sons: null}, +{kind: 1, offset: "columns", len: 0, typ: NTI1208015, name: "columns", sons: null}, +{kind: 1, offset: "contain", len: 0, typ: NTI1208015, name: "contain", sons: null}, +{kind: 1, offset: "content", len: 0, typ: NTI1208015, name: "content", sons: null}, +{kind: 1, offset: "counterIncrement", len: 0, typ: NTI1208015, name: "counterIncrement", sons: null}, +{kind: 1, offset: "counterReset", len: 0, typ: NTI1208015, name: "counterReset", sons: null}, +{kind: 1, offset: "counterSet", len: 0, typ: NTI1208015, name: "counterSet", sons: null}, +{kind: 1, offset: "cursor", len: 0, typ: NTI1208015, name: "cursor", sons: null}, +{kind: 1, offset: "direction", len: 0, typ: NTI1208015, name: "direction", sons: null}, +{kind: 1, offset: "display", len: 0, typ: NTI1208015, name: "display", sons: null}, +{kind: 1, offset: "emptyCells", len: 0, typ: NTI1208015, name: "emptyCells", sons: null}, +{kind: 1, offset: "filter", len: 0, typ: NTI1208015, name: "filter", sons: null}, +{kind: 1, offset: "flex", len: 0, typ: NTI1208015, name: "flex", sons: null}, +{kind: 1, offset: "flexBasis", len: 0, typ: NTI1208015, name: "flexBasis", sons: null}, +{kind: 1, offset: "flexDirection", len: 0, typ: NTI1208015, name: "flexDirection", sons: null}, +{kind: 1, offset: "flexFlow", len: 0, typ: NTI1208015, name: "flexFlow", sons: null}, +{kind: 1, offset: "flexGrow", len: 0, typ: NTI1208015, name: "flexGrow", sons: null}, +{kind: 1, offset: "flexShrink", len: 0, typ: NTI1208015, name: "flexShrink", sons: null}, +{kind: 1, offset: "flexWrap", len: 0, typ: NTI1208015, name: "flexWrap", sons: null}, +{kind: 1, offset: "cssFloat", len: 0, typ: NTI1208015, name: "cssFloat", sons: null}, +{kind: 1, offset: "font", len: 0, typ: NTI1208015, name: "font", sons: null}, +{kind: 1, offset: "fontFamily", len: 0, typ: NTI1208015, name: "fontFamily", sons: null}, +{kind: 1, offset: "fontFeatureSettings", len: 0, typ: NTI1208015, name: "fontFeatureSettings", sons: null}, +{kind: 1, offset: "fontKerning", len: 0, typ: NTI1208015, name: "fontKerning", sons: null}, +{kind: 1, offset: "fontLanguageOverride", len: 0, typ: NTI1208015, name: "fontLanguageOverride", sons: null}, +{kind: 1, offset: "fontOpticalSizing", len: 0, typ: NTI1208015, name: "fontOpticalSizing", sons: null}, +{kind: 1, offset: "fontSize", len: 0, typ: NTI1208015, name: "fontSize", sons: null}, +{kind: 1, offset: "fontSizeAdjust", len: 0, typ: NTI1208015, name: "fontSizeAdjust", sons: null}, +{kind: 1, offset: "fontStretch", len: 0, typ: NTI1208015, name: "fontStretch", sons: null}, +{kind: 1, offset: "fontStyle", len: 0, typ: NTI1208015, name: "fontStyle", sons: null}, +{kind: 1, offset: "fontSynthesis", len: 0, typ: NTI1208015, name: "fontSynthesis", sons: null}, +{kind: 1, offset: "fontVariant", len: 0, typ: NTI1208015, name: "fontVariant", sons: null}, +{kind: 1, offset: "fontVariantAlternates", len: 0, typ: NTI1208015, name: "fontVariantAlternates", sons: null}, +{kind: 1, offset: "fontVariantCaps", len: 0, typ: NTI1208015, name: "fontVariantCaps", sons: null}, +{kind: 1, offset: "fontVariantEastAsian", len: 0, typ: NTI1208015, name: "fontVariantEastAsian", sons: null}, +{kind: 1, offset: "fontVariantLigatures", len: 0, typ: NTI1208015, name: "fontVariantLigatures", sons: null}, +{kind: 1, offset: "fontVariantNumeric", len: 0, typ: NTI1208015, name: "fontVariantNumeric", sons: null}, +{kind: 1, offset: "fontVariantPosition", len: 0, typ: NTI1208015, name: "fontVariantPosition", sons: null}, +{kind: 1, offset: "fontVariationSettings", len: 0, typ: NTI1208015, name: "fontVariationSettings", sons: null}, +{kind: 1, offset: "fontWeight", len: 0, typ: NTI1208015, name: "fontWeight", sons: null}, +{kind: 1, offset: "gap", len: 0, typ: NTI1208015, name: "gap", sons: null}, +{kind: 1, offset: "grid", len: 0, typ: NTI1208015, name: "grid", sons: null}, +{kind: 1, offset: "gridArea", len: 0, typ: NTI1208015, name: "gridArea", sons: null}, +{kind: 1, offset: "gridAutoColumns", len: 0, typ: NTI1208015, name: "gridAutoColumns", sons: null}, +{kind: 1, offset: "gridAutoFlow", len: 0, typ: NTI1208015, name: "gridAutoFlow", sons: null}, +{kind: 1, offset: "gridAutoRows", len: 0, typ: NTI1208015, name: "gridAutoRows", sons: null}, +{kind: 1, offset: "gridColumn", len: 0, typ: NTI1208015, name: "gridColumn", sons: null}, +{kind: 1, offset: "gridColumnEnd", len: 0, typ: NTI1208015, name: "gridColumnEnd", sons: null}, +{kind: 1, offset: "gridColumnStart", len: 0, typ: NTI1208015, name: "gridColumnStart", sons: null}, +{kind: 1, offset: "gridRow", len: 0, typ: NTI1208015, name: "gridRow", sons: null}, +{kind: 1, offset: "gridRowEnd", len: 0, typ: NTI1208015, name: "gridRowEnd", sons: null}, +{kind: 1, offset: "gridRowStart", len: 0, typ: NTI1208015, name: "gridRowStart", sons: null}, +{kind: 1, offset: "gridTemplate", len: 0, typ: NTI1208015, name: "gridTemplate", sons: null}, +{kind: 1, offset: "gridTemplateAreas", len: 0, typ: NTI1208015, name: "gridTemplateAreas", sons: null}, +{kind: 1, offset: "gridTemplateColumns", len: 0, typ: NTI1208015, name: "gridTemplateColumns", sons: null}, +{kind: 1, offset: "gridTemplateRows", len: 0, typ: NTI1208015, name: "gridTemplateRows", sons: null}, +{kind: 1, offset: "hangingPunctuation", len: 0, typ: NTI1208015, name: "hangingPunctuation", sons: null}, +{kind: 1, offset: "height", len: 0, typ: NTI1208015, name: "height", sons: null}, +{kind: 1, offset: "hyphens", len: 0, typ: NTI1208015, name: "hyphens", sons: null}, +{kind: 1, offset: "imageOrientation", len: 0, typ: NTI1208015, name: "imageOrientation", sons: null}, +{kind: 1, offset: "imageRendering", len: 0, typ: NTI1208015, name: "imageRendering", sons: null}, +{kind: 1, offset: "inlineSize", len: 0, typ: NTI1208015, name: "inlineSize", sons: null}, +{kind: 1, offset: "inset", len: 0, typ: NTI1208015, name: "inset", sons: null}, +{kind: 1, offset: "insetBlock", len: 0, typ: NTI1208015, name: "insetBlock", sons: null}, +{kind: 1, offset: "insetBlockEnd", len: 0, typ: NTI1208015, name: "insetBlockEnd", sons: null}, +{kind: 1, offset: "insetBlockStart", len: 0, typ: NTI1208015, name: "insetBlockStart", sons: null}, +{kind: 1, offset: "insetInline", len: 0, typ: NTI1208015, name: "insetInline", sons: null}, +{kind: 1, offset: "insetInlineEnd", len: 0, typ: NTI1208015, name: "insetInlineEnd", sons: null}, +{kind: 1, offset: "insetInlineStart", len: 0, typ: NTI1208015, name: "insetInlineStart", sons: null}, +{kind: 1, offset: "isolation", len: 0, typ: NTI1208015, name: "isolation", sons: null}, +{kind: 1, offset: "justifyContent", len: 0, typ: NTI1208015, name: "justifyContent", sons: null}, +{kind: 1, offset: "justifyItems", len: 0, typ: NTI1208015, name: "justifyItems", sons: null}, +{kind: 1, offset: "justifySelf", len: 0, typ: NTI1208015, name: "justifySelf", sons: null}, +{kind: 1, offset: "left", len: 0, typ: NTI1208015, name: "left", sons: null}, +{kind: 1, offset: "letterSpacing", len: 0, typ: NTI1208015, name: "letterSpacing", sons: null}, +{kind: 1, offset: "lineBreak", len: 0, typ: NTI1208015, name: "lineBreak", sons: null}, +{kind: 1, offset: "lineHeight", len: 0, typ: NTI1208015, name: "lineHeight", sons: null}, +{kind: 1, offset: "listStyle", len: 0, typ: NTI1208015, name: "listStyle", sons: null}, +{kind: 1, offset: "listStyleImage", len: 0, typ: NTI1208015, name: "listStyleImage", sons: null}, +{kind: 1, offset: "listStylePosition", len: 0, typ: NTI1208015, name: "listStylePosition", sons: null}, +{kind: 1, offset: "listStyleType", len: 0, typ: NTI1208015, name: "listStyleType", sons: null}, +{kind: 1, offset: "margin", len: 0, typ: NTI1208015, name: "margin", sons: null}, +{kind: 1, offset: "marginBlock", len: 0, typ: NTI1208015, name: "marginBlock", sons: null}, +{kind: 1, offset: "marginBlockEnd", len: 0, typ: NTI1208015, name: "marginBlockEnd", sons: null}, +{kind: 1, offset: "marginBlockStart", len: 0, typ: NTI1208015, name: "marginBlockStart", sons: null}, +{kind: 1, offset: "marginBottom", len: 0, typ: NTI1208015, name: "marginBottom", sons: null}, +{kind: 1, offset: "marginInline", len: 0, typ: NTI1208015, name: "marginInline", sons: null}, +{kind: 1, offset: "marginInlineEnd", len: 0, typ: NTI1208015, name: "marginInlineEnd", sons: null}, +{kind: 1, offset: "marginInlineStart", len: 0, typ: NTI1208015, name: "marginInlineStart", sons: null}, +{kind: 1, offset: "marginLeft", len: 0, typ: NTI1208015, name: "marginLeft", sons: null}, +{kind: 1, offset: "marginRight", len: 0, typ: NTI1208015, name: "marginRight", sons: null}, +{kind: 1, offset: "marginTop", len: 0, typ: NTI1208015, name: "marginTop", sons: null}, +{kind: 1, offset: "mask", len: 0, typ: NTI1208015, name: "mask", sons: null}, +{kind: 1, offset: "maskBorder", len: 0, typ: NTI1208015, name: "maskBorder", sons: null}, +{kind: 1, offset: "maskBorderMode", len: 0, typ: NTI1208015, name: "maskBorderMode", sons: null}, +{kind: 1, offset: "maskBorderOutset", len: 0, typ: NTI1208015, name: "maskBorderOutset", sons: null}, +{kind: 1, offset: "maskBorderRepeat", len: 0, typ: NTI1208015, name: "maskBorderRepeat", sons: null}, +{kind: 1, offset: "maskBorderSlice", len: 0, typ: NTI1208015, name: "maskBorderSlice", sons: null}, +{kind: 1, offset: "maskBorderSource", len: 0, typ: NTI1208015, name: "maskBorderSource", sons: null}, +{kind: 1, offset: "maskBorderWidth", len: 0, typ: NTI1208015, name: "maskBorderWidth", sons: null}, +{kind: 1, offset: "maskClip", len: 0, typ: NTI1208015, name: "maskClip", sons: null}, +{kind: 1, offset: "maskComposite", len: 0, typ: NTI1208015, name: "maskComposite", sons: null}, +{kind: 1, offset: "maskImage", len: 0, typ: NTI1208015, name: "maskImage", sons: null}, +{kind: 1, offset: "maskMode", len: 0, typ: NTI1208015, name: "maskMode", sons: null}, +{kind: 1, offset: "maskOrigin", len: 0, typ: NTI1208015, name: "maskOrigin", sons: null}, +{kind: 1, offset: "maskPosition", len: 0, typ: NTI1208015, name: "maskPosition", sons: null}, +{kind: 1, offset: "maskRepeat", len: 0, typ: NTI1208015, name: "maskRepeat", sons: null}, +{kind: 1, offset: "maskSize", len: 0, typ: NTI1208015, name: "maskSize", sons: null}, +{kind: 1, offset: "maskType", len: 0, typ: NTI1208015, name: "maskType", sons: null}, +{kind: 1, offset: "maxBlockSize", len: 0, typ: NTI1208015, name: "maxBlockSize", sons: null}, +{kind: 1, offset: "maxHeight", len: 0, typ: NTI1208015, name: "maxHeight", sons: null}, +{kind: 1, offset: "maxInlineSize", len: 0, typ: NTI1208015, name: "maxInlineSize", sons: null}, +{kind: 1, offset: "maxWidth", len: 0, typ: NTI1208015, name: "maxWidth", sons: null}, +{kind: 1, offset: "minBlockSize", len: 0, typ: NTI1208015, name: "minBlockSize", sons: null}, +{kind: 1, offset: "minHeight", len: 0, typ: NTI1208015, name: "minHeight", sons: null}, +{kind: 1, offset: "minInlineSize", len: 0, typ: NTI1208015, name: "minInlineSize", sons: null}, +{kind: 1, offset: "minWidth", len: 0, typ: NTI1208015, name: "minWidth", sons: null}, +{kind: 1, offset: "mixBlendMode", len: 0, typ: NTI1208015, name: "mixBlendMode", sons: null}, +{kind: 1, offset: "objectFit", len: 0, typ: NTI1208015, name: "objectFit", sons: null}, +{kind: 1, offset: "objectPosition", len: 0, typ: NTI1208015, name: "objectPosition", sons: null}, +{kind: 1, offset: "offset", len: 0, typ: NTI1208015, name: "offset", sons: null}, +{kind: 1, offset: "offsetAnchor", len: 0, typ: NTI1208015, name: "offsetAnchor", sons: null}, +{kind: 1, offset: "offsetDistance", len: 0, typ: NTI1208015, name: "offsetDistance", sons: null}, +{kind: 1, offset: "offsetPath", len: 0, typ: NTI1208015, name: "offsetPath", sons: null}, +{kind: 1, offset: "offsetRotate", len: 0, typ: NTI1208015, name: "offsetRotate", sons: null}, +{kind: 1, offset: "opacity", len: 0, typ: NTI1208015, name: "opacity", sons: null}, +{kind: 1, offset: "order", len: 0, typ: NTI1208015, name: "order", sons: null}, +{kind: 1, offset: "orphans", len: 0, typ: NTI1208015, name: "orphans", sons: null}, +{kind: 1, offset: "outline", len: 0, typ: NTI1208015, name: "outline", sons: null}, +{kind: 1, offset: "outlineColor", len: 0, typ: NTI1208015, name: "outlineColor", sons: null}, +{kind: 1, offset: "outlineOffset", len: 0, typ: NTI1208015, name: "outlineOffset", sons: null}, +{kind: 1, offset: "outlineStyle", len: 0, typ: NTI1208015, name: "outlineStyle", sons: null}, +{kind: 1, offset: "outlineWidth", len: 0, typ: NTI1208015, name: "outlineWidth", sons: null}, +{kind: 1, offset: "overflow", len: 0, typ: NTI1208015, name: "overflow", sons: null}, +{kind: 1, offset: "overflowAnchor", len: 0, typ: NTI1208015, name: "overflowAnchor", sons: null}, +{kind: 1, offset: "overflowBlock", len: 0, typ: NTI1208015, name: "overflowBlock", sons: null}, +{kind: 1, offset: "overflowInline", len: 0, typ: NTI1208015, name: "overflowInline", sons: null}, +{kind: 1, offset: "overflowWrap", len: 0, typ: NTI1208015, name: "overflowWrap", sons: null}, +{kind: 1, offset: "overflowX", len: 0, typ: NTI1208015, name: "overflowX", sons: null}, +{kind: 1, offset: "overflowY", len: 0, typ: NTI1208015, name: "overflowY", sons: null}, +{kind: 1, offset: "overscrollBehavior", len: 0, typ: NTI1208015, name: "overscrollBehavior", sons: null}, +{kind: 1, offset: "overscrollBehaviorBlock", len: 0, typ: NTI1208015, name: "overscrollBehaviorBlock", sons: null}, +{kind: 1, offset: "overscrollBehaviorInline", len: 0, typ: NTI1208015, name: "overscrollBehaviorInline", sons: null}, +{kind: 1, offset: "overscrollBehaviorX", len: 0, typ: NTI1208015, name: "overscrollBehaviorX", sons: null}, +{kind: 1, offset: "overscrollBehaviorY", len: 0, typ: NTI1208015, name: "overscrollBehaviorY", sons: null}, +{kind: 1, offset: "padding", len: 0, typ: NTI1208015, name: "padding", sons: null}, +{kind: 1, offset: "paddingBlock", len: 0, typ: NTI1208015, name: "paddingBlock", sons: null}, +{kind: 1, offset: "paddingBlockEnd", len: 0, typ: NTI1208015, name: "paddingBlockEnd", sons: null}, +{kind: 1, offset: "paddingBlockStart", len: 0, typ: NTI1208015, name: "paddingBlockStart", sons: null}, +{kind: 1, offset: "paddingBottom", len: 0, typ: NTI1208015, name: "paddingBottom", sons: null}, +{kind: 1, offset: "paddingInline", len: 0, typ: NTI1208015, name: "paddingInline", sons: null}, +{kind: 1, offset: "paddingInlineEnd", len: 0, typ: NTI1208015, name: "paddingInlineEnd", sons: null}, +{kind: 1, offset: "paddingInlineStart", len: 0, typ: NTI1208015, name: "paddingInlineStart", sons: null}, +{kind: 1, offset: "paddingLeft", len: 0, typ: NTI1208015, name: "paddingLeft", sons: null}, +{kind: 1, offset: "paddingRight", len: 0, typ: NTI1208015, name: "paddingRight", sons: null}, +{kind: 1, offset: "paddingTop", len: 0, typ: NTI1208015, name: "paddingTop", sons: null}, +{kind: 1, offset: "pageBreakAfter", len: 0, typ: NTI1208015, name: "pageBreakAfter", sons: null}, +{kind: 1, offset: "pageBreakBefore", len: 0, typ: NTI1208015, name: "pageBreakBefore", sons: null}, +{kind: 1, offset: "pageBreakInside", len: 0, typ: NTI1208015, name: "pageBreakInside", sons: null}, +{kind: 1, offset: "paintOrder", len: 0, typ: NTI1208015, name: "paintOrder", sons: null}, +{kind: 1, offset: "perspective", len: 0, typ: NTI1208015, name: "perspective", sons: null}, +{kind: 1, offset: "perspectiveOrigin", len: 0, typ: NTI1208015, name: "perspectiveOrigin", sons: null}, +{kind: 1, offset: "placeContent", len: 0, typ: NTI1208015, name: "placeContent", sons: null}, +{kind: 1, offset: "placeItems", len: 0, typ: NTI1208015, name: "placeItems", sons: null}, +{kind: 1, offset: "placeSelf", len: 0, typ: NTI1208015, name: "placeSelf", sons: null}, +{kind: 1, offset: "pointerEvents", len: 0, typ: NTI1208015, name: "pointerEvents", sons: null}, +{kind: 1, offset: "position", len: 0, typ: NTI1208015, name: "position", sons: null}, +{kind: 1, offset: "quotes", len: 0, typ: NTI1208015, name: "quotes", sons: null}, +{kind: 1, offset: "resize", len: 0, typ: NTI1208015, name: "resize", sons: null}, +{kind: 1, offset: "right", len: 0, typ: NTI1208015, name: "right", sons: null}, +{kind: 1, offset: "rotate", len: 0, typ: NTI1208015, name: "rotate", sons: null}, +{kind: 1, offset: "rowGap", len: 0, typ: NTI1208015, name: "rowGap", sons: null}, +{kind: 1, offset: "scale", len: 0, typ: NTI1208015, name: "scale", sons: null}, +{kind: 1, offset: "scrollBehavior", len: 0, typ: NTI1208015, name: "scrollBehavior", sons: null}, +{kind: 1, offset: "scrollMargin", len: 0, typ: NTI1208015, name: "scrollMargin", sons: null}, +{kind: 1, offset: "scrollMarginBlock", len: 0, typ: NTI1208015, name: "scrollMarginBlock", sons: null}, +{kind: 1, offset: "scrollMarginBlockEnd", len: 0, typ: NTI1208015, name: "scrollMarginBlockEnd", sons: null}, +{kind: 1, offset: "scrollMarginBlockStart", len: 0, typ: NTI1208015, name: "scrollMarginBlockStart", sons: null}, +{kind: 1, offset: "scrollMarginBottom", len: 0, typ: NTI1208015, name: "scrollMarginBottom", sons: null}, +{kind: 1, offset: "scrollMarginInline", len: 0, typ: NTI1208015, name: "scrollMarginInline", sons: null}, +{kind: 1, offset: "scrollMarginInlineEnd", len: 0, typ: NTI1208015, name: "scrollMarginInlineEnd", sons: null}, +{kind: 1, offset: "scrollMarginInlineStart", len: 0, typ: NTI1208015, name: "scrollMarginInlineStart", sons: null}, +{kind: 1, offset: "scrollMarginLeft", len: 0, typ: NTI1208015, name: "scrollMarginLeft", sons: null}, +{kind: 1, offset: "scrollMarginRight", len: 0, typ: NTI1208015, name: "scrollMarginRight", sons: null}, +{kind: 1, offset: "scrollMarginTop", len: 0, typ: NTI1208015, name: "scrollMarginTop", sons: null}, +{kind: 1, offset: "scrollPadding", len: 0, typ: NTI1208015, name: "scrollPadding", sons: null}, +{kind: 1, offset: "scrollPaddingBlock", len: 0, typ: NTI1208015, name: "scrollPaddingBlock", sons: null}, +{kind: 1, offset: "scrollPaddingBlockEnd", len: 0, typ: NTI1208015, name: "scrollPaddingBlockEnd", sons: null}, +{kind: 1, offset: "scrollPaddingBlockStart", len: 0, typ: NTI1208015, name: "scrollPaddingBlockStart", sons: null}, +{kind: 1, offset: "scrollPaddingBottom", len: 0, typ: NTI1208015, name: "scrollPaddingBottom", sons: null}, +{kind: 1, offset: "scrollPaddingInline", len: 0, typ: NTI1208015, name: "scrollPaddingInline", sons: null}, +{kind: 1, offset: "scrollPaddingInlineEnd", len: 0, typ: NTI1208015, name: "scrollPaddingInlineEnd", sons: null}, +{kind: 1, offset: "scrollPaddingInlineStart", len: 0, typ: NTI1208015, name: "scrollPaddingInlineStart", sons: null}, +{kind: 1, offset: "scrollPaddingLeft", len: 0, typ: NTI1208015, name: "scrollPaddingLeft", sons: null}, +{kind: 1, offset: "scrollPaddingRight", len: 0, typ: NTI1208015, name: "scrollPaddingRight", sons: null}, +{kind: 1, offset: "scrollPaddingTop", len: 0, typ: NTI1208015, name: "scrollPaddingTop", sons: null}, +{kind: 1, offset: "scrollSnapAlign", len: 0, typ: NTI1208015, name: "scrollSnapAlign", sons: null}, +{kind: 1, offset: "scrollSnapStop", len: 0, typ: NTI1208015, name: "scrollSnapStop", sons: null}, +{kind: 1, offset: "scrollSnapType", len: 0, typ: NTI1208015, name: "scrollSnapType", sons: null}, +{kind: 1, offset: "scrollbar3dLightColor", len: 0, typ: NTI1208015, name: "scrollbar3dLightColor", sons: null}, +{kind: 1, offset: "scrollbarArrowColor", len: 0, typ: NTI1208015, name: "scrollbarArrowColor", sons: null}, +{kind: 1, offset: "scrollbarBaseColor", len: 0, typ: NTI1208015, name: "scrollbarBaseColor", sons: null}, +{kind: 1, offset: "scrollbarColor", len: 0, typ: NTI1208015, name: "scrollbarColor", sons: null}, +{kind: 1, offset: "scrollbarDarkshadowColor", len: 0, typ: NTI1208015, name: "scrollbarDarkshadowColor", sons: null}, +{kind: 1, offset: "scrollbarFaceColor", len: 0, typ: NTI1208015, name: "scrollbarFaceColor", sons: null}, +{kind: 1, offset: "scrollbarHighlightColor", len: 0, typ: NTI1208015, name: "scrollbarHighlightColor", sons: null}, +{kind: 1, offset: "scrollbarShadowColor", len: 0, typ: NTI1208015, name: "scrollbarShadowColor", sons: null}, +{kind: 1, offset: "scrollbarTrackColor", len: 0, typ: NTI1208015, name: "scrollbarTrackColor", sons: null}, +{kind: 1, offset: "scrollbarWidth", len: 0, typ: NTI1208015, name: "scrollbarWidth", sons: null}, +{kind: 1, offset: "shapeImageThreshold", len: 0, typ: NTI1208015, name: "shapeImageThreshold", sons: null}, +{kind: 1, offset: "shapeMargin", len: 0, typ: NTI1208015, name: "shapeMargin", sons: null}, +{kind: 1, offset: "shapeOutside", len: 0, typ: NTI1208015, name: "shapeOutside", sons: null}, +{kind: 1, offset: "tabSize", len: 0, typ: NTI1208015, name: "tabSize", sons: null}, +{kind: 1, offset: "tableLayout", len: 0, typ: NTI1208015, name: "tableLayout", sons: null}, +{kind: 1, offset: "textAlign", len: 0, typ: NTI1208015, name: "textAlign", sons: null}, +{kind: 1, offset: "textAlignLast", len: 0, typ: NTI1208015, name: "textAlignLast", sons: null}, +{kind: 1, offset: "textCombineUpright", len: 0, typ: NTI1208015, name: "textCombineUpright", sons: null}, +{kind: 1, offset: "textDecoration", len: 0, typ: NTI1208015, name: "textDecoration", sons: null}, +{kind: 1, offset: "textDecorationColor", len: 0, typ: NTI1208015, name: "textDecorationColor", sons: null}, +{kind: 1, offset: "textDecorationLine", len: 0, typ: NTI1208015, name: "textDecorationLine", sons: null}, +{kind: 1, offset: "textDecorationSkipInk", len: 0, typ: NTI1208015, name: "textDecorationSkipInk", sons: null}, +{kind: 1, offset: "textDecorationStyle", len: 0, typ: NTI1208015, name: "textDecorationStyle", sons: null}, +{kind: 1, offset: "textDecorationThickness", len: 0, typ: NTI1208015, name: "textDecorationThickness", sons: null}, +{kind: 1, offset: "textEmphasis", len: 0, typ: NTI1208015, name: "textEmphasis", sons: null}, +{kind: 1, offset: "textEmphasisColor", len: 0, typ: NTI1208015, name: "textEmphasisColor", sons: null}, +{kind: 1, offset: "textEmphasisPosition", len: 0, typ: NTI1208015, name: "textEmphasisPosition", sons: null}, +{kind: 1, offset: "textEmphasisStyle", len: 0, typ: NTI1208015, name: "textEmphasisStyle", sons: null}, +{kind: 1, offset: "textIndent", len: 0, typ: NTI1208015, name: "textIndent", sons: null}, +{kind: 1, offset: "textJustify", len: 0, typ: NTI1208015, name: "textJustify", sons: null}, +{kind: 1, offset: "textOrientation", len: 0, typ: NTI1208015, name: "textOrientation", sons: null}, +{kind: 1, offset: "textOverflow", len: 0, typ: NTI1208015, name: "textOverflow", sons: null}, +{kind: 1, offset: "textRendering", len: 0, typ: NTI1208015, name: "textRendering", sons: null}, +{kind: 1, offset: "textShadow", len: 0, typ: NTI1208015, name: "textShadow", sons: null}, +{kind: 1, offset: "textTransform", len: 0, typ: NTI1208015, name: "textTransform", sons: null}, +{kind: 1, offset: "textUnderlineOffset", len: 0, typ: NTI1208015, name: "textUnderlineOffset", sons: null}, +{kind: 1, offset: "textUnderlinePosition", len: 0, typ: NTI1208015, name: "textUnderlinePosition", sons: null}, +{kind: 1, offset: "top", len: 0, typ: NTI1208015, name: "top", sons: null}, +{kind: 1, offset: "touchAction", len: 0, typ: NTI1208015, name: "touchAction", sons: null}, +{kind: 1, offset: "transform", len: 0, typ: NTI1208015, name: "transform", sons: null}, +{kind: 1, offset: "transformBox", len: 0, typ: NTI1208015, name: "transformBox", sons: null}, +{kind: 1, offset: "transformOrigin", len: 0, typ: NTI1208015, name: "transformOrigin", sons: null}, +{kind: 1, offset: "transformStyle", len: 0, typ: NTI1208015, name: "transformStyle", sons: null}, +{kind: 1, offset: "transition", len: 0, typ: NTI1208015, name: "transition", sons: null}, +{kind: 1, offset: "transitionDelay", len: 0, typ: NTI1208015, name: "transitionDelay", sons: null}, +{kind: 1, offset: "transitionDuration", len: 0, typ: NTI1208015, name: "transitionDuration", sons: null}, +{kind: 1, offset: "transitionProperty", len: 0, typ: NTI1208015, name: "transitionProperty", sons: null}, +{kind: 1, offset: "transitionTimingFunction", len: 0, typ: NTI1208015, name: "transitionTimingFunction", sons: null}, +{kind: 1, offset: "translate", len: 0, typ: NTI1208015, name: "translate", sons: null}, +{kind: 1, offset: "unicodeBidi", len: 0, typ: NTI1208015, name: "unicodeBidi", sons: null}, +{kind: 1, offset: "verticalAlign", len: 0, typ: NTI1208015, name: "verticalAlign", sons: null}, +{kind: 1, offset: "visibility", len: 0, typ: NTI1208015, name: "visibility", sons: null}, +{kind: 1, offset: "whiteSpace", len: 0, typ: NTI1208015, name: "whiteSpace", sons: null}, +{kind: 1, offset: "widows", len: 0, typ: NTI1208015, name: "widows", sons: null}, +{kind: 1, offset: "width", len: 0, typ: NTI1208015, name: "width", sons: null}, +{kind: 1, offset: "willChange", len: 0, typ: NTI1208015, name: "willChange", sons: null}, +{kind: 1, offset: "wordBreak", len: 0, typ: NTI1208015, name: "wordBreak", sons: null}, +{kind: 1, offset: "wordSpacing", len: 0, typ: NTI1208015, name: "wordSpacing", sons: null}, +{kind: 1, offset: "writingMode", len: 0, typ: NTI1208015, name: "writingMode", sons: null}, +{kind: 1, offset: "zIndex", len: 0, typ: NTI1208015, name: "zIndex", sons: null}]}; +NTI1872293.node = NNI1872293; +NTI1872293.base = NTI1214408; +NTI1872291.base = NTI1872293; +var NNI1872237 = {kind: 2, len: 22, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "attributes", len: 0, typ: NTI1872610, name: "attributes", sons: null}, +{kind: 1, offset: "childNodes", len: 0, typ: NTI1872612, name: "childNodes", sons: null}, +{kind: 1, offset: "children", len: 0, typ: NTI1872614, name: "children", sons: null}, +{kind: 1, offset: "data", len: 0, typ: NTI1208015, name: "data", sons: null}, +{kind: 1, offset: "firstChild", len: 0, typ: NTI1872235, name: "firstChild", sons: null}, +{kind: 1, offset: "lastChild", len: 0, typ: NTI1872235, name: "lastChild", sons: null}, +{kind: 1, offset: "nextSibling", len: 0, typ: NTI1872235, name: "nextSibling", sons: null}, +{kind: 1, offset: "nodeName", len: 0, typ: NTI1208015, name: "nodeName", sons: null}, +{kind: 1, offset: "nodeType", len: 0, typ: NTI1872233, name: "nodeType", sons: null}, +{kind: 1, offset: "nodeValue", len: 0, typ: NTI1208015, name: "nodeValue", sons: null}, +{kind: 1, offset: "parentNode", len: 0, typ: NTI1872235, name: "parentNode", sons: null}, +{kind: 1, offset: "content", len: 0, typ: NTI1872235, name: "content", sons: null}, +{kind: 1, offset: "previousSibling", len: 0, typ: NTI1872235, name: "previousSibling", sons: null}, +{kind: 1, offset: "ownerDocument", len: 0, typ: NTI1872239, name: "ownerDocument", sons: null}, +{kind: 1, offset: "innerHTML", len: 0, typ: NTI1208015, name: "innerHTML", sons: null}, +{kind: 1, offset: "outerHTML", len: 0, typ: NTI1208015, name: "outerHTML", sons: null}, +{kind: 1, offset: "innerText", len: 0, typ: NTI1208015, name: "innerText", sons: null}, +{kind: 1, offset: "textContent", len: 0, typ: NTI1208015, name: "textContent", sons: null}, +{kind: 1, offset: "style", len: 0, typ: NTI1872291, name: "style", sons: null}, +{kind: 1, offset: "baseURI", len: 0, typ: NTI1208015, name: "baseURI", sons: null}, +{kind: 1, offset: "parentElement", len: 0, typ: NTI1872243, name: "parentElement", sons: null}, +{kind: 1, offset: "isConnected", len: 0, typ: NTI1208064, name: "isConnected", sons: null}]}; +NTI1872237.node = NNI1872237; +var NNI1872205 = {kind: 2, len: 23, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "onabort", len: 0, typ: NTI1872388, name: "onabort", sons: null}, +{kind: 1, offset: "onblur", len: 0, typ: NTI1872392, name: "onblur", sons: null}, +{kind: 1, offset: "onchange", len: 0, typ: NTI1872396, name: "onchange", sons: null}, +{kind: 1, offset: "onclick", len: 0, typ: NTI1872400, name: "onclick", sons: null}, +{kind: 1, offset: "ondblclick", len: 0, typ: NTI1872404, name: "ondblclick", sons: null}, +{kind: 1, offset: "onerror", len: 0, typ: NTI1872408, name: "onerror", sons: null}, +{kind: 1, offset: "onfocus", len: 0, typ: NTI1872412, name: "onfocus", sons: null}, +{kind: 1, offset: "onkeydown", len: 0, typ: NTI1872416, name: "onkeydown", sons: null}, +{kind: 1, offset: "onkeypress", len: 0, typ: NTI1872420, name: "onkeypress", sons: null}, +{kind: 1, offset: "onkeyup", len: 0, typ: NTI1872424, name: "onkeyup", sons: null}, +{kind: 1, offset: "onload", len: 0, typ: NTI1872428, name: "onload", sons: null}, +{kind: 1, offset: "onmousedown", len: 0, typ: NTI1872432, name: "onmousedown", sons: null}, +{kind: 1, offset: "onmousemove", len: 0, typ: NTI1872436, name: "onmousemove", sons: null}, +{kind: 1, offset: "onmouseout", len: 0, typ: NTI1872440, name: "onmouseout", sons: null}, +{kind: 1, offset: "onmouseover", len: 0, typ: NTI1872444, name: "onmouseover", sons: null}, +{kind: 1, offset: "onmouseup", len: 0, typ: NTI1872448, name: "onmouseup", sons: null}, +{kind: 1, offset: "onreset", len: 0, typ: NTI1872452, name: "onreset", sons: null}, +{kind: 1, offset: "onselect", len: 0, typ: NTI1872456, name: "onselect", sons: null}, +{kind: 1, offset: "onsubmit", len: 0, typ: NTI1872460, name: "onsubmit", sons: null}, +{kind: 1, offset: "onunload", len: 0, typ: NTI1872464, name: "onunload", sons: null}, +{kind: 1, offset: "onloadstart", len: 0, typ: NTI1872468, name: "onloadstart", sons: null}, +{kind: 1, offset: "onprogress", len: 0, typ: NTI1872472, name: "onprogress", sons: null}, +{kind: 1, offset: "onloadend", len: 0, typ: NTI1872476, name: "onloadend", sons: null}]}; +NTI1872205.node = NNI1872205; +NTI1872205.base = NTI1214408; +NTI1872237.base = NTI1872205; +NTI1872235.base = NTI1872237; +NTI1900505.base = NTI1872235; +NTI10595580.base = NTI1208015; +var NNI1214653 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1214653.node = NNI1214653; +NTI1214653.base = NTI1214619; +var NNI10436058 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1208044, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI1208064, name: "Field1", sons: null}]}; +NTI10436058.node = NNI10436058; +function makeNimstrLit(c_1475062) { + var ln = c_1475062.length; + var result = new Array(ln); + for (var i = 0; i < ln; ++i) { + result[i] = c_1475062.charCodeAt(i); + } + return result; + + + +} +function toJSStr(s_1475096) { + var Tmp5; + var Tmp7; + + var result_1475097 = null; + + var res_1475170 = newSeq_1475128((s_1475096).length); + var i_1475172 = 0; + var j_1475174 = 0; + L1: do { + L2: while (true) { + if (!(i_1475172 < (s_1475096).length)) break L2; + var c_1475175 = s_1475096[i_1475172]; + if ((c_1475175 < 128)) { + res_1475170[j_1475174] = String.fromCharCode(c_1475175); + i_1475172 += 1; + } + else { + var helper_1475198 = newSeq_1475128(0); + L3: do { + L4: while (true) { + if (!true) break L4; + var code_1475199 = c_1475175.toString(16); + if (((code_1475199).length == 1)) { + helper_1475198.push("%0");; + } + else { + helper_1475198.push("%");; + } + + helper_1475198.push(code_1475199);; + i_1475172 += 1; + if (((s_1475096).length <= i_1475172)) Tmp5 = true; else { Tmp5 = (s_1475096[i_1475172] < 128); } if (Tmp5) { + break L3; + } + + c_1475175 = s_1475096[i_1475172]; + } + } while(false); +++excHandler; + Tmp7 = framePtr; + try { + res_1475170[j_1475174] = decodeURIComponent(helper_1475198.join("")); +--excHandler; +} catch (EXC) { + var prevJSError = lastJSError; + lastJSError = EXC; + --excHandler; + framePtr = Tmp7; + res_1475170[j_1475174] = helper_1475198.join(""); + lastJSError = prevJSError; + } finally { + framePtr = Tmp7; + } + } + + j_1475174 += 1; + } + } while(false); + if (res_1475170.length < j_1475174) { for (var i=res_1475170.length;i> 6) | 192; + } + else { + if (ch < 55296 || ch >= 57344) { + result[r] = (ch >> 12) | 224; + } + else { + ++i; + ch = 65536 + (((ch & 1023) << 10) | (c_1475079.charCodeAt(i) & 1023)); + result[r] = (ch >> 18) | 240; + ++r; + result[r] = ((ch >> 12) & 63) | 128; + } + ++r; + result[r] = ((ch >> 6) & 63) | 128; + } + ++r; + result[r] = (ch & 63) | 128; + } + ++r; + } + return result; + + + +} +function 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_1490023, src_1490024, ti_1490025) { + var result_1495219 = null; + + switch (ti_1490025.kind) { + case 21: + case 22: + case 23: + case 5: + if (!(isFatPointer_1485401(ti_1490025))) { + result_1495219 = src_1490024; + } + else { + result_1495219 = [src_1490024[0], src_1490024[1]]; + } + + break; + case 19: + if (dest_1490023 === null || dest_1490023 === undefined) { + dest_1490023 = {}; + } + else { + for (var key in dest_1490023) { delete dest_1490023[key]; } + } + for (var key in src_1490024) { dest_1490023[key] = src_1490024[key]; } + result_1495219 = dest_1490023; + + break; + case 18: + case 17: + if (!((ti_1490025.base == null))) { + result_1495219 = nimCopy(dest_1490023, src_1490024, ti_1490025.base); + } + else { + if ((ti_1490025.kind == 17)) { + result_1495219 = (dest_1490023 === null || dest_1490023 === undefined) ? {m_type: ti_1490025} : dest_1490023; + } + else { + result_1495219 = (dest_1490023 === null || dest_1490023 === undefined) ? {} : dest_1490023; + } + } + nimCopyAux(result_1495219, src_1490024, ti_1490025.node); + break; + case 24: + case 4: + case 27: + case 16: + if (src_1490024 === null) { + result_1495219 = null; + } + else { + if (dest_1490023 === null || dest_1490023 === undefined) { + dest_1490023 = new Array(src_1490024.length); + } + else { + dest_1490023.length = src_1490024.length; + } + result_1495219 = dest_1490023; + for (var i = 0; i < src_1490024.length; ++i) { + result_1495219[i] = nimCopy(result_1495219[i], src_1490024[i], ti_1490025.base); + } + } + + break; + case 28: + if (src_1490024 !== null) { + result_1495219 = src_1490024.slice(0); + } + + break; + default: + result_1495219 = src_1490024; + break; + } + + return result_1495219; + +} +function chckIndx(i_1500086, a_1500087, b_1500088) { + var Tmp1; + + var result_1500089 = 0; + + BeforeRet: do { + if (!(a_1500087 <= i_1500086)) Tmp1 = false; else { Tmp1 = (i_1500086 <= b_1500088); } if (Tmp1) { + result_1500089 = i_1500086; + break BeforeRet; + } + else { + raiseIndexError(i_1500086, a_1500087, b_1500088); + } + + } while (false); + + return result_1500089; + +} +function subInt(a_1480437, b_1480438) { + var result = a_1480437 - b_1480438; + checkOverflowInt(result); + return result; + + + +} +var ConstSet2 = setConstr([65, 90]); +function chckRange(i_1505016, a_1505017, b_1505018) { + var Tmp1; + + var result_1505019 = 0; + + BeforeRet: do { + if (!(a_1505017 <= i_1505016)) Tmp1 = false; else { Tmp1 = (i_1505016 <= b_1505018); } if (Tmp1) { + result_1505019 = i_1505016; + break BeforeRet; + } + else { + raiseRangeError(); + } + + } while (false); + + return result_1505019; + +} +var ConstSet3 = setConstr(95, 32, 46); +var ConstSet4 = setConstr(95, 32, 46); +function mulInt(a_1480455, b_1480456) { + var result = a_1480455 * b_1480456; + 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_1480821, b_1480822) { + var Tmp1; + + var result_1480823 = 0; + + BeforeRet: do { + if ((b_1480822 <= a_1480821)) { + Tmp1 = a_1480821; + } + else { + Tmp1 = b_1480822; + } + + result_1480823 = Tmp1; + break BeforeRet; + } while (false); + + return result_1480823; + +} +function nimMin(a_1480803, b_1480804) { + var Tmp1; + + var result_1480805 = 0; + + BeforeRet: do { + if ((a_1480803 <= b_1480804)) { + Tmp1 = a_1480803; + } + else { + Tmp1 = b_1480804; + } + + result_1480805 = Tmp1; + break BeforeRet; + } while (false); + + return result_1480805; + +} +function addChar(x_1525031, c_1525032) { + x_1525031.push(c_1525032); + + +} +if (!Math.trunc) { + Math.trunc = function(v) { + v = +v; + if (!isFinite(v)) return v; + return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0); + }; +} + +var alternative_10595322 = [null]; +function add_1377211(x_1377214, x_1377214_Idx, y_1377215) { + if (x_1377214[x_1377214_Idx] === null) { x_1377214[x_1377214_Idx] = []; } + var off = x_1377214[x_1377214_Idx].length; + x_1377214[x_1377214_Idx].length += y_1377215.length; + for (var i = 0; i < y_1377215.length; ++i) { + x_1377214[x_1377214_Idx][off+i] = y_1377215.charCodeAt(i); + } + + + +} +function newSeq_1475128(len_1475131) { + var result_1475133 = []; + + result_1475133 = new Array(len_1475131); for (var i=0;i 2147483647 || a_1480403 < -2147483648) raiseOverflow(); + + + +} +function isWhitespace_10570116(text_10570118) { + return !/[^\s]/.test(text_10570118); + + + +} +function isWhitespace_10570133(x_10570135) { + var Tmp1; + var Tmp2; + + var result_10570136 = false; + + if (!(x_10570135.nodeName == "#text")) Tmp2 = false; else { Tmp2 = isWhitespace_10570116(x_10570135.textContent); } if (Tmp2) Tmp1 = true; else { Tmp1 = (x_10570135.nodeName == "#comment"); } result_10570136 = Tmp1; + + return result_10570136; + +} +function isFatPointer_1485401(ti_1485403) { + var result_1485404 = false; + + BeforeRet: do { + result_1485404 = !((ConstSet1[ti_1485403.base.kind] != undefined)); + break BeforeRet; + } while (false); + + return result_1485404; + +} +function nimCopyAux(dest_1490028, src_1490029, n_1490031) { + switch (n_1490031.kind) { + case 0: + break; + case 1: + dest_1490028[n_1490031.offset] = nimCopy(dest_1490028[n_1490031.offset], src_1490029[n_1490031.offset], n_1490031.typ); + + break; + case 2: + for (var i = 0; i < n_1490031.sons.length; i++) { + nimCopyAux(dest_1490028, src_1490029, n_1490031.sons[i]); + } + + break; + case 3: + dest_1490028[n_1490031.offset] = nimCopy(dest_1490028[n_1490031.offset], src_1490029[n_1490031.offset], n_1490031.typ); + for (var i = 0; i < n_1490031.sons.length; ++i) { + nimCopyAux(dest_1490028, src_1490029, n_1490031.sons[i][1]); + } + + break; + } + + +} +function raiseIndexError(i_1460047, a_1460048, b_1460049) { + var Tmp1; + + if ((b_1460049 < a_1460048)) { + Tmp1 = makeNimstrLit("index out of bounds, the container is empty"); + } + else { + Tmp1 = (makeNimstrLit("index ") || []).concat(cstrToNimstr((i_1460047)+"") || [],makeNimstrLit(" not in ") || [],cstrToNimstr((a_1460048)+"") || [],makeNimstrLit(" .. ") || [],cstrToNimstr((b_1460049)+"") || []); + } + + raiseException({message: nimCopy(null, Tmp1, NTI1208013), parent: null, m_type: NTI1214649, name: null, trace: [], up: null}, "IndexDefect"); + + +} +function toToc_10570150(x_10570152, father_10570153) { + var Tmp5; + var Tmp6; + var Tmp7; + var Tmp8; + var Tmp15; + + if ((x_10570152.nodeName == "UL")) { + var f_10570174 = {heading: null, kids: [], sortId: (father_10570153.kids).length, doSort: false}; + var i_10570176 = 0; + L1: do { + L2: while (true) { + if (!(i_10570176 < x_10570152.childNodes.length)) break L2; + var nxt_10570177 = addInt(i_10570176, 1); + L3: do { + L4: while (true) { + if (!(nxt_10570177 < x_10570152.childNodes.length)) Tmp5 = false; else { Tmp5 = isWhitespace_10570133(x_10570152.childNodes[nxt_10570177]); } if (!Tmp5) break L4; + nxt_10570177 = addInt(nxt_10570177, 1); + } + } while(false); + if (!(nxt_10570177 < x_10570152.childNodes.length)) Tmp8 = false; else { Tmp8 = (x_10570152.childNodes[i_10570176].nodeName == "LI"); } if (!Tmp8) Tmp7 = false; else { Tmp7 = (x_10570152.childNodes[i_10570176].childNodes.length == 1); } if (!Tmp7) Tmp6 = false; else { Tmp6 = (x_10570152.childNodes[nxt_10570177].nodeName == "UL"); } if (Tmp6) { + var e_10570204 = {heading: x_10570152.childNodes[i_10570176].childNodes[0], kids: [], sortId: (f_10570174.kids).length, doSort: false}; + var it_10570205 = x_10570152.childNodes[nxt_10570177]; + L9: do { + var j_10570213 = 0; + var colontmp__10595445 = 0; + colontmp__10595445 = it_10570205.childNodes.length; + var i_10595446 = 0; + L10: do { + L11: while (true) { + if (!(i_10595446 < colontmp__10595445)) break L11; + j_10570213 = i_10595446; + toToc_10570150(it_10570205.childNodes[j_10570213], e_10570204); + i_10595446 = addInt(i_10595446, 1); + } + } while(false); + } while(false); + f_10570174.kids.push(e_10570204);; + i_10570176 = addInt(nxt_10570177, 1); + } + else { + toToc_10570150(x_10570152.childNodes[i_10570176], f_10570174); + i_10570176 = addInt(i_10570176, 1); + } + + } + } while(false); + father_10570153.kids.push(f_10570174);; + } + else { + if (isWhitespace_10570133(x_10570152)) { + } + else { + if ((x_10570152.nodeName == "LI")) { + var idx_10570252 = []; + L12: do { + var i_10570260 = 0; + var colontmp__10595449 = 0; + colontmp__10595449 = x_10570152.childNodes.length; + var i_10595450 = 0; + L13: do { + L14: while (true) { + if (!(i_10595450 < colontmp__10595449)) break L14; + i_10570260 = i_10595450; + if (!(isWhitespace_10570133(x_10570152.childNodes[i_10570260]))) { + idx_10570252.push(i_10570260);; + } + + i_10595450 = addInt(i_10595450, 1); + } + } while(false); + } while(false); + if (!((idx_10570252).length == 2)) Tmp15 = false; else { Tmp15 = (x_10570152.childNodes[idx_10570252[chckIndx(1, 0, (idx_10570252).length-1)]].nodeName == "UL"); } if (Tmp15) { + var e_10570294 = {heading: x_10570152.childNodes[idx_10570252[chckIndx(0, 0, (idx_10570252).length-1)]], kids: [], sortId: (father_10570153.kids).length, doSort: false}; + var it_10570295 = x_10570152.childNodes[idx_10570252[chckIndx(1, 0, (idx_10570252).length-1)]]; + L16: do { + var j_10570303 = 0; + var colontmp__10595454 = 0; + colontmp__10595454 = it_10570295.childNodes.length; + var i_10595455 = 0; + L17: do { + L18: while (true) { + if (!(i_10595455 < colontmp__10595454)) break L18; + j_10570303 = i_10595455; + toToc_10570150(it_10570295.childNodes[j_10570303], e_10570294); + i_10595455 = addInt(i_10595455, 1); + } + } while(false); + } while(false); + father_10570153.kids.push(e_10570294);; + } + else { + L19: do { + var i_10570319 = 0; + var colontmp__10595458 = 0; + colontmp__10595458 = x_10570152.childNodes.length; + var i_10595459 = 0; + L20: do { + L21: while (true) { + if (!(i_10595459 < colontmp__10595458)) break L21; + i_10570319 = i_10595459; + toToc_10570150(x_10570152.childNodes[i_10570319], father_10570153); + i_10595459 = addInt(i_10595459, 1); + } + } while(false); + } while(false); + } + + } + else { + father_10570153.kids.push({heading: x_10570152, kids: [], sortId: (father_10570153.kids).length, doSort: false});; + } + }} + + +} +function extractItems_10525075(x_10525077, heading_10525078, items_10525081, items_10525081_Idx) { + var Tmp1; + + BeforeRet: do { + if ((x_10525077 == null)) { + break BeforeRet; + } + + if (!!((x_10525077.heading == null))) Tmp1 = false; else { Tmp1 = (x_10525077.heading.textContent == heading_10525078); } if (Tmp1) { + L2: do { + var i_10530021 = 0; + var colontmp__10595475 = 0; + colontmp__10595475 = (x_10525077.kids).length; + var i_10595476 = 0; + L3: do { + L4: while (true) { + if (!(i_10595476 < colontmp__10595475)) break L4; + i_10530021 = i_10595476; + items_10525081[items_10525081_Idx].push(x_10525077.kids[chckIndx(i_10530021, 0, (x_10525077.kids).length-1)].heading);; + i_10595476 = addInt(i_10595476, 1); + } + } while(false); + } while(false); + } + else { + L5: do { + var i_10530042 = 0; + var colontmp__10595479 = 0; + colontmp__10595479 = (x_10525077.kids).length; + var i_10595480 = 0; + L6: do { + L7: while (true) { + if (!(i_10595480 < colontmp__10595479)) break L7; + i_10530042 = i_10595480; + var it_10530043 = x_10525077.kids[chckIndx(i_10530042, 0, (x_10525077.kids).length-1)]; + extractItems_10525075(it_10530043, heading_10525078, items_10525081, items_10525081_Idx); + i_10595480 = addInt(i_10595480, 1); + } + } while(false); + } while(false); + } + + } while (false); + + +} +function tree_10516020(tag_10516022, kids_10516024) { + var result_10516025 = null; + + result_10516025 = document.createElement(toJSStr(tag_10516022)); + L1: do { + var k_10516058 = null; + var k_10516058_Idx = 0; + var i_10595496 = 0; + L2: do { + L3: while (true) { + if (!(i_10595496 < (kids_10516024).length)) break L3; + k_10516058 = kids_10516024; k_10516058_Idx = chckIndx(i_10595496, 0, (kids_10516024).length-1); + result_10516025.appendChild(k_10516058[k_10516058_Idx]); + i_10595496 = addInt(i_10595496, 1); + } + } while(false); + } while(false); + + return result_10516025; + +} +function text_10516169(s_10516171) { + var result_10516172 = null; + + result_10516172 = document.createTextNode(s_10516171); + + return result_10516172; + +} +function sysFatal_1325418(message_1325422) { + raiseException({message: nimCopy(null, message_1325422, NTI1208013), m_type: NTI1214641, parent: null, name: null, trace: [], up: null}, "AssertionDefect"); + + +} +function raiseAssert_1325414(msg_1325416) { + sysFatal_1325418(msg_1325416); + + +} +function failedAssertImpl_1325480(msg_1325482) { + raiseAssert_1325414(msg_1325482); + + +} +function uncovered_10575022(x_10575024) { + var Tmp1; + var Tmp2; + + var result_10575025 = null; + + BeforeRet: do { + if (!((x_10575024.kids).length == 0)) Tmp1 = false; else { Tmp1 = !((x_10575024.heading == null)); } if (Tmp1) { + if (!(x_10575024.heading.hasOwnProperty('__karaxMarker__'))) { + Tmp2 = x_10575024; + } + else { + Tmp2 = null; + } + + result_10575025 = Tmp2; + break BeforeRet; + } + + result_10575025 = {heading: x_10575024.heading, kids: [], sortId: x_10575024.sortId, doSort: x_10575024.doSort}; + L3: do { + var i_10580036 = 0; + var colontmp__10595507 = 0; + colontmp__10595507 = (x_10575024.kids).length; + var i_10595508 = 0; + L4: do { + L5: while (true) { + if (!(i_10595508 < colontmp__10595507)) break L5; + i_10580036 = i_10595508; + var y_10580037 = uncovered_10575022(x_10575024.kids[chckIndx(i_10580036, 0, (x_10575024.kids).length-1)]); + if (!((y_10580037 == null))) { + result_10575025.kids.push(y_10580037);; + } + + i_10595508 = addInt(i_10595508, 1); + } + } while(false); + } while(false); + if (((result_10575025.kids).length == 0)) { + result_10575025 = null; + } + + } while (false); + + return result_10575025; + +} +function mergeTocs_10585035(orig_10585037, news_10585038) { + var result_10585039 = null; + + result_10585039 = uncovered_10575022(orig_10585037); + if ((result_10585039 == null)) { + result_10585039 = news_10585038; + } + else { + L1: do { + var i_10585060 = 0; + var colontmp__10595502 = 0; + colontmp__10595502 = (news_10585038.kids).length; + var i_10595503 = 0; + L2: do { + L3: while (true) { + if (!(i_10595503 < colontmp__10595502)) break L3; + i_10585060 = i_10595503; + result_10585039.kids.push(news_10585038.kids[chckIndx(i_10585060, 0, (news_10585038.kids).length-1)]);; + i_10595503 = addInt(i_10595503, 1); + } + } while(false); + } while(false); + } + + + return result_10585039; + +} +function buildToc_10585082(orig_10585084, types_10585086, procs_10585087) { + var Tmp7; + + var result_10585088 = null; + + var newStuff_10585104 = {heading: null, kids: [], doSort: true, sortId: 0}; + L1: do { + var t_10595214 = null; + var t_10595214_Idx = 0; + var i_10595491 = 0; + var L_10595492 = (types_10585086).length; + L2: do { + L3: while (true) { + if (!(i_10595491 < L_10595492)) break L3; + t_10595214 = types_10585086; t_10595214_Idx = chckIndx(i_10595491, 0, (types_10585086).length-1); + var c_10595230 = {heading: t_10595214[t_10595214_Idx].cloneNode(true), kids: [], doSort: true, sortId: 0}; + t_10595214[t_10595214_Idx].__karaxMarker__ = true; + L4: do { + var p_10595238 = null; + var p_10595238_Idx = 0; + var i_10595488 = 0; + var L_10595489 = (procs_10585087).length; + L5: do { + L6: while (true) { + if (!(i_10595488 < L_10595489)) break L6; + p_10595238 = procs_10585087; p_10595238_Idx = chckIndx(i_10595488, 0, (procs_10585087).length-1); + if (!(p_10595238[p_10595238_Idx].hasOwnProperty('__karaxMarker__'))) { + var xx_10595239 = p_10595238[p_10595238_Idx].parentNode.getElementsByClassName("attachedType"); + if (!((xx_10595239).length == 1)) Tmp7 = false; else { Tmp7 = (xx_10595239[chckIndx(0, 0, (xx_10595239).length-1)].textContent == t_10595214[t_10595214_Idx].textContent); } if (Tmp7) { + var q_10595247 = tree_10516020(makeNimstrLit("A"), [text_10516169(p_10595238[p_10595238_Idx].title)]); + q_10595247.setAttribute("href", p_10595238[p_10595238_Idx].getAttribute("href")); + c_10595230.kids.push({heading: q_10595247, kids: [], sortId: 0, doSort: false});; + p_10595238[p_10595238_Idx].__karaxMarker__ = true; + } + + } + + i_10595488 = addInt(i_10595488, 1); + if (!(((procs_10585087).length == L_10595489))) { + failedAssertImpl_1325480(makeNimstrLit("iterators.nim(204, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while(false); + } while(false); + newStuff_10585104.kids.push(c_10595230);; + i_10595491 = addInt(i_10595491, 1); + if (!(((types_10585086).length == L_10595492))) { + failedAssertImpl_1325480(makeNimstrLit("iterators.nim(204, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while(false); + } while(false); + result_10585088 = mergeTocs_10585035(orig_10585084, newStuff_10585104); + + return result_10585088; + +} +function add_10516117(parent_10516119, kid_10516120) { + var Tmp1; + var Tmp2; + + if (!(parent_10516119.nodeName == "TR")) Tmp1 = false; else { if ((kid_10516120.nodeName == "TD")) Tmp2 = true; else { Tmp2 = (kid_10516120.nodeName == "TH"); } Tmp1 = Tmp2; } if (Tmp1) { + var k_10516121 = document.createElement("TD"); + k_10516121.appendChild(kid_10516120); + parent_10516119.appendChild(k_10516121); + } + else { + parent_10516119.appendChild(kid_10516120); + } + + + +} +function setClass_10516135(e_10516137, value_10516138) { + e_10516137.setAttribute("class", toJSStr(value_10516138)); + + +} +function toHtml_10530072(x_10530074, isRoot_10530075) { + var Tmp1; + function HEX3Aanonymous_10535015(a_10535017, b_10535018) { + var Tmp1; + + var result_10535019 = 0; + + BeforeRet: do { + if (!!((a_10535017.heading == null))) Tmp1 = false; else { Tmp1 = !((b_10535018.heading == null)); } if (Tmp1) { + var x_10545009 = a_10535017.heading.textContent; + var y_10545010 = b_10535018.heading.textContent; + if ((x_10545009 < y_10545010)) { + result_10535019 = -1; + break BeforeRet; + } + + if ((y_10545010 < x_10545009)) { + result_10535019 = 1; + break BeforeRet; + } + + result_10535019 = 0; + break BeforeRet; + } + else { + result_10535019 = subInt(a_10535017.sortId, b_10535018.sortId); + break BeforeRet; + } + + } while (false); + + return result_10535019; + + } + + var result_10530076 = null; + + BeforeRet: do { + if ((x_10530074 == null)) { + result_10530076 = null; + break BeforeRet; + } + + if (((x_10530074.kids).length == 0)) { + if ((x_10530074.heading == null)) { + result_10530076 = null; + break BeforeRet; + } + + result_10530076 = x_10530074.heading.cloneNode(true); + break BeforeRet; + } + + result_10530076 = tree_10516020(makeNimstrLit("DIV"), []); + if (!!((x_10530074.heading == null))) Tmp1 = false; else { Tmp1 = !(x_10530074.heading.hasOwnProperty('__karaxMarker__')); } if (Tmp1) { + add_10516117(result_10530076, x_10530074.heading.cloneNode(true)); + } + + var ul_10535012 = tree_10516020(makeNimstrLit("UL"), []); + if (isRoot_10530075) { + setClass_10516135(ul_10535012, makeNimstrLit("simple simple-toc")); + } + else { + setClass_10516135(ul_10535012, makeNimstrLit("simple")); + } + + if (x_10530074.doSort) { + x_10530074.kids.sort(HEX3Aanonymous_10535015); + } + + L2: do { + var k_10560214 = null; + var k_10560214_Idx = 0; + var i_10595514 = 0; + var L_10595515 = (x_10530074.kids).length; + L3: do { + L4: while (true) { + if (!(i_10595514 < L_10595515)) break L4; + k_10560214 = x_10530074.kids; k_10560214_Idx = chckIndx(i_10595514, 0, (x_10530074.kids).length-1); + var y_10560215 = toHtml_10530072(k_10560214[k_10560214_Idx], false); + if (!((y_10560215 == null))) { + add_10516117(ul_10535012, tree_10516020(makeNimstrLit("LI"), [y_10560215])); + } + + i_10595514 = addInt(i_10595514, 1); + if (!(((x_10530074.kids).length == L_10595515))) { + failedAssertImpl_1325480(makeNimstrLit("iterators.nim(204, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while(false); + } while(false); + if (!((ul_10535012.childNodes.length == 0))) { + add_10516117(result_10530076, ul_10535012); + } + + if ((result_10530076.childNodes.length == 0)) { + result_10530076 = null; + } + + } while (false); + + return result_10530076; + +} +function replaceById_10516189(id_10516191, newTree_10516192) { + var x_10516193 = document.getElementById(id_10516191); + x_10516193.parentNode.replaceChild(newTree_10516192, x_10516193); + newTree_10516192.id = id_10516191; + + +} +function togglevis_10595336(d_10595338) { + if (d_10595338.style.display == 'none') + d_10595338.style.display = 'inline'; + else + d_10595338.style.display = 'none'; + + + +} +function groupBy(value_10595354) { + var toc_10595355 = document.getElementById("toc-list"); + if ((alternative_10595322[0] == null)) { + var tt_10595376 = {heading: null, kids: [], sortId: 0, doSort: false}; + toToc_10570150(toc_10595355, tt_10595376); + tt_10595376 = tt_10595376.kids[chckIndx(0, 0, (tt_10595376.kids).length-1)]; + var types_10595393 = [[]]; + var procs_10595410 = [[]]; + extractItems_10525075(tt_10595376, "Types", types_10595393, 0); + extractItems_10525075(tt_10595376, "Procs", procs_10595410, 0); + extractItems_10525075(tt_10595376, "Converters", procs_10595410, 0); + extractItems_10525075(tt_10595376, "Methods", procs_10595410, 0); + extractItems_10525075(tt_10595376, "Templates", procs_10595410, 0); + extractItems_10525075(tt_10595376, "Macros", procs_10595410, 0); + extractItems_10525075(tt_10595376, "Iterators", procs_10595410, 0); + var ntoc_10595418 = buildToc_10585082(tt_10595376, types_10595393[0], procs_10595410[0]); + var x_10595419 = toHtml_10530072(ntoc_10595418, true); + alternative_10595322[0] = tree_10516020(makeNimstrLit("DIV"), [x_10595419]); + } + + if ((value_10595354 == "type")) { + replaceById_10516189("tocRoot", alternative_10595322[0]); + } + else { + replaceById_10516189("tocRoot", tree_10516020(makeNimstrLit("DIV"), [])); + } + + togglevis_10595336(document.getElementById("toc-list")); + + +} +var db_10595518 = [[]]; +var contents_10595520 = [[]]; +var oldtoc_10605439 = [null]; +var timer_10605440 = [null]; +function raiseRangeError() { + raiseException({message: makeNimstrLit("value out of range"), parent: null, m_type: NTI1214653, name: null, trace: [], up: null}, "RangeDefect"); + + +} +function nsuToLowerAsciiChar(c_9430023) { + var result_9430024 = 0; + + if ((ConstSet2[c_9430023] != undefined)) { + result_9430024 = chckRange(addInt(c_9430023, 32), 0, 255); + } + else { + result_9430024 = c_9430023; + } + + + return result_9430024; + +} +function fuzzyMatch_10436054(pattern_10436056, str_10436057) { + var Tmp4; + var Tmp5; + var Tmp6; + var Tmp7; + var Tmp8; + + var result_10436061 = {Field0: 0, Field1: false}; + + var scoreState_10436062 = -100; + var headerMatched_10436063 = false; + var unmatchedLeadingCharCount_10436065 = 0; + var consecutiveMatchCount_10436067 = 0; + var strIndex_10436069 = 0; + var patIndex_10436071 = 0; + var score_10436073 = 0; + L1: do { + L2: while (true) { + if (!((strIndex_10436069 < (str_10436057).length) && (patIndex_10436071 < (pattern_10436056).length))) break L2; + L3: do { + var patternChar_10436079 = nsuToLowerAsciiChar(pattern_10436056.charCodeAt(chckIndx(patIndex_10436071, 0, (pattern_10436056).length-1))); + var strChar_10436080 = nsuToLowerAsciiChar(str_10436057.charCodeAt(chckIndx(strIndex_10436069, 0, (str_10436057).length-1))); + if ((ConstSet3[patternChar_10436079] != undefined)) { + patIndex_10436071 = addInt(patIndex_10436071, 1); + break L3; + } + + if ((ConstSet4[strChar_10436080] != undefined)) { + strIndex_10436069 = addInt(strIndex_10436069, 1); + break L3; + } + + if ((!(headerMatched_10436063) && (strChar_10436080 == 58))) { + headerMatched_10436063 = true; + scoreState_10436062 = -100; + score_10436073 = ((Math.floor((5.0000000000000000e-001 * score_10436073)))|0); + patIndex_10436071 = 0; + strIndex_10436069 = addInt(strIndex_10436069, 1); + break L3; + } + + if ((strChar_10436080 == patternChar_10436079)) { + switch (scoreState_10436062) { + case -100: + case 20: + scoreState_10436062 = 10; + break; + case 0: + scoreState_10436062 = 5; + score_10436073 = addInt(score_10436073, scoreState_10436062); + break; + case 10: + case 5: + consecutiveMatchCount_10436067 = addInt(consecutiveMatchCount_10436067, 1); + scoreState_10436062 = 5; + score_10436073 = addInt(score_10436073, mulInt(5, consecutiveMatchCount_10436067)); + if ((scoreState_10436062 == 10)) { + score_10436073 = addInt(score_10436073, 10); + } + + var onBoundary_10450042 = (patIndex_10436071 == ((pattern_10436056).length-1)); + if ((!(onBoundary_10450042) && (strIndex_10436069 < ((str_10436057).length-1)))) { + var nextPatternChar_10450043 = nsuToLowerAsciiChar(pattern_10436056.charCodeAt(chckIndx(addInt(patIndex_10436071, 1), 0, (pattern_10436056).length-1))); + var nextStrChar_10450044 = nsuToLowerAsciiChar(str_10436057.charCodeAt(chckIndx(addInt(strIndex_10436069, 1), 0, (str_10436057).length-1))); + if (!!((ConstSet5[nextStrChar_10450044] != undefined))) Tmp4 = false; else { Tmp4 = !((nextStrChar_10450044 == nextPatternChar_10450043)); } onBoundary_10450042 = Tmp4; + } + + if (onBoundary_10450042) { + scoreState_10436062 = 20; + score_10436073 = addInt(score_10436073, scoreState_10436062); + } + + break; + case -1: + case -3: + if (!((ConstSet6[str_10436057.charCodeAt(chckIndx(subInt(strIndex_10436069, 1), 0, (str_10436057).length-1))] != undefined))) Tmp5 = true; else { if (!(ConstSet7[str_10436057.charCodeAt(chckIndx(subInt(strIndex_10436069, 1), 0, (str_10436057).length-1))] != undefined)) Tmp6 = false; else { Tmp6 = (ConstSet8[str_10436057.charCodeAt(chckIndx(strIndex_10436069, 0, (str_10436057).length-1))] != undefined); } Tmp5 = Tmp6; } var isLeadingChar_10480008 = Tmp5; + if (isLeadingChar_10480008) { + scoreState_10436062 = 10; + } + else { + scoreState_10436062 = 0; + score_10436073 = addInt(score_10436073, scoreState_10436062); + } + + break; + } + patIndex_10436071 = addInt(patIndex_10436071, 1); + } + else { + switch (scoreState_10436062) { + case -100: + scoreState_10436062 = -3; + score_10436073 = addInt(score_10436073, scoreState_10436062); + break; + case 5: + scoreState_10436062 = -1; + score_10436073 = addInt(score_10436073, scoreState_10436062); + consecutiveMatchCount_10436067 = 0; + break; + case -3: + if ((unmatchedLeadingCharCount_10436065 < 3)) { + scoreState_10436062 = -3; + score_10436073 = addInt(score_10436073, scoreState_10436062); + } + + unmatchedLeadingCharCount_10436065 = addInt(unmatchedLeadingCharCount_10436065, 1); + break; + default: + scoreState_10436062 = -1; + score_10436073 = addInt(score_10436073, scoreState_10436062); + break; + } + } + + strIndex_10436069 = addInt(strIndex_10436069, 1); + } while(false); + } + } while(false); + if (!(patIndex_10436071 == (pattern_10436056).length)) Tmp7 = false; else { if ((strIndex_10436069 == (str_10436057).length)) Tmp8 = true; else { Tmp8 = !((ConstSet9[str_10436057.charCodeAt(chckIndx(strIndex_10436069, 0, (str_10436057).length-1))] != undefined)); } Tmp7 = Tmp8; } if (Tmp7) { + score_10436073 = addInt(score_10436073, 10); + } + + var colontmp__10615075 = nimMax(0, score_10436073); + var colontmp__10615076 = (0 < score_10436073); + nimCopy(result_10436061, {Field0: colontmp__10615075, Field1: colontmp__10615076}, NTI10436058); + + return result_10436061; + +} +function escapeCString_10595537(x_10595540, x_10595540_Idx) { + var s_10595541 = []; + L1: do { + var c_10595542 = 0; + var i_10615080 = 0; + var L_10615081 = (x_10595540[x_10595540_Idx]).length; + L2: do { + L3: while (true) { + if (!(i_10615080 < L_10615081)) break L3; + c_10595542 = x_10595540[x_10595540_Idx].charCodeAt(chckIndx(i_10615080, 0, (x_10595540[x_10595540_Idx]).length-1)); + switch (c_10595542) { + case 38: + s_10595541.push.apply(s_10595541, makeNimstrLit("&"));; + break; + case 60: + s_10595541.push.apply(s_10595541, makeNimstrLit("<"));; + break; + case 62: + s_10595541.push.apply(s_10595541, makeNimstrLit(">"));; + break; + case 34: + s_10595541.push.apply(s_10595541, makeNimstrLit("""));; + break; + case 39: + s_10595541.push.apply(s_10595541, makeNimstrLit("'"));; + break; + case 47: + s_10595541.push.apply(s_10595541, makeNimstrLit("/"));; + break; + default: + addChar(s_10595541, c_10595542);; + break; + } + i_10615080 = addInt(i_10615080, 1); + } + } while(false); + } while(false); + x_10595540[x_10595540_Idx] = toJSStr(s_10595541); + + +} +function text_10516152(s_10516154) { + var result_10516155 = null; + + result_10516155 = document.createTextNode(toJSStr(s_10516154)); + + return result_10516155; + +} +function dosearch_10595556(value_10595558) { + function HEX3Aanonymous_10605276(a_10605285, b_10605286) { + var result_10605292 = 0; + + result_10605292 = subInt(b_10605286["Field1"], a_10605285["Field1"]); + + return result_10605292; + + } + + var result_10595559 = null; + + if (((db_10595518[0]).length == 0)) { + var stuff_10595565 = null; + var request = new XMLHttpRequest(); + request.open("GET", "theindex.html", false); + request.send(null); + + var doc = document.implementation.createHTMLDocument("theindex"); + doc.documentElement.innerHTML = request.responseText; + + //parser=new DOMParser(); + //doc=parser.parseFromString("", "text/html"); + + stuff_10595565 = doc.documentElement; + + db_10595518[0] = nimCopy(null, stuff_10595565.getElementsByClassName("reference"), NTI1900505); + contents_10595520[0] = nimCopy(null, [], NTI10595580); + L1: do { + var ahref_10605214 = null; + var ahref_10605214_Idx = 0; + var i_10615055 = 0; + var L_10615056 = (db_10595518[0]).length; + L2: do { + L3: while (true) { + if (!(i_10615055 < L_10615056)) break L3; + ahref_10605214 = db_10595518[0]; ahref_10605214_Idx = chckIndx(i_10615055, 0, (db_10595518[0]).length-1); + contents_10595520[0].push(ahref_10605214[ahref_10605214_Idx].getAttribute("data-doc-search-tag"));; + i_10615055 = addInt(i_10615055, 1); + if (!(((db_10595518[0]).length == L_10615056))) { + failedAssertImpl_1325480(makeNimstrLit("iterators.nim(204, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while(false); + } while(false); + } + + var ul_10605226 = tree_10516020(makeNimstrLit("UL"), []); + result_10595559 = tree_10516020(makeNimstrLit("DIV"), []); + setClass_10516135(result_10595559, makeNimstrLit("search_results")); + var matches_10605247 = []; + L4: do { + var i_10605260 = 0; + var colontmp__10615062 = 0; + colontmp__10615062 = (db_10595518[0]).length; + var i_10615063 = 0; + L5: do { + L6: while (true) { + if (!(i_10615063 < colontmp__10615062)) break L6; + i_10605260 = i_10615063; + L7: do { + var c_10605261 = contents_10595520[0][chckIndx(i_10605260, 0, (contents_10595520[0]).length-1)]; + if (((c_10605261 == "Examples") || (c_10605261 == "PEG construction"))) { + break L7; + } + + var colontmp__10615070 = fuzzyMatch_10436054(value_10595558, c_10605261); + var score_10605262 = colontmp__10615070["Field0"]; + var matched_10605263 = colontmp__10615070["Field1"]; + if (matched_10605263) { + matches_10605247.push({Field0: db_10595518[0][chckIndx(i_10605260, 0, (db_10595518[0]).length-1)], Field1: score_10605262});; + } + + } while(false); + i_10615063 = addInt(i_10615063, 1); + } + } while(false); + } while(false); + matches_10605247.sort(HEX3Aanonymous_10605276); + L8: do { + var i_10605331 = 0; + var colontmp__10615067 = 0; + colontmp__10615067 = nimMin((matches_10605247).length, 29); + var i_10615068 = 0; + L9: do { + L10: while (true) { + if (!(i_10615068 < colontmp__10615067)) break L10; + i_10605331 = i_10615068; + matches_10605247[chckIndx(i_10605331, 0, (matches_10605247).length-1)]["Field0"].innerHTML = matches_10605247[chckIndx(i_10605331, 0, (matches_10605247).length-1)]["Field0"].getAttribute("data-doc-search-tag"); + escapeCString_10595537(matches_10605247[chckIndx(i_10605331, 0, (matches_10605247).length-1)]["Field0"], "innerHTML"); + add_10516117(ul_10605226, tree_10516020(makeNimstrLit("LI"), [matches_10605247[chckIndx(i_10605331, 0, (matches_10605247).length-1)]["Field0"]])); + i_10615068 = addInt(i_10615068, 1); + } + } while(false); + } while(false); + if ((ul_10605226.childNodes.length == 0)) { + add_10516117(result_10595559, tree_10516020(makeNimstrLit("B"), [text_10516152(makeNimstrLit("no search results"))])); + } + else { + add_10516117(result_10595559, tree_10516020(makeNimstrLit("B"), [text_10516152(makeNimstrLit("search results"))])); + add_10516117(result_10595559, ul_10605226); + } + + + return result_10595559; + +} +function search() { + function wrapper_10605471() { + var elem_10605473 = document.getElementById("searchInput"); + var value_10605474 = elem_10605473.value; + if (!(((value_10605474).length == 0))) { + if ((oldtoc_10605439[0] == null)) { + oldtoc_10605439[0] = document.getElementById("tocRoot"); + } + + var results_10610006 = dosearch_10595556(value_10605474); + replaceById_10516189("tocRoot", results_10610006); + } + else { + if (!((oldtoc_10605439[0] == null))) { + replaceById_10516189("tocRoot", oldtoc_10605439[0]); + } + } + + + } + + if (!((timer_10605440[0] == null))) { + clearTimeout(timer_10605440[0]); + } + + timer_10605440[0] = setTimeout(wrapper_10605471, 400); + + +} diff --git a/implementations/nim/htmldocs/joy.html b/implementations/nim/htmldocs/joy.html new file mode 100644 index 0000000..a8a83f1 --- /dev/null +++ b/implementations/nim/htmldocs/joy.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + +joy + + + + + + + + +
+
+

joy

+
+
+
+ +     Dark Mode +
+ +
+ Search: +
+
+ Group by: + +
+ + +
+
+
+ +

+ + +
+
+ +
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/joylib.html b/implementations/nim/htmldocs/joylib.html new file mode 100644 index 0000000..0a7c818 --- /dev/null +++ b/implementations/nim/htmldocs/joylib.html @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + +joylib + + + + + + + + +
+
+

joylib

+
+
+
+ +     Dark Mode +
+ +
+ Search: +
+
+ Group by: + +
+ + +
+
+
+ +

+ +
+

Procs

+
+ +
proc swap(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc dup(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc pop(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc cons(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc concat(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc stack(state: var JoyState) {...}{.raises: [], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc swaack(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc clear(state: var JoyState) {...}{.raises: [], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc first(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc rest(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc branch(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc loop(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc i(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc dip(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc truthy(state: var JoyState) {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
+ +
+
+ +
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/joylib.idx b/implementations/nim/htmldocs/joylib.idx new file mode 100644 index 0000000..7795708 --- /dev/null +++ b/implementations/nim/htmldocs/joylib.idx @@ -0,0 +1,15 @@ +swap joylib.html#swap,JoyState joylib: swap(state: var JoyState) +dup joylib.html#dup,JoyState joylib: dup(state: var JoyState) +pop joylib.html#pop,JoyState joylib: pop(state: var JoyState) +cons joylib.html#cons,JoyState joylib: cons(state: var JoyState) +concat joylib.html#concat,JoyState joylib: concat(state: var JoyState) +stack joylib.html#stack,JoyState joylib: stack(state: var JoyState) +swaack joylib.html#swaack,JoyState joylib: swaack(state: var JoyState) +clear joylib.html#clear,JoyState joylib: clear(state: var JoyState) +first joylib.html#first,JoyState joylib: first(state: var JoyState) +rest joylib.html#rest,JoyState joylib: rest(state: var JoyState) +branch joylib.html#branch,JoyState joylib: branch(state: var JoyState) +loop joylib.html#loop,JoyState joylib: loop(state: var JoyState) +i joylib.html#i,JoyState joylib: i(state: var JoyState) +dip joylib.html#dip,JoyState joylib: dip(state: var JoyState) +truthy joylib.html#truthy,JoyState joylib: truthy(state: var JoyState) diff --git a/implementations/nim/htmldocs/nimdoc.out.css b/implementations/nim/htmldocs/nimdoc.out.css new file mode 100644 index 0000000..3706629 --- /dev/null +++ b/implementations/nim/htmldocs/nimdoc.out.css @@ -0,0 +1,904 @@ +/* +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; + --border: #dde; + --text: #222; + --anchor: #07b; + --anchor-focus: #607c9f; + --input-focus: #1fa0eb; + --strong: #3c3c3c; + --hint: #9A9A9A; + --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1NGQtOTVjNy1iOTgxMDFlMDFhMmEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzMzNGYwMWEtMjAxMS1hNTRkLTk1YzctYjk4MTAxZTAxYTJhIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MzMzNGYwMWEtMjAxMS1hNTRkLTk1YzctYjk4MTAxZTAxYTJhIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1NGQtOTVjNy1iOTgxMDFlMDFhMmEiIHN0RXZ0OndoZW49IjIwMTktMTItMDNUMDE6MDM6NDgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4PsixkAAAJ5klEQVR4nO2dfbBUZR3HP3vvxVD0zo0ACXxBuQMoQjJ1DfMl0NIhNcuSZqQhfGt6UWtK06xJexkrmywVRTQlHCIdtclC0zBJvYIvvEUgZpc3XyC7RVbKlQu1/fHdbc+uu2fPOfs85+y55/nMnBl2z+5zfnc5v/M8z+8119XVRYroAG4HfgvMT1YUR4MMAa4HLkhakCRoSVqAELwLeBY4C7gF+D6QS1QiR1ROAJ4Dzk9akKQwoXhtwL4GxvHjU8AKoNPz3leAu4HBFq+bAyZZHD9rDAK+BywDDklYlkQxoXhfAtYAEw2MVckQYBHwU6or99nA08BBFq49GngUeBIYaWH8rNEJdAOXA60Jy5I4jSreSOBKYDzwBPCJhiUqcSjwe2BWnc9NLnxuvMFrnwqsAqYBBwBfNzh2FpmNfs9jkhakWcg1aFxZiH5UL3cDnwf+Xue7BwFjgFHAOwuv24tyob3cO0LIshP4EbCn8Pq/wKvA9sLxMvCvOmPsA1yDZnHv/nEv2mM+F0IeR4m8z7lM7tMbUbzj0CxX7YfbAXwaWFJ4PRrNIu9FS9KJyEIZN68CG4DnkRJtLBw7gHHAYuDdNb77EDAjBhkHIk7xKoiqeK3IwjilzuceQJvoZjdQ/AMZaeoZiWYgBXSEwyleBW0Rv3cR9ZUO4LSI48fN2wN+bi5wJNBvUZaBSCaVy48oxpVhwDdMC5ISxpJRh6/DLGEUrxXt29YBQ+2IkwquR76ofZIWxJFegireNLSnm48skFmmDfmiVgJHJyuKI620ADOpbWEcDPwYOZKD7OmyxCTkXL+wzueOiEEWR8poQb60V4A7kLm/yFjgKeALuM1xLfYDbkX+zEGe98cAX0Oui6viF8vR7OS6urragW2UZr21wK+Aiwlu7XPoN3sYOAd4H6WH1SnA0qSEcjQnRT/e1bgnsw16kGPez4/lyCBF48oNwL+TFGSAsgCndI4qFBVvJ0owdZhjL3CnxfHzBo8+YBMyol0CHBijrKbHS/LoA7Yio9sPgJNr/QHekLGR6MffL+KP4SjnHmQxtoXNmbQP+CHyV75hYDzTIWNpWkU8iR5mq71vVsZqXgtcFqNQ/wG2IOtfD8oi6AX+Ujj+isKz8sBrnu+1okyGdmD/wnEgcDClTIdRyJRvI1cvCMciq7At4rj5eoCPAusbHCfLigda/VyKgi+AtyreMGAzykGzQQ/wO+BxSlkCuy1dq8hw5OieUjimYT+x9bHCdWwS1823Ez1EXmhgjKwrXpHzkduuanbCtzGX+NkPPAj8GincNkPjNkIO5dadUjiOB95m+BonopQpm8R58/0JJbHWy2eshVM8sRvdbyurKV4Hmoka2WA/iwwLP6d+QmzSdKC92GzK/W9R+Q3woQbHCELcN991wJcjftcpXolngKm18vFmoVonYcgDv0Qz5pqGREuOTuA8lPYUZbndh0LJNpkUqgZx33xvomim7RG+6xSvnOm1gqQXoyiMoKxFs8VZpFfpQHvQK4HDUPnAsBa9bxGP0tUjF+IYCkxFew+/G3owdq20pgjzt3uPRscs/o43IaOhH2f4ZaAPRyZQP6vgbuCbyGext87F0sgIZFI/N8BnlwBnolovcWAjq/uzwM0+55cBJ0UYN84ZL+rfbnLMM4FfUDv7Z1XlCe8FetETbleNL7+CZrnvMjCVDuTOOA84Hf+96ga0PC8qXY50FQsuMg+41+d8p885R4n7gdt8zo+qvDkmUF4fZQXwEbS+99KDMhlWkw0eALqQglXyDDCdcovf+4lv5jPNXJ9zWc/FDMMdPudGVCreRlTWwVtWbynwYVQQCFSp61Q042WJLUjB1nneuw8tvXo97x1Lugvg+j1Mo9boySLVHtJFWqsthx5GlbSGeN5bigrHdqPl52Zj4qWLXvTQWY4KOX2ccgPMBLRcuy9+0YzhguXN4GuYq2Zc2R/NZg+hfYt3/9ZCepdQthmB4vIWIYOTbWyWzGt2Y0izG1fqjlltxnsdpbPMRMmd3lqTTumqMw7FZY5G5mSHw5dalreiRWYGWjbZ7gYUlFa0xOtIWA4vk1E6zWEoI+FvyYrjSAO1FG8DCmQGKd+DJFsGogWVVFiP/GWbga9Svg9NgtPQvnd04fUNCcriSBF+vqZ5nn9PQ+Xs4q401oI6EP0R+BkyXoAeAtcgBfwidnvkVaMVFTO6n1JoWTfqiONw1MVP8e6l3GVwOPJZXW5VItGGiuduAu5CZdOrMQJ1CHqpIFccS+LxaD/3Hcr7vF0Xw7UdAwQ/xduLGkJ6aUMhVAuwU006B3wM+ZLmozJ5QRhWkGs9yjKw1fhwDsq8eE/F+y+i1CeHIxD1wppupXrA5xyUOjQHMzU3cyjTeS2aaaN2Fzoc1bhch3xspuqBTkDulQVUz1q4mYEbNuewQD3FexGFS1VjOLoRHwOOinj9HAooXY2CSidHHKeSI5GFcRWNdSxqR7VH1iHHeTV24R+X53C8hSCBvPPqnD8B+AOygn6OYAm0ORSGthLl8B0d4DtRmIKsoMsJF1U/Hi1dt6DusIN8PrsIlUdwOAITpDFlC6q3MTbgmHm011qGepOvQSXPipyOCujW6rxqk0dRWYsVFe8PRSn5JxWOoEvdfOGzfnF5tnCRK+bGi33MoB1hL0U5d1H5J5oVD6A5mp8sQS6KSWh5e0jEcR4BPmhKqJA4xTM3XuxjBlW8DuRacDU3y0myNbNTPHPjxT5m0GTN15A/zVFiI+HKYzgc/ydMlrRfgmQWuYn0F91xJEQYxVuDnMcOrQAWJi2EI72ErQviwqLEQpQ+5XBEIqzi3YWLwF+BMiMcjshEqYR1Gdk1KmxBsaR9SQviSDdRFK8fxVU+YliWZmcbcq7vSFoQR/qJWvuxD0WgLDYoSzPzAqowtjVhORwDhEaKru4GPoliGgcyy4Hj0DLT4TBCo9WO88jQ8Bns97lLghvRTOfqqDiMYqrM+HyUYdBtaLykeRmlK12C9rQOh1FM1vd/HqUIzaT5e+LVoh/VxByHShs6HFaw0VjjHhTxP5d0LT+fRnu5q3HuAodlbHW02Q5cDByM+sw1642cRylCx6PeZiuTFScUFxK+f19QovaRS+t4tsasxhvABbZbSfUCV6CM7qtQl6Fm4E1U22UqcAYqvZ42fgJMxH6vdYc5nkBlSW6Pq4fbS6hb6jg0u9yGug7FyS5U1+UcVBbwbFSuMM1sQ1bXK4A9CcviqM0e9H80HdUxCpwIa4McygA/GfgAcCJqmGKKXUixupEv7nHsLc2agWNQ0d9OzC+PHNHIo1XeLCoe8kkqXiUtwKFoWXoEKqk3BpWLaC8cXsV8HT1J+tFTZKvn+DMqFZi1knvtyKg1O2lBHADcCVxEedNSAP4HJcsr0NNWHVUAAAAASUVORK5CYII="); + + --keyword: #5e8f60; + --identifier: #222; + --comment: #484a86; + --operator: #155da4; + --punctuation: black; + --other: black; + --escapeSequence: #c4891b; + --number: #252dbe; + --literal: #a4255b; + --raw-data: #a4255b; +} + +[data-theme="dark"] { + --primary-background: #171921; + --secondary-background: #1e202a; + --third-background: #2b2e3b; + --border: #0e1014; + --text: #fff; + --anchor: #8be9fd; + --anchor-focus: #8be9fd; + --input-focus: #8be9fd; + --strong: #bd93f9; + --hint: #7A7C85; + --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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"); + + --keyword: #ff79c6; + --identifier: #f8f8f2; + --comment: #6272a4; + --operator: #ff79c6; + --punctuation: #f8f8f2; + --other: #f8f8f2; + --escapeSequence: #bd93f9; + --number: #bd93f9; + --literal: #f1fa8c; + --raw-data: #8be9fd; +} + +.theme-switch-wrapper { + display: flex; + align-items: center; +} + +.theme-switch-wrapper em { + margin-left: 10px; + font-size: 1rem; +} + +.theme-switch { + display: inline-block; + height: 22px; + position: relative; + width: 50px; +} + +.theme-switch input { + display: none; +} + +.slider { + background-color: #ccc; + bottom: 0; + cursor: pointer; + left: 0; + position: absolute; + right: 0; + top: 0; + transition: .4s; +} + +.slider:before { + background-color: #fff; + bottom: 4px; + content: ""; + height: 13px; + left: 4px; + position: absolute; + transition: .4s; + width: 13px; +} + +input:checked + .slider { + background-color: #66bb6a; +} + +input:checked + .slider:before { + transform: translateX(26px); +} + +.slider.round { + border-radius: 17px; +} + +.slider.round:before { + border-radius: 50%; +} + +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%; +} + +.column:first-child, +.columns:first-child { + margin-left: 0; } + +.three.columns { + width: 22%; +} + +.nine.columns { + width: 77.0%; } + +.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 */ +/* 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.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 { + 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; } + +blockquote { + font-size: 0.9em; + font-style: italic; + padding-left: 0.5em; + margin-left: 0; + border-left: 5px solid #bbc; +} + +.pre { + 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; +} + +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; } + +.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%); + 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; } + +.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: 3em; + padding: 1em; + border: 1px solid #4d4d4d; +} + +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.option { + white-space: nowrap; } + +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.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%); + 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/implementations/nim/htmldocs/printer.html b/implementations/nim/htmldocs/printer.html new file mode 100644 index 0000000..ae1d280 --- /dev/null +++ b/implementations/nim/htmldocs/printer.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + +printer + + + + + + + + +
+
+

printer

+
+
+
+ +     Dark Mode +
+ +
+ Search: +
+
+ Group by: + +
+ + +
+
+
+ +

+
+

Imports

+
+types +
+
+

Procs

+
+ +
proc print_expression(stack: JoyListType): string {...}{.raises: [Exception],
+    tags: [RootEffect].}
+
+ + +  Source +Edit + +
+ +
proc print_stack(stack: JoyListType): string {...}{.raises: [Exception],
+    tags: [RootEffect].}
+
+ + +  Source +Edit + +
+ +
+ +
+
+ +
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/printer.idx b/implementations/nim/htmldocs/printer.idx new file mode 100644 index 0000000..8e13ce3 --- /dev/null +++ b/implementations/nim/htmldocs/printer.idx @@ -0,0 +1,2 @@ +print_expression printer.html#print_expression,JoyListType printer: print_expression(stack: JoyListType): string +print_stack printer.html#print_stack,JoyListType printer: print_stack(stack: JoyListType): string diff --git a/implementations/nim/htmldocs/reader.html b/implementations/nim/htmldocs/reader.html new file mode 100644 index 0000000..497672b --- /dev/null +++ b/implementations/nim/htmldocs/reader.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + +reader + + + + + + + + +
+
+

reader

+
+
+
+ +     Dark Mode +
+ +
+ Search: +
+
+ Group by: + +
+ + +
+
+
+ +

+
+

Imports

+
+types +
+
+

Procs

+
+ +
proc read_str(str: string): JoyListType {...}{.
+    raises: [Exception, ValueError, EInvalidPeg], tags: [RootEffect].}
+
+ + +  Source +Edit + +
+ +
+ +
+
+ +
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/reader.idx b/implementations/nim/htmldocs/reader.idx new file mode 100644 index 0000000..74d274d --- /dev/null +++ b/implementations/nim/htmldocs/reader.idx @@ -0,0 +1 @@ +read_str reader.html#read_str,string reader: read_str(str: string): JoyListType diff --git a/implementations/nim/htmldocs/theindex.html b/implementations/nim/htmldocs/theindex.html new file mode 100644 index 0000000..1c8a233 --- /dev/null +++ b/implementations/nim/htmldocs/theindex.html @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + +Index + + + + + + + + +
+
+

Index

+ Modules: defs, joylib, printer, reader, types, utils.

API symbols

+
branch:
+
clear:
+
concat:
+
cons:
+
dictionary:
+
dip:
+
dup:
+
first:
+
i:
+
j_false:
+
j_loop:
+
joyAtom:
+
joyFalse:
+
joyInt:
+
joyList:
+
JoyListType:
+
JoyMapType:
+
joyParseError:
+
JoyState:
+
joyTrue:
+
JoyType:
+
JoyTypeType:
+
j_true:
+
loop:
+
pop:
+
pop_any:
+
pop_bool:
+
pop_int:
+
pop_list:
+
print_expression:
+
print_stack:
+
push_bool:
+
push_int:
+
push_list:
+
read_str:
+
rest:
+
stack:
+
swaack:
+
swap:
+
truthy:
+
+
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/types.html b/implementations/nim/htmldocs/types.html new file mode 100644 index 0000000..08d908b --- /dev/null +++ b/implementations/nim/htmldocs/types.html @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + +types + + + + + + + + +
+
+

types

+
+
+
+ +     Dark Mode +
+ +
+ Search: +
+
+ Group by: + +
+ + +
+
+
+ +

+
+

Types

+
+ +
JoyListType = List[JoyType]
+
+ + +  Source +Edit + +
+ +
JoyMapType = Map[string, JoyListType]
+
+ + +  Source +Edit + +
+ +
JoyState = tuple[stack: JoyListType, expression: JoyListType]
+
+ + +  Source +Edit + +
+ +
JoyTypeType = enum
+  joyAtom, joyFalse, joyInt, joyList, joyParseError, joyTrue
+
+ + +  Source +Edit + +
+ +
JoyType = ref object
+  case kind*: JoyTypeType
+  of joyAtom:
+    atomVal*: string
+  of joyFalse, joyTrue:
+    nil
+  of joyInt:
+    intVal*: BigInt
+  of joyList:
+    listVal*: JoyListType
+  of joyParseError:
+    errorMessage*: string
+  
+
+ + +  Source +Edit + +
+ +
+
+

Lets

+
+ +
j_true = JoyType(kind: joyTrue)
+
+ + +  Source +Edit + +
+ +
j_false = JoyType(kind: joyFalse)
+
+ + +  Source +Edit + +
+ +
j_loop = JoyType(kind: joyAtom, atomVal: "loop")
+
+ + +  Source +Edit + +
+ +
+ +
+
+ +
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/types.idx b/implementations/nim/htmldocs/types.idx new file mode 100644 index 0000000..1d759ea --- /dev/null +++ b/implementations/nim/htmldocs/types.idx @@ -0,0 +1,14 @@ +JoyListType types.html#JoyListType types: JoyListType +JoyMapType types.html#JoyMapType types: JoyMapType +JoyState types.html#JoyState types: JoyState +joyAtom types.html#joyAtom JoyTypeType.joyAtom +joyFalse types.html#joyFalse JoyTypeType.joyFalse +joyInt types.html#joyInt JoyTypeType.joyInt +joyList types.html#joyList JoyTypeType.joyList +joyParseError types.html#joyParseError JoyTypeType.joyParseError +joyTrue types.html#joyTrue JoyTypeType.joyTrue +JoyTypeType types.html#JoyTypeType types: JoyTypeType +JoyType types.html#JoyType types: JoyType +j_true types.html#j_true types: j_true +j_false types.html#j_false types: j_false +j_loop types.html#j_loop types: j_loop diff --git a/implementations/nim/htmldocs/utils.html b/implementations/nim/htmldocs/utils.html new file mode 100644 index 0000000..ac1192a --- /dev/null +++ b/implementations/nim/htmldocs/utils.html @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + +utils + + + + + + + + +
+
+

utils

+
+
+
+ +     Dark Mode +
+ +
+ Search: +
+
+ Group by: + +
+ + +
+
+
+ +

+
+

Imports

+
+types +
+
+

Procs

+
+ +
proc pop_any(state: var JoyState): JoyType {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc pop_bool(state: var JoyState): bool {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc pop_int(state: var JoyState): BigInt {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc pop_list(state: var JoyState): JoyListType {...}{.raises: [ValueError], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc push_int(a: BigInt; state: var JoyState) {...}{.raises: [], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc push_list(a: JoyListType; state: var JoyState) {...}{.raises: [], tags: [].}
+
+ + +  Source +Edit + +
+ +
proc push_bool(a: bool; state: var JoyState) {...}{.raises: [], tags: [].}
+
+ + +  Source +Edit + +
+ +
+ +
+
+ +
+ +
+
+
+ + + diff --git a/implementations/nim/htmldocs/utils.idx b/implementations/nim/htmldocs/utils.idx new file mode 100644 index 0000000..5c4aaee --- /dev/null +++ b/implementations/nim/htmldocs/utils.idx @@ -0,0 +1,7 @@ +pop_any utils.html#pop_any,JoyState utils: pop_any(state: var JoyState): JoyType +pop_bool utils.html#pop_bool,JoyState utils: pop_bool(state: var JoyState): bool +pop_int utils.html#pop_int,JoyState utils: pop_int(state: var JoyState): BigInt +pop_list utils.html#pop_list,JoyState utils: pop_list(state: var JoyState): JoyListType +push_int utils.html#push_int,BigInt,JoyState utils: push_int(a: BigInt; state: var JoyState) +push_list utils.html#push_list,JoyListType,JoyState utils: push_list(a: JoyListType; state: var JoyState) +push_bool utils.html#push_bool,bool,JoyState utils: push_bool(a: bool; state: var JoyState) diff --git a/implementations/nim/joy.nim b/implementations/nim/joy.nim new file mode 100644 index 0000000..d74cb7b --- /dev/null +++ b/implementations/nim/joy.nim @@ -0,0 +1,145 @@ +#[ + + Copyright © 2021 Simon Forman + + This file is part of Bliss + + Bliss is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bliss is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bliss. If not see . + + +]# +import rdstdin, bigints, fp, printer, reader, types, joylib, utils, defs + + +# Handle Ctrl-C by raising an IOError to break out of the mainloop +# without waiting for the user to press enter. +proc ctrlc() {.noconv.} = + raise newException(IOError, "Got Ctrl-C, bye!") + +setControlCHook(ctrlc) + + +proc joy_eval(sym: string, state: var JoyState): JoyState = + case sym + + # Integer Math + + of "+": push_int(pop_int(state) + pop_int(state), state) + of "*": push_int(pop_int(state) * pop_int(state), state) + of "-": + let tos = pop_int(state) + push_int(pop_int(state) - tos, state) + of "/": + let tos = pop_int(state) + push_int(pop_int(state) div tos, state) + of "%": + let tos = pop_int(state) + push_int(pop_int(state) mod tos, state) + + # Comparision + + of "<": + let tos = pop_int(state) + let second = pop_int(state) + push_bool(second < tos, state) + of ">": + let tos = pop_int(state) + let second = pop_int(state) + push_bool(second > tos, state) + of "<=": + let tos = pop_int(state) + let second = pop_int(state) + push_bool(second <= tos, state) + of ">=": + let tos = pop_int(state) + let second = pop_int(state) + push_bool(second >= tos, state) + of "=": + let tos = pop_int(state) + let second = pop_int(state) + push_bool(second == tos, state) + of "<>": + let tos = pop_int(state) + let second = pop_int(state) + push_bool(second != tos, state) + + # Boolean logic + + of "and": # Have to pop, Nim `and` short-circuits. + let tos = pop_bool(state) + let second = pop_bool(state) + push_bool(tos and second, state) + of "or": # Have to pop, Nim `or` short-circuits. + let tos = pop_bool(state) + let second = pop_bool(state) + push_bool(tos or second, state) + + # Built-in Functions and Combinators + + of "bool": truthy(state) + of "branch": branch(state) + of "clear": clear(state) + of "concat": concat(state) + of "cons": cons(state) + of "dip": dip(state) + of "dup": dup(state) + of "first": first(state) + of "i": i(state) + of "loop": loop(state) + of "pop": pop(state) + of "rest": rest(state) + of "stack": stack(state) + of "swaack": swaack(state) + of "swap": swap(state) + + else: + let def = dictionary.get(sym) + if def.isEmpty: + raise newException(ValueError, "Unknown: " & sym) + state.expression = def.get() ++ state.expression + state + + +proc joy(state: var JoyState) = + while not state.expression.isEmpty: + # echo print_stack(state.stack), " . ", print_expression(state.expression) + let term = state.expression.head + state.expression = state.expression.tail + case term.kind + of joyInt, joyList, joyTrue, joyFalse: + state.stack = term ^^ state.stack + of joyAtom: + state = joy_eval(term.atomVal, state) + of joyParseError: + echo term.errorMessage + break + + + +var state0: JoyState = (stack: Nil[JoyType](), expression: Nil[JoyType]()) +var state: JoyState +while true: + try: + let e = read_str(readLineFromStdin("joy? ")) + state = (stack: state0.stack, expression: e) + except IOError: + break + try: + joy(state) + except: + echo getCurrentExceptionMsg() + echo print_stack(state0.stack) + continue + echo print_stack(state.stack) + state0 = state diff --git a/implementations/nim/joylib.nim b/implementations/nim/joylib.nim new file mode 100644 index 0000000..f5b20ac --- /dev/null +++ b/implementations/nim/joylib.nim @@ -0,0 +1,110 @@ +#[ + + Copyright © 2021 Simon Forman + + This file is part of Bliss + + Bliss is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bliss is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bliss. If not see . + + +]# +import bigints, fp, types, utils + +proc branch*(state: var JoyState) = + let true_body = pop_list(state) + let false_body = pop_list(state) + if pop_bool(state): + state.expression = true_body ++ state.expression + else: + state.expression = false_body ++ state.expression + +proc clear*(state: var JoyState) = + state.stack = Nil[JoyType]() + +proc concat*(state: var JoyState) = + let tos = pop_list(state) + let second = pop_list(state) + push_list((second ++ tos), state) + +proc cons*(state: var JoyState) = + let tos = pop_list(state) + let second = pop_any(state) + push_list((second ^^ tos), state) + +proc dip*(state: var JoyState) = + let body = pop_list(state) + let tos = pop_any(state) + state.expression = body ++ tos ^^ state.expression + +proc dup*(state: var JoyState) = + if state.stack.isEmpty: + raise newException(ValueError, "Cannot dup empty stack.") + state.stack = state.stack.head ^^ state.stack + +proc first*(state: var JoyState) = + let tos = pop_list(state) + if tos.isEmpty: + raise newException(ValueError, "Cannot take first of empty list.") + state.stack = tos.head ^^ state.stack + +proc i*(state: var JoyState) = + let body = pop_list(state) + state.expression = body ++ state.expression + +proc loop*(state: var JoyState) = + let tos = pop_any(state) + case tos.kind: + of joyList: + if pop_bool(state): + state.expression = tos.listVal ++ tos ^^ j_loop ^^ state.expression + else: + raise newException(ValueError, "Loop body not a list.") + +proc pop*(state: var JoyState) = + if state.stack.isEmpty: + raise newException(ValueError, "Cannot pop empty stack.") + state.stack = state.stack.tail + +proc rest*(state: var JoyState) = + let tos = pop_list(state) + if tos.isEmpty: + raise newException(ValueError, "Cannot take rest of empty list.") + push_list(tos.tail, state) + +proc stack*(state: var JoyState) = + push_list(state.stack, state) + +proc swaack*(state: var JoyState) = + let tos = pop_list(state) + let stack = state.stack + state.stack = tos + push_list(stack, state) + +proc swap*(state: var JoyState) = + let tos = pop_any(state) + let second = pop_any(state) + state.stack = second ^^ tos ^^ state.stack + +proc truthy*(state: var JoyState) = + let tos = pop_any(state) + case tos.kind: + of joyTrue, joyFalse: + state.stack = tos ^^ state.stack + of joyInt: + push_bool(tos.intVal != zero, state) + of joyList: + push_bool(not tos.listVal.isEmpty, state) + else: + raise newException(ValueError, "Cannot Boolify.") + diff --git a/implementations/nim/printer.nim b/implementations/nim/printer.nim new file mode 100644 index 0000000..102e616 --- /dev/null +++ b/implementations/nim/printer.nim @@ -0,0 +1,43 @@ +#[ + + Copyright © 2021 Simon Forman + + This file is part of Bliss + + Bliss is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bliss is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bliss. If not see . + + +]# +import strutils, bigints, fp, types + +proc pr_str(thing: JoyType): string + +proc joystr(s: JoyListType): string = + s.map(pr_str).asSeq.join(" ") + +proc pr_str(thing: JoyType): string = + case thing.kind + of joyAtom: thing.atomVal + of joyInt: thing.intVal.toString + of joyList: "[" & joystr(thing.listVal) & "]" + of joyParseError: thing.errorMessage + of joyTrue: "true" + of joyFalse: "false" + +proc print_expression*(stack: JoyListType): string = + joystr(stack) + +proc print_stack*(stack: JoyListType): string = + joystr(stack.reverse) + diff --git a/implementations/nim/reader.nim b/implementations/nim/reader.nim new file mode 100644 index 0000000..5e5cee3 --- /dev/null +++ b/implementations/nim/reader.nim @@ -0,0 +1,107 @@ +#[ + + Copyright © 2021 Simon Forman + + This file is part of Bliss + + Bliss is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bliss is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bliss. If not see . + + +]# +import pegs, bigints, fp, types + +type + + Token = string + + Reader = tuple + tokens : seq[Token] + position: int + eof: bool + +let token_pattern = peg""" + + Token <- Bracket / Symbol + + Bracket <- '[' / ']' + Symbol <- (!Bracket \S)+ + + """ + +# TODO: Maybe use PEG eventParser? + + +proc peek(reader: Reader): Token = + reader.tokens[reader.position] + + +proc next(reader: var Reader): Token = + if reader.eof: + raise newException(ValueError, "EOF") + result = peek(reader) + inc reader.position + reader.eof = reader.position >= reader.tokens.len + + +proc read_atom(reader: var Reader): JoyType = + let tok = next(reader) + if tok =~ peg"^('+' / '-' )? \d+$": + JoyType(kind: joyInt, intVal: tok.initBigInt) + elif tok == "true": j_true + elif tok == "false": j_false + else: JoyType(kind: joyAtom, atomVal: tok) + + +proc read_form(reader: var Reader): JoyType + + +proc read_list(reader: var Reader): JoyType = + var items : seq[JoyType] = @[] + discard next(reader) # Skip the '['. + while true: + if reader.eof: + return JoyType(kind: joyParseError, errorMessage: "EOF while scanning list.") + if peek(reader) == "]": + discard next(reader) # Skip the ']'. + break + items.add(read_form(reader)) + JoyType(kind: joyList, listVal: items.asList) + + +proc read_form(reader: var Reader): JoyType = + if reader.eof: + # Blank or empty input, not really an error. + JoyType(kind: joyParseError, errorMessage: "") + elif peek(reader) == "[": + read_list(reader) + else: + read_atom(reader) + + +proc tokens_to_reader(tokens: seq[Token]): Reader = + var reader: Reader = ( + tokens: tokens, + position: 0, + eof: tokens.len == 0 + ) + reader + + +proc read_str*(str: string): JoyListType = + var items : seq[JoyType] = @[] + var reader = tokens_to_reader(findAll(str, token_pattern)) + while not reader.eof: + items.add(read_form(reader)) + items.asList + diff --git a/implementations/nim/types.nim b/implementations/nim/types.nim new file mode 100644 index 0000000..4e85d73 --- /dev/null +++ b/implementations/nim/types.nim @@ -0,0 +1,58 @@ +#[ + + Copyright © 2021 Simon Forman + + This file is part of Bliss + + Bliss is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bliss is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bliss. If not see . + + +]# +import bigints, fp + +type + + JoyListType* = List[JoyType] + JoyMapType* = Map[string, JoyListType] + + JoyState* = tuple + stack: JoyListType + expression: JoyListType + + JoyTypeType* = enum + joyAtom, + joyFalse, + joyInt, + joyList, + joyParseError, + joyTrue + + JoyType* = ref object + case kind*: JoyTypeType + of joyAtom: atomVal*: string + of joyFalse, joyTrue: nil + of joyInt: intVal*: BigInt + of joyList: listVal*: JoyListType + of joyParseError: errorMessage*: string + + +# Singleton values for Boolean type. + +let j_true* = JoyType(kind: joyTrue) +let j_false* = JoyType(kind: joyFalse) + +# Singleton values for Symbols. + +let j_loop* = JoyType(kind: joyAtom, atomVal: "loop") + diff --git a/implementations/nim/utils.nim b/implementations/nim/utils.nim new file mode 100644 index 0000000..860ee37 --- /dev/null +++ b/implementations/nim/utils.nim @@ -0,0 +1,69 @@ +#[ + + Copyright © 2021 Simon Forman + + This file is part of Bliss + + Bliss is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bliss is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bliss. If not see . + + +]# +import bigints, fp, types + + +proc pop_any*(state: var JoyState): JoyType = + # TODO: detect and report nils. + if state.stack.isEmpty: + raise newException(ValueError, "Not enough values on stack.") + let a = state.stack.head + state.stack = state.stack.tail + return a + +proc pop_bool*(state: var JoyState): bool = + let a = pop_any(state) + case a.kind: + of joyTrue: result = true + of joyFalse: result = false + else: + raise newException(ValueError, "Not a Boolean value.") + +proc pop_int*(state: var JoyState): BigInt = + let a = pop_any(state) + case a.kind: + of joyInt: + return a.intVal + else: + raise newException(ValueError, "Not an integer.") + +proc pop_list*(state: var JoyState): JoyListType = + let a = pop_any(state) + case a.kind: + of joyList: + return a.listVal + else: + raise newException(ValueError, "Not a list.") + + +proc push_int*(a: BigInt, state: var JoyState) = + state.stack = JoyType(kind: joyInt, intVal: a) ^^ state.stack + +proc push_list*(a: JoyListType, state: var JoyState) = + state.stack = JoyType(kind: joyList, listVal: a) ^^ state.stack + +proc push_bool*(a: bool, state: var JoyState) = + if a: + state.stack = j_true ^^ state.stack + else: + state.stack = j_false ^^ state.stack + -- 2.11.0