Imported Upstream version 2.7.4 upstream/2.7.4
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 18 Jul 2022 02:07:29 +0000 (11:07 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 18 Jul 2022 02:07:29 +0000 (11:07 +0900)
320 files changed:
AUTHORS
CHANGES
LICENSE
Makefile
PKG-INFO
Pygments.egg-info/PKG-INFO
Pygments.egg-info/SOURCES.txt
doc/_static/demo.css
doc/_static/demo.js
doc/_templates/demo.html
doc/_themes/pygments14/layout.html
doc/_themes/pygments14/static/pygments14.css_t
doc/conf.py
doc/docs/integrate.rst
doc/faq.rst
doc/index.rst
external/markdown-processor.py
external/moin-parser.py
external/rst-directive.py
pygments/__init__.py
pygments/__main__.py
pygments/cmdline.py
pygments/console.py
pygments/filter.py
pygments/filters/__init__.py
pygments/formatter.py
pygments/formatters/__init__.py
pygments/formatters/_mapping.py
pygments/formatters/bbcode.py
pygments/formatters/html.py
pygments/formatters/img.py
pygments/formatters/irc.py
pygments/formatters/latex.py
pygments/formatters/other.py
pygments/formatters/rtf.py
pygments/formatters/svg.py
pygments/formatters/terminal.py
pygments/formatters/terminal256.py
pygments/lexer.py
pygments/lexers/__init__.py
pygments/lexers/_asy_builtins.py
pygments/lexers/_cl_builtins.py
pygments/lexers/_cocoa_builtins.py
pygments/lexers/_csound_builtins.py
pygments/lexers/_lasso_builtins.py
pygments/lexers/_lua_builtins.py
pygments/lexers/_mql_builtins.py
pygments/lexers/_openedge_builtins.py
pygments/lexers/_php_builtins.py
pygments/lexers/_postgres_builtins.py
pygments/lexers/_scilab_builtins.py
pygments/lexers/_sourcemod_builtins.py
pygments/lexers/_stan_builtins.py
pygments/lexers/_stata_builtins.py
pygments/lexers/_tsql_builtins.py
pygments/lexers/_usd_builtins.py
pygments/lexers/_vbscript_builtins.py
pygments/lexers/_vim_builtins.py
pygments/lexers/actionscript.py
pygments/lexers/agile.py
pygments/lexers/algebra.py
pygments/lexers/ambient.py
pygments/lexers/ampl.py
pygments/lexers/apl.py
pygments/lexers/archetype.py
pygments/lexers/arrow.py
pygments/lexers/asm.py
pygments/lexers/automation.py
pygments/lexers/bare.py
pygments/lexers/basic.py
pygments/lexers/bibtex.py
pygments/lexers/boa.py
pygments/lexers/business.py
pygments/lexers/c_cpp.py
pygments/lexers/c_like.py
pygments/lexers/capnproto.py
pygments/lexers/chapel.py
pygments/lexers/clean.py
pygments/lexers/compiled.py
pygments/lexers/configs.py
pygments/lexers/console.py
pygments/lexers/crystal.py
pygments/lexers/csound.py
pygments/lexers/css.py
pygments/lexers/d.py
pygments/lexers/dalvik.py
pygments/lexers/data.py
pygments/lexers/devicetree.py
pygments/lexers/diff.py
pygments/lexers/dotnet.py
pygments/lexers/dsls.py
pygments/lexers/dylan.py
pygments/lexers/ecl.py
pygments/lexers/eiffel.py
pygments/lexers/elm.py
pygments/lexers/email.py
pygments/lexers/erlang.py
pygments/lexers/esoteric.py
pygments/lexers/ezhil.py
pygments/lexers/factor.py
pygments/lexers/fantom.py
pygments/lexers/felix.py
pygments/lexers/floscript.py
pygments/lexers/forth.py
pygments/lexers/fortran.py
pygments/lexers/foxpro.py
pygments/lexers/freefem.py
pygments/lexers/functional.py
pygments/lexers/gdscript.py
pygments/lexers/go.py
pygments/lexers/grammar_notation.py
pygments/lexers/graph.py
pygments/lexers/graphics.py
pygments/lexers/haskell.py
pygments/lexers/haxe.py
pygments/lexers/hdl.py
pygments/lexers/hexdump.py
pygments/lexers/html.py
pygments/lexers/idl.py
pygments/lexers/igor.py
pygments/lexers/inferno.py
pygments/lexers/installers.py
pygments/lexers/int_fiction.py
pygments/lexers/iolang.py
pygments/lexers/j.py
pygments/lexers/javascript.py
pygments/lexers/julia.py
pygments/lexers/jvm.py
pygments/lexers/lisp.py
pygments/lexers/make.py
pygments/lexers/markup.py
pygments/lexers/math.py
pygments/lexers/matlab.py
pygments/lexers/mime.py
pygments/lexers/ml.py
pygments/lexers/modeling.py
pygments/lexers/modula2.py
pygments/lexers/monte.py
pygments/lexers/mosel.py
pygments/lexers/ncl.py
pygments/lexers/nimrod.py
pygments/lexers/nit.py
pygments/lexers/nix.py
pygments/lexers/oberon.py
pygments/lexers/objective.py
pygments/lexers/ooc.py
pygments/lexers/other.py
pygments/lexers/parasail.py
pygments/lexers/parsers.py
pygments/lexers/pascal.py
pygments/lexers/pawn.py
pygments/lexers/perl.py
pygments/lexers/php.py
pygments/lexers/pointless.py
pygments/lexers/pony.py
pygments/lexers/praat.py
pygments/lexers/prolog.py
pygments/lexers/promql.py
pygments/lexers/python.py
pygments/lexers/qvt.py
pygments/lexers/r.py
pygments/lexers/rdf.py
pygments/lexers/rebol.py
pygments/lexers/resource.py
pygments/lexers/ride.py
pygments/lexers/rnc.py
pygments/lexers/roboconf.py
pygments/lexers/robotframework.py
pygments/lexers/ruby.py
pygments/lexers/rust.py
pygments/lexers/sas.py
pygments/lexers/scdoc.py
pygments/lexers/scripting.py
pygments/lexers/sgf.py
pygments/lexers/shell.py
pygments/lexers/sieve.py
pygments/lexers/slash.py
pygments/lexers/smalltalk.py
pygments/lexers/smv.py
pygments/lexers/snobol.py
pygments/lexers/solidity.py
pygments/lexers/special.py
pygments/lexers/sql.py
pygments/lexers/stata.py
pygments/lexers/supercollider.py
pygments/lexers/tcl.py
pygments/lexers/templates.py
pygments/lexers/teraterm.py
pygments/lexers/testing.py
pygments/lexers/text.py
pygments/lexers/textedit.py
pygments/lexers/textfmts.py
pygments/lexers/theorem.py
pygments/lexers/tnt.py
pygments/lexers/trafficscript.py
pygments/lexers/typoscript.py
pygments/lexers/unicon.py
pygments/lexers/urbi.py
pygments/lexers/usd.py
pygments/lexers/varnish.py
pygments/lexers/verification.py
pygments/lexers/web.py
pygments/lexers/webidl.py
pygments/lexers/webmisc.py
pygments/lexers/whiley.py
pygments/lexers/x10.py
pygments/lexers/xorg.py
pygments/lexers/yang.py
pygments/lexers/zig.py
pygments/modeline.py
pygments/plugin.py
pygments/regexopt.py
pygments/scanner.py
pygments/sphinxext.py
pygments/style.py
pygments/styles/__init__.py
pygments/styles/abap.py
pygments/styles/algol.py
pygments/styles/algol_nu.py
pygments/styles/arduino.py
pygments/styles/autumn.py
pygments/styles/borland.py
pygments/styles/bw.py
pygments/styles/colorful.py
pygments/styles/default.py
pygments/styles/emacs.py
pygments/styles/friendly.py
pygments/styles/fruity.py
pygments/styles/igor.py
pygments/styles/inkpot.py
pygments/styles/lovelace.py
pygments/styles/manni.py
pygments/styles/monokai.py
pygments/styles/murphy.py
pygments/styles/native.py
pygments/styles/paraiso_dark.py
pygments/styles/paraiso_light.py
pygments/styles/pastie.py
pygments/styles/perldoc.py
pygments/styles/rainbow_dash.py
pygments/styles/rrt.py
pygments/styles/sas.py
pygments/styles/solarized.py
pygments/styles/stata_dark.py
pygments/styles/stata_light.py
pygments/styles/tango.py
pygments/styles/trac.py
pygments/styles/vim.py
pygments/styles/vs.py
pygments/styles/xcode.py
pygments/token.py
pygments/unistring.py
pygments/util.py
scripts/check_crlf.py
scripts/check_sources.py
scripts/debug_lexer.py
scripts/get_vimkw.py
setup.py
tests/__init__.py
tests/examplefiles/example.usd
tests/examplefiles/matlab_sample
tests/examplefiles/test.cr
tests/test_analyze_lexer.py
tests/test_apache_conf.py
tests/test_asm.py
tests/test_basic.py
tests/test_basic_api.py
tests/test_bibtex.py
tests/test_cfm.py
tests/test_clexer.py
tests/test_cmdline.py
tests/test_coffeescript.py
tests/test_coq.py [new file with mode: 0644]
tests/test_crystal.py
tests/test_csound.py
tests/test_examplefiles.py
tests/test_grammar_notation.py
tests/test_haskell.py
tests/test_hdl.py
tests/test_html_formatter.py
tests/test_inherit.py
tests/test_ini_lexer.py [new file with mode: 0644]
tests/test_irc_formatter.py
tests/test_java.py
tests/test_javascript.py
tests/test_julia.py
tests/test_kotlin.py
tests/test_latex_formatter.py
tests/test_lexers_other.py
tests/test_make.py
tests/test_markdown_lexer.py
tests/test_matlab.py
tests/test_modeline.py
tests/test_mysql.py
tests/test_objectiveclexer.py
tests/test_perllexer.py
tests/test_php.py
tests/test_praat.py
tests/test_promql.py
tests/test_properties.py
tests/test_python.py
tests/test_qbasiclexer.py
tests/test_r.py
tests/test_rdf.py
tests/test_regexlexer.py
tests/test_regexopt.py
tests/test_rtf_formatter.py
tests/test_ruby.py
tests/test_shell.py
tests/test_smarty.py
tests/test_sql.py
tests/test_terminal_formatter.py
tests/test_textfmts.py
tests/test_tnt.py
tests/test_token.py
tests/test_unistring.py
tests/test_using_api.py
tests/test_util.py
tests/test_whiley.py
tests/test_yang.py

diff --git a/AUTHORS b/AUTHORS
index f209a8acba421d32dc81727d53a8a0bd5fcd685a..a5c9fb5030ff6496d36d3a71e0987a73516d694d 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -78,6 +78,7 @@ Other contributors, listed alphabetically, are:
 * Michał Górny -- vim modeline support
 * Alex Gosse -- TrafficScript lexer
 * Patrick Gotthardt -- PHP namespaces support
+* Hubert Gruniaux -- C and C++ lexer improvements
 * Olivier Guibe -- Asymptote lexer
 * Phil Hagelberg -- Fennel lexer
 * Florian Hahn -- Boogie lexer
@@ -233,6 +234,6 @@ Other contributors, listed alphabetically, are:
 * Alex Zimin -- Nemerle lexer
 * Rob Zimmerman -- Kal lexer
 * Vincent Zurczak -- Roboconf lexer
-* Hubert Gruniaux -- C and C++ lexer improvements
+* 15b3 -- Image Formatter improvements
 
 Many thanks for all contributions!
diff --git a/CHANGES b/CHANGES
index 5e0c86834b5e1945d11a374233b323017d893be2..481ead5edd3e503352a1669f163bc4711e4de8e5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -11,29 +11,67 @@ Version 2.8.0
 -------------
 (not released yet)
 
+
+Version 2.7.4
+-------------
+(released January 12, 2021)
+
+- Updated lexers:
+
+  - Apache configurations: Improve handling of malformed tags (#1656)
+  - CSS: Add support for variables (#1633, #1666)
+  - Crystal (#1650, #1670)
+  - Coq (#1648)
+  - Fortran: Add missing keywords (#1635, #1665)
+  - Ini (#1624)
+  - JavaScript and variants (#1647 -- missing regex flags, #1651)
+  - Markdown (#1623, #1617)
+  - Shell
+
+    - Lex trailing whitespace as part of the prompt (#1645)
+    - Add missing ``in`` keyword (#1652)
+    
+  - SQL - Fix keywords (#1668)
+  - Typescript: Fix incorrect punctuation handling (#1510, #1511)
+
+- Fix infinite loop in SML lexer (#1625)
+- Fix backtracking string regexes in JavaScript/TypeScript, Modula2
+  and many other lexers (#1637)
+- Limit recursion with nesting Ruby heredocs (#1638)
+- Fix a few inefficient regexes for guessing lexers
+- Fix the raw token lexer handling of Unicode (#1616)
+- Revert a private API change in the HTML formatter (#1655) -- 
+  please note that private APIs remain subject to change!
+- Fix several exponential/cubic-complexity regexes found by
+  Ben Caller/Doyensec (#1675)
+- Fix incorrect MATLAB example (#1582)
+
+Thanks to Google's OSS-Fuzz project for finding many of these bugs.
+
+
 Version 2.7.3
 -------------
 (released December 6, 2020)
 
 - Updated lexers:
 
-  * Ada (PR#1581)
-  * HTML (PR#1615, #1614)
-  * Java (PR#1594, #1586)
-  * JavaScript (PR#1605, PR#1589, #1588)
-  * JSON (PR#1569 -- this is a complete rewrite)
-  * Lean (PR#1601)
-  * LLVM (PR#1612)
-  * Mason (PR#1592)
-  * MySQL (PR#1555, #1551)
-  * Rust (PR#1608)
-  * Turtle (PR#1590, #1553)
+  * Ada (#1581)
+  * HTML (#1615, #1614)
+  * Java (#1594, #1586)
+  * JavaScript (#1605, #1589, #1588)
+  * JSON (#1569 -- this is a complete rewrite)
+  * Lean (#1601)
+  * LLVM (#1612)
+  * Mason (#1592)
+  * MySQL (#1555, #1551)
+  * Rust (#1608)
+  * Turtle (#1590, #1553)
 
 - Deprecated JsonBareObjectLexer, which is now identical to JsonLexer (#1600)
-- The ``ImgFormatter`` now calculates the exact character width, which fixes some issues with overlapping text (#1213, PR#1611)
-- Documentation fixes (PR#1609, #1599, #1598)
-- Fixed duplicated Juttle language alias (#1604, PR#1606)
-- Added support for Kotlin scripts (PR#1587)
+- The ``ImgFormatter`` now calculates the exact character width, which fixes some issues with overlapping text (#1213, #1611)
+- Documentation fixes (#1609, #1599, #1598)
+- Fixed duplicated Juttle language alias (#1604, #1606)
+- Added support for Kotlin scripts (#1587)
 - Removed CSS rule which forced margin to 0
   
 
@@ -43,18 +81,18 @@ Version 2.7.2
 
 - Updated lexers:
 
-  * Latex (PR#1517, #1516)
-  * LLVM (PR#1565)
-  * SPARQL (PR#1559)
+  * Latex (#1517, #1516)
+  * LLVM (#1565)
+  * SPARQL (#1559)
 
-- Fixed Python console/traceback lexer problems with custom exceptions without messages (#1548)
+- Fix Python console/traceback lexer problems with custom exceptions without messages (#1548)
 - Allow loading ttc fonts on Mac/image formatter (#1223)
-- Improved ``analyze_text`` across a variety of lexers (PR#1549)
-- Removed CSS rule which forced the vertical padding to 0 for line numbers (PR#1583, #1579)
-- Fixed ``TNTLexer`` crashing on unexpected EOL (#1568, PR#1570)
-- ``regexlint`` can be now run locally as part of ``tox`` tests (PR#1557)
-- Fixed typos (PR#1550, #1562)
-- Added Python 3.9 as a supported version (PR#1554)
+- Improve ``analyze_text`` across a variety of lexers (#1549)
+- Remove CSS rule which forced the vertical padding to 0 for line numbers (#1583, #1579)
+- Fix ``TNTLexer`` crashing on unexpected EOL (#1568, #1570)
+- ``regexlint`` can be now run locally as part of ``tox`` tests (#1557)
+- Fix typos (#1550, #1562)
+- Add Python 3.9 as a supported version (#1554)
 
 
 Version 2.7.1
@@ -70,59 +108,59 @@ Version 2.7.0
 
 - Added lexers:
 
-  * Arrow (PR#1481, PR#1499)
-  * BARE (PR#1488)
-  * Devicetree (PR#1434)
-  * F* (PR#1409)
-  * GDScript (PR#1457)
-  * Pointless (PR#1494)
-  * PromQL (PR#1506)
-  * PsySH (PR#1438)
-  * Singularity (PR#1285)
-  * TiddlyWiki5 (PR#1390)
-  * TNT (PR#1414)
-  * YANG (PR#1408, PR#1428)
+  * Arrow (#1481, #1499)
+  * BARE (#1488)
+  * Devicetree (#1434)
+  * F* (#1409)
+  * GDScript (#1457)
+  * Pointless (#1494)
+  * PromQL (#1506)
+  * PsySH (#1438)
+  * Singularity (#1285)
+  * TiddlyWiki5 (#1390)
+  * TNT (#1414)
+  * YANG (#1408, #1428)
 
 - Updated lexers:
 
-  * APL (PR#1503)
-  * C++ (PR#1350, which also fixes: #1222, #996, #906, #828, #1162, #1166,
+  * APL (#1503)
+  * C++ (#1350, which also fixes: #1222, #996, #906, #828, #1162, #1166,
     #1396)
-  * Chapel (PR#1423)
+  * Chapel (#1423)
   * CMake (#1491)
   * CSound (#1509)
-  * Cython (PR#1507)
-  * Dart (PR#1449)
-  * Fennel (PR#1535)
-  * Fortran (PR#1442)
-  * GAS (PR#1530)
-  * HTTP (PR#1432, #1520, PR#1521)
-  * Inform 6 (PR#1461)
-  * Javascript (PR#1533)
-  * JSON (#1065, PR#1528)
-  * Lean (PR#1415)
-  * Matlab (PR#1399)
-  * Markdown (#1492, PR#1495)
-  * MySQL (#975, #1063, #1453, PR#1527)
-  * NASM (PR#1465)
-  * Nim (PR#1426)
-  * PostgreSQL (PR#1513)
-  * PowerShell (PR#1398, PR#1497)
-  * Protobuf (PR#1505)
-  * Robot (PR#1480)
-  * SQL (PR#1402)
-  * SystemVerilog (PR#1436, PR#1452, PR#1454, PR#1460, PR#1462, PR#1463, PR#1464, PR#1471, #1496, PR#1504)
-  * TeraTerm (PR#1337)
+  * Cython (#1507)
+  * Dart (#1449)
+  * Fennel (#1535)
+  * Fortran (#1442)
+  * GAS (#1530)
+  * HTTP (#1432, #1520, #1521)
+  * Inform 6 (#1461)
+  * Javascript (#1533)
+  * JSON (#1065, #1528)
+  * Lean (#1415)
+  * Matlab (#1399)
+  * Markdown (#1492, #1495)
+  * MySQL (#975, #1063, #1453, #1527)
+  * NASM (#1465)
+  * Nim (#1426)
+  * PostgreSQL (#1513)
+  * PowerShell (#1398, #1497)
+  * Protobuf (#1505)
+  * Robot (#1480)
+  * SQL (#1402)
+  * SystemVerilog (#1436, #1452, #1454, #1460, #1462, #1463, #1464, #1471, #1496, #1504)
+  * TeraTerm (#1337)
   * XML (#1502)
 
-- Added a new filter for math symbols (PR#1406)
-- The Kconfig lexer will match Kconfig derivative names now (PR#1458)
-- Improved HTML formatter output (PR#1500)
-- ``.markdown`` is now recognized as an extension for Markdown files (PR#1476)
-- Fixed line number colors for Solarized (PR#1477, #1356)
-- Improvements to exception handling (PR#1478)
-- Improvements to tests (PR#1532, PR#1533, PR#1539)
-- Various code cleanups (PR#1536, PR#1537, PR#1538)
+- Added a new filter for math symbols (#1406)
+- The Kconfig lexer will match Kconfig derivative names now (#1458)
+- Improved HTML formatter output (#1500)
+- ``.markdown`` is now recognized as an extension for Markdown files (#1476)
+- Fixed line number colors for Solarized (#1477, #1356)
+- Improvements to exception handling (#1478)
+- Improvements to tests (#1532, #1533, #1539)
+- Various code cleanups (#1536, #1537, #1538)
 
 
 Version 2.6.1
@@ -141,42 +179,43 @@ Version 2.6
 
 - Added lexers:
 
-  * Linux kernel logs (PR#1310)
-  * LLVM MIR (PR#1361)
-  * MiniScript (PR#1397)
-  * Mosel (PR#1287, PR#1326)
-  * Parsing Expression Grammar (PR#1336)
-  * ReasonML (PR#1386)
-  * Ride (PR#1319, PR#1321)
-  * Sieve (PR#1257)
-  * USD (PR#1290)
-  * WebIDL (PR#1309)
+  * Linux kernel logs (#1310)
+  * LLVM MIR (#1361)
+  * MiniScript (#1397)
+  * Mosel (#1287, #1326)
+  * Parsing Expression Grammar (#1336)
+  * ReasonML (#1386)
+  * Ride (#1319, #1321)
+  * Sieve (#1257)
+  * USD (#1290)
+  * WebIDL (#1309)
 
 - Updated lexers:
 
-  * Apache2 (PR#1378)
-  * Chapel (PR#1357)
-  * CSound (PR#1383)
-  * D (PR#1375, PR#1362)
-  * Idris (PR#1360)
-  * Perl6/Raku lexer (PR#1344)
-  * Python3 (PR#1382, PR#1385)
+  * Apache2 (#1378)
+  * Chapel (#1357)
+  * CSound (#1383)
+  * D (#1375, #1362)
+  * Haskell (#1347, #1177)
+  * Idris (#1360)
+  * Perl6/Raku lexer (#1344)
+  * Python3 (#1382, #1385)
   * Rust: Updated lexer to cover more builtins (mostly macros) and miscellaneous
-    new syntax (PR#1320)
-  * SQL: Add temporal support keywords (PR#1402)
+    new syntax (#1320)
+  * SQL: Add temporal support keywords (#1402)
 
 - The 256-color/true-color terminal formatters now support the italic attribute
-  in styles (PR#1288)
-- Support HTTP 2/3 header (PR#1308)
-- Support missing reason in HTTP header (PR#1322)
+  in styles (#1288)
+- Support HTTP 2/3 header (#1308)
+- Support missing reason in HTTP header (#1322)
 - Boogie/Silver: support line continuations and triggers, move contract keywords
-  to separate category (PR#1299)
-- GAS: support C-style comments (PR#1291)
-- Fix names in S lexer (PR#1330, PR#1333)
-- Fix numeric literals in Ada (PR#1334)
-- Recognize ``.mjs`` files as Javascript (PR#1392)
-- Recognize ``.eex`` files as Elixir (PR#1387)
-- Fix ``re.MULTILINE`` usage (PR#1388)
+  to separate category (#1299)
+- GAS: support C-style comments (#1291)
+- Fix names in S lexer (#1330, #1333)
+- Fix numeric literals in Ada (#1334)
+- Recognize ``.mjs`` files as Javascript (#1392)
+- Recognize ``.eex`` files as Elixir (#1387)
+- Fix ``re.MULTILINE`` usage (#1388)
 - Recognize ``pipenv`` and ``poetry`` dependency & lock files (PR#1376)
 - Improve font search on Windows (#1247)
 - Remove unused script block (#1401)
diff --git a/LICENSE b/LICENSE
index 085810ec6dd37832b6ffd975740f7a09ced8a496..e1b15663d9577517ee7a88524eac0db62e727b18 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2006-2020 by the respective authors (see AUTHORS file).
+Copyright (c) 2006-2021 by the respective authors (see AUTHORS file).
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
index 1f8c383d3b0cc49936d85dd5f9df8ef50727c368..be3e12a9cd96633c79e24284c7b33781ce216967 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
 #
 # Combines scripts for common tasks.
 #
-# :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+# :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
 # :license: BSD, see LICENSE for details.
 #
 
index 00b28af47c6167f555607095a49d5349199d406d..0802d45ba561be48b3a3b7b1e2b95cb8d27289d9 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: Pygments
-Version: 2.7.3
+Version: 2.7.4
 Summary: Pygments is a syntax highlighting package written in Python.
 Home-page: https://pygments.org/
 Author: Georg Brandl
@@ -22,7 +22,7 @@ Description:
         * a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences
         * it is usable as a command-line tool and as a library
         
-        :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+        :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
         :license: BSD, see LICENSE for details.
         
 Keywords: syntax highlighting
index 00b28af47c6167f555607095a49d5349199d406d..0802d45ba561be48b3a3b7b1e2b95cb8d27289d9 100644 (file)
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: Pygments
-Version: 2.7.3
+Version: 2.7.4
 Summary: Pygments is a syntax highlighting package written in Python.
 Home-page: https://pygments.org/
 Author: Georg Brandl
@@ -22,7 +22,7 @@ Description:
         * a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences
         * it is usable as a command-line tool and as a library
         
-        :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+        :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
         :license: BSD, see LICENSE for details.
         
 Keywords: syntax highlighting
index 166b1b1888fe8ffc1238b781e4d291ac60bf0e7a..7c8029e3c469d43d1ed498665262aa7d58af3a56 100644 (file)
@@ -322,6 +322,7 @@ tests/test_cfm.py
 tests/test_clexer.py
 tests/test_cmdline.py
 tests/test_coffeescript.py
+tests/test_coq.py
 tests/test_cpp.py
 tests/test_crystal.py
 tests/test_csound.py
@@ -337,6 +338,7 @@ tests/test_html_formatter_linenos_elements.py
 tests/test_html_lexer.py
 tests/test_idris.py
 tests/test_inherit.py
+tests/test_ini_lexer.py
 tests/test_irc_formatter.py
 tests/test_java.py
 tests/test_javascript.py
index 9344291d12831fbd704f8319d2abbc99b96e16d9..90ceee2bc1574bfc9862f079621e5d13c483310b 100644 (file)
     min-height: 150px;
 }
 
+#hlcode {
+    padding: 10px 0;
+}
+
 #hlcode pre {
     background-color: transparent;
     border-radius: 0;
 }
 
+#hlcodedl {
+    text-align: right;
+    padding: 0 15px;
+}
+
 #loading {
     position: absolute;
     top: 0;
index f538492e3490ff0a2e1c689ebd8a7eab562e60c0..1fc7a081977276338aea1c45b01d9ae78d564f94 100644 (file)
@@ -3,13 +3,21 @@ languagePluginLoader.then(() => {
     pyodide.loadPackage('Pygments').then(() => {
         pyodide.runPython('import pygments.lexers, pygments.formatters.html, pygments.styles');
 
+        let qvars = getQueryVariables();
+
         var lexerlist = pyodide.runPython('list(pygments.lexers.get_all_lexers())');
         var sel = document.getElementById("lang");
         for (lex of lexerlist) {
+            if (lex[1][0] === undefined) {
+                continue;
+            }
             var opt = document.createElement("option");
             opt.text = lex[0];
             opt.value = lex[1][0];
             sel.add(opt);
+            if (lex[1].indexOf(qvars['lexer']) >= 0) {
+                opt.selected = true;
+            }
         }
 
         var stylelist = pyodide.runPython('list(pygments.styles.get_all_styles())');
@@ -25,9 +33,25 @@ languagePluginLoader.then(() => {
 
         document.getElementById("hlbtn").disabled = false;
         document.getElementById("loading").style.display = "none";
+
+        if (qvars['code'] !== undefined) {
+            document.getElementById("code").value = qvars['code'];
+            highlight();
+        }
     });
 });
 
+function getQueryVariables() {
+    var query = window.location.search.substring(1);
+    var vars = query.split('&');
+    var var_obj = {};
+    for (var i = 0; i < vars.length; i++) {
+        var pair = vars[i].split('=');
+       var_obj[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
+    }
+    return var_obj;
+}
+
 function new_file() {
     pyodide.globals['fname'] = document.getElementById("file").files[0].name;
     var alias = pyodide.runPython('pygments.lexers.find_lexer_class_for_filename(fname).aliases[0]');
@@ -66,10 +90,16 @@ function highlight() {
         file.arrayBuffer().then(function(buf) {
             pyodide.globals['code_mem'] = buf;
             pyodide.runPython('code = bytes(code_mem)');
+            document.getElementById("copy_btn").style.display = "none";
             highlight_now();
         });
     } else {
-        pyodide.globals['code'] = document.getElementById("code").value;
+        var code = document.getElementById("code").value;
+        pyodide.globals['code'] = code;
+        var link = document.location.origin + document.location.pathname +
+            "?lexer=" + encodeURIComponent(alias) + "&code=" + encodeURIComponent(code);
+        document.getElementById("copy_field").value = link;
+        document.getElementById("copy_btn").style.display = "";
         highlight_now();
     }
 }
@@ -81,6 +111,13 @@ function highlight_now() {
     document.getElementById("hlcodedl").style.display = "block";
 }
 
+function copy_link() {
+    var copy_field = document.getElementById("copy_field");
+    copy_field.select();
+    copy_field.setSelectionRange(0, 99999);
+    document.execCommand("copy");
+}
+
 function download_code() {
     var filename = "highlighted.html";
     var hlcode = document.getElementById("hlcode").innerHTML;
index 6a60df7d1ac2a48016ea82fba5d935954512489d..912ab3d1917d84a1df9c9f22fbd16254a25d559d 100644 (file)
@@ -48,6 +48,9 @@
 <div id="hlcode"></div>
 
 <div id="hlcodedl" style="display: none">
+    <input type="text" id="copy_field" style="opacity: 0">
     <input type="button" value="Download" onclick="download_code()">
+    &nbsp;&nbsp;&nbsp;
+    <input type="button" value="Copy link" onclick="copy_link()" id="copy_btn">
 </div>
 {% endblock %}
index 909fbf9e4155c16a79748dfd70bba9dc2d27d125..7523e918c6c78dc70524e3eee309364d7a175a96 100644 (file)
@@ -82,7 +82,7 @@
 
 {% block footer %}
     <div class="footer" role="contentinfo">
-      &copy; Copyright 2006-2020, Georg Brandl and Pygments contributors.
+      &copy; Copyright 2006-2021, Georg Brandl and Pygments contributors.
       Created using <a href="https://sphinx-doc.org/">Sphinx</a> {{
       sphinx_version }}. <br/>
       Pygments logo created by <a href="https://joelunger.com">Joel Unger</a>.
index 8f6e60c726fcff16146a5499c567cd9df91d4fc7..d95f8c68111017c8880c90100ec0f328ea18cd9f 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- pygments14 theme.  Heavily copied from sphinx13.
  *
- * :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+ * :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
index 1a08e0d6e4019c4e9b3357a87968ad54734d1635..f4d74846186299549e4333725a9c7c79f669d4f6 100644 (file)
@@ -35,7 +35,7 @@ master_doc = 'index'
 
 # General information about the project.
 project = 'Pygments'
-copyright = '2006-2020, Georg Brandl and Pygments contributors'
+copyright = '2006-2021, Georg Brandl and Pygments contributors'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
index 5f266ac5227600401f723c666f773a8b8ae5aa2c..2a030b7be26589e696da781bf9b63698e2d56eb1 100644 (file)
@@ -34,7 +34,7 @@ Wrappers for other languages
 These libraries provide Pygments highlighting for users of other languages
 than Python:
 
-* `pygments.rb <https://github.com/tmm1/pygments.rb>`_, a pygments wrapper for Ruby
+* `pygments.rb <https://github.com/pygments/pygments.rb>`_, a pygments wrapper for Ruby
 * `Clygments <https://github.com/bfontaine/clygments>`_, a pygments wrapper for
   Clojure
 * `PHPygments <https://github.com/capynet/PHPygments>`_, a pygments wrapper for PHP
index 69ad393ba6f3fd5f90bf94f3a3801f5928c97658..2e133b02a881198cd5b72af21738253e7251e00e 100644 (file)
@@ -128,7 +128,7 @@ This is an (incomplete) list of projects and sites known to use the Pygments hig
 * `patx.me <http://patx.me/paste>`_, a pastebin
 * `Fluidic <https://github.com/richsmith/fluidic>`_, an experiment in
   integrating shells with a GUI
-* `pygments.rb <https://github.com/tmm1/pygments.rb>`_, a pygments wrapper for Ruby
+* `pygments.rb <https://github.com/pygments/pygments.rb>`_, a pygments wrapper for Ruby
 * `Clygments <https://github.com/bfontaine/clygments>`_, a pygments wrapper for
   Clojure
 * `PHPygments <https://github.com/capynet/PHPygments>`_, a pygments wrapper for PHP
index e538aadbaf2407dd3cbbbca8536310b706e0bb55..4495943a7a0fbfcc33a2496e78ebf28d6ab715dc 100644 (file)
@@ -12,7 +12,6 @@ source code.  Highlights are:
 * a number of output formats is available, among them HTML, RTF, LaTeX and ANSI
   sequences
 * it is usable as a command-line tool and as a library
-* ... and it highlights even Perl 6!
 
 Read more in the :doc:`FAQ list <faq>` or the :doc:`documentation <docs/index>`,
 or `download the latest release <https://pypi.python.org/pypi/Pygments>`_.
index ffd538dffdcbd9cef5a5b93deed039e7d5264ee2..8d1afbbb8800cf06b255b1143d6c3bcf541b5b4a 100644 (file)
@@ -22,7 +22,7 @@
 
     .. _Markdown: https://pypi.python.org/pypi/Markdown
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 5600fea49f4530520d4bc0063aaae56064ff7188..b8d62f401c28d01a87cd2138be86df7e7087f942 100644 (file)
@@ -31,7 +31,7 @@
     If you do not want to do that and are willing to accept larger HTML
     output, you can set the INLINESTYLES option below to True.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 937c37659da67a2ce34f052c6dd6525c3a86488a..904625611f639ec3dd6d35ed7b5bab2642c440fd 100644 (file)
@@ -31,7 +31,7 @@
     .. _directive documentation:
        https://docutils.sourceforge.io/docs/howto/rst-directives.html
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e5a278395effe96809d64a45621b6c0330c86987..86523355d48110b037022ffc0a561039426490bf 100644 (file)
     .. _Pygments master branch:
        https://github.com/pygments/pygments/archive/master.zip#egg=Pygments-dev
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 import sys
 from io import StringIO, BytesIO
 
-__version__ = '2.7.3'
+__version__ = '2.7.4'
 __docformat__ = 'restructuredtext'
 
 __all__ = ['lex', 'format', 'highlight']
index 8d2ea9e3df004193d0f1faf00f56bd7f8ae7e640..3368bdf39e84a285d9ef8e8dfe773de9aa534ca7 100644 (file)
@@ -5,7 +5,7 @@
 
     Main entry point for ``python -m pygments``.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 457af34d42e3e4b4bc4b690171f6c26c542d5835..6a8a307ad7b00f8b0ac9250ba563e574e5b543fe 100644 (file)
@@ -5,7 +5,7 @@
 
     Command line interface.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -232,7 +232,7 @@ def main_inner(popts, args, usage):
         return 0
 
     if opts.pop('-V', None) is not None:
-        print('Pygments version %s, (c) 2006-2020 by Georg Brandl.' % __version__)
+        print('Pygments version %s, (c) 2006-2021 by Georg Brandl.' % __version__)
         return 0
 
     # handle ``pygmentize -L``
index 5fdc2cf70d19ec64700d87550e5660b1f7b9d19e..6e1d13e7e3d0291fc538df6ff86140ed2d6fd60d 100644 (file)
@@ -5,7 +5,7 @@
 
     Format colored console output.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d6a452db79faaa78ff50d11a9a98460237a0fbd5..36dbc7c836e9e694f28281efd5d3a882716f40aa 100644 (file)
@@ -5,7 +5,7 @@
 
     Module that implements the default filter.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 37f87722221102545a702480be11ced9d34eb8ee..c1d0c8882fa937003a99cd9bc79c7ac142bfddbf 100644 (file)
@@ -6,7 +6,7 @@
     Module containing filter lookup functions and default
     filters.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d5da54f12f904c04c3a6abf4ab72c09bff05b67d..8af5805e352eb83a0b8f88472f383f7bd0613e98 100644 (file)
@@ -5,7 +5,7 @@
 
     Base formatter class.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ce11cf5b644b24850f36a6e258c68825bcaa219e..e5e693037f11fbcec7b3154e15010e4b17fe83ec 100644 (file)
@@ -5,7 +5,7 @@
 
     Pygments formatters.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 984c1ec8b2c2edaddc28fb2b16110ea2be1b9457..69657f9e727e06d1ce1648f38e639086738597f6 100755 (executable)
@@ -9,7 +9,7 @@
 
     Do not alter the FORMATTERS dictionary by hand.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index dd949666c5226bae8f8e0bbd5eb6a405e15abf9b..999135838aa09307beee2811e31aa31abdeb60d0 100644 (file)
@@ -5,7 +5,7 @@
 
     BBcode formatter.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e49b88cd6f76483c4ed366a7407c54f7f4f885dc..08aaa85fc15653c37c2006a503672f7eee9b0daf 100644 (file)
@@ -5,7 +5,7 @@
 
     Formatter for HTML output.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -63,7 +63,7 @@ def _get_ttype_class(ttype):
 CSSFILE_TEMPLATE = '''\
 /*
 generated by Pygments <https://pygments.org/>
-Copyright 2006-2020 by the Pygments team.
+Copyright 2006-2021 by the Pygments team.
 Licensed under the BSD license, see LICENSE for details.
 */
 %(styledefs)s
@@ -74,7 +74,7 @@ DOC_HEADER = '''\
    "http://www.w3.org/TR/html4/strict.dtd">
 <!--
 generated by Pygments <https://pygments.org/>
-Copyright 2006-2020 by the Pygments team.
+Copyright 2006-2021 by the Pygments team.
 Licensed under the BSD license, see LICENSE for details.
 -->
 <html>
@@ -457,20 +457,20 @@ class HtmlFormatter(Formatter):
         return ''
 
     def _get_css_classes(self, ttype):
-        """Generate the opening <span> tag for a given token type using CSS classes."""
+        """Return the CSS classes of this token type prefixed with the classprefix option."""
         cls = self._get_css_class(ttype)
         while ttype not in STANDARD_TYPES:
             ttype = ttype.parent
             cls = self._get_css_class(ttype) + ' ' + cls
-        return cls and '<span class="%s">' % cls or ''
+        return cls or ''
 
     def _get_css_inline_styles(self, ttype):
-        """Generate the opening <span> tag for a given token type using inline CSS styles."""
+        """Return the inline CSS styles for this token type."""
         cclass = self.ttype2class.get(ttype)
         while cclass is None:
             ttype = ttype.parent
             cclass = self.ttype2class.get(ttype)
-        return cclass and '<span style="%s">' % self.class2style[cclass][0] or ''
+        return cclass or ''
 
     def _create_stylesheet(self):
         t2c = self.ttype2class = {Token: ''}
@@ -816,9 +816,12 @@ class HtmlFormatter(Formatter):
                 cspan = self.span_element_openers[ttype]
             except KeyError:
                 if nocls:
-                    cspan = self.span_element_openers[ttype] = self._get_css_inline_styles(ttype)
+                    css_style = self._get_css_inline_styles(ttype)
+                    cspan = css_style and '<span style="%s">' % self.class2style[css_style][0] or ''
                 else:
-                    cspan = self.span_element_openers[ttype] = self._get_css_classes(ttype)
+                    css_class = self._get_css_classes(ttype)
+                    cspan = css_class and '<span class="%s">' % css_class or ''
+                self.span_element_openers[ttype] = cspan
 
             parts = self._translate_parts(value)
 
index ef973617f6d2ab58988f97639cc8b005ff50edd7..5568750598594ab3a6d96cb6f094cb9417a87660 100644 (file)
@@ -5,7 +5,7 @@
 
     Formatter for Pixmap output.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index c54df867dd15028903fb5b1316fdc274829b2595..e4e59f2ac4a579c8b23ebda6d644153eb7c3da3a 100644 (file)
@@ -5,7 +5,7 @@
 
     Formatter for IRC output
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 66935588f8f7cb30df72549f40e3885888b30018..6ebe935f06a8a20c7f9b43c647b05ebdc14825c5 100644 (file)
@@ -5,7 +5,7 @@
 
     Formatter for LaTeX fancyvrb output.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index a86e81e0d00e1f546c40d8662267c829abae98c5..d7c6803c486bfafaac84a076979fe218536711dd 100644 (file)
@@ -5,7 +5,7 @@
 
     Other formatters: NullFormatter, RawTokenFormatter.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 34393d47a3cd558f1e4b12d3ed24aa41d62f9e67..890de2a23ffc33a109cb4e8ab31ba326c33bbc16 100644 (file)
@@ -5,7 +5,7 @@
 
     A formatter that generates RTF files.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d7f1d570fdea05ca626264ac13a7f72381c484d3..1ec703ee5d41b6f88899230ca4ac3b9f29a78729 100644 (file)
@@ -5,7 +5,7 @@
 
     Formatter for SVG output.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 747dfc389b987753768617cf29e8f3f40bc47fb9..0499b6fa754953f00d6765f56496898c2d8e8fbb 100644 (file)
@@ -5,7 +5,7 @@
 
     Formatter for terminal output with ANSI sequences.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 356d1f5b138e25bd5a91dea181e2376618c8ce8a..c0c46476cdf6e181e1eb2d4fba42bee92e96b9a3 100644 (file)
@@ -11,7 +11,7 @@
 
     Formatter version 1.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 804aafe013e466290fb7f88edb0c62d5ecec718c..671c117b653fb20f1927fe168a44656abe0d0a2d 100644 (file)
@@ -5,7 +5,7 @@
 
     Base lexer classes.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -794,8 +794,9 @@ def do_insertions(insertions, tokens):
         oldi = 0
         while insleft and i + len(v) >= index:
             tmpval = v[oldi:index - i]
-            yield realpos, t, tmpval
-            realpos += len(tmpval)
+            if tmpval:
+                yield realpos, t, tmpval
+                realpos += len(tmpval)
             for it_index, it_token, it_value in itokens:
                 yield realpos, it_token, it_value
                 realpos += len(it_value)
@@ -805,8 +806,9 @@ def do_insertions(insertions, tokens):
             except StopIteration:
                 insleft = False
                 break  # not strictly necessary
-        yield realpos, t, v[oldi:]
-        realpos += len(v) - oldi
+        if oldi < len(v):
+            yield realpos, t, v[oldi:]
+            realpos += len(v) - oldi
 
     # leftover tokens
     while insleft:
index 12e6ab1977e5167aa18430fbd85a759c4646b345..5a3f5bbd990ed3a6e4fd4b9f89d84af432f6a812 100644 (file)
@@ -5,7 +5,7 @@
 
     Pygments lexers.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 51ca506866ec751c8db4357a1947550a6422e354..884463afb1f236cbc1e9fef5e9859554027f3128 100644 (file)
@@ -10,7 +10,7 @@
     TODO: perl/python script in Asymptote SVN similar to asy-list.pl but only
     for function and variable names.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d09ae0fe0cd10606e3bd1172304b4b855240cfe0..ef4612eee9dd3713355fb13d6cbd2a1480257168 100644 (file)
@@ -5,7 +5,7 @@
 
     ANSI Common Lisp builtins.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index cbd26d9d50812990178749d18e9c05d3d6262e20..a5422775844cf10876a70bc98ba8135ce568ad5a 100644 (file)
@@ -8,7 +8,7 @@
 
     File may be also used as standalone generator for aboves.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 98c5a3a96bff0857fbd160a3a7582753ab63b8f1..461a35f297741e15ca2de85823b77d561b83ddbe 100644 (file)
@@ -3,7 +3,7 @@
     pygments.lexers._csound_builtins
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 06261279d6589414b18ce280eca12b987de6e581..2d37252d20ff1de14019dea0a843d079b2b23997 100644 (file)
@@ -5,7 +5,7 @@
 
     Built-in Lasso types, traits, methods, and members.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index c1bc0d71743eaa9a07f0b79dba4cb8008314e801..a9f4c5cf11ceca5a8023d63a1e9b462a5cef6187 100644 (file)
@@ -9,7 +9,7 @@
 
     Do not edit the MODULES dict by hand.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index f5c90f70d6c50fbf93dd69f845507be347892e52..997cdc28f6c4a03b87d5de0417cbc44df5fedd63 100644 (file)
@@ -5,7 +5,7 @@
 
     Builtins for the MqlLexer.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 types = (
index 1a8da5c7b86f75a470eaeef48173914f01344da0..65a73ada05380ca24cbe9e1f07c663141808a31a 100644 (file)
@@ -5,7 +5,7 @@
 
     Builtin list for the OpenEdgeLexer.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ad54492f25ced535dbe7af552d6a24ed1122fc06..783ba4ad454f135ab4a8a0cc1944bdabfb8addfc 100644 (file)
@@ -12,7 +12,7 @@
              internet connection. don't run that at home, use
              a server ;-)
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3fe40a6b4f5e84b266cd5d7383b3bc6a0987ab16..f5e8f34950da3dadf39d83cd89ddac49b112cf34 100644 (file)
@@ -5,7 +5,7 @@
 
     Self-updating data files for PostgreSQL lexer.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3f2edc1d46ef71b33b8b4f1c797d54569402dcc5..1393412b48c880ac2c91d2946292d645dd0f7a62 100644 (file)
@@ -5,7 +5,7 @@
 
     Builtin list for the ScilabLexer.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index cd6264e2b1b5c9f58a23f7d4ff8177f7adb650ee..27b11c3d9426ef7a8ba110439eb3e59f69c0c724 100644 (file)
@@ -8,7 +8,7 @@
 
     Do not edit the FUNCTIONS list by hand.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index eaaec9cc5cc641c8b85f9032d5583feb8d023278..c6955394090c10786f5f73b3bbeb76fc37f2c782 100644 (file)
@@ -6,7 +6,7 @@
     This file contains the names of functions for Stan used by
     ``pygments.lexers.math.StanLexer. This is for Stan language version 2.17.0.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 575249ef0baa0843128964d2faf50050d4c11b65..2e43090608837d38348c0b862d247cd22c85509d 100644 (file)
@@ -5,7 +5,7 @@
 
     Builtins for Stata
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index da184181f9409e56499605797fddff6c1d1c1e6e..ebf1edc179c90ed2ed2ecc360397b0d7ce036926 100644 (file)
@@ -5,7 +5,7 @@
 
     These are manually translated lists from https://msdn.microsoft.com.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index edcbde757275c7efad9fbed03b2a24382001cad2..64e4884c3b5a3c848300fb958a8c67fba4b088a7 100644 (file)
@@ -5,7 +5,7 @@
 
     A collection of known USD-related keywords, attributes, and types.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0fe55b1d036b99e83a9f85a0c3d12ed31ec00ef9..0c19d72008ab34b2ef93a2ca9f917fc5c5470c06 100644 (file)
@@ -6,7 +6,7 @@
     These are manually translated lists from
     http://www.indusoft.com/pdf/VBScript%20Reference.pdf.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3ee1e854d4a893dd4b0d0d864fec248de8acba3a..55941ed6ebdc20bc5fa858a32a81802fb6646486 100644 (file)
@@ -5,7 +5,7 @@
 
     This file is autogenerated by scripts/get_vimkw.py
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 2a085ef7e1a0c78968d512d72d95a5925db81bdd..ef7c585b03ce79b7db432734c60eb99de169f45f 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for ActionScript and MXML.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -37,7 +37,7 @@ class ActionScriptLexer(RegexLexer):
             (r'\s+', Text),
             (r'//.*?\n', Comment.Single),
             (r'/\*.*?\*/', Comment.Multiline),
-            (r'/(\\\\|\\/|[^/\n])*/[gim]*', String.Regex),
+            (r'/(\\\\|\\[^\\]|[^/\\\n])*/[gim]*', String.Regex),
             (r'[~^*!%&<>|+=:;,/?\\-]+', Operator),
             (r'[{}\[\]();.]+', Punctuation),
             (words((
@@ -105,8 +105,8 @@ class ActionScriptLexer(RegexLexer):
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'0x[0-9a-f]+', Number.Hex),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ]
     }
 
@@ -149,7 +149,7 @@ class ActionScript3Lexer(RegexLexer):
              bygroups(Keyword, Text, Keyword.Type, Text, Operator)),
             (r'//.*?\n', Comment.Single),
             (r'/\*.*?\*/', Comment.Multiline),
-            (r'/(\\\\|\\/|[^\n])*/[gisx]*', String.Regex),
+            (r'/(\\\\|\\[^\\]|[^\\\n])*/[gisx]*', String.Regex),
             (r'(\.)(' + identifier + r')', bygroups(Operator, Name.Attribute)),
             (r'(case|default|for|each|in|while|do|break|return|continue|if|else|'
              r'throw|try|catch|with|new|typeof|arguments|instanceof|this|'
@@ -169,8 +169,8 @@ class ActionScript3Lexer(RegexLexer):
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'0x[0-9a-f]+', Number.Hex),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'[~^*!%&<>|+=:;,/?\\{}\[\]().-]+', Operator),
         ],
         'funcparams': [
index e1b8a11ba3ef8b47971e94e25bdcf923c2285ca6..bd71ecd4c0d68a5a25492eb84dded73d6809b572 100644 (file)
@@ -5,7 +5,7 @@
 
     Just export lexer classes previously contained in this module.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index eb363a088621ec72eb0cfe68580e905694716ff7..9fb2287557b4d84800d1b163a108a5893a77e534 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for computer algebra systems.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 82454829ea2dbc4ca6534f9c23f06b8e373c29a6..24e934d15884fc5b7a26129f180d8a103230aa15 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for AmbientTalk language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -44,7 +44,7 @@ class AmbientTalkLexer(RegexLexer):
             (builtin, Name.Builtin),
             (r'(true|false|nil)\b', Keyword.Constant),
             (r'(~|lobby|jlobby|/)\.', Keyword.Constant, 'namespace'),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r'\|', Punctuation, 'arglist'),
             (r'<:|[*^!%&<>+=,./?-]|:=', Operator),
             (r"`[a-zA-Z_]\w*", String.Symbol),
index 652a9419163ba1dda23d3d47a81bbb8612e222a1..6b56673116a59d313afc63990ad5fab4c413f82d 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the AMPL language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 4e2de92c48cf3c79aa2d669db1480266da25d1dc..724f05b622ece33e107ad87343305a0c22c35498 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for APL.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 713970ec2d6c87bb182d760898645f7b847d87d3..26f5ea8c91dab92ad0353330e5d3db8836704333 100644 (file)
@@ -14,7 +14,7 @@
     Contributed by Thomas Beale <https://github.com/wolandscat>,
     <https://bitbucket.org/thomas_beale>.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -58,7 +58,7 @@ class AtomsLexer(RegexLexer):
             (r'P((\d*(\.\d+)?[YyMmWwDd]){1,3}(T(\d*(\.\d+)?[HhMmSs]){,3})?|'
              r'T(\d*(\.\d+)?[HhMmSs]){,3})', Literal.Date),
             (r'[+-]?(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+', Number.Float),
-            (r'[+-]?(\d+)*\.\d+%?', Number.Float),
+            (r'[+-]?\d*\.\d+%?', Number.Float),
             (r'0x[0-9a-fA-F]+', Number.Hex),
             (r'[+-]?\d+%?', Number.Integer),
         ],
index 452a41645a574885a7531c9e63a1ed3c0345114d..65b684f12d044f02b951c03a98e6b4f0b84dd2e3 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Arrow.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index afa60f073b58483d55bbded1fc8f0de7ab716472..94a792c5e0cac61f5ffecd1ec70a78291e300827 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for assembly languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 786f63fb266fbb0c448f82658056b12f9d44e99b..208fb962cd9fe4aced51de5e8dd822a95bd8d91a 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for automation scripting languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d63a13e8b10d962b20011de7c1d8328113452cb4..73437dde4823f1bedc22cfae99885aa648936907 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the BARE schema.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0e46f23bfefb42ce64ec9c8d7fe933d93b4c6c18..cb2d278d2bce889348ef28005ecb11a6593e7335 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for BASIC like languages (other than VB.net).
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e48db1abce0690e8bdb17c578532006e6113ee11..883027288cc4faeb2437e3f6b9e790d9e17b55a6 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for BibTeX bibliography data and styles
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index bbe9dffa96ff6a20eec73d8951d16ff535a82c05..e57b1230244ed13629dbaaa9ef5fa36e32cc906c 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Boa language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -92,9 +92,9 @@ class BoaLexer(RegexLexer):
             (classes, Name.Classes),
             (words(operators), Operator),
             (r'[][(),;{}\\.]', Punctuation),
-            (r'"(\\\\|\\"|[^"])*"', String),
-            (r'`(\\\\|\\`|[^`])*`', String),
-            (words(string_sep), String.Delimeter),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"`(\\\\|\\[^\\]|[^`\\])*`", String.Backtick),
+            (words(string_sep), String.Delimiter),
             (r'[a-zA-Z_]+', Name.Variable),
             (r'[0-9]+', Number.Integer),
             (r'\s+?', Text),  # Whitespace
index cfacf62d5126c8065fc6769bf095a56f7dd8705c..76b8680c43f9c9c0e0b04dcb6052939b55d231d6 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for "business-oriented" languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -478,8 +478,8 @@ class OpenEdgeLexer(RegexLexer):
             (r'(?i)(DEFINE|DEF|DEFI|DEFIN)\b', Keyword.Declaration),
             (types, Keyword.Type),
             (keywords, Name.Builtin),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'[0-9]+', Number.Integer),
             (r'\s+', Text),
index 108091892688b114ba247e3f2e742f101a55e5b7..9d4edc685a5022c69d3f0bd5c4ebbba7b41e5c5e 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for C/C++ languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ab12c733621ed175018b415106525205d8db708d..cd771e88e42252b08dd40c1113fb7002697e1e00 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for other C-like languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0fa21b384694c805b641e1202ff21de52acd029e..2b35c6f047062b6b4b507967b05b0e4018cf15a4 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Cap'n Proto schema language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 48842744274e6ef31814863635a7108117539fbb..06e3245d04b3ac66b5604987547a44e3ff78c0ea 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Chapel language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -88,8 +88,8 @@ class ChapelLexer(RegexLexer):
             (r'[0-9]+', Number.Integer),
 
             # strings
-            (r'"(\\\\|\\"|[^"])*"', String),
-            (r"'(\\\\|\\'|[^'])*'", String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
 
             # tokens
             (r'(=|\+=|-=|\*=|/=|\*\*=|%=|&=|\|=|\^=|&&=|\|\|=|<<=|>>=|'
index b5dba09b63b2dc2b679073f3b737cae2ca853bf5..96b32aea6c610f45a081a1a7d06d3fc4ef3ac4d4 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Clean language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 21f45e573e1abf4725f4eff8968f1b8f04f3b6c7..b8590a96c8f5373b849cf9e00bd0dacb73f6e36b 100644 (file)
@@ -5,7 +5,7 @@
 
     Just export lexer classes previously contained in this module.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index cb20305a72cdb0d5bdebb8dc772f25c5d51ea5f0..8b67ebafd4cbc835d5bd72e92f64315d43b54c88 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for configuration file formats.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -40,7 +40,7 @@ class IniLexer(RegexLexer):
             (r'\s+', Text),
             (r'[;#].*', Comment.Single),
             (r'\[.*?\]$', Keyword),
-            (r'(.*?)([ \t]*)(=)([ \t]*)(.*(?:\n[ \t].+)*)',
+            (r'(.*?)([ \t]*)(=)([ \t]*)([^\t\n]*)',
              bygroups(Name.Attribute, Text, Operator, Text, String)),
             # standalone option, supported by some INI parsers
             (r'(.+?)$', Name.Attribute),
@@ -302,8 +302,10 @@ class ApacheConfLexer(RegexLexer):
         'root': [
             (r'\s+', Text),
             (r'#(.*\\\n)+.*$|(#.*?)$', Comment),
-            (r'(<[^\s>]+)(?:(\s+)(.*))?(>)',
+            (r'(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)',
              bygroups(Name.Tag, Text, String, Name.Tag)),
+            (r'(</[^\s>]+)(>)',
+             bygroups(Name.Tag, Name.Tag)),
             (r'[a-z]\w*', Name.Builtin, 'value'),
             (r'\.+', Text),
         ],
@@ -909,7 +911,7 @@ class TOMLLexer(RegexLexer):
             (r'\s+', Text),
             (r'#.*?$', Comment.Single),
             # Basic string
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # Literal string
             (r'\'\'\'(.*)\'\'\'', String),
             (r'\'[^\']*\'', String),
index 07639ee42257d492573e4d77c6ca9a7a2f4ae607..22551d0cf284f3f832fa97b0fbebeb3eb25897a0 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for misc console output.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index cf051536c934a311f72c2ed7ea06dc02ebfec4ca..4151108dc0b390bbe1baa9878e11e2fed1d96e86 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Crystal.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -57,8 +57,11 @@ class CrystalLexer(ExtendedRegexLexer):
 
         ctx.pos = match.start(5)
         ctx.end = match.end(5)
-        # this may find other heredocs
-        yield from self.get_tokens_unprocessed(context=ctx)
+        # this may find other heredocs, so limit the recursion depth
+        if len(heredocstack) < 100:
+            yield from self.get_tokens_unprocessed(context=ctx)
+        else:
+            yield ctx.pos, String.Heredoc, match.group(5)
         ctx.pos = match.end()
 
         if outermost:
@@ -86,27 +89,11 @@ class CrystalLexer(ExtendedRegexLexer):
             del heredocstack[:]
 
     def gen_crystalstrings_rules():
-        def intp_regex_callback(self, match, ctx):
-            yield match.start(1), String.Regex, match.group(1)  # begin
-            nctx = LexerContext(match.group(3), 0, ['interpolated-regex'])
-            for i, t, v in self.get_tokens_unprocessed(context=nctx):
-                yield match.start(3)+i, t, v
-            yield match.start(4), String.Regex, match.group(4)  # end[imsx]*
-            ctx.pos = match.end()
-
-        def intp_string_callback(self, match, ctx):
-            yield match.start(1), String.Other, match.group(1)
-            nctx = LexerContext(match.group(3), 0, ['interpolated-string'])
-            for i, t, v in self.get_tokens_unprocessed(context=nctx):
-                yield match.start(3)+i, t, v
-            yield match.start(4), String.Other, match.group(4)  # end
-            ctx.pos = match.end()
-
         states = {}
         states['strings'] = [
-            (r'\:@{0,2}[a-zA-Z_]\w*[!?]?', String.Symbol),
-            (words(CRYSTAL_OPERATORS, prefix=r'\:@{0,2}'), String.Symbol),
-            (r":'(\\\\|\\'|[^'])*'", String.Symbol),
+            (r'\:\w+[!?]?', String.Symbol),
+            (words(CRYSTAL_OPERATORS, prefix=r'\:'), String.Symbol),
+            (r":'(\\\\|\\[^\\]|[^'\\])*'", String.Symbol),
             # This allows arbitrary text after '\ for simplicity
             (r"'(\\\\|\\'|[^']|\\[^'\\]+)'", String.Char),
             (r':"', String.Symbol, 'simple-sym'),
@@ -127,35 +114,42 @@ class CrystalLexer(ExtendedRegexLexer):
                 (end, ttype, '#pop'),
             ]
 
-        # braced quoted strings
+        # https://crystal-lang.org/docs/syntax_and_semantics/literals/string.html#percent-string-literals
         for lbrace, rbrace, bracecc, name in \
                 ('\\{', '\\}', '{}', 'cb'), \
                 ('\\[', '\\]', '\\[\\]', 'sb'), \
                 ('\\(', '\\)', '()', 'pa'), \
-                ('<', '>', '<>', 'ab'):
+                ('<', '>', '<>', 'ab'), \
+                ('\\|', '\\|', '\\|', 'pi'):
             states[name+'-intp-string'] = [
                 (r'\\' + lbrace, String.Other),
+            ] + (lbrace != rbrace) * [
                 (lbrace, String.Other, '#push'),
+            ] + [
                 (rbrace, String.Other, '#pop'),
                 include('string-intp-escaped'),
                 (r'[\\#' + bracecc + ']', String.Other),
                 (r'[^\\#' + bracecc + ']+', String.Other),
             ]
-            states['strings'].append((r'%' + lbrace, String.Other,
+            states['strings'].append((r'%Q?' + lbrace, String.Other,
                                       name+'-intp-string'))
             states[name+'-string'] = [
                 (r'\\[\\' + bracecc + ']', String.Other),
+            ] + (lbrace != rbrace) * [
                 (lbrace, String.Other, '#push'),
+            ] + [
                 (rbrace, String.Other, '#pop'),
                 (r'[\\#' + bracecc + ']', String.Other),
                 (r'[^\\#' + bracecc + ']+', String.Other),
             ]
-            # http://crystal-lang.org/docs/syntax_and_semantics/literals/array.html
-            states['strings'].append((r'%[wi]' + lbrace, String.Other,
+            # https://crystal-lang.org/docs/syntax_and_semantics/literals/array.html#percent-array-literals
+            states['strings'].append((r'%[qwi]' + lbrace, String.Other,
                                       name+'-string'))
             states[name+'-regex'] = [
                 (r'\\[\\' + bracecc + ']', String.Regex),
+            ] + (lbrace != rbrace) * [
                 (lbrace, String.Regex, '#push'),
+            ] + [
                 (rbrace + '[imsx]*', String.Regex, '#pop'),
                 include('string-intp'),
                 (r'[\\#' + bracecc + ']', String.Regex),
@@ -164,27 +158,6 @@ class CrystalLexer(ExtendedRegexLexer):
             states['strings'].append((r'%r' + lbrace, String.Regex,
                                       name+'-regex'))
 
-        # these must come after %<brace>!
-        states['strings'] += [
-            # %r regex
-            (r'(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[imsx]*)',
-             intp_regex_callback),
-            # regular fancy strings with qsw
-            (r'(%[wi]([\W_]))((?:\\\2|(?!\2).)*)(\2)',
-             intp_string_callback),
-            # special forms of fancy strings after operators or
-            # in method calls with braces
-            (r'(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)',
-             bygroups(Text, String.Other, None)),
-            # and because of fixed width lookbehinds the whole thing a
-            # second time for line startings...
-            (r'^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)',
-             bygroups(Text, String.Other, None)),
-            # all regular fancy strings without qsw
-            (r'(%([\[{(<]))((?:\\\2|(?!\2).)*)(\2)',
-             intp_string_callback),
-        ]
-
         return states
 
     tokens = {
@@ -192,10 +165,16 @@ class CrystalLexer(ExtendedRegexLexer):
             (r'#.*?$', Comment.Single),
             # keywords
             (words('''
-                abstract asm as begin break case do else elsif end ensure extend ifdef if
-                include instance_sizeof next of pointerof private protected rescue return
-                require sizeof super then typeof unless until when while with yield
+                abstract asm begin break case do else elsif end ensure extend if in
+                include next of private protected require rescue return select self super
+                then unless until when while with yield
             '''.split(), suffix=r'\b'), Keyword),
+            (words('''
+                previous_def forall out uninitialized __DIR__ __FILE__ __LINE__
+                __END_LINE__
+            '''.split(), prefix=r'(?<!\.)', suffix=r'\b'), Keyword.Pseudo),
+            # https://crystal-lang.org/docs/syntax_and_semantics/is_a.html
+            (r'\.(is_a\?|nil\?|responds_to\?|as\?|as\b)', Keyword.Pseudo),
             (words(['true', 'false', 'nil'], suffix=r'\b'), Keyword.Constant),
             # start of function, class and module names
             (r'(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)',
@@ -203,29 +182,23 @@ class CrystalLexer(ExtendedRegexLexer):
             (r'(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)',
              bygroups(Keyword, Text, Name.Namespace), 'funcname'),
             (r'def(?=[*%&^`~+-/\[<>=])', Keyword, 'funcname'),
-            (r'(class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)',
+            (r'(annotation|class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)',
              bygroups(Keyword, Text, Name.Namespace), 'classname'),
-            (r'(self|out|uninitialized)\b|(is_a|responds_to)\?', Keyword.Pseudo),
-            # macros
+            # https://crystal-lang.org/api/toplevel.html
             (words('''
-                debugger record pp assert_responds_to spawn parallel
-                getter setter property delegate def_hash def_equals def_equals_and_hash
-                forward_missing_to
-            '''.split(), suffix=r'\b'), Name.Builtin.Pseudo),
-            (r'getter[!?]|property[!?]|__(DIR|FILE|LINE)__\b', Name.Builtin.Pseudo),
+                instance_sizeof offsetof pointerof sizeof typeof
+            '''.split(), prefix=r'(?<!\.)', suffix=r'\b'), Keyword.Pseudo),
+            # macros
+            (r'(?<!\.)(debugger\b|p!|pp!|record\b|spawn\b)', Name.Builtin.Pseudo),
             # builtins
-            # http://crystal-lang.org/api/toplevel.html
             (words('''
-                Object Value Struct Reference Proc Class Nil Symbol Enum Void
-                Bool Number Int Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64
-                Float Float32 Float64 Char String
-                Pointer Slice Range Exception Regex
-                Mutex StaticArray Array Hash Set Tuple Deque Box Process File
-                Dir Time Channel Concurrent Scheduler
-                abort at_exit caller delay exit fork future get_stack_top gets
-                lazy loop main p print printf puts
-                raise rand read_line sleep sprintf system with_color
+                abort at_exit caller exit gets loop main p pp print printf puts
+                raise rand read_line sleep spawn sprintf system
             '''.split(), prefix=r'(?<!\.)', suffix=r'\b'), Name.Builtin),
+            # https://crystal-lang.org/api/Object.html#macro-summary
+            (r'(?<!\.)(((class_)?((getter|property)\b[!?]?|setter\b))|'
+             r'(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\b)',
+             Name.Builtin.Pseudo),
             # normal heredocs
             (r'(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)',
              heredoc_callback),
@@ -297,18 +270,18 @@ class CrystalLexer(ExtendedRegexLexer):
             (r'\$-[0adFiIlpvw]', Name.Variable.Global),
             (r'::', Operator),
             include('strings'),
-            # chars
+            # https://crystal-lang.org/reference/syntax_and_semantics/literals/char.html
             (r'\?(\\[MC]-)*'  # modifiers
-             r'(\\([\\befnrtv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)'
+             r'(\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})|\S)'
              r'(?!\w)',
              String.Char),
-            (r'[A-Z][A-Z_]+\b', Name.Constant),
+            (r'[A-Z][A-Z_]+\b(?!::|\.)', Name.Constant),
             # macro expansion
             (r'\{%', String.Interpol, 'in-macro-control'),
             (r'\{\{', String.Interpol, 'in-macro-expr'),
-            # attributes
-            (r'(@\[)(\s*)([A-Z]\w*)',
-             bygroups(Operator, Text, Name.Decorator), 'in-attr'),
+            # annotations
+            (r'(@\[)(\s*)([A-Z]\w*(::[A-Z]\w*)*)',
+             bygroups(Operator, Text, Name.Decorator), 'in-annot'),
             # this is needed because Crystal attributes can look
             # like keywords (class) or like this: ` ?!?
             (words(CRYSTAL_OPERATORS, prefix=r'(\.|::)'),
@@ -345,7 +318,9 @@ class CrystalLexer(ExtendedRegexLexer):
             (r'#\{', String.Interpol, 'in-intp'),
         ],
         'string-escaped': [
-            (r'\\([\\befnstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})', String.Escape)
+            # https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html
+            (r'\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})',
+             String.Escape)
         ],
         'string-intp-escaped': [
             include('string-intp'),
@@ -375,7 +350,7 @@ class CrystalLexer(ExtendedRegexLexer):
         'in-macro-control': [
             (r'\{%', String.Interpol, '#push'),
             (r'%\}', String.Interpol, '#pop'),
-            (r'for\b|in\b', Keyword),
+            (r'(for|verbatim)\b', Keyword),
             include('root'),
         ],
         'in-macro-expr': [
@@ -383,7 +358,7 @@ class CrystalLexer(ExtendedRegexLexer):
             (r'\}\}', String.Interpol, '#pop'),
             include('root'),
         ],
-        'in-attr': [
+        'in-annot': [
             (r'\[', Operator, '#push'),
             (r'\]', Operator, '#pop'),
             include('root'),
index 831f0f71dee8db0efaf010ab69154b7e7d2010d3..0aafda7f73b8f057f072e3495dabc4e37d9f697b 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Csound languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0bc7e159d9ade3b8a97c8f2727035b3fcd659613..9bcea4e21a575c78826a5cfaa1292cb1acd71873 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for CSS and related stylesheet formats.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -289,8 +289,8 @@ class CssLexer(RegexLexer):
             (r'(@)([\w-]+)', bygroups(Punctuation, Keyword), 'atrule'),
             (r'[\w-]+', Name.Tag),
             (r'[~^*!%&$\[\]()<>|+=@:;,./?-]', Operator),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single)
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ],
         'atrule': [
             (r'\{', Punctuation, 'atcontent'),
@@ -310,6 +310,8 @@ class CssLexer(RegexLexer):
             (words(_vendor_prefixes,), Keyword.Pseudo),
             (r'('+r'|'.join(_css_properties)+r')(\s*)(\:)',
              bygroups(Keyword, Text, Punctuation), 'value-start'),
+            (r'([-]+[a-zA-Z_][\w-]*)(\s*)(\:)', bygroups(Name.Variable, Text, Punctuation),
+             'value-start'),
             (r'([a-zA-Z_][\w-]*)(\s*)(\:)', bygroups(Name, Text, Punctuation),
              'value-start'),
 
@@ -335,14 +337,15 @@ class CssLexer(RegexLexer):
 
             (r'[~^*!%&<>|+=@:./?-]+', Operator),
             (r'[\[\](),]+', Punctuation),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'[a-zA-Z_][\w-]*', Name),
             (r';', Punctuation, '#pop'),
             (r'\}', Punctuation, '#pop:2'),
         ],
         'function-start': [
             (r'\s+', Text),
+            (r'[-]+([\w+]+[-]*)+', Name.Variable),
             include('urls'),
             (words(_vendor_prefixes,), Keyword.Pseudo),
             (words(_keyword_values, suffix=r'\b'), Keyword.Constant),
@@ -359,8 +362,8 @@ class CssLexer(RegexLexer):
             include('numeric-values'),
             (r'[*+/-]', Operator),
             (r',', Punctuation),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'[a-zA-Z_-]\w*', Name),
             (r'\)', Punctuation, '#pop'),
         ],
index 1fd60d0f8d674184a2d3cbf5e7501d9e9dbf28c4..c2d29f27e44f2719caa64920071971e187f591b5 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for D languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -98,7 +98,7 @@ class DLexer(RegexLexer):
             # -- AlternateWysiwygString
             (r'`[^`]*`[cwd]?', String),
             # -- DoubleQuotedString
-            (r'"(\\\\|\\"|[^"])*"[cwd]?', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"[cwd]?', String),
             # -- EscapeSequence
             (r"\\(['\"?\\abfnrtv]|x[0-9a-fA-F]{2}|[0-7]{1,3}"
              r"|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|&\w+;)",
@@ -229,7 +229,7 @@ class CrocLexer(RegexLexer):
             (r'@`(``|[^`])*`', String),
             (r"@'(''|[^'])*'", String),
             # -- DoubleQuotedString
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # Tokens
             (r'(~=|\^=|%=|\*=|==|!=|>>>=|>>>|>>=|>>|>=|<=>|\?=|-\>'
              r'|<<=|<<|<=|\+\+|\+=|--|-=|\|\||\|=|&&|&=|\.\.|/=)'
index 26d2ae3a4ba750fe76ef8b18a30ce05cba0eb044..f67e1b0e1c0710211b255a14caefd587fa062a80 100644 (file)
@@ -5,7 +5,7 @@
 
     Pygments lexers for Dalvik VM-related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 626c7c6a786468f7e4783e619b57ac568a28f4ad..bc92582aa667fb9371a6dc1f105a23bfb4a23b81 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for data file format.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 50fa79c2f060201ee4629505fdf22861c999f859..fdf6b0d72734df4b5dc9a480c52220d79e25774a 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Devicetree language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3a775ca078c80cd48b56bb0e6058d6170c3c88e3..7df4a99eb7e9180a4085a6e3c10bd2a61b648289 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for diff/patch formats.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index c75d2e685af0c4dff130e56ce64d9773a4f801fe..dc4a2cf7816027eeba4c0303ac8fa608fa2c8ff8 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for .net languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 import re
@@ -88,7 +88,7 @@ class CSharpLexer(RegexLexer):
                 (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
                 (r'[{}]', Punctuation),
                 (r'@"(""|[^"])*"', String),
-                (r'"(\\\\|\\"|[^"\n])*["\n]', String),
+                (r'"(\\\\|\\[^\\]|[^"\\\n])*["\n]', String),
                 (r"'\\.'|'[^\\]'", String.Char),
                 (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?"
                  r"[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?", Number),
@@ -213,7 +213,7 @@ class NemerleLexer(RegexLexer):
                 (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
                 (r'[{}]', Punctuation),
                 (r'@"(""|[^"])*"', String),
-                (r'"(\\\\|\\"|[^"\n])*["\n]', String),
+                (r'"(\\\\|\\[^\\]|[^"\\\n])*["\n]', String),
                 (r"'\\.'|'[^\\]'", String.Char),
                 (r"0[xX][0-9a-fA-F]+[Ll]?", Number),
                 (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFLdD]?", Number),
@@ -325,8 +325,8 @@ class BooLexer(RegexLexer):
             (r'\\\n', Text),
             (r'\\', Text),
             (r'(in|is|and|or|not)\b', Operator.Word),
-            (r'/(\\\\|\\/|[^/\s])/', String.Regex),
-            (r'@/(\\\\|\\/|[^/])*/', String.Regex),
+            (r'/(\\\\|\\[^\\]|[^/\\\s])/', String.Regex),
+            (r'@/(\\\\|\\[^\\]|[^/\\])*/', String.Regex),
             (r'=~|!=|==|<<|>>|[-+/*%=<>&^|]', Operator),
             (r'(as|abstract|callable|constructor|destructor|do|import|'
              r'enum|event|final|get|interface|internal|of|override|'
@@ -345,8 +345,8 @@ class BooLexer(RegexLexer):
              r'rawArrayIndexing|required|typeof|unchecked|using|'
              r'yieldAll|zip)\b', Name.Builtin),
             (r'"""(\\\\|\\"|.*?)"""', String.Double),
-            (r'"(\\\\|\\"|[^"]*?)"', String.Double),
-            (r"'(\\\\|\\'|[^']*?)'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'[a-zA-Z_]\w*', Name),
             (r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float),
             (r'[0-9][0-9.]*(ms?|d|h|s)', Number),
index a6a5e3b45b8a56f34bf7b8e8ad84e48039993895..0049bb9164fb46193e7ba18c4642b2bf3177ad6b 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for various domain-specific languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -632,7 +632,7 @@ class AlloyLexer(RegexLexer):
             (iden_rex, Name),
             (r'[:,]', Punctuation),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r'\n', Text),
         ]
     }
@@ -827,7 +827,7 @@ class FlatlineLexer(RegexLexer):
             (r'0x-?[a-f\d]+', Number.Hex),
 
             # strings, symbols and characters
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"\\(.|[a-z]+)", String.Char),
 
             # expression template placeholder
index 4c8874f7c46241cd5e3b928c991cbda2ce21398a..c743d7bb406123b85f4c5128708c6433009edb47 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Dylan language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 170c3e70657b046d7f34677229c6c1715c574dc8..2aba635002b5d723c1eaa4eaa21f90ef9f3eec9e 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the ECL language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 2c75cc46e7c00cce06edf36fbdcfea4d8ccd7155..075ad1a91fef88619346ce51324294446a4fbe4d 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Eiffel language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 46c12eda7b8737099617e9539a07b21b09616645..5fbb5eba4e037b9a54b1d64e643ed7f5671d7fe3 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Elm programming language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 776db88c3fb588add3ebbd50740cf303bf9d4fd6..3b130ed6c7d7eae1c18e050fee6cf729ba61014f 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the raw E-mail.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 829a1c23a0fcb77ae0d348d52957ac7e0e875b08..facca6cca07110023e4394e5f5890dbcfd57738c 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Erlang.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0fe89299687e5e5753cb35c82541fe9f36d18f00..4b5894a513144a587f5054cf0cae0869d2f8d384 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for esoteric languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 4af37f3365824afe19b9812005007990aadad917..6b314126b11accbcd0700d6a8edaab8a281fd2bc 100644 (file)
@@ -5,7 +5,7 @@
 
     Pygments lexers for Ezhil language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 60160d681316b3c0db1fd9478882ba67eb0e624f..9200547f9c2be8b1b9081301133c4005535a07fa 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Factor language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -265,7 +265,7 @@ class FactorLexer(RegexLexer):
             (r'(?:<PRIVATE|PRIVATE>)\s', Keyword.Namespace),
 
             # strings
-            (r'"""\s+(?:.|\n)*?\s+"""', String),
+            (r'"""\s(?:.|\n)*?\s"""', String),
             (r'"(?:\\\\|\\"|[^"])*"', String),
             (r'\S+"\s+(?:\\\\|\\"|[^"])*"', String),
             (r'CHAR:\s+(?:\\[\\abfnrstv]|[^\\]\S*)\s', String.Char),
@@ -322,7 +322,7 @@ class FactorLexer(RegexLexer):
         'slots': [
             (r'\s+', Text),
             (r';\s', Keyword, '#pop'),
-            (r'(\{\s+)(\S+)(\s+[^}]+\s+\}\s)',
+            (r'(\{\s+)(\S+)(\s[^}]+\s\}\s)',
              bygroups(Text, Name.Variable, Text)),
             (r'\S+', Name.Variable),
         ],
index a47879da77a32183a85e4a104f8865b248eaf6c5..e0cbbac8fc8ed1501417e857651f7b746ec46070 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Fantom language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 8fea79a2fc15defc458f94ae7f5092ca447196fa..931e8de8f897e219bd08a8144d816be5bc1d78cd 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Felix language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index c3ac887d3a2072ac4ad1aa64d08eefc9d7d8a8b1..beb8d3c816d8a21333e6ad246f16216fe08b7eb1 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for FloScript
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index f634f2cc53992071f78fbdc0e3e6468abdfcb444..a803b143fa1253f983b551bfc6d912a249af9099 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Forth language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e0619c7f5823256ff9af03f037c0482178a33a7e..86f8d120ea9a8f6f52884fc8f5d6aebabe30f822 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Fortran languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -56,14 +56,14 @@ class FortranLexer(RegexLexer):
                 'CODIMENSION', 'COMMON', 'CONCURRRENT', 'CONTIGUOUS', 'CONTAINS',
                 'CONTINUE', 'CRITICAL', 'CYCLE', 'DATA', 'DEALLOCATE', 'DECODE',
                 'DEFERRED', 'DIMENSION', 'DO', 'ELEMENTAL', 'ELSE', 'ENCODE', 'END',
-                'ENTRY', 'ENUM', 'ENUMERATOR', 'EQUIVALENCE', 'EXIT', 'EXTENDS',
-                'EXTERNAL', 'EXTRINSIC', 'FILE', 'FINAL', 'FORALL', 'FORMAT',
+                'ENTRY', 'ENUM', 'ENUMERATOR', 'EQUIVALENCE', 'ERROR STOP', 'EXIT',
+                'EXTENDS', 'EXTERNAL', 'EXTRINSIC', 'FILE', 'FINAL', 'FORALL', 'FORMAT',
                 'FUNCTION', 'GENERIC', 'GOTO', 'IF', 'IMAGES', 'IMPLICIT',
                 'IMPORT', 'IMPURE', 'INCLUDE', 'INQUIRE', 'INTENT', 'INTERFACE',
                 'INTRINSIC', 'IS', 'LOCK', 'MEMORY', 'MODULE', 'NAMELIST', 'NULLIFY',
-                'NONE', 'NON_INTRINSIC', 'NON_OVERRIDABLE', 'NOPASS', 'OPEN', 'OPTIONAL',
-                'OPTIONS', 'PARAMETER', 'PASS', 'PAUSE', 'POINTER', 'PRINT', 'PRIVATE',
-                'PROGRAM', 'PROCEDURE', 'PROTECTED', 'PUBLIC', 'PURE', 'READ',
+                'NONE', 'NON_INTRINSIC', 'NON_OVERRIDABLE', 'NOPASS', 'ONLY', 'OPEN', 
+                'OPTIONAL', 'OPTIONS', 'PARAMETER', 'PASS', 'PAUSE', 'POINTER', 'PRINT', 
+                'PRIVATE', 'PROGRAM', 'PROCEDURE', 'PROTECTED', 'PUBLIC', 'PURE', 'READ',
                 'RECURSIVE', 'RESULT', 'RETURN', 'REWIND', 'SAVE', 'SELECT', 'SEQUENCE',
                 'STOP', 'SUBMODULE', 'SUBROUTINE', 'SYNC', 'SYNCALL', 'SYNCIMAGES',
                 'SYNCMEMORY', 'TARGET', 'THEN', 'TYPE', 'UNLOCK', 'USE', 'VALUE',
index d6ccc62d7341e1347ca5627e46483f0cf9216e95..a32be7a4a0ad129d97f91eb4b2aa9a44a56cc8a0 100644 (file)
@@ -5,7 +5,7 @@
 
     Simple lexer for Microsoft Visual FoxPro source code.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ca1825130a995ed6b00f38d446eb1f458046e443..a8fc42cc674b82387a6ac4808b4b3b035b9d612c 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for FreeFem++ language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d50038c7515964e3cdb8f0a106e5d552e083c0e1..bb73eb174cc96a2acba012343723720753fb467f 100644 (file)
@@ -5,7 +5,7 @@
 
     Just export lexer classes previously contained in this module.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 7d9b9e6e961aaf4d3e604036683efd0783aceb35..b235be9f797daf4e3f2d6840369289dc50aef562 100644 (file)
@@ -8,7 +8,7 @@
     Modified by Daniel J. Ramirez <djrmuv@gmail.com> based on the original
     python.py.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3dc8df82d3dfa40994442a909430efb951f0da83..e462799e553a9716e151025f974f8731edf9eb8b 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Google Go language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -90,7 +90,7 @@ class GoLexer(RegexLexer):
             # -- raw_string_lit
             (r'`[^`]*`', String),
             # -- interpreted_string_lit
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # Tokens
             (r'(<<=|>>=|<<|>>|<=|>=|&\^=|&\^|\+=|-=|\*=|/=|%=|&=|\|=|&&|\|\|'
              r'|<-|\+\+|--|==|!=|:=|\.\.\.|[+\-*/%&])', Operator),
index 86af301e2573746834636ef5cf4b8f8a90ef4de6..b8576eb67e2f64cab58ff9218c1eaa30889ba058 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for grammar notations like BNF.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 24095d82ba001b81153c5be8732ee6bbda190498..ec565801b4c8731c5fcb18b5154a4e381a624d7c 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for graph query languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 52ab8e029ae16bfc4aeb44b8f89ff0c5a1a368f5..f2d901aca2dc943fde41fd47546d4f383b9613fb 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for computer graphics and plotting related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -425,7 +425,7 @@ class AsymptoteLexer(RegexLexer):
         ],
         'statements': [
             # simple string (TeX friendly)
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # C style string (with character escapes)
             (r"'", String, 'string'),
             (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
@@ -775,7 +775,7 @@ class PovrayLexer(RegexLexer):
             (r'[0-9]+\.[0-9]*', Number.Float),
             (r'\.[0-9]+', Number.Float),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r'\s+', Text),
         ]
     }
index 497d4cf31bd10c64fb16ee8394ef6db9e42643bf..523420245bf40337f806970db90cf77dab0b5cdb 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Haskell and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index f95e45565dfb3864c9424aa7158514ee756ffae9..c08597c5be94ea28ea2aee4d29973c138c7fcc06 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Haxe and related stuff.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -467,7 +467,7 @@ class HaxeLexer(ExtendedRegexLexer):
             (r'"', String.Double, ('#pop', 'expr-chain', 'string-double')),
 
             # EReg
-            (r'~/(\\\\|\\/|[^/\n])*/[gimsu]*', String.Regex, ('#pop', 'expr-chain')),
+            (r'~/(\\\\|\\[^\\]|[^/\\\n])*/[gimsu]*', String.Regex, ('#pop', 'expr-chain')),
 
             # Array
             (r'\[', Punctuation, ('#pop', 'expr-chain', 'array-decl')),
@@ -722,7 +722,7 @@ class HaxeLexer(ExtendedRegexLexer):
             (r'"', String.Double, ('#pop', 'string-double')),
 
             # EReg
-            (r'~/(\\\\|\\/|[^/\n])*/[gim]*', String.Regex, '#pop'),
+            (r'~/(\\\\|\\[^\\]|[^/\\\n])*/[gim]*', String.Regex, '#pop'),
 
             # Array
             (r'\[', Operator, ('#pop', 'array-decl')),
index 78cff2c2d61a19d60f80d78b0de1a7116cdecc0d..45a86096d24c4daeb66ac76f53d43b303886b848 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for hardware descriptor languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 4ae57e8b3739600a3c1a6db23ce0576c47097c19..d9fe7f836d46ec0e92d962b009fa3b1a114d45fa 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for hexadecimal dumps.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 1fd3f6cd95faf8e8bbde197b6eb43f73ac244fcc..2c2e4447de217fd3fcb0eb4a21c93064c38008b1 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for HTML, XML and related markup.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -369,8 +369,8 @@ class HamlLexer(ExtendedRegexLexer):
             (r'\w+', Name.Variable, '#pop'),
             (r'@\w+', Name.Variable.Instance, '#pop'),
             (r'\$\w+', Name.Variable.Global, '#pop'),
-            (r"'(\\\\|\\'|[^'\n])*'", String, '#pop'),
-            (r'"(\\\\|\\"|[^"\n])*"', String, '#pop'),
+            (r"'(\\\\|\\[^\\]|[^'\\\n])*'", String, '#pop'),
+            (r'"(\\\\|\\[^\\]|[^"\\\n])*"', String, '#pop'),
         ],
 
         'html-comment-block': [
@@ -481,8 +481,8 @@ class ScamlLexer(ExtendedRegexLexer):
             (r'\w+', Name.Variable, '#pop'),
             (r'@\w+', Name.Variable.Instance, '#pop'),
             (r'\$\w+', Name.Variable.Global, '#pop'),
-            (r"'(\\\\|\\'|[^'\n])*'", String, '#pop'),
-            (r'"(\\\\|\\"|[^"\n])*"', String, '#pop'),
+            (r"'(\\\\|\\[^\\]|[^'\\\n])*'", String, '#pop'),
+            (r'"(\\\\|\\[^\\]|[^"\\\n])*"', String, '#pop'),
         ],
 
         'html-comment-block': [
@@ -590,8 +590,8 @@ class PugLexer(ExtendedRegexLexer):
             (r'\w+', Name.Variable, '#pop'),
             (r'@\w+', Name.Variable.Instance, '#pop'),
             (r'\$\w+', Name.Variable.Global, '#pop'),
-            (r"'(\\\\|\\'|[^'\n])*'", String, '#pop'),
-            (r'"(\\\\|\\"|[^"\n])*"', String, '#pop'),
+            (r"'(\\\\|\\[^\\]|[^'\\\n])*'", String, '#pop'),
+            (r'"(\\\\|\\[^\\]|[^"\\\n])*"', String, '#pop'),
         ],
 
         'html-comment-block': [
index 142c88fa2c8942b13fd9fd13223756ee0a70ef36..b2dc90fb560b6766ea89f03a44a207f4fb8806df 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for IDL.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 666d2b65a68f05cc1a24b711faa8cbe85467fd8d..f8047863f1dab0a33f1b903743dcf3c3407d5371 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Igor Pro.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index cdadd6263c6680efb6db3f1593430a9fbe8d219c..7fe7e0ef3e18a360a8431bdef8e476d513e4b484 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Inferno os and all the related stuff.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d0aa4fcd2f44b53b97893119d540b33d603c8236..919279f607cedd97edd90fc79d0b1591ab878da7 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for installer/packager DSLs and formats.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index c6ffde6407c26375049c746ea4603f50a69623eb..158bf3b9c45df5e84988a3003d5aabfc4f82b0a1 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for interactive fiction languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d6c022d24d59a87abae938a708115d28b82b327a..cf791cf61f56559810868ad7ac577ec91de49f88 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Io language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -37,7 +37,7 @@ class IoLexer(RegexLexer):
             (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
             (r'/\+', Comment.Multiline, 'nestedcomment'),
             # DoubleQuotedString
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # Operators
             (r'::=|:=|=|\(|\)|;|,|\*|-|\+|>|<|@|!|/|\||\^|\.|%|&|\[|\]|\{|\}',
              Operator),
index b0103a487a5a96bda51eea80da4e655facfc40a6..1e32884c80a96203dcd597fb0f5a840060a2cf4e 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the J programming language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 49bf6d24c2f9cec7446c379337751417750abb03..329120e5a2e9e2d144cc14697ee6642785985153 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for JavaScript and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -53,7 +53,7 @@ class JavascriptLexer(RegexLexer):
         'slashstartsregex': [
             include('commentsandwhitespace'),
             (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
-             r'([gimuy]+\b|\B)', String.Regex, '#pop'),
+             r'([gimuys]+\b|\B)', String.Regex, '#pop'),
             (r'(?=/)', Text, ('#pop', 'badregex')),
             default('#pop')
         ],
@@ -67,7 +67,7 @@ class JavascriptLexer(RegexLexer):
 
             # Numeric literals
             (r'0[bB][01]+n?', Number.Bin),
-            (r'0[oO]?[0-7]+n?', Number.Oct),  # Browsers support "0o7" and "07" notations
+            (r'0[oO]?[0-7]+n?', Number.Oct),  # Browsers support "0o7" and "07" (< ES5) notations
             (r'0[xX][0-9a-fA-F]+n?', Number.Hex),
             (r'[0-9]+n', Number.Integer),  # Javascript BigInt requires an "n" postfix
             # Javascript doesn't have actual integer literals, so every other
@@ -82,21 +82,20 @@ class JavascriptLexer(RegexLexer):
             (r'[})\].]', Punctuation),
             (r'(for|in|while|do|break|return|continue|switch|case|default|if|else|'
              r'throw|try|catch|finally|new|delete|typeof|instanceof|void|yield|await|async|'
-             r'this|of)\b', Keyword, 'slashstartsregex'),
-            (r'(var|let|with|function)\b', Keyword.Declaration, 'slashstartsregex'),
-            (r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|'
-             r'extends|final|float|goto|implements|import|int|interface|long|native|'
-             r'package|private|protected|public|short|static|super|synchronized|throws|'
-             r'transient|volatile)\b', Keyword.Reserved),
+             r'this|of|static|export|import|debugger|extends|super)\b', Keyword, 'slashstartsregex'),
+            (r'(var|let|const|with|function|class)\b', Keyword.Declaration, 'slashstartsregex'),
+            (r'(abstract|boolean|byte|char|double|enum|final|float|goto'
+             r'implements|int|interface|long|native|package|private|protected'
+             r'public|short|synchronized|throws|transient|volatile)\b', Keyword.Reserved),
             (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
-            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
-             r'Number|Object|Packages|RegExp|String|Promise|Proxy|sun|decodeURI|'
+            (r'(Array|Boolean|Date|BigInt|Error|Function|Math|'
+             r'Number|Object|RegExp|String|Promise|Proxy|decodeURI|'
              r'decodeURIComponent|encodeURI|encodeURIComponent|'
              r'Error|eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|'
-             r'document|this|window)\b', Name.Builtin),
+             r'document|this|window|globalThis|Symbol)\b', Name.Builtin),
             (JS_IDENT, Name.Other),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'`', String.Backtick, 'interp'),
         ],
         'interp': [
@@ -112,7 +111,6 @@ class JavascriptLexer(RegexLexer):
             (r'\}', String.Interpol, '#pop'),
             include('root'),
         ],
-        # (\\\\|\\`|[^`])*`', String.Backtick),
     }
 
 
@@ -161,7 +159,7 @@ class KalLexer(RegexLexer):
         'root': [
             include('commentsandwhitespace'),
             (r'/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
-             r'([gim]+\b|\B)', String.Regex),
+             r'([gimuys]+\b|\B)', String.Regex),
             (r'\?|:|_(?=\n)|==?|!=|-(?!>)|[<>+*/-]=?',
              Operator),
             (r'\b(and|or|isnt|is|not|but|bitwise|mod|\^|xor|exists|'
@@ -183,13 +181,11 @@ class KalLexer(RegexLexer):
             (r'(?<![.$])(true|false|yes|no|on|off|null|nothing|none|'
              r'NaN|Infinity|undefined)\b',
              Keyword.Constant),
-            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
-             r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
+            (r'(Array|Boolean|Date|Error|Function|Math|'
+             r'Number|Object|RegExp|String|decodeURI|'
              r'decodeURIComponent|encodeURI|encodeURIComponent|'
              r'eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|document|'
-             r'window|'
-             r'print)\b',
-             Name.Builtin),
+             r'window|globalThis|Symbol|print)\b', Name.Builtin),
             (r'[$a-zA-Z_][\w.$]*\s*(:|[+\-*/]?\=)?\b', Name.Variable),
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'0x[0-9a-fA-F]+', Number.Hex),
@@ -256,7 +252,7 @@ class LiveScriptLexer(RegexLexer):
         ],
         'multilineregex': [
             include('commentsandwhitespace'),
-            (r'//([gim]+\b|\B)', String.Regex, '#pop'),
+            (r'//([gimuys]+\b|\B)', String.Regex, '#pop'),
             (r'/', String.Regex),
             (r'[^/#]+', String.Regex)
         ],
@@ -264,7 +260,7 @@ class LiveScriptLexer(RegexLexer):
             include('commentsandwhitespace'),
             (r'//', String.Regex, ('#pop', 'multilineregex')),
             (r'/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
-             r'([gim]+\b|\B)', String.Regex, '#pop'),
+             r'([gimuys]+\b|\B)', String.Regex, '#pop'),
             (r'/', Operator, '#pop'),
             default('#pop'),
         ],
@@ -288,11 +284,11 @@ class LiveScriptLexer(RegexLexer):
             (r'(?<![.$])(true|false|yes|no|on|off|'
              r'null|NaN|Infinity|undefined|void)\b',
              Keyword.Constant),
-            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
-             r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
+            (r'(Array|Boolean|Date|Error|Function|Math|'
+             r'Number|Object|RegExp|String|decodeURI|'
              r'decodeURIComponent|encodeURI|encodeURIComponent|'
-             r'eval|isFinite|isNaN|parseFloat|parseInt|document|window)\b',
-             Name.Builtin),
+             r'eval|isFinite|isNaN|parseFloat|parseInt|document|window|'
+             r'globalThis|Symbol|Symbol|BigInt)\b', Name.Builtin),
             (r'[$a-zA-Z_][\w.\-:$]*\s*[:=]\s', Name.Variable,
              'slashstartsregex'),
             (r'@[$a-zA-Z_][\w.\-:$]*\s*[:=]\s', Name.Variable.Instance,
@@ -475,7 +471,7 @@ class TypeScriptLexer(RegexLexer):
         'slashstartsregex': [
             include('commentsandwhitespace'),
             (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
-             r'([gim]+\b|\B)', String.Regex, '#pop'),
+             r'([gimuys]+\b|\B)', String.Regex, '#pop'),
             (r'(?=/)', Text, ('#pop', 'badregex')),
             default('#pop')
         ],
@@ -491,18 +487,17 @@ class TypeScriptLexer(RegexLexer):
             (r'[})\].]', Punctuation),
             (r'(for|in|while|do|break|return|continue|switch|case|default|if|else|'
              r'throw|try|catch|finally|new|delete|typeof|instanceof|void|of|'
-             r'this)\b', Keyword, 'slashstartsregex'),
-            (r'(var|let|with|function)\b', Keyword.Declaration, 'slashstartsregex'),
-            (r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|'
-             r'extends|final|float|goto|implements|import|int|interface|long|native|'
-             r'package|private|protected|public|short|static|super|synchronized|throws|'
-             r'transient|volatile)\b', Keyword.Reserved),
+             r'this|async|await|debugger|yield|abstract|static|import|export|'
+             r'implements|super|extends|private|protected|public|readonly)\b', Keyword, 'slashstartsregex'),
+            (r'(var|let|const|with|function|class|type|enum|interface)\b', Keyword.Declaration, 'slashstartsregex'),
+            (r'(boolean|byte|char|double|final|float|goto|int|long|native|'
+             r'package|short|synchronized|throws|transient|volatile)\b', Keyword.Reserved),
             (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
-            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
-             r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
+            (r'(Array|Boolean|Date|Error|Function|Math|'
+             r'Number|Object|RegExp|String|decodeURI|'
              r'decodeURIComponent|encodeURI|encodeURIComponent|'
              r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
-             r'window)\b', Name.Builtin),
+             r'window|globalThis|Symbol|BigInt)\b', Name.Builtin),
             # Match stuff like: module name {...}
             (r'\b(module)(\s*)(\s*[\w?.$][\w?.$]*)(\s*)',
              bygroups(Keyword.Reserved, Text, Name.Other, Text), 'slashstartsregex'),
@@ -514,16 +509,18 @@ class TypeScriptLexer(RegexLexer):
             (r'(super)(\s*)(\([\w,?.$\s]+\s*\))',
              bygroups(Keyword.Reserved, Text), 'slashstartsregex'),
             # Match stuff like: function() {...}
-            (r'([a-zA-Z_?.$][\w?.$]*)\(\) \{', Name.Other, 'slashstartsregex'),
+            (r'([a-zA-Z_?.$][\w?.$]*)(?=\(\) \{)', Name.Other, 'slashstartsregex'),
             # Match stuff like: (function: return type)
             (r'([\w?.$][\w?.$]*)(\s*:\s*)([\w?.$][\w?.$]*)',
              bygroups(Name.Other, Text, Keyword.Type)),
             (r'[$a-zA-Z_]\w*', Name.Other),
-            (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
-            (r'0x[0-9a-fA-F]+', Number.Hex),
-            (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'0[bB][01]+n?', Number.Bin),
+            (r'0[oO]?[0-7]+n?', Number.Oct),  # Browsers support "0o7" and "07" (< ES5) notations
+            (r'0[xX][0-9a-fA-F]+n?', Number.Hex),
+            (r'[0-9]+n', Number.Integer),
+            (r'(\.[0-9]+|[0-9]+\.[0-9]*|[0-9]+)([eE][-+]?[0-9]+)?', Number.Float),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'`', String.Backtick, 'interp'),
             # Match stuff like: Decorators
             (r'@\w+', Keyword.Declaration),
@@ -875,8 +872,8 @@ class ObjectiveJLexer(RegexLexer):
             (r'(L|@)?"', String, 'string'),
             (r"(L|@)?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'",
              String.Char),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
             (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
             (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),
@@ -913,11 +910,11 @@ class ObjectiveJLexer(RegexLexer):
              r'MIN|MAX|RAND|SQRT|E|LN2|LN10|LOG2E|LOG10E|PI|PI2|PI_2|SQRT1_2|'
              r'SQRT2)\b', Keyword.Constant),
 
-            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
-             r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
+            (r'(Array|Boolean|Date|Error|Function|Math|'
+             r'Number|Object|RegExp|String|decodeURI|'
              r'decodeURIComponent|encodeURI|encodeURIComponent|'
              r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
-             r'window)\b', Name.Builtin),
+             r'window|globalThis|Symbol)\b', Name.Builtin),
 
             (r'([$a-zA-Z_]\w*)(' + _ws + r')(?=\()',
              bygroups(Name.Function, using(this))),
@@ -1055,7 +1052,7 @@ class CoffeeScriptLexer(RegexLexer):
         ],
         'multilineregex': [
             (r'[^/#]+', String.Regex),
-            (r'///([gim]+\b|\B)', String.Regex, '#pop'),
+            (r'///([gimuys]+\b|\B)', String.Regex, '#pop'),
             (r'#\{', String.Interpol, 'interpoling_string'),
             (r'[/#]', String.Regex),
         ],
@@ -1063,7 +1060,7 @@ class CoffeeScriptLexer(RegexLexer):
             include('commentsandwhitespace'),
             (r'///', String.Regex, ('#pop', 'multilineregex')),
             (r'/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
-             r'([gim]+\b|\B)', String.Regex, '#pop'),
+             r'([gimuys]+\b|\B)', String.Regex, '#pop'),
             # This isn't really guarding against mishighlighting well-formed
             # code, just the ability to infinite-loop between root and
             # slashstartsregex.
@@ -1085,10 +1082,10 @@ class CoffeeScriptLexer(RegexLexer):
             (r'(?<![.$])(true|false|yes|no|on|off|null|'
              r'NaN|Infinity|undefined)\b',
              Keyword.Constant),
-            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
-             r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
+            (r'(Array|Boolean|Date|Error|Function|Math|'
+             r'Number|Object|RegExp|String|decodeURI|'
              r'decodeURIComponent|encodeURI|encodeURIComponent|'
-             r'eval|isFinite|isNaN|parseFloat|parseInt|document|window)\b',
+             r'eval|isFinite|isNaN|parseFloat|parseInt|document|window|globalThis|Symbol)\b',
              Name.Builtin),
             (r'[$a-zA-Z_][\w.:$]*\s*[:=]\s', Name.Variable,
              'slashstartsregex'),
@@ -1497,7 +1494,7 @@ class JuttleLexer(RegexLexer):
         'slashstartsregex': [
             include('commentsandwhitespace'),
             (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
-             r'([gim]+\b|\B)', String.Regex, '#pop'),
+             r'([gimuys]+\b|\B)', String.Regex, '#pop'),
             (r'(?=/)', Text, ('#pop', 'badregex')),
             default('#pop')
         ],
@@ -1533,8 +1530,8 @@ class JuttleLexer(RegexLexer):
             (JS_IDENT, Name.Other),
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single)
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ]
 
     }
index b512e2480ee27792edfe534ff64dcfe628e740ad..5e52f927ce23f411a92b27849f4e12b14a19ff8c 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Julia language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 1dab164fadbdb6db56b9810226ceeb0378e52ffd..9a9397c2d2a60544f3749e86516dc4bd9ff134d0 100644 (file)
@@ -5,7 +5,7 @@
 
     Pygments lexers for JVM languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -292,12 +292,12 @@ class ScalaLexer(RegexLexer):
             (r'(import|package)(\s+)', bygroups(Keyword, Text), 'import'),
             (r'(type)(\s+)', bygroups(Keyword, Text), 'type'),
             (r'""".*?"""(?!")', String),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
             (r"'%s" % idrest, Text.Symbol),
             (r'[fs]"""', String, 'interptriplestring'),  # interpolated strings
             (r'[fs]"', String, 'interpstring'),  # interpolated strings
-            (r'raw"(\\\\|\\"|[^"])*"', String),  # raw strings
+            (r'raw"(\\\\|\\[^\\]|[^"\\])*"', String),  # raw strings
             # (r'(\.)(%s|%s|`[^`]+`)' % (idrest, op), bygroups(Operator,
             # Name.Attribute)),
             (idrest, Name),
@@ -522,10 +522,10 @@ class GroovyLexer(RegexLexer):
             (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
             (r'""".*?"""', String.Double),
             (r"'''.*?'''", String.Single),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'\$/((?!/\$).)*/\$', String),
-            (r'/(\\\\|\\"|[^/])*/', String),
+            (r'/(\\\\|\\[^\\]|[^/\\])*/', String),
             (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
             (r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)),
             (r'[a-zA-Z_]\w*:', Name.Label),
@@ -618,7 +618,7 @@ class IokeLexer(RegexLexer):
             # Symbols
             (r':[\w!:?]+', String.Symbol),
             (r'[\w!:?]+:(?![\w!?])', String.Other),
-            (r':"(\\\\|\\"|[^"])*"', String.Symbol),
+            (r':"(\\\\|\\[^\\]|[^"\\])*"', String.Symbol),
 
             # Documentation
             (r'((?<=fn\()|(?<=fnx\()|(?<=method\()|(?<=macro\()|(?<=lecro\()'
@@ -836,7 +836,7 @@ class ClojureLexer(RegexLexer):
             (r'0x-?[abcdef\d]+', Number.Hex),
 
             # strings, symbols and characters
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'" + valid_name, String.Symbol),
             (r"\\(.|[a-z]+)", String.Char),
 
@@ -917,8 +917,8 @@ class TeaLangLexer(RegexLexer):
             (r'(true|false|null)\b', Keyword.Constant),
             (r'(template)(\s+)', bygroups(Keyword.Declaration, Text), 'template'),
             (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
-            (r'"(\\\\|\\"|[^"])*"', String),
-            (r'\'(\\\\|\\\'|[^\'])*\'', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)),
             (r'[a-zA-Z_]\w*:', Name.Label),
             (r'[a-zA-Z_\$]\w*', Name),
@@ -979,9 +979,8 @@ class CeylonLexer(RegexLexer):
             (r'(class|interface|object|alias)(\s+)',
              bygroups(Keyword.Declaration, Text), 'class'),
             (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'", String.Char),
-            (r'".*``.*``.*"', String.Interpol),
             (r'(\.)([a-z_]\w*)',
              bygroups(Operator, Name.Attribute)),
             (r'[a-zA-Z_]\w*:', Name.Label),
@@ -1057,7 +1056,7 @@ class KotlinLexer(RegexLexer):
             (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
             (r'[{}]', Punctuation),
             (r'@"(""|[^"])*"', String),
-            (r'"(\\\\|\\"|[^"\n])*["\n]', String),
+            (r'"(\\\\|\\[^\\]|[^"\\\n])*["\n]', String),
             (r"'\\.'|'[^\\]'", String.Char),
             (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFL]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
@@ -1151,8 +1150,8 @@ class XtendLexer(RegexLexer):
             (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
             (r"(''')", String, 'template'),
             (r'(\u00BB)', String, 'template'),
-            (r'"(\\\\|\\"|[^"])*"', String),
-            (r"'(\\\\|\\'|[^'])*'", String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'[a-zA-Z_]\w*:', Name.Label),
             (r'[a-zA-Z_$]\w*', Name),
             (r'[~^*!%&\[\](){}<>\|+=:;,./?-]', Operator),
@@ -1620,54 +1619,59 @@ class JasminLexer(RegexLexer):
 
 
 class SarlLexer(RegexLexer):
-       """
-       For `SARL <http://www.sarl.io>`_ source code.
-       
-       .. versionadded:: 2.4
-       """
-       
-       name = 'SARL'
-       aliases = ['sarl']
-       filenames = ['*.sarl']
-       mimetypes = ['text/x-sarl']
-       
-       flags = re.MULTILINE | re.DOTALL
-       
-       tokens = {
-               'root': [
-                       # method names
-                       (r'^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)'  # return arguments
-                        r'([a-zA-Z_$][\w$]*)'                      # method name
-                        r'(\s*)(\()',                             # signature start
-                        bygroups(using(this), Name.Function, Text, Operator)),
-                       (r'[^\S\n]+', Text),
-                       (r'//.*?\n', Comment.Single),
-                       (r'/\*.*?\*/', Comment.Multiline),
-                       (r'@[a-zA-Z_][\w.]*', Name.Decorator),
-                       (r'(as|break|case|catch|default|do|else|extends|extension|finally|fires|for|if|implements|instanceof|new|on|requires|return|super|switch|throw|throws|try|typeof|uses|while|with)\b',
-                        Keyword),
-                       (r'(abstract|def|dispatch|final|native|override|private|protected|public|static|strictfp|synchronized|transient|val|var|volatile)\b', Keyword.Declaration),
-                        (r'(boolean|byte|char|double|float|int|long|short|void)\b',
-                         Keyword.Type),
-                        (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)),
-                        (r'(false|it|null|occurrence|this|true|void)\b', Keyword.Constant),
-                        (r'(agent|annotation|artifact|behavior|capacity|class|enum|event|interface|skill|space)(\s+)', bygroups(Keyword.Declaration, Text),
-                         'class'),
-                        (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
-                        (r'"(\\\\|\\"|[^"])*"', String),
-                        (r"'(\\\\|\\'|[^'])*'", String),
-                        (r'[a-zA-Z_]\w*:', Name.Label),
-                        (r'[a-zA-Z_$]\w*', Name),
-                        (r'[~^*!%&\[\](){}<>\|+=:;,./?-]', Operator),
-                        (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
-                        (r'0x[0-9a-fA-F]+', Number.Hex),
-                        (r'[0-9]+L?', Number.Integer),
-                        (r'\n', Text)
-               ],
-               'class': [
-                       (r'[a-zA-Z_]\w*', Name.Class, '#pop')
-               ],
-               'import': [
-                       (r'[\w.]+\*?', Name.Namespace, '#pop')
-               ],
-       }
+    """
+    For `SARL <http://www.sarl.io>`_ source code.
+
+    .. versionadded:: 2.4
+    """
+
+    name = 'SARL'
+    aliases = ['sarl']
+    filenames = ['*.sarl']
+    mimetypes = ['text/x-sarl']
+
+    flags = re.MULTILINE | re.DOTALL
+
+    tokens = {
+        'root': [
+            # method names
+            (r'^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)'  # return arguments
+             r'([a-zA-Z_$][\w$]*)'                      # method name
+             r'(\s*)(\()',                             # signature start
+             bygroups(using(this), Name.Function, Text, Operator)),
+            (r'[^\S\n]+', Text),
+            (r'//.*?\n', Comment.Single),
+            (r'/\*.*?\*/', Comment.Multiline),
+            (r'@[a-zA-Z_][\w.]*', Name.Decorator),
+            (r'(as|break|case|catch|default|do|else|extends|extension|finally|'
+             r'fires|for|if|implements|instanceof|new|on|requires|return|super|'
+             r'switch|throw|throws|try|typeof|uses|while|with)\b',
+             Keyword),
+            (r'(abstract|def|dispatch|final|native|override|private|protected|'
+             r'public|static|strictfp|synchronized|transient|val|var|volatile)\b',
+             Keyword.Declaration),
+            (r'(boolean|byte|char|double|float|int|long|short|void)\b',
+             Keyword.Type),
+            (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)),
+            (r'(false|it|null|occurrence|this|true|void)\b', Keyword.Constant),
+            (r'(agent|annotation|artifact|behavior|capacity|class|enum|event|'
+             r'interface|skill|space)(\s+)', bygroups(Keyword.Declaration, Text),
+             'class'),
+            (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
+            (r'[a-zA-Z_]\w*:', Name.Label),
+            (r'[a-zA-Z_$]\w*', Name),
+            (r'[~^*!%&\[\](){}<>\|+=:;,./?-]', Operator),
+            (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
+            (r'0x[0-9a-fA-F]+', Number.Hex),
+            (r'[0-9]+L?', Number.Integer),
+            (r'\n', Text)
+        ],
+        'class': [
+            (r'[a-zA-Z_]\w*', Name.Class, '#pop')
+        ],
+        'import': [
+            (r'[\w.]+\*?', Name.Namespace, '#pop')
+        ],
+    }
index 47efb4fb6b1680400cf12ef87c3615db0a4423ef..fa9f3bb7fa18307a7ac91155f2ca83723fec5d22 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Lispy languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -119,7 +119,7 @@ class SchemeLexer(RegexLexer):
             # (r'(#e|#i|#b|#o|#d|#x)[\d.]+', Number),
 
             # strings, symbols and characters
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'" + valid_name, String.Symbol),
             (r"#\\([()/'\"._!§$%& ?=+-]|[a-zA-Z0-9]+)", String.Char),
 
@@ -403,7 +403,7 @@ class HyLexer(RegexLexer):
             (r'0[xX][a-fA-F0-9]+', Number.Hex),
 
             # strings, symbols and characters
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'" + valid_name, String.Symbol),
             (r"\\(.|[a-z]+)", String.Char),
             (r'^(\s*)([rRuU]{,2}"""(?:.|\n)*?""")', bygroups(Text, String.Doc)),
@@ -1490,7 +1490,7 @@ class NewLispLexer(RegexLexer):
             (r'\s+', Text),
 
             # strings, symbols and characters
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
 
             # braces
             (r'\{', String, "bracestring"),
@@ -2383,7 +2383,7 @@ class CPSALexer(SchemeLexer):
             # (r'(#e|#i|#b|#o|#d|#x)[\d.]+', Number),
 
             # strings, symbols and characters
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'" + valid_name, String.Symbol),
             (r"#\\([()/'\"._!§$%& ?=+-]|[a-zA-Z0-9]+)", String.Char),
 
@@ -2596,7 +2596,7 @@ class XtlangLexer(RegexLexer):
             (r'(#b|#o|#x)[\d.]+', Number),
 
             # strings
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
 
             # true/false constants
             (r'(#t|#f)', Name.Constant),
@@ -2672,7 +2672,7 @@ class FennelLexer(RegexLexer):
             (r'-?\d+\.\d+', Number.Float),
             (r'-?\d+', Number.Integer),
 
-            (r'"(\\\\|\\"|\\|[^"\\])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
 
             # these are technically strings, but it's worth visually
             # distinguishing them because their intent is different
index 6e63b5aae0b350d2df47ee867fc1bd6d78280e7b..b3c1b68865813f5f228fed1450b8721566e0d554 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Makefiles and similar.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -92,8 +92,8 @@ class BaseMakefileLexer(RegexLexer):
             (r'([\w${}().-]+)(\s*)([!?:+]?=)([ \t]*)((?:.*\\\n)+|.*\n)',
              bygroups(Name.Variable, Text, Operator, Text, using(BashLexer))),
             # strings
-            (r'(?s)"(\\\\|\\.|[^"\\])*"', String.Double),
-            (r"(?s)'(\\\\|\\.|[^'\\])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             # targets
             (r'([^\n:]+)(:+)([ \t]*)', bygroups(Name.Function, Operator, Text),
              'block-header'),
index 7ee161c1131449f60b6d3af43ff5c91566ec765d..88e09ec22f51a96236addd224e07efc2a020285c 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for non-HTML markup languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -558,11 +558,9 @@ class MarkdownLexer(RegexLexer):
             # quote
             (r'^(\s*>\s)(.+\n)', bygroups(Keyword, Generic.Emph)),
             # code block fenced by 3 backticks
-            (r'^(\s*```\n(.+\n)+\s*```$)', String.Backtick),
+            (r'^(\s*```\n[\w\W]*?^\s*```$\n)', String.Backtick),
             # code block with language
-            (r'^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$)', _handle_codeblock),
-            # code block indented with 4 spaces or 1 tab
-            (r'(\n\n)((\ {4}|\t)(.+\n)+)', bygroups(Text, String.Backtick)),
+            (r'^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$\n)', _handle_codeblock),
 
             include('inline'),
         ],
@@ -570,19 +568,19 @@ class MarkdownLexer(RegexLexer):
             # escape
             (r'\\.', Text),
             # inline code
-            (r'([^`])(`[^`\n]+`)', bygroups(Text, String.Backtick)),
+            (r'([^`]?)(`[^`\n]+`)', bygroups(Text, String.Backtick)),
             # warning: the following rules eat outer tags.
             # eg. **foo _bar_ baz** => foo and baz are not recognized as bold
             # bold fenced by '**'
-            (r'(\*\*[^* \n][^*\n]*\*\*)', bygroups(Generic.Strong)),
-            # bold fenced by '__'
-            (r'(\_\_[^_ \n][^_\n]*\_\_)', bygroups(Generic.Strong)),
+            (r'([^\*]?)(\*\*[^* \n][^*\n]*\*\*)', bygroups(Text, Generic.Strong)),
+            # bold fenced by '__'
+            (r'([^_]?)(__[^_ \n][^_\n]*__)', bygroups(Text, Generic.Strong)),
             # italics fenced by '*'
-            (r'(\*[^* \n][^*\n]*\*)', bygroups(Generic.Emph)),
+            (r'([^\*]?)(\*[^* \n][^*\n]*\*)', bygroups(Text, Generic.Emph)),
             # italics fenced by '_'
-            (r'(\_[^_ \n][^_\n]*\_)', bygroups(Generic.Emph)),
+            (r'([^_]?)(_[^_ \n][^_\n]*_)', bygroups(Text, Generic.Emph)),
             # strikethrough
-            (r'([^~]*)(~~[^~]+~~)', bygroups(Text, Generic.Deleted)),
+            (r'([^~]?)(~~[^~ \n][^~\n]*~~)', bygroups(Text, Generic.Deleted)),
             # mentions and topics (twitter and github stuff)
             (r'[@#][\w/:]+', Name.Entity),
             # (image?) links eg: ![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)
index a4493f745beb862875bbf423dfd1d98e32181a25..c0426ee389b10649866b491ddca70289c3d68cec 100644 (file)
@@ -5,7 +5,7 @@
 
     Just export lexers that were contained in this module.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 722031135b83ffd18dcd33fad2644e9ccd642572..578848623223292cb90318e3c2e8a24dec6a0b8a 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Matlab and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -137,7 +137,7 @@ class MatlabLexer(RegexLexer):
             (r'.', Comment.Multiline),
         ],
         'deffunc': [
-            (r'(\s*)(?:(.+)(\s*)(=)(\s*))?(.+)(\()(.*)(\))(\s*)',
+            (r'(\s*)(?:(\S+)(\s*)(=)(\s*))?(.+)(\()(.*)(\))(\s*)',
              bygroups(Whitespace, Text, Whitespace, Punctuation,
                       Whitespace, Name.Function, Punctuation, Text,
                       Punctuation, Whitespace), '#pop'),
@@ -638,7 +638,7 @@ class OctaveLexer(RegexLexer):
             (r"[^']*'", String, '#pop'),
         ],
         'deffunc': [
-            (r'(\s*)(?:(.+)(\s*)(=)(\s*))?(.+)(\()(.*)(\))(\s*)',
+            (r'(\s*)(?:(\S+)(\s*)(=)(\s*))?(.+)(\()(.*)(\))(\s*)',
              bygroups(Whitespace, Text, Whitespace, Punctuation,
                       Whitespace, Name.Function, Punctuation, Text,
                       Punctuation, Whitespace), '#pop'),
@@ -710,7 +710,7 @@ class ScilabLexer(RegexLexer):
             (r'.', String, '#pop'),
         ],
         'deffunc': [
-            (r'(\s*)(?:(.+)(\s*)(=)(\s*))?(.+)(\()(.*)(\))(\s*)',
+            (r'(\s*)(?:(\S+)(\s*)(=)(\s*))?(.+)(\()(.*)(\))(\s*)',
              bygroups(Whitespace, Text, Whitespace, Punctuation,
                       Whitespace, Name.Function, Punctuation, Text,
                       Punctuation, Whitespace), '#pop'),
index 4c6bbd5f1aec0a9e24c5fa4462b939065826238e..a7c93320e3b0b66827b2857d317f093f3d6913eb 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Multipurpose Internet Mail Extensions (MIME) data.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 8ca8ce3ebed5a93ed5567524c48be6f462076ebc..be7ea7f71cc67e7fb39955a1dc1860855257768b 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for ML family languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -142,7 +142,7 @@ class SMLLexer(RegexLexer):
             (r'#\s+(%s)' % symbolicid_re, Name.Label),
             # Some reserved words trigger a special, local lexer state change
             (r'\b(datatype|abstype)\b(?!\')', Keyword.Reserved, 'dname'),
-            (r'(?=\b(exception)\b(?!\'))', Text, ('ename')),
+            (r'\b(exception)\b(?!\')', Keyword.Reserved, 'ename'),
             (r'\b(functor|include|open|signature|structure)\b(?!\')',
              Keyword.Reserved, 'sname'),
             (r'\b(type|eqtype)\b(?!\')', Keyword.Reserved, 'tname'),
@@ -315,15 +315,14 @@ class SMLLexer(RegexLexer):
         'ename': [
             include('whitespace'),
 
-            (r'(exception|and)\b(\s+)(%s)' % alphanumid_re,
+            (r'(and\b)(\s+)(%s)' % alphanumid_re,
              bygroups(Keyword.Reserved, Text, Name.Class)),
-            (r'(exception|and)\b(\s*)(%s)' % symbolicid_re,
+            (r'(and\b)(\s*)(%s)' % symbolicid_re,
              bygroups(Keyword.Reserved, Text, Name.Class)),
             (r'\b(of)\b(?!\')', Keyword.Reserved),
+            (r'(%s)|(%s)' % (alphanumid_re, symbolicid_re), Name.Class),
 
-            include('breakout'),
-            include('core'),
-            (r'\S+', Error),
+            default('#pop'),
         ],
 
         'datcon': [
@@ -445,6 +444,7 @@ class OcamlLexer(RegexLexer):
         ],
     }
 
+
 class OpaLexer(RegexLexer):
     """
     Lexer for the Opa language (http://opalang.org).
index 5a9071d6e3468ba8e780134b90739be7def84aa2..0e976e2fea25f1ed2ea0061d0ca0711db3baf8b1 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for modeling languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 331b18acf19f93c77998789c2999733c54b805e3..142dedbfcb8205fcbf8fc59456f0dcf5c65df11e 100644 (file)
@@ -5,7 +5,7 @@
 
     Multi-Dialect Lexer for Modula-2.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -228,8 +228,8 @@ class Modula2Lexer(RegexLexer):
             (r'[0-9A-F]+H', Number.Hex),
         ],
         'string_literals': [
-            (r"'(\\\\|\\'|[^'])*'", String),  # single quoted string
-            (r'"(\\\\|\\"|[^"])*"', String),  # double quoted string
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ],
         'digraph_operators': [
             # Dot Product Operator
index 311fa172b014034226d96e58670878faa7c6abc8..8498179c97eece561bd382b49175259f15170788 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Monte programming language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 02cc5e3e4ec8973c03457fd95135ef91d01dae4b..02bd665709f5dc65e401cf4ce1ede383aea2cc19 100644 (file)
@@ -6,7 +6,7 @@
     Lexers for the mosel language.
     http://www.fico.com/en/products/fico-xpress-optimization
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6e094e00d15923bab1c243eac981c1cd1405728b..1d9e1760c94a85521426a5e1deca71069fa9ab12 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for NCAR Command Language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 14816eba2c950a0a806140fb2440dce6280473ee..74051405b68aad419c8f83a5c610e226a043b813 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Nim language (formerly known as Nimrod).
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d96cef590407db1f07f4e82783ce12973f1dcead..ddc1bfc4f839c200aee1de42ab9d668691c0b93d 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Nit language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 713348e82b8982543a1473577fc8796a3da3cfa6..8c4c91878672b053c50c367e32d2f07fcc06bcd5 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the NixOS Nix language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 8934997a9b8f3e344807756dc8b226a2852ddd66..53db0797ddfc9315378cbeda3c1299796fe1ce86 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Oberon family languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3a1c3f6523a84b5ff204bc2a8ef974036fcec564..38ac9bb052b13a0b9e08776f3feaf9d15167eeb3 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Objective-C family languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -261,11 +261,11 @@ class LogosLexer(ObjectiveCppLexer):
              'logos_classname'),
             (r'(%hook|%group)(\s+)([a-zA-Z$_][\w$]+)',
              bygroups(Keyword, Text, Name.Class)),
-            (r'(%config)(\s*\(\s*)(\w+)(\s*=\s*)(.*?)(\s*\)\s*)',
+            (r'(%config)(\s*\(\s*)(\w+)(\s*=)(.*?)(\)\s*)',
              bygroups(Keyword, Text, Name.Variable, Text, String, Text)),
             (r'(%ctor)(\s*)(\{)', bygroups(Keyword, Text, Punctuation),
              'function'),
-            (r'(%new)(\s*)(\()(\s*.*?\s*)(\))',
+            (r'(%new)(\s*)(\()(.*?)(\))',
              bygroups(Keyword, Text, Keyword, String, Keyword)),
             (r'(\s*)(%end)(\s*)', bygroups(Text, Keyword, Text)),
             inherit,
index e0e0f249bb17a202e6732f6f3478503f5469d38b..f4f3d62c93d7444e3a581632fa65fe723c0a8afb 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Ooc language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 8cdedcfc9bf94dfee2c15bb7639b3bd77dc51250..02768c5c9b99bc610fe53065c86f4afd1fd4727d 100644 (file)
@@ -5,7 +5,7 @@
 
     Just export lexer classes previously contained in this module.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 1b626b08e8bd13dee798ea6c2e4efedbc5072846..66868814dbdc3fc2c753f12de957bbc905827e15 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for ParaSail.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 13a3a83c39f4551594f7857cf843d5e0199e7eb1..8b6340d0be7652fa6294cfd662478149976a5cca 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for parser generators.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -64,10 +64,10 @@ class RagelLexer(RegexLexer):
             (r'[+-]?[0-9]+', Number.Integer),
         ],
         'literals': [
-            (r'"(\\\\|\\"|[^"])*"', String),              # double quote string
-            (r"'(\\\\|\\'|[^'])*'", String),              # single quote string
-            (r'\[(\\\\|\\\]|[^\]])*\]', String),          # square bracket literals
-            (r'/(?!\*)(\\\\|\\/|[^/])*/', String.Regex),  # regular expressions
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
+            (r'\[(\\\\|\\[^\\]|[^\\\]])*\]', String),          # square bracket literals
+            (r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/', String.Regex),  # regular expressions
         ],
         'identifiers': [
             (r'[a-zA-Z_]\w*', Name.Variable),
@@ -106,15 +106,15 @@ class RagelLexer(RegexLexer):
                 r'[^\\]\\[{}]',  # allow escaped { or }
 
                 # strings and comments may safely contain unsafe characters
-                r'"(\\\\|\\"|[^"])*"',  # double quote string
-                r"'(\\\\|\\'|[^'])*'",  # single quote string
+                r'"(\\\\|\\[^\\]|[^"\\])*"',
+                r"'(\\\\|\\[^\\]|[^'\\])*'",
                 r'//.*$\n?',            # single line comment
                 r'/\*(.|\n)*?\*/',      # multi-line javadoc-style comment
                 r'\#.*$\n?',            # ruby comment
 
                 # regular expression: There's no reason for it to start
                 # with a * and this stops confusion with comments.
-                r'/(?!\*)(\\\\|\\/|[^/])*/',
+                r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
 
                 # / is safe now that we've handled regex and javadoc comments
                 r'/',
@@ -147,12 +147,12 @@ class RagelEmbeddedLexer(RegexLexer):
                 r'%(?=[^%]|$)',   # a single % sign is okay, just not 2 of them
 
                 # strings and comments may safely contain unsafe characters
-                r'"(\\\\|\\"|[^"])*"',  # double quote string
-                r"'(\\\\|\\'|[^'])*'",  # single quote string
+                r'"(\\\\|\\[^\\]|[^"\\])*"',
+                r"'(\\\\|\\[^\\]|[^'\\])*'",
                 r'/\*(.|\n)*?\*/',      # multi-line javadoc-style comment
                 r'//.*$\n?',  # single line comment
                 r'\#.*$\n?',  # ruby/ragel comment
-                r'/(?!\*)(\\\\|\\/|[^/])*/',  # regular expression
+                r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',  # regular expression
 
                 # / is safe now that we've handled regex and javadoc comments
                 r'/',
@@ -182,7 +182,7 @@ class RagelEmbeddedLexer(RegexLexer):
 
                     # specifically allow regex followed immediately by *
                     # so it doesn't get mistaken for a comment
-                    r'/(?!\*)(\\\\|\\/|[^/])*/\*',
+                    r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/\*',
 
                     # allow / as long as it's not followed by another / or by a *
                     r'/(?=[^/*]|$)',
@@ -193,9 +193,9 @@ class RagelEmbeddedLexer(RegexLexer):
                 )) + r')+',
 
                 # strings and comments may safely contain unsafe characters
-                r'"(\\\\|\\"|[^"])*"',      # double quote string
-                r"'(\\\\|\\'|[^'])*'",      # single quote string
-                r"\[(\\\\|\\\]|[^\]])*\]",  # square bracket literal
+                r'"(\\\\|\\[^\\]|[^"\\])*"',
+                r"'(\\\\|\\[^\\]|[^'\\])*'",
+                r"\[(\\\\|\\[^\\]|[^\]\\])*\]",  # square bracket literal
                 r'/\*(.|\n)*?\*/',          # multi-line javadoc-style comment
                 r'//.*$\n?',                # single line comment
                 r'\#.*$\n?',                # ruby/ragel comment
@@ -416,8 +416,8 @@ class AntlrLexer(RegexLexer):
             (r':', Punctuation),
 
             # literals
-            (r"'(\\\\|\\'|[^'])*'", String),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'<<([^>]|>[^>])>>', String),
             # identifiers
             # Tokens start with capital letter.
@@ -456,14 +456,14 @@ class AntlrLexer(RegexLexer):
                 r'[^${}\'"/\\]+',  # exclude unsafe characters
 
                 # strings and comments may safely contain unsafe characters
-                r'"(\\\\|\\"|[^"])*"',  # double quote string
-                r"'(\\\\|\\'|[^'])*'",  # single quote string
+                r'"(\\\\|\\[^\\]|[^"\\])*"',
+                r"'(\\\\|\\[^\\]|[^'\\])*'",
                 r'//.*$\n?',            # single line comment
                 r'/\*(.|\n)*?\*/',      # multi-line javadoc-style comment
 
                 # regular expression: There's no reason for it to start
                 # with a * and this stops confusion with comments.
-                r'/(?!\*)(\\\\|\\/|[^/])*/',
+                r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
 
                 # backslashes are okay, as long as we are not backslashing a %
                 r'\\(?!%)',
@@ -483,14 +483,14 @@ class AntlrLexer(RegexLexer):
                 r'[^$\[\]\'"/]+',  # exclude unsafe characters
 
                 # strings and comments may safely contain unsafe characters
-                r'"(\\\\|\\"|[^"])*"',  # double quote string
-                r"'(\\\\|\\'|[^'])*'",  # single quote string
+                r'"(\\\\|\\[^\\]|[^"\\])*"',
+                r"'(\\\\|\\[^\\]|[^'\\])*'",
                 r'//.*$\n?',            # single line comment
                 r'/\*(.|\n)*?\*/',      # multi-line javadoc-style comment
 
                 # regular expression: There's no reason for it to start
                 # with a * and this stops confusion with comments.
-                r'/(?!\*)(\\\\|\\/|[^/])*/',
+                r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
 
                 # Now that we've handled regex and javadoc comments
                 # it's safe to let / through.
@@ -701,8 +701,8 @@ class TreetopBaseLexer(RegexLexer):
         'rule': [
             include('space'),
             include('end'),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'([A-Za-z_]\w*)(:)', bygroups(Name.Label, Punctuation)),
             (r'[A-Za-z_]\w*', Name),
             (r'[()]', Punctuation),
index 6756e234114660b36880b281d52961ae0424c85e..5ba400fd8dd9fc71aa8fff98a376965f82ccf624 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Pascal family languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index bc06d0d54ca5f13790991119913217938496a90d..12cd52c1d9393d3e85cbdf7300e766907e9e5732 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Pawn languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 95fb94e7e39cf9c11b7fde0da592cefeff281332..3a3a60e47fb4947d8b5abe032424e46ebca99d48 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Perl, Raku and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index aab502e26193a9e5f6f9df2b560bc6fde350e24a..417cb2ff7832d294a690140bacd9311ab12af118 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for PHP and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -81,8 +81,8 @@ class ZephirLexer(RegexLexer):
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'0x[0-9a-fA-F]+', Number.Hex),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ]
     }
 
index 9acc3ffb2dd92b713a7de86bd13d538c3ccaf95a..25ca21150fc861e07a91880598cf892146f31499 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Pointless.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d13338b264c5134c6ddf645f6c77506c03ae1865..94bf695290bcaab498a80d04b9bb82c3e8f0a458 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Pony and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 36c6d69dba56431be662bfb001a721963a77ed7c..dcfce0d6aa2314419bb1e0ea81bfe2312c69f33a 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Praat
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 94f4024cdccb946ec5cccd99f8c0685c1796b178..1d9ad4dcd1f2de5b6baa6272c72048dfe1f74252 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Prolog and Prolog-like languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -227,7 +227,7 @@ class LogtalkLexer(RegexLexer):
             # Existential quantifier
             (r'\^', Operator),
             # Strings
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # Punctuation
             (r'[()\[\],.|]', Text),
             # Atoms
@@ -277,7 +277,7 @@ class LogtalkLexer(RegexLexer):
             (r"[a-z][a-zA-Z0-9_]*", Text),
             (r"'", String, 'quoted_atom'),
             # Strings
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # End of entity-opening directive
             (r'([)]\.)', Text, 'root'),
             # Scope operator
index 1806920888c5e624f33705274420f31c02bcff39..7f31aeada32955351412151fbde24e59a62208e9 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Prometheus Query Language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 051371f9e755cb17582876a832795afd4921b0d8..2abca04b92465857b28c2d73b91af41b587249ca 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Python and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 680d3fb8a4ed36928be4dadb02cfedf859716b8f..c93fec969d8f6db668c856acb4d89dbeed3ab70f 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for QVT Operational language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6d841a3a6621997f1a843ebeef8e4702ad6a8f1b..1bde7fa46e9cb18e15e0924c32bbed5a876f3144 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the R/S languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 917807aac30fbdf85d9e7859f1f2fcdece966bfb..7f4208a9fe16fdd0f9e5f900d7735f26dd3cd6cb 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for semantic web and RDF query languages and markup.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 211060b4d689e064f1f5eb517ef96fd7a83a01a5..79993ad3a4a3cdc8fdd406afedd6843dfb0b304b 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the REBOL and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 28dff49cae8d033d67730a38b288f810f5f2ca59..263b8f4b094293a88c4add408f2fb0037b906c3d 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for resource definition files.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 490d1e07dfc6b09ed62671d7cba269108e65e51c..ff2d1c7908b81efa5b45c10c2c862a2c1dca945e 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the Ride programming language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 9fb8ab521665723e14ba0829a7375e0e46314c56..8d8436163d484c393ceda8d306a80e06f42022d7 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Relax-NG Compact syntax
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 2419ee519c2522257f97ff9fc7dbc03ba663631f..4a589cbfb8a604a737ac4692e079c98a18147d53 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Roboconf DSL.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index cd8082920064d8e066e8faed5c410af97b8a9c8b..a8839ad6f861fbde30822b0cfe2666a3235f929f 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Robot Framework.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e16cd711dffc1a47829f4e15ab73c1706008543f..9a4fbfb87b9ffdf1c8eeeeea2c201301db67d5a4 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Ruby and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -57,8 +57,11 @@ class RubyLexer(ExtendedRegexLexer):
 
         ctx.pos = match.start(5)
         ctx.end = match.end(5)
-        # this may find other heredocs
-        yield from self.get_tokens_unprocessed(context=ctx)
+        # this may find other heredocs, so limit the recursion depth
+        if len(heredocstack) < 100:
+            yield from self.get_tokens_unprocessed(context=ctx)
+        else:
+            yield ctx.pos, String.Heredoc, match.group(5)
         ctx.pos = match.end()
 
         if outermost:
@@ -107,7 +110,7 @@ class RubyLexer(ExtendedRegexLexer):
             # easy ones
             (r'\:@{0,2}[a-zA-Z_]\w*[!?]?', String.Symbol),
             (words(RUBY_OPERATORS, prefix=r'\:@{0,2}'), String.Symbol),
-            (r":'(\\\\|\\'|[^'])*'", String.Symbol),
+            (r":'(\\\\|\\[^\\]|[^'\\])*'", String.Symbol),
             (r':"', String.Symbol, 'simple-sym'),
             (r'([a-zA-Z_]\w*)(:)(?!:)',
              bygroups(String.Symbol, Punctuation)),  # Since Ruby 1.9
@@ -449,26 +452,26 @@ class FancyLexer(RegexLexer):
     tokens = {
         # copied from PerlLexer:
         'balanced-regex': [
-            (r'/(\\\\|\\/|[^/])*/[egimosx]*', String.Regex, '#pop'),
-            (r'!(\\\\|\\!|[^!])*![egimosx]*', String.Regex, '#pop'),
+            (r'/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*', String.Regex, '#pop'),
+            (r'!(\\\\|\\[^\\]|[^!\\])*![egimosx]*', String.Regex, '#pop'),
             (r'\\(\\\\|[^\\])*\\[egimosx]*', String.Regex, '#pop'),
-            (r'\{(\\\\|\\\}|[^}])*\}[egimosx]*', String.Regex, '#pop'),
-            (r'<(\\\\|\\>|[^>])*>[egimosx]*', String.Regex, '#pop'),
-            (r'\[(\\\\|\\\]|[^\]])*\][egimosx]*', String.Regex, '#pop'),
-            (r'\((\\\\|\\\)|[^)])*\)[egimosx]*', String.Regex, '#pop'),
-            (r'@(\\\\|\\@|[^@])*@[egimosx]*', String.Regex, '#pop'),
-            (r'%(\\\\|\\%|[^%])*%[egimosx]*', String.Regex, '#pop'),
-            (r'\$(\\\\|\\\$|[^$])*\$[egimosx]*', String.Regex, '#pop'),
+            (r'\{(\\\\|\\[^\\]|[^}\\])*\}[egimosx]*', String.Regex, '#pop'),
+            (r'<(\\\\|\\[^\\]|[^>\\])*>[egimosx]*', String.Regex, '#pop'),
+            (r'\[(\\\\|\\[^\\]|[^\]\\])*\][egimosx]*', String.Regex, '#pop'),
+            (r'\((\\\\|\\[^\\]|[^)\\])*\)[egimosx]*', String.Regex, '#pop'),
+            (r'@(\\\\|\\[^\\]|[^@\\])*@[egimosx]*', String.Regex, '#pop'),
+            (r'%(\\\\|\\[^\\]|[^%\\])*%[egimosx]*', String.Regex, '#pop'),
+            (r'\$(\\\\|\\[^\\]|[^$\\])*\$[egimosx]*', String.Regex, '#pop'),
         ],
         'root': [
             (r'\s+', Text),
 
             # balanced delimiters (copied from PerlLexer):
-            (r's\{(\\\\|\\\}|[^}])*\}\s*', String.Regex, 'balanced-regex'),
-            (r's<(\\\\|\\>|[^>])*>\s*', String.Regex, 'balanced-regex'),
-            (r's\[(\\\\|\\\]|[^\]])*\]\s*', String.Regex, 'balanced-regex'),
-            (r's\((\\\\|\\\)|[^)])*\)\s*', String.Regex, 'balanced-regex'),
-            (r'm?/(\\\\|\\/|[^/\n])*/[gcimosx]*', String.Regex),
+            (r's\{(\\\\|\\[^\\]|[^}\\])*\}\s*', String.Regex, 'balanced-regex'),
+            (r's<(\\\\|\\[^\\]|[^>\\])*>\s*', String.Regex, 'balanced-regex'),
+            (r's\[(\\\\|\\[^\\]|[^\]\\])*\]\s*', String.Regex, 'balanced-regex'),
+            (r's\((\\\\|\\[^\\]|[^)\\])*\)\s*', String.Regex, 'balanced-regex'),
+            (r'm?/(\\\\|\\[^\\]|[^///\n])*/[gcimosx]*', String.Regex),
             (r'm(?=[/!\\{<\[(@%$])', String.Regex, 'balanced-regex'),
 
             # Comments
@@ -476,9 +479,9 @@ class FancyLexer(RegexLexer):
             # Symbols
             (r'\'([^\'\s\[\](){}]+|\[\])', String.Symbol),
             # Multi-line DoubleQuotedString
-            (r'"""(\\\\|\\"|[^"])*"""', String),
+            (r'"""(\\\\|\\[^\\]|[^\\])*?"""', String),
             # DoubleQuotedString
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # keywords
             (r'(def|class|try|catch|finally|retry|return|return_local|match|'
              r'case|->|=>)\b', Keyword),
index 70f4b8dadfcc10ac883d6f2af1505ed52d676f29..bab40370b03ddf859f5655c5c0ad7604041784f2 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Rust language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 85b07adb811d6abfd9699e8896a3a8c71a2573df..302234635f5f3fb7fcee923fcadd8a9fdddbb812 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for SAS.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6acc64f237ffc398c7a92ea730527baba7d19d39..492c8fce5c512ed083287403f1758dae31bda8e3 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for scdoc, a simple man page generator.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 885fed4749d08855fdea4bf2d2b5eba672fd4735..f8e9f20925408f6a0495a4a4b08b5b0352e31156 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for scripting and embedded languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -283,7 +283,7 @@ class ChaiscriptLexer(RegexLexer):
             (r'0x[0-9a-fA-F]+', Number.Hex),
             (r'[0-9]+', Number.Integer),
             (r'"', String.Double, 'dqstring'),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ],
         'dqstring': [
             (r'\$\{[^"}]+?\}', String.Interpol),
@@ -689,7 +689,7 @@ class AppleScriptLexer(RegexLexer):
             (r'\b(%s)s?\b' % '|'.join(StudioClasses), Name.Builtin),
             (r'\b(%s)\b' % '|'.join(StudioCommands), Name.Builtin),
             (r'\b(%s)\b' % '|'.join(References), Name.Builtin),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
             (r'\b(%s)\b' % Identifiers, Name.Variable),
             (r'[-+]?(\d+\.\d*|\d*\.\d+)(E[-+][0-9]+)?', Number.Float),
             (r'[-+]?\d+', Number.Integer),
@@ -833,7 +833,7 @@ class MOOCodeLexer(RegexLexer):
             # Numbers
             (r'(0|[1-9][0-9_]*)', Number.Integer),
             # Strings
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             # exceptions
             (r'(E_PERM|E_DIV)', Name.Exception),
             # db-refs
@@ -924,7 +924,7 @@ class HybrisLexer(RegexLexer):
                 'Runnable', 'CGI', 'ClientSocket', 'Socket', 'ServerSocket',
                 'File', 'Console', 'Directory', 'Exception'), suffix=r'\b'),
              Keyword.Type),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'", String.Char),
             (r'(\.)([a-zA-Z_]\w*)',
              bygroups(Operator, Name.Attribute)),
index 6dfd275af54858e693c3d394ffaed498070235ef..02dab490e4eadcb721e358a40bb3aaf03ce0bb08 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Smart Game Format (sgf) file format.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 713d432111ab8f15b08e60cf4750e855f94d4e15..d918b70ae0864f49a06ad071b5b0551a5858280e 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for various shells.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -57,7 +57,7 @@ class BashLexer(RegexLexer):
             (r'\$', Text),
         ],
         'basic': [
-            (r'\b(if|fi|else|while|do|done|for|then|return|function|case|'
+            (r'\b(if|fi|else|while|in|do|done|for|then|return|function|case|'
              r'select|continue|until|esac|elif)(\s*)\b',
              bygroups(Keyword, Text)),
             (r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|'
@@ -232,7 +232,7 @@ class BashSessionLexer(ShellSessionBaseLexer):
     _innerLexerCls = BashLexer
     _ps1rgx = re.compile(
         r'^((?:(?:\[.*?\])|(?:\(\S+\))?(?:| |sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' \
-        r'?|\[\S+[@:][^\n]+\].+))\s*[$#%])(.*\n?)')
+        r'?|\[\S+[@:][^\n]+\].+))\s*[$#%]\s*)(.*\n?)')
     _ps2 = '>'
 
 
index 9d0b16e568840e4f901f1aa895cba748d012b174..6335b8ed8665abc5d24b3d73ebff1697109716cb 100644 (file)
@@ -14,7 +14,7 @@
     https://tools.ietf.org/html/rfc5429
     https://tools.ietf.org/html/rfc8580
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 13f810775c354a62c393396b618b6e2826997c33..6a0ae0f150ad2095c9f3d992feba4794bbc04e71 100644 (file)
@@ -6,7 +6,7 @@
     Lexer for the `Slash <https://github.com/arturadib/Slash-A>`_ programming
     language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b7df5f33064d6f4eb4f2a847f894a6be8e75f16c..8689af09a4fe5934cc2e60f87315e5e497319bdb 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Smalltalk and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index a5500d93122bdebe808c0c7c1d717bb05474e482..660e0a93fd307796739d05d5eb383977c331fd48 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the SMV languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b0fdb01c84fad373d4d0d98fd974449b208ce5a8..bc2feb72566c7c0a69cd34af7ee29cc28077ee59 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the SNOBOL language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index af0672ee7de17d20c3a2f7e589c20daf225c8ae4..cc450f281314c23d6167be8834a454f53fff9d03 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Solidity.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 84a924d90336c468afe6a9a94ff2877718da4439..5e369d0554bd590a03ca6cd9387b6d836077b846 100644 (file)
@@ -5,7 +5,7 @@
 
     Special lexers.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -39,7 +39,7 @@ class TextLexer(Lexer):
 
 _ttype_cache = {}
 
-line_re = re.compile(b'.*?\n')
+line_re = re.compile('.*?\n')
 
 
 class RawTokenLexer(Lexer):
@@ -65,20 +65,20 @@ class RawTokenLexer(Lexer):
         Lexer.__init__(self, **options)
 
     def get_tokens(self, text):
-        if isinstance(text, str):
-            # raw token stream never has any non-ASCII characters
-            text = text.encode('ascii')
-        if self.compress == 'gz':
-            import gzip
-            gzipfile = gzip.GzipFile('', 'rb', 9, BytesIO(text))
-            text = gzipfile.read()
-        elif self.compress == 'bz2':
-            import bz2
-            text = bz2.decompress(text)
-
-        # do not call Lexer.get_tokens() because we do not want Unicode
-        # decoding to occur, and stripping is not optional.
-        text = text.strip(b'\n') + b'\n'
+        if self.compress:
+            if isinstance(text, str):
+                text = text.encode('latin1')
+            if self.compress == 'gz':
+                import gzip
+                gzipfile = gzip.GzipFile('', 'rb', 9, BytesIO(text))
+                text = gzipfile.read()
+            elif self.compress == 'bz2':
+                import bz2
+                text = bz2.decompress(text)
+            text = text.decode('latin1')
+
+        # do not call Lexer.get_tokens() because stripping is not optional.
+        text = text.strip('\n') + '\n'
         for i, t, v in self.get_tokens_unprocessed(text):
             yield t, v
 
@@ -86,9 +86,9 @@ class RawTokenLexer(Lexer):
         length = 0
         for match in line_re.finditer(text):
             try:
-                ttypestr, val = match.group().split(b'\t', 1)
+                ttypestr, val = match.group().rstrip().split('\t', 1)
             except ValueError:
-                val = match.group().decode('ascii', 'replace')
+                val = match.group()
                 ttype = Error
             else:
                 ttype = _ttype_cache.get(ttypestr)
@@ -100,6 +100,6 @@ class RawTokenLexer(Lexer):
                             raise ValueError('malformed token name')
                         ttype = getattr(ttype, ttype_)
                     _ttype_cache[ttypestr] = ttype
-                val = val[2:-2].decode('unicode-escape')
+                val = val[1:-1].encode().decode('unicode-escape')
             yield length, ttype, val
             length += len(val)
index e27e0ddb4f8d138b8cc3bbde5ee77ebd577a2640..7a79fcf63c92664de486fc1ba4b3d628b88272e0 100644 (file)
@@ -34,7 +34,7 @@
     The ``tests/examplefiles`` contains a few test files with data to be
     parsed by these lexers.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -397,14 +397,14 @@ class SqlLexer(RegexLexer):
                 'CHARACTERISTICS', 'CHARACTER_LENGTH', 'CHARACTER_SET_CATALOG',
                 'CHARACTER_SET_NAME', 'CHARACTER_SET_SCHEMA', 'CHAR_LENGTH', 'CHECK',
                 'CHECKED', 'CHECKPOINT', 'CLASS', 'CLASS_ORIGIN', 'CLOB', 'CLOSE',
-                'CLUSTER', 'COALSECE', 'COBOL', 'COLLATE', 'COLLATION',
+                'CLUSTER', 'COALESCE', 'COBOL', 'COLLATE', 'COLLATION',
                 'COLLATION_CATALOG', 'COLLATION_NAME', 'COLLATION_SCHEMA', 'COLUMN',
                 'COLUMN_NAME', 'COMMAND_FUNCTION', 'COMMAND_FUNCTION_CODE', 'COMMENT',
                 'COMMIT', 'COMMITTED', 'COMPLETION', 'CONDITION_NUMBER', 'CONNECT',
                 'CONNECTION', 'CONNECTION_NAME', 'CONSTRAINT', 'CONSTRAINTS',
                 'CONSTRAINT_CATALOG', 'CONSTRAINT_NAME', 'CONSTRAINT_SCHEMA',
                 'CONSTRUCTOR', 'CONTAINS', 'CONTINUE', 'CONVERSION', 'CONVERT',
-                'COPY', 'CORRESPONTING', 'COUNT', 'CREATE', 'CREATEDB', 'CREATEUSER',
+                'COPY', 'CORRESPONDING', 'COUNT', 'CREATE', 'CREATEDB', 'CREATEUSER',
                 'CROSS', 'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH',
                 'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
                 'CURSOR', 'CURSOR_NAME', 'CYCLE', 'DATA', 'DATABASE',
@@ -440,9 +440,9 @@ class SqlLexer(RegexLexer):
                 'OPEN', 'OPERATION', 'OPERATOR', 'OPTION', 'OPTIONS', 'OR', 'ORDER',
                 'ORDINALITY', 'OUT', 'OUTER', 'OUTPUT', 'OVERLAPS', 'OVERLAY',
                 'OVERRIDING', 'OWNER', 'PAD', 'PARAMETER', 'PARAMETERS', 'PARAMETER_MODE',
-                'PARAMATER_NAME', 'PARAMATER_ORDINAL_POSITION',
+                'PARAMETER_NAME', 'PARAMETER_ORDINAL_POSITION',
                 'PARAMETER_SPECIFIC_CATALOG', 'PARAMETER_SPECIFIC_NAME',
-                'PARAMATER_SPECIFIC_SCHEMA', 'PARTIAL', 'PASCAL', 'PENDANT', 'PERIOD', 'PLACING',
+                'PARAMETER_SPECIFIC_SCHEMA', 'PARTIAL', 'PASCAL', 'PENDANT', 'PERIOD', 'PLACING',
                 'PLI', 'POSITION', 'POSTFIX', 'PRECEEDS', 'PRECISION', 'PREFIX', 'PREORDER',
                 'PREPARE', 'PRESERVE', 'PRIMARY', 'PRIOR', 'PRIVILEGES', 'PROCEDURAL',
                 'PROCEDURE', 'PUBLIC', 'READ', 'READS', 'RECHECK', 'RECURSIVE', 'REF',
@@ -462,8 +462,8 @@ class SqlLexer(RegexLexer):
                 'SUBLIST', 'SUBSTRING', 'SUCCEEDS', 'SUM', 'SYMMETRIC', 'SYSID', 'SYSTEM',
                 'SYSTEM_USER', 'TABLE', 'TABLE_NAME', ' TEMP', 'TEMPLATE', 'TEMPORARY',
                 'TERMINATE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR',
-                'TIMEZONE_MINUTE', 'TO', 'TOAST', 'TRAILING', 'TRANSATION',
-                'TRANSACTIONS_COMMITTED', 'TRANSACTIONS_ROLLED_BACK', 'TRANSATION_ACTIVE',
+                'TIMEZONE_MINUTE', 'TO', 'TOAST', 'TRAILING', 'TRANSACTION',
+                'TRANSACTIONS_COMMITTED', 'TRANSACTIONS_ROLLED_BACK', 'TRANSACTION_ACTIVE',
                 'TRANSFORM', 'TRANSFORMS', 'TRANSLATE', 'TRANSLATION', 'TREAT', 'TRIGGER',
                 'TRIGGER_CATALOG', 'TRIGGER_NAME', 'TRIGGER_SCHEMA', 'TRIM', 'TRUE',
                 'TRUNCATE', 'TRUSTED', 'TYPE', 'UNCOMMITTED', 'UNDER', 'UNENCRYPTED',
index fbb5fdcfaaa6bfca0833b68387d53de7df3695b8..c50112067e09a784cb280e954e57e89504fb681f 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Stata
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 81865487b16ce5c673d9aa1a665397d13501ca9f..1abd4ac8eb32f9628477280be405708db32efcf4 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for SuperCollider
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -84,8 +84,8 @@ class SuperColliderLexer(RegexLexer):
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'0x[0-9a-fA-F]+', Number.Hex),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ]
     }
 
index 0c679d689ba844b353ec5025421f797a267e22ff..03c0d0496b7a7bf640015c518045da2287b0d282 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Tcl and related languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 968504ab3ae85a8655dd6c332837c57370e80298..5c3346b4c8ed4cc2682a784add19edf221195eda 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for various template engines' markup.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -179,8 +179,8 @@ class SmartyLexer(RegexLexer):
             (r'(true|false|null)\b', Keyword.Constant),
             (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'[a-zA-Z_]\w*', Name.Attribute)
         ]
     }
@@ -252,8 +252,8 @@ class VelocityLexer(RegexLexer):
             (r'\$!?\{?', Punctuation, 'variable'),
             (r'\s+', Text),
             (r'[,:]', Punctuation),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r"0[xX][0-9a-fA-F]+[Ll]?", Number),
             (r"\b[0-9]+\b", Number),
             (r'(true|false|null)\b', Keyword.Constant),
@@ -371,8 +371,8 @@ class DjangoLexer(RegexLexer):
             (r'(loop|block|super|forloop)\b', Name.Builtin),
             (r'[a-zA-Z_][\w-]*', Name.Variable),
             (r'\.\w+', Name.Variable),
-            (r':?"(\\\\|\\"|[^"])*"', String.Double),
-            (r":?'(\\\\|\\'|[^'])*'", String.Single),
+            (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'([{}()\[\]+\-*/%,:~]|[><=]=?|!=)', Operator),
             (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
@@ -1405,7 +1405,7 @@ class EvoqueLexer(RegexLexer):
             # see doc for handling first name arg: /directives/evoque/
             # + minor inconsistency: the "name" in e.g. $overlay{name=site_base}
             # should be using(PythonLexer), not passed out as String
-            (r'(\$)(evoque|overlay)(\{(%)?)(\s*[#\w\-"\'.]+[^=,%}]+?)?'
+            (r'(\$)(evoque|overlay)(\{(%)?)(\s*[#\w\-"\'.]+)?'
              r'(.*?)((?(4)%)\})',
              bygroups(Punctuation, Name.Builtin, Punctuation, None,
                       String, using(PythonLexer), Punctuation)),
@@ -1735,7 +1735,7 @@ class LassoCssLexer(DelegatingLexer):
 
     def analyse_text(text):
         rv = LassoLexer.analyse_text(text) - 0.05
-        if re.search(r'\w+:.+?;', text):
+        if re.search(r'\w+:[^;]+;', text):
             rv += 0.1
         if 'padding:' in text:
             rv += 0.1
@@ -1834,8 +1834,8 @@ class HandlebarsLexer(RegexLexer):
             include('variable'),
 
             # borrowed from DjangoLexer
-            (r':?"(\\\\|\\"|[^"])*"', String.Double),
-            (r":?'(\\\\|\\'|[^'])*'", String.Single),
+            (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
         ]
@@ -2147,8 +2147,8 @@ class TwigLexer(RegexLexer):
             (_ident_inner, Name.Variable),
             (r'\.' + _ident_inner, Name.Variable),
             (r'\.[0-9]+', Number),
-            (r':?"(\\\\|\\"|[^"])*"', String.Double),
-            (r":?'(\\\\|\\'|[^'])*'", String.Single),
+            (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r'([{}()\[\]+\-*/,:~%]|\.\.|\?|:|\*\*|\/\/|!=|[><=]=?)', Operator),
             (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
@@ -2227,8 +2227,8 @@ class Angular2Lexer(RegexLexer):
 
             # Literals
             (r':?(true|false)', String.Boolean),
-            (r':?"(\\\\|\\"|[^"])*"', String.Double),
-            (r":?'(\\\\|\\'|[^'])*'", String.Single),
+            (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
             (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
 
index ef1a05e3f42458c4a089c83beb8ef3f202b99e61..05ad900b29f75fb51eaeb30e4b45e24ab369a4f1 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Tera Term macro files.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 919cc7746f270a6190e109e943fc10e612d4a8ef..b8707d2340593b6b7117c4900b51a3313589fda2 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for testing languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index a2733647547eb80dc38a23e3151ea97ab8ba1c4b..19a8fe033b19ea3d29b1d2edb9f3812cbc25ffcf 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for non-source code file types.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ea2d4cf25e0f9831a3ab56be81f38d10302d57e9..df25d1cd1c1369d1b318c530a6c4ab8a35691992 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for languages related to text processing.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -69,8 +69,8 @@ class AwkLexer(RegexLexer):
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'0x[0-9a-fA-F]+', Number.Hex),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ]
     }
 
index 6b3f8d9ecbd41aed9fd9f32757e892557d762f0e..d82201a8dafad24a29f0f891e3a67629cc786542 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for various text formats.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 487adf31059f6e204f71434129fefbb8a62ff4d4..75661d47e9186587e32869929636c4898220cc59 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for theorem-proving languages.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -30,6 +30,8 @@ class CoqLexer(RegexLexer):
     filenames = ['*.v']
     mimetypes = ['text/x-coq']
 
+    flags = re.UNICODE
+
     keywords1 = (
         # Vernacular commands
         'Section', 'Module', 'End', 'Require', 'Import', 'Export', 'Variable',
@@ -123,14 +125,15 @@ class CoqLexer(RegexLexer):
             (r'0[bB][01][01_]*', Number.Bin),
             (r'-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)', Number.Float),
 
-            (r"'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'",
-             String.Char),
+            (r"'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'", String.Char),
+
             (r"'.'", String.Char),
             (r"'", Keyword),  # a stray quote is another syntax element
 
             (r'"', String.Double, 'string'),
 
             (r'[~?][a-z][\w\']*:', Name),
+            (r'\S', Name.Builtin.Pseudo),
         ],
         'comment': [
             (r'[^(*)]+', Comment),
@@ -154,7 +157,7 @@ class CoqLexer(RegexLexer):
     }
 
     def analyse_text(text):
-        if 'qed' in text and 'tauto' in text:
+        if 'Qed' in text and 'Proof' in text:
             return 1
 
 
index 1d966ac872f8e8946c48110a29d058ebec46b24d..f11956a74368652540ed18662a01ce584a45b336 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Typographic Number Theory.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d10a283b787b31284d1e0aa0bf07f5ed07c35a02..6f518cbf777a436ee2c40c9a1a9ff40b18dfe7cf 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for RiverBed's TrafficScript (RTS) language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d33f5524c62a798ac12db87e386eb383ce4a919d..1689cd151216e978353708d5ed0b551262f4f954 100644 (file)
@@ -14,7 +14,7 @@
     `TypoScriptHtmlDataLexer`
         Lexer that highlights markers, constants and registers within html tags.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 95815907a6f5e25101aa0d97381ac3acce3660b5..13a80e810151b0ba230d5512c542f64154e742db 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Icon and Unicon languages, including ucode VM.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 7c11169d6324b86152e9f24f7166a85e1dbb2369..0640cc5c2df8b94e96b5def73c45d29c810dcc33 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for UrbiScript language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -117,11 +117,11 @@ class UrbiscriptLexer(ExtendedRegexLexer):
         ],
         'string.double': [
             (r'((?:\\\\|\\"|[^"])*?)(\\B\((\d+)\)\()', blob_callback),
-            (r'(\\\\|\\"|[^"])*?"', String.Double, '#pop'),
+            (r'(\\\\|\\[^\\]|[^"\\])*?"', String.Double, '#pop'),
         ],
         'string.single': [
             (r"((?:\\\\|\\'|[^'])*?)(\\B\((\d+)\)\()", blob_callback),
-            (r"(\\\\|\\'|[^'])*?'", String.Single, '#pop'),
+            (r"(\\\\|\\[^\\]|[^'\\])*?'", String.Single, '#pop'),
         ],
         # from http://pygments.org/docs/lexerdevelopment/#changing-states
         'comment': [
index d9d3f4482251e7712e31615053efdea183f8f255..a5ec4701f955086a5045b11f225e7409a9c6f32d 100644 (file)
@@ -5,7 +5,7 @@
 
     The module that parses Pixar's Universal Scene Description file format.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ecb91e1369d0f43e1a3c19037dcbff941198ccee..9d358bd7c5295916d60a406b3fa20a6c77b7a3bc 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Varnish configuration
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -61,7 +61,7 @@ class VCLLexer(RegexLexer):
              bygroups(Name.Attribute, Operator, Name.Variable.Global, Punctuation)),
             (r'(\.probe)(\s*=\s*)(\{)',
              bygroups(Name.Attribute, Operator, Punctuation), 'probe'),
-            (r'(\.\w+\b)(\s*=\s*)([^;]*)(\s*;)',
+            (r'(\.\w+\b)(\s*=\s*)([^;\s]*)(\s*;)',
              bygroups(Name.Attribute, Operator, using(this), Punctuation)),
             (r'\{', Punctuation, '#push'),
             (r'\}', Punctuation, '#pop'),
index 7ae0a2436e5586b71ff994f7d4328d72c9764bf0..1aeb55f05b816f9fb931113b63e0ba35cfd2cc20 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for Intermediate Verification Languages (IVLs).
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0fd6149207028af79f892fffe34514ebced82214..cb59e325f50cc323c0daff4e5e4c658d62b4d00b 100644 (file)
@@ -5,7 +5,7 @@
 
     Just export previously exported lexers.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 81ac44c24d0f020287e198d59dc507fce17e6056..d98b11a7f7a75e4a76439812d424d8985710de85 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Web IDL, including some extensions.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index dab36aa6667cbbac48ec8d49e6dff6473873d1e8..abc9076c81eeac2234ef841500f7a72ee14939d6 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for misc. web stuff.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -128,7 +128,8 @@ class XQueryLexer(ExtendedRegexLexer):
 
     def popstate_tag_callback(lexer, match, ctx):
         yield match.start(), Name.Tag, match.group(1)
-        ctx.stack.append(lexer.xquery_parse_state.pop())
+        if lexer.xquery_parse_state:
+            ctx.stack.append(lexer.xquery_parse_state.pop())
         ctx.pos = match.end()
 
     def popstate_xmlcomment_callback(lexer, match, ctx):
@@ -857,8 +858,8 @@ class QmlLexer(RegexLexer):
             (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
             (r'0x[0-9a-fA-F]+', Number.Hex),
             (r'[0-9]+', Number.Integer),
-            (r'"(\\\\|\\"|[^"])*"', String.Double),
-            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
+            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
         ]
     }
 
index fad94e90d03c049ebaab2d83e42c6e347c85da97..4c7ddde04a562ef6f1346ae895a2d79a00affd87 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the Whiley language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 76138c9e27c283d0597b375aafd88df1da0903a7..72254e33e5e076516c5671f226a14ef25678a2b3 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for the X10 programming language.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -62,7 +62,7 @@ class X10Lexer(RegexLexer):
             (r'\b(%s)\b' % '|'.join(types), Keyword.Type),
             (r'\b(%s)\b' % '|'.join(values), Keyword.Constant),
             (r'\b(%s)\b' % '|'.join(modifiers), Keyword.Declaration),
-            (r'"(\\\\|\\"|[^"])*"', String),
+            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
             (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
             (r'.', Text)
         ],
index 8f605be432cd3403fc03af269cdabce3d2ab0d35..762a512b84b1a594b8a772e79bb74917ece5248c 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Xorg configs.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b484de6425f40ffd7d825e69a40d893aa5bd7280..8a825d4848655bef744d2c4c9e816c41ddf4c949 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexer for the YANG 1.1 modeling language. See :rfc:`7950`.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index bc7809f573851c3214eaf48791069c3672c95434..4f443ac2048c2429b724ec8cd5230f76c6bd84a4 100644 (file)
@@ -5,7 +5,7 @@
 
     Lexers for Zig.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e76dc62209b1ba53b31ce9ed7c8c4dc370d6625d..c66702706b0ca44b8647cf40377bc0505f92e0b5 100644 (file)
@@ -5,7 +5,7 @@
 
     A simple modeline parser (based on pymodeline).
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 76e8f6cb61c2c456a487266d8ae4197c7a0293af..213eec7c12aa7b7cbaa27dda06b538e5a15af402 100644 (file)
@@ -32,7 +32,7 @@
         yourfilter = yourfilter:YourFilter
 
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 LEXER_ENTRY_POINT = 'pygments.lexers'
index 18b7ca07204f133c2001af1f710d2a7b0b56dbbc..9fb70b13aabab61851e5842399c84b57da385482 100644 (file)
@@ -6,7 +6,7 @@
     An algorithm that generates optimized regexes for matching long lists of
     literal strings.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3842335de305ebe91ac14e4919148f4b9e417258..b35727df0f6d865b5ebef17d42f03704339e2a1d 100644 (file)
@@ -12,7 +12,7 @@
     Have a look at the `DelphiLexer` to get an idea of how to use
     this scanner.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 import re
index 1bf49d2e42991e2fdcd91b792fd51e3cc7270997..3d9105fad5a22dda9554ccfb8983ed33d0b1e3c1 100644 (file)
@@ -6,7 +6,7 @@
     Sphinx extension to generate automatic documentation of lexers,
     formatters and filters.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 9c994c7418a6fa9b947c2783d080303a7285b853..c9bd9725db7eb31d548677647e4e1f137c6cfdfe 100644 (file)
@@ -5,7 +5,7 @@
 
     Basic style object.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e089f5c8bc94e9f53ac91296ef2ed8f3e67084c7..4980cd80ea4ab920f28de8241e3d0685cd2fa3e3 100644 (file)
@@ -5,7 +5,7 @@
 
     Contains built-in styles.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6f2eebff78af0d8c0896c0de3ce85a1684cc73d3..914977939e8687025175521de0b0982d4543da1a 100644 (file)
@@ -5,7 +5,7 @@
 
     ABAP workbench like style.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index af06d24002a529967953542206a5cec7c561e6cc..bf92e5383a4f061ae3ec10bf474a5d1a7511993f 100644 (file)
@@ -26,7 +26,7 @@
 
     [1] `Revised Report on the Algorithmic Language Algol-60 <http://www.masswerk.at/algol60/report.htm>`
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 73c4ac8c051003431fbda62000c1f694d6749842..b5428f818b2e8589e376826f091c3d9e90e9fe67 100644 (file)
@@ -26,7 +26,7 @@
 
     [1] `Revised Report on the Algorithmic Language Algol-60 <http://www.masswerk.at/algol60/report.htm>`
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3630ffc2a4d2c0e4ade27f1cd38379aee4520771..06e3f0076d055a1a82f2c79552e0370b987e6b30 100644 (file)
@@ -5,7 +5,7 @@
 
     Arduino® Syntax highlighting style.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b6ac50ef9b06865ab7c2e5336475e493c5947ed0..5584ccd15539fd81f5b4a23eaf621c4518ef8ecd 100644 (file)
@@ -5,7 +5,7 @@
 
     A colorful style, inspired by the terminal highlighting style.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0c679d18d60a6714ac07af48a42e6aaf85d82723..c9e546af3c8f2a3cc704979d010ce24b2bc3a349 100644 (file)
@@ -5,7 +5,7 @@
 
     Style similar to the style used in the Borland IDEs.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ad73a360b1124aeedabbaf26d882487bc2d73dab..e1a324f86cb9cb8fad94a6b0dc9cfcb30ed24a5c 100644 (file)
@@ -5,7 +5,7 @@
 
     Simple black/white only style.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6ba9209f206e61ac6aa73a9ee55b4f2e57bf615d..a54754e71d3f1e94a37688d656c178f36f5ee37d 100644 (file)
@@ -5,7 +5,7 @@
 
     A colorful style, inspired by CodeRay.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 992180915f6e863628ed9f1cb46c4cfa7472dfce..61a3ec0cf7e10590d54d5942bdcd8c9c9e79e1f1 100644 (file)
@@ -5,7 +5,7 @@
 
     The default highlighting style.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 9768b4709cbe743564b06908a3f8a573849e352a..9660f59d82e110d5b6a3977b421377fd6f77c9ed 100644 (file)
@@ -5,7 +5,7 @@
 
     A highlighting style for Pygments, inspired by Emacs.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 19179530aa41b82c64af8d69cb708863d1c8ae49..19bd5b029ebcef1eb10842bd4a72e1fce077889f 100644 (file)
@@ -5,7 +5,7 @@
 
     A modern style based on the VIM pyte theme.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 57cd3f26b3ca2e8a885047c9522e304227357d60..1372e19d903620d946f3fe9b68c010910d4fd52d 100644 (file)
@@ -5,7 +5,7 @@
 
     pygments version of my "fruity" vim theme.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 9d593ceef3066911eb6534a11f42b6a94e71df3b..9f8fecc7d3ad2b7ac64d46e1626e718530768138 100644 (file)
@@ -5,7 +5,7 @@
 
     Igor Pro default style.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 1c0e4211ea3114a1d2827eb00d0fb6b33555879e..1fc3bedbbf937f3a9a0b29ef550ba8aabed0e673 100644 (file)
@@ -5,7 +5,7 @@
 
     A highlighting style for Pygments, inspired by the Inkpot theme for VIM.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 2ae6ace33a53e9c1f30f8d865a7e16e703797ba3..7bc37f546809a69752b4586d5c76fc6f7924ecad 100644 (file)
@@ -9,7 +9,7 @@
     A desaturated, somewhat subdued style created for the Lovelace interactive
     learning environment.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 772563b9df6badb1a253659b3626623b41ca49f1..22138ad77a3903a2d196e80ba752dd043e9fd4ab 100644 (file)
@@ -8,7 +8,7 @@
     This is a port of the style used in the `php port`_ of pygments
     by Manni. The style is called 'default' there.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6067775077fc819b03db2333dca2c3bb55eb3421..cdfd24f0045b5aca46d6c1dee8a47997b41728d1 100644 (file)
@@ -7,7 +7,7 @@
 
     http://www.monokai.nl/blog/2006/07/15/textmate-color-theme/
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 20fb98782488c40a2efe97c5d9bb521ca197bef3..10e9a182a28053eaa0968af734d4382c94bec2d0 100644 (file)
@@ -5,7 +5,7 @@
 
     Murphy's style from CodeRay.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 04ec0eca81ca05c7f479eb5efbe262a90e67f4b4..be50484dc8d894a20405a5528e74e254690c8db3 100644 (file)
@@ -5,7 +5,7 @@
 
     pygments version of my "native" vim theme.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6f62c9c7758d0027fb4c81ce0d89a25ce7ecded0..42ca447db1b2f259f09dc1315368f4eac9d66788 100644 (file)
@@ -9,7 +9,7 @@
     Created with Base16 Builder by Chris Kempson
     (https://github.com/chriskempson/base16-builder).
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e69bff5fd30ad1a8ddb6c4eae951ba71838eb9a9..02cb3ff14d881e6f046358505159be7bb2f2ee04 100644 (file)
@@ -9,7 +9,7 @@
     Created with Base16 Builder by Chris Kempson
     (https://github.com/chriskempson/base16-builder).
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d41c7ed132c849ea8a7ca9f4cd63168a99887d9d..a5d4f694785f573226710442ec4bbc561923c510 100644 (file)
@@ -7,7 +7,7 @@
 
     .. _pastie: http://pastie.caboo.se/
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 54edea7d6cdfa18f5813a7bf4535f599d698ec52..94c47539423d66240461edc7e3d01d44d03299a4 100644 (file)
@@ -7,7 +7,7 @@
 
     .. _perldoc: http://perldoc.perl.org/
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b0eb291873e5093331ee4470d51b8bf9ee15a111..d404132427414eb366d82aacb6e8c2262b005334 100644 (file)
@@ -7,7 +7,7 @@
 
     .. _theme: http://sanssecours.github.io/Rainbow-Dash.tmbundle
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index af171744fc01b686322532c379d08b26fa820fa6..a9e62d4b99df58724c83aed7142a0ca77f325421 100644 (file)
@@ -5,7 +5,7 @@
 
     pygments "rrt" theme, based on Zap and Emacs defaults.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 89e1b5a76887d9f79db14f921b1def300d577087..40b45e24ddb73e1a10e37dc9c41ad80319a05a2f 100644 (file)
@@ -7,7 +7,7 @@
     meant to be a complete style. It's merely meant to mimic SAS'
     program editor syntax highlighting.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 50b22bd0a6d8e4ac73bc7968e4b7a1e288cef6f2..ef0c1126575abd5e5f6c59fc737648676591fbf5 100644 (file)
@@ -8,7 +8,7 @@
     A Pygments style for the Solarized themes (licensed under MIT).
     See: https://github.com/altercation/solarized
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3bec33c011e30005ea216a98ea5112587e1eb6d4..8fae7329d1178450e6c7a57a571c0d03d7e93380 100644 (file)
@@ -7,7 +7,7 @@
     meant to be a complete style, just for Stata's file formats.
 
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 430b8a2185f0a166557f33fb71ae420ad717f00e..5eda6d9688f5f80804a1389c02803db24d7cb319 100644 (file)
@@ -6,7 +6,7 @@
     Light Style inspired by Stata's do-file editor. Note this is not
     meant to be a complete style, just for Stata's file formats.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 71ed52b9c9002218ca555e2add423a36817f415a..bc72795166cee61933f5cf7768dbba7e2ac0f3c1 100644 (file)
@@ -33,7 +33,7 @@
     have been chosen to have the same style.  Similarly, keywords (Keyword.*),
     and Operator.Word (and, or, in) have been assigned the same style.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index a5c23ee43cade5b1466b88a37827182fa781922d..ff2f8dcb1f523b6dbb48f5ad87aeb7a13caf7bf2 100644 (file)
@@ -5,7 +5,7 @@
 
     Port of the default trac highlighter design.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 46272747e98261f77ac86b36f8fa5ce0d6d8827c..3176d452b4c8b75d4b0663d5e38eb00c0853ec08 100644 (file)
@@ -5,7 +5,7 @@
 
     A highlighting style for Pygments, inspired by vim.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index da393477f767a5036d82bc620acddd4780b5ba9e..b85c7e8471f9157f0a53c6076c59629f3146e8b0 100644 (file)
@@ -5,7 +5,7 @@
 
     Simple style with MS Visual Studio colors.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0f2f1cbab2fcb03258457bc2328f45ef0033475a..dd0beb19b0a4efb9d8bcffdab55a425c2a4c6060 100644 (file)
@@ -5,7 +5,7 @@
 
     Style similar to the `Xcode` default theme.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 5ed79f74de08fa9cfa3b5454b9b3e5cba83238d8..f7e107d9e121a024a8f0e8dc067f6cab3a39298e 100644 (file)
@@ -5,7 +5,7 @@
 
     Basic token types and the standard tokens.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6292ad27fa1b39401bca965905b5665c7b341559..908beca42d2cd57e86839cab369945726a2314cc 100644 (file)
@@ -8,7 +8,7 @@
 
     Inspired by chartypes_create.py from the MoinMoin project.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3a79029fe9572cd2182dd48cbea78ed8080f9cdd..e6f9ed715cf73731cd3b30583fc910a3535dfd0b 100644 (file)
@@ -5,18 +5,16 @@
 
     Utility functions.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
 import re
-import sys
 from io import TextIOWrapper
 
 
 split_path_re = re.compile(r'[/\\ ]')
 doctype_lookup_re = re.compile(r'''
-    (<\?.*?\?>)?\s*
     <!DOCTYPE\s+(
      [a-zA-Z_][a-zA-Z0-9]*
      (?: \s+      # optional in HTML5
@@ -177,7 +175,7 @@ def doctype_matches(text, regex):
     m = doctype_lookup_re.search(text)
     if m is None:
         return False
-    doctype = m.group(2)
+    doctype = m.group(1)
     return re.compile(regex, re.I).match(doctype.strip()) is not None
 
 
index 14442d0ed1f90b8aa4ac5cdb2007ec42ff16a4d4..880b496b3363b9a722af1e53cd30beaf133c8583 100644 (file)
@@ -7,7 +7,7 @@
     Make sure Python (.py) and Bash completition (.bashcomp) files do not
     contain CR/LF newlines.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0762c96738c2183eb710b1b20347264939eb3519..215644156bc1aaa47cee73fbaedc434721af0a02 100755 (executable)
@@ -7,7 +7,7 @@
     Make sure each Python file has a correct file header
     including copyright and license information.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -34,7 +34,7 @@ def checker(*suffixes, **kwds):
 
 
 name_mail_re = r'[\w ]+(<.*?>)?'
-copyright_re = re.compile(r'^    :copyright: Copyright 2006-2020 by '
+copyright_re = re.compile(r'^    :copyright: Copyright 2006-2021 by '
                           r'the Pygments team, see AUTHORS\.$', re.UNICODE)
 copyright_2_re = re.compile(r'^                %s(, %s)*[,.]$' %
                             (name_mail_re, name_mail_re), re.UNICODE)
index 0f1dc0bdfcf530cd88b79b60e056b9666c937d7d..9a50662579640d55a76d4392a6fd52754dc071be 100755 (executable)
@@ -8,7 +8,7 @@
     the text where Error tokens are being generated, along
     with some context.
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -24,7 +24,7 @@ if os.path.isdir(os.path.join(srcpath, 'pygments')):
 from pygments.lexer import RegexLexer, ExtendedRegexLexer, LexerContext, \
     ProfilingRegexLexer, ProfilingRegexLexerMeta
 from pygments.lexers import get_lexer_by_name, find_lexer_class, \
-    find_lexer_class_for_filename
+    find_lexer_class_for_filename, guess_lexer
 from pygments.token import Error, Text, _TokenType
 from pygments.cmdline import _parse_options
 
@@ -96,8 +96,29 @@ class DebuggingRegexLexer(ExtendedRegexLexer):
 
 
 def main(fn, lexer=None, options={}):
+    if fn == '-':
+        text = sys.stdin.read()
+    else:
+        try:
+            with open(fn, 'rb') as fp:
+                text = fp.read().decode('utf-8')
+        except UnicodeError:
+            if decode_strategy == 'latin1':
+                print('Warning: non-UTF8 input, using latin1')
+                with open(fn, 'rb') as fp:
+                    text = fp.read().decode('latin1')
+            elif decode_strategy == 'utf8-ignore':
+                print('Warning: ignoring non-UTF8 bytes in input')
+                with open(fn, 'rb') as fp:
+                    text = fp.read().decode('utf-8', 'ignore')
+    text = text.strip('\n') + '\n'
+
     if lexer is not None:
         lxcls = get_lexer_by_name(lexer).__class__
+    elif guess:
+        lxcls = guess_lexer(text).__class__
+        print('Using lexer: %s (%s.%s)' % (lxcls.name, lxcls.__module__,
+                                           lxcls.__name__))
     else:
         lxcls = find_lexer_class_for_filename(os.path.basename(fn))
         if lxcls is None:
@@ -129,12 +150,6 @@ def main(fn, lexer=None, options={}):
 
     lx = lxcls(**options)
     lno = 1
-    if fn == '-':
-        text = sys.stdin.read()
-    else:
-        with open(fn, 'rb') as fp:
-            text = fp.read().decode('utf-8')
-    text = text.strip('\n') + '\n'
     tokens = []
     states = []
 
@@ -188,6 +203,9 @@ Selecting lexer and options:
 
     -l NAME         use lexer named NAME (default is to guess from
                     the given filenames)
+    -g              guess lexer from content
+    -u              if input is non-utf8, use "ignore" handler instead
+                    of using latin1 encoding
     -O OPTIONSTR    use lexer options parsed from OPTIONSTR
 
 Debugging lexing errors:
@@ -205,6 +223,7 @@ Profiling:
                     column 4, the time per call)
 ''')
 
+
 num = 10
 showall = False
 ignerror = False
@@ -212,10 +231,12 @@ lexer = None
 options = {}
 profile = False
 profsort = 4
+guess = False
+decode_strategy = 'latin1'
 
 if __name__ == '__main__':
     import getopt
-    opts, args = getopt.getopt(sys.argv[1:], 'n:l:aepO:s:h')
+    opts, args = getopt.getopt(sys.argv[1:], 'n:l:aepO:s:hgu')
     for opt, val in opts:
         if opt == '-n':
             num = int(val)
@@ -231,6 +252,10 @@ if __name__ == '__main__':
             profsort = int(val)
         elif opt == '-O':
             options = _parse_options([val])
+        elif opt == '-g':
+            guess = True
+        elif opt == '-u':
+            decode_strategy = 'utf8-ignore'
         elif opt == '-h':
             print_help()
             sys.exit(0)
index 90c45191c2cc0deaddddbcbed3291392633d4d9f..20650a73200dbd2b798a617ca1ce193dff8dc68f 100644 (file)
@@ -14,7 +14,7 @@ HEADER = '''\
 
     This file is autogenerated by scripts/get_vimkw.py
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e8efb6177d9bb7bce7b9cbc79d10397dcef9412b..d25ffe5772d12f45da16dedb35fca6a4f2e4e2bd 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -17,7 +17,7 @@ are:
     formats that PIL supports and ANSI sequences
 * it is usable as a command-line tool and as a library
 
-:copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
 :license: BSD, see LICENSE for details.
 """
 
index 30516d26631efb791632e234b2ad064df5fbe7b3..50d4621b630a13b838538b838f936d104c5e18ce 100644 (file)
@@ -3,6 +3,6 @@
     Pygments test package
     ~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
index 60172439a0ae7ceb419008b0323df07e62153853..b18ef894b03b2b3ff8e2bb5e1c8b64ee57541194 100644 (file)
@@ -74,10 +74,6 @@ def Xform "Rocks" (
     def PointInstancer "Instances"
     {
         vector3f[] angularVelocities.timeSamples = {
-            1: [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
-            2: [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (5.112156e-10, -1.1675656e-9, 2.7325428e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.6046756e-10, 1.1357073e-9, 7.6719997e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (2.7305674e-10, 5.5902466e-10, 3.2316158e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0230942e-8, -8.20622e-9, -7.0976286e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-4.5687405e-11, 8.6141476e-11, 1.3364366e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-2.44634e-14, 7.813818e-14, -5.9944833e-13), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (2.4958732e-10, -6.5580985e-10, -1.5324112e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (9.564866e-11, -1.2648067e-10, -8.7979063e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0547618e-8, -8.1015035e-9, -7.0957196e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
-            3: [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (6.989609e-10, -1.6539594e-9, 2.7718952e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-9.065712e-10, 1.8979966e-9, 8.222421e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.4177002e-8, 2.7328266e-8, -7.786683e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.376335e-9, 2.0178012e-8, -1.8691981e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.298281e-11, -9.301395e-12, -3.884802e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.5998494e-11, 1.2578343e-10, -2.5216695e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (5.275003e-10, 1.0338032e-9, 2.6262461e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.611878e-10, 1.3414857e-10, 1.7817849e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.2849097e-10, 2.0527855e-11, 6.351678e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0603659e-8, -8.5072696e-9, -7.6920537e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (3.8167148e-8, -1.8693507e-8, 2.3504392e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-4.4687608e-11, 1.3808948e-10, 2.1368587e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-2.44634e-14, 7.813818e-14, -5.9944833e-13), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.9754791e-10, -2.9489008e-10, -6.9043293e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (2.6856684e-10, -5.926316e-10, -1.7179941e-9), (5.2605476e-8, -2.8764783e-8, 2.854448e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (2.4156224e-10, -4.7927346e-11, -9.876379e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0939003e-8, -8.401563e-9, -7.6800205e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
-            4: [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (8.717868e-10, -2.1020607e-9, 2.8021102e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.0947551e-9, 2.3123528e-9, 8.5297214e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.9462764e-8, 3.762379e-8, -1.5327544e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-7.648143e-9, 2.8318103e-8, -3.4613994e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.328866e-11, -9.355089e-12, -3.9072277e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.7547373e-11, 1.292625e-10, -2.591417e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (5.347072e-10, 1.0492385e-9, 3.3443383e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.6564614e-10, 1.3785902e-10, 1.8310678e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.2923271e-10, 2.0646356e-11, 6.388344e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0649298e-8, -8.54413e-9, -7.7642376e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (6.786036e-8, -3.3324138e-8, 8.459508e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-4.4687608e-11, 1.3808948e-10, 2.1368587e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-2.44634e-14, 7.813818e-14, -5.9944833e-13), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.9938302e-10, -2.9452776e-10, -6.841959e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (3.4115527e-10, -8.097179e-10, -1.9063373e-9), (9.394451e-8, -5.0891366e-8, 7.111002e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (2.571808e-10, -3.8619417e-11, -9.950921e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0986926e-8, -8.438304e-9, -7.7510154e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
             5: [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.4754948e-9, -3.6699057e-9, 2.864852e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.3486752e-9, 2.87125e-9, 8.9582014e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.9462764e-8, 3.762379e-8, -1.5327544e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-7.648143e-9, 2.8318103e-8, -3.4613994e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.3290403e-11, -9.355394e-12, -3.9073553e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-5.7590197e-11, 1.2935869e-10, -2.5933455e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (5.351674e-10, 1.0502295e-9, 3.3892524e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.657694e-10, 1.379616e-10, 1.8324305e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.2923694e-10, 2.0647031e-11, 6.388553e-11), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0654887e-8, -8.548644e-9, -7.773067e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (6.786036e-8, -3.3324138e-8, 8.459508e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-4.4687608e-11, 1.3808948e-10, 2.1368587e-9), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-2.44634e-14, 7.813818e-14, -5.9944833e-13), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (-1.9949706e-10, -2.9450525e-10, -6.8380834e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (6.303264e-10, -2.1125923e-9, -2.2079956e-9), (9.394451e-8, -5.0891366e-8, 7.111002e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (2.581828e-10, -3.8022245e-11, -9.955702e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1.0992794e-8, -8.442803e-9, -7.7597e-10), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
         }
         float3[] extent.timeSamples = {
@@ -89,19 +85,8 @@ def Xform "Rocks" (
         }
         quath[] orientations.timeSamples = {
             1: [(0.468994, 0.168091, 0.454834, 0.738281), (0.382812, 0.670898, 0.481689, 0.413574), (0.470703, 0.326416, 0.564941, 0.59375), (0.505371, 0.708496, 0.482178, 0.101196), (0.35498, 0.568848, 0.675293, 0.306885), (0.385742, 0.692383, 0.0164642, 0.609375), (0.770996, 0.287109, 0.521973, 0.224609), (0.36792, 0.628906, 0.638184, 0.249512), (0.724121, 0.430664, 0.208252, 0.496826), (0.928223, 0.0809937, 0.0344238, 0.361572), (0.815918, 0.161743, 0.547852, 0.0884399), (0.349609, 0.229858, 0.651855, 0.632324), (0.287598, 0.840332, 0.302734, 0.345703), (0.287842, 0.565918, 0.714844, 0.293701), (0.901367, 0.0376282, 0.134277, 0.409912), (0.606934, 0.134644, 0.535156, 0.571777), (0.929688, 0.0853882, 0.155518, 0.322754), (0.591309, 0.702148, 0.337158, 0.209595), (0.518066, 0.614746, 0.533203, 0.263672), (0.0231018, 0.318115, 0.891602, 0.321533), (0.556641, 0.455811, 0.652832, 0.236328), (0.125854, 0.774902, 0.529297, 0.322021), (0.26709, 0.0723877, 0.121521, 0.953125), (0.0931396, 0.480469, 0.870605, 0.0512695), (0.234131, 0.668945, 0.696777, 0.110046), (0.754883, 0.409424, 0.098877, 0.50293), (0.785645, 0.39209, 0.0108719, 0.478516), (0.422119, 0.562012, 0.578613, 0.413574), (0.37085, 0.487549, 0.679688, 0.403564), (0.463379, 0.407227, 0.539551, 0.573242), (0.205444, 0.760254, 0.342773, 0.512207), (0.081543, 0.541016, 0.480225, 0.685547), (0.556152, 0.654785, 0.46875, 0.205322), (0.0188904, 0.510254, 0.608398, 0.607422), (0.402344, 0.682129, 0.42041, 0.442871), (0.366943, 0.180664, 0.835938, 0.365967), (0.207886, 0.830078, 0.468506, 0.219238), (0.59082, 0.160645, 0.0231934, 0.790527), (0.0663452, 0.758789, 0.333252, 0.555664), (0.479004, 0.525391, 0.555176, 0.431152), (0.756348, 0.00111389, 0.160522, 0.634277), (0.389893, 0.339111, 0.599609, 0.611328), (0.492432, 0.572754, 0.397705, 0.520996), (0.490967, 0.497803, 0.69043, 0.185913), (0.485596, 0.190918, 0.716797, 0.462402), (0.489258, 0.181152, 0.65918, 0.541504), (0.753418, 0.187378, 0.271973, 0.568848), (0.401611, 0.641113, 0.628418, 0.182129), (0.421143, 0.535156, 0.685547, 0.257568), (0.780273, 0.614258, 0.0437622, 0.109131), (0.597168, 0.0449829, 0.702637, 0.384766), (0.0605164, 0.700195, 0.465088, 0.538574), (0.0880737, 0.103577, 0.749512, 0.647949), (0.76709, 0.370361, 0.0926514, 0.515625), (0.331055, 0.462891, 0.496338, 0.655273), (0.732422, 0.647461, 0.114929, 0.176758), (0.316895, 0.783203, 0.51709, 0.137695), (0.618652, 0.761719, 0.1203, 0.151245), (0.915527, 0.253662, 0.310059, 0.0374146), (0.6875, 0.517578, 0.0124664, 0.508789), (0.356934, 0.337891, 0.705566, 0.510742), (0.532715, 0.261963, 0.570801, 0.566895), (0.304688, 0.268555, 0.804688, 0.43335), (0.522461, 0.490723, 0.471191, 0.51416), (0.670898, 0.572754, 0.177124, 0.436523), (0.754395, 0.229614, 0.491211, 0.370117), (0.532227, 0.608887, 0.430176, 0.401123), (0.598145, 0.635742, 0.294189, 0.38916), (0.398682, 0.611328, 0.213257, 0.649414), (0.831543, 0.350098, 0.388184, 0.187988), (0.497314, 0.344971, 0.470215, 0.642578), (0.00505447, 0.245728, 0.485352, 0.838867), (0.475098, 0.541016, 0.679199, 0.1427), (0.329102, 0.221802, 0.409668, 0.821289), (0.509766, 0.465576, 0.632324, 0.351318), (0.609375, 0.121033, 0.53125, 0.576172), (0.442627, 0.736328, 0.503418, 0.0914307), (0.594727, 0.343506, 0.60791, 0.398926), (0.484375, 0.196411, 0.669922, 0.527344), (0.648926, 0.105774, 0.583008, 0.477051), (0.765625, 0.528809, 0.279053, 0.236694), (0.656738, 0.347656, 0.525391, 0.414551), (0.72998, 0.120544, 0.345215, 0.577637), (0.473877, 0.454834, 0.432373, 0.617676), (0.300049, 0.0118637, 0.151733, 0.941895), (0.274902, 0.63916, 0.163818, 0.699707), (0.541992, 0.357178, 0.635742, 0.417969), (0.164795, 0.709473, 0.594238, 0.34082), (0.0489197, 0.474609, 0.853516, 0.209351), (0.439941, 0.592773, 0.416504, 0.530762), (0.0481262, 0.865234, 0.454102, 0.206909), (0.434814, 0.42041, 0.307861, 0.734375), (0.548828, 0.506836, 0.54248, 0.384277), (0.37207, 0.356445, 0.540039, 0.665527), (0.617676, 0.589844, 0.264404, 0.447754), (0.511719, 0.350098, 0.326904, 0.713379), (0.654785, 0.490723, 0.391357, 0.421143), (0.408203, 0.575195, 0.538086, 0.46167), (0.767578, 0.0193939, 0.42334, 0.480957), (0.449951, 0.648926, 0.553223, 0.265381), (0.0689697, 0.976562, 0.109619, 0.173218), (0.680664, 0.525391, 0.482666, 0.166626), (0.555176, 0.594238, 0.150757, 0.5625), (0.388916, 0.208862, 0.153442, 0.884277), (0.00372887, 0.476318, 0.333252, 0.813477), (0.64502, 0.660645, 0.151733, 0.353027), (0.0538025, 0.581543, 0.550781, 0.596191), (0.541504, 0.179077, 0.820312, 0.0462036), (0.457275, 0.225464, 0.830566, 0.223755), (0.133179, 0.665527, 0.361084, 0.639648), (0.707031, 0.44043, 0.0447388, 0.551758), (0.61377, 0.335938, 0.366455, 0.613281), (0.836426, 0.353516, 0.393066, 0.144409), (0.721191, 0.452393, 0.229614, 0.47168), (0.464355, 0.630859, 0.562012, 0.264893), (0.0296783, 0.586914, 0.512207, 0.626465), (0.56543, 0.61084, 0.537109, 0.136108), (0.0530701, 0.270996, 0.836426, 0.473389), (0.634766, 0.370117, 0.652344, 0.186523), (0.532715, 0.729004, 0.18811, 0.38623), (0.0645142, 0.530762, 0.811523, 0.235962), (0.414551, 0.618164, 0.667969, 0.0123596), (0.429932, 0.737305, 0.489502, 0.177734), (0.647461, 0.11261, 0.617676, 0.432129), (0.704102, 0.461182, 0.407471, 0.354248), (0.55127, 0.308105, 0.76123, 0.147949), (0.55127, 0.141846, 0.316406, 0.758789), (0.230591, 0.531738, 0.814453, 0.0300446), (0.581055, 0.407715, 0.136719, 0.690918), (0.489746, 0.521973, 0.618164, 0.325195), (0.142456, 0.584473, 0.478271, 0.639648), (0.438477, 0.63623, 0.447754, 0.449707), (0.577637, 0.131348, 0.78125, 0.196289), (0.587402, 0.46875, 0.496338, 0.434814), (0.103394, 0.379639, 0.787598, 0.474365), (0.100098, 0.434082, 0.730957, 0.51709), (0.43457, 0.615234, 0.302734, 0.583984), (0.64209, 0.463623, 0.608887, 0.0441284), (0.505371, 0.12915, 0.269775, 0.80957), (0.379639, 0.36499, 0.0939331, 0.844727), (0.172852, 0.598633, 0.774902, 0.105469), (0.141479, 0.482422, 0.61377, 0.608887), (0.3396, 0.581055, 0.716309, 0.184326), (0.204224, 0.544922, 0.792969, 0.181152), (0.400146, 0.591309, 0.692383, 0.102966), (0.203857, 0.398193, 0.60791, 0.65625), (0.801758, 0.357422, 0.335449, 0.341797), (0.043335, 0.150757, 0.884766, 0.438965), (0.173218, 0.672852, 0.376465, 0.612793), (0.649414, 0.362061, 0.481201, 0.4646), (0.662109, 0.603516, 0.344238, 0.280762), (0.489014, 0.19165, 0.800781, 0.288086), (0.82959, 0.0906372, 0.469482, 0.28833), (0.341797, 0.142822, 0.00710297, 0.928711), (0.523926, 0.176636, 0.598145, 0.580566), (0.564453, 0.246948, 0.589844, 0.521973), (0.459717, 0.496826, 0.608887, 0.413818), (0.499023, 0.828125, 0.0282593, 0.253662), (0.464844, 0.804199, 0.102539, 0.355957), (0.693359, 0.255615, 0.0837402, 0.668457), (0.415771, 0.621094, 0.638184, 0.18396), (0.158691, 0.731445, 0.27002, 0.605957), (0.648926, 0.623535, 0.0406799, 0.434326), (0.292236, 0.5, 0.449707, 0.679688), (0.33252, 0.110657, 0.888184, 0.297363), (0.641113, 0.267822, 0.715332, 0.072876), (0.0325317, 0.407227, 0.799316, 0.440918), (0.560547, 0.494385, 0.381348, 0.543945), (0.247681, 0.416016, 0.75, 0.450928), (0.601562, 0.671387, 0.388672, 0.190796), (0.348389, 0.845215, 0.292236, 0.28125), (0.433594, 0.464111, 0.401123, 0.660156), (0.450195, 0.214111, 0.85498, 0.143677), (0.596191, 0.440918, 0.377197, 0.554688), (0.561523, 0.715332, 0.274414, 0.313232), (0.477783, 0.435059, 0.686035, 0.334717), (0.744141, 0.078064, 0.392334, 0.535156), (0.319824, 0.375488, 0.851562, 0.178101), (0.513184, 0.283447, 0.0665894, 0.807617), (0.500977, 0.762695, 0.224976, 0.341064), (0.816895, 0.155396, 0.51709, 0.202393), (0.0157318, 0.497314, 0.763184, 0.411865), (0.605469, 0.570312, 0.39209, 0.393311), (0.0687256, 0.682129, 0.172363, 0.70752), (0.947266, 0.0371704, 0.212036, 0.237427), (0.268311, 0.295898, 0.0045166, 0.916504), (0.429932, 0.715332, 0.178467, 0.521484), (0.338135, 0.658203, 0.537598, 0.404053), (0.449707, 0.74707, 0.337646, 0.354248), (0.824219, 0.343506, 0.44873, 0.0349426), (0.0796509, 0.937988, 0.0897827, 0.325439), (0.344238, 0.719238, 0.506836, 0.327637), (0.705078, 0.387939, 0.588867, 0.0739136), (0.628418, 0.335205, 0.221191, 0.666504), (0.771484, 0.410889, 0.477051, 0.0908813), (0.538574, 0.566406, 0.619141, 0.0793457), (0.684082, 0.373047, 0.557129, 0.287109), (0.638672, 0.64209, 0.41748, 0.0727539), (0.681641, 0.515137, 0.456787, 0.247314), (0.538086, 0.609863, 0.340332, 0.471924), (0.71582, 0.0874634, 0.680664, 0.129028), (0.222412, 0.684082, 0.614746, 0.32373), (0.507324, 0.799316, 0.238647, 0.216431), (0.429932, 0.736328, 0.00971222, 0.522461), (0.757324, 0.644531, 0.052002, 0.0913086), (0.268799, 0.0161133, 0.438232, 0.857422), (0.435059, 0.742676, 0.3125, 0.401611), (0.804199, 0.469727, 0.227783, 0.283936), (0.231079, 0.451904, 0.687988, 0.519043), (0.451172, 0.574219, 0.420654, 0.538574), (0.140259, 0.85791, 0.0655518, 0.489746), (0.258301, 0.481445, 0.746094, 0.381104), (0.140625, 0.00349236, 0.95166, 0.272217), (0.0164795, 0.863281, 0.354492, 0.358398), (0.584961, 0.490967, 0.630859, 0.136963), (0.0425415, 0.624512, 0.487793, 0.608398), (0.16687, 0.415039, 0.871582, 0.199951), (0.543945, 0.479736, 0.336182, 0.600586), (0.0562744, 0.4729, 0.569336, 0.67041), (0.583008, 0.753906, 0.302979, 0.00542068), (0.395752, 0.253906, 0.640137, 0.607422), (0.632812, 0.652344, 0.410889, 0.0731201), (0.187134, 0.481445, 0.750488, 0.412109), (0.437744, 0.744141, 0.318115, 0.39209), (0.555176, 0.668945, 0.0766602, 0.488525), (0.570312, 0.519043, 0.300537, 0.561035), (0.171631, 0.740723, 0.150146, 0.631836), (0.282471, 0.283691, 0.195923, 0.89502), (0.651855, 0.702148, 0.0883179, 0.272705), (0.179688, 0.733398, 0.148804, 0.638184), (0.406494, 0.695312, 0.552734, 0.213623), (0.251953, 0.0709229, 0.73291, 0.62793), (0.723145, 0.568848, 0.390869, 0.0258331), (0.695312, 0.552734, 0.410889, 0.206055), (0.73877, 0.104553, 0.378906, 0.547363), (0.145142, 0.431152, 0.453857, 0.766113), (0.0645752, 0.461182, 0.388672, 0.794922), (0.391846, 0.616211, 0.637207, 0.245972), (0.522949, 0.0602417, 0.642578, 0.556641), (0.492676, 0.421631, 0.394043, 0.651367), (0.51416, 0.423828, 0.500488, 0.552734), (0.220703, 0.0689087, 0.910156, 0.344238), (0.177124, 0.377197, 0.200806, 0.886719), (0.698242, 0.253662, 0.665039, 0.0756836), (0.21106, 0.267822, 0.191895, 0.92041), (0.887207, 0.211792, 0.296631, 0.282715), (0.523438, 0.5, 0.164551, 0.669922), (0.637207, 0.383789, 0.585938, 0.321777), (0.567871, 0.57666, 0.193481, 0.554688), (0.0535583, 0.633789, 0.2323, 0.73584), (0.395996, 0.546875, 0.694824, 0.247437), (0.869629, 0.236938, 0.347656, 0.258301), (0.173462, 0.614746, 0.461426, 0.615723), (0.115173, 0.562988, 0.818359, 0.0155182), (0.598633, 0.304932, 0.0189056, 0.740234), (0.521484, 0.0218353, 0.553223, 0.649414), (0.561523, 0.512695, 0.397217, 0.513672), (0.151245, 0.234863, 0.959961, 0.0247345), (0.305908, 0.604492, 0.492188, 0.546387), (0.599121, 0.686523, 0.192627, 0.364258), (0.47876, 0.411377, 0.769531, 0.0985107), (0.585449, 0.271484, 0.34668, 0.680664), (0.616211, 0.0740356, 0.47998, 0.620117), (0.666016, 0.017334, 0.289307, 0.6875), (0.184937, 0.401611, 0.009552, 0.896973), (0.137817, 0.654785, 0.738281, 0.0872192), (0.555664, 0.531738, 0.36377, 0.525879), (0.236938, 0.133667, 0.754395, 0.597168), (0.381104, 0.640625, 0.516113, 0.421387), (0.218994, 0.468262, 0.683594, 0.515625), (0.583008, 0.480225, 0.416016, 0.506348), (0.407227, 0.781738, 0.311279, 0.355225), (0.396484, 0.394531, 0.443115, 0.700684), (0.566895, 0.721191, 0.379639, 0.11969), (0.708984, 0.542969, 0.158081, 0.421387), (0.163818, 0.010582, 0.847168, 0.505371), (0.709473, 0.27002, 0.612793, 0.219727), (0.0732422, 0.301025, 0.80957, 0.498535), (0.681641, 0.182129, 0.708496, 0.0115509), (0.692383, 0.416748, 0.588867, 0.00333977), (0.58252, 0.338379, 0.711914, 0.19873), (0.656738, 0.488525, 0.567383, 0.0895996), (0.635742, 0.539062, 0.488281, 0.258301), (0.615234, 0.659668, 0.316162, 0.293945), (0.828613, 0.468994, 0.148193, 0.267334), (0.300293, 0.1521, 0.732422, 0.592285), (0.69873, 0.440674, 0.35376, 0.438477), (0.0406494, 0.679199, 0.634277, 0.366943), (0.801758, 0.0582275, 0.281006, 0.524414), (0.41333, 0.127075, 0.186401, 0.882324), (0.438721, 0.474365, 0.755371, 0.110046), (0.620605, 0.513672, 0.584961, 0.0941772), (0.05896, 0.00168514, 0.958496, 0.279297), (0.825684, 0.330322, 0.226685, 0.397217), (0.385986, 0.615723, 0.388672, 0.566406), (0.290527, 0.516602, 0.746582, 0.30249), (0.881348, 0.0742798, 0.167603, 0.435547), (0.549316, 0.27832, 0.193115, 0.763672), (0.0157623, 0.395752, 0.130493, 0.908691), (0.460449, 0.697754, 0.510742, 0.201416), (0.726562, 0.541016, 0.303711, 0.294678), (0.288086, 0.392822, 0.691406, 0.533691), (0.737305, 0.626465, 0.169434, 0.187378), (0.722168, 0.625, 0.10022, 0.278809), (0.0105209, 0.804688, 0.153931, 0.573242), (0.101562, 0.690918, 0.702637, 0.134888), (0.38208, 0.552734, 0.606934, 0.424316), (0.160034, 0.0267181, 0.335205, 0.928223), (0.224365, 0.381348, 0.557617, 0.702148), (0.691406, 0.125854, 0.501465, 0.504883), (0.834961, 0.232788, 0.489746, 0.0942383), (0.491455, 0.541504, 0.523438, 0.4375), (0.551758, 0.432373, 0.494629, 0.513672), (0.108704, 0.459961, 0.589844, 0.654785), (0.438232, 0.476562, 0.706055, 0.286377), (0.361084, 0.252441, 0.392578, 0.807129), (0.788086, 0.0546875, 0.507812, 0.343994), (0.454346, 0.509766, 0.504395, 0.528809), (0.104248, 0.975586, 0.18103, 0.0692139), (0.924316, 0.149536, 0.0319824, 0.349609), (0.508789, 0.458008, 0.232056, 0.690918), (0.687988, 0.620605, 0.350342, 0.137207), (0.365723, 0.85791, 0.133911, 0.335693), (0.317871, 0.403076, 0.618164, 0.595215), (0.458496, 0.461426, 0.618164, 0.441162), (0.605957, 0.502441, 0.58252, 0.202271), (0.456787, 0.577637, 0.49585, 0.459961), (0.697754, 0.644043, 0.216675, 0.226318), (0.412842, 0.628906, 0.0456238, 0.657227), (0.671875, 0.20752, 0.675293, 0.222656), (0.378174, 0.548828, 0.451416, 0.593262), (0.697754, 0.4646, 0.540039, 0.0749512), (0.658691, 0.495605, 0.343994, 0.449463), (0.804688, 0.127441, 0.551758, 0.178955), (0.144043, 0.791016, 0.594238, 0.0206604), (0.185791, 0.387451, 0.444092, 0.786133), (0.764648, 0.463867, 0.436768, 0.0957031), (0.00309944, 0.714844, 0.105286, 0.690918), (0.546387, 0.481934, 0.570801, 0.378418), (0.54248, 0.0839844, 0.140991, 0.82373), (0.109497, 0.725098, 0.611816, 0.296143), (0.0836792, 0.163574, 0.586914, 0.788574), (0.693359, 0.0698853, 0.689453, 0.197266), (0.460693, 0.621582, 0.453613, 0.442383), (0.506348, 0.666016, 0.340576, 0.429443), (0.0577087, 0.415527, 0.0742188, 0.904785), (0.0575256, 0.779785, 0.514648, 0.352295), (0.365723, 0.540039, 0.170654, 0.738281), (0.987305, 0.150146, 0.00455856, 0.0514832), (0.623047, 0.119263, 0.412109, 0.653809), (0.977539, 0.11969, 0.0733032, 0.157227), (0.074646, 0.0269623, 0.183105, 0.97998), (0.666504, 0.482178, 0.428955, 0.373047), (0.25, 0.115356, 0.564941, 0.777832), (0.467529, 0.79541, 0.300293, 0.242065), (0.462646, 0.456787, 0.740234, 0.170288), (0.259033, 0.626953, 0.652344, 0.338623), (0.0396423, 0.377441, 0.59375, 0.709473), (0.0614929, 0.0821533, 0.919434, 0.379395), (0.242188, 0.235229, 0.460693, 0.820801), (0.124756, 0.628418, 0.368652, 0.673828), (0.504395, 0.364014, 0.738281, 0.26123), (0.452881, 0.682617, 0.0543518, 0.571289), (0.683594, 0.189087, 0.692383, 0.131348), (0.632812, 0.725586, 0.113708, 0.245239), (0.387939, 0.905273, 0.170654, 0.0314331), (0.609375, 0.0265198, 0.372559, 0.699219), (0.0329895, 0.283691, 0.740723, 0.60791), (0.165771, 0.155762, 0.812988, 0.536133), (0.592285, 0.456299, 0.560059, 0.357178), (0.634277, 0.0870361, 0.401367, 0.654785), (0.689941, 0.517578, 0.280273, 0.421631), (0.499023, 0.622559, 0.596191, 0.0888062), (0.484619, 0.506836, 0.529297, 0.477539), (0.220093, 0.473633, 0.765625, 0.375977), (0.00972748, 0.624023, 0.203735, 0.754395), (0.492188, 0.100647, 0.000545979, 0.864746), (0.228882, 0.834473, 0.301025, 0.400391), (0.456299, 0.23877, 0.587891, 0.623535), (0.536133, 0.5625, 0.523926, 0.349121), (0.587402, 0.292969, 0.322021, 0.682129), (0.593262, 0.556152, 0.566406, 0.13269), (0.10791, 0.829102, 0.539551, 0.0997314), (0.394775, 0.38501, 0.350342, 0.757324), (0.786133, 0.439941, 0.397217, 0.175537), (0.879395, 0.149536, 0.29834, 0.339355), (0.696777, 0.32373, 0.467773, 0.436768), (0.386963, 0.127808, 0.754883, 0.513672), (0.604004, 0.130737, 0.515137, 0.59375), (0.128418, 0.0111694, 0.991699, 0.000308275), (0.558105, 0.265625, 0.785645, 0.0202484), (0.695312, 0.64502, 0.264404, 0.175171), (0.5, 0.54541, 0.0738525, 0.668945), (0.0522766, 0.243652, 0.583496, 0.772949), (0.341309, 0.680176, 0.490479, 0.424805), (0.607422, 0.306641, 0.544434, 0.490234), (0.640137, 0.285645, 0.315918, 0.63916), (0.466553, 0.488037, 0.610352, 0.414307), (0.57959, 0.631348, 0.277344, 0.43457), (0.803711, 0.0847168, 0.138916, 0.572266), (0.58252, 0.186401, 0.631836, 0.47583), (0.317139, 0.583008, 0.588867, 0.461182), (0.21814, 0.707031, 0.276123, 0.61377), (0.0426941, 0.92334, 0.10791, 0.366211), (0.366699, 0.550781, 0.749023, 0.0311584), (0.235718, 0.0223236, 0.657227, 0.71582), (0.754395, 0.292236, 0.335938, 0.482178), (0.324219, 0.489258, 0.695312, 0.414795), (0.687012, 0.375488, 0.505859, 0.362061), (0.267578, 0.722656, 0.286865, 0.568848), (0.551758, 0.46875, 0.0196533, 0.689453), (0.665039, 0.427246, 0.526855, 0.312744), (0.68457, 0.344482, 0.495361, 0.40918), (0.468018, 0.071167, 0.810547, 0.344482), (0.279541, 0.22644, 0.518555, 0.775879), (0.20459, 0.785156, 0.466064, 0.352295), (0.543457, 0.624512, 0.0345764, 0.560059), (0.493652, 0.469482, 0.727539, 0.0794678), (0.444336, 0.550293, 0.649414, 0.280029), (0.668945, 0.264893, 0.556641, 0.415283), (0.449951, 0.425781, 0.0817871, 0.780762), (0.430664, 0.220337, 0.557129, 0.675293), (0.0508728, 0.175171, 0.791992, 0.58252), (0.543457, 0.53125, 0.597656, 0.255615), (0.402832, 0.424316, 0.280029, 0.76123), (0.44043, 0.366699, 0.681152, 0.455322), (0.675293, 0.268799, 0.202637, 0.65625), (0.0601807, 0.710449, 0.654297, 0.251953), (0.794434, 0.0823364, 0.0695801, 0.597656), (0.692871, 0.0828247, 0.700195, 0.150024), (0.466797, 0.635742, 0.212646, 0.57666), (0.623047, 0.494873, 0.351074, 0.493896), (0.505371, 0.647461, 0.547363, 0.15979), (0.249634, 0.17395, 0.193726, 0.932617), (0.907227, 0.142944, 0.160889, 0.361328), (0.546387, 0.397217, 0.618652, 0.401367), (0.463623, 0.51416, 0.588379, 0.417969), (0.603516, 0.73584, 0.190674, 0.241211), (0.27124, 0.0416565, 0.895508, 0.350098), (0.284912, 0.623535, 0.456055, 0.567383), (0.558105, 0.518555, 0.585938, 0.276367), (0.233398, 0.913574, 0.0595398, 0.328125), (0.557617, 0.60791, 0.128662, 0.550781), (0.179932, 0.273438, 0.70166, 0.632812), (0.279297, 0.337158, 0.812012, 0.38623), (0.208008, 0.403564, 0.648926, 0.610352), (0.883301, 0.201904, 0.420654, 0.0443726), (0.479736, 0.525879, 0.435791, 0.550781), (0.727539, 0.516602, 0.293945, 0.342773), (0.482422, 0.366455, 0.564453, 0.560547), (0.357422, 0.483643, 0.591797, 0.537109), (0.566895, 0.310547, 0.480713, 0.592773), (0.365723, 0.903809, 0.213135, 0.0608215), (0.475342, 0.624023, 0.427734, 0.449463), (0.391846, 0.452637, 0.689453, 0.407715), (0.0802612, 0.82959, 0.12915, 0.537109), (0.00506592, 0.568359, 0.799316, 0.195435), (0.535156, 0.691406, 0.485107, 0.0227966), (0.412354, 0.278076, 0.339844, 0.79834), (0.0248871, 0.283691, 0.486084, 0.826172), (0.702637, 0.530273, 0.393799, 0.264404), (0.639648, 0.391602, 0.158203, 0.64209), (0.624512, 0.00078249, 0.37793, 0.683594), (0.501953, 0.705078, 0.0289154, 0.5), (0.577148, 0.507812, 0.639648, 0.00888824), (0.0848389, 0.478271, 0.5625, 0.668945), (0.252197, 0.769043, 0.213135, 0.547363), (0.446533, 0.818848, 0.331543, 0.140869), (0.555176, 0.39502, 0.233398, 0.693848), (0.453857, 0.569824, 0.477783, 0.490723), (0.356934, 0.532227, 0.508789, 0.575195), (0.417236, 0.688965, 0.584961, 0.0932617), (0.15686, 0.802734, 0.000578403, 0.575684), (0.416748, 0.532715, 0.451904, 0.582031), (0.527344, 0.67334, 0.436035, 0.279541), (0.332031, 0.829102, 0.426514, 0.143311), (0.708984, 0.139038, 0.426514, 0.543945), (0.626953, 0.703125, 0.101624, 0.319336), (0.00901794, 0.382324, 0.672363, 0.633789), (0.173584, 0.694336, 0.612305, 0.335693), (0.29248, 0.541016, 0.58252, 0.53125), (0.888184, 0.383789, 0.250977, 0.0299225), (0.164917, 0.616211, 0.549805, 0.539551), (0.28833, 0.683594, 0.599121, 0.301025), (0.0667725, 0.96582, 0.189209, 0.162964), (0.429443, 0.416016, 0.80127, 0.0271606), (0.834961, 0.138794, 0.289551, 0.447021), (0.0962524, 0.109375, 0.922852, 0.356934), (0.305176, 0.535645, 0.561035, 0.552246), (0.625977, 0.284912, 0.679199, 0.255859), (0.60498, 0.441895, 0.468506, 0.468262), (0.395508, 0.270996, 0.822754, 0.30542), (0.416748, 0.207642, 0.602051, 0.648926), (0.333496, 0.230103, 0.496094, 0.768066), (0.80127, 0.308105, 0.502441, 0.103394), (0.86377, 0.446777, 0.203003, 0.114624), (0.273682, 0.230347, 0.649902, 0.670898), (0.782715, 0.469238, 0.0795898, 0.401123), (0.318604, 0.569336, 0.538574, 0.533203), (0.549316, 0.433594, 0.427979, 0.571777)],
-            2: [(0.468994, 0.168091, 0.454834, 0.738281), (0.382812, 0.670898, 0.481689, 0.413574), (0.470703, 0.326416, 0.564941, 0.59375), (0.505371, 0.708496, 0.482178, 0.101196), (0.35498, 0.568848, 0.675293, 0.306885), (0.385742, 0.692383, 0.0164642, 0.609375), (0.770996, 0.287109, 0.521973, 0.224609), (0.36792, 0.628906, 0.638184, 0.249512), (0.724121, 0.430664, 0.208252, 0.496826), (0.928223, 0.0809937, 0.0344238, 0.361572), (0.815918, 0.161743, 0.547852, 0.0884399), (0.349609, 0.229858, 0.651855, 0.632324), (0.287598, 0.840332, 0.302734, 0.345703), (0.287842, 0.565918, 0.714844, 0.293701), (0.901367, 0.0376282, 0.134277, 0.409912), (0.606934, 0.134644, 0.535156, 0.571777), (0.929688, 0.0853882, 0.155518, 0.322754), (0.591309, 0.702148, 0.337158, 0.209595), (0.518066, 0.614746, 0.533203, 0.263672), (0.0231018, 0.318115, 0.891602, 0.321533), (0.556641, 0.455811, 0.652832, 0.236328), (0.125854, 0.774902, 0.529297, 0.322021), (0.26709, 0.0723877, 0.121521, 0.953125), (0.0931396, 0.480469, 0.870605, 0.0512695), (0.234131, 0.668945, 0.696777, 0.110046), (0.754883, 0.409424, 0.098877, 0.50293), (0.785645, 0.39209, 0.0108719, 0.478516), (0.422119, 0.562012, 0.578613, 0.413574), (0.37085, 0.487549, 0.679688, 0.403564), (0.463379, 0.407227, 0.539551, 0.573242), (0.205444, 0.760254, 0.342773, 0.512207), (0.081543, 0.541016, 0.480225, 0.685547), (0.556152, 0.654785, 0.46875, 0.205322), (0.0188904, 0.510254, 0.608398, 0.607422), (0.402344, 0.682129, 0.42041, 0.442871), (0.366943, 0.180664, 0.835938, 0.365967), (0.207886, 0.830078, 0.468506, 0.219238), (0.59082, 0.160645, 0.0231934, 0.790527), (0.0663452, 0.758789, 0.333252, 0.555664), (0.479004, 0.525391, 0.555176, 0.431152), (0.756348, 0.00111389, 0.160522, 0.634277), (0.389893, 0.339111, 0.599609, 0.611328), (0.492432, 0.572754, 0.397705, 0.520996), (0.490967, 0.497803, 0.69043, 0.185913), (0.485596, 0.190918, 0.716797, 0.462402), (0.489258, 0.181152, 0.65918, 0.541504), (0.753418, 0.187378, 0.271973, 0.568848), (0.401611, 0.641113, 0.628418, 0.182129), (0.421143, 0.535156, 0.685547, 0.257568), (0.780273, 0.614258, 0.0437622, 0.109131), (0.597168, 0.0449829, 0.702637, 0.384766), (0.0605164, 0.700195, 0.465088, 0.538574), (0.0880737, 0.103577, 0.749512, 0.647949), (0.76709, 0.370361, 0.0926514, 0.515625), (0.331055, 0.462891, 0.496338, 0.655273), (0.732422, 0.647461, 0.114929, 0.176758), (0.316895, 0.783203, 0.51709, 0.137695), (0.618652, 0.761719, 0.1203, 0.151245), (0.915527, 0.253662, 0.310059, 0.0374146), (0.6875, 0.517578, 0.0124664, 0.508789), (0.356934, 0.337891, 0.705566, 0.510742), (0.532715, 0.261963, 0.570801, 0.566895), (0.304688, 0.268555, 0.804688, 0.43335), (0.522461, 0.490723, 0.471191, 0.51416), (0.670898, 0.572754, 0.177124, 0.436523), (0.754395, 0.229614, 0.491211, 0.370117), (0.532227, 0.608887, 0.430176, 0.401123), (0.598145, 0.635742, 0.294189, 0.38916), (0.398682, 0.611328, 0.213257, 0.649414), (0.831543, 0.350098, 0.388184, 0.187988), (0.497314, 0.344971, 0.470215, 0.642578), (0.00505447, 0.245728, 0.485352, 0.838867), (0.475098, 0.541016, 0.679199, 0.1427), (0.329102, 0.221802, 0.409668, 0.821289), (0.509766, 0.465576, 0.632324, 0.351318), (0.609375, 0.121033, 0.53125, 0.576172), (0.442627, 0.736328, 0.503418, 0.0914307), (0.594727, 0.343506, 0.60791, 0.398926), (0.484375, 0.196411, 0.669922, 0.527344), (0.648926, 0.105774, 0.583008, 0.477051), (0.765625, 0.528809, 0.279053, 0.236694), (0.656738, 0.347656, 0.525391, 0.414551), (0.72998, 0.120544, 0.345215, 0.577637), (0.473877, 0.454834, 0.432373, 0.617676), (0.300049, 0.0118637, 0.151733, 0.941895), (0.274902, 0.63916, 0.163818, 0.699707), (0.541992, 0.357178, 0.635742, 0.417969), (0.164795, 0.709473, 0.594238, 0.34082), (0.0489197, 0.474609, 0.853516, 0.209351), (0.439941, 0.592773, 0.416504, 0.530762), (0.0481262, 0.865234, 0.454102, 0.206909), (0.434814, 0.42041, 0.307861, 0.734375), (0.548828, 0.506836, 0.54248, 0.384277), (0.37207, 0.356445, 0.540039, 0.665527), (0.617676, 0.589844, 0.264404, 0.447754), (0.511719, 0.350098, 0.326904, 0.713379), (0.654785, 0.490723, 0.391357, 0.421143), (0.408203, 0.575195, 0.538086, 0.46167), (0.767578, 0.0193939, 0.42334, 0.480957), (0.449951, 0.648926, 0.553223, 0.265381), (0.0689697, 0.976562, 0.109619, 0.173218), (0.680664, 0.525391, 0.482666, 0.166626), (0.555176, 0.594238, 0.150757, 0.5625), (0.388916, 0.208862, 0.153442, 0.884277), (0.00372887, 0.476318, 0.333252, 0.813477), (0.64502, 0.660645, 0.151733, 0.353027), (0.0538025, 0.581543, 0.550781, 0.596191), (0.541504, 0.179077, 0.820312, 0.0462036), (0.457275, 0.225464, 0.830566, 0.223755), (0.133179, 0.665527, 0.361084, 0.639648), (0.707031, 0.44043, 0.0447388, 0.551758), (0.61377, 0.335938, 0.366455, 0.613281), (0.836426, 0.353516, 0.393066, 0.144409), (0.721191, 0.452393, 0.229614, 0.47168), (0.464355, 0.630859, 0.562012, 0.264893), (0.0296783, 0.586914, 0.512207, 0.626465), (0.56543, 0.61084, 0.537109, 0.136108), (0.0530701, 0.270996, 0.836426, 0.473389), (0.634766, 0.370117, 0.652344, 0.186523), (0.532715, 0.729004, 0.18811, 0.38623), (0.0645142, 0.530762, 0.811523, 0.235962), (0.414551, 0.618164, 0.667969, 0.0123596), (0.429932, 0.737305, 0.489502, 0.177734), (0.647461, 0.11261, 0.617676, 0.432129), (0.704102, 0.461182, 0.407471, 0.354248), (0.55127, 0.308105, 0.76123, 0.147949), (0.55127, 0.141846, 0.316406, 0.758789), (0.230591, 0.531738, 0.814453, 0.0300446), (0.581055, 0.407715, 0.136719, 0.690918), (0.489746, 0.521973, 0.618164, 0.325195), (0.142456, 0.584473, 0.478271, 0.639648), (0.438477, 0.63623, 0.447754, 0.449707), (0.577637, 0.131348, 0.78125, 0.196289), (0.587402, 0.46875, 0.496338, 0.434814), (0.103394, 0.379639, 0.787598, 0.474365), (0.100098, 0.434082, 0.730957, 0.51709), (0.43457, 0.615234, 0.302734, 0.583984), (0.64209, 0.463623, 0.608887, 0.0441284), (0.505371, 0.12915, 0.269775, 0.80957), (0.379639, 0.36499, 0.0939331, 0.844727), (0.172852, 0.598633, 0.774902, 0.105469), (0.141479, 0.482422, 0.61377, 0.608887), (0.3396, 0.581055, 0.716309, 0.184326), (0.204224, 0.544922, 0.792969, 0.181152), (0.400146, 0.591309, 0.692383, 0.102966), (0.203857, 0.398193, 0.60791, 0.65625), (0.801758, 0.357422, 0.335449, 0.341797), (0.043335, 0.150757, 0.884766, 0.438965), (0.173218, 0.672852, 0.376465, 0.612793), (0.649414, 0.362061, 0.481201, 0.4646), (0.662109, 0.603516, 0.344238, 0.280762), (0.489014, 0.19165, 0.800781, 0.288086), (0.82959, 0.0906372, 0.469482, 0.28833), (0.341797, 0.142822, 0.00710297, 0.928711), (0.523926, 0.176636, 0.598145, 0.580566), (0.564453, 0.246948, 0.589844, 0.521973), (0.459717, 0.496826, 0.608887, 0.413818), (0.499023, 0.828125, 0.0282593, 0.253662), (0.464844, 0.804199, 0.102539, 0.355957), (0.693359, 0.255615, 0.0837402, 0.668457), (0.415771, 0.621094, 0.638184, 0.18396), (0.158691, 0.731445, 0.27002, 0.605957), (0.648926, 0.623535, 0.0406799, 0.434326), (0.292236, 0.5, 0.449707, 0.679688), (0.33252, 0.110657, 0.888184, 0.297363), (0.641113, 0.267822, 0.715332, 0.072876), (0.0325317, 0.407227, 0.799316, 0.440918), (0.560547, 0.494385, 0.381348, 0.543945), (0.247681, 0.416016, 0.75, 0.450928), (0.601562, 0.671387, 0.388672, 0.190796), (0.348389, 0.845215, 0.292236, 0.28125), (0.433594, 0.464111, 0.401123, 0.660156), (0.450195, 0.214111, 0.85498, 0.143677), (0.596191, 0.440918, 0.377197, 0.554688), (0.561523, 0.715332, 0.274414, 0.313232), (0.477783, 0.435059, 0.686035, 0.334717), (0.744141, 0.078064, 0.392334, 0.535156), (0.319824, 0.375488, 0.851562, 0.178101), (0.513184, 0.283447, 0.0665894, 0.807617), (0.500977, 0.762695, 0.224976, 0.341064), (0.816895, 0.155396, 0.51709, 0.202393), (0.0157318, 0.497314, 0.763184, 0.411865), (0.605469, 0.570312, 0.39209, 0.393311), (0.0687256, 0.682129, 0.172363, 0.70752), (0.947266, 0.0371704, 0.212036, 0.237427), (0.268311, 0.295898, 0.0045166, 0.916504), (0.429932, 0.715332, 0.178467, 0.521484), (0.338135, 0.658203, 0.537598, 0.404053), (0.449707, 0.74707, 0.337646, 0.354248), (0.824219, 0.343506, 0.44873, 0.0349426), (0.0796509, 0.937988, 0.0897827, 0.325439), (0.344238, 0.719238, 0.506836, 0.327637), (0.705078, 0.387939, 0.588867, 0.0739136), (0.628418, 0.335205, 0.221191, 0.666504), (0.771484, 0.410889, 0.477051, 0.0908813), (0.538574, 0.566406, 0.619141, 0.0793457), (0.684082, 0.373047, 0.557129, 0.287109), (0.638672, 0.64209, 0.41748, 0.0727539), (0.681641, 0.515137, 0.456787, 0.247314), (0.538086, 0.609863, 0.340332, 0.471924), (0.71582, 0.0874634, 0.680664, 0.129028), (0.222412, 0.684082, 0.614746, 0.32373), (0.507324, 0.799316, 0.238647, 0.216431), (0.429932, 0.736328, 0.00971222, 0.522461), (0.757324, 0.644531, 0.052002, 0.0913086), (0.268799, 0.0161133, 0.438232, 0.857422), (0.435059, 0.742676, 0.3125, 0.401611), (0.804199, 0.469727, 0.227783, 0.283936), (0.231079, 0.451904, 0.687988, 0.519043), (0.451172, 0.574219, 0.420654, 0.538574), (0.140259, 0.85791, 0.0655518, 0.489746), (0.258301, 0.481445, 0.746094, 0.381104), (0.140625, 0.00349236, 0.95166, 0.272217), (0.0164795, 0.863281, 0.354492, 0.358398), (0.584961, 0.490967, 0.630859, 0.136963), (0.0425415, 0.624512, 0.487793, 0.608398), (0.16687, 0.415039, 0.871582, 0.199951), (0.543945, 0.479736, 0.336182, 0.600586), (0.0562744, 0.4729, 0.569336, 0.67041), (0.583008, 0.753906, 0.302979, 0.00542068), (0.395752, 0.253906, 0.640137, 0.607422), (0.632812, 0.652344, 0.410889, 0.0731201), (0.187134, 0.481445, 0.750488, 0.412109), (0.437744, 0.744141, 0.318115, 0.39209), (0.555176, 0.668945, 0.0766602, 0.488525), (0.570312, 0.519043, 0.300537, 0.561035), (0.171631, 0.740723, 0.150146, 0.631836), (0.282471, 0.283691, 0.195923, 0.89502), (0.651855, 0.702148, 0.0883179, 0.272705), (0.179688, 0.733398, 0.148804, 0.638184), (0.406494, 0.695312, 0.552734, 0.213623), (0.251953, 0.0709229, 0.73291, 0.62793), (0.723145, 0.568848, 0.390869, 0.0258331), (0.695312, 0.552734, 0.410889, 0.206055), (0.73877, 0.104553, 0.378906, 0.547363), (0.145142, 0.431152, 0.453857, 0.766113), (0.0645752, 0.461182, 0.388672, 0.794922), (0.391846, 0.616211, 0.637207, 0.245972), (0.522949, 0.0602417, 0.642578, 0.556641), (0.492676, 0.421631, 0.394043, 0.651367), (0.51416, 0.423828, 0.500488, 0.552734), (0.220703, 0.0689087, 0.910156, 0.344238), (0.177124, 0.377197, 0.200806, 0.886719), (0.698242, 0.253662, 0.665039, 0.0756836), (0.21106, 0.267822, 0.191895, 0.92041), (0.887207, 0.211792, 0.296631, 0.282715), (0.523438, 0.5, 0.164551, 0.669922), (0.637207, 0.383789, 0.585938, 0.321777), (0.567871, 0.57666, 0.193481, 0.554688), (0.0535583, 0.633789, 0.2323, 0.73584), (0.395996, 0.546875, 0.694824, 0.247437), (0.869629, 0.236938, 0.347656, 0.258301), (0.173462, 0.614746, 0.461426, 0.615723), (0.115173, 0.562988, 0.818359, 0.0155182), (0.598633, 0.304932, 0.0189056, 0.740234), (0.521484, 0.0218353, 0.553223, 0.649414), (0.561523, 0.512695, 0.397217, 0.513672), (0.151245, 0.234863, 0.959961, 0.0247345), (0.305908, 0.604492, 0.492188, 0.546387), (0.599121, 0.686523, 0.192627, 0.364258), (0.47876, 0.411377, 0.769531, 0.0985107), (0.585449, 0.271484, 0.34668, 0.680664), (0.616211, 0.0740356, 0.47998, 0.620117), (0.666016, 0.017334, 0.289307, 0.6875), (0.184937, 0.401611, 0.009552, 0.896973), (0.137817, 0.654785, 0.738281, 0.0872192), (0.555664, 0.531738, 0.36377, 0.525879), (0.236938, 0.133667, 0.754395, 0.597168), (0.381104, 0.640625, 0.516113, 0.421387), (0.218994, 0.468262, 0.683594, 0.515625), (0.583008, 0.480225, 0.416016, 0.506348), (0.407227, 0.781738, 0.311279, 0.355225), (0.396484, 0.394531, 0.443115, 0.700684), (0.566895, 0.721191, 0.379639, 0.11969), (0.708984, 0.542969, 0.158081, 0.421387), (0.163818, 0.010582, 0.847168, 0.505371), (0.709473, 0.27002, 0.612793, 0.219727), (0.0732422, 0.301025, 0.80957, 0.498535), (0.681641, 0.182129, 0.708496, 0.0115509), (0.692383, 0.416748, 0.588867, 0.00333977), (0.58252, 0.338379, 0.711914, 0.19873), (0.656738, 0.488525, 0.567383, 0.0895996), (0.635742, 0.539062, 0.488281, 0.258301), (0.615234, 0.659668, 0.316162, 0.293945), (0.828613, 0.468994, 0.148193, 0.267334), (0.300293, 0.1521, 0.732422, 0.592285), (0.69873, 0.440674, 0.35376, 0.438477), (0.0406494, 0.679199, 0.634277, 0.366943), (0.801758, 0.0582275, 0.281006, 0.524414), (0.41333, 0.127075, 0.186401, 0.882324), (0.438721, 0.474365, 0.755371, 0.110046), (0.620605, 0.513672, 0.584961, 0.0941772), (0.05896, 0.00168514, 0.958496, 0.279297), (0.825684, 0.330322, 0.226685, 0.397217), (0.385986, 0.615723, 0.388672, 0.566406), (0.290527, 0.516602, 0.746582, 0.30249), (0.881348, 0.0742798, 0.167603, 0.435547), (0.549316, 0.27832, 0.193115, 0.763672), (0.0157623, 0.395752, 0.130493, 0.908691), (0.460449, 0.697754, 0.510742, 0.201416), (0.726562, 0.541016, 0.303711, 0.294678), (0.288086, 0.392822, 0.691406, 0.533691), (0.737305, 0.626465, 0.169434, 0.187378), (0.722168, 0.625, 0.10022, 0.278809), (0.0105209, 0.804688, 0.153931, 0.573242), (0.101562, 0.690918, 0.702637, 0.134888), (0.38208, 0.552734, 0.606934, 0.424316), (0.160034, 0.0267181, 0.335205, 0.928223), (0.224365, 0.381348, 0.557617, 0.702148), (0.691406, 0.125854, 0.501465, 0.504883), (0.834961, 0.232788, 0.489746, 0.0942383), (0.491455, 0.541504, 0.523438, 0.4375), (0.551758, 0.432373, 0.494629, 0.513672), (0.108704, 0.459961, 0.589844, 0.654785), (0.438232, 0.476562, 0.706055, 0.286377), (0.361084, 0.252441, 0.392578, 0.807129), (0.788086, 0.0546875, 0.507812, 0.343994), (0.454346, 0.509766, 0.504395, 0.528809), (0.104248, 0.975586, 0.18103, 0.0692139), (0.924316, 0.149536, 0.0319824, 0.349609), (0.508789, 0.458008, 0.232056, 0.690918), (0.687988, 0.620605, 0.350342, 0.137207), (0.365723, 0.85791, 0.133911, 0.335693), (0.317871, 0.403076, 0.618164, 0.595215), (0.458496, 0.461426, 0.618164, 0.441162), (0.605957, 0.502441, 0.58252, 0.202271), (0.456787, 0.577637, 0.49585, 0.459961), (0.697754, 0.644043, 0.216675, 0.226318), (0.412842, 0.628906, 0.0456238, 0.657227), (0.671875, 0.20752, 0.675293, 0.222656), (0.378174, 0.548828, 0.451416, 0.593262), (0.697754, 0.4646, 0.540039, 0.0749512), (0.658691, 0.495605, 0.343994, 0.449463), (0.804688, 0.127441, 0.551758, 0.178955), (0.144043, 0.791016, 0.594238, 0.0206604), (0.185791, 0.387451, 0.444092, 0.786133), (0.764648, 0.463867, 0.436768, 0.0957031), (0.00309944, 0.714844, 0.105286, 0.690918), (0.546387, 0.481934, 0.570801, 0.378418), (0.54248, 0.0839844, 0.140991, 0.82373), (0.109497, 0.725098, 0.611816, 0.296143), (0.0836792, 0.163574, 0.586914, 0.788574), (0.693359, 0.0698853, 0.689453, 0.197266), (0.460693, 0.621582, 0.453613, 0.442383), (0.506348, 0.666016, 0.340576, 0.429443), (0.0577087, 0.415527, 0.0742188, 0.904785), (0.0575256, 0.779785, 0.514648, 0.352295), (0.365723, 0.540039, 0.170654, 0.738281), (0.987305, 0.150146, 0.00455856, 0.0514832), (0.623047, 0.119263, 0.412109, 0.653809), (0.977539, 0.11969, 0.0733032, 0.157227), (0.074646, 0.0269623, 0.183105, 0.97998), (0.666504, 0.482178, 0.428955, 0.373047), (0.25, 0.115356, 0.564941, 0.777832), (0.467529, 0.79541, 0.300293, 0.242065), (0.462646, 0.456787, 0.740234, 0.170288), (0.259033, 0.626953, 0.652344, 0.338623), (0.0396423, 0.377441, 0.59375, 0.709473), (0.0614929, 0.0821533, 0.919434, 0.379395), (0.242188, 0.235229, 0.460693, 0.820801), (0.124756, 0.628418, 0.368652, 0.673828), (0.504395, 0.364014, 0.738281, 0.26123), (0.452881, 0.682617, 0.0543518, 0.571289), (0.683594, 0.189087, 0.692383, 0.131348), (0.632812, 0.725586, 0.113708, 0.245239), (0.387939, 0.905273, 0.170654, 0.0314331), (0.609375, 0.0265198, 0.372559, 0.699219), (0.0329895, 0.283691, 0.740723, 0.60791), (0.165771, 0.155762, 0.812988, 0.536133), (0.592285, 0.456299, 0.560059, 0.357178), (0.634277, 0.0870361, 0.401367, 0.654785), (0.689941, 0.517578, 0.280273, 0.421631), (0.499023, 0.622559, 0.596191, 0.0888062), (0.484619, 0.506836, 0.529297, 0.477539), (0.220093, 0.473633, 0.765625, 0.375977), (0.00972748, 0.624023, 0.203735, 0.754395), (0.492188, 0.100647, 0.000545979, 0.864746), (0.228882, 0.834473, 0.301025, 0.400391), (0.456299, 0.23877, 0.587891, 0.623535), (0.536133, 0.5625, 0.523926, 0.349121), (0.587402, 0.292969, 0.322021, 0.682129), (0.593262, 0.556152, 0.566406, 0.13269), (0.10791, 0.829102, 0.539551, 0.0997314), (0.394775, 0.38501, 0.350342, 0.757324), (0.786133, 0.439941, 0.397217, 0.175537), (0.879395, 0.149536, 0.29834, 0.339355), (0.696777, 0.32373, 0.467773, 0.436768), (0.386963, 0.127808, 0.754883, 0.513672), (0.604004, 0.130737, 0.515137, 0.59375), (0.128418, 0.0111694, 0.991699, 0.000308275), (0.558105, 0.265625, 0.785645, 0.0202484), (0.695312, 0.64502, 0.264404, 0.175171), (0.5, 0.54541, 0.0738525, 0.668945), (0.0522766, 0.243652, 0.583496, 0.772949), (0.341309, 0.680176, 0.490479, 0.424805), (0.607422, 0.306641, 0.544434, 0.490234), (0.640137, 0.285645, 0.315918, 0.63916), (0.466553, 0.488037, 0.610352, 0.414307), (0.57959, 0.631348, 0.277344, 0.43457), (0.803711, 0.0847168, 0.138916, 0.572266), (0.58252, 0.186401, 0.631836, 0.47583), (0.317139, 0.583008, 0.588867, 0.461182), (0.21814, 0.707031, 0.276123, 0.61377), (0.0426941, 0.92334, 0.10791, 0.366211), (0.366699, 0.550781, 0.749023, 0.0311584), (0.235718, 0.0223236, 0.657227, 0.71582), (0.754395, 0.292236, 0.335938, 0.482178), (0.324219, 0.489258, 0.695312, 0.414795), (0.687012, 0.375488, 0.505859, 0.362061), (0.267578, 0.722656, 0.286865, 0.568848), (0.551758, 0.46875, 0.0196533, 0.689453), (0.665039, 0.427246, 0.526855, 0.312744), (0.68457, 0.344482, 0.495361, 0.40918), (0.468018, 0.071167, 0.810547, 0.344482), (0.279541, 0.22644, 0.518555, 0.775879), (0.20459, 0.785156, 0.466064, 0.352295), (0.543457, 0.624512, 0.0345764, 0.560059), (0.493652, 0.469482, 0.727539, 0.0794678), (0.444336, 0.550293, 0.649414, 0.280029), (0.668945, 0.264893, 0.556641, 0.415283), (0.449951, 0.425781, 0.0817871, 0.780762), (0.430664, 0.220337, 0.557129, 0.675293), (0.0508728, 0.175171, 0.791992, 0.58252), (0.543457, 0.53125, 0.597656, 0.255615), (0.402832, 0.424316, 0.280029, 0.76123), (0.44043, 0.366699, 0.681152, 0.455322), (0.675293, 0.268799, 0.202637, 0.65625), (0.0601807, 0.710449, 0.654297, 0.251953), (0.794434, 0.0823364, 0.0695801, 0.597656), (0.692871, 0.0828247, 0.700195, 0.150024), (0.466797, 0.635742, 0.212646, 0.57666), (0.623047, 0.494873, 0.351074, 0.493896), (0.505371, 0.647461, 0.547363, 0.15979), (0.249634, 0.17395, 0.193726, 0.932617), (0.907227, 0.142944, 0.160889, 0.361328), (0.546387, 0.397217, 0.618652, 0.401367), (0.463623, 0.51416, 0.588379, 0.417969), (0.603516, 0.73584, 0.190674, 0.241211), (0.27124, 0.0416565, 0.895508, 0.350098), (0.284912, 0.623535, 0.456055, 0.567383), (0.558105, 0.518555, 0.585938, 0.276367), (0.233398, 0.913574, 0.0595398, 0.328125), (0.557617, 0.60791, 0.128662, 0.550781), (0.179932, 0.273438, 0.70166, 0.632812), (0.279297, 0.337158, 0.812012, 0.38623), (0.208008, 0.403564, 0.648926, 0.610352), (0.883301, 0.201904, 0.420654, 0.0443726), (0.479736, 0.525879, 0.435791, 0.550781), (0.727539, 0.516602, 0.293945, 0.342773), (0.482422, 0.366455, 0.564453, 0.560547), (0.357422, 0.483643, 0.591797, 0.537109), (0.566895, 0.310547, 0.480713, 0.592773), (0.365723, 0.903809, 0.213135, 0.0608215), (0.475342, 0.624023, 0.427734, 0.449463), (0.391846, 0.452637, 0.689453, 0.407715), (0.0802612, 0.82959, 0.12915, 0.537109), (0.00506592, 0.568359, 0.799316, 0.195435), (0.535156, 0.691406, 0.485107, 0.0227966), (0.412354, 0.278076, 0.339844, 0.79834), (0.0248871, 0.283691, 0.486084, 0.826172), (0.702637, 0.530273, 0.393799, 0.264404), (0.639648, 0.391602, 0.158203, 0.64209), (0.624512, 0.00078249, 0.37793, 0.683594), (0.501953, 0.705078, 0.0289154, 0.5), (0.577148, 0.507812, 0.639648, 0.00888824), (0.0848389, 0.478271, 0.5625, 0.668945), (0.252197, 0.769043, 0.213135, 0.547363), (0.446533, 0.818848, 0.331543, 0.140869), (0.555176, 0.39502, 0.233398, 0.693848), (0.453857, 0.569824, 0.477783, 0.490723), (0.356934, 0.532227, 0.508789, 0.575195), (0.417236, 0.688965, 0.584961, 0.0932617), (0.15686, 0.802734, 0.000578403, 0.575684), (0.416748, 0.532715, 0.451904, 0.582031), (0.527344, 0.67334, 0.436035, 0.279541), (0.332031, 0.829102, 0.426514, 0.143311), (0.708984, 0.139038, 0.426514, 0.543945), (0.626953, 0.703125, 0.101624, 0.319336), (0.00901794, 0.382324, 0.672363, 0.633789), (0.173584, 0.694336, 0.612305, 0.335693), (0.29248, 0.541016, 0.58252, 0.53125), (0.888184, 0.383789, 0.250977, 0.0299225), (0.164917, 0.616211, 0.549805, 0.539551), (0.28833, 0.683594, 0.599121, 0.301025), (0.0667725, 0.96582, 0.189209, 0.162964), (0.429443, 0.416016, 0.80127, 0.0271606), (0.834961, 0.138794, 0.289551, 0.447021), (0.0962524, 0.109375, 0.922852, 0.356934), (0.305176, 0.535645, 0.561035, 0.552246), (0.625977, 0.284912, 0.679199, 0.255859), (0.60498, 0.441895, 0.468506, 0.468262), (0.395508, 0.270996, 0.822754, 0.30542), (0.416748, 0.207642, 0.602051, 0.648926), (0.333496, 0.230103, 0.496094, 0.768066), (0.80127, 0.308105, 0.502441, 0.103394), (0.86377, 0.446777, 0.203003, 0.114624), (0.273682, 0.230347, 0.649902, 0.670898), (0.782715, 0.469238, 0.0795898, 0.401123), (0.318604, 0.569336, 0.538574, 0.533203), (0.549316, 0.433594, 0.427979, 0.571777)],
-            3: [(0.468994, 0.168091, 0.454834, 0.738281), (0.382812, 0.670898, 0.481689, 0.413574), (0.470703, 0.326416, 0.564941, 0.59375), (0.505371, 0.708496, 0.482178, 0.101196), (0.35498, 0.568848, 0.675293, 0.306885), (0.385742, 0.692383, 0.0164642, 0.609375), (0.770996, 0.287109, 0.521973, 0.224609), (0.36792, 0.628906, 0.638184, 0.249512), (0.724121, 0.430664, 0.208252, 0.496826), (0.928223, 0.0809937, 0.0344238, 0.361572), (0.815918, 0.161743, 0.547852, 0.0884399), (0.349609, 0.229858, 0.651855, 0.632324), (0.287598, 0.840332, 0.302734, 0.345703), (0.287842, 0.565918, 0.714844, 0.293701), (0.901367, 0.0376282, 0.134277, 0.409912), (0.606934, 0.134644, 0.535156, 0.571777), (0.929688, 0.0853882, 0.155518, 0.322754), (0.591309, 0.702148, 0.337158, 0.209595), (0.518066, 0.614746, 0.533203, 0.263672), (0.0231018, 0.318115, 0.891602, 0.321533), (0.556641, 0.455811, 0.652832, 0.236328), (0.125854, 0.774902, 0.529297, 0.322021), (0.26709, 0.0723877, 0.121521, 0.953125), (0.0931396, 0.480469, 0.870605, 0.0512695), (0.234131, 0.668945, 0.696777, 0.110046), (0.754883, 0.409424, 0.098877, 0.50293), (0.785645, 0.39209, 0.0108719, 0.478516), (0.422119, 0.562012, 0.578613, 0.413574), (0.37085, 0.487549, 0.679688, 0.403564), (0.463379, 0.407227, 0.539551, 0.573242), (0.205444, 0.760254, 0.342773, 0.512207), (0.081543, 0.541016, 0.480225, 0.685547), (0.556152, 0.654785, 0.46875, 0.205322), (0.0188904, 0.510254, 0.608398, 0.607422), (0.402344, 0.682129, 0.42041, 0.442871), (0.366943, 0.180664, 0.835938, 0.365967), (0.207886, 0.830078, 0.468506, 0.219238), (0.59082, 0.160645, 0.0231934, 0.790527), (0.0663452, 0.758789, 0.333252, 0.555664), (0.479004, 0.525391, 0.555176, 0.431152), (0.756348, 0.00111389, 0.160522, 0.634277), (0.389893, 0.339111, 0.599609, 0.611328), (0.492432, 0.572754, 0.397705, 0.520996), (0.490967, 0.497803, 0.69043, 0.185913), (0.485596, 0.190918, 0.716797, 0.462402), (0.489258, 0.181152, 0.65918, 0.541504), (0.753418, 0.187378, 0.271973, 0.568848), (0.401611, 0.641113, 0.628418, 0.182129), (0.421143, 0.535156, 0.685547, 0.257568), (0.780273, 0.614258, 0.0437622, 0.109131), (0.597168, 0.0449829, 0.702637, 0.384766), (0.0605164, 0.700195, 0.465088, 0.538574), (0.0880737, 0.103577, 0.749512, 0.647949), (0.76709, 0.370361, 0.0926514, 0.515625), (0.331055, 0.462891, 0.496338, 0.655273), (0.732422, 0.647461, 0.114929, 0.176758), (0.316895, 0.783203, 0.51709, 0.137695), (0.618652, 0.761719, 0.1203, 0.151245), (0.915527, 0.253662, 0.310059, 0.0374146), (0.6875, 0.517578, 0.0124664, 0.508789), (0.356934, 0.337891, 0.705566, 0.510742), (0.532715, 0.261963, 0.570801, 0.566895), (0.304688, 0.268555, 0.804688, 0.43335), (0.522461, 0.490723, 0.471191, 0.51416), (0.670898, 0.572754, 0.177124, 0.436523), (0.754395, 0.229614, 0.491211, 0.370117), (0.532227, 0.608887, 0.430176, 0.401123), (0.598145, 0.635742, 0.294189, 0.38916), (0.398682, 0.611328, 0.213257, 0.649414), (0.831543, 0.350098, 0.388184, 0.187988), (0.497314, 0.344971, 0.470215, 0.642578), (0.00505447, 0.245728, 0.485352, 0.838867), (0.475098, 0.541016, 0.679199, 0.1427), (0.329102, 0.221802, 0.409668, 0.821289), (0.509766, 0.465576, 0.632324, 0.351318), (0.609375, 0.121033, 0.53125, 0.576172), (0.442627, 0.736328, 0.503418, 0.0914307), (0.594727, 0.343506, 0.60791, 0.398926), (0.484375, 0.196411, 0.669922, 0.527344), (0.648926, 0.105774, 0.583008, 0.477051), (0.765625, 0.528809, 0.279053, 0.236694), (0.656738, 0.347656, 0.525391, 0.414551), (0.72998, 0.120544, 0.345215, 0.577637), (0.473877, 0.454834, 0.432373, 0.617676), (0.300049, 0.0118637, 0.151733, 0.941895), (0.274902, 0.63916, 0.163818, 0.699707), (0.541992, 0.357178, 0.635742, 0.417969), (0.164795, 0.709473, 0.594238, 0.34082), (0.0489197, 0.474609, 0.853516, 0.209351), (0.439941, 0.592773, 0.416504, 0.530762), (0.0481262, 0.865234, 0.454102, 0.206909), (0.434814, 0.42041, 0.307861, 0.734375), (0.548828, 0.506836, 0.54248, 0.384277), (0.37207, 0.356445, 0.540039, 0.665527), (0.617676, 0.589844, 0.264404, 0.447754), (0.511719, 0.350098, 0.326904, 0.713379), (0.654785, 0.490723, 0.391357, 0.421143), (0.408203, 0.575195, 0.538086, 0.46167), (0.767578, 0.0193939, 0.42334, 0.480957), (0.449951, 0.648926, 0.553223, 0.265381), (0.0689697, 0.976562, 0.109619, 0.173218), (0.680664, 0.525391, 0.482666, 0.166626), (0.555176, 0.594238, 0.150757, 0.5625), (0.388916, 0.208862, 0.153442, 0.884277), (0.00372887, 0.476318, 0.333252, 0.813477), (0.64502, 0.660645, 0.151733, 0.353027), (0.0538025, 0.581543, 0.550781, 0.596191), (0.541504, 0.179077, 0.820312, 0.0462036), (0.457275, 0.225464, 0.830566, 0.223755), (0.133179, 0.665527, 0.361084, 0.639648), (0.707031, 0.44043, 0.0447388, 0.551758), (0.61377, 0.335938, 0.366455, 0.613281), (0.836426, 0.353516, 0.393066, 0.144409), (0.721191, 0.452393, 0.229614, 0.47168), (0.464355, 0.630859, 0.562012, 0.264893), (0.0296783, 0.586914, 0.512207, 0.626465), (0.56543, 0.61084, 0.537109, 0.136108), (0.0530701, 0.270996, 0.836426, 0.473389), (0.634766, 0.370117, 0.652344, 0.186523), (0.532715, 0.729004, 0.18811, 0.38623), (0.0645142, 0.530762, 0.811523, 0.235962), (0.414551, 0.618164, 0.667969, 0.0123596), (0.429932, 0.737305, 0.489502, 0.177734), (0.647461, 0.11261, 0.617676, 0.432129), (0.704102, 0.461182, 0.407471, 0.354248), (0.55127, 0.308105, 0.76123, 0.147949), (0.55127, 0.141846, 0.316406, 0.758789), (0.230591, 0.531738, 0.814453, 0.0300446), (0.581055, 0.407715, 0.136719, 0.690918), (0.489746, 0.521973, 0.618164, 0.325195), (0.142456, 0.584473, 0.478271, 0.639648), (0.438477, 0.63623, 0.447754, 0.449707), (0.577637, 0.131348, 0.78125, 0.196289), (0.587402, 0.46875, 0.496338, 0.434814), (0.103394, 0.379639, 0.787598, 0.474365), (0.100098, 0.434082, 0.730957, 0.51709), (0.43457, 0.615234, 0.302734, 0.583984), (0.64209, 0.463623, 0.608887, 0.0441284), (0.505371, 0.12915, 0.269775, 0.80957), (0.379639, 0.36499, 0.0939331, 0.844727), (0.172852, 0.598633, 0.774902, 0.105469), (0.141479, 0.482422, 0.61377, 0.608887), (0.3396, 0.581055, 0.716309, 0.184326), (0.204224, 0.544922, 0.792969, 0.181152), (0.400146, 0.591309, 0.692383, 0.102966), (0.203857, 0.398193, 0.60791, 0.65625), (0.801758, 0.357422, 0.335449, 0.341797), (0.043335, 0.150757, 0.884766, 0.438965), (0.173218, 0.672852, 0.376465, 0.612793), (0.649414, 0.362061, 0.481201, 0.4646), (0.662109, 0.603516, 0.344238, 0.280762), (0.489014, 0.19165, 0.800781, 0.288086), (0.82959, 0.0906372, 0.469482, 0.28833), (0.341797, 0.142822, 0.00710297, 0.928711), (0.523926, 0.176636, 0.598145, 0.580566), (0.564453, 0.246948, 0.589844, 0.521973), (0.459717, 0.496826, 0.608887, 0.413818), (0.499023, 0.828125, 0.0282593, 0.253662), (0.464844, 0.804199, 0.102539, 0.355957), (0.693359, 0.255615, 0.0837402, 0.668457), (0.415771, 0.621094, 0.638184, 0.18396), (0.158691, 0.731445, 0.27002, 0.605957), (0.648926, 0.623535, 0.0406799, 0.434326), (0.292236, 0.5, 0.449707, 0.679688), (0.33252, 0.110657, 0.888184, 0.297363), (0.641113, 0.267822, 0.715332, 0.072876), (0.0325317, 0.407227, 0.799316, 0.440918), (0.560547, 0.494385, 0.381348, 0.543945), (0.247681, 0.416016, 0.75, 0.450928), (0.601562, 0.671387, 0.388672, 0.190796), (0.348389, 0.845215, 0.292236, 0.28125), (0.433594, 0.464111, 0.401123, 0.660156), (0.450195, 0.214111, 0.85498, 0.143677), (0.596191, 0.440918, 0.377197, 0.554688), (0.561523, 0.715332, 0.274414, 0.313232), (0.477783, 0.435059, 0.686035, 0.334717), (0.744141, 0.078064, 0.392334, 0.535156), (0.319824, 0.375488, 0.851562, 0.178101), (0.513184, 0.283447, 0.0665894, 0.807617), (0.500977, 0.762695, 0.224976, 0.341064), (0.816895, 0.155396, 0.51709, 0.202393), (0.0157318, 0.497314, 0.763184, 0.411865), (0.605469, 0.570312, 0.39209, 0.393311), (0.0687256, 0.682129, 0.172363, 0.70752), (0.947266, 0.0371704, 0.212036, 0.237427), (0.268311, 0.295898, 0.0045166, 0.916504), (0.429932, 0.715332, 0.178467, 0.521484), (0.338135, 0.658203, 0.537598, 0.404053), (0.449707, 0.74707, 0.337646, 0.354248), (0.824219, 0.343506, 0.44873, 0.0349426), (0.0796509, 0.937988, 0.0897827, 0.325439), (0.344238, 0.719238, 0.506836, 0.327637), (0.705078, 0.387939, 0.588867, 0.0739136), (0.628418, 0.335205, 0.221191, 0.666504), (0.771484, 0.410889, 0.477051, 0.0908813), (0.538574, 0.566406, 0.619141, 0.0793457), (0.684082, 0.373047, 0.557129, 0.287109), (0.638672, 0.64209, 0.41748, 0.0727539), (0.681641, 0.515137, 0.456787, 0.247314), (0.538086, 0.609863, 0.340332, 0.471924), (0.71582, 0.0874634, 0.680664, 0.129028), (0.222412, 0.684082, 0.614746, 0.32373), (0.507324, 0.799316, 0.238647, 0.216431), (0.429932, 0.736328, 0.00971222, 0.522461), (0.757324, 0.644531, 0.052002, 0.0913086), (0.268799, 0.0161133, 0.438232, 0.857422), (0.435059, 0.742676, 0.3125, 0.401611), (0.804199, 0.469727, 0.227783, 0.283936), (0.231079, 0.451904, 0.687988, 0.519043), (0.451172, 0.574219, 0.420654, 0.538574), (0.140259, 0.85791, 0.0655518, 0.489746), (0.258301, 0.481445, 0.746094, 0.381104), (0.140625, 0.00349236, 0.95166, 0.272217), (0.0164795, 0.863281, 0.354492, 0.358398), (0.584961, 0.490967, 0.630859, 0.136963), (0.0425415, 0.624512, 0.487793, 0.608398), (0.16687, 0.415039, 0.871582, 0.199951), (0.543945, 0.479736, 0.336182, 0.600586), (0.0562744, 0.4729, 0.569336, 0.67041), (0.583008, 0.753906, 0.302979, 0.00542068), (0.395752, 0.253906, 0.640137, 0.607422), (0.632812, 0.652344, 0.410889, 0.0731201), (0.187134, 0.481445, 0.750488, 0.412109), (0.437744, 0.744141, 0.318115, 0.39209), (0.555176, 0.668945, 0.0766602, 0.488525), (0.570312, 0.519043, 0.300537, 0.561035), (0.171631, 0.740723, 0.150146, 0.631836), (0.282471, 0.283691, 0.195923, 0.89502), (0.651855, 0.702148, 0.0883179, 0.272705), (0.179688, 0.733398, 0.148804, 0.638184), (0.406494, 0.695312, 0.552734, 0.213623), (0.251953, 0.0709229, 0.73291, 0.62793), (0.723145, 0.568848, 0.390869, 0.0258331), (0.695312, 0.552734, 0.410889, 0.206055), (0.73877, 0.104553, 0.378906, 0.547363), (0.145142, 0.431152, 0.453857, 0.766113), (0.0645752, 0.461182, 0.388672, 0.794922), (0.391846, 0.616211, 0.637207, 0.245972), (0.522949, 0.0602417, 0.642578, 0.556641), (0.492676, 0.421631, 0.394043, 0.651367), (0.51416, 0.423828, 0.500488, 0.552734), (0.220703, 0.0689087, 0.910156, 0.344238), (0.177124, 0.377197, 0.200806, 0.886719), (0.698242, 0.253662, 0.665039, 0.0756836), (0.21106, 0.267822, 0.191895, 0.92041), (0.887207, 0.211792, 0.296631, 0.282715), (0.523438, 0.5, 0.164551, 0.669922), (0.637207, 0.383789, 0.585938, 0.321777), (0.567871, 0.57666, 0.193481, 0.554688), (0.0535583, 0.633789, 0.2323, 0.73584), (0.395996, 0.546875, 0.694824, 0.247437), (0.869629, 0.236938, 0.347656, 0.258301), (0.173462, 0.614746, 0.461426, 0.615723), (0.115173, 0.562988, 0.818359, 0.0155182), (0.598633, 0.304932, 0.0189056, 0.740234), (0.521484, 0.0218353, 0.553223, 0.649414), (0.561523, 0.512695, 0.397217, 0.513672), (0.151245, 0.234863, 0.959961, 0.0247345), (0.305908, 0.604492, 0.492188, 0.546387), (0.599121, 0.686523, 0.192627, 0.364258), (0.47876, 0.411377, 0.769531, 0.0985107), (0.585449, 0.271484, 0.34668, 0.680664), (0.616211, 0.0740356, 0.47998, 0.620117), (0.666016, 0.017334, 0.289307, 0.6875), (0.184937, 0.401611, 0.009552, 0.896973), (0.137817, 0.654785, 0.738281, 0.0872192), (0.555664, 0.531738, 0.36377, 0.525879), (0.236938, 0.133667, 0.754395, 0.597168), (0.381104, 0.640625, 0.516113, 0.421387), (0.218994, 0.468262, 0.683594, 0.515625), (0.583008, 0.480225, 0.416016, 0.506348), (0.407227, 0.781738, 0.311279, 0.355225), (0.396484, 0.394531, 0.443115, 0.700684), (0.566895, 0.721191, 0.379639, 0.11969), (0.708984, 0.542969, 0.158081, 0.421387), (0.163818, 0.010582, 0.847168, 0.505371), (0.709473, 0.27002, 0.612793, 0.219727), (0.0732422, 0.301025, 0.80957, 0.498535), (0.681641, 0.182129, 0.708496, 0.0115509), (0.692383, 0.416748, 0.588867, 0.00333977), (0.58252, 0.338379, 0.711914, 0.19873), (0.656738, 0.488525, 0.567383, 0.0895996), (0.635742, 0.539062, 0.488281, 0.258301), (0.615234, 0.659668, 0.316162, 0.293945), (0.828613, 0.468994, 0.148193, 0.267334), (0.300293, 0.1521, 0.732422, 0.592285), (0.69873, 0.440674, 0.35376, 0.438477), (0.0406494, 0.679199, 0.634277, 0.366943), (0.801758, 0.0582275, 0.281006, 0.524414), (0.41333, 0.127075, 0.186401, 0.882324), (0.438721, 0.474365, 0.755371, 0.110046), (0.620605, 0.513672, 0.584961, 0.0941772), (0.05896, 0.00168514, 0.958496, 0.279297), (0.825684, 0.330322, 0.226685, 0.397217), (0.385986, 0.615723, 0.388672, 0.566406), (0.290527, 0.516602, 0.746582, 0.30249), (0.881348, 0.0742798, 0.167603, 0.435547), (0.549316, 0.27832, 0.193115, 0.763672), (0.0157623, 0.395752, 0.130493, 0.908691), (0.460449, 0.697754, 0.510742, 0.201416), (0.726562, 0.541016, 0.303711, 0.294678), (0.288086, 0.392822, 0.691406, 0.533691), (0.737305, 0.626465, 0.169434, 0.187378), (0.722168, 0.625, 0.10022, 0.278809), (0.0105209, 0.804688, 0.153931, 0.573242), (0.101562, 0.690918, 0.702637, 0.134888), (0.38208, 0.552734, 0.606934, 0.424316), (0.160034, 0.0267181, 0.335205, 0.928223), (0.224365, 0.381348, 0.557617, 0.702148), (0.691406, 0.125854, 0.501465, 0.504883), (0.834961, 0.232788, 0.489746, 0.0942383), (0.491455, 0.541504, 0.523438, 0.4375), (0.551758, 0.432373, 0.494629, 0.513672), (0.108704, 0.459961, 0.589844, 0.654785), (0.438232, 0.476562, 0.706055, 0.286377), (0.361084, 0.252441, 0.392578, 0.807129), (0.788086, 0.0546875, 0.507812, 0.343994), (0.454346, 0.509766, 0.504395, 0.528809), (0.104248, 0.975586, 0.18103, 0.0692139), (0.924316, 0.149536, 0.0319824, 0.349609), (0.508789, 0.458008, 0.232056, 0.690918), (0.687988, 0.620605, 0.350342, 0.137207), (0.365723, 0.85791, 0.133911, 0.335693), (0.317871, 0.403076, 0.618164, 0.595215), (0.458496, 0.461426, 0.618164, 0.441162), (0.605957, 0.502441, 0.58252, 0.202271), (0.456787, 0.577637, 0.49585, 0.459961), (0.697754, 0.644043, 0.216675, 0.226318), (0.412842, 0.628906, 0.0456238, 0.657227), (0.671875, 0.20752, 0.675293, 0.222656), (0.378174, 0.548828, 0.451416, 0.593262), (0.697754, 0.4646, 0.540039, 0.0749512), (0.658691, 0.495605, 0.343994, 0.449463), (0.804688, 0.127441, 0.551758, 0.178955), (0.144043, 0.791016, 0.594238, 0.0206604), (0.185791, 0.387451, 0.444092, 0.786133), (0.764648, 0.463867, 0.436768, 0.0957031), (0.00309944, 0.714844, 0.105286, 0.690918), (0.546387, 0.481934, 0.570801, 0.378418), (0.54248, 0.0839844, 0.140991, 0.82373), (0.109497, 0.725098, 0.611816, 0.296143), (0.0836792, 0.163574, 0.586914, 0.788574), (0.693359, 0.0698853, 0.689453, 0.197266), (0.460693, 0.621582, 0.453613, 0.442383), (0.506348, 0.666016, 0.340576, 0.429443), (0.0577087, 0.415527, 0.0742188, 0.904785), (0.0575256, 0.779785, 0.514648, 0.352295), (0.365723, 0.540039, 0.170654, 0.738281), (0.987305, 0.150146, 0.00455856, 0.0514832), (0.623047, 0.119263, 0.412109, 0.653809), (0.977539, 0.11969, 0.0733032, 0.157227), (0.074646, 0.0269623, 0.183105, 0.97998), (0.666504, 0.482178, 0.428955, 0.373047), (0.25, 0.115356, 0.564941, 0.777832), (0.467529, 0.79541, 0.300293, 0.242065), (0.462646, 0.456787, 0.740234, 0.170288), (0.259033, 0.626953, 0.652344, 0.338623), (0.0396423, 0.377441, 0.59375, 0.709473), (0.0614929, 0.0821533, 0.919434, 0.379395), (0.242188, 0.235229, 0.460693, 0.820801), (0.124756, 0.628418, 0.368652, 0.673828), (0.504395, 0.364014, 0.738281, 0.26123), (0.452881, 0.682617, 0.0543518, 0.571289), (0.683594, 0.189087, 0.692383, 0.131348), (0.632812, 0.725586, 0.113708, 0.245239), (0.387939, 0.905273, 0.170654, 0.0314331), (0.609375, 0.0265198, 0.372559, 0.699219), (0.0329895, 0.283691, 0.740723, 0.60791), (0.165771, 0.155762, 0.812988, 0.536133), (0.592285, 0.456299, 0.560059, 0.357178), (0.634277, 0.0870361, 0.401367, 0.654785), (0.689941, 0.517578, 0.280273, 0.421631), (0.499023, 0.622559, 0.596191, 0.0888062), (0.484619, 0.506836, 0.529297, 0.477539), (0.220093, 0.473633, 0.765625, 0.375977), (0.00972748, 0.624023, 0.203735, 0.754395), (0.492188, 0.100647, 0.000545979, 0.864746), (0.228882, 0.834473, 0.301025, 0.400391), (0.456299, 0.23877, 0.587891, 0.623535), (0.536133, 0.5625, 0.523926, 0.349121), (0.587402, 0.292969, 0.322021, 0.682129), (0.593262, 0.556152, 0.566406, 0.13269), (0.10791, 0.829102, 0.539551, 0.0997314), (0.394775, 0.38501, 0.350342, 0.757324), (0.786133, 0.439941, 0.397217, 0.175537), (0.879395, 0.149536, 0.29834, 0.339355), (0.696777, 0.32373, 0.467773, 0.436768), (0.386963, 0.127808, 0.754883, 0.513672), (0.604004, 0.130737, 0.515137, 0.59375), (0.128418, 0.0111694, 0.991699, 0.000308275), (0.558105, 0.265625, 0.785645, 0.0202484), (0.695312, 0.64502, 0.264404, 0.175171), (0.5, 0.54541, 0.0738525, 0.668945), (0.0522766, 0.243652, 0.583496, 0.772949), (0.341309, 0.680176, 0.490479, 0.424805), (0.607422, 0.306641, 0.544434, 0.490234), (0.640137, 0.285645, 0.315918, 0.63916), (0.466553, 0.488037, 0.610352, 0.414307), (0.57959, 0.631348, 0.277344, 0.43457), (0.803711, 0.0847168, 0.138916, 0.572266), (0.58252, 0.186401, 0.631836, 0.47583), (0.317139, 0.583008, 0.588867, 0.461182), (0.21814, 0.707031, 0.276123, 0.61377), (0.0426941, 0.92334, 0.10791, 0.366211), (0.366699, 0.550781, 0.749023, 0.0311584), (0.235718, 0.0223236, 0.657227, 0.71582), (0.754395, 0.292236, 0.335938, 0.482178), (0.324219, 0.489258, 0.695312, 0.414795), (0.687012, 0.375488, 0.505859, 0.362061), (0.267578, 0.722656, 0.286865, 0.568848), (0.551758, 0.46875, 0.0196533, 0.689453), (0.665039, 0.427246, 0.526855, 0.312744), (0.68457, 0.344482, 0.495361, 0.40918), (0.468018, 0.071167, 0.810547, 0.344482), (0.279541, 0.22644, 0.518555, 0.775879), (0.20459, 0.785156, 0.466064, 0.352295), (0.543457, 0.624512, 0.0345764, 0.560059), (0.493652, 0.469482, 0.727539, 0.0794678), (0.444336, 0.550293, 0.649414, 0.280029), (0.668945, 0.264893, 0.556641, 0.415283), (0.449951, 0.425781, 0.0817871, 0.780762), (0.430664, 0.220337, 0.557129, 0.675293), (0.0508728, 0.175171, 0.791992, 0.58252), (0.543457, 0.53125, 0.597656, 0.255615), (0.402832, 0.424316, 0.280029, 0.76123), (0.44043, 0.366699, 0.681152, 0.455322), (0.675293, 0.268799, 0.202637, 0.65625), (0.0601807, 0.710449, 0.654297, 0.251953), (0.794434, 0.0823364, 0.0695801, 0.597656), (0.692871, 0.0828247, 0.700195, 0.150024), (0.466797, 0.635742, 0.212646, 0.57666), (0.623047, 0.494873, 0.351074, 0.493896), (0.505371, 0.647461, 0.547363, 0.15979), (0.249634, 0.17395, 0.193726, 0.932617), (0.907227, 0.142944, 0.160889, 0.361328), (0.546387, 0.397217, 0.618652, 0.401367), (0.463623, 0.51416, 0.588379, 0.417969), (0.603516, 0.73584, 0.190674, 0.241211), (0.27124, 0.0416565, 0.895508, 0.350098), (0.284912, 0.623535, 0.456055, 0.567383), (0.558105, 0.518555, 0.585938, 0.276367), (0.233398, 0.913574, 0.0595398, 0.328125), (0.557617, 0.60791, 0.128662, 0.550781), (0.179932, 0.273438, 0.70166, 0.632812), (0.279297, 0.337158, 0.812012, 0.38623), (0.208008, 0.403564, 0.648926, 0.610352), (0.883301, 0.201904, 0.420654, 0.0443726), (0.479736, 0.525879, 0.435791, 0.550781), (0.727539, 0.516602, 0.293945, 0.342773), (0.482422, 0.366455, 0.564453, 0.560547), (0.357422, 0.483643, 0.591797, 0.537109), (0.566895, 0.310547, 0.480713, 0.592773), (0.365723, 0.903809, 0.213135, 0.0608215), (0.475342, 0.624023, 0.427734, 0.449463), (0.391846, 0.452637, 0.689453, 0.407715), (0.0802612, 0.82959, 0.12915, 0.537109), (0.00506592, 0.568359, 0.799316, 0.195435), (0.535156, 0.691406, 0.485107, 0.0227966), (0.412354, 0.278076, 0.339844, 0.79834), (0.0248871, 0.283691, 0.486084, 0.826172), (0.702637, 0.530273, 0.393799, 0.264404), (0.639648, 0.391602, 0.158203, 0.64209), (0.624512, 0.00078249, 0.37793, 0.683594), (0.501953, 0.705078, 0.0289154, 0.5), (0.577148, 0.507812, 0.639648, 0.00888824), (0.0848389, 0.478271, 0.5625, 0.668945), (0.252197, 0.769043, 0.213135, 0.547363), (0.446533, 0.818848, 0.331543, 0.140869), (0.555176, 0.39502, 0.233398, 0.693848), (0.453857, 0.569824, 0.477783, 0.490723), (0.356934, 0.532227, 0.508789, 0.575195), (0.417236, 0.688965, 0.584961, 0.0932617), (0.15686, 0.802734, 0.000578403, 0.575684), (0.416748, 0.532715, 0.451904, 0.582031), (0.527344, 0.67334, 0.436035, 0.279541), (0.332031, 0.829102, 0.426514, 0.143311), (0.708984, 0.139038, 0.426514, 0.543945), (0.626953, 0.703125, 0.101624, 0.319336), (0.00901794, 0.382324, 0.672363, 0.633789), (0.173584, 0.694336, 0.612305, 0.335693), (0.29248, 0.541016, 0.58252, 0.53125), (0.888184, 0.383789, 0.250977, 0.0299225), (0.164917, 0.616211, 0.549805, 0.539551), (0.28833, 0.683594, 0.599121, 0.301025), (0.0667725, 0.96582, 0.189209, 0.162964), (0.429443, 0.416016, 0.80127, 0.0271606), (0.834961, 0.138794, 0.289551, 0.447021), (0.0962524, 0.109375, 0.922852, 0.356934), (0.305176, 0.535645, 0.561035, 0.552246), (0.625977, 0.284912, 0.679199, 0.255859), (0.60498, 0.441895, 0.468506, 0.468262), (0.395508, 0.270996, 0.822754, 0.30542), (0.416748, 0.207642, 0.602051, 0.648926), (0.333496, 0.230103, 0.496094, 0.768066), (0.80127, 0.308105, 0.502441, 0.103394), (0.86377, 0.446777, 0.203003, 0.114624), (0.273682, 0.230347, 0.649902, 0.670898), (0.782715, 0.469238, 0.0795898, 0.401123), (0.318604, 0.569336, 0.538574, 0.533203), (0.549316, 0.433594, 0.427979, 0.571777)],
-            4: [(0.468994, 0.168091, 0.454834, 0.738281), (0.382812, 0.670898, 0.481689, 0.413574), (0.470703, 0.326416, 0.564941, 0.59375), (0.505371, 0.708496, 0.482178, 0.101196), (0.35498, 0.568848, 0.675293, 0.306885), (0.385742, 0.692383, 0.0164642, 0.609375), (0.770996, 0.287109, 0.521973, 0.224609), (0.36792, 0.628906, 0.638184, 0.249512), (0.724121, 0.430664, 0.208252, 0.496826), (0.928223, 0.0809937, 0.0344238, 0.361572), (0.815918, 0.161743, 0.547852, 0.0884399), (0.349609, 0.229858, 0.651855, 0.632324), (0.287598, 0.840332, 0.302734, 0.345703), (0.287842, 0.565918, 0.714844, 0.293701), (0.901367, 0.0376282, 0.134277, 0.409912), (0.606934, 0.134644, 0.535156, 0.571777), (0.929688, 0.0853882, 0.155518, 0.322754), (0.591309, 0.702148, 0.337158, 0.209595), (0.518066, 0.614746, 0.533203, 0.263672), (0.0231018, 0.318115, 0.891602, 0.321533), (0.556641, 0.455811, 0.652832, 0.236328), (0.125854, 0.774902, 0.529297, 0.322021), (0.26709, 0.0723877, 0.121521, 0.953125), (0.0931396, 0.480469, 0.870605, 0.0512695), (0.234131, 0.668945, 0.696777, 0.110046), (0.754883, 0.409424, 0.098877, 0.50293), (0.785645, 0.39209, 0.0108719, 0.478516), (0.422119, 0.562012, 0.578613, 0.413574), (0.37085, 0.487549, 0.679688, 0.403564), (0.463379, 0.407227, 0.539551, 0.573242), (0.205444, 0.760254, 0.342773, 0.512207), (0.081543, 0.541016, 0.480225, 0.685547), (0.556152, 0.654785, 0.46875, 0.205322), (0.0188904, 0.510254, 0.608398, 0.607422), (0.402344, 0.682129, 0.42041, 0.442871), (0.366943, 0.180664, 0.835938, 0.365967), (0.207886, 0.830078, 0.468506, 0.219238), (0.59082, 0.160645, 0.0231934, 0.790527), (0.0663452, 0.758789, 0.333252, 0.555664), (0.479004, 0.525391, 0.555176, 0.431152), (0.756348, 0.00111389, 0.160522, 0.634277), (0.389893, 0.339111, 0.599609, 0.611328), (0.492432, 0.572754, 0.397705, 0.520996), (0.490967, 0.497803, 0.69043, 0.185913), (0.485596, 0.190918, 0.716797, 0.462402), (0.489258, 0.181152, 0.65918, 0.541504), (0.753418, 0.187378, 0.271973, 0.568848), (0.401611, 0.641113, 0.628418, 0.182129), (0.421143, 0.535156, 0.685547, 0.257568), (0.780273, 0.614258, 0.0437622, 0.109131), (0.597168, 0.0449829, 0.702637, 0.384766), (0.0605164, 0.700195, 0.465088, 0.538574), (0.0880737, 0.103577, 0.749512, 0.647949), (0.76709, 0.370361, 0.0926514, 0.515625), (0.331055, 0.462891, 0.496338, 0.655273), (0.732422, 0.647461, 0.114929, 0.176758), (0.316895, 0.783203, 0.51709, 0.137695), (0.618652, 0.761719, 0.1203, 0.151245), (0.915527, 0.253662, 0.310059, 0.0374146), (0.6875, 0.517578, 0.0124664, 0.508789), (0.356934, 0.337891, 0.705566, 0.510742), (0.532715, 0.261963, 0.570801, 0.566895), (0.304688, 0.268555, 0.804688, 0.43335), (0.522461, 0.490723, 0.471191, 0.51416), (0.670898, 0.572754, 0.177124, 0.436523), (0.754395, 0.229614, 0.491211, 0.370117), (0.532227, 0.608887, 0.430176, 0.401123), (0.598145, 0.635742, 0.294189, 0.38916), (0.398682, 0.611328, 0.213257, 0.649414), (0.831543, 0.350098, 0.388184, 0.187988), (0.497314, 0.344971, 0.470215, 0.642578), (0.00505447, 0.245728, 0.485352, 0.838867), (0.475098, 0.541016, 0.679199, 0.1427), (0.329102, 0.221802, 0.409668, 0.821289), (0.509766, 0.465576, 0.632324, 0.351318), (0.609375, 0.121033, 0.53125, 0.576172), (0.442627, 0.736328, 0.503418, 0.0914307), (0.594727, 0.343506, 0.60791, 0.398926), (0.484375, 0.196411, 0.669922, 0.527344), (0.648926, 0.105774, 0.583008, 0.477051), (0.765625, 0.528809, 0.279053, 0.236694), (0.656738, 0.347656, 0.525391, 0.414551), (0.72998, 0.120544, 0.345215, 0.577637), (0.473877, 0.454834, 0.432373, 0.617676), (0.300049, 0.0118637, 0.151733, 0.941895), (0.274902, 0.63916, 0.163818, 0.699707), (0.541992, 0.357178, 0.635742, 0.417969), (0.164795, 0.709473, 0.594238, 0.34082), (0.0489197, 0.474609, 0.853516, 0.209351), (0.439941, 0.592773, 0.416504, 0.530762), (0.0481262, 0.865234, 0.454102, 0.206909), (0.434814, 0.42041, 0.307861, 0.734375), (0.548828, 0.506836, 0.54248, 0.384277), (0.37207, 0.356445, 0.540039, 0.665527), (0.617676, 0.589844, 0.264404, 0.447754), (0.511719, 0.350098, 0.326904, 0.713379), (0.654785, 0.490723, 0.391357, 0.421143), (0.408203, 0.575195, 0.538086, 0.46167), (0.767578, 0.0193939, 0.42334, 0.480957), (0.449951, 0.648926, 0.553223, 0.265381), (0.0689697, 0.976562, 0.109619, 0.173218), (0.680664, 0.525391, 0.482666, 0.166626), (0.555176, 0.594238, 0.150757, 0.5625), (0.388916, 0.208862, 0.153442, 0.884277), (0.00372887, 0.476318, 0.333252, 0.813477), (0.64502, 0.660645, 0.151733, 0.353027), (0.0538025, 0.581543, 0.550781, 0.596191), (0.541504, 0.179077, 0.820312, 0.0462036), (0.457275, 0.225464, 0.830566, 0.223755), (0.133179, 0.665527, 0.361084, 0.639648), (0.707031, 0.44043, 0.0447388, 0.551758), (0.61377, 0.335938, 0.366455, 0.613281), (0.836426, 0.353516, 0.393066, 0.144409), (0.721191, 0.452393, 0.229614, 0.47168), (0.464355, 0.630859, 0.562012, 0.264893), (0.0296783, 0.586914, 0.512207, 0.626465), (0.56543, 0.61084, 0.537109, 0.136108), (0.0530701, 0.270996, 0.836426, 0.473389), (0.634766, 0.370117, 0.652344, 0.186523), (0.532715, 0.729004, 0.18811, 0.38623), (0.0645142, 0.530762, 0.811523, 0.235962), (0.414551, 0.618164, 0.667969, 0.0123596), (0.429932, 0.737305, 0.489502, 0.177734), (0.647461, 0.11261, 0.617676, 0.432129), (0.704102, 0.461182, 0.407471, 0.354248), (0.55127, 0.308105, 0.76123, 0.147949), (0.55127, 0.141846, 0.316406, 0.758789), (0.230591, 0.531738, 0.814453, 0.0300446), (0.581055, 0.407715, 0.136719, 0.690918), (0.489746, 0.521973, 0.618164, 0.325195), (0.142456, 0.584473, 0.478271, 0.639648), (0.438477, 0.63623, 0.447754, 0.449707), (0.577637, 0.131348, 0.78125, 0.196289), (0.587402, 0.46875, 0.496338, 0.434814), (0.103394, 0.379639, 0.787598, 0.474365), (0.100098, 0.434082, 0.730957, 0.51709), (0.43457, 0.615234, 0.302734, 0.583984), (0.64209, 0.463623, 0.608887, 0.0441284), (0.505371, 0.12915, 0.269775, 0.80957), (0.379639, 0.36499, 0.0939331, 0.844727), (0.172852, 0.598633, 0.774902, 0.105469), (0.141479, 0.482422, 0.61377, 0.608887), (0.3396, 0.581055, 0.716309, 0.184326), (0.204224, 0.544922, 0.792969, 0.181152), (0.400146, 0.591309, 0.692383, 0.102966), (0.203857, 0.398193, 0.60791, 0.65625), (0.801758, 0.357422, 0.335449, 0.341797), (0.043335, 0.150757, 0.884766, 0.438965), (0.173218, 0.672852, 0.376465, 0.612793), (0.649414, 0.362061, 0.481201, 0.4646), (0.662109, 0.603516, 0.344238, 0.280762), (0.489014, 0.19165, 0.800781, 0.288086), (0.82959, 0.0906372, 0.469482, 0.28833), (0.341797, 0.142822, 0.00710297, 0.928711), (0.523926, 0.176636, 0.598145, 0.580566), (0.564453, 0.246948, 0.589844, 0.521973), (0.459717, 0.496826, 0.608887, 0.413818), (0.499023, 0.828125, 0.0282593, 0.253662), (0.464844, 0.804199, 0.102539, 0.355957), (0.693359, 0.255615, 0.0837402, 0.668457), (0.415771, 0.621094, 0.638184, 0.18396), (0.158691, 0.731445, 0.27002, 0.605957), (0.648926, 0.623535, 0.0406799, 0.434326), (0.292236, 0.5, 0.449707, 0.679688), (0.33252, 0.110657, 0.888184, 0.297363), (0.641113, 0.267822, 0.715332, 0.072876), (0.0325317, 0.407227, 0.799316, 0.440918), (0.560547, 0.494385, 0.381348, 0.543945), (0.247681, 0.416016, 0.75, 0.450928), (0.601562, 0.671387, 0.388672, 0.190796), (0.348389, 0.845215, 0.292236, 0.28125), (0.433594, 0.464111, 0.401123, 0.660156), (0.450195, 0.214111, 0.85498, 0.143677), (0.596191, 0.440918, 0.377197, 0.554688), (0.561523, 0.715332, 0.274414, 0.313232), (0.477783, 0.435059, 0.686035, 0.334717), (0.744141, 0.078064, 0.392334, 0.535156), (0.319824, 0.375488, 0.851562, 0.178101), (0.513184, 0.283447, 0.0665894, 0.807617), (0.500977, 0.762695, 0.224976, 0.341064), (0.816895, 0.155396, 0.51709, 0.202393), (0.0157318, 0.497314, 0.763184, 0.411865), (0.605469, 0.570312, 0.39209, 0.393311), (0.0687256, 0.682129, 0.172363, 0.70752), (0.947266, 0.0371704, 0.212036, 0.237427), (0.268311, 0.295898, 0.0045166, 0.916504), (0.429932, 0.715332, 0.178467, 0.521484), (0.338135, 0.658203, 0.537598, 0.404053), (0.449707, 0.74707, 0.337646, 0.354248), (0.824219, 0.343506, 0.44873, 0.0349426), (0.0796509, 0.937988, 0.0897827, 0.325439), (0.344238, 0.719238, 0.506836, 0.327637), (0.705078, 0.387939, 0.588867, 0.0739136), (0.628418, 0.335205, 0.221191, 0.666504), (0.771484, 0.410889, 0.477051, 0.0908813), (0.538574, 0.566406, 0.619141, 0.0793457), (0.684082, 0.373047, 0.557129, 0.287109), (0.638672, 0.64209, 0.41748, 0.0727539), (0.681641, 0.515137, 0.456787, 0.247314), (0.538086, 0.609863, 0.340332, 0.471924), (0.71582, 0.0874634, 0.680664, 0.129028), (0.222412, 0.684082, 0.614746, 0.32373), (0.507324, 0.799316, 0.238647, 0.216431), (0.429932, 0.736328, 0.00971222, 0.522461), (0.757324, 0.644531, 0.052002, 0.0913086), (0.268799, 0.0161133, 0.438232, 0.857422), (0.435059, 0.742676, 0.3125, 0.401611), (0.804199, 0.469727, 0.227783, 0.283936), (0.231079, 0.451904, 0.687988, 0.519043), (0.451172, 0.574219, 0.420654, 0.538574), (0.140259, 0.85791, 0.0655518, 0.489746), (0.258301, 0.481445, 0.746094, 0.381104), (0.140625, 0.00349236, 0.95166, 0.272217), (0.0164795, 0.863281, 0.354492, 0.358398), (0.584961, 0.490967, 0.630859, 0.136963), (0.0425415, 0.624512, 0.487793, 0.608398), (0.16687, 0.415039, 0.871582, 0.199951), (0.543945, 0.479736, 0.336182, 0.600586), (0.0562744, 0.4729, 0.569336, 0.67041), (0.583008, 0.753906, 0.302979, 0.00542068), (0.395752, 0.253906, 0.640137, 0.607422), (0.632812, 0.652344, 0.410889, 0.0731201), (0.187134, 0.481445, 0.750488, 0.412109), (0.437744, 0.744141, 0.318115, 0.39209), (0.555176, 0.668945, 0.0766602, 0.488525), (0.570312, 0.519043, 0.300537, 0.561035), (0.171631, 0.740723, 0.150146, 0.631836), (0.282471, 0.283691, 0.195923, 0.89502), (0.651855, 0.702148, 0.0883179, 0.272705), (0.179688, 0.733398, 0.148804, 0.638184), (0.406494, 0.695312, 0.552734, 0.213623), (0.251953, 0.0709229, 0.73291, 0.62793), (0.723145, 0.568848, 0.390869, 0.0258331), (0.695312, 0.552734, 0.410889, 0.206055), (0.73877, 0.104553, 0.378906, 0.547363), (0.145142, 0.431152, 0.453857, 0.766113), (0.0645752, 0.461182, 0.388672, 0.794922), (0.391846, 0.616211, 0.637207, 0.245972), (0.522949, 0.0602417, 0.642578, 0.556641), (0.492676, 0.421631, 0.394043, 0.651367), (0.51416, 0.423828, 0.500488, 0.552734), (0.220703, 0.0689087, 0.910156, 0.344238), (0.177124, 0.377197, 0.200806, 0.886719), (0.698242, 0.253662, 0.665039, 0.0756836), (0.21106, 0.267822, 0.191895, 0.92041), (0.887207, 0.211792, 0.296631, 0.282715), (0.523438, 0.5, 0.164551, 0.669922), (0.637207, 0.383789, 0.585938, 0.321777), (0.567871, 0.57666, 0.193481, 0.554688), (0.0535583, 0.633789, 0.2323, 0.73584), (0.395996, 0.546875, 0.694824, 0.247437), (0.869629, 0.236938, 0.347656, 0.258301), (0.173462, 0.614746, 0.461426, 0.615723), (0.115173, 0.562988, 0.818359, 0.0155182), (0.598633, 0.304932, 0.0189056, 0.740234), (0.521484, 0.0218353, 0.553223, 0.649414), (0.561523, 0.512695, 0.397217, 0.513672), (0.151245, 0.234863, 0.959961, 0.0247345), (0.305908, 0.604492, 0.492188, 0.546387), (0.599121, 0.686523, 0.192627, 0.364258), (0.47876, 0.411377, 0.769531, 0.0985107), (0.585449, 0.271484, 0.34668, 0.680664), (0.616211, 0.0740356, 0.47998, 0.620117), (0.666016, 0.017334, 0.289307, 0.6875), (0.184937, 0.401611, 0.009552, 0.896973), (0.137817, 0.654785, 0.738281, 0.0872192), (0.555664, 0.531738, 0.36377, 0.525879), (0.236938, 0.133667, 0.754395, 0.597168), (0.381104, 0.640625, 0.516113, 0.421387), (0.218994, 0.468262, 0.683594, 0.515625), (0.583008, 0.480225, 0.416016, 0.506348), (0.407227, 0.781738, 0.311279, 0.355225), (0.396484, 0.394531, 0.443115, 0.700684), (0.566895, 0.721191, 0.379639, 0.11969), (0.708984, 0.542969, 0.158081, 0.421387), (0.163818, 0.010582, 0.847168, 0.505371), (0.709473, 0.27002, 0.612793, 0.219727), (0.0732422, 0.301025, 0.80957, 0.498535), (0.681641, 0.182129, 0.708496, 0.0115509), (0.692383, 0.416748, 0.588867, 0.00333977), (0.58252, 0.338379, 0.711914, 0.19873), (0.656738, 0.488525, 0.567383, 0.0895996), (0.635742, 0.539062, 0.488281, 0.258301), (0.615234, 0.659668, 0.316162, 0.293945), (0.828613, 0.468994, 0.148193, 0.267334), (0.300293, 0.1521, 0.732422, 0.592285), (0.69873, 0.440674, 0.35376, 0.438477), (0.0406494, 0.679199, 0.634277, 0.366943), (0.801758, 0.0582275, 0.281006, 0.524414), (0.41333, 0.127075, 0.186401, 0.882324), (0.438721, 0.474365, 0.755371, 0.110046), (0.620605, 0.513672, 0.584961, 0.0941772), (0.05896, 0.00168514, 0.958496, 0.279297), (0.825684, 0.330322, 0.226685, 0.397217), (0.385986, 0.615723, 0.388672, 0.566406), (0.290527, 0.516602, 0.746582, 0.30249), (0.881348, 0.0742798, 0.167603, 0.435547), (0.549316, 0.27832, 0.193115, 0.763672), (0.0157623, 0.395752, 0.130493, 0.908691), (0.460449, 0.697754, 0.510742, 0.201416), (0.726562, 0.541016, 0.303711, 0.294678), (0.288086, 0.392822, 0.691406, 0.533691), (0.737305, 0.626465, 0.169434, 0.187378), (0.722168, 0.625, 0.10022, 0.278809), (0.0105209, 0.804688, 0.153931, 0.573242), (0.101562, 0.690918, 0.702637, 0.134888), (0.38208, 0.552734, 0.606934, 0.424316), (0.160034, 0.0267181, 0.335205, 0.928223), (0.224365, 0.381348, 0.557617, 0.702148), (0.691406, 0.125854, 0.501465, 0.504883), (0.834961, 0.232788, 0.489746, 0.0942383), (0.491455, 0.541504, 0.523438, 0.4375), (0.551758, 0.432373, 0.494629, 0.513672), (0.108704, 0.459961, 0.589844, 0.654785), (0.438232, 0.476562, 0.706055, 0.286377), (0.361084, 0.252441, 0.392578, 0.807129), (0.788086, 0.0546875, 0.507812, 0.343994), (0.454346, 0.509766, 0.504395, 0.528809), (0.104248, 0.975586, 0.18103, 0.0692139), (0.924316, 0.149536, 0.0319824, 0.349609), (0.508789, 0.458008, 0.232056, 0.690918), (0.687988, 0.620605, 0.350342, 0.137207), (0.365723, 0.85791, 0.133911, 0.335693), (0.317871, 0.403076, 0.618164, 0.595215), (0.458496, 0.461426, 0.618164, 0.441162), (0.605957, 0.502441, 0.58252, 0.202271), (0.456787, 0.577637, 0.49585, 0.459961), (0.697754, 0.644043, 0.216675, 0.226318), (0.412842, 0.628906, 0.0456238, 0.657227), (0.671875, 0.20752, 0.675293, 0.222656), (0.378174, 0.548828, 0.451416, 0.593262), (0.697754, 0.4646, 0.540039, 0.0749512), (0.658691, 0.495605, 0.343994, 0.449463), (0.804688, 0.127441, 0.551758, 0.178955), (0.144043, 0.791016, 0.594238, 0.0206604), (0.185791, 0.387451, 0.444092, 0.786133), (0.764648, 0.463867, 0.436768, 0.0957031), (0.00309944, 0.714844, 0.105286, 0.690918), (0.546387, 0.481934, 0.570801, 0.378418), (0.54248, 0.0839844, 0.140991, 0.82373), (0.109497, 0.725098, 0.611816, 0.296143), (0.0836792, 0.163574, 0.586914, 0.788574), (0.693359, 0.0698853, 0.689453, 0.197266), (0.460693, 0.621582, 0.453613, 0.442383), (0.506348, 0.666016, 0.340576, 0.429443), (0.0577087, 0.415527, 0.0742188, 0.904785), (0.0575256, 0.779785, 0.514648, 0.352295), (0.365723, 0.540039, 0.170654, 0.738281), (0.987305, 0.150146, 0.00455856, 0.0514832), (0.623047, 0.119263, 0.412109, 0.653809), (0.977539, 0.11969, 0.0733032, 0.157227), (0.074646, 0.0269623, 0.183105, 0.97998), (0.666504, 0.482178, 0.428955, 0.373047), (0.25, 0.115356, 0.564941, 0.777832), (0.467529, 0.79541, 0.300293, 0.242065), (0.462646, 0.456787, 0.740234, 0.170288), (0.259033, 0.626953, 0.652344, 0.338623), (0.0396423, 0.377441, 0.59375, 0.709473), (0.0614929, 0.0821533, 0.919434, 0.379395), (0.242188, 0.235229, 0.460693, 0.820801), (0.124756, 0.628418, 0.368652, 0.673828), (0.504395, 0.364014, 0.738281, 0.26123), (0.452881, 0.682617, 0.0543518, 0.571289), (0.683594, 0.189087, 0.692383, 0.131348), (0.632812, 0.725586, 0.113708, 0.245239), (0.387939, 0.905273, 0.170654, 0.0314331), (0.609375, 0.0265198, 0.372559, 0.699219), (0.0329895, 0.283691, 0.740723, 0.60791), (0.165771, 0.155762, 0.812988, 0.536133), (0.592285, 0.456299, 0.560059, 0.357178), (0.634277, 0.0870361, 0.401367, 0.654785), (0.689941, 0.517578, 0.280273, 0.421631), (0.499023, 0.622559, 0.596191, 0.0888062), (0.484619, 0.506836, 0.529297, 0.477539), (0.220093, 0.473633, 0.765625, 0.375977), (0.00972748, 0.624023, 0.203735, 0.754395), (0.492188, 0.100647, 0.000545979, 0.864746), (0.228882, 0.834473, 0.301025, 0.400391), (0.456299, 0.23877, 0.587891, 0.623535), (0.536133, 0.5625, 0.523926, 0.349121), (0.587402, 0.292969, 0.322021, 0.682129), (0.593262, 0.556152, 0.566406, 0.13269), (0.10791, 0.829102, 0.539551, 0.0997314), (0.394775, 0.38501, 0.350342, 0.757324), (0.786133, 0.439941, 0.397217, 0.175537), (0.879395, 0.149536, 0.29834, 0.339355), (0.696777, 0.32373, 0.467773, 0.436768), (0.386963, 0.127808, 0.754883, 0.513672), (0.604004, 0.130737, 0.515137, 0.59375), (0.128418, 0.0111694, 0.991699, 0.000308275), (0.558105, 0.265625, 0.785645, 0.0202484), (0.695312, 0.64502, 0.264404, 0.175171), (0.5, 0.54541, 0.0738525, 0.668945), (0.0522766, 0.243652, 0.583496, 0.772949), (0.341309, 0.680176, 0.490479, 0.424805), (0.607422, 0.306641, 0.544434, 0.490234), (0.640137, 0.285645, 0.315918, 0.63916), (0.466553, 0.488037, 0.610352, 0.414307), (0.57959, 0.631348, 0.277344, 0.43457), (0.803711, 0.0847168, 0.138916, 0.572266), (0.58252, 0.186401, 0.631836, 0.47583), (0.317139, 0.583008, 0.588867, 0.461182), (0.21814, 0.707031, 0.276123, 0.61377), (0.0426941, 0.92334, 0.10791, 0.366211), (0.366699, 0.550781, 0.749023, 0.0311584), (0.235718, 0.0223236, 0.657227, 0.71582), (0.754395, 0.292236, 0.335938, 0.482178), (0.324219, 0.489258, 0.695312, 0.414795), (0.687012, 0.375488, 0.505859, 0.362061), (0.267578, 0.722656, 0.286865, 0.568848), (0.551758, 0.46875, 0.0196533, 0.689453), (0.665039, 0.427246, 0.526855, 0.312744), (0.68457, 0.344482, 0.495361, 0.40918), (0.468018, 0.071167, 0.810547, 0.344482), (0.279541, 0.22644, 0.518555, 0.775879), (0.20459, 0.785156, 0.466064, 0.352295), (0.543457, 0.624512, 0.0345764, 0.560059), (0.493652, 0.469482, 0.727539, 0.0794678), (0.444336, 0.550293, 0.649414, 0.280029), (0.668945, 0.264893, 0.556641, 0.415283), (0.449951, 0.425781, 0.0817871, 0.780762), (0.430664, 0.220337, 0.557129, 0.675293), (0.0508728, 0.175171, 0.791992, 0.58252), (0.543457, 0.53125, 0.597656, 0.255615), (0.402832, 0.424316, 0.280029, 0.76123), (0.44043, 0.366699, 0.681152, 0.455322), (0.675293, 0.268799, 0.202637, 0.65625), (0.0601807, 0.710449, 0.654297, 0.251953), (0.794434, 0.0823364, 0.0695801, 0.597656), (0.692871, 0.0828247, 0.700195, 0.150024), (0.466797, 0.635742, 0.212646, 0.57666), (0.623047, 0.494873, 0.351074, 0.493896), (0.505371, 0.647461, 0.547363, 0.15979), (0.249634, 0.17395, 0.193726, 0.932617), (0.907227, 0.142944, 0.160889, 0.361328), (0.546387, 0.397217, 0.618652, 0.401367), (0.463623, 0.51416, 0.588379, 0.417969), (0.603516, 0.73584, 0.190674, 0.241211), (0.27124, 0.0416565, 0.895508, 0.350098), (0.284912, 0.623535, 0.456055, 0.567383), (0.558105, 0.518555, 0.585938, 0.276367), (0.233398, 0.913574, 0.0595398, 0.328125), (0.557617, 0.60791, 0.128662, 0.550781), (0.179932, 0.273438, 0.70166, 0.632812), (0.279297, 0.337158, 0.812012, 0.38623), (0.208008, 0.403564, 0.648926, 0.610352), (0.883301, 0.201904, 0.420654, 0.0443726), (0.479736, 0.525879, 0.435791, 0.550781), (0.727539, 0.516602, 0.293945, 0.342773), (0.482422, 0.366455, 0.564453, 0.560547), (0.357422, 0.483643, 0.591797, 0.537109), (0.566895, 0.310547, 0.480713, 0.592773), (0.365723, 0.903809, 0.213135, 0.0608215), (0.475342, 0.624023, 0.427734, 0.449463), (0.391846, 0.452637, 0.689453, 0.407715), (0.0802612, 0.82959, 0.12915, 0.537109), (0.00506592, 0.568359, 0.799316, 0.195435), (0.535156, 0.691406, 0.485107, 0.0227966), (0.412354, 0.278076, 0.339844, 0.79834), (0.0248871, 0.283691, 0.486084, 0.826172), (0.702637, 0.530273, 0.393799, 0.264404), (0.639648, 0.391602, 0.158203, 0.64209), (0.624512, 0.00078249, 0.37793, 0.683594), (0.501953, 0.705078, 0.0289154, 0.5), (0.577148, 0.507812, 0.639648, 0.00888824), (0.0848389, 0.478271, 0.5625, 0.668945), (0.252197, 0.769043, 0.213135, 0.547363), (0.446533, 0.818848, 0.331543, 0.140869), (0.555176, 0.39502, 0.233398, 0.693848), (0.453857, 0.569824, 0.477783, 0.490723), (0.356934, 0.532227, 0.508789, 0.575195), (0.417236, 0.688965, 0.584961, 0.0932617), (0.15686, 0.802734, 0.000578403, 0.575684), (0.416748, 0.532715, 0.451904, 0.582031), (0.527344, 0.67334, 0.436035, 0.279541), (0.332031, 0.829102, 0.426514, 0.143311), (0.708984, 0.139038, 0.426514, 0.543945), (0.626953, 0.703125, 0.101624, 0.319336), (0.00901794, 0.382324, 0.672363, 0.633789), (0.173584, 0.694336, 0.612305, 0.335693), (0.29248, 0.541016, 0.58252, 0.53125), (0.888184, 0.383789, 0.250977, 0.0299225), (0.164917, 0.616211, 0.549805, 0.539551), (0.28833, 0.683594, 0.599121, 0.301025), (0.0667725, 0.96582, 0.189209, 0.162964), (0.429443, 0.416016, 0.80127, 0.0271606), (0.834961, 0.138794, 0.289551, 0.447021), (0.0962524, 0.109375, 0.922852, 0.356934), (0.305176, 0.535645, 0.561035, 0.552246), (0.625977, 0.284912, 0.679199, 0.255859), (0.60498, 0.441895, 0.468506, 0.468262), (0.395508, 0.270996, 0.822754, 0.30542), (0.416748, 0.207642, 0.602051, 0.648926), (0.333496, 0.230103, 0.496094, 0.768066), (0.80127, 0.308105, 0.502441, 0.103394), (0.86377, 0.446777, 0.203003, 0.114624), (0.273682, 0.230347, 0.649902, 0.670898), (0.782715, 0.469238, 0.0795898, 0.401123), (0.318604, 0.569336, 0.538574, 0.533203), (0.549316, 0.433594, 0.427979, 0.571777)],
-            5: [(0.468994, 0.168091, 0.454834, 0.738281), (0.382812, 0.670898, 0.481689, 0.413574), (0.470703, 0.326416, 0.564941, 0.59375), (0.505371, 0.708496, 0.482178, 0.101196), (0.35498, 0.568848, 0.675293, 0.306885), (0.385742, 0.692383, 0.0164642, 0.609375), (0.770996, 0.287109, 0.521973, 0.224609), (0.36792, 0.628906, 0.638184, 0.249512), (0.724121, 0.430664, 0.208252, 0.496826), (0.928223, 0.0809937, 0.0344238, 0.361572), (0.815918, 0.161743, 0.547852, 0.0884399), (0.349609, 0.229858, 0.651855, 0.632324), (0.287598, 0.840332, 0.302734, 0.345703), (0.287842, 0.565918, 0.714844, 0.293701), (0.901367, 0.0376282, 0.134277, 0.409912), (0.606934, 0.134644, 0.535156, 0.571777), (0.929688, 0.0853882, 0.155518, 0.322754), (0.591309, 0.702148, 0.337158, 0.209595), (0.518066, 0.614746, 0.533203, 0.263672), (0.0231018, 0.318115, 0.891602, 0.321533), (0.556641, 0.455811, 0.652832, 0.236328), (0.125854, 0.774902, 0.529297, 0.322021), (0.26709, 0.0723877, 0.121521, 0.953125), (0.0931396, 0.480469, 0.870605, 0.0512695), (0.234131, 0.668945, 0.696777, 0.110046), (0.754883, 0.409424, 0.098877, 0.50293), (0.785645, 0.39209, 0.0108719, 0.478516), (0.422119, 0.562012, 0.578613, 0.413574), (0.37085, 0.487549, 0.679688, 0.403564), (0.463379, 0.407227, 0.539551, 0.573242), (0.205444, 0.760254, 0.342773, 0.512207), (0.081543, 0.541016, 0.480225, 0.685547), (0.556152, 0.654785, 0.46875, 0.205322), (0.0188904, 0.510254, 0.608398, 0.607422), (0.402344, 0.682129, 0.42041, 0.442871), (0.366943, 0.180664, 0.835938, 0.365967), (0.207886, 0.830078, 0.468506, 0.219238), (0.59082, 0.160645, 0.0231934, 0.790527), (0.0663452, 0.758789, 0.333252, 0.555664), (0.479004, 0.525391, 0.555176, 0.431152), (0.756348, 0.00111389, 0.160522, 0.634277), (0.389893, 0.339111, 0.599609, 0.611328), (0.492432, 0.572754, 0.397705, 0.520996), (0.490967, 0.497803, 0.69043, 0.185913), (0.485596, 0.190918, 0.716797, 0.462402), (0.489258, 0.181152, 0.65918, 0.541504), (0.753418, 0.187378, 0.271973, 0.568848), (0.401611, 0.641113, 0.628418, 0.182129), (0.421143, 0.535156, 0.685547, 0.257568), (0.780273, 0.614258, 0.0437622, 0.109131), (0.597168, 0.0449829, 0.702637, 0.384766), (0.0605164, 0.700195, 0.465088, 0.538574), (0.0880737, 0.103577, 0.749512, 0.647949), (0.76709, 0.370361, 0.0926514, 0.515625), (0.331055, 0.462891, 0.496338, 0.655273), (0.732422, 0.647461, 0.114929, 0.176758), (0.316895, 0.783203, 0.51709, 0.137695), (0.618652, 0.761719, 0.1203, 0.151245), (0.915527, 0.253662, 0.310059, 0.0374146), (0.6875, 0.517578, 0.0124664, 0.508789), (0.356934, 0.337891, 0.705566, 0.510742), (0.532715, 0.261963, 0.570801, 0.566895), (0.304688, 0.268555, 0.804688, 0.43335), (0.522461, 0.490723, 0.471191, 0.51416), (0.670898, 0.572754, 0.177124, 0.436523), (0.754395, 0.229614, 0.491211, 0.370117), (0.532227, 0.608887, 0.430176, 0.401123), (0.598145, 0.635742, 0.294189, 0.38916), (0.398682, 0.611328, 0.213257, 0.649414), (0.831543, 0.350098, 0.388184, 0.187988), (0.497314, 0.344971, 0.470215, 0.642578), (0.00505447, 0.245728, 0.485352, 0.838867), (0.475098, 0.541016, 0.679199, 0.1427), (0.329102, 0.221802, 0.409668, 0.821289), (0.509766, 0.465576, 0.632324, 0.351318), (0.609375, 0.121033, 0.53125, 0.576172), (0.442627, 0.736328, 0.503418, 0.0914307), (0.594727, 0.343506, 0.60791, 0.398926), (0.484375, 0.196411, 0.669922, 0.527344), (0.648926, 0.105774, 0.583008, 0.477051), (0.765625, 0.528809, 0.279053, 0.236694), (0.656738, 0.347656, 0.525391, 0.414551), (0.72998, 0.120544, 0.345215, 0.577637), (0.473877, 0.454834, 0.432373, 0.617676), (0.300049, 0.0118637, 0.151733, 0.941895), (0.274902, 0.63916, 0.163818, 0.699707), (0.541992, 0.357178, 0.635742, 0.417969), (0.164795, 0.709473, 0.594238, 0.34082), (0.0489197, 0.474609, 0.853516, 0.209351), (0.439941, 0.592773, 0.416504, 0.530762), (0.0481262, 0.865234, 0.454102, 0.206909), (0.434814, 0.42041, 0.307861, 0.734375), (0.548828, 0.506836, 0.54248, 0.384277), (0.37207, 0.356445, 0.540039, 0.665527), (0.617676, 0.589844, 0.264404, 0.447754), (0.511719, 0.350098, 0.326904, 0.713379), (0.654785, 0.490723, 0.391357, 0.421143), (0.408203, 0.575195, 0.538086, 0.46167), (0.767578, 0.0193939, 0.42334, 0.480957), (0.449951, 0.648926, 0.553223, 0.265381), (0.0689697, 0.976562, 0.109619, 0.173218), (0.680664, 0.525391, 0.482666, 0.166626), (0.555176, 0.594238, 0.150757, 0.5625), (0.388916, 0.208862, 0.153442, 0.884277), (0.00372887, 0.476318, 0.333252, 0.813477), (0.64502, 0.660645, 0.151733, 0.353027), (0.0538025, 0.581543, 0.550781, 0.596191), (0.541504, 0.179077, 0.820312, 0.0462036), (0.457275, 0.225464, 0.830566, 0.223755), (0.133179, 0.665527, 0.361084, 0.639648), (0.707031, 0.44043, 0.0447388, 0.551758), (0.61377, 0.335938, 0.366455, 0.613281), (0.836426, 0.353516, 0.393066, 0.144409), (0.721191, 0.452393, 0.229614, 0.47168), (0.464355, 0.630859, 0.562012, 0.264893), (0.0296783, 0.586914, 0.512207, 0.626465), (0.56543, 0.61084, 0.537109, 0.136108), (0.0530701, 0.270996, 0.836426, 0.473389), (0.634766, 0.370117, 0.652344, 0.186523), (0.532715, 0.729004, 0.18811, 0.38623), (0.0645142, 0.530762, 0.811523, 0.235962), (0.414551, 0.618164, 0.667969, 0.0123596), (0.429932, 0.737305, 0.489502, 0.177734), (0.647461, 0.11261, 0.617676, 0.432129), (0.704102, 0.461182, 0.407471, 0.354248), (0.55127, 0.308105, 0.76123, 0.147949), (0.55127, 0.141846, 0.316406, 0.758789), (0.230591, 0.531738, 0.814453, 0.0300446), (0.581055, 0.407715, 0.136719, 0.690918), (0.489746, 0.521973, 0.618164, 0.325195), (0.142456, 0.584473, 0.478271, 0.639648), (0.438477, 0.63623, 0.447754, 0.449707), (0.577637, 0.131348, 0.78125, 0.196289), (0.587402, 0.46875, 0.496338, 0.434814), (0.103394, 0.379639, 0.787598, 0.474365), (0.100098, 0.434082, 0.730957, 0.51709), (0.43457, 0.615234, 0.302734, 0.583984), (0.64209, 0.463623, 0.608887, 0.0441284), (0.505371, 0.12915, 0.269775, 0.80957), (0.379639, 0.36499, 0.0939331, 0.844727), (0.172852, 0.598633, 0.774902, 0.105469), (0.141479, 0.482422, 0.61377, 0.608887), (0.3396, 0.581055, 0.716309, 0.184326), (0.204224, 0.544922, 0.792969, 0.181152), (0.400146, 0.591309, 0.692383, 0.102966), (0.203857, 0.398193, 0.60791, 0.65625), (0.801758, 0.357422, 0.335449, 0.341797), (0.043335, 0.150757, 0.884766, 0.438965), (0.173218, 0.672852, 0.376465, 0.612793), (0.649414, 0.362061, 0.481201, 0.4646), (0.662109, 0.603516, 0.344238, 0.280762), (0.489014, 0.19165, 0.800781, 0.288086), (0.82959, 0.0906372, 0.469482, 0.28833), (0.341797, 0.142822, 0.00710297, 0.928711), (0.523926, 0.176636, 0.598145, 0.580566), (0.564453, 0.246948, 0.589844, 0.521973), (0.459717, 0.496826, 0.608887, 0.413818), (0.499023, 0.828125, 0.0282593, 0.253662), (0.464844, 0.804199, 0.102539, 0.355957), (0.693359, 0.255615, 0.0837402, 0.668457), (0.415771, 0.621094, 0.638184, 0.18396), (0.158691, 0.731445, 0.27002, 0.605957), (0.648926, 0.623535, 0.0406799, 0.434326), (0.292236, 0.5, 0.449707, 0.679688), (0.33252, 0.110657, 0.888184, 0.297363), (0.641113, 0.267822, 0.715332, 0.072876), (0.0325317, 0.407227, 0.799316, 0.440918), (0.560547, 0.494385, 0.381348, 0.543945), (0.247681, 0.416016, 0.75, 0.450928), (0.601562, 0.671387, 0.388672, 0.190796), (0.348389, 0.845215, 0.292236, 0.28125), (0.433594, 0.464111, 0.401123, 0.660156), (0.450195, 0.214111, 0.85498, 0.143677), (0.596191, 0.440918, 0.377197, 0.554688), (0.561523, 0.715332, 0.274414, 0.313232), (0.477783, 0.435059, 0.686035, 0.334717), (0.744141, 0.078064, 0.392334, 0.535156), (0.319824, 0.375488, 0.851562, 0.178101), (0.513184, 0.283447, 0.0665894, 0.807617), (0.500977, 0.762695, 0.224976, 0.341064), (0.816895, 0.155396, 0.51709, 0.202393), (0.0157318, 0.497314, 0.763184, 0.411865), (0.605469, 0.570312, 0.39209, 0.393311), (0.0687256, 0.682129, 0.172363, 0.70752), (0.947266, 0.0371704, 0.212036, 0.237427), (0.268311, 0.295898, 0.0045166, 0.916504), (0.429932, 0.715332, 0.178467, 0.521484), (0.338135, 0.658203, 0.537598, 0.404053), (0.449707, 0.74707, 0.337646, 0.354248), (0.824219, 0.343506, 0.44873, 0.0349426), (0.0796509, 0.937988, 0.0897827, 0.325439), (0.344238, 0.719238, 0.506836, 0.327637), (0.705078, 0.387939, 0.588867, 0.0739136), (0.628418, 0.335205, 0.221191, 0.666504), (0.771484, 0.410889, 0.477051, 0.0908813), (0.538574, 0.566406, 0.619141, 0.0793457), (0.684082, 0.373047, 0.557129, 0.287109), (0.638672, 0.64209, 0.41748, 0.0727539), (0.681641, 0.515137, 0.456787, 0.247314), (0.538086, 0.609863, 0.340332, 0.471924), (0.71582, 0.0874634, 0.680664, 0.129028), (0.222412, 0.684082, 0.614746, 0.32373), (0.507324, 0.799316, 0.238647, 0.216431), (0.429932, 0.736328, 0.00971222, 0.522461), (0.757324, 0.644531, 0.052002, 0.0913086), (0.268799, 0.0161133, 0.438232, 0.857422), (0.435059, 0.742676, 0.3125, 0.401611), (0.804199, 0.469727, 0.227783, 0.283936), (0.231079, 0.451904, 0.687988, 0.519043), (0.451172, 0.574219, 0.420654, 0.538574), (0.140259, 0.85791, 0.0655518, 0.489746), (0.258301, 0.481445, 0.746094, 0.381104), (0.140625, 0.00349236, 0.95166, 0.272217), (0.0164795, 0.863281, 0.354492, 0.358398), (0.584961, 0.490967, 0.630859, 0.136963), (0.0425415, 0.624512, 0.487793, 0.608398), (0.16687, 0.415039, 0.871582, 0.199951), (0.543945, 0.479736, 0.336182, 0.600586), (0.0562744, 0.4729, 0.569336, 0.67041), (0.583008, 0.753906, 0.302979, 0.00542068), (0.395752, 0.253906, 0.640137, 0.607422), (0.632812, 0.652344, 0.410889, 0.0731201), (0.187134, 0.481445, 0.750488, 0.412109), (0.437744, 0.744141, 0.318115, 0.39209), (0.555176, 0.668945, 0.0766602, 0.488525), (0.570312, 0.519043, 0.300537, 0.561035), (0.171631, 0.740723, 0.150146, 0.631836), (0.282471, 0.283691, 0.195923, 0.89502), (0.651855, 0.702148, 0.0883179, 0.272705), (0.179688, 0.733398, 0.148804, 0.638184), (0.406494, 0.695312, 0.552734, 0.213623), (0.251953, 0.0709229, 0.73291, 0.62793), (0.723145, 0.568848, 0.390869, 0.0258331), (0.695312, 0.552734, 0.410889, 0.206055), (0.73877, 0.104553, 0.378906, 0.547363), (0.145142, 0.431152, 0.453857, 0.766113), (0.0645752, 0.461182, 0.388672, 0.794922), (0.391846, 0.616211, 0.637207, 0.245972), (0.522949, 0.0602417, 0.642578, 0.556641), (0.492676, 0.421631, 0.394043, 0.651367), (0.51416, 0.423828, 0.500488, 0.552734), (0.220703, 0.0689087, 0.910156, 0.344238), (0.177124, 0.377197, 0.200806, 0.886719), (0.698242, 0.253662, 0.665039, 0.0756836), (0.21106, 0.267822, 0.191895, 0.92041), (0.887207, 0.211792, 0.296631, 0.282715), (0.523438, 0.5, 0.164551, 0.669922), (0.637207, 0.383789, 0.585938, 0.321777), (0.567871, 0.57666, 0.193481, 0.554688), (0.0535583, 0.633789, 0.2323, 0.73584), (0.395996, 0.546875, 0.694824, 0.247437), (0.869629, 0.236938, 0.347656, 0.258301), (0.173462, 0.614746, 0.461426, 0.615723), (0.115173, 0.562988, 0.818359, 0.0155182), (0.598633, 0.304932, 0.0189056, 0.740234), (0.521484, 0.0218353, 0.553223, 0.649414), (0.561523, 0.512695, 0.397217, 0.513672), (0.151245, 0.234863, 0.959961, 0.0247345), (0.305908, 0.604492, 0.492188, 0.546387), (0.599121, 0.686523, 0.192627, 0.364258), (0.47876, 0.411377, 0.769531, 0.0985107), (0.585449, 0.271484, 0.34668, 0.680664), (0.616211, 0.0740356, 0.47998, 0.620117), (0.666016, 0.017334, 0.289307, 0.6875), (0.184937, 0.401611, 0.009552, 0.896973), (0.137817, 0.654785, 0.738281, 0.0872192), (0.555664, 0.531738, 0.36377, 0.525879), (0.236938, 0.133667, 0.754395, 0.597168), (0.381104, 0.640625, 0.516113, 0.421387), (0.218994, 0.468262, 0.683594, 0.515625), (0.583008, 0.480225, 0.416016, 0.506348), (0.407227, 0.781738, 0.311279, 0.355225), (0.396484, 0.394531, 0.443115, 0.700684), (0.566895, 0.721191, 0.379639, 0.11969), (0.708984, 0.542969, 0.158081, 0.421387), (0.163818, 0.010582, 0.847168, 0.505371), (0.709473, 0.27002, 0.612793, 0.219727), (0.0732422, 0.301025, 0.80957, 0.498535), (0.681641, 0.182129, 0.708496, 0.0115509), (0.692383, 0.416748, 0.588867, 0.00333977), (0.58252, 0.338379, 0.711914, 0.19873), (0.656738, 0.488525, 0.567383, 0.0895996), (0.635742, 0.539062, 0.488281, 0.258301), (0.615234, 0.659668, 0.316162, 0.293945), (0.828613, 0.468994, 0.148193, 0.267334), (0.300293, 0.1521, 0.732422, 0.592285), (0.69873, 0.440674, 0.35376, 0.438477), (0.0406494, 0.679199, 0.634277, 0.366943), (0.801758, 0.0582275, 0.281006, 0.524414), (0.41333, 0.127075, 0.186401, 0.882324), (0.438721, 0.474365, 0.755371, 0.110046), (0.620605, 0.513672, 0.584961, 0.0941772), (0.05896, 0.00168514, 0.958496, 0.279297), (0.825684, 0.330322, 0.226685, 0.397217), (0.385986, 0.615723, 0.388672, 0.566406), (0.290527, 0.516602, 0.746582, 0.30249), (0.881348, 0.0742798, 0.167603, 0.435547), (0.549316, 0.27832, 0.193115, 0.763672), (0.0157623, 0.395752, 0.130493, 0.908691), (0.460449, 0.697754, 0.510742, 0.201416), (0.726562, 0.541016, 0.303711, 0.294678), (0.288086, 0.392822, 0.691406, 0.533691), (0.737305, 0.626465, 0.169434, 0.187378), (0.722168, 0.625, 0.10022, 0.278809), (0.0105209, 0.804688, 0.153931, 0.573242), (0.101562, 0.690918, 0.702637, 0.134888), (0.38208, 0.552734, 0.606934, 0.424316), (0.160034, 0.0267181, 0.335205, 0.928223), (0.224365, 0.381348, 0.557617, 0.702148), (0.691406, 0.125854, 0.501465, 0.504883), (0.834961, 0.232788, 0.489746, 0.0942383), (0.491455, 0.541504, 0.523438, 0.4375), (0.551758, 0.432373, 0.494629, 0.513672), (0.108704, 0.459961, 0.589844, 0.654785), (0.438232, 0.476562, 0.706055, 0.286377), (0.361084, 0.252441, 0.392578, 0.807129), (0.788086, 0.0546875, 0.507812, 0.343994), (0.454346, 0.509766, 0.504395, 0.528809), (0.104248, 0.975586, 0.18103, 0.0692139), (0.924316, 0.149536, 0.0319824, 0.349609), (0.508789, 0.458008, 0.232056, 0.690918), (0.687988, 0.620605, 0.350342, 0.137207), (0.365723, 0.85791, 0.133911, 0.335693), (0.317871, 0.403076, 0.618164, 0.595215), (0.458496, 0.461426, 0.618164, 0.441162), (0.605957, 0.502441, 0.58252, 0.202271), (0.456787, 0.577637, 0.49585, 0.459961), (0.697754, 0.644043, 0.216675, 0.226318), (0.412842, 0.628906, 0.0456238, 0.657227), (0.671875, 0.20752, 0.675293, 0.222656), (0.378174, 0.548828, 0.451416, 0.593262), (0.697754, 0.4646, 0.540039, 0.0749512), (0.658691, 0.495605, 0.343994, 0.449463), (0.804688, 0.127441, 0.551758, 0.178955), (0.144043, 0.791016, 0.594238, 0.0206604), (0.185791, 0.387451, 0.444092, 0.786133), (0.764648, 0.463867, 0.436768, 0.0957031), (0.00309944, 0.714844, 0.105286, 0.690918), (0.546387, 0.481934, 0.570801, 0.378418), (0.54248, 0.0839844, 0.140991, 0.82373), (0.109497, 0.725098, 0.611816, 0.296143), (0.0836792, 0.163574, 0.586914, 0.788574), (0.693359, 0.0698853, 0.689453, 0.197266), (0.460693, 0.621582, 0.453613, 0.442383), (0.506348, 0.666016, 0.340576, 0.429443), (0.0577087, 0.415527, 0.0742188, 0.904785), (0.0575256, 0.779785, 0.514648, 0.352295), (0.365723, 0.540039, 0.170654, 0.738281), (0.987305, 0.150146, 0.00455856, 0.0514832), (0.623047, 0.119263, 0.412109, 0.653809), (0.977539, 0.11969, 0.0733032, 0.157227), (0.074646, 0.0269623, 0.183105, 0.97998), (0.666504, 0.482178, 0.428955, 0.373047), (0.25, 0.115356, 0.564941, 0.777832), (0.467529, 0.79541, 0.300293, 0.242065), (0.462646, 0.456787, 0.740234, 0.170288), (0.259033, 0.626953, 0.652344, 0.338623), (0.0396423, 0.377441, 0.59375, 0.709473), (0.0614929, 0.0821533, 0.919434, 0.379395), (0.242188, 0.235229, 0.460693, 0.820801), (0.124756, 0.628418, 0.368652, 0.673828), (0.504395, 0.364014, 0.738281, 0.26123), (0.452881, 0.682617, 0.0543518, 0.571289), (0.683594, 0.189087, 0.692383, 0.131348), (0.632812, 0.725586, 0.113708, 0.245239), (0.387939, 0.905273, 0.170654, 0.0314331), (0.609375, 0.0265198, 0.372559, 0.699219), (0.0329895, 0.283691, 0.740723, 0.60791), (0.165771, 0.155762, 0.812988, 0.536133), (0.592285, 0.456299, 0.560059, 0.357178), (0.634277, 0.0870361, 0.401367, 0.654785), (0.689941, 0.517578, 0.280273, 0.421631), (0.499023, 0.622559, 0.596191, 0.0888062), (0.484619, 0.506836, 0.529297, 0.477539), (0.220093, 0.473633, 0.765625, 0.375977), (0.00972748, 0.624023, 0.203735, 0.754395), (0.492188, 0.100647, 0.000545979, 0.864746), (0.228882, 0.834473, 0.301025, 0.400391), (0.456299, 0.23877, 0.587891, 0.623535), (0.536133, 0.5625, 0.523926, 0.349121), (0.587402, 0.292969, 0.322021, 0.682129), (0.593262, 0.556152, 0.566406, 0.13269), (0.10791, 0.829102, 0.539551, 0.0997314), (0.394775, 0.38501, 0.350342, 0.757324), (0.786133, 0.439941, 0.397217, 0.175537), (0.879395, 0.149536, 0.29834, 0.339355), (0.696777, 0.32373, 0.467773, 0.436768), (0.386963, 0.127808, 0.754883, 0.513672), (0.604004, 0.130737, 0.515137, 0.59375), (0.128418, 0.0111694, 0.991699, 0.000308275), (0.558105, 0.265625, 0.785645, 0.0202484), (0.695312, 0.64502, 0.264404, 0.175171), (0.5, 0.54541, 0.0738525, 0.668945), (0.0522766, 0.243652, 0.583496, 0.772949), (0.341309, 0.680176, 0.490479, 0.424805), (0.607422, 0.306641, 0.544434, 0.490234), (0.640137, 0.285645, 0.315918, 0.63916), (0.466553, 0.488037, 0.610352, 0.414307), (0.57959, 0.631348, 0.277344, 0.43457), (0.803711, 0.0847168, 0.138916, 0.572266), (0.58252, 0.186401, 0.631836, 0.47583), (0.317139, 0.583008, 0.588867, 0.461182), (0.21814, 0.707031, 0.276123, 0.61377), (0.0426941, 0.92334, 0.10791, 0.366211), (0.366699, 0.550781, 0.749023, 0.0311584), (0.235718, 0.0223236, 0.657227, 0.71582), (0.754395, 0.292236, 0.335938, 0.482178), (0.324219, 0.489258, 0.695312, 0.414795), (0.687012, 0.375488, 0.505859, 0.362061), (0.267578, 0.722656, 0.286865, 0.568848), (0.551758, 0.46875, 0.0196533, 0.689453), (0.665039, 0.427246, 0.526855, 0.312744), (0.68457, 0.344482, 0.495361, 0.40918), (0.468018, 0.071167, 0.810547, 0.344482), (0.279541, 0.22644, 0.518555, 0.775879), (0.20459, 0.785156, 0.466064, 0.352295), (0.543457, 0.624512, 0.0345764, 0.560059), (0.493652, 0.469482, 0.727539, 0.0794678), (0.444336, 0.550293, 0.649414, 0.280029), (0.668945, 0.264893, 0.556641, 0.415283), (0.449951, 0.425781, 0.0817871, 0.780762), (0.430664, 0.220337, 0.557129, 0.675293), (0.0508728, 0.175171, 0.791992, 0.58252), (0.543457, 0.53125, 0.597656, 0.255615), (0.402832, 0.424316, 0.280029, 0.76123), (0.44043, 0.366699, 0.681152, 0.455322), (0.675293, 0.268799, 0.202637, 0.65625), (0.0601807, 0.710449, 0.654297, 0.251953), (0.794434, 0.0823364, 0.0695801, 0.597656), (0.692871, 0.0828247, 0.700195, 0.150024), (0.466797, 0.635742, 0.212646, 0.57666), (0.623047, 0.494873, 0.351074, 0.493896), (0.505371, 0.647461, 0.547363, 0.15979), (0.249634, 0.17395, 0.193726, 0.932617), (0.907227, 0.142944, 0.160889, 0.361328), (0.546387, 0.397217, 0.618652, 0.401367), (0.463623, 0.51416, 0.588379, 0.417969), (0.603516, 0.73584, 0.190674, 0.241211), (0.27124, 0.0416565, 0.895508, 0.350098), (0.284912, 0.623535, 0.456055, 0.567383), (0.558105, 0.518555, 0.585938, 0.276367), (0.233398, 0.913574, 0.0595398, 0.328125), (0.557617, 0.60791, 0.128662, 0.550781), (0.179932, 0.273438, 0.70166, 0.632812), (0.279297, 0.337158, 0.812012, 0.38623), (0.208008, 0.403564, 0.648926, 0.610352), (0.883301, 0.201904, 0.420654, 0.0443726), (0.479736, 0.525879, 0.435791, 0.550781), (0.727539, 0.516602, 0.293945, 0.342773), (0.482422, 0.366455, 0.564453, 0.560547), (0.357422, 0.483643, 0.591797, 0.537109), (0.566895, 0.310547, 0.480713, 0.592773), (0.365723, 0.903809, 0.213135, 0.0608215), (0.475342, 0.624023, 0.427734, 0.449463), (0.391846, 0.452637, 0.689453, 0.407715), (0.0802612, 0.82959, 0.12915, 0.537109), (0.00506592, 0.568359, 0.799316, 0.195435), (0.535156, 0.691406, 0.485107, 0.0227966), (0.412354, 0.278076, 0.339844, 0.79834), (0.0248871, 0.283691, 0.486084, 0.826172), (0.702637, 0.530273, 0.393799, 0.264404), (0.639648, 0.391602, 0.158203, 0.64209), (0.624512, 0.00078249, 0.37793, 0.683594), (0.501953, 0.705078, 0.0289154, 0.5), (0.577148, 0.507812, 0.639648, 0.00888824), (0.0848389, 0.478271, 0.5625, 0.668945), (0.252197, 0.769043, 0.213135, 0.547363), (0.446533, 0.818848, 0.331543, 0.140869), (0.555176, 0.39502, 0.233398, 0.693848), (0.453857, 0.569824, 0.477783, 0.490723), (0.356934, 0.532227, 0.508789, 0.575195), (0.417236, 0.688965, 0.584961, 0.0932617), (0.15686, 0.802734, 0.000578403, 0.575684), (0.416748, 0.532715, 0.451904, 0.582031), (0.527344, 0.67334, 0.436035, 0.279541), (0.332031, 0.829102, 0.426514, 0.143311), (0.708984, 0.139038, 0.426514, 0.543945), (0.626953, 0.703125, 0.101624, 0.319336), (0.00901794, 0.382324, 0.672363, 0.633789), (0.173584, 0.694336, 0.612305, 0.335693), (0.29248, 0.541016, 0.58252, 0.53125), (0.888184, 0.383789, 0.250977, 0.0299225), (0.164917, 0.616211, 0.549805, 0.539551), (0.28833, 0.683594, 0.599121, 0.301025), (0.0667725, 0.96582, 0.189209, 0.162964), (0.429443, 0.416016, 0.80127, 0.0271606), (0.834961, 0.138794, 0.289551, 0.447021), (0.0962524, 0.109375, 0.922852, 0.356934), (0.305176, 0.535645, 0.561035, 0.552246), (0.625977, 0.284912, 0.679199, 0.255859), (0.60498, 0.441895, 0.468506, 0.468262), (0.395508, 0.270996, 0.822754, 0.30542), (0.416748, 0.207642, 0.602051, 0.648926), (0.333496, 0.230103, 0.496094, 0.768066), (0.80127, 0.308105, 0.502441, 0.103394), (0.86377, 0.446777, 0.203003, 0.114624), (0.273682, 0.230347, 0.649902, 0.670898), (0.782715, 0.469238, 0.0795898, 0.401123), (0.318604, 0.569336, 0.538574, 0.533203), (0.549316, 0.433594, 0.427979, 0.571777)],
         }
         point3f[] positions = []
-        point3f[] positions.timeSamples = {
-            1: [(4.1675253, -3.5916092, 1.8878177e-10), (-0.77677006, -2.7297707, 2.2821411e-11), (3.0630136, 1.158053, -5.062111e-10), (-4.2709227, 1.0144538, 6.76464e-10), (-3.044508, 4.2851124, -3.9149595e-10), (0.29896238, 0.3106549, -7.816431e-11), (0.15971519, 3.7982178, -2.486611e-10), (0.3848841, -1.6533717, -4.7115134e-10), (0.58787704, -3.3571897, -4.8183746e-10), (4.113137, 0.4235462, 2.1811025e-12), (2.3364277, 4.629844, 6.5539973e-10), (-4.4072022, -3.7855508, 1.330619e-10), (2.6305351, -3.0152974, 5.616334e-10), (-0.32800487, 5, -2.5730745e-10), (-4.423228, 2.7572892, -3.5334402e-10), (0.72067314, 0.48032182, -3.0607294e-11), (2.7783132, 4.408583, 1.7096724e-10), (0.5235561, 1.9940797, -3.4645287e-11), (-3.6079555, -1.103081, 5.0366333e-10), (-4.6905637, 4.050367, -3.9834303e-10), (4.6523604, -3.5442917, -3.576539e-11), (0.846675, 4.1522455, 2.2718716e-11), (-3.3387394, -3.095033, 1.3571666e-10), (1.3029603, 2.0271907, -2.2196633e-10), (0.7090133, -0.11374539, 2.3935076e-11), (2.9434667, 3.9371858, 2.1592372e-10), (-1.957395, -1.295166, -4.2009418e-10), (-2.5378819, 0.25532737, -1.1998125e-10), (2.7822194, -2.20158, 1.1130851e-9), (-2.1778595, 2.223699, -1.1091765e-10), (-2.9153743, -0.90093225, -5.062648e-10), (0.16372001, 1.847963, -3.4701858e-10), (0.51893455, 2.9131505, -5.751253e-10), (3.937106, 2.9227145, -3.9821257e-10), (-1.150243, -4.334717, 8.0838e-11), (4.9943843, 3.4778712, -2.6374325e-10), (-0.79614973, -1.6060177, -2.1719682e-10), (0.81279016, -0.67148095, 3.1967184e-10), (-0.60879153, 0.98583937, 2.0755242e-10), (0.14318645, -2.1115084, -3.2708414e-10), (2.209392, 2.1642263, -1.5093438e-10), (-1.9529516, -0.47410214, 1.8977656e-10), (3.9580522, -0.7834903, 1.8144286e-10), (-0.9853899, 1.7057277, 4.3770143e-10), (-2.5326447, -0.88900006, -1.297259e-10), (-1.6385394, -3.1866343, 5.938898e-10), (2.7824752, -3.7559679, -4.1263393e-10), (-1.1081235, 0.16402376, 6.280465e-11), (-4.915382, -1.1118164, 2.5618663e-10), (2.4458625, -1.4070538, 1.07071796e-10), (-3.2303452, -0.7035627, 1.7560599e-11), (-3.0455608, -2.8056617, 4.6093396e-10), (-1.2546664, -3.0451941, 2.9386753e-12), (-1.132415, -1.3642524, -9.91641e-10), (-1.578752, -3.9951396, 1.7757884e-10), (4.3221517, 2.0829816, 2.8563063e-10), (-4.2577195, -1.5047516, 2.0890678e-10), (2.8562903, 0.0697684, -4.6419318e-10), (0.65989065, 1.0402397, -5.83519e-10), (-2.5549412, -4.511527, 4.886025e-11), (-4.104018, -2.9322283, 6.651364e-10), (-5, 0.4470213, -6.3586136e-11), (-3.0484476, 0.94580436, 5.481757e-10), (3.2602262, 3.4405003, 4.494846e-11), (1.910574, -2.0677114, 8.4613094e-11), (-3.5228193, -0.23725545, 5.164156e-10), (3.7944171, -2.7523572, -8.505169e-12), (1.2122772, 3.1690722, -1.0068375e-10), (2.646268, 2.4091716, -3.2547942e-10), (4.8208714, -1.5148462, -9.012702e-11), (-1.2628251, -0.97338057, -4.0722065e-10), (-1.4086337, -3.626728, 2.299716e-11), (-2.5653627, 2.9119213, 4.2673776e-10), (-0.5645547, -0.79126203, 2.8919156e-10), (-0.49555647, -1.7958064, -3.9470693e-10), (-0.69743896, -2.3221412, 1.029151e-9), (4.4066095, 3.1025362, -4.395595e-10), (0.25015795, 0.8468384, -6.607262e-11), (-0.2631955, -1.0234504, -5.24374e-10), (3.1680245, 2.5463982, -2.9316927e-10), (-4.6506653, 5, 2.1385904e-10), (-4.6026554, 1.3711742, -3.803644e-10), (3.1056917, -5, -1.452154e-10), (-1.6525402, -2.4309952, 1.1747725e-10), (-2.1106822, -2.6816633, -1.8780535e-10), (-0.24840721, 3.6696415, -7.715939e-12), (-0.6457389, -0.46140188, 6.452725e-10), (-1.6083769, 2.8740814, -5.2706506e-11), (2.6379557, 1.0427659, -1.6744017e-10), (0.79618275, -1.4430921, -1.5842105e-10), (-3.7965436, 3.8374155, -5.1356475e-10), (1.9752188, 2.5091677, -1.8334378e-10), (-2.694076, 2.1187503, 2.9131209e-10), (-1.0504433, -0.63218683, 2.2240682e-10), (4.848428, 0.8334273, 5.306533e-11), (-2.1824472, 3.082237, 2.0563196e-10), (-4.092787, -0.65156513, -2.54052e-10), (0.89873743, 2.895908, -3.5259684e-11), (4.523795, 1.2473478, 4.021583e-10), (-1.6789103, 1.9038124, -1.1600898e-10), (-3.1786568, -0.11009467, 6.126033e-11), (-0.61424, 0.21318685, -2.199843e-11), (-0.7986419, -1.1155312, -1.7370105e-10), (-1.2320653, 0.8163628, -4.694207e-10), (1.1412246, 2.525091, 2.8175262e-10), (1.9273977, -0.9651795, -4.653389e-12), (-4.5596657, 3.6792166, 8.84502e-10), (-2.262162, 1.1849214, 1.0595946e-9), (0.113197275, 3.2924771, 5.033005e-10), (1.6290038, 3.2055206, -6.6868733e-13), (-2.446578, 0.72817385, -8.579013e-10), (-1.7607195, -3.5305445, 1.3484569e-10), (-4.7049146, -0.2480207, -2.8814773e-10), (-2.9548793, -3.2870576, 4.5571247e-10), (-1.3188102, -2.1844149, -3.3392622e-11), (-3.3425186, 4.5717764, -2.859899e-10), (1.6867588, 0.8332646, 2.8825609e-11), (-2.6924903, 2.5347557, 3.3726244e-11), (3.946361, -1.8196282, -7.871994e-10), (0.58144593, 3.8181074, -2.7513292e-10), (-4.669978, 0.2947643, -1.7384927e-10), (-3.3986003, -2.2893734, 3.5914116e-10), (-4.499845, 0.60703975, -8.3744656e-10), (2.4174178, 0.081225015, -1.5073913e-9), (1.0346074, -3.40563, 9.3220986e-11), (-0.54158366, 0.6029342, -2.8507152e-10), (2.0036492, -1.6210043, -3.9178105e-10), (2.960071, -2.7815025, -6.1356165e-10), (-5, 3.7392359, -4.581826e-10), (-5, -0.550608, -1.914735e-11), (-2.6098526, -1.6135595, 2.904329e-10), (1.4168508, -4.343722, -1.3832846e-10), (4.6505213, -0.38244194, -2.902072e-10), (-3.9158187, 2.6518154, -5.847615e-10), (-0.24592777, 2.5489948, -8.153489e-11), (4.4786706, -4.7318015, -2.3424174e-10), (3.4778402, 1.2479651, -2.5416577e-10), (4.479569, 0.18023989, 2.1389102e-10), (-3.6428192, 0.64515233, 4.3799608e-10), (-0.44626167, -0.13334084, 5.637797e-10), (1.948288, 0.43188542, 1.7217616e-10), (-4.128481, 0.5693549, -2.0470425e-10), (-2.470858, -3.5143464, 1.8178792e-11), (-0.93176347, 2.50029, 5.419746e-10), (2.2185812, -2.8784413, -3.958578e-10), (-3.729115, -0.74608845, 6.033124e-11), (1.7652824, -0.4350059, -9.106271e-11), (2.2246711, 1.2588613, -1.1706125e-10), (2.7583477, -1.7478126, -3.6256775e-11), (-4.1926446, 3.8442082, 2.3004354e-10), (-2.9509015, -2.4168572, 3.0949993e-11), (3.6367447, 2.6199365, 7.292711e-10), (1.7322685, 1.305025, 1.0413892e-10), (-3.7940397, -1.4844648, -3.6684522e-10), (-1.6755497, -2.8002093, -6.815757e-10), (0.022063928, -0.79013604, 6.9141426e-10), (-0.96260196, 0.54569656, 3.6417702e-10), (3.3072467, -0.9135537, -2.409879e-10), (1.5632646, -3.269097, -3.7551318e-10), (-5, 0.86214167, 3.7074432e-10), (-3.2492566, 0.5828752, 1.893441e-11), (-1.5079819, -0.5821401, 5.942946e-10), (4.9387374, 0.36350498, -5.921845e-10), (-3.4121163, 3.4306142, 3.7898273e-10), (0.13176313, -3.4746013, -9.2606767e-10), (0.709214, -1.9858419, -2.2859292e-10), (-1.5630611, -1.2484871, 5.8894e-12), (0.03241087, 2.2468557, -1.2611345e-10), (3.4473739, -3.0606859, -3.0719324e-10), (1.73114, -2.832135, 3.301861e-10), (2.5740058, 1.9272333, 7.863021e-11), (-3.690615, 2.2989857, 2.375925e-10), (-1.8381828, 3.895664, 4.270424e-10), (-2.5744328, -2.7397082, -9.543935e-11), (-1.8679609, 1.4551494, -2.7683145e-10), (0.9246881, -2.4324229, 8.716472e-11), (-5, 1.7239665, 1.0239676e-10), (-3.294413, 2.5873394, 7.7818374e-10), (-0.56373024, 4.6852193, -2.0167623e-10), (-3.4193523, 1.0151957, 2.3980817e-14), (3.774835, 0.018045083, 1.5734103e-9), (4.6500854, 1.7349203, 3.6385295e-10), (2.6184115, -0.86865574, 3.9107934e-10), (-0.5853549, 1.4739648, -8.727707e-10), (-0.9600792, 4.3892255, 1.6796187e-10), (-0.16215548, -0.4251888, -1.7772703e-9), (-3.6859374, 0.042075574, -7.986817e-11), (3.252489, 0.24011396, -5.819336e-10), (1.452841, -1.86128, 4.2196246e-11), (2.524199, -4.6760807, 1.5298474e-10), (-3.676933, -1.9359343, -1.9220536e-10), (-2.2507145, 3.5440943, -2.3051483e-10), (-1.666472, 0.7291404, -1.7698815e-10), (-0.4095211, -1.3724262, 8.410894e-11), (1.8316506, 0.010112802, -1.4075607e-9), (-3.5731125, 2.9705112, 1.3157275e-10), (-3.4830365, -0.5244374, -3.9729153e-10), (3.9857066, 2.358829, 6.257147e-10), (0.38376904, -0.58546525, -1.15669085e-10), (3.551004, -2.137024, 4.5147164e-11), (-4.9948573, 3.195249, 5.6238886e-10), (-1.4798408, 0.3346703, -2.5531588e-10), (4.1184993, -2.3783383, -1.8489588e-10), (4.2108655, -2.9263844, -3.0501446e-10), (-0.43327045, -3.4036884, 1.304093e-10), (0.68586004, -2.8782992, -3.3330538e-10), (3.6272566, -5, 3.8829606e-11), (3.5726898, -0.512856, -2.3164043e-10), (-1.1838006, -2.5875456, 1.7025181e-10), (1.5038911, 3.5771492, 1.02527764e-10), (-3.3943617, -1.6605926, 4.1493564e-10), (3.4036522, -2.6008737, -1.5763738e-10), (-1.8888153, 0.24652381, -1.2227497e-10), (-4.4230504, -2.281942, -2.5879276e-10), (-4.5539827, -0.6731496, 8.821395e-10), (2.3644674, -1.9923637, -1.4709183e-9), (-1.3392448, -0.1931145, 5.72289e-10), (-0.3232206, -2.122856, -1.7104984e-11), (-1.7627387, -0.8964305, 9.610184e-10), (1.243882, 0.9710438, -3.3823833e-10), (-3.161398, 1.7566656, 2.1192997e-10), (-0.8450355, -3.184997, -3.3184444e-10), (-0.16566065, 1.1299105, 3.017664e-11), (-4.4374137, 0.07002304, -2.6154612e-10), (-2.7186272, 1.7507627, -1.5626744e-10), (5.0000067, 1.3647715, -4.711458e-10), (4.267657, 0.8778892, 4.1716486e-10), (-2.0234709, 2.6134577, 4.198053e-10), (-3.8983598, 3.4113889, 4.2142973e-11), (2.7829998, 1.5261011, -4.2408355e-10), (0.08417763, -1.2939843, 2.773235e-10), (-0.5842293, 2.7548964, 1.5845547e-11), (-4.286697, -0.29913527, -6.418116e-10), (3.4782958, 2.1705437, -2.0808827e-10), (0.57245094, 3.3586466, 7.1774897e-10), (-0.1315123, 0.5949023, -3.6522263e-10), (-0.19487128, -2.5357616, -5.604486e-10), (-1.9710425, 0.951295, 6.062034e-10), (0.24660568, -0.17372707, -7.280547e-10), (2.4799428, 0.56115615, 9.2531205e-11), (-3.8800573, -2.4119542, -9.333945e-11), (-3.9655242, 1.3442367, -6.8527317e-10), (-3.5511224, 1.4308455, 7.262857e-11), (1.2700526, -0.5780408, 8.051753e-10), (4.8415575, -3.1155064, 7.2067596e-10), (-2.3618352, -0.44638133, -3.1794078e-10), (-0.91238266, -0.18301672, 5.459886e-10), (4.369418, -1.3483201, 1.6151105e-10), (2.5018234, -2.5069203, -3.9621062e-10), (-0.42027217, 2.0421312, 8.998652e-11), (-3.2605479, -1.3212926, -2.8690161e-11), (-0.9454622, -2.065709, -3.5733594e-10), (1.536966, 2.4544578, 3.3495495e-10), (4.883824, -2.22674, -1.0092427e-10), (-1.797197, -5, -1.7201462e-10), (1.3000917, 1.5308121, 8.263048e-10), (-3.899403, -0.26876053, -1.446786e-10), (-2.2178667, -0.046674963, -4.6193693e-10), (-0.06693145, -1.7092235, -2.5015268e-10), (4.5091753, -1.9070908, -1.1073156e-10), (-1.0812895, 3.8179314, 1.3855228e-10), (-2.7000394, -0.14477403, 1.9436858e-10), (-2.6446025, 4.3151407, 7.956391e-11), (-3.8441133, 0.95818967, 4.121623e-10), (3.6161313, 0.4366354, 3.1946445e-10), (1.1716098, -0.0819778, -3.285428e-10), (3.5216355, -1.5005776, -1.7791946e-10), (-2.9714615, 0.20871249, 4.0166948e-10), (2.2522943, 1.6478126, 3.479479e-10), (3.2672336, -0.23526803, -3.1158565e-10), (0.11126099, 5, -3.6870913e-11), (-1.0092968, 1.2116798, -1.7985169e-10), (-4.8990855, -2.2275937, 3.4337289e-10), (-5, 1.2735173, -1.4988777e-10), (0.2429441, 1.4088402, -4.0265236e-10), (-2.3153536, -1.9599248, -5.4260596e-11), (-4.6716723, 0.9344406, 2.0236566e-9), (3.1247122, -2.3272727, 1.7404322e-10), (2.9146314, 0.5950423, 6.689721e-10), (-3.3910863, 0.23851617, 2.9577474e-10), (-3.145431, 2.2107356, 6.4139805e-11), (4.213621, 1.5930359, 6.752958e-10), (-1.7341952, -0.12857157, -4.5965892e-10), (2.8071394, -0.41043028, -1.8660595e-10), (-5, -0.015089936, 9.6492925e-11), (-4.131485, -1.9315223, -2.824957e-10), (1.6213425, -1.310705, -6.32735e-11), (0.38640657, -2.462969, 7.3056894e-11), (-4.5681295, 1.9387041, 4.1933346e-10), (-2.536633, 1.442573, -2.1365729e-10), (0.47415087, -1.0716817, 1.9272228e-10), (-2.1571805, -0.8617872, 4.31446e-11), (-3.9786317, 1.8632076, 4.4974974e-10), (-4.028914, -1.0830251, 3.2562514e-10), (-2.814706, -1.2532787, 3.6295966e-11), (-4.8969507, 2.3129294, 1.8391066e-10), (-4.5265665, -3.3463922, 6.371266e-10), (-0.86200196, 2.1338737, 2.9713565e-10), (-0.3297721, 3.1546624, 1.351399e-10), (1.1069463, -1.098658, 1.45332635e-11), (-4.462968, -1.1023563, -2.0020419e-10), (-2.6427307, 3.7944725, 4.6198773e-10), (3.9101896, -4.545224, 7.467131e-11), (-3.3137555, -3.9082515, -3.387357e-11), (1.9118557, 2.9152627, -5.986369e-10), (-4.0575066, 4.535833, -1.7533433e-10), (-0.20143773, 1.6376506, 1.6413572e-12), (0.9244135, 1.8426661, -1.7617441e-10), (-2.2280378, -1.5943184, -1.6831114e-10), (-1.9005361, -1.7423644, -4.1035486e-10), (-4.905829, -1.7469083, -5.5190474e-10), (1.3314134, 0.40869403, 1.2411891e-10), (0.9880774, 3.4476967, -1.5112422e-10), (4.700355, 2.2989626, 7.22693e-11), (3.3222842, 0.77934504, 4.0610248e-10), (4.8704863, 3.0527518, 4.8415494e-11), (-1.798823, 3.3188813, -1.4228485e-10), (1.3456954, -3.8684566, 1.4104995e-10), (-2.7142322, -2.0297315, -6.8817346e-10), (4.085998, -0.31188405, 6.022716e-11), (-4.0984755, 0.12988648, 1.0303536e-10), (-2.3803995, -1.2397659, 5.7369615e-10), (-2.6873393, 1.0582669, -2.3692115e-10), (-2.457962, -2.367663, -2.2199359e-10), (-2.7202566, -0.56821924, -2.885402e-10), (3.187807, -1.8262169, -3.236318e-10), (-4.227845, 2.2929158, -8.09563e-11), (1.8029767, 1.7459276, -1.8184101e-10), (2.5509155, 3.7742693, 8.262704e-10), (-2.118374, -3.1332965, 2.1438769e-10), (1.2195741, -2.811712, -1.5650742e-10), (5, 1.9641619, -3.8924075e-10), (3.2981553, 1.6917144, 1.7292147e-11), (-5, 2.74453, 1.4417703e-9), (2.9969578, 2.0579696, 4.8557414e-10), (5, -2.676641, 2.2275715e-10), (-0.8487135, -5, -3.9103e-10), (2.8189175, -4.220725, -4.1256137e-10), (-2.0301058, -2.2340462, 1.4299784e-11), (0.82970876, 2.335265, 5.2331844e-10), (3.5506625, -3.5851626, -2.7752267e-10), (-1.1782604, -1.7708973, -5.9162564e-11), (0.75930357, 1.4551351, 9.0935676e-11), (5, -0.5849647, 2.5652824e-10), (-2.7767892, 3.3279035, -3.121149e-10), (2.553529, -3.398255, 1.6179666e-9), (4.570615, -4.238119, -2.9701042e-10), (2.9608986, -1.3160512, 3.2668024e-10), (-0.17514324, -3.8522344, -3.744867e-10), (-0.101953454, -3.1570415, -1.4764567e-10), (1.5234842, -2.339492, 1.300513e-10), (1.4296964, 2.8341029, -2.7485267e-10), (1.7561272, 4.380782, -2.0775603e-11), (-1.0723313, -3.5287337, -8.366963e-11), (2.0345762, -2.4679933, 9.218598e-11), (0.44816208, -3.8131561, 4.3474957e-10), (5, -1.0629107, 6.50085e-11), (1.7431802, 2.118988, 6.611749e-11), (0.41237405, 2.4843163, 1.0769144e-10), (-1.4916087, 3.649345, 1.08516085e-10), (-3.2675304, -5, -1.07972464e-10), (-3.1154294, -1.9979396, 4.371361e-10), (-3.2618809, -0.9995285, -1.2217425e-9), (-4.064263, 3.0541208, 2.207268e-9), (-0.76241994, 3.3172708, -2.783666e-10), (2.264951, -0.53433055, -7.1817263e-10), (-4.2876244, 1.5827179, 1.2875856e-10), (-1.5162756, -1.6229932, -1.1545476e-10), (3.819378, 1.8628191, 6.6089745e-10), (-0.47550598, -4.685087, -8.4222296e-10), (0.38981855, 4.325682, -3.596834e-10), (4.033512, 3.3525832, -1.2011209e-10), (-2.9884648, -1.6262447, -3.516476e-10), (5, 2.545349, 3.3679157e-10), (-0.6844387, 3.7916281, 3.2684944e-10), (-1.2584084, 3.2883441, 2.5749625e-10), (-0.6207092, -4.190244, 7.679616e-10), (-3.8071156, 0.3579687, -3.363585e-10), (-3.0379834, -0.42113027, -3.0536662e-10), (-3.55517, -2.725853, -8.8365204e-11), (-0.41772524, -2.9186316, -2.0198425e-10), (2.0157034, 3.3970492, -1.6054358e-10), (-3.362275, -3.5135303, -3.411884e-10), (3.8745968, 1.3536968, -2.363847e-10), (2.0778723, -3.3140366, 3.2400926e-10), (-3.7713258, 4.2832685, -4.0342174e-10), (-2.207372, 1.7748765, 5.0995785e-10), (-1.059728, 2.9054053, -2.284839e-12), (2.1082826, 3.814939, -1.5417445e-10), (-1.3871241, 2.4274974, 4.8894033e-10), (-2.5897105, -3.113439, 5.0472404e-10), (-1.3937116, 4.1820855, -8.207521e-11), (-0.12012148, 0.116398565, 9.090795e-11), (3.0715902, -3.3359728, 7.775036e-11), (0.20186128, -2.8999722, 6.220602e-11), (2.4276628, 3.2362323, 4.838141e-10), (-2.836889, 0.59232175, 1.2008572e-10), (-2.1066372, -3.644615, 3.954148e-11), (1.3069409, 4.7210383, -1.88082e-10), (-2.1458519, 0.49736223, 2.687487e-10), (-2.907369, -3.6973875, 1.8762536e-10), (-3.7388258, -3.2174716, 2.5005364e-10), (-3.0451977, 1.3632972, -3.8180925e-10), (0.08879909, 2.8419917, -3.0813885e-10), (2.857374, 3.375093, -2.6875568e-10), (-0.93909204, -4.634145, -1.4940127e-10), (-1.4806738, 1.2547113, 1.5688673e-10), (2.3027687, -3.7901351, 2.2342941e-10), (2.3590229, 2.773762, 2.8294256e-11), (-5, 4.796005, -3.0189684e-10), (-0.6838821, -3.7407565, -2.6588598e-10), (-3.4131536, 3.9990466, 1.6993451e-10), (-4.0902896, -3.4784431, -7.8103923e-10), (2.189017, -4.292632, 2.459437e-10), (3.725775, 3.5665636, -2.093048e-11), (3.2196527, -4.553553, 2.3145708e-11), (-4.477837, 3.2683213, -1.8666335e-10), (-2.9154353, -5, -1.3481238e-10), (-1.1201291, -3.980856, -1.6212498e-10), (-1.8532491, 4.49132, -7.536427e-10), (-0.019274898, 4.402428, 6.823786e-11), (3.4255326, 3.0426486, 9.779955e-13), (-1.6580068, -2.0154974, -5.8754424e-10), (2.8737144, 2.8982449, -7.054779e-11), (4.8865533, -5, 8.0799367e-10), (2.2563875, 4.2285457, -3.0432634e-10), (-3.1511402, 5, -1.8390833e-10), (4.502919, 3.5967453, -2.353917e-11), (-1.3529135, -5, -2.586652e-10), (4.1059256, -5, -7.4250944e-10), (-3.4545324, -4.630971, 5.0950744e-11), (3.3715467, 3.8758721, -9.58888e-11), (-4.186334, 4.998253, -8.546652e-11), (-0.008456694, -4.292852, 1.381788e-10), (-2.6662195, 4.8866997, 2.1445146e-10), (1.7443, 4.867959, 6.850523e-10), (-2.5629616, -5, 4.3735127e-11), (-4.4644732, 4.409126, -1.189171e-10), (-2.2383602, 4.099241, 7.980372e-11), (4.0010877, -4.073402, -2.1944446e-10), (-3.0842934, 2.9832387, -6.3172056e-10), (4.998435, -4.5332837, 1.6574297e-11), (3.7061675, 4.5341334, -1.9908752e-10), (4.4032564, 2.6492193, 6.324852e-11), (-1.4511706, -4.6499553, 8.8670316e-10), (3.5392828, -4.176752, -5.6409766e-11), (3.1908858, -3.8959794, -2.6691538e-10), (-5, 4.277841, -1.0682233e-10), (0.5306742, 5, -5.6900595e-12), (-3.6721714, 4.9100623, 1.908379e-10), (-1.6903167, -4.38274, 2.879217e-10), (0.41369775, -4.8664417, -2.4977065e-10), (-3.0709054, 3.7221785, 3.6129694e-10), (-2.0758035, -4.5756283, -5.914702e-11), (0.6532308, -4.438715, 2.01694e-10), (-3.5470111, 1.8948942, -5.687515e-10), (-3.4202065, -4.2795305, 3.3172975e-10), (0.9752473, 5, 4.1800785e-11), (-2.5791836, -3.9594297, 1.8880075e-10), (0.7880247, 4.5685573, 1.4404278e-10), (-2.2214625, 4.7484856, -2.1280522e-10), (4.3660884, 4.619149, 2.0574542e-10), (2.1912475, 5, 5.1791327e-10), (-2.9972596, -4.5849476, 1.7362096e-10), (1.0886613, 3.811087, 8.717802e-10), (-1.1933123, 4.861399, 1.3682977e-10), (-0.42837754, 4.1591473, 2.8739566e-10), (1.6652398, 3.9359057, -4.2923604e-10), (-2.2820668, -4.1633086, -8.327674e-10), (-3.6394649, -5, 4.5053516e-11), (2.1491492, 0.86050814, 1.00262354e-10), (2.670796, 5, -5.58809e-10), (1.2821605, 4.228902, 1.643341e-10), (-1.9561995, -4.034129, -7.0812495e-11), (-2.9599385, -4.174161, -1.4139434e-10), (-2.1948626, -5, -1.6463753e-10), (-5, -3.6549814, 2.2073587e-10), (3.2639298, 4.3699784, -4.689006e-10), (3.8020253, 0.85929537, -2.045426e-10), (-3.9140928, -4.5564733, -3.3848724e-10), (-3.7698152, -4.157495, 1.1381629e-10), (-4.0540133, -5, -8.2565954e-11), (-4.3159823, -4.679113, -2.3251623e-10), (4.409635, 4.2339067, 5.5328242e-11), (-5, -4.8670497, -8.1640894e-10), (-3.7468703, -3.736479, -2.3602897e-10), (3.1333697, 4.880706, -2.9293257e-10), (3.7837605, 4.080415, 4.5165138e-10), (5, 4.808447, 1.10331744e-10), (-4.729345, -4.5553637, 7.5211415e-10), (5, 4.348623, 4.741295e-10), (4.1942563, 3.884944, 4.484444e-10), (-4.404907, -4.289323, -2.3026026e-10), (4.0351343, 4.998, 8.74085e-11), (-4.7484217, -3.9822292, 5.6658145e-10), (4.558625, 5, 3.8799342e-10), (-4.1044354, -4.052985, -2.969694e-11), (-5, -4.2716846, -1.7024104e-10), (-4.5294714, -5, -1.7115653e-10), (5, 3.913188, -1.479089e-11)],
-            2: [(4.1675253, -3.5916092, -0.009363988), (-0.77677006, -2.7297707, -0.009363988), (3.0630136, 1.158053, -0.009363988), (-4.2709227, 1.0144538, -0.009363988), (-3.044508, 4.2851124, -0.009363988), (0.29896238, 0.3106549, -0.009363989), (0.15971519, 3.7982178, -0.009363989), (0.3848841, -1.6533717, -0.009363989), (0.58787704, -3.3571897, -0.009363989), (4.113137, 0.4235462, -0.009363988), (2.3364277, 4.629844, -0.009363988), (-4.4072022, -3.7855508, -0.009363988), (2.6305351, -3.0152974, -0.009363988), (-0.32800487, 5, -0.009363989), (-4.423228, 2.7572892, -0.009363989), (0.72067314, 0.48032182, -0.009363988), (2.7783132, 4.408583, -0.009363988), (0.5235561, 1.9940797, -0.009363989), (-3.6079555, -1.103081, -0.009363989), (-4.6905637, 4.050367, -0.00936399), (4.6523604, -3.5442917, -0.009363989), (0.846675, 4.1522455, -0.009363988), (-3.3387394, -3.095033, -0.009363988), (1.3029603, 2.0271907, -0.0093639875), (0.7090133, -0.11374539, -0.009363989), (2.9434667, 3.9371858, -0.009363989), (-1.957395, -1.295166, -0.009363988), (-2.5378819, 0.25532737, -0.009363989), (2.7822194, -2.20158, -0.009363988), (-2.1778595, 2.223699, -0.009363988), (-2.9153743, -0.90093225, -0.00936399), (0.16372001, 1.847963, -0.009363989), (0.51893455, 2.9131505, -0.009363989), (3.937106, 2.9227145, -0.009363988), (-1.150243, -4.334717, -0.009363988), (4.9943843, 3.4778712, -0.00936399), (-0.79614973, -1.6060177, -0.009363988), (0.81279016, -0.67148095, -0.00936399), (-0.60879153, 0.98583937, -0.009363988), (0.14318645, -2.1115084, -0.009363989), (2.209392, 2.1642263, -0.009363989), (-1.9529516, -0.47410214, -0.009363988), (3.9580522, -0.7834903, -0.009363988), (-0.9853899, 1.7057277, -0.009363988), (-2.5326447, -0.88900006, -0.009363989), (-1.6385394, -3.1866343, -0.009363988), (2.7824752, -3.7559679, -0.009363989), (-1.1081235, 0.16402376, -0.009363989), (-4.915382, -1.1118164, -0.009363988), (2.4458625, -1.4070538, -0.009363988), (-3.2303452, -0.7035627, -0.009363989), (-3.0455608, -2.8056617, -0.009363988), (-1.2546664, -3.0451941, -0.009363989), (-1.132415, -1.3642524, -0.00936399), (-1.578752, -3.9951396, -0.009363989), (4.3221517, 2.0829816, -0.009363988), (-4.2577195, -1.5047516, -0.0093639875), (2.8562903, 0.0697684, -0.009363989), (0.65989065, 1.0402397, -0.00936399), (-2.5549412, -4.511527, -0.009363989), (-4.104018, -2.9322283, -0.009363988), (-5, 0.4470213, -0.009363989), (-3.0484476, 0.94580436, -0.009363988), (3.2602262, 3.4405003, -0.009363989), (1.910574, -2.0677114, -0.009363989), (-3.5228193, -0.23725545, -0.009363988), (3.7944171, -2.7523572, -0.009363989), (1.2122772, 3.1690722, -0.009363988), (2.646268, 2.4091716, -0.009363988), (4.8208714, -1.5148462, -0.009363989), (-1.2628251, -0.97338057, -0.009363989), (-1.4086337, -3.626728, -0.009363989), (-2.5653627, 2.9119213, -0.009363988), (-0.5645547, -0.79126203, -0.009363989), (-0.49555647, -1.7958064, -0.00936399), (-0.69743896, -2.3221412, -0.0093639875), (4.4066095, 3.1025362, -0.00936399), (0.25015795, 0.8468384, -0.009363988), (-0.2631955, -1.0234504, -0.009363989), (3.1680245, 2.5463982, -0.009363988), (-4.6506653, 5, -0.009363988), (-4.6026554, 1.3711742, -0.009363988), (3.1056917, -5, -0.009363988), (-1.6525402, -2.4309952, -0.009363989), (-2.1106822, -2.6816633, -0.009363989), (-0.24840721, 3.6696415, -0.009363989), (-0.6457389, -0.46140188, -0.009363988), (-1.6083769, 2.8740814, -0.009363989), (2.6379557, 1.0427659, -0.009363989), (0.79618275, -1.4430921, -0.009363989), (-3.7965436, 3.8374155, -0.009363988), (1.9752188, 2.5091677, -0.009363989), (-2.694076, 2.1187503, -0.0093639875), (-1.0504433, -0.63218683, -0.009363988), (4.848428, 0.8334273, -0.009363988), (-2.1824472, 3.082237, -0.009363988), (-4.092787, -0.65156513, -0.009363989), (0.89873743, 2.895908, -0.009363989), (4.523795, 1.2473478, -0.009363988), (-1.6789103, 1.9038124, -0.009363988), (-3.1786568, -0.11009467, -0.009363989), (-0.61424, 0.21318685, -0.009363988), (-0.7986419, -1.1155312, -0.009363989), (-1.2320653, 0.8163628, -0.00936399), (1.1412246, 2.525091, -0.009363988), (1.9273977, -0.9651795, -0.009363988), (-4.5596657, 3.6792166, -0.0093639875), (-2.262162, 1.1849214, -0.0093639875), (0.113197275, 3.2924771, -0.0093639875), (1.6290038, 3.2055206, -0.009363988), (-2.446578, 0.72817385, -0.009363988), (-1.7607195, -3.5305445, -0.009363988), (-4.7049146, -0.2480207, -0.009363989), (-2.9548793, -3.2870576, -0.009363989), (-1.3188102, -2.1844149, -0.009363989), (-3.3425186, 4.5717764, -0.009363989), (1.6867588, 0.8332646, -0.009363989), (-2.6924903, 2.5347557, -0.009363988), (3.946361, -1.8196282, -0.009363989), (0.58144593, 3.8181074, -0.00936399), (-4.669978, 0.2947643, -0.009363988), (-3.3986003, -2.2893734, -0.009363988), (-4.499845, 0.60703975, -0.009363989), (2.4174178, 0.081225015, -0.00936399), (1.0346074, -3.40563, -0.009363989), (-0.54158366, 0.6029342, -0.009363989), (2.0036492, -1.6210043, -0.009363988), (2.960071, -2.7815025, -0.009363989), (-5, 3.7392359, -0.009363988), (-5, -0.550608, -0.009363988), (-2.6098526, -1.6135595, -0.0093639875), (1.4168508, -4.343722, -0.009363988), (4.6505213, -0.38244194, -0.009363989), (-3.9158187, 2.6518154, -0.009363988), (-0.24592777, 2.5489948, -0.009363989), (4.4786706, -4.7318015, -0.009363989), (3.4778402, 1.2479651, -0.009363989), (4.479569, 0.18023989, -0.009363989), (-3.6428192, 0.64515233, -0.009363989), (-0.44626167, -0.13334084, -0.0093639875), (1.948288, 0.43188542, -0.009363988), (-4.128481, 0.5693549, -0.009363989), (-2.470858, -3.5143464, -0.009363988), (-0.93176347, 2.50029, -0.009363988), (2.2185812, -2.8784413, -0.009363988), (-3.729115, -0.74608845, -0.009363988), (1.7652824, -0.4350059, -0.009363989), (2.2246711, 1.2588613, -0.009363989), (2.7583477, -1.7478126, -0.009363988), (-4.1926446, 3.8442082, -0.009363989), (-2.9509015, -2.4168572, -0.009363988), (3.6367447, 2.6199365, -0.009363988), (1.7322685, 1.305025, -0.009363989), (-3.7940397, -1.4844648, -0.009363988), (-1.6755497, -2.8002093, -0.00936399), (0.022063928, -0.79013604, -0.0093639875), (-0.96260196, 0.54569656, -0.009363988), (3.3072467, -0.9135537, -0.009363988), (1.5632646, -3.269097, -0.009363989), (-5, 0.86214167, -0.009363988), (-3.2492566, 0.5828752, -0.009363989), (-1.5079819, -0.5821401, -0.009363988), (4.9387374, 0.36350498, -0.00936399), (-3.4121163, 3.4306142, -0.009363988), (0.13176313, -3.4746013, -0.00936399), (0.709214, -1.9858419, -0.009363989), (-1.5630611, -1.2484871, -0.009363989), (0.03241087, 2.2468557, -0.009363988), (3.4473739, -3.0606859, -0.009363988), (1.73114, -2.832135, -0.009363988), (2.5740058, 1.9272333, -0.009363988), (-3.690615, 2.2989857, -0.009363989), (-1.8381828, 3.895664, -0.009363989), (-2.5744328, -2.7397082, -0.009363989), (-1.8679609, 1.4551494, -0.009363989), (0.9246881, -2.4324229, -0.009363989), (-5, 1.7239665, -0.009363989), (-3.294413, 2.5873394, -0.009363988), (-0.56373024, 4.6852193, -0.009363989), (-3.4193523, 1.0151957, -0.009363988), (3.774835, 0.018045083, -0.0093639875), (4.6500854, 1.7349203, -0.009363989), (2.6184115, -0.86865574, -0.009363989), (-0.5853549, 1.4739648, -0.00936399), (-0.9600792, 4.3892255, -0.009363988), (-0.16215548, -0.4251888, -0.009363991), (-3.6859374, 0.042075574, -0.009363989), (3.252489, 0.24011396, -0.009363989), (1.452841, -1.86128, -0.009363988), (2.524199, -4.6760807, -0.009363988), (-3.676933, -1.9359343, -0.009363988), (-2.2507145, 3.5440943, -0.009363989), (-1.666472, 0.7291404, -0.009363988), (-0.4095211, -1.3724262, -0.009363989), (1.8316506, 0.010112802, -0.00936399), (-3.5731125, 2.9705112, -0.009363989), (-3.4830365, -0.5244374, -0.009363988), (3.9857066, 2.358829, -0.009363989), (0.38376904, -0.58546525, -0.009363989), (3.551004, -2.137024, -0.009363988), (-4.9948573, 3.195249, -0.009363989), (-1.4798408, 0.3346703, -0.009363989), (4.1184993, -2.3783383, -0.009363989), (4.2108655, -2.9263844, -0.009363988), (-0.43327045, -3.4036884, -0.009363988), (0.68586004, -2.8782992, -0.009363989), (3.6272566, -5, -0.009363989), (3.5726898, -0.512856, -0.009363989), (-1.1838006, -2.5875456, -0.009363988), (1.5038911, 3.5771492, -0.009363989), (-3.3943617, -1.6605926, -0.009363988), (3.4036522, -2.6008737, -0.009363988), (-1.8888153, 0.24652381, -0.009363989), (-4.4230504, -2.281942, -0.009363989), (-4.5539827, -0.6731496, -0.009363988), (2.3644674, -1.9923637, -0.00936399), (-1.3392448, -0.1931145, -0.0093639875), (-0.3232206, -2.122856, -0.009363989), (-1.7627387, -0.8964305, -0.0093639875), (1.243882, 0.9710438, -0.009363989), (-3.161398, 1.7566656, -0.009363989), (-0.8450355, -3.184997, -0.009363989), (-0.16566065, 1.1299105, -0.009363989), (-4.4374137, 0.07002304, -0.009363989), (-2.7186272, 1.7507627, -0.009363989), (5.0000067, 1.3647715, -0.009363989), (4.267657, 0.8778892, -0.0093639875), (-2.0234709, 2.6134577, -0.009363988), (-3.8983598, 3.4113889, -0.009363988), (2.7829998, 1.5261011, -0.009363988), (0.08417763, -1.2939843, -0.009363988), (-0.5842293, 2.7548964, -0.009363989), (-4.286697, -0.29913527, -0.00936399), (3.4782958, 2.1705437, -0.009363989), (0.57245094, 3.3586466, -0.0093639875), (-0.1315123, 0.5949023, -0.009363988), (-0.19487128, -2.5357616, -0.00936399), (-1.9710425, 0.951295, -0.0093639875), (0.24660568, -0.17372707, -0.009363988), (2.4799428, 0.56115615, -0.009363988), (-3.8800573, -2.4119542, -0.009363989), (-3.9655242, 1.3442367, -0.009363988), (-3.5511224, 1.4308455, -0.009363989), (1.2700526, -0.5780408, -0.009363989), (4.8415575, -3.1155064, -0.009363989), (-2.3618352, -0.44638133, -0.009363989), (-0.91238266, -0.18301672, -0.0093639875), (4.369418, -1.3483201, -0.0093639875), (2.5018234, -2.5069203, -0.009363988), (-0.42027217, 2.0421312, -0.009363988), (-3.2605479, -1.3212926, -0.009363988), (-0.9454622, -2.065709, -0.009363988), (1.536966, 2.4544578, -0.009363988), (4.883824, -2.22674, -0.009363991), (-1.797197, -5, -0.009363988), (1.3000917, 1.5308121, -0.0093639875), (-3.899403, -0.26876053, -0.009363989), (-2.2178667, -0.046674963, -0.00936399), (-0.06693145, -1.7092235, -0.009363989), (4.5091753, -1.9070908, -0.009363988), (-1.0812895, 3.8179314, -0.009363989), (-2.7000394, -0.14477403, -0.009363989), (-2.6446025, 4.3151407, -0.009363988), (-3.8441133, 0.95818967, -0.009363989), (3.6161313, 0.4366354, -0.009363988), (1.1716098, -0.0819778, -0.009363988), (3.5216355, -1.5005776, -0.009363989), (-2.9714615, 0.20871249, -0.009363988), (2.2522943, 1.6478126, -0.009363988), (3.2672336, -0.23526803, -0.009363988), (0.11126099, 5, -0.009363988), (-1.0092968, 1.2116798, -0.00936399), (-4.8990855, -2.2275937, -0.009363989), (-5, 1.2735173, -0.009363989), (0.2429441, 1.4088402, -0.009363988), (-2.3153536, -1.9599248, -0.009363989), (-4.6716723, 0.9344406, -0.009363987), (3.1247122, -2.3272727, -0.009363988), (2.9146314, 0.5950423, -0.009363988), (-3.3910863, 0.23851617, -0.009363988), (-3.145431, 2.2107356, -0.00936399), (4.213621, 1.5930359, -0.0093639875), (-1.7341952, -0.12857157, -0.00936399), (2.8071394, -0.41043028, -0.00936399), (-5, -0.015089936, -0.009363989), (-4.131485, -1.9315223, -0.009363989), (1.6213425, -1.310705, -0.009363989), (0.38640657, -2.462969, -0.009363989), (-4.5681295, 1.9387041, -0.009363988), (-2.536633, 1.442573, -0.009363989), (0.47415087, -1.0716817, -0.009363988), (-2.1571805, -0.8617872, -0.009363988), (-3.9786317, 1.8632076, -0.009363988), (-4.028914, -1.0830251, -0.009363988), (-2.814706, -1.2532787, -0.009363989), (-4.8969507, 2.3129294, -0.009363988), (-4.5265665, -3.3463922, -0.009363988), (-0.86200196, 2.1338737, -0.009363989), (-0.3297721, 3.1546624, -0.009363988), (1.1069463, -1.098658, -0.009363988), (-4.462968, -1.1023563, -0.009363988), (-2.6427307, 3.7944725, -0.009363988), (3.9101896, -4.545224, -0.009363988), (-3.3137555, -3.9082515, -0.009363989), (1.9118557, 2.9152627, -0.009363989), (-4.0575066, 4.535833, -0.009363989), (-0.20143773, 1.6376506, -0.009363988), (0.9244135, 1.8426661, -0.009363989), (-2.2280378, -1.5943184, -0.009363989), (-1.9005361, -1.7423644, -0.00936399), (-4.905829, -1.7469083, -0.009363989), (1.3314134, 0.40869403, -0.009363988), (0.9880774, 3.4476967, -0.009363988), (4.700355, 2.2989626, -0.009363989), (3.3222842, 0.77934504, -0.009363988), (4.8704863, 3.0527518, -0.009363989), (-1.798823, 3.3188813, -0.009363988), (1.3456954, -3.8684566, -0.009363989), (-2.7142322, -2.0297315, -0.009363988), (4.085998, -0.31188405, -0.009363988), (-4.0984755, 0.12988648, -0.009363988), (-2.3803995, -1.2397659, -0.009363988), (-2.6873393, 1.0582669, -0.00936399), (-2.457962, -2.367663, -0.009363989), (-2.7202566, -0.56821924, -0.009363988), (3.187807, -1.8262169, -0.009363988), (-4.227845, 2.2929158, -0.009363988), (1.8029767, 1.7459276, -0.009363988), (2.5509155, 3.7742693, -0.009363988), (-2.118374, -3.1332965, -0.009363989), (1.2195741, -2.811712, -0.009363988), (5, 1.9641619, -0.00936399), (3.2981553, 1.6917144, -0.009363988), (-5, 2.74453, -0.009363988), (2.9969578, 2.0579696, -0.009363989), (5, -2.676641, -0.009363988), (-0.8487135, -5, -0.009363989), (2.8189175, -4.220725, -0.009363989), (-2.0301058, -2.2340462, -0.009363989), (0.82970876, 2.335265, -0.0093639875), (3.5506625, -3.5851626, -0.009363989), (-1.1782604, -1.7708973, -0.009363989), (0.75930357, 1.4551351, -0.009363988), (5, -0.5849647, -0.009363989), (-2.7767892, 3.3279035, -0.009363989), (2.553529, -3.398255, -0.009363987), (4.570615, -4.238119, -0.009363988), (2.9608986, -1.3160512, -0.009363989), (-0.17514324, -3.8522344, -0.009363989), (-0.101953454, -3.1570415, -0.009363988), (1.5234842, -2.339492, -0.009363988), (1.4296964, 2.8341029, -0.009363989), (1.7561272, 4.380782, -0.009363988), (-1.0723313, -3.5287337, -0.009363988), (2.0345762, -2.4679933, -0.0093639875), (0.44816208, -3.8131561, -0.009363988), (5, -1.0629107, -0.009363988), (1.7431802, 2.118988, -0.009363988), (0.41237405, 2.4843163, -0.009363989), (-1.4916087, 3.649345, -0.009363988), (-3.2675304, -5, -0.009363989), (-3.1154294, -1.9979396, -0.009363988), (-3.2618809, -0.9995285, -0.009363989), (-4.064263, 3.0541208, -0.009363987), (-0.76241994, 3.3172708, -0.009363989), (2.264951, -0.53433055, -0.00936399), (-4.2876244, 1.5827179, -0.009363989), (-1.5162756, -1.6229932, -0.009363989), (3.819378, 1.8628191, -0.009363989), (-0.47550598, -4.685087, -0.00936399), (0.38981855, 4.325682, -0.009363989), (4.033512, 3.3525832, -0.009363989), (-2.9884648, -1.6262447, -0.009363988), (5, 2.545349, -0.0093639875), (-0.6844387, 3.7916281, -0.009363989), (-1.2584084, 3.2883441, -0.009363989), (-0.6207092, -4.190244, -0.0093639875), (-3.8071156, 0.3579687, -0.009363989), (-3.0379834, -0.42113027, -0.009363989), (-3.55517, -2.725853, -0.009363989), (-0.41772524, -2.9186316, -0.009363988), (2.0157034, 3.3970492, -0.009363989), (-3.362275, -3.5135303, -0.009363989), (3.8745968, 1.3536968, -0.009363989), (2.0778723, -3.3140366, -0.009363989), (-3.7713258, 4.2832685, -0.009363988), (-2.207372, 1.7748765, -0.009363988), (-1.059728, 2.9054053, -0.009363988), (2.1082826, 3.814939, -0.009363989), (-1.3871241, 2.4274974, -0.009363987), (-2.5897105, -3.113439, -0.009363989), (-1.3937116, 4.1820855, -0.009363989), (-0.12012148, 0.116398565, -0.009363989), (3.0715902, -3.3359728, -0.009363988), (0.20186128, -2.8999722, -0.009363989), (2.4276628, 3.2362323, -0.009363988), (-2.836889, 0.59232175, -0.009363988), (-2.1066372, -3.644615, -0.009363988), (1.3069409, 4.7210383, -0.009363988), (-2.1458519, 0.49736223, -0.009363989), (-2.907369, -3.6973875, -0.009363989), (-3.7388258, -3.2174716, -0.009363989), (-3.0451977, 1.3632972, -0.009363988), (0.08879909, 2.8419917, -0.009363989), (2.857374, 3.375093, -0.00936399), (-0.93909204, -4.634145, -0.009363988), (-1.4806738, 1.2547113, -0.009363988), (2.3027687, -3.7901351, -0.009363988), (2.3590229, 2.773762, -0.009363989), (-5, 4.796005, -0.009363989), (-0.6838821, -3.7407565, -0.009363989), (-3.4131536, 3.9990466, -0.009363988), (-4.0902896, -3.4784431, -0.009363989), (2.189017, -4.292632, -0.009363988), (3.725775, 3.5665636, -0.009363988), (3.2196527, -4.553553, -0.0093639875), (-4.477837, 3.2683213, -0.009363988), (-2.9154353, -5, -0.009363988), (-1.1201291, -3.980856, -0.009363989), (-1.8532491, 4.49132, -0.00936399), (-0.019274898, 4.402428, -0.009363989), (3.4255326, 3.0426486, -0.009363989), (-1.6580068, -2.0154974, -0.009363989), (2.8737144, 2.8982449, -0.009363988), (4.8865533, -5, -0.0093639875), (2.2563875, 4.2285457, -0.009363989), (-3.1511402, 5, -0.009363989), (4.502919, 3.5967453, -0.0093639875), (-1.3529135, -5, -0.009363989), (4.1059256, -5, -0.009363989), (-3.4545324, -4.630971, -0.009363989), (3.3715467, 3.8758721, -0.009363989), (-4.186334, 4.998253, -0.009363989), (-0.008456694, -4.292852, -0.009363988), (-2.6662195, 4.8866997, -0.009363988), (1.7443, 4.867959, -0.009363988), (-2.5629616, -5, -0.009363988), (-4.4644732, 4.409126, -0.009363988), (-2.2383602, 4.099241, -0.009363988), (4.0010877, -4.073402, -0.009363988), (-3.0842934, 2.9832387, -0.009363989), (4.998435, -4.5332837, -0.009363989), (3.7061675, 4.5341334, -0.009363989), (4.4032564, 2.6492193, -0.009363989), (-1.4511706, -4.6499553, -0.0093639875), (3.5392828, -4.176752, -0.009363989), (3.1908858, -3.8959794, -0.009363989), (-5, 4.277841, -0.009363988), (0.5306742, 5, -0.009363989), (-3.6721714, 4.9100623, -0.009363989), (-1.6903167, -4.38274, -0.0093639875), (0.41369775, -4.8664417, -0.009363989), (-3.0709054, 3.7221785, -0.009363988), (-2.0758035, -4.5756283, -0.009363989), (0.6532308, -4.438715, -0.009363988), (-3.5470111, 1.8948942, -0.009363989), (-3.4202065, -4.2795305, -0.009363988), (0.9752473, 5, -0.009363988), (-2.5791836, -3.9594297, -0.009363988), (0.7880247, 4.5685573, -0.009363988), (-2.2214625, 4.7484856, -0.009363988), (4.3660884, 4.619149, -0.009363989), (2.1912475, 5, -0.009363988), (-2.9972596, -4.5849476, -0.009363989), (1.0886613, 3.811087, -0.0093639875), (-1.1933123, 4.861399, -0.009363989), (-0.42837754, 4.1591473, -0.009363988), (1.6652398, 3.9359057, -0.00936399), (-2.2820668, -4.1633086, -0.009363989), (-3.6394649, -5, -0.009363989), (2.1491492, 0.86050814, -0.009363989), (2.670796, 5, -0.009363989), (1.2821605, 4.228902, -0.009363988), (-1.9561995, -4.034129, -0.009363988), (-2.9599385, -4.174161, -0.009363989), (-2.1948626, -5, -0.009363988), (-5, -3.6549814, -0.009363988), (3.2639298, 4.3699784, -0.00936399), (3.8020253, 0.85929537, -0.009363988), (-3.9140928, -4.5564733, -0.009363989), (-3.7698152, -4.157495, -0.009363989), (-4.0540133, -5, -0.009363989), (-4.3159823, -4.679113, -0.009363988), (4.409635, 4.2339067, -0.009363988), (-5, -4.8670497, -0.00936399), (-3.7468703, -3.736479, -0.009363989), (3.1333697, 4.880706, -0.009363989), (3.7837605, 4.080415, -0.009363988), (5, 4.808447, -0.009363988), (-4.729345, -4.5553637, -0.009363988), (5, 4.348623, -0.009363988), (4.1942563, 3.884944, -0.009363988), (-4.404907, -4.289323, -0.009363988), (4.0351343, 4.998, -0.009363989), (-4.7484217, -3.9822292, -0.0093639875), (4.558625, 5, -0.009363988), (-4.1044354, -4.052985, -0.009363989), (-5, -4.2716846, -0.009363988), (-4.5294714, -5, -0.009363988), (5, 3.913188, -0.009363988)],
-            3: [(4.1675253, -3.5916092, -0.03575341), (-0.77677006, -2.7297707, -0.03575341), (3.0630136, 1.158053, -0.03575341), (-4.2709227, 1.0144538, -0.035753414), (-3.044508, 4.2851124, -0.03575341), (0.29896238, 0.3106549, -0.035753414), (0.15971519, 3.7982178, -0.03575341), (0.3848841, -1.6533717, -0.035753414), (0.58787704, -3.3571897, -0.03575341), (4.113137, 0.4235462, -0.03575341), (2.3364277, 4.629844, -0.035753414), (-4.4072022, -3.7855508, -0.03575341), (2.6305351, -3.0152974, -0.035753414), (-0.32800487, 5, -0.035753414), (-4.423228, 2.7572892, -0.035753414), (0.72067314, 0.48032182, -0.03575341), (2.7783132, 4.408583, -0.03575341), (0.5235561, 1.9940797, -0.035753414), (-3.6079555, -1.103081, -0.035753414), (-4.6905637, 4.050367, -0.035753414), (4.6523604, -3.5442917, -0.035753414), (0.846675, 4.1522455, -0.03575341), (-3.3387394, -3.095033, -0.03575341), (1.3029603, 2.0271907, -0.03575341), (0.7090133, -0.11374539, -0.035753414), (2.9434667, 3.9371858, -0.035753414), (-1.957395, -1.295166, -0.03575341), (-2.5378819, 0.25532737, -0.035753414), (2.7822194, -2.20158, -0.035753414), (-2.1778595, 2.223699, -0.03575341), (-2.9153743, -0.90093225, -0.035753414), (0.16372001, 1.847963, -0.035753414), (0.51893455, 2.9131505, -0.035753414), (3.937106, 2.9227145, -0.03575341), (-1.150243, -4.334717, -0.03575341), (4.9943843, 3.4778712, -0.03575341), (-0.79614973, -1.6060177, -0.03575341), (0.81279016, -0.67148095, -0.035753414), (-0.60879153, 0.98583937, -0.03575341), (0.14318645, -2.1115084, -0.035753414), (2.209392, 2.1642263, -0.035753414), (-1.9529516, -0.47410214, -0.03575341), (3.9580522, -0.7834903, -0.03575341), (-0.9853899, 1.7057277, -0.03575341), (-2.5326447, -0.88900006, -0.035753414), (-1.6385394, -3.1866343, -0.03575341), (2.7824752, -3.7559679, -0.035753414), (-1.1081235, 0.16402376, -0.035753414), (-4.915382, -1.1118164, -0.035753407), (2.4458625, -1.4070538, -0.03575341), (-3.2303452, -0.7035627, -0.035753414), (-3.0455608, -2.8056617, -0.035753414), (-1.2546664, -3.0451941, -0.035753414), (-1.132415, -1.3642524, -0.035753414), (-1.578752, -3.9951396, -0.035753414), (4.3221517, 2.0829816, -0.035753414), (-4.2577195, -1.5047516, -0.03575341), (2.8562903, 0.0697684, -0.035753418), (0.65989065, 1.0402397, -0.035753414), (-2.5549412, -4.511527, -0.035753414), (-4.104018, -2.9322283, -0.035753414), (-5, 0.4470213, -0.035753414), (-3.0484476, 0.94580436, -0.035753414), (3.2602262, 3.4405003, -0.035753414), (1.910574, -2.0677114, -0.035753414), (-3.5228193, -0.23725545, -0.035753407), (3.7944171, -2.7523572, -0.035753414), (1.2122772, 3.1690722, -0.03575341), (2.646268, 2.4091716, -0.03575341), (4.8208714, -1.5148462, -0.035753414), (-1.2628251, -0.97338057, -0.035753414), (-1.4086337, -3.626728, -0.035753414), (-2.5653627, 2.9119213, -0.035753407), (-0.5645547, -0.79126203, -0.035753414), (-0.49555647, -1.7958064, -0.035753414), (-0.69743896, -2.3221412, -0.035753407), (4.4066095, 3.1025362, -0.035753414), (0.25015795, 0.8468384, -0.03575341), (-0.2631955, -1.0234504, -0.03575341), (3.1680245, 2.5463982, -0.03575341), (-4.6506653, 5, -0.03575341), (-4.6026554, 1.3711742, -0.03575341), (3.1056917, -5, -0.03575341), (-1.6525402, -2.4309952, -0.035753414), (-2.1106822, -2.6816633, -0.035753414), (-0.24840721, 3.6696415, -0.035753414), (-0.6457389, -0.46140188, -0.03575341), (-1.6083769, 2.8740814, -0.035753414), (2.6379557, 1.0427659, -0.035753414), (0.79618275, -1.4430921, -0.035753414), (-3.7965436, 3.8374155, -0.03575341), (1.9752188, 2.5091677, -0.035753414), (-2.694076, 2.1187503, -0.03575341), (-1.0504433, -0.63218683, -0.03575341), (4.848428, 0.8334273, -0.03575341), (-2.1824472, 3.082237, -0.03575341), (-4.092787, -0.65156513, -0.035753414), (0.89873743, 2.895908, -0.035753414), (4.523795, 1.2473478, -0.035753414), (-1.6789103, 1.9038124, -0.03575341), (-3.1786568, -0.11009467, -0.035753414), (-0.61424, 0.21318685, -0.03575341), (-0.7986419, -1.1155312, -0.035753414), (-1.2320653, 0.8163628, -0.035753414), (1.1412246, 2.525091, -0.03575341), (1.9273977, -0.9651795, -0.03575341), (-4.5596657, 3.6792166, -0.03575341), (-2.262162, 1.1849214, -0.03575341), (0.113197275, 3.2924771, -0.03575341), (1.6290038, 3.2055206, -0.03575341), (-2.446578, 0.72817385, -0.03575341), (-1.7607195, -3.5305445, -0.03575341), (-4.7049146, -0.2480207, -0.035753414), (-2.9548793, -3.2870576, -0.035753414), (-1.3188102, -2.1844149, -0.035753414), (-3.3425186, 4.5717764, -0.03575341), (1.6867588, 0.8332646, -0.035753414), (-2.6924903, 2.5347557, -0.03575341), (3.946361, -1.8196282, -0.035753414), (0.58144593, 3.8181074, -0.035753414), (-4.669978, 0.2947643, -0.03575341), (-3.3986003, -2.2893734, -0.03575341), (-4.499845, 0.60703975, -0.035753414), (2.4174178, 0.081225015, -0.035753414), (1.0346074, -3.40563, -0.035753414), (-0.54158366, 0.6029342, -0.035753414), (2.0036492, -1.6210043, -0.03575341), (2.960071, -2.7815025, -0.035753414), (-5, 3.7392359, -0.03575341), (-5, -0.550608, -0.03575341), (-2.6098526, -1.6135595, -0.03575341), (1.4168508, -4.343722, -0.03575341), (4.6505213, -0.38244194, -0.03575341), (-3.9158187, 2.6518154, -0.03575341), (-0.24592777, 2.5489948, -0.035753414), (4.4786706, -4.7318015, -0.035753414), (3.4778402, 1.2479651, -0.035753414), (4.479569, 0.18023989, -0.035753414), (-3.6428192, 0.64515233, -0.035753414), (-0.44626167, -0.13334084, -0.03575341), (1.948288, 0.43188542, -0.03575341), (-4.128481, 0.5693549, -0.035753414), (-2.470858, -3.5143464, -0.03575341), (-0.93176347, 2.50029, -0.035753414), (2.2185812, -2.8784413, -0.03575341), (-3.729115, -0.74608845, -0.03575341), (1.7652824, -0.4350059, -0.035753414), (2.2246711, 1.2588613, -0.035753414), (2.7583477, -1.7478126, -0.03575341), (-4.1926446, 3.8442082, -0.035753414), (-2.9509015, -2.4168572, -0.03575341), (3.6367447, 2.6199365, -0.03575341), (1.7322685, 1.305025, -0.035753418), (-3.7940397, -1.4844648, -0.03575341), (-1.6755497, -2.8002093, -0.035753414), (0.022063928, -0.79013604, -0.03575341), (-0.96260196, 0.54569656, -0.03575341), (3.3072467, -0.9135537, -0.03575341), (1.5632646, -3.269097, -0.03575341), (-5, 0.86214167, -0.03575341), (-3.2492566, 0.5828752, -0.03575341), (-1.5079819, -0.5821401, -0.035753414), (4.9387374, 0.36350498, -0.035753414), (-3.4121163, 3.4306142, -0.03575341), (0.13176313, -3.4746013, -0.035753414), (0.709214, -1.9858419, -0.035753414), (-1.5630611, -1.2484871, -0.035753414), (0.03241087, 2.2468557, -0.03575341), (3.4473739, -3.0606859, -0.03575341), (1.73114, -2.832135, -0.03575341), (2.5740058, 1.9272333, -0.03575341), (-3.690615, 2.2989857, -0.035753414), (-1.8381828, 3.895664, -0.035753414), (-2.5744328, -2.7397082, -0.035753414), (-1.8679609, 1.4551494, -0.03575341), (0.9246881, -2.4324229, -0.035753414), (-5, 1.7239665, -0.035753414), (-3.294413, 2.5873394, -0.035753414), (-0.56373024, 4.6852193, -0.035753414), (-3.4193523, 1.0151957, -0.03575341), (3.774835, 0.018045083, -0.03575341), (4.6500854, 1.7349203, -0.035753414), (2.6184115, -0.86865574, -0.035753414), (-0.5853549, 1.4739648, -0.035753418), (-0.9600792, 4.3892255, -0.03575341), (-0.16215548, -0.4251888, -0.035753418), (-3.6859374, 0.042075574, -0.035753414), (3.252489, 0.24011396, -0.03575341), (1.452841, -1.86128, -0.03575341), (2.524199, -4.6760807, -0.035753414), (-3.676933, -1.9359343, -0.03575341), (-2.2507145, 3.5440943, -0.035753414), (-1.666472, 0.7291404, -0.03575341), (-0.4095211, -1.3724262, -0.035753414), (1.8316506, 0.010112802, -0.035753418), (-3.5731125, 2.9705112, -0.035753414), (-3.4830365, -0.5244374, -0.03575341), (3.9857066, 2.358829, -0.035753414), (0.38376904, -0.58546525, -0.035753414), (3.551004, -2.137024, -0.03575341), (-4.9948573, 3.195249, -0.035753414), (-1.4798408, 0.3346703, -0.035753414), (4.1184993, -2.3783383, -0.03575341), (4.2108655, -2.9263844, -0.03575341), (-0.43327045, -3.4036884, -0.035753414), (0.68586004, -2.8782992, -0.035753414), (3.6272566, -5, -0.035753414), (3.5726898, -0.512856, -0.035753414), (-1.1838006, -2.5875456, -0.03575341), (1.5038911, 3.5771492, -0.035753414), (-3.3943617, -1.6605926, -0.03575341), (3.4036522, -2.6008737, -0.03575341), (-1.8888153, 0.24652381, -0.03575341), (-4.4230504, -2.281942, -0.035753414), (-4.5539827, -0.6731496, -0.035753414), (2.3644674, -1.9923637, -0.03575341), (-1.3392448, -0.1931145, -0.035753407), (-0.3232206, -2.122856, -0.035753414), (-1.7627387, -0.8964305, -0.03575341), (1.243882, 0.9710438, -0.03575341), (-3.161398, 1.7566656, -0.035753414), (-0.8450355, -3.184997, -0.035753414), (-0.16566065, 1.1299105, -0.035753414), (-4.4374137, 0.07002304, -0.035753414), (-2.7186272, 1.7507627, -0.035753414), (5.0000067, 1.3647715, -0.03575341), (4.267657, 0.8778892, -0.03575341), (-2.0234709, 2.6134577, -0.03575341), (-3.8983598, 3.4113889, -0.03575341), (2.7829998, 1.5261011, -0.03575341), (0.08417763, -1.2939843, -0.03575341), (-0.5842293, 2.7548964, -0.035753414), (-4.286697, -0.29913527, -0.035753414), (3.4782958, 2.1705437, -0.035753414), (0.57245094, 3.3586466, -0.035753407), (-0.1315123, 0.5949023, -0.03575341), (-0.19487128, -2.5357616, -0.035753414), (-1.9710425, 0.951295, -0.03575341), (0.24660568, -0.17372707, -0.035753414), (2.4799428, 0.56115615, -0.03575341), (-3.8800573, -2.4119542, -0.035753414), (-3.9655242, 1.3442367, -0.03575341), (-3.5511224, 1.4308455, -0.035753414), (1.2700526, -0.5780408, -0.035753414), (4.8415575, -3.1155064, -0.035753414), (-2.3618352, -0.44638133, -0.035753414), (-0.91238266, -0.18301672, -0.03575341), (4.369418, -1.3483201, -0.03575341), (2.5018234, -2.5069203, -0.03575341), (-0.42027217, 2.0421312, -0.03575341), (-3.2605479, -1.3212926, -0.035753407), (-0.9454622, -2.065709, -0.03575341), (1.536966, 2.4544578, -0.035753414), (4.883824, -2.22674, -0.035753414), (-1.797197, -5, -0.03575341), (1.3000917, 1.5308121, -0.03575341), (-3.899403, -0.26876053, -0.035753414), (-2.2178667, -0.046674963, -0.035753414), (-0.06693145, -1.7092235, -0.035753414), (4.5091753, -1.9070908, -0.03575341), (-1.0812895, 3.8179314, -0.035753414), (-2.7000394, -0.14477403, -0.035753414), (-2.6446025, 4.3151407, -0.03575341), (-3.8441133, 0.95818967, -0.035753414), (3.6161313, 0.4366354, -0.03575341), (1.1716098, -0.0819778, -0.03575341), (3.5216355, -1.5005776, -0.035753414), (-2.9714615, 0.20871249, -0.035753407), (2.2522943, 1.6478126, -0.03575341), (3.2672336, -0.23526803, -0.03575341), (0.11126099, 5, -0.03575341), (-1.0092968, 1.2116798, -0.035753414), (-4.8990855, -2.2275937, -0.035753414), (-5, 1.2735173, -0.03575341), (0.2429441, 1.4088402, -0.03575341), (-2.3153536, -1.9599248, -0.035753414), (-4.6716723, 0.9344406, -0.035753407), (3.1247122, -2.3272727, -0.03575341), (2.9146314, 0.5950423, -0.035753414), (-3.3910863, 0.23851617, -0.03575341), (-3.145431, 2.2107356, -0.035753414), (4.213621, 1.5930359, -0.03575341), (-1.7341952, -0.12857157, -0.035753414), (2.8071394, -0.41043028, -0.035753414), (-5, -0.015089936, -0.035753414), (-4.131485, -1.9315223, -0.035753414), (1.6213425, -1.310705, -0.035753414), (0.38640657, -2.462969, -0.035753414), (-4.5681295, 1.9387041, -0.03575341), (-2.536633, 1.442573, -0.035753414), (0.47415087, -1.0716817, -0.03575341), (-2.1571805, -0.8617872, -0.03575341), (-3.9786317, 1.8632076, -0.03575341), (-4.028914, -1.0830251, -0.035753414), (-2.814706, -1.2532787, -0.035753414), (-4.8969507, 2.3129294, -0.03575341), (-4.5265665, -3.3463922, -0.03575341), (-0.86200196, 2.1338737, -0.035753414), (-0.3297721, 3.1546624, -0.03575341), (1.1069463, -1.098658, -0.03575341), (-4.462968, -1.1023563, -0.03575341), (-2.6427307, 3.7944725, -0.035753414), (3.9101896, -4.545224, -0.03575341), (-3.3137555, -3.9082515, -0.035753414), (1.9118557, 2.9152627, -0.035753418), (-4.0575066, 4.535833, -0.03575341), (-0.20143773, 1.6376506, -0.03575341), (0.9244135, 1.8426661, -0.035753414), (-2.2280378, -1.5943184, -0.035753414), (-1.9005361, -1.7423644, -0.035753414), (-4.905829, -1.7469083, -0.03575341), (1.3314134, 0.40869403, -0.035753407), (0.9880774, 3.4476967, -0.03575341), (4.700355, 2.2989626, -0.035753414), (3.3222842, 0.77934504, -0.03575341), (4.8704863, 3.0527518, -0.035753414), (-1.798823, 3.3188813, -0.03575341), (1.3456954, -3.8684566, -0.035753414), (-2.7142322, -2.0297315, -0.03575341), (4.085998, -0.31188405, -0.03575341), (-4.0984755, 0.12988648, -0.03575341), (-2.3803995, -1.2397659, -0.035753414), (-2.6873393, 1.0582669, -0.035753414), (-2.457962, -2.367663, -0.035753414), (-2.7202566, -0.56821924, -0.03575341), (3.187807, -1.8262169, -0.03575341), (-4.227845, 2.2929158, -0.03575341), (1.8029767, 1.7459276, -0.03575341), (2.5509155, 3.7742693, -0.035753414), (-2.118374, -3.1332965, -0.03575341), (1.2195741, -2.811712, -0.03575341), (5, 1.9641619, -0.035753414), (3.2981553, 1.6917144, -0.03575341), (-5, 2.74453, -0.03575341), (2.9969578, 2.0579696, -0.035753414), (5, -2.676641, -0.03575341), (-0.8487135, -5, -0.035753414), (2.8189175, -4.220725, -0.035753414), (-2.0301058, -2.2340462, -0.035753414), (0.82970876, 2.335265, -0.03575341), (3.5506625, -3.5851626, -0.035753414), (-1.1782604, -1.7708973, -0.035753414), (0.75930357, 1.4551351, -0.03575341), (5, -0.5849647, -0.035753414), (-2.7767892, 3.3279035, -0.035753414), (2.553529, -3.398255, -0.035753407), (4.570615, -4.238119, -0.03575341), (2.9608986, -1.3160512, -0.035753414), (-0.17514324, -3.8522344, -0.035753414), (-0.101953454, -3.1570415, -0.03575341), (1.5234842, -2.339492, -0.03575341), (1.4296964, 2.8341029, -0.035753414), (1.7561272, 4.380782, -0.03575341), (-1.0723313, -3.5287337, -0.03575341), (2.0345762, -2.4679933, -0.03575341), (0.44816208, -3.8131561, -0.035753414), (5, -1.0629107, -0.035753414), (1.7431802, 2.118988, -0.03575341), (0.41237405, 2.4843163, -0.03575341), (-1.4916087, 3.649345, -0.03575341), (-3.2675304, -5, -0.035753414), (-3.1154294, -1.9979396, -0.035753407), (-3.2618809, -0.9995285, -0.03575341), (-4.064263, 3.0541208, -0.03575341), (-0.76241994, 3.3172708, -0.035753414), (2.264951, -0.53433055, -0.035753414), (-4.2876244, 1.5827179, -0.035753414), (-1.5162756, -1.6229932, -0.035753414), (3.819378, 1.8628191, -0.03575341), (-0.47550598, -4.685087, -0.035753414), (0.38981855, 4.325682, -0.035753414), (4.033512, 3.3525832, -0.035753414), (-2.9884648, -1.6262447, -0.03575341), (5, 2.545349, -0.03575341), (-0.6844387, 3.7916281, -0.035753414), (-1.2584084, 3.2883441, -0.035753414), (-0.6207092, -4.190244, -0.03575341), (-3.8071156, 0.3579687, -0.03575341), (-3.0379834, -0.42113027, -0.035753414), (-3.55517, -2.725853, -0.035753414), (-0.41772524, -2.9186316, -0.03575341), (2.0157034, 3.3970492, -0.035753414), (-3.362275, -3.5135303, -0.03575341), (3.8745968, 1.3536968, -0.035753414), (2.0778723, -3.3140366, -0.035753414), (-3.7713258, 4.2832685, -0.03575341), (-2.207372, 1.7748765, -0.03575341), (-1.059728, 2.9054053, -0.03575341), (2.1082826, 3.814939, -0.035753414), (-1.3871241, 2.4274974, -0.03575341), (-2.5897105, -3.113439, -0.035753414), (-1.3937116, 4.1820855, -0.035753414), (-0.12012148, 0.116398565, -0.035753414), (3.0715902, -3.3359728, -0.03575341), (0.20186128, -2.8999722, -0.035753414), (2.4276628, 3.2362323, -0.03575341), (-2.836889, 0.59232175, -0.03575341), (-2.1066372, -3.644615, -0.03575341), (1.3069409, 4.7210383, -0.03575341), (-2.1458519, 0.49736223, -0.035753414), (-2.907369, -3.6973875, -0.035753414), (-3.7388258, -3.2174716, -0.035753414), (-3.0451977, 1.3632972, -0.03575341), (0.08879909, 2.8419917, -0.03575341), (2.857374, 3.375093, -0.035753414), (-0.93909204, -4.634145, -0.03575341), (-1.4806738, 1.2547113, -0.03575341), (2.3027687, -3.7901351, -0.03575341), (2.3590229, 2.773762, -0.035753414), (-5, 4.796005, -0.03575341), (-0.6838821, -3.7407565, -0.035753414), (-3.4131536, 3.9990466, -0.03575341), (-4.0902896, -3.4784431, -0.03575341), (2.189017, -4.292632, -0.03575341), (3.725775, 3.5665636, -0.03575341), (3.2196527, -4.553553, -0.03575341), (-4.477837, 3.2683213, -0.03575341), (-2.9154353, -5, -0.03575341), (-1.1201291, -3.980856, -0.03575341), (-1.8532491, 4.49132, -0.035753414), (-0.019274898, 4.402428, -0.035753414), (3.4255326, 3.0426486, -0.035753414), (-1.6580068, -2.0154974, -0.03575341), (2.8737144, 2.8982449, -0.03575341), (4.8865533, -5, -0.03575341), (2.2563875, 4.2285457, -0.03575341), (-3.1511402, 5, -0.035753414), (4.502919, 3.5967453, -0.03575341), (-1.3529135, -5, -0.035753414), (4.1059256, -5, -0.03575341), (-3.4545324, -4.630971, -0.035753414), (3.3715467, 3.8758721, -0.035753414), (-4.186334, 4.998253, -0.035753414), (-0.008456694, -4.292852, -0.03575341), (-2.6662195, 4.8866997, -0.03575341), (1.7443, 4.867959, -0.035753414), (-2.5629616, -5, -0.03575341), (-4.4644732, 4.409126, -0.03575341), (-2.2383602, 4.099241, -0.035753418), (4.0010877, -4.073402, -0.03575341), (-3.0842934, 2.9832387, -0.03575341), (4.998435, -4.5332837, -0.035753414), (3.7061675, 4.5341334, -0.035753414), (4.4032564, 2.6492193, -0.035753414), (-1.4511706, -4.6499553, -0.03575341), (3.5392828, -4.176752, -0.035753414), (3.1908858, -3.8959794, -0.03575341), (-5, 4.277841, -0.03575341), (0.5306742, 5, -0.035753414), (-3.6721714, 4.9100623, -0.035753414), (-1.6903167, -4.38274, -0.035753407), (0.41369775, -4.8664417, -0.035753414), (-3.0709054, 3.7221785, -0.035753414), (-2.0758035, -4.5756283, -0.035753414), (0.6532308, -4.438715, -0.03575341), (-3.5470111, 1.8948942, -0.03575341), (-3.4202065, -4.2795305, -0.03575341), (0.9752473, 5, -0.03575341), (-2.5791836, -3.9594297, -0.03575341), (0.7880247, 4.5685573, -0.03575341), (-2.2214625, 4.7484856, -0.03575341), (4.3660884, 4.619149, -0.035753414), (2.1912475, 5, -0.035753414), (-2.9972596, -4.5849476, -0.035753414), (1.0886613, 3.811087, -0.03575341), (-1.1933123, 4.861399, -0.035753414), (-0.42837754, 4.1591473, -0.03575341), (1.6652398, 3.9359057, -0.035753414), (-2.2820668, -4.1633086, -0.03575341), (-3.6394649, -5, -0.035753414), (2.1491492, 0.86050814, -0.035753414), (2.670796, 5, -0.03575341), (1.2821605, 4.228902, -0.03575341), (-1.9561995, -4.034129, -0.03575341), (-2.9599385, -4.174161, -0.03575341), (-2.1948626, -5, -0.03575341), (-5, -3.6549814, -0.03575341), (3.2639298, 4.3699784, -0.035753414), (3.8020253, 0.85929537, -0.03575341), (-3.9140928, -4.5564733, -0.03575341), (-3.7698152, -4.157495, -0.035753418), (-4.0540133, -5, -0.035753414), (-4.3159823, -4.679113, -0.03575341), (4.409635, 4.2339067, -0.03575341), (-5, -4.8670497, -0.035753418), (-3.7468703, -3.736479, -0.03575341), (3.1333697, 4.880706, -0.03575341), (3.7837605, 4.080415, -0.035753407), (5, 4.808447, -0.03575341), (-4.729345, -4.5553637, -0.035753414), (5, 4.348623, -0.03575341), (4.1942563, 3.884944, -0.035753407), (-4.404907, -4.289323, -0.03575341), (4.0351343, 4.998, -0.035753414), (-4.7484217, -3.9822292, -0.03575341), (4.558625, 5, -0.03575341), (-4.1044354, -4.052985, -0.035753414), (-5, -4.2716846, -0.03575341), (-4.5294714, -5, -0.03575341), (5, 3.913188, -0.03575341)],
-            4: [(4.1675253, -3.5916092, -0.07916827), (-0.77677006, -2.7297707, -0.07916827), (3.0630136, 1.158053, -0.07916827), (-4.2709227, 1.0144538, -0.079168275), (-3.044508, 4.2851124, -0.07916827), (0.29896238, 0.3106549, -0.079168275), (0.15971519, 3.7982178, -0.07916827), (0.3848841, -1.6533717, -0.079168275), (0.58787704, -3.3571897, -0.07916827), (4.113137, 0.4235462, -0.07916827), (2.3364277, 4.629844, -0.079168275), (-4.4072022, -3.7855508, -0.07916827), (2.6305351, -3.0152974, -0.079168275), (-0.32800487, 5, -0.079168275), (-4.423228, 2.7572892, -0.079168275), (0.72067314, 0.48032182, -0.07916827), (2.7783132, 4.408583, -0.07916827), (0.5235561, 1.9940797, -0.079168275), (-3.6079555, -1.103081, -0.079168275), (-4.6905637, 4.050367, -0.079168275), (4.6523604, -3.5442917, -0.07916828), (0.846675, 4.1522455, -0.07916827), (-3.3387394, -3.095033, -0.07916827), (1.3029603, 2.0271907, -0.07916827), (0.7090133, -0.11374539, -0.079168275), (2.9434667, 3.9371858, -0.079168275), (-1.957395, -1.295166, -0.07916827), (-2.5378819, 0.25532737, -0.079168275), (2.7822194, -2.20158, -0.079168275), (-2.1778595, 2.223699, -0.07916827), (-2.9153743, -0.90093225, -0.079168275), (0.16372001, 1.847963, -0.079168275), (0.51893455, 2.9131505, -0.079168275), (3.937106, 2.9227145, -0.07916827), (-1.150243, -4.334717, -0.07916827), (4.9943843, 3.4778712, -0.07916827), (-0.79614973, -1.6060177, -0.07916827), (0.81279016, -0.67148095, -0.079168275), (-0.60879153, 0.98583937, -0.07916827), (0.14318645, -2.1115084, -0.079168275), (2.209392, 2.1642263, -0.079168275), (-1.9529516, -0.47410214, -0.07916827), (3.9580522, -0.7834903, -0.07916827), (-0.9853899, 1.7057277, -0.079168275), (-2.5326447, -0.88900006, -0.079168275), (-1.6385394, -3.1866343, -0.07916827), (2.7824752, -3.7559679, -0.079168275), (-1.1081235, 0.16402376, -0.079168275), (-4.915382, -1.1118164, -0.07916827), (2.4458625, -1.4070538, -0.07916827), (-3.2303452, -0.7035627, -0.079168275), (-3.0455608, -2.8056617, -0.079168275), (-1.2546664, -3.0451941, -0.079168275), (-1.132415, -1.3642524, -0.079168275), (-1.578752, -3.9951396, -0.07916827), (4.3221517, 2.0829816, -0.079168275), (-4.2577195, -1.5047516, -0.079168275), (2.8562903, 0.0697684, -0.079168275), (0.65989065, 1.0402397, -0.079168275), (-2.5549412, -4.511527, -0.079168275), (-4.104018, -2.9322283, -0.079168275), (-5, 0.4470213, -0.079168275), (-3.0484476, 0.94580436, -0.079168275), (3.2602262, 3.4405003, -0.079168275), (1.910574, -2.0677114, -0.079168275), (-3.5228193, -0.23725545, -0.07916827), (3.7944171, -2.7523572, -0.079168275), (1.2122772, 3.1690722, -0.07916827), (2.646268, 2.4091716, -0.07916826), (4.8208714, -1.5148462, -0.079168275), (-1.2628251, -0.97338057, -0.079168275), (-1.4086337, -3.626728, -0.079168275), (-2.5653627, 2.9119213, -0.07916826), (-0.5645547, -0.79126203, -0.07916827), (-0.49555647, -1.7958064, -0.079168275), (-0.69743896, -2.3221412, -0.07916827), (4.4066095, 3.1025362, -0.079168275), (0.25015795, 0.8468384, -0.07916827), (-0.2631955, -1.0234504, -0.07916827), (3.1680245, 2.5463982, -0.07916827), (-4.6506653, 5, -0.07916827), (-4.6026554, 1.3711742, -0.07916827), (3.1056917, -5, -0.07916827), (-1.6525402, -2.4309952, -0.079168275), (-2.1106822, -2.6816633, -0.079168275), (-0.24840721, 3.6696415, -0.079168275), (-0.6457389, -0.46140188, -0.07916827), (-1.6083769, 2.8740814, -0.079168275), (2.6379557, 1.0427659, -0.079168275), (0.79618275, -1.4430921, -0.079168275), (-3.7965436, 3.8374155, -0.07916827), (1.9752188, 2.5091677, -0.079168275), (-2.694076, 2.1187503, -0.07916827), (-1.0504433, -0.63218683, -0.07916827), (4.848428, 0.8334273, -0.07916827), (-2.1824472, 3.082237, -0.07916827), (-4.092787, -0.65156513, -0.079168275), (0.89873743, 2.895908, -0.079168275), (4.523795, 1.2473478, -0.079168275), (-1.6789103, 1.9038124, -0.07916827), (-3.1786568, -0.11009467, -0.079168275), (-0.61424, 0.21318685, -0.07916827), (-0.7986419, -1.1155312, -0.079168275), (-1.2320653, 0.8163628, -0.079168275), (1.1412246, 2.525091, -0.07916827), (1.9273977, -0.9651795, -0.07916827), (-4.5596657, 3.6792166, -0.07916826), (-2.262162, 1.1849214, -0.07916827), (0.113197275, 3.2924771, -0.079168275), (1.6290038, 3.2055206, -0.07916827), (-2.446578, 0.72817385, -0.07916827), (-1.7607195, -3.5305445, -0.07916827), (-4.7049146, -0.2480207, -0.079168275), (-2.9548793, -3.2870576, -0.079168275), (-1.3188102, -2.1844149, -0.079168275), (-3.3425186, 4.5717764, -0.07916827), (1.6867588, 0.8332646, -0.079168275), (-2.6924903, 2.5347557, -0.07916827), (3.946361, -1.8196282, -0.07916828), (0.58144593, 3.8181074, -0.079168275), (-4.669978, 0.2947643, -0.07916827), (-3.3986003, -2.2893734, -0.07916827), (-4.499845, 0.60703975, -0.079168275), (2.4174178, 0.081225015, -0.07916828), (1.0346074, -3.40563, -0.079168275), (-0.54158366, 0.6029342, -0.079168275), (2.0036492, -1.6210043, -0.07916826), (2.960071, -2.7815025, -0.079168275), (-5, 3.7392359, -0.07916827), (-5, -0.550608, -0.07916827), (-2.6098526, -1.6135595, -0.07916827), (1.4168508, -4.343722, -0.07916827), (4.6505213, -0.38244194, -0.07916827), (-3.9158187, 2.6518154, -0.07916827), (-0.24592777, 2.5489948, -0.079168275), (4.4786706, -4.7318015, -0.079168275), (3.4778402, 1.2479651, -0.079168275), (4.479569, 0.18023989, -0.079168275), (-3.6428192, 0.64515233, -0.079168275), (-0.44626167, -0.13334084, -0.07916827), (1.948288, 0.43188542, -0.079168275), (-4.128481, 0.5693549, -0.079168275), (-2.470858, -3.5143464, -0.07916827), (-0.93176347, 2.50029, -0.079168275), (2.2185812, -2.8784413, -0.07916827), (-3.729115, -0.74608845, -0.07916827), (1.7652824, -0.4350059, -0.079168275), (2.2246711, 1.2588613, -0.079168275), (2.7583477, -1.7478126, -0.07916827), (-4.1926446, 3.8442082, -0.079168275), (-2.9509015, -2.4168572, -0.07916827), (3.6367447, 2.6199365, -0.079168275), (1.7322685, 1.305025, -0.079168275), (-3.7940397, -1.4844648, -0.07916827), (-1.6755497, -2.8002093, -0.07916828), (0.022063928, -0.79013604, -0.07916827), (-0.96260196, 0.54569656, -0.07916827), (3.3072467, -0.9135537, -0.07916827), (1.5632646, -3.269097, -0.079168275), (-5, 0.86214167, -0.07916827), (-3.2492566, 0.5828752, -0.07916827), (-1.5079819, -0.5821401, -0.079168275), (4.9387374, 0.36350498, -0.07916828), (-3.4121163, 3.4306142, -0.07916826), (0.13176313, -3.4746013, -0.079168275), (0.709214, -1.9858419, -0.079168275), (-1.5630611, -1.2484871, -0.079168275), (0.03241087, 2.2468557, -0.07916827), (3.4473739, -3.0606859, -0.07916827), (1.73114, -2.832135, -0.07916827), (2.5740058, 1.9272333, -0.07916827), (-3.690615, 2.2989857, -0.079168275), (-1.8381828, 3.895664, -0.079168275), (-2.5744328, -2.7397082, -0.07916828), (-1.8679609, 1.4551494, -0.07916827), (0.9246881, -2.4324229, -0.079168275), (-5, 1.7239665, -0.079168275), (-3.294413, 2.5873394, -0.079168275), (-0.56373024, 4.6852193, -0.079168275), (-3.4193523, 1.0151957, -0.07916827), (3.774835, 0.018045083, -0.079168275), (4.6500854, 1.7349203, -0.079168275), (2.6184115, -0.86865574, -0.079168275), (-0.5853549, 1.4739648, -0.079168275), (-0.9600792, 4.3892255, -0.07916827), (-0.16215548, -0.4251888, -0.07916828), (-3.6859374, 0.042075574, -0.079168275), (3.252489, 0.24011396, -0.07916827), (1.452841, -1.86128, -0.07916827), (2.524199, -4.6760807, -0.079168275), (-3.676933, -1.9359343, -0.07916827), (-2.2507145, 3.5440943, -0.07916828), (-1.666472, 0.7291404, -0.07916826), (-0.4095211, -1.3724262, -0.079168275), (1.8316506, 0.010112802, -0.079168275), (-3.5731125, 2.9705112, -0.07916827), (-3.4830365, -0.5244374, -0.07916827), (3.9857066, 2.358829, -0.079168275), (0.38376904, -0.58546525, -0.079168275), (3.551004, -2.137024, -0.07916827), (-4.9948573, 3.195249, -0.079168275), (-1.4798408, 0.3346703, -0.079168275), (4.1184993, -2.3783383, -0.07916827), (4.2108655, -2.9263844, -0.07916827), (-0.43327045, -3.4036884, -0.07916827), (0.68586004, -2.8782992, -0.079168275), (3.6272566, -5, -0.079168275), (3.5726898, -0.512856, -0.07916827), (-1.1838006, -2.5875456, -0.07916827), (1.5038911, 3.5771492, -0.079168275), (-3.3943617, -1.6605926, -0.07916827), (3.4036522, -2.6008737, -0.07916827), (-1.8888153, 0.24652381, -0.07916827), (-4.4230504, -2.281942, -0.07916828), (-4.5539827, -0.6731496, -0.07916827), (2.3644674, -1.9923637, -0.07916827), (-1.3392448, -0.1931145, -0.07916827), (-0.3232206, -2.122856, -0.079168275), (-1.7627387, -0.8964305, -0.07916827), (1.243882, 0.9710438, -0.07916827), (-3.161398, 1.7566656, -0.079168275), (-0.8450355, -3.184997, -0.079168275), (-0.16566065, 1.1299105, -0.079168275), (-4.4374137, 0.07002304, -0.079168275), (-2.7186272, 1.7507627, -0.079168275), (5.0000067, 1.3647715, -0.079168275), (4.267657, 0.8778892, -0.07916827), (-2.0234709, 2.6134577, -0.07916827), (-3.8983598, 3.4113889, -0.07916827), (2.7829998, 1.5261011, -0.07916827), (0.08417763, -1.2939843, -0.07916827), (-0.5842293, 2.7548964, -0.079168275), (-4.286697, -0.29913527, -0.079168275), (3.4782958, 2.1705437, -0.079168275), (0.57245094, 3.3586466, -0.07916827), (-0.1315123, 0.5949023, -0.07916827), (-0.19487128, -2.5357616, -0.079168275), (-1.9710425, 0.951295, -0.07916827), (0.24660568, -0.17372707, -0.07916827), (2.4799428, 0.56115615, -0.07916827), (-3.8800573, -2.4119542, -0.079168275), (-3.9655242, 1.3442367, -0.07916827), (-3.5511224, 1.4308455, -0.079168275), (1.2700526, -0.5780408, -0.079168275), (4.8415575, -3.1155064, -0.07916827), (-2.3618352, -0.44638133, -0.079168275), (-0.91238266, -0.18301672, -0.07916827), (4.369418, -1.3483201, -0.07916827), (2.5018234, -2.5069203, -0.07916827), (-0.42027217, 2.0421312, -0.07916827), (-3.2605479, -1.3212926, -0.07916827), (-0.9454622, -2.065709, -0.07916827), (1.536966, 2.4544578, -0.079168275), (4.883824, -2.22674, -0.07916828), (-1.797197, -5, -0.07916827), (1.3000917, 1.5308121, -0.07916827), (-3.899403, -0.26876053, -0.079168275), (-2.2178667, -0.046674963, -0.079168275), (-0.06693145, -1.7092235, -0.079168275), (4.5091753, -1.9070908, -0.07916827), (-1.0812895, 3.8179314, -0.079168275), (-2.7000394, -0.14477403, -0.079168275), (-2.6446025, 4.3151407, -0.07916827), (-3.8441133, 0.95818967, -0.079168275), (3.6161313, 0.4366354, -0.07916827), (1.1716098, -0.0819778, -0.07916827), (3.5216355, -1.5005776, -0.079168275), (-2.9714615, 0.20871249, -0.07916827), (2.2522943, 1.6478126, -0.07916827), (3.2672336, -0.23526803, -0.07916827), (0.11126099, 5, -0.07916827), (-1.0092968, 1.2116798, -0.079168275), (-4.8990855, -2.2275937, -0.079168275), (-5, 1.2735173, -0.07916827), (0.2429441, 1.4088402, -0.07916827), (-2.3153536, -1.9599248, -0.079168275), (-4.6716723, 0.9344406, -0.07916827), (3.1247122, -2.3272727, -0.07916827), (2.9146314, 0.5950423, -0.079168275), (-3.3910863, 0.23851617, -0.07916826), (-3.145431, 2.2107356, -0.079168275), (4.213621, 1.5930359, -0.07916827), (-1.7341952, -0.12857157, -0.079168275), (2.8071394, -0.41043028, -0.079168275), (-5, -0.015089936, -0.079168275), (-4.131485, -1.9315223, -0.079168275), (1.6213425, -1.310705, -0.079168275), (0.38640657, -2.462969, -0.079168275), (-4.5681295, 1.9387041, -0.07916827), (-2.536633, 1.442573, -0.079168275), (0.47415087, -1.0716817, -0.07916827), (-2.1571805, -0.8617872, -0.07916827), (-3.9786317, 1.8632076, -0.079168275), (-4.028914, -1.0830251, -0.079168275), (-2.814706, -1.2532787, -0.079168275), (-4.8969507, 2.3129294, -0.07916827), (-4.5265665, -3.3463922, -0.079168275), (-0.86200196, 2.1338737, -0.079168275), (-0.3297721, 3.1546624, -0.07916827), (1.1069463, -1.098658, -0.07916827), (-4.462968, -1.1023563, -0.07916827), (-2.6427307, 3.7944725, -0.079168275), (3.9101896, -4.545224, -0.07916827), (-3.3137555, -3.9082515, -0.079168275), (1.9118557, 2.9152627, -0.079168275), (-4.0575066, 4.535833, -0.07916827), (-0.20143773, 1.6376506, -0.07916827), (0.9244135, 1.8426661, -0.079168275), (-2.2280378, -1.5943184, -0.079168275), (-1.9005361, -1.7423644, -0.079168275), (-4.905829, -1.7469083, -0.07916827), (1.3314134, 0.40869403, -0.07916827), (0.9880774, 3.4476967, -0.07916827), (4.700355, 2.2989626, -0.079168275), (3.3222842, 0.77934504, -0.07916827), (4.8704863, 3.0527518, -0.079168275), (-1.798823, 3.3188813, -0.07916827), (1.3456954, -3.8684566, -0.079168275), (-2.7142322, -2.0297315, -0.07916827), (4.085998, -0.31188405, -0.07916827), (-4.0984755, 0.12988648, -0.079168275), (-2.3803995, -1.2397659, -0.079168275), (-2.6873393, 1.0582669, -0.079168275), (-2.457962, -2.367663, -0.079168275), (-2.7202566, -0.56821924, -0.07916827), (3.187807, -1.8262169, -0.07916827), (-4.227845, 2.2929158, -0.07916827), (1.8029767, 1.7459276, -0.07916827), (2.5509155, 3.7742693, -0.079168275), (-2.118374, -3.1332965, -0.07916827), (1.2195741, -2.811712, -0.079168275), (5, 1.9641619, -0.079168275), (3.2981553, 1.6917144, -0.07916827), (-5, 2.74453, -0.079168275), (2.9969578, 2.0579696, -0.079168275), (5, -2.676641, -0.07916827), (-0.8487135, -5, -0.079168275), (2.8189175, -4.220725, -0.079168275), (-2.0301058, -2.2340462, -0.079168275), (0.82970876, 2.335265, -0.07916827), (3.5506625, -3.5851626, -0.079168275), (-1.1782604, -1.7708973, -0.079168275), (0.75930357, 1.4551351, -0.07916827), (5, -0.5849647, -0.079168275), (-2.7767892, 3.3279035, -0.079168275), (2.553529, -3.398255, -0.07916826), (4.570615, -4.238119, -0.07916827), (2.9608986, -1.3160512, -0.079168275), (-0.17514324, -3.8522344, -0.079168275), (-0.101953454, -3.1570415, -0.07916827), (1.5234842, -2.339492, -0.07916827), (1.4296964, 2.8341029, -0.079168275), (1.7561272, 4.380782, -0.07916827), (-1.0723313, -3.5287337, -0.07916827), (2.0345762, -2.4679933, -0.07916827), (0.44816208, -3.8131561, -0.079168275), (5, -1.0629107, -0.07916827), (1.7431802, 2.118988, -0.07916827), (0.41237405, 2.4843163, -0.07916827), (-1.4916087, 3.649345, -0.07916826), (-3.2675304, -5, -0.07916828), (-3.1154294, -1.9979396, -0.07916827), (-3.2618809, -0.9995285, -0.07916827), (-4.064263, 3.0541208, -0.07916826), (-0.76241994, 3.3172708, -0.079168275), (2.264951, -0.53433055, -0.079168275), (-4.2876244, 1.5827179, -0.079168275), (-1.5162756, -1.6229932, -0.079168275), (3.819378, 1.8628191, -0.079168275), (-0.47550598, -4.685087, -0.079168275), (0.38981855, 4.325682, -0.079168275), (4.033512, 3.3525832, -0.079168275), (-2.9884648, -1.6262447, -0.07916827), (5, 2.545349, -0.07916827), (-0.6844387, 3.7916281, -0.079168275), (-1.2584084, 3.2883441, -0.07916827), (-0.6207092, -4.190244, -0.07916826), (-3.8071156, 0.3579687, -0.07916827), (-3.0379834, -0.42113027, -0.079168275), (-3.55517, -2.725853, -0.079168275), (-0.41772524, -2.9186316, -0.07916827), (2.0157034, 3.3970492, -0.079168275), (-3.362275, -3.5135303, -0.07916827), (3.8745968, 1.3536968, -0.079168275), (2.0778723, -3.3140366, -0.079168275), (-3.7713258, 4.2832685, -0.07916827), (-2.207372, 1.7748765, -0.07916827), (-1.059728, 2.9054053, -0.07916827), (2.1082826, 3.814939, -0.079168275), (-1.3871241, 2.4274974, -0.079168275), (-2.5897105, -3.113439, -0.079168275), (-1.3937116, 4.1820855, -0.079168275), (-0.12012148, 0.116398565, -0.079168275), (3.0715902, -3.3359728, -0.07916827), (0.20186128, -2.8999722, -0.079168275), (2.4276628, 3.2362323, -0.07916827), (-2.836889, 0.59232175, -0.07916827), (-2.1066372, -3.644615, -0.07916827), (1.3069409, 4.7210383, -0.07916827), (-2.1458519, 0.49736223, -0.079168275), (-2.907369, -3.6973875, -0.079168275), (-3.7388258, -3.2174716, -0.079168275), (-3.0451977, 1.3632972, -0.07916827), (0.08879909, 2.8419917, -0.079168275), (2.857374, 3.375093, -0.07916827), (-0.93909204, -4.634145, -0.07916827), (-1.4806738, 1.2547113, -0.07916827), (2.3027687, -3.7901351, -0.07916827), (2.3590229, 2.773762, -0.079168275), (-5, 4.796005, -0.07916827), (-0.6838821, -3.7407565, -0.079168275), (-3.4131536, 3.9990466, -0.07916827), (-4.0902896, -3.4784431, -0.079168275), (2.189017, -4.292632, -0.07916827), (3.725775, 3.5665636, -0.07916827), (3.2196527, -4.553553, -0.07916827), (-4.477837, 3.2683213, -0.07916827), (-2.9154353, -5, -0.07916827), (-1.1201291, -3.980856, -0.07916827), (-1.8532491, 4.49132, -0.079168275), (-0.019274898, 4.402428, -0.079168275), (3.4255326, 3.0426486, -0.079168275), (-1.6580068, -2.0154974, -0.079168275), (2.8737144, 2.8982449, -0.07916827), (4.8865533, -5, -0.07916827), (2.2563875, 4.2285457, -0.07916827), (-3.1511402, 5, -0.079168275), (4.502919, 3.5967453, -0.07916827), (-1.3529135, -5, -0.079168275), (4.1059256, -5, -0.07916827), (-3.4545324, -4.630971, -0.079168275), (3.3715467, 3.8758721, -0.079168275), (-4.186334, 4.998253, -0.079168275), (-0.008456694, -4.292852, -0.07916827), (-2.6662195, 4.8866997, -0.07916827), (1.7443, 4.867959, -0.07916827), (-2.5629616, -5, -0.07916827), (-4.4644732, 4.409126, -0.07916827), (-2.2383602, 4.099241, -0.079168275), (4.0010877, -4.073402, -0.07916827), (-3.0842934, 2.9832387, -0.07916827), (4.998435, -4.5332837, -0.079168275), (3.7061675, 4.5341334, -0.079168275), (4.4032564, 2.6492193, -0.079168275), (-1.4511706, -4.6499553, -0.07916827), (3.5392828, -4.176752, -0.079168275), (3.1908858, -3.8959794, -0.07916827), (-5, 4.277841, -0.07916827), (0.5306742, 5, -0.079168275), (-3.6721714, 4.9100623, -0.079168275), (-1.6903167, -4.38274, -0.07916826), (0.41369775, -4.8664417, -0.079168275), (-3.0709054, 3.7221785, -0.079168275), (-2.0758035, -4.5756283, -0.079168275), (0.6532308, -4.438715, -0.07916827), (-3.5470111, 1.8948942, -0.07916827), (-3.4202065, -4.2795305, -0.07916826), (0.9752473, 5, -0.07916827), (-2.5791836, -3.9594297, -0.07916827), (0.7880247, 4.5685573, -0.07916827), (-2.2214625, 4.7484856, -0.07916827), (4.3660884, 4.619149, -0.079168275), (2.1912475, 5, -0.07916827), (-2.9972596, -4.5849476, -0.079168275), (1.0886613, 3.811087, -0.079168275), (-1.1933123, 4.861399, -0.079168275), (-0.42837754, 4.1591473, -0.07916827), (1.6652398, 3.9359057, -0.079168275), (-2.2820668, -4.1633086, -0.07916827), (-3.6394649, -5, -0.079168275), (2.1491492, 0.86050814, -0.079168275), (2.670796, 5, -0.07916827), (1.2821605, 4.228902, -0.07916827), (-1.9561995, -4.034129, -0.07916827), (-2.9599385, -4.174161, -0.07916827), (-2.1948626, -5, -0.07916827), (-5, -3.6549814, -0.07916827), (3.2639298, 4.3699784, -0.079168275), (3.8020253, 0.85929537, -0.07916827), (-3.9140928, -4.5564733, -0.07916827), (-3.7698152, -4.157495, -0.079168275), (-4.0540133, -5, -0.079168275), (-4.3159823, -4.679113, -0.07916827), (4.409635, 4.2339067, -0.07916827), (-5, -4.8670497, -0.079168275), (-3.7468703, -3.736479, -0.07916827), (3.1333697, 4.880706, -0.079168275), (3.7837605, 4.080415, -0.07916827), (5, 4.808447, -0.07916827), (-4.729345, -4.5553637, -0.079168275), (5, 4.348623, -0.07916827), (4.1942563, 3.884944, -0.07916827), (-4.404907, -4.289323, -0.07916827), (4.0351343, 4.998, -0.07916828), (-4.7484217, -3.9822292, -0.07916827), (4.558625, 5, -0.07916827), (-4.1044354, -4.052985, -0.079168275), (-5, -4.2716846, -0.07916827), (-4.5294714, -5, -0.07916827), (5, 3.913188, -0.07916827)],
-            5: [(4.1675253, -3.5916092, -0.13960855), (-0.77677006, -2.7297707, -0.13960855), (3.0630136, 1.158053, -0.13960856), (-4.2709227, 1.0144538, -0.13960856), (-3.044508, 4.2851124, -0.13960855), (0.29896238, 0.3106549, -0.13960858), (0.15971519, 3.7982178, -0.13960855), (0.3848841, -1.6533717, -0.13960856), (0.58787704, -3.3571897, -0.13960856), (4.113137, 0.4235462, -0.13960856), (2.3364277, 4.629844, -0.13960856), (-4.4072022, -3.7855508, -0.13960856), (2.6305351, -3.0152974, -0.13960856), (-0.32800487, 5, -0.13960856), (-4.423228, 2.7572892, -0.13960856), (0.72067314, 0.48032182, -0.13960856), (2.7783132, 4.408583, -0.13960856), (0.5235561, 1.9940797, -0.13960856), (-3.6079555, -1.103081, -0.13960858), (-4.6905637, 4.050367, -0.13960856), (4.6523604, -3.5442917, -0.13960856), (0.846675, 4.1522455, -0.13960856), (-3.3387394, -3.095033, -0.13960856), (1.3029603, 2.0271907, -0.13960856), (0.7090133, -0.11374539, -0.13960856), (2.9434667, 3.9371858, -0.13960856), (-1.957395, -1.295166, -0.13960855), (-2.5378819, 0.25532737, -0.13960856), (2.7822194, -2.20158, -0.13960856), (-2.1778595, 2.223699, -0.13960856), (-2.9153743, -0.90093225, -0.13960856), (0.16372001, 1.847963, -0.13960856), (0.51893455, 2.9131505, -0.13960856), (3.937106, 2.9227145, -0.13960856), (-1.150243, -4.334717, -0.13960856), (4.9943843, 3.4778712, -0.13960855), (-0.79614973, -1.6060177, -0.13960856), (0.81279016, -0.67148095, -0.13960858), (-0.60879153, 0.98583937, -0.13960856), (0.14318645, -2.1115084, -0.13960856), (2.209392, 2.1642263, -0.13960856), (-1.9529516, -0.47410214, -0.13960855), (3.9580522, -0.7834903, -0.13960856), (-0.9853899, 1.7057277, -0.13960856), (-2.5326447, -0.88900006, -0.13960856), (-1.6385394, -3.1866343, -0.13960856), (2.7824752, -3.7559679, -0.13960856), (-1.1081235, 0.16402376, -0.13960858), (-4.915382, -1.1118164, -0.13960856), (2.4458625, -1.4070538, -0.13960856), (-3.2303452, -0.7035627, -0.13960856), (-3.0455608, -2.8056617, -0.13960856), (-1.2546664, -3.0451941, -0.13960856), (-1.132415, -1.3642524, -0.13960856), (-1.578752, -3.9951396, -0.13960856), (4.3221517, 2.0829816, -0.13960856), (-4.2577195, -1.5047516, -0.13960856), (2.8562903, 0.0697684, -0.13960856), (0.65989065, 1.0402397, -0.13960856), (-2.5549412, -4.511527, -0.13960856), (-4.104018, -2.9322283, -0.13960858), (-5, 0.4470213, -0.13960858), (-3.0484476, 0.94580436, -0.13960856), (3.2602262, 3.4405003, -0.13960856), (1.910574, -2.0677114, -0.13960856), (-3.5228193, -0.23725545, -0.13960856), (3.7944171, -2.7523572, -0.13960856), (1.2122772, 3.1690722, -0.13960856), (2.646268, 2.4091716, -0.13960855), (4.8208714, -1.5148462, -0.13960856), (-1.2628251, -0.97338057, -0.13960856), (-1.4086337, -3.626728, -0.13960856), (-2.5653627, 2.9119213, -0.13960855), (-0.5645547, -0.79126203, -0.13960856), (-0.49555647, -1.7958064, -0.13960856), (-0.69743896, -2.3221412, -0.13960856), (4.4066095, 3.1025362, -0.13960856), (0.25015795, 0.8468384, -0.13960856), (-0.2631955, -1.0234504, -0.13960856), (3.1680245, 2.5463982, -0.13960856), (-4.6506653, 5, -0.13960856), (-4.6026554, 1.3711742, -0.13960856), (3.1056917, -5, -0.13960855), (-1.6525402, -2.4309952, -0.13960856), (-2.1106822, -2.6816633, -0.13960856), (-0.24840721, 3.6696415, -0.13960856), (-0.6457389, -0.46140188, -0.13960855), (-1.6083769, 2.8740814, -0.13960858), (2.6379557, 1.0427659, -0.13960856), (0.79618275, -1.4430921, -0.13960856), (-3.7965436, 3.8374155, -0.13960856), (1.9752188, 2.5091677, -0.13960856), (-2.694076, 2.1187503, -0.13960855), (-1.0504433, -0.63218683, -0.13960856), (4.848428, 0.8334273, -0.13960856), (-2.1824472, 3.082237, -0.13960856), (-4.092787, -0.65156513, -0.13960856), (0.89873743, 2.895908, -0.13960856), (4.523795, 1.2473478, -0.13960855), (-1.6789103, 1.9038124, -0.13960856), (-3.1786568, -0.11009467, -0.13960856), (-0.61424, 0.21318685, -0.13960856), (-0.7986419, -1.1155312, -0.13960856), (-1.2320653, 0.8163628, -0.13960856), (1.1412246, 2.525091, -0.13960856), (1.9273977, -0.9651795, -0.13960856), (-4.5596657, 3.6792166, -0.13960855), (-2.262162, 1.1849214, -0.13960855), (0.113197275, 3.2924771, -0.13960856), (1.6290038, 3.2055206, -0.13960856), (-2.446578, 0.72817385, -0.13960856), (-1.7607195, -3.5305445, -0.13960855), (-4.7049146, -0.2480207, -0.13960856), (-2.9548793, -3.2870576, -0.13960856), (-1.3188102, -2.1844149, -0.13960856), (-3.3425186, 4.5717764, -0.13960856), (1.6867588, 0.8332646, -0.13960856), (-2.6924903, 2.5347557, -0.13960856), (3.946361, -1.8196282, -0.13960856), (0.58144593, 3.8181074, -0.13960858), (-4.669978, 0.2947643, -0.13960856), (-3.3986003, -2.2893734, -0.13960856), (-4.499845, 0.60703975, -0.13960856), (2.4174178, 0.081225015, -0.13960856), (1.0346074, -3.40563, -0.13960856), (-0.54158366, 0.6029342, -0.13960856), (2.0036492, -1.6210043, -0.13960855), (2.960071, -2.7815025, -0.13960856), (-5, 3.7392359, -0.13960856), (-5, -0.550608, -0.13960856), (-2.6098526, -1.6135595, -0.13960856), (1.4168508, -4.343722, -0.13960856), (4.6505213, -0.38244194, -0.13960855), (-3.9158187, 2.6518154, -0.13960856), (-0.24592777, 2.5489948, -0.13960856), (4.4786706, -4.7318015, -0.13960856), (3.4778402, 1.2479651, -0.13960856), (4.479569, 0.18023989, -0.13960856), (-3.6428192, 0.64515233, -0.13960856), (-0.44626167, -0.13334084, -0.13960856), (1.948288, 0.43188542, -0.13960856), (-4.128481, 0.5693549, -0.13960858), (-2.470858, -3.5143464, -0.13960856), (-0.93176347, 2.50029, -0.13960856), (2.2185812, -2.8784413, -0.13960856), (-3.729115, -0.74608845, -0.13960856), (1.7652824, -0.4350059, -0.13960856), (2.2246711, 1.2588613, -0.13960856), (2.7583477, -1.7478126, -0.13960856), (-4.1926446, 3.8442082, -0.13960856), (-2.9509015, -2.4168572, -0.13960855), (3.6367447, 2.6199365, -0.13960856), (1.7322685, 1.305025, -0.13960856), (-3.7940397, -1.4844648, -0.13960856), (-1.6755497, -2.8002093, -0.13960856), (0.022063928, -0.79013604, -0.13960855), (-0.96260196, 0.54569656, -0.13960856), (3.3072467, -0.9135537, -0.13960858), (1.5632646, -3.269097, -0.13960856), (-5, 0.86214167, -0.13960856), (-3.2492566, 0.5828752, -0.13960856), (-1.5079819, -0.5821401, -0.13960856), (4.9387374, 0.36350498, -0.13960856), (-3.4121163, 3.4306142, -0.13960855), (0.13176313, -3.4746013, -0.13960856), (0.709214, -1.9858419, -0.13960856), (-1.5630611, -1.2484871, -0.13960856), (0.03241087, 2.2468557, -0.13960855), (3.4473739, -3.0606859, -0.13960855), (1.73114, -2.832135, -0.13960856), (2.5740058, 1.9272333, -0.13960856), (-3.690615, 2.2989857, -0.13960856), (-1.8381828, 3.895664, -0.13960856), (-2.5744328, -2.7397082, -0.13960856), (-1.8679609, 1.4551494, -0.13960856), (0.9246881, -2.4324229, -0.13960856), (-5, 1.7239665, -0.13960856), (-3.294413, 2.5873394, -0.13960856), (-0.56373024, 4.6852193, -0.13960856), (-3.4193523, 1.0151957, -0.13960856), (3.774835, 0.018045083, -0.13960856), (4.6500854, 1.7349203, -0.13960856), (2.6184115, -0.86865574, -0.13960856), (-0.5853549, 1.4739648, -0.13960858), (-0.9600792, 4.3892255, -0.13960856), (-0.16215548, -0.4251888, -0.13960858), (-3.6859374, 0.042075574, -0.13960856), (3.252489, 0.24011396, -0.13960855), (1.452841, -1.86128, -0.13960856), (2.524199, -4.6760807, -0.13960856), (-3.676933, -1.9359343, -0.13960856), (-2.2507145, 3.5440943, -0.13960856), (-1.666472, 0.7291404, -0.13960855), (-0.4095211, -1.3724262, -0.13960856), (1.8316506, 0.010112802, -0.13960856), (-3.5731125, 2.9705112, -0.13960856), (-3.4830365, -0.5244374, -0.13960856), (3.9857066, 2.358829, -0.13960856), (0.38376904, -0.58546525, -0.13960856), (3.551004, -2.137024, -0.13960856), (-4.9948573, 3.195249, -0.13960856), (-1.4798408, 0.3346703, -0.13960858), (4.1184993, -2.3783383, -0.13960855), (4.2108655, -2.9263844, -0.13960856), (-0.43327045, -3.4036884, -0.13960856), (0.68586004, -2.8782992, -0.13960856), (3.6272566, -5, -0.13960856), (3.5726898, -0.512856, -0.13960856), (-1.1838006, -2.5875456, -0.13960856), (1.5038911, 3.5771492, -0.13960856), (-3.3943617, -1.6605926, -0.13960856), (3.4036522, -2.6008737, -0.13960856), (-1.8888153, 0.24652381, -0.13960856), (-4.4230504, -2.281942, -0.13960856), (-4.5539827, -0.6731496, -0.13960856), (2.3644674, -1.9923637, -0.13960855), (-1.3392448, -0.1931145, -0.13960856), (-0.3232206, -2.122856, -0.13960858), (-1.7627387, -0.8964305, -0.13960856), (1.243882, 0.9710438, -0.13960856), (-3.161398, 1.7566656, -0.13960856), (-0.8450355, -3.184997, -0.13960856), (-0.16566065, 1.1299105, -0.13960856), (-4.4374137, 0.07002304, -0.13960856), (-2.7186272, 1.7507627, -0.13960856), (5.0000067, 1.3647715, -0.13960856), (4.267657, 0.8778892, -0.13960856), (-2.0234709, 2.6134577, -0.13960856), (-3.8983598, 3.4113889, -0.13960856), (2.7829998, 1.5261011, -0.13960856), (0.08417763, -1.2939843, -0.13960856), (-0.5842293, 2.7548964, -0.13960856), (-4.286697, -0.29913527, -0.13960856), (3.4782958, 2.1705437, -0.13960856), (0.57245094, 3.3586466, -0.13960856), (-0.1315123, 0.5949023, -0.13960856), (-0.19487128, -2.5357616, -0.13960856), (-1.9710425, 0.951295, -0.13960856), (0.24660568, -0.17372707, -0.13960856), (2.4799428, 0.56115615, -0.13960856), (-3.8800573, -2.4119542, -0.13960856), (-3.9655242, 1.3442367, -0.13960856), (-3.5511224, 1.4308455, -0.13960858), (1.2700526, -0.5780408, -0.13960856), (4.8415575, -3.1155064, -0.13960856), (-2.3618352, -0.44638133, -0.13960856), (-0.91238266, -0.18301672, -0.13960855), (4.369418, -1.3483201, -0.13960856), (2.5018234, -2.5069203, -0.13960855), (-0.42027217, 2.0421312, -0.13960855), (-3.2605479, -1.3212926, -0.13960856), (-0.9454622, -2.065709, -0.13960856), (1.536966, 2.4544578, -0.13960856), (4.883824, -2.22674, -0.13960856), (-1.797197, -5, -0.13960855), (1.3000917, 1.5308121, -0.13960855), (-3.899403, -0.26876053, -0.13960856), (-2.2178667, -0.046674963, -0.13960856), (-0.06693145, -1.7092235, -0.13960856), (4.5091753, -1.9070908, -0.13960856), (-1.0812895, 3.8179314, -0.13960856), (-2.7000394, -0.14477403, -0.13960856), (-2.6446025, 4.3151407, -0.13960856), (-3.8441133, 0.95818967, -0.13960856), (3.6161313, 0.4366354, -0.13960855), (1.1716098, -0.0819778, -0.13960855), (3.5216355, -1.5005776, -0.13960856), (-2.9714615, 0.20871249, -0.13960856), (2.2522943, 1.6478126, -0.13960855), (3.2672336, -0.23526803, -0.13960855), (0.11126099, 5, -0.13960856), (-1.0092968, 1.2116798, -0.13960856), (-4.8990855, -2.2275937, -0.13960856), (-5, 1.2735173, -0.13960856), (0.2429441, 1.4088402, -0.13960856), (-2.3153536, -1.9599248, -0.13960856), (-4.6716723, 0.9344406, -0.13960856), (3.1247122, -2.3272727, -0.13960856), (2.9146314, 0.5950423, -0.13960856), (-3.3910863, 0.23851617, -0.13960856), (-3.145431, 2.2107356, -0.13960856), (4.213621, 1.5930359, -0.13960855), (-1.7341952, -0.12857157, -0.13960856), (2.8071394, -0.41043028, -0.13960856), (-5, -0.015089936, -0.13960856), (-4.131485, -1.9315223, -0.13960856), (1.6213425, -1.310705, -0.13960856), (0.38640657, -2.462969, -0.13960856), (-4.5681295, 1.9387041, -0.13960856), (-2.536633, 1.442573, -0.13960856), (0.47415087, -1.0716817, -0.13960856), (-2.1571805, -0.8617872, -0.13960856), (-3.9786317, 1.8632076, -0.13960856), (-4.028914, -1.0830251, -0.13960856), (-2.814706, -1.2532787, -0.13960856), (-4.8969507, 2.3129294, -0.13960856), (-4.5265665, -3.3463922, -0.13960856), (-0.86200196, 2.1338737, -0.13960856), (-0.3297721, 3.1546624, -0.13960856), (1.1069463, -1.098658, -0.13960855), (-4.462968, -1.1023563, -0.13960856), (-2.6427307, 3.7944725, -0.13960856), (3.9101896, -4.545224, -0.13960856), (-3.3137555, -3.9082515, -0.13960856), (1.9118557, 2.9152627, -0.13960856), (-4.0575066, 4.535833, -0.13960856), (-0.20143773, 1.6376506, -0.13960856), (0.9244135, 1.8426661, -0.13960856), (-2.2280378, -1.5943184, -0.13960856), (-1.9005361, -1.7423644, -0.13960856), (-4.905829, -1.7469083, -0.13960856), (1.3314134, 0.40869403, -0.13960856), (0.9880774, 3.4476967, -0.13960856), (4.700355, 2.2989626, -0.13960856), (3.3222842, 0.77934504, -0.13960856), (4.8704863, 3.0527518, -0.13960858), (-1.798823, 3.3188813, -0.13960856), (1.3456954, -3.8684566, -0.13960856), (-2.7142322, -2.0297315, -0.13960856), (4.085998, -0.31188405, -0.13960856), (-4.0984755, 0.12988648, -0.13960856), (-2.3803995, -1.2397659, -0.13960856), (-2.6873393, 1.0582669, -0.13960856), (-2.457962, -2.367663, -0.13960856), (-2.7202566, -0.56821924, -0.13960856), (3.187807, -1.8262169, -0.13960856), (-4.227845, 2.2929158, -0.13960855), (1.8029767, 1.7459276, -0.13960856), (2.5509155, 3.7742693, -0.13960855), (-2.118374, -3.1332965, -0.13960856), (1.2195741, -2.811712, -0.13960856), (5, 1.9641619, -0.13960856), (3.2981553, 1.6917144, -0.13960856), (-5, 2.74453, -0.13960856), (2.9969578, 2.0579696, -0.13960855), (5, -2.676641, -0.13960856), (-0.8487135, -5, -0.13960856), (2.8189175, -4.220725, -0.13960856), (-2.0301058, -2.2340462, -0.13960858), (0.82970876, 2.335265, -0.13960855), (3.5506625, -3.5851626, -0.13960856), (-1.1782604, -1.7708973, -0.13960856), (0.75930357, 1.4551351, -0.13960856), (5, -0.5849647, -0.13960856), (-2.7767892, 3.3279035, -0.13960856), (2.553529, -3.398255, -0.13960855), (4.570615, -4.238119, -0.13960856), (2.9608986, -1.3160512, -0.13960856), (-0.17514324, -3.8522344, -0.13960856), (-0.101953454, -3.1570415, -0.13960856), (1.5234842, -2.339492, -0.13960858), (1.4296964, 2.8341029, -0.13960858), (1.7561272, 4.380782, -0.13960856), (-1.0723313, -3.5287337, -0.13960855), (2.0345762, -2.4679933, -0.13960856), (0.44816208, -3.8131561, -0.13960855), (5, -1.0629107, -0.13960856), (1.7431802, 2.118988, -0.13960855), (0.41237405, 2.4843163, -0.13960856), (-1.4916087, 3.649345, -0.13960855), (-3.2675304, -5, -0.13960856), (-3.1154294, -1.9979396, -0.13960856), (-3.2618809, -0.9995285, -0.13960856), (-4.064263, 3.0541208, -0.13960856), (-0.76241994, 3.3172708, -0.13960856), (2.264951, -0.53433055, -0.13960858), (-4.2876244, 1.5827179, -0.13960856), (-1.5162756, -1.6229932, -0.13960856), (3.819378, 1.8628191, -0.13960856), (-0.47550598, -4.685087, -0.13960856), (0.38981855, 4.325682, -0.13960858), (4.033512, 3.3525832, -0.13960856), (-2.9884648, -1.6262447, -0.13960855), (5, 2.545349, -0.13960856), (-0.6844387, 3.7916281, -0.13960856), (-1.2584084, 3.2883441, -0.13960856), (-0.6207092, -4.190244, -0.13960855), (-3.8071156, 0.3579687, -0.13960855), (-3.0379834, -0.42113027, -0.13960856), (-3.55517, -2.725853, -0.13960856), (-0.41772524, -2.9186316, -0.13960856), (2.0157034, 3.3970492, -0.13960856), (-3.362275, -3.5135303, -0.13960856), (3.8745968, 1.3536968, -0.13960856), (2.0778723, -3.3140366, -0.13960856), (-3.7713258, 4.2832685, -0.13960855), (-2.207372, 1.7748765, -0.13960856), (-1.059728, 2.9054053, -0.13960855), (2.1082826, 3.814939, -0.13960856), (-1.3871241, 2.4274974, -0.13960856), (-2.5897105, -3.113439, -0.13960856), (-1.3937116, 4.1820855, -0.13960856), (-0.12012148, 0.116398565, -0.13960855), (3.0715902, -3.3359728, -0.13960856), (0.20186128, -2.8999722, -0.13960856), (2.4276628, 3.2362323, -0.13960856), (-2.836889, 0.59232175, -0.13960856), (-2.1066372, -3.644615, -0.13960855), (1.3069409, 4.7210383, -0.13960855), (-2.1458519, 0.49736223, -0.13960856), (-2.907369, -3.6973875, -0.13960856), (-3.7388258, -3.2174716, -0.13960856), (-3.0451977, 1.3632972, -0.13960856), (0.08879909, 2.8419917, -0.13960856), (2.857374, 3.375093, -0.13960856), (-0.93909204, -4.634145, -0.13960856), (-1.4806738, 1.2547113, -0.13960856), (2.3027687, -3.7901351, -0.13960856), (2.3590229, 2.773762, -0.13960856), (-5, 4.796005, -0.13960855), (-0.6838821, -3.7407565, -0.13960856), (-3.4131536, 3.9990466, -0.13960856), (-4.0902896, -3.4784431, -0.13960856), (2.189017, -4.292632, -0.13960856), (3.725775, 3.5665636, -0.13960855), (3.2196527, -4.553553, -0.13960856), (-4.477837, 3.2683213, -0.13960856), (-2.9154353, -5, -0.13960856), (-1.1201291, -3.980856, -0.13960856), (-1.8532491, 4.49132, -0.13960856), (-0.019274898, 4.402428, -0.13960858), (3.4255326, 3.0426486, -0.13960856), (-1.6580068, -2.0154974, -0.13960856), (2.8737144, 2.8982449, -0.13960856), (4.8865533, -5, -0.13960856), (2.2563875, 4.2285457, -0.13960856), (-3.1511402, 5, -0.13960856), (4.502919, 3.5967453, -0.13960855), (-1.3529135, -5, -0.13960856), (4.1059256, -5, -0.13960856), (-3.4545324, -4.630971, -0.13960856), (3.3715467, 3.8758721, -0.13960856), (-4.186334, 4.998253, -0.13960856), (-0.008456694, -4.292852, -0.13960856), (-2.6662195, 4.8866997, -0.13960856), (1.7443, 4.867959, -0.13960856), (-2.5629616, -5, -0.13960856), (-4.4644732, 4.409126, -0.13960856), (-2.2383602, 4.099241, -0.13960856), (4.0010877, -4.073402, -0.13960856), (-3.0842934, 2.9832387, -0.13960856), (4.998435, -4.5332837, -0.13960856), (3.7061675, 4.5341334, -0.13960856), (4.4032564, 2.6492193, -0.13960856), (-1.4511706, -4.6499553, -0.13960856), (3.5392828, -4.176752, -0.13960856), (3.1908858, -3.8959794, -0.13960856), (-5, 4.277841, -0.13960856), (0.5306742, 5, -0.13960858), (-3.6721714, 4.9100623, -0.13960856), (-1.6903167, -4.38274, -0.13960855), (0.41369775, -4.8664417, -0.13960856), (-3.0709054, 3.7221785, -0.13960855), (-2.0758035, -4.5756283, -0.13960856), (0.6532308, -4.438715, -0.13960856), (-3.5470111, 1.8948942, -0.13960856), (-3.4202065, -4.2795305, -0.13960855), (0.9752473, 5, -0.13960855), (-2.5791836, -3.9594297, -0.13960856), (0.7880247, 4.5685573, -0.13960855), (-2.2214625, 4.7484856, -0.13960855), (4.3660884, 4.619149, -0.13960856), (2.1912475, 5, -0.13960856), (-2.9972596, -4.5849476, -0.13960856), (1.0886613, 3.811087, -0.13960856), (-1.1933123, 4.861399, -0.13960856), (-0.42837754, 4.1591473, -0.13960856), (1.6652398, 3.9359057, -0.13960856), (-2.2820668, -4.1633086, -0.13960855), (-3.6394649, -5, -0.13960856), (2.1491492, 0.86050814, -0.13960856), (2.670796, 5, -0.13960856), (1.2821605, 4.228902, -0.13960855), (-1.9561995, -4.034129, -0.13960856), (-2.9599385, -4.174161, -0.13960856), (-2.1948626, -5, -0.13960856), (-5, -3.6549814, -0.13960856), (3.2639298, 4.3699784, -0.13960858), (3.8020253, 0.85929537, -0.13960856), (-3.9140928, -4.5564733, -0.13960855), (-3.7698152, -4.157495, -0.13960856), (-4.0540133, -5, -0.13960858), (-4.3159823, -4.679113, -0.13960855), (4.409635, 4.2339067, -0.13960856), (-5, -4.8670497, -0.13960856), (-3.7468703, -3.736479, -0.13960856), (3.1333697, 4.880706, -0.13960856), (3.7837605, 4.080415, -0.13960856), (5, 4.808447, -0.13960855), (-4.729345, -4.5553637, -0.13960856), (5, 4.348623, -0.13960856), (4.1942563, 3.884944, -0.13960856), (-4.404907, -4.289323, -0.13960856), (4.0351343, 4.998, -0.13960856), (-4.7484217, -3.9822292, -0.13960856), (4.558625, 5, -0.13960856), (-4.1044354, -4.052985, -0.13960856), (-5, -4.2716846, -0.13960855), (-4.5294714, -5, -0.13960856), (5, 3.913188, -0.13960856)],
-        }
         int[] protoIndices = []
         int[] protoIndices.timeSamples = {
             1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
@@ -109,19 +94,8 @@ def Xform "Rocks" (
         rel prototypes = </Rocks/Instances/Prototypes/Rock_0>
         uniform bool pruning:prunable = 0
         float3[] scales = []
-        float3[] scales.timeSamples = {
-            1: [(0.14172319, 0.14172319, 0.14172319), (0.10029252, 0.10029252, 0.10029252), (0.18134323, 0.18134323, 0.18134323), (0.12623805, 0.12623805, 0.12623805), (0.10022483, 0.10022483, 0.10022483), (0.11894938, 0.11894938, 0.11894938), (0.11161965, 0.11161965, 0.11161965), (0.16177759, 0.16177759, 0.16177759), (0.19162112, 0.19162112, 0.19162112), (0.15199168, 0.15199168, 0.15199168), (0.10936818, 0.10936818, 0.10936818), (0.1119827, 0.111982696, 0.111982696), (0.19744946, 0.19744946, 0.19744946), (0.19223702, 0.19223702, 0.19223702), (0.114910774, 0.114910774, 0.114910774), (0.10862304, 0.10862304, 0.10862304), (0.18047523, 0.18047523, 0.18047523), (0.18691078, 0.18691078, 0.18691078), (0.18762624, 0.18762624, 0.18762624), (0.102495134, 0.102495134, 0.102495134), (0.17481448, 0.17481448, 0.17481448), (0.13745625, 0.13745625, 0.13745625), (0.1169585, 0.1169585, 0.1169585), (0.13553365, 0.13553365, 0.13553365), (0.16723502, 0.16723502, 0.16723502), (0.19425061, 0.19425061, 0.19425061), (0.16002521, 0.16002521, 0.16002521), (0.1391068, 0.1391068, 0.1391068), (0.18550682, 0.18550682, 0.18550682), (0.10525586, 0.10525586, 0.10525586), (0.19929136, 0.19929136, 0.19929136), (0.1722306, 0.1722306, 0.1722306), (0.19501713, 0.19501713, 0.19501713), (0.19302395, 0.19302395, 0.19302395), (0.15721127, 0.15721127, 0.15721127), (0.19952482, 0.19952482, 0.19952482), (0.12173809, 0.12173809, 0.1217381), (0.19381942, 0.19381942, 0.19381942), (0.13378444, 0.13378444, 0.13378444), (0.19948044, 0.19948044, 0.19948044), (0.12811777, 0.12811777, 0.12811777), (0.1212849, 0.1212849, 0.1212849), (0.17964527, 0.17964527, 0.17964527), (0.13431281, 0.13431281, 0.13431281), (0.1582495, 0.1582495, 0.1582495), (0.18623838, 0.18623838, 0.18623838), (0.18141069, 0.18141069, 0.18141069), (0.11646598, 0.11646598, 0.11646598), (0.16494167, 0.16494167, 0.16494167), (0.13916416, 0.13916416, 0.13916416), (0.13589337, 0.13589337, 0.13589337), (0.13020925, 0.13020925, 0.13020925), (0.19353762, 0.19353762, 0.19353762), (0.19642974, 0.19642974, 0.19642974), (0.17435914, 0.17435914, 0.17435914), (0.1696752, 0.1696752, 0.1696752), (0.18771876, 0.18771876, 0.18771876), (0.14476237, 0.14476237, 0.14476237), (0.114282645, 0.114282645, 0.114282645), (0.10797047, 0.10797047, 0.10797047), (0.15342611, 0.15342611, 0.15342611), (0.10040834, 0.10040834, 0.10040834), (0.10364749, 0.10364749, 0.10364749), (0.18283775, 0.18283775, 0.18283775), (0.11108214, 0.11108214, 0.11108214), (0.14308448, 0.14308448, 0.14308448), (0.121854395, 0.121854395, 0.121854395), (0.11287031, 0.11287031, 0.11287031), (0.1706352, 0.1706352, 0.1706352), (0.16552845, 0.16552845, 0.16552845), (0.15867262, 0.15867262, 0.15867262), (0.10241511, 0.10241511, 0.10241511), (0.17420247, 0.17420247, 0.17420247), (0.1869008, 0.1869008, 0.1869008), (0.13819286, 0.13819286, 0.13819286), (0.18617925, 0.18617925, 0.18617925), (0.18544312, 0.18544312, 0.18544312), (0.16783936, 0.16783936, 0.16783936), (0.17528448, 0.17528448, 0.17528448), (0.15134707, 0.15134707, 0.15134707), (0.13206375, 0.13206375, 0.13206375), (0.16306287, 0.16306287, 0.16306287), (0.1575478, 0.1575478, 0.1575478), (0.1000997, 0.1000997, 0.1000997), (0.10777086, 0.10777086, 0.10777086), (0.14056571, 0.14056571, 0.14056571), (0.13948797, 0.13948797, 0.13948797), (0.12682317, 0.12682317, 0.12682317), (0.165428, 0.165428, 0.165428), (0.16638756, 0.16638756, 0.16638756), (0.101214744, 0.101214744, 0.101214744), (0.14729013, 0.14729013, 0.14729013), (0.17486918, 0.17486918, 0.17486918), (0.18100545, 0.18100545, 0.18100545), (0.15057571, 0.15057571, 0.15057571), (0.17140004, 0.17140004, 0.17140004), (0.13447945, 0.13447945, 0.13447945), (0.1981385, 0.1981385, 0.1981385), (0.15300599, 0.15300599, 0.15300599), (0.17432371, 0.17432371, 0.17432371), (0.12847671, 0.12847671, 0.12847671), (0.1300669, 0.1300669, 0.1300669), (0.10183531, 0.10183531, 0.10183531), (0.1709834, 0.1709834, 0.1709834), (0.11164422, 0.11164422, 0.11164422), (0.19489469, 0.19489469, 0.19489469), (0.12366511, 0.12366511, 0.12366511), (0.18187001, 0.18187001, 0.18187001), (0.15558699, 0.15558699, 0.15558699), (0.17849174, 0.17849174, 0.17849174), (0.19696003, 0.19696003, 0.19696003), (0.18857506, 0.18857506, 0.18857506), (0.10675031, 0.10675031, 0.10675031), (0.13809735, 0.13809735, 0.13809735), (0.18451662, 0.18451662, 0.18451662), (0.19021323, 0.19021323, 0.19021323), (0.13331154, 0.13331154, 0.13331154), (0.14633088, 0.14633088, 0.14633088), (0.15028134, 0.15028134, 0.15028134), (0.171864, 0.171864, 0.171864), (0.11130679, 0.11130679, 0.11130679), (0.1502267, 0.1502267, 0.1502267), (0.13423976, 0.13423976, 0.13423976), (0.18497759, 0.18497759, 0.18497759), (0.1736241, 0.1736241, 0.1736241), (0.12646134, 0.12646134, 0.12646134), (0.15853566, 0.15853566, 0.15853566), (0.17965382, 0.17965382, 0.17965382), (0.14735726, 0.14735726, 0.14735726), (0.13624248, 0.13624248, 0.13624248), (0.15266715, 0.15266715, 0.15266715), (0.19821939, 0.19821939, 0.19821939), (0.12530683, 0.12530683, 0.12530683), (0.19621356, 0.19621356, 0.19621356), (0.14824396, 0.14824396, 0.14824396), (0.15224026, 0.15224026, 0.15224026), (0.100351825, 0.100351825, 0.100351825), (0.17223835, 0.17223835, 0.17223835), (0.19334838, 0.19334838, 0.19334838), (0.100710765, 0.100710765, 0.100710765), (0.14842908, 0.14842908, 0.14842908), (0.13557956, 0.13557956, 0.13557956), (0.113662355, 0.113662355, 0.113662355), (0.15893427, 0.15893427, 0.15893427), (0.12692566, 0.12692566, 0.12692566), (0.16886988, 0.16886988, 0.16886988), (0.16833937, 0.16833937, 0.16833937), (0.17621502, 0.17621502, 0.17621502), (0.1782211, 0.1782211, 0.1782211), (0.11921705, 0.11921705, 0.11921705), (0.15935126, 0.15935126, 0.15935126), (0.16305056, 0.16305056, 0.16305056), (0.16741821, 0.16741821, 0.16741821), (0.11838294, 0.11838293, 0.11838293), (0.16467193, 0.16467193, 0.16467193), (0.17874432, 0.17874432, 0.17874432), (0.16803929, 0.16803929, 0.16803929), (0.111399114, 0.111399114, 0.111399114), (0.14289968, 0.14289968, 0.14289968), (0.10486378, 0.10486378, 0.10486378), (0.121137574, 0.121137574, 0.121137574), (0.1772308, 0.1772308, 0.1772308), (0.19579127, 0.19579127, 0.19579127), (0.17045128, 0.17045128, 0.17045128), (0.12121004, 0.121210046, 0.12121004), (0.1213617, 0.1213617, 0.1213617), (0.10162039, 0.1016204, 0.1016204), (0.18314496, 0.18314496, 0.18314496), (0.11487794, 0.11487794, 0.11487794), (0.15579394, 0.15579394, 0.15579394), (0.14748974, 0.14748974, 0.14748974), (0.11478952, 0.11478952, 0.11478952), (0.10363876, 0.10363876, 0.10363876), (0.17962754, 0.17962754, 0.17962754), (0.13167714, 0.13167714, 0.13167714), (0.11226555, 0.11226555, 0.11226555), (0.12721995, 0.12721995, 0.12721995), (0.17548874, 0.17548874, 0.17548874), (0.13268617, 0.13268617, 0.13268617), (0.18352199, 0.18352199, 0.18352199), (0.1878573, 0.1878573, 0.1878573), (0.16555044, 0.16555044, 0.16555044), (0.1713369, 0.1713369, 0.1713369), (0.18597813, 0.18597813, 0.18597813), (0.13642877, 0.13642877, 0.13642877), (0.19658181, 0.19658181, 0.19658181), (0.11448326, 0.11448326, 0.11448326), (0.13080463, 0.13080463, 0.13080463), (0.16562164, 0.16562164, 0.16562164), (0.10473912, 0.10473912, 0.10473912), (0.117193975, 0.117193975, 0.117193975), (0.14800587, 0.14800587, 0.14800587), (0.12771049, 0.12771049, 0.12771049), (0.12175891, 0.12175891, 0.12175891), (0.19834013, 0.19834013, 0.19834013), (0.11507412, 0.11507412, 0.11507412), (0.14767495, 0.14767495, 0.14767495), (0.1103148, 0.1103148, 0.110314794), (0.1574498, 0.1574498, 0.1574498), (0.12407453, 0.12407453, 0.12407453), (0.14487734, 0.14487734, 0.14487734), (0.1517503, 0.1517503, 0.1517503), (0.16031215, 0.16031215, 0.16031215), (0.15580858, 0.15580858, 0.15580858), (0.19662309, 0.19662309, 0.19662309), (0.17229593, 0.17229593, 0.17229593), (0.10967554, 0.10967554, 0.10967554), (0.14279902, 0.14279902, 0.14279902), (0.1367748, 0.1367748, 0.1367748), (0.17064096, 0.17064096, 0.17064096), (0.10903813, 0.10903813, 0.10903813), (0.13121553, 0.13121553, 0.13121553), (0.1096869, 0.1096869, 0.1096869), (0.10164373, 0.10164373, 0.10164373), (0.11891883, 0.11891883, 0.11891883), (0.18912748, 0.18912748, 0.18912748), (0.17561358, 0.17561358, 0.17561358), (0.17143068, 0.17143068, 0.17143068), (0.14112458, 0.14112458, 0.14112458), (0.111915305, 0.111915305, 0.111915305), (0.17877343, 0.17877343, 0.17877343), (0.106223, 0.106223, 0.106223), (0.13184862, 0.13184862, 0.13184862), (0.10847034, 0.10847034, 0.10847034), (0.19618687, 0.19618687, 0.19618687), (0.15895997, 0.15895997, 0.15895997), (0.13853732, 0.13853732, 0.13853732), (0.10795692, 0.10795692, 0.10795692), (0.19710794, 0.19710794, 0.19710794), (0.14396106, 0.14396106, 0.14396106), (0.1776239, 0.1776239, 0.1776239), (0.18442112, 0.18442112, 0.18442112), (0.13195619, 0.13195619, 0.13195619), (0.19108248, 0.19108248, 0.19108248), (0.14590731, 0.14590731, 0.14590731), (0.10174266, 0.10174266, 0.10174266), (0.13995983, 0.13995983, 0.13995983), (0.13090616, 0.13090616, 0.13090616), (0.14151147, 0.14151147, 0.14151147), (0.12882674, 0.12882674, 0.12882674), (0.12586424, 0.12586424, 0.12586424), (0.16837966, 0.16837966, 0.16837966), (0.12348554, 0.12348554, 0.12348554), (0.100051574, 0.100051574, 0.100051574), (0.18468678, 0.18468678, 0.18468678), (0.1815013, 0.1815013, 0.1815013), (0.19576788, 0.19576788, 0.19576788), (0.16287561, 0.16287561, 0.16287561), (0.14857875, 0.14857875, 0.14857875), (0.16071053, 0.16071053, 0.16071053), (0.17977396, 0.17977396, 0.17977396), (0.1344373, 0.1344373, 0.1344373), (0.12265878, 0.12265878, 0.12265878), (0.18105084, 0.18105084, 0.18105084), (0.11038053, 0.11038053, 0.11038053), (0.16433293, 0.16433293, 0.16433293), (0.18472075, 0.18472075, 0.18472075), (0.11469215, 0.11469215, 0.11469215), (0.10712121, 0.10712121, 0.10712121), (0.15059352, 0.15059352, 0.15059352), (0.1425719, 0.1425719, 0.1425719), (0.16783395, 0.16783395, 0.16783395), (0.19678757, 0.19678757, 0.19678757), (0.14226696, 0.14226696, 0.14226696), (0.14613333, 0.14613333, 0.14613333), (0.10262809, 0.10262809, 0.10262809), (0.18386772, 0.18386772, 0.18386772), (0.13754506, 0.13754506, 0.13754506), (0.19104421, 0.19104421, 0.1910442), (0.19941677, 0.19941677, 0.19941677), (0.17862856, 0.17862856, 0.17862856), (0.12512408, 0.12512408, 0.12512408), (0.1563856, 0.1563856, 0.1563856), (0.10410943, 0.10410943, 0.10410943), (0.17045668, 0.17045668, 0.17045668), (0.10356156, 0.10356156, 0.10356156), (0.1805349, 0.1805349, 0.1805349), (0.11961666, 0.11961666, 0.11961666), (0.10780964, 0.10780964, 0.10780964), (0.17932215, 0.17932215, 0.17932215), (0.16883194, 0.16883194, 0.16883194), (0.19077508, 0.19077507, 0.19077507), (0.15793861, 0.15793861, 0.15793861), (0.111792766, 0.11179276, 0.11179276), (0.17236096, 0.17236096, 0.17236096), (0.15511994, 0.15511994, 0.15511994), (0.11863964, 0.11863964, 0.11863964), (0.11032846, 0.11032846, 0.11032846), (0.11355084, 0.11355084, 0.11355084), (0.10354251, 0.10354251, 0.10354251), (0.15110308, 0.15110308, 0.15110308), (0.1716482, 0.1716482, 0.1716482), (0.11343519, 0.11343519, 0.11343519), (0.11484221, 0.11484221, 0.11484221), (0.15928078, 0.15928078, 0.15928078), (0.16131136, 0.16131136, 0.16131136), (0.19311708, 0.19311708, 0.19311708), (0.12065772, 0.12065772, 0.12065772), (0.19413377, 0.19413377, 0.19413377), (0.13790147, 0.13790147, 0.13790147), (0.19463432, 0.19463432, 0.19463432), (0.16946983, 0.16946983, 0.16946983), (0.16419846, 0.16419846, 0.16419846), (0.14034523, 0.14034523, 0.14034523), (0.15334319, 0.15334319, 0.15334319), (0.1724496, 0.1724496, 0.1724496), (0.13479161, 0.13479161, 0.13479161), (0.18435813, 0.18435813, 0.18435813), (0.1639334, 0.1639334, 0.1639334), (0.15776677, 0.15776677, 0.15776677), (0.14450797, 0.14450797, 0.14450797), (0.122769214, 0.122769214, 0.122769214), (0.17423299, 0.17423299, 0.17423299), (0.19037694, 0.19037694, 0.19037694), (0.11361282, 0.11361282, 0.11361282), (0.14458582, 0.14458582, 0.14458582), (0.14501567, 0.14501567, 0.14501567), (0.14522895, 0.14522895, 0.14522895), (0.12436036, 0.12436036, 0.12436036), (0.13267854, 0.13267854, 0.13267854), (0.13636823, 0.13636823, 0.13636823), (0.17360517, 0.17360517, 0.17360517), (0.19406614, 0.19406614, 0.19406614), (0.149205, 0.149205, 0.149205), (0.10046536, 0.10046536, 0.10046536), (0.18648931, 0.18648931, 0.18648931), (0.16292405, 0.16292405, 0.16292405), (0.1428356, 0.1428356, 0.1428356), (0.19358882, 0.19358882, 0.19358882), (0.17513084, 0.17513084, 0.17513084), (0.13694672, 0.13694672, 0.13694672), (0.11225305, 0.11225305, 0.11225305), (0.11133621, 0.11133621, 0.11133621), (0.19783857, 0.19783857, 0.19783857), (0.15065423, 0.15065423, 0.15065423), (0.14954138, 0.14954138, 0.14954138), (0.1107749, 0.1107749, 0.1107749), (0.19611081, 0.19611081, 0.19611081), (0.18178824, 0.18178824, 0.18178824), (0.1639154, 0.1639154, 0.1639154), (0.18216372, 0.18216372, 0.18216372), (0.15550277, 0.15550277, 0.15550277), (0.18769147, 0.18769147, 0.18769147), (0.18095958, 0.18095958, 0.18095958), (0.19253144, 0.19253144, 0.19253144), (0.18900585, 0.18900585, 0.18900585), (0.13973562, 0.13973562, 0.13973562), (0.14814948, 0.14814948, 0.14814948), (0.18449296, 0.18449296, 0.18449296), (0.11284067, 0.11284067, 0.11284067), (0.101560704, 0.101560704, 0.101560704), (0.16244091, 0.16244091, 0.16244091), (0.17782182, 0.17782182, 0.17782182), (0.122980155, 0.122980155, 0.122980155), (0.12862383, 0.12862383, 0.12862383), (0.17066385, 0.17066385, 0.17066385), (0.10373427, 0.10373427, 0.10373427), (0.12717757, 0.12717757, 0.12717757), (0.10348429, 0.10348429, 0.103484295), (0.19692996, 0.19692996, 0.19692996), (0.10615195, 0.106151946, 0.10615195), (0.18180639, 0.18180639, 0.18180639), (0.19755353, 0.19755353, 0.19755353), (0.18082553, 0.18082553, 0.18082553), (0.18312263, 0.18312263, 0.18312263), (0.19133726, 0.19133726, 0.19133726), (0.13329647, 0.13329647, 0.13329647), (0.19921127, 0.19921127, 0.19921127), (0.14216883, 0.14216883, 0.14216883), (0.12793967, 0.12793967, 0.12793967), (0.17537344, 0.17537344, 0.17537344), (0.18933117, 0.18933117, 0.18933117), (0.105730586, 0.105730586, 0.105730586), (0.19162282, 0.19162282, 0.19162282), (0.19230664, 0.19230664, 0.19230664), (0.18816158, 0.18816158, 0.18816158), (0.1622675, 0.1622675, 0.1622675), (0.12614508, 0.12614508, 0.12614508), (0.18374053, 0.18374053, 0.18374053), (0.14540528, 0.14540528, 0.14540528), (0.13605313, 0.13605313, 0.13605313), (0.19362248, 0.19362248, 0.19362248), (0.12749226, 0.12749226, 0.12749226), (0.1415241, 0.1415241, 0.1415241), (0.10816063, 0.10816063, 0.10816063), (0.17168577, 0.17168577, 0.17168577), (0.18647833, 0.18647833, 0.18647833), (0.15950616, 0.15950616, 0.15950616), (0.19573213, 0.19573213, 0.19573213), (0.1837504, 0.1837504, 0.1837504), (0.13568276, 0.13568276, 0.13568276), (0.19487908, 0.19487908, 0.19487908), (0.10879818, 0.10879818, 0.10879818), (0.13713503, 0.13713503, 0.13713503), (0.111651875, 0.111651875, 0.111651875), (0.19634676, 0.19634676, 0.19634676), (0.17455313, 0.17455313, 0.17455313), (0.19435436, 0.19435436, 0.19435436), (0.104394, 0.104394, 0.104394), (0.17708337, 0.17708337, 0.17708337), (0.15122269, 0.15122269, 0.15122269), (0.13346812, 0.13346812, 0.13346812), (0.16913584, 0.16913584, 0.16913584), (0.18239708, 0.18239708, 0.18239708), (0.1473836, 0.1473836, 0.1473836), (0.17306608, 0.17306608, 0.17306608), (0.112129405, 0.112129405, 0.112129405), (0.12645203, 0.12645203, 0.12645203), (0.1853979, 0.1853979, 0.1853979), (0.12736014, 0.12736014, 0.12736014), (0.19915605, 0.19915605, 0.19915605), (0.18204685, 0.18204683, 0.18204683), (0.16520208, 0.16520208, 0.16520208), (0.11824369, 0.118243694, 0.118243694), (0.15308033, 0.15308033, 0.15308033), (0.12590967, 0.12590967, 0.12590967), (0.14154476, 0.14154476, 0.14154476), (0.10246736, 0.10246736, 0.102467366), (0.17029068, 0.17029068, 0.17029068), (0.12534645, 0.12534645, 0.12534645), (0.19121689, 0.19121689, 0.19121689), (0.12854327, 0.12854327, 0.12854327), (0.1907922, 0.1907922, 0.1907922), (0.19230428, 0.19230428, 0.19230428), (0.14528608, 0.14528608, 0.14528608), (0.10790823, 0.10790823, 0.10790823), (0.1574128, 0.1574128, 0.1574128), (0.15500368, 0.15500368, 0.15500368), (0.1764029, 0.1764029, 0.1764029), (0.15347946, 0.15347946, 0.15347946), (0.11467518, 0.11467518, 0.11467518), (0.16159739, 0.16159739, 0.16159739), (0.15059125, 0.15059125, 0.15059125), (0.19879603, 0.19879603, 0.19879603), (0.14504734, 0.14504734, 0.14504734), (0.16576114, 0.16576114, 0.16576114), (0.15047891, 0.15047891, 0.15047891), (0.190952, 0.190952, 0.190952), (0.19337532, 0.19337532, 0.19337532), (0.19679457, 0.19679457, 0.19679457), (0.10334339, 0.10334339, 0.10334339), (0.17556727, 0.17556727, 0.17556727), (0.109160386, 0.109160386, 0.109160386), (0.16814616, 0.16814616, 0.16814616), (0.18584998, 0.18584998, 0.18584998), (0.18098828, 0.18098828, 0.18098828), (0.103529386, 0.103529386, 0.103529386), (0.12700284, 0.12700284, 0.12700284), (0.13043144, 0.13043144, 0.13043144), (0.16309232, 0.16309232, 0.16309232), (0.14710145, 0.14710145, 0.14710145), (0.18220225, 0.18220225, 0.18220225), (0.19372457, 0.19372457, 0.19372457), (0.1465819, 0.1465819, 0.1465819), (0.18756133, 0.18756133, 0.18756133), (0.13876925, 0.13876925, 0.13876925), (0.104977384, 0.104977384, 0.104977384), (0.16696888, 0.16696888, 0.16696888), (0.13962445, 0.13962445, 0.13962445), (0.15586458, 0.15586458, 0.15586458), (0.102442525, 0.102442525, 0.102442525), (0.13659693, 0.13659693, 0.13659693), (0.19891, 0.19891, 0.19891), (0.19837989, 0.19837989, 0.19837989), (0.13991955, 0.13991955, 0.13991955), (0.17686398, 0.17686398, 0.17686398), (0.101206616, 0.101206616, 0.101206616), (0.13854046, 0.13854046, 0.13854046), (0.18138227, 0.18138227, 0.18138227), (0.10703174, 0.10703174, 0.10703174), (0.121638566, 0.121638566, 0.121638566), (0.16535184, 0.16535184, 0.16535184), (0.13047335, 0.13047335, 0.13047335), (0.11087233, 0.11087233, 0.11087233), (0.100131296, 0.100131296, 0.100131296), (0.19520906, 0.19520906, 0.19520906), (0.11774472, 0.11774472, 0.11774472), (0.18132432, 0.18132432, 0.18132432), (0.12041959, 0.12041959, 0.12041959), (0.19871294, 0.19871294, 0.19871294), (0.13350035, 0.13350035, 0.13350035), (0.114277594, 0.114277594, 0.114277594), (0.18774438, 0.18774438, 0.18774438), (0.11237246, 0.11237246, 0.11237246), (0.15174346, 0.15174346, 0.15174346), (0.13342075, 0.13342075, 0.13342075), (0.14047433, 0.14047433, 0.14047433), (0.18736804, 0.18736804, 0.18736804), (0.19306973, 0.19306973, 0.19306973), (0.19271255, 0.19271255, 0.19271255), (0.18320185, 0.18320185, 0.18320185), (0.15679277, 0.15679277, 0.15679277), (0.12971446, 0.12971446, 0.12971446), (0.17852679, 0.17852679, 0.17852679), (0.18606336, 0.18606336, 0.18606336), (0.16333368, 0.16333368, 0.16333368), (0.10447112, 0.104471125, 0.104471125), (0.12389205, 0.12389205, 0.12389205), (0.117913395, 0.117913395, 0.117913395), (0.11551177, 0.11551177, 0.11551177)],
-            2: [(0.14172319, 0.14172319, 0.14172319), (0.10029252, 0.10029252, 0.10029252), (0.18134323, 0.18134323, 0.18134323), (0.12623805, 0.12623805, 0.12623805), (0.10022483, 0.10022483, 0.10022483), (0.11894938, 0.11894938, 0.11894938), (0.11161965, 0.11161965, 0.11161965), (0.16177759, 0.16177759, 0.16177759), (0.19162112, 0.19162112, 0.19162112), (0.15199168, 0.15199168, 0.15199168), (0.10936818, 0.10936818, 0.10936818), (0.1119827, 0.111982696, 0.111982696), (0.19744946, 0.19744946, 0.19744946), (0.19223702, 0.19223702, 0.19223702), (0.114910774, 0.114910774, 0.114910774), (0.10862304, 0.10862304, 0.10862304), (0.18047523, 0.18047523, 0.18047523), (0.18691078, 0.18691078, 0.18691078), (0.18762624, 0.18762624, 0.18762624), (0.102495134, 0.102495134, 0.102495134), (0.17481448, 0.17481448, 0.17481448), (0.13745625, 0.13745625, 0.13745625), (0.1169585, 0.1169585, 0.1169585), (0.13553365, 0.13553365, 0.13553365), (0.16723502, 0.16723502, 0.16723502), (0.19425061, 0.19425061, 0.19425061), (0.16002521, 0.16002521, 0.16002521), (0.1391068, 0.1391068, 0.1391068), (0.18550682, 0.18550682, 0.18550682), (0.10525586, 0.10525586, 0.10525586), (0.19929136, 0.19929136, 0.19929136), (0.1722306, 0.1722306, 0.1722306), (0.19501713, 0.19501713, 0.19501713), (0.19302395, 0.19302395, 0.19302395), (0.15721127, 0.15721127, 0.15721127), (0.19952482, 0.19952482, 0.19952482), (0.12173809, 0.12173809, 0.1217381), (0.19381942, 0.19381942, 0.19381942), (0.13378444, 0.13378444, 0.13378444), (0.19948044, 0.19948044, 0.19948044), (0.12811777, 0.12811777, 0.12811777), (0.1212849, 0.1212849, 0.1212849), (0.17964527, 0.17964527, 0.17964527), (0.13431281, 0.13431281, 0.13431281), (0.1582495, 0.1582495, 0.1582495), (0.18623838, 0.18623838, 0.18623838), (0.18141069, 0.18141069, 0.18141069), (0.11646598, 0.11646598, 0.11646598), (0.16494167, 0.16494167, 0.16494167), (0.13916416, 0.13916416, 0.13916416), (0.13589337, 0.13589337, 0.13589337), (0.13020925, 0.13020925, 0.13020925), (0.19353762, 0.19353762, 0.19353762), (0.19642974, 0.19642974, 0.19642974), (0.17435914, 0.17435914, 0.17435914), (0.1696752, 0.1696752, 0.1696752), (0.18771876, 0.18771876, 0.18771876), (0.14476237, 0.14476237, 0.14476237), (0.114282645, 0.114282645, 0.114282645), (0.10797047, 0.10797047, 0.10797047), (0.15342611, 0.15342611, 0.15342611), (0.10040834, 0.10040834, 0.10040834), (0.10364749, 0.10364749, 0.10364749), (0.18283775, 0.18283775, 0.18283775), (0.11108214, 0.11108214, 0.11108214), (0.14308448, 0.14308448, 0.14308448), (0.121854395, 0.121854395, 0.121854395), (0.11287031, 0.11287031, 0.11287031), (0.1706352, 0.1706352, 0.1706352), (0.16552845, 0.16552845, 0.16552845), (0.15867262, 0.15867262, 0.15867262), (0.10241511, 0.10241511, 0.10241511), (0.17420247, 0.17420247, 0.17420247), (0.1869008, 0.1869008, 0.1869008), (0.13819286, 0.13819286, 0.13819286), (0.18617925, 0.18617925, 0.18617925), (0.18544312, 0.18544312, 0.18544312), (0.16783936, 0.16783936, 0.16783936), (0.17528448, 0.17528448, 0.17528448), (0.15134707, 0.15134707, 0.15134707), (0.13206375, 0.13206375, 0.13206375), (0.16306287, 0.16306287, 0.16306287), (0.1575478, 0.1575478, 0.1575478), (0.1000997, 0.1000997, 0.1000997), (0.10777086, 0.10777086, 0.10777086), (0.14056571, 0.14056571, 0.14056571), (0.13948797, 0.13948797, 0.13948797), (0.12682317, 0.12682317, 0.12682317), (0.165428, 0.165428, 0.165428), (0.16638756, 0.16638756, 0.16638756), (0.101214744, 0.101214744, 0.101214744), (0.14729013, 0.14729013, 0.14729013), (0.17486918, 0.17486918, 0.17486918), (0.18100545, 0.18100545, 0.18100545), (0.15057571, 0.15057571, 0.15057571), (0.17140004, 0.17140004, 0.17140004), (0.13447945, 0.13447945, 0.13447945), (0.1981385, 0.1981385, 0.1981385), (0.15300599, 0.15300599, 0.15300599), (0.17432371, 0.17432371, 0.17432371), (0.12847671, 0.12847671, 0.12847671), (0.1300669, 0.1300669, 0.1300669), (0.10183531, 0.10183531, 0.10183531), (0.1709834, 0.1709834, 0.1709834), (0.11164422, 0.11164422, 0.11164422), (0.19489469, 0.19489469, 0.19489469), (0.12366511, 0.12366511, 0.12366511), (0.18187001, 0.18187001, 0.18187001), (0.15558699, 0.15558699, 0.15558699), (0.17849174, 0.17849174, 0.17849174), (0.19696003, 0.19696003, 0.19696003), (0.18857506, 0.18857506, 0.18857506), (0.10675031, 0.10675031, 0.10675031), (0.13809735, 0.13809735, 0.13809735), (0.18451662, 0.18451662, 0.18451662), (0.19021323, 0.19021323, 0.19021323), (0.13331154, 0.13331154, 0.13331154), (0.14633088, 0.14633088, 0.14633088), (0.15028134, 0.15028134, 0.15028134), (0.171864, 0.171864, 0.171864), (0.11130679, 0.11130679, 0.11130679), (0.1502267, 0.1502267, 0.1502267), (0.13423976, 0.13423976, 0.13423976), (0.18497759, 0.18497759, 0.18497759), (0.1736241, 0.1736241, 0.1736241), (0.12646134, 0.12646134, 0.12646134), (0.15853566, 0.15853566, 0.15853566), (0.17965382, 0.17965382, 0.17965382), (0.14735726, 0.14735726, 0.14735726), (0.13624248, 0.13624248, 0.13624248), (0.15266715, 0.15266715, 0.15266715), (0.19821939, 0.19821939, 0.19821939), (0.12530683, 0.12530683, 0.12530683), (0.19621356, 0.19621356, 0.19621356), (0.14824396, 0.14824396, 0.14824396), (0.15224026, 0.15224026, 0.15224026), (0.100351825, 0.100351825, 0.100351825), (0.17223835, 0.17223835, 0.17223835), (0.19334838, 0.19334838, 0.19334838), (0.100710765, 0.100710765, 0.100710765), (0.14842908, 0.14842908, 0.14842908), (0.13557956, 0.13557956, 0.13557956), (0.113662355, 0.113662355, 0.113662355), (0.15893427, 0.15893427, 0.15893427), (0.12692566, 0.12692566, 0.12692566), (0.16886988, 0.16886988, 0.16886988), (0.16833937, 0.16833937, 0.16833937), (0.17621502, 0.17621502, 0.17621502), (0.1782211, 0.1782211, 0.1782211), (0.11921705, 0.11921705, 0.11921705), (0.15935126, 0.15935126, 0.15935126), (0.16305056, 0.16305056, 0.16305056), (0.16741821, 0.16741821, 0.16741821), (0.11838294, 0.11838293, 0.11838293), (0.16467193, 0.16467193, 0.16467193), (0.17874432, 0.17874432, 0.17874432), (0.16803929, 0.16803929, 0.16803929), (0.111399114, 0.111399114, 0.111399114), (0.14289968, 0.14289968, 0.14289968), (0.10486378, 0.10486378, 0.10486378), (0.121137574, 0.121137574, 0.121137574), (0.1772308, 0.1772308, 0.1772308), (0.19579127, 0.19579127, 0.19579127), (0.17045128, 0.17045128, 0.17045128), (0.12121004, 0.121210046, 0.12121004), (0.1213617, 0.1213617, 0.1213617), (0.10162039, 0.1016204, 0.1016204), (0.18314496, 0.18314496, 0.18314496), (0.11487794, 0.11487794, 0.11487794), (0.15579394, 0.15579394, 0.15579394), (0.14748974, 0.14748974, 0.14748974), (0.11478952, 0.11478952, 0.11478952), (0.10363876, 0.10363876, 0.10363876), (0.17962754, 0.17962754, 0.17962754), (0.13167714, 0.13167714, 0.13167714), (0.11226555, 0.11226555, 0.11226555), (0.12721995, 0.12721995, 0.12721995), (0.17548874, 0.17548874, 0.17548874), (0.13268617, 0.13268617, 0.13268617), (0.18352199, 0.18352199, 0.18352199), (0.1878573, 0.1878573, 0.1878573), (0.16555044, 0.16555044, 0.16555044), (0.1713369, 0.1713369, 0.1713369), (0.18597813, 0.18597813, 0.18597813), (0.13642877, 0.13642877, 0.13642877), (0.19658181, 0.19658181, 0.19658181), (0.11448326, 0.11448326, 0.11448326), (0.13080463, 0.13080463, 0.13080463), (0.16562164, 0.16562164, 0.16562164), (0.10473912, 0.10473912, 0.10473912), (0.117193975, 0.117193975, 0.117193975), (0.14800587, 0.14800587, 0.14800587), (0.12771049, 0.12771049, 0.12771049), (0.12175891, 0.12175891, 0.12175891), (0.19834013, 0.19834013, 0.19834013), (0.11507412, 0.11507412, 0.11507412), (0.14767495, 0.14767495, 0.14767495), (0.1103148, 0.1103148, 0.110314794), (0.1574498, 0.1574498, 0.1574498), (0.12407453, 0.12407453, 0.12407453), (0.14487734, 0.14487734, 0.14487734), (0.1517503, 0.1517503, 0.1517503), (0.16031215, 0.16031215, 0.16031215), (0.15580858, 0.15580858, 0.15580858), (0.19662309, 0.19662309, 0.19662309), (0.17229593, 0.17229593, 0.17229593), (0.10967554, 0.10967554, 0.10967554), (0.14279902, 0.14279902, 0.14279902), (0.1367748, 0.1367748, 0.1367748), (0.17064096, 0.17064096, 0.17064096), (0.10903813, 0.10903813, 0.10903813), (0.13121553, 0.13121553, 0.13121553), (0.1096869, 0.1096869, 0.1096869), (0.10164373, 0.10164373, 0.10164373), (0.11891883, 0.11891883, 0.11891883), (0.18912748, 0.18912748, 0.18912748), (0.17561358, 0.17561358, 0.17561358), (0.17143068, 0.17143068, 0.17143068), (0.14112458, 0.14112458, 0.14112458), (0.111915305, 0.111915305, 0.111915305), (0.17877343, 0.17877343, 0.17877343), (0.106223, 0.106223, 0.106223), (0.13184862, 0.13184862, 0.13184862), (0.10847034, 0.10847034, 0.10847034), (0.19618687, 0.19618687, 0.19618687), (0.15895997, 0.15895997, 0.15895997), (0.13853732, 0.13853732, 0.13853732), (0.10795692, 0.10795692, 0.10795692), (0.19710794, 0.19710794, 0.19710794), (0.14396106, 0.14396106, 0.14396106), (0.1776239, 0.1776239, 0.1776239), (0.18442112, 0.18442112, 0.18442112), (0.13195619, 0.13195619, 0.13195619), (0.19108248, 0.19108248, 0.19108248), (0.14590731, 0.14590731, 0.14590731), (0.10174266, 0.10174266, 0.10174266), (0.13995983, 0.13995983, 0.13995983), (0.13090616, 0.13090616, 0.13090616), (0.14151147, 0.14151147, 0.14151147), (0.12882674, 0.12882674, 0.12882674), (0.12586424, 0.12586424, 0.12586424), (0.16837966, 0.16837966, 0.16837966), (0.12348554, 0.12348554, 0.12348554), (0.100051574, 0.100051574, 0.100051574), (0.18468678, 0.18468678, 0.18468678), (0.1815013, 0.1815013, 0.1815013), (0.19576788, 0.19576788, 0.19576788), (0.16287561, 0.16287561, 0.16287561), (0.14857875, 0.14857875, 0.14857875), (0.16071053, 0.16071053, 0.16071053), (0.17977396, 0.17977396, 0.17977396), (0.1344373, 0.1344373, 0.1344373), (0.12265878, 0.12265878, 0.12265878), (0.18105084, 0.18105084, 0.18105084), (0.11038053, 0.11038053, 0.11038053), (0.16433293, 0.16433293, 0.16433293), (0.18472075, 0.18472075, 0.18472075), (0.11469215, 0.11469215, 0.11469215), (0.10712121, 0.10712121, 0.10712121), (0.15059352, 0.15059352, 0.15059352), (0.1425719, 0.1425719, 0.1425719), (0.16783395, 0.16783395, 0.16783395), (0.19678757, 0.19678757, 0.19678757), (0.14226696, 0.14226696, 0.14226696), (0.14613333, 0.14613333, 0.14613333), (0.10262809, 0.10262809, 0.10262809), (0.18386772, 0.18386772, 0.18386772), (0.13754506, 0.13754506, 0.13754506), (0.19104421, 0.19104421, 0.1910442), (0.19941677, 0.19941677, 0.19941677), (0.17862856, 0.17862856, 0.17862856), (0.12512408, 0.12512408, 0.12512408), (0.1563856, 0.1563856, 0.1563856), (0.10410943, 0.10410943, 0.10410943), (0.17045668, 0.17045668, 0.17045668), (0.10356156, 0.10356156, 0.10356156), (0.1805349, 0.1805349, 0.1805349), (0.11961666, 0.11961666, 0.11961666), (0.10780964, 0.10780964, 0.10780964), (0.17932215, 0.17932215, 0.17932215), (0.16883194, 0.16883194, 0.16883194), (0.19077508, 0.19077507, 0.19077507), (0.15793861, 0.15793861, 0.15793861), (0.111792766, 0.11179276, 0.11179276), (0.17236096, 0.17236096, 0.17236096), (0.15511994, 0.15511994, 0.15511994), (0.11863964, 0.11863964, 0.11863964), (0.11032846, 0.11032846, 0.11032846), (0.11355084, 0.11355084, 0.11355084), (0.10354251, 0.10354251, 0.10354251), (0.15110308, 0.15110308, 0.15110308), (0.1716482, 0.1716482, 0.1716482), (0.11343519, 0.11343519, 0.11343519), (0.11484221, 0.11484221, 0.11484221), (0.15928078, 0.15928078, 0.15928078), (0.16131136, 0.16131136, 0.16131136), (0.19311708, 0.19311708, 0.19311708), (0.12065772, 0.12065772, 0.12065772), (0.19413377, 0.19413377, 0.19413377), (0.13790147, 0.13790147, 0.13790147), (0.19463432, 0.19463432, 0.19463432), (0.16946983, 0.16946983, 0.16946983), (0.16419846, 0.16419846, 0.16419846), (0.14034523, 0.14034523, 0.14034523), (0.15334319, 0.15334319, 0.15334319), (0.1724496, 0.1724496, 0.1724496), (0.13479161, 0.13479161, 0.13479161), (0.18435813, 0.18435813, 0.18435813), (0.1639334, 0.1639334, 0.1639334), (0.15776677, 0.15776677, 0.15776677), (0.14450797, 0.14450797, 0.14450797), (0.122769214, 0.122769214, 0.122769214), (0.17423299, 0.17423299, 0.17423299), (0.19037694, 0.19037694, 0.19037694), (0.11361282, 0.11361282, 0.11361282), (0.14458582, 0.14458582, 0.14458582), (0.14501567, 0.14501567, 0.14501567), (0.14522895, 0.14522895, 0.14522895), (0.12436036, 0.12436036, 0.12436036), (0.13267854, 0.13267854, 0.13267854), (0.13636823, 0.13636823, 0.13636823), (0.17360517, 0.17360517, 0.17360517), (0.19406614, 0.19406614, 0.19406614), (0.149205, 0.149205, 0.149205), (0.10046536, 0.10046536, 0.10046536), (0.18648931, 0.18648931, 0.18648931), (0.16292405, 0.16292405, 0.16292405), (0.1428356, 0.1428356, 0.1428356), (0.19358882, 0.19358882, 0.19358882), (0.17513084, 0.17513084, 0.17513084), (0.13694672, 0.13694672, 0.13694672), (0.11225305, 0.11225305, 0.11225305), (0.11133621, 0.11133621, 0.11133621), (0.19783857, 0.19783857, 0.19783857), (0.15065423, 0.15065423, 0.15065423), (0.14954138, 0.14954138, 0.14954138), (0.1107749, 0.1107749, 0.1107749), (0.19611081, 0.19611081, 0.19611081), (0.18178824, 0.18178824, 0.18178824), (0.1639154, 0.1639154, 0.1639154), (0.18216372, 0.18216372, 0.18216372), (0.15550277, 0.15550277, 0.15550277), (0.18769147, 0.18769147, 0.18769147), (0.18095958, 0.18095958, 0.18095958), (0.19253144, 0.19253144, 0.19253144), (0.18900585, 0.18900585, 0.18900585), (0.13973562, 0.13973562, 0.13973562), (0.14814948, 0.14814948, 0.14814948), (0.18449296, 0.18449296, 0.18449296), (0.11284067, 0.11284067, 0.11284067), (0.101560704, 0.101560704, 0.101560704), (0.16244091, 0.16244091, 0.16244091), (0.17782182, 0.17782182, 0.17782182), (0.122980155, 0.122980155, 0.122980155), (0.12862383, 0.12862383, 0.12862383), (0.17066385, 0.17066385, 0.17066385), (0.10373427, 0.10373427, 0.10373427), (0.12717757, 0.12717757, 0.12717757), (0.10348429, 0.10348429, 0.103484295), (0.19692996, 0.19692996, 0.19692996), (0.10615195, 0.106151946, 0.10615195), (0.18180639, 0.18180639, 0.18180639), (0.19755353, 0.19755353, 0.19755353), (0.18082553, 0.18082553, 0.18082553), (0.18312263, 0.18312263, 0.18312263), (0.19133726, 0.19133726, 0.19133726), (0.13329647, 0.13329647, 0.13329647), (0.19921127, 0.19921127, 0.19921127), (0.14216883, 0.14216883, 0.14216883), (0.12793967, 0.12793967, 0.12793967), (0.17537344, 0.17537344, 0.17537344), (0.18933117, 0.18933117, 0.18933117), (0.105730586, 0.105730586, 0.105730586), (0.19162282, 0.19162282, 0.19162282), (0.19230664, 0.19230664, 0.19230664), (0.18816158, 0.18816158, 0.18816158), (0.1622675, 0.1622675, 0.1622675), (0.12614508, 0.12614508, 0.12614508), (0.18374053, 0.18374053, 0.18374053), (0.14540528, 0.14540528, 0.14540528), (0.13605313, 0.13605313, 0.13605313), (0.19362248, 0.19362248, 0.19362248), (0.12749226, 0.12749226, 0.12749226), (0.1415241, 0.1415241, 0.1415241), (0.10816063, 0.10816063, 0.10816063), (0.17168577, 0.17168577, 0.17168577), (0.18647833, 0.18647833, 0.18647833), (0.15950616, 0.15950616, 0.15950616), (0.19573213, 0.19573213, 0.19573213), (0.1837504, 0.1837504, 0.1837504), (0.13568276, 0.13568276, 0.13568276), (0.19487908, 0.19487908, 0.19487908), (0.10879818, 0.10879818, 0.10879818), (0.13713503, 0.13713503, 0.13713503), (0.111651875, 0.111651875, 0.111651875), (0.19634676, 0.19634676, 0.19634676), (0.17455313, 0.17455313, 0.17455313), (0.19435436, 0.19435436, 0.19435436), (0.104394, 0.104394, 0.104394), (0.17708337, 0.17708337, 0.17708337), (0.15122269, 0.15122269, 0.15122269), (0.13346812, 0.13346812, 0.13346812), (0.16913584, 0.16913584, 0.16913584), (0.18239708, 0.18239708, 0.18239708), (0.1473836, 0.1473836, 0.1473836), (0.17306608, 0.17306608, 0.17306608), (0.112129405, 0.112129405, 0.112129405), (0.12645203, 0.12645203, 0.12645203), (0.1853979, 0.1853979, 0.1853979), (0.12736014, 0.12736014, 0.12736014), (0.19915605, 0.19915605, 0.19915605), (0.18204685, 0.18204683, 0.18204683), (0.16520208, 0.16520208, 0.16520208), (0.11824369, 0.118243694, 0.118243694), (0.15308033, 0.15308033, 0.15308033), (0.12590967, 0.12590967, 0.12590967), (0.14154476, 0.14154476, 0.14154476), (0.10246736, 0.10246736, 0.102467366), (0.17029068, 0.17029068, 0.17029068), (0.12534645, 0.12534645, 0.12534645), (0.19121689, 0.19121689, 0.19121689), (0.12854327, 0.12854327, 0.12854327), (0.1907922, 0.1907922, 0.1907922), (0.19230428, 0.19230428, 0.19230428), (0.14528608, 0.14528608, 0.14528608), (0.10790823, 0.10790823, 0.10790823), (0.1574128, 0.1574128, 0.1574128), (0.15500368, 0.15500368, 0.15500368), (0.1764029, 0.1764029, 0.1764029), (0.15347946, 0.15347946, 0.15347946), (0.11467518, 0.11467518, 0.11467518), (0.16159739, 0.16159739, 0.16159739), (0.15059125, 0.15059125, 0.15059125), (0.19879603, 0.19879603, 0.19879603), (0.14504734, 0.14504734, 0.14504734), (0.16576114, 0.16576114, 0.16576114), (0.15047891, 0.15047891, 0.15047891), (0.190952, 0.190952, 0.190952), (0.19337532, 0.19337532, 0.19337532), (0.19679457, 0.19679457, 0.19679457), (0.10334339, 0.10334339, 0.10334339), (0.17556727, 0.17556727, 0.17556727), (0.109160386, 0.109160386, 0.109160386), (0.16814616, 0.16814616, 0.16814616), (0.18584998, 0.18584998, 0.18584998), (0.18098828, 0.18098828, 0.18098828), (0.103529386, 0.103529386, 0.103529386), (0.12700284, 0.12700284, 0.12700284), (0.13043144, 0.13043144, 0.13043144), (0.16309232, 0.16309232, 0.16309232), (0.14710145, 0.14710145, 0.14710145), (0.18220225, 0.18220225, 0.18220225), (0.19372457, 0.19372457, 0.19372457), (0.1465819, 0.1465819, 0.1465819), (0.18756133, 0.18756133, 0.18756133), (0.13876925, 0.13876925, 0.13876925), (0.104977384, 0.104977384, 0.104977384), (0.16696888, 0.16696888, 0.16696888), (0.13962445, 0.13962445, 0.13962445), (0.15586458, 0.15586458, 0.15586458), (0.102442525, 0.102442525, 0.102442525), (0.13659693, 0.13659693, 0.13659693), (0.19891, 0.19891, 0.19891), (0.19837989, 0.19837989, 0.19837989), (0.13991955, 0.13991955, 0.13991955), (0.17686398, 0.17686398, 0.17686398), (0.101206616, 0.101206616, 0.101206616), (0.13854046, 0.13854046, 0.13854046), (0.18138227, 0.18138227, 0.18138227), (0.10703174, 0.10703174, 0.10703174), (0.121638566, 0.121638566, 0.121638566), (0.16535184, 0.16535184, 0.16535184), (0.13047335, 0.13047335, 0.13047335), (0.11087233, 0.11087233, 0.11087233), (0.100131296, 0.100131296, 0.100131296), (0.19520906, 0.19520906, 0.19520906), (0.11774472, 0.11774472, 0.11774472), (0.18132432, 0.18132432, 0.18132432), (0.12041959, 0.12041959, 0.12041959), (0.19871294, 0.19871294, 0.19871294), (0.13350035, 0.13350035, 0.13350035), (0.114277594, 0.114277594, 0.114277594), (0.18774438, 0.18774438, 0.18774438), (0.11237246, 0.11237246, 0.11237246), (0.15174346, 0.15174346, 0.15174346), (0.13342075, 0.13342075, 0.13342075), (0.14047433, 0.14047433, 0.14047433), (0.18736804, 0.18736804, 0.18736804), (0.19306973, 0.19306973, 0.19306973), (0.19271255, 0.19271255, 0.19271255), (0.18320185, 0.18320185, 0.18320185), (0.15679277, 0.15679277, 0.15679277), (0.12971446, 0.12971446, 0.12971446), (0.17852679, 0.17852679, 0.17852679), (0.18606336, 0.18606336, 0.18606336), (0.16333368, 0.16333368, 0.16333368), (0.10447112, 0.104471125, 0.104471125), (0.12389205, 0.12389205, 0.12389205), (0.117913395, 0.117913395, 0.117913395), (0.11551177, 0.11551177, 0.11551177)],
-            3: [(0.14172319, 0.14172319, 0.14172319), (0.10029252, 0.10029252, 0.10029252), (0.18134323, 0.18134323, 0.18134323), (0.12623805, 0.12623805, 0.12623805), (0.10022483, 0.10022483, 0.10022483), (0.11894938, 0.11894938, 0.11894938), (0.11161965, 0.11161965, 0.11161965), (0.16177759, 0.16177759, 0.16177759), (0.19162112, 0.19162112, 0.19162112), (0.15199168, 0.15199168, 0.15199168), (0.10936818, 0.10936818, 0.10936818), (0.1119827, 0.111982696, 0.111982696), (0.19744946, 0.19744946, 0.19744946), (0.19223702, 0.19223702, 0.19223702), (0.114910774, 0.114910774, 0.114910774), (0.10862304, 0.10862304, 0.10862304), (0.18047523, 0.18047523, 0.18047523), (0.18691078, 0.18691078, 0.18691078), (0.18762624, 0.18762624, 0.18762624), (0.102495134, 0.102495134, 0.102495134), (0.17481448, 0.17481448, 0.17481448), (0.13745625, 0.13745625, 0.13745625), (0.1169585, 0.1169585, 0.1169585), (0.13553365, 0.13553365, 0.13553365), (0.16723502, 0.16723502, 0.16723502), (0.19425061, 0.19425061, 0.19425061), (0.16002521, 0.16002521, 0.16002521), (0.1391068, 0.1391068, 0.1391068), (0.18550682, 0.18550682, 0.18550682), (0.10525586, 0.10525586, 0.10525586), (0.19929136, 0.19929136, 0.19929136), (0.1722306, 0.1722306, 0.1722306), (0.19501713, 0.19501713, 0.19501713), (0.19302395, 0.19302395, 0.19302395), (0.15721127, 0.15721127, 0.15721127), (0.19952482, 0.19952482, 0.19952482), (0.12173809, 0.12173809, 0.1217381), (0.19381942, 0.19381942, 0.19381942), (0.13378444, 0.13378444, 0.13378444), (0.19948044, 0.19948044, 0.19948044), (0.12811777, 0.12811777, 0.12811777), (0.1212849, 0.1212849, 0.1212849), (0.17964527, 0.17964527, 0.17964527), (0.13431281, 0.13431281, 0.13431281), (0.1582495, 0.1582495, 0.1582495), (0.18623838, 0.18623838, 0.18623838), (0.18141069, 0.18141069, 0.18141069), (0.11646598, 0.11646598, 0.11646598), (0.16494167, 0.16494167, 0.16494167), (0.13916416, 0.13916416, 0.13916416), (0.13589337, 0.13589337, 0.13589337), (0.13020925, 0.13020925, 0.13020925), (0.19353762, 0.19353762, 0.19353762), (0.19642974, 0.19642974, 0.19642974), (0.17435914, 0.17435914, 0.17435914), (0.1696752, 0.1696752, 0.1696752), (0.18771876, 0.18771876, 0.18771876), (0.14476237, 0.14476237, 0.14476237), (0.114282645, 0.114282645, 0.114282645), (0.10797047, 0.10797047, 0.10797047), (0.15342611, 0.15342611, 0.15342611), (0.10040834, 0.10040834, 0.10040834), (0.10364749, 0.10364749, 0.10364749), (0.18283775, 0.18283775, 0.18283775), (0.11108214, 0.11108214, 0.11108214), (0.14308448, 0.14308448, 0.14308448), (0.121854395, 0.121854395, 0.121854395), (0.11287031, 0.11287031, 0.11287031), (0.1706352, 0.1706352, 0.1706352), (0.16552845, 0.16552845, 0.16552845), (0.15867262, 0.15867262, 0.15867262), (0.10241511, 0.10241511, 0.10241511), (0.17420247, 0.17420247, 0.17420247), (0.1869008, 0.1869008, 0.1869008), (0.13819286, 0.13819286, 0.13819286), (0.18617925, 0.18617925, 0.18617925), (0.18544312, 0.18544312, 0.18544312), (0.16783936, 0.16783936, 0.16783936), (0.17528448, 0.17528448, 0.17528448), (0.15134707, 0.15134707, 0.15134707), (0.13206375, 0.13206375, 0.13206375), (0.16306287, 0.16306287, 0.16306287), (0.1575478, 0.1575478, 0.1575478), (0.1000997, 0.1000997, 0.1000997), (0.10777086, 0.10777086, 0.10777086), (0.14056571, 0.14056571, 0.14056571), (0.13948797, 0.13948797, 0.13948797), (0.12682317, 0.12682317, 0.12682317), (0.165428, 0.165428, 0.165428), (0.16638756, 0.16638756, 0.16638756), (0.101214744, 0.101214744, 0.101214744), (0.14729013, 0.14729013, 0.14729013), (0.17486918, 0.17486918, 0.17486918), (0.18100545, 0.18100545, 0.18100545), (0.15057571, 0.15057571, 0.15057571), (0.17140004, 0.17140004, 0.17140004), (0.13447945, 0.13447945, 0.13447945), (0.1981385, 0.1981385, 0.1981385), (0.15300599, 0.15300599, 0.15300599), (0.17432371, 0.17432371, 0.17432371), (0.12847671, 0.12847671, 0.12847671), (0.1300669, 0.1300669, 0.1300669), (0.10183531, 0.10183531, 0.10183531), (0.1709834, 0.1709834, 0.1709834), (0.11164422, 0.11164422, 0.11164422), (0.19489469, 0.19489469, 0.19489469), (0.12366511, 0.12366511, 0.12366511), (0.18187001, 0.18187001, 0.18187001), (0.15558699, 0.15558699, 0.15558699), (0.17849174, 0.17849174, 0.17849174), (0.19696003, 0.19696003, 0.19696003), (0.18857506, 0.18857506, 0.18857506), (0.10675031, 0.10675031, 0.10675031), (0.13809735, 0.13809735, 0.13809735), (0.18451662, 0.18451662, 0.18451662), (0.19021323, 0.19021323, 0.19021323), (0.13331154, 0.13331154, 0.13331154), (0.14633088, 0.14633088, 0.14633088), (0.15028134, 0.15028134, 0.15028134), (0.171864, 0.171864, 0.171864), (0.11130679, 0.11130679, 0.11130679), (0.1502267, 0.1502267, 0.1502267), (0.13423976, 0.13423976, 0.13423976), (0.18497759, 0.18497759, 0.18497759), (0.1736241, 0.1736241, 0.1736241), (0.12646134, 0.12646134, 0.12646134), (0.15853566, 0.15853566, 0.15853566), (0.17965382, 0.17965382, 0.17965382), (0.14735726, 0.14735726, 0.14735726), (0.13624248, 0.13624248, 0.13624248), (0.15266715, 0.15266715, 0.15266715), (0.19821939, 0.19821939, 0.19821939), (0.12530683, 0.12530683, 0.12530683), (0.19621356, 0.19621356, 0.19621356), (0.14824396, 0.14824396, 0.14824396), (0.15224026, 0.15224026, 0.15224026), (0.100351825, 0.100351825, 0.100351825), (0.17223835, 0.17223835, 0.17223835), (0.19334838, 0.19334838, 0.19334838), (0.100710765, 0.100710765, 0.100710765), (0.14842908, 0.14842908, 0.14842908), (0.13557956, 0.13557956, 0.13557956), (0.113662355, 0.113662355, 0.113662355), (0.15893427, 0.15893427, 0.15893427), (0.12692566, 0.12692566, 0.12692566), (0.16886988, 0.16886988, 0.16886988), (0.16833937, 0.16833937, 0.16833937), (0.17621502, 0.17621502, 0.17621502), (0.1782211, 0.1782211, 0.1782211), (0.11921705, 0.11921705, 0.11921705), (0.15935126, 0.15935126, 0.15935126), (0.16305056, 0.16305056, 0.16305056), (0.16741821, 0.16741821, 0.16741821), (0.11838294, 0.11838293, 0.11838293), (0.16467193, 0.16467193, 0.16467193), (0.17874432, 0.17874432, 0.17874432), (0.16803929, 0.16803929, 0.16803929), (0.111399114, 0.111399114, 0.111399114), (0.14289968, 0.14289968, 0.14289968), (0.10486378, 0.10486378, 0.10486378), (0.121137574, 0.121137574, 0.121137574), (0.1772308, 0.1772308, 0.1772308), (0.19579127, 0.19579127, 0.19579127), (0.17045128, 0.17045128, 0.17045128), (0.12121004, 0.121210046, 0.12121004), (0.1213617, 0.1213617, 0.1213617), (0.10162039, 0.1016204, 0.1016204), (0.18314496, 0.18314496, 0.18314496), (0.11487794, 0.11487794, 0.11487794), (0.15579394, 0.15579394, 0.15579394), (0.14748974, 0.14748974, 0.14748974), (0.11478952, 0.11478952, 0.11478952), (0.10363876, 0.10363876, 0.10363876), (0.17962754, 0.17962754, 0.17962754), (0.13167714, 0.13167714, 0.13167714), (0.11226555, 0.11226555, 0.11226555), (0.12721995, 0.12721995, 0.12721995), (0.17548874, 0.17548874, 0.17548874), (0.13268617, 0.13268617, 0.13268617), (0.18352199, 0.18352199, 0.18352199), (0.1878573, 0.1878573, 0.1878573), (0.16555044, 0.16555044, 0.16555044), (0.1713369, 0.1713369, 0.1713369), (0.18597813, 0.18597813, 0.18597813), (0.13642877, 0.13642877, 0.13642877), (0.19658181, 0.19658181, 0.19658181), (0.11448326, 0.11448326, 0.11448326), (0.13080463, 0.13080463, 0.13080463), (0.16562164, 0.16562164, 0.16562164), (0.10473912, 0.10473912, 0.10473912), (0.117193975, 0.117193975, 0.117193975), (0.14800587, 0.14800587, 0.14800587), (0.12771049, 0.12771049, 0.12771049), (0.12175891, 0.12175891, 0.12175891), (0.19834013, 0.19834013, 0.19834013), (0.11507412, 0.11507412, 0.11507412), (0.14767495, 0.14767495, 0.14767495), (0.1103148, 0.1103148, 0.110314794), (0.1574498, 0.1574498, 0.1574498), (0.12407453, 0.12407453, 0.12407453), (0.14487734, 0.14487734, 0.14487734), (0.1517503, 0.1517503, 0.1517503), (0.16031215, 0.16031215, 0.16031215), (0.15580858, 0.15580858, 0.15580858), (0.19662309, 0.19662309, 0.19662309), (0.17229593, 0.17229593, 0.17229593), (0.10967554, 0.10967554, 0.10967554), (0.14279902, 0.14279902, 0.14279902), (0.1367748, 0.1367748, 0.1367748), (0.17064096, 0.17064096, 0.17064096), (0.10903813, 0.10903813, 0.10903813), (0.13121553, 0.13121553, 0.13121553), (0.1096869, 0.1096869, 0.1096869), (0.10164373, 0.10164373, 0.10164373), (0.11891883, 0.11891883, 0.11891883), (0.18912748, 0.18912748, 0.18912748), (0.17561358, 0.17561358, 0.17561358), (0.17143068, 0.17143068, 0.17143068), (0.14112458, 0.14112458, 0.14112458), (0.111915305, 0.111915305, 0.111915305), (0.17877343, 0.17877343, 0.17877343), (0.106223, 0.106223, 0.106223), (0.13184862, 0.13184862, 0.13184862), (0.10847034, 0.10847034, 0.10847034), (0.19618687, 0.19618687, 0.19618687), (0.15895997, 0.15895997, 0.15895997), (0.13853732, 0.13853732, 0.13853732), (0.10795692, 0.10795692, 0.10795692), (0.19710794, 0.19710794, 0.19710794), (0.14396106, 0.14396106, 0.14396106), (0.1776239, 0.1776239, 0.1776239), (0.18442112, 0.18442112, 0.18442112), (0.13195619, 0.13195619, 0.13195619), (0.19108248, 0.19108248, 0.19108248), (0.14590731, 0.14590731, 0.14590731), (0.10174266, 0.10174266, 0.10174266), (0.13995983, 0.13995983, 0.13995983), (0.13090616, 0.13090616, 0.13090616), (0.14151147, 0.14151147, 0.14151147), (0.12882674, 0.12882674, 0.12882674), (0.12586424, 0.12586424, 0.12586424), (0.16837966, 0.16837966, 0.16837966), (0.12348554, 0.12348554, 0.12348554), (0.100051574, 0.100051574, 0.100051574), (0.18468678, 0.18468678, 0.18468678), (0.1815013, 0.1815013, 0.1815013), (0.19576788, 0.19576788, 0.19576788), (0.16287561, 0.16287561, 0.16287561), (0.14857875, 0.14857875, 0.14857875), (0.16071053, 0.16071053, 0.16071053), (0.17977396, 0.17977396, 0.17977396), (0.1344373, 0.1344373, 0.1344373), (0.12265878, 0.12265878, 0.12265878), (0.18105084, 0.18105084, 0.18105084), (0.11038053, 0.11038053, 0.11038053), (0.16433293, 0.16433293, 0.16433293), (0.18472075, 0.18472075, 0.18472075), (0.11469215, 0.11469215, 0.11469215), (0.10712121, 0.10712121, 0.10712121), (0.15059352, 0.15059352, 0.15059352), (0.1425719, 0.1425719, 0.1425719), (0.16783395, 0.16783395, 0.16783395), (0.19678757, 0.19678757, 0.19678757), (0.14226696, 0.14226696, 0.14226696), (0.14613333, 0.14613333, 0.14613333), (0.10262809, 0.10262809, 0.10262809), (0.18386772, 0.18386772, 0.18386772), (0.13754506, 0.13754506, 0.13754506), (0.19104421, 0.19104421, 0.1910442), (0.19941677, 0.19941677, 0.19941677), (0.17862856, 0.17862856, 0.17862856), (0.12512408, 0.12512408, 0.12512408), (0.1563856, 0.1563856, 0.1563856), (0.10410943, 0.10410943, 0.10410943), (0.17045668, 0.17045668, 0.17045668), (0.10356156, 0.10356156, 0.10356156), (0.1805349, 0.1805349, 0.1805349), (0.11961666, 0.11961666, 0.11961666), (0.10780964, 0.10780964, 0.10780964), (0.17932215, 0.17932215, 0.17932215), (0.16883194, 0.16883194, 0.16883194), (0.19077508, 0.19077507, 0.19077507), (0.15793861, 0.15793861, 0.15793861), (0.111792766, 0.11179276, 0.11179276), (0.17236096, 0.17236096, 0.17236096), (0.15511994, 0.15511994, 0.15511994), (0.11863964, 0.11863964, 0.11863964), (0.11032846, 0.11032846, 0.11032846), (0.11355084, 0.11355084, 0.11355084), (0.10354251, 0.10354251, 0.10354251), (0.15110308, 0.15110308, 0.15110308), (0.1716482, 0.1716482, 0.1716482), (0.11343519, 0.11343519, 0.11343519), (0.11484221, 0.11484221, 0.11484221), (0.15928078, 0.15928078, 0.15928078), (0.16131136, 0.16131136, 0.16131136), (0.19311708, 0.19311708, 0.19311708), (0.12065772, 0.12065772, 0.12065772), (0.19413377, 0.19413377, 0.19413377), (0.13790147, 0.13790147, 0.13790147), (0.19463432, 0.19463432, 0.19463432), (0.16946983, 0.16946983, 0.16946983), (0.16419846, 0.16419846, 0.16419846), (0.14034523, 0.14034523, 0.14034523), (0.15334319, 0.15334319, 0.15334319), (0.1724496, 0.1724496, 0.1724496), (0.13479161, 0.13479161, 0.13479161), (0.18435813, 0.18435813, 0.18435813), (0.1639334, 0.1639334, 0.1639334), (0.15776677, 0.15776677, 0.15776677), (0.14450797, 0.14450797, 0.14450797), (0.122769214, 0.122769214, 0.122769214), (0.17423299, 0.17423299, 0.17423299), (0.19037694, 0.19037694, 0.19037694), (0.11361282, 0.11361282, 0.11361282), (0.14458582, 0.14458582, 0.14458582), (0.14501567, 0.14501567, 0.14501567), (0.14522895, 0.14522895, 0.14522895), (0.12436036, 0.12436036, 0.12436036), (0.13267854, 0.13267854, 0.13267854), (0.13636823, 0.13636823, 0.13636823), (0.17360517, 0.17360517, 0.17360517), (0.19406614, 0.19406614, 0.19406614), (0.149205, 0.149205, 0.149205), (0.10046536, 0.10046536, 0.10046536), (0.18648931, 0.18648931, 0.18648931), (0.16292405, 0.16292405, 0.16292405), (0.1428356, 0.1428356, 0.1428356), (0.19358882, 0.19358882, 0.19358882), (0.17513084, 0.17513084, 0.17513084), (0.13694672, 0.13694672, 0.13694672), (0.11225305, 0.11225305, 0.11225305), (0.11133621, 0.11133621, 0.11133621), (0.19783857, 0.19783857, 0.19783857), (0.15065423, 0.15065423, 0.15065423), (0.14954138, 0.14954138, 0.14954138), (0.1107749, 0.1107749, 0.1107749), (0.19611081, 0.19611081, 0.19611081), (0.18178824, 0.18178824, 0.18178824), (0.1639154, 0.1639154, 0.1639154), (0.18216372, 0.18216372, 0.18216372), (0.15550277, 0.15550277, 0.15550277), (0.18769147, 0.18769147, 0.18769147), (0.18095958, 0.18095958, 0.18095958), (0.19253144, 0.19253144, 0.19253144), (0.18900585, 0.18900585, 0.18900585), (0.13973562, 0.13973562, 0.13973562), (0.14814948, 0.14814948, 0.14814948), (0.18449296, 0.18449296, 0.18449296), (0.11284067, 0.11284067, 0.11284067), (0.101560704, 0.101560704, 0.101560704), (0.16244091, 0.16244091, 0.16244091), (0.17782182, 0.17782182, 0.17782182), (0.122980155, 0.122980155, 0.122980155), (0.12862383, 0.12862383, 0.12862383), (0.17066385, 0.17066385, 0.17066385), (0.10373427, 0.10373427, 0.10373427), (0.12717757, 0.12717757, 0.12717757), (0.10348429, 0.10348429, 0.103484295), (0.19692996, 0.19692996, 0.19692996), (0.10615195, 0.106151946, 0.10615195), (0.18180639, 0.18180639, 0.18180639), (0.19755353, 0.19755353, 0.19755353), (0.18082553, 0.18082553, 0.18082553), (0.18312263, 0.18312263, 0.18312263), (0.19133726, 0.19133726, 0.19133726), (0.13329647, 0.13329647, 0.13329647), (0.19921127, 0.19921127, 0.19921127), (0.14216883, 0.14216883, 0.14216883), (0.12793967, 0.12793967, 0.12793967), (0.17537344, 0.17537344, 0.17537344), (0.18933117, 0.18933117, 0.18933117), (0.105730586, 0.105730586, 0.105730586), (0.19162282, 0.19162282, 0.19162282), (0.19230664, 0.19230664, 0.19230664), (0.18816158, 0.18816158, 0.18816158), (0.1622675, 0.1622675, 0.1622675), (0.12614508, 0.12614508, 0.12614508), (0.18374053, 0.18374053, 0.18374053), (0.14540528, 0.14540528, 0.14540528), (0.13605313, 0.13605313, 0.13605313), (0.19362248, 0.19362248, 0.19362248), (0.12749226, 0.12749226, 0.12749226), (0.1415241, 0.1415241, 0.1415241), (0.10816063, 0.10816063, 0.10816063), (0.17168577, 0.17168577, 0.17168577), (0.18647833, 0.18647833, 0.18647833), (0.15950616, 0.15950616, 0.15950616), (0.19573213, 0.19573213, 0.19573213), (0.1837504, 0.1837504, 0.1837504), (0.13568276, 0.13568276, 0.13568276), (0.19487908, 0.19487908, 0.19487908), (0.10879818, 0.10879818, 0.10879818), (0.13713503, 0.13713503, 0.13713503), (0.111651875, 0.111651875, 0.111651875), (0.19634676, 0.19634676, 0.19634676), (0.17455313, 0.17455313, 0.17455313), (0.19435436, 0.19435436, 0.19435436), (0.104394, 0.104394, 0.104394), (0.17708337, 0.17708337, 0.17708337), (0.15122269, 0.15122269, 0.15122269), (0.13346812, 0.13346812, 0.13346812), (0.16913584, 0.16913584, 0.16913584), (0.18239708, 0.18239708, 0.18239708), (0.1473836, 0.1473836, 0.1473836), (0.17306608, 0.17306608, 0.17306608), (0.112129405, 0.112129405, 0.112129405), (0.12645203, 0.12645203, 0.12645203), (0.1853979, 0.1853979, 0.1853979), (0.12736014, 0.12736014, 0.12736014), (0.19915605, 0.19915605, 0.19915605), (0.18204685, 0.18204683, 0.18204683), (0.16520208, 0.16520208, 0.16520208), (0.11824369, 0.118243694, 0.118243694), (0.15308033, 0.15308033, 0.15308033), (0.12590967, 0.12590967, 0.12590967), (0.14154476, 0.14154476, 0.14154476), (0.10246736, 0.10246736, 0.102467366), (0.17029068, 0.17029068, 0.17029068), (0.12534645, 0.12534645, 0.12534645), (0.19121689, 0.19121689, 0.19121689), (0.12854327, 0.12854327, 0.12854327), (0.1907922, 0.1907922, 0.1907922), (0.19230428, 0.19230428, 0.19230428), (0.14528608, 0.14528608, 0.14528608), (0.10790823, 0.10790823, 0.10790823), (0.1574128, 0.1574128, 0.1574128), (0.15500368, 0.15500368, 0.15500368), (0.1764029, 0.1764029, 0.1764029), (0.15347946, 0.15347946, 0.15347946), (0.11467518, 0.11467518, 0.11467518), (0.16159739, 0.16159739, 0.16159739), (0.15059125, 0.15059125, 0.15059125), (0.19879603, 0.19879603, 0.19879603), (0.14504734, 0.14504734, 0.14504734), (0.16576114, 0.16576114, 0.16576114), (0.15047891, 0.15047891, 0.15047891), (0.190952, 0.190952, 0.190952), (0.19337532, 0.19337532, 0.19337532), (0.19679457, 0.19679457, 0.19679457), (0.10334339, 0.10334339, 0.10334339), (0.17556727, 0.17556727, 0.17556727), (0.109160386, 0.109160386, 0.109160386), (0.16814616, 0.16814616, 0.16814616), (0.18584998, 0.18584998, 0.18584998), (0.18098828, 0.18098828, 0.18098828), (0.103529386, 0.103529386, 0.103529386), (0.12700284, 0.12700284, 0.12700284), (0.13043144, 0.13043144, 0.13043144), (0.16309232, 0.16309232, 0.16309232), (0.14710145, 0.14710145, 0.14710145), (0.18220225, 0.18220225, 0.18220225), (0.19372457, 0.19372457, 0.19372457), (0.1465819, 0.1465819, 0.1465819), (0.18756133, 0.18756133, 0.18756133), (0.13876925, 0.13876925, 0.13876925), (0.104977384, 0.104977384, 0.104977384), (0.16696888, 0.16696888, 0.16696888), (0.13962445, 0.13962445, 0.13962445), (0.15586458, 0.15586458, 0.15586458), (0.102442525, 0.102442525, 0.102442525), (0.13659693, 0.13659693, 0.13659693), (0.19891, 0.19891, 0.19891), (0.19837989, 0.19837989, 0.19837989), (0.13991955, 0.13991955, 0.13991955), (0.17686398, 0.17686398, 0.17686398), (0.101206616, 0.101206616, 0.101206616), (0.13854046, 0.13854046, 0.13854046), (0.18138227, 0.18138227, 0.18138227), (0.10703174, 0.10703174, 0.10703174), (0.121638566, 0.121638566, 0.121638566), (0.16535184, 0.16535184, 0.16535184), (0.13047335, 0.13047335, 0.13047335), (0.11087233, 0.11087233, 0.11087233), (0.100131296, 0.100131296, 0.100131296), (0.19520906, 0.19520906, 0.19520906), (0.11774472, 0.11774472, 0.11774472), (0.18132432, 0.18132432, 0.18132432), (0.12041959, 0.12041959, 0.12041959), (0.19871294, 0.19871294, 0.19871294), (0.13350035, 0.13350035, 0.13350035), (0.114277594, 0.114277594, 0.114277594), (0.18774438, 0.18774438, 0.18774438), (0.11237246, 0.11237246, 0.11237246), (0.15174346, 0.15174346, 0.15174346), (0.13342075, 0.13342075, 0.13342075), (0.14047433, 0.14047433, 0.14047433), (0.18736804, 0.18736804, 0.18736804), (0.19306973, 0.19306973, 0.19306973), (0.19271255, 0.19271255, 0.19271255), (0.18320185, 0.18320185, 0.18320185), (0.15679277, 0.15679277, 0.15679277), (0.12971446, 0.12971446, 0.12971446), (0.17852679, 0.17852679, 0.17852679), (0.18606336, 0.18606336, 0.18606336), (0.16333368, 0.16333368, 0.16333368), (0.10447112, 0.104471125, 0.104471125), (0.12389205, 0.12389205, 0.12389205), (0.117913395, 0.117913395, 0.117913395), (0.11551177, 0.11551177, 0.11551177)],
-            4: [(0.14172319, 0.14172319, 0.14172319), (0.10029252, 0.10029252, 0.10029252), (0.18134323, 0.18134323, 0.18134323), (0.12623805, 0.12623805, 0.12623805), (0.10022483, 0.10022483, 0.10022483), (0.11894938, 0.11894938, 0.11894938), (0.11161965, 0.11161965, 0.11161965), (0.16177759, 0.16177759, 0.16177759), (0.19162112, 0.19162112, 0.19162112), (0.15199168, 0.15199168, 0.15199168), (0.10936818, 0.10936818, 0.10936818), (0.1119827, 0.111982696, 0.111982696), (0.19744946, 0.19744946, 0.19744946), (0.19223702, 0.19223702, 0.19223702), (0.114910774, 0.114910774, 0.114910774), (0.10862304, 0.10862304, 0.10862304), (0.18047523, 0.18047523, 0.18047523), (0.18691078, 0.18691078, 0.18691078), (0.18762624, 0.18762624, 0.18762624), (0.102495134, 0.102495134, 0.102495134), (0.17481448, 0.17481448, 0.17481448), (0.13745625, 0.13745625, 0.13745625), (0.1169585, 0.1169585, 0.1169585), (0.13553365, 0.13553365, 0.13553365), (0.16723502, 0.16723502, 0.16723502), (0.19425061, 0.19425061, 0.19425061), (0.16002521, 0.16002521, 0.16002521), (0.1391068, 0.1391068, 0.1391068), (0.18550682, 0.18550682, 0.18550682), (0.10525586, 0.10525586, 0.10525586), (0.19929136, 0.19929136, 0.19929136), (0.1722306, 0.1722306, 0.1722306), (0.19501713, 0.19501713, 0.19501713), (0.19302395, 0.19302395, 0.19302395), (0.15721127, 0.15721127, 0.15721127), (0.19952482, 0.19952482, 0.19952482), (0.12173809, 0.12173809, 0.1217381), (0.19381942, 0.19381942, 0.19381942), (0.13378444, 0.13378444, 0.13378444), (0.19948044, 0.19948044, 0.19948044), (0.12811777, 0.12811777, 0.12811777), (0.1212849, 0.1212849, 0.1212849), (0.17964527, 0.17964527, 0.17964527), (0.13431281, 0.13431281, 0.13431281), (0.1582495, 0.1582495, 0.1582495), (0.18623838, 0.18623838, 0.18623838), (0.18141069, 0.18141069, 0.18141069), (0.11646598, 0.11646598, 0.11646598), (0.16494167, 0.16494167, 0.16494167), (0.13916416, 0.13916416, 0.13916416), (0.13589337, 0.13589337, 0.13589337), (0.13020925, 0.13020925, 0.13020925), (0.19353762, 0.19353762, 0.19353762), (0.19642974, 0.19642974, 0.19642974), (0.17435914, 0.17435914, 0.17435914), (0.1696752, 0.1696752, 0.1696752), (0.18771876, 0.18771876, 0.18771876), (0.14476237, 0.14476237, 0.14476237), (0.114282645, 0.114282645, 0.114282645), (0.10797047, 0.10797047, 0.10797047), (0.15342611, 0.15342611, 0.15342611), (0.10040834, 0.10040834, 0.10040834), (0.10364749, 0.10364749, 0.10364749), (0.18283775, 0.18283775, 0.18283775), (0.11108214, 0.11108214, 0.11108214), (0.14308448, 0.14308448, 0.14308448), (0.121854395, 0.121854395, 0.121854395), (0.11287031, 0.11287031, 0.11287031), (0.1706352, 0.1706352, 0.1706352), (0.16552845, 0.16552845, 0.16552845), (0.15867262, 0.15867262, 0.15867262), (0.10241511, 0.10241511, 0.10241511), (0.17420247, 0.17420247, 0.17420247), (0.1869008, 0.1869008, 0.1869008), (0.13819286, 0.13819286, 0.13819286), (0.18617925, 0.18617925, 0.18617925), (0.18544312, 0.18544312, 0.18544312), (0.16783936, 0.16783936, 0.16783936), (0.17528448, 0.17528448, 0.17528448), (0.15134707, 0.15134707, 0.15134707), (0.13206375, 0.13206375, 0.13206375), (0.16306287, 0.16306287, 0.16306287), (0.1575478, 0.1575478, 0.1575478), (0.1000997, 0.1000997, 0.1000997), (0.10777086, 0.10777086, 0.10777086), (0.14056571, 0.14056571, 0.14056571), (0.13948797, 0.13948797, 0.13948797), (0.12682317, 0.12682317, 0.12682317), (0.165428, 0.165428, 0.165428), (0.16638756, 0.16638756, 0.16638756), (0.101214744, 0.101214744, 0.101214744), (0.14729013, 0.14729013, 0.14729013), (0.17486918, 0.17486918, 0.17486918), (0.18100545, 0.18100545, 0.18100545), (0.15057571, 0.15057571, 0.15057571), (0.17140004, 0.17140004, 0.17140004), (0.13447945, 0.13447945, 0.13447945), (0.1981385, 0.1981385, 0.1981385), (0.15300599, 0.15300599, 0.15300599), (0.17432371, 0.17432371, 0.17432371), (0.12847671, 0.12847671, 0.12847671), (0.1300669, 0.1300669, 0.1300669), (0.10183531, 0.10183531, 0.10183531), (0.1709834, 0.1709834, 0.1709834), (0.11164422, 0.11164422, 0.11164422), (0.19489469, 0.19489469, 0.19489469), (0.12366511, 0.12366511, 0.12366511), (0.18187001, 0.18187001, 0.18187001), (0.15558699, 0.15558699, 0.15558699), (0.17849174, 0.17849174, 0.17849174), (0.19696003, 0.19696003, 0.19696003), (0.18857506, 0.18857506, 0.18857506), (0.10675031, 0.10675031, 0.10675031), (0.13809735, 0.13809735, 0.13809735), (0.18451662, 0.18451662, 0.18451662), (0.19021323, 0.19021323, 0.19021323), (0.13331154, 0.13331154, 0.13331154), (0.14633088, 0.14633088, 0.14633088), (0.15028134, 0.15028134, 0.15028134), (0.171864, 0.171864, 0.171864), (0.11130679, 0.11130679, 0.11130679), (0.1502267, 0.1502267, 0.1502267), (0.13423976, 0.13423976, 0.13423976), (0.18497759, 0.18497759, 0.18497759), (0.1736241, 0.1736241, 0.1736241), (0.12646134, 0.12646134, 0.12646134), (0.15853566, 0.15853566, 0.15853566), (0.17965382, 0.17965382, 0.17965382), (0.14735726, 0.14735726, 0.14735726), (0.13624248, 0.13624248, 0.13624248), (0.15266715, 0.15266715, 0.15266715), (0.19821939, 0.19821939, 0.19821939), (0.12530683, 0.12530683, 0.12530683), (0.19621356, 0.19621356, 0.19621356), (0.14824396, 0.14824396, 0.14824396), (0.15224026, 0.15224026, 0.15224026), (0.100351825, 0.100351825, 0.100351825), (0.17223835, 0.17223835, 0.17223835), (0.19334838, 0.19334838, 0.19334838), (0.100710765, 0.100710765, 0.100710765), (0.14842908, 0.14842908, 0.14842908), (0.13557956, 0.13557956, 0.13557956), (0.113662355, 0.113662355, 0.113662355), (0.15893427, 0.15893427, 0.15893427), (0.12692566, 0.12692566, 0.12692566), (0.16886988, 0.16886988, 0.16886988), (0.16833937, 0.16833937, 0.16833937), (0.17621502, 0.17621502, 0.17621502), (0.1782211, 0.1782211, 0.1782211), (0.11921705, 0.11921705, 0.11921705), (0.15935126, 0.15935126, 0.15935126), (0.16305056, 0.16305056, 0.16305056), (0.16741821, 0.16741821, 0.16741821), (0.11838294, 0.11838293, 0.11838293), (0.16467193, 0.16467193, 0.16467193), (0.17874432, 0.17874432, 0.17874432), (0.16803929, 0.16803929, 0.16803929), (0.111399114, 0.111399114, 0.111399114), (0.14289968, 0.14289968, 0.14289968), (0.10486378, 0.10486378, 0.10486378), (0.121137574, 0.121137574, 0.121137574), (0.1772308, 0.1772308, 0.1772308), (0.19579127, 0.19579127, 0.19579127), (0.17045128, 0.17045128, 0.17045128), (0.12121004, 0.121210046, 0.12121004), (0.1213617, 0.1213617, 0.1213617), (0.10162039, 0.1016204, 0.1016204), (0.18314496, 0.18314496, 0.18314496), (0.11487794, 0.11487794, 0.11487794), (0.15579394, 0.15579394, 0.15579394), (0.14748974, 0.14748974, 0.14748974), (0.11478952, 0.11478952, 0.11478952), (0.10363876, 0.10363876, 0.10363876), (0.17962754, 0.17962754, 0.17962754), (0.13167714, 0.13167714, 0.13167714), (0.11226555, 0.11226555, 0.11226555), (0.12721995, 0.12721995, 0.12721995), (0.17548874, 0.17548874, 0.17548874), (0.13268617, 0.13268617, 0.13268617), (0.18352199, 0.18352199, 0.18352199), (0.1878573, 0.1878573, 0.1878573), (0.16555044, 0.16555044, 0.16555044), (0.1713369, 0.1713369, 0.1713369), (0.18597813, 0.18597813, 0.18597813), (0.13642877, 0.13642877, 0.13642877), (0.19658181, 0.19658181, 0.19658181), (0.11448326, 0.11448326, 0.11448326), (0.13080463, 0.13080463, 0.13080463), (0.16562164, 0.16562164, 0.16562164), (0.10473912, 0.10473912, 0.10473912), (0.117193975, 0.117193975, 0.117193975), (0.14800587, 0.14800587, 0.14800587), (0.12771049, 0.12771049, 0.12771049), (0.12175891, 0.12175891, 0.12175891), (0.19834013, 0.19834013, 0.19834013), (0.11507412, 0.11507412, 0.11507412), (0.14767495, 0.14767495, 0.14767495), (0.1103148, 0.1103148, 0.110314794), (0.1574498, 0.1574498, 0.1574498), (0.12407453, 0.12407453, 0.12407453), (0.14487734, 0.14487734, 0.14487734), (0.1517503, 0.1517503, 0.1517503), (0.16031215, 0.16031215, 0.16031215), (0.15580858, 0.15580858, 0.15580858), (0.19662309, 0.19662309, 0.19662309), (0.17229593, 0.17229593, 0.17229593), (0.10967554, 0.10967554, 0.10967554), (0.14279902, 0.14279902, 0.14279902), (0.1367748, 0.1367748, 0.1367748), (0.17064096, 0.17064096, 0.17064096), (0.10903813, 0.10903813, 0.10903813), (0.13121553, 0.13121553, 0.13121553), (0.1096869, 0.1096869, 0.1096869), (0.10164373, 0.10164373, 0.10164373), (0.11891883, 0.11891883, 0.11891883), (0.18912748, 0.18912748, 0.18912748), (0.17561358, 0.17561358, 0.17561358), (0.17143068, 0.17143068, 0.17143068), (0.14112458, 0.14112458, 0.14112458), (0.111915305, 0.111915305, 0.111915305), (0.17877343, 0.17877343, 0.17877343), (0.106223, 0.106223, 0.106223), (0.13184862, 0.13184862, 0.13184862), (0.10847034, 0.10847034, 0.10847034), (0.19618687, 0.19618687, 0.19618687), (0.15895997, 0.15895997, 0.15895997), (0.13853732, 0.13853732, 0.13853732), (0.10795692, 0.10795692, 0.10795692), (0.19710794, 0.19710794, 0.19710794), (0.14396106, 0.14396106, 0.14396106), (0.1776239, 0.1776239, 0.1776239), (0.18442112, 0.18442112, 0.18442112), (0.13195619, 0.13195619, 0.13195619), (0.19108248, 0.19108248, 0.19108248), (0.14590731, 0.14590731, 0.14590731), (0.10174266, 0.10174266, 0.10174266), (0.13995983, 0.13995983, 0.13995983), (0.13090616, 0.13090616, 0.13090616), (0.14151147, 0.14151147, 0.14151147), (0.12882674, 0.12882674, 0.12882674), (0.12586424, 0.12586424, 0.12586424), (0.16837966, 0.16837966, 0.16837966), (0.12348554, 0.12348554, 0.12348554), (0.100051574, 0.100051574, 0.100051574), (0.18468678, 0.18468678, 0.18468678), (0.1815013, 0.1815013, 0.1815013), (0.19576788, 0.19576788, 0.19576788), (0.16287561, 0.16287561, 0.16287561), (0.14857875, 0.14857875, 0.14857875), (0.16071053, 0.16071053, 0.16071053), (0.17977396, 0.17977396, 0.17977396), (0.1344373, 0.1344373, 0.1344373), (0.12265878, 0.12265878, 0.12265878), (0.18105084, 0.18105084, 0.18105084), (0.11038053, 0.11038053, 0.11038053), (0.16433293, 0.16433293, 0.16433293), (0.18472075, 0.18472075, 0.18472075), (0.11469215, 0.11469215, 0.11469215), (0.10712121, 0.10712121, 0.10712121), (0.15059352, 0.15059352, 0.15059352), (0.1425719, 0.1425719, 0.1425719), (0.16783395, 0.16783395, 0.16783395), (0.19678757, 0.19678757, 0.19678757), (0.14226696, 0.14226696, 0.14226696), (0.14613333, 0.14613333, 0.14613333), (0.10262809, 0.10262809, 0.10262809), (0.18386772, 0.18386772, 0.18386772), (0.13754506, 0.13754506, 0.13754506), (0.19104421, 0.19104421, 0.1910442), (0.19941677, 0.19941677, 0.19941677), (0.17862856, 0.17862856, 0.17862856), (0.12512408, 0.12512408, 0.12512408), (0.1563856, 0.1563856, 0.1563856), (0.10410943, 0.10410943, 0.10410943), (0.17045668, 0.17045668, 0.17045668), (0.10356156, 0.10356156, 0.10356156), (0.1805349, 0.1805349, 0.1805349), (0.11961666, 0.11961666, 0.11961666), (0.10780964, 0.10780964, 0.10780964), (0.17932215, 0.17932215, 0.17932215), (0.16883194, 0.16883194, 0.16883194), (0.19077508, 0.19077507, 0.19077507), (0.15793861, 0.15793861, 0.15793861), (0.111792766, 0.11179276, 0.11179276), (0.17236096, 0.17236096, 0.17236096), (0.15511994, 0.15511994, 0.15511994), (0.11863964, 0.11863964, 0.11863964), (0.11032846, 0.11032846, 0.11032846), (0.11355084, 0.11355084, 0.11355084), (0.10354251, 0.10354251, 0.10354251), (0.15110308, 0.15110308, 0.15110308), (0.1716482, 0.1716482, 0.1716482), (0.11343519, 0.11343519, 0.11343519), (0.11484221, 0.11484221, 0.11484221), (0.15928078, 0.15928078, 0.15928078), (0.16131136, 0.16131136, 0.16131136), (0.19311708, 0.19311708, 0.19311708), (0.12065772, 0.12065772, 0.12065772), (0.19413377, 0.19413377, 0.19413377), (0.13790147, 0.13790147, 0.13790147), (0.19463432, 0.19463432, 0.19463432), (0.16946983, 0.16946983, 0.16946983), (0.16419846, 0.16419846, 0.16419846), (0.14034523, 0.14034523, 0.14034523), (0.15334319, 0.15334319, 0.15334319), (0.1724496, 0.1724496, 0.1724496), (0.13479161, 0.13479161, 0.13479161), (0.18435813, 0.18435813, 0.18435813), (0.1639334, 0.1639334, 0.1639334), (0.15776677, 0.15776677, 0.15776677), (0.14450797, 0.14450797, 0.14450797), (0.122769214, 0.122769214, 0.122769214), (0.17423299, 0.17423299, 0.17423299), (0.19037694, 0.19037694, 0.19037694), (0.11361282, 0.11361282, 0.11361282), (0.14458582, 0.14458582, 0.14458582), (0.14501567, 0.14501567, 0.14501567), (0.14522895, 0.14522895, 0.14522895), (0.12436036, 0.12436036, 0.12436036), (0.13267854, 0.13267854, 0.13267854), (0.13636823, 0.13636823, 0.13636823), (0.17360517, 0.17360517, 0.17360517), (0.19406614, 0.19406614, 0.19406614), (0.149205, 0.149205, 0.149205), (0.10046536, 0.10046536, 0.10046536), (0.18648931, 0.18648931, 0.18648931), (0.16292405, 0.16292405, 0.16292405), (0.1428356, 0.1428356, 0.1428356), (0.19358882, 0.19358882, 0.19358882), (0.17513084, 0.17513084, 0.17513084), (0.13694672, 0.13694672, 0.13694672), (0.11225305, 0.11225305, 0.11225305), (0.11133621, 0.11133621, 0.11133621), (0.19783857, 0.19783857, 0.19783857), (0.15065423, 0.15065423, 0.15065423), (0.14954138, 0.14954138, 0.14954138), (0.1107749, 0.1107749, 0.1107749), (0.19611081, 0.19611081, 0.19611081), (0.18178824, 0.18178824, 0.18178824), (0.1639154, 0.1639154, 0.1639154), (0.18216372, 0.18216372, 0.18216372), (0.15550277, 0.15550277, 0.15550277), (0.18769147, 0.18769147, 0.18769147), (0.18095958, 0.18095958, 0.18095958), (0.19253144, 0.19253144, 0.19253144), (0.18900585, 0.18900585, 0.18900585), (0.13973562, 0.13973562, 0.13973562), (0.14814948, 0.14814948, 0.14814948), (0.18449296, 0.18449296, 0.18449296), (0.11284067, 0.11284067, 0.11284067), (0.101560704, 0.101560704, 0.101560704), (0.16244091, 0.16244091, 0.16244091), (0.17782182, 0.17782182, 0.17782182), (0.122980155, 0.122980155, 0.122980155), (0.12862383, 0.12862383, 0.12862383), (0.17066385, 0.17066385, 0.17066385), (0.10373427, 0.10373427, 0.10373427), (0.12717757, 0.12717757, 0.12717757), (0.10348429, 0.10348429, 0.103484295), (0.19692996, 0.19692996, 0.19692996), (0.10615195, 0.106151946, 0.10615195), (0.18180639, 0.18180639, 0.18180639), (0.19755353, 0.19755353, 0.19755353), (0.18082553, 0.18082553, 0.18082553), (0.18312263, 0.18312263, 0.18312263), (0.19133726, 0.19133726, 0.19133726), (0.13329647, 0.13329647, 0.13329647), (0.19921127, 0.19921127, 0.19921127), (0.14216883, 0.14216883, 0.14216883), (0.12793967, 0.12793967, 0.12793967), (0.17537344, 0.17537344, 0.17537344), (0.18933117, 0.18933117, 0.18933117), (0.105730586, 0.105730586, 0.105730586), (0.19162282, 0.19162282, 0.19162282), (0.19230664, 0.19230664, 0.19230664), (0.18816158, 0.18816158, 0.18816158), (0.1622675, 0.1622675, 0.1622675), (0.12614508, 0.12614508, 0.12614508), (0.18374053, 0.18374053, 0.18374053), (0.14540528, 0.14540528, 0.14540528), (0.13605313, 0.13605313, 0.13605313), (0.19362248, 0.19362248, 0.19362248), (0.12749226, 0.12749226, 0.12749226), (0.1415241, 0.1415241, 0.1415241), (0.10816063, 0.10816063, 0.10816063), (0.17168577, 0.17168577, 0.17168577), (0.18647833, 0.18647833, 0.18647833), (0.15950616, 0.15950616, 0.15950616), (0.19573213, 0.19573213, 0.19573213), (0.1837504, 0.1837504, 0.1837504), (0.13568276, 0.13568276, 0.13568276), (0.19487908, 0.19487908, 0.19487908), (0.10879818, 0.10879818, 0.10879818), (0.13713503, 0.13713503, 0.13713503), (0.111651875, 0.111651875, 0.111651875), (0.19634676, 0.19634676, 0.19634676), (0.17455313, 0.17455313, 0.17455313), (0.19435436, 0.19435436, 0.19435436), (0.104394, 0.104394, 0.104394), (0.17708337, 0.17708337, 0.17708337), (0.15122269, 0.15122269, 0.15122269), (0.13346812, 0.13346812, 0.13346812), (0.16913584, 0.16913584, 0.16913584), (0.18239708, 0.18239708, 0.18239708), (0.1473836, 0.1473836, 0.1473836), (0.17306608, 0.17306608, 0.17306608), (0.112129405, 0.112129405, 0.112129405), (0.12645203, 0.12645203, 0.12645203), (0.1853979, 0.1853979, 0.1853979), (0.12736014, 0.12736014, 0.12736014), (0.19915605, 0.19915605, 0.19915605), (0.18204685, 0.18204683, 0.18204683), (0.16520208, 0.16520208, 0.16520208), (0.11824369, 0.118243694, 0.118243694), (0.15308033, 0.15308033, 0.15308033), (0.12590967, 0.12590967, 0.12590967), (0.14154476, 0.14154476, 0.14154476), (0.10246736, 0.10246736, 0.102467366), (0.17029068, 0.17029068, 0.17029068), (0.12534645, 0.12534645, 0.12534645), (0.19121689, 0.19121689, 0.19121689), (0.12854327, 0.12854327, 0.12854327), (0.1907922, 0.1907922, 0.1907922), (0.19230428, 0.19230428, 0.19230428), (0.14528608, 0.14528608, 0.14528608), (0.10790823, 0.10790823, 0.10790823), (0.1574128, 0.1574128, 0.1574128), (0.15500368, 0.15500368, 0.15500368), (0.1764029, 0.1764029, 0.1764029), (0.15347946, 0.15347946, 0.15347946), (0.11467518, 0.11467518, 0.11467518), (0.16159739, 0.16159739, 0.16159739), (0.15059125, 0.15059125, 0.15059125), (0.19879603, 0.19879603, 0.19879603), (0.14504734, 0.14504734, 0.14504734), (0.16576114, 0.16576114, 0.16576114), (0.15047891, 0.15047891, 0.15047891), (0.190952, 0.190952, 0.190952), (0.19337532, 0.19337532, 0.19337532), (0.19679457, 0.19679457, 0.19679457), (0.10334339, 0.10334339, 0.10334339), (0.17556727, 0.17556727, 0.17556727), (0.109160386, 0.109160386, 0.109160386), (0.16814616, 0.16814616, 0.16814616), (0.18584998, 0.18584998, 0.18584998), (0.18098828, 0.18098828, 0.18098828), (0.103529386, 0.103529386, 0.103529386), (0.12700284, 0.12700284, 0.12700284), (0.13043144, 0.13043144, 0.13043144), (0.16309232, 0.16309232, 0.16309232), (0.14710145, 0.14710145, 0.14710145), (0.18220225, 0.18220225, 0.18220225), (0.19372457, 0.19372457, 0.19372457), (0.1465819, 0.1465819, 0.1465819), (0.18756133, 0.18756133, 0.18756133), (0.13876925, 0.13876925, 0.13876925), (0.104977384, 0.104977384, 0.104977384), (0.16696888, 0.16696888, 0.16696888), (0.13962445, 0.13962445, 0.13962445), (0.15586458, 0.15586458, 0.15586458), (0.102442525, 0.102442525, 0.102442525), (0.13659693, 0.13659693, 0.13659693), (0.19891, 0.19891, 0.19891), (0.19837989, 0.19837989, 0.19837989), (0.13991955, 0.13991955, 0.13991955), (0.17686398, 0.17686398, 0.17686398), (0.101206616, 0.101206616, 0.101206616), (0.13854046, 0.13854046, 0.13854046), (0.18138227, 0.18138227, 0.18138227), (0.10703174, 0.10703174, 0.10703174), (0.121638566, 0.121638566, 0.121638566), (0.16535184, 0.16535184, 0.16535184), (0.13047335, 0.13047335, 0.13047335), (0.11087233, 0.11087233, 0.11087233), (0.100131296, 0.100131296, 0.100131296), (0.19520906, 0.19520906, 0.19520906), (0.11774472, 0.11774472, 0.11774472), (0.18132432, 0.18132432, 0.18132432), (0.12041959, 0.12041959, 0.12041959), (0.19871294, 0.19871294, 0.19871294), (0.13350035, 0.13350035, 0.13350035), (0.114277594, 0.114277594, 0.114277594), (0.18774438, 0.18774438, 0.18774438), (0.11237246, 0.11237246, 0.11237246), (0.15174346, 0.15174346, 0.15174346), (0.13342075, 0.13342075, 0.13342075), (0.14047433, 0.14047433, 0.14047433), (0.18736804, 0.18736804, 0.18736804), (0.19306973, 0.19306973, 0.19306973), (0.19271255, 0.19271255, 0.19271255), (0.18320185, 0.18320185, 0.18320185), (0.15679277, 0.15679277, 0.15679277), (0.12971446, 0.12971446, 0.12971446), (0.17852679, 0.17852679, 0.17852679), (0.18606336, 0.18606336, 0.18606336), (0.16333368, 0.16333368, 0.16333368), (0.10447112, 0.104471125, 0.104471125), (0.12389205, 0.12389205, 0.12389205), (0.117913395, 0.117913395, 0.117913395), (0.11551177, 0.11551177, 0.11551177)],
-            5: [(0.14172319, 0.14172319, 0.14172319), (0.10029252, 0.10029252, 0.10029252), (0.18134323, 0.18134323, 0.18134323), (0.12623805, 0.12623805, 0.12623805), (0.10022483, 0.10022483, 0.10022483), (0.11894938, 0.11894938, 0.11894938), (0.11161965, 0.11161965, 0.11161965), (0.16177759, 0.16177759, 0.16177759), (0.19162112, 0.19162112, 0.19162112), (0.15199168, 0.15199168, 0.15199168), (0.10936818, 0.10936818, 0.10936818), (0.1119827, 0.111982696, 0.111982696), (0.19744946, 0.19744946, 0.19744946), (0.19223702, 0.19223702, 0.19223702), (0.114910774, 0.114910774, 0.114910774), (0.10862304, 0.10862304, 0.10862304), (0.18047523, 0.18047523, 0.18047523), (0.18691078, 0.18691078, 0.18691078), (0.18762624, 0.18762624, 0.18762624), (0.102495134, 0.102495134, 0.102495134), (0.17481448, 0.17481448, 0.17481448), (0.13745625, 0.13745625, 0.13745625), (0.1169585, 0.1169585, 0.1169585), (0.13553365, 0.13553365, 0.13553365), (0.16723502, 0.16723502, 0.16723502), (0.19425061, 0.19425061, 0.19425061), (0.16002521, 0.16002521, 0.16002521), (0.1391068, 0.1391068, 0.1391068), (0.18550682, 0.18550682, 0.18550682), (0.10525586, 0.10525586, 0.10525586), (0.19929136, 0.19929136, 0.19929136), (0.1722306, 0.1722306, 0.1722306), (0.19501713, 0.19501713, 0.19501713), (0.19302395, 0.19302395, 0.19302395), (0.15721127, 0.15721127, 0.15721127), (0.19952482, 0.19952482, 0.19952482), (0.12173809, 0.12173809, 0.1217381), (0.19381942, 0.19381942, 0.19381942), (0.13378444, 0.13378444, 0.13378444), (0.19948044, 0.19948044, 0.19948044), (0.12811777, 0.12811777, 0.12811777), (0.1212849, 0.1212849, 0.1212849), (0.17964527, 0.17964527, 0.17964527), (0.13431281, 0.13431281, 0.13431281), (0.1582495, 0.1582495, 0.1582495), (0.18623838, 0.18623838, 0.18623838), (0.18141069, 0.18141069, 0.18141069), (0.11646598, 0.11646598, 0.11646598), (0.16494167, 0.16494167, 0.16494167), (0.13916416, 0.13916416, 0.13916416), (0.13589337, 0.13589337, 0.13589337), (0.13020925, 0.13020925, 0.13020925), (0.19353762, 0.19353762, 0.19353762), (0.19642974, 0.19642974, 0.19642974), (0.17435914, 0.17435914, 0.17435914), (0.1696752, 0.1696752, 0.1696752), (0.18771876, 0.18771876, 0.18771876), (0.14476237, 0.14476237, 0.14476237), (0.114282645, 0.114282645, 0.114282645), (0.10797047, 0.10797047, 0.10797047), (0.15342611, 0.15342611, 0.15342611), (0.10040834, 0.10040834, 0.10040834), (0.10364749, 0.10364749, 0.10364749), (0.18283775, 0.18283775, 0.18283775), (0.11108214, 0.11108214, 0.11108214), (0.14308448, 0.14308448, 0.14308448), (0.121854395, 0.121854395, 0.121854395), (0.11287031, 0.11287031, 0.11287031), (0.1706352, 0.1706352, 0.1706352), (0.16552845, 0.16552845, 0.16552845), (0.15867262, 0.15867262, 0.15867262), (0.10241511, 0.10241511, 0.10241511), (0.17420247, 0.17420247, 0.17420247), (0.1869008, 0.1869008, 0.1869008), (0.13819286, 0.13819286, 0.13819286), (0.18617925, 0.18617925, 0.18617925), (0.18544312, 0.18544312, 0.18544312), (0.16783936, 0.16783936, 0.16783936), (0.17528448, 0.17528448, 0.17528448), (0.15134707, 0.15134707, 0.15134707), (0.13206375, 0.13206375, 0.13206375), (0.16306287, 0.16306287, 0.16306287), (0.1575478, 0.1575478, 0.1575478), (0.1000997, 0.1000997, 0.1000997), (0.10777086, 0.10777086, 0.10777086), (0.14056571, 0.14056571, 0.14056571), (0.13948797, 0.13948797, 0.13948797), (0.12682317, 0.12682317, 0.12682317), (0.165428, 0.165428, 0.165428), (0.16638756, 0.16638756, 0.16638756), (0.101214744, 0.101214744, 0.101214744), (0.14729013, 0.14729013, 0.14729013), (0.17486918, 0.17486918, 0.17486918), (0.18100545, 0.18100545, 0.18100545), (0.15057571, 0.15057571, 0.15057571), (0.17140004, 0.17140004, 0.17140004), (0.13447945, 0.13447945, 0.13447945), (0.1981385, 0.1981385, 0.1981385), (0.15300599, 0.15300599, 0.15300599), (0.17432371, 0.17432371, 0.17432371), (0.12847671, 0.12847671, 0.12847671), (0.1300669, 0.1300669, 0.1300669), (0.10183531, 0.10183531, 0.10183531), (0.1709834, 0.1709834, 0.1709834), (0.11164422, 0.11164422, 0.11164422), (0.19489469, 0.19489469, 0.19489469), (0.12366511, 0.12366511, 0.12366511), (0.18187001, 0.18187001, 0.18187001), (0.15558699, 0.15558699, 0.15558699), (0.17849174, 0.17849174, 0.17849174), (0.19696003, 0.19696003, 0.19696003), (0.18857506, 0.18857506, 0.18857506), (0.10675031, 0.10675031, 0.10675031), (0.13809735, 0.13809735, 0.13809735), (0.18451662, 0.18451662, 0.18451662), (0.19021323, 0.19021323, 0.19021323), (0.13331154, 0.13331154, 0.13331154), (0.14633088, 0.14633088, 0.14633088), (0.15028134, 0.15028134, 0.15028134), (0.171864, 0.171864, 0.171864), (0.11130679, 0.11130679, 0.11130679), (0.1502267, 0.1502267, 0.1502267), (0.13423976, 0.13423976, 0.13423976), (0.18497759, 0.18497759, 0.18497759), (0.1736241, 0.1736241, 0.1736241), (0.12646134, 0.12646134, 0.12646134), (0.15853566, 0.15853566, 0.15853566), (0.17965382, 0.17965382, 0.17965382), (0.14735726, 0.14735726, 0.14735726), (0.13624248, 0.13624248, 0.13624248), (0.15266715, 0.15266715, 0.15266715), (0.19821939, 0.19821939, 0.19821939), (0.12530683, 0.12530683, 0.12530683), (0.19621356, 0.19621356, 0.19621356), (0.14824396, 0.14824396, 0.14824396), (0.15224026, 0.15224026, 0.15224026), (0.100351825, 0.100351825, 0.100351825), (0.17223835, 0.17223835, 0.17223835), (0.19334838, 0.19334838, 0.19334838), (0.100710765, 0.100710765, 0.100710765), (0.14842908, 0.14842908, 0.14842908), (0.13557956, 0.13557956, 0.13557956), (0.113662355, 0.113662355, 0.113662355), (0.15893427, 0.15893427, 0.15893427), (0.12692566, 0.12692566, 0.12692566), (0.16886988, 0.16886988, 0.16886988), (0.16833937, 0.16833937, 0.16833937), (0.17621502, 0.17621502, 0.17621502), (0.1782211, 0.1782211, 0.1782211), (0.11921705, 0.11921705, 0.11921705), (0.15935126, 0.15935126, 0.15935126), (0.16305056, 0.16305056, 0.16305056), (0.16741821, 0.16741821, 0.16741821), (0.11838294, 0.11838293, 0.11838293), (0.16467193, 0.16467193, 0.16467193), (0.17874432, 0.17874432, 0.17874432), (0.16803929, 0.16803929, 0.16803929), (0.111399114, 0.111399114, 0.111399114), (0.14289968, 0.14289968, 0.14289968), (0.10486378, 0.10486378, 0.10486378), (0.121137574, 0.121137574, 0.121137574), (0.1772308, 0.1772308, 0.1772308), (0.19579127, 0.19579127, 0.19579127), (0.17045128, 0.17045128, 0.17045128), (0.12121004, 0.121210046, 0.12121004), (0.1213617, 0.1213617, 0.1213617), (0.10162039, 0.1016204, 0.1016204), (0.18314496, 0.18314496, 0.18314496), (0.11487794, 0.11487794, 0.11487794), (0.15579394, 0.15579394, 0.15579394), (0.14748974, 0.14748974, 0.14748974), (0.11478952, 0.11478952, 0.11478952), (0.10363876, 0.10363876, 0.10363876), (0.17962754, 0.17962754, 0.17962754), (0.13167714, 0.13167714, 0.13167714), (0.11226555, 0.11226555, 0.11226555), (0.12721995, 0.12721995, 0.12721995), (0.17548874, 0.17548874, 0.17548874), (0.13268617, 0.13268617, 0.13268617), (0.18352199, 0.18352199, 0.18352199), (0.1878573, 0.1878573, 0.1878573), (0.16555044, 0.16555044, 0.16555044), (0.1713369, 0.1713369, 0.1713369), (0.18597813, 0.18597813, 0.18597813), (0.13642877, 0.13642877, 0.13642877), (0.19658181, 0.19658181, 0.19658181), (0.11448326, 0.11448326, 0.11448326), (0.13080463, 0.13080463, 0.13080463), (0.16562164, 0.16562164, 0.16562164), (0.10473912, 0.10473912, 0.10473912), (0.117193975, 0.117193975, 0.117193975), (0.14800587, 0.14800587, 0.14800587), (0.12771049, 0.12771049, 0.12771049), (0.12175891, 0.12175891, 0.12175891), (0.19834013, 0.19834013, 0.19834013), (0.11507412, 0.11507412, 0.11507412), (0.14767495, 0.14767495, 0.14767495), (0.1103148, 0.1103148, 0.110314794), (0.1574498, 0.1574498, 0.1574498), (0.12407453, 0.12407453, 0.12407453), (0.14487734, 0.14487734, 0.14487734), (0.1517503, 0.1517503, 0.1517503), (0.16031215, 0.16031215, 0.16031215), (0.15580858, 0.15580858, 0.15580858), (0.19662309, 0.19662309, 0.19662309), (0.17229593, 0.17229593, 0.17229593), (0.10967554, 0.10967554, 0.10967554), (0.14279902, 0.14279902, 0.14279902), (0.1367748, 0.1367748, 0.1367748), (0.17064096, 0.17064096, 0.17064096), (0.10903813, 0.10903813, 0.10903813), (0.13121553, 0.13121553, 0.13121553), (0.1096869, 0.1096869, 0.1096869), (0.10164373, 0.10164373, 0.10164373), (0.11891883, 0.11891883, 0.11891883), (0.18912748, 0.18912748, 0.18912748), (0.17561358, 0.17561358, 0.17561358), (0.17143068, 0.17143068, 0.17143068), (0.14112458, 0.14112458, 0.14112458), (0.111915305, 0.111915305, 0.111915305), (0.17877343, 0.17877343, 0.17877343), (0.106223, 0.106223, 0.106223), (0.13184862, 0.13184862, 0.13184862), (0.10847034, 0.10847034, 0.10847034), (0.19618687, 0.19618687, 0.19618687), (0.15895997, 0.15895997, 0.15895997), (0.13853732, 0.13853732, 0.13853732), (0.10795692, 0.10795692, 0.10795692), (0.19710794, 0.19710794, 0.19710794), (0.14396106, 0.14396106, 0.14396106), (0.1776239, 0.1776239, 0.1776239), (0.18442112, 0.18442112, 0.18442112), (0.13195619, 0.13195619, 0.13195619), (0.19108248, 0.19108248, 0.19108248), (0.14590731, 0.14590731, 0.14590731), (0.10174266, 0.10174266, 0.10174266), (0.13995983, 0.13995983, 0.13995983), (0.13090616, 0.13090616, 0.13090616), (0.14151147, 0.14151147, 0.14151147), (0.12882674, 0.12882674, 0.12882674), (0.12586424, 0.12586424, 0.12586424), (0.16837966, 0.16837966, 0.16837966), (0.12348554, 0.12348554, 0.12348554), (0.100051574, 0.100051574, 0.100051574), (0.18468678, 0.18468678, 0.18468678), (0.1815013, 0.1815013, 0.1815013), (0.19576788, 0.19576788, 0.19576788), (0.16287561, 0.16287561, 0.16287561), (0.14857875, 0.14857875, 0.14857875), (0.16071053, 0.16071053, 0.16071053), (0.17977396, 0.17977396, 0.17977396), (0.1344373, 0.1344373, 0.1344373), (0.12265878, 0.12265878, 0.12265878), (0.18105084, 0.18105084, 0.18105084), (0.11038053, 0.11038053, 0.11038053), (0.16433293, 0.16433293, 0.16433293), (0.18472075, 0.18472075, 0.18472075), (0.11469215, 0.11469215, 0.11469215), (0.10712121, 0.10712121, 0.10712121), (0.15059352, 0.15059352, 0.15059352), (0.1425719, 0.1425719, 0.1425719), (0.16783395, 0.16783395, 0.16783395), (0.19678757, 0.19678757, 0.19678757), (0.14226696, 0.14226696, 0.14226696), (0.14613333, 0.14613333, 0.14613333), (0.10262809, 0.10262809, 0.10262809), (0.18386772, 0.18386772, 0.18386772), (0.13754506, 0.13754506, 0.13754506), (0.19104421, 0.19104421, 0.1910442), (0.19941677, 0.19941677, 0.19941677), (0.17862856, 0.17862856, 0.17862856), (0.12512408, 0.12512408, 0.12512408), (0.1563856, 0.1563856, 0.1563856), (0.10410943, 0.10410943, 0.10410943), (0.17045668, 0.17045668, 0.17045668), (0.10356156, 0.10356156, 0.10356156), (0.1805349, 0.1805349, 0.1805349), (0.11961666, 0.11961666, 0.11961666), (0.10780964, 0.10780964, 0.10780964), (0.17932215, 0.17932215, 0.17932215), (0.16883194, 0.16883194, 0.16883194), (0.19077508, 0.19077507, 0.19077507), (0.15793861, 0.15793861, 0.15793861), (0.111792766, 0.11179276, 0.11179276), (0.17236096, 0.17236096, 0.17236096), (0.15511994, 0.15511994, 0.15511994), (0.11863964, 0.11863964, 0.11863964), (0.11032846, 0.11032846, 0.11032846), (0.11355084, 0.11355084, 0.11355084), (0.10354251, 0.10354251, 0.10354251), (0.15110308, 0.15110308, 0.15110308), (0.1716482, 0.1716482, 0.1716482), (0.11343519, 0.11343519, 0.11343519), (0.11484221, 0.11484221, 0.11484221), (0.15928078, 0.15928078, 0.15928078), (0.16131136, 0.16131136, 0.16131136), (0.19311708, 0.19311708, 0.19311708), (0.12065772, 0.12065772, 0.12065772), (0.19413377, 0.19413377, 0.19413377), (0.13790147, 0.13790147, 0.13790147), (0.19463432, 0.19463432, 0.19463432), (0.16946983, 0.16946983, 0.16946983), (0.16419846, 0.16419846, 0.16419846), (0.14034523, 0.14034523, 0.14034523), (0.15334319, 0.15334319, 0.15334319), (0.1724496, 0.1724496, 0.1724496), (0.13479161, 0.13479161, 0.13479161), (0.18435813, 0.18435813, 0.18435813), (0.1639334, 0.1639334, 0.1639334), (0.15776677, 0.15776677, 0.15776677), (0.14450797, 0.14450797, 0.14450797), (0.122769214, 0.122769214, 0.122769214), (0.17423299, 0.17423299, 0.17423299), (0.19037694, 0.19037694, 0.19037694), (0.11361282, 0.11361282, 0.11361282), (0.14458582, 0.14458582, 0.14458582), (0.14501567, 0.14501567, 0.14501567), (0.14522895, 0.14522895, 0.14522895), (0.12436036, 0.12436036, 0.12436036), (0.13267854, 0.13267854, 0.13267854), (0.13636823, 0.13636823, 0.13636823), (0.17360517, 0.17360517, 0.17360517), (0.19406614, 0.19406614, 0.19406614), (0.149205, 0.149205, 0.149205), (0.10046536, 0.10046536, 0.10046536), (0.18648931, 0.18648931, 0.18648931), (0.16292405, 0.16292405, 0.16292405), (0.1428356, 0.1428356, 0.1428356), (0.19358882, 0.19358882, 0.19358882), (0.17513084, 0.17513084, 0.17513084), (0.13694672, 0.13694672, 0.13694672), (0.11225305, 0.11225305, 0.11225305), (0.11133621, 0.11133621, 0.11133621), (0.19783857, 0.19783857, 0.19783857), (0.15065423, 0.15065423, 0.15065423), (0.14954138, 0.14954138, 0.14954138), (0.1107749, 0.1107749, 0.1107749), (0.19611081, 0.19611081, 0.19611081), (0.18178824, 0.18178824, 0.18178824), (0.1639154, 0.1639154, 0.1639154), (0.18216372, 0.18216372, 0.18216372), (0.15550277, 0.15550277, 0.15550277), (0.18769147, 0.18769147, 0.18769147), (0.18095958, 0.18095958, 0.18095958), (0.19253144, 0.19253144, 0.19253144), (0.18900585, 0.18900585, 0.18900585), (0.13973562, 0.13973562, 0.13973562), (0.14814948, 0.14814948, 0.14814948), (0.18449296, 0.18449296, 0.18449296), (0.11284067, 0.11284067, 0.11284067), (0.101560704, 0.101560704, 0.101560704), (0.16244091, 0.16244091, 0.16244091), (0.17782182, 0.17782182, 0.17782182), (0.122980155, 0.122980155, 0.122980155), (0.12862383, 0.12862383, 0.12862383), (0.17066385, 0.17066385, 0.17066385), (0.10373427, 0.10373427, 0.10373427), (0.12717757, 0.12717757, 0.12717757), (0.10348429, 0.10348429, 0.103484295), (0.19692996, 0.19692996, 0.19692996), (0.10615195, 0.106151946, 0.10615195), (0.18180639, 0.18180639, 0.18180639), (0.19755353, 0.19755353, 0.19755353), (0.18082553, 0.18082553, 0.18082553), (0.18312263, 0.18312263, 0.18312263), (0.19133726, 0.19133726, 0.19133726), (0.13329647, 0.13329647, 0.13329647), (0.19921127, 0.19921127, 0.19921127), (0.14216883, 0.14216883, 0.14216883), (0.12793967, 0.12793967, 0.12793967), (0.17537344, 0.17537344, 0.17537344), (0.18933117, 0.18933117, 0.18933117), (0.105730586, 0.105730586, 0.105730586), (0.19162282, 0.19162282, 0.19162282), (0.19230664, 0.19230664, 0.19230664), (0.18816158, 0.18816158, 0.18816158), (0.1622675, 0.1622675, 0.1622675), (0.12614508, 0.12614508, 0.12614508), (0.18374053, 0.18374053, 0.18374053), (0.14540528, 0.14540528, 0.14540528), (0.13605313, 0.13605313, 0.13605313), (0.19362248, 0.19362248, 0.19362248), (0.12749226, 0.12749226, 0.12749226), (0.1415241, 0.1415241, 0.1415241), (0.10816063, 0.10816063, 0.10816063), (0.17168577, 0.17168577, 0.17168577), (0.18647833, 0.18647833, 0.18647833), (0.15950616, 0.15950616, 0.15950616), (0.19573213, 0.19573213, 0.19573213), (0.1837504, 0.1837504, 0.1837504), (0.13568276, 0.13568276, 0.13568276), (0.19487908, 0.19487908, 0.19487908), (0.10879818, 0.10879818, 0.10879818), (0.13713503, 0.13713503, 0.13713503), (0.111651875, 0.111651875, 0.111651875), (0.19634676, 0.19634676, 0.19634676), (0.17455313, 0.17455313, 0.17455313), (0.19435436, 0.19435436, 0.19435436), (0.104394, 0.104394, 0.104394), (0.17708337, 0.17708337, 0.17708337), (0.15122269, 0.15122269, 0.15122269), (0.13346812, 0.13346812, 0.13346812), (0.16913584, 0.16913584, 0.16913584), (0.18239708, 0.18239708, 0.18239708), (0.1473836, 0.1473836, 0.1473836), (0.17306608, 0.17306608, 0.17306608), (0.112129405, 0.112129405, 0.112129405), (0.12645203, 0.12645203, 0.12645203), (0.1853979, 0.1853979, 0.1853979), (0.12736014, 0.12736014, 0.12736014), (0.19915605, 0.19915605, 0.19915605), (0.18204685, 0.18204683, 0.18204683), (0.16520208, 0.16520208, 0.16520208), (0.11824369, 0.118243694, 0.118243694), (0.15308033, 0.15308033, 0.15308033), (0.12590967, 0.12590967, 0.12590967), (0.14154476, 0.14154476, 0.14154476), (0.10246736, 0.10246736, 0.102467366), (0.17029068, 0.17029068, 0.17029068), (0.12534645, 0.12534645, 0.12534645), (0.19121689, 0.19121689, 0.19121689), (0.12854327, 0.12854327, 0.12854327), (0.1907922, 0.1907922, 0.1907922), (0.19230428, 0.19230428, 0.19230428), (0.14528608, 0.14528608, 0.14528608), (0.10790823, 0.10790823, 0.10790823), (0.1574128, 0.1574128, 0.1574128), (0.15500368, 0.15500368, 0.15500368), (0.1764029, 0.1764029, 0.1764029), (0.15347946, 0.15347946, 0.15347946), (0.11467518, 0.11467518, 0.11467518), (0.16159739, 0.16159739, 0.16159739), (0.15059125, 0.15059125, 0.15059125), (0.19879603, 0.19879603, 0.19879603), (0.14504734, 0.14504734, 0.14504734), (0.16576114, 0.16576114, 0.16576114), (0.15047891, 0.15047891, 0.15047891), (0.190952, 0.190952, 0.190952), (0.19337532, 0.19337532, 0.19337532), (0.19679457, 0.19679457, 0.19679457), (0.10334339, 0.10334339, 0.10334339), (0.17556727, 0.17556727, 0.17556727), (0.109160386, 0.109160386, 0.109160386), (0.16814616, 0.16814616, 0.16814616), (0.18584998, 0.18584998, 0.18584998), (0.18098828, 0.18098828, 0.18098828), (0.103529386, 0.103529386, 0.103529386), (0.12700284, 0.12700284, 0.12700284), (0.13043144, 0.13043144, 0.13043144), (0.16309232, 0.16309232, 0.16309232), (0.14710145, 0.14710145, 0.14710145), (0.18220225, 0.18220225, 0.18220225), (0.19372457, 0.19372457, 0.19372457), (0.1465819, 0.1465819, 0.1465819), (0.18756133, 0.18756133, 0.18756133), (0.13876925, 0.13876925, 0.13876925), (0.104977384, 0.104977384, 0.104977384), (0.16696888, 0.16696888, 0.16696888), (0.13962445, 0.13962445, 0.13962445), (0.15586458, 0.15586458, 0.15586458), (0.102442525, 0.102442525, 0.102442525), (0.13659693, 0.13659693, 0.13659693), (0.19891, 0.19891, 0.19891), (0.19837989, 0.19837989, 0.19837989), (0.13991955, 0.13991955, 0.13991955), (0.17686398, 0.17686398, 0.17686398), (0.101206616, 0.101206616, 0.101206616), (0.13854046, 0.13854046, 0.13854046), (0.18138227, 0.18138227, 0.18138227), (0.10703174, 0.10703174, 0.10703174), (0.121638566, 0.121638566, 0.121638566), (0.16535184, 0.16535184, 0.16535184), (0.13047335, 0.13047335, 0.13047335), (0.11087233, 0.11087233, 0.11087233), (0.100131296, 0.100131296, 0.100131296), (0.19520906, 0.19520906, 0.19520906), (0.11774472, 0.11774472, 0.11774472), (0.18132432, 0.18132432, 0.18132432), (0.12041959, 0.12041959, 0.12041959), (0.19871294, 0.19871294, 0.19871294), (0.13350035, 0.13350035, 0.13350035), (0.114277594, 0.114277594, 0.114277594), (0.18774438, 0.18774438, 0.18774438), (0.11237246, 0.11237246, 0.11237246), (0.15174346, 0.15174346, 0.15174346), (0.13342075, 0.13342075, 0.13342075), (0.14047433, 0.14047433, 0.14047433), (0.18736804, 0.18736804, 0.18736804), (0.19306973, 0.19306973, 0.19306973), (0.19271255, 0.19271255, 0.19271255), (0.18320185, 0.18320185, 0.18320185), (0.15679277, 0.15679277, 0.15679277), (0.12971446, 0.12971446, 0.12971446), (0.17852679, 0.17852679, 0.17852679), (0.18606336, 0.18606336, 0.18606336), (0.16333368, 0.16333368, 0.16333368), (0.10447112, 0.104471125, 0.104471125), (0.12389205, 0.12389205, 0.12389205), (0.117913395, 0.117913395, 0.117913395), (0.11551177, 0.11551177, 0.11551177)],
-        }
         vector3f[] velocities.timeSamples = {
-            1: [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
             2: [(0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861046), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (-8.437403e-10, -2.6998948e-10, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (1.4985249e-9, 4.9916143e-10, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (-3.3161673e-10, 2.1237391e-10, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.4086104), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (7.1713646e-10, 1.1938311e-9, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (-1.5178302e-10, -1.315916e-10, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (1.1626155e-13, 3.6272495e-14, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861046), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861046), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (-6.967436e-10, -1.806176e-10, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (4.5742368e-10, -2.9294317e-10, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (-6.894259e-10, -1.1477009e-9, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861046), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.40861046), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104), (0, 0, -0.40861043), (0, 0, -0.4086104)],
-            3: [(0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172209), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (-1.0029328e-9, -3.3372163e-10, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (1.6350796e-9, 5.480754e-10, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (-1.5571217e-9, -9.367552e-10, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (1.3791153e-9, 8.2966767e-10, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (-1.4678484e-11, 1.2490907e-10, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (-1.8683778e-10, -1.5864735e-10, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (-1.4663933e-10, 1.3769513e-10, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (1.7597299e-10, 1.4942185e-10, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.8172208), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (1.3295866e-11, -1.13143446e-10, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (7.609959e-10, 1.2728301e-9, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (8.257902e-10, 4.9426024e-10, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (-2.436099e-10, -1.3517605e-10, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (1.1626155e-13, 3.6272495e-14, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172209), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (-2.9185998e-10, 1.7851616e-10, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172209), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (-6.307322e-10, -1.7325746e-10, -0.81722087), (-1.0665357e-9, -6.3835365e-10, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (5.843481e-10, -4.236309e-10, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (-7.3159057e-10, -1.2236473e-9, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172209), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172209), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208), (0, 0, -0.81722087), (0, 0, -0.8172208)],
-            4: [(0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258314), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (-1.1497769e-9, -3.926736e-10, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (1.7093676e-9, 5.745045e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (-2.8088714e-9, -1.7158378e-9, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (2.4877678e-9, 1.5196874e-9, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (-1.4763218e-11, 1.2563013e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (-1.9200558e-10, -1.6303542e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (-1.4948043e-10, 1.3736197e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (1.8084027e-10, 1.5355475e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (1.3372619e-11, -1.1379658e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (7.663785e-10, 1.2824967e-9, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (9.19369e-10, 1.5154121e-9, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (-2.436099e-10, -1.3517605e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (1.1626155e-13, 3.6272495e-14, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (-2.914463e-10, 1.8025405e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (-5.805969e-10, -1.4964913e-10, -1.2258313), (-1.187396e-9, -1.9572055e-9, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (5.8772553e-10, -4.2544646e-10, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (-7.367652e-10, -1.2329403e-9, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258314), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258313), (0, 0, -1.2258312), (0, 0, -1.2258313), (0, 0, -1.2258313)],
-            5: [(0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344419), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (-1.4069502e-9, -4.9565435e-10, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (1.8096759e-9, 6.098789e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (-2.8088714e-9, -1.7158378e-9, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (2.4877678e-9, 1.5196874e-9, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (-1.47637e-11, 1.2563424e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (-1.9214846e-10, -1.6315674e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (-1.496619e-10, 1.3734394e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (1.8097485e-10, 1.5366902e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (1.3373056e-11, -1.138003e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (7.6703777e-10, 1.2836803e-9, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (9.19369e-10, 1.5154121e-9, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (-2.436099e-10, -1.3517605e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (1.1626155e-13, 3.6272495e-14, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (-2.914206e-10, 1.8036204e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (-4.6223905e-10, -9.7340296e-11, -1.6344417), (-1.187396e-9, -1.9572055e-9, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (5.879422e-10, -4.2556297e-10, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (-7.37399e-10, -1.2340782e-9, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344419), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344417), (0, 0, -1.6344415), (0, 0, -1.6344417), (0, 0, -1.6344417)],
         }
 
         def Xform "Prototypes"
@@ -140,9 +114,6 @@ def Xform "Rocks" (
                         1: [0, 3, 2, 0, 4, 3, 0, 5, 4, 0, 6, 5, 0, 7, 6, 0, 8, 7, 0, 9, 8, 0, 10, 9, 0, 11, 10, 0, 12, 11, 0, 13, 12, 0, 14, 13, 0, 15, 14, 0, 16, 15, 0, 17, 16, 0, 18, 17, 0, 19, 18, 0, 20, 19, 0, 21, 20, 0, 22, 21, 0, 23, 22, 0, 24, 23, 0, 25, 24, 0, 2, 25, 2, 3, 27, 26, 3, 4, 28, 27, 4, 5, 29, 28, 5, 6, 30, 29, 6, 7, 31, 30, 7, 8, 32, 31, 8, 9, 33, 32, 9, 10, 34, 33, 10, 11, 35, 34, 11, 12, 36, 35, 12, 13, 37, 36, 13, 14, 38, 37, 14, 15, 39, 38, 15, 16, 40, 39, 16, 17, 41, 40, 17, 18, 42, 41, 18, 19, 43, 42, 19, 20, 44, 43, 20, 21, 45, 44, 21, 22, 46, 45, 22, 23, 47, 46, 23, 24, 48, 47, 24, 25, 49, 48, 25, 2, 26, 49, 26, 27, 51, 50, 27, 28, 52, 51, 28, 29, 53, 52, 29, 30, 54, 53, 30, 31, 55, 54, 31, 32, 56, 55, 32, 33, 57, 56, 33, 34, 58, 57, 34, 35, 59, 58, 35, 36, 60, 59, 36, 37, 61, 60, 37, 38, 62, 61, 38, 39, 63, 62, 39, 40, 64, 63, 40, 41, 65, 64, 41, 42, 66, 65, 42, 43, 67, 66, 43, 44, 68, 67, 44, 45, 69, 68, 45, 46, 70, 69, 46, 47, 71, 70, 47, 48, 72, 71, 48, 49, 73, 72, 49, 26, 50, 73, 50, 51, 75, 74, 51, 52, 76, 75, 52, 53, 77, 76, 53, 54, 78, 77, 54, 55, 79, 78, 55, 56, 80, 79, 56, 57, 81, 80, 57, 58, 82, 81, 58, 59, 83, 82, 59, 60, 84, 83, 60, 61, 85, 84, 61, 62, 86, 85, 62, 63, 87, 86, 63, 64, 88, 87, 64, 65, 89, 88, 65, 66, 90, 89, 66, 67, 91, 90, 67, 68, 92, 91, 68, 69, 93, 92, 69, 70, 94, 93, 70, 71, 95, 94, 71, 72, 96, 95, 72, 73, 97, 96, 73, 50, 74, 97, 74, 75, 99, 98, 75, 76, 100, 99, 76, 77, 101, 100, 77, 78, 102, 101, 78, 79, 103, 102, 79, 80, 104, 103, 80, 81, 105, 104, 81, 82, 106, 105, 82, 83, 107, 106, 83, 84, 108, 107, 84, 85, 109, 108, 85, 86, 110, 109, 86, 87, 111, 110, 87, 88, 112, 111, 88, 89, 113, 112, 89, 90, 114, 113, 90, 91, 115, 114, 91, 92, 116, 115, 92, 93, 117, 116, 93, 94, 118, 117, 94, 95, 119, 118, 95, 96, 120, 119, 96, 97, 121, 120, 97, 74, 98, 121, 98, 99, 123, 122, 99, 100, 124, 123, 100, 101, 125, 124, 101, 102, 126, 125, 102, 103, 127, 126, 103, 104, 128, 127, 104, 105, 129, 128, 105, 106, 130, 129, 106, 107, 131, 130, 107, 108, 132, 131, 108, 109, 133, 132, 109, 110, 134, 133, 110, 111, 135, 134, 111, 112, 136, 135, 112, 113, 137, 136, 113, 114, 138, 137, 114, 115, 139, 138, 115, 116, 140, 139, 116, 117, 141, 140, 117, 118, 142, 141, 118, 119, 143, 142, 119, 120, 144, 143, 120, 121, 145, 144, 121, 98, 122, 145, 122, 123, 147, 146, 123, 124, 148, 147, 124, 125, 149, 148, 125, 126, 150, 149, 126, 127, 151, 150, 127, 128, 152, 151, 128, 129, 153, 152, 129, 130, 154, 153, 130, 131, 155, 154, 131, 132, 156, 155, 132, 133, 157, 156, 133, 134, 158, 157, 134, 135, 159, 158, 135, 136, 160, 159, 136, 137, 161, 160, 137, 138, 162, 161, 138, 139, 163, 162, 139, 140, 164, 163, 140, 141, 165, 164, 141, 142, 166, 165, 142, 143, 167, 166, 143, 144, 168, 167, 144, 145, 169, 168, 145, 122, 146, 169, 146, 147, 171, 170, 147, 148, 172, 171, 148, 149, 173, 172, 149, 150, 174, 173, 150, 151, 175, 174, 151, 152, 176, 175, 152, 153, 177, 176, 153, 154, 178, 177, 154, 155, 179, 178, 155, 156, 180, 179, 156, 157, 181, 180, 157, 158, 182, 181, 158, 159, 183, 182, 159, 160, 184, 183, 160, 161, 185, 184, 161, 162, 186, 185, 162, 163, 187, 186, 163, 164, 188, 187, 164, 165, 189, 188, 165, 166, 190, 189, 166, 167, 191, 190, 167, 168, 192, 191, 168, 169, 193, 192, 169, 146, 170, 193, 170, 171, 195, 194, 171, 172, 196, 195, 172, 173, 197, 196, 173, 174, 198, 197, 174, 175, 199, 198, 175, 176, 200, 199, 176, 177, 201, 200, 177, 178, 202, 201, 178, 179, 203, 202, 179, 180, 204, 203, 180, 181, 205, 204, 181, 182, 206, 205, 182, 183, 207, 206, 183, 184, 208, 207, 184, 185, 209, 208, 185, 186, 210, 209, 186, 187, 211, 210, 187, 188, 212, 211, 188, 189, 213, 212, 189, 190, 214, 213, 190, 191, 215, 214, 191, 192, 216, 215, 192, 193, 217, 216, 193, 170, 194, 217, 194, 195, 219, 218, 195, 196, 220, 219, 196, 197, 221, 220, 197, 198, 222, 221, 198, 199, 223, 222, 199, 200, 224, 223, 200, 201, 225, 224, 201, 202, 226, 225, 202, 203, 227, 226, 203, 204, 228, 227, 204, 205, 229, 228, 205, 206, 230, 229, 206, 207, 231, 230, 207, 208, 232, 231, 208, 209, 233, 232, 209, 210, 234, 233, 210, 211, 235, 234, 211, 212, 236, 235, 212, 213, 237, 236, 213, 214, 238, 237, 214, 215, 239, 238, 215, 216, 240, 239, 216, 217, 241, 240, 217, 194, 218, 241, 218, 219, 243, 242, 219, 220, 244, 243, 220, 221, 245, 244, 221, 222, 246, 245, 222, 223, 247, 246, 223, 224, 248, 247, 224, 225, 249, 248, 225, 226, 250, 249, 226, 227, 251, 250, 227, 228, 252, 251, 228, 229, 253, 252, 229, 230, 254, 253, 230, 231, 255, 254, 231, 232, 256, 255, 232, 233, 257, 256, 233, 234, 258, 257, 234, 235, 259, 258, 235, 236, 260, 259, 236, 237, 261, 260, 237, 238, 262, 261, 238, 239, 263, 262, 239, 240, 264, 263, 240, 241, 265, 264, 241, 218, 242, 265, 242, 243, 1, 243, 244, 1, 244, 245, 1, 245, 246, 1, 246, 247, 1, 247, 248, 1, 248, 249, 1, 249, 250, 1, 250, 251, 1, 251, 252, 1, 252, 253, 1, 253, 254, 1, 254, 255, 1, 255, 256, 1, 256, 257, 1, 257, 258, 1, 258, 259, 1, 259, 260, 1, 260, 261, 1, 261, 262, 1, 262, 263, 1, 263, 264, 1, 264, 265, 1, 265, 242, 1],
                     }
                     uniform token orientation = "leftHanded"
-                    point3f[] points.timeSamples = {
-                        1: [(-4.6101682e-8, 1.2073886e-8, 1.1407812), (5.2350654e-8, -1.923855e-8, -0.8324003), (0.25657073, 7.7598056e-10, 0.95753235), (0.24404664, 0.0653921, 0.94291687), (0.22342291, 0.12899327, 0.9628179), (0.18772939, 0.1877294, 0.9908274), (0.13954337, 0.2416962, 1.041588), (0.07445665, 0.27787572, 1.073661), (2.193609e-8, 0.27572826, 1.0290504), (-0.07133191, 0.26621428, 1.0285914), (-0.14354767, 0.24863191, 1.0714855), (-0.2044914, 0.20449151, 1.0793223), (-0.25053325, 0.14464551, 1.0796819), (-0.29544345, 0.07916393, 1.1415577), (-0.2909899, 1.136442e-7, 1.0860244), (-0.26977837, -0.07228677, 1.0423659), (-0.24152933, -0.13944688, 1.0408685), (-0.18970485, -0.18970464, 1.0012562), (-0.1326364, -0.22973283, 0.99001807), (-0.06966218, -0.2599824, 1.0045062), (-1.3813306e-7, -0.28060094, 1.0472407), (0.07541636, -0.28145844, 1.0875075), (0.15334757, -0.26560625, 1.1446561), (0.20602392, -0.2060242, 1.0874135), (0.2388839, -0.13791989, 1.0294654), (0.25462973, -0.068228036, 0.9838191), (0.48562673, 4.601833e-9, 0.841123), (0.46078336, 0.12346653, 0.82624257), (0.40078968, 0.23139602, 0.8015605), (0.3175218, 0.3175218, 0.77774066), (0.23029833, 0.39888844, 0.79775685), (0.12410837, 0.4631787, 0.830539), (3.012592e-8, 0.47337088, 0.81988895), (-0.123013556, 0.4590931, 0.8232107), (-0.23939233, 0.41463983, 0.8292689), (-0.35337532, 0.3533755, 0.86558944), (-0.4628305, 0.26721546, 0.9256788), (-0.5488792, 0.14707193, 0.98425823), (-0.55122006, 2.0782635e-7, 0.9547673), (-0.49853992, -0.13358313, 0.89396554), (-0.43079695, -0.24872047, 0.8615925), (-0.32647577, -0.3264754, 0.79967916), (-0.20761475, -0.359599, 0.71915513), (-0.106429905, -0.39720124, 0.71219677), (-1.9444293e-7, -0.43770373, 0.7580935), (0.12795314, -0.47752866, 0.8562781), (0.26727083, -0.46292725, 0.9258719), (0.37946314, -0.3794636, 0.9295104), (0.45059773, -0.2601531, 0.9012062), (0.48366857, -0.12959898, 0.8672914), (0.6860602, 4.3811546e-9, 0.68605405), (0.709724, 0.19016998, 0.7347685), (0.5725596, 0.33056745, 0.6611214), (0.5026716, 0.5026716, 0.7108861), (0.37627363, 0.6517251, 0.7525606), (0.21274869, 0.7939888, 0.8220314), (6.672487e-8, 0.77954817, 0.7795694), (-0.19461398, 0.7263096, 0.7519441), (-0.36205077, 0.62709063, 0.7241068), (-0.52140117, 0.5214014, 0.73738164), (-0.61218596, 0.35344595, 0.7068915), (-0.6935072, 0.18582493, 0.71797466), (-0.7973692, 2.999284e-7, 0.7973956), (-0.7379852, -0.19774218, 0.76403505), (-0.6382085, -0.36846945, 0.73694825), (-0.47432113, -0.47432056, 0.6707803), (-0.29041135, -0.5030068, 0.5807854), (-0.152114, -0.5676963, 0.5876876), (-3.0913435e-7, -0.66388744, 0.6638748), (0.17159073, -0.6403867, 0.6629641), (0.31984285, -0.5539848, 0.6396666), (0.49777365, -0.49777424, 0.70395774), (0.57742035, -0.3333743, 0.666736), (0.62587166, -0.16770232, 0.6479328), (0.85616267, 1.1413167e-9, 0.49430412), (0.807678, 0.21641667, 0.48275784), (0.6755336, 0.3900195, 0.45034125), (0.62787473, 0.62787473, 0.5126613), (0.4641612, 0.8039508, 0.53597766), (0.25791657, 0.9625577, 0.57535905), (8.415276e-8, 1.0570587, 0.6103253), (-0.22741623, 0.8487294, 0.50730205), (-0.40539458, 0.7021643, 0.4681002), (-0.6203879, 0.6203882, 0.5065466), (-0.7901659, 0.4562028, 0.5267852), (-0.80065715, 0.21453573, 0.4785602), (-0.82704663, 3.2796612e-7, 0.47748902), (-0.8718231, -0.23360388, 0.5211095), (-0.81422013, -0.47008967, 0.54282576), (-0.6013835, -0.60138285, 0.4910247), (-0.4152341, -0.7192059, 0.47946474), (-0.25128764, -0.9378167, 0.56056666), (-4.6287371e-7, -1.0012876, 0.5781164), (0.23412499, -0.87376815, 0.5222725), (0.42031115, -0.72800124, 0.48532975), (0.6007351, -0.6007359, 0.49049574), (0.6699547, -0.38679916, 0.44662112), (0.77621907, -0.2079879, 0.4639489), (0.94869894, 1.0131695e-9, 0.25420177), (0.83971846, 0.22500189, 0.23293158), (0.7720389, 0.44573689, 0.23886387), (0.72227013, 0.72227013, 0.2736995), (0.52840364, 0.915222, 0.28317776), (0.26934722, 1.0052173, 0.27885455), (9.341014e-8, 1.1242445, 0.30125275), (-0.28508398, 1.0639484, 0.29515135), (-0.5113727, 0.8857238, 0.27404833), (-0.66692066, 0.666921, 0.2527195), (-0.82452315, 0.476039, 0.2551073), (-0.8142778, 0.21818537, 0.22587225), (-0.8239037, 3.494164e-7, 0.22075327), (-0.89231676, -0.23909514, 0.24752662), (-0.82426125, -0.47588694, 0.25502616), (-0.6379838, -0.6379831, 0.2417508), (-0.4524665, -0.78369427, 0.24247116), (-0.29560208, -1.1032002, 0.30604303), (-5.2120294e-7, -1.1205214, 0.30025485), (0.31413692, -1.1723773, 0.3252384), (0.53072137, -0.9192376, 0.28442046), (0.6590578, -0.65905863, 0.24973914), (0.7699526, -0.44453302, 0.23821826), (0.92312056, -0.24735016, 0.25607422), (1.1531225, -5.802286e-9, 0), (0.9415914, 0.25229865, 0), (0.86868477, 0.5015354, 0), (0.78656036, 0.78656036, 5.9609646e-9), (0.5080713, 0.88000536, 8.563704e-10), (0.2511726, 0.9373888, 0), (8.154078e-8, 1.0483248, -1.8311766e-10), (-0.27590477, 1.0296912, -2.501501e-10), (-0.47379187, 0.8206319, 1.9862038e-10), (-0.5795691, 0.57956946, 1.3669192e-9), (-0.85086006, 0.49124458, 6.635563e-11), (-0.918669, 0.24615695, 1.8538733e-10), (-0.90569705, 3.679738e-7, -3.5734296e-10), (-0.9097644, -0.24377021, 0), (-0.8534974, -0.4927664, 5.4817446e-11), (-0.6854004, -0.68539965, 0), (-0.4497072, -0.7789151, 3.8115178e-10), (-0.25004438, -0.9331769, 1.284731e-10), (-5.159704e-7, -1.1077939, 5.7185052e-9), (0.26584363, -0.9921439, 1.5427911e-9), (0.47347578, -0.8200852, -2.0101326e-10), (0.68108714, -0.68108803, 0), (0.9566476, -0.5523216, -1.586081e-9), (1.0849764, -0.29071936, -2.3351694e-9), (1.0475646, -4.641404e-9, -0.28070045), (1.0185481, 0.27291915, -0.28255358), (0.9532803, 0.55037665, -0.29495648), (0.8119829, 0.8119829, -0.30770493), (0.48225152, 0.83528423, -0.25843772), (0.24455489, 0.9126911, -0.25318018), (7.567305e-8, 0.98853153, -0.264878), (-0.2464561, 0.9197871, -0.2551492), (-0.36792883, 0.6372717, -0.19715461), (-0.5125328, 0.51253307, -0.19419912), (-0.7173787, 0.41417903, -0.22194706), (-0.8779101, 0.2352356, -0.24352908), (-0.89798707, 3.633591e-7, -0.24060962), (-0.85851896, -0.23003906, -0.23814835), (-0.73569524, -0.4247534, -0.22761577), (-0.5859091, -0.5859084, -0.22201203), (-0.36681053, -0.6353339, -0.19655496), (-0.21134636, -0.7887541, -0.21878994), (-4.4108708e-7, -0.9485965, -0.25417432), (0.20590192, -0.768438, -0.2131525), (0.378874, -0.65622985, -0.20302193), (0.62879556, -0.62879634, -0.2382683), (0.8166643, -0.4715021, -0.25267512), (0.99170005, -0.265726, -0.2751038), (0.98975426, -1.40478305e-8, -0.5714557), (0.97801507, 0.26205835, -0.5846009), (0.8311257, 0.47985062, -0.55409956), (0.72216487, 0.72216487, -0.5896713), (0.45957625, 0.7960095, -0.53068197), (0.22015588, 0.8216328, -0.49110132), (5.5957397e-8, 0.7902891, -0.4562609), (-0.21401279, 0.798707, -0.47739413), (-0.32817313, 0.5684128, -0.37890652), (-0.43611497, 0.4361152, -0.3560445), (-0.58142674, 0.33568707, -0.3875851), (-0.826982, 0.22158948, -0.49429962), (-0.9200616, 3.499849e-7, -0.5312069), (-0.89418143, -0.23959479, -0.5344774), (-0.692123, -0.39959696, -0.46140397), (-0.49025863, -0.4902581, -0.40026522), (-0.35978284, -0.6231616, -0.41541654), (-0.1899274, -0.70881754, -0.4236501), (-3.3742458e-7, -0.71366745, -0.41201046), (0.17357202, -0.6477809, -0.38715672), (0.33948338, -0.5880032, -0.39197052), (0.5360093, -0.53601, -0.4376319), (0.65831304, -0.38007778, -0.4388577), (0.8346929, -0.22365595, -0.49890992), (0.7591084, -1.0408585e-8, -0.7591237), (0.7048733, 0.18887024, -0.7297452), (0.6211763, 0.35863632, -0.7172756), (0.55516654, 0.55516654, -0.7851469), (0.40436175, 0.7003752, -0.80875325), (0.18249576, 0.6810833, -0.70510876), (4.7903164e-8, 0.6755054, -0.67549616), (-0.16908647, 0.6310396, -0.6532845), (-0.29294232, 0.5073912, -0.58584934), (-0.4035238, 0.40352404, -0.5706291), (-0.54459876, 0.31442443, -0.62882566), (-0.6850195, 0.18355066, -0.709185), (-0.72433895, 2.7986445e-7, -0.72434396), (-0.6686181, -0.17915535, -0.69219995), (-0.57611525, -0.33261994, -0.6652282), (-0.4227345, -0.42273402, -0.5978045), (-0.29954273, -0.5188228, -0.5990535), (-0.15478307, -0.57765734, -0.59800303), (-2.6681312e-7, -0.5272218, -0.52716917), (0.1299708, -0.4850587, -0.5021097), (0.27139193, -0.47006524, -0.5427363), (0.41508353, -0.415084, -0.58698195), (0.5212096, -0.30092096, -0.6018104), (0.6431263, -0.1723257, -0.6658014), (0.51177984, -3.6384118e-9, -0.8864348), (0.49319577, 0.13215141, -0.88438), (0.4602675, 0.2657356, -0.9205512), (0.39417598, 0.39417598, -0.96555936), (0.2833814, 0.49083105, -0.9816961), (0.14006287, 0.52272177, -0.9373401), (3.424996e-8, 0.47587183, -0.82422197), (-0.114835426, 0.42857185, -0.7684654), (-0.20907688, 0.36213195, -0.72422224), (-0.30600548, 0.30600566, -0.7495234), (-0.40223885, 0.23223284, -0.8044598), (-0.4646538, 0.12450377, -0.8331849), (-0.50672966, 1.963675e-7, -0.87768507), (-0.4437002, -0.1188889, -0.7956007), (-0.38157976, -0.22030492, -0.7631291), (-0.30332407, -0.3033237, -0.7429526), (-0.22411294, -0.3881747, -0.7763234), (-0.11682954, -0.4360131, -0.7818128), (-2.101346e-7, -0.44824392, -0.776355), (0.110034436, -0.410655, -0.7363283), (0.21254782, -0.36814415, -0.73625004), (0.30699438, -0.3069948, -0.7519467), (0.4221757, -0.24374361, -0.8443454), (0.47537154, -0.1273758, -0.8524092), (0.24876843, 3.5235725e-9, -0.9284052), (0.23402733, 0.06270743, -0.90419376), (0.209454, 0.12092831, -0.9026024), (0.16960225, 0.16960223, -0.89512545), (0.115890674, 0.2007287, -0.86499053), (0.057514183, 0.21464634, -0.8292894), (-5.3843088e-8, 0.21485984, -0.8018193), (-0.05476209, 0.20437539, -0.7895937), (-0.103988335, 0.18011343, -0.77612484), (-0.14758572, 0.14758576, -0.7788899), (-0.18264966, 0.10545286, -0.7870576), (-0.2044332, 0.054777786, -0.7898172), (-0.21336983, 8.320303e-8, -0.7962569), (-0.21180913, -0.056753978, -0.8183238), (-0.20195855, -0.11660067, -0.87029165), (-0.16788197, -0.16788174, -0.8860427), (-0.116145656, -0.20117009, -0.8668935), (-0.06019818, -0.22466226, -0.86799943), (-1.5698986e-7, -0.22698508, -0.8470847), (0.057091504, -0.21306875, -0.8231921), (0.11131794, -0.19280861, -0.8308494), (0.1649996, -0.16499981, -0.87082654), (0.21355578, -0.12329668, -0.9202843), (0.24094893, -0.06456227, -0.930945)],
-                    }
                     uniform token subdivisionScheme = "none"
                 }
             }
index bb00b51736a3bd8af203c0e3e659e3e3a75a437c..86163166b2af56a6d89b4fa69a000b7d2396dbbd 100644 (file)
@@ -25,7 +25,7 @@ disp('a comment symbol, %, in a string');
 function y=myfunc(x)
 y = exp(x);
 
- {%
+ %{
 a block comment
  %}
 
index baa52d981de3ac0a2a59ca6ae1767425ae31e60d..3af9040a5c7b4a4a0eb321e8ac99b2698979ac34 100644 (file)
@@ -1954,17 +1954,11 @@ r = %r(regex with slash: /)
      world, \
      no newlines" # same as "hello world, no newlines"
 
-# Supports double quotes and nested parenthesis
-%(hello ("world")) # same as "hello (\"world\")"
-
-# Supports double quotes and nested brackets
-%[hello ["world"]] # same as "hello [\"world\"]"
-
-# Supports double quotes and nested curlies
-%{hello {"world"}} # same as "hello {\"world\"}"
-
-# Supports double quotes and nested angles
-%<hello <"world">> # same as "hello <\"world\">"
+%(hello ("world")) # => "hello (\"world\")"
+%[hello ["world"]] # => "hello [\"world\"]"
+%{hello {"world"}} # => "hello {\"world\"}"
+%<hello <"world">> # => "hello <\"world\">"
+%|hello "world"|   # => "hello \"world\""
 
 <<-XML
 <parent>
index 1d80bb0189f53fc6d51cd55f4f4d634a34d354dc..0391507e389f72a33c446feb3d675f8a6e950364 100644 (file)
@@ -3,58 +3,67 @@
     Pygments basic API tests
     ~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
-import random
-from io import StringIO, BytesIO
 from os import path
 
 import pytest
 
-from pygments import lexers, formatters, lex, format
+from pygments import lexers
 
 TESTDIR = path.dirname(path.abspath(__file__))
 
+
 def _guess_lexer_for_file(filename):
-    return lexers.guess_lexer(open(path.join(TESTDIR, 'examplefiles', filename), 'r', encoding='utf-8').read())
+    return lexers.guess_lexer(open(path.join(TESTDIR, 'examplefiles', filename),
+                                   'r', encoding='utf-8').read())
+
 
 @pytest.mark.skip(reason="This is identified as T-SQL")
 def test_guess_lexer_fsharp():
-    l = _guess_lexer_for_file('Deflate.rs')
-    assert l.__class__.__name__ == 'FSharpLexer'
+    lx = _guess_lexer_for_file('Deflate.rs')
+    assert lx.__class__.__name__ == 'FSharpLexer'
+
 
 def test_guess_lexer_brainfuck():
-    l = lexers.guess_lexer(">>[-]<<[->>+<<]")
-    assert l.__class__.__name__ == 'BrainfuckLexer'
+    lx = lexers.guess_lexer(">>[-]<<[->>+<<]")
+    assert lx.__class__.__name__ == 'BrainfuckLexer'
+
 
 def test_guess_lexer_singularity():
-    l = _guess_lexer_for_file('Singularity')
-    assert l.__class__.__name__ == 'SingularityLexer'
+    lx = _guess_lexer_for_file('Singularity')
+    assert lx.__class__.__name__ == 'SingularityLexer'
+
 
 @pytest.mark.skip(reason="This is identified as MIME")
 def test_guess_lexer_matlab():
-    l = lexers.guess_lexer(r'A \ B')
-    assert l.__class__.__name__ == 'OctaveLexer'
+    lx = lexers.guess_lexer(r'A \ B')
+    assert lx.__class__.__name__ == 'OctaveLexer'
+
 
 @pytest.mark.skip(reason="This is identified as Python")
 def test_guess_lexer_hybris():
-    l = _guess_lexer_for_file('hybris_File.hy')
-    assert l.__class__.__name__ == 'HybrisLexer'
+    lx = _guess_lexer_for_file('hybris_File.hy')
+    assert lx.__class__.__name__ == 'HybrisLexer'
+
 
 def test_guess_lexer_forth():
-    l = _guess_lexer_for_file('demo.frt')
-    assert l.__class__.__name__ == 'ForthLexer'
+    lx = _guess_lexer_for_file('demo.frt')
+    assert lx.__class__.__name__ == 'ForthLexer'
+
 
 def test_guess_lexer_modula2():
-    l = _guess_lexer_for_file('modula2_test_cases.def')
-    assert l.__class__.__name__ == 'Modula2Lexer'
+    lx = _guess_lexer_for_file('modula2_test_cases.def')
+    assert lx.__class__.__name__ == 'Modula2Lexer'
+
 
 def test_guess_lexer_unicon():
-    l = _guess_lexer_for_file('example.icn')
-    assert l.__class__.__name__ == 'UcodeLexer'
+    lx = _guess_lexer_for_file('example.icn')
+    assert lx.__class__.__name__ == 'UcodeLexer'
+
 
 def test_guess_lexer_ezhil():
-    l = _guess_lexer_for_file('ezhil_primefactors.n')
-    assert l.__class__.__name__ == 'EzhilLexer'
\ No newline at end of file
+    lx = _guess_lexer_for_file('ezhil_primefactors.n')
+    assert lx.__class__.__name__ == 'EzhilLexer'
index cdb8bc33a8805261af558a4f22f6ca74b0ae0720..a19cb84288b4a227639e6e4ec752eb0ba409cea8 100644 (file)
@@ -3,7 +3,7 @@
     Basic Apache Configuration Test
     ~~~~~~~~~~~~~~~~~--------------
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -99,3 +99,36 @@ def test_fix_lock_absolute_path(lexer):
             (Token.Text, '\n'),
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
+
+def test_normal_scoped_directive(lexer):
+    fragment = '<VirtualHost "test">\n</VirtualHost>'
+    tokens = [
+            (Token.Name.Tag, '<VirtualHost'),
+            (Token.Text, ' '),
+            (Token.Literal.String, '"test"'),
+            (Token.Name.Tag, '>'),
+            (Token.Text, '\n'),
+            (Token.Name.Tag, '</VirtualHost'),
+            (Token.Name.Tag, '>'),
+            (Token.Text, '\n')
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+def test_malformed_scoped_directive_closing_tag(lexer):
+    fragment = '<VirtualHost "test">\n</VirtualHost\n>'
+    tokens = [
+            (Token.Name.Tag, '<VirtualHost'),
+            (Token.Text, ' '),
+            (Token.Literal.String, '"test"'),
+            (Token.Name.Tag, '>'),
+            (Token.Text, '\n'),
+            (Token.Error, '<'),
+            (Token.Error, '/'),
+            (Token.Name.Builtin, 'VirtualHost'),
+            (Token.Text, ''),
+            (Token.Text, '\n'),
+            (Token.Error, '>'),
+            (Token.Text, '\n')
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
index 23e9f344811058c02150aadcb076f330d1309382..b972c102c425a377df524fd704bc3d9ba6ceb2b1 100644 (file)
@@ -3,7 +3,7 @@
     Basic GasLexer/NasmLexer Test
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 384be6ec3659a13bca44d3bc5b88cf2eaf25a601..fd054ddb23fbadb0df242c37dfaa1b6eac9a4163 100644 (file)
@@ -3,7 +3,7 @@
     Pygments Basic lexers tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index bbfbb14e4b1626d61580f6b1a9a3c5d655766fc5..b860060bf6dc88c9b4c18eb5de528ba21c88f65f 100644 (file)
@@ -3,7 +3,7 @@
     Pygments basic API tests
     ~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index d7bc02acecb35e9fcb890a6c8c22dbd3d857b30e..b56eccf366637be7941e1aaac207ff1b5cd4a073 100644 (file)
@@ -3,7 +3,7 @@
     BibTeX Test
     ~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index a89e160d3e97e49d1b0ce892994c8f496e0dcbfe..54cf502c9cc11a83456cabbbf6746a76d823bfac 100644 (file)
@@ -3,7 +3,7 @@
     Basic ColdfusionHtmlLexer Test
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -21,7 +21,6 @@ def lexer():
 def test_basic_comment(lexer):
     fragment = '<!--- cfcomment --->'
     expected = [
-        (Token.Text, ''),
         (Token.Comment.Multiline, '<!---'),
         (Token.Comment.Multiline, ' cfcomment '),
         (Token.Comment.Multiline, '--->'),
@@ -33,7 +32,6 @@ def test_basic_comment(lexer):
 def test_nested_comment(lexer):
     fragment = '<!--- nested <!--- cfcomment ---> --->'
     expected = [
-        (Token.Text, ''),
         (Token.Comment.Multiline, '<!---'),
         (Token.Comment.Multiline, ' nested '),
         (Token.Comment.Multiline, '<!---'),
index d656124356d458f26c18f520bab28e73eb0fcb59..c636f7f27084ced5d5405ef99897655629d2ccda 100644 (file)
@@ -3,7 +3,7 @@
     Basic CLexer Test
     ~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index fe27df7f9eac213a143dd1862dc52ab451b08e5f..d740fccbad451f72aebc63dca933028b3825b147 100644 (file)
@@ -3,7 +3,7 @@
     Command line test
     ~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 41ca8e0d6b4e316775e23743b8f0251fa9e87878..60ddfcd89a90be8a0d6f9a62692aeafcabade783 100644 (file)
@@ -3,7 +3,7 @@
     CoffeeScript tests
     ~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
diff --git a/tests/test_coq.py b/tests/test_coq.py
new file mode 100644 (file)
index 0000000..6b4e27d
--- /dev/null
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+"""
+    Coq Tests
+    ~~~~~~~~~~~~~
+    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+import pytest
+
+from pygments.lexers import CoqLexer
+from pygments.token import Token
+
+@pytest.fixture(scope='module')
+def lexer():
+    yield CoqLexer()
+
+def test_coq_unicode(lexer):
+    fragment = 'Check (α ≻ β).\n'
+    tokens = [
+        (Token.Keyword.Namespace, 'Check'),
+        (Token.Text, ' '),
+        (Token.Operator, '('),
+        (Token.Name, 'α'),
+        (Token.Text, ' '),
+        (Token.Name.Builtin.Pseudo, '≻'),
+        (Token.Text, ' '),
+        (Token.Name, 'β'),
+        (Token.Operator, ')'),
+        (Token.Operator, '.'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
index 08aa77411767f238bac0d8ddc381ba2f0bf90e04..ae0dd7ffaa94a8f57dfbd2a0e2dd7e57f455759c 100644 (file)
@@ -3,7 +3,7 @@
     Basic CrystalLexer Test
     ~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -104,6 +104,19 @@ def test_interpolation_nested_curly(lexer):
     assert list(lexer.get_tokens(fragment)) == tokens
 
 
+def test_escaped_interpolation(lexer):
+    fragment = '"\\#{a + b}"\n'
+    # i.e. no actual interpolation
+    tokens = [
+        (String.Double, '"'),
+        (String.Escape, '\\#'),
+        (String.Double, '{a + b}'),
+        (String.Double, '"'),
+        (Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+
 def test_operator_methods(lexer):
     fragment = '([] of Int32).[]?(5)\n'
     tokens = [
@@ -113,7 +126,7 @@ def test_operator_methods(lexer):
         (Text, ' '),
         (Keyword, 'of'),
         (Text, ' '),
-        (Name.Builtin, 'Int32'),
+        (Name, 'Int32'),
         (Punctuation, ')'),
         (Operator, '.'),
         (Name.Operator, '[]?'),
@@ -155,6 +168,21 @@ def test_numbers(lexer):
         assert next(lexer.get_tokens(fragment + '\n'))[0] == Error
 
 
+def test_symbols(lexer):
+    for fragment in [':sym_bol', ':\u3042', ':question?']:
+        assert list(lexer.get_tokens(fragment + '\n')) == \
+            [(String.Symbol, fragment), (Text, '\n')]
+
+    fragment = ':"sym bol"\n'
+    tokens = [
+        (String.Symbol, ':"'),
+        (String.Symbol, 'sym bol'),
+        (String.Symbol, '"'),
+        (Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+
 def test_chars(lexer):
     for fragment in ["'a'", "'я'", "'\\u{1234}'", "'\n'"]:
         assert list(lexer.get_tokens(fragment + '\n')) == \
@@ -162,6 +190,187 @@ def test_chars(lexer):
     assert next(lexer.get_tokens("'abc'"))[0] == Error
 
 
+def test_string_escapes(lexer):
+    for body in ['\\n', '\\a', '\\xff', '\\u1234', '\\000', '\\u{0}', '\\u{10AfF9}']:
+        fragment = '"a' + body + 'z"\n'
+        assert list(lexer.get_tokens(fragment)) == [
+            (String.Double, '"'),
+            (String.Double, 'a'),
+            (String.Escape, body),
+            (String.Double, 'z'),
+            (String.Double, '"'),
+            (Text, '\n'),
+        ]
+
+
+def test_empty_percent_strings(lexer):
+    for body in ['%()', '%[]', '%{}', '%<>', '%||']:
+        fragment = '(' + body + ')\n'
+        assert list(lexer.get_tokens(fragment)) == [
+            (Punctuation, '('),
+            (String.Other, body[:-1]),
+            (String.Other, body[-1]),
+            (Punctuation, ')'),
+            (Text, '\n'),
+        ]
+
+
+def test_percent_strings(lexer):
+    fragment = (
+        '%(hello ("world"))\n'
+        '%[hello ["world"]]\n'
+        '%{hello "world"}\n'
+        '%<hello <"world">>\n'
+        '%|hello "world"|\n')
+    tokens = [
+        (String.Other, '%('),
+        (String.Other, 'hello '),
+        (String.Other, '('),
+        (String.Other, '"world"'),
+        (String.Other, ')'),
+        (String.Other, ')'),
+        (Text, '\n'),
+        (String.Other, '%['),
+        (String.Other, 'hello '),
+        (String.Other, '['),
+        (String.Other, '"world"'),
+        (String.Other, ']'),
+        (String.Other, ']'),
+        (Text, '\n'),
+        (String.Other, '%{'),
+        (String.Other, 'hello "world"'),
+        (String.Other, '}'),
+        (Text, '\n'),
+        (String.Other, '%<'),
+        (String.Other, 'hello '),
+        (String.Other, '<'),
+        (String.Other, '"world"'),
+        (String.Other, '>'),
+        (String.Other, '>'),
+        (Text, '\n'),
+        (String.Other, '%|'),
+        (String.Other, 'hello "world"'),
+        (String.Other, '|'),
+        (Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+
+def test_special_percent_strings(lexer):
+    fragment = '%Q(hello \\n #{name})\n%q(hello \\n #{name})\n%w(foo\\nbar baz)\n'
+    tokens = [
+        (String.Other, '%Q('),
+        (String.Other, 'hello '),
+        (String.Escape, '\\n'),
+        (String.Other, ' '),
+        (String.Interpol, '#{'),
+        (Name, 'name'),
+        (String.Interpol, '}'),
+        (String.Other, ')'),
+        (Text, '\n'),
+        # The ones below have no interpolation.
+        (String.Other, '%q('),
+        (String.Other, 'hello '),
+        (String.Other, '\\'),
+        (String.Other, 'n '),
+        (String.Other, '#'),
+        (String.Other, '{name}'),
+        (String.Other, ')'),
+        (Text, '\n'),
+        (String.Other, '%w('),
+        (String.Other, 'foo'),
+        (String.Other, '\\'),
+        (String.Other, 'nbar baz'),
+        (String.Other, ')'),
+        (Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+
+def test_pseudo_keywords(lexer):
+    fragment = (
+        'def f(x : T, line = __LINE__) forall T\n'
+        'if x.is_a?(String)\n'
+        'pp! x\n'
+        'end\n'
+        'end\n')
+    tokens = [
+        (Keyword, 'def'),
+        (Text, ' '),
+        (Name.Function, 'f'),
+        (Punctuation, '('),
+        (Name, 'x'),
+        (Text, ' '),
+        (Punctuation, ':'),
+        (Text, ' '),
+        (Name, 'T'),
+        (Punctuation, ','),
+        (Text, ' '),
+        (Name, 'line'),
+        (Text, ' '),
+        (Operator, '='),
+        (Text, ' '),
+        (Keyword.Pseudo, '__LINE__'),
+        (Punctuation, ')'),
+        (Text, ' '),
+        (Keyword.Pseudo, 'forall'),
+        (Text, ' '),
+        (Name, 'T'),
+        (Text, '\n'),
+        (Keyword, 'if'),
+        (Text, ' '),
+        (Name, 'x'),
+        (Keyword.Pseudo, '.is_a?'),
+        (Punctuation, '('),
+        (Name, 'String'),
+        (Punctuation, ')'),
+        (Text, '\n'),
+        (Name.Builtin.Pseudo, 'pp!'),
+        (Text, ' '),
+        (Name, 'x'),
+        (Text, '\n'),
+        (Keyword, 'end'),
+        (Text, '\n'),
+        (Keyword, 'end'),
+        (Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+
+def test_pseudo_builtins(lexer):
+    fragment = 'record Cls do\ndef_equals s\nend\n'
+    tokens = [
+        (Name.Builtin.Pseudo, 'record'),
+        (Text, ' '),
+        (Name, 'Cls'),
+        (Text, ' '),
+        (Keyword, 'do'),
+        (Text, '\n'),
+        (Name.Builtin.Pseudo, 'def_equals'),
+        (Text, ' '),
+        (Name, 's'),
+        (Text, '\n'),
+        (Keyword, 'end'),
+        (Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+
+def test_constant_and_module(lexer):
+    fragment = 'HTTP\nHTTP::Server.new\n'
+    tokens = [
+        (Name.Constant, 'HTTP'),
+        (Text, '\n'),
+        (Name, 'HTTP'),
+        (Operator, '::'),
+        (Name, 'Server'),
+        (Operator, '.'),
+        (Name, 'new'),
+        (Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+
 def test_macro(lexer):
     fragment = (
         'def<=>(other : self) : Int\n'
@@ -179,12 +388,12 @@ def test_macro(lexer):
         (Text, ' '),
         (Punctuation, ':'),
         (Text, ' '),
-        (Keyword.Pseudo, 'self'),
+        (Keyword, 'self'),
         (Punctuation, ')'),
         (Text, ' '),
         (Punctuation, ':'),
         (Text, ' '),
-        (Name.Builtin, 'Int'),
+        (Name, 'Int'),
         (Text, '\n'),
         (String.Interpol, '{%'),
         (Keyword, 'for'),
@@ -276,7 +485,7 @@ def test_lib(lexer):
         (Text, ' '),
         (Punctuation, ':'),
         (Text, ' '),
-        (Name.Builtin, 'Void'),
+        (Name, 'Void'),
         (Operator, '*'),
         (Punctuation, ')'),
         (Text, ' '),
@@ -284,7 +493,7 @@ def test_lib(lexer):
         (Text, ' '),
         (Name, 'LibC'),
         (Operator, '::'),
-        (Name.Builtin, 'Int'),
+        (Name, 'Int'),
         (Text, '\n'),
         (Keyword, 'end'),
         (Text, '\n')
@@ -312,3 +521,21 @@ def test_escaped_bracestring(lexer):
         (Text, '\n'),
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
+
+
+def test_annotation(lexer):
+    fragment = '@[FOO::Bar::Baz(opt: "xx")]\n'
+    tokens = [
+        (Operator, '@['),
+        (Name.Decorator, 'FOO::Bar::Baz'),
+        (Punctuation, '('),
+        (String.Symbol, 'opt'),
+        (Punctuation, ':'),
+        (Text, ' '),
+        (String.Double, '"'),
+        (String.Double, 'xx'),
+        (String.Double, '"'),
+        (Punctuation, ')'),
+        (Operator, ']'),
+        (Text, '\n'),
+    ]
index 26672043157517220487a76bb77ffe7f7e0bb91d..cee0784ab3e02c785d06165ee8b8558de0c67615 100644 (file)
@@ -3,7 +3,7 @@
     Csound lexer tests
     ~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 25b355ec4dd6a5b287a137d9c83f7e2c709c8bb7..102c154d80becbe1bc3787eb206483e11696e11c 100644 (file)
@@ -3,7 +3,7 @@
     Pygments tests with example files
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -27,17 +27,9 @@ STATS = {}
 
 TESTDIR = os.path.dirname(__file__)
 
-# Jython generates a StackOverflowError for repetitions of the form (a|b)+,
-# which are commonly used in string patterns, when matching more than about 1000
-# chars.  These tests do not complete.  See http://bugs.jython.org/issue1965
-BAD_FILES_FOR_JYTHON = ('Object.st', 'all.nit', 'genclass.clj',
-                        'ragel-cpp_rlscan')
-
 
 def get_example_files():
-    # TODO: move stats to a fixture
-    # global STATS
-    # STATS = {}
+    STATS.clear()
     outdir = os.path.join(TESTDIR, 'examplefiles', 'output')
     if STORE_OUTPUT and not os.path.isdir(outdir):
         os.makedirs(outdir)
@@ -53,27 +45,11 @@ def get_example_files():
         if extension and not absfn.endswith(extension):
             continue
 
-        print(absfn)
         yield fn
 
-    # N = 7
-    # stats = list(STATS.items())
-    # stats.sort(key=lambda x: x[1][1])
-    # print('\nExample files that took longest absolute time:')
-    # for fn, t in stats[-N:]:
-    #     print('%-30s  %6d chars  %8.2f ms  %7.3f ms/char' % ((fn,) + t))
-    # print()
-    # stats.sort(key=lambda x: x[1][2])
-    # print('\nExample files that took longest relative time:')
-    # for fn, t in stats[-N:]:
-    #     print('%-30s  %6d chars  %8.2f ms  %7.3f ms/char' % ((fn,) + t))
-
 
 @pytest.mark.parametrize('filename', get_example_files())
 def test_examplefile(filename):
-    if os.name == 'java' and filename in BAD_FILES_FOR_JYTHON:
-        pytest.skip('%s is a known bad file on Jython' % filename)
-
     absfn = os.path.join(TESTDIR, 'examplefiles', filename)
     with open(absfn, 'rb') as f:
         text = f.read()
@@ -116,8 +92,8 @@ def test_examplefile(filename):
             (lx, absfn, val, len(''.join(ntext)))
         tokens.append((type, val))
     t2 = time.time()
-    STATS[os.path.basename(absfn)] = (len(text),
-                                      1000 * (t2 - t1), 1000 * (t2 - t1) / len(text))
+    STATS[os.path.basename(absfn)] = \
+        (len(text), 1000 * (t2 - t1), 1000 * (t2 - t1) / len(text))
     if ''.join(ntext) != text:
         print('\n'.join(difflib.unified_diff(''.join(ntext).splitlines(),
                                              text.splitlines())))
@@ -140,3 +116,16 @@ def test_examplefile(filename):
             print('\n'.join(difflib.unified_diff(f1.splitlines(),
                                                  f2.splitlines())))
             assert False, absfn
+
+
+def teardown_module():
+    N = 7
+    stats = list(STATS.items())
+    stats.sort(key=lambda x: x[1][1])
+    print('\nExample files that took longest absolute time:')
+    for fn, t in stats[-N:]:
+        print('%-30s  %6d chars  %8.2f ms  %7.3f ms/char' % ((fn,) + t))
+    stats.sort(key=lambda x: x[1][2])
+    print('\nExample files that took longest relative time:')
+    for fn, t in stats[-N:]:
+        print('%-30s  %6d chars  %8.2f ms  %7.3f ms/char' % ((fn,) + t))
index 9db46e625ae66a2dd7bef5cc071eef5dd4c2d0a5..1ac35f53b01a71c61869ec751fbef45ac19c8bc2 100644 (file)
@@ -3,7 +3,7 @@
     Basic Grammar Notation Tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index f67db1fb7a2e750da35c4c613ad33bf440722636..a9a15bb3bf27ed35890e0cdbe21fd63f393a611d 100644 (file)
@@ -3,7 +3,7 @@
     Haskell Tests
     ~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index f397512444e7c33a0f75eaf9dc7c48babfdb30f3..cad3f348cd23350cc86a2f5ff98e0f97a5c58435 100644 (file)
@@ -3,7 +3,7 @@
     HDL Tests
     ~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 223e3aeb39d8e42088ff6488634bbf87fd17e74e..5138a1ce162523e53551d81fbf5423edadb38903 100644 (file)
@@ -3,7 +3,7 @@
     Pygments HTML formatter tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 997748a664a00c247137a598f655ef0867df8364..322ac148a3a19e9b37326b73e9dc1eb500f880e5 100644 (file)
@@ -3,7 +3,7 @@
     Tests for inheritance in RegexLexer
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
diff --git a/tests/test_ini_lexer.py b/tests/test_ini_lexer.py
new file mode 100644 (file)
index 0000000..9959a9a
--- /dev/null
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+"""
+    Pygments INI lexer tests
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+import pytest
+from pygments.lexers.configs import IniLexer
+from pygments.token import Token, String, Keyword, Name, Operator
+
+
+@pytest.fixture(scope='module')
+def lexer():
+    yield IniLexer()
+
+
+def test_indented_entries(lexer):
+    fragment = \
+        '[section]\n' \
+        '    key1=value1\n' \
+        '    key2=value2\n'
+    tokens = [
+        (Keyword, '[section]'),
+        (Token.Text, '\n    '),
+        (Name.Attribute, 'key1'),
+        (Operator, '='),
+        (String, 'value1'),
+        (Token.Text, '\n    '),
+        (Name.Attribute, 'key2'),
+        (Operator, '='),
+        (String, 'value2'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+    fragment = \
+        '[section]\n' \
+        '    key1 = value1\n' \
+        '    key2 = value2\n'
+    tokens = [
+        (Keyword, '[section]'),
+        (Token.Text, '\n    '),
+        (Name.Attribute, 'key1'),
+        (Token.Text, ' '),
+        (Operator, '='),
+        (Token.Text, ' '),
+        (String, 'value1'),
+        (Token.Text, '\n    '),
+        (Name.Attribute, 'key2'),
+        (Token.Text, ' '),
+        (Operator, '='),
+        (Token.Text, ' '),
+        (String, 'value2'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+    fragment = \
+        '[section]\n' \
+        '    key 1 = value 1\n' \
+        '    key 2 = value 2\n'
+    tokens = [
+        (Keyword, '[section]'),
+        (Token.Text, '\n    '),
+        (Name.Attribute, 'key 1'),
+        (Token.Text, ' '),
+        (Operator, '='),
+        (Token.Text, ' '),
+        (String, 'value 1'),
+        (Token.Text, '\n    '),
+        (Name.Attribute, 'key 2'),
+        (Token.Text, ' '),
+        (Operator, '='),
+        (Token.Text, ' '),
+        (String, 'value 2'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
index f93bbad4a8ee44222e67f2101077457e7144d47b..d43e112293b26dc39ea7e9adde7ad79e387ca6ea 100644 (file)
@@ -3,7 +3,7 @@
     Pygments IRC formatter tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index f7b16bd7ea1cac45310135e2850c706ee19c7bd3..f618f5035b095a75f8262615fc133ce04c846744 100644 (file)
@@ -3,7 +3,7 @@
     Basic JavaLexer Test
     ~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 78350612daa42ed66838607b7f504b1c42aec14d..ea0691d62edd5bfb49fe12ec8a4fb695503e9d52 100644 (file)
@@ -3,14 +3,14 @@
     Javascript tests
     ~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
 import pytest
 
-from pygments.lexers.javascript import JavascriptLexer
-from pygments.token import Number
+from pygments.lexers.javascript import JavascriptLexer, TypeScriptLexer
+from pygments.token import Number, Token
 
 
 @pytest.fixture(scope='module')
@@ -82,3 +82,25 @@ def test_hexadecimal_literal_positive_matches(lexer, text):
 def test_hexadecimal_literals_negative_matches(lexer, text):
     """Test text that should **not** be tokenized as hexadecimal literals."""
     assert list(lexer.get_tokens(text))[0] != (Number.Hex, text)
+
+@pytest.fixture(scope='module')
+def ts_lexer():
+    yield TypeScriptLexer()
+
+def test_function_definition(ts_lexer):
+    fragment = u'async function main() {\n}'
+    tokens = [
+        (Token.Keyword, u'async'),
+        (Token.Text, u' '),
+        (Token.Keyword.Declaration, u'function'),
+        (Token.Text, u' '),
+        (Token.Name.Other, u'main'),
+        (Token.Punctuation, u'('),
+        (Token.Punctuation, u')'),
+        (Token.Text, u' '),
+        (Token.Punctuation, u'{'),
+        (Token.Text, u'\n'),
+        (Token.Punctuation, u'}'),
+        (Token.Text, u'\n'),
+    ]
+    assert list(ts_lexer.get_tokens(fragment)) == tokens
index 14bcdee0da4ac57ef2dada12de891110aa47642f..4c6be5385510a696ac940b130cced42d8015b48c 100644 (file)
@@ -3,7 +3,7 @@
     Julia Tests
     ~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 9b9e898d43384cc4157f805e994714617993ea3f..2c6c069c82eec30b113724e4dd6f9e15651694e8 100644 (file)
@@ -3,7 +3,7 @@
     Basic JavaLexer Test
     ~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ccaa35563688a8e0a271912a074ccf7512aab47d..6609c6da9a342ce462dc8c5584b2512ac3fed2cf 100644 (file)
@@ -3,7 +3,7 @@
     Pygments LaTeX formatter tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -65,7 +65,7 @@ def test_embedded_lexer():
     >>> y
     |$1 + z^2$|""")
 
-    assert list(lexer.get_tokens(src)) == [(Token.Name, ''),
+    assert list(lexer.get_tokens(src)) == [
         (Token.Generic.Prompt, '>>> '),
         (Token.Name, 'x'),
         (Token.Text, ' '),
@@ -74,7 +74,6 @@ def test_embedded_lexer():
         (Token.Literal.Number.Integer, '1'),
         (Token.Text, '\n'),
         (Token.Generic.Prompt, '>>> '),
-        (Token.Text, ''),
         (Token.Name, 'y'),
         (Token.Text, ' '),
         (Token.Operator, '='),
@@ -85,16 +84,13 @@ def test_embedded_lexer():
         (Token.Punctuation, ','),
         (Token.Text, ' '),
         (Token.Escape, '$z^2$'),
-        (Token.Text, ''),
         (Token.Punctuation, ')'),
         (Token.Text, '  '),
         (Token.Comment.Single, '# these |pipes| are untouched'),  # note: not Token.Escape
         (Token.Text, '\n'),
         (Token.Generic.Prompt, '>>> '),
-        (Token.Text, ''),
         (Token.Name, 'y'),
         (Token.Text, '\n'),
         (Token.Escape, '$1 + z^2$'),
-        (Token.Text, ''),
         (Token.Generic.Output, '\n'),
-    ]
\ No newline at end of file
+    ]
index 1afefc9857aae8c37d95d7987f9f6f222229a825..b9292e306d923014ad1fff89fac69ff9680d7c20 100644 (file)
@@ -3,7 +3,7 @@
     Tests for other lexers
     ~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b311850c1e2169c3c00b958a7504a93ad275931f..cab0b1d85193d693f34c57a880abbba00474db3d 100644 (file)
@@ -3,7 +3,7 @@
     CMake Tests
     ~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 362e6da48a622f82c9783eb839e04e0681eb6790..7bffa9ea759a11b619c1c4172d69713f3a47f5d8 100644 (file)
@@ -3,7 +3,7 @@
     Pygments Markdown lexer tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
@@ -246,6 +246,20 @@ def test_bulleted_list(lexer):
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
 
+    fragment = '```\ncode\n```\n* *foo*\n* bar'
+    tokens = [
+        (String.Backtick, '```\ncode\n```\n'),
+        (Keyword, '*'),
+        (Token.Text, ' '),
+        (Generic.Emph, '*foo*'),
+        (Token.Text, '\n'),
+        (Keyword, '*'),
+        (Token.Text, ' '),
+        (Token.Text, 'bar'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
 
 def test_numbered_list(lexer):
     fragment = '1. foo\n2. bar'
@@ -287,20 +301,19 @@ def test_invalid_code_block(lexer):
 
 def test_code_block_fenced_by_backticks(lexer):
     fragments = (
-        '```\ncode\n```',
-        '```\nmulti\n`line`\ncode\n```',
+        '```\ncode\n```\n',
+        '```\nmulti\n`line`\ncode\n```\n',
     )
     for fragment in fragments:
         tokens = [
             (String.Backtick, fragment),
-            (Token.Text, '\n'),
         ]
         assert list(lexer.get_tokens(fragment)) == tokens
 
 
 def test_code_block_with_language(lexer):
     fragments = (
-        '```python\nimport this\n```',
+        '```python\nimport this\n```\n',
     )
     for fragment in fragments:
         tokens = [
@@ -311,32 +324,7 @@ def test_code_block_with_language(lexer):
             (Token.Text, ' '),
             (Token.Name.Namespace, 'this'),
             (Token.Text, '\n'),
-            (String.Backtick, '```'),
-            (Token.Text, '\n'),
-        ]
-        assert list(lexer.get_tokens(fragment)) == tokens
-
-
-def test_code_indented_with_spaces(lexer):
-    fragments = (
-        'sample:\n\n    code\n',
-    )
-    for fragment in fragments:
-        tokens = [
-            (Token.Text, 'sample:'),
-            (Token.Text, '\n\n'),
-            (String.Backtick, '    code\n'),
-        ]
-        assert list(lexer.get_tokens(fragment)) == tokens
-
-    fragments = (
-        'sample:\n\n\tcode\n',
-    )
-    for fragment in fragments:
-        tokens = [
-            (Token.Text, 'sample:'),
-            (Token.Text, '\n\n'),
-            (String.Backtick, '\tcode\n'),
+            (String.Backtick, '```\n'),
         ]
         assert list(lexer.get_tokens(fragment)) == tokens
 
@@ -368,6 +356,58 @@ def test_inline_code(lexer):
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
 
+    fragment = '* `code`'
+    tokens = [
+        (Token.Keyword, '*'),
+        (Token.Text, ' '),
+        (String.Backtick, '`code`'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+    fragment = '```\ncode\n```\n* nocode\n* `code`'
+    tokens = [
+        (String.Backtick, '```\ncode\n```\n'),
+        (Token.Keyword, '*'),
+        (Token.Text, ' '),
+        (Token.Text, 'nocode'),
+        (Token.Text, '\n'),
+        (Token.Keyword, '*'),
+        (Token.Text, ' '),
+        (String.Backtick, '`code`'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+    fragment = '- `code`'
+    tokens = [
+        (Token.Keyword, '-'),
+        (Token.Text, ' '),
+        (String.Backtick, '`code`'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+    fragment = '1. `code`'
+    tokens = [
+        (Token.Keyword, '1.'),
+        (Token.Text, ' '),
+        (String.Backtick, '`code`'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
+    fragment = 'code (`in brackets`)'
+    tokens = [
+        (Token.Text, 'code'),
+        (Token.Text, ' '),
+        (Token.Text, '('),
+        (String.Backtick, '`in brackets`'),
+        (Token.Text, ')'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
 
 def test_invalid_bold(lexer):
     fragments = (
@@ -390,6 +430,15 @@ def test_bold_fenced_by_asterisk(lexer):
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
 
+    fragment = '(**bold**)'
+    tokens = [
+        (Token.Text, '('),
+        (Generic.Strong, '**bold**'),
+        (Token.Text, ')'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
 
 def test_bold_fenced_by_underscore(lexer):
     fragment = '__bold__'
@@ -399,6 +448,15 @@ def test_bold_fenced_by_underscore(lexer):
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
 
+    fragment = '(__bold__)'
+    tokens = [
+        (Token.Text, '('),
+        (Generic.Strong, '__bold__'),
+        (Token.Text, ')'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
 
 def test_invalid_italics(lexer):
     fragments = (
@@ -421,6 +479,15 @@ def test_italics_fenced_by_asterisk(lexer):
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
 
+    fragment = '(*italics*)'
+    tokens = [
+        (Token.Text, '('),
+        (Generic.Emph, '*italics*'),
+        (Token.Text, ')'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
 
 def test_italics_fenced_by_underscore(lexer):
     fragment = '_italics_'
@@ -430,6 +497,15 @@ def test_italics_fenced_by_underscore(lexer):
     ]
     assert list(lexer.get_tokens(fragment)) == tokens
 
+    fragment = '(_italics_)'
+    tokens = [
+        (Token.Text, '('),
+        (Generic.Emph, '_italics_'),
+        (Token.Text, ')'),
+        (Token.Text, '\n'),
+    ]
+    assert list(lexer.get_tokens(fragment)) == tokens
+
 
 def test_escape_italics(lexer):
     fragments = (
index 4a94f351b93814e10c788d7294a50b3a38e62a2c..8f73e71e83c43342b58a51b6c6a3586c9bfaa65a 100644 (file)
@@ -3,7 +3,7 @@
     MATLAB Tests
     ~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index f7dbe8c1e06dcd8c34e40aea3b56e6cd76311a9c..763a014ec1187a1235f6f841167a327c0ffe0967 100644 (file)
@@ -3,7 +3,7 @@
     Tests for the vim modeline feature
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 207ec822c42772b68964fdd220aeaeb600a01db5..195140a51892ea21cfb581db9ac188da9e514a7a 100644 (file)
@@ -3,7 +3,7 @@
     Pygments MySQL lexer tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 7264bad8adb243808e6601c65905ff2bf865678e..6940e4ca55009efc0ae6ccad5496c8555643c206 100644 (file)
@@ -3,7 +3,7 @@
     Basic CLexer Test
     ~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6ec2999379e0a299935f1fd0c1da50b21b21f1d2..dfab6dae8282021f6477252efbd43d439f892772 100644 (file)
@@ -3,7 +3,7 @@
     Pygments regex lexer tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 890f88c095f144b62f160221adb6af5634eb5230..6c2c9c90409ecd04bc93c8e6923e69bb98cd7aee 100644 (file)
@@ -3,7 +3,7 @@
     PHP Tests
     ~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index cced8983e3a7cb10539ec666286c35a1f5d92e56..3586236d0fb3f2f7ebdc75d2f8a4078b1fadd184 100644 (file)
@@ -3,7 +3,7 @@
     Praat lexer tests
     ~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 3b3dce91f07d7eab5d45ab338d20cc652fe52767..4bd3d59f78a60ed59313de44d87b8a67c3e3c009 100644 (file)
@@ -3,7 +3,7 @@
     Basic PromQLLexer Tests
     ~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 0cdd0e41d020326959ab616da7fdb6652261d42c..3d7cdac32fdd6d347f27016d0b03bae4a3236eee 100644 (file)
@@ -3,7 +3,7 @@
     Properties Tests
     ~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 73993936160f9c4f93d338ecb645190abe5e6122..188044fabce2372ce691b8d2affdd6aacb0579ad 100644 (file)
@@ -3,7 +3,7 @@
     Python Tests
     ~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 83077e7ef491eeb94b14654eff20f61a9fe9ea6f..c15fd93e008cdc3681b78de5f404d0628f6bf137 100644 (file)
@@ -3,7 +3,7 @@
     Tests for QBasic
     ~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index c243652bfc1ae852c821902f9b313a62a77c306a..663abbfa3e1aa03ffce57301837914f7a89fb5ed 100644 (file)
@@ -3,7 +3,7 @@
     R Tests
     ~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index ff8c9313c24eecb6eb260235d9c6a4cf1f5fb4df..fed18b30957494f6740f9f88b44617f7ef149dd0 100644 (file)
@@ -3,7 +3,7 @@
     Basic RubyLexer Test
     ~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 4029db1df3765fb061cec43960f71d72e9f60dd1..a535a38a8a6c8a8de556c832e5114028d6b59216 100644 (file)
@@ -3,7 +3,7 @@
     Pygments regex lexer tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 2d210c9b35513127eb9f2e3402553b1357682072..56fb7d54a9db805238aa2280cb68b9ff38379ebb 100644 (file)
@@ -3,7 +3,7 @@
     Tests for pygments.regexopt
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index dc4fffb4ef818a82051b3dfea6e4c8e5f9024d23..16d2c88b0c1e0f0e55de95327cc809e113670a28 100644 (file)
@@ -3,7 +3,7 @@
     Pygments RTF formatter tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 24e3bef1db0261480f587af3609dd6e06eabdd6f..b52ab2f5aa3d43a4c9a62f6ea190fbbd9a07f60e 100644 (file)
@@ -3,7 +3,7 @@
     Basic RubyLexer Test
     ~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b3600a4eaf3a2ee926e3c70e3beabd0afcd1b0a1..3445b6bbebbad7eb4489668d48a1efe9ea183d6b 100644 (file)
@@ -3,14 +3,15 @@
     Basic Shell Tests
     ~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
 import pytest
 
 from pygments.token import Token
-from pygments.lexers import BashLexer, BashSessionLexer, MSDOSSessionLexer, PowerShellSessionLexer
+from pygments.lexers import BashLexer, BashSessionLexer, MSDOSSessionLexer, \
+    PowerShellSessionLexer
 
 
 @pytest.fixture(scope='module')
@@ -142,9 +143,7 @@ def test_end_of_line_nums(lexer_bash):
 def test_newline_in_echo(lexer_session):
     fragment = '$ echo \\\nhi\nhi\n'
     tokens = [
-        (Token.Text, ''),
-        (Token.Generic.Prompt, '$'),
-        (Token.Text, ' '),
+        (Token.Generic.Prompt, '$ '),
         (Token.Name.Builtin, 'echo'),
         (Token.Text, ' '),
         (Token.Literal.String.Escape, '\\\n'),
@@ -155,14 +154,35 @@ def test_newline_in_echo(lexer_session):
     assert list(lexer_session.get_tokens(fragment)) == tokens
 
 
+def test_newline_in_ls(lexer_session):
+    fragment = '$ ls \\\nhi\nhi\n'
+    tokens = [
+        (Token.Generic.Prompt, '$ '),
+        (Token.Text, 'ls'),
+        (Token.Text, ' '),
+        (Token.Literal.String.Escape, '\\\n'),
+        (Token.Text, 'hi'),
+        (Token.Text, '\n'),
+        (Token.Generic.Output, 'hi\n'),
+    ]
+    assert list(lexer_session.get_tokens(fragment)) == tokens
+
+
+def test_comment_after_prompt(lexer_session):
+    fragment = '$# comment'
+    tokens = [
+        (Token.Generic.Prompt, '$'),
+        (Token.Comment.Single, '# comment\n'),
+    ]
+    assert list(lexer_session.get_tokens(fragment)) == tokens
+
+
 def test_msdos_gt_only(lexer_msdos):
     fragment = '> py\nhi\n'
     tokens = [
-        (Token.Text, ''),
         (Token.Generic.Prompt, '>'),
         (Token.Text, ' '),
         (Token.Text, 'py'),
-        (Token.Text, ''),
         (Token.Text, '\n'),
         (Token.Generic.Output, 'hi\n'),
     ]
@@ -172,7 +192,6 @@ def test_msdos_gt_only(lexer_msdos):
 def test_powershell_session(lexer_powershell_session):
     fragment = 'PS C:\\> Get-ChildItem\n'
     tokens = [
-        (Token.Name.Builtin, ''),
         (Token.Generic.Prompt, 'PS C:\\> '),
         (Token.Name.Builtin, 'Get-ChildItem'),
         (Token.Text, '\n')
@@ -181,7 +200,6 @@ def test_powershell_session(lexer_powershell_session):
 
     fragment = 'PS> Get-ChildItem\n'
     tokens = [
-        (Token.Name.Builtin, ''),
         (Token.Generic.Prompt, 'PS> '),
         (Token.Name.Builtin, 'Get-ChildItem'),
         (Token.Text, '\n')
@@ -190,7 +208,6 @@ def test_powershell_session(lexer_powershell_session):
 
     fragment = 'PS > Get-ChildItem\n'
     tokens = [
-        (Token.Name.Builtin, ''),
         (Token.Generic.Prompt, 'PS > '),
         (Token.Name.Builtin, 'Get-ChildItem'),
         (Token.Text, '\n')
@@ -201,7 +218,6 @@ def test_powershell_session(lexer_powershell_session):
 def test_powershell_remoting_session(lexer_powershell_session):
     fragment = '[Long-NetBIOS-Hostname]: PS C:\\> Get-ChildItem\n'
     tokens = [
-        (Token.Name.Builtin, ''),
         (Token.Generic.Prompt, '[Long-NetBIOS-Hostname]: PS C:\\> '),
         (Token.Name.Builtin, 'Get-ChildItem'),
         (Token.Text, '\n')
@@ -212,13 +228,9 @@ def test_powershell_remoting_session(lexer_powershell_session):
 def test_virtualenv(lexer_session):
     fragment = '(env) [~/project]$ foo -h\n'
     tokens = [
-        (Token.Text, ''),
         (Token.Generic.Prompt.VirtualEnv, '(env)'),
-        (Token.Text, ''),
-        (Token.Text, ' '),
-        (Token.Text, ''),
-        (Token.Generic.Prompt, '[~/project]$'),
         (Token.Text, ' '),
+        (Token.Generic.Prompt, '[~/project]$ '),
         (Token.Text, 'foo'),
         (Token.Text, ' '),
         (Token.Text, '-h'),
index caf23622260056fb5bc71867397cbda47f5e3f28..fde9d69df4c83152517a84f0b7fc6c9444d640c0 100644 (file)
@@ -3,7 +3,7 @@
     Basic SmartyLexer Test
     ~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index bd71d1d0a95527aba33205db15c0de986a29429e..b76246e2a054fa6f62d48ac0ac4ae01de83dd881 100644 (file)
@@ -3,7 +3,7 @@
     Pygments SQL lexers tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e08a3b2112965120b206f400d68a81eb862bbad6..9291ecbc10abd9825884a51e9f1452237e990134 100644 (file)
@@ -3,7 +3,7 @@
     Pygments terminal formatter tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b8e25b517f2b5b18eadb9e073fbcce67b895a77f..f47f4e3c097dec0299a78bc57222c7fbed1db9d4 100644 (file)
@@ -3,7 +3,7 @@
     Basic Tests for textfmts
     ~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e14834acb14851f64676e64fa7268e633ebd8b5c..3e217e3b9bca301cb1803b5408465faf209e155d 100644 (file)
@@ -3,7 +3,7 @@
     Typograhic Number Theory tests
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 6fe99014adc9332aa7a6424295c28735af6d44b8..14ab8af5bb542c0703fc49bbcdf3c198eb7da12d 100644 (file)
@@ -3,7 +3,7 @@
     Test suite for the token module
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index 5df61e695d195d564fbaad2b61d684090ff3aa35..f10a3f0e0d150864d081ff42d8bddcd3f0716291 100644 (file)
@@ -3,7 +3,7 @@
     Test suite for the unistring module
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e7932a7b817d4c63810dba0e93691689c1930efa..c87aa8bcaa24b64179696e4ba118876fddceeb9d 100644 (file)
@@ -3,7 +3,7 @@
     Pygments tests for using()
     ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index b90397ea2991e1242b5e849a3048693c3c0a1642..899fc6d67ca30fc9545adffa51c1f858bd11dd88 100644 (file)
@@ -3,7 +3,7 @@
     Test suite for the util module
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index c895e17fcafecb83573b8388fb38ddab0d9c848a..82abee389aecc1f0720b63c3cc37414621abbf4f 100644 (file)
@@ -3,7 +3,7 @@
     Whiley Test
     ~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
 
index e2449b59f7415f4722f72cff4c53fe8b4c6f1c92..6dfab59368f17306b7216f94a8de6a8a4b21484d 100644 (file)
@@ -3,7 +3,7 @@
     Basic Yang Test
     ~~~~~~~~~~~~~~~~~~~~
 
-    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
+    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """