texlive[57876] Master: asymptote 2.69 support files

commits+karl at tug.org commits+karl at tug.org
Wed Feb 24 19:33:44 CET 2021


Revision: 57876
          http://tug.org/svn/texlive?view=revision&revision=57876
Author:   karl
Date:     2021-02-24 19:33:44 +0100 (Wed, 24 Feb 2021)
Log Message:
-----------
asymptote 2.69 support files

Modified Paths:
--------------
    trunk/Master/texmf-dist/asymptote/GUI/Window1.py
    trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson
    trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py
    trunk/Master/texmf-dist/asymptote/GUI/setup.py
    trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py
    trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py
    trunk/Master/texmf-dist/asymptote/animation.asy
    trunk/Master/texmf-dist/asymptote/asy-keywords.el
    trunk/Master/texmf-dist/asymptote/asy-mode.el
    trunk/Master/texmf-dist/asymptote/babel.asy
    trunk/Master/texmf-dist/asymptote/bezulate.asy
    trunk/Master/texmf-dist/asymptote/binarytree.asy
    trunk/Master/texmf-dist/asymptote/bsp.asy
    trunk/Master/texmf-dist/asymptote/colormap.asy
    trunk/Master/texmf-dist/asymptote/contour.asy
    trunk/Master/texmf-dist/asymptote/contour3.asy
    trunk/Master/texmf-dist/asymptote/embed.asy
    trunk/Master/texmf-dist/asymptote/external.asy
    trunk/Master/texmf-dist/asymptote/feynman.asy
    trunk/Master/texmf-dist/asymptote/flowchart.asy
    trunk/Master/texmf-dist/asymptote/geometry.asy
    trunk/Master/texmf-dist/asymptote/graph.asy
    trunk/Master/texmf-dist/asymptote/graph3.asy
    trunk/Master/texmf-dist/asymptote/graph_splinetype.asy
    trunk/Master/texmf-dist/asymptote/grid3.asy
    trunk/Master/texmf-dist/asymptote/interpolate.asy
    trunk/Master/texmf-dist/asymptote/labelpath3.asy
    trunk/Master/texmf-dist/asymptote/lmfit.asy
    trunk/Master/texmf-dist/asymptote/math.asy
    trunk/Master/texmf-dist/asymptote/metapost.asy
    trunk/Master/texmf-dist/asymptote/obj.asy
    trunk/Master/texmf-dist/asymptote/ode.asy
    trunk/Master/texmf-dist/asymptote/palette.asy
    trunk/Master/texmf-dist/asymptote/patterns.asy
    trunk/Master/texmf-dist/asymptote/plain.asy
    trunk/Master/texmf-dist/asymptote/plain_Label.asy
    trunk/Master/texmf-dist/asymptote/plain_arcs.asy
    trunk/Master/texmf-dist/asymptote/plain_arrows.asy
    trunk/Master/texmf-dist/asymptote/plain_bounds.asy
    trunk/Master/texmf-dist/asymptote/plain_boxes.asy
    trunk/Master/texmf-dist/asymptote/plain_margins.asy
    trunk/Master/texmf-dist/asymptote/plain_picture.asy
    trunk/Master/texmf-dist/asymptote/plain_shipout.asy
    trunk/Master/texmf-dist/asymptote/rationalSimplex.asy
    trunk/Master/texmf-dist/asymptote/simplex.asy
    trunk/Master/texmf-dist/asymptote/slide.asy
    trunk/Master/texmf-dist/asymptote/slopefield.asy
    trunk/Master/texmf-dist/asymptote/three.asy
    trunk/Master/texmf-dist/asymptote/three_light.asy
    trunk/Master/texmf-dist/asymptote/three_surface.asy
    trunk/Master/texmf-dist/asymptote/three_tube.asy
    trunk/Master/texmf-dist/asymptote/tube.asy
    trunk/Master/texmf-dist/asymptote/version.asy
    trunk/Master/texmf-dist/asymptote/webgl/asygl.js
    trunk/Master/texmf-dist/doc/asymptote/CAD.pdf
    trunk/Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdf
    trunk/Master/texmf-dist/doc/asymptote/asy-latex.pdf
    trunk/Master/texmf-dist/doc/asymptote/asyRefCard.pdf
    trunk/Master/texmf-dist/doc/asymptote/asymptote.pdf
    trunk/Master/texmf-dist/doc/asymptote/examples/1overx.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/Klein.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSphere.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/bars3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/colorpatch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/conicurv.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/diatom.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/dimension.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/elliptic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/equilchord.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/exp.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/filesurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/fin.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/floor.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/gamma.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/gamma3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/genustwo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/icon.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/integraltest.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/intro.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/jump.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/legend.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/linearregression.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/linetype.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/logo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/logo3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/lowupint.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/markers1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/markregular.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/mosaic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/mosquito.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/near_earth.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pdb.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pipes.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/poster.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/rainbow.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/roll.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/roundpath.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/slope.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/soccerball.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spectrum.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spiral3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spline.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spring.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/teapot.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/torus.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/triads.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/triangle.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/tvgen.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/worldmap.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/xstitch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/yingyang.asy
    trunk/Master/texmf-dist/doc/info/asy-faq.info
    trunk/Master/texmf-dist/doc/info/asymptote.info
    trunk/Master/texmf-dist/doc/man/man1/asy.1
    trunk/Master/texmf-dist/doc/man/man1/asy.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/xasy.man1.pdf
    trunk/Master/texmf-dist/tex/latex/asymptote/asymptote.sty
    trunk/Master/tlpkg/asymptote/asy.exe
    trunk/Master/tlpkg/asymptote64/asy.exe

Added Paths:
-----------
    trunk/Master/texmf-dist/asymptote/map.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1
    trunk/Master/texmf-dist/doc/asymptote/examples/axialshade.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pOrbital.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/unitoctantx.asy

Removed Paths:
-------------
    trunk/Master/texmf-dist/asymptote/latin1.asy
    trunk/Master/texmf-dist/asymptote/unicode.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy

Modified: trunk/Master/texmf-dist/asymptote/GUI/Window1.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/Window1.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/Window1.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -772,11 +772,11 @@
         self.asyfyCanvas()
 
     def actionManual(self):
-        asyManualURL = 'http://asymptote.sourceforge.net/asymptote.pdf'
+        asyManualURL = 'https://asymptote.sourceforge.io/asymptote.pdf'
         webbrowser.open_new(asyManualURL)
 
     def actionAbout(self):
-        Qw.QMessageBox.about(self,"xasy","This is xasy "+xasyVersion.xasyVersion+"; a graphical front end to the Asymptote vector graphics language: http://asymptote.sourceforge.net/")
+        Qw.QMessageBox.about(self,"xasy","This is xasy "+xasyVersion.xasyVersion+"; a graphical front end to the Asymptote vector graphics language: https://asymptote.sourceforge.io/")
 
     def btnExportAsyOnClick(self):
         diag = Qw.QFileDialog(self)

Modified: trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson	2021-02-24 18:33:44 UTC (rev 57876)
@@ -54,7 +54,7 @@
 
 # Overrides
 
-windows:
+Windows:
     externalEditor: "notepad.exe"
 
 Darwin:

Modified: trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -9,13 +9,13 @@
 from PyQt5 import QtCore
 
 qt_resource_data = b"\
-\x00\x00\x03\xe6\
+\x00\x00\x03\x4c\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -27,53 +27,362 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
-\x64\x5f\x72\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x32\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
+\x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
+\x35\x36\x2c\x31\x35\x32\x63\x2d\x35\x37\x2e\x32\x2c\x30\x2d\x31\
+\x30\x34\x2c\x34\x36\x2e\x38\x2d\x31\x30\x34\x2c\x31\x30\x34\x73\
+\x34\x36\x2e\x38\x2c\x31\x30\x34\x2c\x31\x30\x34\x2c\x31\x30\x34\
+\x73\x31\x30\x34\x2d\x34\x36\x2e\x38\x2c\x31\x30\x34\x2d\x31\x30\
+\x34\x53\x33\x31\x33\x2e\x32\x2c\x31\x35\x32\x2c\x32\x35\x36\x2c\
+\x31\x35\x32\x7a\x20\x4d\x32\x35\x36\x2c\x34\x38\x0d\x0a\x09\x09\
+\x09\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x34\x38\x2c\
+\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\x35\x36\x73\x39\
+\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\x38\x2c\x32\x30\
+\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\
+\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\x2c\x34\x38\x2c\
+\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x32\x32\
+\x2e\x34\x0d\x0a\x09\x09\x09\x63\x2d\x39\x31\x2e\x35\x31\x38\x2c\
+\x30\x2d\x31\x36\x36\x2e\x34\x2d\x37\x34\x2e\x38\x38\x33\x2d\x31\
+\x36\x36\x2e\x34\x2d\x31\x36\x36\x2e\x34\x53\x31\x36\x34\x2e\x34\
+\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\
+\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\
+\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\
+\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x34\
+\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\x1c\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
 \x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
+\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
+\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
+\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
+\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
+\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
+\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
+\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
+\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
+\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
+\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
+\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
+\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
+\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
+\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\
+\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x33\x32\x2e\x31\x32\x27\x20\
+\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\
+\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\
+\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\
+\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\
+\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\
+\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
+\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
+\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
+\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\x32\x2e\
+\x31\x32\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x33\x32\x2e\x31\
+\x32\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\x27\x20\x66\x69\x6c\x6c\
+\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\
+\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\
+\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\
+\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\
+\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\
+\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
+\x00\x00\x03\x0c\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x43\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
 \x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
 \x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
 \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\
-\x22\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\
-\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\
-\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\
-\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\
-\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\
-\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\
+\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\
+\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\
+\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\
+\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\
+\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\
+\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\
+\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
+\x4d\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\
+\x2e\x34\x33\x35\x2c\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\
+\x30\x33\x2d\x31\x2e\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\
+\x2e\x36\x31\x2c\x31\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\
+\x35\x2d\x30\x2e\x36\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\
+\x34\x38\x36\x2c\x30\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0d\x0a\
+\x09\x63\x30\x2e\x36\x31\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\
+\x34\x38\x38\x2d\x30\x2e\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\
+\x30\x2e\x32\x37\x6c\x32\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\
+\x6c\x35\x2e\x39\x31\x31\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\
+\x30\x37\x2d\x30\x2e\x36\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\
+\x2e\x38\x35\x32\x2c\x31\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\
+\x0d\x0a\x09\x63\x30\x2e\x36\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\
+\x30\x2e\x38\x35\x34\x2c\x31\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\
+\x36\x2c\x31\x2e\x39\x32\x4c\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\
+\x33\x34\x63\x2d\x30\x2e\x32\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\
+\x30\x2e\x36\x36\x31\x2c\x30\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\
+\x2c\x30\x2e\x36\x35\x36\x43\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\
+\x39\x39\x38\x2c\x38\x2e\x33\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\
+\x2c\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x03\x22\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x22\x32\x35\x36\x22\
+\x20\x63\x79\x3d\x22\x32\x38\x30\x22\x20\x72\x3d\x22\x36\x33\x22\
+\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\
+\x34\x30\x2c\x39\x36\x68\x2d\x38\x38\x6c\x2d\x33\x32\x2d\x33\x32\
+\x48\x31\x39\x32\x6c\x2d\x33\x32\x2c\x33\x32\x48\x37\x32\x63\x2d\
+\x32\x32\x2e\x30\x39\x32\x2c\x30\x2d\x34\x30\x2c\x31\x37\x2e\x39\
+\x30\x38\x2d\x34\x30\x2c\x34\x30\x76\x32\x37\x32\x63\x30\x2c\x32\
+\x32\x2e\x30\x39\x32\x2c\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2c\
+\x34\x30\x2c\x34\x30\x68\x33\x36\x38\x63\x32\x32\x2e\x30\x39\x32\
+\x2c\x30\x2c\x34\x30\x2d\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2d\
+\x34\x30\x0d\x0a\x09\x09\x56\x31\x33\x36\x43\x34\x38\x30\x2c\x31\
+\x31\x33\x2e\x39\x30\x38\x2c\x34\x36\x32\x2e\x30\x39\x32\x2c\x39\
+\x36\x2c\x34\x34\x30\x2c\x39\x36\x7a\x20\x4d\x32\x35\x36\x2c\x33\
+\x39\x32\x63\x2d\x36\x31\x2e\x38\x35\x35\x2c\x30\x2d\x31\x31\x32\
+\x2d\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2d\x31\x31\x32\x73\
+\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2c\x31\x31\x32\x2d\x31\
+\x31\x32\x73\x31\x31\x32\x2c\x35\x30\x2e\x31\x34\x35\x2c\x31\x31\
+\x32\x2c\x31\x31\x32\x0d\x0a\x09\x09\x53\x33\x31\x37\x2e\x38\x35\
+\x35\x2c\x33\x39\x32\x2c\x32\x35\x36\x2c\x33\x39\x32\x7a\x22\x2f\
+\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
+\x0a\
+\x00\x00\x04\xa2\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x34\
+\x2e\x31\x35\x35\x35\x36\x20\x2d\x33\x39\x2e\x32\x37\x34\x35\x20\
+\x36\x2e\x39\x38\x34\x37\x33\x20\x2d\x34\x36\x2e\x31\x30\x34\x37\
+\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
+\x39\x43\x20\x32\x37\x2e\x34\x34\x31\x31\x20\x2d\x36\x37\x2e\x37\
+\x32\x36\x39\x20\x35\x33\x2e\x33\x30\x32\x31\x20\x2d\x36\x31\x2e\
+\x35\x34\x30\x35\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\
+\x2e\x35\x30\x32\x32\x43\x20\x35\x37\x2e\x36\x32\x37\x20\x2d\x33\
+\x32\x2e\x36\x35\x31\x39\x20\x35\x30\x2e\x35\x38\x35\x36\x20\x2d\
+\x32\x33\x2e\x35\x36\x32\x31\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
+\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\
+\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\
+\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\
+\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\
+\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\
+\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\
+\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\
+\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\
+\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
+\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\
+\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\
+\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
+\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
+\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\
+\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
+\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\
+\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\
+\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\
+\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\
+\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
+\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
+\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
+\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
+\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\
+\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\
+\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\
+\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\
+\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\
+\x3e\
+\x00\x00\x04\x3d\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
+\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
+\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
+\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
+\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\
+\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\
+\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\
+\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\
+\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
 \x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
-\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\
-\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\
-\x30\x4c\x38\x2e\x36\x39\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\
-\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\
-\x2d\x30\x2e\x35\x31\x39\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\
-\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\
-\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\
-\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\x0a\x09\x63\x30\x2e\x31\
-\x39\x36\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\
-\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\
-\x30\x37\x2c\x32\x2e\x38\x36\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\
-\x30\x2e\x31\x39\x39\x2d\x30\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\
-\x38\x2d\x30\x2e\x37\x31\x2c\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\
-\x30\x2e\x31\x39\x37\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\
-\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\
-\x20\x4d\x31\x30\x2c\x30\x2e\x34\x0d\x0a\x09\x63\x35\x2e\x33\x30\
-\x32\x2c\x30\x2c\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\
-\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\x2d\x34\x2e\
-\x32\x39\x38\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x53\
-\x30\x2e\x34\x2c\x31\x35\x2e\x33\x30\x33\x2c\x30\x2e\x34\x2c\x31\
-\x30\x43\x30\x2e\x34\x2c\x34\x2e\x36\x39\x38\x2c\x34\x2e\x36\x39\
-\x38\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\
-\x30\x2c\x31\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x34\x2e\x36\x31\
-\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2c\x38\
-\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\
-\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\x38\x2e\x33\x35\x34\x2d\x38\
-\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x2d\x34\x2e\x36\x31\
-\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2d\x38\
-\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x2e\
-\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\x2c\x35\x2e\x33\x38\x35\
-\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\
-\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
+\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
+\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\x79\
+\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\
+\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\
+\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
+\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
+\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
+\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\x79\
+\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\x6c\
+\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\
+\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\
+\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\
+\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\
+\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\
+\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\
+\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\x20\
+\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\x69\
+\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\
+\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\
+\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\
+\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\
+\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\
+\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\
+\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\x34\
+\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\
+\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\
+\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
+\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x02\xf2\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -124,6 +433,166 @@
 \x35\x39\x39\x2c\x31\x30\x2c\x31\x37\x2e\x35\x39\x39\x7a\x22\x2f\
 \x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
 \x0a\
+\x00\x00\x02\x7d\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\
+\x37\x2c\x32\x33\x34\x2e\x36\x32\x35\x48\x31\x36\x37\x2e\x32\x39\
+\x36\x6c\x31\x31\x39\x2e\x37\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\
+\x32\x4c\x32\x35\x36\x2c\x38\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\
+\x31\x37\x31\x2c\x31\x37\x31\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\
+\x39\x2e\x39\x32\x34\x4c\x31\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\
+\x37\x2e\x33\x37\x35\x48\x34\x32\x37\x56\x32\x33\x34\x2e\x36\x32\
+\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\xc9\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
+\x3d\x22\x34\x38\x30\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\
+\x30\x20\x33\x38\x34\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\
+\x36\x20\x32\x37\x36\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\
+\x38\x20\x32\x35\x36\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\
+\x20\x32\x33\x36\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\
+\x20\x31\x32\x38\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\
+\x20\x33\x32\x2c\x32\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\
+\x0d\x0a\x09\x31\x32\x38\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\
+\x37\x36\x20\x32\x33\x36\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\
+\x38\x34\x20\x32\x35\x36\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\
+\x38\x34\x20\x32\x37\x35\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\
+\x2e\x34\x2c\x32\x37\x35\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\
+\x2e\x38\x20\x33\x38\x34\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0d\x0a\
+\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\x4e\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
+\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
+\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
+\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
+\x32\x38\x31\x4c\x20\x33\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\
+\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\
+\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\
+\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\
+\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\
+\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\
+\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
+\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
+\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
+\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
+\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\
+\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\
+\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\
+\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
+\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
+\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
+\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
+\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\
+\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\
+\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\
+\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
+\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\
+\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\
+\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\
+\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\
+\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
+\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\
+\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\
+\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
+\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
+\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x01\x69\
 \x3c\
 \x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
@@ -149,7 +618,7 @@
 \x31\x20\x30\x20\x31\x20\x30\x20\x30\x2d\x32\x20\x31\x20\x31\x20\
 \x30\x20\x30\x20\x30\x20\x30\x20\x32\x7a\x22\x2f\x3e\x3c\x2f\x67\
 \x3e\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x03\x46\
+\x00\x00\x05\xca\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -176,34 +645,211 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x34\x35\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\
+\x35\x63\x2d\x31\x34\x2e\x35\x38\x35\x2d\x31\x34\x2e\x35\x37\x37\
+\x2d\x33\x36\x2e\x30\x35\x34\x2d\x31\x35\x2e\x38\x39\x2d\x35\x30\
+\x2e\x36\x33\x39\x2d\x31\x2e\x33\x31\x32\x6c\x2d\x34\x31\x2e\x36\
+\x38\x37\x2c\x34\x31\x2e\x36\x36\x34\x63\x2d\x31\x30\x2e\x38\x35\
+\x32\x2c\x31\x30\x2e\x38\x33\x36\x2d\x32\x33\x2e\x39\x33\x2c\x31\
+\x30\x2e\x38\x35\x39\x2d\x33\x31\x2e\x35\x36\x34\x2c\x31\x2e\x38\
+\x35\x32\x0d\x0a\x09\x63\x2d\x35\x2e\x30\x35\x37\x2d\x35\x2e\x39\
+\x36\x38\x2d\x33\x2e\x30\x36\x31\x2d\x32\x34\x2e\x33\x37\x34\x2d\
+\x31\x2e\x36\x34\x34\x2d\x33\x36\x2e\x30\x34\x39\x6c\x32\x30\x2e\
+\x39\x30\x37\x2d\x31\x37\x31\x2e\x38\x34\x39\x63\x31\x2e\x38\x36\
+\x37\x2d\x31\x35\x2e\x33\x35\x33\x2d\x39\x2e\x30\x37\x2d\x33\x30\
+\x2e\x31\x38\x35\x2d\x32\x34\x2e\x34\x33\x2d\x33\x32\x2e\x30\x35\
+\x31\x0d\x0a\x09\x63\x2d\x31\x35\x2e\x33\x35\x38\x2d\x31\x2e\x38\
+\x36\x37\x2d\x32\x39\x2e\x33\x32\x32\x2c\x39\x2e\x39\x33\x39\x2d\
+\x33\x31\x2e\x31\x39\x31\x2c\x32\x35\x2e\x32\x38\x39\x4c\x32\x36\
+\x37\x2e\x33\x37\x2c\x32\x33\x36\x2e\x30\x32\x31\x63\x2d\x31\x2e\
+\x32\x30\x35\x2c\x33\x2e\x33\x35\x38\x2d\x33\x2e\x37\x39\x2c\x33\
+\x2e\x39\x33\x38\x2d\x34\x2e\x30\x38\x31\x2d\x30\x2e\x35\x38\x32\
+\x4c\x32\x35\x35\x2e\x34\x34\x2c\x36\x30\x0d\x0a\x09\x63\x30\x2d\
+\x31\x35\x2e\x34\x36\x35\x2d\x31\x32\x2e\x35\x34\x32\x2d\x32\x38\
+\x2d\x32\x38\x2e\x30\x31\x34\x2d\x32\x38\x63\x2d\x31\x35\x2e\x34\
+\x37\x33\x2c\x30\x2d\x32\x38\x2e\x30\x31\x35\x2c\x31\x32\x2e\x35\
+\x33\x35\x2d\x32\x38\x2e\x30\x31\x35\x2c\x32\x38\x6c\x2d\x30\x2e\
+\x35\x35\x32\x2c\x31\x37\x36\x2e\x37\x35\x32\x63\x30\x2e\x31\x34\
+\x36\x2c\x32\x2e\x30\x34\x2d\x31\x2e\x36\x30\x34\x2c\x32\x2e\x36\
+\x32\x34\x2d\x31\x2e\x39\x32\x2c\x30\x2e\x32\x39\x34\x4c\x31\x37\
+\x32\x2e\x30\x31\x36\x2c\x39\x39\x2e\x30\x37\x37\x0d\x0a\x09\x63\
+\x2d\x32\x2e\x37\x35\x2d\x31\x35\x2e\x32\x31\x39\x2d\x31\x37\x2e\
+\x33\x32\x33\x2d\x32\x36\x2e\x32\x30\x33\x2d\x33\x32\x2e\x35\x34\
+\x38\x2d\x32\x33\x2e\x34\x35\x33\x63\x2d\x31\x35\x2e\x32\x32\x37\
+\x2c\x32\x2e\x37\x34\x38\x2d\x32\x35\x2e\x33\x33\x39\x2c\x31\x38\
+\x2e\x31\x38\x37\x2d\x32\x32\x2e\x35\x39\x31\x2c\x33\x33\x2e\x34\
+\x30\x33\x6c\x32\x32\x2e\x31\x39\x33\x2c\x31\x36\x31\x2e\x34\x35\
+\x35\x0d\x0a\x09\x63\x30\x2e\x30\x32\x33\x2c\x32\x2e\x38\x37\x32\
+\x2d\x30\x2e\x39\x34\x31\x2c\x34\x2e\x35\x31\x33\x2d\x32\x2e\x33\
+\x30\x38\x2c\x30\x2e\x38\x33\x31\x6c\x2d\x33\x33\x2e\x31\x30\x39\
+\x2d\x38\x38\x2e\x35\x31\x37\x63\x2d\x35\x2e\x31\x38\x2d\x31\x34\
+\x2e\x35\x37\x32\x2d\x32\x31\x2e\x31\x39\x36\x2d\x32\x33\x2e\x30\
+\x36\x35\x2d\x33\x35\x2e\x37\x37\x36\x2d\x31\x37\x2e\x38\x38\x39\
+\x0d\x0a\x09\x63\x2d\x31\x34\x2e\x35\x37\x39\x2c\x35\x2e\x31\x37\
+\x37\x2d\x32\x32\x2e\x32\x30\x31\x2c\x32\x32\x2e\x30\x36\x31\x2d\
+\x31\x37\x2e\x30\x32\x33\x2c\x33\x36\x2e\x36\x33\x31\x6c\x35\x38\
+\x2e\x30\x34\x32\x2c\x31\x38\x39\x2e\x36\x32\x35\x63\x30\x2e\x33\
+\x30\x33\x2c\x31\x2e\x30\x34\x36\x2c\x30\x2e\x36\x32\x34\x2c\x32\
+\x2e\x30\x38\x35\x2c\x30\x2e\x39\x35\x33\x2c\x33\x2e\x31\x31\x38\
+\x6c\x30\x2e\x31\x32\x31\x2c\x30\x2e\x33\x39\x0d\x0a\x09\x63\x30\
+\x2e\x30\x31\x31\x2c\x30\x2e\x30\x33\x31\x2c\x30\x2e\x30\x32\x35\
+\x2c\x30\x2e\x30\x35\x38\x2c\x30\x2e\x30\x33\x35\x2c\x30\x2e\x30\
+\x38\x38\x43\x31\x32\x36\x2e\x30\x37\x39\x2c\x34\x34\x34\x2e\x32\
+\x33\x33\x2c\x31\x37\x32\x2e\x35\x37\x2c\x34\x38\x30\x2c\x32\x32\
+\x37\x2e\x34\x32\x37\x2c\x34\x38\x30\x63\x33\x35\x2e\x31\x31\x36\
+\x2c\x30\x2c\x37\x31\x2e\x35\x39\x31\x2d\x31\x32\x2e\x33\x37\x38\
+\x2c\x39\x39\x2e\x33\x35\x37\x2d\x33\x33\x2e\x36\x37\x32\x0d\x0a\
+\x09\x63\x30\x2e\x30\x30\x31\x2c\x30\x2c\x30\x2e\x30\x30\x33\x2d\
+\x30\x2e\x30\x30\x32\x2c\x30\x2e\x30\x30\x33\x2d\x30\x2e\x30\x30\
+\x32\x63\x32\x39\x2e\x39\x39\x2d\x31\x38\x2e\x30\x35\x31\x2c\x31\
+\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x2c\x31\
+\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x43\x34\
+\x36\x37\x2e\x34\x34\x35\x2c\x33\x31\x30\x2e\x34\x30\x32\x2c\x34\
+\x36\x35\x2e\x32\x36\x36\x2c\x32\x38\x38\x2e\x30\x38\x2c\x34\x35\
+\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\x35\x7a\x22\x2f\x3e\x0d\
+\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x03\x26\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x33\x38\
+\x38\x63\x2d\x37\x32\x2e\x35\x39\x37\x2c\x30\x2d\x31\x33\x32\x2d\
+\x35\x39\x2e\x34\x30\x35\x2d\x31\x33\x32\x2d\x31\x33\x32\x63\x30\
+\x2d\x37\x32\x2e\x36\x30\x31\x2c\x35\x39\x2e\x34\x30\x33\x2d\x31\
+\x33\x32\x2c\x31\x33\x32\x2d\x31\x33\x32\x63\x33\x36\x2e\x33\x2c\
+\x30\x2c\x36\x39\x2e\x32\x39\x39\x2c\x31\x35\x2e\x34\x2c\x39\x32\
+\x2e\x34\x30\x36\x2c\x33\x39\x2e\x36\x30\x31\x4c\x32\x37\x38\x2c\
+\x32\x33\x34\x68\x31\x35\x34\x56\x38\x30\x0d\x0a\x09\x09\x6c\x2d\
+\x35\x31\x2e\x36\x39\x38\x2c\x35\x31\x2e\x37\x30\x32\x43\x33\x34\
+\x38\x2e\x34\x30\x36\x2c\x39\x39\x2e\x37\x39\x38\x2c\x33\x30\x34\
+\x2e\x34\x30\x36\x2c\x38\x30\x2c\x32\x35\x36\x2c\x38\x30\x63\x2d\
+\x39\x36\x2e\x37\x39\x37\x2c\x30\x2d\x31\x37\x36\x2c\x37\x39\x2e\
+\x32\x30\x33\x2d\x31\x37\x36\x2c\x31\x37\x36\x73\x37\x38\x2e\x30\
+\x39\x34\x2c\x31\x37\x36\x2c\x31\x37\x36\x2c\x31\x37\x36\x0d\x0a\
+\x09\x09\x63\x38\x31\x2e\x30\x34\x35\x2c\x30\x2c\x31\x34\x38\x2e\
+\x32\x38\x37\x2d\x35\x34\x2e\x31\x33\x34\x2c\x31\x36\x39\x2e\x34\
+\x30\x31\x2d\x31\x32\x38\x48\x33\x37\x38\x2e\x38\x35\x43\x33\x36\
+\x30\x2e\x31\x30\x35\x2c\x33\x35\x33\x2e\x35\x36\x31\x2c\x33\x31\
+\x31\x2e\x37\x31\x32\x2c\x33\x38\x38\x2c\x32\x35\x36\x2c\x33\x38\
+\x38\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x79\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x67\x3e\x0d\x0a\x09\x09\x09\x3c\x70\x6f\x6c\
+\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x38\x36\
+\x2e\x33\x30\x31\x2c\x33\x33\x39\x2e\x38\x39\x33\x20\x39\x36\x2c\
+\x32\x34\x39\x2e\x34\x36\x31\x20\x36\x34\x2c\x32\x37\x39\x2e\x39\
+\x36\x38\x20\x31\x38\x36\x2e\x33\x30\x31\x2c\x34\x30\x32\x20\x34\
+\x34\x38\x2c\x31\x34\x30\x2e\x35\x30\x36\x20\x34\x31\x36\x2c\x31\
+\x31\x30\x20\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x09\x3c\x2f\x67\
+\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\
+\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x7f\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
 \x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
 \x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
 \x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
 \x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
 \x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\
-\x2c\x33\x38\x36\x2e\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\
-\x6c\x31\x33\x30\x2e\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\
-\x31\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\
-\x2c\x30\x2d\x35\x30\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\
-\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\
-\x39\x2c\x30\x4c\x32\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\
-\x35\x2e\x34\x2c\x37\x34\x2e\x35\x0d\x0a\x09\x63\x2d\x31\x34\x2e\
-\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\
-\x2d\x35\x30\x2e\x39\x2c\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\
-\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\
-\x30\x2e\x39\x4c\x32\x30\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\
-\x2e\x35\x2c\x33\x38\x36\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\
-\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\
-\x35\x30\x2e\x39\x0d\x0a\x09\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\
-\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\
-\x2c\x30\x4c\x32\x35\x36\x2c\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\
-\x2e\x36\x2c\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\
-\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\
-\x39\x2c\x30\x43\x34\x35\x31\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\
-\x34\x35\x31\x2e\x35\x2c\x34\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\
-\x35\x2c\x33\x38\x36\x2e\x36\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
+\x3d\x22\x32\x38\x38\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\
+\x34\x35\x2e\x39\x20\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\
+\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\
+\x33\x37\x2e\x39\x20\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\
+\x31\x36\x20\x32\x32\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\
+\x2c\x33\x36\x36\x2e\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\
+\x2e\x39\x20\x33\x36\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0d\
+\x0a\x09\x34\x31\x36\x2c\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\
+\x20\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x04\xca\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -283,104 +929,8 @@
 \x36\x37\x2c\x37\x2e\x34\x37\x30\x34\x0a\x09\x48\x33\x2e\x33\x37\
 \x33\x33\x4c\x37\x2e\x35\x2c\x33\x2e\x38\x39\x39\x33\x7a\x22\x2f\
 \x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x05\xd4\
+\x00\x00\x02\xfc\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\
-\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\
-\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x34\x33\x2e\x39\x30\x33\
-\x32\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x34\x37\x2e\x33\x30\
-\x31\x37\x20\x33\x32\x2e\x31\x32\x20\x2d\x34\x37\x2e\x33\x30\x31\
-\x37\x43\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x34\x37\x2e\x33\
-\x30\x31\x37\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x34\x33\x2e\
-\x39\x30\x33\x32\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\
-\x2e\x37\x31\x30\x39\x43\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
-\x33\x35\x2e\x35\x31\x38\x35\x20\x31\x39\x2e\x35\x34\x33\x31\x20\
-\x2d\x33\x32\x2e\x31\x32\x20\x33\x32\x2e\x31\x32\x20\x2d\x33\x32\
-\x2e\x31\x32\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x33\x32\
-\x2e\x31\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x35\x2e\
-\x35\x31\x38\x35\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\
-\x2e\x37\x31\x30\x39\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\
-\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\
-\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\
-\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\
-\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
-\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\
-\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
-\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\
-\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\
-\x68\x20\x64\x3d\x27\x4d\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
-\x33\x39\x2e\x37\x31\x30\x39\x4c\x20\x39\x2e\x33\x34\x37\x34\x32\
-\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x39\x2e\x33\x34\x37\
-\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\x20\x39\x2e\x33\
-\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\x2e\
-\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\
-\x2e\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\
-\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x2e\x31\x35\x35\x31\
-\x31\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x31\x2e\x37\x35\x36\
-\x35\x36\x20\x33\x32\x2e\x31\x32\x20\x2d\x31\x2e\x37\x35\x36\x35\
-\x36\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x31\x2e\x37\x35\
-\x36\x35\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x35\x2e\x31\
-\x35\x35\x31\x31\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x39\x2e\
-\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\
-\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\
-\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x27\x20\x66\x69\x6c\x6c\x3d\
-\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\
-\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
-\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\
-\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\
-\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\
-\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\
-\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\
-\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
-\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\
-\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\
-\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\
-\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\
-\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\
-\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\x20\x35\x34\x2e\x38\
-\x39\x32\x36\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\x34\x34\x2e\
-\x36\x39\x36\x39\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x33\x32\
-\x2e\x31\x32\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x43\x20\x31\x39\
-\x2e\x35\x34\x33\x31\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x39\
-\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\
-\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\
-\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\
-\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\
-\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\
-\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\
-\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\
-\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\
-\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\
-\x76\x67\x3e\
-\x00\x00\x03\x4c\
-\x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
@@ -411,29 +961,362 @@
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
 \x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x32\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
+\x22\x49\x63\x6f\x6e\x5f\x32\x30\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
 \x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
-\x35\x36\x2c\x31\x35\x32\x63\x2d\x35\x37\x2e\x32\x2c\x30\x2d\x31\
-\x30\x34\x2c\x34\x36\x2e\x38\x2d\x31\x30\x34\x2c\x31\x30\x34\x73\
-\x34\x36\x2e\x38\x2c\x31\x30\x34\x2c\x31\x30\x34\x2c\x31\x30\x34\
-\x73\x31\x30\x34\x2d\x34\x36\x2e\x38\x2c\x31\x30\x34\x2d\x31\x30\
-\x34\x53\x33\x31\x33\x2e\x32\x2c\x31\x35\x32\x2c\x32\x35\x36\x2c\
-\x31\x35\x32\x7a\x20\x4d\x32\x35\x36\x2c\x34\x38\x0d\x0a\x09\x09\
-\x09\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x34\x38\x2c\
-\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\x35\x36\x73\x39\
-\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\x38\x2c\x32\x30\
-\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\
-\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\x2c\x34\x38\x2c\
-\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x32\x32\
-\x2e\x34\x0d\x0a\x09\x09\x09\x63\x2d\x39\x31\x2e\x35\x31\x38\x2c\
-\x30\x2d\x31\x36\x36\x2e\x34\x2d\x37\x34\x2e\x38\x38\x33\x2d\x31\
-\x36\x36\x2e\x34\x2d\x31\x36\x36\x2e\x34\x53\x31\x36\x34\x2e\x34\
-\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\
-\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\
-\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\
-\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x34\
+\x35\x36\x2c\x34\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\
+\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\
+\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\
+\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\
+\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\
+\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\
+\x2c\x34\x32\x32\x2e\x33\x39\x39\x0d\x0a\x09\x09\x09\x63\x2d\x39\
+\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\
+\x37\x34\x2e\x38\x38\x32\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\x31\
+\x36\x36\x2e\x33\x39\x39\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\
+\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\
+\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\
+\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\
+\x2e\x33\x39\x39\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\x39\
 \x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
 \x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\xa1\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x53\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
+\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
+\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\
+\x79\x3d\x22\x35\x31\x32\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\
+\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\
+\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\
+\x32\x20\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\
+\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
+\x69\x78\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\
+\x29\x27\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\
+\x35\x2e\x31\x37\x33\x2c\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\
+\x32\x2c\x32\x2c\x32\x2e\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\
+\x2c\x31\x2e\x31\x2c\x30\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\
+\x68\x31\x32\x63\x31\x2e\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\
+\x39\x2c\x32\x2d\x32\x56\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\
+\x37\x33\x2c\x32\x7a\x20\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\
+\x35\x34\x39\x2d\x30\x2e\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\
+\x0d\x0a\x09\x43\x36\x2e\x34\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\
+\x34\x39\x2c\x36\x2c\x38\x56\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\
+\x33\x2c\x34\x68\x2d\x32\x76\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\
+\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\
+\x00\x00\x03\x6c\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x0d\x0a\x09\x09\x3c\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x37\x38\
+\x2e\x38\x34\x36\x22\x20\x79\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
+\x69\x78\x28\x2d\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\
+\x37\x31\x20\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\
+\x31\x20\x32\x32\x34\x2e\x33\x34\x37\x36\x20\x36\x33\x31\x2e\x31\
+\x34\x39\x38\x29\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\
+\x2e\x30\x38\x35\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x35\
+\x34\x2e\x30\x34\x39\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\
+\x20\x64\x3d\x22\x4d\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\
+\x33\x39\x33\x6c\x2d\x34\x38\x2e\x31\x31\x35\x2d\x34\x38\x2e\x31\
+\x31\x34\x63\x2d\x31\x31\x2e\x37\x32\x33\x2d\x31\x31\x2e\x37\x32\
+\x34\x2d\x33\x31\x2e\x35\x35\x38\x2d\x31\x30\x2e\x38\x39\x36\x2d\
+\x34\x34\x2e\x33\x30\x34\x2c\x31\x2e\x38\x35\x6c\x2d\x34\x35\x2e\
+\x32\x30\x32\x2c\x34\x35\x2e\x32\x30\x33\x6c\x39\x30\x2e\x35\x36\
+\x39\x2c\x39\x30\x2e\x35\x36\x38\x6c\x34\x35\x2e\x32\x30\x32\x2d\
+\x34\x35\x2e\x32\x30\x32\x0d\x0a\x09\x09\x43\x34\x38\x32\x2e\x36\
+\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\x32\x2c\x34\x38\x33\x2e\x34\
+\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\x36\x2c\x34\x37\x31\x2e\x37\
+\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\
+\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
+\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\x33\x2e\x32\x35\x32\x20\
+\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\x2e\x37\x33\x37\x2c\x34\
+\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x7d\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\
+\x2c\x32\x37\x37\x2e\x33\x37\x35\x68\x32\x35\x39\x2e\x37\x30\x34\
+\x4c\x32\x32\x35\x2e\x30\x30\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\
+\x4c\x32\x35\x36\x2c\x34\x32\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\
+\x4c\x32\x35\x36\x2c\x38\x35\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\
+\x32\x39\x2e\x39\x32\x34\x6c\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\
+\x31\x39\x2e\x37\x30\x31\x48\x38\x35\x56\x32\x37\x37\x2e\x33\x37\
+\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\x64\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\x09\
+\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\
+\x37\x36\x63\x2d\x34\x34\x2e\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\
+\x30\x30\x31\x2c\x33\x36\x2d\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\
+\x63\x30\x2c\x34\x34\x2e\x30\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\
+\x2c\x38\x30\x2c\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x34\x34\
+\x2e\x30\x30\x35\x2c\x30\x2c\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\
+\x2e\x39\x39\x36\x2c\x37\x39\x2e\x39\x39\x39\x2d\x38\x30\x0d\x0a\
+\x09\x09\x09\x43\x33\x33\x35\x2e\x39\x39\x39\x2c\x32\x31\x32\x2c\
+\x33\x30\x30\x2e\x30\x30\x35\x2c\x31\x37\x36\x2c\x32\x35\x36\x2c\
+\x31\x37\x36\x7a\x20\x4d\x34\x34\x36\x2e\x39\x33\x38\x2c\x32\x33\
+\x34\x2e\x36\x36\x37\x63\x2d\x39\x2e\x36\x30\x35\x2d\x38\x38\x2e\
+\x35\x33\x31\x2d\x38\x31\x2e\x30\x37\x34\x2d\x31\x36\x30\x2d\x31\
+\x36\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x35\x39\x39\x56\x33\
+\x32\x68\x2d\x34\x32\x2e\x36\x36\x36\x76\x33\x33\x2e\x30\x36\x37\
+\x0d\x0a\x09\x09\x09\x63\x2d\x38\x38\x2e\x35\x33\x31\x2c\x39\x2e\
+\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\x31\x2e\x30\x36\x38\x2d\x31\
+\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x35\x39\x39\x48\x33\
+\x32\x76\x34\x32\x2e\x36\x36\x37\x68\x33\x33\x2e\x30\x36\x32\x63\
+\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\x35\x33\x31\x2c\x38\x31\x2e\
+\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\x36\x39\x2e\x36\x30\x34\x2c\
+\x31\x36\x39\x2e\x36\x30\x34\x56\x34\x38\x30\x68\x34\x32\x2e\x36\
+\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\x32\x0d\x0a\x09\x09\x09\x63\
+\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\x30\x34\x2c\x31\x36\x30\
+\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\x39\x2e\x36\x30\x35\x2d\
+\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\x30\x76\x2d\x34\x32\x2e\
+\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\x38\x7a\x20\x4d\x32\x35\
+\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\x2d\x38\x32\x2e\x31\x33\
+\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x36\x37\x2e\x31\
+\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\
+\x33\x33\x0d\x0a\x09\x09\x09\x63\x30\x2d\x38\x32\x2e\x31\x33\x36\
+\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\x2e\x33\x33\x33\x2c\
+\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\x33\x33\x63\
+\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\x39\x2e\x33\x33\x32\
+\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\x2e\x33\x33\x32\x2c\
+\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\x2e\x33\x33\x32\x2c\
+\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\
+\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\x2c\x34\x30\x35\x2e\
+\x33\x33\x33\x7a\x0d\x0a\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x3c\
+\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
+\x3e\x0d\x0a\
+\x00\x00\x03\x52\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x48\
+\x32\x35\x36\x2e\x30\x30\x36\x6c\x2d\x34\x32\x2e\x36\x36\x38\x2d\
+\x34\x38\x48\x37\x34\x2e\x36\x36\x36\x43\x35\x31\x2e\x31\x39\x37\
+\x2c\x39\x36\x2c\x33\x32\x2c\x31\x31\x35\x2e\x31\x39\x38\x2c\x33\
+\x32\x2c\x31\x33\x38\x2e\x36\x36\x37\x76\x32\x33\x34\x2e\x36\x36\
+\x36\x43\x33\x32\x2c\x33\x39\x36\x2e\x38\x30\x32\x2c\x35\x31\x2e\
+\x31\x39\x37\x2c\x34\x31\x36\x2c\x37\x34\x2e\x36\x36\x36\x2c\x34\
+\x31\x36\x68\x33\x36\x32\x2e\x36\x36\x38\x0d\x0a\x09\x43\x34\x36\
+\x30\x2e\x38\x30\x33\x2c\x34\x31\x36\x2c\x34\x38\x30\x2c\x33\x39\
+\x36\x2e\x38\x30\x32\x2c\x34\x38\x30\x2c\x33\x37\x33\x2e\x33\x33\
+\x33\x56\x31\x38\x36\x2e\x36\x36\x37\x43\x34\x38\x30\x2c\x31\x36\
+\x33\x2e\x31\x39\x38\x2c\x34\x36\x30\x2e\x38\x30\x33\x2c\x31\x34\
+\x34\x2c\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x7a\x20\x4d\
+\x34\x34\x38\x2c\x33\x37\x33\x2e\x33\x33\x33\x0d\x0a\x09\x63\x30\
+\x2c\x35\x2e\x37\x38\x32\x2d\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\
+\x36\x36\x37\x2d\x31\x30\x2e\x36\x36\x36\x2c\x31\x30\x2e\x36\x36\
+\x37\x48\x37\x34\x2e\x36\x36\x36\x43\x36\x38\x2e\x38\x38\x34\x2c\
+\x33\x38\x34\x2c\x36\x34\x2c\x33\x37\x39\x2e\x31\x31\x35\x2c\x36\
+\x34\x2c\x33\x37\x33\x2e\x33\x33\x33\x56\x31\x37\x36\x68\x33\x37\
+\x33\x2e\x33\x33\x34\x63\x35\x2e\x37\x38\x31\x2c\x30\x2c\x31\x30\
+\x2e\x36\x36\x36\x2c\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\x36\x36\
+\x36\x2c\x31\x30\x2e\x36\x36\x37\x0d\x0a\x09\x56\x33\x37\x33\x2e\
+\x33\x33\x33\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
+\x0a\
+\x00\x00\x03\xe6\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
+\x64\x5f\x72\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\
+\x22\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\
+\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\
+\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\
+\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\
+\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\
+\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\
+\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
+\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\
+\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\
+\x30\x4c\x38\x2e\x36\x39\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\
+\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\
+\x2d\x30\x2e\x35\x31\x39\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\
+\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\
+\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\
+\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\x0a\x09\x63\x30\x2e\x31\
+\x39\x36\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\
+\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\
+\x30\x37\x2c\x32\x2e\x38\x36\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\
+\x30\x2e\x31\x39\x39\x2d\x30\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\
+\x38\x2d\x30\x2e\x37\x31\x2c\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\
+\x30\x2e\x31\x39\x37\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\
+\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\
+\x20\x4d\x31\x30\x2c\x30\x2e\x34\x0d\x0a\x09\x63\x35\x2e\x33\x30\
+\x32\x2c\x30\x2c\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\
+\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\x2d\x34\x2e\
+\x32\x39\x38\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x53\
+\x30\x2e\x34\x2c\x31\x35\x2e\x33\x30\x33\x2c\x30\x2e\x34\x2c\x31\
+\x30\x43\x30\x2e\x34\x2c\x34\x2e\x36\x39\x38\x2c\x34\x2e\x36\x39\
+\x38\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\
+\x30\x2c\x31\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x34\x2e\x36\x31\
+\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2c\x38\
+\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\
+\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\x38\x2e\x33\x35\x34\x2d\x38\
+\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x2d\x34\x2e\x36\x31\
+\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2d\x38\
+\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x2e\
+\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\x2c\x35\x2e\x33\x38\x35\
+\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\
+\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
 \x00\x00\x07\x80\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -556,152 +1439,12 @@
 \x38\x2e\x32\x37\x34\x2c\x33\x38\x32\x2e\x38\x32\x2c\x33\x30\x37\
 \x2e\x38\x36\x37\x2c\x33\x38\x32\x2e\x38\x32\x7a\x22\x2f\x3e\x0d\
 \x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\xc4\
+\x00\x00\x03\xeb\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4d\x61\x67\x6e\x69\x66\x79\x69\x6e\x67\x5f\x67\x6c\x61\
-\x73\x73\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\
-\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\
-\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\x6b\
-\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x79\x3d\x22\
-\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\
-\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\
-\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\
-\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\
-\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\
-\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\
-\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\x0a\x3c\x70\x61\
-\x74\x68\x20\x64\x3d\x22\x4d\x31\x37\x2e\x35\x34\x35\x2c\x31\x35\
-\x2e\x34\x36\x37\x6c\x2d\x33\x2e\x37\x37\x39\x2d\x33\x2e\x37\x37\
-\x39\x63\x30\x2e\x35\x37\x2d\x30\x2e\x39\x33\x35\x2c\x30\x2e\x38\
-\x39\x38\x2d\x32\x2e\x30\x33\x35\x2c\x30\x2e\x38\x39\x38\x2d\x33\
-\x2e\x32\x31\x63\x30\x2d\x33\x2e\x34\x31\x37\x2d\x32\x2e\x39\x36\
-\x31\x2d\x36\x2e\x33\x37\x37\x2d\x36\x2e\x33\x37\x38\x2d\x36\x2e\
-\x33\x37\x37\x0d\x0a\x09\x43\x34\x2e\x38\x36\x39\x2c\x32\x2e\x31\
-\x2c\x32\x2e\x31\x2c\x34\x2e\x38\x37\x2c\x32\x2e\x31\x2c\x38\x2e\
-\x32\x38\x37\x63\x30\x2c\x33\x2e\x34\x31\x36\x2c\x32\x2e\x39\x36\
-\x31\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\
-\x33\x37\x37\x63\x31\x2e\x31\x33\x37\x2c\x30\x2c\x32\x2e\x32\x2d\
-\x30\x2e\x33\x30\x39\x2c\x33\x2e\x31\x31\x35\x2d\x30\x2e\x38\x34\
-\x34\x6c\x33\x2e\x37\x39\x39\x2c\x33\x2e\x38\x30\x31\x0d\x0a\x09\
-\x63\x30\x2e\x33\x37\x32\x2c\x30\x2e\x33\x37\x31\x2c\x30\x2e\x39\
-\x37\x35\x2c\x30\x2e\x33\x37\x31\x2c\x31\x2e\x33\x34\x36\x2c\x30\
-\x6c\x30\x2e\x39\x34\x33\x2d\x30\x2e\x39\x34\x33\x43\x31\x38\x2e\
-\x30\x35\x31\x2c\x31\x36\x2e\x33\x30\x37\x2c\x31\x37\x2e\x39\x31\
-\x36\x2c\x31\x35\x2e\x38\x33\x38\x2c\x31\x37\x2e\x35\x34\x35\x2c\
-\x31\x35\x2e\x34\x36\x37\x7a\x20\x4d\x34\x2e\x30\x30\x34\x2c\x38\
-\x2e\x32\x38\x37\x0d\x0a\x09\x63\x30\x2d\x32\x2e\x33\x36\x36\x2c\
-\x31\x2e\x39\x31\x37\x2d\x34\x2e\x32\x38\x33\x2c\x34\x2e\x32\x38\
-\x32\x2d\x34\x2e\x32\x38\x33\x63\x32\x2e\x33\x36\x36\x2c\x30\x2c\
-\x34\x2e\x34\x37\x34\x2c\x32\x2e\x31\x30\x37\x2c\x34\x2e\x34\x37\
-\x34\x2c\x34\x2e\x34\x37\x34\x63\x30\x2c\x32\x2e\x33\x36\x35\x2d\
-\x31\x2e\x39\x31\x38\x2c\x34\x2e\x32\x38\x33\x2d\x34\x2e\x32\x38\
-\x33\x2c\x34\x2e\x32\x38\x33\x0d\x0a\x09\x43\x36\x2e\x31\x31\x31\
-\x2c\x31\x32\x2e\x37\x36\x2c\x34\x2e\x30\x30\x34\x2c\x31\x30\x2e\
-\x36\x35\x32\x2c\x34\x2e\x30\x30\x34\x2c\x38\x2e\x32\x38\x37\x7a\
-\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
-\x3e\x0d\x0a\
-\x00\x00\x04\xaa\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
-\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
-\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\
-\x3d\x22\x32\x34\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\
-\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\
-\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\
-\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\
-\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\
-\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
-\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\
-\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\
-\x2c\x31\x34\x2e\x37\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\
-\x30\x2e\x34\x37\x34\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\
-\x34\x2d\x30\x2e\x32\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\
-\x30\x6c\x35\x2e\x33\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\
-\x37\x34\x38\x2c\x34\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\
-\x2e\x39\x32\x32\x2c\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\
-\x0d\x0a\x09\x63\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\
-\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\
-\x2c\x31\x2e\x34\x31\x32\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\
-\x33\x2e\x33\x37\x38\x2c\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\
-\x33\x2c\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\
-\x39\x39\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x0d\x0a\
-\x09\x43\x36\x2e\x32\x36\x39\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\
-\x2e\x39\x39\x34\x2c\x31\x34\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\
-\x2c\x31\x34\x2e\x37\x35\x7a\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\
-\x31\x34\x2e\x37\x34\x38\x4c\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\
-\x6c\x2d\x35\x2e\x30\x36\x2d\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\
-\x34\x31\x33\x2d\x30\x2e\x33\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\
-\x30\x2e\x33\x33\x2d\x31\x2e\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\
-\x0d\x0a\x09\x63\x2d\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\
-\x2d\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2c\x30\x2e\x30\x38\
-\x33\x2c\x31\x2e\x34\x31\x32\x4c\x31\x36\x2e\x39\x39\x35\x2c\x31\
-\x30\x6c\x2d\x33\x2e\x36\x35\x39\x2c\x33\x2e\x32\x35\x32\x63\x2d\
-\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\x37\x2d\x30\x2e\x34\x35\
-\x2c\x30\x2e\x39\x39\x39\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\
-\x31\x32\x43\x31\x33\x2e\x34\x35\x2c\x31\x34\x2e\x38\x38\x37\x2c\
-\x31\x33\x2e\x37\x32\x35\x2c\x31\x35\x2c\x31\x34\x2c\x31\x35\x0d\
-\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\x2c\x31\x35\x2c\x31\x34\x2e\
-\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\x37\x2c\x31\x34\x2e\x36\x36\
-\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\x20\x4d\x39\x2e\x39\x38\x36\
-\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\x2d\x31\x32\x63\x30\x2e\x30\
-\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\x30\x2e\x32\x37\x37\x2d\x31\
-\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\x2d\x31\x2e\x31\x35\x31\x0d\
-\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\x30\x2e\x30\x39\x32\x2d\
-\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\x37\x2d\x31\x2e\x31\x35\
-\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\x31\x32\x63\x2d\x30\x2e\
-\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\x30\x2e\x32\x37\x37\x2c\
-\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\x2c\x31\x2e\x31\x35\x31\
-\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\x39\x39\x36\x2c\x38\x2e\
-\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\x30\x31\x2c\x31\x37\x0d\
-\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\x2c\x39\x2e\x39\x30\
-\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\x39\x38\x36\x2c\x31\
-\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\
-\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x26\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
 \x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
@@ -723,32 +1466,44 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x33\x38\
-\x38\x63\x2d\x37\x32\x2e\x35\x39\x37\x2c\x30\x2d\x31\x33\x32\x2d\
-\x35\x39\x2e\x34\x30\x35\x2d\x31\x33\x32\x2d\x31\x33\x32\x63\x30\
-\x2d\x37\x32\x2e\x36\x30\x31\x2c\x35\x39\x2e\x34\x30\x33\x2d\x31\
-\x33\x32\x2c\x31\x33\x32\x2d\x31\x33\x32\x63\x33\x36\x2e\x33\x2c\
-\x30\x2c\x36\x39\x2e\x32\x39\x39\x2c\x31\x35\x2e\x34\x2c\x39\x32\
-\x2e\x34\x30\x36\x2c\x33\x39\x2e\x36\x30\x31\x4c\x32\x37\x38\x2c\
-\x32\x33\x34\x68\x31\x35\x34\x56\x38\x30\x0d\x0a\x09\x09\x6c\x2d\
-\x35\x31\x2e\x36\x39\x38\x2c\x35\x31\x2e\x37\x30\x32\x43\x33\x34\
-\x38\x2e\x34\x30\x36\x2c\x39\x39\x2e\x37\x39\x38\x2c\x33\x30\x34\
-\x2e\x34\x30\x36\x2c\x38\x30\x2c\x32\x35\x36\x2c\x38\x30\x63\x2d\
-\x39\x36\x2e\x37\x39\x37\x2c\x30\x2d\x31\x37\x36\x2c\x37\x39\x2e\
-\x32\x30\x33\x2d\x31\x37\x36\x2c\x31\x37\x36\x73\x37\x38\x2e\x30\
-\x39\x34\x2c\x31\x37\x36\x2c\x31\x37\x36\x2c\x31\x37\x36\x0d\x0a\
-\x09\x09\x63\x38\x31\x2e\x30\x34\x35\x2c\x30\x2c\x31\x34\x38\x2e\
-\x32\x38\x37\x2d\x35\x34\x2e\x31\x33\x34\x2c\x31\x36\x39\x2e\x34\
-\x30\x31\x2d\x31\x32\x38\x48\x33\x37\x38\x2e\x38\x35\x43\x33\x36\
-\x30\x2e\x31\x30\x35\x2c\x33\x35\x33\x2e\x35\x36\x31\x2c\x33\x31\
-\x31\x2e\x37\x31\x32\x2c\x33\x38\x38\x2c\x32\x35\x36\x2c\x33\x38\
-\x38\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x67\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
+\x4d\x32\x35\x36\x2c\x31\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\
+\x2d\x31\x34\x35\x2e\x37\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\
+\x31\x32\x38\x63\x36\x37\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\
+\x34\x2c\x31\x32\x38\x2c\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\
+\x2e\x39\x2c\x30\x2c\x31\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\
+\x32\x32\x34\x2d\x31\x32\x36\x2e\x36\x0d\x0a\x09\x09\x43\x34\x32\
+\x38\x2e\x32\x2c\x31\x39\x38\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\
+\x31\x32\x38\x2c\x32\x35\x36\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\
+\x36\x2c\x33\x34\x37\x2e\x33\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\
+\x38\x39\x2e\x36\x2d\x34\x31\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\
+\x33\x63\x30\x2d\x35\x30\x2e\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\
+\x2e\x33\x2c\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\
+\x36\x2c\x34\x31\x2c\x38\x39\x2e\x36\x2c\x39\x31\x2e\x33\x0d\x0a\
+\x09\x09\x43\x33\x34\x35\x2e\x36\x2c\x33\x30\x36\x2e\x34\x2c\x33\
+\x30\x35\x2e\x34\x2c\x33\x34\x37\x2e\x33\x2c\x32\x35\x36\x2c\x33\
+\x34\x37\x2e\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\
+\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\
+\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\x32\x2e\x39\x2d\x31\x35\
+\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\x37\x63\x2d\x32\x2e\x35\
+\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\x2d\x37\x2e\x36\x2d\x30\
+\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\x2d\x35\x32\x2e\x33\x2c\
+\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x63\x30\
+\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\x2c\x35\x33\x2e\x33\x2c\
+\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0d\x0a\x09\x09\x09\x73\x35\
+\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\x2e\x33\x2d\x35\x33\
+\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\x32\x2d\x34\x2e\x36\
+\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\x2e\x35\x2c\x34\x2e\
+\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\x31\x39\x2e\x38\x2c\
+\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\x35\x36\x2c\x32\x35\
+\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\x2c\x32\x32\x34\x7a\
+\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\
+\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x02\xa2\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -794,182 +1549,26 @@
 \x48\x39\x36\x76\x33\x32\x68\x33\x32\x30\x56\x39\x36\x7a\x22\x2f\
 \x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
 \x0a\
-\x00\x00\x04\xd5\
+\x00\x00\x01\x1c\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x32\
-\x2e\x32\x38\x39\x32\x32\x20\x2d\x33\x39\x2e\x33\x31\x31\x33\x20\
-\x36\x2e\x33\x36\x37\x30\x32\x20\x2d\x34\x36\x2e\x32\x33\x38\x36\
-\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
-\x39\x43\x20\x32\x39\x2e\x36\x36\x38\x37\x20\x2d\x36\x37\x2e\x35\
-\x35\x36\x38\x20\x35\x35\x2e\x32\x32\x39\x32\x20\x2d\x36\x30\x2e\
-\x36\x34\x32\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\
-\x35\x30\x32\x32\x43\x20\x35\x36\x2e\x36\x31\x33\x36\x20\x2d\x33\
-\x33\x2e\x34\x33\x38\x31\x20\x34\x39\x2e\x31\x31\x33\x32\x20\x2d\
-\x32\x36\x2e\x35\x39\x35\x39\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
-\x2d\x32\x32\x2e\x35\x32\x38\x31\x43\x20\x32\x35\x2e\x33\x39\x39\
-\x35\x20\x2d\x31\x35\x2e\x31\x35\x38\x32\x20\x37\x2e\x31\x39\x39\
-\x33\x35\x20\x2d\x31\x38\x2e\x31\x34\x33\x36\x20\x33\x2e\x39\x35\
-\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\
-\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\
-\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\
-\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\
-\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\
-\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\
-\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\
-\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
-\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
-\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
-\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\
-\x35\x37\x33\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\
-\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
-\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\
-\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
-\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
-\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
-\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\
-\x39\x30\x33\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\
-\x33\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\
-\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\
-\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\
-\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\
-\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
-\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\
-\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\
-\x36\x2e\x31\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\
-\x35\x30\x32\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\
-\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\
-\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\
-\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\
-\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\
-\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\
-\x27\x34\x30\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\
-\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\
-\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\
-\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\
-\x73\x76\x67\x3e\
-\x00\x00\x03\x36\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
-\x22\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x39\x36\x2e\x38\x20\x33\
-\x32\x30\x2c\x33\x39\x36\x2e\x38\x20\x33\x32\x30\x2c\x34\x34\x38\
-\x20\x34\x34\x38\x2c\x34\x34\x38\x20\x34\x34\x38\x2c\x33\x32\x30\
-\x20\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x32\x30\x20\x09\x22\x2f\
-\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
-\x6e\x74\x73\x3d\x22\x33\x39\x36\x2e\x38\x2c\x31\x31\x35\x2e\x32\
-\x30\x35\x20\x33\x39\x36\x2e\x38\x2c\x31\x39\x32\x20\x34\x34\x38\
-\x2c\x31\x39\x32\x20\x34\x34\x38\x2c\x36\x34\x20\x33\x32\x30\x2c\
-\x36\x34\x20\x33\x32\x30\x2c\x31\x31\x35\x2e\x32\x30\x35\x20\x09\
-\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
-\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\
-\x31\x35\x2e\x32\x20\x31\x39\x32\x2c\x31\x31\x35\x2e\x32\x20\x31\
-\x39\x32\x2c\x36\x34\x20\x36\x34\x2c\x36\x34\x20\x36\x34\x2c\x31\
-\x39\x32\x20\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\x39\x32\x20\x09\
-\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
-\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x2c\x33\x39\x36\
-\x2e\x37\x39\x35\x20\x31\x31\x35\x2e\x32\x2c\x33\x32\x30\x20\x36\
-\x34\x2c\x33\x32\x30\x20\x36\x34\x2c\x34\x34\x38\x20\x31\x39\x32\
-\x2c\x34\x34\x38\x20\x31\x39\x32\x2c\x33\x39\x36\x2e\x37\x39\x35\
-\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x7d\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\
-\x37\x2c\x32\x33\x34\x2e\x36\x32\x35\x48\x31\x36\x37\x2e\x32\x39\
-\x36\x6c\x31\x31\x39\x2e\x37\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\
-\x32\x4c\x32\x35\x36\x2c\x38\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\
-\x31\x37\x31\x2c\x31\x37\x31\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\
-\x39\x2e\x39\x32\x34\x4c\x31\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\
-\x37\x2e\x33\x37\x35\x48\x34\x32\x37\x56\x32\x33\x34\x2e\x36\x32\
-\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
+\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
+\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\
+\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\
+\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\
+\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\
+\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\
+\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\
+\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\
+\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\
+\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
 \x00\x00\x05\x27\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1055,7 +1654,44 @@
 \x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x7a\x22\x2f\x3e\x0d\
 \x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
 \x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x7d\
+\x00\x00\x02\x21\
+\x00\
+\x00\x07\xaf\x78\x9c\xdd\x55\x4d\x6f\x9c\x30\x10\xbd\xf7\x57\x4c\
+\xd5\x83\xdb\x03\xc6\xdf\x86\x28\x24\x52\x57\xea\x29\xbd\x25\x97\
+\xde\x68\xf0\x82\x9b\x5d\x58\x01\x5d\xb6\xff\xbe\x66\xd7\x60\x4a\
+\xaa\xf4\x92\x43\x15\x90\x30\xf3\x18\xbf\x99\xe7\xf1\x98\xeb\xdb\
+\xd3\x7e\x07\x47\xd3\x76\xb6\xa9\x33\x44\x31\x41\x60\xea\xc7\xa6\
+\xb0\x75\x99\xa1\x87\xfb\x2f\x51\x82\x6e\x6f\xde\x5d\xbf\x8f\x22\
+\xb8\xaf\x6c\x07\x5b\xbb\x33\x30\xe4\x1d\x94\xa6\x36\x6d\xde\x9b\
+\x02\xbe\xff\x82\xe2\x68\xbb\x63\xb9\x07\x86\x13\x88\x22\xe7\xef\
+\xac\x25\x2b\x45\xe0\xe2\xd4\x5d\x86\xaa\xbe\x3f\x5c\xc5\xf1\x30\
+\x0c\x78\xe0\xb8\x69\xcb\x98\x11\x42\x62\xe7\xef\x5d\xae\x4e\x3b\
+\x5b\x3f\xfd\xcd\x91\xa6\x69\x1a\x9f\xbf\x22\x18\x6c\xd1\x57\x19\
+\x52\x1c\x3b\x50\x1d\x7a\x04\x95\xb1\x65\xd5\x4f\x90\x1e\xa1\xa3\
+\x35\xc3\xe7\xe6\x94\x21\xa9\xb0\x20\xa9\x00\xc9\x71\x22\x13\x0e\
+\x7e\x9a\x1f\x35\x72\x09\x97\x60\x8b\x0c\x1d\xf2\xd2\xd0\x8b\xd9\
+\xb7\x79\xdd\x6d\x9b\x76\x9f\xa1\x7d\xde\xb7\xf6\xf4\x91\x38\x67\
+\xc5\x94\x00\x32\xde\x93\x31\x71\x53\xaa\x47\xf2\x4f\xe3\xec\x43\
+\xde\x57\xe0\xe8\xbe\x42\x8a\xb9\xd0\x82\x41\xc4\x38\x26\x94\xde\
+\x05\xc0\xbf\x3c\x47\x36\xcf\x90\x7f\x03\x8b\x39\x12\x53\x29\x29\
+\x05\x9a\x62\x29\x38\x85\x88\x62\x2d\x95\x54\xc0\x19\xa6\x6c\x36\
+\x37\x20\x04\x56\xa9\x4a\x83\x83\x14\x38\x49\x99\x0a\x14\x33\x30\
+\xe7\xfa\x02\x32\x09\x9c\x01\xae\xb0\xd2\x42\x6e\x02\x22\x08\x4e\
+\x94\x4a\x42\x64\xf7\xc2\x94\x14\x53\x6a\xde\xdc\x84\xdc\x27\x87\
+\x59\xdd\x44\x31\x03\x3e\xca\xdd\x7a\xa5\xbf\xa1\x71\xab\xee\x32\
+\xf4\x41\x6f\xc7\x1b\xc5\xae\x2e\x71\xf9\x8a\xa5\x0d\x42\x53\xac\
+\x29\x49\x97\x42\xdd\xbe\x22\x9c\x2d\x84\x6a\xcc\x09\xd5\xb3\xd0\
+\x8b\xb9\x14\xea\x1d\x82\x50\x4f\x11\x84\x4e\x51\x02\x22\xb1\xa4\
+\x89\x0c\x24\x17\x76\x1f\xe3\x3c\x2c\xaa\x7c\x81\x43\xd2\x7e\xf2\
+\x5a\xc5\xbc\x6e\x75\x53\x1b\x04\x5d\xdf\x36\x4f\xc6\xad\x22\x39\
+\x5f\x13\x10\xb9\x2e\x34\x8f\xf9\x21\x43\x6d\xf3\xb3\x2e\xfe\x80\
+\x7f\x34\xb6\x5e\xe3\x7b\xdb\x9b\x76\x67\xdd\xe0\x4e\x03\x82\x09\
+\xd7\x72\xfe\xe6\x5b\x99\xbb\x7c\x38\x65\xaf\x5f\xa7\xf5\x0a\xbe\
+\xe1\x1e\xf4\x0a\xdf\x5c\x09\x5f\x68\x35\xc9\x30\x4b\xf4\xe2\x4c\
+\x51\x0c\x8b\x84\xcf\x67\x8a\x37\x17\xad\x36\x39\x84\x6a\x79\x8a\
+\xf5\x46\xf9\x6f\x96\xf1\xf2\x70\xbf\xc8\x9b\xdf\xf9\x80\xe2\xe1\
+\
+\x00\x00\x03\x36\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1086,18 +1722,62 @@
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\
-\x2c\x32\x37\x37\x2e\x33\x37\x35\x68\x32\x35\x39\x2e\x37\x30\x34\
-\x4c\x32\x32\x35\x2e\x30\x30\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\
-\x4c\x32\x35\x36\x2c\x34\x32\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\
-\x4c\x32\x35\x36\x2c\x38\x35\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\
-\x32\x39\x2e\x39\x32\x34\x6c\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\
-\x31\x39\x2e\x37\x30\x31\x48\x38\x35\x56\x32\x37\x37\x2e\x33\x37\
-\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x52\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
+\x22\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x39\x36\x2e\x38\x20\x33\
+\x32\x30\x2c\x33\x39\x36\x2e\x38\x20\x33\x32\x30\x2c\x34\x34\x38\
+\x20\x34\x34\x38\x2c\x34\x34\x38\x20\x34\x34\x38\x2c\x33\x32\x30\
+\x20\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x32\x30\x20\x09\x22\x2f\
+\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
+\x6e\x74\x73\x3d\x22\x33\x39\x36\x2e\x38\x2c\x31\x31\x35\x2e\x32\
+\x30\x35\x20\x33\x39\x36\x2e\x38\x2c\x31\x39\x32\x20\x34\x34\x38\
+\x2c\x31\x39\x32\x20\x34\x34\x38\x2c\x36\x34\x20\x33\x32\x30\x2c\
+\x36\x34\x20\x33\x32\x30\x2c\x31\x31\x35\x2e\x32\x30\x35\x20\x09\
+\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
+\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\
+\x31\x35\x2e\x32\x20\x31\x39\x32\x2c\x31\x31\x35\x2e\x32\x20\x31\
+\x39\x32\x2c\x36\x34\x20\x36\x34\x2c\x36\x34\x20\x36\x34\x2c\x31\
+\x39\x32\x20\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\x39\x32\x20\x09\
+\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
+\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x2c\x33\x39\x36\
+\x2e\x37\x39\x35\x20\x31\x31\x35\x2e\x32\x2c\x33\x32\x30\x20\x36\
+\x34\x2c\x33\x32\x30\x20\x36\x34\x2c\x34\x34\x38\x20\x31\x39\x32\
+\x2c\x34\x34\x38\x20\x31\x39\x32\x2c\x33\x39\x36\x2e\x37\x39\x35\
+\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
+\x00\x00\x01\xdd\
+\x00\
+\x00\x06\xe4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\x13\x29\xff\
+\x61\xba\xb7\x4a\xec\x17\xc4\xd4\xa6\xa6\x51\xfd\x21\xcb\x52\x9a\
+\x58\x6a\xea\xaa\xa7\x0a\xc3\x16\x50\x28\x20\x58\xc0\xce\xaf\xef\
+\xee\x92\x54\x51\x95\xfa\x18\xfb\xb0\x33\xda\x79\x6f\xde\xbc\x65\
+\x24\xa6\xd7\xfb\xdf\x39\x74\xa2\x6e\xb2\xb2\x08\x10\x27\x0c\x81\
+\x28\xa2\x32\xce\x8a\x24\x40\xad\xfc\x85\xc7\xe8\xfa\xd3\xe5\xc5\
+\xf4\x1d\xc6\xb0\x12\x85\xa8\x43\x59\xd6\x3e\x7c\x8e\xcb\x9d\x80\
+\x75\x9e\xb7\x8d\x34\x25\xe0\x1e\x71\x08\xb7\xe1\xeb\x76\x05\xcb\
+\x7d\x55\xd6\x12\x36\x79\x9b\xe0\x75\x01\xc4\x14\xb7\xc3\x10\x1f\
+\x3c\xc2\x18\xcc\xda\x2c\x8f\x81\xbd\x07\xc0\xd8\xe8\x2f\xee\xe6\
+\xf7\x3f\x36\x4b\x68\xba\x04\x36\xdf\x66\x37\xeb\x39\x20\x4c\xe9\
+\x77\x77\x4e\xe9\xe2\x7e\x61\x24\x38\xe1\x94\x2e\x6f\x11\xa0\x54\
+\xca\xca\xa7\xb4\xef\x7b\xd2\xbb\xa4\xac\x13\xba\xaa\xc3\x2a\xcd\
+\xa2\x86\x2a\x22\xd5\x44\xd5\x44\x95\x18\xe7\x24\x96\x31\xd2\x33\
+\xb4\xf4\x8b\xa7\x72\x04\x59\x1c\xa0\x9b\xf0\x20\xea\x9f\xea\xa2\
+\xbe\x44\xd1\x04\xaf\x48\x3b\x8c\x31\x2d\xf5\x44\xf1\xf7\x79\x56\
+\x3c\xbc\x46\xe4\x93\xc9\x84\x1a\x54\x51\x03\xc4\xaa\x3d\x82\xc3\
+\x90\x2f\x2f\x2c\xe8\xb3\x58\xa6\x01\x1a\x71\x47\x03\xa9\xc8\x92\
+\x54\xfe\xbd\x76\x99\xe8\x67\xa5\xee\x02\x06\xaa\xa6\x0f\x82\x46\
+\x1e\x72\x11\x20\x51\x84\xbb\x5c\xe0\x5d\x18\x3d\x24\x75\xd9\x16\
+\xb1\x5f\x88\x1e\x5e\x30\x3f\x1a\x6f\x7e\x53\x85\x91\xa2\x57\xb5\
+\x68\x44\xdd\x09\xf3\xea\x44\x05\x6b\x88\xd6\xb4\x0a\x65\x0a\xea\
+\xd1\x5f\xb8\xc7\x6c\x3e\x72\x89\x1b\x31\xdb\x25\x1f\xb0\x6b\x7b\
+\x2a\xaa\xa3\x73\x8a\x47\x8c\x8c\x22\xac\x00\x9b\xe9\x22\x76\xf1\
+\x13\xdc\x0d\x10\x33\x98\xfb\xdc\xa0\x73\x6a\x00\xd3\xa2\x4b\xb6\
+\x51\xd4\x67\x6b\xe6\x3c\xea\x4f\x60\x59\xf4\x1f\x1f\xce\x78\x7c\
+\x16\x3e\xae\xb8\x77\x3a\x1f\x53\xfa\xff\x25\x39\x63\xfe\x26\xa6\
+\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x71\x6c\x49\x57\x6c\
+\xf2\x26\xa6\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x31\x2c\
+\xe9\x39\xaa\x7f\xb6\xca\x7f\x00\x99\x18\x96\x19\
+\x00\x00\x02\xb7\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1128,69 +1808,22 @@
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x48\
-\x32\x35\x36\x2e\x30\x30\x36\x6c\x2d\x34\x32\x2e\x36\x36\x38\x2d\
-\x34\x38\x48\x37\x34\x2e\x36\x36\x36\x43\x35\x31\x2e\x31\x39\x37\
-\x2c\x39\x36\x2c\x33\x32\x2c\x31\x31\x35\x2e\x31\x39\x38\x2c\x33\
-\x32\x2c\x31\x33\x38\x2e\x36\x36\x37\x76\x32\x33\x34\x2e\x36\x36\
-\x36\x43\x33\x32\x2c\x33\x39\x36\x2e\x38\x30\x32\x2c\x35\x31\x2e\
-\x31\x39\x37\x2c\x34\x31\x36\x2c\x37\x34\x2e\x36\x36\x36\x2c\x34\
-\x31\x36\x68\x33\x36\x32\x2e\x36\x36\x38\x0d\x0a\x09\x43\x34\x36\
-\x30\x2e\x38\x30\x33\x2c\x34\x31\x36\x2c\x34\x38\x30\x2c\x33\x39\
-\x36\x2e\x38\x30\x32\x2c\x34\x38\x30\x2c\x33\x37\x33\x2e\x33\x33\
-\x33\x56\x31\x38\x36\x2e\x36\x36\x37\x43\x34\x38\x30\x2c\x31\x36\
-\x33\x2e\x31\x39\x38\x2c\x34\x36\x30\x2e\x38\x30\x33\x2c\x31\x34\
-\x34\x2c\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x7a\x20\x4d\
-\x34\x34\x38\x2c\x33\x37\x33\x2e\x33\x33\x33\x0d\x0a\x09\x63\x30\
-\x2c\x35\x2e\x37\x38\x32\x2d\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\
-\x36\x36\x37\x2d\x31\x30\x2e\x36\x36\x36\x2c\x31\x30\x2e\x36\x36\
-\x37\x48\x37\x34\x2e\x36\x36\x36\x43\x36\x38\x2e\x38\x38\x34\x2c\
-\x33\x38\x34\x2c\x36\x34\x2c\x33\x37\x39\x2e\x31\x31\x35\x2c\x36\
-\x34\x2c\x33\x37\x33\x2e\x33\x33\x33\x56\x31\x37\x36\x68\x33\x37\
-\x33\x2e\x33\x33\x34\x63\x35\x2e\x37\x38\x31\x2c\x30\x2c\x31\x30\
-\x2e\x36\x36\x36\x2c\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\x36\x36\
-\x36\x2c\x31\x30\x2e\x36\x36\x37\x0d\x0a\x09\x56\x33\x37\x33\x2e\
-\x33\x33\x33\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
-\x0a\
-\x00\x00\x02\x21\
-\x00\
-\x00\x07\xaf\x78\x9c\xdd\x55\x4d\x6f\x9c\x30\x10\xbd\xf7\x57\x4c\
-\xd5\x83\xdb\x03\xc6\xdf\x86\x28\x24\x52\x57\xea\x29\xbd\x25\x97\
-\xde\x68\xf0\x82\x9b\x5d\x58\x01\x5d\xb6\xff\xbe\x66\xd7\x60\x4a\
-\xaa\xf4\x92\x43\x15\x90\x30\xf3\x18\xbf\x99\xe7\xf1\x98\xeb\xdb\
-\xd3\x7e\x07\x47\xd3\x76\xb6\xa9\x33\x44\x31\x41\x60\xea\xc7\xa6\
-\xb0\x75\x99\xa1\x87\xfb\x2f\x51\x82\x6e\x6f\xde\x5d\xbf\x8f\x22\
-\xb8\xaf\x6c\x07\x5b\xbb\x33\x30\xe4\x1d\x94\xa6\x36\x6d\xde\x9b\
-\x02\xbe\xff\x82\xe2\x68\xbb\x63\xb9\x07\x86\x13\x88\x22\xe7\xef\
-\xac\x25\x2b\x45\xe0\xe2\xd4\x5d\x86\xaa\xbe\x3f\x5c\xc5\xf1\x30\
-\x0c\x78\xe0\xb8\x69\xcb\x98\x11\x42\x62\xe7\xef\x5d\xae\x4e\x3b\
-\x5b\x3f\xfd\xcd\x91\xa6\x69\x1a\x9f\xbf\x22\x18\x6c\xd1\x57\x19\
-\x52\x1c\x3b\x50\x1d\x7a\x04\x95\xb1\x65\xd5\x4f\x90\x1e\xa1\xa3\
-\x35\xc3\xe7\xe6\x94\x21\xa9\xb0\x20\xa9\x00\xc9\x71\x22\x13\x0e\
-\x7e\x9a\x1f\x35\x72\x09\x97\x60\x8b\x0c\x1d\xf2\xd2\xd0\x8b\xd9\
-\xb7\x79\xdd\x6d\x9b\x76\x9f\xa1\x7d\xde\xb7\xf6\xf4\x91\x38\x67\
-\xc5\x94\x00\x32\xde\x93\x31\x71\x53\xaa\x47\xf2\x4f\xe3\xec\x43\
-\xde\x57\xe0\xe8\xbe\x42\x8a\xb9\xd0\x82\x41\xc4\x38\x26\x94\xde\
-\x05\xc0\xbf\x3c\x47\x36\xcf\x90\x7f\x03\x8b\x39\x12\x53\x29\x29\
-\x05\x9a\x62\x29\x38\x85\x88\x62\x2d\x95\x54\xc0\x19\xa6\x6c\x36\
-\x37\x20\x04\x56\xa9\x4a\x83\x83\x14\x38\x49\x99\x0a\x14\x33\x30\
-\xe7\xfa\x02\x32\x09\x9c\x01\xae\xb0\xd2\x42\x6e\x02\x22\x08\x4e\
-\x94\x4a\x42\x64\xf7\xc2\x94\x14\x53\x6a\xde\xdc\x84\xdc\x27\x87\
-\x59\xdd\x44\x31\x03\x3e\xca\xdd\x7a\xa5\xbf\xa1\x71\xab\xee\x32\
-\xf4\x41\x6f\xc7\x1b\xc5\xae\x2e\x71\xf9\x8a\xa5\x0d\x42\x53\xac\
-\x29\x49\x97\x42\xdd\xbe\x22\x9c\x2d\x84\x6a\xcc\x09\xd5\xb3\xd0\
-\x8b\xb9\x14\xea\x1d\x82\x50\x4f\x11\x84\x4e\x51\x02\x22\xb1\xa4\
-\x89\x0c\x24\x17\x76\x1f\xe3\x3c\x2c\xaa\x7c\x81\x43\xd2\x7e\xf2\
-\x5a\xc5\xbc\x6e\x75\x53\x1b\x04\x5d\xdf\x36\x4f\xc6\xad\x22\x39\
-\x5f\x13\x10\xb9\x2e\x34\x8f\xf9\x21\x43\x6d\xf3\xb3\x2e\xfe\x80\
-\x7f\x34\xb6\x5e\xe3\x7b\xdb\x9b\x76\x67\xdd\xe0\x4e\x03\x82\x09\
-\xd7\x72\xfe\xe6\x5b\x99\xbb\x7c\x38\x65\xaf\x5f\xa7\xf5\x0a\xbe\
-\xe1\x1e\xf4\x0a\xdf\x5c\x09\x5f\x68\x35\xc9\x30\x4b\xf4\xe2\x4c\
-\x51\x0c\x8b\x84\xcf\x67\x8a\x37\x17\xad\x36\x39\x84\x6a\x79\x8a\
-\xf5\x46\xf9\x6f\x96\xf1\xf2\x70\xbf\xc8\x9b\xdf\xf9\x80\xe2\xe1\
-\
-\x00\x00\x04\x3d\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x35\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
+\x6e\x74\x73\x3d\x22\x34\x30\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\
+\x20\x33\x37\x35\x2e\x32\x30\x32\x2c\x31\x30\x37\x20\x32\x35\x36\
+\x2c\x32\x32\x36\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
+\x2c\x31\x30\x37\x20\x31\x30\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\
+\x20\x32\x32\x36\x2e\x32\x30\x32\x2c\x32\x35\x36\x20\x31\x30\x37\
+\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
+\x2c\x34\x30\x35\x20\x32\x35\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\
+\x20\x0d\x0a\x09\x09\x09\x33\x37\x35\x2e\x32\x30\x32\x2c\x34\x30\
+\x35\x20\x34\x30\x35\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x32\x38\
+\x35\x2e\x37\x39\x38\x2c\x32\x35\x36\x20\x09\x09\x22\x2f\x3e\x0d\
+\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\xd5\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
 \x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
@@ -1214,59 +1847,69 @@
 \x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
 \x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
 \x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
-\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
-\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
-\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
-\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x32\
+\x2e\x32\x38\x39\x32\x32\x20\x2d\x33\x39\x2e\x33\x31\x31\x33\x20\
+\x36\x2e\x33\x36\x37\x30\x32\x20\x2d\x34\x36\x2e\x32\x33\x38\x36\
+\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
+\x39\x43\x20\x32\x39\x2e\x36\x36\x38\x37\x20\x2d\x36\x37\x2e\x35\
+\x35\x36\x38\x20\x35\x35\x2e\x32\x32\x39\x32\x20\x2d\x36\x30\x2e\
+\x36\x34\x32\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\
+\x35\x30\x32\x32\x43\x20\x35\x36\x2e\x36\x31\x33\x36\x20\x2d\x33\
+\x33\x2e\x34\x33\x38\x31\x20\x34\x39\x2e\x31\x31\x33\x32\x20\x2d\
+\x32\x36\x2e\x35\x39\x35\x39\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
+\x2d\x32\x32\x2e\x35\x32\x38\x31\x43\x20\x32\x35\x2e\x33\x39\x39\
+\x35\x20\x2d\x31\x35\x2e\x31\x35\x38\x32\x20\x37\x2e\x31\x39\x39\
+\x33\x35\x20\x2d\x31\x38\x2e\x31\x34\x33\x36\x20\x33\x2e\x39\x35\
+\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\
+\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\
+\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\
+\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\
 \x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\
-\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\
-\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\
-\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
-\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
-\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
-\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\x79\
-\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\
-\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\
-\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
-\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
-\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
-\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\x79\
-\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\x6c\
-\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\
-\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\
-\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\
-\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\
-\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\
-\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\
-\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\x20\
-\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\x69\
-\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\
-\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\
-\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\
-\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\
-\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\
-\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\
-\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\x34\
-\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\
-\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\
-\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
-\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x02\xc9\
+\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\
+\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\
+\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\
+\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
+\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
+\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
+\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\
+\x35\x37\x33\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\
+\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
+\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\
+\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
+\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
+\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
+\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\
+\x39\x30\x33\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\
+\x33\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\
+\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\
+\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\
+\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\
+\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
+\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\
+\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\
+\x36\x2e\x31\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\
+\x35\x30\x32\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\
+\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\
+\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\
+\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\
+\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\
+\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\
+\x27\x34\x30\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\
+\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\
+\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\
+\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\
+\x73\x76\x67\x3e\
+\x00\x00\x03\xc4\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -1278,42 +1921,58 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
-\x3d\x22\x34\x38\x30\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\
-\x30\x20\x33\x38\x34\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\
-\x36\x20\x32\x37\x36\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\
-\x38\x20\x32\x35\x36\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\
-\x20\x32\x33\x36\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\
-\x20\x31\x32\x38\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\
-\x20\x33\x32\x2c\x32\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\
-\x0d\x0a\x09\x31\x32\x38\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\
-\x37\x36\x20\x32\x33\x36\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\
-\x38\x34\x20\x32\x35\x36\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\
-\x38\x34\x20\x32\x37\x35\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\
-\x2e\x34\x2c\x32\x37\x35\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\
-\x2e\x38\x20\x33\x38\x34\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0d\x0a\
-\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\xfc\
+\x3d\x22\x4d\x61\x67\x6e\x69\x66\x79\x69\x6e\x67\x5f\x67\x6c\x61\
+\x73\x73\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\
+\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\
+\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\x6b\
+\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x79\x3d\x22\
+\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\
+\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\
+\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\
+\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\
+\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\
+\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\
+\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\x0a\x3c\x70\x61\
+\x74\x68\x20\x64\x3d\x22\x4d\x31\x37\x2e\x35\x34\x35\x2c\x31\x35\
+\x2e\x34\x36\x37\x6c\x2d\x33\x2e\x37\x37\x39\x2d\x33\x2e\x37\x37\
+\x39\x63\x30\x2e\x35\x37\x2d\x30\x2e\x39\x33\x35\x2c\x30\x2e\x38\
+\x39\x38\x2d\x32\x2e\x30\x33\x35\x2c\x30\x2e\x38\x39\x38\x2d\x33\
+\x2e\x32\x31\x63\x30\x2d\x33\x2e\x34\x31\x37\x2d\x32\x2e\x39\x36\
+\x31\x2d\x36\x2e\x33\x37\x37\x2d\x36\x2e\x33\x37\x38\x2d\x36\x2e\
+\x33\x37\x37\x0d\x0a\x09\x43\x34\x2e\x38\x36\x39\x2c\x32\x2e\x31\
+\x2c\x32\x2e\x31\x2c\x34\x2e\x38\x37\x2c\x32\x2e\x31\x2c\x38\x2e\
+\x32\x38\x37\x63\x30\x2c\x33\x2e\x34\x31\x36\x2c\x32\x2e\x39\x36\
+\x31\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\
+\x33\x37\x37\x63\x31\x2e\x31\x33\x37\x2c\x30\x2c\x32\x2e\x32\x2d\
+\x30\x2e\x33\x30\x39\x2c\x33\x2e\x31\x31\x35\x2d\x30\x2e\x38\x34\
+\x34\x6c\x33\x2e\x37\x39\x39\x2c\x33\x2e\x38\x30\x31\x0d\x0a\x09\
+\x63\x30\x2e\x33\x37\x32\x2c\x30\x2e\x33\x37\x31\x2c\x30\x2e\x39\
+\x37\x35\x2c\x30\x2e\x33\x37\x31\x2c\x31\x2e\x33\x34\x36\x2c\x30\
+\x6c\x30\x2e\x39\x34\x33\x2d\x30\x2e\x39\x34\x33\x43\x31\x38\x2e\
+\x30\x35\x31\x2c\x31\x36\x2e\x33\x30\x37\x2c\x31\x37\x2e\x39\x31\
+\x36\x2c\x31\x35\x2e\x38\x33\x38\x2c\x31\x37\x2e\x35\x34\x35\x2c\
+\x31\x35\x2e\x34\x36\x37\x7a\x20\x4d\x34\x2e\x30\x30\x34\x2c\x38\
+\x2e\x32\x38\x37\x0d\x0a\x09\x63\x30\x2d\x32\x2e\x33\x36\x36\x2c\
+\x31\x2e\x39\x31\x37\x2d\x34\x2e\x32\x38\x33\x2c\x34\x2e\x32\x38\
+\x32\x2d\x34\x2e\x32\x38\x33\x63\x32\x2e\x33\x36\x36\x2c\x30\x2c\
+\x34\x2e\x34\x37\x34\x2c\x32\x2e\x31\x30\x37\x2c\x34\x2e\x34\x37\
+\x34\x2c\x34\x2e\x34\x37\x34\x63\x30\x2c\x32\x2e\x33\x36\x35\x2d\
+\x31\x2e\x39\x31\x38\x2c\x34\x2e\x32\x38\x33\x2d\x34\x2e\x32\x38\
+\x33\x2c\x34\x2e\x32\x38\x33\x0d\x0a\x09\x43\x36\x2e\x31\x31\x31\
+\x2c\x31\x32\x2e\x37\x36\x2c\x34\x2e\x30\x30\x34\x2c\x31\x30\x2e\
+\x36\x35\x32\x2c\x34\x2e\x30\x30\x34\x2c\x38\x2e\x32\x38\x37\x7a\
+\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
+\x3e\x0d\x0a\
+\x00\x00\x04\xaa\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -1325,40 +1984,163 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x32\x30\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
-\x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
-\x35\x36\x2c\x34\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\
-\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\
-\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\
-\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\
-\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\
-\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\
-\x2c\x34\x32\x32\x2e\x33\x39\x39\x0d\x0a\x09\x09\x09\x63\x2d\x39\
-\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\
-\x37\x34\x2e\x38\x38\x32\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\x31\
-\x36\x36\x2e\x33\x39\x39\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\
-\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\
-\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\
-\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\
-\x2e\x33\x39\x39\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\x39\
-\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x6c\
+\x3d\x22\x43\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
+\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
+\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\
+\x3d\x22\x32\x34\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\
+\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\
+\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\
+\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\
+\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\
+\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
+\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\
+\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\
+\x2c\x31\x34\x2e\x37\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\
+\x30\x2e\x34\x37\x34\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\
+\x34\x2d\x30\x2e\x32\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\
+\x30\x6c\x35\x2e\x33\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\
+\x37\x34\x38\x2c\x34\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\
+\x2e\x39\x32\x32\x2c\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\
+\x0d\x0a\x09\x63\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\
+\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\
+\x2c\x31\x2e\x34\x31\x32\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\
+\x33\x2e\x33\x37\x38\x2c\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\
+\x33\x2c\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\
+\x39\x39\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x0d\x0a\
+\x09\x43\x36\x2e\x32\x36\x39\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\
+\x2e\x39\x39\x34\x2c\x31\x34\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\
+\x2c\x31\x34\x2e\x37\x35\x7a\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\
+\x31\x34\x2e\x37\x34\x38\x4c\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\
+\x6c\x2d\x35\x2e\x30\x36\x2d\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\
+\x34\x31\x33\x2d\x30\x2e\x33\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\
+\x30\x2e\x33\x33\x2d\x31\x2e\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\
+\x0d\x0a\x09\x63\x2d\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\
+\x2d\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2c\x30\x2e\x30\x38\
+\x33\x2c\x31\x2e\x34\x31\x32\x4c\x31\x36\x2e\x39\x39\x35\x2c\x31\
+\x30\x6c\x2d\x33\x2e\x36\x35\x39\x2c\x33\x2e\x32\x35\x32\x63\x2d\
+\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\x37\x2d\x30\x2e\x34\x35\
+\x2c\x30\x2e\x39\x39\x39\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\
+\x31\x32\x43\x31\x33\x2e\x34\x35\x2c\x31\x34\x2e\x38\x38\x37\x2c\
+\x31\x33\x2e\x37\x32\x35\x2c\x31\x35\x2c\x31\x34\x2c\x31\x35\x0d\
+\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\x2c\x31\x35\x2c\x31\x34\x2e\
+\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\x37\x2c\x31\x34\x2e\x36\x36\
+\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\x20\x4d\x39\x2e\x39\x38\x36\
+\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\x2d\x31\x32\x63\x30\x2e\x30\
+\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\x30\x2e\x32\x37\x37\x2d\x31\
+\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\x2d\x31\x2e\x31\x35\x31\x0d\
+\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\x30\x2e\x30\x39\x32\x2d\
+\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\x37\x2d\x31\x2e\x31\x35\
+\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\x31\x32\x63\x2d\x30\x2e\
+\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\x30\x2e\x32\x37\x37\x2c\
+\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\x2c\x31\x2e\x31\x35\x31\
+\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\x39\x39\x36\x2c\x38\x2e\
+\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\x30\x31\x2c\x31\x37\x0d\
+\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\x2c\x39\x2e\x39\x30\
+\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\x39\x38\x36\x2c\x31\
+\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\
+\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x05\xd4\
 \x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\
+\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\
+\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x34\x33\x2e\x39\x30\x33\
+\x32\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x34\x37\x2e\x33\x30\
+\x31\x37\x20\x33\x32\x2e\x31\x32\x20\x2d\x34\x37\x2e\x33\x30\x31\
+\x37\x43\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x34\x37\x2e\x33\
+\x30\x31\x37\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x34\x33\x2e\
+\x39\x30\x33\x32\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\
+\x2e\x37\x31\x30\x39\x43\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
+\x33\x35\x2e\x35\x31\x38\x35\x20\x31\x39\x2e\x35\x34\x33\x31\x20\
+\x2d\x33\x32\x2e\x31\x32\x20\x33\x32\x2e\x31\x32\x20\x2d\x33\x32\
+\x2e\x31\x32\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x33\x32\
+\x2e\x31\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x35\x2e\
+\x35\x31\x38\x35\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\
+\x2e\x37\x31\x30\x39\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\
+\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\
+\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\
+\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\
+\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
+\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\
+\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
+\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\
+\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\
+\x68\x20\x64\x3d\x27\x4d\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
+\x33\x39\x2e\x37\x31\x30\x39\x4c\x20\x39\x2e\x33\x34\x37\x34\x32\
+\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x39\x2e\x33\x34\x37\
+\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\x20\x39\x2e\x33\
+\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\x2e\
+\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\
+\x2e\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\
+\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x2e\x31\x35\x35\x31\
+\x31\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x31\x2e\x37\x35\x36\
+\x35\x36\x20\x33\x32\x2e\x31\x32\x20\x2d\x31\x2e\x37\x35\x36\x35\
+\x36\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x31\x2e\x37\x35\
+\x36\x35\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x35\x2e\x31\
+\x35\x35\x31\x31\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x39\x2e\
+\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\
+\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\
+\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x27\x20\x66\x69\x6c\x6c\x3d\
+\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\
+\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
+\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\
+\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\
+\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\
+\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\
+\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\
+\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
+\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\
+\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\
+\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\
+\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\
+\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\
+\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\x20\x35\x34\x2e\x38\
+\x39\x32\x36\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\x34\x34\x2e\
+\x36\x39\x36\x39\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x33\x32\
+\x2e\x31\x32\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x43\x20\x31\x39\
+\x2e\x35\x34\x33\x31\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x39\
+\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\
+\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\
+\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\
+\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\
+\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\
+\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\
+\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\
+\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\
+\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\
+\x76\x67\x3e\
+\x00\x00\x03\x46\
+\x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
@@ -1384,107 +2166,43 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x0d\x0a\x09\x09\x3c\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x37\x38\
-\x2e\x38\x34\x36\x22\x20\x79\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
-\x69\x78\x28\x2d\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\
-\x37\x31\x20\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\
-\x31\x20\x32\x32\x34\x2e\x33\x34\x37\x36\x20\x36\x33\x31\x2e\x31\
-\x34\x39\x38\x29\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\
-\x2e\x30\x38\x35\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x35\
-\x34\x2e\x30\x34\x39\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\
-\x20\x64\x3d\x22\x4d\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\
-\x33\x39\x33\x6c\x2d\x34\x38\x2e\x31\x31\x35\x2d\x34\x38\x2e\x31\
-\x31\x34\x63\x2d\x31\x31\x2e\x37\x32\x33\x2d\x31\x31\x2e\x37\x32\
-\x34\x2d\x33\x31\x2e\x35\x35\x38\x2d\x31\x30\x2e\x38\x39\x36\x2d\
-\x34\x34\x2e\x33\x30\x34\x2c\x31\x2e\x38\x35\x6c\x2d\x34\x35\x2e\
-\x32\x30\x32\x2c\x34\x35\x2e\x32\x30\x33\x6c\x39\x30\x2e\x35\x36\
-\x39\x2c\x39\x30\x2e\x35\x36\x38\x6c\x34\x35\x2e\x32\x30\x32\x2d\
-\x34\x35\x2e\x32\x30\x32\x0d\x0a\x09\x09\x43\x34\x38\x32\x2e\x36\
-\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\x32\x2c\x34\x38\x33\x2e\x34\
-\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\x36\x2c\x34\x37\x31\x2e\x37\
-\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\
-\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
-\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\x33\x2e\x32\x35\x32\x20\
-\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\x2e\x37\x33\x37\x2c\x34\
-\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x04\x4e\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\
+\x2c\x33\x38\x36\x2e\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\
+\x6c\x31\x33\x30\x2e\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\
+\x31\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\
+\x2c\x30\x2d\x35\x30\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\
+\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\
+\x39\x2c\x30\x4c\x32\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\
+\x35\x2e\x34\x2c\x37\x34\x2e\x35\x0d\x0a\x09\x63\x2d\x31\x34\x2e\
+\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\
+\x2d\x35\x30\x2e\x39\x2c\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\
+\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\
+\x30\x2e\x39\x4c\x32\x30\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\
+\x2e\x35\x2c\x33\x38\x36\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\
+\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\
+\x35\x30\x2e\x39\x0d\x0a\x09\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\
+\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\
+\x2c\x30\x4c\x32\x35\x36\x2c\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\
+\x2e\x36\x2c\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\
+\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\
+\x39\x2c\x30\x43\x34\x35\x31\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\
+\x34\x35\x31\x2e\x35\x2c\x34\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\
+\x35\x2c\x33\x38\x36\x2e\x36\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
+\x00\x00\x00\x6c\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
-\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
-\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
-\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
-\x32\x38\x31\x4c\x20\x33\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\
-\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\
-\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\
-\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\
-\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\
-\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\
-\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
-\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
-\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
-\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
-\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\
-\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\
-\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\
-\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
-\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
-\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
-\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
-\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\
-\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\
-\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\
-\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
-\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\
-\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\
-\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\
-\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\
-\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
-\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\
-\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\
-\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
-\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
-\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
+\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
+\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\
+\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\
+\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\
+\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x02\xf7\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1535,57 +2253,6 @@
 \x33\x38\x2e\x33\x2c\x34\x33\x34\x2e\x33\x2c\x32\x32\x34\x2c\x34\
 \x31\x37\x2e\x34\x2c\x32\x32\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\
 \x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x0c\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\
-\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\
-\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\
-\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\
-\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\
-\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\
-\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
-\x4d\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\
-\x2e\x34\x33\x35\x2c\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\
-\x30\x33\x2d\x31\x2e\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\
-\x2e\x36\x31\x2c\x31\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\
-\x35\x2d\x30\x2e\x36\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\
-\x34\x38\x36\x2c\x30\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0d\x0a\
-\x09\x63\x30\x2e\x36\x31\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\
-\x34\x38\x38\x2d\x30\x2e\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\
-\x30\x2e\x32\x37\x6c\x32\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\
-\x6c\x35\x2e\x39\x31\x31\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\
-\x30\x37\x2d\x30\x2e\x36\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\
-\x2e\x38\x35\x32\x2c\x31\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\
-\x0d\x0a\x09\x63\x30\x2e\x36\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\
-\x30\x2e\x38\x35\x34\x2c\x31\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\
-\x36\x2c\x31\x2e\x39\x32\x4c\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\
-\x33\x34\x63\x2d\x30\x2e\x32\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\
-\x30\x2e\x36\x36\x31\x2c\x30\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\
-\x2c\x30\x2e\x36\x35\x36\x43\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\
-\x39\x39\x38\x2c\x38\x2e\x33\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\
-\x2c\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x03\xf5\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1652,576 +2319,6 @@
 \x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\
 \x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\
 \x67\x3e\x0d\x0a\
-\x00\x00\x03\x22\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x22\x32\x35\x36\x22\
-\x20\x63\x79\x3d\x22\x32\x38\x30\x22\x20\x72\x3d\x22\x36\x33\x22\
-\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\
-\x34\x30\x2c\x39\x36\x68\x2d\x38\x38\x6c\x2d\x33\x32\x2d\x33\x32\
-\x48\x31\x39\x32\x6c\x2d\x33\x32\x2c\x33\x32\x48\x37\x32\x63\x2d\
-\x32\x32\x2e\x30\x39\x32\x2c\x30\x2d\x34\x30\x2c\x31\x37\x2e\x39\
-\x30\x38\x2d\x34\x30\x2c\x34\x30\x76\x32\x37\x32\x63\x30\x2c\x32\
-\x32\x2e\x30\x39\x32\x2c\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2c\
-\x34\x30\x2c\x34\x30\x68\x33\x36\x38\x63\x32\x32\x2e\x30\x39\x32\
-\x2c\x30\x2c\x34\x30\x2d\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2d\
-\x34\x30\x0d\x0a\x09\x09\x56\x31\x33\x36\x43\x34\x38\x30\x2c\x31\
-\x31\x33\x2e\x39\x30\x38\x2c\x34\x36\x32\x2e\x30\x39\x32\x2c\x39\
-\x36\x2c\x34\x34\x30\x2c\x39\x36\x7a\x20\x4d\x32\x35\x36\x2c\x33\
-\x39\x32\x63\x2d\x36\x31\x2e\x38\x35\x35\x2c\x30\x2d\x31\x31\x32\
-\x2d\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2d\x31\x31\x32\x73\
-\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2c\x31\x31\x32\x2d\x31\
-\x31\x32\x73\x31\x31\x32\x2c\x35\x30\x2e\x31\x34\x35\x2c\x31\x31\
-\x32\x2c\x31\x31\x32\x0d\x0a\x09\x09\x53\x33\x31\x37\x2e\x38\x35\
-\x35\x2c\x33\x39\x32\x2c\x32\x35\x36\x2c\x33\x39\x32\x7a\x22\x2f\
-\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
-\x0a\
-\x00\x00\x02\xb7\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x35\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
-\x6e\x74\x73\x3d\x22\x34\x30\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\
-\x20\x33\x37\x35\x2e\x32\x30\x32\x2c\x31\x30\x37\x20\x32\x35\x36\
-\x2c\x32\x32\x36\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
-\x2c\x31\x30\x37\x20\x31\x30\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\
-\x20\x32\x32\x36\x2e\x32\x30\x32\x2c\x32\x35\x36\x20\x31\x30\x37\
-\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
-\x2c\x34\x30\x35\x20\x32\x35\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\
-\x20\x0d\x0a\x09\x09\x09\x33\x37\x35\x2e\x32\x30\x32\x2c\x34\x30\
-\x35\x20\x34\x30\x35\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x32\x38\
-\x35\x2e\x37\x39\x38\x2c\x32\x35\x36\x20\x09\x09\x22\x2f\x3e\x0d\
-\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x79\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x67\x3e\x0d\x0a\x09\x09\x09\x3c\x70\x6f\x6c\
-\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x38\x36\
-\x2e\x33\x30\x31\x2c\x33\x33\x39\x2e\x38\x39\x33\x20\x39\x36\x2c\
-\x32\x34\x39\x2e\x34\x36\x31\x20\x36\x34\x2c\x32\x37\x39\x2e\x39\
-\x36\x38\x20\x31\x38\x36\x2e\x33\x30\x31\x2c\x34\x30\x32\x20\x34\
-\x34\x38\x2c\x31\x34\x30\x2e\x35\x30\x36\x20\x34\x31\x36\x2c\x31\
-\x31\x30\x20\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x09\x3c\x2f\x67\
-\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\
-\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\xeb\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x67\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
-\x4d\x32\x35\x36\x2c\x31\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\
-\x2d\x31\x34\x35\x2e\x37\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\
-\x31\x32\x38\x63\x36\x37\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\
-\x34\x2c\x31\x32\x38\x2c\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\
-\x2e\x39\x2c\x30\x2c\x31\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\
-\x32\x32\x34\x2d\x31\x32\x36\x2e\x36\x0d\x0a\x09\x09\x43\x34\x32\
-\x38\x2e\x32\x2c\x31\x39\x38\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\
-\x31\x32\x38\x2c\x32\x35\x36\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\
-\x36\x2c\x33\x34\x37\x2e\x33\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\
-\x38\x39\x2e\x36\x2d\x34\x31\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\
-\x33\x63\x30\x2d\x35\x30\x2e\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\
-\x2e\x33\x2c\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\
-\x36\x2c\x34\x31\x2c\x38\x39\x2e\x36\x2c\x39\x31\x2e\x33\x0d\x0a\
-\x09\x09\x43\x33\x34\x35\x2e\x36\x2c\x33\x30\x36\x2e\x34\x2c\x33\
-\x30\x35\x2e\x34\x2c\x33\x34\x37\x2e\x33\x2c\x32\x35\x36\x2c\x33\
-\x34\x37\x2e\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\
-\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\
-\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\x32\x2e\x39\x2d\x31\x35\
-\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\x37\x63\x2d\x32\x2e\x35\
-\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\x2d\x37\x2e\x36\x2d\x30\
-\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\x2d\x35\x32\x2e\x33\x2c\
-\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x63\x30\
-\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\x2c\x35\x33\x2e\x33\x2c\
-\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0d\x0a\x09\x09\x09\x73\x35\
-\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\x2e\x33\x2d\x35\x33\
-\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\x32\x2d\x34\x2e\x36\
-\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\x2e\x35\x2c\x34\x2e\
-\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\x31\x39\x2e\x38\x2c\
-\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\x35\x36\x2c\x32\x35\
-\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\x2c\x32\x32\x34\x7a\
-\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\
-\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x01\xdd\
-\x00\
-\x00\x06\xe4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\x13\x29\xff\
-\x61\xba\xb7\x4a\xec\x17\xc4\xd4\xa6\xa6\x51\xfd\x21\xcb\x52\x9a\
-\x58\x6a\xea\xaa\xa7\x0a\xc3\x16\x50\x28\x20\x58\xc0\xce\xaf\xef\
-\xee\x92\x54\x51\x95\xfa\x18\xfb\xb0\x33\xda\x79\x6f\xde\xbc\x65\
-\x24\xa6\xd7\xfb\xdf\x39\x74\xa2\x6e\xb2\xb2\x08\x10\x27\x0c\x81\
-\x28\xa2\x32\xce\x8a\x24\x40\xad\xfc\x85\xc7\xe8\xfa\xd3\xe5\xc5\
-\xf4\x1d\xc6\xb0\x12\x85\xa8\x43\x59\xd6\x3e\x7c\x8e\xcb\x9d\x80\
-\x75\x9e\xb7\x8d\x34\x25\xe0\x1e\x71\x08\xb7\xe1\xeb\x76\x05\xcb\
-\x7d\x55\xd6\x12\x36\x79\x9b\xe0\x75\x01\xc4\x14\xb7\xc3\x10\x1f\
-\x3c\xc2\x18\xcc\xda\x2c\x8f\x81\xbd\x07\xc0\xd8\xe8\x2f\xee\xe6\
-\xf7\x3f\x36\x4b\x68\xba\x04\x36\xdf\x66\x37\xeb\x39\x20\x4c\xe9\
-\x77\x77\x4e\xe9\xe2\x7e\x61\x24\x38\xe1\x94\x2e\x6f\x11\xa0\x54\
-\xca\xca\xa7\xb4\xef\x7b\xd2\xbb\xa4\xac\x13\xba\xaa\xc3\x2a\xcd\
-\xa2\x86\x2a\x22\xd5\x44\xd5\x44\x95\x18\xe7\x24\x96\x31\xd2\x33\
-\xb4\xf4\x8b\xa7\x72\x04\x59\x1c\xa0\x9b\xf0\x20\xea\x9f\xea\xa2\
-\xbe\x44\xd1\x04\xaf\x48\x3b\x8c\x31\x2d\xf5\x44\xf1\xf7\x79\x56\
-\x3c\xbc\x46\xe4\x93\xc9\x84\x1a\x54\x51\x03\xc4\xaa\x3d\x82\xc3\
-\x90\x2f\x2f\x2c\xe8\xb3\x58\xa6\x01\x1a\x71\x47\x03\xa9\xc8\x92\
-\x54\xfe\xbd\x76\x99\xe8\x67\xa5\xee\x02\x06\xaa\xa6\x0f\x82\x46\
-\x1e\x72\x11\x20\x51\x84\xbb\x5c\xe0\x5d\x18\x3d\x24\x75\xd9\x16\
-\xb1\x5f\x88\x1e\x5e\x30\x3f\x1a\x6f\x7e\x53\x85\x91\xa2\x57\xb5\
-\x68\x44\xdd\x09\xf3\xea\x44\x05\x6b\x88\xd6\xb4\x0a\x65\x0a\xea\
-\xd1\x5f\xb8\xc7\x6c\x3e\x72\x89\x1b\x31\xdb\x25\x1f\xb0\x6b\x7b\
-\x2a\xaa\xa3\x73\x8a\x47\x8c\x8c\x22\xac\x00\x9b\xe9\x22\x76\xf1\
-\x13\xdc\x0d\x10\x33\x98\xfb\xdc\xa0\x73\x6a\x00\xd3\xa2\x4b\xb6\
-\x51\xd4\x67\x6b\xe6\x3c\xea\x4f\x60\x59\xf4\x1f\x1f\xce\x78\x7c\
-\x16\x3e\xae\xb8\x77\x3a\x1f\x53\xfa\xff\x25\x39\x63\xfe\x26\xa6\
-\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x71\x6c\x49\x57\x6c\
-\xf2\x26\xa6\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x31\x2c\
-\xe9\x39\xaa\x7f\xb6\xca\x7f\x00\x99\x18\x96\x19\
-\x00\x00\x02\x7f\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
-\x3d\x22\x32\x38\x38\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\
-\x34\x35\x2e\x39\x20\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\
-\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\
-\x33\x37\x2e\x39\x20\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\
-\x31\x36\x20\x32\x32\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\
-\x2c\x33\x36\x36\x2e\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\
-\x2e\x39\x20\x33\x36\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0d\
-\x0a\x09\x34\x31\x36\x2c\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\
-\x20\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x00\x6c\
-\x3c\
-\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
-\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\
-\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\
-\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\
-\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x04\x64\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\x09\
-\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\
-\x37\x36\x63\x2d\x34\x34\x2e\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\
-\x30\x30\x31\x2c\x33\x36\x2d\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\
-\x63\x30\x2c\x34\x34\x2e\x30\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\
-\x2c\x38\x30\x2c\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x34\x34\
-\x2e\x30\x30\x35\x2c\x30\x2c\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\
-\x2e\x39\x39\x36\x2c\x37\x39\x2e\x39\x39\x39\x2d\x38\x30\x0d\x0a\
-\x09\x09\x09\x43\x33\x33\x35\x2e\x39\x39\x39\x2c\x32\x31\x32\x2c\
-\x33\x30\x30\x2e\x30\x30\x35\x2c\x31\x37\x36\x2c\x32\x35\x36\x2c\
-\x31\x37\x36\x7a\x20\x4d\x34\x34\x36\x2e\x39\x33\x38\x2c\x32\x33\
-\x34\x2e\x36\x36\x37\x63\x2d\x39\x2e\x36\x30\x35\x2d\x38\x38\x2e\
-\x35\x33\x31\x2d\x38\x31\x2e\x30\x37\x34\x2d\x31\x36\x30\x2d\x31\
-\x36\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x35\x39\x39\x56\x33\
-\x32\x68\x2d\x34\x32\x2e\x36\x36\x36\x76\x33\x33\x2e\x30\x36\x37\
-\x0d\x0a\x09\x09\x09\x63\x2d\x38\x38\x2e\x35\x33\x31\x2c\x39\x2e\
-\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\x31\x2e\x30\x36\x38\x2d\x31\
-\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x35\x39\x39\x48\x33\
-\x32\x76\x34\x32\x2e\x36\x36\x37\x68\x33\x33\x2e\x30\x36\x32\x63\
-\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\x35\x33\x31\x2c\x38\x31\x2e\
-\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\x36\x39\x2e\x36\x30\x34\x2c\
-\x31\x36\x39\x2e\x36\x30\x34\x56\x34\x38\x30\x68\x34\x32\x2e\x36\
-\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\x32\x0d\x0a\x09\x09\x09\x63\
-\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\x30\x34\x2c\x31\x36\x30\
-\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\x39\x2e\x36\x30\x35\x2d\
-\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\x30\x76\x2d\x34\x32\x2e\
-\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\x38\x7a\x20\x4d\x32\x35\
-\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\x2d\x38\x32\x2e\x31\x33\
-\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x36\x37\x2e\x31\
-\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\
-\x33\x33\x0d\x0a\x09\x09\x09\x63\x30\x2d\x38\x32\x2e\x31\x33\x36\
-\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\x2e\x33\x33\x33\x2c\
-\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\x33\x33\x63\
-\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\x39\x2e\x33\x33\x32\
-\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\x2e\x33\x33\x32\x2c\
-\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\x2e\x33\x33\x32\x2c\
-\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\
-\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\x2c\x34\x30\x35\x2e\
-\x33\x33\x33\x7a\x0d\x0a\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x3c\
-\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
-\x3e\x0d\x0a\
-\x00\x00\x02\xa1\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x53\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
-\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
-\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\
-\x79\x3d\x22\x35\x31\x32\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\
-\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\
-\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\
-\x32\x20\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\
-\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
-\x69\x78\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\
-\x29\x27\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\
-\x35\x2e\x31\x37\x33\x2c\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\
-\x32\x2c\x32\x2c\x32\x2e\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\
-\x2c\x31\x2e\x31\x2c\x30\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\
-\x68\x31\x32\x63\x31\x2e\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\
-\x39\x2c\x32\x2d\x32\x56\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\
-\x37\x33\x2c\x32\x7a\x20\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\
-\x35\x34\x39\x2d\x30\x2e\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\
-\x0d\x0a\x09\x43\x36\x2e\x34\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\
-\x34\x39\x2c\x36\x2c\x38\x56\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\
-\x33\x2c\x34\x68\x2d\x32\x76\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\
-\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\
-\x00\x00\x04\x1c\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
-\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
-\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
-\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
-\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
-\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
-\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
-\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
-\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
-\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
-\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
-\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
-\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
-\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
-\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\
-\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x33\x32\x2e\x31\x32\x27\x20\
-\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\
-\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\
-\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\
-\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\
-\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\
-\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
-\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
-\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
-\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\x32\x2e\
-\x31\x32\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x33\x32\x2e\x31\
-\x32\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\x27\x20\x66\x69\x6c\x6c\
-\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\
-\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\
-\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\
-\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\
-\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\
-\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x05\xca\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x34\x35\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\
-\x35\x63\x2d\x31\x34\x2e\x35\x38\x35\x2d\x31\x34\x2e\x35\x37\x37\
-\x2d\x33\x36\x2e\x30\x35\x34\x2d\x31\x35\x2e\x38\x39\x2d\x35\x30\
-\x2e\x36\x33\x39\x2d\x31\x2e\x33\x31\x32\x6c\x2d\x34\x31\x2e\x36\
-\x38\x37\x2c\x34\x31\x2e\x36\x36\x34\x63\x2d\x31\x30\x2e\x38\x35\
-\x32\x2c\x31\x30\x2e\x38\x33\x36\x2d\x32\x33\x2e\x39\x33\x2c\x31\
-\x30\x2e\x38\x35\x39\x2d\x33\x31\x2e\x35\x36\x34\x2c\x31\x2e\x38\
-\x35\x32\x0d\x0a\x09\x63\x2d\x35\x2e\x30\x35\x37\x2d\x35\x2e\x39\
-\x36\x38\x2d\x33\x2e\x30\x36\x31\x2d\x32\x34\x2e\x33\x37\x34\x2d\
-\x31\x2e\x36\x34\x34\x2d\x33\x36\x2e\x30\x34\x39\x6c\x32\x30\x2e\
-\x39\x30\x37\x2d\x31\x37\x31\x2e\x38\x34\x39\x63\x31\x2e\x38\x36\
-\x37\x2d\x31\x35\x2e\x33\x35\x33\x2d\x39\x2e\x30\x37\x2d\x33\x30\
-\x2e\x31\x38\x35\x2d\x32\x34\x2e\x34\x33\x2d\x33\x32\x2e\x30\x35\
-\x31\x0d\x0a\x09\x63\x2d\x31\x35\x2e\x33\x35\x38\x2d\x31\x2e\x38\
-\x36\x37\x2d\x32\x39\x2e\x33\x32\x32\x2c\x39\x2e\x39\x33\x39\x2d\
-\x33\x31\x2e\x31\x39\x31\x2c\x32\x35\x2e\x32\x38\x39\x4c\x32\x36\
-\x37\x2e\x33\x37\x2c\x32\x33\x36\x2e\x30\x32\x31\x63\x2d\x31\x2e\
-\x32\x30\x35\x2c\x33\x2e\x33\x35\x38\x2d\x33\x2e\x37\x39\x2c\x33\
-\x2e\x39\x33\x38\x2d\x34\x2e\x30\x38\x31\x2d\x30\x2e\x35\x38\x32\
-\x4c\x32\x35\x35\x2e\x34\x34\x2c\x36\x30\x0d\x0a\x09\x63\x30\x2d\
-\x31\x35\x2e\x34\x36\x35\x2d\x31\x32\x2e\x35\x34\x32\x2d\x32\x38\
-\x2d\x32\x38\x2e\x30\x31\x34\x2d\x32\x38\x63\x2d\x31\x35\x2e\x34\
-\x37\x33\x2c\x30\x2d\x32\x38\x2e\x30\x31\x35\x2c\x31\x32\x2e\x35\
-\x33\x35\x2d\x32\x38\x2e\x30\x31\x35\x2c\x32\x38\x6c\x2d\x30\x2e\
-\x35\x35\x32\x2c\x31\x37\x36\x2e\x37\x35\x32\x63\x30\x2e\x31\x34\
-\x36\x2c\x32\x2e\x30\x34\x2d\x31\x2e\x36\x30\x34\x2c\x32\x2e\x36\
-\x32\x34\x2d\x31\x2e\x39\x32\x2c\x30\x2e\x32\x39\x34\x4c\x31\x37\
-\x32\x2e\x30\x31\x36\x2c\x39\x39\x2e\x30\x37\x37\x0d\x0a\x09\x63\
-\x2d\x32\x2e\x37\x35\x2d\x31\x35\x2e\x32\x31\x39\x2d\x31\x37\x2e\
-\x33\x32\x33\x2d\x32\x36\x2e\x32\x30\x33\x2d\x33\x32\x2e\x35\x34\
-\x38\x2d\x32\x33\x2e\x34\x35\x33\x63\x2d\x31\x35\x2e\x32\x32\x37\
-\x2c\x32\x2e\x37\x34\x38\x2d\x32\x35\x2e\x33\x33\x39\x2c\x31\x38\
-\x2e\x31\x38\x37\x2d\x32\x32\x2e\x35\x39\x31\x2c\x33\x33\x2e\x34\
-\x30\x33\x6c\x32\x32\x2e\x31\x39\x33\x2c\x31\x36\x31\x2e\x34\x35\
-\x35\x0d\x0a\x09\x63\x30\x2e\x30\x32\x33\x2c\x32\x2e\x38\x37\x32\
-\x2d\x30\x2e\x39\x34\x31\x2c\x34\x2e\x35\x31\x33\x2d\x32\x2e\x33\
-\x30\x38\x2c\x30\x2e\x38\x33\x31\x6c\x2d\x33\x33\x2e\x31\x30\x39\
-\x2d\x38\x38\x2e\x35\x31\x37\x63\x2d\x35\x2e\x31\x38\x2d\x31\x34\
-\x2e\x35\x37\x32\x2d\x32\x31\x2e\x31\x39\x36\x2d\x32\x33\x2e\x30\
-\x36\x35\x2d\x33\x35\x2e\x37\x37\x36\x2d\x31\x37\x2e\x38\x38\x39\
-\x0d\x0a\x09\x63\x2d\x31\x34\x2e\x35\x37\x39\x2c\x35\x2e\x31\x37\
-\x37\x2d\x32\x32\x2e\x32\x30\x31\x2c\x32\x32\x2e\x30\x36\x31\x2d\
-\x31\x37\x2e\x30\x32\x33\x2c\x33\x36\x2e\x36\x33\x31\x6c\x35\x38\
-\x2e\x30\x34\x32\x2c\x31\x38\x39\x2e\x36\x32\x35\x63\x30\x2e\x33\
-\x30\x33\x2c\x31\x2e\x30\x34\x36\x2c\x30\x2e\x36\x32\x34\x2c\x32\
-\x2e\x30\x38\x35\x2c\x30\x2e\x39\x35\x33\x2c\x33\x2e\x31\x31\x38\
-\x6c\x30\x2e\x31\x32\x31\x2c\x30\x2e\x33\x39\x0d\x0a\x09\x63\x30\
-\x2e\x30\x31\x31\x2c\x30\x2e\x30\x33\x31\x2c\x30\x2e\x30\x32\x35\
-\x2c\x30\x2e\x30\x35\x38\x2c\x30\x2e\x30\x33\x35\x2c\x30\x2e\x30\
-\x38\x38\x43\x31\x32\x36\x2e\x30\x37\x39\x2c\x34\x34\x34\x2e\x32\
-\x33\x33\x2c\x31\x37\x32\x2e\x35\x37\x2c\x34\x38\x30\x2c\x32\x32\
-\x37\x2e\x34\x32\x37\x2c\x34\x38\x30\x63\x33\x35\x2e\x31\x31\x36\
-\x2c\x30\x2c\x37\x31\x2e\x35\x39\x31\x2d\x31\x32\x2e\x33\x37\x38\
-\x2c\x39\x39\x2e\x33\x35\x37\x2d\x33\x33\x2e\x36\x37\x32\x0d\x0a\
-\x09\x63\x30\x2e\x30\x30\x31\x2c\x30\x2c\x30\x2e\x30\x30\x33\x2d\
-\x30\x2e\x30\x30\x32\x2c\x30\x2e\x30\x30\x33\x2d\x30\x2e\x30\x30\
-\x32\x63\x32\x39\x2e\x39\x39\x2d\x31\x38\x2e\x30\x35\x31\x2c\x31\
-\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x2c\x31\
-\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x43\x34\
-\x36\x37\x2e\x34\x34\x35\x2c\x33\x31\x30\x2e\x34\x30\x32\x2c\x34\
-\x36\x35\x2e\x32\x36\x36\x2c\x32\x38\x38\x2e\x30\x38\x2c\x34\x35\
-\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\x35\x7a\x22\x2f\x3e\x0d\
-\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x03\x7c\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
@@ -2280,103 +2377,6 @@
 \x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\
 \x23\x30\x30\x30\x30\x30\x30\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
 \x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x01\x1c\
-\x3c\
-\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
-\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
-\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\
-\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\
-\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\
-\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\
-\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\
-\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\
-\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\
-\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\
-\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x04\xa2\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x34\
-\x2e\x31\x35\x35\x35\x36\x20\x2d\x33\x39\x2e\x32\x37\x34\x35\x20\
-\x36\x2e\x39\x38\x34\x37\x33\x20\x2d\x34\x36\x2e\x31\x30\x34\x37\
-\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
-\x39\x43\x20\x32\x37\x2e\x34\x34\x31\x31\x20\x2d\x36\x37\x2e\x37\
-\x32\x36\x39\x20\x35\x33\x2e\x33\x30\x32\x31\x20\x2d\x36\x31\x2e\
-\x35\x34\x30\x35\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\
-\x2e\x35\x30\x32\x32\x43\x20\x35\x37\x2e\x36\x32\x37\x20\x2d\x33\
-\x32\x2e\x36\x35\x31\x39\x20\x35\x30\x2e\x35\x38\x35\x36\x20\x2d\
-\x32\x33\x2e\x35\x36\x32\x31\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
-\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\
-\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\
-\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\
-\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\
-\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\
-\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\
-\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\
-\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\
-\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
-\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\
-\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\
-\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
-\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
-\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\
-\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
-\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\
-\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\
-\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\
-\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\
-\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
-\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
-\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
-\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
-\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\
-\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\
-\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\
-\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\
-\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\
-\x3e\
 "
 
 qt_resource_name = b"\
@@ -2384,235 +2384,235 @@
 \x00\x6f\xa6\x53\
 \x00\x69\
 \x00\x63\x00\x6f\x00\x6e\x00\x73\
-\x00\x1d\
-\x06\xec\xf4\xc7\
+\x00\x1b\
+\x0e\xb5\x68\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
+\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x08\x89\xfa\x47\
 \x00\x63\
-\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
-\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6f\x00\x72\x00\x69\x00\x67\x00\x69\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x09\
+\x0b\x9e\x89\x07\
+\x00\x63\
+\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x12\
+\x08\x79\x97\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\
+\x00\x67\
+\x00\x0d\
+\x05\x20\xce\x87\
+\x00\x6f\
+\x00\x70\x00\x65\x00\x6e\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x07\x0e\xc4\x87\
+\x00\x6f\
+\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x0a\
 \x0a\x2d\x1b\xc7\
 \x00\x63\
 \x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x16\
+\x01\xfb\x76\x27\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\
+\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0e\
+\x05\xed\x38\x67\
+\x00\x61\
+\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x11\
+\x0c\xa7\xc7\x47\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\
 \x00\x0a\
 \x0f\x68\x53\xe7\
 \x00\x61\
 \x00\x6e\x00\x63\x00\x68\x00\x6f\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0f\
-\x09\x76\x60\xc7\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x06\xe3\xaf\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x13\
+\x03\x24\x75\x47\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x65\x00\x66\x00\x72\x00\x65\x00\x73\x00\x68\x00\x2e\x00\x73\
+\x00\x76\x00\x67\
+\x00\x10\
+\x08\xe4\xaf\x47\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x0c\x57\x65\x47\
+\x00\x61\
+\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x17\
 \x06\xc6\x02\xa7\
 \x00\x74\
 \x00\x72\x00\x69\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x2d\x00\x73\x00\x74\x00\x72\x00\x6f\x00\x6b\x00\x65\x00\x64\x00\x2d\
 \x00\x31\x00\x35\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0a\
-\x01\xca\x6d\x87\
-\x00\x62\
-\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x1b\
-\x0e\xb5\x68\xe7\
+\x00\x1c\
+\x08\x8a\x79\x07\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
-\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x08\xc8\x55\xe7\
+\x00\x73\
+\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x0b\x07\x57\xa7\
+\x00\x65\
+\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x19\
+\x0a\x43\x45\xc7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x66\x00\x6f\x00\x72\
+\x00\x77\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x12\
+\x0c\x5e\xd4\xa7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
+\x00\x67\
+\x00\x17\
+\x07\x87\x48\x27\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x6f\x00\x70\
+\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x1d\
+\x06\xec\xf4\xc7\
+\x00\x63\
+\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
+\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x11\
 \x01\x60\xbc\x47\
 \x00\x73\
 \x00\x6f\x00\x63\x00\x69\x00\x61\x00\x6c\x00\x2d\x00\x70\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \
-\x00\x14\
-\x0f\xa5\xe0\xc7\
-\x00\x6d\
-\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\
-\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x05\xa8\x57\x87\
-\x00\x63\
-\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x13\
-\x03\x24\x75\x47\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x65\x00\x66\x00\x72\x00\x65\x00\x73\x00\x68\x00\x2e\x00\x73\
-\x00\x76\x00\x67\
+\x00\x07\
+\x0c\xf8\x5a\x07\
+\x00\x65\
+\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x12\
 \x08\x55\xef\xc7\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
 \x00\x67\
-\x00\x0f\
-\x04\xf2\xa7\x87\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x12\
-\x04\xb2\x21\x47\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x65\x00\x78\x00\x70\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\
-\x00\x67\
-\x00\x16\
-\x01\xfb\x76\x27\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\
-\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x0c\xf7\x55\x87\
+\x00\x74\
+\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x19\
 \x0f\xef\x7b\xe7\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2d\x00\x70\x00\x61\x00\x6c\
 \x00\x65\x00\x74\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x19\
-\x0a\x43\x45\xc7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x66\x00\x6f\x00\x72\
-\x00\x77\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x17\
-\x07\x87\x48\x27\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x6f\x00\x70\
-\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x10\
 \x04\xa9\x22\xc7\
 \x00\x66\
 \x00\x69\x00\x6c\x00\x6c\x00\x65\x00\x64\x00\x62\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0f\
-\x07\x0e\xc4\x87\
-\x00\x6f\
-\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0e\
-\x05\xed\x38\x67\
-\x00\x61\
-\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x1c\
-\x08\x8a\x79\x07\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
-\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x0b\x07\x57\xa7\
-\x00\x65\
-\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x11\
-\x0c\xa7\xc7\x47\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\
-\x00\x0e\
-\x0f\xcb\xd5\xc7\
-\x00\x70\
-\x00\x6c\x00\x75\x00\x73\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x09\
-\x0b\x9e\x89\x07\
-\x00\x63\
-\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x1c\
-\x04\x66\xe1\x67\
-\x00\x63\
-\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
-\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x12\
-\x08\x79\x97\xe7\
+\x04\xb2\x21\x47\
 \x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x65\x00\x78\x00\x70\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\
 \x00\x67\
+\x00\x08\
+\x08\xf7\x57\x07\
+\x00\x67\
+\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x11\
 \x0c\xdb\x38\xe7\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \
-\x00\x10\
-\x08\xe4\xaf\x47\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x07\
-\x0c\xf8\x5a\x07\
-\x00\x65\
-\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x04\xf2\xa7\x87\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x14\
+\x0f\xa5\xe0\xc7\
+\x00\x6d\
+\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\
+\x00\x73\x00\x76\x00\x67\
 \x00\x08\
-\x08\xf7\x57\x07\
-\x00\x67\
-\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x0c\x57\x65\x47\
-\x00\x61\
-\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x05\xa8\x57\x87\
+\x00\x63\
+\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0a\
+\x01\xca\x6d\x87\
+\x00\x62\
+\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x09\x76\x60\xc7\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x15\
 \x0f\xc4\x59\xe7\
 \x00\x73\
 \x00\x75\x00\x62\x00\x64\x00\x69\x00\x72\x00\x65\x00\x63\x00\x74\x00\x6f\x00\x72\x00\x79\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\
 \x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x12\
-\x0c\x5e\xd4\xa7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
-\x00\x67\
-\x00\x08\
-\x08\xc8\x55\xe7\
-\x00\x73\
-\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x08\x89\xfa\x47\
+\x00\x0e\
+\x0f\xcb\xd5\xc7\
+\x00\x70\
+\x00\x6c\x00\x75\x00\x73\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x1c\
+\x04\x66\xe1\x67\
 \x00\x63\
-\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6f\x00\x72\x00\x69\x00\x67\x00\x69\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x06\xe3\xaf\xe7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
+\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x0a\
 \x0a\xc8\x62\x67\
 \x00\x63\
 \x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x0c\xf7\x55\x87\
-\x00\x74\
-\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0d\
-\x05\x20\xce\x87\
-\x00\x6f\
-\x00\x70\x00\x65\x00\x6e\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 "
 
 qt_resource_struct_v1 = b"\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x29\x00\x00\x00\x02\
-\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x19\x8d\
-\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x01\x00\x00\x10\x65\
-\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x37\x6a\
-\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x29\x87\
-\x00\x00\x04\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xed\
-\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x00\x44\xed\
-\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x34\x30\
-\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x57\
-\x00\x00\x06\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x89\xa2\
-\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x24\xd9\
-\x00\x00\x03\x62\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x53\
-\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\
-\x00\x00\x05\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x34\
+\x00\x00\x03\xba\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x94\
+\x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x7a\x42\
+\x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x00\x19\x83\
+\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x5e\
+\x00\x00\x05\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x86\xcf\
+\x00\x00\x04\x6e\x00\x01\x00\x00\x00\x01\x00\x00\x62\xf8\
+\x00\x00\x04\x94\x00\x00\x00\x00\x00\x01\x00\x00\x65\x1d\
+\x00\x00\x04\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x6c\xf3\
+\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xa6\
+\x00\x00\x05\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x75\x94\
+\x00\x00\x01\x44\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x04\
+\x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\x32\x88\
+\x00\x00\x01\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x24\x90\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xaa\
+\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x12\x4c\
+\x00\x00\x03\x46\x00\x00\x00\x00\x00\x01\x00\x00\x47\x54\
+\x00\x00\x03\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x5a\x07\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x80\
+\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x03\x50\
+\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x56\
+\x00\x00\x02\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x56\
+\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x88\
+\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x00\x68\x57\
+\x00\x00\x05\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x80\x1a\
+\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x16\x8d\
+\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x40\x6b\
+\x00\x00\x06\x32\x00\x00\x00\x00\x00\x01\x00\x00\x8a\xc8\
+\x00\x00\x02\xce\x00\x00\x00\x00\x00\x01\x00\x00\x3c\xfb\
+\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x07\x70\
+\x00\x00\x02\x20\x00\x00\x00\x00\x00\x01\x00\x00\x30\x05\
+\x00\x00\x03\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x42\xec\
+\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xd1\
+\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x38\
+\x00\x00\x04\x20\x00\x00\x00\x00\x00\x01\x00\x00\x5c\xad\
+\x00\x00\x03\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x56\x18\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x03\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x47\x12\
-\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x41\x97\
-\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xb1\
-\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x62\xe6\
-\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x14\
-\x00\x00\x03\x84\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x20\
-\x00\x00\x05\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x78\x6f\
-\x00\x00\x04\xca\x00\x00\x00\x00\x00\x01\x00\x00\x68\xc7\
-\x00\x00\x05\x04\x00\x01\x00\x00\x00\x01\x00\x00\x6f\x33\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x08\x4d\
-\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x03\xea\
-\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x16\
-\x00\x00\x05\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
-\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x51\x20\
-\x00\x00\x04\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5b\xdd\
-\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x71\x14\
-\x00\x00\x05\x70\x00\x00\x00\x00\x00\x01\x00\x00\x74\x07\
-\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\x90\
-\x00\x00\x04\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x66\x0c\
-\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x88\x82\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x44\
-\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x16\x3d\
-\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xe0\
-\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x21\x11\
-\x00\x00\x05\x40\x00\x00\x00\x00\x00\x01\x00\x00\x73\x97\
-\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x58\xe2\
-\x00\x00\x02\x74\x00\x00\x00\x00\x00\x01\x00\x00\x39\xeb\
+\x00\x00\x01\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x23\x23\
+\x00\x00\x05\x20\x00\x00\x00\x00\x00\x01\x00\x00\x71\xcc\
+\x00\x00\x05\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x83\x64\
+\x00\x00\x05\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x83\xd4\
+\x00\x00\x04\x36\x00\x00\x00\x00\x00\x01\x00\x00\x5d\xcd\
 "
 
 qt_resource_struct_v2 = b"\
@@ -2620,88 +2620,88 @@
 \x00\x00\x00\x00\x00\x00\x00\x00\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x29\x00\x00\x00\x02\
 \x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x19\x8d\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x01\x00\x00\x10\x65\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x37\x6a\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x29\x87\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xed\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x00\x44\xed\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x34\x30\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x57\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x06\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x89\xa2\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x24\xd9\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x62\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x53\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x05\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x34\
-\x00\x00\x01\x71\x14\x51\x77\x38\
+\x00\x00\x03\xba\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x94\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x7a\x42\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x00\x19\x83\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x5e\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x05\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x86\xcf\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\x6e\x00\x01\x00\x00\x00\x01\x00\x00\x62\xf8\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x04\x94\x00\x00\x00\x00\x00\x01\x00\x00\x65\x1d\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x6c\xf3\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xa6\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x75\x94\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x44\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x04\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\x32\x88\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x01\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x24\x90\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xaa\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x12\x4c\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x03\x46\x00\x00\x00\x00\x00\x01\x00\x00\x47\x54\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x03\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x5a\x07\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x80\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x03\x50\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x56\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x56\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x88\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x00\x68\x57\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x80\x1a\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x16\x8d\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x40\x6b\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x06\x32\x00\x00\x00\x00\x00\x01\x00\x00\x8a\xc8\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\xce\x00\x00\x00\x00\x00\x01\x00\x00\x3c\xfb\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x07\x70\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\x20\x00\x00\x00\x00\x00\x01\x00\x00\x30\x05\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x03\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x42\xec\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xd1\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x38\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x04\x20\x00\x00\x00\x00\x00\x01\x00\x00\x5c\xad\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x03\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x56\x18\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x47\x12\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x41\x97\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xb1\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x62\xe6\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x14\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x84\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x20\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x78\x6f\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\xca\x00\x00\x00\x00\x00\x01\x00\x00\x68\xc7\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x04\x00\x01\x00\x00\x00\x01\x00\x00\x6f\x33\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x08\x4d\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x03\xea\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x16\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x51\x20\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5b\xdd\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x71\x14\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x70\x00\x00\x00\x00\x00\x01\x00\x00\x74\x07\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\x90\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x66\x0c\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x88\x82\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x44\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x16\x3d\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xe0\
-\x00\x00\x01\x71\x14\x51\x77\x37\
-\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x21\x11\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x05\x40\x00\x00\x00\x00\x00\x01\x00\x00\x73\x97\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x58\xe2\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x02\x74\x00\x00\x00\x00\x00\x01\x00\x00\x39\xeb\
-\x00\x00\x01\x71\x14\x51\x77\x38\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x23\x23\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x05\x20\x00\x00\x00\x00\x00\x01\x00\x00\x71\xcc\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x83\x64\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x83\xd4\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x04\x36\x00\x00\x00\x00\x00\x01\x00\x00\x5d\xcd\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
 "
 
 qt_version = [int(v) for v in QtCore.qVersion().split('.')]

Modified: trunk/Master/texmf-dist/asymptote/GUI/setup.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/setup.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/setup.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,6 +8,6 @@
     version=xasyVersion.xasyVersion,
     author="Supakorn Rassameemasmuang, Orest Shardt, and John C. Bowman",
     description="User interface for Asymptote, a vector graphics language", 
-    url="http://asymptote.sourceforge.net",
+    url="https://asymptote.sourceforge.io",
     download_url="https://sourceforge.net/projects/asymptote/"
 )

Modified: trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -716,7 +716,7 @@
             image = Qg.QImage(file)
         elif fileformat == 'svg':
             if containsClip:
-                image = xs.SvgObject(file)
+                image = xs.SvgObject(self.asyengine.tempDirName+file)
             else:
                 image = Qs.QSvgRenderer(file)
                 assert image.isValid()
@@ -826,7 +826,7 @@
             for i in range(len(imageInfos)):
                 box, key, localCount, useClip = imageInfos[i]
                 l, b, r, t = [float(a) for a in box.split()]
-                name = "{:s}_{:d}.{:s}".format(self.asyengine.tempDirName, i, fileformat)
+                name = "_{:d}.{:s}".format(i, fileformat)
 
                 self.imageHandleQueue.put((name, fileformat, (l, -t, r, -b), i, key, localCount, useClip))
 
@@ -873,12 +873,15 @@
 
             n += 1
 
-        if text == "Error\n":
-            self.imageHandleQueue.put(("ERROR", fin.readline()))
+        if raw_text != "Error\n":
+            if text == "Error\n":
+                self.imageHandleQueue.put(("ERROR", fin.readline()))
+            else:
+                render()
+
+            self.asy2psmap = asyTransform(xu.listize(fin.readline().rstrip(),float))
         else:
-            render()
-
-        self.asy2psmap = asyTransform(xu.listize(fin.readline().rstrip(),float))
+            self.asy2psmap = identity()
         self.imageHandleQueue.put((None,))
         self.asyfied = True
 

Modified: trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,2 +1,2 @@
 #!/usr/bin/env python3
-xasyVersion = "2.65"
+xasyVersion = "2.69"

Modified: trunk/Master/texmf-dist/asymptote/animation.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/animation.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/animation.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -30,7 +30,7 @@
   string prefix;
   bool global; // If true, use a global scaling for all frames; this requires
   // extra memory since the actual shipout is deferred until all frames have
-  // been generated. 
+  // been generated.
 
   void operator init(string prefix="", bool global=true) {
     prefix=replace(stripdirectory(outprefix(prefix))," ","_");
@@ -37,7 +37,7 @@
     this.prefix=prefix;
     this.global=global;
   }
-  
+
   string basename(string prefix=stripextension(prefix)) {
     return "_"+prefix;
   }
@@ -57,7 +57,7 @@
     plain.shipout(name,f,format=format,view=false);
     files.push(name+"."+format);
   }
-  
+
   void add(picture pic=currentpicture, enclosure enclosure=NoBox) {
     if(global) {
       ++index;
@@ -64,7 +64,7 @@
       pictures.push(pic.copy());
     } else this.shipout(enclosure(pic.fit()));
   }
-  
+
   void purge(bool keep=settings.keep) {
     if(!keep) {
       for(int i=0; i < files.length; ++i)
@@ -130,7 +130,7 @@
     return s;
   }
 
-  bool pdflatex() 
+  bool pdflatex()
   {
     return latex() && pdf();
   }
@@ -143,13 +143,13 @@
     if(!pdflatex())
       abort("inline pdf animations require -tex pdflatex or -tex xelatex");
     if(settings.outformat != "") settings.outformat="pdf";
-    
+
     string filename=basename();
     string pdfname=filename+".pdf";
 
     if(global)
       export(filename,enclosure,multipage=multipage);
-    
+
     if(!keep) {
       exitfcn currentexitfunction=atexit();
       void exitfunction() {

Modified: trunk/Master/texmf-dist/asymptote/asy-keywords.el
===================================================================
--- trunk/Master/texmf-dist/asymptote/asy-keywords.el	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/asy-keywords.el	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,7 +2,7 @@
 ;; This file is automatically generated by asy-list.pl.
 ;; Changes will be overwritten.
 ;;
-(defvar asy-keywords-version "2.65")
+(defvar asy-keywords-version "2.69")
 
 (defvar asy-keyword-name '(
 and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator ))
@@ -11,7 +11,7 @@
 Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola int inversion key light line linefit marginT marker mass node object pair parabola patch path path3 pen picture point position positionedvector projection rational real revolution scaleT scientific segment side simplex slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
 
 (defvar asy-function-name '(
-AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _shipout _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asyc!
 ode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX d!
 rawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p!
  logaxiscoverage longitude lookup make3dgrid makeMappingArray makeNode makecircle makedraw makepen maketriangle map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo nosetpagesize notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchtree sec secondary!
 X secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplex simplexPhase1 simplexPhase2 simplexStandard simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox toplocation transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
+AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _shipout _strokepath _texpath aCos aSin aTan abort abs abs2 accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy!
  asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexB!
 oxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isometry isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location l!
 og log10 log1p logaxiscoverage longitude lookup make3dgrid makeMappingArray makeNode makecircle makedraw makepen maketriangle map mapArray mapTemplate margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search sea!
 rchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplex simplexInit simplexPhase1 simplexPhase2 simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox toplocation transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube type uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
 
 (defvar asy-variable-name '(
-Accent AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Blues Both BrBG Break BrickRed Brown BuGn BuPu BurlyWood BurntOrange CCW CMRmap CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion Dark2 DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite GnBu Gold Goldenrod Gray Green GreenYellow Greens Greys Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen OrRd Orange OrangeRed Oranges Orchid Ox Oy PC PRGn Paired PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Pastel1 Pastel2 Peach PeachPuff Periwinkle Peru PiYG PineGreen Pink Plum PowderBlue ProcessBlue PuBu PuBuGn PuOr PuRd Purple Purples RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna RdBu RdGy RdPu RdYlBu RdYlGn Red RedOrang!
 e RedViolet Reds Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Set1 Set2 Set3 Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow Spectral SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange YlGn YlGnBu YlOrBr YlOrRd ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen autumn axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize binary black blue bm bone bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brg brown bullet bwr byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cividis cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor cool coolwarm copper count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellip!
 senodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gist_earth gist_ncar gist_stern gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hot hsv hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf inferno infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep jet labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magma magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nipy_spectral nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plasma plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen seismic sequencereal settings signedtrailingzero simp!
 lex solid spinner spring springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor summer swap tab10 tab20 tab20b tab20c textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity twilight twilight_shifted undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize viridis vline white winter wistia wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))
+Accent AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Blues Both BrBG Break BrickRed Brown BuGn BuPu BurlyWood BurntOrange CCW CMRmap CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion Dark2 DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite GnBu Gold Goldenrod Gray Green GreenYellow Greens Greys Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen OrRd Orange OrangeRed Oranges Orchid Ox Oy PC PRGn Paired PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Pastel1 Pastel2 Peach PeachPuff Periwinkle Peru PiYG PineGreen Pink Plum PowderBlue ProcessBlue PuBu PuBuGn PuOr PuRd Purple Purples RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna RdBu RdGy RdPu RdYlBu RdYlGn Red !
 RedOrange RedViolet Reds Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Set1 Set2 Set3 Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow Spectral SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange YlGn YlGnBu YlOrBr YlOrRd ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen autumn axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize binary black blue bm bone bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brg brown bullet bwr byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cividis cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor cool coolwarm copper count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFu!
 zz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gist_earth gist_ncar gist_stern gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hot hsv hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf inferno infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep jet labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magma magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nipy_spectral nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plasma plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen seismic sequencereal settings signedtrailingz!
 ero simplex solid spinner spring springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor summer swap tab10 tab20 tab20b tab20c textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity twilight twilight_shifted undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize viridis vline white winter wistia wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))

Modified: trunk/Master/texmf-dist/asymptote/asy-mode.el
===================================================================
--- trunk/Master/texmf-dist/asymptote/asy-mode.el	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/asy-mode.el	2021-02-24 18:33:44 UTC (rev 57876)
@@ -102,7 +102,7 @@
 
 This package seems to work with XEmacs 21.4 but not all the features are available (in particular syntax highlighting).
 
-Report bugs to http://asymptote.sourceforge.net
+Report bugs to https://github.com/vectorgraphics/asymptote/issues
 
 Some variables can be customized: M-x customize-group <RET> asymptote <RET>."
 

Modified: trunk/Master/texmf-dist/asymptote/babel.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/babel.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/babel.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,4 +1,4 @@
-void babel(string s) 
+void babel(string s)
 {
   usepackage("babel",s);
 }

Modified: trunk/Master/texmf-dist/asymptote/bezulate.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/bezulate.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/bezulate.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,6 +1,6 @@
 // Bezier triangulation routines written by Orest Shardt, 2008.
 
-private real fuzz=sqrtEpsilon;
+private real fuzz=1e-6;
 real duplicateFuzz=1e-3; // Work around font errors.
 real maxrefinements=10;
 
@@ -106,29 +106,29 @@
       //if(direction == 0) // Try a random direction
       //  direction=expi(2pi*unitrand());
       //pair start=point(inners[curveIndex],0);
-      
+
       // find shortest distance between a node on the inner curve and a node
       // on the outer curve
-      
+
       real mindist = d;
       int inner_i = 0;
       int outer_i = 0;
       for(int ni = 0; ni < length(inners[curveIndex]); ++ni)
-      {
+        {
           for(int no = 0; no < length(outer); ++no)
-          {
+            {
               real dist = abs(point(inners[curveIndex],ni)-point(outer,no));
               if(dist < mindist)
-              {
+                {
                   inner_i = ni;
                   outer_i = no;
                   mindist = dist;
-              }
-          }
-      }
+                }
+            }
+        }
       pair start=point(inners[curveIndex],inner_i);
-      pair end = point(outer,outer_i);  
-      
+      pair end = point(outer,outer_i);
+
       // find first intersection of line segment with outer curve
       //real[][] ints=intersections(start,start+d*direction,outer);
       real[][] ints=intersections(start,end,outer);
@@ -140,7 +140,7 @@
       real earliestTime=1;
       for(int j=0; j < inners.length; ++j) {
         real[][] ints=intersections(end,start,inners[j]);
-        
+
         if(ints.length > 0 && ints[0][0] < earliestTime) {
           earliestTime=ints[0][0]; // time on end--start
           starttime=ints[0][1]; // time on inner curve
@@ -148,8 +148,8 @@
         }
       }
       start=point(inners[curveIndex],starttime);
-      
-      
+
+
       bool found_forward = false;
       real timeoffset_forward = 2;
       path portion_forward;
@@ -162,7 +162,7 @@
                               point(outer,endtime+timeoffset_forward)) == 2)
           {
             portion_forward = subpath(outer,endtime,endtime+timeoffset_forward)--start--cycle;
-            
+
             found_forward=true;
             // check if an inner curve is inside the portion
             for(int k = 0; found_forward && k < inners.length; ++k)
@@ -173,7 +173,7 @@
               }
           }
       }
-      
+
       bool found_backward = false;
       real timeoffset_backward = -2;
       path portion_backward;
@@ -197,29 +197,29 @@
       real timeoffset;
       path portion;
       if(found_forward && !found_backward)
-      {
-        timeoffset = timeoffset_forward;
-        portion = portion_forward;
-      }
-      else if(found_backward && !found_forward)
-      {
-        timeoffset = timeoffset_backward;
-        portion = portion_backward;
-      }
-      else // assert handles case of neither found
-      {
-        if(timeoffset_forward > -timeoffset_backward)
         {
           timeoffset = timeoffset_forward;
           portion = portion_forward;
         }
-        else
+      else if(found_backward && !found_forward)
         {
           timeoffset = timeoffset_backward;
           portion = portion_backward;
-         }
-      }
-      
+        }
+      else // assert handles case of neither found
+        {
+          if(timeoffset_forward > -timeoffset_backward)
+            {
+              timeoffset = timeoffset_forward;
+              portion = portion_forward;
+            }
+          else
+            {
+              timeoffset = timeoffset_backward;
+              portion = portion_backward;
+            }
+        }
+
       endtime=min(endtime,endtime+timeoffset);
       // or go from timeoffset+timeoffset_backward to timeoffset+timeoffset_forward?
       timeoffset=abs(timeoffset);

Modified: trunk/Master/texmf-dist/asymptote/binarytree.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/binarytree.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/binarytree.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -48,8 +48,8 @@
   int right_span,total_right_span;
   void update_spans();
 
-  // Get the horizontal span of the tree consisting of the current 
-  // node plus the whole subtree that is rooted at the right child 
+  // Get the horizontal span of the tree consisting of the current
+  // node plus the whole subtree that is rooted at the right child
   // (condensed mode)
   int getTotalRightSpan() {
     if(spans_calculated == false) {
@@ -59,8 +59,8 @@
     return total_right_span;
   }
 
-  // Get the horizontal span of the tree consisting of the current 
-  // node plus the whole subtree that is rooted at the left child 
+  // Get the horizontal span of the tree consisting of the current
+  // node plus the whole subtree that is rooted at the left child
   // (condensed mode)
   int getTotalLeftSpan() {
     if(spans_calculated == false) {
@@ -87,27 +87,27 @@
     return left_span;
   }
 
-  // Update all span figures for this node. 
+  // Update all span figures for this node.
   // condensed mode)
   update_spans=new void() {
-    if(spans_calculated == true)
-      return;
+                           if(spans_calculated == true)
+                             return;
 
-    left_span=0;
-    total_left_span=0;
-    right_span=0;
-    total_right_span=0;
+                           left_span=0;
+                           total_left_span=0;
+                           right_span=0;
+                           total_right_span=0;
 
-    if(left != null) {
-      left_span=left.getTotalRightSpan()+1;
-      total_left_span=left_span+left.getTotalLeftSpan();
-    }
+                           if(left != null) {
+                             left_span=left.getTotalRightSpan()+1;
+                             total_left_span=left_span+left.getTotalLeftSpan();
+                           }
 
-    if(right != null) {
-      right_span=right.getTotalLeftSpan()+1;
-      total_right_span=right_span+right.getTotalRightSpan();
-    }
-    spans_calculated=true;
+                           if(right != null) {
+                             right_span=right.getTotalLeftSpan()+1;
+                             total_right_span=right_span+right.getTotalRightSpan();
+                           }
+                           spans_calculated=true;
   };
 
   // set the left child of this node
@@ -134,20 +134,20 @@
     else
       return parent.getLevel()+1;
   }
-        
+
   // set the children of this binarytreeNode
   void setChildren(binarytreeNode left, binarytreeNode right) {
     setLeft(left);
     setRight(right);
   }
-        
-  // create a new binarytreeNode with key <key> 
+
+  // create a new binarytreeNode with key <key>
   static binarytreeNode binarytreeNode(int key) {
     binarytreeNode toReturn=new binarytreeNode;
     toReturn.key=key;
     return toReturn;
   }
-        
+
   // returns the height of the subtree rooted at this node.
   int getHeight() {
     if(left == null && right == null)
@@ -156,7 +156,7 @@
       return right.getHeight()+1;
     if(right == null)
       return left.getHeight()+1;
-                
+
     return max(left.getHeight(),right.getHeight())+1;
   }
 }
@@ -175,12 +175,12 @@
             int height, real minDist, real levelDist, real nodeDiameter,
             pen p=currentpen, bool condensed=false) {
   Label label=Label(math((string) node.key),pos);
-        
-  binarytreeNode left=node.left;        
+
+  binarytreeNode left=node.left;
   binarytreeNode right=node.right;
 
   // return the distance for two nodes at the given <level> when the
-  // containing tree has height <height> 
+  // containing tree has height <height>
   // and the minimal distance between two nodes is <minDist> .
   real getDistance(int level, int height, real minDist) {
     return(nodeDiameter+minDist)*2^(height-level);
@@ -205,15 +205,15 @@
   // arrow.
   void deferredDrawNodeConnection(pair parentPos, pair childPos) {
     pic.add(new void(frame f, transform t) {
-        pair start,end; 
-        // calculate connection path 
-        transform T=shift(nodeDiameter/2*unit(t*childPos-t*parentPos));  
-        path arr=(T*t*parentPos)--(inverse(T)*t*childPos);  
-        draw(f,PenMargin(arr,p).g,p,Arrow(5));  
-      }); 
+        pair start,end;
+        // calculate connection path
+        transform T=shift(nodeDiameter/2*unit(t*childPos-t*parentPos));
+        path arr=(T*t*parentPos)--(inverse(T)*t*childPos);
+        draw(f,PenMargin(arr,p).g,p,Arrow(5));
+      });
     pic.addPoint(parentPos);
     pic.addPoint(childPos);
-  } 
+  }
 
   if(left != null) {
     pair childPos;
@@ -238,13 +238,13 @@
     draw(pic,right,childPos,height,minDist,levelDist,nodeDiameter,p,condensed);
     deferredDrawNodeConnection(pos,childPos);
   }
-        
+
   picture obj;
   draw(obj,circle((0,0),nodeDiameter/2),p);
   label(obj,label,(0,0),p);
-        
+
   add(pic,obj,pos);
-        
+
   return label;
 }
 
@@ -270,18 +270,18 @@
 struct binarytree {
   binarytreeNode root;
   int[] keys;
-        
+
   // add the given <key> to the tree by searching for its place and
   // inserting it there.
   void addKey(int key) {
     binarytreeNode newNode=binarytreeNode(key);
-                
+
     if(root == null) {
       root=newNode;
       keys.push(key);
-      return; 
+      return;
     }
-                
+
     binarytreeNode n=root;
     while(n != null) {
       if(key < n.key) {
@@ -303,7 +303,7 @@
       }
     }
   }
-        
+
   // return the height of the tree
   int getHeight() {
     if(root == null)
@@ -311,7 +311,7 @@
     else
       return root.getHeight();
   }
-        
+
   // add all given keys to the tree sequentially
   void addSearchKeys(int[] keys) {
     for(int i=0; i < keys.length; ++i) {
@@ -321,7 +321,7 @@
         addKey(key);
     }
   }
-        
+
   binarytreeNode build(key[] keys, int[] ind) {
     if(ind[0] >= keys.length) return null;
     key k=keys[ind[0]];
@@ -369,9 +369,9 @@
           pen p=currentpen, bool condensed=false)
 {
   int[] keys=tree.getKeys();
-        
+
   // calculate the node diameter so that all keys fit into it
-  frame f; 
+  frame f;
   for(int i=0; i < keys.length; ++i)
     label(f,math(string(keys[i])),p);
 

Modified: trunk/Master/texmf-dist/asymptote/bsp.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/bsp.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/bsp.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -33,13 +33,13 @@
 
 picture operator cast(face f) {return f.pic;}
 face operator cast(path3 p) {return face(p);}
-  
+
 struct line {
   triple point;
   triple dir;
 }
 
-private line intersection(face a, face b) 
+private line intersection(face a, face b)
 {
   line L;
   L.point=intersectionpoint(a.normal,a.point,b.normal,b.point);
@@ -49,12 +49,12 @@
 
 struct half {
   pair[] left,right;
-  
+
   // Sort the points in the pair array z according to whether they lie on the
   // left or right side of the line L in the direction dir passing through P.
   // Points exactly on L are considered to be on the right side.
   // Also push any points of intersection of L with the path operator --(... z)
-  // onto each of the arrays left and right. 
+  // onto each of the arrays left and right.
   void operator init(pair dir, pair P ... pair[] z) {
     pair lastz;
     pair invdir=dir != 0 ? 1/dir : 0;
@@ -73,7 +73,7 @@
     }
   }
 }
-  
+
 struct splitface {
   face back,front;
 }
@@ -84,7 +84,7 @@
   splitface S;
 
   void nointersection() {
-    if(abs(dot(a.point-P.camera,a.normal)) >= 
+    if(abs(dot(a.point-P.camera,a.normal)) >=
        abs(dot(cut.point-P.camera,cut.normal))) {
       S.back=a;
       S.front=null;
@@ -113,7 +113,7 @@
     nointersection();
     return S;
   }
-    
+
   pair point=a.t*project(L.point,P);
   pair dir=a.t*project(L.point+L.dir,P)-point;
   pair invdir=dir != 0 ? 1/dir : 0;
@@ -122,7 +122,7 @@
 
   real t=intersect(apoint,P.camera,cut.normal,cut.point);
   bool rightfront=left ^ (t <= 0 || t >= 1);
-  
+
   face back=a, front=a.copy();
   pair max=max(a.fit);
   pair min=min(a.fit);
@@ -151,7 +151,7 @@
   bsp back;
   bsp front;
   face node;
-  
+
   // Construct the bsp.
   void operator init(face[] faces, projection P) {
     if(faces.length != 0) {
@@ -166,7 +166,7 @@
       this.back=bsp(back,P);
     }
   }
-  
+
   // Draw from back to front.
   void add(frame f) {
     if(back != null) back.add(f);
@@ -183,22 +183,22 @@
   face[] Faces=new face[n];
   for(int i=0; i < n; ++i)
     Faces[i]=faces[i].copy();
-  
+
   pic.add(new void (frame f, transform t, transform T,
-                                pair m, pair M) {
-                        // Fit all of the pictures so we know their exact sizes.
-                        face[] faces=new face[n];
-                        for(int i=0; i < n; ++i) {
-                          faces[i]=Faces[i].copy();
-                          face F=faces[i];
-                          F.t=t*T*F.pic.T;
-                          F.fit=F.pic.fit(t,T*F.pic.T,m,M);
-                        }
-    
-                        bsp bsp=bsp(faces,P);
-                        if(bsp != null) bsp.add(f);
+                    pair m, pair M) {
+            // Fit all of the pictures so we know their exact sizes.
+            face[] faces=new face[n];
+            for(int i=0; i < n; ++i) {
+              faces[i]=Faces[i].copy();
+              face F=faces[i];
+              F.t=t*T*F.pic.T;
+              F.fit=F.pic.fit(t,T*F.pic.T,m,M);
+            }
+
+            bsp bsp=bsp(faces,P);
+            if(bsp != null) bsp.add(f);
           });
-    
+
   for(int i=0; i < n; ++i) {
     picture F=Faces[i].pic;
     pic.userBox3(F.userMin3(), F.userMax3());

Modified: trunk/Master/texmf-dist/asymptote/colormap.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/colormap.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/colormap.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,7 +10,7 @@
 //    pen[] Palette = wistia.palette()
 //
 // There are two types of palettes. For a complete list see below:
-// 
+//
 // 1) The segmented palettes can be used as
 //      <name>.palette(int NColors=256, real gamma=1.)
 //         NColors are the number of colors in the palette
@@ -19,7 +19,7 @@
 // 2) The listed palettes can only be used as
 //      <name>.palette()
 //
-// Both functions return pen[] that can be used as a palette in the 
+// Both functions return pen[] that can be used as a palette in the
 // module palette.
 
 // list of palettes
@@ -112,7 +112,7 @@
 // SOURCE CODE
 //
 private real[] makeMappingArray(int N, triple[] data, real gamma=1.) {
-  real[] x; 
+  real[] x;
   real[] y0;
   real[] y1;
 
@@ -121,13 +121,13 @@
     y0.push(data[i].y);
     y1.push(data[i].z);
   };
-  
+
   x = x*(N-1);
-  real[] lut = new real[N]; 
+  real[] lut = new real[N];
   real[] xind = (N - 1) * uniform(0, 1, N-1) ** gamma;
   int[] ind = map(new int(real xi) {return search(x, xi);}, xind);
   ind = ind[1:N-1]; // note that the index is shifted from python
-  
+
   real[] dist = (xind[1:N-1] - x[ind])/(x[ind+1] - x[ind]);
 
   lut[1:N-1] = dist * (y0[ind+1] - y1[ind]) + y1[ind];
@@ -153,9 +153,9 @@
     real[] green = makeMappingArray(NColors, this.g, gamma);
     real[] blue  = makeMappingArray(NColors, this.b, gamma);
 
-    pen[] pal = 
-      sequence(new pen(int i) {return rgb(red[i], green[i], blue[i]);}, 
-        NColors);
+    pen[] pal =
+      sequence(new pen(int i) {return rgb(red[i], green[i], blue[i]);},
+               NColors);
 
     return pal;
   }
@@ -174,3717 +174,3717 @@
 // DATA
 //
 list_data Accent = list_data(new pen[] {
-  rgb (0.4980392156862745, 0.788235294117647, 0.4980392156862745) ,
-  rgb (0.7450980392156863, 0.6823529411764706, 0.8313725490196079) ,
-  rgb (0.9921568627450981, 0.7529411764705882, 0.5254901960784314) ,
-  rgb (1.0, 1.0, 0.6) ,
-  rgb (0.2196078431372549, 0.4235294117647059, 0.6901960784313725) ,
-  rgb (0.9411764705882353, 0.00784313725490196, 0.4980392156862745) ,
-  rgb (0.7490196078431373, 0.3568627450980392, 0.09019607843137253) ,
-  rgb (0.4, 0.4, 0.4)
-});
+    rgb (0.4980392156862745, 0.788235294117647, 0.4980392156862745) ,
+      rgb (0.7450980392156863, 0.6823529411764706, 0.8313725490196079) ,
+      rgb (0.9921568627450981, 0.7529411764705882, 0.5254901960784314) ,
+      rgb (1.0, 1.0, 0.6) ,
+      rgb (0.2196078431372549, 0.4235294117647059, 0.6901960784313725) ,
+      rgb (0.9411764705882353, 0.00784313725490196, 0.4980392156862745) ,
+      rgb (0.7490196078431373, 0.3568627450980392, 0.09019607843137253) ,
+      rgb (0.4, 0.4, 0.4)
+      });
 
 
 list_data Blues = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.984313725490196, 1.0) ,
-  rgb (0.8705882352941177, 0.9215686274509803, 0.9686274509803922) ,
-  rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
-  rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
-  rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
-  rgb (0.25882352941176473, 0.5725490196078431, 0.7764705882352941) ,
-  rgb (0.12941176470588237, 0.44313725490196076, 0.7098039215686275) ,
-  rgb (0.03137254901960784, 0.3176470588235294, 0.611764705882353) ,
-  rgb (0.03137254901960784, 0.18823529411764706, 0.4196078431372549)
-});
+    rgb (0.9686274509803922, 0.984313725490196, 1.0) ,
+      rgb (0.8705882352941177, 0.9215686274509803, 0.9686274509803922) ,
+      rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
+      rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
+      rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
+      rgb (0.25882352941176473, 0.5725490196078431, 0.7764705882352941) ,
+      rgb (0.12941176470588237, 0.44313725490196076, 0.7098039215686275) ,
+      rgb (0.03137254901960784, 0.3176470588235294, 0.611764705882353) ,
+      rgb (0.03137254901960784, 0.18823529411764706, 0.4196078431372549)
+      });
 
 
 list_data BrBG = list_data(new pen[] {
-  rgb (0.32941176470588235, 0.18823529411764706, 0.0196078431372549) ,
-  rgb (0.5490196078431373, 0.3176470588235294, 0.0392156862745098) ,
-  rgb (0.7490196078431373, 0.5058823529411764, 0.17647058823529413) ,
-  rgb (0.8745098039215686, 0.7607843137254902, 0.49019607843137253) ,
-  rgb (0.9647058823529412, 0.9098039215686274, 0.7647058823529411) ,
-  rgb (0.9607843137254902, 0.9607843137254902, 0.9607843137254902) ,
-  rgb (0.7803921568627451, 0.9176470588235294, 0.8980392156862745) ,
-  rgb (0.5019607843137255, 0.803921568627451, 0.7568627450980392) ,
-  rgb (0.20784313725490197, 0.592156862745098, 0.5607843137254902) ,
-  rgb (0.00392156862745098, 0.4, 0.3686274509803922) ,
-  rgb (0.0, 0.23529411764705882, 0.18823529411764706)
-});
+    rgb (0.32941176470588235, 0.18823529411764706, 0.0196078431372549) ,
+      rgb (0.5490196078431373, 0.3176470588235294, 0.0392156862745098) ,
+      rgb (0.7490196078431373, 0.5058823529411764, 0.17647058823529413) ,
+      rgb (0.8745098039215686, 0.7607843137254902, 0.49019607843137253) ,
+      rgb (0.9647058823529412, 0.9098039215686274, 0.7647058823529411) ,
+      rgb (0.9607843137254902, 0.9607843137254902, 0.9607843137254902) ,
+      rgb (0.7803921568627451, 0.9176470588235294, 0.8980392156862745) ,
+      rgb (0.5019607843137255, 0.803921568627451, 0.7568627450980392) ,
+      rgb (0.20784313725490197, 0.592156862745098, 0.5607843137254902) ,
+      rgb (0.00392156862745098, 0.4, 0.3686274509803922) ,
+      rgb (0.0, 0.23529411764705882, 0.18823529411764706)
+      });
 
 
 list_data BuGn = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
-  rgb (0.8980392156862745, 0.9607843137254902, 0.9764705882352941) ,
-  rgb (0.8, 0.9254901960784314, 0.9019607843137255) ,
-  rgb (0.6, 0.8470588235294118, 0.788235294117647) ,
-  rgb (0.4, 0.7607843137254902, 0.6431372549019608) ,
-  rgb (0.2549019607843137, 0.6823529411764706, 0.4627450980392157) ,
-  rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
-  rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
+      rgb (0.8980392156862745, 0.9607843137254902, 0.9764705882352941) ,
+      rgb (0.8, 0.9254901960784314, 0.9019607843137255) ,
+      rgb (0.6, 0.8470588235294118, 0.788235294117647) ,
+      rgb (0.4, 0.7607843137254902, 0.6431372549019608) ,
+      rgb (0.2549019607843137, 0.6823529411764706, 0.4627450980392157) ,
+      rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
+      rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data BuPu = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
-  rgb (0.8784313725490196, 0.9254901960784314, 0.9568627450980393) ,
-  rgb (0.7490196078431373, 0.8274509803921568, 0.9019607843137255) ,
-  rgb (0.6196078431372549, 0.7372549019607844, 0.8549019607843137) ,
-  rgb (0.5490196078431373, 0.5882352941176471, 0.7764705882352941) ,
-  rgb (0.5490196078431373, 0.4196078431372549, 0.6941176470588235) ,
-  rgb (0.5333333333333333, 0.2549019607843137, 0.615686274509804) ,
-  rgb (0.5058823529411764, 0.05882352941176471, 0.48627450980392156) ,
-  rgb (0.30196078431372547, 0.0, 0.29411764705882354)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
+      rgb (0.8784313725490196, 0.9254901960784314, 0.9568627450980393) ,
+      rgb (0.7490196078431373, 0.8274509803921568, 0.9019607843137255) ,
+      rgb (0.6196078431372549, 0.7372549019607844, 0.8549019607843137) ,
+      rgb (0.5490196078431373, 0.5882352941176471, 0.7764705882352941) ,
+      rgb (0.5490196078431373, 0.4196078431372549, 0.6941176470588235) ,
+      rgb (0.5333333333333333, 0.2549019607843137, 0.615686274509804) ,
+      rgb (0.5058823529411764, 0.05882352941176471, 0.48627450980392156) ,
+      rgb (0.30196078431372547, 0.0, 0.29411764705882354)
+      });
 
 
 seg_data CMRmap = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.15, 0.15) ,
-     (0.25, 0.3, 0.3) ,
-     (0.375, 0.6, 0.6) ,
-     (0.5, 1.0, 1.0) ,
-     (0.625, 0.9, 0.9) ,
-     (0.75, 0.9, 0.9) ,
-     (0.875, 0.9, 0.9) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.15, 0.15) ,
-     (0.25, 0.15, 0.15) ,
-     (0.375, 0.2, 0.2) ,
-     (0.5, 0.25, 0.25) ,
-     (0.625, 0.5, 0.5) ,
-     (0.75, 0.75, 0.75) ,
-     (0.875, 0.9, 0.9) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.5, 0.5) ,
-     (0.25, 0.75, 0.75) ,
-     (0.375, 0.5, 0.5) ,
-     (0.5, 0.15, 0.15) ,
-     (0.625, 0.0, 0.0) ,
-     (0.75, 0.1, 0.1) ,
-     (0.875, 0.5, 0.5) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.15, 0.15) ,
+                               (0.25, 0.3, 0.3) ,
+                               (0.375, 0.6, 0.6) ,
+                               (0.5, 1.0, 1.0) ,
+                               (0.625, 0.9, 0.9) ,
+                               (0.75, 0.9, 0.9) ,
+                               (0.875, 0.9, 0.9) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.15, 0.15) ,
+                               (0.25, 0.15, 0.15) ,
+                               (0.375, 0.2, 0.2) ,
+                               (0.5, 0.25, 0.25) ,
+                               (0.625, 0.5, 0.5) ,
+                               (0.75, 0.75, 0.75) ,
+                               (0.875, 0.9, 0.9) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.5, 0.5) ,
+                               (0.25, 0.75, 0.75) ,
+                               (0.375, 0.5, 0.5) ,
+                               (0.5, 0.15, 0.15) ,
+                               (0.625, 0.0, 0.0) ,
+                               (0.75, 0.1, 0.1) ,
+                               (0.875, 0.5, 0.5) ,
+                               (1.0, 1.0, 1.0)
+                               }
+                           );
 
 
 list_data Dark2 = list_data(new pen[] {
-  rgb (0.10588235294117647, 0.6196078431372549, 0.4666666666666667) ,
-  rgb (0.8509803921568627, 0.37254901960784315, 0.00784313725490196) ,
-  rgb (0.4588235294117647, 0.4392156862745098, 0.7019607843137254) ,
-  rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
-  rgb (0.4, 0.6509803921568628, 0.11764705882352941) ,
-  rgb (0.9019607843137255, 0.6705882352941176, 0.00784313725490196) ,
-  rgb (0.6509803921568628, 0.4627450980392157, 0.11372549019607843) ,
-  rgb (0.4, 0.4, 0.4)
-});
+    rgb (0.10588235294117647, 0.6196078431372549, 0.4666666666666667) ,
+      rgb (0.8509803921568627, 0.37254901960784315, 0.00784313725490196) ,
+      rgb (0.4588235294117647, 0.4392156862745098, 0.7019607843137254) ,
+      rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
+      rgb (0.4, 0.6509803921568628, 0.11764705882352941) ,
+      rgb (0.9019607843137255, 0.6705882352941176, 0.00784313725490196) ,
+      rgb (0.6509803921568628, 0.4627450980392157, 0.11372549019607843) ,
+      rgb (0.4, 0.4, 0.4)
+      });
 
 
 list_data GnBu = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9411764705882353) ,
-  rgb (0.8784313725490196, 0.9529411764705882, 0.8588235294117647) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (0.6588235294117647, 0.8666666666666667, 0.7098039215686275) ,
-  rgb (0.4823529411764706, 0.8, 0.7686274509803922) ,
-  rgb (0.3058823529411765, 0.7019607843137254, 0.8274509803921568) ,
-  rgb (0.16862745098039217, 0.5490196078431373, 0.7450980392156863) ,
-  rgb (0.03137254901960784, 0.40784313725490196, 0.6745098039215687) ,
-  rgb (0.03137254901960784, 0.25098039215686274, 0.5058823529411764)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9411764705882353) ,
+      rgb (0.8784313725490196, 0.9529411764705882, 0.8588235294117647) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (0.6588235294117647, 0.8666666666666667, 0.7098039215686275) ,
+      rgb (0.4823529411764706, 0.8, 0.7686274509803922) ,
+      rgb (0.3058823529411765, 0.7019607843137254, 0.8274509803921568) ,
+      rgb (0.16862745098039217, 0.5490196078431373, 0.7450980392156863) ,
+      rgb (0.03137254901960784, 0.40784313725490196, 0.6745098039215687) ,
+      rgb (0.03137254901960784, 0.25098039215686274, 0.5058823529411764)
+      });
 
 
 list_data Greens = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9607843137254902) ,
-  rgb (0.8980392156862745, 0.9607843137254902, 0.8784313725490196) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
-  rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
-  rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
-  rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
-  rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
-  rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9607843137254902) ,
+      rgb (0.8980392156862745, 0.9607843137254902, 0.8784313725490196) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
+      rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
+      rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
+      rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
+      rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
+      rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data Greys = list_data(new pen[] {
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (0.9411764705882353, 0.9411764705882353, 0.9411764705882353) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
-  rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
-  rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
-  rgb (0.45098039215686275, 0.45098039215686275, 0.45098039215686275) ,
-  rgb (0.3215686274509804, 0.3215686274509804, 0.3215686274509804) ,
-  rgb (0.1450980392156863, 0.1450980392156863, 0.1450980392156863) ,
-  rgb (0.0, 0.0, 0.0)
-});
+    rgb (1.0, 1.0, 1.0) ,
+      rgb (0.9411764705882353, 0.9411764705882353, 0.9411764705882353) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
+      rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
+      rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
+      rgb (0.45098039215686275, 0.45098039215686275, 0.45098039215686275) ,
+      rgb (0.3215686274509804, 0.3215686274509804, 0.3215686274509804) ,
+      rgb (0.1450980392156863, 0.1450980392156863, 0.1450980392156863) ,
+      rgb (0.0, 0.0, 0.0)
+      });
 
 
 list_data OrRd = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.9254901960784314) ,
-  rgb (0.996078431372549, 0.9098039215686274, 0.7843137254901961) ,
-  rgb (0.9921568627450981, 0.8313725490196079, 0.6196078431372549) ,
-  rgb (0.9921568627450981, 0.7333333333333333, 0.5176470588235295) ,
-  rgb (0.9882352941176471, 0.5529411764705883, 0.34901960784313724) ,
-  rgb (0.9372549019607843, 0.396078431372549, 0.2823529411764706) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.12156862745098039) ,
-  rgb (0.7019607843137254, 0.0, 0.0) ,
-  rgb (0.4980392156862745, 0.0, 0.0)
-});
+    rgb (1.0, 0.9686274509803922, 0.9254901960784314) ,
+      rgb (0.996078431372549, 0.9098039215686274, 0.7843137254901961) ,
+      rgb (0.9921568627450981, 0.8313725490196079, 0.6196078431372549) ,
+      rgb (0.9921568627450981, 0.7333333333333333, 0.5176470588235295) ,
+      rgb (0.9882352941176471, 0.5529411764705883, 0.34901960784313724) ,
+      rgb (0.9372549019607843, 0.396078431372549, 0.2823529411764706) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.12156862745098039) ,
+      rgb (0.7019607843137254, 0.0, 0.0) ,
+      rgb (0.4980392156862745, 0.0, 0.0)
+      });
 
 
 list_data Oranges = list_data(new pen[] {
-  rgb (1.0, 0.9607843137254902, 0.9215686274509803) ,
-  rgb (0.996078431372549, 0.9019607843137255, 0.807843137254902) ,
-  rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9450980392156862, 0.4117647058823529, 0.07450980392156863) ,
-  rgb (0.8509803921568627, 0.2823529411764706, 0.00392156862745098) ,
-  rgb (0.6509803921568628, 0.21176470588235294, 0.01176470588235294) ,
-  rgb (0.4980392156862745, 0.15294117647058825, 0.01568627450980392)
-});
+    rgb (1.0, 0.9607843137254902, 0.9215686274509803) ,
+      rgb (0.996078431372549, 0.9019607843137255, 0.807843137254902) ,
+      rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9450980392156862, 0.4117647058823529, 0.07450980392156863) ,
+      rgb (0.8509803921568627, 0.2823529411764706, 0.00392156862745098) ,
+      rgb (0.6509803921568628, 0.21176470588235294, 0.01176470588235294) ,
+      rgb (0.4980392156862745, 0.15294117647058825, 0.01568627450980392)
+      });
 
 
 list_data PRGn = list_data(new pen[] {
-  rgb (0.25098039215686274, 0.0, 0.29411764705882354) ,
-  rgb (0.4627450980392157, 0.16470588235294117, 0.5137254901960784) ,
-  rgb (0.6, 0.4392156862745098, 0.6705882352941176) ,
-  rgb (0.7607843137254902, 0.6470588235294118, 0.8117647058823529) ,
-  rgb (0.9058823529411765, 0.8313725490196079, 0.9098039215686274) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8509803921568627, 0.9411764705882353, 0.8274509803921568) ,
-  rgb (0.6509803921568628, 0.8588235294117647, 0.6274509803921569) ,
-  rgb (0.35294117647058826, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.10588235294117647, 0.47058823529411764, 0.21568627450980393) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.25098039215686274, 0.0, 0.29411764705882354) ,
+      rgb (0.4627450980392157, 0.16470588235294117, 0.5137254901960784) ,
+      rgb (0.6, 0.4392156862745098, 0.6705882352941176) ,
+      rgb (0.7607843137254902, 0.6470588235294118, 0.8117647058823529) ,
+      rgb (0.9058823529411765, 0.8313725490196079, 0.9098039215686274) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8509803921568627, 0.9411764705882353, 0.8274509803921568) ,
+      rgb (0.6509803921568628, 0.8588235294117647, 0.6274509803921569) ,
+      rgb (0.35294117647058826, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.10588235294117647, 0.47058823529411764, 0.21568627450980393) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data Paired = list_data(new pen[] {
-  rgb (0.6509803921568628, 0.807843137254902, 0.8901960784313725) ,
-  rgb (0.12156862745098039, 0.47058823529411764, 0.7058823529411765) ,
-  rgb (0.6980392156862745, 0.8745098039215686, 0.5411764705882353) ,
-  rgb (0.2, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.984313725490196, 0.6039215686274509, 0.6) ,
-  rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.9921568627450981, 0.7490196078431373, 0.43529411764705883) ,
-  rgb (1.0, 0.4980392156862745, 0.0) ,
-  rgb (0.792156862745098, 0.6980392156862745, 0.8392156862745098) ,
-  rgb (0.41568627450980394, 0.23921568627450981, 0.6039215686274509) ,
-  rgb (1.0, 1.0, 0.6) ,
-  rgb (0.6941176470588235, 0.34901960784313724, 0.1568627450980392)
-});
+    rgb (0.6509803921568628, 0.807843137254902, 0.8901960784313725) ,
+      rgb (0.12156862745098039, 0.47058823529411764, 0.7058823529411765) ,
+      rgb (0.6980392156862745, 0.8745098039215686, 0.5411764705882353) ,
+      rgb (0.2, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.984313725490196, 0.6039215686274509, 0.6) ,
+      rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.9921568627450981, 0.7490196078431373, 0.43529411764705883) ,
+      rgb (1.0, 0.4980392156862745, 0.0) ,
+      rgb (0.792156862745098, 0.6980392156862745, 0.8392156862745098) ,
+      rgb (0.41568627450980394, 0.23921568627450981, 0.6039215686274509) ,
+      rgb (1.0, 1.0, 0.6) ,
+      rgb (0.6941176470588235, 0.34901960784313724, 0.1568627450980392)
+      });
 
 
 list_data Pastel1 = list_data(new pen[] {
-  rgb (0.984313725490196, 0.7058823529411765, 0.6823529411764706) ,
-  rgb (0.7019607843137254, 0.803921568627451, 0.8901960784313725) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (0.8705882352941177, 0.796078431372549, 0.8941176470588236) ,
-  rgb (0.996078431372549, 0.8509803921568627, 0.6509803921568628) ,
-  rgb (1.0, 1.0, 0.8) ,
-  rgb (0.8980392156862745, 0.8470588235294118, 0.7411764705882353) ,
-  rgb (0.9921568627450981, 0.8549019607843137, 0.9254901960784314) ,
-  rgb (0.9490196078431372, 0.9490196078431372, 0.9490196078431372)
-});
+    rgb (0.984313725490196, 0.7058823529411765, 0.6823529411764706) ,
+      rgb (0.7019607843137254, 0.803921568627451, 0.8901960784313725) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (0.8705882352941177, 0.796078431372549, 0.8941176470588236) ,
+      rgb (0.996078431372549, 0.8509803921568627, 0.6509803921568628) ,
+      rgb (1.0, 1.0, 0.8) ,
+      rgb (0.8980392156862745, 0.8470588235294118, 0.7411764705882353) ,
+      rgb (0.9921568627450981, 0.8549019607843137, 0.9254901960784314) ,
+      rgb (0.9490196078431372, 0.9490196078431372, 0.9490196078431372)
+      });
 
 
 list_data Pastel2 = list_data(new pen[] {
-  rgb (0.7019607843137254, 0.8862745098039215, 0.803921568627451) ,
-  rgb (0.9921568627450981, 0.803921568627451, 0.6745098039215687) ,
-  rgb (0.796078431372549, 0.8352941176470589, 0.9098039215686274) ,
-  rgb (0.9568627450980393, 0.792156862745098, 0.8941176470588236) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.788235294117647) ,
-  rgb (1.0, 0.9490196078431372, 0.6823529411764706) ,
-  rgb (0.9450980392156862, 0.8862745098039215, 0.8) ,
-  rgb (0.8, 0.8, 0.8)
-});
+    rgb (0.7019607843137254, 0.8862745098039215, 0.803921568627451) ,
+      rgb (0.9921568627450981, 0.803921568627451, 0.6745098039215687) ,
+      rgb (0.796078431372549, 0.8352941176470589, 0.9098039215686274) ,
+      rgb (0.9568627450980393, 0.792156862745098, 0.8941176470588236) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.788235294117647) ,
+      rgb (1.0, 0.9490196078431372, 0.6823529411764706) ,
+      rgb (0.9450980392156862, 0.8862745098039215, 0.8) ,
+      rgb (0.8, 0.8, 0.8)
+      });
 
 
 list_data PiYG = list_data(new pen[] {
-  rgb (0.5568627450980392, 0.00392156862745098, 0.3215686274509804) ,
-  rgb (0.7725490196078432, 0.10588235294117647, 0.49019607843137253) ,
-  rgb (0.8705882352941177, 0.4666666666666667, 0.6823529411764706) ,
-  rgb (0.9450980392156862, 0.7137254901960784, 0.8549019607843137) ,
-  rgb (0.9921568627450981, 0.8784313725490196, 0.9372549019607843) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.8156862745098039) ,
-  rgb (0.7215686274509804, 0.8823529411764706, 0.5254901960784314) ,
-  rgb (0.4980392156862745, 0.7372549019607844, 0.2549019607843137) ,
-  rgb (0.30196078431372547, 0.5725490196078431, 0.12941176470588237) ,
-  rgb (0.15294117647058825, 0.39215686274509803, 0.09803921568627451)
-});
+    rgb (0.5568627450980392, 0.00392156862745098, 0.3215686274509804) ,
+      rgb (0.7725490196078432, 0.10588235294117647, 0.49019607843137253) ,
+      rgb (0.8705882352941177, 0.4666666666666667, 0.6823529411764706) ,
+      rgb (0.9450980392156862, 0.7137254901960784, 0.8549019607843137) ,
+      rgb (0.9921568627450981, 0.8784313725490196, 0.9372549019607843) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.8156862745098039) ,
+      rgb (0.7215686274509804, 0.8823529411764706, 0.5254901960784314) ,
+      rgb (0.4980392156862745, 0.7372549019607844, 0.2549019607843137) ,
+      rgb (0.30196078431372547, 0.5725490196078431, 0.12941176470588237) ,
+      rgb (0.15294117647058825, 0.39215686274509803, 0.09803921568627451)
+      });
 
 
 list_data PuBuGn = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
-  rgb (0.9254901960784314, 0.8862745098039215, 0.9411764705882353) ,
-  rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
-  rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
-  rgb (0.403921568627451, 0.6627450980392157, 0.8117647058823529) ,
-  rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
-  rgb (0.00784313725490196, 0.5058823529411764, 0.5411764705882353) ,
-  rgb (0.00392156862745098, 0.4235294117647059, 0.34901960784313724) ,
-  rgb (0.00392156862745098, 0.27450980392156865, 0.21176470588235294)
-});
+    rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
+      rgb (0.9254901960784314, 0.8862745098039215, 0.9411764705882353) ,
+      rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
+      rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
+      rgb (0.403921568627451, 0.6627450980392157, 0.8117647058823529) ,
+      rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
+      rgb (0.00784313725490196, 0.5058823529411764, 0.5411764705882353) ,
+      rgb (0.00392156862745098, 0.4235294117647059, 0.34901960784313724) ,
+      rgb (0.00392156862745098, 0.27450980392156865, 0.21176470588235294)
+      });
 
 
 list_data PuBu = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
-  rgb (0.9254901960784314, 0.9058823529411765, 0.9490196078431372) ,
-  rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
-  rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
-  rgb (0.4549019607843137, 0.6627450980392157, 0.8117647058823529) ,
-  rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
-  rgb (0.0196078431372549, 0.4392156862745098, 0.6901960784313725) ,
-  rgb (0.01568627450980392, 0.35294117647058826, 0.5529411764705883) ,
-  rgb (0.00784313725490196, 0.2196078431372549, 0.34509803921568627)
-});
+    rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
+      rgb (0.9254901960784314, 0.9058823529411765, 0.9490196078431372) ,
+      rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
+      rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
+      rgb (0.4549019607843137, 0.6627450980392157, 0.8117647058823529) ,
+      rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
+      rgb (0.0196078431372549, 0.4392156862745098, 0.6901960784313725) ,
+      rgb (0.01568627450980392, 0.35294117647058826, 0.5529411764705883) ,
+      rgb (0.00784313725490196, 0.2196078431372549, 0.34509803921568627)
+      });
 
 
 list_data PuOr = list_data(new pen[] {
-  rgb (0.4980392156862745, 0.23137254901960785, 0.03137254901960784) ,
-  rgb (0.7019607843137254, 0.34509803921568627, 0.02352941176470588) ,
-  rgb (0.8784313725490196, 0.5098039215686274, 0.0784313725490196) ,
-  rgb (0.9921568627450981, 0.7215686274509804, 0.38823529411764707) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.7137254901960784) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8470588235294118, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.6980392156862745, 0.6705882352941176, 0.8235294117647058) ,
-  rgb (0.5019607843137255, 0.45098039215686275, 0.6745098039215687) ,
-  rgb (0.32941176470588235, 0.15294117647058825, 0.5333333333333333) ,
-  rgb (0.17647058823529413, 0.0, 0.29411764705882354)
-});
+    rgb (0.4980392156862745, 0.23137254901960785, 0.03137254901960784) ,
+      rgb (0.7019607843137254, 0.34509803921568627, 0.02352941176470588) ,
+      rgb (0.8784313725490196, 0.5098039215686274, 0.0784313725490196) ,
+      rgb (0.9921568627450981, 0.7215686274509804, 0.38823529411764707) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.7137254901960784) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8470588235294118, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.6980392156862745, 0.6705882352941176, 0.8235294117647058) ,
+      rgb (0.5019607843137255, 0.45098039215686275, 0.6745098039215687) ,
+      rgb (0.32941176470588235, 0.15294117647058825, 0.5333333333333333) ,
+      rgb (0.17647058823529413, 0.0, 0.29411764705882354)
+      });
 
 
 list_data PuRd = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9568627450980393, 0.9764705882352941) ,
-  rgb (0.9058823529411765, 0.8823529411764706, 0.9372549019607843) ,
-  rgb (0.8313725490196079, 0.7254901960784313, 0.8549019607843137) ,
-  rgb (0.788235294117647, 0.5803921568627451, 0.7803921568627451) ,
-  rgb (0.8745098039215686, 0.396078431372549, 0.6901960784313725) ,
-  rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
-  rgb (0.807843137254902, 0.07058823529411765, 0.33725490196078434) ,
-  rgb (0.596078431372549, 0.0, 0.2627450980392157) ,
-  rgb (0.403921568627451, 0.0, 0.12156862745098039)
-});
+    rgb (0.9686274509803922, 0.9568627450980393, 0.9764705882352941) ,
+      rgb (0.9058823529411765, 0.8823529411764706, 0.9372549019607843) ,
+      rgb (0.8313725490196079, 0.7254901960784313, 0.8549019607843137) ,
+      rgb (0.788235294117647, 0.5803921568627451, 0.7803921568627451) ,
+      rgb (0.8745098039215686, 0.396078431372549, 0.6901960784313725) ,
+      rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
+      rgb (0.807843137254902, 0.07058823529411765, 0.33725490196078434) ,
+      rgb (0.596078431372549, 0.0, 0.2627450980392157) ,
+      rgb (0.403921568627451, 0.0, 0.12156862745098039)
+      });
 
 
 list_data Purples = list_data(new pen[] {
-  rgb (0.9882352941176471, 0.984313725490196, 0.9921568627450981) ,
-  rgb (0.9372549019607843, 0.9294117647058824, 0.9607843137254902) ,
-  rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
-  rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
-  rgb (0.5019607843137255, 0.49019607843137253, 0.7294117647058823) ,
-  rgb (0.41568627450980394, 0.3176470588235294, 0.6392156862745098) ,
-  rgb (0.32941176470588235, 0.15294117647058825, 0.5607843137254902) ,
-  rgb (0.24705882352941178, 0.0, 0.49019607843137253)
-});
+    rgb (0.9882352941176471, 0.984313725490196, 0.9921568627450981) ,
+      rgb (0.9372549019607843, 0.9294117647058824, 0.9607843137254902) ,
+      rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
+      rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
+      rgb (0.5019607843137255, 0.49019607843137253, 0.7294117647058823) ,
+      rgb (0.41568627450980394, 0.3176470588235294, 0.6392156862745098) ,
+      rgb (0.32941176470588235, 0.15294117647058825, 0.5607843137254902) ,
+      rgb (0.24705882352941178, 0.0, 0.49019607843137253)
+      });
 
 
 list_data RdBu = list_data(new pen[] {
-  rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
-  rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
-  rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
-  rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
-  rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8196078431372549, 0.8980392156862745, 0.9411764705882353) ,
-  rgb (0.5725490196078431, 0.7725490196078432, 0.8705882352941177) ,
-  rgb (0.2627450980392157, 0.5764705882352941, 0.7647058823529411) ,
-  rgb (0.12941176470588237, 0.4, 0.6745098039215687) ,
-  rgb (0.0196078431372549, 0.18823529411764706, 0.3803921568627451)
-});
+    rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
+      rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
+      rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
+      rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
+      rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8196078431372549, 0.8980392156862745, 0.9411764705882353) ,
+      rgb (0.5725490196078431, 0.7725490196078432, 0.8705882352941177) ,
+      rgb (0.2627450980392157, 0.5764705882352941, 0.7647058823529411) ,
+      rgb (0.12941176470588237, 0.4, 0.6745098039215687) ,
+      rgb (0.0196078431372549, 0.18823529411764706, 0.3803921568627451)
+      });
 
 
 list_data RdGy = list_data(new pen[] {
-  rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
-  rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
-  rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
-  rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
-  rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (0.8784313725490196, 0.8784313725490196, 0.8784313725490196) ,
-  rgb (0.7294117647058823, 0.7294117647058823, 0.7294117647058823) ,
-  rgb (0.5294117647058824, 0.5294117647058824, 0.5294117647058824) ,
-  rgb (0.30196078431372547, 0.30196078431372547, 0.30196078431372547) ,
-  rgb (0.10196078431372549, 0.10196078431372549, 0.10196078431372549)
-});
+    rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
+      rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
+      rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
+      rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
+      rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (0.8784313725490196, 0.8784313725490196, 0.8784313725490196) ,
+      rgb (0.7294117647058823, 0.7294117647058823, 0.7294117647058823) ,
+      rgb (0.5294117647058824, 0.5294117647058824, 0.5294117647058824) ,
+      rgb (0.30196078431372547, 0.30196078431372547, 0.30196078431372547) ,
+      rgb (0.10196078431372549, 0.10196078431372549, 0.10196078431372549)
+      });
 
 
 list_data RdPu = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.9529411764705882) ,
-  rgb (0.9921568627450981, 0.8784313725490196, 0.8666666666666667) ,
-  rgb (0.9882352941176471, 0.7725490196078432, 0.7529411764705882) ,
-  rgb (0.9803921568627451, 0.6235294117647059, 0.7098039215686275) ,
-  rgb (0.9686274509803922, 0.40784313725490196, 0.6313725490196078) ,
-  rgb (0.8666666666666667, 0.20392156862745098, 0.592156862745098) ,
-  rgb (0.6823529411764706, 0.00392156862745098, 0.49411764705882355) ,
-  rgb (0.47843137254901963, 0.00392156862745098, 0.4666666666666667) ,
-  rgb (0.28627450980392155, 0.0, 0.41568627450980394)
-});
+    rgb (1.0, 0.9686274509803922, 0.9529411764705882) ,
+      rgb (0.9921568627450981, 0.8784313725490196, 0.8666666666666667) ,
+      rgb (0.9882352941176471, 0.7725490196078432, 0.7529411764705882) ,
+      rgb (0.9803921568627451, 0.6235294117647059, 0.7098039215686275) ,
+      rgb (0.9686274509803922, 0.40784313725490196, 0.6313725490196078) ,
+      rgb (0.8666666666666667, 0.20392156862745098, 0.592156862745098) ,
+      rgb (0.6823529411764706, 0.00392156862745098, 0.49411764705882355) ,
+      rgb (0.47843137254901963, 0.00392156862745098, 0.4666666666666667) ,
+      rgb (0.28627450980392155, 0.0, 0.41568627450980394)
+      });
 
 
 list_data RdYlBu = list_data(new pen[] {
-  rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5647058823529412) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.8784313725490196, 0.9529411764705882, 0.9725490196078431) ,
-  rgb (0.6705882352941176, 0.8509803921568627, 0.9137254901960784) ,
-  rgb (0.4549019607843137, 0.6784313725490196, 0.8196078431372549) ,
-  rgb (0.27058823529411763, 0.4588235294117647, 0.7058823529411765) ,
-  rgb (0.19215686274509805, 0.21176470588235294, 0.5843137254901961)
-});
+    rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5647058823529412) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.8784313725490196, 0.9529411764705882, 0.9725490196078431) ,
+      rgb (0.6705882352941176, 0.8509803921568627, 0.9137254901960784) ,
+      rgb (0.4549019607843137, 0.6784313725490196, 0.8196078431372549) ,
+      rgb (0.27058823529411763, 0.4588235294117647, 0.7058823529411765) ,
+      rgb (0.19215686274509805, 0.21176470588235294, 0.5843137254901961)
+      });
 
 
 list_data RdYlGn = list_data(new pen[] {
-  rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.8509803921568627, 0.9372549019607843, 0.5450980392156862) ,
-  rgb (0.6509803921568628, 0.8509803921568627, 0.41568627450980394) ,
-  rgb (0.4, 0.7411764705882353, 0.38823529411764707) ,
-  rgb (0.10196078431372549, 0.596078431372549, 0.3137254901960784) ,
-  rgb (0.0, 0.40784313725490196, 0.21568627450980393)
-});
+    rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.8509803921568627, 0.9372549019607843, 0.5450980392156862) ,
+      rgb (0.6509803921568628, 0.8509803921568627, 0.41568627450980394) ,
+      rgb (0.4, 0.7411764705882353, 0.38823529411764707) ,
+      rgb (0.10196078431372549, 0.596078431372549, 0.3137254901960784) ,
+      rgb (0.0, 0.40784313725490196, 0.21568627450980393)
+      });
 
 
 list_data Reds = list_data(new pen[] {
-  rgb (1.0, 0.9607843137254902, 0.9411764705882353) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.8235294117647058) ,
-  rgb (0.9882352941176471, 0.7333333333333333, 0.6313725490196078) ,
-  rgb (0.9882352941176471, 0.5725490196078431, 0.4470588235294118) ,
-  rgb (0.984313725490196, 0.41568627450980394, 0.2901960784313726) ,
-  rgb (0.9372549019607843, 0.23137254901960785, 0.17254901960784313) ,
-  rgb (0.796078431372549, 0.09411764705882353, 0.11372549019607843) ,
-  rgb (0.6470588235294118, 0.058823529411764705, 0.08235294117647057) ,
-  rgb (0.403921568627451, 0.0, 0.05098039215686274)
-});
+    rgb (1.0, 0.9607843137254902, 0.9411764705882353) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.8235294117647058) ,
+      rgb (0.9882352941176471, 0.7333333333333333, 0.6313725490196078) ,
+      rgb (0.9882352941176471, 0.5725490196078431, 0.4470588235294118) ,
+      rgb (0.984313725490196, 0.41568627450980394, 0.2901960784313726) ,
+      rgb (0.9372549019607843, 0.23137254901960785, 0.17254901960784313) ,
+      rgb (0.796078431372549, 0.09411764705882353, 0.11372549019607843) ,
+      rgb (0.6470588235294118, 0.058823529411764705, 0.08235294117647057) ,
+      rgb (0.403921568627451, 0.0, 0.05098039215686274)
+      });
 
 
 list_data Set1 = list_data(new pen[] {
-  rgb (0.8941176470588236, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.21568627450980393, 0.49411764705882355, 0.7215686274509804) ,
-  rgb (0.30196078431372547, 0.6862745098039216, 0.2901960784313726) ,
-  rgb (0.596078431372549, 0.3058823529411765, 0.6392156862745098) ,
-  rgb (1.0, 0.4980392156862745, 0.0) ,
-  rgb (1.0, 1.0, 0.2) ,
-  rgb (0.6509803921568628, 0.33725490196078434, 0.1568627450980392) ,
-  rgb (0.9686274509803922, 0.5058823529411764, 0.7490196078431373) ,
-  rgb (0.6, 0.6, 0.6)
-});
+    rgb (0.8941176470588236, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.21568627450980393, 0.49411764705882355, 0.7215686274509804) ,
+      rgb (0.30196078431372547, 0.6862745098039216, 0.2901960784313726) ,
+      rgb (0.596078431372549, 0.3058823529411765, 0.6392156862745098) ,
+      rgb (1.0, 0.4980392156862745, 0.0) ,
+      rgb (1.0, 1.0, 0.2) ,
+      rgb (0.6509803921568628, 0.33725490196078434, 0.1568627450980392) ,
+      rgb (0.9686274509803922, 0.5058823529411764, 0.7490196078431373) ,
+      rgb (0.6, 0.6, 0.6)
+      });
 
 
 list_data Set2 = list_data(new pen[] {
-  rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
-  rgb (0.9882352941176471, 0.5529411764705883, 0.3843137254901961) ,
-  rgb (0.5529411764705883, 0.6274509803921569, 0.796078431372549) ,
-  rgb (0.9058823529411765, 0.5411764705882353, 0.7647058823529411) ,
-  rgb (0.6509803921568628, 0.8470588235294118, 0.32941176470588235) ,
-  rgb (1.0, 0.8509803921568627, 0.1843137254901961) ,
-  rgb (0.8980392156862745, 0.7686274509803922, 0.5803921568627451) ,
-  rgb (0.7019607843137254, 0.7019607843137254, 0.7019607843137254)
-});
+    rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
+      rgb (0.9882352941176471, 0.5529411764705883, 0.3843137254901961) ,
+      rgb (0.5529411764705883, 0.6274509803921569, 0.796078431372549) ,
+      rgb (0.9058823529411765, 0.5411764705882353, 0.7647058823529411) ,
+      rgb (0.6509803921568628, 0.8470588235294118, 0.32941176470588235) ,
+      rgb (1.0, 0.8509803921568627, 0.1843137254901961) ,
+      rgb (0.8980392156862745, 0.7686274509803922, 0.5803921568627451) ,
+      rgb (0.7019607843137254, 0.7019607843137254, 0.7019607843137254)
+      });
 
 
 list_data Set3 = list_data(new pen[] {
-  rgb (0.5529411764705883, 0.8274509803921568, 0.7803921568627451) ,
-  rgb (1.0, 1.0, 0.7019607843137254) ,
-  rgb (0.7450980392156863, 0.7294117647058823, 0.8549019607843137) ,
-  rgb (0.984313725490196, 0.5019607843137255, 0.4470588235294118) ,
-  rgb (0.5019607843137255, 0.6941176470588235, 0.8274509803921568) ,
-  rgb (0.9921568627450981, 0.7058823529411765, 0.3843137254901961) ,
-  rgb (0.7019607843137254, 0.8705882352941177, 0.4117647058823529) ,
-  rgb (0.9882352941176471, 0.803921568627451, 0.8980392156862745) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
-  rgb (0.7372549019607844, 0.5019607843137255, 0.7411764705882353) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (1.0, 0.9294117647058824, 0.43529411764705883)
-});
+    rgb (0.5529411764705883, 0.8274509803921568, 0.7803921568627451) ,
+      rgb (1.0, 1.0, 0.7019607843137254) ,
+      rgb (0.7450980392156863, 0.7294117647058823, 0.8549019607843137) ,
+      rgb (0.984313725490196, 0.5019607843137255, 0.4470588235294118) ,
+      rgb (0.5019607843137255, 0.6941176470588235, 0.8274509803921568) ,
+      rgb (0.9921568627450981, 0.7058823529411765, 0.3843137254901961) ,
+      rgb (0.7019607843137254, 0.8705882352941177, 0.4117647058823529) ,
+      rgb (0.9882352941176471, 0.803921568627451, 0.8980392156862745) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
+      rgb (0.7372549019607844, 0.5019607843137255, 0.7411764705882353) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (1.0, 0.9294117647058824, 0.43529411764705883)
+      });
 
 
 list_data Spectral = list_data(new pen[] {
-  rgb (0.6196078431372549, 0.00392156862745098, 0.25882352941176473) ,
-  rgb (0.8352941176470589, 0.24313725490196078, 0.30980392156862746) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.596078431372549) ,
-  rgb (0.6705882352941176, 0.8666666666666667, 0.6431372549019608) ,
-  rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
-  rgb (0.19607843137254902, 0.5333333333333333, 0.7411764705882353) ,
-  rgb (0.3686274509803922, 0.30980392156862746, 0.6352941176470588)
-});
+    rgb (0.6196078431372549, 0.00392156862745098, 0.25882352941176473) ,
+      rgb (0.8352941176470589, 0.24313725490196078, 0.30980392156862746) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.596078431372549) ,
+      rgb (0.6705882352941176, 0.8666666666666667, 0.6431372549019608) ,
+      rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
+      rgb (0.19607843137254902, 0.5333333333333333, 0.7411764705882353) ,
+      rgb (0.3686274509803922, 0.30980392156862746, 0.6352941176470588)
+      });
 
 
 list_data YlGnBu = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8509803921568627) ,
-  rgb (0.9294117647058824, 0.9725490196078431, 0.6941176470588235) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7058823529411765) ,
-  rgb (0.4980392156862745, 0.803921568627451, 0.7333333333333333) ,
-  rgb (0.2549019607843137, 0.7137254901960784, 0.7686274509803922) ,
-  rgb (0.11372549019607843, 0.5686274509803921, 0.7529411764705882) ,
-  rgb (0.13333333333333333, 0.3686274509803922, 0.6588235294117647) ,
-  rgb (0.1450980392156863, 0.20392156862745098, 0.5803921568627451) ,
-  rgb (0.03137254901960784, 0.11372549019607843, 0.34509803921568627)
-});
+    rgb (1.0, 1.0, 0.8509803921568627) ,
+      rgb (0.9294117647058824, 0.9725490196078431, 0.6941176470588235) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7058823529411765) ,
+      rgb (0.4980392156862745, 0.803921568627451, 0.7333333333333333) ,
+      rgb (0.2549019607843137, 0.7137254901960784, 0.7686274509803922) ,
+      rgb (0.11372549019607843, 0.5686274509803921, 0.7529411764705882) ,
+      rgb (0.13333333333333333, 0.3686274509803922, 0.6588235294117647) ,
+      rgb (0.1450980392156863, 0.20392156862745098, 0.5803921568627451) ,
+      rgb (0.03137254901960784, 0.11372549019607843, 0.34509803921568627)
+      });
 
 
 list_data YlGn = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8980392156862745) ,
-  rgb (0.9686274509803922, 0.9882352941176471, 0.7254901960784313) ,
-  rgb (0.8509803921568627, 0.9411764705882353, 0.6392156862745098) ,
-  rgb (0.6784313725490196, 0.8666666666666667, 0.5568627450980392) ,
-  rgb (0.47058823529411764, 0.7764705882352941, 0.4745098039215686) ,
-  rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
-  rgb (0.13725490196078433, 0.5176470588235295, 0.2627450980392157) ,
-  rgb (0.0, 0.40784313725490196, 0.21568627450980393) ,
-  rgb (0.0, 0.27058823529411763, 0.1607843137254902)
-});
+    rgb (1.0, 1.0, 0.8980392156862745) ,
+      rgb (0.9686274509803922, 0.9882352941176471, 0.7254901960784313) ,
+      rgb (0.8509803921568627, 0.9411764705882353, 0.6392156862745098) ,
+      rgb (0.6784313725490196, 0.8666666666666667, 0.5568627450980392) ,
+      rgb (0.47058823529411764, 0.7764705882352941, 0.4745098039215686) ,
+      rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
+      rgb (0.13725490196078433, 0.5176470588235295, 0.2627450980392157) ,
+      rgb (0.0, 0.40784313725490196, 0.21568627450980393) ,
+      rgb (0.0, 0.27058823529411763, 0.1607843137254902)
+      });
 
 
 list_data YlOrBr = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8980392156862745) ,
-  rgb (1.0, 0.9686274509803922, 0.7372549019607844) ,
-  rgb (0.996078431372549, 0.8901960784313725, 0.5686274509803921) ,
-  rgb (0.996078431372549, 0.7686274509803922, 0.30980392156862746) ,
-  rgb (0.996078431372549, 0.6, 0.1607843137254902) ,
-  rgb (0.9254901960784314, 0.4392156862745098, 0.0784313725490196) ,
-  rgb (0.8, 0.2980392156862745, 0.00784313725490196) ,
-  rgb (0.6, 0.20392156862745098, 0.01568627450980392) ,
-  rgb (0.4, 0.1450980392156863, 0.02352941176470588)
-});
+    rgb (1.0, 1.0, 0.8980392156862745) ,
+      rgb (1.0, 0.9686274509803922, 0.7372549019607844) ,
+      rgb (0.996078431372549, 0.8901960784313725, 0.5686274509803921) ,
+      rgb (0.996078431372549, 0.7686274509803922, 0.30980392156862746) ,
+      rgb (0.996078431372549, 0.6, 0.1607843137254902) ,
+      rgb (0.9254901960784314, 0.4392156862745098, 0.0784313725490196) ,
+      rgb (0.8, 0.2980392156862745, 0.00784313725490196) ,
+      rgb (0.6, 0.20392156862745098, 0.01568627450980392) ,
+      rgb (0.4, 0.1450980392156863, 0.02352941176470588)
+      });
 
 
 list_data YlOrRd = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8) ,
-  rgb (1.0, 0.9294117647058824, 0.6274509803921569) ,
-  rgb (0.996078431372549, 0.8509803921568627, 0.4627450980392157) ,
-  rgb (0.996078431372549, 0.6980392156862745, 0.2980392156862745) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9882352941176471, 0.3058823529411765, 0.16470588235294117) ,
-  rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.7411764705882353, 0.0, 0.14901960784313725) ,
-  rgb (0.5019607843137255, 0.0, 0.14901960784313725)
-});
+    rgb (1.0, 1.0, 0.8) ,
+      rgb (1.0, 0.9294117647058824, 0.6274509803921569) ,
+      rgb (0.996078431372549, 0.8509803921568627, 0.4627450980392157) ,
+      rgb (0.996078431372549, 0.6980392156862745, 0.2980392156862745) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9882352941176471, 0.3058823529411765, 0.16470588235294117) ,
+      rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.7411764705882353, 0.0, 0.14901960784313725) ,
+      rgb (0.5019607843137255, 0.0, 0.14901960784313725)
+      });
 
 
 seg_data autumn = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data binary = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data bone = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.746032, 0.652778, 0.652778) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.319444, 0.319444) ,
-     (0.746032, 0.777778, 0.777778) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.444444, 0.444444) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.0, 0.0) ,
+                             (0.746032, 0.652778, 0.652778) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0.0, 0.0) ,
+                             (0.365079, 0.319444, 0.319444) ,
+                             (0.746032, 0.777778, 0.777778) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0.0, 0.0) ,
+                             (0.365079, 0.444444, 0.444444) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 list_data brg = list_data(new pen[] {
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0) ,
-  rgb (0.0, 1.0, 0.0)
-});
+    rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0) ,
+      rgb (0.0, 1.0, 0.0)
+      });
 
 
 list_data bwr = list_data(new pen[] {
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0)
-});
+    rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0)
+      });
 
 
 seg_data cool = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.0, 0.0) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 1.0, 1.0) ,
+                             (1.0, 0.0, 0.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 1.0, 1.0) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 seg_data coolwarm = seg_data(
-  new triple[] {  // red
-     (0.0, 0.2298057, 0.2298057) ,
-     (0.03125, 0.26623388, 0.26623388) ,
-     (0.0625, 0.30386891, 0.30386891) ,
-     (0.09375, 0.342804478, 0.342804478) ,
-     (0.125, 0.38301334, 0.38301334) ,
-     (0.15625, 0.424369608, 0.424369608) ,
-     (0.1875, 0.46666708, 0.46666708) ,
-     (0.21875, 0.509635204, 0.509635204) ,
-     (0.25, 0.552953156, 0.552953156) ,
-     (0.28125, 0.596262162, 0.596262162) ,
-     (0.3125, 0.639176211, 0.639176211) ,
-     (0.34375, 0.681291281, 0.681291281) ,
-     (0.375, 0.722193294, 0.722193294) ,
-     (0.40625, 0.761464949, 0.761464949) ,
-     (0.4375, 0.798691636, 0.798691636) ,
-     (0.46875, 0.833466556, 0.833466556) ,
-     (0.5, 0.865395197, 0.865395197) ,
-     (0.53125, 0.897787179, 0.897787179) ,
-     (0.5625, 0.924127593, 0.924127593) ,
-     (0.59375, 0.944468518, 0.944468518) ,
-     (0.625, 0.958852946, 0.958852946) ,
-     (0.65625, 0.96732803, 0.96732803) ,
-     (0.6875, 0.969954137, 0.969954137) ,
-     (0.71875, 0.966811177, 0.966811177) ,
-     (0.75, 0.958003065, 0.958003065) ,
-     (0.78125, 0.943660866, 0.943660866) ,
-     (0.8125, 0.923944917, 0.923944917) ,
-     (0.84375, 0.89904617, 0.89904617) ,
-     (0.875, 0.869186849, 0.869186849) ,
-     (0.90625, 0.834620542, 0.834620542) ,
-     (0.9375, 0.795631745, 0.795631745) ,
-     (0.96875, 0.752534934, 0.752534934) ,
-     (1.0, 0.705673158, 0.705673158)
-  },
-  new triple[] {  // green
-     (0.0, 0.298717966, 0.298717966) ,
-     (0.03125, 0.353094838, 0.353094838) ,
-     (0.0625, 0.406535296, 0.406535296) ,
-     (0.09375, 0.458757618, 0.458757618) ,
-     (0.125, 0.50941904, 0.50941904) ,
-     (0.15625, 0.558148092, 0.558148092) ,
-     (0.1875, 0.604562568, 0.604562568) ,
-     (0.21875, 0.648280772, 0.648280772) ,
-     (0.25, 0.688929332, 0.688929332) ,
-     (0.28125, 0.726149107, 0.726149107) ,
-     (0.3125, 0.759599947, 0.759599947) ,
-     (0.34375, 0.788964712, 0.788964712) ,
-     (0.375, 0.813952739, 0.813952739) ,
-     (0.40625, 0.834302879, 0.834302879) ,
-     (0.4375, 0.849786142, 0.849786142) ,
-     (0.46875, 0.860207984, 0.860207984) ,
-     (0.5, 0.86541021, 0.86541021) ,
-     (0.53125, 0.848937047, 0.848937047) ,
-     (0.5625, 0.827384882, 0.827384882) ,
-     (0.59375, 0.800927443, 0.800927443) ,
-     (0.625, 0.769767752, 0.769767752) ,
-     (0.65625, 0.734132809, 0.734132809) ,
-     (0.6875, 0.694266682, 0.694266682) ,
-     (0.71875, 0.650421156, 0.650421156) ,
-     (0.75, 0.602842431, 0.602842431) ,
-     (0.78125, 0.551750968, 0.551750968) ,
-     (0.8125, 0.49730856, 0.49730856) ,
-     (0.84375, 0.439559467, 0.439559467) ,
-     (0.875, 0.378313092, 0.378313092) ,
-     (0.90625, 0.312874446, 0.312874446) ,
-     (0.9375, 0.24128379, 0.24128379) ,
-     (0.96875, 0.157246067, 0.157246067) ,
-     (1.0, 0.01555616, 0.01555616)
-  },
-  new triple[] {  // blue
-     (0.0, 0.753683153, 0.753683153) ,
-     (0.03125, 0.801466763, 0.801466763) ,
-     (0.0625, 0.84495867, 0.84495867) ,
-     (0.09375, 0.883725899, 0.883725899) ,
-     (0.125, 0.917387822, 0.917387822) ,
-     (0.15625, 0.945619588, 0.945619588) ,
-     (0.1875, 0.968154911, 0.968154911) ,
-     (0.21875, 0.98478814, 0.98478814) ,
-     (0.25, 0.995375608, 0.995375608) ,
-     (0.28125, 0.999836203, 0.999836203) ,
-     (0.3125, 0.998151185, 0.998151185) ,
-     (0.34375, 0.990363227, 0.990363227) ,
-     (0.375, 0.976574709, 0.976574709) ,
-     (0.40625, 0.956945269, 0.956945269) ,
-     (0.4375, 0.931688648, 0.931688648) ,
-     (0.46875, 0.901068838, 0.901068838) ,
-     (0.5, 0.865395561, 0.865395561) ,
-     (0.53125, 0.820880546, 0.820880546) ,
-     (0.5625, 0.774508472, 0.774508472) ,
-     (0.59375, 0.726736146, 0.726736146) ,
-     (0.625, 0.678007945, 0.678007945) ,
-     (0.65625, 0.628751763, 0.628751763) ,
-     (0.6875, 0.579375448, 0.579375448) ,
-     (0.71875, 0.530263762, 0.530263762) ,
-     (0.75, 0.481775914, 0.481775914) ,
-     (0.78125, 0.434243684, 0.434243684) ,
-     (0.8125, 0.387970225, 0.387970225) ,
-     (0.84375, 0.343229596, 0.343229596) ,
-     (0.875, 0.300267182, 0.300267182) ,
-     (0.90625, 0.259301199, 0.259301199) ,
-     (0.9375, 0.220525627, 0.220525627) ,
-     (0.96875, 0.184115123, 0.184115123) ,
-     (1.0, 0.150232812, 0.150232812)
-  }
-);
+                             new triple[] {  // red
+                               (0.0, 0.2298057, 0.2298057) ,
+                                 (0.03125, 0.26623388, 0.26623388) ,
+                                 (0.0625, 0.30386891, 0.30386891) ,
+                                 (0.09375, 0.342804478, 0.342804478) ,
+                                 (0.125, 0.38301334, 0.38301334) ,
+                                 (0.15625, 0.424369608, 0.424369608) ,
+                                 (0.1875, 0.46666708, 0.46666708) ,
+                                 (0.21875, 0.509635204, 0.509635204) ,
+                                 (0.25, 0.552953156, 0.552953156) ,
+                                 (0.28125, 0.596262162, 0.596262162) ,
+                                 (0.3125, 0.639176211, 0.639176211) ,
+                                 (0.34375, 0.681291281, 0.681291281) ,
+                                 (0.375, 0.722193294, 0.722193294) ,
+                                 (0.40625, 0.761464949, 0.761464949) ,
+                                 (0.4375, 0.798691636, 0.798691636) ,
+                                 (0.46875, 0.833466556, 0.833466556) ,
+                                 (0.5, 0.865395197, 0.865395197) ,
+                                 (0.53125, 0.897787179, 0.897787179) ,
+                                 (0.5625, 0.924127593, 0.924127593) ,
+                                 (0.59375, 0.944468518, 0.944468518) ,
+                                 (0.625, 0.958852946, 0.958852946) ,
+                                 (0.65625, 0.96732803, 0.96732803) ,
+                                 (0.6875, 0.969954137, 0.969954137) ,
+                                 (0.71875, 0.966811177, 0.966811177) ,
+                                 (0.75, 0.958003065, 0.958003065) ,
+                                 (0.78125, 0.943660866, 0.943660866) ,
+                                 (0.8125, 0.923944917, 0.923944917) ,
+                                 (0.84375, 0.89904617, 0.89904617) ,
+                                 (0.875, 0.869186849, 0.869186849) ,
+                                 (0.90625, 0.834620542, 0.834620542) ,
+                                 (0.9375, 0.795631745, 0.795631745) ,
+                                 (0.96875, 0.752534934, 0.752534934) ,
+                                 (1.0, 0.705673158, 0.705673158)
+                                 },
+                             new triple[] {  // green
+                               (0.0, 0.298717966, 0.298717966) ,
+                                 (0.03125, 0.353094838, 0.353094838) ,
+                                 (0.0625, 0.406535296, 0.406535296) ,
+                                 (0.09375, 0.458757618, 0.458757618) ,
+                                 (0.125, 0.50941904, 0.50941904) ,
+                                 (0.15625, 0.558148092, 0.558148092) ,
+                                 (0.1875, 0.604562568, 0.604562568) ,
+                                 (0.21875, 0.648280772, 0.648280772) ,
+                                 (0.25, 0.688929332, 0.688929332) ,
+                                 (0.28125, 0.726149107, 0.726149107) ,
+                                 (0.3125, 0.759599947, 0.759599947) ,
+                                 (0.34375, 0.788964712, 0.788964712) ,
+                                 (0.375, 0.813952739, 0.813952739) ,
+                                 (0.40625, 0.834302879, 0.834302879) ,
+                                 (0.4375, 0.849786142, 0.849786142) ,
+                                 (0.46875, 0.860207984, 0.860207984) ,
+                                 (0.5, 0.86541021, 0.86541021) ,
+                                 (0.53125, 0.848937047, 0.848937047) ,
+                                 (0.5625, 0.827384882, 0.827384882) ,
+                                 (0.59375, 0.800927443, 0.800927443) ,
+                                 (0.625, 0.769767752, 0.769767752) ,
+                                 (0.65625, 0.734132809, 0.734132809) ,
+                                 (0.6875, 0.694266682, 0.694266682) ,
+                                 (0.71875, 0.650421156, 0.650421156) ,
+                                 (0.75, 0.602842431, 0.602842431) ,
+                                 (0.78125, 0.551750968, 0.551750968) ,
+                                 (0.8125, 0.49730856, 0.49730856) ,
+                                 (0.84375, 0.439559467, 0.439559467) ,
+                                 (0.875, 0.378313092, 0.378313092) ,
+                                 (0.90625, 0.312874446, 0.312874446) ,
+                                 (0.9375, 0.24128379, 0.24128379) ,
+                                 (0.96875, 0.157246067, 0.157246067) ,
+                                 (1.0, 0.01555616, 0.01555616)
+                                 },
+                             new triple[] {  // blue
+                               (0.0, 0.753683153, 0.753683153) ,
+                                 (0.03125, 0.801466763, 0.801466763) ,
+                                 (0.0625, 0.84495867, 0.84495867) ,
+                                 (0.09375, 0.883725899, 0.883725899) ,
+                                 (0.125, 0.917387822, 0.917387822) ,
+                                 (0.15625, 0.945619588, 0.945619588) ,
+                                 (0.1875, 0.968154911, 0.968154911) ,
+                                 (0.21875, 0.98478814, 0.98478814) ,
+                                 (0.25, 0.995375608, 0.995375608) ,
+                                 (0.28125, 0.999836203, 0.999836203) ,
+                                 (0.3125, 0.998151185, 0.998151185) ,
+                                 (0.34375, 0.990363227, 0.990363227) ,
+                                 (0.375, 0.976574709, 0.976574709) ,
+                                 (0.40625, 0.956945269, 0.956945269) ,
+                                 (0.4375, 0.931688648, 0.931688648) ,
+                                 (0.46875, 0.901068838, 0.901068838) ,
+                                 (0.5, 0.865395561, 0.865395561) ,
+                                 (0.53125, 0.820880546, 0.820880546) ,
+                                 (0.5625, 0.774508472, 0.774508472) ,
+                                 (0.59375, 0.726736146, 0.726736146) ,
+                                 (0.625, 0.678007945, 0.678007945) ,
+                                 (0.65625, 0.628751763, 0.628751763) ,
+                                 (0.6875, 0.579375448, 0.579375448) ,
+                                 (0.71875, 0.530263762, 0.530263762) ,
+                                 (0.75, 0.481775914, 0.481775914) ,
+                                 (0.78125, 0.434243684, 0.434243684) ,
+                                 (0.8125, 0.387970225, 0.387970225) ,
+                                 (0.84375, 0.343229596, 0.343229596) ,
+                                 (0.875, 0.300267182, 0.300267182) ,
+                                 (0.90625, 0.259301199, 0.259301199) ,
+                                 (0.9375, 0.220525627, 0.220525627) ,
+                                 (0.96875, 0.184115123, 0.184115123) ,
+                                 (1.0, 0.150232812, 0.150232812)
+                                 }
+                             );
 
 
 seg_data copper = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.809524, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.7812, 0.7812)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.4975, 0.4975)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (0.809524, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.7812, 0.7812)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.4975, 0.4975)
+                               }
+                           );
 
 
 seg_data gist_earth = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.2824, 0.1882, 0.1882) ,
-     (0.4588, 0.2714, 0.2714) ,
-     (0.549, 0.4719, 0.4719) ,
-     (0.698, 0.7176, 0.7176) ,
-     (0.7882, 0.7553, 0.7553) ,
-     (1.0, 0.9922, 0.9922)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.0275, 0.0, 0.0) ,
-     (0.1098, 0.1893, 0.1893) ,
-     (0.1647, 0.3035, 0.3035) ,
-     (0.2078, 0.3841, 0.3841) ,
-     (0.2824, 0.502, 0.502) ,
-     (0.5216, 0.6397, 0.6397) ,
-     (0.698, 0.7171, 0.7171) ,
-     (0.7882, 0.6392, 0.6392) ,
-     (0.7922, 0.6413, 0.6413) ,
-     (0.8, 0.6447, 0.6447) ,
-     (0.8078, 0.6481, 0.6481) ,
-     (0.8157, 0.6549, 0.6549) ,
-     (0.8667, 0.6991, 0.6991) ,
-     (0.8745, 0.7103, 0.7103) ,
-     (0.8824, 0.7216, 0.7216) ,
-     (0.8902, 0.7323, 0.7323) ,
-     (0.898, 0.743, 0.743) ,
-     (0.9412, 0.8275, 0.8275) ,
-     (0.9569, 0.8635, 0.8635) ,
-     (0.9647, 0.8816, 0.8816) ,
-     (0.9961, 0.9733, 0.9733) ,
-     (1.0, 0.9843, 0.9843)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.0039, 0.1684, 0.1684) ,
-     (0.0078, 0.2212, 0.2212) ,
-     (0.0275, 0.4329, 0.4329) ,
-     (0.0314, 0.4549, 0.4549) ,
-     (0.2824, 0.5004, 0.5004) ,
-     (0.4667, 0.2748, 0.2748) ,
-     (0.5451, 0.3205, 0.3205) ,
-     (0.7843, 0.3961, 0.3961) ,
-     (0.8941, 0.6651, 0.6651) ,
-     (1.0, 0.9843, 0.9843)
-  }
-);
+                               new triple[] {  // red
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.2824, 0.1882, 0.1882) ,
+                                   (0.4588, 0.2714, 0.2714) ,
+                                   (0.549, 0.4719, 0.4719) ,
+                                   (0.698, 0.7176, 0.7176) ,
+                                   (0.7882, 0.7553, 0.7553) ,
+                                   (1.0, 0.9922, 0.9922)
+                                   },
+                               new triple[] {  // green
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0275, 0.0, 0.0) ,
+                                   (0.1098, 0.1893, 0.1893) ,
+                                   (0.1647, 0.3035, 0.3035) ,
+                                   (0.2078, 0.3841, 0.3841) ,
+                                   (0.2824, 0.502, 0.502) ,
+                                   (0.5216, 0.6397, 0.6397) ,
+                                   (0.698, 0.7171, 0.7171) ,
+                                   (0.7882, 0.6392, 0.6392) ,
+                                   (0.7922, 0.6413, 0.6413) ,
+                                   (0.8, 0.6447, 0.6447) ,
+                                   (0.8078, 0.6481, 0.6481) ,
+                                   (0.8157, 0.6549, 0.6549) ,
+                                   (0.8667, 0.6991, 0.6991) ,
+                                   (0.8745, 0.7103, 0.7103) ,
+                                   (0.8824, 0.7216, 0.7216) ,
+                                   (0.8902, 0.7323, 0.7323) ,
+                                   (0.898, 0.743, 0.743) ,
+                                   (0.9412, 0.8275, 0.8275) ,
+                                   (0.9569, 0.8635, 0.8635) ,
+                                   (0.9647, 0.8816, 0.8816) ,
+                                   (0.9961, 0.9733, 0.9733) ,
+                                   (1.0, 0.9843, 0.9843)
+                                   },
+                               new triple[] {  // blue
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0039, 0.1684, 0.1684) ,
+                                   (0.0078, 0.2212, 0.2212) ,
+                                   (0.0275, 0.4329, 0.4329) ,
+                                   (0.0314, 0.4549, 0.4549) ,
+                                   (0.2824, 0.5004, 0.5004) ,
+                                   (0.4667, 0.2748, 0.2748) ,
+                                   (0.5451, 0.3205, 0.3205) ,
+                                   (0.7843, 0.3961, 0.3961) ,
+                                   (0.8941, 0.6651, 0.6651) ,
+                                   (1.0, 0.9843, 0.9843)
+                                   }
+                               );
 
 
 seg_data gist_ncar = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.3098, 0.0, 0.0) ,
-     (0.3725, 0.3993, 0.3993) ,
-     (0.4235, 0.5003, 0.5003) ,
-     (0.5333, 1.0, 1.0) ,
-     (0.7922, 1.0, 1.0) ,
-     (0.8471, 0.6218, 0.6218) ,
-     (0.898, 0.9235, 0.9235) ,
-     (1.0, 0.9961, 0.9961)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.051, 0.3722, 0.3722) ,
-     (0.1059, 0.0, 0.0) ,
-     (0.1569, 0.7202, 0.7202) ,
-     (0.1608, 0.7537, 0.7537) ,
-     (0.1647, 0.7752, 0.7752) ,
-     (0.2157, 1.0, 1.0) ,
-     (0.2588, 0.9804, 0.9804) ,
-     (0.2706, 0.9804, 0.9804) ,
-     (0.3176, 1.0, 1.0) ,
-     (0.3686, 0.8081, 0.8081) ,
-     (0.4275, 1.0, 1.0) ,
-     (0.5216, 1.0, 1.0) ,
-     (0.6314, 0.7292, 0.7292) ,
-     (0.6863, 0.2796, 0.2796) ,
-     (0.7451, 0.0, 0.0) ,
-     (0.7922, 0.0, 0.0) ,
-     (0.8431, 0.1753, 0.1753) ,
-     (0.898, 0.5, 0.5) ,
-     (1.0, 0.9725, 0.9725)
-  },
-  new triple[] {  // blue
-     (0.0, 0.502, 0.502) ,
-     (0.051, 0.0222, 0.0222) ,
-     (0.1098, 1.0, 1.0) ,
-     (0.2039, 1.0, 1.0) ,
-     (0.2627, 0.6145, 0.6145) ,
-     (0.3216, 0.0, 0.0) ,
-     (0.4157, 0.0, 0.0) ,
-     (0.4745, 0.2342, 0.2342) ,
-     (0.5333, 0.0, 0.0) ,
-     (0.5804, 0.0, 0.0) ,
-     (0.6314, 0.0549, 0.0549) ,
-     (0.6902, 0.0, 0.0) ,
-     (0.7373, 0.0, 0.0) ,
-     (0.7922, 0.9738, 0.9738) ,
-     (0.8, 1.0, 1.0) ,
-     (0.8431, 1.0, 1.0) ,
-     (0.898, 0.9341, 0.9341) ,
-     (1.0, 0.9961, 0.9961)
-  }
-);
+                              new triple[] {  // red
+                                (0.0, 0.0, 0.0) ,
+                                  (0.3098, 0.0, 0.0) ,
+                                  (0.3725, 0.3993, 0.3993) ,
+                                  (0.4235, 0.5003, 0.5003) ,
+                                  (0.5333, 1.0, 1.0) ,
+                                  (0.7922, 1.0, 1.0) ,
+                                  (0.8471, 0.6218, 0.6218) ,
+                                  (0.898, 0.9235, 0.9235) ,
+                                  (1.0, 0.9961, 0.9961)
+                                  },
+                              new triple[] {  // green
+                                (0.0, 0.0, 0.0) ,
+                                  (0.051, 0.3722, 0.3722) ,
+                                  (0.1059, 0.0, 0.0) ,
+                                  (0.1569, 0.7202, 0.7202) ,
+                                  (0.1608, 0.7537, 0.7537) ,
+                                  (0.1647, 0.7752, 0.7752) ,
+                                  (0.2157, 1.0, 1.0) ,
+                                  (0.2588, 0.9804, 0.9804) ,
+                                  (0.2706, 0.9804, 0.9804) ,
+                                  (0.3176, 1.0, 1.0) ,
+                                  (0.3686, 0.8081, 0.8081) ,
+                                  (0.4275, 1.0, 1.0) ,
+                                  (0.5216, 1.0, 1.0) ,
+                                  (0.6314, 0.7292, 0.7292) ,
+                                  (0.6863, 0.2796, 0.2796) ,
+                                  (0.7451, 0.0, 0.0) ,
+                                  (0.7922, 0.0, 0.0) ,
+                                  (0.8431, 0.1753, 0.1753) ,
+                                  (0.898, 0.5, 0.5) ,
+                                  (1.0, 0.9725, 0.9725)
+                                  },
+                              new triple[] {  // blue
+                                (0.0, 0.502, 0.502) ,
+                                  (0.051, 0.0222, 0.0222) ,
+                                  (0.1098, 1.0, 1.0) ,
+                                  (0.2039, 1.0, 1.0) ,
+                                  (0.2627, 0.6145, 0.6145) ,
+                                  (0.3216, 0.0, 0.0) ,
+                                  (0.4157, 0.0, 0.0) ,
+                                  (0.4745, 0.2342, 0.2342) ,
+                                  (0.5333, 0.0, 0.0) ,
+                                  (0.5804, 0.0, 0.0) ,
+                                  (0.6314, 0.0549, 0.0549) ,
+                                  (0.6902, 0.0, 0.0) ,
+                                  (0.7373, 0.0, 0.0) ,
+                                  (0.7922, 0.9738, 0.9738) ,
+                                  (0.8, 1.0, 1.0) ,
+                                  (0.8431, 1.0, 1.0) ,
+                                  (0.898, 0.9341, 0.9341) ,
+                                  (1.0, 0.9961, 0.9961)
+                                  }
+                              );
 
 
 seg_data gist_stern = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.0547, 1.0, 1.0) ,
-     (0.25, 0.027, 0.25) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0, 0, 0) ,
-     (1, 1, 1)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.5, 1.0, 1.0) ,
-     (0.735, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                               new triple[] {  // red
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0547, 1.0, 1.0) ,
+                                   (0.25, 0.027, 0.25) ,
+                                   (1.0, 1.0, 1.0)
+                                   },
+                               new triple[] {  // green
+                                 (0, 0, 0) ,
+                                   (1, 1, 1)
+                                   },
+                               new triple[] {  // blue
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.5, 1.0, 1.0) ,
+                                   (0.735, 0.0, 0.0) ,
+                                   (1.0, 1.0, 1.0)
+                                   }
+                               );
 
 
 seg_data gray = seg_data(
-  new triple[] {  // red
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  },
-  new triple[] {  // green
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  },
-  new triple[] {  // blue
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             }
+                         );
 
 
 seg_data hot = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0416, 0.0416) ,
-     (0.365079, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.0, 0.0) ,
-     (0.746032, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.746032, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 0.0416, 0.0416) ,
+                            (0.365079, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0.0, 0.0) ,
+                            (0.365079, 0.0, 0.0) ,
+                            (0.746032, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.0, 0.0) ,
+                            (0.746032, 0.0, 0.0) ,
+                            (1.0, 1.0, 1.0)
+                            }
+                        );
 
 
 seg_data hsv = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (0.15873, 1.0, 1.0) ,
-     (0.174603, 0.96875, 0.96875) ,
-     (0.333333, 0.03125, 0.03125) ,
-     (0.349206, 0.0, 0.0) ,
-     (0.666667, 0.0, 0.0) ,
-     (0.68254, 0.03125, 0.03125) ,
-     (0.84127, 0.96875, 0.96875) ,
-     (0.857143, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.15873, 0.9375, 0.9375) ,
-     (0.174603, 1.0, 1.0) ,
-     (0.507937, 1.0, 1.0) ,
-     (0.666667, 0.0625, 0.0625) ,
-     (0.68254, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.333333, 0.0, 0.0) ,
-     (0.349206, 0.0625, 0.0625) ,
-     (0.507937, 1.0, 1.0) ,
-     (0.84127, 1.0, 1.0) ,
-     (0.857143, 0.9375, 0.9375) ,
-     (1.0, 0.09375, 0.09375)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 1.0, 1.0) ,
+                            (0.15873, 1.0, 1.0) ,
+                            (0.174603, 0.96875, 0.96875) ,
+                            (0.333333, 0.03125, 0.03125) ,
+                            (0.349206, 0.0, 0.0) ,
+                            (0.666667, 0.0, 0.0) ,
+                            (0.68254, 0.03125, 0.03125) ,
+                            (0.84127, 0.96875, 0.96875) ,
+                            (0.857143, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0.0, 0.0) ,
+                            (0.15873, 0.9375, 0.9375) ,
+                            (0.174603, 1.0, 1.0) ,
+                            (0.507937, 1.0, 1.0) ,
+                            (0.666667, 0.0625, 0.0625) ,
+                            (0.68254, 0.0, 0.0) ,
+                            (1.0, 0.0, 0.0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.0, 0.0) ,
+                            (0.333333, 0.0, 0.0) ,
+                            (0.349206, 0.0625, 0.0625) ,
+                            (0.507937, 1.0, 1.0) ,
+                            (0.84127, 1.0, 1.0) ,
+                            (0.857143, 0.9375, 0.9375) ,
+                            (1.0, 0.09375, 0.09375)
+                            }
+                        );
 
 
 seg_data jet = seg_data(
-  new triple[] {  // red
-     (0.0, 0, 0) ,
-     (0.35, 0, 0) ,
-     (0.66, 1, 1) ,
-     (0.89, 1, 1) ,
-     (1, 0.5, 0.5)
-  },
-  new triple[] {  // green
-     (0.0, 0, 0) ,
-     (0.125, 0, 0) ,
-     (0.375, 1, 1) ,
-     (0.64, 1, 1) ,
-     (0.91, 0, 0) ,
-     (1, 0, 0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.5, 0.5) ,
-     (0.11, 1, 1) ,
-     (0.34, 1, 1) ,
-     (0.65, 0, 0) ,
-     (1, 0, 0)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 0, 0) ,
+                            (0.35, 0, 0) ,
+                            (0.66, 1, 1) ,
+                            (0.89, 1, 1) ,
+                            (1, 0.5, 0.5)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0, 0) ,
+                            (0.125, 0, 0) ,
+                            (0.375, 1, 1) ,
+                            (0.64, 1, 1) ,
+                            (0.91, 0, 0) ,
+                            (1, 0, 0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.5, 0.5) ,
+                            (0.11, 1, 1) ,
+                            (0.34, 1, 1) ,
+                            (0.65, 0, 0) ,
+                            (1, 0, 0)
+                            }
+                        );
 
 
 seg_data nipy_spectral = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.4667, 0.4667) ,
-     (0.1, 0.5333, 0.5333) ,
-     (0.15, 0.0, 0.0) ,
-     (0.2, 0.0, 0.0) ,
-     (0.25, 0.0, 0.0) ,
-     (0.3, 0.0, 0.0) ,
-     (0.35, 0.0, 0.0) ,
-     (0.4, 0.0, 0.0) ,
-     (0.45, 0.0, 0.0) ,
-     (0.5, 0.0, 0.0) ,
-     (0.55, 0.0, 0.0) ,
-     (0.6, 0.0, 0.0) ,
-     (0.65, 0.7333, 0.7333) ,
-     (0.7, 0.9333, 0.9333) ,
-     (0.75, 1.0, 1.0) ,
-     (0.8, 1.0, 1.0) ,
-     (0.85, 1.0, 1.0) ,
-     (0.9, 0.8667, 0.8667) ,
-     (0.95, 0.8, 0.8) ,
-     (1.0, 0.8, 0.8)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.0, 0.0) ,
-     (0.1, 0.0, 0.0) ,
-     (0.15, 0.0, 0.0) ,
-     (0.2, 0.0, 0.0) ,
-     (0.25, 0.4667, 0.4667) ,
-     (0.3, 0.6, 0.6) ,
-     (0.35, 0.6667, 0.6667) ,
-     (0.4, 0.6667, 0.6667) ,
-     (0.45, 0.6, 0.6) ,
-     (0.5, 0.7333, 0.7333) ,
-     (0.55, 0.8667, 0.8667) ,
-     (0.6, 1.0, 1.0) ,
-     (0.65, 1.0, 1.0) ,
-     (0.7, 0.9333, 0.9333) ,
-     (0.75, 0.8, 0.8) ,
-     (0.8, 0.6, 0.6) ,
-     (0.85, 0.0, 0.0) ,
-     (0.9, 0.0, 0.0) ,
-     (0.95, 0.0, 0.0) ,
-     (1.0, 0.8, 0.8)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.5333, 0.5333) ,
-     (0.1, 0.6, 0.6) ,
-     (0.15, 0.6667, 0.6667) ,
-     (0.2, 0.8667, 0.8667) ,
-     (0.25, 0.8667, 0.8667) ,
-     (0.3, 0.8667, 0.8667) ,
-     (0.35, 0.6667, 0.6667) ,
-     (0.4, 0.5333, 0.5333) ,
-     (0.45, 0.0, 0.0) ,
-     (0.5, 0.0, 0.0) ,
-     (0.55, 0.0, 0.0) ,
-     (0.6, 0.0, 0.0) ,
-     (0.65, 0.0, 0.0) ,
-     (0.7, 0.0, 0.0) ,
-     (0.75, 0.0, 0.0) ,
-     (0.8, 0.0, 0.0) ,
-     (0.85, 0.0, 0.0) ,
-     (0.9, 0.0, 0.0) ,
-     (0.95, 0.0, 0.0) ,
-     (1.0, 0.8, 0.8)
-  }
-);
+                                  new triple[] {  // red
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.4667, 0.4667) ,
+                                      (0.1, 0.5333, 0.5333) ,
+                                      (0.15, 0.0, 0.0) ,
+                                      (0.2, 0.0, 0.0) ,
+                                      (0.25, 0.0, 0.0) ,
+                                      (0.3, 0.0, 0.0) ,
+                                      (0.35, 0.0, 0.0) ,
+                                      (0.4, 0.0, 0.0) ,
+                                      (0.45, 0.0, 0.0) ,
+                                      (0.5, 0.0, 0.0) ,
+                                      (0.55, 0.0, 0.0) ,
+                                      (0.6, 0.0, 0.0) ,
+                                      (0.65, 0.7333, 0.7333) ,
+                                      (0.7, 0.9333, 0.9333) ,
+                                      (0.75, 1.0, 1.0) ,
+                                      (0.8, 1.0, 1.0) ,
+                                      (0.85, 1.0, 1.0) ,
+                                      (0.9, 0.8667, 0.8667) ,
+                                      (0.95, 0.8, 0.8) ,
+                                      (1.0, 0.8, 0.8)
+                                      },
+                                  new triple[] {  // green
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.0, 0.0) ,
+                                      (0.1, 0.0, 0.0) ,
+                                      (0.15, 0.0, 0.0) ,
+                                      (0.2, 0.0, 0.0) ,
+                                      (0.25, 0.4667, 0.4667) ,
+                                      (0.3, 0.6, 0.6) ,
+                                      (0.35, 0.6667, 0.6667) ,
+                                      (0.4, 0.6667, 0.6667) ,
+                                      (0.45, 0.6, 0.6) ,
+                                      (0.5, 0.7333, 0.7333) ,
+                                      (0.55, 0.8667, 0.8667) ,
+                                      (0.6, 1.0, 1.0) ,
+                                      (0.65, 1.0, 1.0) ,
+                                      (0.7, 0.9333, 0.9333) ,
+                                      (0.75, 0.8, 0.8) ,
+                                      (0.8, 0.6, 0.6) ,
+                                      (0.85, 0.0, 0.0) ,
+                                      (0.9, 0.0, 0.0) ,
+                                      (0.95, 0.0, 0.0) ,
+                                      (1.0, 0.8, 0.8)
+                                      },
+                                  new triple[] {  // blue
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.5333, 0.5333) ,
+                                      (0.1, 0.6, 0.6) ,
+                                      (0.15, 0.6667, 0.6667) ,
+                                      (0.2, 0.8667, 0.8667) ,
+                                      (0.25, 0.8667, 0.8667) ,
+                                      (0.3, 0.8667, 0.8667) ,
+                                      (0.35, 0.6667, 0.6667) ,
+                                      (0.4, 0.5333, 0.5333) ,
+                                      (0.45, 0.0, 0.0) ,
+                                      (0.5, 0.0, 0.0) ,
+                                      (0.55, 0.0, 0.0) ,
+                                      (0.6, 0.0, 0.0) ,
+                                      (0.65, 0.0, 0.0) ,
+                                      (0.7, 0.0, 0.0) ,
+                                      (0.75, 0.0, 0.0) ,
+                                      (0.8, 0.0, 0.0) ,
+                                      (0.85, 0.0, 0.0) ,
+                                      (0.9, 0.0, 0.0) ,
+                                      (0.95, 0.0, 0.0) ,
+                                      (1.0, 0.8, 0.8)
+                                      }
+                                  );
 
 
 seg_data pink = seg_data(
-  new triple[] {  // red
-     (0.0, 0.1178, 0.1178) ,
-     (0.015873, 0.195857, 0.195857) ,
-     (0.031746, 0.250661, 0.250661) ,
-     (0.047619, 0.295468, 0.295468) ,
-     (0.063492, 0.334324, 0.334324) ,
-     (0.079365, 0.369112, 0.369112) ,
-     (0.095238, 0.400892, 0.400892) ,
-     (0.111111, 0.430331, 0.430331) ,
-     (0.126984, 0.457882, 0.457882) ,
-     (0.142857, 0.483867, 0.483867) ,
-     (0.15873, 0.508525, 0.508525) ,
-     (0.174603, 0.532042, 0.532042) ,
-     (0.190476, 0.554563, 0.554563) ,
-     (0.206349, 0.576204, 0.576204) ,
-     (0.222222, 0.597061, 0.597061) ,
-     (0.238095, 0.617213, 0.617213) ,
-     (0.253968, 0.636729, 0.636729) ,
-     (0.269841, 0.655663, 0.655663) ,
-     (0.285714, 0.674066, 0.674066) ,
-     (0.301587, 0.69198, 0.69198) ,
-     (0.31746, 0.709441, 0.709441) ,
-     (0.333333, 0.726483, 0.726483) ,
-     (0.349206, 0.743134, 0.743134) ,
-     (0.365079, 0.759421, 0.759421) ,
-     (0.380952, 0.766356, 0.766356) ,
-     (0.396825, 0.773229, 0.773229) ,
-     (0.412698, 0.780042, 0.780042) ,
-     (0.428571, 0.786796, 0.786796) ,
-     (0.444444, 0.793492, 0.793492) ,
-     (0.460317, 0.800132, 0.800132) ,
-     (0.47619, 0.806718, 0.806718) ,
-     (0.492063, 0.81325, 0.81325) ,
-     (0.507937, 0.81973, 0.81973) ,
-     (0.52381, 0.82616, 0.82616) ,
-     (0.539683, 0.832539, 0.832539) ,
-     (0.555556, 0.83887, 0.83887) ,
-     (0.571429, 0.845154, 0.845154) ,
-     (0.587302, 0.851392, 0.851392) ,
-     (0.603175, 0.857584, 0.857584) ,
-     (0.619048, 0.863731, 0.863731) ,
-     (0.634921, 0.869835, 0.869835) ,
-     (0.650794, 0.875897, 0.875897) ,
-     (0.666667, 0.881917, 0.881917) ,
-     (0.68254, 0.887896, 0.887896) ,
-     (0.698413, 0.893835, 0.893835) ,
-     (0.714286, 0.899735, 0.899735) ,
-     (0.730159, 0.905597, 0.905597) ,
-     (0.746032, 0.911421, 0.911421) ,
-     (0.761905, 0.917208, 0.917208) ,
-     (0.777778, 0.922958, 0.922958) ,
-     (0.793651, 0.928673, 0.928673) ,
-     (0.809524, 0.934353, 0.934353) ,
-     (0.825397, 0.939999, 0.939999) ,
-     (0.84127, 0.945611, 0.945611) ,
-     (0.857143, 0.95119, 0.95119) ,
-     (0.873016, 0.956736, 0.956736) ,
-     (0.888889, 0.96225, 0.96225) ,
-     (0.904762, 0.967733, 0.967733) ,
-     (0.920635, 0.973185, 0.973185) ,
-     (0.936508, 0.978607, 0.978607) ,
-     (0.952381, 0.983999, 0.983999) ,
-     (0.968254, 0.989361, 0.989361) ,
-     (0.984127, 0.994695, 0.994695) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.015873, 0.102869, 0.102869) ,
-     (0.031746, 0.145479, 0.145479) ,
-     (0.047619, 0.178174, 0.178174) ,
-     (0.063492, 0.205738, 0.205738) ,
-     (0.079365, 0.230022, 0.230022) ,
-     (0.095238, 0.251976, 0.251976) ,
-     (0.111111, 0.272166, 0.272166) ,
-     (0.126984, 0.290957, 0.290957) ,
-     (0.142857, 0.308607, 0.308607) ,
-     (0.15873, 0.3253, 0.3253) ,
-     (0.174603, 0.341178, 0.341178) ,
-     (0.190476, 0.356348, 0.356348) ,
-     (0.206349, 0.370899, 0.370899) ,
-     (0.222222, 0.3849, 0.3849) ,
-     (0.238095, 0.39841, 0.39841) ,
-     (0.253968, 0.411476, 0.411476) ,
-     (0.269841, 0.424139, 0.424139) ,
-     (0.285714, 0.436436, 0.436436) ,
-     (0.301587, 0.448395, 0.448395) ,
-     (0.31746, 0.460044, 0.460044) ,
-     (0.333333, 0.471405, 0.471405) ,
-     (0.349206, 0.482498, 0.482498) ,
-     (0.365079, 0.493342, 0.493342) ,
-     (0.380952, 0.517549, 0.517549) ,
-     (0.396825, 0.540674, 0.540674) ,
-     (0.412698, 0.562849, 0.562849) ,
-     (0.428571, 0.584183, 0.584183) ,
-     (0.444444, 0.604765, 0.604765) ,
-     (0.460317, 0.624669, 0.624669) ,
-     (0.47619, 0.643958, 0.643958) ,
-     (0.492063, 0.662687, 0.662687) ,
-     (0.507937, 0.6809, 0.6809) ,
-     (0.52381, 0.698638, 0.698638) ,
-     (0.539683, 0.715937, 0.715937) ,
-     (0.555556, 0.732828, 0.732828) ,
-     (0.571429, 0.749338, 0.749338) ,
-     (0.587302, 0.765493, 0.765493) ,
-     (0.603175, 0.781313, 0.781313) ,
-     (0.619048, 0.796819, 0.796819) ,
-     (0.634921, 0.812029, 0.812029) ,
-     (0.650794, 0.82696, 0.82696) ,
-     (0.666667, 0.841625, 0.841625) ,
-     (0.68254, 0.85604, 0.85604) ,
-     (0.698413, 0.870216, 0.870216) ,
-     (0.714286, 0.884164, 0.884164) ,
-     (0.730159, 0.897896, 0.897896) ,
-     (0.746032, 0.911421, 0.911421) ,
-     (0.761905, 0.917208, 0.917208) ,
-     (0.777778, 0.922958, 0.922958) ,
-     (0.793651, 0.928673, 0.928673) ,
-     (0.809524, 0.934353, 0.934353) ,
-     (0.825397, 0.939999, 0.939999) ,
-     (0.84127, 0.945611, 0.945611) ,
-     (0.857143, 0.95119, 0.95119) ,
-     (0.873016, 0.956736, 0.956736) ,
-     (0.888889, 0.96225, 0.96225) ,
-     (0.904762, 0.967733, 0.967733) ,
-     (0.920635, 0.973185, 0.973185) ,
-     (0.936508, 0.978607, 0.978607) ,
-     (0.952381, 0.983999, 0.983999) ,
-     (0.968254, 0.989361, 0.989361) ,
-     (0.984127, 0.994695, 0.994695) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.015873, 0.102869, 0.102869) ,
-     (0.031746, 0.145479, 0.145479) ,
-     (0.047619, 0.178174, 0.178174) ,
-     (0.063492, 0.205738, 0.205738) ,
-     (0.079365, 0.230022, 0.230022) ,
-     (0.095238, 0.251976, 0.251976) ,
-     (0.111111, 0.272166, 0.272166) ,
-     (0.126984, 0.290957, 0.290957) ,
-     (0.142857, 0.308607, 0.308607) ,
-     (0.15873, 0.3253, 0.3253) ,
-     (0.174603, 0.341178, 0.341178) ,
-     (0.190476, 0.356348, 0.356348) ,
-     (0.206349, 0.370899, 0.370899) ,
-     (0.222222, 0.3849, 0.3849) ,
-     (0.238095, 0.39841, 0.39841) ,
-     (0.253968, 0.411476, 0.411476) ,
-     (0.269841, 0.424139, 0.424139) ,
-     (0.285714, 0.436436, 0.436436) ,
-     (0.301587, 0.448395, 0.448395) ,
-     (0.31746, 0.460044, 0.460044) ,
-     (0.333333, 0.471405, 0.471405) ,
-     (0.349206, 0.482498, 0.482498) ,
-     (0.365079, 0.493342, 0.493342) ,
-     (0.380952, 0.503953, 0.503953) ,
-     (0.396825, 0.514344, 0.514344) ,
-     (0.412698, 0.524531, 0.524531) ,
-     (0.428571, 0.534522, 0.534522) ,
-     (0.444444, 0.544331, 0.544331) ,
-     (0.460317, 0.553966, 0.553966) ,
-     (0.47619, 0.563436, 0.563436) ,
-     (0.492063, 0.57275, 0.57275) ,
-     (0.507937, 0.581914, 0.581914) ,
-     (0.52381, 0.590937, 0.590937) ,
-     (0.539683, 0.599824, 0.599824) ,
-     (0.555556, 0.608581, 0.608581) ,
-     (0.571429, 0.617213, 0.617213) ,
-     (0.587302, 0.625727, 0.625727) ,
-     (0.603175, 0.634126, 0.634126) ,
-     (0.619048, 0.642416, 0.642416) ,
-     (0.634921, 0.6506, 0.6506) ,
-     (0.650794, 0.658682, 0.658682) ,
-     (0.666667, 0.666667, 0.666667) ,
-     (0.68254, 0.674556, 0.674556) ,
-     (0.698413, 0.682355, 0.682355) ,
-     (0.714286, 0.690066, 0.690066) ,
-     (0.730159, 0.697691, 0.697691) ,
-     (0.746032, 0.705234, 0.705234) ,
-     (0.761905, 0.727166, 0.727166) ,
-     (0.777778, 0.748455, 0.748455) ,
-     (0.793651, 0.769156, 0.769156) ,
-     (0.809524, 0.789314, 0.789314) ,
-     (0.825397, 0.808969, 0.808969) ,
-     (0.84127, 0.828159, 0.828159) ,
-     (0.857143, 0.846913, 0.846913) ,
-     (0.873016, 0.865261, 0.865261) ,
-     (0.888889, 0.883229, 0.883229) ,
-     (0.904762, 0.900837, 0.900837) ,
-     (0.920635, 0.918109, 0.918109) ,
-     (0.936508, 0.935061, 0.935061) ,
-     (0.952381, 0.951711, 0.951711) ,
-     (0.968254, 0.968075, 0.968075) ,
-     (0.984127, 0.984167, 0.984167) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.1178, 0.1178) ,
+                             (0.015873, 0.195857, 0.195857) ,
+                             (0.031746, 0.250661, 0.250661) ,
+                             (0.047619, 0.295468, 0.295468) ,
+                             (0.063492, 0.334324, 0.334324) ,
+                             (0.079365, 0.369112, 0.369112) ,
+                             (0.095238, 0.400892, 0.400892) ,
+                             (0.111111, 0.430331, 0.430331) ,
+                             (0.126984, 0.457882, 0.457882) ,
+                             (0.142857, 0.483867, 0.483867) ,
+                             (0.15873, 0.508525, 0.508525) ,
+                             (0.174603, 0.532042, 0.532042) ,
+                             (0.190476, 0.554563, 0.554563) ,
+                             (0.206349, 0.576204, 0.576204) ,
+                             (0.222222, 0.597061, 0.597061) ,
+                             (0.238095, 0.617213, 0.617213) ,
+                             (0.253968, 0.636729, 0.636729) ,
+                             (0.269841, 0.655663, 0.655663) ,
+                             (0.285714, 0.674066, 0.674066) ,
+                             (0.301587, 0.69198, 0.69198) ,
+                             (0.31746, 0.709441, 0.709441) ,
+                             (0.333333, 0.726483, 0.726483) ,
+                             (0.349206, 0.743134, 0.743134) ,
+                             (0.365079, 0.759421, 0.759421) ,
+                             (0.380952, 0.766356, 0.766356) ,
+                             (0.396825, 0.773229, 0.773229) ,
+                             (0.412698, 0.780042, 0.780042) ,
+                             (0.428571, 0.786796, 0.786796) ,
+                             (0.444444, 0.793492, 0.793492) ,
+                             (0.460317, 0.800132, 0.800132) ,
+                             (0.47619, 0.806718, 0.806718) ,
+                             (0.492063, 0.81325, 0.81325) ,
+                             (0.507937, 0.81973, 0.81973) ,
+                             (0.52381, 0.82616, 0.82616) ,
+                             (0.539683, 0.832539, 0.832539) ,
+                             (0.555556, 0.83887, 0.83887) ,
+                             (0.571429, 0.845154, 0.845154) ,
+                             (0.587302, 0.851392, 0.851392) ,
+                             (0.603175, 0.857584, 0.857584) ,
+                             (0.619048, 0.863731, 0.863731) ,
+                             (0.634921, 0.869835, 0.869835) ,
+                             (0.650794, 0.875897, 0.875897) ,
+                             (0.666667, 0.881917, 0.881917) ,
+                             (0.68254, 0.887896, 0.887896) ,
+                             (0.698413, 0.893835, 0.893835) ,
+                             (0.714286, 0.899735, 0.899735) ,
+                             (0.730159, 0.905597, 0.905597) ,
+                             (0.746032, 0.911421, 0.911421) ,
+                             (0.761905, 0.917208, 0.917208) ,
+                             (0.777778, 0.922958, 0.922958) ,
+                             (0.793651, 0.928673, 0.928673) ,
+                             (0.809524, 0.934353, 0.934353) ,
+                             (0.825397, 0.939999, 0.939999) ,
+                             (0.84127, 0.945611, 0.945611) ,
+                             (0.857143, 0.95119, 0.95119) ,
+                             (0.873016, 0.956736, 0.956736) ,
+                             (0.888889, 0.96225, 0.96225) ,
+                             (0.904762, 0.967733, 0.967733) ,
+                             (0.920635, 0.973185, 0.973185) ,
+                             (0.936508, 0.978607, 0.978607) ,
+                             (0.952381, 0.983999, 0.983999) ,
+                             (0.968254, 0.989361, 0.989361) ,
+                             (0.984127, 0.994695, 0.994695) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0.0, 0.0) ,
+                             (0.015873, 0.102869, 0.102869) ,
+                             (0.031746, 0.145479, 0.145479) ,
+                             (0.047619, 0.178174, 0.178174) ,
+                             (0.063492, 0.205738, 0.205738) ,
+                             (0.079365, 0.230022, 0.230022) ,
+                             (0.095238, 0.251976, 0.251976) ,
+                             (0.111111, 0.272166, 0.272166) ,
+                             (0.126984, 0.290957, 0.290957) ,
+                             (0.142857, 0.308607, 0.308607) ,
+                             (0.15873, 0.3253, 0.3253) ,
+                             (0.174603, 0.341178, 0.341178) ,
+                             (0.190476, 0.356348, 0.356348) ,
+                             (0.206349, 0.370899, 0.370899) ,
+                             (0.222222, 0.3849, 0.3849) ,
+                             (0.238095, 0.39841, 0.39841) ,
+                             (0.253968, 0.411476, 0.411476) ,
+                             (0.269841, 0.424139, 0.424139) ,
+                             (0.285714, 0.436436, 0.436436) ,
+                             (0.301587, 0.448395, 0.448395) ,
+                             (0.31746, 0.460044, 0.460044) ,
+                             (0.333333, 0.471405, 0.471405) ,
+                             (0.349206, 0.482498, 0.482498) ,
+                             (0.365079, 0.493342, 0.493342) ,
+                             (0.380952, 0.517549, 0.517549) ,
+                             (0.396825, 0.540674, 0.540674) ,
+                             (0.412698, 0.562849, 0.562849) ,
+                             (0.428571, 0.584183, 0.584183) ,
+                             (0.444444, 0.604765, 0.604765) ,
+                             (0.460317, 0.624669, 0.624669) ,
+                             (0.47619, 0.643958, 0.643958) ,
+                             (0.492063, 0.662687, 0.662687) ,
+                             (0.507937, 0.6809, 0.6809) ,
+                             (0.52381, 0.698638, 0.698638) ,
+                             (0.539683, 0.715937, 0.715937) ,
+                             (0.555556, 0.732828, 0.732828) ,
+                             (0.571429, 0.749338, 0.749338) ,
+                             (0.587302, 0.765493, 0.765493) ,
+                             (0.603175, 0.781313, 0.781313) ,
+                             (0.619048, 0.796819, 0.796819) ,
+                             (0.634921, 0.812029, 0.812029) ,
+                             (0.650794, 0.82696, 0.82696) ,
+                             (0.666667, 0.841625, 0.841625) ,
+                             (0.68254, 0.85604, 0.85604) ,
+                             (0.698413, 0.870216, 0.870216) ,
+                             (0.714286, 0.884164, 0.884164) ,
+                             (0.730159, 0.897896, 0.897896) ,
+                             (0.746032, 0.911421, 0.911421) ,
+                             (0.761905, 0.917208, 0.917208) ,
+                             (0.777778, 0.922958, 0.922958) ,
+                             (0.793651, 0.928673, 0.928673) ,
+                             (0.809524, 0.934353, 0.934353) ,
+                             (0.825397, 0.939999, 0.939999) ,
+                             (0.84127, 0.945611, 0.945611) ,
+                             (0.857143, 0.95119, 0.95119) ,
+                             (0.873016, 0.956736, 0.956736) ,
+                             (0.888889, 0.96225, 0.96225) ,
+                             (0.904762, 0.967733, 0.967733) ,
+                             (0.920635, 0.973185, 0.973185) ,
+                             (0.936508, 0.978607, 0.978607) ,
+                             (0.952381, 0.983999, 0.983999) ,
+                             (0.968254, 0.989361, 0.989361) ,
+                             (0.984127, 0.994695, 0.994695) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0.0, 0.0) ,
+                             (0.015873, 0.102869, 0.102869) ,
+                             (0.031746, 0.145479, 0.145479) ,
+                             (0.047619, 0.178174, 0.178174) ,
+                             (0.063492, 0.205738, 0.205738) ,
+                             (0.079365, 0.230022, 0.230022) ,
+                             (0.095238, 0.251976, 0.251976) ,
+                             (0.111111, 0.272166, 0.272166) ,
+                             (0.126984, 0.290957, 0.290957) ,
+                             (0.142857, 0.308607, 0.308607) ,
+                             (0.15873, 0.3253, 0.3253) ,
+                             (0.174603, 0.341178, 0.341178) ,
+                             (0.190476, 0.356348, 0.356348) ,
+                             (0.206349, 0.370899, 0.370899) ,
+                             (0.222222, 0.3849, 0.3849) ,
+                             (0.238095, 0.39841, 0.39841) ,
+                             (0.253968, 0.411476, 0.411476) ,
+                             (0.269841, 0.424139, 0.424139) ,
+                             (0.285714, 0.436436, 0.436436) ,
+                             (0.301587, 0.448395, 0.448395) ,
+                             (0.31746, 0.460044, 0.460044) ,
+                             (0.333333, 0.471405, 0.471405) ,
+                             (0.349206, 0.482498, 0.482498) ,
+                             (0.365079, 0.493342, 0.493342) ,
+                             (0.380952, 0.503953, 0.503953) ,
+                             (0.396825, 0.514344, 0.514344) ,
+                             (0.412698, 0.524531, 0.524531) ,
+                             (0.428571, 0.534522, 0.534522) ,
+                             (0.444444, 0.544331, 0.544331) ,
+                             (0.460317, 0.553966, 0.553966) ,
+                             (0.47619, 0.563436, 0.563436) ,
+                             (0.492063, 0.57275, 0.57275) ,
+                             (0.507937, 0.581914, 0.581914) ,
+                             (0.52381, 0.590937, 0.590937) ,
+                             (0.539683, 0.599824, 0.599824) ,
+                             (0.555556, 0.608581, 0.608581) ,
+                             (0.571429, 0.617213, 0.617213) ,
+                             (0.587302, 0.625727, 0.625727) ,
+                             (0.603175, 0.634126, 0.634126) ,
+                             (0.619048, 0.642416, 0.642416) ,
+                             (0.634921, 0.6506, 0.6506) ,
+                             (0.650794, 0.658682, 0.658682) ,
+                             (0.666667, 0.666667, 0.666667) ,
+                             (0.68254, 0.674556, 0.674556) ,
+                             (0.698413, 0.682355, 0.682355) ,
+                             (0.714286, 0.690066, 0.690066) ,
+                             (0.730159, 0.697691, 0.697691) ,
+                             (0.746032, 0.705234, 0.705234) ,
+                             (0.761905, 0.727166, 0.727166) ,
+                             (0.777778, 0.748455, 0.748455) ,
+                             (0.793651, 0.769156, 0.769156) ,
+                             (0.809524, 0.789314, 0.789314) ,
+                             (0.825397, 0.808969, 0.808969) ,
+                             (0.84127, 0.828159, 0.828159) ,
+                             (0.857143, 0.846913, 0.846913) ,
+                             (0.873016, 0.865261, 0.865261) ,
+                             (0.888889, 0.883229, 0.883229) ,
+                             (0.904762, 0.900837, 0.900837) ,
+                             (0.920635, 0.918109, 0.918109) ,
+                             (0.936508, 0.935061, 0.935061) ,
+                             (0.952381, 0.951711, 0.951711) ,
+                             (0.968254, 0.968075, 0.968075) ,
+                             (0.984127, 0.984167, 0.984167) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 list_data seismic = list_data(new pen[] {
-  rgb (0.0, 0.0, 0.3) ,
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0) ,
-  rgb (0.5, 0.0, 0.0)
-});
+    rgb (0.0, 0.0, 0.3) ,
+      rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0) ,
+      rgb (0.5, 0.0, 0.0)
+      });
 
 
 seg_data spring = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data summer = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.5, 0.5) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.4, 0.4) ,
-     (1.0, 0.4, 0.4)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.5, 0.5) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.4, 0.4) ,
+                               (1.0, 0.4, 0.4)
+                               }
+                           );
 
 
 list_data tab10 = list_data(new pen[] {
-  rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
-  rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
-  rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
-  rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
-  rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
-  rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
-  rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
-  rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
-});
+    rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
+      rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
+      rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
+      rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
+      rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
+      rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
+      rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
+      rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
+      });
 
 
 list_data tab20 = list_data(new pen[] {
-  rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
-  rgb (0.6823529411764706, 0.7803921568627451, 0.9098039215686274) ,
-  rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
-  rgb (1.0, 0.7333333333333333, 0.47058823529411764) ,
-  rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.596078431372549, 0.8745098039215686, 0.5411764705882353) ,
-  rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
-  rgb (1.0, 0.596078431372549, 0.5882352941176471) ,
-  rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
-  rgb (0.7725490196078432, 0.6901960784313725, 0.8352941176470589) ,
-  rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
-  rgb (0.7686274509803922, 0.611764705882353, 0.5803921568627451) ,
-  rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
-  rgb (0.9686274509803922, 0.7137254901960784, 0.8235294117647058) ,
-  rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
-  rgb (0.7803921568627451, 0.7803921568627451, 0.7803921568627451) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
-  rgb (0.8588235294117647, 0.8588235294117647, 0.5529411764705883) ,
-  rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529) ,
-  rgb (0.6196078431372549, 0.8549019607843137, 0.8980392156862745)
-});
+    rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
+      rgb (0.6823529411764706, 0.7803921568627451, 0.9098039215686274) ,
+      rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
+      rgb (1.0, 0.7333333333333333, 0.47058823529411764) ,
+      rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.596078431372549, 0.8745098039215686, 0.5411764705882353) ,
+      rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
+      rgb (1.0, 0.596078431372549, 0.5882352941176471) ,
+      rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
+      rgb (0.7725490196078432, 0.6901960784313725, 0.8352941176470589) ,
+      rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
+      rgb (0.7686274509803922, 0.611764705882353, 0.5803921568627451) ,
+      rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
+      rgb (0.9686274509803922, 0.7137254901960784, 0.8235294117647058) ,
+      rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
+      rgb (0.7803921568627451, 0.7803921568627451, 0.7803921568627451) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
+      rgb (0.8588235294117647, 0.8588235294117647, 0.5529411764705883) ,
+      rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529) ,
+      rgb (0.6196078431372549, 0.8549019607843137, 0.8980392156862745)
+      });
 
 
 list_data tab20b = list_data(new pen[] {
-  rgb (0.2235294117647059, 0.23137254901960785, 0.4745098039215686) ,
-  rgb (0.3215686274509804, 0.32941176470588235, 0.6392156862745098) ,
-  rgb (0.4196078431372549, 0.43137254901960786, 0.8117647058823529) ,
-  rgb (0.611764705882353, 0.6196078431372549, 0.8705882352941177) ,
-  rgb (0.38823529411764707, 0.4745098039215686, 0.2235294117647059) ,
-  rgb (0.5490196078431373, 0.6352941176470588, 0.3215686274509804) ,
-  rgb (0.7098039215686275, 0.8117647058823529, 0.4196078431372549) ,
-  rgb (0.807843137254902, 0.8588235294117647, 0.611764705882353) ,
-  rgb (0.5490196078431373, 0.42745098039215684, 0.19215686274509805) ,
-  rgb (0.7411764705882353, 0.6196078431372549, 0.2235294117647059) ,
-  rgb (0.9058823529411765, 0.7294117647058823, 0.3215686274509804) ,
-  rgb (0.9058823529411765, 0.796078431372549, 0.5803921568627451) ,
-  rgb (0.5176470588235295, 0.23529411764705882, 0.2235294117647059) ,
-  rgb (0.6784313725490196, 0.28627450980392155, 0.2901960784313726) ,
-  rgb (0.8392156862745098, 0.3803921568627451, 0.4196078431372549) ,
-  rgb (0.9058823529411765, 0.5882352941176471, 0.611764705882353) ,
-  rgb (0.4823529411764706, 0.2549019607843137, 0.45098039215686275) ,
-  rgb (0.6470588235294118, 0.3176470588235294, 0.5803921568627451) ,
-  rgb (0.807843137254902, 0.42745098039215684, 0.7411764705882353) ,
-  rgb (0.8705882352941177, 0.6196078431372549, 0.8392156862745098)
-});
+    rgb (0.2235294117647059, 0.23137254901960785, 0.4745098039215686) ,
+      rgb (0.3215686274509804, 0.32941176470588235, 0.6392156862745098) ,
+      rgb (0.4196078431372549, 0.43137254901960786, 0.8117647058823529) ,
+      rgb (0.611764705882353, 0.6196078431372549, 0.8705882352941177) ,
+      rgb (0.38823529411764707, 0.4745098039215686, 0.2235294117647059) ,
+      rgb (0.5490196078431373, 0.6352941176470588, 0.3215686274509804) ,
+      rgb (0.7098039215686275, 0.8117647058823529, 0.4196078431372549) ,
+      rgb (0.807843137254902, 0.8588235294117647, 0.611764705882353) ,
+      rgb (0.5490196078431373, 0.42745098039215684, 0.19215686274509805) ,
+      rgb (0.7411764705882353, 0.6196078431372549, 0.2235294117647059) ,
+      rgb (0.9058823529411765, 0.7294117647058823, 0.3215686274509804) ,
+      rgb (0.9058823529411765, 0.796078431372549, 0.5803921568627451) ,
+      rgb (0.5176470588235295, 0.23529411764705882, 0.2235294117647059) ,
+      rgb (0.6784313725490196, 0.28627450980392155, 0.2901960784313726) ,
+      rgb (0.8392156862745098, 0.3803921568627451, 0.4196078431372549) ,
+      rgb (0.9058823529411765, 0.5882352941176471, 0.611764705882353) ,
+      rgb (0.4823529411764706, 0.2549019607843137, 0.45098039215686275) ,
+      rgb (0.6470588235294118, 0.3176470588235294, 0.5803921568627451) ,
+      rgb (0.807843137254902, 0.42745098039215684, 0.7411764705882353) ,
+      rgb (0.8705882352941177, 0.6196078431372549, 0.8392156862745098)
+      });
 
 
 list_data tab20c = list_data(new pen[] {
-  rgb (0.19215686274509805, 0.5098039215686274, 0.7411764705882353) ,
-  rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
-  rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
-  rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
-  rgb (0.9019607843137255, 0.3333333333333333, 0.050980392156862744) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
-  rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
-  rgb (0.19215686274509805, 0.6392156862745098, 0.32941176470588235) ,
-  rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
-  rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
-  rgb (0.4588235294117647, 0.4196078431372549, 0.6941176470588235) ,
-  rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
-  rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.38823529411764707, 0.38823529411764707, 0.38823529411764707) ,
-  rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
-  rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627)
-});
+    rgb (0.19215686274509805, 0.5098039215686274, 0.7411764705882353) ,
+      rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
+      rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
+      rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
+      rgb (0.9019607843137255, 0.3333333333333333, 0.050980392156862744) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
+      rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
+      rgb (0.19215686274509805, 0.6392156862745098, 0.32941176470588235) ,
+      rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
+      rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
+      rgb (0.4588235294117647, 0.4196078431372549, 0.6941176470588235) ,
+      rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
+      rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.38823529411764707, 0.38823529411764707, 0.38823529411764707) ,
+      rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
+      rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627)
+      });
 
 
 seg_data winter = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.5, 0.5)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.5, 0.5)
+                               }
+                           );
 
 
 seg_data wistia = seg_data(
-  new triple[] {  // red
-     (0.0, 0.8941176470588236, 0.8941176470588236) ,
-     (0.25, 1.0, 1.0) ,
-     (0.5, 1.0, 1.0) ,
-     (0.75, 1.0, 1.0) ,
-     (1.0, 0.9882352941176471, 0.9882352941176471)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (0.25, 0.9098039215686274, 0.9098039215686274) ,
-     (0.5, 0.7411764705882353, 0.7411764705882353) ,
-     (0.75, 0.6274509803921569, 0.6274509803921569) ,
-     (1.0, 0.4980392156862745, 0.4980392156862745)
-  },
-  new triple[] {  // blue
-     (0.0, 0.47843137254901963, 0.47843137254901963) ,
-     (0.25, 0.10196078431372549, 0.10196078431372549) ,
-     (0.5, 0.0, 0.0) ,
-     (0.75, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.8941176470588236, 0.8941176470588236) ,
+                               (0.25, 1.0, 1.0) ,
+                               (0.5, 1.0, 1.0) ,
+                               (0.75, 1.0, 1.0) ,
+                               (1.0, 0.9882352941176471, 0.9882352941176471)
+                               },
+                           new triple[] {  // green
+                             (0.0, 1.0, 1.0) ,
+                               (0.25, 0.9098039215686274, 0.9098039215686274) ,
+                               (0.5, 0.7411764705882353, 0.7411764705882353) ,
+                               (0.75, 0.6274509803921569, 0.6274509803921569) ,
+                               (1.0, 0.4980392156862745, 0.4980392156862745)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.47843137254901963, 0.47843137254901963) ,
+                               (0.25, 0.10196078431372549, 0.10196078431372549) ,
+                               (0.5, 0.0, 0.0) ,
+                               (0.75, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 list_data cividis = list_data(new pen[] {
-  rgb (0.0, 0.135112, 0.304751) ,
-  rgb (0.0, 0.138068, 0.311105) ,
-  rgb (0.0, 0.141013, 0.317579) ,
-  rgb (0.0, 0.143951, 0.323982) ,
-  rgb (0.0, 0.146877, 0.330479) ,
-  rgb (0.0, 0.149791, 0.337065) ,
-  rgb (0.0, 0.152673, 0.343704) ,
-  rgb (0.0, 0.155377, 0.3505) ,
-  rgb (0.0, 0.157932, 0.357521) ,
-  rgb (0.0, 0.160495, 0.364534) ,
-  rgb (0.0, 0.163058, 0.371608) ,
-  rgb (0.0, 0.165621, 0.378769) ,
-  rgb (0.0, 0.168204, 0.385902) ,
-  rgb (0.0, 0.1708, 0.3931) ,
-  rgb (0.0, 0.17342, 0.400353) ,
-  rgb (0.0, 0.176082, 0.407577) ,
-  rgb (0.0, 0.178802, 0.414764) ,
-  rgb (0.0, 0.18161, 0.421859) ,
-  rgb (0.0, 0.18455, 0.428802) ,
-  rgb (0.0, 0.186915, 0.435532) ,
-  rgb (0.0, 0.188769, 0.439563) ,
-  rgb (0.0, 0.19095, 0.441085) ,
-  rgb (0.0, 0.193366, 0.441561) ,
-  rgb (0.003602, 0.195911, 0.441564) ,
-  rgb (0.017852, 0.198528, 0.441248) ,
-  rgb (0.03211, 0.201199, 0.440785) ,
-  rgb (0.046205, 0.203903, 0.440196) ,
-  rgb (0.058378, 0.206629, 0.439531) ,
-  rgb (0.068968, 0.209372, 0.438863) ,
-  rgb (0.078624, 0.212122, 0.438105) ,
-  rgb (0.087465, 0.214879, 0.437342) ,
-  rgb (0.095645, 0.217643, 0.436593) ,
-  rgb (0.103401, 0.220406, 0.43579) ,
-  rgb (0.110658, 0.22317, 0.435067) ,
-  rgb (0.117612, 0.225935, 0.434308) ,
-  rgb (0.124291, 0.228697, 0.433547) ,
-  rgb (0.130669, 0.231458, 0.43284) ,
-  rgb (0.13683, 0.234216, 0.432148) ,
-  rgb (0.142852, 0.236972, 0.431404) ,
-  rgb (0.148638, 0.239724, 0.430752) ,
-  rgb (0.154261, 0.242475, 0.43012) ,
-  rgb (0.159733, 0.245221, 0.429528) ,
-  rgb (0.165113, 0.247965, 0.428908) ,
-  rgb (0.170362, 0.250707, 0.428325) ,
-  rgb (0.17549, 0.253444, 0.42779) ,
-  rgb (0.180503, 0.25618, 0.427299) ,
-  rgb (0.185453, 0.258914, 0.426788) ,
-  rgb (0.190303, 0.261644, 0.426329) ,
-  rgb (0.195057, 0.264372, 0.425924) ,
-  rgb (0.199764, 0.267099, 0.425497) ,
-  rgb (0.204385, 0.269823, 0.425126) ,
-  rgb (0.208926, 0.272546, 0.424809) ,
-  rgb (0.213431, 0.275266, 0.42448) ,
-  rgb (0.217863, 0.277985, 0.424206) ,
-  rgb (0.222264, 0.280702, 0.423914) ,
-  rgb (0.226598, 0.283419, 0.423678) ,
-  rgb (0.230871, 0.286134, 0.423498) ,
-  rgb (0.23512, 0.288848, 0.423304) ,
-  rgb (0.239312, 0.291562, 0.423167) ,
-  rgb (0.243485, 0.294274, 0.423014) ,
-  rgb (0.247605, 0.296986, 0.422917) ,
-  rgb (0.251675, 0.299698, 0.422873) ,
-  rgb (0.255731, 0.302409, 0.422814) ,
-  rgb (0.25974, 0.30512, 0.42281) ,
-  rgb (0.263738, 0.307831, 0.422789) ,
-  rgb (0.267693, 0.310542, 0.422821) ,
-  rgb (0.271639, 0.313253, 0.422837) ,
-  rgb (0.275513, 0.315965, 0.422979) ,
-  rgb (0.279411, 0.318677, 0.423031) ,
-  rgb (0.28324, 0.32139, 0.423211) ,
-  rgb (0.287065, 0.324103, 0.423373) ,
-  rgb (0.290884, 0.326816, 0.423517) ,
-  rgb (0.294669, 0.329531, 0.423716) ,
-  rgb (0.298421, 0.332247, 0.423973) ,
-  rgb (0.302169, 0.334963, 0.424213) ,
-  rgb (0.305886, 0.337681, 0.424512) ,
-  rgb (0.309601, 0.340399, 0.42479) ,
-  rgb (0.313287, 0.34312, 0.42512) ,
-  rgb (0.316941, 0.345842, 0.425512) ,
-  rgb (0.320595, 0.348565, 0.425889) ,
-  rgb (0.32425, 0.351289, 0.42625) ,
-  rgb (0.327875, 0.354016, 0.42667) ,
-  rgb (0.331474, 0.356744, 0.427144) ,
-  rgb (0.335073, 0.359474, 0.427605) ,
-  rgb (0.338673, 0.362206, 0.428053) ,
-  rgb (0.342246, 0.364939, 0.428559) ,
-  rgb (0.345793, 0.367676, 0.429127) ,
-  rgb (0.349341, 0.370414, 0.429685) ,
-  rgb (0.352892, 0.373153, 0.430226) ,
-  rgb (0.356418, 0.375896, 0.430823) ,
-  rgb (0.359916, 0.378641, 0.431501) ,
-  rgb (0.363446, 0.381388, 0.432075) ,
-  rgb (0.366923, 0.384139, 0.432796) ,
-  rgb (0.37043, 0.38689, 0.433428) ,
-  rgb (0.373884, 0.389646, 0.434209) ,
-  rgb (0.377371, 0.392404, 0.43489) ,
-  rgb (0.38083, 0.395164, 0.435653) ,
-  rgb (0.384268, 0.397928, 0.436475) ,
-  rgb (0.387705, 0.400694, 0.437305) ,
-  rgb (0.391151, 0.403464, 0.438096) ,
-  rgb (0.394568, 0.406236, 0.438986) ,
-  rgb (0.397991, 0.409011, 0.439848) ,
-  rgb (0.401418, 0.41179, 0.440708) ,
-  rgb (0.40482, 0.414572, 0.441642) ,
-  rgb (0.408226, 0.417357, 0.44257) ,
-  rgb (0.411607, 0.420145, 0.443577) ,
-  rgb (0.414992, 0.422937, 0.444578) ,
-  rgb (0.418383, 0.425733, 0.44556) ,
-  rgb (0.421748, 0.428531, 0.44664) ,
-  rgb (0.42512, 0.431334, 0.447692) ,
-  rgb (0.428462, 0.43414, 0.448864) ,
-  rgb (0.431817, 0.43695, 0.449982) ,
-  rgb (0.435168, 0.439763, 0.451134) ,
-  rgb (0.438504, 0.44258, 0.452341) ,
-  rgb (0.44181, 0.445402, 0.453659) ,
-  rgb (0.445148, 0.448226, 0.454885) ,
-  rgb (0.448447, 0.451053, 0.456264) ,
-  rgb (0.451759, 0.453887, 0.457582) ,
-  rgb (0.455072, 0.456718, 0.458976) ,
-  rgb (0.458366, 0.459552, 0.460457) ,
-  rgb (0.461616, 0.462405, 0.461969) ,
-  rgb (0.464947, 0.465241, 0.463395) ,
-  rgb (0.468254, 0.468083, 0.464908) ,
-  rgb (0.471501, 0.47096, 0.466357) ,
-  rgb (0.474812, 0.473832, 0.467681) ,
-  rgb (0.478186, 0.476699, 0.468845) ,
-  rgb (0.481622, 0.479573, 0.469767) ,
-  rgb (0.485141, 0.482451, 0.470384) ,
-  rgb (0.488697, 0.485318, 0.471008) ,
-  rgb (0.492278, 0.488198, 0.471453) ,
-  rgb (0.495913, 0.491076, 0.471751) ,
-  rgb (0.499552, 0.49396, 0.472032) ,
-  rgb (0.503185, 0.496851, 0.472305) ,
-  rgb (0.506866, 0.499743, 0.472432) ,
-  rgb (0.51054, 0.502643, 0.47255) ,
-  rgb (0.514226, 0.505546, 0.47264) ,
-  rgb (0.51792, 0.508454, 0.472707) ,
-  rgb (0.521643, 0.511367, 0.472639) ,
-  rgb (0.525348, 0.514285, 0.47266) ,
-  rgb (0.529086, 0.517207, 0.472543) ,
-  rgb (0.532829, 0.520135, 0.472401) ,
-  rgb (0.536553, 0.523067, 0.472352) ,
-  rgb (0.540307, 0.526005, 0.472163) ,
-  rgb (0.544069, 0.528948, 0.471947) ,
-  rgb (0.54784, 0.531895, 0.471704) ,
-  rgb (0.551612, 0.534849, 0.471439) ,
-  rgb (0.555393, 0.537807, 0.471147) ,
-  rgb (0.559181, 0.540771, 0.470829) ,
-  rgb (0.562972, 0.543741, 0.470488) ,
-  rgb (0.566802, 0.546715, 0.469988) ,
-  rgb (0.570607, 0.549695, 0.469593) ,
-  rgb (0.574417, 0.552682, 0.469172) ,
-  rgb (0.578236, 0.555673, 0.468724) ,
-  rgb (0.582087, 0.55867, 0.468118) ,
-  rgb (0.585916, 0.561674, 0.467618) ,
-  rgb (0.589753, 0.564682, 0.46709) ,
-  rgb (0.593622, 0.567697, 0.466401) ,
-  rgb (0.597469, 0.570718, 0.465821) ,
-  rgb (0.601354, 0.573743, 0.465074) ,
-  rgb (0.605211, 0.576777, 0.464441) ,
-  rgb (0.609105, 0.579816, 0.463638) ,
-  rgb (0.612977, 0.582861, 0.46295) ,
-  rgb (0.616852, 0.585913, 0.462237) ,
-  rgb (0.620765, 0.58897, 0.461351) ,
-  rgb (0.624654, 0.592034, 0.460583) ,
-  rgb (0.628576, 0.595104, 0.459641) ,
-  rgb (0.632506, 0.59818, 0.458668) ,
-  rgb (0.636412, 0.601264, 0.457818) ,
-  rgb (0.640352, 0.604354, 0.456791) ,
-  rgb (0.64427, 0.60745, 0.455886) ,
-  rgb (0.648222, 0.610553, 0.454801) ,
-  rgb (0.652178, 0.613664, 0.453689) ,
-  rgb (0.656114, 0.61678, 0.452702) ,
-  rgb (0.660082, 0.619904, 0.451534) ,
-  rgb (0.664055, 0.623034, 0.450338) ,
-  rgb (0.668008, 0.626171, 0.44927) ,
-  rgb (0.671991, 0.629316, 0.448018) ,
-  rgb (0.675981, 0.632468, 0.446736) ,
-  rgb (0.679979, 0.635626, 0.445424) ,
-  rgb (0.68395, 0.638793, 0.444251) ,
-  rgb (0.687957, 0.641966, 0.442886) ,
-  rgb (0.691971, 0.645145, 0.441491) ,
-  rgb (0.695985, 0.648334, 0.440072) ,
-  rgb (0.700008, 0.651529, 0.438624) ,
-  rgb (0.704037, 0.654731, 0.437147) ,
-  rgb (0.708067, 0.657942, 0.435647) ,
-  rgb (0.712105, 0.66116, 0.434117) ,
-  rgb (0.716177, 0.664384, 0.432386) ,
-  rgb (0.720222, 0.667618, 0.430805) ,
-  rgb (0.724274, 0.670859, 0.429194) ,
-  rgb (0.728334, 0.674107, 0.427554) ,
-  rgb (0.732422, 0.677364, 0.425717) ,
-  rgb (0.736488, 0.680629, 0.424028) ,
-  rgb (0.740589, 0.6839, 0.422131) ,
-  rgb (0.744664, 0.687181, 0.420393) ,
-  rgb (0.748772, 0.69047, 0.418448) ,
-  rgb (0.752886, 0.693766, 0.416472) ,
-  rgb (0.756975, 0.697071, 0.414659) ,
-  rgb (0.761096, 0.700384, 0.412638) ,
-  rgb (0.765223, 0.703705, 0.410587) ,
-  rgb (0.769353, 0.707035, 0.408516) ,
-  rgb (0.773486, 0.710373, 0.406422) ,
-  rgb (0.777651, 0.713719, 0.404112) ,
-  rgb (0.781795, 0.717074, 0.401966) ,
-  rgb (0.785965, 0.720438, 0.399613) ,
-  rgb (0.790116, 0.72381, 0.397423) ,
-  rgb (0.794298, 0.72719, 0.395016) ,
-  rgb (0.79848, 0.73058, 0.392597) ,
-  rgb (0.802667, 0.733978, 0.390153) ,
-  rgb (0.806859, 0.737385, 0.387684) ,
-  rgb (0.811054, 0.740801, 0.385198) ,
-  rgb (0.815274, 0.744226, 0.382504) ,
-  rgb (0.819499, 0.747659, 0.379785) ,
-  rgb (0.823729, 0.751101, 0.377043) ,
-  rgb (0.827959, 0.754553, 0.374292) ,
-  rgb (0.832192, 0.758014, 0.371529) ,
-  rgb (0.836429, 0.761483, 0.368747) ,
-  rgb (0.840693, 0.764962, 0.365746) ,
-  rgb (0.844957, 0.76845, 0.362741) ,
-  rgb (0.849223, 0.771947, 0.359729) ,
-  rgb (0.853515, 0.775454, 0.3565) ,
-  rgb (0.857809, 0.778969, 0.353259) ,
-  rgb (0.862105, 0.782494, 0.350011) ,
-  rgb (0.866421, 0.786028, 0.346571) ,
-  rgb (0.870717, 0.789572, 0.343333) ,
-  rgb (0.875057, 0.793125, 0.339685) ,
-  rgb (0.879378, 0.796687, 0.336241) ,
-  rgb (0.88372, 0.800258, 0.332599) ,
-  rgb (0.888081, 0.803839, 0.32877) ,
-  rgb (0.89244, 0.80743, 0.324968) ,
-  rgb (0.896818, 0.81103, 0.320982) ,
-  rgb (0.901195, 0.814639, 0.317021) ,
-  rgb (0.905589, 0.818257, 0.312889) ,
-  rgb (0.91, 0.821885, 0.308594) ,
-  rgb (0.914407, 0.825522, 0.304348) ,
-  rgb (0.918828, 0.829168, 0.29996) ,
-  rgb (0.923279, 0.832822, 0.295244) ,
-  rgb (0.927724, 0.836486, 0.290611) ,
-  rgb (0.93218, 0.840159, 0.28588) ,
-  rgb (0.93666, 0.843841, 0.280876) ,
-  rgb (0.941147, 0.84753, 0.275815) ,
-  rgb (0.945654, 0.851228, 0.270532) ,
-  rgb (0.950178, 0.854933, 0.265085) ,
-  rgb (0.954725, 0.858646, 0.259365) ,
-  rgb (0.959284, 0.862365, 0.253563) ,
-  rgb (0.963872, 0.866089, 0.247445) ,
-  rgb (0.968469, 0.869819, 0.24131) ,
-  rgb (0.973114, 0.87355, 0.234677) ,
-  rgb (0.97778, 0.877281, 0.227954) ,
-  rgb (0.982497, 0.881008, 0.220878) ,
-  rgb (0.987293, 0.884718, 0.213336) ,
-  rgb (0.992218, 0.888385, 0.205468) ,
-  rgb (0.994847, 0.892954, 0.203445) ,
-  rgb (0.995249, 0.898384, 0.207561) ,
-  rgb (0.995503, 0.903866, 0.21237) ,
-  rgb (0.995737, 0.909344, 0.217772)
-});
+    rgb (0.0, 0.135112, 0.304751) ,
+      rgb (0.0, 0.138068, 0.311105) ,
+      rgb (0.0, 0.141013, 0.317579) ,
+      rgb (0.0, 0.143951, 0.323982) ,
+      rgb (0.0, 0.146877, 0.330479) ,
+      rgb (0.0, 0.149791, 0.337065) ,
+      rgb (0.0, 0.152673, 0.343704) ,
+      rgb (0.0, 0.155377, 0.3505) ,
+      rgb (0.0, 0.157932, 0.357521) ,
+      rgb (0.0, 0.160495, 0.364534) ,
+      rgb (0.0, 0.163058, 0.371608) ,
+      rgb (0.0, 0.165621, 0.378769) ,
+      rgb (0.0, 0.168204, 0.385902) ,
+      rgb (0.0, 0.1708, 0.3931) ,
+      rgb (0.0, 0.17342, 0.400353) ,
+      rgb (0.0, 0.176082, 0.407577) ,
+      rgb (0.0, 0.178802, 0.414764) ,
+      rgb (0.0, 0.18161, 0.421859) ,
+      rgb (0.0, 0.18455, 0.428802) ,
+      rgb (0.0, 0.186915, 0.435532) ,
+      rgb (0.0, 0.188769, 0.439563) ,
+      rgb (0.0, 0.19095, 0.441085) ,
+      rgb (0.0, 0.193366, 0.441561) ,
+      rgb (0.003602, 0.195911, 0.441564) ,
+      rgb (0.017852, 0.198528, 0.441248) ,
+      rgb (0.03211, 0.201199, 0.440785) ,
+      rgb (0.046205, 0.203903, 0.440196) ,
+      rgb (0.058378, 0.206629, 0.439531) ,
+      rgb (0.068968, 0.209372, 0.438863) ,
+      rgb (0.078624, 0.212122, 0.438105) ,
+      rgb (0.087465, 0.214879, 0.437342) ,
+      rgb (0.095645, 0.217643, 0.436593) ,
+      rgb (0.103401, 0.220406, 0.43579) ,
+      rgb (0.110658, 0.22317, 0.435067) ,
+      rgb (0.117612, 0.225935, 0.434308) ,
+      rgb (0.124291, 0.228697, 0.433547) ,
+      rgb (0.130669, 0.231458, 0.43284) ,
+      rgb (0.13683, 0.234216, 0.432148) ,
+      rgb (0.142852, 0.236972, 0.431404) ,
+      rgb (0.148638, 0.239724, 0.430752) ,
+      rgb (0.154261, 0.242475, 0.43012) ,
+      rgb (0.159733, 0.245221, 0.429528) ,
+      rgb (0.165113, 0.247965, 0.428908) ,
+      rgb (0.170362, 0.250707, 0.428325) ,
+      rgb (0.17549, 0.253444, 0.42779) ,
+      rgb (0.180503, 0.25618, 0.427299) ,
+      rgb (0.185453, 0.258914, 0.426788) ,
+      rgb (0.190303, 0.261644, 0.426329) ,
+      rgb (0.195057, 0.264372, 0.425924) ,
+      rgb (0.199764, 0.267099, 0.425497) ,
+      rgb (0.204385, 0.269823, 0.425126) ,
+      rgb (0.208926, 0.272546, 0.424809) ,
+      rgb (0.213431, 0.275266, 0.42448) ,
+      rgb (0.217863, 0.277985, 0.424206) ,
+      rgb (0.222264, 0.280702, 0.423914) ,
+      rgb (0.226598, 0.283419, 0.423678) ,
+      rgb (0.230871, 0.286134, 0.423498) ,
+      rgb (0.23512, 0.288848, 0.423304) ,
+      rgb (0.239312, 0.291562, 0.423167) ,
+      rgb (0.243485, 0.294274, 0.423014) ,
+      rgb (0.247605, 0.296986, 0.422917) ,
+      rgb (0.251675, 0.299698, 0.422873) ,
+      rgb (0.255731, 0.302409, 0.422814) ,
+      rgb (0.25974, 0.30512, 0.42281) ,
+      rgb (0.263738, 0.307831, 0.422789) ,
+      rgb (0.267693, 0.310542, 0.422821) ,
+      rgb (0.271639, 0.313253, 0.422837) ,
+      rgb (0.275513, 0.315965, 0.422979) ,
+      rgb (0.279411, 0.318677, 0.423031) ,
+      rgb (0.28324, 0.32139, 0.423211) ,
+      rgb (0.287065, 0.324103, 0.423373) ,
+      rgb (0.290884, 0.326816, 0.423517) ,
+      rgb (0.294669, 0.329531, 0.423716) ,
+      rgb (0.298421, 0.332247, 0.423973) ,
+      rgb (0.302169, 0.334963, 0.424213) ,
+      rgb (0.305886, 0.337681, 0.424512) ,
+      rgb (0.309601, 0.340399, 0.42479) ,
+      rgb (0.313287, 0.34312, 0.42512) ,
+      rgb (0.316941, 0.345842, 0.425512) ,
+      rgb (0.320595, 0.348565, 0.425889) ,
+      rgb (0.32425, 0.351289, 0.42625) ,
+      rgb (0.327875, 0.354016, 0.42667) ,
+      rgb (0.331474, 0.356744, 0.427144) ,
+      rgb (0.335073, 0.359474, 0.427605) ,
+      rgb (0.338673, 0.362206, 0.428053) ,
+      rgb (0.342246, 0.364939, 0.428559) ,
+      rgb (0.345793, 0.367676, 0.429127) ,
+      rgb (0.349341, 0.370414, 0.429685) ,
+      rgb (0.352892, 0.373153, 0.430226) ,
+      rgb (0.356418, 0.375896, 0.430823) ,
+      rgb (0.359916, 0.378641, 0.431501) ,
+      rgb (0.363446, 0.381388, 0.432075) ,
+      rgb (0.366923, 0.384139, 0.432796) ,
+      rgb (0.37043, 0.38689, 0.433428) ,
+      rgb (0.373884, 0.389646, 0.434209) ,
+      rgb (0.377371, 0.392404, 0.43489) ,
+      rgb (0.38083, 0.395164, 0.435653) ,
+      rgb (0.384268, 0.397928, 0.436475) ,
+      rgb (0.387705, 0.400694, 0.437305) ,
+      rgb (0.391151, 0.403464, 0.438096) ,
+      rgb (0.394568, 0.406236, 0.438986) ,
+      rgb (0.397991, 0.409011, 0.439848) ,
+      rgb (0.401418, 0.41179, 0.440708) ,
+      rgb (0.40482, 0.414572, 0.441642) ,
+      rgb (0.408226, 0.417357, 0.44257) ,
+      rgb (0.411607, 0.420145, 0.443577) ,
+      rgb (0.414992, 0.422937, 0.444578) ,
+      rgb (0.418383, 0.425733, 0.44556) ,
+      rgb (0.421748, 0.428531, 0.44664) ,
+      rgb (0.42512, 0.431334, 0.447692) ,
+      rgb (0.428462, 0.43414, 0.448864) ,
+      rgb (0.431817, 0.43695, 0.449982) ,
+      rgb (0.435168, 0.439763, 0.451134) ,
+      rgb (0.438504, 0.44258, 0.452341) ,
+      rgb (0.44181, 0.445402, 0.453659) ,
+      rgb (0.445148, 0.448226, 0.454885) ,
+      rgb (0.448447, 0.451053, 0.456264) ,
+      rgb (0.451759, 0.453887, 0.457582) ,
+      rgb (0.455072, 0.456718, 0.458976) ,
+      rgb (0.458366, 0.459552, 0.460457) ,
+      rgb (0.461616, 0.462405, 0.461969) ,
+      rgb (0.464947, 0.465241, 0.463395) ,
+      rgb (0.468254, 0.468083, 0.464908) ,
+      rgb (0.471501, 0.47096, 0.466357) ,
+      rgb (0.474812, 0.473832, 0.467681) ,
+      rgb (0.478186, 0.476699, 0.468845) ,
+      rgb (0.481622, 0.479573, 0.469767) ,
+      rgb (0.485141, 0.482451, 0.470384) ,
+      rgb (0.488697, 0.485318, 0.471008) ,
+      rgb (0.492278, 0.488198, 0.471453) ,
+      rgb (0.495913, 0.491076, 0.471751) ,
+      rgb (0.499552, 0.49396, 0.472032) ,
+      rgb (0.503185, 0.496851, 0.472305) ,
+      rgb (0.506866, 0.499743, 0.472432) ,
+      rgb (0.51054, 0.502643, 0.47255) ,
+      rgb (0.514226, 0.505546, 0.47264) ,
+      rgb (0.51792, 0.508454, 0.472707) ,
+      rgb (0.521643, 0.511367, 0.472639) ,
+      rgb (0.525348, 0.514285, 0.47266) ,
+      rgb (0.529086, 0.517207, 0.472543) ,
+      rgb (0.532829, 0.520135, 0.472401) ,
+      rgb (0.536553, 0.523067, 0.472352) ,
+      rgb (0.540307, 0.526005, 0.472163) ,
+      rgb (0.544069, 0.528948, 0.471947) ,
+      rgb (0.54784, 0.531895, 0.471704) ,
+      rgb (0.551612, 0.534849, 0.471439) ,
+      rgb (0.555393, 0.537807, 0.471147) ,
+      rgb (0.559181, 0.540771, 0.470829) ,
+      rgb (0.562972, 0.543741, 0.470488) ,
+      rgb (0.566802, 0.546715, 0.469988) ,
+      rgb (0.570607, 0.549695, 0.469593) ,
+      rgb (0.574417, 0.552682, 0.469172) ,
+      rgb (0.578236, 0.555673, 0.468724) ,
+      rgb (0.582087, 0.55867, 0.468118) ,
+      rgb (0.585916, 0.561674, 0.467618) ,
+      rgb (0.589753, 0.564682, 0.46709) ,
+      rgb (0.593622, 0.567697, 0.466401) ,
+      rgb (0.597469, 0.570718, 0.465821) ,
+      rgb (0.601354, 0.573743, 0.465074) ,
+      rgb (0.605211, 0.576777, 0.464441) ,
+      rgb (0.609105, 0.579816, 0.463638) ,
+      rgb (0.612977, 0.582861, 0.46295) ,
+      rgb (0.616852, 0.585913, 0.462237) ,
+      rgb (0.620765, 0.58897, 0.461351) ,
+      rgb (0.624654, 0.592034, 0.460583) ,
+      rgb (0.628576, 0.595104, 0.459641) ,
+      rgb (0.632506, 0.59818, 0.458668) ,
+      rgb (0.636412, 0.601264, 0.457818) ,
+      rgb (0.640352, 0.604354, 0.456791) ,
+      rgb (0.64427, 0.60745, 0.455886) ,
+      rgb (0.648222, 0.610553, 0.454801) ,
+      rgb (0.652178, 0.613664, 0.453689) ,
+      rgb (0.656114, 0.61678, 0.452702) ,
+      rgb (0.660082, 0.619904, 0.451534) ,
+      rgb (0.664055, 0.623034, 0.450338) ,
+      rgb (0.668008, 0.626171, 0.44927) ,
+      rgb (0.671991, 0.629316, 0.448018) ,
+      rgb (0.675981, 0.632468, 0.446736) ,
+      rgb (0.679979, 0.635626, 0.445424) ,
+      rgb (0.68395, 0.638793, 0.444251) ,
+      rgb (0.687957, 0.641966, 0.442886) ,
+      rgb (0.691971, 0.645145, 0.441491) ,
+      rgb (0.695985, 0.648334, 0.440072) ,
+      rgb (0.700008, 0.651529, 0.438624) ,
+      rgb (0.704037, 0.654731, 0.437147) ,
+      rgb (0.708067, 0.657942, 0.435647) ,
+      rgb (0.712105, 0.66116, 0.434117) ,
+      rgb (0.716177, 0.664384, 0.432386) ,
+      rgb (0.720222, 0.667618, 0.430805) ,
+      rgb (0.724274, 0.670859, 0.429194) ,
+      rgb (0.728334, 0.674107, 0.427554) ,
+      rgb (0.732422, 0.677364, 0.425717) ,
+      rgb (0.736488, 0.680629, 0.424028) ,
+      rgb (0.740589, 0.6839, 0.422131) ,
+      rgb (0.744664, 0.687181, 0.420393) ,
+      rgb (0.748772, 0.69047, 0.418448) ,
+      rgb (0.752886, 0.693766, 0.416472) ,
+      rgb (0.756975, 0.697071, 0.414659) ,
+      rgb (0.761096, 0.700384, 0.412638) ,
+      rgb (0.765223, 0.703705, 0.410587) ,
+      rgb (0.769353, 0.707035, 0.408516) ,
+      rgb (0.773486, 0.710373, 0.406422) ,
+      rgb (0.777651, 0.713719, 0.404112) ,
+      rgb (0.781795, 0.717074, 0.401966) ,
+      rgb (0.785965, 0.720438, 0.399613) ,
+      rgb (0.790116, 0.72381, 0.397423) ,
+      rgb (0.794298, 0.72719, 0.395016) ,
+      rgb (0.79848, 0.73058, 0.392597) ,
+      rgb (0.802667, 0.733978, 0.390153) ,
+      rgb (0.806859, 0.737385, 0.387684) ,
+      rgb (0.811054, 0.740801, 0.385198) ,
+      rgb (0.815274, 0.744226, 0.382504) ,
+      rgb (0.819499, 0.747659, 0.379785) ,
+      rgb (0.823729, 0.751101, 0.377043) ,
+      rgb (0.827959, 0.754553, 0.374292) ,
+      rgb (0.832192, 0.758014, 0.371529) ,
+      rgb (0.836429, 0.761483, 0.368747) ,
+      rgb (0.840693, 0.764962, 0.365746) ,
+      rgb (0.844957, 0.76845, 0.362741) ,
+      rgb (0.849223, 0.771947, 0.359729) ,
+      rgb (0.853515, 0.775454, 0.3565) ,
+      rgb (0.857809, 0.778969, 0.353259) ,
+      rgb (0.862105, 0.782494, 0.350011) ,
+      rgb (0.866421, 0.786028, 0.346571) ,
+      rgb (0.870717, 0.789572, 0.343333) ,
+      rgb (0.875057, 0.793125, 0.339685) ,
+      rgb (0.879378, 0.796687, 0.336241) ,
+      rgb (0.88372, 0.800258, 0.332599) ,
+      rgb (0.888081, 0.803839, 0.32877) ,
+      rgb (0.89244, 0.80743, 0.324968) ,
+      rgb (0.896818, 0.81103, 0.320982) ,
+      rgb (0.901195, 0.814639, 0.317021) ,
+      rgb (0.905589, 0.818257, 0.312889) ,
+      rgb (0.91, 0.821885, 0.308594) ,
+      rgb (0.914407, 0.825522, 0.304348) ,
+      rgb (0.918828, 0.829168, 0.29996) ,
+      rgb (0.923279, 0.832822, 0.295244) ,
+      rgb (0.927724, 0.836486, 0.290611) ,
+      rgb (0.93218, 0.840159, 0.28588) ,
+      rgb (0.93666, 0.843841, 0.280876) ,
+      rgb (0.941147, 0.84753, 0.275815) ,
+      rgb (0.945654, 0.851228, 0.270532) ,
+      rgb (0.950178, 0.854933, 0.265085) ,
+      rgb (0.954725, 0.858646, 0.259365) ,
+      rgb (0.959284, 0.862365, 0.253563) ,
+      rgb (0.963872, 0.866089, 0.247445) ,
+      rgb (0.968469, 0.869819, 0.24131) ,
+      rgb (0.973114, 0.87355, 0.234677) ,
+      rgb (0.97778, 0.877281, 0.227954) ,
+      rgb (0.982497, 0.881008, 0.220878) ,
+      rgb (0.987293, 0.884718, 0.213336) ,
+      rgb (0.992218, 0.888385, 0.205468) ,
+      rgb (0.994847, 0.892954, 0.203445) ,
+      rgb (0.995249, 0.898384, 0.207561) ,
+      rgb (0.995503, 0.903866, 0.21237) ,
+      rgb (0.995737, 0.909344, 0.217772)
+      });
 
 
 list_data inferno = list_data(new pen[] {
-  rgb (0.001462, 0.000466, 0.013866) ,
-  rgb (0.002267, 0.00127, 0.01857) ,
-  rgb (0.003299, 0.002249, 0.024239) ,
-  rgb (0.004547, 0.003392, 0.030909) ,
-  rgb (0.006006, 0.004692, 0.038558) ,
-  rgb (0.007676, 0.006136, 0.046836) ,
-  rgb (0.009561, 0.007713, 0.055143) ,
-  rgb (0.011663, 0.009417, 0.06346) ,
-  rgb (0.013995, 0.011225, 0.071862) ,
-  rgb (0.016561, 0.013136, 0.080282) ,
-  rgb (0.019373, 0.015133, 0.088767) ,
-  rgb (0.022447, 0.017199, 0.097327) ,
-  rgb (0.025793, 0.019331, 0.10593) ,
-  rgb (0.029432, 0.021503, 0.114621) ,
-  rgb (0.033385, 0.023702, 0.123397) ,
-  rgb (0.037668, 0.025921, 0.132232) ,
-  rgb (0.042253, 0.028139, 0.141141) ,
-  rgb (0.046915, 0.030324, 0.150164) ,
-  rgb (0.051644, 0.032474, 0.159254) ,
-  rgb (0.056449, 0.034569, 0.168414) ,
-  rgb (0.06134, 0.03659, 0.177642) ,
-  rgb (0.066331, 0.038504, 0.186962) ,
-  rgb (0.071429, 0.040294, 0.196354) ,
-  rgb (0.076637, 0.041905, 0.205799) ,
-  rgb (0.081962, 0.043328, 0.215289) ,
-  rgb (0.087411, 0.044556, 0.224813) ,
-  rgb (0.09299, 0.045583, 0.234358) ,
-  rgb (0.098702, 0.046402, 0.243904) ,
-  rgb (0.104551, 0.047008, 0.25343) ,
-  rgb (0.110536, 0.047399, 0.262912) ,
-  rgb (0.116656, 0.047574, 0.272321) ,
-  rgb (0.122908, 0.047536, 0.281624) ,
-  rgb (0.129285, 0.047293, 0.290788) ,
-  rgb (0.135778, 0.046856, 0.299776) ,
-  rgb (0.142378, 0.046242, 0.308553) ,
-  rgb (0.149073, 0.045468, 0.317085) ,
-  rgb (0.15585, 0.044559, 0.325338) ,
-  rgb (0.162689, 0.043554, 0.333277) ,
-  rgb (0.169575, 0.042489, 0.340874) ,
-  rgb (0.176493, 0.041402, 0.348111) ,
-  rgb (0.183429, 0.040329, 0.354971) ,
-  rgb (0.190367, 0.039309, 0.361447) ,
-  rgb (0.197297, 0.0384, 0.367535) ,
-  rgb (0.204209, 0.037632, 0.373238) ,
-  rgb (0.211095, 0.03703, 0.378563) ,
-  rgb (0.217949, 0.036615, 0.383522) ,
-  rgb (0.224763, 0.036405, 0.388129) ,
-  rgb (0.231538, 0.036405, 0.3924) ,
-  rgb (0.238273, 0.036621, 0.396353) ,
-  rgb (0.244967, 0.037055, 0.400007) ,
-  rgb (0.25162, 0.037705, 0.403378) ,
-  rgb (0.258234, 0.038571, 0.406485) ,
-  rgb (0.26481, 0.039647, 0.409345) ,
-  rgb (0.271347, 0.040922, 0.411976) ,
-  rgb (0.27785, 0.042353, 0.414392) ,
-  rgb (0.284321, 0.043933, 0.416608) ,
-  rgb (0.290763, 0.045644, 0.418637) ,
-  rgb (0.297178, 0.04747, 0.420491) ,
-  rgb (0.303568, 0.049396, 0.422182) ,
-  rgb (0.309935, 0.051407, 0.423721) ,
-  rgb (0.316282, 0.05349, 0.425116) ,
-  rgb (0.32261, 0.055634, 0.426377) ,
-  rgb (0.328921, 0.057827, 0.427511) ,
-  rgb (0.335217, 0.06006, 0.428524) ,
-  rgb (0.3415, 0.062325, 0.429425) ,
-  rgb (0.347771, 0.064616, 0.430217) ,
-  rgb (0.354032, 0.066925, 0.430906) ,
-  rgb (0.360284, 0.069247, 0.431497) ,
-  rgb (0.366529, 0.071579, 0.431994) ,
-  rgb (0.372768, 0.073915, 0.4324) ,
-  rgb (0.379001, 0.076253, 0.432719) ,
-  rgb (0.385228, 0.078591, 0.432955) ,
-  rgb (0.391453, 0.080927, 0.433109) ,
-  rgb (0.397674, 0.083257, 0.433183) ,
-  rgb (0.403894, 0.08558, 0.433179) ,
-  rgb (0.410113, 0.087896, 0.433098) ,
-  rgb (0.416331, 0.090203, 0.432943) ,
-  rgb (0.422549, 0.092501, 0.432714) ,
-  rgb (0.428768, 0.09479, 0.432412) ,
-  rgb (0.434987, 0.097069, 0.432039) ,
-  rgb (0.441207, 0.099338, 0.431594) ,
-  rgb (0.447428, 0.101597, 0.43108) ,
-  rgb (0.453651, 0.103848, 0.430498) ,
-  rgb (0.459875, 0.106089, 0.429846) ,
-  rgb (0.4661, 0.108322, 0.429125) ,
-  rgb (0.472328, 0.110547, 0.428334) ,
-  rgb (0.478558, 0.112764, 0.427475) ,
-  rgb (0.484789, 0.114974, 0.426548) ,
-  rgb (0.491022, 0.117179, 0.425552) ,
-  rgb (0.497257, 0.119379, 0.424488) ,
-  rgb (0.503493, 0.121575, 0.423356) ,
-  rgb (0.50973, 0.123769, 0.422156) ,
-  rgb (0.515967, 0.12596, 0.420887) ,
-  rgb (0.522206, 0.12815, 0.419549) ,
-  rgb (0.528444, 0.130341, 0.418142) ,
-  rgb (0.534683, 0.132534, 0.416667) ,
-  rgb (0.54092, 0.134729, 0.415123) ,
-  rgb (0.547157, 0.136929, 0.413511) ,
-  rgb (0.553392, 0.139134, 0.411829) ,
-  rgb (0.559624, 0.141346, 0.410078) ,
-  rgb (0.565854, 0.143567, 0.408258) ,
-  rgb (0.572081, 0.145797, 0.406369) ,
-  rgb (0.578304, 0.148039, 0.404411) ,
-  rgb (0.584521, 0.150294, 0.402385) ,
-  rgb (0.590734, 0.152563, 0.40029) ,
-  rgb (0.59694, 0.154848, 0.398125) ,
-  rgb (0.603139, 0.157151, 0.395891) ,
-  rgb (0.60933, 0.159474, 0.393589) ,
-  rgb (0.615513, 0.161817, 0.391219) ,
-  rgb (0.621685, 0.164184, 0.388781) ,
-  rgb (0.627847, 0.166575, 0.386276) ,
-  rgb (0.633998, 0.168992, 0.383704) ,
-  rgb (0.640135, 0.171438, 0.381065) ,
-  rgb (0.64626, 0.173914, 0.378359) ,
-  rgb (0.652369, 0.176421, 0.375586) ,
-  rgb (0.658463, 0.178962, 0.372748) ,
-  rgb (0.66454, 0.181539, 0.369846) ,
-  rgb (0.670599, 0.184153, 0.366879) ,
-  rgb (0.676638, 0.186807, 0.363849) ,
-  rgb (0.682656, 0.189501, 0.360757) ,
-  rgb (0.688653, 0.192239, 0.357603) ,
-  rgb (0.694627, 0.195021, 0.354388) ,
-  rgb (0.700576, 0.197851, 0.351113) ,
-  rgb (0.7065, 0.200728, 0.347777) ,
-  rgb (0.712396, 0.203656, 0.344383) ,
-  rgb (0.718264, 0.206636, 0.340931) ,
-  rgb (0.724103, 0.20967, 0.337424) ,
-  rgb (0.729909, 0.212759, 0.333861) ,
-  rgb (0.735683, 0.215906, 0.330245) ,
-  rgb (0.741423, 0.219112, 0.326576) ,
-  rgb (0.747127, 0.222378, 0.322856) ,
-  rgb (0.752794, 0.225706, 0.319085) ,
-  rgb (0.758422, 0.229097, 0.315266) ,
-  rgb (0.76401, 0.232554, 0.311399) ,
-  rgb (0.769556, 0.236077, 0.307485) ,
-  rgb (0.775059, 0.239667, 0.303526) ,
-  rgb (0.780517, 0.243327, 0.299523) ,
-  rgb (0.785929, 0.247056, 0.295477) ,
-  rgb (0.791293, 0.250856, 0.29139) ,
-  rgb (0.796607, 0.254728, 0.287264) ,
-  rgb (0.801871, 0.258674, 0.283099) ,
-  rgb (0.807082, 0.262692, 0.278898) ,
-  rgb (0.812239, 0.266786, 0.274661) ,
-  rgb (0.817341, 0.270954, 0.27039) ,
-  rgb (0.822386, 0.275197, 0.266085) ,
-  rgb (0.827372, 0.279517, 0.26175) ,
-  rgb (0.832299, 0.283913, 0.257383) ,
-  rgb (0.837165, 0.288385, 0.252988) ,
-  rgb (0.841969, 0.292933, 0.248564) ,
-  rgb (0.846709, 0.297559, 0.244113) ,
-  rgb (0.851384, 0.30226, 0.239636) ,
-  rgb (0.855992, 0.307038, 0.235133) ,
-  rgb (0.860533, 0.311892, 0.230606) ,
-  rgb (0.865006, 0.316822, 0.226055) ,
-  rgb (0.869409, 0.321827, 0.221482) ,
-  rgb (0.873741, 0.326906, 0.216886) ,
-  rgb (0.878001, 0.33206, 0.212268) ,
-  rgb (0.882188, 0.337287, 0.207628) ,
-  rgb (0.886302, 0.342586, 0.202968) ,
-  rgb (0.890341, 0.347957, 0.198286) ,
-  rgb (0.894305, 0.353399, 0.193584) ,
-  rgb (0.898192, 0.358911, 0.18886) ,
-  rgb (0.902003, 0.364492, 0.184116) ,
-  rgb (0.905735, 0.37014, 0.17935) ,
-  rgb (0.90939, 0.375856, 0.174563) ,
-  rgb (0.912966, 0.381636, 0.169755) ,
-  rgb (0.916462, 0.387481, 0.164924) ,
-  rgb (0.919879, 0.393389, 0.16007) ,
-  rgb (0.923215, 0.399359, 0.155193) ,
-  rgb (0.92647, 0.405389, 0.150292) ,
-  rgb (0.929644, 0.411479, 0.145367) ,
-  rgb (0.932737, 0.417627, 0.140417) ,
-  rgb (0.935747, 0.423831, 0.13544) ,
-  rgb (0.938675, 0.430091, 0.130438) ,
-  rgb (0.941521, 0.436405, 0.125409) ,
-  rgb (0.944285, 0.442772, 0.120354) ,
-  rgb (0.946965, 0.449191, 0.115272) ,
-  rgb (0.949562, 0.45566, 0.110164) ,
-  rgb (0.952075, 0.462178, 0.105031) ,
-  rgb (0.954506, 0.468744, 0.099874) ,
-  rgb (0.956852, 0.475356, 0.094695) ,
-  rgb (0.959114, 0.482014, 0.089499) ,
-  rgb (0.961293, 0.488716, 0.084289) ,
-  rgb (0.963387, 0.495462, 0.079073) ,
-  rgb (0.965397, 0.502249, 0.073859) ,
-  rgb (0.967322, 0.509078, 0.068659) ,
-  rgb (0.969163, 0.515946, 0.063488) ,
-  rgb (0.970919, 0.522853, 0.058367) ,
-  rgb (0.97259, 0.529798, 0.053324) ,
-  rgb (0.974176, 0.53678, 0.048392) ,
-  rgb (0.975677, 0.543798, 0.043618) ,
-  rgb (0.977092, 0.55085, 0.03905) ,
-  rgb (0.978422, 0.557937, 0.034931) ,
-  rgb (0.979666, 0.565057, 0.031409) ,
-  rgb (0.980824, 0.572209, 0.028508) ,
-  rgb (0.981895, 0.579392, 0.02625) ,
-  rgb (0.982881, 0.586606, 0.024661) ,
-  rgb (0.983779, 0.593849, 0.02377) ,
-  rgb (0.984591, 0.601122, 0.023606) ,
-  rgb (0.985315, 0.608422, 0.024202) ,
-  rgb (0.985952, 0.61575, 0.025592) ,
-  rgb (0.986502, 0.623105, 0.027814) ,
-  rgb (0.986964, 0.630485, 0.030908) ,
-  rgb (0.987337, 0.63789, 0.034916) ,
-  rgb (0.987622, 0.64532, 0.039886) ,
-  rgb (0.987819, 0.652773, 0.045581) ,
-  rgb (0.987926, 0.66025, 0.05175) ,
-  rgb (0.987945, 0.667748, 0.058329) ,
-  rgb (0.987874, 0.675267, 0.065257) ,
-  rgb (0.987714, 0.682807, 0.072489) ,
-  rgb (0.987464, 0.690366, 0.07999) ,
-  rgb (0.987124, 0.697944, 0.087731) ,
-  rgb (0.986694, 0.70554, 0.095694) ,
-  rgb (0.986175, 0.713153, 0.103863) ,
-  rgb (0.985566, 0.720782, 0.112229) ,
-  rgb (0.984865, 0.728427, 0.120785) ,
-  rgb (0.984075, 0.736087, 0.129527) ,
-  rgb (0.983196, 0.743758, 0.138453) ,
-  rgb (0.982228, 0.751442, 0.147565) ,
-  rgb (0.981173, 0.759135, 0.156863) ,
-  rgb (0.980032, 0.766837, 0.166353) ,
-  rgb (0.978806, 0.774545, 0.176037) ,
-  rgb (0.977497, 0.782258, 0.185923) ,
-  rgb (0.976108, 0.789974, 0.196018) ,
-  rgb (0.974638, 0.797692, 0.206332) ,
-  rgb (0.973088, 0.805409, 0.216877) ,
-  rgb (0.971468, 0.813122, 0.227658) ,
-  rgb (0.969783, 0.820825, 0.238686) ,
-  rgb (0.968041, 0.828515, 0.249972) ,
-  rgb (0.966243, 0.836191, 0.261534) ,
-  rgb (0.964394, 0.843848, 0.273391) ,
-  rgb (0.962517, 0.851476, 0.285546) ,
-  rgb (0.960626, 0.859069, 0.29801) ,
-  rgb (0.95872, 0.866624, 0.31082) ,
-  rgb (0.956834, 0.874129, 0.323974) ,
-  rgb (0.954997, 0.881569, 0.337475) ,
-  rgb (0.953215, 0.888942, 0.351369) ,
-  rgb (0.951546, 0.896226, 0.365627) ,
-  rgb (0.950018, 0.903409, 0.380271) ,
-  rgb (0.948683, 0.910473, 0.395289) ,
-  rgb (0.947594, 0.917399, 0.410665) ,
-  rgb (0.946809, 0.924168, 0.426373) ,
-  rgb (0.946392, 0.930761, 0.442367) ,
-  rgb (0.946403, 0.937159, 0.458592) ,
-  rgb (0.946903, 0.943348, 0.47497) ,
-  rgb (0.947937, 0.949318, 0.491426) ,
-  rgb (0.949545, 0.955063, 0.50786) ,
-  rgb (0.95174, 0.960587, 0.524203) ,
-  rgb (0.954529, 0.965896, 0.540361) ,
-  rgb (0.957896, 0.971003, 0.556275) ,
-  rgb (0.961812, 0.975924, 0.571925) ,
-  rgb (0.966249, 0.980678, 0.587206) ,
-  rgb (0.971162, 0.985282, 0.602154) ,
-  rgb (0.976511, 0.989753, 0.61676) ,
-  rgb (0.982257, 0.994109, 0.631017) ,
-  rgb (0.988362, 0.998364, 0.644924)
-});
+    rgb (0.001462, 0.000466, 0.013866) ,
+      rgb (0.002267, 0.00127, 0.01857) ,
+      rgb (0.003299, 0.002249, 0.024239) ,
+      rgb (0.004547, 0.003392, 0.030909) ,
+      rgb (0.006006, 0.004692, 0.038558) ,
+      rgb (0.007676, 0.006136, 0.046836) ,
+      rgb (0.009561, 0.007713, 0.055143) ,
+      rgb (0.011663, 0.009417, 0.06346) ,
+      rgb (0.013995, 0.011225, 0.071862) ,
+      rgb (0.016561, 0.013136, 0.080282) ,
+      rgb (0.019373, 0.015133, 0.088767) ,
+      rgb (0.022447, 0.017199, 0.097327) ,
+      rgb (0.025793, 0.019331, 0.10593) ,
+      rgb (0.029432, 0.021503, 0.114621) ,
+      rgb (0.033385, 0.023702, 0.123397) ,
+      rgb (0.037668, 0.025921, 0.132232) ,
+      rgb (0.042253, 0.028139, 0.141141) ,
+      rgb (0.046915, 0.030324, 0.150164) ,
+      rgb (0.051644, 0.032474, 0.159254) ,
+      rgb (0.056449, 0.034569, 0.168414) ,
+      rgb (0.06134, 0.03659, 0.177642) ,
+      rgb (0.066331, 0.038504, 0.186962) ,
+      rgb (0.071429, 0.040294, 0.196354) ,
+      rgb (0.076637, 0.041905, 0.205799) ,
+      rgb (0.081962, 0.043328, 0.215289) ,
+      rgb (0.087411, 0.044556, 0.224813) ,
+      rgb (0.09299, 0.045583, 0.234358) ,
+      rgb (0.098702, 0.046402, 0.243904) ,
+      rgb (0.104551, 0.047008, 0.25343) ,
+      rgb (0.110536, 0.047399, 0.262912) ,
+      rgb (0.116656, 0.047574, 0.272321) ,
+      rgb (0.122908, 0.047536, 0.281624) ,
+      rgb (0.129285, 0.047293, 0.290788) ,
+      rgb (0.135778, 0.046856, 0.299776) ,
+      rgb (0.142378, 0.046242, 0.308553) ,
+      rgb (0.149073, 0.045468, 0.317085) ,
+      rgb (0.15585, 0.044559, 0.325338) ,
+      rgb (0.162689, 0.043554, 0.333277) ,
+      rgb (0.169575, 0.042489, 0.340874) ,
+      rgb (0.176493, 0.041402, 0.348111) ,
+      rgb (0.183429, 0.040329, 0.354971) ,
+      rgb (0.190367, 0.039309, 0.361447) ,
+      rgb (0.197297, 0.0384, 0.367535) ,
+      rgb (0.204209, 0.037632, 0.373238) ,
+      rgb (0.211095, 0.03703, 0.378563) ,
+      rgb (0.217949, 0.036615, 0.383522) ,
+      rgb (0.224763, 0.036405, 0.388129) ,
+      rgb (0.231538, 0.036405, 0.3924) ,
+      rgb (0.238273, 0.036621, 0.396353) ,
+      rgb (0.244967, 0.037055, 0.400007) ,
+      rgb (0.25162, 0.037705, 0.403378) ,
+      rgb (0.258234, 0.038571, 0.406485) ,
+      rgb (0.26481, 0.039647, 0.409345) ,
+      rgb (0.271347, 0.040922, 0.411976) ,
+      rgb (0.27785, 0.042353, 0.414392) ,
+      rgb (0.284321, 0.043933, 0.416608) ,
+      rgb (0.290763, 0.045644, 0.418637) ,
+      rgb (0.297178, 0.04747, 0.420491) ,
+      rgb (0.303568, 0.049396, 0.422182) ,
+      rgb (0.309935, 0.051407, 0.423721) ,
+      rgb (0.316282, 0.05349, 0.425116) ,
+      rgb (0.32261, 0.055634, 0.426377) ,
+      rgb (0.328921, 0.057827, 0.427511) ,
+      rgb (0.335217, 0.06006, 0.428524) ,
+      rgb (0.3415, 0.062325, 0.429425) ,
+      rgb (0.347771, 0.064616, 0.430217) ,
+      rgb (0.354032, 0.066925, 0.430906) ,
+      rgb (0.360284, 0.069247, 0.431497) ,
+      rgb (0.366529, 0.071579, 0.431994) ,
+      rgb (0.372768, 0.073915, 0.4324) ,
+      rgb (0.379001, 0.076253, 0.432719) ,
+      rgb (0.385228, 0.078591, 0.432955) ,
+      rgb (0.391453, 0.080927, 0.433109) ,
+      rgb (0.397674, 0.083257, 0.433183) ,
+      rgb (0.403894, 0.08558, 0.433179) ,
+      rgb (0.410113, 0.087896, 0.433098) ,
+      rgb (0.416331, 0.090203, 0.432943) ,
+      rgb (0.422549, 0.092501, 0.432714) ,
+      rgb (0.428768, 0.09479, 0.432412) ,
+      rgb (0.434987, 0.097069, 0.432039) ,
+      rgb (0.441207, 0.099338, 0.431594) ,
+      rgb (0.447428, 0.101597, 0.43108) ,
+      rgb (0.453651, 0.103848, 0.430498) ,
+      rgb (0.459875, 0.106089, 0.429846) ,
+      rgb (0.4661, 0.108322, 0.429125) ,
+      rgb (0.472328, 0.110547, 0.428334) ,
+      rgb (0.478558, 0.112764, 0.427475) ,
+      rgb (0.484789, 0.114974, 0.426548) ,
+      rgb (0.491022, 0.117179, 0.425552) ,
+      rgb (0.497257, 0.119379, 0.424488) ,
+      rgb (0.503493, 0.121575, 0.423356) ,
+      rgb (0.50973, 0.123769, 0.422156) ,
+      rgb (0.515967, 0.12596, 0.420887) ,
+      rgb (0.522206, 0.12815, 0.419549) ,
+      rgb (0.528444, 0.130341, 0.418142) ,
+      rgb (0.534683, 0.132534, 0.416667) ,
+      rgb (0.54092, 0.134729, 0.415123) ,
+      rgb (0.547157, 0.136929, 0.413511) ,
+      rgb (0.553392, 0.139134, 0.411829) ,
+      rgb (0.559624, 0.141346, 0.410078) ,
+      rgb (0.565854, 0.143567, 0.408258) ,
+      rgb (0.572081, 0.145797, 0.406369) ,
+      rgb (0.578304, 0.148039, 0.404411) ,
+      rgb (0.584521, 0.150294, 0.402385) ,
+      rgb (0.590734, 0.152563, 0.40029) ,
+      rgb (0.59694, 0.154848, 0.398125) ,
+      rgb (0.603139, 0.157151, 0.395891) ,
+      rgb (0.60933, 0.159474, 0.393589) ,
+      rgb (0.615513, 0.161817, 0.391219) ,
+      rgb (0.621685, 0.164184, 0.388781) ,
+      rgb (0.627847, 0.166575, 0.386276) ,
+      rgb (0.633998, 0.168992, 0.383704) ,
+      rgb (0.640135, 0.171438, 0.381065) ,
+      rgb (0.64626, 0.173914, 0.378359) ,
+      rgb (0.652369, 0.176421, 0.375586) ,
+      rgb (0.658463, 0.178962, 0.372748) ,
+      rgb (0.66454, 0.181539, 0.369846) ,
+      rgb (0.670599, 0.184153, 0.366879) ,
+      rgb (0.676638, 0.186807, 0.363849) ,
+      rgb (0.682656, 0.189501, 0.360757) ,
+      rgb (0.688653, 0.192239, 0.357603) ,
+      rgb (0.694627, 0.195021, 0.354388) ,
+      rgb (0.700576, 0.197851, 0.351113) ,
+      rgb (0.7065, 0.200728, 0.347777) ,
+      rgb (0.712396, 0.203656, 0.344383) ,
+      rgb (0.718264, 0.206636, 0.340931) ,
+      rgb (0.724103, 0.20967, 0.337424) ,
+      rgb (0.729909, 0.212759, 0.333861) ,
+      rgb (0.735683, 0.215906, 0.330245) ,
+      rgb (0.741423, 0.219112, 0.326576) ,
+      rgb (0.747127, 0.222378, 0.322856) ,
+      rgb (0.752794, 0.225706, 0.319085) ,
+      rgb (0.758422, 0.229097, 0.315266) ,
+      rgb (0.76401, 0.232554, 0.311399) ,
+      rgb (0.769556, 0.236077, 0.307485) ,
+      rgb (0.775059, 0.239667, 0.303526) ,
+      rgb (0.780517, 0.243327, 0.299523) ,
+      rgb (0.785929, 0.247056, 0.295477) ,
+      rgb (0.791293, 0.250856, 0.29139) ,
+      rgb (0.796607, 0.254728, 0.287264) ,
+      rgb (0.801871, 0.258674, 0.283099) ,
+      rgb (0.807082, 0.262692, 0.278898) ,
+      rgb (0.812239, 0.266786, 0.274661) ,
+      rgb (0.817341, 0.270954, 0.27039) ,
+      rgb (0.822386, 0.275197, 0.266085) ,
+      rgb (0.827372, 0.279517, 0.26175) ,
+      rgb (0.832299, 0.283913, 0.257383) ,
+      rgb (0.837165, 0.288385, 0.252988) ,
+      rgb (0.841969, 0.292933, 0.248564) ,
+      rgb (0.846709, 0.297559, 0.244113) ,
+      rgb (0.851384, 0.30226, 0.239636) ,
+      rgb (0.855992, 0.307038, 0.235133) ,
+      rgb (0.860533, 0.311892, 0.230606) ,
+      rgb (0.865006, 0.316822, 0.226055) ,
+      rgb (0.869409, 0.321827, 0.221482) ,
+      rgb (0.873741, 0.326906, 0.216886) ,
+      rgb (0.878001, 0.33206, 0.212268) ,
+      rgb (0.882188, 0.337287, 0.207628) ,
+      rgb (0.886302, 0.342586, 0.202968) ,
+      rgb (0.890341, 0.347957, 0.198286) ,
+      rgb (0.894305, 0.353399, 0.193584) ,
+      rgb (0.898192, 0.358911, 0.18886) ,
+      rgb (0.902003, 0.364492, 0.184116) ,
+      rgb (0.905735, 0.37014, 0.17935) ,
+      rgb (0.90939, 0.375856, 0.174563) ,
+      rgb (0.912966, 0.381636, 0.169755) ,
+      rgb (0.916462, 0.387481, 0.164924) ,
+      rgb (0.919879, 0.393389, 0.16007) ,
+      rgb (0.923215, 0.399359, 0.155193) ,
+      rgb (0.92647, 0.405389, 0.150292) ,
+      rgb (0.929644, 0.411479, 0.145367) ,
+      rgb (0.932737, 0.417627, 0.140417) ,
+      rgb (0.935747, 0.423831, 0.13544) ,
+      rgb (0.938675, 0.430091, 0.130438) ,
+      rgb (0.941521, 0.436405, 0.125409) ,
+      rgb (0.944285, 0.442772, 0.120354) ,
+      rgb (0.946965, 0.449191, 0.115272) ,
+      rgb (0.949562, 0.45566, 0.110164) ,
+      rgb (0.952075, 0.462178, 0.105031) ,
+      rgb (0.954506, 0.468744, 0.099874) ,
+      rgb (0.956852, 0.475356, 0.094695) ,
+      rgb (0.959114, 0.482014, 0.089499) ,
+      rgb (0.961293, 0.488716, 0.084289) ,
+      rgb (0.963387, 0.495462, 0.079073) ,
+      rgb (0.965397, 0.502249, 0.073859) ,
+      rgb (0.967322, 0.509078, 0.068659) ,
+      rgb (0.969163, 0.515946, 0.063488) ,
+      rgb (0.970919, 0.522853, 0.058367) ,
+      rgb (0.97259, 0.529798, 0.053324) ,
+      rgb (0.974176, 0.53678, 0.048392) ,
+      rgb (0.975677, 0.543798, 0.043618) ,
+      rgb (0.977092, 0.55085, 0.03905) ,
+      rgb (0.978422, 0.557937, 0.034931) ,
+      rgb (0.979666, 0.565057, 0.031409) ,
+      rgb (0.980824, 0.572209, 0.028508) ,
+      rgb (0.981895, 0.579392, 0.02625) ,
+      rgb (0.982881, 0.586606, 0.024661) ,
+      rgb (0.983779, 0.593849, 0.02377) ,
+      rgb (0.984591, 0.601122, 0.023606) ,
+      rgb (0.985315, 0.608422, 0.024202) ,
+      rgb (0.985952, 0.61575, 0.025592) ,
+      rgb (0.986502, 0.623105, 0.027814) ,
+      rgb (0.986964, 0.630485, 0.030908) ,
+      rgb (0.987337, 0.63789, 0.034916) ,
+      rgb (0.987622, 0.64532, 0.039886) ,
+      rgb (0.987819, 0.652773, 0.045581) ,
+      rgb (0.987926, 0.66025, 0.05175) ,
+      rgb (0.987945, 0.667748, 0.058329) ,
+      rgb (0.987874, 0.675267, 0.065257) ,
+      rgb (0.987714, 0.682807, 0.072489) ,
+      rgb (0.987464, 0.690366, 0.07999) ,
+      rgb (0.987124, 0.697944, 0.087731) ,
+      rgb (0.986694, 0.70554, 0.095694) ,
+      rgb (0.986175, 0.713153, 0.103863) ,
+      rgb (0.985566, 0.720782, 0.112229) ,
+      rgb (0.984865, 0.728427, 0.120785) ,
+      rgb (0.984075, 0.736087, 0.129527) ,
+      rgb (0.983196, 0.743758, 0.138453) ,
+      rgb (0.982228, 0.751442, 0.147565) ,
+      rgb (0.981173, 0.759135, 0.156863) ,
+      rgb (0.980032, 0.766837, 0.166353) ,
+      rgb (0.978806, 0.774545, 0.176037) ,
+      rgb (0.977497, 0.782258, 0.185923) ,
+      rgb (0.976108, 0.789974, 0.196018) ,
+      rgb (0.974638, 0.797692, 0.206332) ,
+      rgb (0.973088, 0.805409, 0.216877) ,
+      rgb (0.971468, 0.813122, 0.227658) ,
+      rgb (0.969783, 0.820825, 0.238686) ,
+      rgb (0.968041, 0.828515, 0.249972) ,
+      rgb (0.966243, 0.836191, 0.261534) ,
+      rgb (0.964394, 0.843848, 0.273391) ,
+      rgb (0.962517, 0.851476, 0.285546) ,
+      rgb (0.960626, 0.859069, 0.29801) ,
+      rgb (0.95872, 0.866624, 0.31082) ,
+      rgb (0.956834, 0.874129, 0.323974) ,
+      rgb (0.954997, 0.881569, 0.337475) ,
+      rgb (0.953215, 0.888942, 0.351369) ,
+      rgb (0.951546, 0.896226, 0.365627) ,
+      rgb (0.950018, 0.903409, 0.380271) ,
+      rgb (0.948683, 0.910473, 0.395289) ,
+      rgb (0.947594, 0.917399, 0.410665) ,
+      rgb (0.946809, 0.924168, 0.426373) ,
+      rgb (0.946392, 0.930761, 0.442367) ,
+      rgb (0.946403, 0.937159, 0.458592) ,
+      rgb (0.946903, 0.943348, 0.47497) ,
+      rgb (0.947937, 0.949318, 0.491426) ,
+      rgb (0.949545, 0.955063, 0.50786) ,
+      rgb (0.95174, 0.960587, 0.524203) ,
+      rgb (0.954529, 0.965896, 0.540361) ,
+      rgb (0.957896, 0.971003, 0.556275) ,
+      rgb (0.961812, 0.975924, 0.571925) ,
+      rgb (0.966249, 0.980678, 0.587206) ,
+      rgb (0.971162, 0.985282, 0.602154) ,
+      rgb (0.976511, 0.989753, 0.61676) ,
+      rgb (0.982257, 0.994109, 0.631017) ,
+      rgb (0.988362, 0.998364, 0.644924)
+      });
 
 
 list_data magma = list_data(new pen[] {
-  rgb (0.001462, 0.000466, 0.013866) ,
-  rgb (0.002258, 0.001295, 0.018331) ,
-  rgb (0.003279, 0.002305, 0.023708) ,
-  rgb (0.004512, 0.00349, 0.029965) ,
-  rgb (0.00595, 0.004843, 0.03713) ,
-  rgb (0.007588, 0.006356, 0.044973) ,
-  rgb (0.009426, 0.008022, 0.052844) ,
-  rgb (0.011465, 0.009828, 0.06075) ,
-  rgb (0.013708, 0.011771, 0.068667) ,
-  rgb (0.016156, 0.01384, 0.076603) ,
-  rgb (0.018815, 0.016026, 0.084584) ,
-  rgb (0.021692, 0.01832, 0.09261) ,
-  rgb (0.024792, 0.020715, 0.100676) ,
-  rgb (0.028123, 0.023201, 0.108787) ,
-  rgb (0.031696, 0.025765, 0.116965) ,
-  rgb (0.03552, 0.028397, 0.125209) ,
-  rgb (0.039608, 0.03109, 0.133515) ,
-  rgb (0.04383, 0.03383, 0.141886) ,
-  rgb (0.048062, 0.036607, 0.150327) ,
-  rgb (0.05232, 0.039407, 0.158841) ,
-  rgb (0.056615, 0.04216, 0.167446) ,
-  rgb (0.060949, 0.044794, 0.176129) ,
-  rgb (0.06533, 0.047318, 0.184892) ,
-  rgb (0.069764, 0.049726, 0.193735) ,
-  rgb (0.074257, 0.052017, 0.20266) ,
-  rgb (0.078815, 0.054184, 0.211667) ,
-  rgb (0.083446, 0.056225, 0.220755) ,
-  rgb (0.088155, 0.058133, 0.229922) ,
-  rgb (0.092949, 0.059904, 0.239164) ,
-  rgb (0.097833, 0.061531, 0.248477) ,
-  rgb (0.102815, 0.06301, 0.257854) ,
-  rgb (0.107899, 0.064335, 0.267289) ,
-  rgb (0.113094, 0.065492, 0.276784) ,
-  rgb (0.118405, 0.066479, 0.286321) ,
-  rgb (0.123833, 0.067295, 0.295879) ,
-  rgb (0.12938, 0.067935, 0.305443) ,
-  rgb (0.135053, 0.068391, 0.315) ,
-  rgb (0.140858, 0.068654, 0.324538) ,
-  rgb (0.146785, 0.068738, 0.334011) ,
-  rgb (0.152839, 0.068637, 0.343404) ,
-  rgb (0.159018, 0.068354, 0.352688) ,
-  rgb (0.165308, 0.067911, 0.361816) ,
-  rgb (0.171713, 0.067305, 0.370771) ,
-  rgb (0.178212, 0.066576, 0.379497) ,
-  rgb (0.184801, 0.065732, 0.387973) ,
-  rgb (0.19146, 0.064818, 0.396152) ,
-  rgb (0.198177, 0.063862, 0.404009) ,
-  rgb (0.204935, 0.062907, 0.411514) ,
-  rgb (0.211718, 0.061992, 0.418647) ,
-  rgb (0.218512, 0.061158, 0.425392) ,
-  rgb (0.225302, 0.060445, 0.431742) ,
-  rgb (0.232077, 0.059889, 0.437695) ,
-  rgb (0.238826, 0.059517, 0.443256) ,
-  rgb (0.245543, 0.059352, 0.448436) ,
-  rgb (0.25222, 0.059415, 0.453248) ,
-  rgb (0.258857, 0.059706, 0.45771) ,
-  rgb (0.265447, 0.060237, 0.46184) ,
-  rgb (0.271994, 0.060994, 0.46566) ,
-  rgb (0.278493, 0.061978, 0.46919) ,
-  rgb (0.284951, 0.063168, 0.472451) ,
-  rgb (0.291366, 0.064553, 0.475462) ,
-  rgb (0.29774, 0.066117, 0.478243) ,
-  rgb (0.304081, 0.067835, 0.480812) ,
-  rgb (0.310382, 0.069702, 0.483186) ,
-  rgb (0.316654, 0.07169, 0.48538) ,
-  rgb (0.322899, 0.073782, 0.487408) ,
-  rgb (0.329114, 0.075972, 0.489287) ,
-  rgb (0.335308, 0.078236, 0.491024) ,
-  rgb (0.341482, 0.080564, 0.492631) ,
-  rgb (0.347636, 0.082946, 0.494121) ,
-  rgb (0.353773, 0.085373, 0.495501) ,
-  rgb (0.359898, 0.087831, 0.496778) ,
-  rgb (0.366012, 0.090314, 0.49796) ,
-  rgb (0.372116, 0.092816, 0.499053) ,
-  rgb (0.378211, 0.095332, 0.500067) ,
-  rgb (0.384299, 0.097855, 0.501002) ,
-  rgb (0.390384, 0.100379, 0.501864) ,
-  rgb (0.396467, 0.102902, 0.502658) ,
-  rgb (0.402548, 0.10542, 0.503386) ,
-  rgb (0.408629, 0.10793, 0.504052) ,
-  rgb (0.414709, 0.110431, 0.504662) ,
-  rgb (0.420791, 0.11292, 0.505215) ,
-  rgb (0.426877, 0.115395, 0.505714) ,
-  rgb (0.432967, 0.117855, 0.50616) ,
-  rgb (0.439062, 0.120298, 0.506555) ,
-  rgb (0.445163, 0.122724, 0.506901) ,
-  rgb (0.451271, 0.125132, 0.507198) ,
-  rgb (0.457386, 0.127522, 0.507448) ,
-  rgb (0.463508, 0.129893, 0.507652) ,
-  rgb (0.46964, 0.132245, 0.507809) ,
-  rgb (0.47578, 0.134577, 0.507921) ,
-  rgb (0.481929, 0.136891, 0.507989) ,
-  rgb (0.488088, 0.139186, 0.508011) ,
-  rgb (0.494258, 0.141462, 0.507988) ,
-  rgb (0.500438, 0.143719, 0.50792) ,
-  rgb (0.506629, 0.145958, 0.507806) ,
-  rgb (0.512831, 0.148179, 0.507648) ,
-  rgb (0.519045, 0.150383, 0.507443) ,
-  rgb (0.52527, 0.152569, 0.507192) ,
-  rgb (0.531507, 0.154739, 0.506895) ,
-  rgb (0.537755, 0.156894, 0.506551) ,
-  rgb (0.544015, 0.159033, 0.506159) ,
-  rgb (0.550287, 0.161158, 0.505719) ,
-  rgb (0.556571, 0.163269, 0.50523) ,
-  rgb (0.562866, 0.165368, 0.504692) ,
-  rgb (0.569172, 0.167454, 0.504105) ,
-  rgb (0.57549, 0.16953, 0.503466) ,
-  rgb (0.581819, 0.171596, 0.502777) ,
-  rgb (0.588158, 0.173652, 0.502035) ,
-  rgb (0.594508, 0.175701, 0.501241) ,
-  rgb (0.600868, 0.177743, 0.500394) ,
-  rgb (0.607238, 0.179779, 0.499492) ,
-  rgb (0.613617, 0.181811, 0.498536) ,
-  rgb (0.620005, 0.18384, 0.497524) ,
-  rgb (0.626401, 0.185867, 0.496456) ,
-  rgb (0.632805, 0.187893, 0.495332) ,
-  rgb (0.639216, 0.189921, 0.49415) ,
-  rgb (0.645633, 0.191952, 0.49291) ,
-  rgb (0.652056, 0.193986, 0.491611) ,
-  rgb (0.658483, 0.196027, 0.490253) ,
-  rgb (0.664915, 0.198075, 0.488836) ,
-  rgb (0.671349, 0.200133, 0.487358) ,
-  rgb (0.677786, 0.202203, 0.485819) ,
-  rgb (0.684224, 0.204286, 0.484219) ,
-  rgb (0.690661, 0.206384, 0.482558) ,
-  rgb (0.697098, 0.208501, 0.480835) ,
-  rgb (0.703532, 0.210638, 0.479049) ,
-  rgb (0.709962, 0.212797, 0.477201) ,
-  rgb (0.716387, 0.214982, 0.47529) ,
-  rgb (0.722805, 0.217194, 0.473316) ,
-  rgb (0.729216, 0.219437, 0.471279) ,
-  rgb (0.735616, 0.221713, 0.46918) ,
-  rgb (0.742004, 0.224025, 0.467018) ,
-  rgb (0.748378, 0.226377, 0.464794) ,
-  rgb (0.754737, 0.228772, 0.462509) ,
-  rgb (0.761077, 0.231214, 0.460162) ,
-  rgb (0.767398, 0.233705, 0.457755) ,
-  rgb (0.773695, 0.236249, 0.455289) ,
-  rgb (0.779968, 0.238851, 0.452765) ,
-  rgb (0.786212, 0.241514, 0.450184) ,
-  rgb (0.792427, 0.244242, 0.447543) ,
-  rgb (0.798608, 0.24704, 0.444848) ,
-  rgb (0.804752, 0.249911, 0.442102) ,
-  rgb (0.810855, 0.252861, 0.439305) ,
-  rgb (0.816914, 0.255895, 0.436461) ,
-  rgb (0.822926, 0.259016, 0.433573) ,
-  rgb (0.828886, 0.262229, 0.430644) ,
-  rgb (0.834791, 0.26554, 0.427671) ,
-  rgb (0.840636, 0.268953, 0.424666) ,
-  rgb (0.846416, 0.272473, 0.421631) ,
-  rgb (0.852126, 0.276106, 0.418573) ,
-  rgb (0.857763, 0.279857, 0.415496) ,
-  rgb (0.86332, 0.283729, 0.412403) ,
-  rgb (0.868793, 0.287728, 0.409303) ,
-  rgb (0.874176, 0.291859, 0.406205) ,
-  rgb (0.879464, 0.296125, 0.403118) ,
-  rgb (0.884651, 0.30053, 0.400047) ,
-  rgb (0.889731, 0.305079, 0.397002) ,
-  rgb (0.8947, 0.309773, 0.393995) ,
-  rgb (0.899552, 0.314616, 0.391037) ,
-  rgb (0.904281, 0.31961, 0.388137) ,
-  rgb (0.908884, 0.324755, 0.385308) ,
-  rgb (0.913354, 0.330052, 0.382563) ,
-  rgb (0.917689, 0.3355, 0.379915) ,
-  rgb (0.921884, 0.341098, 0.377376) ,
-  rgb (0.925937, 0.346844, 0.374959) ,
-  rgb (0.929845, 0.352734, 0.372677) ,
-  rgb (0.933606, 0.358764, 0.370541) ,
-  rgb (0.937221, 0.364929, 0.368567) ,
-  rgb (0.940687, 0.371224, 0.366762) ,
-  rgb (0.944006, 0.377643, 0.365136) ,
-  rgb (0.94718, 0.384178, 0.363701) ,
-  rgb (0.95021, 0.39082, 0.362468) ,
-  rgb (0.953099, 0.397563, 0.361438) ,
-  rgb (0.955849, 0.4044, 0.360619) ,
-  rgb (0.958464, 0.411324, 0.360014) ,
-  rgb (0.960949, 0.418323, 0.35963) ,
-  rgb (0.96331, 0.42539, 0.359469) ,
-  rgb (0.965549, 0.432519, 0.359529) ,
-  rgb (0.967671, 0.439703, 0.35981) ,
-  rgb (0.96968, 0.446936, 0.360311) ,
-  rgb (0.971582, 0.45421, 0.36103) ,
-  rgb (0.973381, 0.46152, 0.361965) ,
-  rgb (0.975082, 0.468861, 0.363111) ,
-  rgb (0.97669, 0.476226, 0.364466) ,
-  rgb (0.97821, 0.483612, 0.366025) ,
-  rgb (0.979645, 0.491014, 0.367783) ,
-  rgb (0.981, 0.498428, 0.369734) ,
-  rgb (0.982279, 0.505851, 0.371874) ,
-  rgb (0.983485, 0.51328, 0.374198) ,
-  rgb (0.984622, 0.520713, 0.376698) ,
-  rgb (0.985693, 0.528148, 0.379371) ,
-  rgb (0.9867, 0.535582, 0.38221) ,
-  rgb (0.987646, 0.543015, 0.38521) ,
-  rgb (0.988533, 0.550446, 0.388365) ,
-  rgb (0.989363, 0.557873, 0.391671) ,
-  rgb (0.990138, 0.565296, 0.395122) ,
-  rgb (0.990871, 0.572706, 0.398714) ,
-  rgb (0.991558, 0.580107, 0.402441) ,
-  rgb (0.992196, 0.587502, 0.406299) ,
-  rgb (0.992785, 0.594891, 0.410283) ,
-  rgb (0.993326, 0.602275, 0.41439) ,
-  rgb (0.993834, 0.609644, 0.418613) ,
-  rgb (0.994309, 0.616999, 0.42295) ,
-  rgb (0.994738, 0.62435, 0.427397) ,
-  rgb (0.995122, 0.631696, 0.431951) ,
-  rgb (0.99548, 0.639027, 0.436607) ,
-  rgb (0.99581, 0.646344, 0.441361) ,
-  rgb (0.996096, 0.653659, 0.446213) ,
-  rgb (0.996341, 0.660969, 0.45116) ,
-  rgb (0.99658, 0.668256, 0.456192) ,
-  rgb (0.996775, 0.675541, 0.461314) ,
-  rgb (0.996925, 0.682828, 0.466526) ,
-  rgb (0.997077, 0.690088, 0.471811) ,
-  rgb (0.997186, 0.697349, 0.477182) ,
-  rgb (0.997254, 0.704611, 0.482635) ,
-  rgb (0.997325, 0.711848, 0.488154) ,
-  rgb (0.997351, 0.719089, 0.493755) ,
-  rgb (0.997351, 0.726324, 0.499428) ,
-  rgb (0.997341, 0.733545, 0.505167) ,
-  rgb (0.997285, 0.740772, 0.510983) ,
-  rgb (0.997228, 0.747981, 0.516859) ,
-  rgb (0.997138, 0.75519, 0.522806) ,
-  rgb (0.997019, 0.762398, 0.528821) ,
-  rgb (0.996898, 0.769591, 0.534892) ,
-  rgb (0.996727, 0.776795, 0.541039) ,
-  rgb (0.996571, 0.783977, 0.547233) ,
-  rgb (0.996369, 0.791167, 0.553499) ,
-  rgb (0.996162, 0.798348, 0.55982) ,
-  rgb (0.995932, 0.805527, 0.566202) ,
-  rgb (0.99568, 0.812706, 0.572645) ,
-  rgb (0.995424, 0.819875, 0.57914) ,
-  rgb (0.995131, 0.827052, 0.585701) ,
-  rgb (0.994851, 0.834213, 0.592307) ,
-  rgb (0.994524, 0.841387, 0.598983) ,
-  rgb (0.994222, 0.84854, 0.605696) ,
-  rgb (0.993866, 0.855711, 0.612482) ,
-  rgb (0.993545, 0.862859, 0.619299) ,
-  rgb (0.99317, 0.870024, 0.626189) ,
-  rgb (0.992831, 0.877168, 0.633109) ,
-  rgb (0.99244, 0.88433, 0.640099) ,
-  rgb (0.992089, 0.89147, 0.647116) ,
-  rgb (0.991688, 0.898627, 0.654202) ,
-  rgb (0.991332, 0.905763, 0.661309) ,
-  rgb (0.99093, 0.912915, 0.668481) ,
-  rgb (0.99057, 0.920049, 0.675675) ,
-  rgb (0.990175, 0.927196, 0.682926) ,
-  rgb (0.989815, 0.934329, 0.690198) ,
-  rgb (0.989434, 0.94147, 0.697519) ,
-  rgb (0.989077, 0.948604, 0.704863) ,
-  rgb (0.988717, 0.955742, 0.712242) ,
-  rgb (0.988367, 0.962878, 0.719649) ,
-  rgb (0.988033, 0.970012, 0.727077) ,
-  rgb (0.987691, 0.977154, 0.734536) ,
-  rgb (0.987387, 0.984288, 0.742002) ,
-  rgb (0.987053, 0.991438, 0.749504)
-});
+    rgb (0.001462, 0.000466, 0.013866) ,
+      rgb (0.002258, 0.001295, 0.018331) ,
+      rgb (0.003279, 0.002305, 0.023708) ,
+      rgb (0.004512, 0.00349, 0.029965) ,
+      rgb (0.00595, 0.004843, 0.03713) ,
+      rgb (0.007588, 0.006356, 0.044973) ,
+      rgb (0.009426, 0.008022, 0.052844) ,
+      rgb (0.011465, 0.009828, 0.06075) ,
+      rgb (0.013708, 0.011771, 0.068667) ,
+      rgb (0.016156, 0.01384, 0.076603) ,
+      rgb (0.018815, 0.016026, 0.084584) ,
+      rgb (0.021692, 0.01832, 0.09261) ,
+      rgb (0.024792, 0.020715, 0.100676) ,
+      rgb (0.028123, 0.023201, 0.108787) ,
+      rgb (0.031696, 0.025765, 0.116965) ,
+      rgb (0.03552, 0.028397, 0.125209) ,
+      rgb (0.039608, 0.03109, 0.133515) ,
+      rgb (0.04383, 0.03383, 0.141886) ,
+      rgb (0.048062, 0.036607, 0.150327) ,
+      rgb (0.05232, 0.039407, 0.158841) ,
+      rgb (0.056615, 0.04216, 0.167446) ,
+      rgb (0.060949, 0.044794, 0.176129) ,
+      rgb (0.06533, 0.047318, 0.184892) ,
+      rgb (0.069764, 0.049726, 0.193735) ,
+      rgb (0.074257, 0.052017, 0.20266) ,
+      rgb (0.078815, 0.054184, 0.211667) ,
+      rgb (0.083446, 0.056225, 0.220755) ,
+      rgb (0.088155, 0.058133, 0.229922) ,
+      rgb (0.092949, 0.059904, 0.239164) ,
+      rgb (0.097833, 0.061531, 0.248477) ,
+      rgb (0.102815, 0.06301, 0.257854) ,
+      rgb (0.107899, 0.064335, 0.267289) ,
+      rgb (0.113094, 0.065492, 0.276784) ,
+      rgb (0.118405, 0.066479, 0.286321) ,
+      rgb (0.123833, 0.067295, 0.295879) ,
+      rgb (0.12938, 0.067935, 0.305443) ,
+      rgb (0.135053, 0.068391, 0.315) ,
+      rgb (0.140858, 0.068654, 0.324538) ,
+      rgb (0.146785, 0.068738, 0.334011) ,
+      rgb (0.152839, 0.068637, 0.343404) ,
+      rgb (0.159018, 0.068354, 0.352688) ,
+      rgb (0.165308, 0.067911, 0.361816) ,
+      rgb (0.171713, 0.067305, 0.370771) ,
+      rgb (0.178212, 0.066576, 0.379497) ,
+      rgb (0.184801, 0.065732, 0.387973) ,
+      rgb (0.19146, 0.064818, 0.396152) ,
+      rgb (0.198177, 0.063862, 0.404009) ,
+      rgb (0.204935, 0.062907, 0.411514) ,
+      rgb (0.211718, 0.061992, 0.418647) ,
+      rgb (0.218512, 0.061158, 0.425392) ,
+      rgb (0.225302, 0.060445, 0.431742) ,
+      rgb (0.232077, 0.059889, 0.437695) ,
+      rgb (0.238826, 0.059517, 0.443256) ,
+      rgb (0.245543, 0.059352, 0.448436) ,
+      rgb (0.25222, 0.059415, 0.453248) ,
+      rgb (0.258857, 0.059706, 0.45771) ,
+      rgb (0.265447, 0.060237, 0.46184) ,
+      rgb (0.271994, 0.060994, 0.46566) ,
+      rgb (0.278493, 0.061978, 0.46919) ,
+      rgb (0.284951, 0.063168, 0.472451) ,
+      rgb (0.291366, 0.064553, 0.475462) ,
+      rgb (0.29774, 0.066117, 0.478243) ,
+      rgb (0.304081, 0.067835, 0.480812) ,
+      rgb (0.310382, 0.069702, 0.483186) ,
+      rgb (0.316654, 0.07169, 0.48538) ,
+      rgb (0.322899, 0.073782, 0.487408) ,
+      rgb (0.329114, 0.075972, 0.489287) ,
+      rgb (0.335308, 0.078236, 0.491024) ,
+      rgb (0.341482, 0.080564, 0.492631) ,
+      rgb (0.347636, 0.082946, 0.494121) ,
+      rgb (0.353773, 0.085373, 0.495501) ,
+      rgb (0.359898, 0.087831, 0.496778) ,
+      rgb (0.366012, 0.090314, 0.49796) ,
+      rgb (0.372116, 0.092816, 0.499053) ,
+      rgb (0.378211, 0.095332, 0.500067) ,
+      rgb (0.384299, 0.097855, 0.501002) ,
+      rgb (0.390384, 0.100379, 0.501864) ,
+      rgb (0.396467, 0.102902, 0.502658) ,
+      rgb (0.402548, 0.10542, 0.503386) ,
+      rgb (0.408629, 0.10793, 0.504052) ,
+      rgb (0.414709, 0.110431, 0.504662) ,
+      rgb (0.420791, 0.11292, 0.505215) ,
+      rgb (0.426877, 0.115395, 0.505714) ,
+      rgb (0.432967, 0.117855, 0.50616) ,
+      rgb (0.439062, 0.120298, 0.506555) ,
+      rgb (0.445163, 0.122724, 0.506901) ,
+      rgb (0.451271, 0.125132, 0.507198) ,
+      rgb (0.457386, 0.127522, 0.507448) ,
+      rgb (0.463508, 0.129893, 0.507652) ,
+      rgb (0.46964, 0.132245, 0.507809) ,
+      rgb (0.47578, 0.134577, 0.507921) ,
+      rgb (0.481929, 0.136891, 0.507989) ,
+      rgb (0.488088, 0.139186, 0.508011) ,
+      rgb (0.494258, 0.141462, 0.507988) ,
+      rgb (0.500438, 0.143719, 0.50792) ,
+      rgb (0.506629, 0.145958, 0.507806) ,
+      rgb (0.512831, 0.148179, 0.507648) ,
+      rgb (0.519045, 0.150383, 0.507443) ,
+      rgb (0.52527, 0.152569, 0.507192) ,
+      rgb (0.531507, 0.154739, 0.506895) ,
+      rgb (0.537755, 0.156894, 0.506551) ,
+      rgb (0.544015, 0.159033, 0.506159) ,
+      rgb (0.550287, 0.161158, 0.505719) ,
+      rgb (0.556571, 0.163269, 0.50523) ,
+      rgb (0.562866, 0.165368, 0.504692) ,
+      rgb (0.569172, 0.167454, 0.504105) ,
+      rgb (0.57549, 0.16953, 0.503466) ,
+      rgb (0.581819, 0.171596, 0.502777) ,
+      rgb (0.588158, 0.173652, 0.502035) ,
+      rgb (0.594508, 0.175701, 0.501241) ,
+      rgb (0.600868, 0.177743, 0.500394) ,
+      rgb (0.607238, 0.179779, 0.499492) ,
+      rgb (0.613617, 0.181811, 0.498536) ,
+      rgb (0.620005, 0.18384, 0.497524) ,
+      rgb (0.626401, 0.185867, 0.496456) ,
+      rgb (0.632805, 0.187893, 0.495332) ,
+      rgb (0.639216, 0.189921, 0.49415) ,
+      rgb (0.645633, 0.191952, 0.49291) ,
+      rgb (0.652056, 0.193986, 0.491611) ,
+      rgb (0.658483, 0.196027, 0.490253) ,
+      rgb (0.664915, 0.198075, 0.488836) ,
+      rgb (0.671349, 0.200133, 0.487358) ,
+      rgb (0.677786, 0.202203, 0.485819) ,
+      rgb (0.684224, 0.204286, 0.484219) ,
+      rgb (0.690661, 0.206384, 0.482558) ,
+      rgb (0.697098, 0.208501, 0.480835) ,
+      rgb (0.703532, 0.210638, 0.479049) ,
+      rgb (0.709962, 0.212797, 0.477201) ,
+      rgb (0.716387, 0.214982, 0.47529) ,
+      rgb (0.722805, 0.217194, 0.473316) ,
+      rgb (0.729216, 0.219437, 0.471279) ,
+      rgb (0.735616, 0.221713, 0.46918) ,
+      rgb (0.742004, 0.224025, 0.467018) ,
+      rgb (0.748378, 0.226377, 0.464794) ,
+      rgb (0.754737, 0.228772, 0.462509) ,
+      rgb (0.761077, 0.231214, 0.460162) ,
+      rgb (0.767398, 0.233705, 0.457755) ,
+      rgb (0.773695, 0.236249, 0.455289) ,
+      rgb (0.779968, 0.238851, 0.452765) ,
+      rgb (0.786212, 0.241514, 0.450184) ,
+      rgb (0.792427, 0.244242, 0.447543) ,
+      rgb (0.798608, 0.24704, 0.444848) ,
+      rgb (0.804752, 0.249911, 0.442102) ,
+      rgb (0.810855, 0.252861, 0.439305) ,
+      rgb (0.816914, 0.255895, 0.436461) ,
+      rgb (0.822926, 0.259016, 0.433573) ,
+      rgb (0.828886, 0.262229, 0.430644) ,
+      rgb (0.834791, 0.26554, 0.427671) ,
+      rgb (0.840636, 0.268953, 0.424666) ,
+      rgb (0.846416, 0.272473, 0.421631) ,
+      rgb (0.852126, 0.276106, 0.418573) ,
+      rgb (0.857763, 0.279857, 0.415496) ,
+      rgb (0.86332, 0.283729, 0.412403) ,
+      rgb (0.868793, 0.287728, 0.409303) ,
+      rgb (0.874176, 0.291859, 0.406205) ,
+      rgb (0.879464, 0.296125, 0.403118) ,
+      rgb (0.884651, 0.30053, 0.400047) ,
+      rgb (0.889731, 0.305079, 0.397002) ,
+      rgb (0.8947, 0.309773, 0.393995) ,
+      rgb (0.899552, 0.314616, 0.391037) ,
+      rgb (0.904281, 0.31961, 0.388137) ,
+      rgb (0.908884, 0.324755, 0.385308) ,
+      rgb (0.913354, 0.330052, 0.382563) ,
+      rgb (0.917689, 0.3355, 0.379915) ,
+      rgb (0.921884, 0.341098, 0.377376) ,
+      rgb (0.925937, 0.346844, 0.374959) ,
+      rgb (0.929845, 0.352734, 0.372677) ,
+      rgb (0.933606, 0.358764, 0.370541) ,
+      rgb (0.937221, 0.364929, 0.368567) ,
+      rgb (0.940687, 0.371224, 0.366762) ,
+      rgb (0.944006, 0.377643, 0.365136) ,
+      rgb (0.94718, 0.384178, 0.363701) ,
+      rgb (0.95021, 0.39082, 0.362468) ,
+      rgb (0.953099, 0.397563, 0.361438) ,
+      rgb (0.955849, 0.4044, 0.360619) ,
+      rgb (0.958464, 0.411324, 0.360014) ,
+      rgb (0.960949, 0.418323, 0.35963) ,
+      rgb (0.96331, 0.42539, 0.359469) ,
+      rgb (0.965549, 0.432519, 0.359529) ,
+      rgb (0.967671, 0.439703, 0.35981) ,
+      rgb (0.96968, 0.446936, 0.360311) ,
+      rgb (0.971582, 0.45421, 0.36103) ,
+      rgb (0.973381, 0.46152, 0.361965) ,
+      rgb (0.975082, 0.468861, 0.363111) ,
+      rgb (0.97669, 0.476226, 0.364466) ,
+      rgb (0.97821, 0.483612, 0.366025) ,
+      rgb (0.979645, 0.491014, 0.367783) ,
+      rgb (0.981, 0.498428, 0.369734) ,
+      rgb (0.982279, 0.505851, 0.371874) ,
+      rgb (0.983485, 0.51328, 0.374198) ,
+      rgb (0.984622, 0.520713, 0.376698) ,
+      rgb (0.985693, 0.528148, 0.379371) ,
+      rgb (0.9867, 0.535582, 0.38221) ,
+      rgb (0.987646, 0.543015, 0.38521) ,
+      rgb (0.988533, 0.550446, 0.388365) ,
+      rgb (0.989363, 0.557873, 0.391671) ,
+      rgb (0.990138, 0.565296, 0.395122) ,
+      rgb (0.990871, 0.572706, 0.398714) ,
+      rgb (0.991558, 0.580107, 0.402441) ,
+      rgb (0.992196, 0.587502, 0.406299) ,
+      rgb (0.992785, 0.594891, 0.410283) ,
+      rgb (0.993326, 0.602275, 0.41439) ,
+      rgb (0.993834, 0.609644, 0.418613) ,
+      rgb (0.994309, 0.616999, 0.42295) ,
+      rgb (0.994738, 0.62435, 0.427397) ,
+      rgb (0.995122, 0.631696, 0.431951) ,
+      rgb (0.99548, 0.639027, 0.436607) ,
+      rgb (0.99581, 0.646344, 0.441361) ,
+      rgb (0.996096, 0.653659, 0.446213) ,
+      rgb (0.996341, 0.660969, 0.45116) ,
+      rgb (0.99658, 0.668256, 0.456192) ,
+      rgb (0.996775, 0.675541, 0.461314) ,
+      rgb (0.996925, 0.682828, 0.466526) ,
+      rgb (0.997077, 0.690088, 0.471811) ,
+      rgb (0.997186, 0.697349, 0.477182) ,
+      rgb (0.997254, 0.704611, 0.482635) ,
+      rgb (0.997325, 0.711848, 0.488154) ,
+      rgb (0.997351, 0.719089, 0.493755) ,
+      rgb (0.997351, 0.726324, 0.499428) ,
+      rgb (0.997341, 0.733545, 0.505167) ,
+      rgb (0.997285, 0.740772, 0.510983) ,
+      rgb (0.997228, 0.747981, 0.516859) ,
+      rgb (0.997138, 0.75519, 0.522806) ,
+      rgb (0.997019, 0.762398, 0.528821) ,
+      rgb (0.996898, 0.769591, 0.534892) ,
+      rgb (0.996727, 0.776795, 0.541039) ,
+      rgb (0.996571, 0.783977, 0.547233) ,
+      rgb (0.996369, 0.791167, 0.553499) ,
+      rgb (0.996162, 0.798348, 0.55982) ,
+      rgb (0.995932, 0.805527, 0.566202) ,
+      rgb (0.99568, 0.812706, 0.572645) ,
+      rgb (0.995424, 0.819875, 0.57914) ,
+      rgb (0.995131, 0.827052, 0.585701) ,
+      rgb (0.994851, 0.834213, 0.592307) ,
+      rgb (0.994524, 0.841387, 0.598983) ,
+      rgb (0.994222, 0.84854, 0.605696) ,
+      rgb (0.993866, 0.855711, 0.612482) ,
+      rgb (0.993545, 0.862859, 0.619299) ,
+      rgb (0.99317, 0.870024, 0.626189) ,
+      rgb (0.992831, 0.877168, 0.633109) ,
+      rgb (0.99244, 0.88433, 0.640099) ,
+      rgb (0.992089, 0.89147, 0.647116) ,
+      rgb (0.991688, 0.898627, 0.654202) ,
+      rgb (0.991332, 0.905763, 0.661309) ,
+      rgb (0.99093, 0.912915, 0.668481) ,
+      rgb (0.99057, 0.920049, 0.675675) ,
+      rgb (0.990175, 0.927196, 0.682926) ,
+      rgb (0.989815, 0.934329, 0.690198) ,
+      rgb (0.989434, 0.94147, 0.697519) ,
+      rgb (0.989077, 0.948604, 0.704863) ,
+      rgb (0.988717, 0.955742, 0.712242) ,
+      rgb (0.988367, 0.962878, 0.719649) ,
+      rgb (0.988033, 0.970012, 0.727077) ,
+      rgb (0.987691, 0.977154, 0.734536) ,
+      rgb (0.987387, 0.984288, 0.742002) ,
+      rgb (0.987053, 0.991438, 0.749504)
+      });
 
 
 list_data plasma = list_data(new pen[] {
-  rgb (0.050383, 0.029803, 0.527975) ,
-  rgb (0.063536, 0.028426, 0.533124) ,
-  rgb (0.075353, 0.027206, 0.538007) ,
-  rgb (0.086222, 0.026125, 0.542658) ,
-  rgb (0.096379, 0.025165, 0.547103) ,
-  rgb (0.10598, 0.024309, 0.551368) ,
-  rgb (0.115124, 0.023556, 0.555468) ,
-  rgb (0.123903, 0.022878, 0.559423) ,
-  rgb (0.132381, 0.022258, 0.56325) ,
-  rgb (0.140603, 0.021687, 0.566959) ,
-  rgb (0.148607, 0.021154, 0.570562) ,
-  rgb (0.156421, 0.020651, 0.574065) ,
-  rgb (0.16407, 0.020171, 0.577478) ,
-  rgb (0.171574, 0.019706, 0.580806) ,
-  rgb (0.17895, 0.019252, 0.584054) ,
-  rgb (0.186213, 0.018803, 0.587228) ,
-  rgb (0.193374, 0.018354, 0.59033) ,
-  rgb (0.200445, 0.017902, 0.593364) ,
-  rgb (0.207435, 0.017442, 0.596333) ,
-  rgb (0.21435, 0.016973, 0.599239) ,
-  rgb (0.221197, 0.016497, 0.602083) ,
-  rgb (0.227983, 0.016007, 0.604867) ,
-  rgb (0.234715, 0.015502, 0.607592) ,
-  rgb (0.241396, 0.014979, 0.610259) ,
-  rgb (0.248032, 0.014439, 0.612868) ,
-  rgb (0.254627, 0.013882, 0.615419) ,
-  rgb (0.261183, 0.013308, 0.617911) ,
-  rgb (0.267703, 0.012716, 0.620346) ,
-  rgb (0.274191, 0.012109, 0.622722) ,
-  rgb (0.280648, 0.011488, 0.625038) ,
-  rgb (0.287076, 0.010855, 0.627295) ,
-  rgb (0.293478, 0.010213, 0.62949) ,
-  rgb (0.299855, 0.009561, 0.631624) ,
-  rgb (0.30621, 0.008902, 0.633694) ,
-  rgb (0.312543, 0.008239, 0.6357) ,
-  rgb (0.318856, 0.007576, 0.63764) ,
-  rgb (0.32515, 0.006915, 0.639512) ,
-  rgb (0.331426, 0.006261, 0.641316) ,
-  rgb (0.337683, 0.005618, 0.643049) ,
-  rgb (0.343925, 0.004991, 0.64471) ,
-  rgb (0.35015, 0.004382, 0.646298) ,
-  rgb (0.356359, 0.003798, 0.64781) ,
-  rgb (0.362553, 0.003243, 0.649245) ,
-  rgb (0.368733, 0.002724, 0.650601) ,
-  rgb (0.374897, 0.002245, 0.651876) ,
-  rgb (0.381047, 0.001814, 0.653068) ,
-  rgb (0.387183, 0.001434, 0.654177) ,
-  rgb (0.393304, 0.001114, 0.655199) ,
-  rgb (0.399411, 0.000859, 0.656133) ,
-  rgb (0.405503, 0.000678, 0.656977) ,
-  rgb (0.41158, 0.000577, 0.65773) ,
-  rgb (0.417642, 0.000564, 0.65839) ,
-  rgb (0.423689, 0.000646, 0.658956) ,
-  rgb (0.429719, 0.000831, 0.659425) ,
-  rgb (0.435734, 0.001127, 0.659797) ,
-  rgb (0.441732, 0.00154, 0.660069) ,
-  rgb (0.447714, 0.00208, 0.66024) ,
-  rgb (0.453677, 0.002755, 0.66031) ,
-  rgb (0.459623, 0.003574, 0.660277) ,
-  rgb (0.46555, 0.004545, 0.660139) ,
-  rgb (0.471457, 0.005678, 0.659897) ,
-  rgb (0.477344, 0.00698, 0.659549) ,
-  rgb (0.48321, 0.00846, 0.659095) ,
-  rgb (0.489055, 0.010127, 0.658534) ,
-  rgb (0.494877, 0.01199, 0.657865) ,
-  rgb (0.500678, 0.014055, 0.657088) ,
-  rgb (0.506454, 0.016333, 0.656202) ,
-  rgb (0.512206, 0.018833, 0.655209) ,
-  rgb (0.517933, 0.021563, 0.654109) ,
-  rgb (0.523633, 0.024532, 0.652901) ,
-  rgb (0.529306, 0.027747, 0.651586) ,
-  rgb (0.534952, 0.031217, 0.650165) ,
-  rgb (0.54057, 0.03495, 0.64864) ,
-  rgb (0.546157, 0.038954, 0.64701) ,
-  rgb (0.551715, 0.043136, 0.645277) ,
-  rgb (0.557243, 0.047331, 0.643443) ,
-  rgb (0.562738, 0.051545, 0.641509) ,
-  rgb (0.568201, 0.055778, 0.639477) ,
-  rgb (0.573632, 0.060028, 0.637349) ,
-  rgb (0.579029, 0.064296, 0.635126) ,
-  rgb (0.584391, 0.068579, 0.632812) ,
-  rgb (0.589719, 0.072878, 0.630408) ,
-  rgb (0.595011, 0.07719, 0.627917) ,
-  rgb (0.600266, 0.081516, 0.625342) ,
-  rgb (0.605485, 0.085854, 0.622686) ,
-  rgb (0.610667, 0.090204, 0.619951) ,
-  rgb (0.615812, 0.094564, 0.61714) ,
-  rgb (0.620919, 0.098934, 0.614257) ,
-  rgb (0.625987, 0.103312, 0.611305) ,
-  rgb (0.631017, 0.107699, 0.608287) ,
-  rgb (0.636008, 0.112092, 0.605205) ,
-  rgb (0.640959, 0.116492, 0.602065) ,
-  rgb (0.645872, 0.120898, 0.598867) ,
-  rgb (0.650746, 0.125309, 0.595617) ,
-  rgb (0.65558, 0.129725, 0.592317) ,
-  rgb (0.660374, 0.134144, 0.588971) ,
-  rgb (0.665129, 0.138566, 0.585582) ,
-  rgb (0.669845, 0.142992, 0.582154) ,
-  rgb (0.674522, 0.147419, 0.578688) ,
-  rgb (0.67916, 0.151848, 0.575189) ,
-  rgb (0.683758, 0.156278, 0.57166) ,
-  rgb (0.688318, 0.160709, 0.568103) ,
-  rgb (0.69284, 0.165141, 0.564522) ,
-  rgb (0.697324, 0.169573, 0.560919) ,
-  rgb (0.701769, 0.174005, 0.557296) ,
-  rgb (0.706178, 0.178437, 0.553657) ,
-  rgb (0.710549, 0.182868, 0.550004) ,
-  rgb (0.714883, 0.187299, 0.546338) ,
-  rgb (0.719181, 0.191729, 0.542663) ,
-  rgb (0.723444, 0.196158, 0.538981) ,
-  rgb (0.72767, 0.200586, 0.535293) ,
-  rgb (0.731862, 0.205013, 0.531601) ,
-  rgb (0.736019, 0.209439, 0.527908) ,
-  rgb (0.740143, 0.213864, 0.524216) ,
-  rgb (0.744232, 0.218288, 0.520524) ,
-  rgb (0.748289, 0.222711, 0.516834) ,
-  rgb (0.752312, 0.227133, 0.513149) ,
-  rgb (0.756304, 0.231555, 0.509468) ,
-  rgb (0.760264, 0.235976, 0.505794) ,
-  rgb (0.764193, 0.240396, 0.502126) ,
-  rgb (0.76809, 0.244817, 0.498465) ,
-  rgb (0.771958, 0.249237, 0.494813) ,
-  rgb (0.775796, 0.253658, 0.491171) ,
-  rgb (0.779604, 0.258078, 0.487539) ,
-  rgb (0.783383, 0.2625, 0.483918) ,
-  rgb (0.787133, 0.266922, 0.480307) ,
-  rgb (0.790855, 0.271345, 0.476706) ,
-  rgb (0.794549, 0.27577, 0.473117) ,
-  rgb (0.798216, 0.280197, 0.469538) ,
-  rgb (0.801855, 0.284626, 0.465971) ,
-  rgb (0.805467, 0.289057, 0.462415) ,
-  rgb (0.809052, 0.293491, 0.45887) ,
-  rgb (0.812612, 0.297928, 0.455338) ,
-  rgb (0.816144, 0.302368, 0.451816) ,
-  rgb (0.819651, 0.306812, 0.448306) ,
-  rgb (0.823132, 0.311261, 0.444806) ,
-  rgb (0.826588, 0.315714, 0.441316) ,
-  rgb (0.830018, 0.320172, 0.437836) ,
-  rgb (0.833422, 0.324635, 0.434366) ,
-  rgb (0.836801, 0.329105, 0.430905) ,
-  rgb (0.840155, 0.33358, 0.427455) ,
-  rgb (0.843484, 0.338062, 0.424013) ,
-  rgb (0.846788, 0.342551, 0.420579) ,
-  rgb (0.850066, 0.347048, 0.417153) ,
-  rgb (0.853319, 0.351553, 0.413734) ,
-  rgb (0.856547, 0.356066, 0.410322) ,
-  rgb (0.85975, 0.360588, 0.406917) ,
-  rgb (0.862927, 0.365119, 0.403519) ,
-  rgb (0.866078, 0.36966, 0.400126) ,
-  rgb (0.869203, 0.374212, 0.396738) ,
-  rgb (0.872303, 0.378774, 0.393355) ,
-  rgb (0.875376, 0.383347, 0.389976) ,
-  rgb (0.878423, 0.387932, 0.3866) ,
-  rgb (0.881443, 0.392529, 0.383229) ,
-  rgb (0.884436, 0.397139, 0.37986) ,
-  rgb (0.887402, 0.401762, 0.376494) ,
-  rgb (0.89034, 0.406398, 0.37313) ,
-  rgb (0.89325, 0.411048, 0.369768) ,
-  rgb (0.896131, 0.415712, 0.366407) ,
-  rgb (0.898984, 0.420392, 0.363047) ,
-  rgb (0.901807, 0.425087, 0.359688) ,
-  rgb (0.904601, 0.429797, 0.356329) ,
-  rgb (0.907365, 0.434524, 0.35297) ,
-  rgb (0.910098, 0.439268, 0.34961) ,
-  rgb (0.9128, 0.444029, 0.346251) ,
-  rgb (0.915471, 0.448807, 0.34289) ,
-  rgb (0.918109, 0.453603, 0.339529) ,
-  rgb (0.920714, 0.458417, 0.336166) ,
-  rgb (0.923287, 0.463251, 0.332801) ,
-  rgb (0.925825, 0.468103, 0.329435) ,
-  rgb (0.928329, 0.472975, 0.326067) ,
-  rgb (0.930798, 0.477867, 0.322697) ,
-  rgb (0.933232, 0.48278, 0.319325) ,
-  rgb (0.93563, 0.487712, 0.315952) ,
-  rgb (0.93799, 0.492667, 0.312575) ,
-  rgb (0.940313, 0.497642, 0.309197) ,
-  rgb (0.942598, 0.502639, 0.305816) ,
-  rgb (0.944844, 0.507658, 0.302433) ,
-  rgb (0.947051, 0.512699, 0.299049) ,
-  rgb (0.949217, 0.517763, 0.295662) ,
-  rgb (0.951344, 0.52285, 0.292275) ,
-  rgb (0.953428, 0.52796, 0.288883) ,
-  rgb (0.95547, 0.533093, 0.28549) ,
-  rgb (0.957469, 0.53825, 0.282096) ,
-  rgb (0.959424, 0.543431, 0.278701) ,
-  rgb (0.961336, 0.548636, 0.275305) ,
-  rgb (0.963203, 0.553865, 0.271909) ,
-  rgb (0.965024, 0.559118, 0.268513) ,
-  rgb (0.966798, 0.564396, 0.265118) ,
-  rgb (0.968526, 0.5697, 0.261721) ,
-  rgb (0.970205, 0.575028, 0.258325) ,
-  rgb (0.971835, 0.580382, 0.254931) ,
-  rgb (0.973416, 0.585761, 0.25154) ,
-  rgb (0.974947, 0.591165, 0.248151) ,
-  rgb (0.976428, 0.596595, 0.244767) ,
-  rgb (0.977856, 0.602051, 0.241387) ,
-  rgb (0.979233, 0.607532, 0.238013) ,
-  rgb (0.980556, 0.613039, 0.234646) ,
-  rgb (0.981826, 0.618572, 0.231287) ,
-  rgb (0.983041, 0.624131, 0.227937) ,
-  rgb (0.984199, 0.629718, 0.224595) ,
-  rgb (0.985301, 0.63533, 0.221265) ,
-  rgb (0.986345, 0.640969, 0.217948) ,
-  rgb (0.987332, 0.646633, 0.214648) ,
-  rgb (0.98826, 0.652325, 0.211364) ,
-  rgb (0.989128, 0.658043, 0.2081) ,
-  rgb (0.989935, 0.663787, 0.204859) ,
-  rgb (0.990681, 0.669558, 0.201642) ,
-  rgb (0.991365, 0.675355, 0.198453) ,
-  rgb (0.991985, 0.681179, 0.195295) ,
-  rgb (0.992541, 0.68703, 0.19217) ,
-  rgb (0.993032, 0.692907, 0.189084) ,
-  rgb (0.993456, 0.69881, 0.186041) ,
-  rgb (0.993814, 0.704741, 0.183043) ,
-  rgb (0.994103, 0.710698, 0.180097) ,
-  rgb (0.994324, 0.716681, 0.177208) ,
-  rgb (0.994474, 0.722691, 0.174381) ,
-  rgb (0.994553, 0.728728, 0.171622) ,
-  rgb (0.994561, 0.734791, 0.168938) ,
-  rgb (0.994495, 0.74088, 0.166335) ,
-  rgb (0.994355, 0.746995, 0.163821) ,
-  rgb (0.994141, 0.753137, 0.161404) ,
-  rgb (0.993851, 0.759304, 0.159092) ,
-  rgb (0.993482, 0.765499, 0.156891) ,
-  rgb (0.993033, 0.77172, 0.154808) ,
-  rgb (0.992505, 0.777967, 0.152855) ,
-  rgb (0.991897, 0.784239, 0.151042) ,
-  rgb (0.991209, 0.790537, 0.149377) ,
-  rgb (0.990439, 0.796859, 0.14787) ,
-  rgb (0.989587, 0.803205, 0.146529) ,
-  rgb (0.988648, 0.809579, 0.145357) ,
-  rgb (0.987621, 0.815978, 0.144363) ,
-  rgb (0.986509, 0.822401, 0.143557) ,
-  rgb (0.985314, 0.828846, 0.142945) ,
-  rgb (0.984031, 0.835315, 0.142528) ,
-  rgb (0.982653, 0.841812, 0.142303) ,
-  rgb (0.98119, 0.848329, 0.142279) ,
-  rgb (0.979644, 0.854866, 0.142453) ,
-  rgb (0.977995, 0.861432, 0.142808) ,
-  rgb (0.976265, 0.868016, 0.143351) ,
-  rgb (0.974443, 0.874622, 0.144061) ,
-  rgb (0.97253, 0.88125, 0.144923) ,
-  rgb (0.970533, 0.887896, 0.145919) ,
-  rgb (0.968443, 0.894564, 0.147014) ,
-  rgb (0.966271, 0.901249, 0.14818) ,
-  rgb (0.964021, 0.90795, 0.14937) ,
-  rgb (0.961681, 0.914672, 0.15052) ,
-  rgb (0.959276, 0.921407, 0.151566) ,
-  rgb (0.956808, 0.928152, 0.152409) ,
-  rgb (0.954287, 0.934908, 0.152921) ,
-  rgb (0.951726, 0.941671, 0.152925) ,
-  rgb (0.949151, 0.948435, 0.152178) ,
-  rgb (0.946602, 0.95519, 0.150328) ,
-  rgb (0.944152, 0.961916, 0.146861) ,
-  rgb (0.941896, 0.96859, 0.140956) ,
-  rgb (0.940015, 0.975158, 0.131326)
-});
+    rgb (0.050383, 0.029803, 0.527975) ,
+      rgb (0.063536, 0.028426, 0.533124) ,
+      rgb (0.075353, 0.027206, 0.538007) ,
+      rgb (0.086222, 0.026125, 0.542658) ,
+      rgb (0.096379, 0.025165, 0.547103) ,
+      rgb (0.10598, 0.024309, 0.551368) ,
+      rgb (0.115124, 0.023556, 0.555468) ,
+      rgb (0.123903, 0.022878, 0.559423) ,
+      rgb (0.132381, 0.022258, 0.56325) ,
+      rgb (0.140603, 0.021687, 0.566959) ,
+      rgb (0.148607, 0.021154, 0.570562) ,
+      rgb (0.156421, 0.020651, 0.574065) ,
+      rgb (0.16407, 0.020171, 0.577478) ,
+      rgb (0.171574, 0.019706, 0.580806) ,
+      rgb (0.17895, 0.019252, 0.584054) ,
+      rgb (0.186213, 0.018803, 0.587228) ,
+      rgb (0.193374, 0.018354, 0.59033) ,
+      rgb (0.200445, 0.017902, 0.593364) ,
+      rgb (0.207435, 0.017442, 0.596333) ,
+      rgb (0.21435, 0.016973, 0.599239) ,
+      rgb (0.221197, 0.016497, 0.602083) ,
+      rgb (0.227983, 0.016007, 0.604867) ,
+      rgb (0.234715, 0.015502, 0.607592) ,
+      rgb (0.241396, 0.014979, 0.610259) ,
+      rgb (0.248032, 0.014439, 0.612868) ,
+      rgb (0.254627, 0.013882, 0.615419) ,
+      rgb (0.261183, 0.013308, 0.617911) ,
+      rgb (0.267703, 0.012716, 0.620346) ,
+      rgb (0.274191, 0.012109, 0.622722) ,
+      rgb (0.280648, 0.011488, 0.625038) ,
+      rgb (0.287076, 0.010855, 0.627295) ,
+      rgb (0.293478, 0.010213, 0.62949) ,
+      rgb (0.299855, 0.009561, 0.631624) ,
+      rgb (0.30621, 0.008902, 0.633694) ,
+      rgb (0.312543, 0.008239, 0.6357) ,
+      rgb (0.318856, 0.007576, 0.63764) ,
+      rgb (0.32515, 0.006915, 0.639512) ,
+      rgb (0.331426, 0.006261, 0.641316) ,
+      rgb (0.337683, 0.005618, 0.643049) ,
+      rgb (0.343925, 0.004991, 0.64471) ,
+      rgb (0.35015, 0.004382, 0.646298) ,
+      rgb (0.356359, 0.003798, 0.64781) ,
+      rgb (0.362553, 0.003243, 0.649245) ,
+      rgb (0.368733, 0.002724, 0.650601) ,
+      rgb (0.374897, 0.002245, 0.651876) ,
+      rgb (0.381047, 0.001814, 0.653068) ,
+      rgb (0.387183, 0.001434, 0.654177) ,
+      rgb (0.393304, 0.001114, 0.655199) ,
+      rgb (0.399411, 0.000859, 0.656133) ,
+      rgb (0.405503, 0.000678, 0.656977) ,
+      rgb (0.41158, 0.000577, 0.65773) ,
+      rgb (0.417642, 0.000564, 0.65839) ,
+      rgb (0.423689, 0.000646, 0.658956) ,
+      rgb (0.429719, 0.000831, 0.659425) ,
+      rgb (0.435734, 0.001127, 0.659797) ,
+      rgb (0.441732, 0.00154, 0.660069) ,
+      rgb (0.447714, 0.00208, 0.66024) ,
+      rgb (0.453677, 0.002755, 0.66031) ,
+      rgb (0.459623, 0.003574, 0.660277) ,
+      rgb (0.46555, 0.004545, 0.660139) ,
+      rgb (0.471457, 0.005678, 0.659897) ,
+      rgb (0.477344, 0.00698, 0.659549) ,
+      rgb (0.48321, 0.00846, 0.659095) ,
+      rgb (0.489055, 0.010127, 0.658534) ,
+      rgb (0.494877, 0.01199, 0.657865) ,
+      rgb (0.500678, 0.014055, 0.657088) ,
+      rgb (0.506454, 0.016333, 0.656202) ,
+      rgb (0.512206, 0.018833, 0.655209) ,
+      rgb (0.517933, 0.021563, 0.654109) ,
+      rgb (0.523633, 0.024532, 0.652901) ,
+      rgb (0.529306, 0.027747, 0.651586) ,
+      rgb (0.534952, 0.031217, 0.650165) ,
+      rgb (0.54057, 0.03495, 0.64864) ,
+      rgb (0.546157, 0.038954, 0.64701) ,
+      rgb (0.551715, 0.043136, 0.645277) ,
+      rgb (0.557243, 0.047331, 0.643443) ,
+      rgb (0.562738, 0.051545, 0.641509) ,
+      rgb (0.568201, 0.055778, 0.639477) ,
+      rgb (0.573632, 0.060028, 0.637349) ,
+      rgb (0.579029, 0.064296, 0.635126) ,
+      rgb (0.584391, 0.068579, 0.632812) ,
+      rgb (0.589719, 0.072878, 0.630408) ,
+      rgb (0.595011, 0.07719, 0.627917) ,
+      rgb (0.600266, 0.081516, 0.625342) ,
+      rgb (0.605485, 0.085854, 0.622686) ,
+      rgb (0.610667, 0.090204, 0.619951) ,
+      rgb (0.615812, 0.094564, 0.61714) ,
+      rgb (0.620919, 0.098934, 0.614257) ,
+      rgb (0.625987, 0.103312, 0.611305) ,
+      rgb (0.631017, 0.107699, 0.608287) ,
+      rgb (0.636008, 0.112092, 0.605205) ,
+      rgb (0.640959, 0.116492, 0.602065) ,
+      rgb (0.645872, 0.120898, 0.598867) ,
+      rgb (0.650746, 0.125309, 0.595617) ,
+      rgb (0.65558, 0.129725, 0.592317) ,
+      rgb (0.660374, 0.134144, 0.588971) ,
+      rgb (0.665129, 0.138566, 0.585582) ,
+      rgb (0.669845, 0.142992, 0.582154) ,
+      rgb (0.674522, 0.147419, 0.578688) ,
+      rgb (0.67916, 0.151848, 0.575189) ,
+      rgb (0.683758, 0.156278, 0.57166) ,
+      rgb (0.688318, 0.160709, 0.568103) ,
+      rgb (0.69284, 0.165141, 0.564522) ,
+      rgb (0.697324, 0.169573, 0.560919) ,
+      rgb (0.701769, 0.174005, 0.557296) ,
+      rgb (0.706178, 0.178437, 0.553657) ,
+      rgb (0.710549, 0.182868, 0.550004) ,
+      rgb (0.714883, 0.187299, 0.546338) ,
+      rgb (0.719181, 0.191729, 0.542663) ,
+      rgb (0.723444, 0.196158, 0.538981) ,
+      rgb (0.72767, 0.200586, 0.535293) ,
+      rgb (0.731862, 0.205013, 0.531601) ,
+      rgb (0.736019, 0.209439, 0.527908) ,
+      rgb (0.740143, 0.213864, 0.524216) ,
+      rgb (0.744232, 0.218288, 0.520524) ,
+      rgb (0.748289, 0.222711, 0.516834) ,
+      rgb (0.752312, 0.227133, 0.513149) ,
+      rgb (0.756304, 0.231555, 0.509468) ,
+      rgb (0.760264, 0.235976, 0.505794) ,
+      rgb (0.764193, 0.240396, 0.502126) ,
+      rgb (0.76809, 0.244817, 0.498465) ,
+      rgb (0.771958, 0.249237, 0.494813) ,
+      rgb (0.775796, 0.253658, 0.491171) ,
+      rgb (0.779604, 0.258078, 0.487539) ,
+      rgb (0.783383, 0.2625, 0.483918) ,
+      rgb (0.787133, 0.266922, 0.480307) ,
+      rgb (0.790855, 0.271345, 0.476706) ,
+      rgb (0.794549, 0.27577, 0.473117) ,
+      rgb (0.798216, 0.280197, 0.469538) ,
+      rgb (0.801855, 0.284626, 0.465971) ,
+      rgb (0.805467, 0.289057, 0.462415) ,
+      rgb (0.809052, 0.293491, 0.45887) ,
+      rgb (0.812612, 0.297928, 0.455338) ,
+      rgb (0.816144, 0.302368, 0.451816) ,
+      rgb (0.819651, 0.306812, 0.448306) ,
+      rgb (0.823132, 0.311261, 0.444806) ,
+      rgb (0.826588, 0.315714, 0.441316) ,
+      rgb (0.830018, 0.320172, 0.437836) ,
+      rgb (0.833422, 0.324635, 0.434366) ,
+      rgb (0.836801, 0.329105, 0.430905) ,
+      rgb (0.840155, 0.33358, 0.427455) ,
+      rgb (0.843484, 0.338062, 0.424013) ,
+      rgb (0.846788, 0.342551, 0.420579) ,
+      rgb (0.850066, 0.347048, 0.417153) ,
+      rgb (0.853319, 0.351553, 0.413734) ,
+      rgb (0.856547, 0.356066, 0.410322) ,
+      rgb (0.85975, 0.360588, 0.406917) ,
+      rgb (0.862927, 0.365119, 0.403519) ,
+      rgb (0.866078, 0.36966, 0.400126) ,
+      rgb (0.869203, 0.374212, 0.396738) ,
+      rgb (0.872303, 0.378774, 0.393355) ,
+      rgb (0.875376, 0.383347, 0.389976) ,
+      rgb (0.878423, 0.387932, 0.3866) ,
+      rgb (0.881443, 0.392529, 0.383229) ,
+      rgb (0.884436, 0.397139, 0.37986) ,
+      rgb (0.887402, 0.401762, 0.376494) ,
+      rgb (0.89034, 0.406398, 0.37313) ,
+      rgb (0.89325, 0.411048, 0.369768) ,
+      rgb (0.896131, 0.415712, 0.366407) ,
+      rgb (0.898984, 0.420392, 0.363047) ,
+      rgb (0.901807, 0.425087, 0.359688) ,
+      rgb (0.904601, 0.429797, 0.356329) ,
+      rgb (0.907365, 0.434524, 0.35297) ,
+      rgb (0.910098, 0.439268, 0.34961) ,
+      rgb (0.9128, 0.444029, 0.346251) ,
+      rgb (0.915471, 0.448807, 0.34289) ,
+      rgb (0.918109, 0.453603, 0.339529) ,
+      rgb (0.920714, 0.458417, 0.336166) ,
+      rgb (0.923287, 0.463251, 0.332801) ,
+      rgb (0.925825, 0.468103, 0.329435) ,
+      rgb (0.928329, 0.472975, 0.326067) ,
+      rgb (0.930798, 0.477867, 0.322697) ,
+      rgb (0.933232, 0.48278, 0.319325) ,
+      rgb (0.93563, 0.487712, 0.315952) ,
+      rgb (0.93799, 0.492667, 0.312575) ,
+      rgb (0.940313, 0.497642, 0.309197) ,
+      rgb (0.942598, 0.502639, 0.305816) ,
+      rgb (0.944844, 0.507658, 0.302433) ,
+      rgb (0.947051, 0.512699, 0.299049) ,
+      rgb (0.949217, 0.517763, 0.295662) ,
+      rgb (0.951344, 0.52285, 0.292275) ,
+      rgb (0.953428, 0.52796, 0.288883) ,
+      rgb (0.95547, 0.533093, 0.28549) ,
+      rgb (0.957469, 0.53825, 0.282096) ,
+      rgb (0.959424, 0.543431, 0.278701) ,
+      rgb (0.961336, 0.548636, 0.275305) ,
+      rgb (0.963203, 0.553865, 0.271909) ,
+      rgb (0.965024, 0.559118, 0.268513) ,
+      rgb (0.966798, 0.564396, 0.265118) ,
+      rgb (0.968526, 0.5697, 0.261721) ,
+      rgb (0.970205, 0.575028, 0.258325) ,
+      rgb (0.971835, 0.580382, 0.254931) ,
+      rgb (0.973416, 0.585761, 0.25154) ,
+      rgb (0.974947, 0.591165, 0.248151) ,
+      rgb (0.976428, 0.596595, 0.244767) ,
+      rgb (0.977856, 0.602051, 0.241387) ,
+      rgb (0.979233, 0.607532, 0.238013) ,
+      rgb (0.980556, 0.613039, 0.234646) ,
+      rgb (0.981826, 0.618572, 0.231287) ,
+      rgb (0.983041, 0.624131, 0.227937) ,
+      rgb (0.984199, 0.629718, 0.224595) ,
+      rgb (0.985301, 0.63533, 0.221265) ,
+      rgb (0.986345, 0.640969, 0.217948) ,
+      rgb (0.987332, 0.646633, 0.214648) ,
+      rgb (0.98826, 0.652325, 0.211364) ,
+      rgb (0.989128, 0.658043, 0.2081) ,
+      rgb (0.989935, 0.663787, 0.204859) ,
+      rgb (0.990681, 0.669558, 0.201642) ,
+      rgb (0.991365, 0.675355, 0.198453) ,
+      rgb (0.991985, 0.681179, 0.195295) ,
+      rgb (0.992541, 0.68703, 0.19217) ,
+      rgb (0.993032, 0.692907, 0.189084) ,
+      rgb (0.993456, 0.69881, 0.186041) ,
+      rgb (0.993814, 0.704741, 0.183043) ,
+      rgb (0.994103, 0.710698, 0.180097) ,
+      rgb (0.994324, 0.716681, 0.177208) ,
+      rgb (0.994474, 0.722691, 0.174381) ,
+      rgb (0.994553, 0.728728, 0.171622) ,
+      rgb (0.994561, 0.734791, 0.168938) ,
+      rgb (0.994495, 0.74088, 0.166335) ,
+      rgb (0.994355, 0.746995, 0.163821) ,
+      rgb (0.994141, 0.753137, 0.161404) ,
+      rgb (0.993851, 0.759304, 0.159092) ,
+      rgb (0.993482, 0.765499, 0.156891) ,
+      rgb (0.993033, 0.77172, 0.154808) ,
+      rgb (0.992505, 0.777967, 0.152855) ,
+      rgb (0.991897, 0.784239, 0.151042) ,
+      rgb (0.991209, 0.790537, 0.149377) ,
+      rgb (0.990439, 0.796859, 0.14787) ,
+      rgb (0.989587, 0.803205, 0.146529) ,
+      rgb (0.988648, 0.809579, 0.145357) ,
+      rgb (0.987621, 0.815978, 0.144363) ,
+      rgb (0.986509, 0.822401, 0.143557) ,
+      rgb (0.985314, 0.828846, 0.142945) ,
+      rgb (0.984031, 0.835315, 0.142528) ,
+      rgb (0.982653, 0.841812, 0.142303) ,
+      rgb (0.98119, 0.848329, 0.142279) ,
+      rgb (0.979644, 0.854866, 0.142453) ,
+      rgb (0.977995, 0.861432, 0.142808) ,
+      rgb (0.976265, 0.868016, 0.143351) ,
+      rgb (0.974443, 0.874622, 0.144061) ,
+      rgb (0.97253, 0.88125, 0.144923) ,
+      rgb (0.970533, 0.887896, 0.145919) ,
+      rgb (0.968443, 0.894564, 0.147014) ,
+      rgb (0.966271, 0.901249, 0.14818) ,
+      rgb (0.964021, 0.90795, 0.14937) ,
+      rgb (0.961681, 0.914672, 0.15052) ,
+      rgb (0.959276, 0.921407, 0.151566) ,
+      rgb (0.956808, 0.928152, 0.152409) ,
+      rgb (0.954287, 0.934908, 0.152921) ,
+      rgb (0.951726, 0.941671, 0.152925) ,
+      rgb (0.949151, 0.948435, 0.152178) ,
+      rgb (0.946602, 0.95519, 0.150328) ,
+      rgb (0.944152, 0.961916, 0.146861) ,
+      rgb (0.941896, 0.96859, 0.140956) ,
+      rgb (0.940015, 0.975158, 0.131326)
+      });
 
 
 list_data twilight = list_data(new pen[] {
-  rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
-  rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
-  rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
-  rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
-  rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
-  rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
-  rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
-  rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
-  rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
-  rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
-  rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
-  rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
-  rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
-  rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
-  rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
-  rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
-  rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
-  rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
-  rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
-  rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
-  rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
-  rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
-  rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
-  rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
-  rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
-  rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
-  rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
-  rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
-  rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
-  rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
-  rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
-  rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
-  rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
-  rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
-  rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
-  rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
-  rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
-  rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
-  rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
-  rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
-  rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
-  rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
-  rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
-  rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
-  rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
-  rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
-  rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
-  rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
-  rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
-  rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
-  rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
-  rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
-  rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
-  rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
-  rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
-  rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
-  rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
-  rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
-  rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
-  rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
-  rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
-  rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
-  rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
-  rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
-  rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
-  rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
-  rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
-  rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
-  rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
-  rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
-  rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
-  rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
-  rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
-  rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
-  rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
-  rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
-  rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
-  rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
-  rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
-  rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
-  rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
-  rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
-  rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
-  rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
-  rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
-  rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
-  rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
-  rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
-  rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
-  rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
-  rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
-  rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
-  rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
-  rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
-  rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
-  rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
-  rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
-  rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
-  rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
-  rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
-  rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
-  rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
-  rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
-  rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
-  rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
-  rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
-  rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
-  rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
-  rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
-  rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
-  rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
-  rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
-  rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
-  rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
-  rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
-  rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
-  rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
-  rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
-  rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
-  rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
-  rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
-  rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
-  rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
-  rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
-  rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
-  rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
-  rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
-  rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
-  rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
-  rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
-  rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
-  rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
-  rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
-  rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
-  rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
-  rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
-  rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
-  rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
-  rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
-  rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
-  rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
-  rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
-  rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
-  rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
-  rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
-  rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
-  rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
-  rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
-  rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
-  rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
-  rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
-  rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
-  rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
-  rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
-  rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
-  rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
-  rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
-  rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
-  rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
-  rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
-  rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
-  rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
-  rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
-  rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
-  rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
-  rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
-  rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
-  rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
-  rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
-  rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
-  rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
-  rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
-  rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
-  rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
-  rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
-  rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
-  rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
-  rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
-  rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
-  rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
-  rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
-  rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
-  rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
-  rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
-  rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
-  rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
-  rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
-  rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
-  rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
-  rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
-  rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
-  rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
-  rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
-  rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
-  rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
-  rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
-  rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
-  rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
-  rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
-  rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
-  rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
-  rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
-  rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
-  rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
-  rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
-  rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
-  rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
-  rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
-  rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
-  rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
-  rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
-  rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
-  rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
-  rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
-  rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
-  rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
-  rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
-  rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
-  rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
-  rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
-  rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
-  rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
-  rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
-  rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
-  rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
-  rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
-  rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
-  rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
-  rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
-  rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
-  rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
-  rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
-  rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
-  rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
-  rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
-  rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
-  rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
-  rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
-  rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
-  rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
-  rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
-  rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
-  rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
-  rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
-  rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
-  rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
-  rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
-  rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
-  rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
-  rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
-  rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
-  rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
-  rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
-  rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
-  rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
-  rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993) ,
-  rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
-  rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
-  rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
-  rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
-  rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
-  rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
-  rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
-  rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
-  rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
-  rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
-  rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
-  rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
-  rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
-  rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
-  rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
-  rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
-  rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
-  rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
-  rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
-  rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
-  rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
-  rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
-  rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
-  rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
-  rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
-  rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
-  rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
-  rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
-  rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
-  rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
-  rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
-  rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
-  rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
-  rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
-  rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
-  rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
-  rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
-  rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
-  rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
-  rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
-  rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
-  rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
-  rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
-  rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
-  rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
-  rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
-  rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
-  rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
-  rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
-  rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
-  rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
-  rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
-  rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
-  rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
-  rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
-  rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
-  rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
-  rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
-  rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
-  rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
-  rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
-  rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
-  rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
-  rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
-  rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
-  rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
-  rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
-  rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
-  rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
-  rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
-  rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
-  rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
-  rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
-  rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
-  rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
-  rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
-  rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
-  rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
-  rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
-  rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
-  rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
-  rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
-  rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
-  rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
-  rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
-  rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
-  rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
-  rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
-  rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
-  rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
-  rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
-  rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
-  rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
-  rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
-  rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
-  rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
-  rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
-  rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
-  rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
-  rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
-  rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
-  rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
-  rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
-  rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
-  rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
-  rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
-  rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
-  rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
-  rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
-  rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
-  rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
-  rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
-  rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
-  rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
-  rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
-  rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
-  rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
-  rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
-  rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
-  rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
-  rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
-  rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
-  rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
-  rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
-  rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
-  rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
-  rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
-  rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
-  rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
-  rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
-  rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
-  rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
-  rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
-  rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
-  rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
-  rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
-  rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
-  rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
-  rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
-  rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
-  rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
-  rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
-  rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
-  rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
-  rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
-  rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
-  rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
-  rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
-  rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
-  rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
-  rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
-  rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
-  rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
-  rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
-  rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
-  rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
-  rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
-  rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
-  rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
-  rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
-  rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
-  rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
-  rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
-  rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
-  rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
-  rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
-  rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
-  rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
-  rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
-  rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
-  rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
-  rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
-  rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
-  rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
-  rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
-  rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
-  rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
-  rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
-  rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
-  rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
-  rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
-  rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
-  rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
-  rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
-  rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
-  rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
-  rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
-  rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
-  rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
-  rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
-  rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
-  rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
-  rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
-  rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
-  rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
-  rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
-  rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
-  rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
-  rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
-  rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
-  rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
-  rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
-  rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
-  rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
-  rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
-  rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
-  rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
-  rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
-  rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
-  rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
-  rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
-  rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
-  rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
-  rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
-  rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
-  rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
-  rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
-  rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
-  rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
-  rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
-  rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
-  rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
-  rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
-  rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
-  rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
-  rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
-  rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
-  rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
-  rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
-  rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
-  rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
-  rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
-  rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
-  rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
-  rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
-  rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
-  rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
-  rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
-  rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
-  rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
-  rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
-  rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
-  rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
-  rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
-  rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
-  rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
-  rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
-  rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
-  rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
-  rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
-  rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
-  rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
-  rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
-  rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712)
-});
+    rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
+      rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
+      rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
+      rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
+      rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
+      rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
+      rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
+      rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
+      rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
+      rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
+      rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
+      rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
+      rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
+      rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
+      rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
+      rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
+      rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
+      rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
+      rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
+      rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
+      rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
+      rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
+      rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
+      rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
+      rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
+      rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
+      rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
+      rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
+      rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
+      rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
+      rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
+      rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
+      rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
+      rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
+      rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
+      rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
+      rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
+      rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
+      rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
+      rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
+      rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
+      rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
+      rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
+      rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
+      rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
+      rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
+      rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
+      rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
+      rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
+      rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
+      rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
+      rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
+      rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
+      rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
+      rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
+      rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
+      rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
+      rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
+      rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
+      rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
+      rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
+      rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
+      rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
+      rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
+      rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
+      rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
+      rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
+      rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
+      rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
+      rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
+      rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
+      rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
+      rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
+      rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
+      rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
+      rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
+      rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
+      rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
+      rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
+      rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
+      rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
+      rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
+      rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
+      rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
+      rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
+      rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
+      rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
+      rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
+      rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
+      rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
+      rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
+      rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
+      rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
+      rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
+      rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
+      rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
+      rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
+      rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
+      rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
+      rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
+      rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
+      rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
+      rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
+      rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
+      rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
+      rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
+      rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
+      rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
+      rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
+      rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
+      rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
+      rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
+      rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
+      rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
+      rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
+      rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
+      rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
+      rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
+      rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
+      rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
+      rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
+      rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
+      rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
+      rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
+      rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
+      rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
+      rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
+      rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
+      rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
+      rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
+      rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
+      rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
+      rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
+      rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
+      rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
+      rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
+      rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
+      rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
+      rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
+      rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
+      rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
+      rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
+      rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
+      rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
+      rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
+      rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
+      rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
+      rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
+      rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
+      rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
+      rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
+      rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
+      rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
+      rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
+      rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
+      rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
+      rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
+      rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
+      rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
+      rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
+      rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
+      rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
+      rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
+      rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
+      rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
+      rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
+      rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
+      rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
+      rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
+      rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
+      rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
+      rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
+      rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
+      rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
+      rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
+      rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
+      rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
+      rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
+      rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
+      rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
+      rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
+      rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
+      rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
+      rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
+      rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
+      rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
+      rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
+      rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
+      rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
+      rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
+      rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
+      rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
+      rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
+      rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
+      rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
+      rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
+      rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
+      rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
+      rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
+      rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
+      rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
+      rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
+      rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
+      rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
+      rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
+      rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
+      rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
+      rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
+      rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
+      rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
+      rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
+      rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
+      rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
+      rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
+      rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
+      rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
+      rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
+      rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
+      rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
+      rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
+      rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
+      rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
+      rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
+      rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
+      rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
+      rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
+      rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
+      rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
+      rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
+      rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
+      rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
+      rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
+      rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
+      rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
+      rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
+      rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
+      rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
+      rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
+      rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
+      rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
+      rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
+      rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
+      rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
+      rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
+      rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
+      rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
+      rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
+      rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
+      rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
+      rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
+      rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
+      rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
+      rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
+      rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
+      rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
+      rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993) ,
+      rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
+      rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
+      rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
+      rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
+      rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
+      rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
+      rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
+      rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
+      rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
+      rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
+      rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
+      rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
+      rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
+      rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
+      rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
+      rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
+      rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
+      rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
+      rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
+      rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
+      rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
+      rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
+      rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
+      rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
+      rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
+      rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
+      rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
+      rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
+      rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
+      rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
+      rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
+      rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
+      rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
+      rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
+      rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
+      rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
+      rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
+      rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
+      rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
+      rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
+      rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
+      rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
+      rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
+      rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
+      rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
+      rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
+      rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
+      rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
+      rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
+      rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
+      rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
+      rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
+      rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
+      rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
+      rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
+      rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
+      rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
+      rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
+      rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
+      rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
+      rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
+      rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
+      rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
+      rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
+      rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
+      rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
+      rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
+      rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
+      rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
+      rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
+      rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
+      rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
+      rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
+      rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
+      rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
+      rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
+      rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
+      rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
+      rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
+      rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
+      rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
+      rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
+      rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
+      rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
+      rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
+      rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
+      rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
+      rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
+      rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
+      rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
+      rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
+      rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
+      rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
+      rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
+      rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
+      rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
+      rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
+      rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
+      rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
+      rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
+      rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
+      rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
+      rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
+      rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
+      rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
+      rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
+      rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
+      rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
+      rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
+      rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
+      rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
+      rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
+      rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
+      rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
+      rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
+      rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
+      rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
+      rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
+      rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
+      rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
+      rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
+      rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
+      rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
+      rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
+      rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
+      rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
+      rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
+      rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
+      rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
+      rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
+      rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
+      rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
+      rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
+      rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
+      rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
+      rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
+      rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
+      rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
+      rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
+      rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
+      rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
+      rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
+      rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
+      rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
+      rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
+      rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
+      rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
+      rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
+      rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
+      rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
+      rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
+      rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
+      rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
+      rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
+      rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
+      rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
+      rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
+      rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
+      rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
+      rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
+      rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
+      rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
+      rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
+      rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
+      rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
+      rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
+      rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
+      rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
+      rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
+      rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
+      rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
+      rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
+      rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
+      rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
+      rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
+      rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
+      rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
+      rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
+      rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
+      rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
+      rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
+      rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
+      rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
+      rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
+      rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
+      rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
+      rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
+      rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
+      rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
+      rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
+      rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
+      rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
+      rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
+      rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
+      rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
+      rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
+      rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
+      rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
+      rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
+      rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
+      rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
+      rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
+      rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
+      rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
+      rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
+      rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
+      rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
+      rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
+      rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
+      rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
+      rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
+      rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
+      rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
+      rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
+      rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
+      rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
+      rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
+      rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
+      rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
+      rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
+      rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
+      rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
+      rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
+      rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
+      rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
+      rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
+      rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
+      rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
+      rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
+      rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
+      rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
+      rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
+      rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
+      rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
+      rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
+      rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
+      rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
+      rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
+      rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
+      rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
+      rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
+      rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
+      rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
+      rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
+      rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
+      rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
+      rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
+      rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
+      rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
+      rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
+      rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
+      rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
+      rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
+      rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712)
+      });
 
 
 list_data twilight_shifted = list_data(new pen[] {
-  rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
-  rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
-  rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
-  rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
-  rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
-  rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
-  rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
-  rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
-  rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
-  rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
-  rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
-  rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
-  rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
-  rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
-  rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
-  rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
-  rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
-  rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
-  rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
-  rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
-  rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
-  rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
-  rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
-  rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
-  rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
-  rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
-  rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
-  rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
-  rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
-  rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
-  rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
-  rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
-  rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
-  rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
-  rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
-  rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
-  rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
-  rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
-  rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
-  rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
-  rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
-  rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
-  rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
-  rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
-  rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
-  rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
-  rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
-  rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
-  rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
-  rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
-  rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
-  rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
-  rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
-  rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
-  rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
-  rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
-  rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
-  rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
-  rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
-  rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
-  rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
-  rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
-  rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
-  rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
-  rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
-  rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
-  rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
-  rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
-  rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
-  rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
-  rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
-  rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
-  rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
-  rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
-  rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
-  rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
-  rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
-  rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
-  rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
-  rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
-  rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
-  rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
-  rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
-  rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
-  rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
-  rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
-  rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
-  rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
-  rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
-  rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
-  rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
-  rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
-  rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
-  rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
-  rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
-  rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
-  rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
-  rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
-  rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
-  rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
-  rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
-  rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
-  rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
-  rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
-  rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
-  rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
-  rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
-  rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
-  rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
-  rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
-  rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
-  rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
-  rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
-  rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
-  rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
-  rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
-  rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
-  rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
-  rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
-  rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
-  rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
-  rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
-  rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
-  rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
-  rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
-  rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
-  rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
-  rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
-  rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
-  rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
-  rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
-  rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
-  rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
-  rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
-  rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
-  rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
-  rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
-  rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
-  rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
-  rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
-  rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
-  rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
-  rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
-  rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
-  rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
-  rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
-  rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
-  rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
-  rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
-  rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
-  rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
-  rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
-  rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
-  rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
-  rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
-  rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
-  rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
-  rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
-  rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
-  rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
-  rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
-  rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
-  rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
-  rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
-  rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
-  rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
-  rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
-  rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
-  rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
-  rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
-  rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
-  rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
-  rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
-  rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
-  rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
-  rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
-  rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
-  rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
-  rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
-  rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
-  rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
-  rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
-  rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
-  rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
-  rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
-  rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
-  rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
-  rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
-  rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
-  rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
-  rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
-  rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
-  rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
-  rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
-  rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
-  rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
-  rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
-  rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
-  rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
-  rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
-  rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
-  rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
-  rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
-  rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
-  rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
-  rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
-  rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
-  rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
-  rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
-  rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
-  rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
-  rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
-  rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
-  rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
-  rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
-  rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
-  rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
-  rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
-  rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
-  rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
-  rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
-  rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
-  rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
-  rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
-  rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
-  rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
-  rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
-  rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
-  rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
-  rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
-  rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
-  rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
-  rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
-  rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
-  rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
-  rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
-  rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
-  rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
-  rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
-  rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
-  rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
-  rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
-  rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
-  rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
-  rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
-  rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
-  rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
-  rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
-  rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
-  rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
-  rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
-  rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
-  rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
-  rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
-  rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
-  rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712) ,
-  rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
-  rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
-  rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
-  rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
-  rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
-  rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
-  rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
-  rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
-  rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
-  rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
-  rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
-  rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
-  rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
-  rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
-  rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
-  rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
-  rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
-  rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
-  rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
-  rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
-  rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
-  rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
-  rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
-  rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
-  rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
-  rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
-  rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
-  rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
-  rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
-  rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
-  rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
-  rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
-  rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
-  rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
-  rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
-  rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
-  rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
-  rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
-  rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
-  rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
-  rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
-  rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
-  rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
-  rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
-  rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
-  rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
-  rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
-  rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
-  rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
-  rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
-  rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
-  rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
-  rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
-  rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
-  rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
-  rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
-  rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
-  rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
-  rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
-  rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
-  rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
-  rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
-  rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
-  rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
-  rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
-  rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
-  rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
-  rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
-  rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
-  rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
-  rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
-  rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
-  rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
-  rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
-  rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
-  rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
-  rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
-  rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
-  rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
-  rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
-  rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
-  rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
-  rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
-  rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
-  rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
-  rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
-  rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
-  rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
-  rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
-  rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
-  rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
-  rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
-  rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
-  rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
-  rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
-  rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
-  rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
-  rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
-  rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
-  rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
-  rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
-  rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
-  rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
-  rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
-  rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
-  rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
-  rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
-  rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
-  rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
-  rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
-  rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
-  rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
-  rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
-  rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
-  rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
-  rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
-  rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
-  rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
-  rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
-  rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
-  rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
-  rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
-  rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
-  rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
-  rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
-  rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
-  rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
-  rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
-  rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
-  rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
-  rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
-  rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
-  rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
-  rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
-  rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
-  rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
-  rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
-  rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
-  rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
-  rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
-  rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
-  rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
-  rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
-  rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
-  rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
-  rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
-  rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
-  rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
-  rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
-  rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
-  rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
-  rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
-  rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
-  rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
-  rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
-  rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
-  rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
-  rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
-  rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
-  rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
-  rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
-  rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
-  rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
-  rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
-  rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
-  rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
-  rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
-  rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
-  rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
-  rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
-  rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
-  rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
-  rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
-  rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
-  rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
-  rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
-  rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
-  rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
-  rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
-  rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
-  rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
-  rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
-  rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
-  rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
-  rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
-  rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
-  rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
-  rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
-  rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
-  rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
-  rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
-  rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
-  rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
-  rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
-  rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
-  rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
-  rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
-  rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
-  rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
-  rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
-  rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
-  rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
-  rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
-  rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
-  rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
-  rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
-  rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
-  rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
-  rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
-  rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
-  rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
-  rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
-  rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
-  rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
-  rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
-  rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
-  rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
-  rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
-  rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
-  rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
-  rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
-  rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
-  rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
-  rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
-  rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
-  rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
-  rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
-  rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
-  rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
-  rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
-  rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
-  rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
-  rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
-  rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
-  rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
-  rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
-  rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
-  rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
-  rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
-  rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
-  rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
-  rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
-  rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
-  rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
-  rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
-  rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
-  rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
-  rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
-  rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
-  rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
-  rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
-  rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
-  rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
-  rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993)
-});
+    rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
+      rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
+      rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
+      rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
+      rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
+      rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
+      rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
+      rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
+      rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
+      rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
+      rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
+      rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
+      rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
+      rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
+      rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
+      rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
+      rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
+      rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
+      rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
+      rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
+      rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
+      rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
+      rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
+      rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
+      rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
+      rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
+      rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
+      rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
+      rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
+      rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
+      rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
+      rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
+      rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
+      rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
+      rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
+      rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
+      rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
+      rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
+      rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
+      rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
+      rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
+      rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
+      rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
+      rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
+      rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
+      rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
+      rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
+      rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
+      rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
+      rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
+      rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
+      rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
+      rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
+      rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
+      rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
+      rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
+      rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
+      rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
+      rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
+      rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
+      rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
+      rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
+      rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
+      rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
+      rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
+      rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
+      rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
+      rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
+      rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
+      rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
+      rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
+      rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
+      rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
+      rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
+      rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
+      rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
+      rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
+      rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
+      rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
+      rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
+      rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
+      rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
+      rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
+      rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
+      rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
+      rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
+      rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
+      rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
+      rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
+      rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
+      rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
+      rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
+      rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
+      rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
+      rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
+      rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
+      rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
+      rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
+      rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
+      rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
+      rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
+      rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
+      rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
+      rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
+      rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
+      rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
+      rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
+      rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
+      rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
+      rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
+      rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
+      rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
+      rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
+      rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
+      rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
+      rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
+      rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
+      rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
+      rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
+      rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
+      rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
+      rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
+      rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
+      rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
+      rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
+      rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
+      rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
+      rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
+      rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
+      rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
+      rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
+      rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
+      rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
+      rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
+      rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
+      rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
+      rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
+      rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
+      rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
+      rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
+      rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
+      rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
+      rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
+      rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
+      rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
+      rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
+      rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
+      rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
+      rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
+      rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
+      rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
+      rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
+      rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
+      rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
+      rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
+      rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
+      rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
+      rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
+      rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
+      rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
+      rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
+      rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
+      rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
+      rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
+      rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
+      rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
+      rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
+      rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
+      rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
+      rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
+      rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
+      rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
+      rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
+      rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
+      rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
+      rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
+      rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
+      rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
+      rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
+      rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
+      rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
+      rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
+      rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
+      rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
+      rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
+      rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
+      rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
+      rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
+      rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
+      rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
+      rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
+      rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
+      rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
+      rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
+      rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
+      rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
+      rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
+      rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
+      rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
+      rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
+      rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
+      rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
+      rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
+      rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
+      rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
+      rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
+      rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
+      rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
+      rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
+      rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
+      rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
+      rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
+      rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
+      rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
+      rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
+      rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
+      rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
+      rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
+      rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
+      rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
+      rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
+      rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
+      rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
+      rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
+      rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
+      rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
+      rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
+      rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
+      rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
+      rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
+      rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
+      rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
+      rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
+      rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
+      rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
+      rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
+      rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
+      rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
+      rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
+      rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
+      rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
+      rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
+      rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
+      rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
+      rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
+      rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
+      rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
+      rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
+      rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
+      rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
+      rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
+      rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
+      rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
+      rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
+      rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
+      rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712) ,
+      rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
+      rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
+      rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
+      rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
+      rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
+      rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
+      rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
+      rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
+      rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
+      rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
+      rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
+      rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
+      rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
+      rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
+      rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
+      rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
+      rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
+      rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
+      rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
+      rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
+      rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
+      rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
+      rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
+      rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
+      rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
+      rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
+      rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
+      rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
+      rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
+      rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
+      rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
+      rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
+      rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
+      rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
+      rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
+      rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
+      rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
+      rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
+      rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
+      rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
+      rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
+      rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
+      rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
+      rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
+      rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
+      rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
+      rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
+      rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
+      rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
+      rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
+      rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
+      rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
+      rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
+      rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
+      rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
+      rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
+      rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
+      rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
+      rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
+      rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
+      rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
+      rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
+      rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
+      rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
+      rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
+      rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
+      rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
+      rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
+      rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
+      rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
+      rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
+      rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
+      rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
+      rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
+      rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
+      rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
+      rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
+      rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
+      rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
+      rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
+      rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
+      rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
+      rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
+      rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
+      rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
+      rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
+      rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
+      rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
+      rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
+      rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
+      rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
+      rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
+      rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
+      rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
+      rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
+      rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
+      rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
+      rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
+      rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
+      rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
+      rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
+      rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
+      rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
+      rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
+      rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
+      rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
+      rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
+      rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
+      rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
+      rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
+      rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
+      rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
+      rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
+      rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
+      rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
+      rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
+      rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
+      rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
+      rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
+      rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
+      rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
+      rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
+      rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
+      rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
+      rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
+      rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
+      rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
+      rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
+      rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
+      rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
+      rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
+      rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
+      rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
+      rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
+      rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
+      rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
+      rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
+      rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
+      rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
+      rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
+      rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
+      rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
+      rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
+      rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
+      rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
+      rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
+      rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
+      rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
+      rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
+      rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
+      rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
+      rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
+      rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
+      rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
+      rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
+      rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
+      rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
+      rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
+      rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
+      rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
+      rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
+      rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
+      rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
+      rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
+      rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
+      rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
+      rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
+      rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
+      rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
+      rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
+      rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
+      rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
+      rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
+      rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
+      rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
+      rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
+      rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
+      rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
+      rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
+      rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
+      rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
+      rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
+      rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
+      rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
+      rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
+      rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
+      rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
+      rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
+      rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
+      rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
+      rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
+      rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
+      rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
+      rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
+      rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
+      rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
+      rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
+      rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
+      rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
+      rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
+      rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
+      rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
+      rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
+      rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
+      rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
+      rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
+      rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
+      rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
+      rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
+      rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
+      rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
+      rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
+      rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
+      rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
+      rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
+      rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
+      rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
+      rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
+      rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
+      rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
+      rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
+      rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
+      rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
+      rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
+      rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
+      rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
+      rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
+      rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
+      rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
+      rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
+      rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
+      rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
+      rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
+      rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
+      rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
+      rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
+      rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
+      rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
+      rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
+      rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
+      rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
+      rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
+      rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
+      rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
+      rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
+      rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
+      rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
+      rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
+      rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
+      rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
+      rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
+      rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
+      rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
+      rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993)
+      });
 
 
 list_data viridis = list_data(new pen[] {
-  rgb (0.267004, 0.004874, 0.329415) ,
-  rgb (0.26851, 0.009605, 0.335427) ,
-  rgb (0.269944, 0.014625, 0.341379) ,
-  rgb (0.271305, 0.019942, 0.347269) ,
-  rgb (0.272594, 0.025563, 0.353093) ,
-  rgb (0.273809, 0.031497, 0.358853) ,
-  rgb (0.274952, 0.037752, 0.364543) ,
-  rgb (0.276022, 0.044167, 0.370164) ,
-  rgb (0.277018, 0.050344, 0.375715) ,
-  rgb (0.277941, 0.056324, 0.381191) ,
-  rgb (0.278791, 0.062145, 0.386592) ,
-  rgb (0.279566, 0.067836, 0.391917) ,
-  rgb (0.280267, 0.073417, 0.397163) ,
-  rgb (0.280894, 0.078907, 0.402329) ,
-  rgb (0.281446, 0.08432, 0.407414) ,
-  rgb (0.281924, 0.089666, 0.412415) ,
-  rgb (0.282327, 0.094955, 0.417331) ,
-  rgb (0.282656, 0.100196, 0.42216) ,
-  rgb (0.28291, 0.105393, 0.426902) ,
-  rgb (0.283091, 0.110553, 0.431554) ,
-  rgb (0.283197, 0.11568, 0.436115) ,
-  rgb (0.283229, 0.120777, 0.440584) ,
-  rgb (0.283187, 0.125848, 0.44496) ,
-  rgb (0.283072, 0.130895, 0.449241) ,
-  rgb (0.282884, 0.13592, 0.453427) ,
-  rgb (0.282623, 0.140926, 0.457517) ,
-  rgb (0.28229, 0.145912, 0.46151) ,
-  rgb (0.281887, 0.150881, 0.465405) ,
-  rgb (0.281412, 0.155834, 0.469201) ,
-  rgb (0.280868, 0.160771, 0.472899) ,
-  rgb (0.280255, 0.165693, 0.476498) ,
-  rgb (0.279574, 0.170599, 0.479997) ,
-  rgb (0.278826, 0.17549, 0.483397) ,
-  rgb (0.278012, 0.180367, 0.486697) ,
-  rgb (0.277134, 0.185228, 0.489898) ,
-  rgb (0.276194, 0.190074, 0.493001) ,
-  rgb (0.275191, 0.194905, 0.496005) ,
-  rgb (0.274128, 0.199721, 0.498911) ,
-  rgb (0.273006, 0.20452, 0.501721) ,
-  rgb (0.271828, 0.209303, 0.504434) ,
-  rgb (0.270595, 0.214069, 0.507052) ,
-  rgb (0.269308, 0.218818, 0.509577) ,
-  rgb (0.267968, 0.223549, 0.512008) ,
-  rgb (0.26658, 0.228262, 0.514349) ,
-  rgb (0.265145, 0.232956, 0.516599) ,
-  rgb (0.263663, 0.237631, 0.518762) ,
-  rgb (0.262138, 0.242286, 0.520837) ,
-  rgb (0.260571, 0.246922, 0.522828) ,
-  rgb (0.258965, 0.251537, 0.524736) ,
-  rgb (0.257322, 0.25613, 0.526563) ,
-  rgb (0.255645, 0.260703, 0.528312) ,
-  rgb (0.253935, 0.265254, 0.529983) ,
-  rgb (0.252194, 0.269783, 0.531579) ,
-  rgb (0.250425, 0.27429, 0.533103) ,
-  rgb (0.248629, 0.278775, 0.534556) ,
-  rgb (0.246811, 0.283237, 0.535941) ,
-  rgb (0.244972, 0.287675, 0.53726) ,
-  rgb (0.243113, 0.292092, 0.538516) ,
-  rgb (0.241237, 0.296485, 0.539709) ,
-  rgb (0.239346, 0.300855, 0.540844) ,
-  rgb (0.237441, 0.305202, 0.541921) ,
-  rgb (0.235526, 0.309527, 0.542944) ,
-  rgb (0.233603, 0.313828, 0.543914) ,
-  rgb (0.231674, 0.318106, 0.544834) ,
-  rgb (0.229739, 0.322361, 0.545706) ,
-  rgb (0.227802, 0.326594, 0.546532) ,
-  rgb (0.225863, 0.330805, 0.547314) ,
-  rgb (0.223925, 0.334994, 0.548053) ,
-  rgb (0.221989, 0.339161, 0.548752) ,
-  rgb (0.220057, 0.343307, 0.549413) ,
-  rgb (0.21813, 0.347432, 0.550038) ,
-  rgb (0.21621, 0.351535, 0.550627) ,
-  rgb (0.214298, 0.355619, 0.551184) ,
-  rgb (0.212395, 0.359683, 0.55171) ,
-  rgb (0.210503, 0.363727, 0.552206) ,
-  rgb (0.208623, 0.367752, 0.552675) ,
-  rgb (0.206756, 0.371758, 0.553117) ,
-  rgb (0.204903, 0.375746, 0.553533) ,
-  rgb (0.203063, 0.379716, 0.553925) ,
-  rgb (0.201239, 0.38367, 0.554294) ,
-  rgb (0.19943, 0.387607, 0.554642) ,
-  rgb (0.197636, 0.391528, 0.554969) ,
-  rgb (0.19586, 0.395433, 0.555276) ,
-  rgb (0.1941, 0.399323, 0.555565) ,
-  rgb (0.192357, 0.403199, 0.555836) ,
-  rgb (0.190631, 0.407061, 0.556089) ,
-  rgb (0.188923, 0.41091, 0.556326) ,
-  rgb (0.187231, 0.414746, 0.556547) ,
-  rgb (0.185556, 0.41857, 0.556753) ,
-  rgb (0.183898, 0.422383, 0.556944) ,
-  rgb (0.182256, 0.426184, 0.55712) ,
-  rgb (0.180629, 0.429975, 0.557282) ,
-  rgb (0.179019, 0.433756, 0.55743) ,
-  rgb (0.177423, 0.437527, 0.557565) ,
-  rgb (0.175841, 0.44129, 0.557685) ,
-  rgb (0.174274, 0.445044, 0.557792) ,
-  rgb (0.172719, 0.448791, 0.557885) ,
-  rgb (0.171176, 0.45253, 0.557965) ,
-  rgb (0.169646, 0.456262, 0.55803) ,
-  rgb (0.168126, 0.459988, 0.558082) ,
-  rgb (0.166617, 0.463708, 0.558119) ,
-  rgb (0.165117, 0.467423, 0.558141) ,
-  rgb (0.163625, 0.471133, 0.558148) ,
-  rgb (0.162142, 0.474838, 0.55814) ,
-  rgb (0.160665, 0.47854, 0.558115) ,
-  rgb (0.159194, 0.482237, 0.558073) ,
-  rgb (0.157729, 0.485932, 0.558013) ,
-  rgb (0.15627, 0.489624, 0.557936) ,
-  rgb (0.154815, 0.493313, 0.55784) ,
-  rgb (0.153364, 0.497, 0.557724) ,
-  rgb (0.151918, 0.500685, 0.557587) ,
-  rgb (0.150476, 0.504369, 0.55743) ,
-  rgb (0.149039, 0.508051, 0.55725) ,
-  rgb (0.147607, 0.511733, 0.557049) ,
-  rgb (0.14618, 0.515413, 0.556823) ,
-  rgb (0.144759, 0.519093, 0.556572) ,
-  rgb (0.143343, 0.522773, 0.556295) ,
-  rgb (0.141935, 0.526453, 0.555991) ,
-  rgb (0.140536, 0.530132, 0.555659) ,
-  rgb (0.139147, 0.533812, 0.555298) ,
-  rgb (0.13777, 0.537492, 0.554906) ,
-  rgb (0.136408, 0.541173, 0.554483) ,
-  rgb (0.135066, 0.544853, 0.554029) ,
-  rgb (0.133743, 0.548535, 0.553541) ,
-  rgb (0.132444, 0.552216, 0.553018) ,
-  rgb (0.131172, 0.555899, 0.552459) ,
-  rgb (0.129933, 0.559582, 0.551864) ,
-  rgb (0.128729, 0.563265, 0.551229) ,
-  rgb (0.127568, 0.566949, 0.550556) ,
-  rgb (0.126453, 0.570633, 0.549841) ,
-  rgb (0.125394, 0.574318, 0.549086) ,
-  rgb (0.124395, 0.578002, 0.548287) ,
-  rgb (0.123463, 0.581687, 0.547445) ,
-  rgb (0.122606, 0.585371, 0.546557) ,
-  rgb (0.121831, 0.589055, 0.545623) ,
-  rgb (0.121148, 0.592739, 0.544641) ,
-  rgb (0.120565, 0.596422, 0.543611) ,
-  rgb (0.120092, 0.600104, 0.54253) ,
-  rgb (0.119738, 0.603785, 0.5414) ,
-  rgb (0.119512, 0.607464, 0.540218) ,
-  rgb (0.119423, 0.611141, 0.538982) ,
-  rgb (0.119483, 0.614817, 0.537692) ,
-  rgb (0.119699, 0.61849, 0.536347) ,
-  rgb (0.120081, 0.622161, 0.534946) ,
-  rgb (0.120638, 0.625828, 0.533488) ,
-  rgb (0.12138, 0.629492, 0.531973) ,
-  rgb (0.122312, 0.633153, 0.530398) ,
-  rgb (0.123444, 0.636809, 0.528763) ,
-  rgb (0.12478, 0.640461, 0.527068) ,
-  rgb (0.126326, 0.644107, 0.525311) ,
-  rgb (0.128087, 0.647749, 0.523491) ,
-  rgb (0.130067, 0.651384, 0.521608) ,
-  rgb (0.132268, 0.655014, 0.519661) ,
-  rgb (0.134692, 0.658636, 0.517649) ,
-  rgb (0.137339, 0.662252, 0.515571) ,
-  rgb (0.14021, 0.665859, 0.513427) ,
-  rgb (0.143303, 0.669459, 0.511215) ,
-  rgb (0.146616, 0.67305, 0.508936) ,
-  rgb (0.150148, 0.676631, 0.506589) ,
-  rgb (0.153894, 0.680203, 0.504172) ,
-  rgb (0.157851, 0.683765, 0.501686) ,
-  rgb (0.162016, 0.687316, 0.499129) ,
-  rgb (0.166383, 0.690856, 0.496502) ,
-  rgb (0.170948, 0.694384, 0.493803) ,
-  rgb (0.175707, 0.6979, 0.491033) ,
-  rgb (0.180653, 0.701402, 0.488189) ,
-  rgb (0.185783, 0.704891, 0.485273) ,
-  rgb (0.19109, 0.708366, 0.482284) ,
-  rgb (0.196571, 0.711827, 0.479221) ,
-  rgb (0.202219, 0.715272, 0.476084) ,
-  rgb (0.20803, 0.718701, 0.472873) ,
-  rgb (0.214, 0.722114, 0.469588) ,
-  rgb (0.220124, 0.725509, 0.466226) ,
-  rgb (0.226397, 0.728888, 0.462789) ,
-  rgb (0.232815, 0.732247, 0.459277) ,
-  rgb (0.239374, 0.735588, 0.455688) ,
-  rgb (0.24607, 0.73891, 0.452024) ,
-  rgb (0.252899, 0.742211, 0.448284) ,
-  rgb (0.259857, 0.745492, 0.444467) ,
-  rgb (0.266941, 0.748751, 0.440573) ,
-  rgb (0.274149, 0.751988, 0.436601) ,
-  rgb (0.281477, 0.755203, 0.432552) ,
-  rgb (0.288921, 0.758394, 0.428426) ,
-  rgb (0.296479, 0.761561, 0.424223) ,
-  rgb (0.304148, 0.764704, 0.419943) ,
-  rgb (0.311925, 0.767822, 0.415586) ,
-  rgb (0.319809, 0.770914, 0.411152) ,
-  rgb (0.327796, 0.77398, 0.40664) ,
-  rgb (0.335885, 0.777018, 0.402049) ,
-  rgb (0.344074, 0.780029, 0.397381) ,
-  rgb (0.35236, 0.783011, 0.392636) ,
-  rgb (0.360741, 0.785964, 0.387814) ,
-  rgb (0.369214, 0.788888, 0.382914) ,
-  rgb (0.377779, 0.791781, 0.377939) ,
-  rgb (0.386433, 0.794644, 0.372886) ,
-  rgb (0.395174, 0.797475, 0.367757) ,
-  rgb (0.404001, 0.800275, 0.362552) ,
-  rgb (0.412913, 0.803041, 0.357269) ,
-  rgb (0.421908, 0.805774, 0.35191) ,
-  rgb (0.430983, 0.808473, 0.346476) ,
-  rgb (0.440137, 0.811138, 0.340967) ,
-  rgb (0.449368, 0.813768, 0.335384) ,
-  rgb (0.458674, 0.816363, 0.329727) ,
-  rgb (0.468053, 0.818921, 0.323998) ,
-  rgb (0.477504, 0.821444, 0.318195) ,
-  rgb (0.487026, 0.823929, 0.312321) ,
-  rgb (0.496615, 0.826376, 0.306377) ,
-  rgb (0.506271, 0.828786, 0.300362) ,
-  rgb (0.515992, 0.831158, 0.294279) ,
-  rgb (0.525776, 0.833491, 0.288127) ,
-  rgb (0.535621, 0.835785, 0.281908) ,
-  rgb (0.545524, 0.838039, 0.275626) ,
-  rgb (0.555484, 0.840254, 0.269281) ,
-  rgb (0.565498, 0.84243, 0.262877) ,
-  rgb (0.575563, 0.844566, 0.256415) ,
-  rgb (0.585678, 0.846661, 0.249897) ,
-  rgb (0.595839, 0.848717, 0.243329) ,
-  rgb (0.606045, 0.850733, 0.236712) ,
-  rgb (0.616293, 0.852709, 0.230052) ,
-  rgb (0.626579, 0.854645, 0.223353) ,
-  rgb (0.636902, 0.856542, 0.21662) ,
-  rgb (0.647257, 0.8584, 0.209861) ,
-  rgb (0.657642, 0.860219, 0.203082) ,
-  rgb (0.668054, 0.861999, 0.196293) ,
-  rgb (0.678489, 0.863742, 0.189503) ,
-  rgb (0.688944, 0.865448, 0.182725) ,
-  rgb (0.699415, 0.867117, 0.175971) ,
-  rgb (0.709898, 0.868751, 0.169257) ,
-  rgb (0.720391, 0.87035, 0.162603) ,
-  rgb (0.730889, 0.871916, 0.156029) ,
-  rgb (0.741388, 0.873449, 0.149561) ,
-  rgb (0.751884, 0.874951, 0.143228) ,
-  rgb (0.762373, 0.876424, 0.137064) ,
-  rgb (0.772852, 0.877868, 0.131109) ,
-  rgb (0.783315, 0.879285, 0.125405) ,
-  rgb (0.79376, 0.880678, 0.120005) ,
-  rgb (0.804182, 0.882046, 0.114965) ,
-  rgb (0.814576, 0.883393, 0.110347) ,
-  rgb (0.82494, 0.88472, 0.106217) ,
-  rgb (0.83527, 0.886029, 0.102646) ,
-  rgb (0.845561, 0.887322, 0.099702) ,
-  rgb (0.85581, 0.888601, 0.097452) ,
-  rgb (0.866013, 0.889868, 0.095953) ,
-  rgb (0.876168, 0.891125, 0.09525) ,
-  rgb (0.886271, 0.892374, 0.095374) ,
-  rgb (0.89632, 0.893616, 0.096335) ,
-  rgb (0.906311, 0.894855, 0.098125) ,
-  rgb (0.916242, 0.896091, 0.100717) ,
-  rgb (0.926106, 0.89733, 0.104071) ,
-  rgb (0.935904, 0.89857, 0.108131) ,
-  rgb (0.945636, 0.899815, 0.112838) ,
-  rgb (0.9553, 0.901065, 0.118128) ,
-  rgb (0.964894, 0.902323, 0.123941) ,
-  rgb (0.974417, 0.90359, 0.130215) ,
-  rgb (0.983868, 0.904867, 0.136897) ,
-  rgb (0.993248, 0.906157, 0.143936)
-});
+    rgb (0.267004, 0.004874, 0.329415) ,
+      rgb (0.26851, 0.009605, 0.335427) ,
+      rgb (0.269944, 0.014625, 0.341379) ,
+      rgb (0.271305, 0.019942, 0.347269) ,
+      rgb (0.272594, 0.025563, 0.353093) ,
+      rgb (0.273809, 0.031497, 0.358853) ,
+      rgb (0.274952, 0.037752, 0.364543) ,
+      rgb (0.276022, 0.044167, 0.370164) ,
+      rgb (0.277018, 0.050344, 0.375715) ,
+      rgb (0.277941, 0.056324, 0.381191) ,
+      rgb (0.278791, 0.062145, 0.386592) ,
+      rgb (0.279566, 0.067836, 0.391917) ,
+      rgb (0.280267, 0.073417, 0.397163) ,
+      rgb (0.280894, 0.078907, 0.402329) ,
+      rgb (0.281446, 0.08432, 0.407414) ,
+      rgb (0.281924, 0.089666, 0.412415) ,
+      rgb (0.282327, 0.094955, 0.417331) ,
+      rgb (0.282656, 0.100196, 0.42216) ,
+      rgb (0.28291, 0.105393, 0.426902) ,
+      rgb (0.283091, 0.110553, 0.431554) ,
+      rgb (0.283197, 0.11568, 0.436115) ,
+      rgb (0.283229, 0.120777, 0.440584) ,
+      rgb (0.283187, 0.125848, 0.44496) ,
+      rgb (0.283072, 0.130895, 0.449241) ,
+      rgb (0.282884, 0.13592, 0.453427) ,
+      rgb (0.282623, 0.140926, 0.457517) ,
+      rgb (0.28229, 0.145912, 0.46151) ,
+      rgb (0.281887, 0.150881, 0.465405) ,
+      rgb (0.281412, 0.155834, 0.469201) ,
+      rgb (0.280868, 0.160771, 0.472899) ,
+      rgb (0.280255, 0.165693, 0.476498) ,
+      rgb (0.279574, 0.170599, 0.479997) ,
+      rgb (0.278826, 0.17549, 0.483397) ,
+      rgb (0.278012, 0.180367, 0.486697) ,
+      rgb (0.277134, 0.185228, 0.489898) ,
+      rgb (0.276194, 0.190074, 0.493001) ,
+      rgb (0.275191, 0.194905, 0.496005) ,
+      rgb (0.274128, 0.199721, 0.498911) ,
+      rgb (0.273006, 0.20452, 0.501721) ,
+      rgb (0.271828, 0.209303, 0.504434) ,
+      rgb (0.270595, 0.214069, 0.507052) ,
+      rgb (0.269308, 0.218818, 0.509577) ,
+      rgb (0.267968, 0.223549, 0.512008) ,
+      rgb (0.26658, 0.228262, 0.514349) ,
+      rgb (0.265145, 0.232956, 0.516599) ,
+      rgb (0.263663, 0.237631, 0.518762) ,
+      rgb (0.262138, 0.242286, 0.520837) ,
+      rgb (0.260571, 0.246922, 0.522828) ,
+      rgb (0.258965, 0.251537, 0.524736) ,
+      rgb (0.257322, 0.25613, 0.526563) ,
+      rgb (0.255645, 0.260703, 0.528312) ,
+      rgb (0.253935, 0.265254, 0.529983) ,
+      rgb (0.252194, 0.269783, 0.531579) ,
+      rgb (0.250425, 0.27429, 0.533103) ,
+      rgb (0.248629, 0.278775, 0.534556) ,
+      rgb (0.246811, 0.283237, 0.535941) ,
+      rgb (0.244972, 0.287675, 0.53726) ,
+      rgb (0.243113, 0.292092, 0.538516) ,
+      rgb (0.241237, 0.296485, 0.539709) ,
+      rgb (0.239346, 0.300855, 0.540844) ,
+      rgb (0.237441, 0.305202, 0.541921) ,
+      rgb (0.235526, 0.309527, 0.542944) ,
+      rgb (0.233603, 0.313828, 0.543914) ,
+      rgb (0.231674, 0.318106, 0.544834) ,
+      rgb (0.229739, 0.322361, 0.545706) ,
+      rgb (0.227802, 0.326594, 0.546532) ,
+      rgb (0.225863, 0.330805, 0.547314) ,
+      rgb (0.223925, 0.334994, 0.548053) ,
+      rgb (0.221989, 0.339161, 0.548752) ,
+      rgb (0.220057, 0.343307, 0.549413) ,
+      rgb (0.21813, 0.347432, 0.550038) ,
+      rgb (0.21621, 0.351535, 0.550627) ,
+      rgb (0.214298, 0.355619, 0.551184) ,
+      rgb (0.212395, 0.359683, 0.55171) ,
+      rgb (0.210503, 0.363727, 0.552206) ,
+      rgb (0.208623, 0.367752, 0.552675) ,
+      rgb (0.206756, 0.371758, 0.553117) ,
+      rgb (0.204903, 0.375746, 0.553533) ,
+      rgb (0.203063, 0.379716, 0.553925) ,
+      rgb (0.201239, 0.38367, 0.554294) ,
+      rgb (0.19943, 0.387607, 0.554642) ,
+      rgb (0.197636, 0.391528, 0.554969) ,
+      rgb (0.19586, 0.395433, 0.555276) ,
+      rgb (0.1941, 0.399323, 0.555565) ,
+      rgb (0.192357, 0.403199, 0.555836) ,
+      rgb (0.190631, 0.407061, 0.556089) ,
+      rgb (0.188923, 0.41091, 0.556326) ,
+      rgb (0.187231, 0.414746, 0.556547) ,
+      rgb (0.185556, 0.41857, 0.556753) ,
+      rgb (0.183898, 0.422383, 0.556944) ,
+      rgb (0.182256, 0.426184, 0.55712) ,
+      rgb (0.180629, 0.429975, 0.557282) ,
+      rgb (0.179019, 0.433756, 0.55743) ,
+      rgb (0.177423, 0.437527, 0.557565) ,
+      rgb (0.175841, 0.44129, 0.557685) ,
+      rgb (0.174274, 0.445044, 0.557792) ,
+      rgb (0.172719, 0.448791, 0.557885) ,
+      rgb (0.171176, 0.45253, 0.557965) ,
+      rgb (0.169646, 0.456262, 0.55803) ,
+      rgb (0.168126, 0.459988, 0.558082) ,
+      rgb (0.166617, 0.463708, 0.558119) ,
+      rgb (0.165117, 0.467423, 0.558141) ,
+      rgb (0.163625, 0.471133, 0.558148) ,
+      rgb (0.162142, 0.474838, 0.55814) ,
+      rgb (0.160665, 0.47854, 0.558115) ,
+      rgb (0.159194, 0.482237, 0.558073) ,
+      rgb (0.157729, 0.485932, 0.558013) ,
+      rgb (0.15627, 0.489624, 0.557936) ,
+      rgb (0.154815, 0.493313, 0.55784) ,
+      rgb (0.153364, 0.497, 0.557724) ,
+      rgb (0.151918, 0.500685, 0.557587) ,
+      rgb (0.150476, 0.504369, 0.55743) ,
+      rgb (0.149039, 0.508051, 0.55725) ,
+      rgb (0.147607, 0.511733, 0.557049) ,
+      rgb (0.14618, 0.515413, 0.556823) ,
+      rgb (0.144759, 0.519093, 0.556572) ,
+      rgb (0.143343, 0.522773, 0.556295) ,
+      rgb (0.141935, 0.526453, 0.555991) ,
+      rgb (0.140536, 0.530132, 0.555659) ,
+      rgb (0.139147, 0.533812, 0.555298) ,
+      rgb (0.13777, 0.537492, 0.554906) ,
+      rgb (0.136408, 0.541173, 0.554483) ,
+      rgb (0.135066, 0.544853, 0.554029) ,
+      rgb (0.133743, 0.548535, 0.553541) ,
+      rgb (0.132444, 0.552216, 0.553018) ,
+      rgb (0.131172, 0.555899, 0.552459) ,
+      rgb (0.129933, 0.559582, 0.551864) ,
+      rgb (0.128729, 0.563265, 0.551229) ,
+      rgb (0.127568, 0.566949, 0.550556) ,
+      rgb (0.126453, 0.570633, 0.549841) ,
+      rgb (0.125394, 0.574318, 0.549086) ,
+      rgb (0.124395, 0.578002, 0.548287) ,
+      rgb (0.123463, 0.581687, 0.547445) ,
+      rgb (0.122606, 0.585371, 0.546557) ,
+      rgb (0.121831, 0.589055, 0.545623) ,
+      rgb (0.121148, 0.592739, 0.544641) ,
+      rgb (0.120565, 0.596422, 0.543611) ,
+      rgb (0.120092, 0.600104, 0.54253) ,
+      rgb (0.119738, 0.603785, 0.5414) ,
+      rgb (0.119512, 0.607464, 0.540218) ,
+      rgb (0.119423, 0.611141, 0.538982) ,
+      rgb (0.119483, 0.614817, 0.537692) ,
+      rgb (0.119699, 0.61849, 0.536347) ,
+      rgb (0.120081, 0.622161, 0.534946) ,
+      rgb (0.120638, 0.625828, 0.533488) ,
+      rgb (0.12138, 0.629492, 0.531973) ,
+      rgb (0.122312, 0.633153, 0.530398) ,
+      rgb (0.123444, 0.636809, 0.528763) ,
+      rgb (0.12478, 0.640461, 0.527068) ,
+      rgb (0.126326, 0.644107, 0.525311) ,
+      rgb (0.128087, 0.647749, 0.523491) ,
+      rgb (0.130067, 0.651384, 0.521608) ,
+      rgb (0.132268, 0.655014, 0.519661) ,
+      rgb (0.134692, 0.658636, 0.517649) ,
+      rgb (0.137339, 0.662252, 0.515571) ,
+      rgb (0.14021, 0.665859, 0.513427) ,
+      rgb (0.143303, 0.669459, 0.511215) ,
+      rgb (0.146616, 0.67305, 0.508936) ,
+      rgb (0.150148, 0.676631, 0.506589) ,
+      rgb (0.153894, 0.680203, 0.504172) ,
+      rgb (0.157851, 0.683765, 0.501686) ,
+      rgb (0.162016, 0.687316, 0.499129) ,
+      rgb (0.166383, 0.690856, 0.496502) ,
+      rgb (0.170948, 0.694384, 0.493803) ,
+      rgb (0.175707, 0.6979, 0.491033) ,
+      rgb (0.180653, 0.701402, 0.488189) ,
+      rgb (0.185783, 0.704891, 0.485273) ,
+      rgb (0.19109, 0.708366, 0.482284) ,
+      rgb (0.196571, 0.711827, 0.479221) ,
+      rgb (0.202219, 0.715272, 0.476084) ,
+      rgb (0.20803, 0.718701, 0.472873) ,
+      rgb (0.214, 0.722114, 0.469588) ,
+      rgb (0.220124, 0.725509, 0.466226) ,
+      rgb (0.226397, 0.728888, 0.462789) ,
+      rgb (0.232815, 0.732247, 0.459277) ,
+      rgb (0.239374, 0.735588, 0.455688) ,
+      rgb (0.24607, 0.73891, 0.452024) ,
+      rgb (0.252899, 0.742211, 0.448284) ,
+      rgb (0.259857, 0.745492, 0.444467) ,
+      rgb (0.266941, 0.748751, 0.440573) ,
+      rgb (0.274149, 0.751988, 0.436601) ,
+      rgb (0.281477, 0.755203, 0.432552) ,
+      rgb (0.288921, 0.758394, 0.428426) ,
+      rgb (0.296479, 0.761561, 0.424223) ,
+      rgb (0.304148, 0.764704, 0.419943) ,
+      rgb (0.311925, 0.767822, 0.415586) ,
+      rgb (0.319809, 0.770914, 0.411152) ,
+      rgb (0.327796, 0.77398, 0.40664) ,
+      rgb (0.335885, 0.777018, 0.402049) ,
+      rgb (0.344074, 0.780029, 0.397381) ,
+      rgb (0.35236, 0.783011, 0.392636) ,
+      rgb (0.360741, 0.785964, 0.387814) ,
+      rgb (0.369214, 0.788888, 0.382914) ,
+      rgb (0.377779, 0.791781, 0.377939) ,
+      rgb (0.386433, 0.794644, 0.372886) ,
+      rgb (0.395174, 0.797475, 0.367757) ,
+      rgb (0.404001, 0.800275, 0.362552) ,
+      rgb (0.412913, 0.803041, 0.357269) ,
+      rgb (0.421908, 0.805774, 0.35191) ,
+      rgb (0.430983, 0.808473, 0.346476) ,
+      rgb (0.440137, 0.811138, 0.340967) ,
+      rgb (0.449368, 0.813768, 0.335384) ,
+      rgb (0.458674, 0.816363, 0.329727) ,
+      rgb (0.468053, 0.818921, 0.323998) ,
+      rgb (0.477504, 0.821444, 0.318195) ,
+      rgb (0.487026, 0.823929, 0.312321) ,
+      rgb (0.496615, 0.826376, 0.306377) ,
+      rgb (0.506271, 0.828786, 0.300362) ,
+      rgb (0.515992, 0.831158, 0.294279) ,
+      rgb (0.525776, 0.833491, 0.288127) ,
+      rgb (0.535621, 0.835785, 0.281908) ,
+      rgb (0.545524, 0.838039, 0.275626) ,
+      rgb (0.555484, 0.840254, 0.269281) ,
+      rgb (0.565498, 0.84243, 0.262877) ,
+      rgb (0.575563, 0.844566, 0.256415) ,
+      rgb (0.585678, 0.846661, 0.249897) ,
+      rgb (0.595839, 0.848717, 0.243329) ,
+      rgb (0.606045, 0.850733, 0.236712) ,
+      rgb (0.616293, 0.852709, 0.230052) ,
+      rgb (0.626579, 0.854645, 0.223353) ,
+      rgb (0.636902, 0.856542, 0.21662) ,
+      rgb (0.647257, 0.8584, 0.209861) ,
+      rgb (0.657642, 0.860219, 0.203082) ,
+      rgb (0.668054, 0.861999, 0.196293) ,
+      rgb (0.678489, 0.863742, 0.189503) ,
+      rgb (0.688944, 0.865448, 0.182725) ,
+      rgb (0.699415, 0.867117, 0.175971) ,
+      rgb (0.709898, 0.868751, 0.169257) ,
+      rgb (0.720391, 0.87035, 0.162603) ,
+      rgb (0.730889, 0.871916, 0.156029) ,
+      rgb (0.741388, 0.873449, 0.149561) ,
+      rgb (0.751884, 0.874951, 0.143228) ,
+      rgb (0.762373, 0.876424, 0.137064) ,
+      rgb (0.772852, 0.877868, 0.131109) ,
+      rgb (0.783315, 0.879285, 0.125405) ,
+      rgb (0.79376, 0.880678, 0.120005) ,
+      rgb (0.804182, 0.882046, 0.114965) ,
+      rgb (0.814576, 0.883393, 0.110347) ,
+      rgb (0.82494, 0.88472, 0.106217) ,
+      rgb (0.83527, 0.886029, 0.102646) ,
+      rgb (0.845561, 0.887322, 0.099702) ,
+      rgb (0.85581, 0.888601, 0.097452) ,
+      rgb (0.866013, 0.889868, 0.095953) ,
+      rgb (0.876168, 0.891125, 0.09525) ,
+      rgb (0.886271, 0.892374, 0.095374) ,
+      rgb (0.89632, 0.893616, 0.096335) ,
+      rgb (0.906311, 0.894855, 0.098125) ,
+      rgb (0.916242, 0.896091, 0.100717) ,
+      rgb (0.926106, 0.89733, 0.104071) ,
+      rgb (0.935904, 0.89857, 0.108131) ,
+      rgb (0.945636, 0.899815, 0.112838) ,
+      rgb (0.9553, 0.901065, 0.118128) ,
+      rgb (0.964894, 0.902323, 0.123941) ,
+      rgb (0.974417, 0.90359, 0.130215) ,
+      rgb (0.983868, 0.904867, 0.136897) ,
+      rgb (0.993248, 0.906157, 0.143936)
+      });
 
 

Modified: trunk/Master/texmf-dist/asymptote/contour.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/contour.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/contour.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,10 +1,10 @@
 // Contour routines written by Radoslav Marinov and John Bowman.
-         
+
 import graph_settings;
 
 real eps=10000*realEpsilon;
 
-//                         1  
+//                         1
 //             6 +-------------------+ 5
 //               | \               / |
 //               |   \          /    |
@@ -16,7 +16,7 @@
 //               |   /           \   |
 //               | /               \ |
 //             7 +-------------------+ 4 or 8
-//                         3  
+//                         3
 
 private struct segment
 {
@@ -76,11 +76,11 @@
 private segment checktriangle(pair p0, pair p1, pair p2,
                               real v0, real v1, real v2, int edge=-1)
 {
-  // default null return  
+  // default null return
   static segment dflt;
 
   real eps=eps*max(abs(v0),abs(v1),abs(v2));
-  
+
   if(v0 < -eps) {
     if(v1 < -eps) {
       if(v2 < -eps) return dflt; // nothing to do
@@ -92,10 +92,10 @@
       else return case2(p1,p0,p2,v1,v0,v2,5+edge);
     } else {
       if(v2 < -eps) return case3(p0,p1,p2,v0,v1,v2,edge);
-      else if(v2 <= eps) 
+      else if(v2 <= eps)
         return case2(p2,p0,p1,v2,v0,v1,edge);
       else return case3(p1,p0,p2,v1,v0,v2,edge);
-    } 
+    }
   } else if(v0 <= eps) {
     if(v1 < -eps) {
       if(v2 < -eps) return dflt; // nothing to do
@@ -109,7 +109,7 @@
       if(v2 < -eps) return case2(p0,p1,p2,v0,v1,v2,4+edge);
       else if(v2 <= eps) return case1(p0,p2,4+edge);
       else return dflt; // nothing to do
-    } 
+    }
   } else {
     if(v1 < -eps) {
       if(v2 < -eps) return case3(p1,p0,p2,v1,v0,v2,edge);
@@ -124,8 +124,8 @@
       if(v2 < -eps) return case3(p0,p2,p1,v0,v2,v1);
       else if(v2 <= eps) return dflt; // nothing to do
       else return dflt; // nothing to do
-    } 
-  }      
+    }
+  }
 }
 
 // Collect connecting path segments.
@@ -135,7 +135,7 @@
   int[] reverseF(int n) {return sequence(new int(int x){return n-1-x;},n-1);}
   // use to reverse an array, omitting the last point
   int[] reverseL(int n) {return sequence(new int(int x){return n-2-x;},n-1);}
-  
+
   for(int cnt=0; cnt < c.length; ++cnt) {
     pair[][] gdscnt=points[cnt];
     for(int i=0; i < gdscnt.length; ++i) {
@@ -144,11 +144,11 @@
       for(int j=i+1; j < gdscnt.length; ++j) {
         pair[] gjg=gdscnt[j];
         int Lj=gjg.length;
-        if(abs(gig[0]-gjg[0]) < eps) { 
+        if(abs(gig[0]-gjg[0]) < eps) {
           gdscnt[j]=gjg[reverseF(Lj)];
           gdscnt[j].append(gig);
-          gdscnt.delete(i); 
-          --i; 
+          gdscnt.delete(i);
+          --i;
           break;
         } else if(abs(gig[0]-gjg[Lj-1]) < eps) {
           gig.delete(0);
@@ -169,7 +169,7 @@
           gdscnt.delete(i);
           --i;
           break;
-        } 
+        }
       }
     }
   }
@@ -176,7 +176,8 @@
 }
 
 // Join path segments.
-private guide[][] connect(pair[][][] points, real[] c, interpolate join)
+private guide[][] connect(picture pic, pair[][][] points, real[] c,
+                          interpolate join)
 {
   // set up return value
   guide[][] result=new guide[c.length][];
@@ -189,13 +190,13 @@
       if(pts.length > 0) {
         if(pts.length > 1 && abs(pts[0]-pts[pts.length-1]) < eps) {
           guide[] g=sequence(new guide(int i) {
-              return pts[i];
+              return (pic.scale.x.T(pts[i].x), pic.scale.y.T(pts[i].y));
             },pts.length-1);
           g.push(cycle);
           gd=join(...g);
         } else
           gd=join(...sequence(new guide(int i) {
-                return pts[i];
+                return (pic.scale.x.T(pts[i].x), pic.scale.y.T(pts[i].y));
               },pts.length));
       }
       resultcnt[i]=gd;
@@ -211,7 +212,7 @@
 // midpoint:  optional array containing values of f at cell midpoints
 // c:         array of contour values
 // join:      interpolation operator (e.g. operator -- or operator ..)
-guide[][] contour(pair[][] z, real[][] f,
+guide[][] contour(picture pic=currentpicture, pair[][] z, real[][] f,
                   real[][] midpoint=new real[][], real[] c,
                   interpolate join=operator --)
 {
@@ -224,7 +225,7 @@
 
   c=sort(c);
   bool midpoints=midpoint.length > 0;
-  
+
   segment segments[][][]=new segment[nx][ny][];
 
   // go over region a rectangle at a time
@@ -238,7 +239,7 @@
     segment[][] segmentsi=segments[i];
     for(int j=0; j < ny; ++j) {
       segment[] segmentsij=segmentsi[j];
-      
+
       // define points
       pair bleft=zi[j];
       pair bright=zp[j];
@@ -264,26 +265,26 @@
         int countm=0;
         int countz=0;
         int countp=0;
-        
+
         void check(real vertdat) {
           if(vertdat < -eps) ++countm;
           else {
-            if(vertdat <= eps) ++countz; 
+            if(vertdat <= eps) ++countz;
             else ++countp;
           }
         }
-        
+
         check(vertdat0);
         check(vertdat1);
         check(vertdat2);
         check(vertdat3);
 
-        if(countm == 4) return 1;  // nothing to do 
-        if(countp == 4) return -1; // nothing to do 
+        if(countm == 4) return 1;  // nothing to do
+        if(countp == 4) return -1; // nothing to do
         if((countm == 3 || countp == 3) && countz == 1) return 0;
 
         // go through the triangles
-        
+
         void addseg(segment seg) {
           if(seg.active) {
             seg.c=cnt;
@@ -301,7 +302,7 @@
                              vertdat0,vertdat1,vertdat4,3));
         return 0;
       }
-      
+
       void process(int l, int u) {
         if(l >= u) return;
         int i=quotient(l+u,2);
@@ -313,7 +314,7 @@
           process(i+1,u);
         }
       }
-    
+
       process(0,c.length);
     }
   }
@@ -356,7 +357,7 @@
           }
           return -1;
         }
-        
+
         int backward(int I, int J, bool first=true) {
           if(I >= 0 && I < nx && J >= 0 && J < ny) {
             segment[] segmentsIJ=segments[I][J];
@@ -380,7 +381,7 @@
           }
           return -1;
         }
-        
+
         void follow(int f(int, int, bool first=true), int edge) {
           int I=i;
           int J=j;
@@ -445,7 +446,7 @@
 
   collect(points,c); // Required to join remaining case1 cycles.
 
-  return connect(points,c,join);
+  return connect(pic,points,c,join);
 }
 
 // Return contour guides for a 2D data array on a uniform lattice
@@ -454,8 +455,8 @@
 // a,b:       diagonally opposite vertices of rectangular domain
 // c:         array of contour values
 // join:      interpolation operator (e.g. operator -- or operator ..)
-guide[][] contour(real[][] f, real[][] midpoint=new real[][],
-                  pair a, pair b, real[] c,
+guide[][] contour(picture pic=currentpicture, real[][] f,
+                  real[][] midpoint=new real[][], pair a, pair b, real[] c,
                   interpolate join=operator --)
 {
   int nx=f.length-1;
@@ -473,7 +474,7 @@
       zi[j]=(xi,interp(a.y,b.y,j/ny));
     }
   }
-  return contour(z,f,midpoint,c,join);
+  return contour(pic,z,f,midpoint,c,join);
 }
 
 // return contour guides for a real-valued function
@@ -482,14 +483,14 @@
 // c:        array of contour values
 // nx,ny:    number of subdivisions in x and y directions (determines accuracy)
 // join:     interpolation operator (e.g. operator -- or operator ..)
-guide[][] contour(real f(real, real), pair a, pair b,
-                  real[] c, int nx=ngraph, int ny=nx,
+guide[][] contour(picture pic=currentpicture, real f(real, real), pair a,
+                  pair b, real[] c, int nx=ngraph, int ny=nx,
                   interpolate join=operator --)
 {
   // evaluate function at points and midpoints
   real[][] dat=new real[nx+1][ny+1];
   real[][] midpoint=new real[nx+1][ny+1];
-  
+
   for(int i=0; i <= nx; ++i) {
     real x=interp(a.x,b.x,i/nx);
     real x2=interp(a.x,b.x,(i+0.5)/nx);
@@ -501,9 +502,9 @@
     }
   }
 
-  return contour(dat,midpoint,a,b,c,join);
+  return contour(pic,dat,midpoint,a,b,c,join);
 }
-  
+
 void draw(picture pic=currentpicture, Label[] L=new Label[],
           guide[][] g, pen[] p)
 {
@@ -576,7 +577,7 @@
                 index=i;
             }
           }
-        } 
+        }
         fillpalettei[j]=palette[index];
       }
       fillpalette[i]=fillpalettei;
@@ -620,7 +621,7 @@
 // check existing guides and adds new segment to them if possible,
 // or otherwise store segment as a new guide
 private void addseg(pair[][] gds, segment seg)
-{ 
+{
   if(!seg.active) return;
   // search for a path to extend
   for(int i=0; i < gds.length; ++i) {
@@ -629,33 +630,33 @@
       gd.insert(0,seg.a);
       return;
     } else if(abs(gd[gd.length-1]-seg.b) < eps) {
-      gd.push(seg.a); 
+      gd.push(seg.a);
       return;
     } else if(abs(gd[0]-seg.a) < eps) {
       gd.insert(0,seg.b);
       return;
-    } else if(abs(gd[gd.length-1]-seg.a) < eps) {  
+    } else if(abs(gd[gd.length-1]-seg.a) < eps) {
       gd.push(seg.b);
       return;
     }
   }
- 
+
   // in case nothing is found
   pair[] segm;
-  segm=new pair[] {seg.a,seg.b}; 
+  segm=new pair[] {seg.a,seg.b};
   gds.push(segm);
-  
+
   return;
 }
 
-guide[][] contour(real f(pair), pair a, pair b,
+guide[][] contour(picture pic=currentpicture, real f(pair), pair a, pair b,
                   real[] c, int nx=ngraph, int ny=nx,
                   interpolate join=operator --)
 {
-  return contour(new real(real x, real y) {return f((x,y));},a,b,c,nx,ny,join);
+  return contour(pic,new real(real x, real y) {return f((x,y));},a,b,c,nx,ny,join);
 }
 
-guide[][] contour(pair[] z, real[] f, real[] c, interpolate join=operator --)
+guide[][] contour(picture pic=currentpicture, pair[] z, real[] f, real[] c, interpolate join=operator --)
 {
   if(z.length != f.length)
     abort("z and f arrays have different lengths");
@@ -664,7 +665,7 @@
 
   // array to store guides found so far
   pair[][][] points=new pair[c.length][][];
-        
+
   for(int cnt=0; cnt < c.length; ++cnt) {
     pair[][] pointscnt=points[cnt];
     real C=c[cnt];
@@ -678,5 +679,5 @@
 
   collect(points,c);
 
-  return connect(points,c,join);
+  return connect(pic,points,c,join);
 }

Modified: trunk/Master/texmf-dist/asymptote/contour3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/contour3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/contour3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -81,7 +81,7 @@
       int j2=2j;
       int j2p1=j2+1;
       int j2p2=j2+2;
- 
+
       for(int k=0; k < nz; ++k) {
         // vertex values
         real vdat0=fij[k];
@@ -108,21 +108,21 @@
         triple m3=0.25*(p100+p000+p001+p101);
         triple m4=0.25*(p000+p010+p011+p001);
         triple m5=0.25*(p001+p011+p111+p101);
-        triple mc=0.5*(m0+m5);                   
+        triple mc=0.5*(m0+m5);
 
         // optimization: we make sure we don't work with empty rectangles
         int countm=0;
         int countz=0;
         int countp=0;
-        
+
         void check(real vdat) {
           if(vdat < -eps) ++countm;
           else {
-            if(vdat <= eps) ++countz; 
+            if(vdat <= eps) ++countz;
             else ++countp;
           }
         }
-        
+
         check(vdat0);
         check(vdat1);
         check(vdat2);
@@ -132,32 +132,32 @@
         check(vdat6);
         check(vdat7);
 
-        if(countm == 8 || countp == 8 || 
+        if(countm == 8 || countp == 8 ||
            ((countm == 7 || countp == 7) && countz == 1)) continue;
 
         int k2=2k;
         int k2p1=k2+1;
         int k2p2=k2+2;
- 
+
         // Evaluate midpoints of cube sides.
         // Then evaluate midpoint of cube.
         real vdat8=midpoints ? midpoint[i2p1][j2p1][k2] :
           0.25*(vdat0+vdat2+vdat6+vdat4);
-        real vdat9=midpoints ? midpoint[i2p1][j2p2][k2p1] : 
+        real vdat9=midpoints ? midpoint[i2p1][j2p2][k2p1] :
           0.25*(vdat2+vdat6+vdat7+vdat3);
-        real vdat10=midpoints ? midpoint[i2p2][j2p1][k2p1] : 
+        real vdat10=midpoints ? midpoint[i2p2][j2p1][k2p1] :
           0.25*(vdat7+vdat6+vdat4+vdat5);
-        real vdat11=midpoints ? midpoint[i2p1][j2][k2p1] : 
+        real vdat11=midpoints ? midpoint[i2p1][j2][k2p1] :
           0.25*(vdat0+vdat4+vdat5+vdat1);
-        real vdat12=midpoints ? midpoint[i2][j2p1][k2p1] : 
+        real vdat12=midpoints ? midpoint[i2][j2p1][k2p1] :
           0.25*(vdat0+vdat2+vdat3+vdat1);
-        real vdat13=midpoints ? midpoint[i2p1][j2p1][k2p2] : 
+        real vdat13=midpoints ? midpoint[i2p1][j2p1][k2p2] :
           0.25*(vdat1+vdat3+vdat7+vdat5);
-        real vdat14=midpoints ? midpoint[i2p1][j2p1][k2p1] : 
+        real vdat14=midpoints ? midpoint[i2p1][j2p1][k2p1] :
           0.125*(vdat0+vdat1+vdat2+vdat3+vdat4+vdat5+vdat6+vdat7);
-      
+
         // Go through the 24 pyramids, 4 for each side.
-        
+
         void addval(int kp0, int kp1, int kp2, triple add, triple v) {
           bucket[] cur=kps[kp0][kp1][kp2];
           for(int q=0; q < cur.length; ++q) {
@@ -192,8 +192,14 @@
           vec0=unit(vec0);
           triple normal=cross(vec2,vec1);
           normal *= sgn(dot(normal,dir));
-          real angle0=acos(-dot(vec1,vec2));
-          real angle1=acos(-dot(vec2,vec0));
+
+          real angle(triple u, triple v) {
+            real Dot=-dot(u,v);
+            return Dot > 1 ? 0 : Dot < -1 ? pi : acos(Dot);
+          }
+
+          real angle0=angle(vec1,vec2);
+          real angle1=angle(vec2,vec0);
           pts[0].normal=normal*angle0;
           pts[1].normal=normal*angle1;
           pts[2].normal=normal*(pi-angle0-angle1);
@@ -206,7 +212,7 @@
             weighted[] points=obj.pts;
             object obj1;
             object obj2;
-            obj1.active=true; 
+            obj1.active=true;
             obj2.active=true;
             obj1.pts=new weighted[] {points[0],points[1],points[2]};
             obj2.pts=new weighted[] {points[1],points[2],points[3]};
@@ -220,7 +226,7 @@
           }
         }
 
-        weighted setupweighted(triple va, triple vb, real da, real db, 
+        weighted setupweighted(triple va, triple vb, real da, real db,
                                int[] kpa, int[] kpb) {
           weighted w;
           real ratio=abs(da/(db-da));
@@ -318,7 +324,7 @@
         static int[] pm4={0,1,1};
         static int[] pm5={1,1,2};
         static int[] pmc={1,1,1};
- 
+
         check4pyr(p000,p010,p110,p100,mc,m0,
                   vdat0,vdat2,vdat6,vdat4,vdat14,vdat8,
                   pp000,pp010,pp110,pp100,pmc,pm0);
@@ -378,14 +384,14 @@
     ret.normal=normal*2/count;
     return ret;
   }
-  
+
   // Prepare return value.
   vertex[][] g;
-  
+
   for(int q=0; q < objects.length; ++q) {
     object p=objects[q];
     g.push(new vertex[] {preparevertex(p.pts[0]),preparevertex(p.pts[1]),
-          preparevertex(p.pts[2])});
+                           preparevertex(p.pts[2])});
   }
   return g;
 }
@@ -454,7 +460,7 @@
         datij[k]=f(x,y,z);
         if(i == nx || j == ny || k == nz) continue;
         int k2p1=2k+1;
-        midpointi2p1j2p1[2k]=f(x2,y2,z); 
+        midpointi2p1j2p1[2k]=f(x2,y2,z);
         midpointi2p1j2p1[k2p1]=f(x2,y2,z2);
         midpointi2p1j2[k2p1]=f(x2,y,z2);
         midpointi2j2p1[k2p1]=f(x,y2,z2);

Modified: trunk/Master/texmf-dist/asymptote/embed.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/embed.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/embed.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,23 +7,23 @@
 // For documentation of the options see
 // http://mirror.ctan.org/macros/latex/contrib/media9/doc/media9.pdf
 
-// Embed PRC or SWF content in pdf file 
+// Embed PRC or SWF content in pdf file
 string embedplayer(string name, string text="", string options="",
                    real width=0, real height=0)
 {
-  if(width != 0) options += ",width="+(string) (width/pt)+"pt"; 
-  if(height != 0) options += ",height="+(string) (height/pt)+"pt"; 
+  if(width != 0) options += ",width="+(string) (width/pt)+"pt";
+  if(height != 0) options += ",height="+(string) (height/pt)+"pt";
   return "%
 \includemedia[noplaybutton,"+options+"]{"+text+"}{"+name+"}";
 }
 
-// Embed media in pdf file 
+// Embed media in pdf file
 string embed(string name, string text="", string options="",
              real width=0, real height=0)
 {
   return embedplayer("VPlayer.swf",text,"label="+name+
                      ",activate=pageopen,addresource="+name+
-                      ",flashvars={source="+name+"&scaleMode=letterbox},"+
+                     ",flashvars={source="+name+"&scaleMode=letterbox},"+
                      options,width,height);
 }
 

Modified: trunk/Master/texmf-dist/asymptote/external.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/external.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/external.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -20,8 +20,8 @@
       atexit(exitfunction);
     }
   }
-  if(width != 0) options += ", width="+(string) (width/pt)+"pt"; 
-  if(height != 0) options +=", height="+(string) (height/pt)+"pt"; 
+  if(width != 0) options += ", width="+(string) (width/pt)+"pt";
+  if(height != 0) options +=", height="+(string) (height/pt)+"pt";
   return "\href{run:"+name+"}{"+graphic(image,options)+"}";
 }
 

Modified: trunk/Master/texmf-dist/asymptote/feynman.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/feynman.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/feynman.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,12 +10,12 @@
 
 // default ratio of width (distance between two loops) to amplitude for a gluon
 // line. The gluon function uses this ratio, if the width parameter is
-// negative. 
+// negative.
 real gluonratio;
 
 // default ratio of width (distance between two crests) to amplitude for a
 // photon  line. The photon function uses this ratio, if the width parameter is
-// negative. 
+// negative.
 real photonratio;
 
 // default gluon amplitude
@@ -337,7 +337,7 @@
                real vertexangle = minvertexangle,
                real margin = linemargin)
 {
-  if(erasebg) do_overpaint(pic, p, bgpen, 
+  if(erasebg) do_overpaint(pic, p, bgpen,
                            linewidth(fgpen)+margin, vertexangle);
   draw(pic, p, fgpen, arrow);
 }
@@ -358,7 +358,7 @@
                     real vertexangle = minvertexangle,
                     real margin = linemargin)
 {
-  if(erasebg) do_overpaint(pic, p, bgpen, 
+  if(erasebg) do_overpaint(pic, p, bgpen,
                            linewidth(fgpen)+margin, vertexangle);
 
   real htw = linewidth(fgpen)+dlspacing/2;
@@ -466,7 +466,7 @@
                  pen fgpen = vertexpen)
 {
   draw(pic, shift(xy)*scale(r)*((-1,-1)--(1,1)), fgpen);
-  draw(pic, shift(xy)*scale(r)*((1,-1)--(-1,1)), fgpen);    
+  draw(pic, shift(xy)*scale(r)*((1,-1)--(-1,1)), fgpen);
 }
 
 // draw a circle with an X in the middle on picture pic, at position xy with
@@ -508,7 +508,7 @@
 }
 
 // draw a momentum arrow on picture pic, along path p, at position position
-// (use one of the predefined pairs left or right), with an offset offset 
+// (use one of the predefined pairs left or right), with an offset offset
 // from the path, a length length, a pen fgpen and an arrowhead arrow. Making
 // adjust nonzero shifts the momentum arrow along the path. If erasebg is true,
 // the background is erased inside a margin margin around the momentum arrow.
@@ -527,7 +527,7 @@
                   real margin = momarrowmargin)
 {
   path momarrow = momArrowPath(p, align, pos, offset, length);
-  if(erasebg) do_overpaint(pic, momarrow, bgpen, 
+  if(erasebg) do_overpaint(pic, momarrow, bgpen,
                            linewidth(fgpen)+margin, 90);
   draw(pic, momarrow, fgpen, arrow);
 }
@@ -540,7 +540,7 @@
 // (essentially, currentpen, arrowfactor and dotfactor). After customising the
 // default parameters of plain.asy, you may call fmdefaults to adjust the
 // parameters of feynman.asy.
-void fmdefaults() 
+void fmdefaults()
 {
   real arrowsize=arrowsize(currentpen);
   real linewidth=linewidth(currentpen);

Modified: trunk/Master/texmf-dist/asymptote/flowchart.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/flowchart.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/flowchart.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -57,29 +57,29 @@
   // in absolute coordinates.
   pair top(transform t=identity()) {
     return shift(t)+f_top;
-  } 
+  }
   pair bottom(transform t=identity()) {
     return shift(t)+f_bottom;
-  } 
+  }
   pair left(transform t=identity()) {
     return shift(t)+f_left;
-  } 
+  }
   pair right(transform t=identity()) {
     return shift(t)+f_right;
-  } 
+  }
   pair topleft(transform t=identity()) {
     return shift(t)+f_topleft;
-  } 
+  }
   pair topright(transform t=identity()) {
     return shift(t)+f_topright;
-  } 
+  }
   pair bottomleft(transform t=identity()) {
     return shift(t)+f_bottomleft;
-  } 
+  }
   pair bottomright(transform t=identity()) {
     return shift(t)+f_bottomright;
-  } 
-  
+  }
+
   // Return a frame representing the block.
   frame draw(pen p=currentpen);
 
@@ -118,25 +118,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shift(0,z1.y)*box((0,0),z0),headerpen,drawpen);
-    add(block,shift(-0.5*(Mheader+mheader))*fheader,(0,z1.y)+0.5z0);
-    filldraw(block,box((0,0),z1),bodypen,drawpen);
-    add(block,shift(-0.5*(Mbody+mbody))*fbody,0.5z1);
-    return block;
+                               frame block;
+                               filldraw(block,shift(0,z1.y)*box((0,0),z0),headerpen,drawpen);
+                               add(block,shift(-0.5*(Mheader+mheader))*fheader,(0,z1.y)+0.5z0);
+                               filldraw(block,box((0,0),z1),bodypen,drawpen);
+                               add(block,shift(-0.5*(Mbody+mbody))*fbody,0.5z1);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=interp(point(shape,0),point(shape,3),0.5);
-  block.f_bottomleft=point(shape,0); 
-  block.f_bottom=point(shape,5.5); 
-  block.f_bottomright=point(shape,5); 
-  block.f_right=point(shape,4.5); 
-  block.f_topright=point(shape,3); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,2); 
-  block.f_left=point(shape,0.5); 
+  block.f_bottomleft=point(shape,0);
+  block.f_bottom=point(shape,5.5);
+  block.f_bottomright=point(shape,5);
+  block.f_right=point(shape,4.5);
+  block.f_topright=point(shape,3);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,2);
+  block.f_left=point(shape,0.5);
   block.center=center;
   block.size=point(shape,3);
   return block;
@@ -156,25 +156,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,0.5z);
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,0.5z);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=0.5*z;
   block.center=center;
   block.size=z;
   block.f_bottomleft=point(shape,0);
-  block.f_bottom=point(shape,0.5); 
-  block.f_bottomright=point(shape,1); 
-  block.f_right=point(shape,1.5); 
-  block.f_topright=point(shape,2); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,3); 
-  block.f_left=point(shape,3.5); 
+  block.f_bottom=point(shape,0.5);
+  block.f_bottomright=point(shape,1);
+  block.f_right=point(shape,1.5);
+  block.f_topright=point(shape,2);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,3);
+  block.f_left=point(shape,3.5);
   return block;
 }
 
@@ -197,13 +197,13 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,((a+skew)/2,b/2));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,((a+skew)/2,b/2));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=((a+skew)/2,b/2);
   block.center=center;
@@ -229,7 +229,7 @@
   pair m=min(f);
   pair M=max(f);
   pair bound=maxbound(M-m,(minwidth,minheight));
-  
+
   real e=ds;
   real a=0.5bound.x-dw;
   real b=0.5bound.y;
@@ -244,25 +244,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(d,c));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(d,c));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(point(shape,1).x,point(shape,0).y);
   block.center=center;
   block.size=(point(shape,0).x,point(shape,1).y);
-  block.f_bottomleft=point(shape,2.5); 
-  block.f_bottom=point(shape,3); 
-  block.f_bottomright=point(shape,3.5); 
-  block.f_right=point(shape,0); 
-  block.f_topright=point(shape,0.5); 
-  block.f_top=point(shape,1); 
-  block.f_topleft=point(shape,1.5); 
-  block.f_left=point(shape,2); 
+  block.f_bottomleft=point(shape,2.5);
+  block.f_bottom=point(shape,3);
+  block.f_bottomright=point(shape,3.5);
+  block.f_right=point(shape,0);
+  block.f_topright=point(shape,0.5);
+  block.f_top=point(shape,1);
+  block.f_topleft=point(shape,1.5);
+  block.f_left=point(shape,2);
   return block;
 }
 
@@ -274,30 +274,30 @@
   pair m=min(f);
   pair M=max(f);
   real r=max(0.5length(M-m)+dr,0.5mindiameter);
-  
+
   path shape=(0,r)..(r,2r)..(2r,r)..(r,0)..cycle;
-  
+
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(r,r));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(r,r));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(r,r);
   block.center=center;
   block.size=(2r,2r);
   block.f_left=point(shape,0);
-  block.f_topleft=point(shape,0.5); 
-  block.f_top=point(shape,1); 
-  block.f_topright=point(shape,1.5); 
-  block.f_right=point(shape,2); 
-  block.f_bottomright=point(shape,2.5); 
-  block.f_bottom=point(shape,3); 
-  block.f_bottomleft=point(shape,3.5); 
+  block.f_topleft=point(shape,0.5);
+  block.f_top=point(shape,1);
+  block.f_topright=point(shape,1.5);
+  block.f_right=point(shape,2);
+  block.f_bottomright=point(shape,2.5);
+  block.f_bottom=point(shape,3);
+  block.f_bottomleft=point(shape,3.5);
   return block;
 }
 
@@ -313,33 +313,33 @@
 
   real a=bound.x;
   real b=bound.y;
-  
+
   path shape=(0,ds+dw)--(0,ds+b-dw){up}..{right}
   (ds+dw,2ds+b)--(ds+a-dw,2ds+b){right}..{down}
   (2ds+a,ds+b-dw)--(2ds+a,ds+dw){down}..{left}
   (ds+a-dw,0)--(ds+dw,0){left}..{up}cycle;
-  
+
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(ds,ds)+0.5bound);
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(ds,ds)+0.5bound);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(ds+0.5a,ds+0.5b);
   block.center=center;
   block.size=(2ds+a,2ds+b);
-  block.f_bottomleft=point(shape,7.5); 
-  block.f_bottom=point(shape,6.5); 
-  block.f_bottomright=point(shape,5.5); 
-  block.f_right=point(shape,4.5); 
-  block.f_topright=point(shape,3.5); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,1.5); 
-  block.f_left=point(shape,0.5); 
+  block.f_bottomleft=point(shape,7.5);
+  block.f_bottom=point(shape,6.5);
+  block.f_bottomright=point(shape,5.5);
+  block.f_right=point(shape,4.5);
+  block.f_topright=point(shape,3.5);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,1.5);
+  block.f_left=point(shape,0.5);
   return block;
 }
 
@@ -359,25 +359,25 @@
     (dw+a,0)--cycle;
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(0.5bound+(dw,dh)));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(0.5bound+(dw,dh)));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(dw+0.5a,dh+b);
   block.center=center;
   block.size=(2dw+a,2dh+2b);
-  block.f_bottomleft=point(shape,4); 
-  block.f_bottom=point(shape,4.5); 
-  block.f_bottomright=point(shape,5); 
-  block.f_right=point(shape,0); 
-  block.f_topright=point(shape,1); 
-  block.f_top=point(shape,1.5); 
-  block.f_topleft=point(shape,2); 
-  block.f_left=point(shape,3); 
+  block.f_bottomleft=point(shape,4);
+  block.f_bottom=point(shape,4.5);
+  block.f_bottomright=point(shape,5);
+  block.f_right=point(shape,0);
+  block.f_topright=point(shape,1);
+  block.f_top=point(shape,1.5);
+  block.f_topleft=point(shape,2);
+  block.f_left=point(shape,3);
   return block;
 }
 
@@ -388,14 +388,14 @@
   for(int i=1; i < point.length; ++i) {
     if(i-1 >= dir.length || dir[i-1] == Horizontal)
       current=(point[i].x,point[i-1].y);
-    else 
+    else
       current=(point[i-1].x,point[i].y);
-    
+
     if(current != prev) {
       line=line--current;
       prev=current;
     }
-    
+
     current=point[i];
     if(current != prev) {
       line=line--current;

Modified: trunk/Master/texmf-dist/asymptote/geometry.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/geometry.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/geometry.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -40,7 +40,7 @@
   real angle=degrees(dir);
   if(angle > 90 && angle < 270) angle -= 180;
   return rotate(angle);
-} 
+}
 
 // *=======================================================*
 // *........................HEADER.........................*
@@ -165,7 +165,7 @@
   ed = ea - 6 * eb;
   ee = ed + ec + ec;
   return 3 * sum + fac * (1.0 + ed * (-C1 + C5 * ed - C6 * delz * ee)
-                    +delz * (C2 * ee + delz * (-C3 * ec + delz * C4 * ea)))/(ave * sqrt(ave));
+                          +delz * (C2 * ee + delz * (-C3 * ec + delz * C4 * ea)))/(ave * sqrt(ave));
 }
 
 /*<asyxml><function type="real" signature="elle(real,real)"><code></asyxml>*/
@@ -258,10 +258,10 @@
 {/*<asyxml></code><documentation>This structure represents a coordinate system in the plane.</documentation></asyxml>*/
   /*<asyxml><method type = "pair" signature="relativetodefault(pair)"><code></asyxml>*/
   restricted convert relativetodefault = new pair(pair m){return m;};/*<asyxml></code><documentation>Convert a pair given relatively to this coordinate system to
-                                                                     the pair relatively to the default coordinate system.</documentation></method></asyxml>*/
+                                                                       the pair relatively to the default coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "pair" signature="defaulttorelativet(pair)"><code></asyxml>*/
   restricted convert defaulttorelative = new pair(pair m){return m;};/*<asyxml></code><documentation>Convert a pair given relatively to the default coordinate system to
-                                                                     the pair relatively to this coordinate system.</documentation></method></asyxml>*/
+                                                                       the pair relatively to this coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "real" signature="dot(pair,pair)"><code></asyxml>*/
   restricted dot dot = new real(pair m, pair n){return dot(m, n);};/*<asyxml></code><documentation>Return the dot product of this coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "real" signature="abs(pair)"><code></asyxml>*/
@@ -287,50 +287,50 @@
 
 /*<asyxml><operator type = "bool" signature="==(coordsys,coordsys)"><code></asyxml>*/
 bool operator ==(coordsys c1, coordsys c2)
-{/*<asyxml></code><documentation>Return true iff the coordinate system have the same origin and units vector.</documentation></operator></asyxml>*/
-  return c1.O == c2.O && c1.i == c2.i && c1.j == c2.j;
-}
+  {/*<asyxml></code><documentation>Return true iff the coordinate system have the same origin and units vector.</documentation></operator></asyxml>*/
+   return c1.O == c2.O && c1.i == c2.i && c1.j == c2.j;
+  }
 
 /*<asyxml><function type="coordsys" signature="cartesiansystem(pair,pair,pair)"><code></asyxml>*/
 coordsys cartesiansystem(pair O = (0, 0), pair i, pair j)
 {/*<asyxml></code><documentation>Return the Cartesian coordinate system (O, i, j).</documentation></function></asyxml>*/
-  coordsys R;
-  real[][] P = {{0, 0}, {0, 0}};
-  real[][] iP;
-  P[0][0] = i.x;
-  P[0][1] = j.x;
-  P[1][0] = i.y;
-  P[1][1] = j.y;
-  iP = inverse(P);
-  real ni = abs(i);
-  real nj = abs(j);
-  real ij = angle(j) - angle(i);
+ coordsys R;
+ real[][] P = {{0, 0}, {0, 0}};
+ real[][] iP;
+ P[0][0] = i.x;
+ P[0][1] = j.x;
+ P[1][0] = i.y;
+ P[1][1] = j.y;
+ iP = inverse(P);
+ real ni = abs(i);
+ real nj = abs(j);
+ real ij = angle(j) - angle(i);
 
-  pair rtd(pair m)
-  {
-    return O + (P[0][0] * m.x + P[0][1] * m.y, P[1][0] * m.x + P[1][1] * m.y);
-  }
+ pair rtd(pair m)
+ {
+   return O + (P[0][0] * m.x + P[0][1] * m.y, P[1][0] * m.x + P[1][1] * m.y);
+ }
 
-  pair dtr(pair m)
-  {
-    m-=O;
-    return (iP[0][0] * m.x + iP[0][1] * m.y, iP[1][0] * m.x + iP[1][1] * m.y);
-  }
+ pair dtr(pair m)
+ {
+   m-=O;
+   return (iP[0][0] * m.x + iP[0][1] * m.y, iP[1][0] * m.x + iP[1][1] * m.y);
+ }
 
-  pair polar(real r, real a)
-  {
-    real ca = sin(ij - a)/(ni * sin(ij));
-    real sa = sin(a)/(nj * sin(ij));
-    return r * (ca, sa);
-  }
+ pair polar(real r, real a)
+ {
+   real ca = sin(ij - a)/(ni * sin(ij));
+   real sa = sin(a)/(nj * sin(ij));
+   return r * (ca, sa);
+ }
 
-  real tdot(pair m, pair n)
-  {
-    return m.x * n.x * ni^2 + m.y * n.y * nj^2 + (m.x * n.y + n.x * m.y) * dot(i, j);
-  }
+ real tdot(pair m, pair n)
+ {
+   return m.x * n.x * ni^2 + m.y * n.y * nj^2 + (m.x * n.y + n.x * m.y) * dot(i, j);
+ }
 
-  R.init(rtd, dtr, polar, tdot);
-  return R;
+ R.init(rtd, dtr, polar, tdot);
+ return R;
 }
 
 
@@ -344,19 +344,19 @@
           pen jpen = ipen,
           arrowbar arrow = Arrow)
 {/*<asyxml></code><documentation>Draw the components (O, i, j, x - axis, y - axis) of 'R'.</documentation></function></asyxml>*/
-  unravel R;
-  dot(pic, O, dotpen);
-  drawline(pic, O, O + i, xpen);
-  drawline(pic, O, O + j, ypen);
-  draw(pic, li, O--(O + i), ipen, arrow);
-  Label lj = lj.copy();
-  lj.align(lj.align, unit(I * j));
-  draw(pic, lj, O--(O + j), jpen, arrow);
-  draw(pic, lj, O--(O + j), jpen, arrow);
-  Label lo = lo.copy();
-  lo.align(lo.align, -2 * dir(O--O + i, O--O + j));
-  lo.p(dotpen);
-  label(pic, lo, O);
+ unravel R;
+ dot(pic, O, dotpen);
+ drawline(pic, O, O + i, xpen);
+ drawline(pic, O, O + j, ypen);
+ draw(pic, li, O--(O + i), ipen, arrow);
+ Label lj = lj.copy();
+ lj.align(lj.align, unit(I * j));
+ draw(pic, lj, O--(O + j), jpen, arrow);
+ draw(pic, lj, O--(O + j), jpen, arrow);
+ Label lo = lo.copy();
+ lo.align(lo.align, -2 * dir(O--O + i, O--O + j));
+ lo.p(dotpen);
+ label(pic, lo, O);
 }
 
 /*<asyxml><operator type = "pair" signature="/(pair,coordsys)"><code></asyxml>*/
@@ -364,7 +364,7 @@
 {/*<asyxml></code><documentation>Return the xy - coordinates of 'p' relatively to
    the coordinate system 'R'.
    For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), (0, 0)/R is (-1, -2).</documentation></operator></asyxml>*/
-  return R.defaulttorelative(p);
+ return R.defaulttorelative(p);
 }
 
 /*<asyxml><operator type = "pair" signature="*(coordsys,pair)"><code></asyxml>*/
@@ -372,25 +372,25 @@
 {/*<asyxml></code><documentation>Return the coordinates of 'p' given in the
    xy - coordinates 'R'.
    For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), R * (0, 0) is (1, 2).</documentation></operator></asyxml>*/
-  return R.relativetodefault(p);
+ return R.relativetodefault(p);
 }
 
 /*<asyxml><operator type = "path" signature="*(coordsys,path)"><code></asyxml>*/
 path operator *(coordsys R, path g)
 {/*<asyxml></code><documentation>Return the reconstructed path applying R * pair to each node, pre and post control point of 'g'.</documentation></operator></asyxml>*/
-  guide og = R * point(g, 0);
-  real l = length(g);
-  for(int i = 1; i <= l; ++i)
-    {
-      pair P = R * point(g, i);
-      pair post = R * postcontrol(g, i - 1);
-      pair pre = R * precontrol(g, i);
-      if(i == l && (cyclic(g)))
-        og = og..controls post and pre..cycle;
-      else
-        og = og..controls post and pre..P;
-    }
-  return og;
+ guide og = R * point(g, 0);
+ real l = length(g);
+ for(int i = 1; i <= l; ++i)
+   {
+     pair P = R * point(g, i);
+     pair post = R * postcontrol(g, i - 1);
+     pair pre = R * precontrol(g, i);
+     if(i == l && (cyclic(g)))
+       og = og..controls post and pre..cycle;
+     else
+       og = og..controls post and pre..P;
+   }
+ return og;
 }
 
 /*<asyxml><operator type = "coordsys" signature="*(transform,coordsys)"><code></asyxml>*/
@@ -397,9 +397,9 @@
 coordsys operator *(transform t,coordsys R)
 {/*<asyxml></code><documentation>Provide transform * coordsys.
    Note that shiftless(t) is applied to R.i and R.j.</documentation></operator></asyxml>*/
-  coordsys oc;
-  oc = cartesiansystem(t * R.O, shiftless(t) * R.i, shiftless(t) * R.j);
-  return oc;
+ coordsys oc;
+ oc = cartesiansystem(t * R.O, shiftless(t) * R.i, shiftless(t) * R.j);
+ return oc;
 }
 
 /*<asyxml><constant type = "coordsys" signature="defaultcoordsys"><code></asyxml>*/
@@ -651,26 +651,26 @@
 
 /*<asyxml><operator type = "bool" signature="==(explicit point,explicit point)"><code></asyxml>*/
 bool operator ==(explicit point M, explicit point N)
-{/*<asyxml></code><documentation>Provide the test 'M == N' wish returns true iff MN < EPS</documentation></operator></asyxml>*/
-  return abs(locate(M) - locate(N)) < EPS;
-}
+  {/*<asyxml></code><documentation>Provide the test 'M == N' wish returns true iff MN < EPS</documentation></operator></asyxml>*/
+   return abs(locate(M) - locate(N)) < EPS;
+  }
 
 /*<asyxml><operator type = "bool" signature="!=(explicit point,explicit point)"><code></asyxml>*/
 bool operator !=(explicit point M, explicit point N)
 {/*<asyxml></code><documentation>Provide the test 'M != N' wish return true iff MN >= EPS</documentation></operator></asyxml>*/
-  return !(M == N);
+ return !(M == N);
 }
 
 /*<asyxml><operator type = "guide" signature="cast(point)"><code></asyxml>*/
 guide operator cast(point p)
 {/*<asyxml></code><documentation>Cast point to guide.</documentation></operator></asyxml>*/
-  return locate(p);
+ return locate(p);
 }
 
 /*<asyxml><operator type = "path" signature="cast(point)"><code></asyxml>*/
 path operator cast(point p)
 {/*<asyxml></code><documentation>Cast point to path.</documentation></operator></asyxml>*/
-  return locate(p);
+ return locate(p);
 }
 
 /*<asyxml><function type="void" signature="dot(picture,Label,explicit point,align,string,pen)"><code></asyxml>*/
@@ -678,70 +678,70 @@
          align align = NoAlign,
          string format = defaultformat, pen p = currentpen)
 {/*<asyxml></code><documentation></documentation></function></asyxml>*/
-  Label L = L.copy();
-  L.position(locate(Z));
-  if(L.s == "") {
-    if(format == "") format = defaultformat;
-    L.s = "("+format(format, Z.x)+", "+format(format, Z.y)+")";
-  }
-  L.align(align, E);
-  L.p(p);
-  dot(pic, locate(Z), p);
-  add(pic, L);
+ Label L = L.copy();
+ L.position(locate(Z));
+ if(L.s == "") {
+   if(format == "") format = defaultformat;
+   L.s = "("+format(format, Z.x)+", "+format(format, Z.y)+")";
+ }
+ L.align(align, E);
+ L.p(p);
+ dot(pic, locate(Z), p);
+ add(pic, L);
 }
 
 /*<asyxml><function type="real" signature="abs(coordsys,pair)"><code></asyxml>*/
 real abs(coordsys R, pair m)
 {/*<asyxml></code><documentation>Return the modulus |m| in the coordinate system 'R'.</documentation></function></asyxml>*/
-  return R.abs(m);
+ return R.abs(m);
 }
 
 /*<asyxml><function type="real" signature="abs(explicit point)"><code></asyxml>*/
 real abs(explicit point M)
 {/*<asyxml></code><documentation>Return the modulus |M| in its coordinate system.</documentation></function></asyxml>*/
-  return M.coordsys.abs(M.coordinates);
+ return M.coordsys.abs(M.coordinates);
 }
 
 /*<asyxml><function type="real" signature="length(explicit point)"><code></asyxml>*/
 real length(explicit point M)
 {/*<asyxml></code><documentation>Return the modulus |M| in its coordinate system (same as 'abs').</documentation></function></asyxml>*/
-  return M.coordsys.abs(M.coordinates);
+ return M.coordsys.abs(M.coordinates);
 }
 
 /*<asyxml><function type="point" signature="conj(explicit point)"><code></asyxml>*/
 point conj(explicit point M)
 {/*<asyxml></code><documentation>Conjugate.</documentation></function></asyxml>*/
-  return point(M.coordsys, conj(M.coordinates), M.m);
+ return point(M.coordsys, conj(M.coordinates), M.m);
 }
 
 /*<asyxml><function type="real" signature="degrees(explicit point,coordsys,bool)"><code></asyxml>*/
 real degrees(explicit point M, coordsys R = M.coordsys, bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of M (in degrees) relatively to 'R'.</documentation></function></asyxml>*/
-  return (degrees(locate(M) - R.O, warn) - degrees(R.i))%360;
+ return (degrees(locate(M) - R.O, warn) - degrees(R.i))%360;
 }
 
 /*<asyxml><function type="real" signature="angle(explicit point,coordsys,bool)"><code></asyxml>*/
 real angle(explicit point M, coordsys R = M.coordsys, bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of M (in radians) relatively to 'R'.</documentation></function></asyxml>*/
-  return radians(degrees(M, R, warn));
+ return radians(degrees(M, R, warn));
 }
 
 bool Finite(explicit point z)
 {
-  return abs(z.x) < Infinity && abs(z.y) < Infinity;
+ return abs(z.x) < Infinity && abs(z.y) < Infinity;
 }
 
 /*<asyxml><function type="bool" signature="finite(explicit point)"><code></asyxml>*/
 bool finite(explicit point p)
 {/*<asyxml></code><documentation>Avoid to compute 'finite((pair)(infinite_point))'.</documentation></function></asyxml>*/
-  return finite(p.coordinates);
+ return finite(p.coordinates);
 }
 
 /*<asyxml><function type="real" signature="dot(point,point)"><code></asyxml>*/
 real dot(point A, point B)
 {/*<asyxml></code><documentation>Return the dot product in the coordinate system of 'A'.</documentation></function></asyxml>*/
-  point[] P = standardizecoordsys(A.coordsys, A, B);
-  return P[0].coordsys.dot(P[0].coordinates, P[1].coordinates);
+ point[] P = standardizecoordsys(A.coordsys, A, B);
+ return P[0].coordsys.dot(P[0].coordinates, P[1].coordinates);
 }
 
 /*<asyxml><function type="real" signature="dot(point,explicit pair)"><code></asyxml>*/
@@ -748,33 +748,33 @@
 real dot(point A, explicit pair B)
 {/*<asyxml></code><documentation>Return the dot product in the default coordinate system.
    dot(explicit pair, point) is also defined.</documentation></function></asyxml>*/
-  return dot(locate(A), B);
+ return dot(locate(A), B);
 }
 real dot(explicit pair A, point B)
 {
-  return dot(A, locate(B));
+ return dot(A, locate(B));
 }
 
 /*<asyxml><function type="transforms" signature="rotateO(real)"><code></asyxml>*/
 transform rotateO(real a)
 {/*<asyxml></code><documentation>Rotation around the origin of the current coordinate system.</documentation></function></asyxml>*/
-  return rotate(a, currentcoordsys.O);
+ return rotate(a, currentcoordsys.O);
 }
 
 /*<asyxml><function type="transform" signature="projection(point,point)"><code></asyxml>*/
 transform projection(point A, point B)
 {/*<asyxml></code><documentation>Return the orthogonal projection on the line (AB).</documentation></function></asyxml>*/
-  pair dir = unit(locate(A) - locate(B));
-  pair a = locate(A);
-  real cof = dir.x * a.x + dir.y * a.y;
-  real tx = a.x - dir.x * cof;
-  real txx = dir.x^2;
-  real txy = dir.x * dir.y;
-  real ty = a.y - dir.y * cof;
-  real tyx = txy;
-  real tyy = dir.y^2;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair dir = unit(locate(A) - locate(B));
+ pair a = locate(A);
+ real cof = dir.x * a.x + dir.y * a.y;
+ real tx = a.x - dir.x * cof;
+ real txx = dir.x^2;
+ real txy = dir.x * dir.y;
+ real ty = a.y - dir.y * cof;
+ real tyx = txy;
+ real tyy = dir.y^2;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="projection(point,point,point,point,bool)"><code></asyxml>*/
@@ -782,45 +782,45 @@
 {/*<asyxml></code><documentation>Return the (CD) parallel projection on (AB).
    If 'safe = true' and (AB)//(CD) return the identity.
    If 'safe = false' and (AB)//(CD) return an infinity scaling.</documentation></function></asyxml>*/
-  pair a = locate(A);
-  pair u = unit(locate(B) - locate(A));
-  pair v = unit(locate(D) - locate(C));
-  real c = u.x * a.y - u.y * a.x;
-  real d = (conj(u) * v).y;
-  if (abs(d) < epsgeo) {
-    return safe ? identity() : scale(infinity);
-  }
-  real tx = c * v.x/d;
-  real ty = c * v.y/d;
-  real txx = u.x * v.y/d;
-  real txy = -u.x * v.x/d;
-  real tyx = u.y * v.y/d;
-  real tyy = -u.y * v.x/d;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair a = locate(A);
+ pair u = unit(locate(B) - locate(A));
+ pair v = unit(locate(D) - locate(C));
+ real c = u.x * a.y - u.y * a.x;
+ real d = (conj(u) * v).y;
+ if (abs(d) < epsgeo) {
+   return safe ? identity() : scale(infinity);
+ }
+ real tx = c * v.x/d;
+ real ty = c * v.y/d;
+ real txx = u.x * v.y/d;
+ real txy = -u.x * v.x/d;
+ real tyx = u.y * v.y/d;
+ real tyy = -u.y * v.x/d;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="scale(real,point)"><code></asyxml>*/
 transform scale(real k, point M)
 {/*<asyxml></code><documentation>Homothety.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  return shift(P) * scale(k) * shift(-P);
+ pair P = locate(M);
+ return shift(P) * scale(k) * shift(-P);
 }
 
 /*<asyxml><function type="transform" signature="xscale(real,point)"><code></asyxml>*/
 transform xscale(real k, point M)
 {/*<asyxml></code><documentation>xscale from 'M' relatively to the x - axis of the coordinate system of 'M'.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  real a = degrees(M.coordsys.i);
-  return (shift(P) * rotate(a)) * xscale(k) * (rotate(-a) * shift(-P));
+ pair P = locate(M);
+ real a = degrees(M.coordsys.i);
+ return (shift(P) * rotate(a)) * xscale(k) * (rotate(-a) * shift(-P));
 }
 
 /*<asyxml><function type="transform" signature="yscale(real,point)"><code></asyxml>*/
 transform yscale(real k, point M)
 {/*<asyxml></code><documentation>yscale from 'M' relatively to the y - axis of the coordinate system of 'M'.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  real a = degrees(M.coordsys.j) - 90;
-  return (shift(P) * rotate(a)) * yscale(k) * (rotate(-a) * shift(-P));
+ pair P = locate(M);
+ real a = degrees(M.coordsys.j) - 90;
+ return (shift(P) * rotate(a)) * yscale(k) * (rotate(-a) * shift(-P));
 }
 
 /*<asyxml><function type="transform" signature="scale(real,point,point,point,point,bool)"><code></asyxml>*/
@@ -829,41 +829,41 @@
    (help me for English translation...)
    If 'safe = true' and (AB)//(CD) return the identity.
    If 'safe = false' and (AB)//(CD) return a infinity scaling.</documentation></function></asyxml>*/
-  pair a = locate(A);
-  pair u = unit(locate(B) - locate(A));
-  pair v = unit(locate(D) - locate(C));
-  real c = u.x * a.y - u.y * a.x;
-  real d = (conj(u) * v).y;
-  real d = (conj(u) * v).y;
-  if (abs(d) < epsgeo) {
-    return safe ? identity() : scale(infinity);
-  }
-  real tx = (1 - k) * c * v.x/d;
-  real ty = (1 - k) * c * v.y/d;
-  real txx = (1 - k) * u.x * v.y/d + k;
-  real txy = (k - 1) * u.x * v.x/d;
-  real tyx = (1 - k) * u.y * v.y/d;
-  real tyy = (k - 1) * u.y * v.x/d + k;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair a = locate(A);
+ pair u = unit(locate(B) - locate(A));
+ pair v = unit(locate(D) - locate(C));
+ real c = u.x * a.y - u.y * a.x;
+ real d = (conj(u) * v).y;
+ real d = (conj(u) * v).y;
+ if (abs(d) < epsgeo) {
+   return safe ? identity() : scale(infinity);
+ }
+ real tx = (1 - k) * c * v.x/d;
+ real ty = (1 - k) * c * v.y/d;
+ real txx = (1 - k) * u.x * v.y/d + k;
+ real txy = (k - 1) * u.x * v.x/d;
+ real tyx = (1 - k) * u.y * v.y/d;
+ real tyy = (k - 1) * u.y * v.x/d + k;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="scaleO(real)"><code></asyxml>*/
 transform scaleO(real x)
 {/*<asyxml></code><documentation>Homothety from the origin of the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0));
+ return scale(x, (0, 0));
 }
 
 /*<asyxml><function type="transform" signature="xscaleO(real)"><code></asyxml>*/
 transform xscaleO(real x)
 {/*<asyxml></code><documentation>xscale from the origin and relatively to the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0), (0, 1), (0, 0), (1, 0));
+ return scale(x, (0, 0), (0, 1), (0, 0), (1, 0));
 }
 
 /*<asyxml><function type="transform" signature="yscaleO(real)"><code></asyxml>*/
 transform yscaleO(real x)
 {/*<asyxml></code><documentation>yscale from the origin and relatively to the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0), (1, 0), (0, 0), (0, 1));
+ return scale(x, (0, 0), (1, 0), (0, 0), (0, 1));
 }
 
 /*<asyxml><struct signature="vector"><code></asyxml>*/
@@ -876,7 +876,7 @@
 /*<asyxml><operator type = "point" signature="cast(vector)"><code></asyxml>*/
 point operator cast(vector v)
 {/*<asyxml></code><documentation>Cast vector 'v' to point 'M' so that OM = v.</documentation></operator></asyxml>*/
-  return v.v;
+ return v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="cast(pair)"><code></asyxml>*/
@@ -883,9 +883,9 @@
 vector operator cast(pair v)
 {/*<asyxml></code><documentation>Cast pair to vector relatively to the current coordinate
    system 'currentcoordsys'.</documentation></operator></asyxml>*/
-  vector ov;
-  ov.v = point(currentcoordsys, v);
-  return ov;
+ vector ov;
+ ov.v = point(currentcoordsys, v);
+ return ov;
 }
 
 /*<asyxml><operator type = "vector" signature="cast(explicit point)"><code></asyxml>*/
@@ -892,29 +892,29 @@
 vector operator cast(explicit point v)
 {/*<asyxml></code><documentation>A point can be interpreted like a vector using the code
    '(vector)a_point'.</documentation></operator></asyxml>*/
-  vector ov;
-  ov.v = v;
-  return ov;
+ vector ov;
+ ov.v = v;
+ return ov;
 }
 
 /*<asyxml><operator type = "pair" signature="cast(explicit vector)"><code></asyxml>*/
 pair operator cast(explicit vector v)
 {/*<asyxml></code><documentation>Cast vector to pair (the coordinates of 'v' in the default coordinate system).</documentation></operator></asyxml>*/
-  return locate(v.v) - v.v.coordsys.O;
+ return locate(v.v) - v.v.coordsys.O;
 }
 
 /*<asyxml><operator type = "align" signature="cast(vector)"><code></asyxml>*/
 align operator cast(vector v)
 {/*<asyxml></code><documentation>Cast vector to align.</documentation></operator></asyxml>*/
-  return (pair)v;
+ return (pair)v;
 }
 
 /*<asyxml><function type="vector" signature="vector(coordsys, pair)"><code></asyxml>*/
 vector vector(coordsys R = currentcoordsys, pair v)
 {/*<asyxml></code><documentation>Return the vector of 'R' which has the coordinates 'v'.</documentation></function></asyxml>*/
-  vector ov;
-  ov.v = point(R, v);
-  return ov;
+ vector ov;
+ ov.v = point(R, v);
+ return ov;
 }
 
 /*<asyxml><function type="vector" signature="vector(point)"><code></asyxml>*/
@@ -921,76 +921,76 @@
 vector vector(point M)
 {/*<asyxml></code><documentation>Return the vector OM, where O is the origin of the coordinate system of 'M'.
    Useful to write 'vector(P - M);' instead of '(vector)(P - M)'.</documentation></function></asyxml>*/
-  return M;
+ return M;
 }
 
 /*<asyxml><function type="point" signature="point(explicit vector)"><code></asyxml>*/
 point point(explicit vector u)
 {/*<asyxml></code><documentation>Return the point M so that OM = u, where O is the origin of the coordinate system of 'u'.</documentation></function></asyxml>*/
-  return u.v;
+ return u.v;
 }
 
 /*<asyxml><function type="pair" signature="locate(explicit vector)"><code></asyxml>*/
 pair locate(explicit vector v)
 {/*<asyxml></code><documentation>Return the coordinates of 'v' in the default coordinate system (like casting vector to pair).</documentation></function></asyxml>*/
-  return (pair)v;
+ return (pair)v;
 }
 
 /*<asyxml><function type="void" signature="show(Label,pen,arrowbar)"><code></asyxml>*/
 void show(Label L, vector v, pen p = currentpen, arrowbar arrow = Arrow)
 {/*<asyxml></code><documentation>Draw the vector v (from the origin of its coordinate system).</documentation></function></asyxml>*/
-  coordsys R = v.v.coordsys;
-  draw(L, R.O--v.v, p, arrow);
+ coordsys R = v.v.coordsys;
+ draw(L, R.O--v.v, p, arrow);
 }
 
 /*<asyxml><function type="vector" signature="changecoordsys(coordsys,vector)"><code></asyxml>*/
 vector changecoordsys(coordsys R, vector v)
 {/*<asyxml></code><documentation>Return the vector 'v' relatively to coordinate system 'R'.</documentation></function></asyxml>*/
-  vector ov;
-  ov.v = point(R, (locate(v) + R.O)/R);
-  return ov;
+ vector ov;
+ ov.v = point(R, (locate(v) + R.O)/R);
+ return ov;
 }
 
 /*<asyxml><operator type = "vector" signature="*(real,explicit vector)"><code></asyxml>*/
 vector operator *(real x, explicit vector v)
 {/*<asyxml></code><documentation>Provide real * vector.</documentation></operator></asyxml>*/
-  return x * v.v;
+ return x * v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="/(explicit vector,real)"><code></asyxml>*/
 vector operator /(explicit vector v, real x)
 {/*<asyxml></code><documentation>Provide vector/real</documentation></operator></asyxml>*/
-  return v.v/x;
+ return v.v/x;
 }
 
 /*<asyxml><operator type = "vector" signature="*(transform t,explicit vector)"><code></asyxml>*/
 vector operator *(transform t, explicit vector v)
 {/*<asyxml></code><documentation>Provide transform * vector.</documentation></operator></asyxml>*/
-  return t * v.v;
+ return t * v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="*(explicit point,explicit vector)"><code></asyxml>*/
 vector operator *(explicit point M, explicit vector v)
 {/*<asyxml></code><documentation>Provide point * vector</documentation></operator></asyxml>*/
-  return M * v.v;
+ return M * v.v;
 }
 
 /*<asyxml><operator type = "point" signature="+(explicit point,explicit vector)"><code></asyxml>*/
 point operator +(point M, explicit vector v)
 {/*<asyxml></code><documentation>Return 'M' shifted by 'v'.</documentation></operator></asyxml>*/
-  return shift(locate(v)) * M;
+ return shift(locate(v)) * M;
 }
 
 /*<asyxml><operator type = "point" signature="-(explicit point,explicit vector)"><code></asyxml>*/
 point operator -(point M, explicit vector v)
 {/*<asyxml></code><documentation>Return 'M' shifted by '-v'.</documentation></operator></asyxml>*/
-  return shift(-locate(v)) * M;
+ return shift(-locate(v)) * M;
 }
 
 /*<asyxml><operator type = "vector" signature="-(explicit vector)"><code></asyxml>*/
 vector operator -(explicit vector v)
 {/*<asyxml></code><documentation>Provide -v.</documentation></operator></asyxml>*/
-  return -v.v;
+ return -v.v;
 }
 
 /*<asyxml><operator type = "point" signature="+(explicit pair,explicit vector)"><code></asyxml>*/
@@ -998,7 +998,7 @@
 {/*<asyxml></code><documentation>The pair 'm' is supposed to be the coordinates of
    a point in the current coordinates system 'currentcoordsys'.
    Return this point shifted by the vector 'v'.</documentation></operator></asyxml>*/
-  return locate(m) + v;
+ return locate(m) + v;
 }
 
 /*<asyxml><operator type = "point" signature="-(explicit pair,explicit vector)"><code></asyxml>*/
@@ -1006,7 +1006,7 @@
 {/*<asyxml></code><documentation>The pair 'm' is supposed to be the coordinates of
    a point in the current coordinates system 'currentcoordsys'.
    Return this point shifted by the vector '-v'.</documentation></operator></asyxml>*/
-  return m + (-v);
+ return m + (-v);
 }
 
 /*<asyxml><operator type = "vector" signature="+(explicit vector,explicit vector)"><code></asyxml>*/
@@ -1014,9 +1014,9 @@
 {/*<asyxml></code><documentation>Provide vector + vector.
    If the two vector haven't the same coordinate system, the returned
    vector is relative to the default coordinate system (without warning).</documentation></operator></asyxml>*/
-  coordsys R = v1.v.coordsys;
-  if(samecoordsys(false, v1, v2)){R = defaultcoordsys;}
-  return vector(R, (locate(v1) + locate(v2))/R);
+ coordsys R = v1.v.coordsys;
+ if(samecoordsys(false, v1, v2)){R = defaultcoordsys;}
+ return vector(R, (locate(v1) + locate(v2))/R);
 }
 
 /*<asyxml><operator type = "vector" signature="-(explicit vector, explicit vector)"><code></asyxml>*/
@@ -1024,31 +1024,31 @@
 {/*<asyxml></code><documentation>Provide vector - vector.
    If the two vector haven't the same coordinate system, the returned
    vector is relative to the default coordinate system (without warning).</documentation></operator></asyxml>*/
-  return v1 + (-v2);
+ return v1 + (-v2);
 }
 
 /*<asyxml><operator type = "bool" signature="==(explicit vector,explicit vector)"><code></asyxml>*/
 bool operator ==(explicit vector u, explicit vector v)
-{/*<asyxml></code><documentation>Return true iff |u - v|<EPS.</documentation></operator></asyxml>*/
-  return abs(u - v) < EPS;
-}
+  {/*<asyxml></code><documentation>Return true iff |u - v|<EPS.</documentation></operator></asyxml>*/
+   return abs(u - v) < EPS;
+  }
 
 /*<asyxml><function type="bool" signature="collinear(vector,vector)"><code></asyxml>*/
 bool collinear(vector u, vector v)
 {/*<asyxml></code><documentation>Return 'true' iff the vectors 'u' and 'v' are collinear.</documentation></function></asyxml>*/
-  return abs(ypart((conj((pair)u) * (pair)v))) < EPS;
+ return abs(ypart((conj((pair)u) * (pair)v))) < EPS;
 }
 
 /*<asyxml><function type="vector" signature="unit(point)"><code></asyxml>*/
 vector unit(point M)
 {/*<asyxml></code><documentation>Return the unit vector according to the modulus of its coordinate system.</documentation></function></asyxml>*/
-  return M/abs(M);
+ return M/abs(M);
 }
 
 /*<asyxml><function type="vector" signature="unit(vector)"><code></asyxml>*/
 vector unit(vector u)
 {/*<asyxml></code><documentation>Return the unit vector according to the modulus of its coordinate system.</documentation></function></asyxml>*/
-  return u.v/abs(u.v);
+ return u.v/abs(u.v);
 }
 
 /*<asyxml><function type="real" signature="degrees(vector,coordsys,bool)"><code></asyxml>*/
@@ -1056,7 +1056,7 @@
              coordsys R = v.v.coordsys,
              bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of 'v' (in degrees) relatively to 'R'.</documentation></function></asyxml>*/
-  return (degrees(locate(v), warn) - degrees(R.i))%360;
+ return (degrees(locate(v), warn) - degrees(R.i))%360;
 }
 
 /*<asyxml><function type="real" signature="angle(vector,coordsys,bool)"><code></asyxml>*/
@@ -1064,13 +1064,13 @@
            coordsys R = v.v.coordsys,
            bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of 'v' (in radians) relatively to 'R'.</documentation></function></asyxml>*/
-  return radians(degrees(v, R, warn));
+ return radians(degrees(v, R, warn));
 }
 
 /*<asyxml><function type="vector" signature="conj(explicit vector)"><code></asyxml>*/
 vector conj(explicit vector u)
 {/*<asyxml></code><documentation>Conjugate.</documentation></function></asyxml>*/
-  return conj(u.v);
+ return conj(u.v);
 }
 
 /*<asyxml><function type="transform" signature="rotate(explicit vector)"><code></asyxml>*/
@@ -1079,7 +1079,7 @@
    This is useful for rotating text along a line in the direction dir.
    rotate(explicit point dir) is also defined.
    </documentation></function></asyxml>*/
-  return rotate(locate(dir));
+ return rotate(locate(dir));
 }
 transform rotate(explicit point dir){return rotate(locate(vector(dir)));}
 // *......................COORDINATES......................*
@@ -1311,7 +1311,7 @@
   g = margin(g, p).g;
   draw(apic, g, p);
   if(filltype != NoFill) filltype.fill(apic, (relpoint(g, 0) - relpoint(g, 0.5)+
-                                             relpoint(g, 1))--g--cycle, p + solid);
+                                              relpoint(g, 1))--g--cycle, p + solid);
   add(pic, apic, locate(z));
 }
 
@@ -1360,7 +1360,7 @@
   pair Ap = A, Bp = B, Op = O;
   pair dir = Ap - Op;
   real a1 = degrees(dir);
-  pair align = rotate(-a1) * unit(dir(Op--Ap, Op--Bp));
+  pair align = rotate(-a1) * dir(Op--Ap, Op--Bp);
   perpendicularmark(pic = pic, z = O, align = align,
                     dir = dir, size = size, p = p,
                     margin = margin, filltype = filltype);
@@ -1700,16 +1700,16 @@
 
 /*<asyxml><operator type = "bool" signature="==(line,line)"><code></asyxml>*/
 bool operator ==(line l1, line l2)
-{/*<asyxml></code><documentation>Provide the test 'line == line'.</documentation></operator></asyxml>*/
-  return (collinear(l1.u, l2.u) &&
-          abs(ypart((locate(l1.A) - locate(l1.B))/(locate(l1.A) - locate(l2.B)))) < epsgeo &&
-          l1.extendA == l2.extendA && l1.extendB == l2.extendB);
-}
+  {/*<asyxml></code><documentation>Provide the test 'line == line'.</documentation></operator></asyxml>*/
+   return (collinear(l1.u, l2.u) &&
+           abs(ypart((locate(l1.A) - locate(l1.B))/(locate(l1.A) - locate(l2.B)))) < epsgeo &&
+           l1.extendA == l2.extendA && l1.extendB == l2.extendB);
+  }
 
 /*<asyxml><operator type = "bool" signature="!=(line,line)"><code></asyxml>*/
 bool operator !=(line l1, line l2)
 {/*<asyxml></code><documentation>Provide the test 'line != line'.</documentation></operator></asyxml>*/
-  return !(l1 == l2);
+ return !(l1 == l2);
 }
 
 /*<asyxml><operator type = "bool" signature="@(point,line)"><code></asyxml>*/
@@ -1716,33 +1716,33 @@
 bool operator @(point m, line l)
 {/*<asyxml></code><documentation>Provide the test 'point @ line'.
    Return true iff 'm' is on the 'l'.</documentation></operator></asyxml>*/
-  point M = changecoordsys(l.A.coordsys, m);
-  if (abs(l.a * M.x + l.b * M.y + l.c) >= epsgeo) return false;
-  if (l.extendA && l.extendB) return true;
-  if (!l.extendA && !l.extendB) return between(l.A, M, l.B);
-  if (l.extendA) return sameside(M, l.A, l.B);
-  return sameside(M, l.B, l.A);
+ point M = changecoordsys(l.A.coordsys, m);
+ if (abs(l.a * M.x + l.b * M.y + l.c) >= epsgeo) return false;
+ if (l.extendA && l.extendB) return true;
+ if (!l.extendA && !l.extendB) return between(l.A, M, l.B);
+ if (l.extendA) return sameside(M, l.A, l.B);
+ return sameside(M, l.B, l.A);
 }
 
 /*<asyxml><function type="coordsys" signature="coordsys(line)"><code></asyxml>*/
 coordsys coordsys(line l)
 {/*<asyxml></code><documentation>Return the coordinate system in which 'l' is defined.</documentation></function></asyxml>*/
-  return l.A.coordsys;
+ return l.A.coordsys;
 }
 
 /*<asyxml><function type="line" signature="reverse(line)"><code></asyxml>*/
 line reverse(line l)
 {/*<asyxml></code><documentation>Permute the points 'A' and 'B' of 'l' and so its orientation.</documentation></function></asyxml>*/
-  return line(l.B, l.extendB, l.A, l.extendA);
+ return line(l.B, l.extendB, l.A, l.extendA);
 }
 
 /*<asyxml><function type="line" signature="extend(line)"><code></asyxml>*/
 line extend(line l)
 {/*<asyxml></code><documentation>Return the infinite line passing through 'l.A' and 'l.B'.</documentation></function></asyxml>*/
-  line ol = l.copy();
-  ol.extendA = true;
-  ol.extendB = true;
-  return ol;
+ line ol = l.copy();
+ ol.extendA = true;
+ ol.extendB = true;
+ return ol;
 }
 
 /*<asyxml><function type="line" signature="complementary(explicit line)"><code></asyxml>*/
@@ -1749,31 +1749,31 @@
 line complementary(explicit line l)
 {/*<asyxml></code><documentation>Return the complementary of a half-line with respect of
    the full line 'l'.</documentation></function></asyxml>*/
-  if (l.extendA && l.extendB)
-    abort("complementary: the parameter is not a half-line.");
-  point origin = l.extendA ? l.B : l.A;
-  point ptdir = l.extendA ?
-    rotate(180, l.B) * l.A : rotate(180, l.A) * l.B;
-  return line(origin, false, ptdir);
+ if (l.extendA && l.extendB)
+   abort("complementary: the parameter is not a half-line.");
+ point origin = l.extendA ? l.B : l.A;
+ point ptdir = l.extendA ?
+ rotate(180, l.B) * l.A : rotate(180, l.A) * l.B;
+ return line(origin, false, ptdir);
 }
 
 /*<asyxml><function type="line[]" signature="complementary(explicit segment)"><code></asyxml>*/
 line[] complementary(explicit segment s)
 {/*<asyxml></code><documentation>Return the two half-lines of origin 's.A' and 's.B' respectively.</documentation></function></asyxml>*/
-  line[] ol = new line[2];
-  ol[0] = complementary(line(s.A, false, s.B));
-  ol[1] = complementary(line(s.A, s.B, false));
-  return ol;
+ line[] ol = new line[2];
+ ol[0] = complementary(line(s.A, false, s.B));
+ ol[1] = complementary(line(s.A, s.B, false));
+ return ol;
 }
 
 /*<asyxml><function type="line" signature="Ox(coordsys)"><code></asyxml>*/
 line Ox(coordsys R = currentcoordsys)
 {/*<asyxml></code><documentation>Return the x-axis of 'R'.</documentation></function></asyxml>*/
-  return line(point(R, (0, 0)), point(R, E));
+ return line(point(R, (0, 0)), point(R, E));
 }
 /*<asyxml><constant type = "line" signature="Ox"><code></asyxml>*/
 restricted line Ox = Ox();/*<asyxml></code><documentation>the x-axis of
-                          the default coordinate system.</documentation></constant></asyxml>*/
+                            the default coordinate system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="Oy(coordsys)"><code></asyxml>*/
 line Oy(coordsys R = currentcoordsys)
@@ -1782,7 +1782,7 @@
 }
 /*<asyxml><constant type = "line" signature="Oy"><code></asyxml>*/
 restricted line Oy = Oy();/*<asyxml></code><documentation>the y-axis of
-                          the default coordinate system.</documentation></constant></asyxml>*/
+                            the default coordinate system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="line(real,point)"><code></asyxml>*/
 line line(real a, point A = point(currentcoordsys, (0, 0)))
@@ -1826,7 +1826,7 @@
 }
 /*<asyxml><constant type = "line" signature="vline"><code></asyxml>*/
 restricted line vline = vline();/*<asyxml></code><documentation>The vertical line in the current coordinate system passing
-                                through the origin of this system.</documentation></constant></asyxml>*/
+                                  through the origin of this system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="hline(coordsys)"><code></asyxml>*/
 line hline(coordsys R = currentcoordsys)
@@ -1837,7 +1837,7 @@
 }
 /*<asyxml><constant type = "line" signature="hline"><code></asyxml>*/
 line hline = hline();/*<asyxml></code><documentation>The horizontal line in the current coordinate system passing
-                     through the origin of this system.</documentation></constant></asyxml>*/
+                       through the origin of this system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="changecoordsys(coordsys,line)"><code></asyxml>*/
 line changecoordsys(coordsys R, line l)
@@ -2358,11 +2358,11 @@
 bqe changecoordsys(coordsys R, bqe bqe)
 {/*<asyxml></code><documentation>Returns the bivariate quadratic equation relatively to 'R'.</documentation></function></asyxml>*/
   pair i = coordinates(changecoordsys(R, vector(defaultcoordsys,
-                                             bqe.coordsys.i)));
+                                                bqe.coordsys.i)));
   pair j = coordinates(changecoordsys(R, vector(defaultcoordsys,
-                                             bqe.coordsys.j)));
+                                                bqe.coordsys.j)));
   pair O = coordinates(changecoordsys(R, point(defaultcoordsys,
-                                            bqe.coordsys.O)));
+                                               bqe.coordsys.O)));
   real a = bqe.a[0], b = bqe.a[1], c = bqe.a[2], d = bqe.a[3], f = bqe.a[4], g = bqe.a[5];
   real ux = i.x, uy = i.y;
   real vx = j.x, vy = j.y;
@@ -2372,14 +2372,14 @@
   real bpp = (-2 * a * vx * vy + b * ux * vy + b * uy * vx - 2 * c * ux * uy)/D^2;
   real cp = (a * vx^2 - b * ux * vx + c * ux^2)/D^2;
   real dp = (-2a * ox * vy^2 + 2a * oy * vx * vy + 2b * ox * uy * vy-
-           b * oy * ux * vy - b * oy * uy * vx - 2c * ox * uy^2 + 2c * oy * uy * ux)/D^2+
+             b * oy * ux * vy - b * oy * uy * vx - 2c * ox * uy^2 + 2c * oy * uy * ux)/D^2+
     (d * vy - f * uy)/D;
   real fp = (2a * ox * vx * vy - b * ox * ux * vy - 2a * oy * vx^2-
-           b * ox * uy * vx + 2 * b * oy * ux * vx + 2c * ox * ux * uy - 2c * oy * ux^2)/D^2+
+             b * ox * uy * vx + 2 * b * oy * ux * vx + 2c * ox * ux * uy - 2c * oy * ux^2)/D^2+
     (f * ux - d * vx)/D;
   g = (a * ox^2 * vy^2 - 2a * ox * oy * vx * vy - b * ox^2 * uy * vy + b * ox * oy * ux * vy+
-     a * oy^2 * vx^2 + b * ox * oy * uy * vx - b * oy^2 * ux * vx + c * ox^2 * uy^2-
-     2 * c * ox * oy * ux * uy + c * oy^2 * ux^2)/D^2+
+       a * oy^2 * vx^2 + b * ox * oy * uy * vx - b * oy^2 * ux * vx + c * ox^2 * uy^2-
+       2 * c * ox * oy * ux * uy + c * oy^2 * ux^2)/D^2+
     (d * oy * vx + f * ox * uy - d * ox * vy - f * oy * ux)/D + g;
   bqe obqe;
   obqe.a = approximate(new real[] {ap, bpp, cp, dp, fp, g});
@@ -2636,7 +2636,7 @@
     this.b = a * sqrt(this.e^2 - 1);
     this.p = a * (this.e^2 - 1);
     point A = this.C + (a^2/this.c) * unit(P[0]-this.C);
-    this.D1 = line(A, A + rotateO(90) * unit(A - this.C));
+    this.D1 = line(A, A + rotate(90,this.C.coordsys.O) * unit(A - this.C));
     this.D2 = reverse(rotate(180, C) * D1);
     this.V1 = C + a * unit(F1 - C);
     this.V2 = C + a * unit(F2 - C);
@@ -3073,8 +3073,8 @@
   real gle = degrees(l);
   coordsys Rp = cartesiansystem(R.O, rotate(gle) * R.i, rotate(gle) * R.j);
   pts = new pair[] {coordinates(changecoordsys(Rp, M1)),
-                  coordinates(changecoordsys(Rp, M2)),
-                  coordinates(changecoordsys(Rp, M3))};
+                    coordinates(changecoordsys(Rp, M2)),
+                    coordinates(changecoordsys(Rp, M3))};
   real[][] M;
   real[] x;
   for (int i = 0; i < 3; ++i) {
@@ -3560,10 +3560,10 @@
   path g;
   if(co.e < 1)
     g = arcfromcenter((ellipse)co, angle1,
-                    angle2, direction, n);
+                      angle2, direction, n);
   else if(co.e > 1)
     g = arcfromcenter((hyperbola)co, angle1,
-                    angle2, n, direction);
+                      angle2, n, direction);
   else abort("arcfromcenter: does not exist for a parabola.");
   return g;
 }
@@ -3590,8 +3590,8 @@
   }
   real[] coef = solve(M, x);
   bqe bqe = changecoordsys(coordsys(el),
-                         bqe(defaultcoordsys,
-                             1, coef[0], coef[1], coef[2], coef[3], coef[4]));
+                           bqe(defaultcoordsys,
+                               1, coef[0], coef[1], coef[2], coef[3], coef[4]));
   bqe.a = approximate(bqe.a);
   return bqe;
 }
@@ -4038,8 +4038,8 @@
     // given form the center of the ellipse.
     real gle = atan(el.a * tan(radians(a))/el.b)+
       pi * (((a%90 == 0 && a != 0) ? floor(a/90) - 1 : floor(a/90)) -
-          ((a%180 == 0) ? 0 : floor(a/180)) -
-          (a%360 == 0 ? floor(a/(360)) : 0));
+            ((a%180 == 0) ? 0 : floor(a/180)) -
+            (a%360 == 0 ? floor(a/(360)) : 0));
     /* // Uncomment to visualize the used branches
        unitsize(2cm, 1cm);
        import graph;
@@ -4076,7 +4076,7 @@
 {/*<asyxml></code><documentation>Return the arclength from 180 to 'angle' given from focus in the
    canonical coordinate system of 'p'.</documentation></function></asyxml>*/
   real a = p.a; /* In canonicalcartesiansystem(p) the equation of p
-                 is x = y^2/(4a) */
+                   is x = y^2/(4a) */
   // integrate(sqrt(1 + (x/(2 * a))^2), x);
   real S(real t){return 0.5 * t * sqrt(1 + t^2/(4 * a^2)) + a * asinh(t/(2 * a));}
   real R(real gle){return 2 * a/(1 - Cos(gle));}
@@ -4110,7 +4110,7 @@
   real x;/*<asyxml></code><documentation>The abscissa value.</documentation></property><property type = "int" signature="system"><code></asyxml>*/
   int system;/*<asyxml></code><documentation>0 = relativesystem; 1 = curvilinearsystem; 2 = angularsystem; 3 = nodesystem</documentation></property><property type = "polarconicroutine" signature="polarconicroutine"><code></asyxml>*/
   polarconicroutine polarconicroutine = fromCenter;/*<asyxml></code><documentation>The routine used with angular system and two foci conic section.
-                                                   Possible values are 'formCenter' and 'formFocus'.</documentation></property></asyxml>*/
+                                                     Possible values are 'formCenter' and 'formFocus'.</documentation></property></asyxml>*/
   /*<asyxml><method type = "abscissa" signature="copy()"><code></asyxml>*/
   abscissa copy()
   {/*<asyxml></code><documentation>Return a copy of this abscissa.</documentation></method></asyxml>*/
@@ -4800,7 +4800,7 @@
   restricted  real angle1, angle2;/*<asyxml></code><documentation>Values (in degrees) in ]-360, 360[.</documentation></property><property type = "bool" signature="direction"><code></asyxml>*/
   bool direction = CCW;/*<asyxml></code><documentation>The arc will be drawn from 'angle1' to 'angle2' rotating in the direction 'direction'.</documentation></property><property type = "polarconicroutine" signature="polarconicroutine"><code></asyxml>*/
   polarconicroutine polarconicroutine = currentpolarconicroutine;/*<asyxml></code><documentation>The routine to which the angles refer.
-                                                                 If 'el' is a circle 'fromCenter' is always used.</documentation></property></asyxml>*/
+                                                                   If 'el' is a circle 'fromCenter' is always used.</documentation></property></asyxml>*/
 
   /*<asyxml><method type = "void" signature="setangles(real,real,real)"><code></asyxml>*/
   void setangles(real a0, real a1, real a2)
@@ -6478,7 +6478,7 @@
     coordsys Rc = cartesiansystem(c.C, (1, 0), (0, 1));
     line ll = changecoordsys(Rc, l);
     pair[] P = intersectionpoints(ll.A.coordinates, ll.B.coordinates,
-                                1, 0, 1, 0, 0, -c.r^2);
+                                  1, 0, 1, 0, 0, -c.r^2);
     for (int i = 0; i < P.length; ++i) {
       point inter = changecoordsys(R, point(Rc, P[i]));
       if(inter @ l) op.push(inter);
@@ -6518,7 +6518,7 @@
     coordsys Rc = canonicalcartesiansystem(el);
     line ll = changecoordsys(Rc, l);
     pair[] P = intersectionpoints(ll.A.coordinates, ll.B.coordinates,
-                                1/el.a^2, 0, 1/el.b^2, 0, 0, -1);
+                                  1/el.a^2, 0, 1/el.b^2, 0, 0, -1);
     for (int i = 0; i < P.length; ++i) {
       point inter = changecoordsys(R, point(Rc, P[i]));
       if(inter @ l) op.push(inter);
@@ -6575,7 +6575,7 @@
   point[] op;
   coordsys R = coordsys(h);
   point A = intersectionpoint(l, h.A1), B = intersectionpoint(l, h.A2);
-  point M = midpoint(segment(A, B));
+  point M = 0.5*(A + B);
   bool tgt = Finite(M) ? M @ h : false;
   if(tgt) {
     if(M @ l) op.push(M);
@@ -6644,7 +6644,7 @@
     if(abs(b[4]) > e) {
       real D=b[4]^2;
       c=new real[] {(a[0]*b[4]^2+a[2]*b[3]^2+
-                       (-2*a[2]*a[3])*b[3]+a[2]*a[3]^2)/D,
+                     (-2*a[2]*a[3])*b[3]+a[2]*a[3]^2)/D,
                     -((-2*a[2]*b[3]+2*a[2]*a[3])*b[5]-a[3]*b[4]^2+
                       (2*a[2]*a[5])*b[3])/D,a[2]*(a[5]-b[5])^2/D+a[5]};
       x=quadraticroots(c[0],c[1],c[2]);

Modified: trunk/Master/texmf-dist/asymptote/graph.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/graph.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/graph.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -42,14 +42,14 @@
     return x-skip;
   }
   real Tinv(real x) {
-    if(x <= a) return x; 
-    return x+skip; 
+    if(x <= a) return x;
+    return x+skip;
   }
   return scaleT(T,Tinv,logarithmic=false,automin,automax);
 }
 
 // A "broken" logarithmic axis omitting the segment [a,b], where a and b are
-// automatically rounded to the nearest integral power of the base.  
+// automatically rounded to the nearest integral power of the base.
 scaleT BrokenLog(real a, real b, bool automin=false, bool automax=automin)
 {
   real A=round(Log.T(a));
@@ -92,7 +92,7 @@
         Linear(zautoscale,zautoscale));
 }
 
-struct scientific 
+struct scientific
 {
   int sign;
   real mantissa;
@@ -108,7 +108,7 @@
 }
 
 // Convert x to scientific notation
-scientific scientific(real x) 
+scientific scientific(real x)
 {
   scientific s;
   s.sign=sgn(x);
@@ -154,7 +154,7 @@
 
 real upscale(real b, real a)
 {
-  if(b <= 5) b=5; 
+  if(b <= 5) b=5;
   else if (b > 10 && a >= 0 && b <= 12) b=12;
   else if (b > 10 && (a >= 0 || 15 % -a == 0) && b <= 15) b=15;
   else b=ceil(b/10)*10;
@@ -182,7 +182,7 @@
     if(Min > 0) {Min=0; Max *= 2;}
     else {Min *= 2; Max=0;}
   }
-  
+
   int sign;
   if(Min < 0 && Max <= 0) {real temp=-Min; Min=-Max; Max=temp; sign=-1;}
   else sign=1;
@@ -203,7 +203,7 @@
 
   while((b-a)*10.0^exp > 10*(Max-Min))
     zoom();
-  
+
   real bsave=b;
   if(b-a > (a >= 0 ? 8 : 6)) {
     b=upscale(b,a);
@@ -211,11 +211,11 @@
       if(a <= 5) a=0; else a=floor(a/10)*10;
     } else a=-upscale(-a,-1);
   }
-  
+
   // Redo b in case the value of a has changed
   if(bsave-a > (a >= 0 ? 8 : 6))
     b=upscale(bsave,a);
-  
+
   if(sign == -1) {real temp=-a; a=-b; b=temp;}
   real Scale=10.0^exp;
   m.min=scale.T(a*Scale);
@@ -266,7 +266,7 @@
 
 ticklabel LogFormat=LogFormat(10);
 ticklabel DefaultLogFormat=DefaultLogFormat(10);
-  
+
 // The default direction specifier.
 pair zero(real) {return 0;}
 
@@ -275,7 +275,7 @@
   autoscaleT S;        // Autoscaling transformation.
   pair dir(real t);    // Absolute 2D tick direction.
   triple dir3(real t); // Absolute 3D tick direction.
-  real time(real v);   // Returns the time corresponding to the value v. 
+  real time(real v);   // Returns the time corresponding to the value v.
   ticklocate copy() {
     ticklocate T=new ticklocate;
     T.a=a;
@@ -289,7 +289,7 @@
 }
 
 autoscaleT defaultS;
-  
+
 typedef real valuetime(real);
 
 valuetime linear(scalefcn S=identity, real Min, real Max)
@@ -300,7 +300,7 @@
 
 ticklocate ticklocate(real a, real b, autoscaleT S=defaultS,
                       real tickmin=-infinity, real tickmax=infinity,
-                      real time(real)=null, pair dir(real)=zero) 
+                      real time(real)=null, pair dir(real)=zero)
 {
   if((valuetime) time == null) time=linear(S.T(),a,b);
   ticklocate locate;
@@ -313,13 +313,13 @@
   locate.dir=dir;
   return locate;
 }
-                             
+
 private struct locateT {
   real t;       // tick location time
   pair Z;       // tick location in frame coordinates
   pair pathdir; // path direction in frame coordinates
   pair dir;     // tick direction in frame coordinates
-  
+
   void dir(transform T, path g, ticklocate locate, real t) {
     pathdir=unit(shiftless(T)*dir(g,t));
     pair Dir=locate.dir(t);
@@ -333,7 +333,7 @@
   }
 }
 
-pair ticklabelshift(pair align, pen p=currentpen) 
+pair ticklabelshift(pair align, pen p=currentpen)
 {
   return 0.25*unit(align)*labelmargin(p);
 }
@@ -347,7 +347,7 @@
     locate2.calc(T,g2,locate,val);
     draw(f,locate1.Z--locate2.Z,p);
   } else
-    if(sign == 0) 
+    if(sign == 0)
       draw(f,locate1.Z-Size*locate1.dir--locate1.Z+Size*locate1.dir,p);
     else
       draw(f,locate1.Z--locate1.Z+Size*sign*locate1.dir,p);
@@ -388,10 +388,10 @@
     label(d,F.T*baseline(s,baselinetemplate),locate1.Z+shift,align,F.p,
           F.filltype);
   return locate1.pathdir;
-}  
+}
 
 // Add axis label L to frame f.
-void labelaxis(frame f, transform T, Label L, path g, 
+void labelaxis(frame f, transform T, Label L, path g,
                ticklocate locate=null, int sign=1, bool ticklabels=false)
 {
   Label L0=L.copy();
@@ -403,7 +403,7 @@
     locateT locate1;
     locate1.dir(T,g,locate,t);
     L0.align(L0.align,unit(-sgn(dot(sign*locate1.dir,perp))*perp));
-  }                  
+  }
   pair align=L0.align.dir;
   if(L0.align.relative) align *= -perp;
   pair alignperp=dot(align,perp)*perp;
@@ -477,7 +477,7 @@
 
 // Check the tick coverage of a logarithmic axis.
 bool logaxiscoverage(int N, transform T, path g, ticklocate locate, pair side,
-                     int sign, real Size, Label F, ticklabel ticklabel, 
+                     int sign, real Size, Label F, ticklabel ticklabel,
                      real limit, int first, int last)
 {
   bool loop=cyclic(g);
@@ -525,7 +525,7 @@
   int n=0;
 
   bool Fixed=find(a >= 1e4-epsilon | (a > 0 & a <= 1e-4-epsilon)) < 0;
-  
+
   string Format=defaultformat(4,fixed=Fixed);
 
   if(Fixed && n < 4) {
@@ -576,13 +576,13 @@
   if(size == 0) size=ticksize;
   F=F.copy();
   F.p(p);
-    
+
   if(F.align.dir != 0) side=F.align.dir;
   else if(side == 0) side=((sign == 1) ? left : right);
-    
+
   bool ticklabels=false;
   path G=T*g;
-    
+
   if(!locate.S.scale.logarithmic) {
     real a=locate.S.Tinv(locate.a);
     real b=locate.S.Tinv(locate.b);
@@ -594,15 +594,15 @@
     if(a > b) {real temp=a; a=b; b=temp;}
 
     if(b-a < 100.0*epsilon*norm) b=a;
-      
+
     bool autotick=Step == 0 && N == 0;
-    
-    real tickmin=finite(locate.S.tickMin) && (autotick || locate.S.automin) ? 
+
+    real tickmin=finite(locate.S.tickMin) && (autotick || locate.S.automin) ?
       locate.S.Tinv(locate.S.tickMin) : a;
     real tickmax=finite(locate.S.tickMax) && (autotick || locate.S.automax) ?
       locate.S.Tinv(locate.S.tickMax) : b;
     if(tickmin > tickmax) {real temp=tickmin; tickmin=tickmax; tickmax=temp;}
-      
+
     real inStep=Step;
 
     bool calcStep=true;
@@ -630,7 +630,7 @@
                 // Try using 2 ticks (otherwise 1);
                 int div=divisor[d+1];
                 Step=quotient(div,2)*len/div;
-                calcStep=false; 
+                calcStep=false;
                 if(axiscoverage(2,T,g,locate,Step,side,sign,Size,F,ticklabel,
                                 norm,limit)) N=2;
                 else Step=len;
@@ -650,7 +650,7 @@
         }
       }
     }
-      
+
     if(inStep != 0 && !locate.S.automin) {
       tickmin=floor(tickmin/Step)*Step;
       len=tickmax-tickmin;
@@ -661,13 +661,13 @@
       if(N == 0) N=(int) (len/Step);
       else Step=len/N;
     }
-    
+
     if(n == 0) {
       if(step != 0) n=ceil(Step/step);
     } else step=Step/n;
-      
+
     b += epsilon*norm;
-      
+
     if(Size > 0) {
       for(int i=0; i <= N; ++i) {
         real val=tickmin+i*Step;
@@ -684,7 +684,7 @@
         }
       }
     }
-    
+
   } else { // Logarithmic
     string format=F.s;
     if(F.s == "%") F.s="";
@@ -691,15 +691,15 @@
 
     int base=round(locate.S.scale.Tinv(1));
 
-    if(ticklabel == null) 
+    if(ticklabel == null)
       ticklabel=format == "%" ? Format("") : DefaultLogFormat(base);
     real a=locate.S.postscale.Tinv(locate.a);
     real b=locate.S.postscale.Tinv(locate.b);
     if(a > b) {real temp=a; a=b; b=temp;}
-      
+
     int first=floor(a-epsilon);
     int last=ceil(b+epsilon);
-      
+
     if(N == 0) {
       N=1;
       while(N <= last-first) {
@@ -708,10 +708,10 @@
         ++N;
       }
     }
-      
+
     if(N <= 2 && n == 0) n=base;
     tickvalues.N=N;
-      
+
     if(N > 0) {
       for(int i=first-1; i <= last+1; ++i) {
         if(i >= a && i <= b)
@@ -725,7 +725,7 @@
         }
       }
     }
-  }     
+  }
   return tickvalues;
 }
 
@@ -732,7 +732,7 @@
 // Signature of routines that draw labelled paths with ticks and tick labels.
 typedef void ticks(frame, transform, Label, pair, path, path, pen,
                    arrowbar, margin, ticklocate, int[], bool opposite=false);
-                                          
+
 // Tick construction routine for a user-specified array of tick values.
 ticks Ticks(int sign, Label F="", ticklabel ticklabel=null,
             bool beginlabel=true, bool endlabel=true,
@@ -741,7 +741,7 @@
             real Size=0, real size=0, bool extend=false,
             pen pTick=nullpen, pen ptick=nullpen)
 {
-  return new void(frame f, transform t, Label L, pair side, path g, path g2, 
+  return new void(frame f, transform t, Label L, pair side, path g, path g2,
                   pen p, arrowbar arrow, margin margin, ticklocate locate,
                   int[] divisor, bool opposite) {
     // Use local copy of context variables:
@@ -749,12 +749,12 @@
     pen pTick=pTick;
     pen ptick=ptick;
     ticklabel ticklabel=ticklabel;
-    
+
     real Size=Size;
     real size=size;
     if(Size == 0) Size=Ticksize;
     if(size == 0) size=ticksize;
-    
+
     Label L=L.copy();
     Label F=F.copy();
     L.p(p);
@@ -761,16 +761,16 @@
     F.p(p);
     if(pTick == nullpen) pTick=p;
     if(ptick == nullpen) ptick=pTick;
-    
+
     if(F.align.dir != 0) side=F.align.dir;
     else if(side == 0) side=F.T*((sign == 1) ? left : right);
-    
+
     bool ticklabels=false;
     path G=t*g;
     path G2=t*g2;
-    
+
     scalefcn T;
-    
+
     real a,b;
     if(locate.S.scale.logarithmic) {
       a=locate.S.postscale.Tinv(locate.a);
@@ -781,11 +781,11 @@
       b=locate.S.Tinv(locate.b);
       T=identity;
     }
-    
+
     if(a > b) {real temp=a; a=b; b=temp;}
 
     real norm=max(abs(a),abs(b));
-    
+
     string format=autoformat(F.s,norm...Ticks);
     if(F.s == "%") F.s="";
     if(ticklabel == null) {
@@ -809,7 +809,7 @@
         drawtick(f,t,g,g2,locate,val,size,sign,ptick,extend);
     }
     endgroup(f);
-    
+
     if(N == 0) N=1;
     if(Size > 0 && !opposite) {
       for(int i=(beginlabel ? 0 : 1);
@@ -821,7 +821,7 @@
         }
       }
     }
-    if(L.s != "" && !opposite) 
+    if(L.s != "" && !opposite)
       labelaxis(f,t,L,G,locate,sign,ticklabels);
   };
 }
@@ -832,7 +832,7 @@
 
 // Tickmodifier that removes all ticks in the intervals [a[i],b[i]].
 tickmodifier OmitTickIntervals(real[] a, real[] b) {
-  return new tickvalues(tickvalues v) { 
+  return new tickvalues(tickvalues v) {
     if(a.length != b.length) abort(differentlengths);
     void omit(real[] A) {
       if(A.length != 0) {
@@ -939,8 +939,8 @@
                begin,end,modify,Size,size,extend,pTick,ptick);
 }
 
-ticks LeftTicks(Label format="", ticklabel ticklabel=null, 
-                bool beginlabel=true, bool endlabel=true, 
+ticks LeftTicks(Label format="", ticklabel ticklabel=null,
+                bool beginlabel=true, bool endlabel=true,
                 real[] Ticks, real[] ticks=new real[],
                 real Size=0, real size=0, bool extend=false,
                 pen pTick=nullpen, pen ptick=nullpen)
@@ -949,8 +949,8 @@
                Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks RightTicks(Label format="", ticklabel ticklabel=null, 
-                 bool beginlabel=true, bool endlabel=true, 
+ticks RightTicks(Label format="", ticklabel ticklabel=null,
+                 bool beginlabel=true, bool endlabel=true,
                  real[] Ticks, real[] ticks=new real[],
                  real Size=0, real size=0, bool extend=false,
                  pen pTick=nullpen, pen ptick=nullpen)
@@ -959,8 +959,8 @@
                Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks Ticks(Label format="", ticklabel ticklabel=null, 
-            bool beginlabel=true, bool endlabel=true, 
+ticks Ticks(Label format="", ticklabel ticklabel=null,
+            bool beginlabel=true, bool endlabel=true,
             real[] Ticks, real[] ticks=new real[],
             real Size=0, real size=0, bool extend=false,
             pen pTick=nullpen, pen ptick=nullpen)
@@ -978,18 +978,18 @@
 {
   return minbound(pic.userMin(),(pic.scale.x.tickMin,pic.scale.y.tickMin));
 }
-  
+
 pair tickMax(picture pic)
 {
   return maxbound(pic.userMax(),(pic.scale.x.tickMax,pic.scale.y.tickMax));
 }
-                                               
+
 int Min=-1;
 int Value=0;
 int Max=1;
 int Both=2;
 
-// Structure used to communicate axis and autoscale settings to tick routines. 
+// Structure used to communicate axis and autoscale settings to tick routines.
 struct axisT {
   int type;        // -1 = min, 0 = given value, 1 = max, 2 = min/max
   int type2;       // for 3D axis
@@ -1062,7 +1062,7 @@
   };
 }
 
-axis LeftRight(bool extend=false) 
+axis LeftRight(bool extend=false)
 {
   return new void(picture pic, axisT axis) {
     axis.type=Both;
@@ -1134,7 +1134,7 @@
 void axis(picture pic=currentpicture, Label L="", path g, path g2=nullpath,
           pen p=currentpen, ticks ticks, ticklocate locate,
           arrowbar arrow=None, margin margin=NoMargin,
-          int[] divisor=new int[], bool above=false, bool opposite=false) 
+          int[] divisor=new int[], bool above=false, bool opposite=false)
 {
   Label L=L.copy();
   real t=reltime(g,0.5);
@@ -1146,9 +1146,9 @@
       ticks(d,t,L,0,g,g2,p,arrow,margin,locate,divisor,opposite);
       (above ? add : prepend)(f,t*T*inverse(t)*d);
     });
-  
+
   pic.addPath(g,p);
-  
+
   if(L.s != "") {
     frame f;
     Label L0=L.copy();
@@ -1195,7 +1195,7 @@
         pic.scale.x.tickMax=mx.max;
         divisor=mx.divisor;
       }
-      
+
       real fuzz=epsilon*max(abs(a.x),abs(b.x));
       a -= (fuzz,0);
       b += (fuzz,0);
@@ -1211,8 +1211,8 @@
       y2=pic.scale.y.automax() ? tickMax(pic).y : pic.userMax().y;
       y=opposite ? y2 :
         (pic.scale.y.automin() ? tickMin(pic).y : pic.userMin().y);
-    } 
-    else if(type == Min) 
+    }
+    else if(type == Min)
       y=pic.scale.y.automin() ? tickMin(pic).y : pic.userMin().y;
     else if(type == Max)
       y=pic.scale.y.automax() ? tickMax(pic).y : pic.userMax().y;
@@ -1229,7 +1229,7 @@
       pic.addPoint(a,min(p));
       pic.addPoint(a,max(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min(p));
       pic.addPoint(b,max(p));
@@ -1299,13 +1299,13 @@
             ticklocate(a.y,b.y,pic.scale.y),divisor,opposite);
       (above ? add : prepend)(f,t*T*tinv*d);
     });
-  
+
   void bounds() {
     if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin(pic).x : pic.userMin().x);
-    } else if(type == Min) 
+    } else if(type == Min)
       x=pic.scale.x.automin() ? tickMin(pic).x : pic.userMin().x;
     else if(type == Max)
       x=pic.scale.x.automax() ? tickMax(pic).x : pic.userMax().x;
@@ -1317,17 +1317,17 @@
     pair b=(x,Ymax);
     pair a2=(x2,Ymin);
     pair b2=(x2,Ymax);
-  
+
     if(finite(a)) {
       pic.addPoint(a,min(p));
       pic.addPoint(a,max(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min(p));
       pic.addPoint(b,max(p));
     }
-  
+
     if(finite(a) && finite(b)) {
       frame d;
       ticks(d,pic.scaling(warn=false),L,side,
@@ -1361,32 +1361,32 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.x.automin=min <= -infinity;
   pic.scale.x.automax=max >= infinity;
-  
+
   bounds mx;
   if(pic.scale.x.automin() || pic.scale.x.automax())
     mx=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
-  
+
   if(pic.scale.x.automin) {
     if(pic.scale.x.automin()) pic.userMinx(mx.min);
   } else pic.userMinx(min(pic.scale.x.T(min),pic.scale.x.T(max)));
-  
+
   if(pic.scale.x.automax) {
     if(pic.scale.x.automax()) pic.userMaxx(mx.max);
   } else pic.userMaxx(max(pic.scale.x.T(min),pic.scale.x.T(max)));
-  
+
   if(crop) {
     pair userMin=pic.userMin();
     pair userMax=pic.userMax();
     pic.bounds.xclip(userMin.x,userMax.x);
     pic.clip(userMin, userMax,
-      new void (frame f, transform t, transform T, pair, pair) {
-        frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
-        clip(f,T*box(((t*userMin).x,(min(Tinvf)).y),
-                     ((t*userMax).x,(max(Tinvf)).y)));
-      });
+             new void (frame f, transform t, transform T, pair, pair) {
+               frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
+               clip(f,T*box(((t*userMin).x,(min(Tinvf)).y),
+                            ((t*userMax).x,(max(Tinvf)).y)));
+             });
   }
 }
 
@@ -1395,37 +1395,37 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.y.automin=min <= -infinity;
   pic.scale.y.automax=max >= infinity;
-  
+
   bounds my;
   if(pic.scale.y.automin() || pic.scale.y.automax())
     my=autoscale(pic.userMin().y,pic.userMax().y,pic.scale.y.scale);
-  
+
   if(pic.scale.y.automin) {
     if(pic.scale.y.automin()) pic.userMiny(my.min);
   } else pic.userMiny(min(pic.scale.y.T(min),pic.scale.y.T(max)));
-  
+
   if(pic.scale.y.automax) {
     if(pic.scale.y.automax()) pic.userMaxy(my.max);
   } else pic.userMaxy(max(pic.scale.y.T(min),pic.scale.y.T(max)));
-  
+
   if(crop) {
     pair userMin=pic.userMin();
     pair userMax=pic.userMax();
     pic.bounds.yclip(userMin.y,userMax.y);
-    pic.clip(userMin, userMax, 
-      new void (frame f, transform t, transform T, pair, pair) {
-        frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
-        clip(f,T*box(((min(Tinvf)).x,(t*userMin).y),
-                     ((max(Tinvf)).x,(t*userMax).y)));
-      });
+    pic.clip(userMin, userMax,
+             new void (frame f, transform t, transform T, pair, pair) {
+               frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
+               clip(f,T*box(((min(Tinvf)).x,(t*userMin).y),
+                            ((max(Tinvf)).x,(t*userMax).y)));
+             });
   }
 }
 
 // Crop a picture to the current user-space picture limits.
-void crop(picture pic=currentpicture) 
+void crop(picture pic=currentpicture)
 {
   xlimits(pic,false);
   ylimits(pic,false);
@@ -1441,7 +1441,7 @@
   if(crop && pic.userSetx() && pic.userSety())
     clip(pic,box(pic.userMin(),pic.userMax()));
 }
-  
+
 // Internal routine to autoscale the user limits of a picture.
 void autoscale(picture pic=currentpicture, axis axis)
 {
@@ -1448,7 +1448,7 @@
   if(!pic.scale.set) {
     bounds mx,my;
     pic.scale.set=true;
-    
+
     if(pic.userSetx()) {
       mx=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
       if(pic.scale.x.scale.logarithmic &&
@@ -1459,7 +1459,7 @@
           pic.userMaxx2(ceil(pic.userMax().x));
       }
     } else {mx.min=mx.max=0; pic.scale.set=false;}
-    
+
     if(pic.userSety()) {
       my=autoscale(pic.userMin().y,pic.userMax().y,pic.scale.y.scale);
       if(pic.scale.y.scale.logarithmic &&
@@ -1470,7 +1470,7 @@
           pic.userMaxy2(ceil(pic.userMax().y));
       }
     } else {my.min=my.max=0; pic.scale.set=false;}
-    
+
     pic.scale.x.tickMin=mx.min;
     pic.scale.x.tickMax=mx.max;
     pic.scale.y.tickMin=my.min;
@@ -1487,7 +1487,7 @@
            bool above=false)
 {
   if(xmin > xmax) return;
-  
+
   if(pic.scale.x.automin && xmin > -infinity) pic.scale.x.automin=false;
   if(pic.scale.x.automax && xmax < infinity) pic.scale.x.automax=false;
 
@@ -1495,20 +1495,20 @@
     axis(pic,axis);
     autoscale(pic,axis);
   }
-  
+
   Label L=L.copy();
   bool newticks=false;
-  
+
   if(xmin != -infinity) {
     xmin=pic.scale.x.T(xmin);
     newticks=true;
   }
-  
+
   if(xmax != infinity) {
     xmax=pic.scale.x.T(xmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetx() && ticks != NoTicks) {
     if(xmin == -infinity) xmin=pic.userMin().x;
     if(xmax == infinity) xmax=pic.userMax().x;
@@ -1517,9 +1517,9 @@
     pic.scale.x.tickMax=mx.max;
     axis.xdivisor=mx.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(xmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       xmin=pic.scale.x.automin() ? pic.scale.x.tickMin :
@@ -1526,7 +1526,7 @@
         max(pic.scale.x.tickMin,pic.userMin().x);
     else xmin=pic.userMin().x;
   }
-  
+
   if(xmax == infinity && !axis.extend) {
     if(pic.scale.set)
       xmax=pic.scale.x.automax() ? pic.scale.x.tickMax :
@@ -1536,7 +1536,7 @@
 
   if(L.defaultposition) L.position(axis.position);
   L.align(L.align,axis.align);
-  
+
   xaxisAt(pic,L,axis,xmin,xmax,p,ticks,arrow,margin,above);
   if(axis.type == Both)
     xaxisAt(pic,L,axis,xmin,xmax,p,ticks,arrow,margin,above,true);
@@ -1552,25 +1552,25 @@
 
   if(pic.scale.y.automin && ymin > -infinity) pic.scale.y.automin=false;
   if(pic.scale.y.automax && ymax < infinity) pic.scale.y.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale(pic,axis);
   }
-  
+
   Label L=L.copy();
   bool newticks=false;
-  
+
   if(ymin != -infinity) {
     ymin=pic.scale.y.T(ymin);
     newticks=true;
   }
-  
+
   if(ymax != infinity) {
     ymax=pic.scale.y.T(ymax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSety() && ticks != NoTicks) {
     if(ymin == -infinity) ymin=pic.userMin().y;
     if(ymax == infinity) ymax=pic.userMax().y;
@@ -1579,9 +1579,9 @@
     pic.scale.y.tickMax=my.max;
     axis.ydivisor=my.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(ymin == -infinity && !axis.extend) {
     if(pic.scale.set)
       ymin=pic.scale.y.automin() ? pic.scale.y.tickMin :
@@ -1588,8 +1588,8 @@
         max(pic.scale.y.tickMin,pic.userMin().y);
     else ymin=pic.userMin().y;
   }
-  
-  
+
+
   if(ymax == infinity && !axis.extend) {
     if(pic.scale.set)
       ymax=pic.scale.y.automax() ? pic.scale.y.tickMax :
@@ -1599,14 +1599,14 @@
 
   if(L.defaultposition) L.position(axis.position);
   L.align(L.align,axis.align);
-  
+
   if(autorotate && L.defaulttransform) {
     frame f;
     add(f,Label(L.s,(0,0),L.p));
-    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p)) 
+    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p))
       L.transform(rotate(90));
   }
-  
+
   yaxisAt(pic,L,axis,ymin,ymax,p,ticks,arrow,margin,above);
   if(axis.type == Both)
     yaxisAt(pic,L,axis,ymin,ymax,p,ticks,arrow,margin,above,true);
@@ -1627,7 +1627,7 @@
 void xequals(picture pic=currentpicture, Label L="", real x,
              bool extend=false, real ymin=-infinity, real ymax=infinity,
              pen p=currentpen, ticks ticks=NoTicks,
-             arrowbar arrow=None, margin margin=NoMargin, bool above=true) 
+             arrowbar arrow=None, margin margin=NoMargin, bool above=true)
 {
   yaxis(pic,L,XEquals(x,extend),ymin,ymax,p,ticks,arrow,margin,above);
 }
@@ -1682,7 +1682,7 @@
 }
 
 void ytick(picture pic=currentpicture, explicit pair z, pair dir=E,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   tick(pic,z,dir,size,p);
 }
@@ -1799,7 +1799,7 @@
   bounds a=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
   real bmin=pic.scale.x.automin() ? a.min : pic.userMin().x;
   real bmax=pic.scale.x.automax() ? a.max : pic.userMax().x;
-  
+
   real denom=bmax-bmin;
   if(denom != 0) {
     pic.erase();
@@ -1849,7 +1849,7 @@
 
 typedef guide graph(pair f(real), real, real, int);
 typedef guide[] multigraph(pair f(real), real, real, int);
-                       
+
 graph graph(interpolate join)
 {
   return new guide(pair f(real), real a, real b, int n) {
@@ -2055,7 +2055,7 @@
 }
 
 // Connect points in z into segments corresponding to consecutive true elements
-// of b using interpolation operator join. 
+// of b using interpolation operator join.
 path[] segment(pair[] z, bool[] cond, interpolate join=operator --)
 {
   checkconditionlength(cond.length,z.length);
@@ -2102,7 +2102,7 @@
   if(dmy != dpy) draw(pic,Scale(pic,z+(0,dmy))--Scale(pic,z+(0,dpy)),p,
                       Bars(size));
 }
-  
+
 void errorbars(picture pic=currentpicture, pair[] z, pair[] dp, pair[] dm={},
                bool[] cond={}, pen p=currentpen, real size=0)
 {
@@ -2157,13 +2157,13 @@
     real x=(n == 1) ? 0.5 : i/(n-1);
     if(truesize)
       draw(relpoint(g,x),pic,vector(x),p,arrow);
-    else 
+    else
       draw(pic,shift(relpoint(g,x))*vector(x),p,arrow,margin);
   }
   return pic;
 }
 
-real maxlength(pair a, pair b, int nx, int ny) 
+real maxlength(pair a, pair b, int nx, int ny)
 {
   return min((b.x-a.x)/nx,(b.y-a.y)/ny);
 }

Modified: trunk/Master/texmf-dist/asymptote/graph3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/graph3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/graph3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -9,7 +9,7 @@
 
 ticklocate ticklocate(real a, real b, autoscaleT S=defaultS,
                       real tickmin=-infinity, real tickmax=infinity,
-                      real time(real)=null, direction3 dir) 
+                      real time(real)=null, direction3 dir)
 {
   if((valuetime) time == null) time=linear(S.T(),a,b);
   ticklocate locate;
@@ -23,13 +23,13 @@
   locate.dir3=dir;
   return locate;
 }
-                             
+
 private struct locateT {
   real t;         // tick location time
   triple V;       // tick location in frame coordinates
   triple pathdir; // path direction in frame coordinates
   triple dir;     // tick direction in frame coordinates
-  
+
   void dir(transform3 T, path3 g, ticklocate locate, real t) {
     pathdir=unit(shiftless(T)*dir(g,t));
     triple Dir=locate.dir3(t);
@@ -60,7 +60,7 @@
   draw(pic,G,p,name="tick");
 }
 
-triple ticklabelshift(triple align, pen p=currentpen) 
+triple ticklabelshift(triple align, pen p=currentpen)
 {
   return 0.25*unit(align)*labelmargin(p);
 }
@@ -100,10 +100,10 @@
   if(s != "")
     label(pic,F.defaulttransform3 ? baseline(s,baselinetemplate) : F.T3*s,v,
           align,F.p);
-}  
+}
 
 // Add axis label L to frame f.
-void labelaxis(picture pic, transform3 T, Label L, path3 g, 
+void labelaxis(picture pic, transform3 T, Label L, path3 g,
                ticklocate locate=null, int sign=1, bool ticklabels=false)
 {
   triple m=pic.min(identity4);
@@ -118,7 +118,7 @@
       picture F;
       if(L.align.dir3 == O)
         align=unit(invert(L.align.dir,v,P))*abs(L.align.dir);
-      
+
       if(ticklabels && locate != null && piecewisestraight(g)) {
         locateT locate1;
         locate1.dir(T,g,locate,t);
@@ -171,12 +171,12 @@
     pen pTick=pTick;
     pen ptick=ptick;
     ticklabel ticklabel=ticklabel;
-    
+
     real Size=Size;
     real size=size;
     if(Size == 0) Size=Ticksize;
     if(size == 0) size=ticksize;
-    
+
     Label L=L.copy();
     Label F=F.copy();
     L.p(p);
@@ -183,13 +183,13 @@
     F.p(p);
     if(pTick == nullpen) pTick=p;
     if(ptick == nullpen) ptick=pTick;
-    
+
     bool ticklabels=false;
     path3 G=t*g;
     path3 G2=t*g2;
-    
+
     scalefcn T;
-    
+
     real a,b;
     if(locate.S.scale.logarithmic) {
       a=locate.S.postscale.Tinv(locate.a);
@@ -200,11 +200,11 @@
       b=locate.S.Tinv(locate.b);
       T=identity;
     }
-    
+
     if(a > b) {real temp=a; a=b; b=temp;}
 
     real norm=max(abs(a),abs(b));
-    
+
     string format=autoformat(F.s,norm...Ticks);
     if(F.s == "%") F.s="";
     if(ticklabel == null) {
@@ -324,8 +324,8 @@
                 begin,end,modify,Size,size,extend,pTick,ptick);
 }
 
-ticks3 InTicks(Label format="", ticklabel ticklabel=null, 
-               bool beginlabel=true, bool endlabel=true, 
+ticks3 InTicks(Label format="", ticklabel ticklabel=null,
+               bool beginlabel=true, bool endlabel=true,
                real[] Ticks, real[] ticks=new real[],
                real Size=0, real size=0, bool extend=false,
                pen pTick=nullpen, pen ptick=nullpen)
@@ -334,8 +334,8 @@
                 Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks3 OutTicks(Label format="", ticklabel ticklabel=null, 
-                bool beginlabel=true, bool endlabel=true, 
+ticks3 OutTicks(Label format="", ticklabel ticklabel=null,
+                bool beginlabel=true, bool endlabel=true,
                 real[] Ticks, real[] ticks=new real[],
                 real Size=0, real size=0, bool extend=false,
                 pen pTick=nullpen, pen ptick=nullpen)
@@ -344,8 +344,8 @@
                 Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks3 InOutTicks(Label format="", ticklabel ticklabel=null, 
-                  bool beginlabel=true, bool endlabel=true, 
+ticks3 InOutTicks(Label format="", ticklabel ticklabel=null,
+                  bool beginlabel=true, bool endlabel=true,
                   real[] Ticks, real[] ticks=new real[],
                   real Size=0, real size=0, bool extend=false,
                   pen pTick=nullpen, pen ptick=nullpen)
@@ -362,15 +362,15 @@
 triple tickMin3(picture pic)
 {
   return minbound(pic.userMin(),(pic.scale.x.tickMin,pic.scale.y.tickMin,
-                                  pic.scale.z.tickMin));
+                                 pic.scale.z.tickMin));
 }
-  
+
 triple tickMax3(picture pic)
 {
   return maxbound(pic.userMax(),(pic.scale.x.tickMax,pic.scale.y.tickMax,
-                                  pic.scale.z.tickMax));
+                                 pic.scale.z.tickMax));
 }
-                                               
+
 axis Bounds(int type=Both, int type2=Both, triple align=O, bool extend=false)
 {
   return new void(picture pic, axisT axis) {
@@ -470,7 +470,7 @@
 void axis(picture pic=currentpicture, Label L="", path3 g, path3 g2=nullpath3,
           pen p=currentpen, ticks3 ticks, ticklocate locate,
           arrowbar3 arrow=None, margin3 margin=NoMargin3,
-          int[] divisor=new int[], bool above=false, bool opposite=false) 
+          int[] divisor=new int[], bool above=false, bool opposite=false)
 {
   Label L=L.copy();
   real t=reltime(g,0.5);
@@ -477,15 +477,15 @@
   if(L.defaultposition) L.position(t);
   divisor=copy(divisor);
   locate=locate.copy();
-  
+
   pic.add(new void (picture f, transform3 t, transform3 T, triple, triple) {
       picture d;
       ticks(d,t,L,g,g2,p,arrow,margin,locate,divisor,opposite,true);
       add(f,t*T*inverse(t)*d);
     },above=above);
-  
+
   addPath(pic,g,p);
-  
+
   if(L.s != "") {
     frame f;
     Label L0=L.copy();
@@ -552,7 +552,7 @@
               y0=y2;
               z0=z;
             }
-            
+
             triple a2=xmin == -infinity ? tinv*(lb.x-min3(p).x,ytrans(t,y0),
                                                 ztrans(t,z0)) : (xmin,y0,z0);
             triple b2=xmax == infinity ? tinv*(rt.x-max3(p).x,ytrans(t,y0),
@@ -564,7 +564,7 @@
               pic.scale.x.tickMax=mx.max;
               divisor=mx.divisor;
             }
-      
+
             triple fuzz=X*epsilon*max(abs(a.x),abs(b.x));
             a -= fuzz;
             b += fuzz;
@@ -584,7 +584,7 @@
       y=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
     else if(type == Both) {
       y2=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
-      y=opposite ? y2 : 
+      y=opposite ? y2 :
         (pic.scale.y.automin() ? tickMin3(pic).y : pic.userMin().y);
     }
 
@@ -594,7 +594,7 @@
       z=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
     else if(type2 == Both) {
       z2=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
-      z=opposite2 ? z2 : 
+      z=opposite2 ? z2 :
         (pic.scale.z.automin() ? tickMin3(pic).z : pic.userMin().z);
     }
 
@@ -610,7 +610,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -650,7 +650,7 @@
   pic.scale.x.bound.push(bounds);
 }
 
-// An internal routine to draw an x axis at a particular y value.
+// An internal routine to draw a y axis at a particular value.
 void yaxis3At(picture pic=currentpicture, Label L="", axis axis,
               real ymin=-infinity, real ymax=infinity, pen p=currentpen,
               ticks3 ticks=NoTicks3,
@@ -685,12 +685,12 @@
               x0=x2;
               z0=z;
             }
-            
+
             triple a2=ymin == -infinity ? tinv*(xtrans(t,x0),lb.y-min3(p).y,
                                                 ztrans(t,z0)) : (x0,ymin,z0);
             triple b2=ymax == infinity ? tinv*(xtrans(t,x0),rt.y-max3(p).y,
                                                ztrans(t,z0)) : (x0,ymax,z0);
- 
+
             if(ymin == -infinity || ymax == infinity) {
               bounds my=autoscale(a.y,b.y,pic.scale.y.scale);
               pic.scale.y.tickMin=my.min;
@@ -697,7 +697,7 @@
               pic.scale.y.tickMax=my.max;
               divisor=my.divisor;
             }
-      
+
             triple fuzz=Y*epsilon*max(abs(a.y),abs(b.y));
             a -= fuzz;
             b += fuzz;
@@ -717,7 +717,7 @@
       x=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
     else if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin3(pic).x : pic.userMin().x);
     }
 
@@ -727,7 +727,7 @@
       z=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
     else if(type2 == Both) {
       z2=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
-      z=opposite2 ? z2 : 
+      z=opposite2 ? z2 :
         (pic.scale.z.automin() ? tickMin3(pic).z : pic.userMin().z);
     }
 
@@ -743,7 +743,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -783,7 +783,7 @@
   pic.scale.y.bound.push(bounds);
 }
 
-// An internal routine to draw an x axis at a particular y value.
+// An internal routine to draw a z axis at a particular value.
 void zaxis3At(picture pic=currentpicture, Label L="", axis axis,
               real zmin=-infinity, real zmax=infinity, pen p=currentpen,
               ticks3 ticks=NoTicks3,
@@ -818,7 +818,7 @@
               x0=x2;
               y0=y;
             }
-            
+
             triple a2=zmin == -infinity ? tinv*(xtrans(t,x0),ytrans(t,y0),
                                                 lb.z-min3(p).z) : (x0,y0,zmin);
             triple b2=zmax == infinity ? tinv*(xtrans(t,x0),ytrans(t,y0),
@@ -830,7 +830,7 @@
               pic.scale.z.tickMax=mz.max;
               divisor=mz.divisor;
             }
-      
+
             triple fuzz=Z*epsilon*max(abs(a.z),abs(b.z));
             a -= fuzz;
             b += fuzz;
@@ -850,7 +850,7 @@
       x=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
     else if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin3(pic).x : pic.userMin().x);
     }
 
@@ -860,7 +860,7 @@
       y=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
     else if(type2 == Both) {
       y2=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
-      y=opposite2 ? y2 : 
+      y=opposite2 ? y2 :
         (pic.scale.y.automin() ? tickMin3(pic).y : pic.userMin().y);
     }
 
@@ -876,7 +876,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -934,7 +934,7 @@
           pic.userMaxz3(ceil(pic.userMax().z));
       }
     } else {mz.min=mz.max=0; pic.scale.set=false;}
-    
+
     pic.scale.z.tickMin=mz.min;
     pic.scale.z.tickMax=mz.max;
     axis.zdivisor=mz.divisor;
@@ -948,7 +948,7 @@
             arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false)
 {
   if(xmin > xmax) return;
-  
+
   if(pic.scale.x.automin && xmin > -infinity) pic.scale.x.automin=false;
   if(pic.scale.x.automax && xmax < infinity) pic.scale.x.automax=false;
 
@@ -956,19 +956,19 @@
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(xmin != -infinity) {
     xmin=pic.scale.x.T(xmin);
     newticks=true;
   }
-  
+
   if(xmax != infinity) {
     xmax=pic.scale.x.T(xmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetx() && ticks != NoTicks3) {
     if(xmin == -infinity) xmin=pic.userMin().x;
     if(xmax == infinity) xmax=pic.userMax().x;
@@ -977,9 +977,9 @@
     pic.scale.x.tickMax=mx.max;
     axis.xdivisor=mx.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(xmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       xmin=pic.scale.x.automin() ? pic.scale.x.tickMin :
@@ -986,7 +986,7 @@
         max(pic.scale.x.tickMin,pic.userMin().x);
     else xmin=pic.userMin().x;
   }
-  
+
   if(xmax == infinity && !axis.extend) {
     if(pic.scale.set)
       xmax=pic.scale.x.automax() ? pic.scale.x.tickMax :
@@ -998,7 +998,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.normal;
@@ -1025,24 +1025,24 @@
 
   if(pic.scale.y.automin && ymin > -infinity) pic.scale.y.automin=false;
   if(pic.scale.y.automax && ymax < infinity) pic.scale.y.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(ymin != -infinity) {
     ymin=pic.scale.y.T(ymin);
     newticks=true;
   }
-  
+
   if(ymax != infinity) {
     ymax=pic.scale.y.T(ymax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSety() && ticks != NoTicks3) {
     if(ymin == -infinity) ymin=pic.userMin().y;
     if(ymax == infinity) ymax=pic.userMax().y;
@@ -1051,9 +1051,9 @@
     pic.scale.y.tickMax=my.max;
     axis.ydivisor=my.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(ymin == -infinity && !axis.extend) {
     if(pic.scale.set)
       ymin=pic.scale.y.automin() ? pic.scale.y.tickMin :
@@ -1060,8 +1060,8 @@
         max(pic.scale.y.tickMin,pic.userMin().y);
     else ymin=pic.userMin().y;
   }
-  
-  
+
+
   if(ymax == infinity && !axis.extend) {
     if(pic.scale.set)
       ymax=pic.scale.y.automax() ? pic.scale.y.tickMax :
@@ -1073,7 +1073,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.normal;
@@ -1100,24 +1100,24 @@
 
   if(pic.scale.z.automin && zmin > -infinity) pic.scale.z.automin=false;
   if(pic.scale.z.automax && zmax < infinity) pic.scale.z.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(zmin != -infinity) {
     zmin=pic.scale.z.T(zmin);
     newticks=true;
   }
-  
+
   if(zmax != infinity) {
     zmax=pic.scale.z.T(zmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetz() && ticks != NoTicks3) {
     if(zmin == -infinity) zmin=pic.userMin().z;
     if(zmax == infinity) zmax=pic.userMax().z;
@@ -1126,9 +1126,9 @@
     pic.scale.z.tickMax=mz.max;
     axis.zdivisor=mz.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(zmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       zmin=pic.scale.z.automin() ? pic.scale.z.tickMin :
@@ -1135,7 +1135,7 @@
         max(pic.scale.z.tickMin,pic.userMin().z);
     else zmin=pic.userMin().z;
   }
-  
+
   if(zmax == infinity && !axis.extend) {
     if(pic.scale.set)
       zmax=pic.scale.z.automax() ? pic.scale.z.tickMax :
@@ -1147,7 +1147,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.vector();
@@ -1169,18 +1169,18 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.z.automin=min <= -infinity;
   pic.scale.z.automax=max >= infinity;
-  
+
   bounds mz;
   if(pic.scale.z.automin() || pic.scale.z.automax())
     mz=autoscale(pic.userMin().z,pic.userMax().z,pic.scale.z.scale);
-  
+
   if(pic.scale.z.automin) {
     if(pic.scale.z.automin()) pic.userMinz(mz.min);
   } else pic.userMinz(min(pic.scale.z.T(min),pic.scale.z.T(max)));
-  
+
   if(pic.scale.z.automax) {
     if(pic.scale.z.automax()) pic.userMaxz(mz.max);
   } else pic.userMaxz(max(pic.scale.z.T(min),pic.scale.z.T(max)));
@@ -1193,10 +1193,10 @@
   ylimits(pic,min.y,max.y);
   zlimits(pic,min.z,max.z);
 }
-  
+
 // Draw x, y and z axes.
 void axes3(picture pic=currentpicture,
-           Label xlabel="", Label ylabel="", Label zlabel="", 
+           Label xlabel="", Label ylabel="", Label zlabel="",
            bool extend=false,
            triple min=(-infinity,-infinity,-infinity),
            triple max=(infinity,infinity,infinity),
@@ -1212,11 +1212,50 @@
   return (pic.scale.x.T(v.x),pic.scale.y.T(v.y),pic.scale.z.T(v.z));
 }
 
+triple[][] Scale(picture pic=currentpicture, triple[][] P)
+{
+  triple[][] Q=new triple[P.length][];
+  for(int i=0; i < P.length; ++i) {
+    triple[] Pi=P[i];
+    Q[i]=new triple[Pi.length];
+    for(int j=0; j < Pi.length; ++j)
+      Q[i][j]=Scale(pic,Pi[j]);
+  }
+  return Q;
+}
+
+real ScaleX(picture pic=currentpicture, real x)
+{
+  return pic.scale.x.T(x);
+}
+
+real ScaleY(picture pic=currentpicture, real y)
+{
+  return pic.scale.y.T(y);
+}
+
 real ScaleZ(picture pic=currentpicture, real z)
 {
   return pic.scale.z.T(z);
 }
 
+real[][] ScaleZ(picture pic=currentpicture, real[][] P)
+{
+  real[][] Q=new real[P.length][];
+  for(int i=0; i < P.length; ++i) {
+    real[] Pi=P[i];
+    Q[i]=new real[Pi.length];
+    for(int j=0; j < Pi.length; ++j)
+      Q[i][j]=ScaleZ(pic,Pi[j]);
+  }
+  return Q;
+}
+
+real[] uniform(real T(real x), real Tinv(real x), real a, real b, int n)
+{
+  return map(Tinv,uniform(T(a),T(b),n));
+}
+
 // Draw a tick of length size at triple v in direction dir using pen p.
 void tick(picture pic=currentpicture, triple v, triple dir, real size=Ticksize,
           pen p=currentpen)
@@ -1240,11 +1279,11 @@
             real size=Ticksize, pen p=currentpen)
 {
   tick(pic,(x,pic.scale.y.scale.logarithmic ? 1 : 0,
-             pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
+            pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
 }
 
 void ytick(picture pic=currentpicture, triple v, triple dir=X,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   tick(pic,v,dir,size,p);
 }
@@ -1257,7 +1296,7 @@
 }
 
 void ztick(picture pic=currentpicture, triple v, triple dir=X,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,v,dir,size,p);
 }
@@ -1294,7 +1333,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(x,pic.scale.y.scale.logarithmic ? 1 : 0,
-              pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
 }
 
 void ytick(picture pic=currentpicture, Label L, triple v, triple dir=X,
@@ -1307,7 +1346,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(pic.scale.x.scale.logarithmic ? 1 : 0,y,
-              pic.scale.z.scale.logarithmic ? 1 : 0),dir,format,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0),dir,format,size,p);
 }
 
 void ztick(picture pic=currentpicture, Label L, triple v, triple dir=X,
@@ -1320,7 +1359,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(pic.scale.x.scale.logarithmic ? 1 : 0,
-              pic.scale.z.scale.logarithmic ? 1 : 0,z),dir,format,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0,z),dir,format,size,p);
 }
 
 private void label(picture pic, Label L, triple v, real x, align align,
@@ -1416,7 +1455,7 @@
 
 guide3 Straight(... guide3[])=operator --;
 guide3 Spline(... guide3[])=operator ..;
-                       
+
 guide3 graph(picture pic=currentpicture, real x(real), real y(real),
              real z(real), real a, real b, int n=ngraph,
              interpolate3 join=operator --)
@@ -1519,12 +1558,12 @@
 
 guide3 graph(triple F(pair), path p, int n=1, interpolate3 join=operator --)
 {
-  return graph(new triple(path p, real position) 
+  return graph(new triple(path p, real position)
                {return F(point(p,position));},p,n,join);
 }
 
 guide3 graph(picture pic=currentpicture, real f(pair), path p, int n=1,
-             interpolate3 join=operator --) 
+             interpolate3 join=operator --)
 {
   return graph(new triple(pair z) {return Scale(pic,(z.x,z.y,f(z)));},p,n,
                join);
@@ -1538,7 +1577,7 @@
 }
 
 // Connect points in v into segments corresponding to consecutive true elements
-// of b using interpolation operator join. 
+// of b using interpolation operator join.
 path3[] segment(triple[] v, bool[] cond, interpolate3 join=operator --)
 {
   checkconditionlength(cond.length,v.length);
@@ -1596,13 +1635,13 @@
 }
 
 // return the surface described by a matrix f
-surface surface(triple[][] f, bool[][] cond={})
+surface surface(picture pic=currentpicture, triple[][] f, bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
-  
+
   int nx=f.length-1;
   int ny=nx > 0 ? f[0].length-1 : 0;
-  
+
   bool all=cond.length == 0;
 
   int count;
@@ -1632,7 +1671,11 @@
     int[] indexi=s.index[i];
     for(int j=0; j < ny; ++j) {
       if(all || (condi[j] && condi[j+1] && condp[j] && condp[j+1]))
-        s.s[++k]=patch(new triple[] {fi[j],fp[j],fp[j+1],fi[j+1]});
+        s.s[++k]=patch(new triple[] {
+            Scale(pic,fi[j]),
+              Scale(pic,fp[j]),
+              Scale(pic,fp[j+1]),
+              Scale(pic,fi[j+1])});
       indexi[j]=k;
     }
   }
@@ -1708,14 +1751,15 @@
         real zppmppp=zpp-hx*pp[jp];
         real zijqij=zij+hy*qi[j];
         real zpjqpj=zpj+hy*qp[j];
-        
+
         s.s[k]=patch(new triple[][] {
-          {(xi,yj,zij),(xi,y1,zijqij),(xi,y2,zip-qip),(xi,yp,zip)},
-          {(x1,yj,zij+pij),(x1,y1,zijqij+pij+hxy*ri[j]),
-           (x1,y2,zippip-qip-hxy*ri[jp]),(x1,yp,zippip)},
-          {(x2,yj,zpj-ppj),(x2,y1,zpjqpj-ppj-hxy*rp[j]),
-           (x2,y2,zppmppp-qpp+hxy*rp[jp]),(x2,yp,zppmppp)},
-          {(xp,yj,zpj),(xp,y1,zpjqpj),(xp,y2,zpp-qpp),(xp,yp,zpp)}},copy=false);
+            {(xi,yj,zij),(xi,y1,zijqij),(xi,y2,zip-qip),(xi,yp,zip)},
+              {(x1,yj,zij+pij),(x1,y1,zijqij+pij+hxy*ri[j]),
+                  (x1,y2,zippip-qip-hxy*ri[jp]),(x1,yp,zippip)},
+                {(x2,yj,zpj-ppj),(x2,y1,zpjqpj-ppj-hxy*rp[j]),
+                    (x2,y2,zppmppp-qpp+hxy*rp[jp]),(x2,yp,zppmppp)},
+                  {(xp,yj,zpj),(xp,y1,zpjqpj),(xp,y2,zpp-qpp),(xp,yp,zpp)}},
+          copy=false);
         indexi[j]=k;
         ++k;
       }
@@ -1787,11 +1831,11 @@
         real zpjqpj=zpj+hy*qp[j];
 
         s[k]=new real[][] {{zij,zijqij,zip-qip,zip},
-                           {zij+pij,zijqij+pij+hxy*ri[j],
-                            zippip-qip-hxy*ri[jp],zippip},
-                           {zpj-ppj,zpjqpj-ppj-hxy*rp[j],
-                            zppmppp-qpp+hxy*rp[jp],zppmppp},
-                           {zpj,zpjqpj,zpp-qpp,zpp}};
+                                        {zij+pij,zijqij+pij+hxy*ri[j],
+                                            zippip-qip-hxy*ri[jp],zippip},
+                                          {zpj-ppj,zpjqpj-ppj-hxy*rp[j],
+                                              zppmppp-qpp+hxy*rp[jp],zppmppp},
+                                            {zpj,zpjqpj,zpp-qpp,zpp}};
         ++k;
       }
     }
@@ -1831,10 +1875,15 @@
 
 // return the surface described by a real matrix f, interpolated with
 // xsplinetype and ysplinetype.
-surface surface(real[][] f, real[] x, real[] y,
-                splinetype xsplinetype=null, splinetype ysplinetype=xsplinetype,
+surface surface(picture pic=currentpicture, real[][] f, real[] x, real[] y,
+                splinetype xsplinetype=null,
+                splinetype ysplinetype=xsplinetype,
                 bool[][] cond={})
 {
+  real[][] f=ScaleZ(pic,f);
+  real[] x=map(pic.scale.x.T,x);
+  real[] y=map(pic.scale.y.T,y);
+
   real epsilon=sqrtEpsilon*norm(y);
   if(xsplinetype == null)
     xsplinetype=(abs(x[0]-x[x.length-1]) <= epsilon) ? periodic : notaknot;
@@ -1863,8 +1912,9 @@
 
 // return the surface described by a real matrix f, interpolated with
 // xsplinetype and ysplinetype.
-surface surface(real[][] f, pair a, pair b, splinetype xsplinetype,
-                splinetype ysplinetype=xsplinetype, bool[][] cond={})
+surface surface(picture pic=currentpicture, real[][] f, pair a, pair b,
+                splinetype xsplinetype, splinetype ysplinetype=xsplinetype,
+                bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
 
@@ -1873,13 +1923,14 @@
 
   if(nx == 0 || ny == 0) return nullsurface;
 
-  real[] x=uniform(a.x,b.x,nx);
-  real[] y=uniform(a.y,b.y,ny);
-  return surface(f,x,y,xsplinetype,ysplinetype,cond);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nx);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,ny);
+  return surface(pic,f,x,y,xsplinetype,ysplinetype,cond);
 }
 
 // return the surface described by a real matrix f, interpolated linearly.
-surface surface(real[][] f, pair a, pair b, bool[][] cond={})
+surface surface(picture pic=currentpicture, real[][] f, pair a, pair b,
+                bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
 
@@ -1891,22 +1942,25 @@
   bool all=cond.length == 0;
 
   triple[][] v=new triple[nx+1][ny+1];
+
+  pair a=Scale(pic,a);
+  pair b=Scale(pic,b);
   for(int i=0; i <= nx; ++i) {
-    real x=interp(a.x,b.x,i/nx);
+    real x=pic.scale.x.Tinv(interp(a.x,b.x,i/nx));
     bool[] condi=all ? null : cond[i];
     triple[] vi=v[i];
     real[] fi=f[i];
     for(int j=0; j <= ny; ++j)
       if(all || condi[j])
-        vi[j]=(x,interp(a.y,b.y,j/ny),fi[j]);
+        vi[j]=(x,pic.scale.y.Tinv(interp(a.y,b.y,j/ny)),fi[j]);
   }
-  return surface(v,cond);
+  return surface(pic,v,cond);
 }
 
 // return the surface described by a parametric function f over box(a,b),
 // interpolated linearly.
-surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, triple f(pair z), pair a, pair b,
+                int nu=nmesh, int nv=nu, bool cond(pair z)=null)
 {
   if(nu <= 0 || nv <= 0) return nullsurface;
 
@@ -1921,23 +1975,25 @@
 
   triple[][] v=new triple[nu+1][nv+1];
 
+  pair a=Scale(pic,a);
+  pair b=Scale(pic,b);
   for(int i=0; i <= nu; ++i) {
-    real x=interp(a.x,b.x,i*du);
+    real x=pic.scale.x.Tinv(interp(a.x,b.x,i*du));
     bool[] activei=all ? null : active[i];
     triple[] vi=v[i];
     for(int j=0; j <= nv; ++j) {
-      pair z=(x,interp(a.y,b.y,j*dv));
+      pair z=(x,pic.scale.y.Tinv(interp(a.y,b.y,j*dv)));
       if(all || (activei[j]=cond(z))) vi[j]=f(z);
     }
   }
-  return surface(v,active);
+  return surface(pic,v,active);
 }
-  
+
 // return the surface described by a parametric function f evaluated at u and v
 // and interpolated with usplinetype and vsplinetype.
-surface surface(triple f(pair z), real[] u, real[] v,
-                splinetype[] usplinetype, splinetype[] vsplinetype=Spline,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, triple f(pair z),
+                real[] u, real[] v, splinetype[] usplinetype,
+                splinetype[] vsplinetype=Spline, bool cond(pair z)=null)
 {
   int nu=u.length-1;
   int nv=v.length-1;
@@ -1960,7 +2016,7 @@
     for(int j=0; j <= nv; ++j) {
       pair z=(ui,v[j]);
       if(!all) activei[j]=cond(z);
-      triple f=f(z);
+      triple f=Scale(pic,f(z));
       fxi[j]=f.x;
       fyi[j]=f.y;
       fzi[j]=f.z;
@@ -2020,27 +2076,30 @@
 
 // return the surface described by a parametric function f over box(a,b),
 // interpolated with usplinetype and vsplinetype.
-surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu,
+surface surface(picture pic=currentpicture, triple f(pair z), pair a, pair b,
+                int nu=nmesh, int nv=nu,
                 splinetype[] usplinetype, splinetype[] vsplinetype=Spline,
                 bool cond(pair z)=null)
 {
-  return surface(f,uniform(a.x,b.x,nu),uniform(a.y,b.y,nv),
-                 usplinetype,vsplinetype,cond);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nu);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,nv);
+  return surface(pic,f,x,y,usplinetype,vsplinetype,cond);
 }
 
 // return the surface described by a real function f over box(a,b),
 // interpolated linearly.
-surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, real f(pair z), pair a, pair b,
+                int nx=nmesh, int ny=nx, bool cond(pair z)=null)
 {
-  return surface(new triple(pair z) {return (z.x,z.y,f(z));},a,b,nx,ny,cond);
+  return surface(pic,new triple(pair z) {return (z.x,z.y,f(z));},a,b,nx,ny,
+                 cond);
 }
 
 // return the surface described by a real function f over box(a,b),
 // interpolated with xsplinetype and ysplinetype.
-surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx,
-                splinetype xsplinetype, splinetype ysplinetype=xsplinetype,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, real f(pair z), pair a, pair b,
+                int nx=nmesh, int ny=nx, splinetype xsplinetype,
+                splinetype ysplinetype=xsplinetype, bool cond(pair z)=null)
 {
   bool[][] active;
   bool all=cond == null;
@@ -2052,8 +2111,8 @@
   pair dz=(dx,dy);
 
   real[][] F=new real[nx+1][ny+1];
-  real[] x=uniform(a.x,b.x,nx);
-  real[] y=uniform(a.y,b.y,ny);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nx);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,ny);
   for(int i=0; i <= nx; ++i) {
     bool[] activei=all ? null : active[i];
     real[] Fi=F[i];
@@ -2064,7 +2123,7 @@
       if(!all) activei[j]=cond(z);
     }
   }
-  return surface(F,x,y,xsplinetype,ysplinetype,active);
+  return surface(pic,F,x,y,xsplinetype,ysplinetype,active);
 }
 
 guide3[][] lift(real f(real x, real y), guide[][] g,
@@ -2128,7 +2187,7 @@
        render,interaction);
 }
 
-real maxlength(triple f(pair z), pair a, pair b, int nu, int nv) 
+real maxlength(triple f(pair z), pair a, pair b, int nu, int nv)
 {
   return min(abs(f((b.x,a.y))-f(a))/nu,abs(f((a.x,b.y))-f(a))/nv);
 }

Modified: trunk/Master/texmf-dist/asymptote/graph_splinetype.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/graph_splinetype.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/graph_splinetype.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -13,7 +13,7 @@
     abort(text+": "+string(x)+" != "+string(y));
 }
 
-void checkincreasing(real[] x) 
+void checkincreasing(real[] x)
 {
   if(!increasing(x,true))
     abort("strictly increasing array expected");
@@ -114,7 +114,7 @@
 // Standard cubic spline interpolation with the natural condition
 // s''(a)=s''(b)=0.
 // if n=2, linear interpolation is returned
-// Don't use the natural type unless the underlying function 
+// Don't use the natural type unless the underlying function
 // has zero second end points derivatives.
 real[] natural(real[] x, real[] y)
 {
@@ -186,25 +186,25 @@
 
 // Piecewise Cubic Hermite Interpolating Polynomial (PCHIP)
 // Modified MATLAB code
-// [1] Fritsch, F. N. and R. E. Carlson, 
-//      "Monotone Piecewise Cubic Interpolation," 
+// [1] Fritsch, F. N. and R. E. Carlson,
+//      "Monotone Piecewise Cubic Interpolation,"
 //      SIAM J. Numerical Analysis, Vol. 17, 1980, pp.238-246.
-// [2] Kahaner, David, Cleve Moler, Stephen Nash, 
+// [2] Kahaner, David, Cleve Moler, Stephen Nash,
 //      Numerical Methods and Software, Prentice Hall, 1988.
-real[] monotonic(real[] x, real[] y) 
+real[] monotonic(real[] x, real[] y)
 {
-  int n=x.length; 
+  int n=x.length;
   checklengths(n,y.length);
   checkincreasing(x);
-  real[] d=new real[n]; 
+  real[] d=new real[n];
   if(n > 2) {
     real[] h=new real[n-1];
     real[] del=new real[n-1];
     for(int i=0; i < n-1; ++i) {
-      h[i]=x[i+1]-x[i]; 
-      del[i]=(y[i+1]-y[i])/h[i]; 
-    } 
-    int j=0; 
+      h[i]=x[i+1]-x[i];
+      del[i]=(y[i+1]-y[i])/h[i];
+    }
+    int j=0;
     int k[]=new int[];
     for(int i=0; i < n-2; ++i)
       if((sgn(del[i])*sgn(del[i+1])) > 0) {k[j]=i; j=j+1;}
@@ -220,10 +220,10 @@
       w2[i]=(h[k[i]+1]+hs[i])/(3*hs[i]);
       dmax[i]=max(abs(del[k[i]]),abs(del[k[i]+1]));
       dmin[i]=min(abs(del[k[i]]),abs(del[k[i]+1]));
-    } 
+    }
     for(int i=0; i < n; ++i) d[i]=0;
     for(int i=0; i < j; ++i)
-      d[k[i]+1]=dmin[i]/(w1[i]*(del[k[i]]/dmax[i])+w2[i]*(del[k[i]+1]/dmax[i])); 
+      d[k[i]+1]=dmin[i]/(w1[i]*(del[k[i]]/dmax[i])+w2[i]*(del[k[i]+1]/dmax[i]));
     d[0]=((2*h[0]+h[1])*del[0]-h[0]*del[1])/(h[0]+h[1]);
     if(sgn(d[0]) != sgn(del[0])) {d[0]=0;}
     else if((sgn(del[0]) != sgn(del[1])) && (abs(d[0]) > abs(3*del[0])))
@@ -238,7 +238,7 @@
     d[0]=d[1]=(y[1]-y[0])/(x[1]-x[0]);
   } else abort(morepoints);
   return d;
-} 
+}
 
 // Return standard cubic spline interpolation as a guide
 guide hermite(real[] x, real[] y, splinetype splinetype=null)

Modified: trunk/Master/texmf-dist/asymptote/grid3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/grid3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/grid3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -259,7 +259,7 @@
                        N,n,Step,step,begin,end,
                        Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };
@@ -280,7 +280,7 @@
       otg.ticks=Ticks3(-1,F,ticklabel,beginlabel,endlabel,N,n,Step,step,
                        begin,end,Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };
@@ -301,7 +301,7 @@
       otg.ticks=Ticks3(1,F,ticklabel,beginlabel,endlabel,N,n,Step,step,
                        begin,end,Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };

Modified: trunk/Master/texmf-dist/asymptote/interpolate.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/interpolate.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/interpolate.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,8 +7,8 @@
 // and values y_0,...,y_n in the array y,
 
 // hdiffdiv(x,y,dyp) computes Newton's Divided Difference for
-// Hermite interpolation where dyp={dy_0,...,dy_n}. 
-// 
+// Hermite interpolation where dyp={dy_0,...,dy_n}.
+//
 // fhorner(x,coeff) uses Horner's rule to compute the polynomial
 // a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+...+a_n(x-x_0)..(x-x_{n-1}),
 // where coeff={a_0,a_1,...,a_n}.
@@ -54,7 +54,7 @@
     return s;
   };
 }
-      
+
 // Newton's Divided Difference method: n(n-1)/2 divisions, n(n-1) additions.
 horner diffdiv(real[] x, real[] y)
 {
@@ -136,5 +136,5 @@
   real[] dy=splinetype(x,y);
   return new real(real t) {
     return pwhermite(x,y,dy)(t);
-  }; 
+  };
 }

Modified: trunk/Master/texmf-dist/asymptote/labelpath3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/labelpath3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/labelpath3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -21,7 +21,7 @@
 }
 
 // Modification of the bishop frame construction contained in
-// space_tube.asy (from Philippe Ivaldi's modules). 
+// space_tube.asy (from Philippe Ivaldi's modules).
 // For noncyclic path3s only
 triple[] nextframe(path3 p, real reltimestart, triple[] start, real
                    reltimeend, int subdiv=20)
@@ -40,7 +40,7 @@
   }
   return bf[subdiv];
 }
-  
+
 surface labelpath(string s, path3 p, real angle=90, triple optional=O)
 {
   real Cos=Cos(angle);
@@ -48,10 +48,10 @@
   path[] text=texpath(Label(s,(0,0),Align,basealign));
   text=scale(1/(max(text).x-min(text).x))*text;
   path[][] decompose=containmentTree(text);
-        
+
   real[][] xpos=new real[decompose.length][2];
   surface sf;
-  for(int i=0; i < decompose.length; ++i) {// Identify positions along x-axis   
+  for(int i=0; i < decompose.length; ++i) {// Identify positions along x-axis
     xpos[i][1]=i;
     real pos0=0.5(max(decompose[i]).x+min(decompose[i]).x);
     xpos[i][0]=pos0;

Deleted: trunk/Master/texmf-dist/asymptote/latin1.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/latin1.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/latin1.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,2 +0,0 @@
-usepackage("fontenc","T1");
-usepackage("inputenc","latin1");

Modified: trunk/Master/texmf-dist/asymptote/lmfit.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/lmfit.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/lmfit.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -58,31 +58,31 @@
 private real LM_USERTOL = 30 * LM_MACHEP;
 
 restricted string lm_infmsg[] = {
-  "improper input parameters",
-  "the relative error in the sum of squares is at most tol",
-  "the relative error between x and the solution is at most tol",
-  "both errors are at most tol",
-  "fvec is orthogonal to the columns of the jacobian to machine precision",
-  "number of calls to fcn has reached or exceeded maxcall*(n+1)",
-  "ftol is too small: no further reduction in the sum of squares is possible",
-  "xtol too small: no further improvement in approximate solution x possible",
-  "gtol too small: no further improvement in approximate solution x possible",
-  "not enough memory",
-  "break requested within function evaluation"
+                                 "improper input parameters",
+                                 "the relative error in the sum of squares is at most tol",
+                                 "the relative error between x and the solution is at most tol",
+                                 "both errors are at most tol",
+                                 "fvec is orthogonal to the columns of the jacobian to machine precision",
+                                 "number of calls to fcn has reached or exceeded maxcall*(n+1)",
+                                 "ftol is too small: no further reduction in the sum of squares is possible",
+                                 "xtol too small: no further improvement in approximate solution x possible",
+                                 "gtol too small: no further improvement in approximate solution x possible",
+                                 "not enough memory",
+                                 "break requested within function evaluation"
 };
 
 restricted string lm_shortmsg[] = {
-  "invalid input",
-  "success (f)",
-  "success (p)",
-  "success (f,p)",
-  "degenerate",
-  "call limit",
-  "failed (f)",
-  "failed (p)",
-  "failed (o)",
-  "no memory",
-  "user break"
+                                   "invalid input",
+                                   "success (f)",
+                                   "success (p)",
+                                   "success (f,p)",
+                                   "degenerate",
+                                   "call limit",
+                                   "failed (f)",
+                                   "failed (p)",
+                                   "failed (o)",
+                                   "no memory",
+                                   "user break"
 };
 
 
@@ -91,7 +91,7 @@
   real[] user_t;
   real[] user_y;
   real[] user_w;
-  real user_func(real user_t_point, real[] par);  
+  real user_func(real user_t_point, real[] par);
 };
 
 
@@ -99,7 +99,7 @@
 // the int and real types
 struct lm_int_type {
   int val;
-  
+
   void operator init(int val) {
     this.val = val;
   }
@@ -108,7 +108,7 @@
 
 struct lm_real_type {
   real val;
-  
+
   void operator init(real val) {
     this.val = val;
   }
@@ -402,7 +402,7 @@
       }
       break;
     }
-    
+
     sdiag[j] = r[j * ldr + j];
     r[j * ldr + j] = x[j];
   }
@@ -508,10 +508,10 @@
     dxnorm = lm_enorm(n, wa2);
     fp_old = fp;
     fp = dxnorm - delta;
-        
+
     if (fabs(fp) <= p1 * delta || (parl == 0.0 && fp <= fp_old && fp_old < 0.0) || iter == 10)
       break;
-        
+
     for (j = 0; j < n; ++j)
       wa1[j] = diag[ipvt[j]] * wa2[ipvt[j]] / dxnorm;
 
@@ -522,12 +522,12 @@
     }
     temp = lm_enorm(n, wa1);
     parc = fp / delta / temp / temp;
-    
+
     if (fp > 0)
       parl = max(parl, par.val);
     else if (fp < 0)
       paru = min(paru, par.val);
-    
+
     par.val = max(parl, par.val + parc);
   }
 }
@@ -540,7 +540,7 @@
   static real p25 = 0.25;
   static real p75 = 0.75;
   static real p0001 = 1.0e-4;
-  
+
   nfev.val = 0;
   int iter = 1;
   lm_real_type par = lm_real_type(0);
@@ -563,7 +563,7 @@
       }
     }
   }
-  
+
   info.val = 0;
   evaluate(x, m, fvec, data, info);
   if(printout != null) printout(n, x, m, fvec, data, 0, 0, ++nfev.val);
@@ -587,7 +587,7 @@
         fjac[j * m + i] = (wa4[i] - fvec[i]) / (x[j] - temp);
       x[j] = temp;
     }
-    
+
     lm_qrfac(m, n, fjac, true, ipvt, wa1, wa2, wa3);
 
     if (iter == 1) {
@@ -695,7 +695,7 @@
         delta = pnorm / p5;
         par.val *= p5;
       }
-      
+
       if (ratio >= p0001) {
         for (j = 0; j < n; ++j) {
           x[j] = wa2[j];
@@ -735,7 +735,7 @@
 void lm_minimize(int m_dat, int n_par, real[] par, lm_evaluate_ftype evaluate, lm_print_ftype printout, lm_data_type data, lm_control_type control) {
   int n = n_par;
   int m = m_dat;
-  
+
   real[] fvec = new real[m];
   real[] diag = new real[n];
   real[] qtf = new real[n];
@@ -838,13 +838,13 @@
   int n_par = parameters.length;
   lm_evaluate_ftype evaluate = lm_evaluate_default;
   lm_print_ftype printout = control.verbose ? lm_print_default : lm_print_quiet;
-  
+
   lm_data_type data;
   data.user_t = xdata;
   data.user_y = ydata;
   data.user_w = 1 / errors;
   data.user_func = new real(real x, real[] params) {
-    return function(params, x);
+                                                    return function(params, x);
   };
 
   lm_control_type ctrl;
@@ -856,7 +856,7 @@
   ctrl.maxcall = control.maxIterations;
 
   lm_minimize(m_dat, n_par, parameters, evaluate, printout, data, ctrl);
-  
+
   return FitResult(ctrl.fnorm, ctrl.nfev.val, ctrl.info.val);
 }
 

Added: trunk/Master/texmf-dist/asymptote/map.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/map.asy	                        (rev 0)
+++ trunk/Master/texmf-dist/asymptote/map.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -0,0 +1,40 @@
+// Create a struct <name> parameterized by types <key> and <value>,
+// that maps keys to values, defaulting to the value in <default>.
+void mapTemplate(string name, string key, string value, string default)
+{
+  type(key,"Key");
+  type(value,"Value");
+  eval("Value default="+default,true);
+
+  eval("
+  struct keyValue {
+    Key key;
+    Value T;
+    void operator init(Key key) {
+      this.key=key;
+    }
+    void operator init(Key key, Value T) {
+      this.key=key;
+      this.T=T;
+    }
+  }
+
+  struct map {
+    keyValue[] M;
+    bool operator < (keyValue a, keyValue b) {return a.key < b.key;}
+
+    void add(Key key, Value T) {
+      keyValue m=keyValue(key,T);
+      M.insert(search(M,m,operator <)+1,m);
+    }
+    Value lookup(Key key) {
+      int i=search(M,keyValue(key),operator <);
+      if(i >= 0 && M[i].key == key) return M[i].T;
+      return default;
+    }
+  }
+",true);
+
+  type("map",name);
+}
+

Modified: trunk/Master/texmf-dist/asymptote/math.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/math.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/math.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -30,7 +30,7 @@
   picture pic;
   for(int i=0; i <= Nx; ++i) draw(pic,(i,0)--(i,Ny),p);
   for(int j=0; j <= Ny; ++j) draw(pic,(0,j)--(Nx,j),p);
-  return pic; 
+  return pic;
 }
 
 bool polygon(path p)
@@ -55,7 +55,7 @@
   real denom=n.x*(Q.x-P.x)+n.y*(Q.y-P.y)+n.z*(Q.z-P.z);
   return denom == 0 ? infinity : (d-n.x*P.x-n.y*P.y-n.z*P.z)/denom;
 }
-                    
+
 // Return any point on the intersection of the two planes with normals
 // n0 and n1 passing through points P0 and P1, respectively.
 // If the planes are parallel return (infinity,infinity,infinity).
@@ -293,7 +293,7 @@
     },true);
 }
 
-real interpolate(real[] x, real[] y, real x0, int i) 
+real interpolate(real[] x, real[] y, real x0, int i)
 {
   int n=x.length;
   if(n == 0) abort("Zero data points in interpolate");
@@ -317,7 +317,7 @@
 // real[] x are listed in ascending order and return y0. Values outside the
 // available data range are linearly extrapolated using the first derivative
 // at the nearest endpoint.
-real interpolate(real[] x, real[] y, real x0) 
+real interpolate(real[] x, real[] y, real x0)
 {
   return interpolate(x,y,x0,search(x,x0));
 }
@@ -378,7 +378,7 @@
   // Remove roots at numerical infinity.
   if(abs(a) <= Fuzz*(abs(b)+Fuzz*(abs(c)+Fuzz*(abs(d)+Fuzz*abs(e)))))
     return cubicroots(b,c,d,e);
-  
+
   // Detect roots at numerical zero.
   if(abs(e) <= Fuzz*(abs(d)+Fuzz*(abs(c)+Fuzz*(abs(b)+Fuzz*abs(a)))))
     return cubicroots(a,b,c,d);
@@ -388,7 +388,7 @@
   c *= ainv;
   d *= ainv;
   e *= ainv;
-  
+
   pair[] roots;
   real[] T=cubicroots(1,-2c,c^2+b*d-4e,d^2+b^2*e-b*c*d);
   if(T.length == 0) return roots;
@@ -434,13 +434,13 @@
   real[] solution=solve(AtA(A),b*A,warn=false);
   if (solution.length == 0 && warn)
     abort("Cannot compute least-squares approximation for " +
-	  "a matrix with linearly dependent columns.");
+          "a matrix with linearly dependent columns.");
   return solution;
 }
 
 // Namespace
 struct rootfinder_settings {
-  static real roottolerance = 1e-4;
+  static real roottolerance=1e-4;
 }
 
 real findroot(real f(real), real a, real b,

Modified: trunk/Master/texmf-dist/asymptote/metapost.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/metapost.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/metapost.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,7 +2,7 @@
 
 path cuttings;
 
-path cutbefore(path p, path q) 
+path cutbefore(path p, path q)
 {
   slice s=firstcut(p,q);
   cuttings=s.before;
@@ -9,7 +9,7 @@
   return s.after;
 }
 
-path cutafter(path p, path q) 
+path cutafter(path p, path q)
 {
   slice s=lastcut(p,q);
   cuttings=s.after;

Modified: trunk/Master/texmf-dist/asymptote/obj.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/obj.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/obj.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,7 +1,7 @@
 // A module for reading simple obj files with groups.
 // Authors: Jens Schwaiger and John Bowman
 //
-// Here simple means that : 
+// Here simple means that :
 //
 // 1) all vertex statements should come before the face statements;
 //

Modified: trunk/Master/texmf-dist/asymptote/ode.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/ode.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/ode.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -14,7 +14,7 @@
   int order;
   coefficients a;
   void stepDependence(real h, real c, coefficients a) {}
-   
+
   real pgrow;
   real pshrink;
   bool exponential;
@@ -54,7 +54,7 @@
   if(fabs(x) > 1) return (exp(x)-x-1)/x2;
   real x3=x2*x;
   real x5=x2*x3;
-  if(fabs(x) < 0.1) 
+  if(fabs(x) < 0.1)
     return Coeff[1]+x*Coeff[2]+x2*Coeff[3]+x3*Coeff[4]+x2*x2*Coeff[5]
       +x5*Coeff[6]+x3*x3*Coeff[7]+x5*x2*Coeff[8]+x5*x3*Coeff[9];
     else {
@@ -73,7 +73,7 @@
   real x3=x2*x;
   if(fabs(x) > 1.6) return (exp(x)-0.5*x2-x-1)/x3;
   real x5=x2*x3;
-  if(fabs(x) < 0.1) 
+  if(fabs(x) < 0.1)
     return Coeff[2]+x*Coeff[3]+x2*Coeff[4]+x3*Coeff[5]
       +x2*x2*Coeff[6]+x5*Coeff[7]+x3*x3*Coeff[8]+x5*x2*Coeff[9]
       +x5*x3*Coeff[10];
@@ -90,13 +90,13 @@
     }
 }
 
-void expfactors(real x, coefficients a) 
+void expfactors(real x, coefficients a)
 {
   for(int i=0; i < a.steps.length; ++i)
     a.factors[i]=exp(x*a.steps[i]);
   a.factors[a.steps.length]=exp(x);
 }
-      
+
 // First-Order Euler
 RKTableau Euler=RKTableau(1,new real[][], new real[] {1});
 
@@ -185,40 +185,40 @@
 
 // Fifth-Order Cash-Karp Runge-Kutta
 RKTableau RK5=RKTableau(5,new real[][] {{1/5},
-                                        {3/40,9/40},
-                                        {3/10,-9/10,6/5},
-                                        {-11/54,5/2,-70/27,35/27},
-                                        {1631/55296,175/512,575/13824,
-                                         44275/110592,253/4096}},
+                                          {3/40,9/40},
+                                            {3/10,-9/10,6/5},
+                                              {-11/54,5/2,-70/27,35/27},
+                                                {1631/55296,175/512,575/13824,
+                                                    44275/110592,253/4096}},
   new real[] {37/378,0,250/621,125/594,
-              0,512/1771},  // 5th order
+                0,512/1771},  // 5th order
   new real[] {2825/27648,0,18575/48384,13525/55296,
-              277/14336,1/4}); // 4th order
+                277/14336,1/4}); // 4th order
 
 // Fifth-Order Fehlberg Runge-Kutta
 RKTableau RK5F=RKTableau(5,new real[][] {{1/4},
-                                         {3/32,9/32},
-                                         {1932/2197,-7200/2197,7296/2197},
-                                         {439/216,-8,3680/513,-845/4104},
-                                         {-8/27,2,-3544/2565,1859/4104,
-                                          -11/40}},
+                                           {3/32,9/32},
+                                             {1932/2197,-7200/2197,7296/2197},
+                                               {439/216,-8,3680/513,-845/4104},
+                                                 {-8/27,2,-3544/2565,1859/4104,
+                                                     -11/40}},
   new real[] {16/135,0,6656/12825,28561/56430,-9/50,2/55}, // 5th order
   new real[] {25/216,0,1408/2565,2197/4104,-1/5,0}); // 4th order
 
 // Fifth-Order Dormand-Prince Runge-Kutta
 RKTableau RK5DP=RKTableau(5,new real[][] {{1/5},
-                                          {3/40,9/40},
-                                          {44/45,-56/15,32/9},
-                                          {19372/6561,-25360/2187,64448/6561,
-                                           -212/729},
-                                          {9017/3168,-355/33,46732/5247,49/176,
-                                           -5103/18656}},
+                                            {3/40,9/40},
+                                              {44/45,-56/15,32/9},
+                                                {19372/6561,-25360/2187,64448/6561,
+                                                    -212/729},
+                                                  {9017/3168,-355/33,46732/5247,49/176,
+                                                      -5103/18656}},
   new real[] {35/384,0,500/1113,125/192,-2187/6784,
-              11/84}, // 5th order
+                11/84}, // 5th order
   new real[] {5179/57600,0,7571/16695,393/640,
-              -92097/339200,187/2100,1/40}); // 4th order
+                -92097/339200,187/2100,1/40}); // 4th order
 
-real error(real error, real initial, real lowOrder, real norm, real diff) 
+real error(real error, real initial, real lowOrder, real norm, real diff)
 {
   if(initial != 0 && lowOrder != initial) {
     static real epsilon=realMin/realEpsilon;
@@ -249,7 +249,7 @@
   real[] y;
 }
 
-void write(solution S) 
+void write(solution S)
 {
   for(int i=0; i < S.t.length; ++i)
     write(S.t[i],S.y[i]);
@@ -276,7 +276,7 @@
     new real(real t, real y) {return f(t,y)-c*y;};
 
   tableau.stepDependence(h,c,tableau.a);
-      
+
   real t=a;
   real f0;
   if(tableau.a.lowOrderWeights.length == 0) dynamic=false;
@@ -293,7 +293,7 @@
       tableau.stepDependence(h,c,tableau.a);
       dt=h;
     }
- 
+
     real[] predictions={fsal ? f0 : F(t,y)};
     for(int i=0; i < tableau.a.steps.length; ++i)
       predictions.push(F(t+h*tableau.a.steps[i],
@@ -336,7 +336,7 @@
   real[][] y;
 }
 
-void write(Solution S) 
+void write(Solution S)
 {
   for(int i=0; i < S.t.length; ++i) {
     write(S.t[i],tab);
@@ -356,7 +356,7 @@
   Solution S;
   S.t=new real[] {a};
   S.y=new real[][] {copy(y)};
-      
+
   if(h == 0) {
     if(b == a) return S;
     if(n == 0) abort("Either n or h must be specified");

Modified: trunk/Master/texmf-dist/asymptote/palette.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/palette.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/palette.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,7 +5,7 @@
 typedef bounds range(picture pic, real min, real max);
 
 range Range(bool automin=false, real min=-infinity,
-            bool automax=false, real max=infinity) 
+            bool automax=false, real max=infinity)
 {
   return new bounds(picture pic, real dmin, real dmax) {
     // autoscale routine finds reasonable limits
@@ -45,7 +45,7 @@
 // Reduce color palette to approximate range of data relative to "display"
 // range => errors of 1/palette.length in resulting color space.
 pen[] adjust(picture pic, real min, real max, real rmin, real rmax,
-             pen[] palette) 
+             pen[] palette)
 {
   real dmin=pic.scale.z.T(min);
   real dmax=pic.scale.z.T(max);
@@ -100,7 +100,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,f,initial,final,palette,t*T,copy=false,antialias=antialias);
     },true);
@@ -146,7 +146,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,data,initial,final,t*T,copy=false,antialias=antialias);
     },true);
@@ -171,7 +171,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,f,width,height,initial,final,t*T,antialias=antialias);
     },true);
@@ -190,8 +190,8 @@
   real rmax=pic.scale.z.T(bounds.max);
 
   palette=adjust(pic,m,M,rmin,rmax,palette);
-  rmin=max(rmin,m);
-  rmax=min(rmax,M);
+  rmin=max(rmin,pic.scale.z.T(m));
+  rmax=min(rmax,pic.scale.z.T(M));
 
   // Crop data to allowed range and scale
   if(range != Full || pic.scale.z.scale.T != identity ||
@@ -201,6 +201,12 @@
     real M=bounds.max;
     f=map(new real(real x) {return T(min(max(x,m),M));},f);
   }
+  if(pic.scale.x.scale.T != identity || pic.scale.x.postscale.T != identity ||
+     pic.scale.y.scale.T != identity || pic.scale.y.postscale.T != identity) {
+    scalefcn Tx=pic.scale.x.T;
+    scalefcn Ty=pic.scale.y.T;
+    z=map(new pair(pair z) {return (Tx(z.x),Ty(z.y));},z);
+  }
 
   int[] edges={0,0,1};
   int N=palette.length-1;
@@ -267,13 +273,13 @@
     return Ticks(sign,format,ticklabel,beginlabel,endlabel,N,n,Step,step,
                  true,true,extend=true,pTick,ptick);
   };
-} 
+}
 
 paletteticks PaletteTicks=PaletteTicks();
 paletteticks NoTicks=new ticks(int sign=-1) {return NoTicks;};
 
-void palette(picture pic=currentpicture, Label L="", bounds bounds, 
-             pair initial, pair final, axis axis=Right, pen[] palette, 
+void palette(picture pic=currentpicture, Label L="", bounds bounds,
+             pair initial, pair final, axis axis=Right, pen[] palette,
              pen p=currentpen, paletteticks ticks=PaletteTicks,
              bool copy=true, bool antialias=false)
 {
@@ -280,7 +286,7 @@
   real initialz=pic.scale.z.T(bounds.min);
   real finalz=pic.scale.z.T(bounds.max);
   bounds mz=autoscale(initialz,finalz,pic.scale.z.scale);
-  
+
   axisT axis;
   axis(pic,axis);
   real angle=degrees(axis.align.dir);
@@ -311,11 +317,11 @@
   if(vertical && L.defaulttransform) {
     frame f;
     add(f,Label(L.s,(0,0),L.p));
-    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p)) 
+    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p))
       L.transform(rotate(90));
   }
   real[][] pdata={sequence(palette.length)};
-  
+
   transform T;
   pair Tinitial,Tfinal;
   if(vertical) {
@@ -326,12 +332,12 @@
     Tinitial=initial;
     Tfinal=final;
   }
-        
+
   pic.add(new void(frame f, transform t) {
       _image(f,pdata,Tinitial,Tfinal,palette,t*T,copy=false,
              antialias=antialias);
     },true);
-  
+
   ticklocate locate=ticklocate(initialz,finalz,pic.scale.z,mz.min,mz.max);
   axis(pic,L,g,g2,p,ticks(sgn(axis.side.x*dot(lambda,par))),locate,mz.divisor,
        true);
@@ -356,13 +362,13 @@
 pen[] Wheel(int NColors=32766)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int nintervals=6;
   if(NColors <= nintervals) NColors=nintervals+1;
   int n=-quotient(NColors,-nintervals);
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[n*nintervals];
   real ninv=1.0/n;
 
@@ -373,7 +379,7 @@
     Palette[n+i]=rgb(ininv1,0.0,1.0);
     Palette[2n+i]=rgb(0.0,ininv,1.0);
     Palette[3n+i]=rgb(0.0,1.0,ininv1);
-    Palette[4n+i]=rgb(ininv,1.0,0.0);    
+    Palette[4n+i]=rgb(ininv,1.0,0.0);
     Palette[5n+i]=rgb(1.0,ininv1,0.0);
   }
   return Palette;
@@ -383,14 +389,14 @@
 pen[] Rainbow(int NColors=32766)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int offset=1;
   int nintervals=5;
   if(NColors <= nintervals) NColors=nintervals+1;
   int n=-quotient(NColors-1,-nintervals);
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[n*nintervals+offset];
   real ninv=1.0/n;
 
@@ -400,11 +406,11 @@
     Palette[i]=rgb(ininv1,0.0,1.0);
     Palette[n+i]=rgb(0.0,ininv,1.0);
     Palette[2n+i]=rgb(0.0,1.0,ininv1);
-    Palette[3n+i]=rgb(ininv,1.0,0.0);    
+    Palette[3n+i]=rgb(ininv,1.0,0.0);
     Palette[4n+i]=rgb(1.0,ininv1,0.0);
   }
   Palette[4n+n]=rgb(1.0,0.0,0.0);
-  
+
   return Palette;
 }
 
@@ -411,26 +417,26 @@
 private pen[] BWRainbow(int NColors, bool two)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int offset=1;
   int nintervals=6;
   int divisor=3;
-  
+
   if(two) nintervals += 6;
-  
+
   int Nintervals=nintervals*divisor;
   if(NColors <= Nintervals) NColors=Nintervals+1;
   int num=NColors-offset;
   int n=-quotient(num,-Nintervals)*divisor;
   NColors=n*nintervals+offset;
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[NColors];
   real ninv=1.0/n;
 
   int k=0;
-  
+
   if(two) {
     for(int i=0; i < n; ++i) {
       real ininv=i*ninv;
@@ -444,9 +450,9 @@
     }
     k += 6n;
   }
-  
+
   if(two)
-    for(int i=0; i < n; ++i) 
+    for(int i=0; i < n; ++i)
       Palette[k+i]=rgb(1.0-i*ninv,0.0,1.0);
   else {
     int n3=-quotient(n,-3);
@@ -467,12 +473,12 @@
     real ininv1=1.0-ininv;
     Palette[k+i]=rgb(0.0,ininv,1.0);
     Palette[k+n+i]=rgb(0.0,1.0,ininv1);
-    Palette[k+2n+i]=rgb(ininv,1.0,0.0);    
+    Palette[k+2n+i]=rgb(ininv,1.0,0.0);
     Palette[k+3n+i]=rgb(1.0,ininv1,0.0);
     Palette[k+4n+i]=rgb(1.0,ininv,ininv);
   }
   Palette[k+5n]=rgb(1.0,1.0,1.0);
-  
+
   return Palette;
 }
 
@@ -484,7 +490,7 @@
   real step=(Palette.length-1)/(n-1);
   return sequence(new pen(int i) {
       return Palette[round(i*step)];
-    },n); 
+    },n);
 }
 
 // A rainbow palette tapering off to black/white at the spectrum ends,
@@ -507,7 +513,7 @@
 
 //A palette varying linearly over the specified array of pens, using
 // NColors in each interpolation interval.
-pen[] Gradient(int NColors=256 ... pen[] p) 
+pen[] Gradient(int NColors=256 ... pen[] p)
 {
   pen[] P;
   if(p.length < 2) abort("at least 2 colors must be specified");
@@ -522,7 +528,7 @@
   return P;
 }
 
-pen[] cmyk(pen[] Palette) 
+pen[] cmyk(pen[] Palette)
 {
   int n=Palette.length;
   for(int i=0; i < n; ++i)

Modified: trunk/Master/texmf-dist/asymptote/patterns.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/patterns.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/patterns.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,7 +7,7 @@
   pair pmin=min(f)-lb;
   pair pmax=max(f)+rt;
   string s="%.6f";
-  postscript(tiling,"<< /PaintType 1 /PatternType 1 /TilingType 1 
+  postscript(tiling,"<< /PaintType 1 /PatternType 1 /TilingType 1
 /BBox ["+format(s,pmin.x,"C")+" "+format(s,pmin.y,"C")+" "+
              format(s,pmax.x,"C")+" "+format(s,pmax.y,"C")+"]
 /XStep "+format(s,pmax.x-pmin.x,"C")+"
@@ -64,7 +64,7 @@
 }
 
 real hatchepsilon=1e-4;
-picture hatch(real H=5mm, pair dir=NE, pen p=currentpen) 
+picture hatch(real H=5mm, pair dir=NE, pen p=currentpen)
 {
   picture tiling;
   real theta=angle(dir);

Modified: trunk/Master/texmf-dist/asymptote/plain.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -18,13 +18,13 @@
 
 include plain_constants;
 
-access version;             
+access version;
 if(version.VERSION != VERSION) {
   warning("version","using possibly incompatible version "+
           version.VERSION+" of plain.asy"+'\n');
   nowarn("version");
 }
-   
+
 include plain_strings;
 include plain_pens;
 include plain_paths;
@@ -32,13 +32,15 @@
 include plain_margins;
 include plain_picture;
 include plain_Label;
-include plain_shipout;
 include plain_arcs;
 include plain_boxes;
+include plain_shipout;
 include plain_markers;
 include plain_arrows;
 include plain_debugger;
 
+real RELEASE=(real) split(VERSION,"-")[0];
+
 typedef void exitfcn();
 
 void updatefunction()
@@ -106,7 +108,7 @@
   });
 
 // Save the current state, so that restore will put things back in that state.
-restoreThunk save() 
+restoreThunk save()
 {
   return restore=buildRestoreThunk();
 }
@@ -132,7 +134,7 @@
 }
 
 // Save the current state, so that restore will put things back in that state.
-restoreThunk savedefaults() 
+restoreThunk savedefaults()
 {
   return restoredefaults=buildRestoreDefaults();
 }
@@ -145,7 +147,7 @@
   atexit(null);
 }
 
-// Return the sequence n,...m
+// Return the sequence n,...,m
 int[] sequence(int n, int m)
 {
   return sequence(new int(int x){return x;},m-n+1)+n;
@@ -180,6 +182,19 @@
   if(!embedded) restoredefaults();
 }
 
+// Associate a parametrized type with a name.
+void type(string type, string name)
+{
+  eval("typedef "+type+" "+name,true);
+}
+
+void mapArray(string From, string To)
+{
+  type(From,"From");
+  type(To,"To");
+  eval("To[] map(To f(From), From[] a) {return sequence(new To(int i) {return f(a[i]);},a.length);}",true);
+}
+
 // Evaluate user command line option.
 void usersetting()
 {
@@ -186,7 +201,7 @@
   eval(settings.user,true);
 }
 
-string stripsuffix(string f, string suffix=".asy") 
+string stripsuffix(string f, string suffix=".asy")
 {
   int n=rfind(f,suffix);
   if(n != -1) f=erase(f,n,-1);
@@ -231,6 +246,7 @@
 struct processtime {
   real user;
   real system;
+  real clock;
 }
 
 struct cputime {
@@ -239,21 +255,26 @@
   processtime change;
 }
 
-cputime cputime() 
+cputime cputime()
 {
   static processtime last;
   real [] a=_cputime();
   cputime cputime;
+  real clock=a[4];
   cputime.parent.user=a[0];
   cputime.parent.system=a[1];
+  cputime.parent.clock=clock;
   cputime.child.user=a[2];
   cputime.child.system=a[3];
-  real user=a[0]+a[2];
-  real system=a[1]+a[3];
+  cputime.child.clock=0;
+  real user=cputime.parent.user+cputime.child.user;
+  real system=cputime.parent.system+cputime.child.system;
   cputime.change.user=user-last.user;
   cputime.change.system=system-last.system;
+  cputime.change.clock=clock-last.clock;
   last.user=user;
   last.system=system;
+  last.clock=clock;
   return cputime;
 }
 
@@ -285,23 +306,3 @@
 }
 
 cputime();
-
-void nosetpagesize()
-{
-  static bool initialized=false;
-  if(!initialized && latex()) {
-    // Portably pass nosetpagesize option to graphicx package.
-    texpreamble("\usepackage{ifluatex}\ifluatex
-\ifx\pdfpagewidth\undefined\let\pdfpagewidth\paperwidth\fi
-\ifx\pdfpageheight\undefined\let\pdfpageheight\paperheight\fi\else
-\let\paperwidthsave\paperwidth\let\paperwidth\undefined
-\usepackage{graphicx}
-\let\paperwidth\paperwidthsave\fi");
-    initialized=true;
-  }
-}
-
-nosetpagesize();
-
-if(settings.tex == "luatex")
-  texpreamble("\input luatex85.sty");

Modified: trunk/Master/texmf-dist/asymptote/plain_Label.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_Label.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_Label.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -15,10 +15,10 @@
   real a=t.xx, b=t.xy, c=t.yx, d=t.yy;
   real arg=(a-d)^2+4b*c;
   pair delta=arg >= 0 ? sqrt(arg) : I*sqrt(-arg);
-  real trace=a+d; 
+  real trace=a+d;
   pair l1=0.5(trace+delta);
   pair l2=0.5(trace-delta);
-  
+
   if(abs(delta) < sqrtEpsilon*max(abs(l1),abs(l2))) {
     real s=abs(0.5trace);
     return (s != 0) ? scale(1/s)*t : t;
@@ -51,7 +51,7 @@
       }
     }
     return c;
-  }     
+  }
 
   pair[][] conj(pair[][] a) {
     pair[][] c=new pair[2][2];
@@ -61,7 +61,7 @@
       }
     }
     return c;
-  }     
+  }
 
   A=conj(U)*A*U;
 
@@ -70,7 +70,7 @@
     A[0][0] /= D;
     A[0][1] /= D;
   }
-  
+
   D=abs(A[1][1]);
   if(D != 0) {
     A[1][0] /= D;
@@ -155,13 +155,13 @@
   s.align=align;
   return s;
 }
-  
+
 restricted side NoSide;
 restricted side LeftSide=Relative(W);
 restricted side Center=Relative((0,0));
 restricted side RightSide=Relative(E);
 
-side operator * (real x, side s) 
+side operator * (real x, side s)
 {
   side S;
   S.align=x*s.align;
@@ -190,7 +190,7 @@
   p.relative=true;
   return p;
 }
-  
+
 restricted position BeginPoint=Relative(0);
 restricted position MidPoint=Relative(0.5);
 restricted position EndPoint=Relative(1);
@@ -227,8 +227,8 @@
   bool defaulttransform3=true;
   embed embed=Rotate; // Shift, Rotate, Slant, or Scale with embedded picture
   filltype filltype=NoFill;
-  
-  void init(string s="", string size="", position position=0, 
+
+  void init(string s="", string size="", position position=0,
             bool defaultposition=true, align align=NoAlign, pen p=nullpen,
             transform T=identity(), transform3 T3=identity4,
             bool defaulttransform=true, bool defaulttransform3=true,
@@ -246,17 +246,17 @@
     this.embed=embed;
     this.filltype=filltype;
   }
-  
+
   void initalign(string s="", string size="", align align, pen p=nullpen,
                  embed embed=Rotate, filltype filltype=NoFill) {
     init(s,size,align,p,embed,filltype);
   }
-  
+
   void transform(transform T) {
     this.T=T;
     defaulttransform=false;
   }
-  
+
   void transform3(transform3 T) {
     this.T3=copy(T);
     defaulttransform3=false;
@@ -268,12 +268,12 @@
            defaulttransform3,embed,filltype);
     return L;
   }
-  
+
   void position(position pos) {
     this.position=pos;
     defaultposition=false;
   }
-  
+
   void align(align a) {
     align.align(a);
   }
@@ -280,15 +280,15 @@
   void align(align a, align default) {
     align.align(a,default);
   }
-  
+
   void p(pen p0) {
     if(this.p == nullpen) this.p=p0;
   }
-  
+
   void filltype(filltype filltype0) {
     if(this.filltype == NoFill) this.filltype=filltype0;
   }
-  
+
   void label(frame f, transform t=identity(), pair position, pair align) {
     pen p0=p == nullpen ? currentpen : p;
     align=length(align)*unit(rotation(t)*align);
@@ -309,7 +309,7 @@
       add(f,d,filltype);
     }
   }
-  
+
   void label(picture pic=currentpicture, pair position, pair align) {
     if(s == "") return;
     pic.add(new void (frame f, transform t) {
@@ -324,7 +324,7 @@
   void out(picture pic=currentpicture) {
     label(pic,position.position,align.dir);
   }
-  
+
   void out(picture pic=currentpicture, path g) {
     bool relative=position.relative;
     real position=position.position.x;
@@ -349,7 +349,7 @@
     pair position=point(g,position);
     pic.addBox(position,position,min(f),max(f));
   }
-  
+
   void write(file file=stdout, suffix suffix=endl) {
     write(file,"\""+s+"\"");
     if(!defaultposition) write(file,", position=",position.position);
@@ -364,11 +364,11 @@
     }
     write(file,"",suffix);
   }
-  
+
   real relative() {
     return defaultposition ? 0.5 : position.position.x;
   };
-  
+
   real relative(path g) {
     return position.relative ? reltime(g,relative()) : relative();
   };
@@ -380,12 +380,12 @@
 {
   L.out(f,t);
 }
-  
+
 void add(picture pic=currentpicture, Label L)
 {
   L.out(pic);
 }
-  
+
 Label operator * (transform t, Label L)
 {
   Label tL=L.copy();
@@ -466,13 +466,13 @@
 {
   add(f,Label(L,position,align,p,filltype));
 }
-  
+
 void label(frame f, Label L, align align=NoAlign,
            pen p=currentpen, filltype filltype=NoFill)
 {
   add(f,Label(L,L.position,align,p,filltype));
 }
-  
+
 void label(picture pic=currentpicture, Label L, pair position,
            align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
 {
@@ -479,7 +479,7 @@
   Label L=Label(L,position,align,p,filltype);
   add(pic,L);
 }
-  
+
 void label(picture pic=currentpicture, Label L, align align=NoAlign,
            pen p=currentpen, filltype filltype=NoFill)
 {
@@ -494,7 +494,7 @@
   label(opic,L,L.position,align,p,filltype);
   add(pic,opic,origin);
 }
-  
+
 void label(picture pic=currentpicture, Label L, explicit path g,
            align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
 {
@@ -532,12 +532,12 @@
   return object(f);
 }
 
-object operator cast(Label L) 
+object operator cast(Label L)
 {
   return object(L);
 }
 
-object operator cast(string s) 
+object operator cast(string s)
 {
   return object(s);
 }
@@ -562,7 +562,7 @@
 }
 
 // Returns a copy of object F aligned in the direction align
-object align(object F, pair align) 
+object align(object F, pair align)
 {
   return shift(F.f,align)*F;
 }
@@ -594,7 +594,7 @@
     real fontsize;
     string font;
 
-    void operator init(Label L) 
+    void operator init(Label L)
     {
       s=replace(L.s,'\n',' ');
       fontsize=fontsize(L.p);
@@ -603,7 +603,7 @@
 
     pen pen() {return fontsize(fontsize)+fontcommand(font);}
   }
-  
+
   bool lexorder(stringfont a, stringfont b) {
     return a.s < b.s || (a.s == b.s && (a.fontsize < b.fontsize ||
                                         (a.fontsize == b.fontsize &&
@@ -615,7 +615,7 @@
 
   static stringfont[] stringlist;
   static bool adjust[];
-  
+
   path[] G;
 
   stringfont s=stringfont(L);
@@ -649,7 +649,7 @@
     label(f,L);
     return transform(box(min(f),max(f)),L);
   }
-  
+
   if(stringlist.length > 0) {
     path[][] g;
     int n=stringlist.length;
@@ -660,9 +660,9 @@
       s[i]=adjust[i] ? "."+S.s : S.s;
       p[i]=adjust[i] ? S.pen()+basealign : S.pen();
     }
-        
+
     g=tex ? _texpath(s,p) : textpath(s,p);
-      
+
     if(tex)
       for(int i=0; i < n; ++i)
         if(adjust[i]) {
@@ -670,8 +670,8 @@
           g[i].delete(0);
           g[i]=shift(0,-y)*g[i];
         }
-    
-  
+
+
     for(int i=0; i < stringlist.length; ++i) {
       stringfont s=stringlist[i];
       int j=search(stringcache,s,lexorder)+1;
@@ -686,6 +686,6 @@
 }
 
 texpath=new path[](string s, pen p, bool tex=settings.tex != "none", bool bbox=false)
-{
-  return texpath(Label(s,p));
-};
+  {
+   return texpath(Label(s,p));
+  };

Modified: trunk/Master/texmf-dist/asymptote/plain_arcs.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_arcs.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_arcs.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,5 +1,5 @@
 bool CCW=true;
-bool CW=false;                                            
+bool CW=false;
 
 path circle(pair c, real r)
 {
@@ -35,7 +35,7 @@
 {
   return arc(c,c+r*dir(angle1),c+r*dir(angle2),direction);
 }
-  
+
 // return an arc centered at c with radius r > 0 from angle1 to angle2 in
 // degrees, drawing counterclockwise if angle2 >= angle1 (otherwise clockwise).
 path arc(pair c, real r, real angle1, real angle2)

Modified: trunk/Master/texmf-dist/asymptote/plain_arrows.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_arrows.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_arrows.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -12,7 +12,7 @@
 
 real barfactor=arrowfactor;
 
-real arrowsize(pen p=currentpen) 
+real arrowsize(pen p=currentpen)
 {
   return arrowfactor*linewidth(p);
 }
@@ -53,39 +53,39 @@
 arrowhead DefaultHead;
 DefaultHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                           real size=0, real angle=arrowangle) {
-  if(size == 0) size=DefaultHead.size(p);
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair x=point(r,0);
-  real t=arctime(r,size);
-  pair y=point(r,t);
-  path base=arrowbase(r,y,t,size);
-  path left=rotate(-angle,x)*r;
-  path right=rotate(angle,x)*r;
-  real[] T=arrowbasepoints(base,left,right);
-  pair denom=point(right,T[1])-y;
-  real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
-  path left=rotate(-angle*factor,x)*r;
-  path right=rotate(angle*factor,x)*r;
-  real[] T=arrowbasepoints(base,left,right);
-  return subpath(left,0,T[0])--subpath(right,T[1],0)&cycle;
+                                                               if(size == 0) size=DefaultHead.size(p);
+                                                               bool relative=position.relative;
+                                                               real position=position.position.x;
+                                                               if(relative) position=reltime(g,position);
+                                                               path r=subpath(g,position,0);
+                                                               pair x=point(r,0);
+                                                               real t=arctime(r,size);
+                                                               pair y=point(r,t);
+                                                               path base=arrowbase(r,y,t,size);
+                                                               path left=rotate(-angle,x)*r;
+                                                               path right=rotate(angle,x)*r;
+                                                               real[] T=arrowbasepoints(base,left,right);
+                                                               pair denom=point(right,T[1])-y;
+                                                               real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
+                                                               path left=rotate(-angle*factor,x)*r;
+                                                               path right=rotate(angle*factor,x)*r;
+                                                               real[] T=arrowbasepoints(base,left,right);
+                                                               return subpath(left,0,T[0])--subpath(right,T[1],0)&cycle;
 };
 
 arrowhead SimpleHead;
 SimpleHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                          real size=0, real angle=arrowangle) {
-  if(size == 0) size=SimpleHead.size(p);
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair x=point(r,0);
-  real t=arctime(r,size);
-  path left=rotate(-angle,x)*r;
-  path right=rotate(angle,x)*r;
-  return subpath(left,t,0)--subpath(right,0,t);
+                                                              if(size == 0) size=SimpleHead.size(p);
+                                                              bool relative=position.relative;
+                                                              real position=position.position.x;
+                                                              if(relative) position=reltime(g,position);
+                                                              path r=subpath(g,position,0);
+                                                              pair x=point(r,0);
+                                                              real t=arctime(r,size);
+                                                              path left=rotate(-angle,x)*r;
+                                                              path right=rotate(angle,x)*r;
+                                                              return subpath(left,t,0)--subpath(right,0,t);
 };
 
 arrowhead HookHead(real dir=arrowdir, real barb=arrowbarb)
@@ -94,34 +94,34 @@
   a.head=new path(path g, position position=EndPoint, pen p=currentpen,
                   real size=0, real angle=arrowangle)
     {
-      if(size == 0) size=a.size(p);
-      angle=min(angle*arrowhookfactor,45);
-      bool relative=position.relative;
-      real position=position.position.x;
-      if(relative) position=reltime(g,position);
-      path r=subpath(g,position,0);
-      pair x=point(r,0);
-      real t=arctime(r,size);
-      pair y=point(r,t);
-      path base=arrowbase(r,y,t,size);
-      path left=rotate(-angle,x)*r;
-      path right=rotate(angle,x)*r;
-      real[] T=arrowbasepoints(base,left,right,1);
-      pair denom=point(right,T[1])-y;
-      real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
-      path left=rotate(-angle*factor,x)*r;
-      path right=rotate(angle*factor,x)*r;
-      real[] T=arrowbasepoints(base,left,right,1);
-      left=subpath(left,0,T[0]);
-      right=subpath(right,T[1],0);
-      pair pl0=point(left,0), pl1=relpoint(left,1);
-      pair pr0=relpoint(right,0), pr1=relpoint(right,1);
-      pair M=(pl1+pr0)/2;
-      pair v=barb*unit(M-pl0);
-      pl1=pl1+v; pr0=pr0+v;
-      left=pl0{dir(-dir+degrees(M-pl0,false))}..pl1--M;
-      right=M--pr0..pr1{dir(dir+degrees(pr1-M,false))};
-      return left--right&cycle;
+     if(size == 0) size=a.size(p);
+     angle=min(angle*arrowhookfactor,45);
+     bool relative=position.relative;
+     real position=position.position.x;
+     if(relative) position=reltime(g,position);
+     path r=subpath(g,position,0);
+     pair x=point(r,0);
+     real t=arctime(r,size);
+     pair y=point(r,t);
+     path base=arrowbase(r,y,t,size);
+     path left=rotate(-angle,x)*r;
+     path right=rotate(angle,x)*r;
+     real[] T=arrowbasepoints(base,left,right,1);
+     pair denom=point(right,T[1])-y;
+     real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
+     path left=rotate(-angle*factor,x)*r;
+     path right=rotate(angle*factor,x)*r;
+     real[] T=arrowbasepoints(base,left,right,1);
+     left=subpath(left,0,T[0]);
+     right=subpath(right,T[1],0);
+     pair pl0=point(left,0), pl1=relpoint(left,1);
+     pair pr0=relpoint(right,0), pr1=relpoint(right,1);
+     pair M=(pl1+pr0)/2;
+     pair v=barb*unit(M-pl0);
+     pl1=pl1+v; pr0=pr0+v;
+     left=pl0{dir(-dir+degrees(M-pl0,false))}..pl1--M;
+     right=M--pr0..pr1{dir(dir+degrees(pr1-M,false))};
+     return left--right&cycle;
     };
   return a;
 }
@@ -129,35 +129,35 @@
 
 arrowhead TeXHead;
 TeXHead.size=new real(pen p)
-{
-  static real hcoef=2.1; // 84/40=abs(base-hint)/base_height
-  return hcoef*arrowtexfactor*linewidth(p);
-};
+  {
+   static real hcoef=2.1; // 84/40=abs(base-hint)/base_height
+   return hcoef*arrowtexfactor*linewidth(p);
+  };
 TeXHead.arcsize=TeXHead.size;
 
 TeXHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                       real size=0, real angle=arrowangle) {
-  static real wcoef=1/84; // 1/abs(base-hint)
-  static path texhead=scale(wcoef)*
-  ((0,20)     .. controls (-75,75)    and (-108,158) ..
-   (-108,166) .. controls (-108,175)  and (-100,178) ..
-   (-93,178)  .. controls (-82,178)   and (-80,173)  ..
-   (-77,168)  .. controls (-62,134)   and (-30,61)   ..
-   (70,14)    .. controls (82,8)      and (84,7)     ..
-   (84,0)     .. controls (84,-7)     and (82,-8)    ..
-   (70,-14)   .. controls (-30,-61)   and (-62,-134) ..
-   (-77,-168) .. controls (-80,-173)  and (-82,-178) ..
-   (-93,-178) .. controls (-100,-178) and (-108,-175)..
-   (-108,-166).. controls (-108,-158) and (-75,-75)  ..
-   (0,-20)--cycle);
-  if(size == 0) size=TeXHead.size(p);
-  path gp=scale(size)*texhead;
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair y=point(r,arctime(r,size));
-  return shift(y)*rotate(degrees(-dir(r,arctime(r,0.5*size))))*gp;
+                                                           static real wcoef=1/84; // 1/abs(base-hint)
+                                                           static path texhead=scale(wcoef)*
+                                                           ((0,20)     .. controls (-75,75)    and (-108,158) ..
+                                                            (-108,166) .. controls (-108,175)  and (-100,178) ..
+                                                            (-93,178)  .. controls (-82,178)   and (-80,173)  ..
+                                                            (-77,168)  .. controls (-62,134)   and (-30,61)   ..
+                                                            (70,14)    .. controls (82,8)      and (84,7)     ..
+                                                            (84,0)     .. controls (84,-7)     and (82,-8)    ..
+                                                            (70,-14)   .. controls (-30,-61)   and (-62,-134) ..
+                                                            (-77,-168) .. controls (-80,-173)  and (-82,-178) ..
+                                                            (-93,-178) .. controls (-100,-178) and (-108,-175)..
+                                                            (-108,-166).. controls (-108,-158) and (-75,-75)  ..
+                                                            (0,-20)--cycle);
+                                                           if(size == 0) size=TeXHead.size(p);
+                                                           path gp=scale(size)*texhead;
+                                                           bool relative=position.relative;
+                                                           real position=position.position.x;
+                                                           if(relative) position=reltime(g,position);
+                                                           path r=subpath(g,position,0);
+                                                           pair y=point(r,arctime(r,size));
+                                                           return shift(y)*rotate(degrees(-dir(r,arctime(r,0.5*size))))*gp;
 };
 TeXHead.defaultfilltype=new filltype(pen p) {return Fill(p);};
 
@@ -169,7 +169,7 @@
     position *= arclength(g);
     if(center) position += 0.5*size;
     position=arctime(g,position);
-  } else if(center) 
+  } else if(center)
     position=arctime(g,arclength(subpath(g,0,position))+0.5*size);
   return position;
 }
@@ -251,7 +251,7 @@
       drawarrow(f,arrowhead,t*g,p,size,angle,filltype,position,forwards,margin,
                 center);
     });
-  
+
   pic.addPath(g,p);
 
   real position=position(position,size,g,center);
@@ -275,7 +275,7 @@
   pic.add(new void(frame f, transform t) {
       drawarrow2(f,arrowhead,t*g,p,size,angle,filltype,margin);
     });
-  
+
   pic.addPath(g,p);
 
   int L=length(g);
@@ -291,7 +291,7 @@
   Draw(opic,-0.5d--0.5d,p+solid);
   add(pic,opic,a);
 }
-                                                      
+
 picture bar(pair a, pair d, pen p=currentpen)
 {
   picture pic;
@@ -345,7 +345,7 @@
     return false;
   };
 }
-  
+
 arrowbar Arrows(arrowhead arrowhead=DefaultHead,
                 real size=0, real angle=arrowangle,
                 filltype filltype=null)
@@ -383,7 +383,7 @@
                      real size=0, real angle=arcarrowangle,
                      filltype filltype=null,
                      position position=EndPoint)=ArcArrow;
-  
+
 arrowbar MidArcArrow(arrowhead arrowhead=DefaultHead,
                      real size=0, real angle=arcarrowangle,
                      filltype filltype=null)
@@ -395,7 +395,7 @@
     return false;
   };
 }
-  
+
 arrowbar ArcArrows(arrowhead arrowhead=DefaultHead,
                    real size=0, real angle=arcarrowangle,
                    filltype filltype=null)
@@ -406,8 +406,8 @@
     return false;
   };
 }
-  
-arrowbar BeginBar(real size=0) 
+
+arrowbar BeginBar(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     real size=size == 0 ? barsize(p) : size;
@@ -416,7 +416,7 @@
   };
 }
 
-arrowbar Bar(real size=0) 
+arrowbar Bar(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     int L=length(g);
@@ -426,9 +426,9 @@
   };
 }
 
-arrowbar EndBar(real size=0)=Bar; 
+arrowbar EndBar(real size=0)=Bar;
 
-arrowbar Bars(real size=0) 
+arrowbar Bars(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     real size=size == 0 ? barsize(p) : size;
@@ -469,73 +469,73 @@
   // These if statements are ordered in such a way that the most common case
   // (with just a path and a pen) executes the least bytecode.
   if (marker == nomarker)
-  {
-    if (arrow == None && bar == None)
     {
-      if (margin == NoMargin && size(nib(p)) == 0)
-      {
-        pic.addExactAbove(
-            new void(frame f, transform t, transform T, pair, pair) {
-              _draw(f,t*T*g,p);
-            });
-        pic.addPath(g,p);
+      if (arrow == None && bar == None)
+        {
+          if (margin == NoMargin && size(nib(p)) == 0)
+            {
+              pic.addExactAbove(
+                                new void(frame f, transform t, transform T, pair, pair) {
+                                  _draw(f,t*T*g,p);
+                                });
+              pic.addPath(g,p);
 
-        // Jumping over else clauses takes time, so test if we can return
-        // here.
-        if (L == null && legend == null)
-          return;
+              // Jumping over else clauses takes time, so test if we can return
+              // here.
+              if (L == null && legend == null)
+                return;
+            }
+          else // With margin or polygonal pen.
+            {
+              _draw(pic, g, p, margin);
+            }
+        }
+      else /* arrow or bar */
+        {
+          // Note we are using & instead of && as both arrow and bar need to be
+          // called.
+          if (arrow(pic, g, p, margin) & bar(pic, g, p, margin))
+            _draw(pic, g, p, margin);
+        }
+
+      if(L != null && L.s != "") {
+        L=L.copy();
+        L.align(align);
+        L.p(p);
+        L.out(pic,g);
       }
-      else // With margin or polygonal pen.
-      {
-        _draw(pic, g, p, margin);
+
+      if(legend != null && legend.s != "") {
+        legend.p(p);
+        pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
       }
     }
-    else /* arrow or bar */
+  else /* marker != nomarker */
     {
+      if(marker != nomarker && !marker.above) marker.mark(pic,g);
+
       // Note we are using & instead of && as both arrow and bar need to be
       // called.
-      if (arrow(pic, g, p, margin) & bar(pic, g, p, margin))
-        _draw(pic, g, p, margin);
-    }
+      if ((arrow == None || arrow(pic, g, p, margin)) &
+          (bar == None || bar(pic, g, p, margin)))
+        {
+          _draw(pic, g, p, margin);
+        }
 
-    if(L != null && L.s != "") {
-      L=L.copy();
-      L.align(align);
-      L.p(p);
-      L.out(pic,g);
-    }
+      if(L != null && L.s != "") {
+        L=L.copy();
+        L.align(align);
+        L.p(p);
+        L.out(pic,g);
+      }
 
-    if(legend != null && legend.s != "") {
-      legend.p(p);
-      pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
-    }
-  }
-  else /* marker != nomarker */
-  {
-    if(marker != nomarker && !marker.above) marker.mark(pic,g);
-
-    // Note we are using & instead of && as both arrow and bar need to be
-    // called.
-    if ((arrow == None || arrow(pic, g, p, margin)) &
-        (bar == None || bar(pic, g, p, margin)))
-      {
-        _draw(pic, g, p, margin);
+      if(legend != null && legend.s != "") {
+        legend.p(p);
+        pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
       }
 
-    if(L != null && L.s != "") {
-      L=L.copy();
-      L.align(align);
-      L.p(p);
-      L.out(pic,g);
+      if(marker != nomarker && marker.above) marker.mark(pic,g);
     }
-
-    if(legend != null && legend.s != "") {
-      legend.p(p);
-      pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
-    }
-
-    if(marker != nomarker && marker.above) marker.mark(pic,g);
-  }
 }
 
 // Draw a fixed-size line about the user-coordinate 'origin'.
@@ -551,12 +551,12 @@
 
 void draw(picture pic=currentpicture, explicit path[] g, pen p=currentpen,
           Label legend=null, marker marker=nomarker)
-{ 
+{
   // This could be optimized to size and draw the entire array as a batch.
-  for(int i=0; i < g.length-1; ++i) 
+  for(int i=0; i < g.length-1; ++i)
     draw(pic,g[i],p,marker);
   if(g.length > 0) draw(pic,g[g.length-1],p,legend,marker);
-} 
+}
 
 void draw(picture pic=currentpicture, guide[] g, pen p=currentpen,
           Label legend=null, marker marker=nomarker)
@@ -621,7 +621,7 @@
 {
   if(pictures.length == 0)
     return new frame[];
- 
+
   picture all;
   size(all,pictures[0]);
   for(picture pic : pictures)

Modified: trunk/Master/texmf-dist/asymptote/plain_bounds.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_bounds.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_bounds.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,7 +4,7 @@
 // have been added, this is only an approximation since it takes the bounds of
 // their transformed bounding box.
 private void addTransformedCoords(coords2 dest, transform t,
-                          coords2 point, coords2 min, coords2 max)
+                                  coords2 point, coords2 min, coords2 max)
 {
   dest.push(t, point, point);
 
@@ -47,7 +47,7 @@
   for (coord c : src)
     addIfMaximal(dest, c.user, c.truesize);
 }
-      
+
 // Same as addIfMaximal, but testing for minimal coords.
 private void addIfMinimal(coord[] coords, real user, real truesize) {
   for (coord c : coords)
@@ -130,7 +130,7 @@
     void operator init(coord[] left, coord[] bottom,
                        coord[] right, coord[] top) {
       this.left = left;
-      this.bottom = bottom; 
+      this.bottom = bottom;
       this.right = right;
       this.top = top;
     }
@@ -197,7 +197,7 @@
 
   void addBox(pair userMin, pair userMax, pair trueMin, pair trueMax) {
     assert(!frozen);
-    this.min.push(userMin, trueMin); 
+    this.min.push(userMin, trueMin);
     this.max.push(userMax, trueMax);
   }
 
@@ -334,7 +334,7 @@
 
     addLocalsToExtremes(t, e);
   }
-    
+
   private void addLocalsToExtremes(extremes e) {
     addMinToExtremes(e, point);
     addMaxToExtremes(e, point);
@@ -466,7 +466,7 @@
       acc.pushUserCoords(min, max);
       if (pathBounds.length > 0)
         acc.push(min(pathBounds), max(pathBounds));
-      for (var pp : pathpenBounds) 
+      for (var pp : pathpenBounds)
         if(size(pp.g) > 0)
           acc.push(min(pp.g), max(pp.g));
       for (var link : links)
@@ -623,13 +623,13 @@
 
     // Get the extremal coordinates.
     extremes e = extremes();
-    
+
     real sx;
     if(xunitsize == 0) {
       if(xsize != 0) sx=calculateScaling("x",e.left,e.right,xsize,warn);
     } else sx=xunitsize;
 
-    /* Possible alternative code : 
+    /* Possible alternative code :
        real sx = xunitsize != 0 ? xunitsize :
        xsize != 0     ? calculateScaling("x", Coords.x, xsize, warn) :
        0; */
@@ -697,7 +697,7 @@
     makeMutable();
     base.append(b.base);
   }
-    
+
   void append(transform t, bounds b) {
     // makeMutable will be called by append.
     if (t == identity())
@@ -760,7 +760,7 @@
     makeMutable();
     base.yclip(Min,Max);
   }
-  
+
   void clip(pair Min, pair Max) {
     // TODO: If the user bounds have been manually altered, they may be
     // incorrect after the clip.

Modified: trunk/Master/texmf-dist/asymptote/plain_boxes.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_boxes.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_boxes.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -20,7 +20,6 @@
   pair m=min(src);
   pair M=max(src);
   pair bound=M-m;
-  int sign=filltype == NoFill ? 1 : -1;
   real a=bound.x+2*xmargin;
   real b=bound.y+2*ymargin;
   real ds=0;
@@ -90,7 +89,7 @@
   L0.position(0);
   L0.p(p);
   add(F.f,L0);
-  F.g=e(F.f,xmargin,ymargin,p,filltype);
+  F.g=e(F.f,xmargin,ymargin,p,filltype,above);
   return F;
 }
 

Modified: trunk/Master/texmf-dist/asymptote/plain_margins.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_margins.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_margins.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,7 +5,7 @@
 
 typedef marginT margin(path, pen);
 
-path trim(path g, real begin, real end) {
+path trim(path g, real begin, real end=begin) {
   real a=arctime(g,begin);
   real b=arctime(g,arclength(g)-end);
   return a <= b ? subpath(g,a,b) : point(g,a);
@@ -36,7 +36,7 @@
   };
 }
                                                       
-margin Margin(real begin, real end)
+margin Margin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -48,7 +48,7 @@
   };
 }
                                                            
-margin PenMargin(real begin, real end)
+margin PenMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -60,7 +60,7 @@
   };
 }
                                               
-margin DotMargin(real begin, real end)
+margin DotMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -73,7 +73,7 @@
   };
 }
                                                       
-margin TrueMargin(real begin, real end)
+margin TrueMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;

Modified: trunk/Master/texmf-dist/asymptote/plain_picture.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_picture.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_picture.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1355,13 +1355,14 @@
 }
 
 void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[][] p, path[] b=g,
+                 pen fillrule=currentpen, pen[][] p, path[] b=new path[],
                  pair[][] z=new pair[][], bool copy=true)
 {
+  bool compact=b.length == 0 || b[0] == nullpath;
   if(copy) {
     g=copy(g);
     p=copy(p);
-    b=copy(b);
+    if(!compact) b=copy(b);
     z=copy(z);
   }
   pic.add(new void(frame f, transform t) {
@@ -1368,7 +1369,11 @@
       pair[][] Z=new pair[z.length][];
       for(int i=0; i < z.length; ++i)
         Z[i]=t*z[i];
-      tensorshade(f,t*g,stroke,fillrule,p,t*b,Z,false);
+      path[] G=t*g;
+      if(compact)
+        tensorshade(f,G,stroke,fillrule,p,Z,false);
+      else
+        tensorshade(f,G,stroke,fillrule,p,t*b,Z,false);
     },true);
   pic.addPath(g);
 }
@@ -1375,32 +1380,20 @@
 
 void tensorshade(frame f, path[] g, bool stroke=false,
                  pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath)
+                 path b=g.length > 0 ? g[0] : nullpath, pair[] z=new pair[])
 {
-  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b);
+  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b,
+              z.length > 0 ? new pair[][] {z} : new pair[][]);
 }
 
-void tensorshade(frame f, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath, pair[] z)
-{
-  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b,new pair[][] {z});
-}
-
 void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
                  pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath)
+                 path b=nullpath, pair[] z=new pair[])
 {
-  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b);
+  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b,
+              z.length > 0 ? new pair[][] {z} : new pair[][]);
 }
 
-void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath, pair[] z)
-{
-  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b,new pair[][] {z});
-}
-
 // Smoothly shade the regions between consecutive paths of a sequence using a
 // given array of pens:
 void draw(picture pic=currentpicture, path[] g, pen fillrule=currentpen,

Modified: trunk/Master/texmf-dist/asymptote/plain_shipout.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_shipout.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_shipout.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -86,14 +86,10 @@
     }
   }
 
-  if(outformat(format) == "html") {
-    warning("htmltosvg",
-            "html output requested for 2D picture; generating svg image instead...");
-    format="svg";
-  }
-  
-  if(settings.xasy || (!implicitshipout && prefix == defaultfilename)) {
-    if(prefix == defaultfilename) {
+  bool defaultprefix=prefix==defaultfilename;
+
+  if(settings.xasy || (!implicitshipout && defaultprefix)) {
+    if(defaultprefix) {
       currentpicture.clear();
       add(f,group=false);
     }
@@ -132,8 +128,15 @@
     }
     frame f;
     transform t=pic.calculateTransform();
-    if(currentpicture.fitter == null)
-      f=pic.fit(t);
+    if(currentpicture.fitter == null) {
+      pen background=currentlight.background;
+      if(settings.outformat == "html" && background == nullpen)
+        background=white;
+      if(background != nullpen)
+        f=bbox(pic,nullpen,Fill(background));
+      else
+        f=pic.fit(t);
+    }
     else
       f=pic.fit(prefix,format,view=view,options,script,light,P);
 

Modified: trunk/Master/texmf-dist/asymptote/rationalSimplex.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/rationalSimplex.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/rationalSimplex.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,8 +1,8 @@
 // Rational simplex solver written by John C. Bowman and Pouria Ramazi, 2018.
 import rational;
 
-void simplexStandard(rational[] c, rational[][] A, int[] s=new int[],
-                     rational[] b) {}
+void simplexInit(rational[] c, rational[][] A, int[] s=new int[],
+                 rational[] b, int count) {}
 void simplexTableau(rational[][] E, int[] Bindices, int I=-1, int J=-1) {}
 void simplexPhase1(rational[] c, rational[][] A, rational[] b,
                    int[] Bindices) {}
@@ -35,7 +35,10 @@
 
   int case;
   rational[] x;
+  rational[] xStandard;
   rational cost;
+  rational[] d;
+  bool dual=false;
 
   int m,n;
   int J;
@@ -70,7 +73,7 @@
 
   int iterate(rational[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in bottom (reduced cost) row
+      // Bland's rule: first negative entry in reduced cost (bottom) row enters
       rational[] Em=E[m];
       for(J=1; J <= N; ++J)
         if(Em[J] < 0) break;
@@ -94,7 +97,7 @@
           rational r=E[i][0]/u;
           if(r <= t && (r < t || Bindices[i] < Bindices[I])) {
             t=r; I=i;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: exiting variable has smallest minimizing subscript
         }
       }
       if(I == -1)
@@ -111,8 +114,7 @@
 
   int iterateDual(rational[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in zeroth (basic variable) column
-      rational[] Em=E[m];
+      // Bland's rule: negative variable with smallest subscript exits
       int I;
       for(I=0; I < m; ++I) {
         if(E[I][0] < 0) break;
@@ -121,23 +123,30 @@
       if(I == m)
         break;
 
+      for(int i=I+1; i < m; ++i) {
+        if(E[i][0] < 0 && Bindices[i] < Bindices[I])
+          I=i;
+      }
+
+      rational[] Em=E[m];
+      rational[] EI=E[I];
       int J=0;
       rational t;
       for(int j=1; j <= N; ++j) {
-        rational u=E[I][j];
+        rational u=EI[j];
         if(u < 0) {
-          t=-E[m][j]/u;
+          t=-Em[j]/u;
           J=j;
           break;
         }
       }
       for(int j=J+1; j <= N; ++j) {
-        rational u=E[I][j];
+        rational u=EI[j];
         if(u < 0) {
-          rational r=-E[m][j]/u;
+          rational r=-Em[j]/u;
           if(r <= t && (r < t || j < J)) {
             t=r; J=j;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: smallest minimizing subscript enters
         }
       }
       if(J == 0)
@@ -157,8 +166,7 @@
   // b is a vector of length m, and c is a vector of length n.
   // Can set phase1=false if the last m columns of A form the identity matrix.
   void operator init(rational[] c, rational[][] A, rational[] b,
-                     bool phase1=true, bool dual=false) {
-    if(dual) phase1=false;
+                     bool phase1=true) {
     // Phase 1
     m=A.length;
     if(m == 0) {case=INFEASIBLE; return;}
@@ -243,7 +251,7 @@
       simplexPhase1(c,A,b,Bindices);
 
       iterate(E,n+k,Bindices);
-  
+
       if(Em[0] != 0) {
         simplexTableau(E,Bindices);
       case=INFEASIBLE;
@@ -278,7 +286,7 @@
       for(int i=0; i < m; ++i) {
         int k=Bindices[i];
         if(k > n) continue;
-        Bindices[ip]=k; 
+        Bindices[ip]=k;
         cB[ip]=c[k-1];
         rational[] Dip=D[ip];
         rational[] Ei=E[i];
@@ -319,15 +327,28 @@
 
     case=(dual ? iterateDual : iterate)(D,n,Bindices);
     simplexTableau(D,Bindices);
+
+    if(case != INFEASIBLE) {
+      x=new rational[n];
+      for(int j=0; j < n; ++j)
+        x[j]=0;
+
+      for(int k=0; k < m; ++k)
+        x[Bindices[k]-1]=D[k][0];
+    }
+
+    if(case == UNBOUNDED) {
+      d=new rational[n];
+      for(int j=0; j < n; ++j)
+        d[j]=0;
+      d[J-1]=1;
+      for(int k=0; k < m; ++k)
+        d[Bindices[k]-1]=-D[k][J];
+    }
+
     if(case != OPTIMAL)
       return;
 
-    for(int j=0; j < n; ++j)
-      x[j]=0;
-
-    for(int k=0; k < m; ++k)
-      x[Bindices[k]-1]=D[k][0];
-
     cost=-Dm[0];
   }
 
@@ -353,21 +374,21 @@
         ai[j]=Ai[j];
       }
     }
-  
+
     int k=0;
 
     bool phase1=false;
-    bool dual=count == m && all(c >= 0);
+    dual=count == m && all(c >= 0);
 
     for(int i=0; i < m; ++i) {
       rational[] ai=a[i];
       for(int j=0; j < k; ++j)
         ai[n+j]=0;
+      int si=s[i];
       if(k < count)
-        ai[n+k]=-s[i];
+        ai[n+k]=-si;
       for(int j=k+1; j < count; ++j)
         ai[n+j]=0;
-      int si=s[i];
       if(si == 0) phase1=true;
       else {
         ++k;
@@ -378,23 +399,25 @@
             for(int j=0; j < n+count; ++j)
               ai[j]=-ai[j];
           }
-        } else if(si*bi > 0) {
-          if(dual && si == 1) {
-            b[i]=-bi;
-            s[i]=-1;
-            for(int j=0; j < n+count; ++j)
-              ai[j]=-ai[j];
-          } else
-            phase1=true;
-        }
+        } else if(dual && si == 1) {
+          b[i]=-bi;
+          s[i]=-1;
+          for(int j=0; j < n+count; ++j)
+            ai[j]=-ai[j];
+        } else if(si*bi > 0)
+          phase1=true;
       }
     }
 
+    if(dual) phase1=false;
     rational[] C=concat(c,array(count,rational(0)));
-    if(count > 0) simplexStandard(C,a,b);
-    operator init(C,a,b,phase1,dual);
+    simplexInit(C,a,b,count);
+    operator init(C,a,b,phase1);
 
-    if(case == OPTIMAL && count > 0)
-      x.delete(n,n+count-1);
+    if(case != INFEASIBLE) {
+      xStandard=copy(x);
+      if(count > 0)
+        x.delete(n,n+count-1);
+    }
   }
 }

Modified: trunk/Master/texmf-dist/asymptote/simplex.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/simplex.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/simplex.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,6 +8,7 @@
   int case;
   real[] x;
   real cost;
+  bool dual=false;
 
   int m,n;
   int J;
@@ -43,7 +44,7 @@
 
   int iterate(real[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in bottom (reduced cost) row
+      // Bland's rule: first negative entry in reduced cost (bottom) row enters
       real[] Em=E[m];
       for(J=1; J <= N; ++J)
         if(Em[J] < 0) break;
@@ -67,7 +68,7 @@
           real r=E[i][0]/u;
           if(r <= t && (r < t || Bindices[i] < Bindices[I])) {
             t=r; I=i;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: exiting variable has smallest minimizing subscript
         }
       }
       if(I == -1)
@@ -82,8 +83,7 @@
 
   int iterateDual(real[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in zeroth (basic variable) column
-      real[] Em=E[m];
+      // Bland's rule: negative variable with smallest subscript exits
       int I;
       for(I=0; I < m; ++I) {
         if(E[I][0] < 0) break;
@@ -92,23 +92,30 @@
       if(I == m)
         break;
 
+      for(int i=I+1; i < m; ++i) {
+        if(E[i][0] < 0 && Bindices[i] < Bindices[I])
+          I=i;
+      }
+
+      real[] Em=E[m];
+      real[] EI=E[I];
       int J=0;
       real t;
       for(int j=1; j <= N; ++j) {
-        real u=E[I][j];
+        real u=EI[j];
         if(u < -EpsilonA) {
-          t=-E[m][j]/u;
+          t=-Em[j]/u;
           J=j;
           break;
         }
       }
       for(int j=J+1; j <= N; ++j) {
-        real u=E[I][j];
+        real u=EI[j];
         if(u < -EpsilonA) {
-          real r=-E[m][j]/u;
-          if(r <= t && (r < t || j < J)) {
+          real r=-Em[j]/u;
+          if(r < t) {
             t=r; J=j;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: smallest minimizing subscript enters
         }
       }
       if(J == 0)
@@ -125,9 +132,7 @@
   // where A is an m x n matrix, x is a vector of n non-negative numbers,
   // b is a vector of length m, and c is a vector of length n.
   // Can set phase1=false if the last m columns of A form the identity matrix.
-  void operator init(real[] c, real[][] A, real[] b, bool phase1=true,
-                     bool dual=false) {
-    if(dual) phase1=false;
+  void operator init(real[] c, real[][] A, real[] b, bool phase1=true) {
     static real epsilon=sqrt(realEpsilon);
     real normA=norm(A);
     real epsilonA=100.0*realEpsilon*normA;
@@ -324,11 +329,11 @@
       real[] ai=a[i];
       for(int j=0; j < k; ++j)
         ai[n+j]=0;
+      int si=s[i];
       if(k < count)
-        ai[n+k]=-s[i];
+        ai[n+k]=-si;
       for(int j=k+1; j < count; ++j)
         ai[n+j]=0;
-      int si=s[i];
       if(si == 0) phase1=true;
       else {
         ++k;
@@ -339,19 +344,18 @@
             for(int j=0; j < n+count; ++j)
               ai[j]=-ai[j];
           }
-        } else if(si*bi > 0) {
-          if(dual && si == 1) {
-            b[i]=-bi;
-            s[i]=-1;
-            for(int j=0; j < n+count; ++j)
-              ai[j]=-ai[j];
-          } else
-            phase1=true;
-        }
+        } else if(dual && si == 1) {
+          b[i]=-bi;
+          s[i]=-1;
+          for(int j=0; j < n+count; ++j)
+            ai[j]=-ai[j];
+        } else if(si*bi > 0)
+          phase1=true;
       }
     }
 
-    operator init(concat(c,array(count,0.0)),a,b,phase1,dual);
+    if(dual) phase1=false;
+    operator init(concat(c,array(count,0.0)),a,b,phase1);
 
     if(case == OPTIMAL && count > 0)
       x.delete(n,n+count-1);

Modified: trunk/Master/texmf-dist/asymptote/slide.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/slide.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/slide.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -309,7 +309,7 @@
 
 void center(string s, pen p=itempen)
 {
-  remark("\center "+s,p);
+  remark(center=true,"\center "+s,p);
 }
 
 void vbox(string s, pen p=itempen)

Modified: trunk/Master/texmf-dist/asymptote/slopefield.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/slopefield.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/slopefield.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -19,7 +19,6 @@
       draw(pic,(cp.x-mp,cp.y-mp*slope)--(cp.x+mp,cp.y+mp*slope),p,arrow); 
     }
   }
-  clip(pic,box(a,b));
   return pic;
 }
 

Modified: trunk/Master/texmf-dist/asymptote/three.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1065,7 +1065,7 @@
 
 triple dir(path3 p, path3 h)
 {
-  return 0.5*(dir(p)+dir(h));
+  return unit(dir(p)+dir(h));
 }
 
 // return the point on path3 p at arclength L
@@ -1880,6 +1880,14 @@
   return c >= 0 ? identity(4) : diagonal(1,-1,-1,1);
 }
 
+// Align Label with normal in direction dir.
+Label align(Label L, triple dir)
+{
+  Label L=L.copy();
+  L.transform3(align(unit(dir)));
+  return L;
+}
+
 // return a rotation that maps X,Y to the projection plane.
 transform3 transform3(projection P=currentprojection)
 {
@@ -2554,25 +2562,6 @@
     Format(t[0][3])+sep+Format(t[1][3])+sep+Format(t[2][3]);
 }
 
-void writeJavaScript(string name, string preamble, string script) 
-{
-  file out=output(name);
-  write(out,preamble);
-  if(script != "") {
-    write(out,endl);
-    file in=input(script);
-    while(true) {
-      string line=in;
-      if(eof(in)) break;
-      write(out,line,endl);
-    }
-  }
-  close(out);
-  if(settings.verbose > 1) write("Wrote "+name);
-  if(!settings.inlinetex)
-    file3.push(name);
-}
-
 pair viewportmargin(pair lambda)
 {
   return maxbound(0.5*(viewportsize-lambda),viewportmargin);
@@ -2593,7 +2582,7 @@
   if(script == "") script=defaultembed3Dscript;
 
   if(P.infinity) {
-    if(viewplanesize==0) {
+    if(viewplanesize == 0) {
       triple lambda=max3(f)-min3(f);
       pair margin=viewportmargin((lambda.x,lambda.y));
       viewplanesize=(max(lambda.x+2*margin.x,lambda.y+2*margin.y))/P.zoom;
@@ -2645,6 +2634,7 @@
   pair viewportmargin;
   transform3 T=identity4;
   picture pic2;
+  bool keepAspect=true;
   
   void operator init(frame f, real width, real height,
                      projection P=currentprojection) {
@@ -2660,6 +2650,7 @@
                      projection P=currentprojection) {
     real xsize3=pic.xsize3, ysize3=pic.ysize3, zsize3=pic.zsize3;
     bool warn=true;
+    this.keepAspect=keepAspect;
         
     if(xsize3 == 0 && ysize3 == 0 && zsize3 == 0) {
       xsize3=ysize3=zsize3=max(xsize,ysize);
@@ -2678,18 +2669,18 @@
 
     if(!P.absolute) {
       this.P=t*P;
+      if(this.P.autoadjust || this.P.infinity)
+        adjusted=adjusted | this.P.adjust(m,M);
       if(this.P.center && settings.render != 0) {
         triple target=0.5*(m+M);
         this.P.target=target;
         this.P.calculate();
       }
-      if(this.P.autoadjust || this.P.infinity) 
-        adjusted=adjusted | this.P.adjust(m,M);
     }
 
     bool scale=xsize != 0 || ysize != 0;
     bool scaleAdjust=scale && this.P.autoadjust;
-    bool noAdjust=(this.P.absolute || !scaleAdjust);
+    bool noAdjust=this.P.absolute || !scaleAdjust;
 
     if(pic.bounds3.exact && noAdjust)
       this.P.bboxonly=false;
@@ -2812,9 +2803,11 @@
       triple m=min3(S.f);
       triple M=max3(S.f);
       triple lambda=M-m;
-      S.viewportmargin=viewportmargin((lambda.x,lambda.y));
-      S.width=ceil(lambda.x+2*S.viewportmargin.x);
-      S.height=ceil(lambda.y+2*S.viewportmargin.y);
+      if(S.keepAspect) {
+        S.viewportmargin=viewportmargin((lambda.x,lambda.y));
+        S.width=ceil(lambda.x+2*S.viewportmargin.x);
+        S.height=ceil(lambda.y+2*S.viewportmargin.y);
+      }
       orthoshift=(-0.5(m.x+M.x),-0.5*(m.y+M.y),0);
       S.f=shift(orthoshift)*S.f; // Eye will be at (0,0,0)
       inv=inverse(modelview);

Modified: trunk/Master/texmf-dist/asymptote/three_light.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three_light.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three_light.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -125,7 +125,7 @@
                              rgb(0.5,0.5,0.57)},specularfactor=3,
   new triple[] {(-2,-1.5,-0.5),(2,1.1,-2.5),(-0.5,0,2)});
 
-light Headlamp=light(gray(0.8),specular=gray(0.7),
+light Headlamp=light(white,specular=gray(0.7),
                      specularfactor=3,dir(42,48));
 
 currentlight=Headlamp;

Modified: trunk/Master/texmf-dist/asymptote/three_surface.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three_surface.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three_surface.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1374,6 +1374,10 @@
             bool primitive=false)
 {
   bool straight=s.straight && s.planar;
+
+  // Planar Bezier surfaces require extra precision in WebGL
+  int digits=s.planar && !straight ? 12 : settings.digits;
+
   if(s.colors.length > 0) {
     if(prc() && light.on())
         straight=false; // PRC vertex colors (for quads only) ignore lighting
@@ -1383,7 +1387,7 @@
   
   (s.triangular ? drawbeziertriangle : draw)
     (f,s.P,center,straight,m.p,m.opacity,m.shininess,
-     m.metallic,m.fresnel0,s.colors,interaction.type,primitive);
+     m.metallic,m.fresnel0,s.colors,interaction.type,digits,primitive);
 }
 
 void _draw(frame f, path3 g, triple center=O, material m,
@@ -1500,8 +1504,18 @@
     p.push(p[0]);
     s=tensor(s);        
   } else p=s.colors(m,light);
-  tensorshade(f,box(t*s.min(P),t*s.max(P)),m.diffuse(),
-              p,t*project(s.external(),P,1),t*project(s.internal(),P));
+  path g=t*project(s.external(),P,1);
+  pair[] internal=t*project(s.internal(),P);
+  pen fillrule=m.diffuse();
+  if(inside(g,internal[0],fillrule) && inside(g,internal[1],fillrule) &&
+     inside(g,internal[2],fillrule) && inside(g,internal[3],fillrule)) {
+    if(p[0] == p[1] && p[1] == p[2] && p[2] == p[3])
+      fill(f,g,fillrule+p[0]);
+    else
+      tensorshade(f,g,fillrule,p,internal);
+  } else {
+    tensorshade(f,box(t*s.min(P),t*s.max(P)),fillrule,p,g,internal);
+  }
 }
 
 restricted pen[] nullpens={nullpen};

Modified: trunk/Master/texmf-dist/asymptote/three_tube.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three_tube.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three_tube.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -159,10 +159,10 @@
     triple c0=postcontrol(g,0);
     triple c1=precontrol(g,1);
     triple z1=point(g,1);
-    real norm=sqrtEpsilon*max(abs(z0),abs(c0),abs(c1),abs(z1));
+    real norm=sqrtEpsilon*max(abs(z0),abs(c0),abs(c1),abs(z1),r);
     surface[] s;
     void Split(triple z0, triple c0, triple c1, triple z1,
-               real depth=mantissaBits) {
+               int depth=mantissaBits) {
       if(depth > 0) {
         pair threshold(triple z0, triple c0, triple c1) {
           triple u=c1-z0;

Modified: trunk/Master/texmf-dist/asymptote/tube.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/tube.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/tube.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -14,10 +14,10 @@
 void render(path3 s, real r, void f(path3, real))
 {
   void Split(triple z0, triple c0, triple c1, triple z1, real t0=0, real t1=1,
-             real depth=mantissaBits) {
+             int depth=mantissaBits) {
     if(depth > 0) {
       real S=straightness(z0,c0,c1,z1);
-      if(S > max(tubegranularity*max(abs(z0),abs(c0),abs(c1),abs(z1)))) {
+      if(S > max(tubegranularity*max(abs(z0),abs(c0),abs(c1),abs(z1),r))) {
         --depth;
         triple m0=0.5*(z0+c0);
         triple m1=0.5*(c0+c1);

Deleted: trunk/Master/texmf-dist/asymptote/unicode.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/unicode.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/unicode.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,2 +0,0 @@
-usepackage("ucs");
-usepackage("inputenc","utf8x");

Modified: trunk/Master/texmf-dist/asymptote/version.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/version.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/version.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1 +1 @@
-string VERSION="2.65";
+string VERSION="2.69";

Modified: trunk/Master/texmf-dist/asymptote/webgl/asygl.js
===================================================================
--- trunk/Master/texmf-dist/asymptote/webgl/asygl.js	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/webgl/asygl.js	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,6 +1,6 @@
 /*@license
  AsyGL: Render Bezier patches and triangles via subdivision with WebGL.
-  Copyright 2019: John C. Bowman and Supakorn "Jamie" Rassameemasmuang
+  Copyright 2019-2020: John C. Bowman and Supakorn "Jamie" Rassameemasmuang
   University of Alberta
 
 This program is free software; you can redistribute it and/or modify
@@ -36,4 +36,4 @@
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.*/
-let vertex="\nattribute vec3 position;\n#ifdef WIDTH\nattribute float width;\n#endif\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\nattribute float materialIndex;\n#ifdef COLOR\nattribute vec4 color;\n#endif\n\nuniform mat3 normMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\n#endif\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\nvarying vec4 emissive;\n\nstruct Material {\n  vec4 diffuse,emissive,specular;\n  vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n\nvoid main(void)\n{\n  vec4 v=vec4(position,1.0);\n  gl_Position=projViewMat*v;\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\n  ViewPosition=(viewMat*v).xyz;\n#endif      \n  Normal=normalize(normal*normMat);\n        \n  Material m;\n#ifdef TRANSPARENT\n  m=Materials[int(abs(materialIndex))-1];\n  emissive=m.emissive;\n  if(materialIndex >= 0.0) {\n    diffuse=m.diffuse;\n  } else {\n    diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n  }\n#else\n  m=Materials[int(materialIndex)];\n  emissive=m.emissive;\n#ifdef COLOR\n  diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n#else\n  diffuse=m.diffuse;\n#endif\n#endif\n  specular=m.specular.rgb;\n  vec4 parameters=m.parameters;\n  roughness=1.0-parameters[0];\n  metallic=parameters[1];\n  fresnel0=parameters[2];\n#else\n  emissive=Materials[int(materialIndex)].emissive;\n#endif\n#ifdef WIDTH\n  gl_PointSize=width;\n#endif\n}\n",fragment="\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\n\nfloat Roughness2;\nvec3 normal;\n\nstruct Light {\n  vec3 direction;\n  vec3 color;\n};\n\nuniform Light Lights[Nlights];\n\nfloat NDF_TRG(vec3 h)\n{\n  float ndoth=max(dot(normal,h),0.0);\n  float alpha2=Roughness2*Roughness2;\n  float denom=ndoth*ndoth*(alpha2-1.0)+1.0;\n  return denom != 0.0 !
 ? alpha2/(denom*denom) : 0.0;\n}\n    \nfloat GGX_Geom(vec3 v)\n{\n  float ndotv=max(dot(v,normal),0.0);\n  float ap=1.0+Roughness2;\n  float k=0.125*ap*ap;\n  return ndotv/((ndotv*(1.0-k))+k);\n}\n    \nfloat Geom(vec3 v, vec3 l)\n{\n  return GGX_Geom(v)*GGX_Geom(l);\n}\n    \nfloat Fresnel(vec3 h, vec3 v, float fresnel0)\n{\n  float a=1.0-max(dot(h,v),0.0);\n  float b=a*a;\n  return fresnel0+(1.0-fresnel0)*b*b*a;\n}\n    \n// physical based shading using UE4 model.\nvec3 BRDF(vec3 viewDirection, vec3 lightDirection)\n{\n  vec3 lambertian=diffuse.rgb;\n  vec3 h=normalize(lightDirection+viewDirection);\n      \n  float omegain=max(dot(viewDirection,normal),0.0);\n  float omegali=max(dot(lightDirection,normal),0.0);\n      \n  float D=NDF_TRG(h);\n  float G=Geom(viewDirection,lightDirection);\n  float F=Fresnel(h,viewDirection,fresnel0);\n      \n  float denom=4.0*omegain*omegali;\n  float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;\n      \n  vec3 dielectric=mix(lambertian,rawReflectance*specular,F);\n  vec3 metal=rawReflectance*diffuse.rgb;\n      \n  return mix(dielectric,metal,metallic);\n}\n#endif\nvarying vec4 emissive;\n    \nvoid main(void)\n{\n#if defined(NORMAL) && nlights > 0\n  normal=normalize(Normal);\n  normal=gl_FrontFacing ? normal : -normal;\n#ifdef ORTHOGRAPHIC\n  vec3 viewDir=vec3(0.0,0.0,1.0);\n#else\n  vec3 viewDir=-normalize(ViewPosition);\n#endif\n  Roughness2=roughness*roughness;\n  vec3 color=emissive.rgb;\n  for(int i=0; i < nlights; ++i) {\n    Light Li=Lights[i];\n    vec3 L=Li.direction;\n    float cosTheta=max(dot(normal,L),0.0);\n    vec3 radiance=cosTheta*Li.color;\n    color += BRDF(viewDir,L)*radiance;\n  }\n  gl_FragColor=vec4(color,diffuse.a);\n#else\n  gl_FragColor=emissive;\n#endif\n}\n";!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var a in i)("object"==typeof exports?exports:t)[a]=i[a]}}("undefined"!=typeof self?self:this,function(){return function(t){!
 var e={};function i(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,a){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setMatrixArrayType=function(t){e.ARRAY_TYPE=t},e.toRadian=function(t){return t*r},e.equals=function(t,e){return Math.abs(t-e)<=a*Math.max(1,Math.abs(t),Math.abs(e))};var a=e.EPSILON=1e-6;e.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,e.RANDOM=Math.random;var r=Math.PI/180},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mat4=e.mat3=void 0;var a=n(i(2)),r=n(i(3));function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}e.mat3=a,e.mat4=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],d=e[8],c=d*s-o*l,m=-d*n+o*h,f=l*n-s*h,u=i*c+a*m+r*f;if(!u)return null;return u=1/u,t[0]=c*u,t[1]=(-d*a+r*l)*u,t[2]=(o*a-r*s)*u,t[3]=m*u,t[4]=(d*i-r*h)*u,t[5]=(-o*i+r*n)*u,t[6]=f*u,t[7]=(-l*i+a*h)*u,t[8]=(s*i-a*n)*u,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0))},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0]!
 =1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],d=e[8],c=e[9],m=e[10],f=e[11],u=e[12],p=e[13],v=e[14],g=e[15],w=i*o-a*s,x=i*h-r*s,M=i*l-n*s,b=a*h-r*o,A=a*l-n*o,S=r*l-n*h,P=d*p-c*u,R=d*v-m*u,T=d*g-f*u,y=c*v-m*p,D=c*g-f*p,I=m*g-f*v,z=w*I-x*D+M*y+b*T-A*R+S*P;if(!z)return null;return z=1/z,t[0]=(o*I-h*D+l*y)*z,t[1]=(r*D-a*I-n*y)*z,t[2]=(p*S-v*A+g*b)*z,t[3]=(m*A-c*S-f*b)*z,t[4]=(h*T-s*I-l*R)*z,t[5]=(i*I-r*T+n*R)*z,t[6]=(v*M-u*S-g*x)*z,t[7]=(d*S-m*M+f*x)*z,t[8]=(s*D-o*T+l*P)*z,t[9]=(a*T-i*D-n*P)*z,t[10]=(u*A-p*M+g*w)*z,t[11]=(c*M-d*A-f*w)*z,t[12]=(o*R-s*y-h*P)*z,t[13]=(i*y-a*R+r*P)*z,t[14]=(p*x-u*b-v*w)*z,t[15]=(d*b-c*x+m*w)*z,t},e.multiply=r,e.translate=function(t,e,i){var a=i[0],r=i[1],n=i[2],s=void 0,o=void 0,h=void 0,l=void 0,d=void 0,c=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0;e===t?(t[12]=e[0]*a+e[4]*r+e[8]*n+e[12],t[13]=e[1]*a+e[5]*r+e[9]*n+e[13],t[14]=e[2]*a+e[6]*r+e[10]*n+e[14],t[15]=e[3]*a+e[7]*r+e[11]*n+e[15]):(s=e[0],o=e[1],h=e[2],l=e[3],d=e[4],c=e[5],m=e[6],f=e[7],u=e[8],p=e[9],v=e[10],g=e[11],t[0]=s,t[1]=o,t[2]=h,t[3]=l,t[4]=d,t[5]=c,t[6]=m,t[7]=f,t[8]=u,t[9]=p,t[10]=v,t[11]=g,t[12]=s*a+d*r+u*n+e[12],t[13]=o*a+c*r+p*n+e[13],t[14]=h*a+m*r+v*n+e[14],t[15]=l*a+f*r+g*n+e[15]);return t},e.rotate=function(t,e,i,r){var n=r[0],s=r[1],o=r[2],h=Math.sqrt(n*n+s*s+o*o),l=void 0,d=void 0,c=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0,w=void 0,x=void 0,M=void 0,b=void 0,A=void 0,S=void 0,P=void 0,R=void 0,T=void 0,y=void 0,D=void 0,I=void 0,z=void 0,E=void 0,O=void 0;if(Math.abs(h)<a.EPSILON)return null;n*=h=1/h,s*=h,o*=h,l=Math.sin(i),d=Math.cos(i),c=1-d,m=e[0],f=e[1],u=e[2],p=e[3],v=e[4],g=e[5],w=e[6],x=e[7],M=e[8],b=e[9],A=e[10],S=e[11],P=n*n*c+d,R=s*n*c+o*l,T=o*n*c-s*l,y=n*s*c-o*l,D!
 =s*s*c+d,I=o*s*c+n*l,z=n*o*c+s*l,E=s*o*c-n*l,O=o*o*c+d,t[0]=m*P+v*R+M*T,t[1]=f*P+g*R+b*T,t[2]=u*P+w*R+A*T,t[3]=p*P+x*R+S*T,t[4]=m*y+v*D+M*I,t[5]=f*y+g*D+b*I,t[6]=u*y+w*D+A*I,t[7]=p*y+x*D+S*I,t[8]=m*z+v*E+M*O,t[9]=f*z+g*E+b*O,t[10]=u*z+w*E+A*O,t[11]=p*z+x*E+S*O,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t},e.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},e.fromRotation=function(t,e,i){var r=i[0],n=i[1],s=i[2],o=Math.sqrt(r*r+n*n+s*s),h=void 0,l=void 0,d=void 0;if(Math.abs(o)<a.EPSILON)return null;return r*=o=1/o,n*=o,s*=o,h=Math.sin(e),l=Math.cos(e),d=1-l,t[0]=r*r*d+l,t[1]=n*r*d+s*h,t[2]=s*r*d-n*h,t[3]=0,t[4]=r*n*d-s*h,t[5]=n*n*d+l,t[6]=s*n*d+r*h,t[7]=0,t[8]=r*s*d+n*h,t[9]=n*s*d-r*h,t[10]=s*s*d+l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,i,a,r,n,s){var o=1/(i-e),h=1/(r-a),l=1/(n-s);return t[0]=2*n*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*n*h,t[6]=0,t[7]=0,t[8]=(i+e)*o,t[9]=(r+a)*h,t[10]=(s+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*n*2*l,t[15]=0,t},e.ortho=function(t,e,i,a,r,n,s){var o=1/(e-i),h=1/(a-r),l=1/(n-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+i)*o,t[13]=(r+a)*h,t[14]=(s+n)*l,t[15]=1,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0));function r(t,e,i){var a=e[0],r=e[1],n=e[2],s=e[3],o=e[4],h=e[5],l=e[6],d=e[7],c=e[8],m=e[9],f=e[10],u=e[11],p=e[12],v=e[13],g=e[14],w=e[15],x=i[0],M=i[1],b=i[2],A=i[3];return t[0]=x*a+M*o+b*c+A*p,t[1]=x*r+M*h+b*m+A*v,t[2]=x*n+M*l+b*f+A*g,t[3]=x*s+M*d+b*u+A*w,x=i[4],M=i[5],b=i[6],A=i[7],t[4]=x*a+M*o+b*c+A*p,t[5]=x*r+M*h+b*m+A*v,t[6]=x*n+M*l+b*f+A*g,t[7]=x*s+M*d+b*u+A*w,x=i[8],M=i[9],b=i[10],A=i[11],t[8]=x*a+M*o+b*c+A*p,t[9]=x*r+M*h+b*m+A*v,t[10]=x*n+M*l+b*f+A*g,t[11]=x*s+M*d+b*u+A*w,x=i[12],M=i[13],b=i[14],A=i[15],t[12]=x*a+M*o+b*c+A*p,t[13!
 ]=x*r+M*h+b*m+A*v,t[14]=x*n+M*l+b*f+A*g,t[15]=x*s+M*d+b*u+A*w,t}}])});let canvasWidth,canvasHeight,b,B,angle,Zoom0,viewportmargin,zoomFactor,zoomPinchFactor,zoomPinchCap,zoomStep,shiftHoldDistance,shiftWaitTime,vibrateTime,embedded,canvas,gl,alpha,offscreen,context,maxMaterials,halfCanvasWidth,halfCanvasHeight,Zoom,P=[],Materials=[],Lights=[],Centers=[],Background=[1,1,1,1],absolute=!1,viewportshift=[0,0],nlights=0,Nmaterials=2,materials=[],pixel=.75,FillFactor=.1,maxViewportWidth=window.innerWidth,maxViewportHeight=window.innerHeight;const windowTrim=10;let lastzoom,H,zmin,zmax,size2,ArcballFactor,positionBuffer,materialBuffer,colorBuffer,indexBuffer,resizeStep=1.2,third=1/3,rotMat=mat4.create(),projMat=mat4.create(),viewMat=mat4.create(),projViewMat=mat4.create(),normMat=mat3.create(),viewMat3=mat3.create(),cjMatInv=mat4.create(),T=mat4.create(),center={x:0,y:0,z:0},shift={x:0,y:0},viewParam={xmin:0,xmax:0,ymin:0,ymax:0,zmin:0,zmax:0},remesh=!0,wireframe=0,mouseDownOrTouchActive=!1,lastMouseX=null,lastMouseY=null,touchID=null,Positions=[],Normals=[],Colors=[],Indices=[];class Material{constructor(t,e,i,a,r,n){this.diffuse=t,this.emissive=e,this.specular=i,this.shininess=a,this.metallic=r,this.fresnel0=n}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Materials["+e+"]."+i);gl.uniform4fv(i("diffuse"),new Float32Array(this.diffuse)),gl.uniform4fv(i("emissive"),new Float32Array(this.emissive)),gl.uniform4fv(i("specular"),new Float32Array(this.specular)),gl.uniform4f(i("parameters"),this.shininess,this.metallic,this.fresnel0,0)}}let indexExt,TRIANGLES,material0Data,material1Data,materialData,colorData,transparentData,triangleData,materialIndex,enumPointLight=1,enumDirectionalLight=2;class Light{constructor(t,e){this.direction=t,this.color=e}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Lights["+e+"]."+i);gl.uniform3fv(i("direction"),new Float32Array(this.direction)),gl.uniform3fv(i("color"),new Float32Array(this.color))}}function initShaders(){let t=gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);maxMaterials=!
 Math.floor((t-14)/4),Nmaterials=Math.min(Math.max(Nmaterials,Materials.length),maxMaterials),pixelShader=initShader(["WIDTH"]),materialShader=initShader(["NORMAL"]),colorShader=initShader(["NORMAL","COLOR"]),transparentShader=initShader(["NORMAL","COLOR","TRANSPARENT"])}function deleteShaders(){gl.deleteProgram(transparentShader),gl.deleteProgram(colorShader),gl.deleteProgram(materialShader),gl.deleteProgram(pixelShader)}function setBuffers(){positionBuffer=gl.createBuffer(),materialBuffer=gl.createBuffer(),colorBuffer=gl.createBuffer(),indexBuffer=gl.createBuffer()}function noGL(){gl||alert("Could not initialize WebGL")}function saveAttributes(){let t=window.top.document.asygl[alpha];t.gl=gl,t.nlights=Lights.length,t.Nmaterials=Nmaterials,t.maxMaterials=maxMaterials,t.pixelShader=pixelShader,t.materialShader=materialShader,t.colorShader=colorShader,t.transparentShader=transparentShader}function restoreAttributes(){let t=window.top.document.asygl[alpha];gl=t.gl,nlights=t.nlights,Nmaterials=t.Nmaterials,maxMaterials=t.maxMaterials,pixelShader=t.pixelShader,materialShader=t.materialShader,colorShader=t.colorShader,transparentShader=t.transparentShader}function initGL(){if(alpha=Background[3]<1,embedded){let t=window.top.document;null==t.asygl&&(t.asygl=Array(2)),context=canvas.getContext("2d"),(offscreen=t.offscreen)||(offscreen=t.createElement("canvas"),t.offscreen=offscreen),t.asygl[alpha]&&t.asygl[alpha].gl?(restoreAttributes(),(Lights.length!=nlights||Math.min(Materials.length,maxMaterials)>Nmaterials)&&(initShaders(),saveAttributes())):((gl=offscreen.getContext("webgl",{alpha:alpha}))||noGL(),initShaders(),t.asygl[alpha]={},saveAttributes())}else(gl=canvas.getContext("webgl",{alpha:alpha}))||noGL(),initShaders();setBuffers(),indexExt=gl.getExtension("OES_element_index_uint"),TRIANGLES=gl.TRIANGLES,material0Data=new vertexBuffer(gl.POINTS),material1Data=new vertexBuffer(gl.LINES),materialData=new vertexBuffer,colorData=new vertexBuffer,transparentData=new vertexBuffer,triangleData=new vertexBuffer}function get!
 Shader(t,e,i,a=[]){let r=`#version 100\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n#else\n  precision mediump float;\n#endif\n  #define nlights ${0==wireframe?Lights.length:0}\n\n  const int Nlights=${Math.max(Lights.length,1)};\n\n  #define Nmaterials ${Nmaterials}\n`;orthographic&&(r+="#define ORTHOGRAPHIC\n"),a.forEach(t=>r+="#define "+t+"\n");let n=t.createShader(i);return t.shaderSource(n,r+e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)}function drawBuffer(t,e,i=t.indices){if(0==t.indices.length)return;let a=e!=pixelShader;setUniforms(t,e),gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(t.vertices),gl.STATIC_DRAW),gl.vertexAttribPointer(positionAttribute,3,gl.FLOAT,!1,a?24:16,0),a&&Lights.length>0?gl.vertexAttribPointer(normalAttribute,3,gl.FLOAT,!1,24,12):pixel&&gl.vertexAttribPointer(widthAttribute,1,gl.FLOAT,!1,16,12),gl.bindBuffer(gl.ARRAY_BUFFER,materialBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Int16Array(t.materialIndices),gl.STATIC_DRAW),gl.vertexAttribPointer(materialAttribute,1,gl.SHORT,!1,2,0),e!=colorShader&&e!=transparentShader||(gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Uint8Array(t.colors),gl.STATIC_DRAW),gl.vertexAttribPointer(colorAttribute,4,gl.UNSIGNED_BYTE,!0,0,0)),gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indexBuffer),gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexExt?new Uint32Array(i):new Uint16Array(i),gl.STATIC_DRAW),gl.drawElements(a?wireframe?gl.LINES:t.type:gl.POINTS,i.length,indexExt?gl.UNSIGNED_INT:gl.UNSIGNED_SHORT,0)}class vertexBuffer{constructor(t){this.type=t||TRIANGLES,this.clear()}clear(){this.vertices=[],this.materialIndices=[],this.colors=[],this.indices=[],this.nvertices=0,this.materials=[],this.materialTable=[]}vertex(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.nver!
 tices++}Vertex(t,e,i=[0,0,0,0]){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.colors.push(i[0]),this.colors.push(i[1]),this.colors.push(i[2]),this.colors.push(i[3]),this.nvertices++}vertex0(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e),this.materialIndices.push(materialIndex),this.nvertices++}iVertex(t,e,i,a=[0,0,0,0]){let r=6*t;this.vertices[r]=e[0],this.vertices[r+1]=e[1],this.vertices[r+2]=e[2],this.vertices[r+3]=i[0],this.vertices[r+4]=i[1],this.vertices[r+5]=i[2],this.materialIndices[t]=materialIndex;let n=4*t;this.colors[n]=a[0],this.colors[n+1]=a[1],this.colors[n+2]=a[2],this.colors[n+3]=a[3],this.indices.push(t)}append(t){append(this.vertices,t.vertices),append(this.materialIndices,t.materialIndices),append(this.colors,t.colors),appendOffset(this.indices,t.indices,this.nvertices),this.nvertices+=t.nvertices}}function append(t,e){let i=t.length,a=e.length;t.length+=a;for(let r=0;r<a;++r)t[i+r]=e[r]}function appendOffset(t,e,i){let a=t.length,r=e.length;t.length+=e.length;for(let n=0;n<r;++n)t[a+n]=e[n]+i}class Geometry{constructor(){this.data=new vertexBuffer,this.Onscreen=!1,this.m=[]}offscreen(t){let e=projViewMat,i=t[0],a=i[0],r=i[1],n=i[2],s=1/(e[3]*a+e[7]*r+e[11]*n+e[15]);this.x=this.X=(e[0]*a+e[4]*r+e[8]*n+e[12])*s,this.y=this.Y=(e[1]*a+e[5]*r+e[9]*n+e[13])*s;for(let i=1,a=t.length;i<a;++i){let a=t[i],r=a[0],n=a[1],s=a[2],o=1/(e[3]*r+e[7]*n+e[11]*s+e[15]),h=(e[0]*r+e[4]*n+e[8]*s+e[12])*o,l=(e[1]*r+e[5]*n+e[9]*s+e[13])*o;h<this.x?this.x=h:h>this.X&&(this.X=h),l<this.y?this.y=l:l>this.Y&&(this.Y=l)}return(this.X<-1.01||this.x>1.01||this.Y<-1.01||this.y>1.01)&&(this.Onscreen=!1,!0)}T(t){let e=this.c[0],i=this.c[1],a=this.c[2],r=t[0]-e,n=t[1]-i,s=t[2]-a;return[r*normMat[0]+n*normMat[3]+s*normMat[6]+e,r*normMat[1]+n*normMat[4]+s*normMat[7]+i,r*normMat[2]+n*normMat[5]+s*normMat[8]+a]}Tcorn!
 ers(t,e){return[this.T(t),this.T([t[0],t[1],e[2]]),this.T([t[0],e[1],t[2]]),this.T([t[0],e[1],e[2]]),this.T([e[0],t[1],t[2]]),this.T([e[0],t[1],e[2]]),this.T([e[0],e[1],t[2]]),this.T(e)]}setMaterial(t,e){null==t.materialTable[this.MaterialIndex]&&(t.materials.length>=Nmaterials&&e(),t.materialTable[this.MaterialIndex]=t.materials.length,t.materials.push(Materials[this.MaterialIndex])),materialIndex=t.materialTable[this.MaterialIndex]}render(){let t;if(this.setMaterialIndex(),0==this.CenterIndex?t=corners(this.Min,this.Max):(this.c=Centers[this.CenterIndex-1],t=this.Tcorners(this.Min,this.Max)),this.offscreen(t))return void this.data.clear();let e,i=this.controlpoints;if(0==this.CenterIndex){if(!remesh&&this.Onscreen)return void this.append();e=i}else{let t=i.length;e=Array(t);for(let a=0;a<t;++a)e[a]=this.T(i[a])}let a=orthographic?1:this.Min[2]/B[2],r=pixel*Math.hypot(a*(viewParam.xmax-viewParam.xmin),a*(viewParam.ymax-viewParam.ymin))/size2;this.res2=r*r,this.Epsilon=FillFactor*r,this.data.clear(),this.Onscreen=!0,this.process(e)}}class BezierPatch extends Geometry{constructor(t,e,i,a,r,n){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.color=n,this.CenterIndex=e;let s=t.length;if(n){let t=n[0][3]+n[1][3]+n[2][3];this.transparent=16==s||4==s?t+n[3][3]<1020:t<765}else this.transparent=Materials[i].diffuse[3]<1;this.MaterialIndex=i,this.vertex=this.transparent?this.data.Vertex.bind(this.data):this.data.vertex.bind(this.data),this.L2norm(this.controlpoints)}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.color?this.setMaterial(colorData,drawColor):this.setMaterial(materialData,drawMaterial)}L2norm(t){let e=t[0];this.epsilon=0;let i=t.length;for(let a=1;a<i;++a)this.epsilon=Math.max(this.epsilon,abs2([t[a][0]-e[0],t[a][1]-e[1],t[a][2]-e[2]]));this.epsilon*=Number.EPSILON}processTriangle(t){let e=t[0],i=t[1],a=t[2],r=unit(cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-e[0],a[1]-e[1],a[2]-e[2]]));if(!this.offscreen([e,i,a])){let t,n,s;this.color?(t=this.data.Vertex(e,r!
 ,this.color[0]),n=this.data.Vertex(i,r,this.color[1]),s=this.data.Vertex(a,r,this.color[2])):(t=this.vertex(e,r),n=this.vertex(i,r),s=this.vertex(a,r)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(t)),this.append()}}processQuad(t){let e=t[0],i=t[1],a=t[2],r=t[3],n=cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-i[0],a[1]-i[1],a[2]-i[2]]),s=cross([a[0]-r[0],a[1]-r[1],a[2]-r[2]],[r[0]-e[0],r[1]-e[1],r[2]-e[2]]),o=unit([n[0]+s[0],n[1]+s[1],n[2]+s[2]]);if(!this.offscreen([e,i,a,r])){let t,n,s,h;this.color?(t=this.data.Vertex(e,o,this.color[0]),n=this.data.Vertex(i,o,this.color[1]),s=this.data.Vertex(a,o,this.color[2]),h=this.data.Vertex(r,o,this.color[3])):(t=this.vertex(e,o),n=this.vertex(i,o),s=this.vertex(a,o),h=this.vertex(r,o)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(h)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(h),this.data.indices.push(h),this.data.indices.push(t)),this.append()}}curve(t,e,i,a,r){new BezierCurve([t[e],t[i],t[a],t[r]],0,materialIndex,this.Min,this.Max).render()}process(t){if(this.transparent&&1!=wireframe&&(materialIndex=this.color?-1-materialIndex:1+materialIndex),10==t.length)return this.process3(t);if(3==t.length)return this.processTriangle(t);if(4==t.length)return this.processQuad(t);if(1==wireframe)return this.curve(t,0,4,8,12),this.curve(t,12,13,14,15),this.curve(t,15,11,7,3),void this.curve(t,3,2,1,0);let e=t[0],i=t[3],a=t[12],r=t[15],n=this.normal(i,t[2],t[1],e,t[4],t[8],a);abs2(n)<this.epsilon&&abs2(n=this.normal(i,t[2],t[1],e,t[13],t[14],r))<this.epsilon&&(n=this.normal(r,t[11],t[7],i,t[4],t[8],a));let s=this.normal(e,t[4],t[8],a,t[13],t[14],r);abs2(s)<th!
 is.epsilon&&abs2(s=this.normal(e,t[4],t[8],a,t[11],t[7],i))<this.epsilon&&(s=this.normal(i,t[2],t[1],e,t[13],t[14],r));let o=this.normal(a,t[13],t[14],r,t[11],t[7],i);abs2(o)<this.epsilon&&abs2(o=this.normal(a,t[13],t[14],r,t[2],t[1],e))<this.epsilon&&(o=this.normal(e,t[4],t[8],a,t[11],t[7],i));let h=this.normal(r,t[11],t[7],i,t[2],t[1],e);if(abs2(h)<this.epsilon&&abs2(h=this.normal(r,t[11],t[7],i,t[4],t[8],a))<this.epsilon&&(h=this.normal(a,t[13],t[14],r,t[2],t[1],e)),this.color){let l=this.color[0],d=this.color[1],c=this.color[2],m=this.color[3],f=this.data.Vertex(e,n,l),u=this.data.Vertex(a,s,d),p=this.data.Vertex(r,o,c),v=this.data.Vertex(i,h,m);this.Render(t,f,u,p,v,e,a,r,i,!1,!1,!1,!1,l,d,c,m)}else{let l=this.vertex(e,n),d=this.vertex(a,s),c=this.vertex(r,o),m=this.vertex(i,h);this.Render(t,l,d,c,m,e,a,r,i,!1,!1,!1,!1)}this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):this.color?colorData.append(this.data):materialData.append(this.data)}Render(t,e,i,a,r,n,s,o,h,l,d,c,m,f,u,p,v){let g=this.Distance(t);if(g[0]<this.res2&&g[1]<this.res2)this.offscreen([n,s,o])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a))),this.offscreen([n,o,h])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(a),this.data.indices.push(r)):(this.data.indices.push(a),this.data.indices.push(r),this.data.indices.push(r),this.data.indices.push(e)));else{if(this.offscreen(t))return;let w=t[0],x=t[3],M=t[12],b=t[15];if(g[0]<this.res2){let g=new Split3(w,t[1],t[2],x),A=new Split3(t[4],t[5],t[6],t[7]),S=new Split3(t[8],t[9],t[10],t[11]),P=new Split3(M,t[13],t[14],b),R=[w,g.m0,g.m3,g.m5,t[4],A.m0,A.m3,A.m5,t[8],S.m0,S.m3,S.m5,M,P.m0,P.m3,P.m5],T=[g.m5,g.m4,g.m2,x,A.m5,A.m4,A.m2,t[7],S.m5,S.m4,S.m2,t[11],P.m5,P.m4,P.m2,b],y=this.normal(R[12],R[13],R[14],R[15],R[11],R[7],R[3]);abs2(y)<=this.epsilon&&abs2(y=this.normal(R[12],R[13],R[1!
 4],R[15],R[2],R[1],R[0]))<=this.epsilon&&(y=this.normal(R[0],R[4],R[8],R[12],R[11],R[7],R[3]));let D=this.normal(T[3],T[2],T[1],T[0],T[4],T[8],T[12]);abs2(D)<=this.epsilon&&abs2(D=this.normal(T[3],T[2],T[1],T[0],T[13],T[14],T[15]))<=this.epsilon&&(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]));let I=this.Epsilon,z=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!d)if(d=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(T[12],T[8],T[4],T[0]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}else z=R[15];let E=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(w,t[1],t[2],x)<this.res2){let t=unit(this.differential(R[3],R[7],R[11],R[15]));E=[E[0]-I*t[0],E[1]-I*t[1],E[2]-I*t[2]]}else E=T[0];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(u[e]+p[e]),g[e]=.5*(v[e]+f[e]);let w=this.data.Vertex(z,y,t),x=this.data.Vertex(E,D,g);this.Render(R,e,i,w,x,n,s,z,E,l,d,!1,m,f,u,t,g),this.Render(T,x,w,a,r,E,z,o,h,!1,d,c,m,g,t,p,v)}else{let t=this.vertex(z,y),f=this.vertex(E,D);this.Render(R,e,i,t,f,n,s,z,E,l,d,!1,m),this.Render(T,f,t,a,r,E,z,o,h,!1,d,c,m)}return}if(g[1]<this.res2){let g=new Split3(w,t[4],t[8],M),A=new Split3(t[1],t[5],t[9],t[13]),S=new Split3(t[2],t[6],t[10],t[14]),P=new Split3(x,t[7],t[11],b),R=[w,t[1],t[2],x,g.m0,A.m0,S.m0,P.m0,g.m3,A.m3,S.m3,P.m3,g.m5,A.m5,S.m5,P.m5],T=[g.m5,A.m5,S.m5,P.m5,g.m4,A.m4,S.m4,P.m4,g.m2,A.m2,S.m2,P.m2,M,t[13],t[14],b],y=this.normal(R[0],R[4],R[8],R[12],R[13],R[14],R[15]);abs2(y)<=this.epsilon&&abs2(y=this.normal(R[0],R[4],R[8],R[12],R[11],R[7],R[3]))<=this.epsilon&&(y=this.normal(R[3],R[2],R[1],R[0],R[13],R[14],R[15]));let D=this.normal(T[15],T[11],T[7],T[3],T[2],T[1],T[0]);abs2(D)<=this.epsilon&&abs2(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]))<=this.epsilon&&(D=this.normal(T[12],T[13],T[14],T[15],T[2],T[1],T[0]));let I=this.Epsilon,z=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(w,t[4],t[8],M)<this.res2){let t=unit(this.differential(T[0],T[1],T[2],T[3]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}el!
 se z=R[12];let E=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!c)if(c=Straightness(b,t[11],t[7],x)<this.res2){let t=unit(this.differential(R[15],R[14],R[13],R[12]));E=[E[0]-I*t[0],E[1]-I*t[1],E[2]-I*t[2]]}else E=T[3];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(p[e]+v[e]);let w=this.data.Vertex(z,y,t),x=this.data.Vertex(E,D,g);this.Render(R,e,w,x,r,n,z,E,h,l,!1,c,m,f,t,g,v),this.Render(T,w,i,a,x,z,s,o,E,l,d,c,!1,t,u,p,g)}else{let t=this.vertex(z,y),f=this.vertex(E,D);this.Render(R,e,t,f,r,n,z,E,h,l,!1,c,m),this.Render(T,t,i,a,f,z,s,o,E,l,d,c,!1)}return}let A=new Split3(w,t[1],t[2],x),S=new Split3(t[4],t[5],t[6],t[7]),P=new Split3(t[8],t[9],t[10],t[11]),R=new Split3(M,t[13],t[14],b),T=new Split3(w,t[4],t[8],M),y=new Split3(A.m0,S.m0,P.m0,R.m0),D=new Split3(A.m3,S.m3,P.m3,R.m3),I=new Split3(A.m5,S.m5,P.m5,R.m5),z=new Split3(A.m4,S.m4,P.m4,R.m4),E=new Split3(A.m2,S.m2,P.m2,R.m2),O=new Split3(x,t[7],t[11],b),L=[w,A.m0,A.m3,A.m5,T.m0,y.m0,D.m0,I.m0,T.m3,y.m3,D.m3,I.m3,T.m5,y.m5,D.m5,I.m5],N=[T.m5,y.m5,D.m5,I.m5,T.m4,y.m4,D.m4,I.m4,T.m2,y.m2,D.m2,I.m2,M,R.m0,R.m3,R.m5],_=[I.m5,z.m5,E.m5,O.m5,I.m4,z.m4,E.m4,O.m4,I.m2,z.m2,E.m2,O.m2,R.m5,R.m4,R.m2,b],B=[A.m5,A.m4,A.m2,x,I.m0,z.m0,E.m0,O.m0,I.m3,z.m3,E.m3,O.m3,I.m5,z.m5,E.m5,O.m5],V=L[15],C=this.normal(L[0],L[4],L[8],L[12],L[13],L[14],L[15]);abs2(C)<this.epsilon&&abs2(C=this.normal(L[0],L[4],L[8],L[12],L[11],L[7],L[3]))<this.epsilon&&(C=this.normal(L[3],L[2],L[1],L[0],L[13],L[14],L[15]));let F=this.normal(N[12],N[13],N[14],N[15],N[11],N[7],N[3]);abs2(F)<this.epsilon&&abs2(F=this.normal(N[12],N[13],N[14],N[15],N[2],N[1],N[0]))<this.epsilon&&(F=this.normal(N[0],N[4],N[8],N[12],N[11],N[7],N[3]));let H=this.normal(_[15],_[11],_[7],_[3],_[2],_[1],_[0]);abs2(H)<this.epsilon&&abs2(H=this.normal(_[15],_[11],_[7],_[3],_[4],_[8],_[12]))<this.epsilon&&(H=this.normal(_[12],_[13],_[14],_[15],_[2],_[1],_[0]));let G=this.normal(B[3],B[2],B[1],B[0],B[4],B[8],B[12]);abs2(G)<this.epsilon&&abs2(G=this.normal(B[3],B[2],B[1],B[0],B[13],B[14],B[15]))<t!
 his.epsilon&&(G=this.normal(B[15],B[11],B[7],B[3],B[4],B[8],B[12]));let U=this.normal(_[3],_[2],_[1],V,_[4],_[8],_[12]),W=this.Epsilon,Y=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(w,t[4],t[8],M)<this.res2){let t=unit(this.differential(N[0],N[1],N[2],N[3]));Y=[Y[0]-W*t[0],Y[1]-W*t[1],Y[2]-W*t[2]]}else Y=L[12];let j=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!d)if(d=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(_[12],_[8],_[4],_[0]));j=[j[0]-W*t[0],j[1]-W*t[1],j[2]-W*t[2]]}else j=N[15];let k=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!c)if(c=Straightness(b,t[11],t[7],x)<this.res2){let t=unit(this.differential(B[15],B[14],B[13],B[12]));k=[k[0]-W*t[0],k[1]-W*t[1],k[2]-W*t[2]]}else k=_[3];let Z=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(w,t[1],t[2],x)<this.res2){let t=unit(this.differential(L[3],L[7],L[11],L[15]));Z=[Z[0]-W*t[0],Z[1]-W*t[1],Z[2]-W*t[2]]}else Z=B[0];if(f){let t=Array(4),g=Array(4),w=Array(4),x=Array(4),M=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(u[e]+p[e]),w[e]=.5*(p[e]+v[e]),x[e]=.5*(v[e]+f[e]),M[e]=.5*(t[e]+w[e]);let b=this.data.Vertex(Y,C,t),A=this.data.Vertex(j,F,g),S=this.data.Vertex(k,H,w),P=this.data.Vertex(Z,G,x),R=this.data.Vertex(V,U,M);this.Render(L,e,b,R,P,n,Y,V,Z,l,!1,!1,m,f,t,M,x),this.Render(N,b,i,A,R,Y,s,j,V,l,d,!1,!1,t,u,g,M),this.Render(_,R,A,a,S,V,j,o,k,!1,d,c,!1,M,g,p,w),this.Render(B,P,R,S,r,Z,V,k,h,!1,!1,c,m,x,M,w,v)}else{let t=this.vertex(Y,C),f=this.vertex(j,F),u=this.vertex(k,H),p=this.vertex(Z,G),v=this.vertex(V,U);this.Render(L,e,t,v,p,n,Y,V,Z,l,!1,!1,m),this.Render(N,t,i,f,v,Y,s,j,V,l,d,!1,!1),this.Render(_,v,f,a,u,V,j,o,k,!1,d,c,!1),this.Render(B,p,v,u,r,Z,V,k,h,!1,!1,c,m)}}}process3(t){if(1==wireframe)return this.curve(t,0,1,3,6),this.curve(t,6,7,8,9),void this.curve(t,9,5,2,0);let e=t[0],i=t[6],a=t[9],r=this.normal(a,t[5],t[2],e,t[1],t[3],i),n=this.normal(e,t[1],t[3],i,t[7],t[8],a),s=this.normal(i,t[7],t[8],a,t[5],t[2],e);if(this.color){let o=this.color[0],h=this!
 .color[1],l=this.color[2],d=this.data.Vertex(e,r,o),c=this.data.Vertex(i,n,h),m=this.data.Vertex(a,s,l);this.Render3(t,d,c,m,e,i,a,!1,!1,!1,o,h,l)}else{let o=this.vertex(e,r),h=this.vertex(i,n),l=this.vertex(a,s);this.Render3(t,o,h,l,e,i,a,!1,!1,!1)}this.data.indices.length>0&&this.append()}Render3(t,e,i,a,r,n,s,o,h,l,d,c,m){if(this.Distance3(t)<this.res2)this.offscreen([r,n,s])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(e)));else{if(this.offscreen(t))return;let f=t[0],u=t[1],p=t[2],v=t[3],g=t[4],w=t[5],x=t[6],M=t[7],b=t[8],A=t[9],S=[.5*(A[0]+w[0]),.5*(A[1]+w[1]),.5*(A[2]+w[2])],P=[.5*(A[0]+b[0]),.5*(A[1]+b[1]),.5*(A[2]+b[2])],R=[.5*(w[0]+p[0]),.5*(w[1]+p[1]),.5*(w[2]+p[2])],T=[.5*(b[0]+g[0]),.5*(b[1]+g[1]),.5*(b[2]+g[2])],y=[.5*(b[0]+M[0]),.5*(b[1]+M[1]),.5*(b[2]+M[2])],D=[.5*(p[0]+g[0]),.5*(p[1]+g[1]),.5*(p[2]+g[2])],I=[.5*(p[0]+f[0]),.5*(p[1]+f[1]),.5*(p[2]+f[2])],z=[.5*(g[0]+v[0]),.5*(g[1]+v[1]),.5*(g[2]+v[2])],E=[.5*(M[0]+x[0]),.5*(M[1]+x[1]),.5*(M[2]+x[2])],O=[.5*(f[0]+u[0]),.5*(f[1]+u[1]),.5*(f[2]+u[2])],L=[.5*(u[0]+v[0]),.5*(u[1]+v[1]),.5*(u[2]+v[2])],N=[.5*(v[0]+x[0]),.5*(v[1]+x[1]),.5*(v[2]+x[2])],_=[.5*(S[0]+R[0]),.5*(S[1]+R[1]),.5*(S[2]+R[2])],B=[.5*(P[0]+y[0]),.5*(P[1]+y[1]),.5*(P[2]+y[2])],V=[.5*(R[0]+I[0]),.5*(R[1]+I[1]),.5*(R[2]+I[2])],C=[.5*T[0]+.25*(g[0]+u[0]),.5*T[1]+.25*(g[1]+u[1]),.5*T[2]+.25*(g[2]+u[2])],F=[.5*(y[0]+E[0]),.5*(y[1]+E[1]),.5*(y[2]+E[2])],H=[.5*D[0]+.25*(g[0]+M[0]),.5*D[1]+.25*(g[1]+M[1]),.5*D[2]+.25*(g[2]+M[2])],G=[.25*(w[0]+g[0])+.5*z[0],.25*(w[1]+g[1])+.5*z[1],.25*(w[2]+g[2])+.5*z[2]],U=[.5*(O[0]+L[0]),.5*(O[1]+L[1]),.5*(O[2]+L[2])],W=[.5*(L[0]+N[0]),.5*(L[1]+N[1]),.5*(L[2]+N[2])],Y=[.5*(H[0]+U[0]),.5*(H[1]+U[1]),.5*(H[2]+U[2])],j=[.5*(H[0]+W[0]),.5*(H[1]+W[1]),.5*(H[2]+W[2])],k=[.5*(U[0]+W[0]),.5*(U[1]+W[1]),.5*(U[2]+W[2])],Z=[.5*(G[0]+F[0]),.5*(G[1]+F[1]),.5*(G[2]+F[2])!
 ],X=[.5*(B[0]+G[0]),.5*(B[1]+G[1]),.5*(B[2]+G[2])],q=[.5*(B[0]+F[0]),.5*(B[1]+F[1]),.5*(B[2]+F[2])],K=[.5*(_[0]+C[0]),.5*(_[1]+C[1]),.5*(_[2]+C[2])],$=[.5*(V[0]+C[0]),.5*(V[1]+C[1]),.5*(V[2]+C[2])],Q=[.5*(_[0]+V[0]),.5*(_[1]+V[1]),.5*(_[2]+V[2])],J=[f,O,I,U,[.5*(D[0]+O[0]),.5*(D[1]+O[1]),.5*(D[2]+O[2])],V,k,Y,$,Q],tt=[k,W,j,N,[.5*(z[0]+E[0]),.5*(z[1]+E[1]),.5*(z[2]+E[2])],Z,x,E,F,q],et=[Q,K,_,X,[.5*(S[0]+T[0]),.5*(S[1]+T[1]),.5*(S[2]+T[2])],S,q,B,P,A],it=[q,X,Z,K,[.25*(R[0]+y[0]+L[0]+g[0]),.25*(R[1]+y[1]+L[1]+g[1]),.25*(R[2]+y[2]+L[2]+g[2])],j,Q,$,Y,k],at=this.normal(k,j,Z,q,X,K,Q),rt=this.normal(q,X,K,Q,$,Y,k),nt=this.normal(Q,$,Y,k,j,Z,q),st=this.Epsilon,ot=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!o)if(o=Straightness(x,M,b,A)<this.res2){let t=unit(this.sumdifferential(it[0],it[2],it[5],it[9],it[1],it[3],it[6]));ot=[ot[0]-st*t[0],ot[1]-st*t[1],ot[2]-st*t[2]]}else ot=q;let ht=[.5*(s[0]+r[0]),.5*(s[1]+r[1]),.5*(s[2]+r[2])];if(!h)if(h=Straightness(f,p,w,A)<this.res2){let t=unit(this.sumdifferential(it[6],it[3],it[1],it[0],it[7],it[8],it[9]));ht=[ht[0]-st*t[0],ht[1]-st*t[1],ht[2]-st*t[2]]}else ht=Q;let lt=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])];if(!l)if(l=Straightness(f,u,v,x)<this.res2){let t=unit(this.sumdifferential(it[9],it[8],it[7],it[6],it[5],it[2],it[0]));lt=[lt[0]-st*t[0],lt[1]-st*t[1],lt[2]-st*t[2]]}else lt=k;if(d){let t=Array(4),f=Array(4),u=Array(4);for(let e=0;e<4;++e)t[e]=.5*(c[e]+m[e]),f[e]=.5*(m[e]+d[e]),u[e]=.5*(d[e]+c[e]);let p=this.data.Vertex(ot,at,t),v=this.data.Vertex(ht,rt,f),g=this.data.Vertex(lt,nt,u);this.Render3(J,e,g,v,r,lt,ht,!1,h,l,d,u,f),this.Render3(tt,g,i,p,lt,n,ot,o,!1,l,u,c,t),this.Render3(et,v,p,a,ht,ot,s,o,h,!1,f,t,m),this.Render3(it,p,v,g,ot,ht,lt,!1,!1,!1,t,f,u)}else{let t=this.vertex(ot,at),d=this.vertex(ht,rt),c=this.vertex(lt,nt);this.Render3(J,e,c,d,r,lt,ht,!1,h,l),this.Render3(tt,c,i,t,lt,n,ot,o,!1,l),this.Render3(et,d,t,a,ht,ot,s,o,h,!1),this.Render3(it,t,d,c,ot,ht,lt,!1,!1,!1)}}}Distance(t){let e=t[0],i=t[3],a=t[12],r=t[15],n=Flatness(e,a,i,r);n=Math.max!
 (Straightness(e,t[4],t[8],a)),n=Math.max(n,Straightness(t[1],t[5],t[9],t[13])),n=Math.max(n,Straightness(i,t[7],t[11],r)),n=Math.max(n,Straightness(t[2],t[6],t[10],t[14]));let s=Flatness(e,i,a,r);return s=Math.max(s,Straightness(e,t[1],t[2],i)),s=Math.max(s,Straightness(t[4],t[5],t[6],t[7])),s=Math.max(s,Straightness(t[8],t[9],t[10],t[11])),[n,s=Math.max(s,Straightness(a,t[13],t[14],r))]}Distance3(t){let e=t[0],i=t[4],a=t[6],r=t[9],n=abs2([(e[0]+a[0]+r[0])*third-i[0],(e[1]+a[1]+r[1])*third-i[1],(e[2]+a[2]+r[2])*third-i[2]]);return n=Math.max(n,Straightness(e,t[1],t[3],a)),n=Math.max(n,Straightness(e,t[2],t[5],r)),Math.max(n,Straightness(a,t[7],t[8],r))}differential(t,e,i,a){let r=[3*(e[0]-t[0]),3*(e[1]-t[1]),3*(e[2]-t[2])];return abs2(r)>this.epsilon?r:abs2(r=bezierPP(t,e,i))>this.epsilon?r:bezierPPP(t,e,i,a)}sumdifferential(t,e,i,a,r,n,s){let o=this.differential(t,e,i,a),h=this.differential(t,r,n,s);return[o[0]+h[0],o[1]+h[1],o[2]+h[2]]}normal(t,e,i,a,r,n,s){let o=3*(r[0]-a[0]),h=3*(r[1]-a[1]),l=3*(r[2]-a[2]),d=3*(i[0]-a[0]),c=3*(i[1]-a[1]),m=3*(i[2]-a[2]),f=[h*m-l*c,l*d-o*m,o*c-h*d];if(abs2(f)>this.epsilon)return f;let u=[d,c,m],p=[o,h,l],v=bezierPP(a,i,e),g=bezierPP(a,r,n),w=cross(g,u),x=cross(p,v);if(abs2(f=[w[0]+x[0],w[1]+x[1],w[2]+x[2]])>this.epsilon)return f;let M=bezierPPP(a,i,e,t),b=bezierPPP(a,r,n,s);w=cross(p,M),x=cross(b,u);let A=cross(g,v);return abs2(f=[w[0]+x[0]+A[0],w[1]+x[1]+A[1],w[2]+x[2]+A[2]])>this.epsilon?f:(w=cross(b,v),x=cross(g,M),abs2(f=[w[0]+x[0],w[1]+x[1],w[2]+x[2]])>this.epsilon?f:cross(b,M))}}class BezierCurve extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.CenterIndex=e,this.MaterialIndex=i}setMaterialIndex(){this.setMaterial(material1Data,drawMaterial1)}processLine(t){let e=t[0],i=t[1];if(!this.offscreen([e,i])){let t=[0,0,1];this.data.indices.push(this.data.vertex(e,t)),this.data.indices.push(this.data.vertex(i,t)),this.append()}}process(t){if(2==t.length)return this.processLine(t);let e=t[0],i=t[1],a=t[2],r=t[3],n=this.normal(bezier!
 P(e,i),bezierPP(e,i,a)),s=this.normal(bezierP(a,r),bezierPP(r,a,i)),o=this.data.vertex(e,n),h=this.data.vertex(r,s);this.Render(t,o,h),this.data.indices.length>0&&this.append()}append(){material1Data.append(this.data)}Render(t,e,i){let a=t[0],r=t[1],n=t[2],s=t[3];if(Straightness(a,r,n,s)<this.res2)this.offscreen([a,s])||(this.data.indices.push(e),this.data.indices.push(i));else{if(this.offscreen(t))return;let o=[.5*(a[0]+r[0]),.5*(a[1]+r[1]),.5*(a[2]+r[2])],h=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])],l=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])],d=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])],c=[.5*(h[0]+l[0]),.5*(h[1]+l[1]),.5*(h[2]+l[2])],m=[.5*(d[0]+c[0]),.5*(d[1]+c[1]),.5*(d[2]+c[2])],f=[a,o,d,m],u=[m,c,l,s],p=this.normal(bezierPh(a,r,n,s),bezierPPh(a,r,n,s)),v=this.data.vertex(m,p);this.Render(f,e,v),this.Render(u,v,i)}}normal(t,e){let i=dot(t,t),a=dot(t,e);return[i*e[0]-a*t[0],i*e[1]-a*t[1],i*e[2]-a*t[2]]}}class Pixel extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoint=t,this.width=e,this.CenterIndex=0,this.MaterialIndex=i,this.Min=a,this.Max=r}setMaterialIndex(){this.setMaterial(material0Data,drawMaterial0)}process(t){this.data.indices.push(this.data.vertex0(this.controlpoint,this.width)),this.append()}append(){material0Data.append(this.data)}}class Triangles extends Geometry{constructor(t,e,i){super(),this.CenterIndex=0,this.MaterialIndex=t,this.Min=e,this.Max=i,this.Positions=Positions,this.Normals=Normals,this.Colors=Colors,this.Indices=Indices,Positions=[],Normals=[],Colors=[],Indices=[],this.transparent=Materials[t].diffuse[3]<1}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.setMaterial(triangleData,drawTriangle)}process(t){materialIndex=this.Colors.length>0?-1-materialIndex:1+materialIndex;for(let t=0,e=this.Indices.length;t<e;++t){let e=this.Indices[t],i=e[0],a=this.Positions[i[0]],r=this.Positions[i[1]],n=this.Positions[i[2]];if(!this.offscreen([a,r,n])){let t=e.length>1?e[1]:i;if(t&&0!=t.length||(t=i),this.Colors.length>0){let s=e!
 .length>2?e[2]:i;s&&0!=s.length||(s=i);let o=this.Colors[s[0]],h=this.Colors[s[1]],l=this.Colors[s[2]];this.transparent|=o[3]+h[3]+l[3]<765,0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l)):(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[0],a,this.Normals[t[0]],o))}else 0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]])):(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[0],a,this.Normals[t[0]]))}}this.data.nvertices=this.Positions.length,this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):triangleData.append(this.data)}}function home(){mat4.identity(rotMat),initProjection(),setProjection(),remesh=!0,draw()}let positionAttribute=0,normalAttribute=1,materialAttribute=2,colorAttribute=3,widthAttribute=4;function initShader(t=[]){let e=getShader(gl,vertex,gl.VERTEX_SHADER,t),i=getShader(gl,fragment,gl.FRAGMENT_SHADER,t),a=gl.createProgram();return gl.attachShader(a,e),gl.attachShader(a,i),gl.bindAttribLocation(a,positionAttribute,"position"),gl.bindAttribLocation(a,normalAttribute,"normal"),gl.bindAttribLocation(a,materialAttribute,"materialIndex"),gl.bindAttribLocation(a,colorAttribute,"color"),gl.bindAttribLocation(a,widthAttribute,"width"),gl.linkProgram(a),gl.getProgramParameter(a,gl.LINK_STATUS)||alert("Could not initialize shaders"),a}class Split3{constructor(t,e,i,a){this.m0=[.5*(t[0]+e[0]),.5*(t[1]+e[1]),.5*(t[2]+e[2])];let r=.5*(e[0]+i[0]),n=.5*(e[1]+i[1]),s=.5*!
 (e[2]+i[2]);this.m2=[.5*(i[0]+a[0]),.5*(i[1]+a[1]),.5*(i[2]+a[2])],this.m3=[.5*(this.m0[0]+r),.5*(this.m0[1]+n),.5*(this.m0[2]+s)],this.m4=[.5*(r+this.m2[0]),.5*(n+this.m2[1]),.5*(s+this.m2[2])],this.m5=[.5*(this.m3[0]+this.m4[0]),.5*(this.m3[1]+this.m4[1]),.5*(this.m3[2]+this.m4[2])]}}function unit(t){let e=1/(Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])||1);return[t[0]*e,t[1]*e,t[2]*e]}function abs2(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function dot(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function cross(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function bezierP(t,e){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function bezierPP(t,e,i){return[3*(t[0]+i[0])-6*e[0],3*(t[1]+i[1])-6*e[1],3*(t[2]+i[2])-6*e[2]]}function bezierPPP(t,e,i,a){return[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]}function bezierPh(t,e,i,a){return[i[0]+a[0]-t[0]-e[0],i[1]+a[1]-t[1]-e[1],i[2]+a[2]-t[2]-e[2]]}function bezierPPh(t,e,i,a){return[3*t[0]-5*e[0]+i[0]+a[0],3*t[1]-5*e[1]+i[1]+a[1],3*t[2]-5*e[2]+i[2]+a[2]]}function Straightness(t,e,i,a){let r=[third*(a[0]-t[0]),third*(a[1]-t[1]),third*(a[2]-t[2])];return Math.max(abs2([e[0]-r[0]-t[0],e[1]-r[1]-t[1],e[2]-r[2]-t[2]]),abs2([a[0]-r[0]-i[0],a[1]-r[1]-i[1],a[2]-r[2]-i[2]]))}function Flatness(t,e,i,a){let r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],n=[a[0]-i[0],a[1]-i[1],a[2]-i[2]];return Math.max(abs2(cross(r,unit(n))),abs2(cross(n,unit(r))))/9}function corners(t,e){return[t,[t[0],t[1],e[2]],[t[0],e[1],t[2]],[t[0],e[1],e[2]],[e[0],t[1],t[2]],[e[0],t[1],e[2]],[e[0],e[1],t[2]],e]}function minbound(t){return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.min(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function maxbound(t){return[Math.max(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.max(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5]!
 [2],t[6][2],t[7][2])]}function COBTarget(t,e){mat4.fromTranslation(T,[center.x,center.y,center.z]),mat4.invert(cjMatInv,T),mat4.multiply(t,e,cjMatInv),mat4.multiply(t,T,t)}function setUniforms(t,e){let i=e==pixelShader;gl.useProgram(e),gl.enableVertexAttribArray(positionAttribute),i&&gl.enableVertexAttribArray(widthAttribute);let a=!i&&Lights.length>0;if(a&&gl.enableVertexAttribArray(normalAttribute),gl.enableVertexAttribArray(materialAttribute),e.projViewMatUniform=gl.getUniformLocation(e,"projViewMat"),e.viewMatUniform=gl.getUniformLocation(e,"viewMat"),e.normMatUniform=gl.getUniformLocation(e,"normMat"),e!=colorShader&&e!=transparentShader||gl.enableVertexAttribArray(colorAttribute),a)for(let t=0;t<Lights.length;++t)Lights[t].setUniform(e,t);for(let i=0;i<t.materials.length;++i)t.materials[i].setUniform(e,i);gl.uniformMatrix4fv(e.projViewMatUniform,!1,projViewMat),gl.uniformMatrix4fv(e.viewMatUniform,!1,viewMat),gl.uniformMatrix3fv(e.normMatUniform,!1,normMat)}function handleMouseDown(t){zoomEnabled||enableZoom(),mouseDownOrTouchActive=!0,lastMouseX=t.clientX,lastMouseY=t.clientY}let pinchStart,touchStartTime,pinch=!1;function pinchDistance(t){return Math.hypot(t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY)}function handleTouchStart(t){t.preventDefault(),zoomEnabled||enableZoom();let e=t.targetTouches;swipe=rotate=pinch=!1,zooming||(1!=e.length||mouseDownOrTouchActive||(touchStartTime=(new Date).getTime(),touchId=e[0].identifier,lastMouseX=e[0].pageX,lastMouseY=e[0].pageY),2!=e.length||mouseDownOrTouchActive||(touchId=e[0].identifier,pinchStart=pinchDistance(e),pinch=!0))}function handleMouseUpOrTouchEnd(t){mouseDownOrTouchActive=!1}function rotateScene(t,e,i,a,r){if(t==i&&e==a)return;let[n,s]=arcball([t,-e],[i,-a]);mat4.fromRotation(T,2*r*ArcballFactor*n/lastzoom,s),mat4.multiply(rotMat,T,rotMat)}function shiftScene(t,e,i,a){let r=1/lastzoom;shift.x+=(i-t)*r*halfCanvasWidth,shift.y-=(a-e)*r*halfCanvasHeight}function panScene(t,e,i,a){orthographic?shiftScene(t,e,i,a):(center.x+=(i-t)*(viewParam.xmax-viewParam.x!
 min),center.y-=(a-e)*(viewParam.ymax-viewParam.ymin))}function updateViewMatrix(){COBTarget(viewMat,rotMat),mat4.translate(viewMat,viewMat,[center.x,center.y,0]),mat3.fromMat4(viewMat3,viewMat),mat3.invert(normMat,viewMat3),mat4.multiply(projViewMat,projMat,viewMat)}function capzoom(){let t=Math.sqrt(Number.MAX_VALUE),e=1/t;Zoom<=e&&(Zoom=e),Zoom>=t&&(Zoom=t),Zoom!=lastzoom&&(remesh=!0),lastzoom=Zoom}function zoomImage(t){let e=zoomStep*halfCanvasHeight*t;const i=Math.log(.1*Number.MAX_VALUE)/Math.log(zoomFactor);Math.abs(e)<i&&(Zoom*=zoomFactor**e,capzoom())}function normMouse(t){let e=t[0],i=t[1],a=Math.hypot(e,i);return a>1&&(denom=1/a,e*=denom,i*=denom),[e,i,Math.sqrt(Math.max(1-i*i-e*e,0))]}function arcball(t,e){let i=normMouse(t),a=normMouse(e),r=dot(i,a);return r>1?r=1:r<-1&&(r=-1),[Math.acos(r),unit(cross(i,a))]}function zoomScene(t,e,i,a){zoomImage(e-a)}const DRAGMODE_ROTATE=1,DRAGMODE_SHIFT=2,DRAGMODE_ZOOM=3,DRAGMODE_PAN=4;function processDrag(t,e,i,a=1){let r;switch(i){case DRAGMODE_ROTATE:r=rotateScene;break;case DRAGMODE_SHIFT:r=shiftScene;break;case DRAGMODE_ZOOM:r=zoomScene;break;case DRAGMODE_PAN:r=panScene;break;default:r=((t,e,i,a)=>{})}r((lastMouseX-halfCanvasWidth)/halfCanvasWidth,(lastMouseY-halfCanvasHeight)/halfCanvasHeight,(t-halfCanvasWidth)/halfCanvasWidth,(e-halfCanvasHeight)/halfCanvasHeight,a),lastMouseX=t,lastMouseY=e,setProjection(),draw()}let zoomEnabled=0;function enableZoom(){zoomEnabled=1,canvas.addEventListener("wheel",handleMouseWheel,!1)}function disableZoom(){zoomEnabled=0,canvas.removeEventListener("wheel",handleMouseWheel,!1)}function handleKey(t){if(zoomEnabled||enableZoom(),embedded&&zoomEnabled&&27==t.keyCode)return void disableZoom();let e=[];switch(t.key){case"x":e=[1,0,0];break;case"y":e=[0,1,0];break;case"z":e=[0,0,1];break;case"h":home();break;case"m":3==++wireframe&&(wireframe=0),2!=wireframe&&(embedded||deleteShaders(),initShaders()),remesh=!0,draw();break;case"+":case"=":case">":expand();break;case"-":case"_":case"<":shrink()}e.length>0&&(mat4.rotate(rotMat,rot!
 Mat,.1,e),updateViewMatrix(),draw())}function handleMouseWheel(t){t.preventDefault(),t.deltaY<0?Zoom*=zoomFactor:Zoom/=zoomFactor,capzoom(),setProjection(),draw()}function handleMouseMove(t){if(!mouseDownOrTouchActive)return;let e;processDrag(t.clientX,t.clientY,e=t.getModifierState("Control")?DRAGMODE_SHIFT:t.getModifierState("Shift")?DRAGMODE_ZOOM:t.getModifierState("Alt")?DRAGMODE_PAN:DRAGMODE_ROTATE)}let zooming=!1,swipe=!1,rotate=!1;function handleTouchMove(t){if(t.preventDefault(),zooming)return;let e=t.targetTouches;if(!pinch&&1==e.length&&touchId==e[0].identifier){let t=e[0].pageX,i=e[0].pageY,a=t-lastMouseX,r=i-lastMouseY,n=a*a+r*r<=shiftHoldDistance*shiftHoldDistance;if(n&&!swipe&&!rotate&&(new Date).getTime()-touchStartTime>shiftWaitTime&&(navigator.vibrate&&window.navigator.vibrate(vibrateTime),swipe=!0),swipe)processDrag(t,i,DRAGMODE_SHIFT);else if(!n){rotate=!0,processDrag(e[0].pageX,e[0].pageY,DRAGMODE_ROTATE,.5)}}if(pinch&&!swipe&&2==e.length&&touchId==e[0].identifier){let t=pinchDistance(e),i=t-pinchStart;zooming=!0,(i*=zoomPinchFactor)>zoomPinchCap&&(i=zoomPinchCap),i<-zoomPinchCap&&(i=-zoomPinchCap),zoomImage(i/size2),pinchStart=t,swipe=rotate=zooming=!1,setProjection(),draw()}}let pixelShader,materialShader,colorShader,transparentShader,zbuffer=[];function transformVertices(t){let e=viewMat[2],i=viewMat[6],a=viewMat[10];zbuffer.length=t.length;for(let r=0;r<t.length;++r){let n=6*r;zbuffer[r]=e*t[n]+i*t[n+1]+a*t[n+2]}}function drawMaterial0(){drawBuffer(material0Data,pixelShader),material0Data.clear()}function drawMaterial1(){drawBuffer(material1Data,materialShader),material1Data.clear()}function drawMaterial(){drawBuffer(materialData,materialShader),materialData.clear()}function drawColor(){drawBuffer(colorData,colorShader),colorData.clear()}function drawTriangle(){drawBuffer(triangleData,transparentShader),triangleData.clear()}function drawTransparent(){let t=transparentData.indices;if(wireframe>0)return drawBuffer(transparentData,transparentShader,t),void transparentData.clear();if(t.length!
 >0){transformVertices(transparentData.vertices);let e=t.length/3,i=Array(e).fill().map((t,e)=>e);i.sort(function(e,i){let a=3*e;Ia=t[a],Ib=t[a+1],Ic=t[a+2];let r=3*i;return IA=t[r],IB=t[r+1],IC=t[r+2],zbuffer[Ia]+zbuffer[Ib]+zbuffer[Ic]<zbuffer[IA]+zbuffer[IB]+zbuffer[IC]?-1:1});let a=Array(t.length);for(let r=0;r<e;++r){let e=3*i[r];a[3*r]=t[e],a[3*r+1]=t[e+1],a[3*r+2]=t[e+2]}gl.depthMask(!1),drawBuffer(transparentData,transparentShader,a),gl.depthMask(!0)}transparentData.clear()}function drawBuffers(){drawMaterial0(),drawMaterial1(),drawMaterial(),drawColor(),drawTriangle(),drawTransparent()}function draw(){embedded&&(offscreen.width=canvas.width,offscreen.height=canvas.height,setViewport()),gl.clearColor(Background[0],Background[1],Background[2],Background[3]),gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);for(let t=0;t<P.length;++t)P[t].render();drawBuffers(),embedded&&(context.clearRect(0,0,canvas.width,canvas.height),context.drawImage(offscreen,0,0)),0==wireframe&&(remesh=!1)}function setDimensions(t,e,i,a){let r=t/e,n=1/lastzoom,s=(i/t+viewportshift[0])*lastzoom,o=(a/e+viewportshift[1])*lastzoom;if(orthographic){let t=B[0]-b[0],e=B[1]-b[1];if(t<e*r){let t=.5*e*r*n,i=2*t*s,a=e*n*o;viewParam.xmin=-t-i,viewParam.xmax=t-i,viewParam.ymin=b[1]*n-a,viewParam.ymax=B[1]*n-a}else{let e=.5*t/(r*Zoom),i=t*n*s,a=2*e*o;viewParam.xmin=b[0]*n-i,viewParam.xmax=B[0]*n-i,viewParam.ymin=-e-a,viewParam.ymax=e-a}}else{let t=H*n,e=t*r,i=2*e*s,a=2*t*o;viewParam.xmin=-e-i,viewParam.xmax=e-i,viewParam.ymin=-t-a,viewParam.ymax=t-a}}function setProjection(){setDimensions(canvasWidth,canvasHeight,shift.x,shift.y),(orthographic?mat4.ortho:mat4.frustum)(projMat,viewParam.xmin,viewParam.xmax,viewParam.ymin,viewParam.ymax,-viewParam.zmax,-viewParam.zmin),updateViewMatrix()}function initProjection(){H=-Math.tan(.5*angle)*B[2],center.x=center.y=0,center.z=.5*(b[2]+B[2]),lastzoom=Zoom=Zoom0,viewParam.zmin=b[2],viewParam.zmax=B[2],shift.x=shift.y=0}function setViewport(){gl.viewportWidth=canvasWidth,gl.viewportHeight=canvasHeight,gl.viewp!
 ort(0,0,gl.viewportWidth,gl.viewportHeight),gl.scissor(0,0,gl.viewportWidth,gl.viewportHeight)}function setCanvas(){canvas.width=canvasWidth,canvas.height=canvasHeight,embedded&&(offscreen.width=canvasWidth,offscreen.height=canvasHeight),size2=Math.hypot(canvasWidth,canvasHeight),halfCanvasWidth=.5*canvasWidth,halfCanvasHeight=.5*canvasHeight}function setsize(t,e){t>maxViewportWidth&&(t=maxViewportWidth),e>maxViewportHeight&&(e=maxViewportHeight),shift.x*=t/canvasWidth,shift.y*=e/canvasHeight,canvasWidth=t,canvasHeight=e,setCanvas(),setViewport(),home()}function expand(){setsize(canvasWidth*resizeStep+.5,canvasHeight*resizeStep+.5)}function shrink(){setsize(Math.max(canvasWidth/resizeStep+.5,1),Math.max(canvasHeight/resizeStep+.5,1))}function webGLInit(){if(canvas=document.getElementById("Asymptote"),embedded=window.top.document!=document,initGL(),absolute&&!embedded)canvasWidth*=window.devicePixelRatio,canvasHeight*=window.devicePixelRatio;else{canvas.width=Math.max(window.innerWidth-windowTrim,windowTrim),canvas.height=Math.max(window.innerHeight-windowTrim,windowTrim);let t=canvasWidth/canvasHeight;canvas.width>canvas.height*t?canvas.width=Math.min(canvas.height*t,canvas.width):canvas.height=Math.min(canvas.width/t,canvas.height),canvas.width>0&&(canvasWidth=canvas.width),canvas.height>0&&(canvasHeight=canvas.height)}setCanvas(),ArcballFactor=1+8*Math.hypot(viewportmargin[0],viewportmargin[1])/size2,viewportshift[0]/=Zoom0,viewportshift[1]/=Zoom0,gl.enable(gl.BLEND),gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA),gl.enable(gl.DEPTH_TEST),gl.enable(gl.SCISSOR_TEST),setViewport(),home(),canvas.onmousedown=handleMouseDown,document.onmouseup=handleMouseUpOrTouchEnd,document.onmousemove=handleMouseMove,canvas.onkeydown=handleKey,embedded||enableZoom(),canvas.addEventListener("touchstart",handleTouchStart,!1),canvas.addEventListener("touchend",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchcancel",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchleave",handleMouseUpOrTouchEnd,!1),canvas.addEve!
 ntListener("touchmove",handleTouchMove,!1),document.addEventListener("keydown",handleKey,!1)}let listen=!1;class Align{constructor(t,e){if(this.center=t,e){let t=e[0],i=e[1];this.ct=Math.cos(t),this.st=Math.sin(t),this.cp=Math.cos(i),this.sp=Math.sin(i)}}T0(t){return[t[0]+this.center[0],t[1]+this.center[1],t[2]+this.center[2]]}T(t){let e=t[0],i=t[1],a=t[2],r=e*this.ct+a*this.st;return[r*this.cp-i*this.sp+this.center[0],r*this.sp+i*this.cp+this.center[1],-e*this.st+a*this.ct+this.center[2]]}}function Tcorners(t,e,i){let a=[t(e),t([e[0],e[1],i[2]]),t([e[0],i[1],e[2]]),t([e[0],i[1],i[2]]),t([i[0],e[1],e[2]]),t([i[0],e[1],i[2]]),t([i[0],i[1],e[2]]),t(i)];return[minbound(a),maxbound(a)]}function sphere(t,e,i,r,n){let s,o,h,l,d,c,m=.524670512339254,f=.595936986722291,u=.954967051233925,p=.0820155480083437,v=.996685028842544,g=.0549670512339254,w=.998880711874577,x=.0405017186586849,M=[[[1,0,0],[1,0,m],[f,0,u],[p,0,v],[1,a,0],[1,a,m],[f,a*f,u],[p,a*p,v],[a,1,0],[a,1,m],[a*f,f,u],[a*p,p,v],[0,1,0],[0,1,m],[0,f,u],[0,p,v]],[[p,0,v],[p,a*p,v],[g,0,w],[a*p,p,v],[x,x,1],[.05*a,0,1],[0,p,v],[0,g,w],[0,.05*a,1],[0,0,1]]],b=new Align(t,n);function A(t){let e=Array(t.length);for(let i=0;i<t.length;++i){let a=t[i];e[i]=d([s*a[0],o*a[1],h*a[2]])}return e}n?(l=1,c=0,d=b.T.bind(b)):(l=-1,c=-e,d=b.T0.bind(b));let S=Tcorners(d,[-e,-e,c],[e,e,e]),R=S[0],T=S[1];for(let t=-1;t<=1;t+=2){s=t*e;for(let t=-1;t<=1;t+=2){o=t*e;for(let t=l;t<=1;t+=2){h=t*e;for(let t=0;t<2;++t)P.push(new BezierPatch(A(M[t]),i,r,R,T))}}}}let a=4/3*(Math.sqrt(2)-1);function disk(t,e,i,r,n){let s=1-2*a/3,o=[[1,0,0],[1,-a,0],[a,-1,0],[0,-1,0],[1,a,0],[s,0,0],[0,-s,0],[-a,-1,0],[a,1,0],[0,s,0],[-s,0,0],[-1,-a,0],[0,1,0],[-a,1,0],[-1,a,0],[-1,0,0]],h=new Align(t,n);let l=Tcorners(h.T.bind(h),[-e,-e,0],[e,e,0]);P.push(new BezierPatch(function(t){let i=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];i[a]=h.T([e*r[0],e*r[1],0])}return i}(o),i,r,l[0],l[1]))}function cylinder(t,e,i,r,n,s,o){let h,l,d=[[1,0,0],[1,0,1/3],[1,0,2/3],[1,0,1],[1,a,0],[1,a,1/3],[1,a,2/3],!
 [1,a,1],[a,1,0],[a,1,1/3],[a,1,2/3],[a,1,1],[0,1,0],[0,1,1/3],[0,1,2/3],[0,1,1]],c=new Align(t,s);function m(t){let e=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];e[a]=c.T([h*r[0],l*r[1],i*r[2]])}return e}let f=Tcorners(c.T.bind(c),[-e,-e,0],[e,e,i]),u=f[0],p=f[1];for(let t=-1;t<=1;t+=2){h=t*e;for(let t=-1;t<=1;t+=2)l=t*e,P.push(new BezierPatch(m(d),r,n,u,p))}if(o){let e=c.T([0,0,i]);P.push(new BezierCurve([t,e],r,n,t,e))}}function rmf(t,e,i,a,r){class n{constructor(t,e,i){this.p=t,this.r=e,this.t=i,this.s=cross(i,e)}}let s=Number.EPSILON*Math.max(abs2(t),abs2(e),abs2(i),abs2(a));function o(r){if(1==r){let r=[a[0]-i[0],a[1]-i[1],a[2]-i[2]];return abs2(r)>s?unit(r):abs2(r=[2*i[0]-e[0]-a[0],2*i[1]-e[1]-a[1],2*i[2]-e[2]-a[2]])>s?unit(r):[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]}let n=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])],o=[2*(t[0]+i[0])-4*e[0],2*(t[1]+i[1])-4*e[1],2*(t[2]+i[2])-4*e[2]],h=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],l=r*r,d=[n[0]*l+o[0]*r+h[0],n[1]*l+o[1]*r+h[1],n[2]*l+o[2]*r+h[2]];return abs2(d)>s?unit(d):abs2(d=[n[0]*(l=2*r)+o[0],n[1]*l+o[1],n[2]*l+o[2]])>s?unit(d):unit(n)}let h=Array(r.length),l=[e[0]-t[0],e[1]-t[1],e[2]-t[2]];abs2(l)<s&&abs2(l=[t[0]-2*e[0]+i[0],t[1]-2*e[1]+i[1],t[2]-2*e[2]+i[2]])<s&&(l=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]);let d=function(t){let e=cross(t,[0,1,0]),i=Number.EPSILON*abs2(t);return abs2(e)>i?unit(e):abs2(e=cross(t,[0,0,1]))>i?unit(e):[1,0,0]}(l=unit(l));h[0]=new n(t,d,l);for(let s=1;s<r.length;++s){let l=h[s-1],d=r[s],c=1-d,m=c*c,f=m*c,u=3*d;m*=u,c*=u*d;let p=d*d*d,v=[f*t[0]+m*e[0]+c*i[0]+p*a[0],f*t[1]+m*e[1]+c*i[1]+p*a[1],f*t[2]+m*e[2]+c*i[2]+p*a[2]],g=[v[0]-l.p[0],v[1]-l.p[1],v[2]-l.p[2]];if(0!=g[0]||0!=g[1]||0!=g[2]){let t=l.r,e=unit(g),i=l.t,a=dot(e,i),r=[i[0]-2*a*e[0],i[1]-2*a*e[1],i[2]-2*a*e[2]];i=o(d);let c=2*dot(e,t),m=[t[0]-c*e[0],t[1]-c*e[1],t[2]-c*e[2]],f=unit([i[0]-r[0],i[1]-r[1],i[2]-r[2]]),u=2*dot(f,m);m=[m[0]-u*f[0],m[1]-u*f[1],m[2]-u*f[2]],h[s]=new !
 n(v,unit(m),unit(i))}else h[s]=h[s-1]}return h}function tube(t,e,i,r,n,s,o){let h=rmf(t[0],t[1],t[2],t[3],[0,1/3,2/3,1]),l=a*e,d=[[e,0],[e,l],[l,e],[0,e]];function c(e,a,o,l){let c=Array(16);for(let i=0;i<4;++i){let r=h[i],n=r.r[0],s=r.s[0],m=n*e+s*a,f=n*o+s*l,u=(n=r.r[1])*e+(s=r.s[1])*a,p=n*o+s*l,v=(n=r.r[2])*e+(s=r.s[2])*a,g=n*o+s*l,w=t[i],x=w[0];w1=w[1],w2=w[2];for(let t=0;t<4;++t){let e=d[t],a=e[0],r=e[1];c[4*i+t]=[m*a+f*r+x,u*a+p*r+w1,v*a+g*r+w2]}}P.push(new BezierPatch(c,i,r,n,s))}c(1,0,0,1),c(0,-1,1,0),c(-1,0,0,-1),c(0,1,-1,0),o&&P.push(new BezierCurve(t,i,r,n,s))}function webGLStart(){0==window.innerWidth||0==window.innerHeight?listen||(listen=!0,window.addEventListener("resize",webGLStart,!1)):(listen&&(window.removeEventListener("resize",webGLStart,!1),listen=!1),webGLInit())}
+let vertex="\nattribute vec3 position;\n#ifdef WIDTH\nattribute float width;\n#endif\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\nattribute float materialIndex;\n#ifdef COLOR\nattribute vec4 color;\n#endif\n\nuniform mat3 normMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\n#endif\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\nvarying vec4 emissive;\n\nstruct Material {\n  vec4 diffuse,emissive,specular;\n  vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n\nvoid main(void)\n{\n  vec4 v=vec4(position,1.0);\n  gl_Position=projViewMat*v;\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\n  ViewPosition=(viewMat*v).xyz;\n#endif      \n  Normal=normalize(normal*normMat);\n        \n  Material m;\n#ifdef TRANSPARENT\n  m=Materials[int(abs(materialIndex))-1];\n  emissive=m.emissive;\n  if(materialIndex >= 0.0) {\n    diffuse=m.diffuse;\n  } else {\n    diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n  }\n#else\n  m=Materials[int(materialIndex)];\n  emissive=m.emissive;\n#ifdef COLOR\n  diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n#else\n  diffuse=m.diffuse;\n#endif\n#endif\n  specular=m.specular.rgb;\n  vec4 parameters=m.parameters;\n  roughness=1.0-parameters[0];\n  metallic=parameters[1];\n  fresnel0=parameters[2];\n#else\n  emissive=Materials[int(materialIndex)].emissive;\n#endif\n#ifdef WIDTH\n  gl_PointSize=width;\n#endif\n}\n",fragment="\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\n\nfloat Roughness2;\nvec3 normal;\n\nstruct Light {\n  vec3 direction;\n  vec3 color;\n};\n\nuniform Light Lights[Nlights];\n\nfloat NDF_TRG(vec3 h)\n{\n  float ndoth=max(dot(normal,h),0.0);\n  float alpha2=Roughness2*Roughness2;\n  float denom=ndoth*ndoth*(alpha2-1.0)+1.0;\n  return denom != 0.0 !
 ? alpha2/(denom*denom) : 0.0;\n}\n    \nfloat GGX_Geom(vec3 v)\n{\n  float ndotv=max(dot(v,normal),0.0);\n  float ap=1.0+Roughness2;\n  float k=0.125*ap*ap;\n  return ndotv/((ndotv*(1.0-k))+k);\n}\n    \nfloat Geom(vec3 v, vec3 l)\n{\n  return GGX_Geom(v)*GGX_Geom(l);\n}\n    \nfloat Fresnel(vec3 h, vec3 v, float fresnel0)\n{\n  float a=1.0-max(dot(h,v),0.0);\n  float b=a*a;\n  return fresnel0+(1.0-fresnel0)*b*b*a;\n}\n    \n// physical based shading using UE4 model.\nvec3 BRDF(vec3 viewDirection, vec3 lightDirection)\n{\n  vec3 lambertian=diffuse.rgb;\n  vec3 h=normalize(lightDirection+viewDirection);\n      \n  float omegain=max(dot(viewDirection,normal),0.0);\n  float omegali=max(dot(lightDirection,normal),0.0);\n      \n  float D=NDF_TRG(h);\n  float G=Geom(viewDirection,lightDirection);\n  float F=Fresnel(h,viewDirection,fresnel0);\n      \n  float denom=4.0*omegain*omegali;\n  float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;\n      \n  vec3 dielectric=mix(lambertian,rawReflectance*specular,F);\n  vec3 metal=rawReflectance*diffuse.rgb;\n      \n  return mix(dielectric,metal,metallic);\n}\n#endif\nvarying vec4 emissive;\n    \nvoid main(void)\n{\n#if defined(NORMAL) && nlights > 0\n  normal=normalize(Normal);\n  normal=gl_FrontFacing ? normal : -normal;\n#ifdef ORTHOGRAPHIC\n  vec3 viewDir=vec3(0.0,0.0,1.0);\n#else\n  vec3 viewDir=-normalize(ViewPosition);\n#endif\n  Roughness2=roughness*roughness;\n  vec3 color=emissive.rgb;\n  for(int i=0; i < nlights; ++i) {\n    Light Li=Lights[i];\n    vec3 L=Li.direction;\n    float cosTheta=max(dot(normal,L),0.0);\n    vec3 radiance=cosTheta*Li.color;\n    color += BRDF(viewDir,L)*radiance;\n  }\n  gl_FragColor=vec4(color,diffuse.a);\n#else\n  gl_FragColor=emissive;\n#endif\n}\n";!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var a in i)("object"==typeof exports?exports:t)[a]=i[a]}}("undefined"!=typeof self?self:this,(function(){return function(t)!
 {var e={};function i(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,a){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setMatrixArrayType=function(t){e.ARRAY_TYPE=t},e.toRadian=function(t){return t*r},e.equals=function(t,e){return Math.abs(t-e)<=a*Math.max(1,Math.abs(t),Math.abs(e))};var a=e.EPSILON=1e-6;e.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,e.RANDOM=Math.random;var r=Math.PI/180},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mat4=e.mat3=void 0;var a=n(i(2)),r=n(i(3));function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}e.mat3=a,e.mat4=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=c*s-o*l,m=-c*n+o*h,f=l*n-s*h,u=i*d+a*m+r*f;if(!u)return null;return u=1/u,t[0]=d*u,t[1]=(-c*a+r*l)*u,t[2]=(o*a-r*s)*u,t[3]=m*u,t[4]=(c*i-r*h)*u,t[5]=(-o*i+r*n)*u,t[6]=f*u,t[7]=(-l*i+a*h)*u,t[8]=(s*i-a*n)*u,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0))},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0!
 ]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=e[9],m=e[10],f=e[11],u=e[12],p=e[13],v=e[14],g=e[15],x=i*o-a*s,w=i*h-r*s,M=i*l-n*s,b=a*h-r*o,S=a*l-n*o,P=r*l-n*h,A=c*p-d*u,y=c*v-m*u,T=c*g-f*u,R=d*v-m*p,D=d*g-f*p,I=m*g-f*v,z=x*I-w*D+M*R+b*T-S*y+P*A;if(!z)return null;return z=1/z,t[0]=(o*I-h*D+l*R)*z,t[1]=(r*D-a*I-n*R)*z,t[2]=(p*P-v*S+g*b)*z,t[3]=(m*S-d*P-f*b)*z,t[4]=(h*T-s*I-l*y)*z,t[5]=(i*I-r*T+n*y)*z,t[6]=(v*M-u*P-g*w)*z,t[7]=(c*P-m*M+f*w)*z,t[8]=(s*D-o*T+l*A)*z,t[9]=(a*T-i*D-n*A)*z,t[10]=(u*S-p*M+g*x)*z,t[11]=(d*M-c*S-f*x)*z,t[12]=(o*y-s*R-h*A)*z,t[13]=(i*R-a*y+r*A)*z,t[14]=(p*w-u*b-v*x)*z,t[15]=(c*b-d*w+m*x)*z,t},e.multiply=r,e.translate=function(t,e,i){var a=i[0],r=i[1],n=i[2],s=void 0,o=void 0,h=void 0,l=void 0,c=void 0,d=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0;e===t?(t[12]=e[0]*a+e[4]*r+e[8]*n+e[12],t[13]=e[1]*a+e[5]*r+e[9]*n+e[13],t[14]=e[2]*a+e[6]*r+e[10]*n+e[14],t[15]=e[3]*a+e[7]*r+e[11]*n+e[15]):(s=e[0],o=e[1],h=e[2],l=e[3],c=e[4],d=e[5],m=e[6],f=e[7],u=e[8],p=e[9],v=e[10],g=e[11],t[0]=s,t[1]=o,t[2]=h,t[3]=l,t[4]=c,t[5]=d,t[6]=m,t[7]=f,t[8]=u,t[9]=p,t[10]=v,t[11]=g,t[12]=s*a+c*r+u*n+e[12],t[13]=o*a+d*r+p*n+e[13],t[14]=h*a+m*r+v*n+e[14],t[15]=l*a+f*r+g*n+e[15]);return t},e.rotate=function(t,e,i,r){var n,s,o,h,l,c,d,m,f,u,p,v,g,x,w,M,b,S,P,A,y,T,R,D,I=r[0],z=r[1],L=r[2],N=Math.sqrt(I*I+z*z+L*L);if(Math.abs(N)<a.EPSILON)return null;I*=N=1/N,z*=N,L*=N,n=Math.sin(i),s=Math.cos(i),o=1-s,h=e[0],l=e[1],c=e[2],d=e[3],m=e[4],f=e[5],u=e[6],p=e[7],v=e[8],g=e[9],x=e[10],w=e[11],M=I*I*o+s,b=z*I*o+L*n,S=L*I*o-z*n,P=I*z*o-L*n,A=z*z*o+s,y=L*z*o+I*n,T=I*L*o+z*n,R=z*L*o-I*n,D=L*L*o+s,t[0]=h*M+m*b+v*S,t[1]=l*M+f*b+g*S,t[2]=c*M+u*b+x*S,t[3]=d*M+p*b+w*S,t[4]=h*P+m*A+v*y,t[5]=l*P+f*A+g*y,t[6]=c*P+u!
 *A+x*y,t[7]=d*P+p*A+w*y,t[8]=h*T+m*R+v*D,t[9]=l*T+f*R+g*D,t[10]=c*T+u*R+x*D,t[11]=d*T+p*R+w*D,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t},e.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},e.fromRotation=function(t,e,i){var r,n,s,o=i[0],h=i[1],l=i[2],c=Math.sqrt(o*o+h*h+l*l);if(Math.abs(c)<a.EPSILON)return null;return o*=c=1/c,h*=c,l*=c,r=Math.sin(e),n=Math.cos(e),s=1-n,t[0]=o*o*s+n,t[1]=h*o*s+l*r,t[2]=l*o*s-h*r,t[3]=0,t[4]=o*h*s-l*r,t[5]=h*h*s+n,t[6]=l*h*s+o*r,t[7]=0,t[8]=o*l*s+h*r,t[9]=h*l*s-o*r,t[10]=l*l*s+n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,i,a,r,n,s){var o=1/(i-e),h=1/(r-a),l=1/(n-s);return t[0]=2*n*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*n*h,t[6]=0,t[7]=0,t[8]=(i+e)*o,t[9]=(r+a)*h,t[10]=(s+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*n*2*l,t[15]=0,t},e.ortho=function(t,e,i,a,r,n,s){var o=1/(e-i),h=1/(a-r),l=1/(n-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+i)*o,t[13]=(r+a)*h,t[14]=(s+n)*l,t[15]=1,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0));function r(t,e,i){var a=e[0],r=e[1],n=e[2],s=e[3],o=e[4],h=e[5],l=e[6],c=e[7],d=e[8],m=e[9],f=e[10],u=e[11],p=e[12],v=e[13],g=e[14],x=e[15],w=i[0],M=i[1],b=i[2],S=i[3];return t[0]=w*a+M*o+b*d+S*p,t[1]=w*r+M*h+b*m+S*v,t[2]=w*n+M*l+b*f+S*g,t[3]=w*s+M*c+b*u+S*x,w=i[4],M=i[5],b=i[6],S=i[7],t[4]=w*a+M*o+b*d+S*p,t[5]=w*r+M*h+b*m+S*v,t[6]=w*n+M*l+b*f+S*g,t[7]=w*s+M*c+b*u+S*x,w=i[8],M=i[9],b=i[10],S=i[11],t[8]=w*a+M*o+b*d+S*p,t[9]=w*r+M*h+b*m+S*v,t[10]=w*n+M*l+b*f+S*g,t[11]=w*s+M*c+b*u+S*x,w=i[12],M=i[13],b=i[14],S=i[15],t[12]=w*a+M*o+b*d+S*p,t[13]=w*r+M*h+b*m+S*v,t[14]=w*n+M*l+b*f+S*g,t[15]=w*s+M*c+b*u+S*x,t}}])}));let canvasWidth,canvasHeight,canvasWidth0,canvasHeight0,b,B,angle,Zoom0,zoom0,viewportmargin,zoomFactor,zoomPinchFact!
 or,zoomPinchCap,zoomStep,shiftHoldDistance,shiftWaitTime,vibrateTime,embedded,canvas,gl,alpha,offscreen,context,maxMaterials,halfCanvasWidth,halfCanvasHeight,Zoom,maxViewportWidth,maxViewportHeight,P=[],Materials=[],Lights=[],Centers=[],Background=[1,1,1,1],absolute=!1,viewportshift=[0,0],nlights=0,Nmaterials=2,materials=[],pixel=.75,zoomRemeshFactor=1.5,FillFactor=.1;const windowTrim=10;let lastZoom,H,zmin,zmax,size2,ArcballFactor,third=1/3,rotMat=mat4.create(),projMat=mat4.create(),viewMat=mat4.create(),projViewMat=mat4.create(),normMat=mat3.create(),viewMat3=mat3.create(),cjMatInv=mat4.create(),T=mat4.create(),center={x:0,y:0,z:0},shift={x:0,y:0},viewParam={xmin:0,xmax:0,ymin:0,ymax:0,zmin:0,zmax:0},remesh=!0,wireframe=0,mouseDownOrTouchActive=!1,lastMouseX=null,lastMouseY=null,touchID=null,Positions=[],Normals=[],Colors=[],Indices=[];class Material{constructor(t,e,i,a,r,n){this.diffuse=t,this.emissive=e,this.specular=i,this.shininess=a,this.metallic=r,this.fresnel0=n}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Materials["+e+"]."+i);gl.uniform4fv(i("diffuse"),new Float32Array(this.diffuse)),gl.uniform4fv(i("emissive"),new Float32Array(this.emissive)),gl.uniform4fv(i("specular"),new Float32Array(this.specular)),gl.uniform4f(i("parameters"),this.shininess,this.metallic,this.fresnel0,0)}}let indexExt,TRIANGLES,material0Data,material1Data,materialData,colorData,transparentData,triangleData,materialIndex,enumPointLight=1,enumDirectionalLight=2;class Light{constructor(t,e){this.direction=t,this.color=e}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Lights["+e+"]."+i);gl.uniform3fv(i("direction"),new Float32Array(this.direction)),gl.uniform3fv(i("color"),new Float32Array(this.color))}}function initShaders(){let t=gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);maxMaterials=Math.floor((t-14)/4),Nmaterials=Math.min(Math.max(Nmaterials,Materials.length),maxMaterials),pixelShader=initShader(["WIDTH"]),materialShader=initShader(["NORMAL"]),colorShader=initShader(["NORMAL","COLOR"]),transparentShader=initShader(["!
 NORMAL","COLOR","TRANSPARENT"])}function deleteShaders(){gl.deleteProgram(transparentShader),gl.deleteProgram(colorShader),gl.deleteProgram(materialShader),gl.deleteProgram(pixelShader)}function noGL(){gl||alert("Could not initialize WebGL")}function saveAttributes(){let t=window.top.document.asygl[alpha];t.gl=gl,t.nlights=Lights.length,t.Nmaterials=Nmaterials,t.maxMaterials=maxMaterials,t.pixelShader=pixelShader,t.materialShader=materialShader,t.colorShader=colorShader,t.transparentShader=transparentShader}function restoreAttributes(){let t=window.top.document.asygl[alpha];gl=t.gl,nlights=t.nlights,Nmaterials=t.Nmaterials,maxMaterials=t.maxMaterials,pixelShader=t.pixelShader,materialShader=t.materialShader,colorShader=t.colorShader,transparentShader=t.transparentShader}function initGL(){if(alpha=Background[3]<1,embedded){let t=window.top.document;null==t.asygl&&(t.asygl=Array(2)),context=canvas.getContext("2d"),offscreen=t.offscreen,offscreen||(offscreen=t.createElement("canvas"),t.offscreen=offscreen),t.asygl[alpha]&&t.asygl[alpha].gl?(restoreAttributes(),(Lights.length!=nlights||Math.min(Materials.length,maxMaterials)>Nmaterials)&&(initShaders(),saveAttributes())):(gl=offscreen.getContext("webgl",{alpha:alpha}),gl||noGL(),initShaders(),t.asygl[alpha]={},saveAttributes())}else gl=canvas.getContext("webgl",{alpha:alpha}),gl||noGL(),initShaders();indexExt=gl.getExtension("OES_element_index_uint"),TRIANGLES=gl.TRIANGLES,material0Data=new vertexBuffer(gl.POINTS),material1Data=new vertexBuffer(gl.LINES),materialData=new vertexBuffer,colorData=new vertexBuffer,transparentData=new vertexBuffer,triangleData=new vertexBuffer}function getShader(t,e,i,a=[]){let r=`#version 100\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n#else\n  precision mediump float;\n#endif\n  #define nlights ${0==wireframe?Lights.length:0}\n\n  const int Nlights=${Math.max(Lights.length,1)};\n\n  #define Nmaterials ${Nmaterials}\n`;orthographic&&(r+="#define ORTHOGRAPHIC\n"),a.forEach(t=>r+="#define "+t+"\n");let n=t.createShader(i!
 );return t.shaderSource(n,r+e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)}function registerBuffer(t,e,i,a=gl.ARRAY_BUFFER){return t.length>0&&(0==e&&(e=gl.createBuffer(),i=!0),gl.bindBuffer(a,e),i&&gl.bufferData(a,t,gl.STATIC_DRAW)),e}function drawBuffer(t,e,i=t.indices){if(0==t.indices.length)return;let a=e!=pixelShader;setUniforms(t,e);let r=remesh||t.partial||!t.rendered;t.verticesBuffer=registerBuffer(new Float32Array(t.vertices),t.verticesBuffer,r),gl.vertexAttribPointer(positionAttribute,3,gl.FLOAT,!1,a?24:16,0),a&&Lights.length>0?gl.vertexAttribPointer(normalAttribute,3,gl.FLOAT,!1,24,12):pixel&&gl.vertexAttribPointer(widthAttribute,1,gl.FLOAT,!1,16,12),t.materialsBuffer=registerBuffer(new Int16Array(t.materialIndices),t.materialsBuffer,r),gl.vertexAttribPointer(materialAttribute,1,gl.SHORT,!1,2,0),e!=colorShader&&e!=transparentShader||(t.colorsBuffer=registerBuffer(new Uint8Array(t.colors),t.colorsBuffer,r),gl.vertexAttribPointer(colorAttribute,4,gl.UNSIGNED_BYTE,!0,0,0)),t.indicesBuffer=registerBuffer(indexExt?new Uint32Array(i):new Uint16Array(i),t.indicesBuffer,r,gl.ELEMENT_ARRAY_BUFFER),t.rendered=!0,gl.drawElements(a?wireframe?gl.LINES:t.type:gl.POINTS,i.length,indexExt?gl.UNSIGNED_INT:gl.UNSIGNED_SHORT,0)}class vertexBuffer{constructor(t){this.type=t||TRIANGLES,this.verticesBuffer=0,this.materialsBuffer=0,this.colorsBuffer=0,this.indicesBuffer=0,this.rendered=!1,this.partial=!1,this.clear()}clear(){this.vertices=[],this.materialIndices=[],this.colors=[],this.indices=[],this.nvertices=0,this.materials=[],this.materialTable=[]}vertex(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.nvertices++}Vertex(t,e,i=[0,0,0,0]){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndice!
 s.push(materialIndex),this.colors.push(i[0]),this.colors.push(i[1]),this.colors.push(i[2]),this.colors.push(i[3]),this.nvertices++}vertex0(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e),this.materialIndices.push(materialIndex),this.nvertices++}iVertex(t,e,i,a=[0,0,0,0]){let r=6*t;this.vertices[r]=e[0],this.vertices[r+1]=e[1],this.vertices[r+2]=e[2],this.vertices[r+3]=i[0],this.vertices[r+4]=i[1],this.vertices[r+5]=i[2],this.materialIndices[t]=materialIndex;let n=4*t;this.colors[n]=a[0],this.colors[n+1]=a[1],this.colors[n+2]=a[2],this.colors[n+3]=a[3],this.indices.push(t)}append(t){append(this.vertices,t.vertices),append(this.materialIndices,t.materialIndices),append(this.colors,t.colors),appendOffset(this.indices,t.indices,this.nvertices),this.nvertices+=t.nvertices}}function append(t,e){let i=t.length,a=e.length;t.length+=a;for(let r=0;r<a;++r)t[i+r]=e[r]}function appendOffset(t,e,i){let a=t.length,r=e.length;t.length+=e.length;for(let n=0;n<r;++n)t[a+n]=e[n]+i}class Geometry{constructor(){this.data=new vertexBuffer,this.Onscreen=!1,this.m=[]}offscreen(t){let e=projViewMat,i=t[0],a=i[0],r=i[1],n=i[2],s=1/(e[3]*a+e[7]*r+e[11]*n+e[15]);this.x=this.X=(e[0]*a+e[4]*r+e[8]*n+e[12])*s,this.y=this.Y=(e[1]*a+e[5]*r+e[9]*n+e[13])*s;for(let i=1,a=t.length;i<a;++i){let a=t[i],r=a[0],n=a[1],s=a[2],o=1/(e[3]*r+e[7]*n+e[11]*s+e[15]),h=(e[0]*r+e[4]*n+e[8]*s+e[12])*o,l=(e[1]*r+e[5]*n+e[9]*s+e[13])*o;h<this.x?this.x=h:h>this.X&&(this.X=h),l<this.y?this.y=l:l>this.Y&&(this.Y=l)}return(this.X<-1.01||this.x>1.01||this.Y<-1.01||this.y>1.01)&&(this.Onscreen=!1,!0)}T(t){let e=this.c[0],i=this.c[1],a=this.c[2],r=t[0]-e,n=t[1]-i,s=t[2]-a;return[r*normMat[0]+n*normMat[3]+s*normMat[6]+e,r*normMat[1]+n*normMat[4]+s*normMat[7]+i,r*normMat[2]+n*normMat[5]+s*normMat[8]+a]}Tcorners(t,e){return[this.T(t),this.T([t[0],t[1],e[2]]),this.T([t[0],e[1],t[2]]),this.T([t[0],e[1],e[2]]),this.T([e[0],t[1],t[2]]),this.T([e[0],t[1],e[2]]),this.T([e[0],e[1],t[2]]),this.T(e)]}setMaterial(t,e){null!
 ==t.materialTable[this.MaterialIndex]&&(t.materials.length>=Nmaterials&&(t.partial=!0,e()),t.materialTable[this.MaterialIndex]=t.materials.length,t.materials.push(Materials[this.MaterialIndex])),materialIndex=t.materialTable[this.MaterialIndex]}render(){let t;if(this.setMaterialIndex(),0==this.CenterIndex?t=corners(this.Min,this.Max):(this.c=Centers[this.CenterIndex-1],t=this.Tcorners(this.Min,this.Max)),this.offscreen(t))return this.data.clear(),void this.notRendered();let e,i=this.controlpoints;if(0==this.CenterIndex){if(!remesh&&this.Onscreen)return void this.append();e=i}else{let t=i.length;e=Array(t);for(let a=0;a<t;++a)e[a]=this.T(i[a])}let a=orthographic?1:this.Min[2]/B[2],r=pixel*Math.hypot(a*(viewParam.xmax-viewParam.xmin),a*(viewParam.ymax-viewParam.ymin))/size2;this.res2=r*r,this.Epsilon=FillFactor*r,this.data.clear(),this.notRendered(),this.Onscreen=!0,this.process(e)}}class BezierPatch extends Geometry{constructor(t,e,i,a,r,n){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.color=n,this.CenterIndex=e;let s=t.length;if(n){let t=n[0][3]+n[1][3]+n[2][3];this.transparent=16==s||4==s?t+n[3][3]<1020:t<765}else this.transparent=Materials[i].diffuse[3]<1;this.MaterialIndex=i,this.vertex=this.transparent?this.data.Vertex.bind(this.data):this.data.vertex.bind(this.data),this.L2norm(this.controlpoints)}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.color?this.setMaterial(colorData,drawColor):this.setMaterial(materialData,drawMaterial)}L2norm(t){let e=t[0];this.epsilon=0;let i=t.length;for(let a=1;a<i;++a)this.epsilon=Math.max(this.epsilon,abs2([t[a][0]-e[0],t[a][1]-e[1],t[a][2]-e[2]]));this.epsilon*=Number.EPSILON}processTriangle(t){let e=t[0],i=t[1],a=t[2],r=unit(cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-e[0],a[1]-e[1],a[2]-e[2]]));if(!this.offscreen([e,i,a])){let t,n,s;this.color?(t=this.data.Vertex(e,r,this.color[0]),n=this.data.Vertex(i,r,this.color[1]),s=this.data.Vertex(a,r,this.color[2])):(t=this.vertex(e,r),n=this.vertex(i,r),s=this.vertex(a,r)),0==!
 wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(t)),this.append()}}processQuad(t){let e=t[0],i=t[1],a=t[2],r=t[3],n=cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-i[0],a[1]-i[1],a[2]-i[2]]),s=cross([a[0]-r[0],a[1]-r[1],a[2]-r[2]],[r[0]-e[0],r[1]-e[1],r[2]-e[2]]),o=unit([n[0]+s[0],n[1]+s[1],n[2]+s[2]]);if(!this.offscreen([e,i,a,r])){let t,n,s,h;this.color?(t=this.data.Vertex(e,o,this.color[0]),n=this.data.Vertex(i,o,this.color[1]),s=this.data.Vertex(a,o,this.color[2]),h=this.data.Vertex(r,o,this.color[3])):(t=this.vertex(e,o),n=this.vertex(i,o),s=this.vertex(a,o),h=this.vertex(r,o)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(h)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(h),this.data.indices.push(h),this.data.indices.push(t)),this.append()}}curve(t,e,i,a,r){new BezierCurve([t[e],t[i],t[a],t[r]],0,materialIndex,this.Min,this.Max).render()}process(t){if(this.transparent&&1!=wireframe&&(materialIndex=this.color?-1-materialIndex:1+materialIndex),10==t.length)return this.process3(t);if(3==t.length)return this.processTriangle(t);if(4==t.length)return this.processQuad(t);if(1==wireframe)return this.curve(t,0,4,8,12),this.curve(t,12,13,14,15),this.curve(t,15,11,7,3),void this.curve(t,3,2,1,0);let e=t[0],i=t[3],a=t[12],r=t[15],n=this.normal(i,t[2],t[1],e,t[4],t[8],a);abs2(n)<this.epsilon&&(n=this.normal(i,t[2],t[1],e,t[13],t[14],r),abs2(n)<this.epsilon&&(n=this.normal(r,t[11],t[7],i,t[4],t[8],a)));let s=this.normal(e,t[4],t[8],a,t[13],t[14],r);abs2(s)<this.epsilon&&(s=this.normal(e,t[4],t[8],a,t[11],t[7],i),abs2(s)<this.epsilon&&(s=this.normal(i,t[2],t[1],e,t[13],t[14],r)));let o=this.normal(a,t[13],t[!
 14],r,t[11],t[7],i);abs2(o)<this.epsilon&&(o=this.normal(a,t[13],t[14],r,t[2],t[1],e),abs2(o)<this.epsilon&&(o=this.normal(e,t[4],t[8],a,t[11],t[7],i)));let h=this.normal(r,t[11],t[7],i,t[2],t[1],e);if(abs2(h)<this.epsilon&&(h=this.normal(r,t[11],t[7],i,t[4],t[8],a),abs2(h)<this.epsilon&&(h=this.normal(a,t[13],t[14],r,t[2],t[1],e))),this.color){let l=this.color[0],c=this.color[1],d=this.color[2],m=this.color[3],f=this.data.Vertex(e,n,l),u=this.data.Vertex(a,s,c),p=this.data.Vertex(r,o,d),v=this.data.Vertex(i,h,m);this.Render(t,f,u,p,v,e,a,r,i,!1,!1,!1,!1,l,c,d,m)}else{let l=this.vertex(e,n),c=this.vertex(a,s),d=this.vertex(r,o),m=this.vertex(i,h);this.Render(t,l,c,d,m,e,a,r,i,!1,!1,!1,!1)}this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):this.color?colorData.append(this.data):materialData.append(this.data)}notRendered(){this.transparent?transparentData.rendered=!1:this.color?colorData.rendered=!1:materialData.rendered=!1}Render(t,e,i,a,r,n,s,o,h,l,c,d,m,f,u,p,v){let g=this.Distance(t);if(g[0]<this.res2&&g[1]<this.res2)this.offscreen([n,s,o])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a))),this.offscreen([n,o,h])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(a),this.data.indices.push(r)):(this.data.indices.push(a),this.data.indices.push(r),this.data.indices.push(r),this.data.indices.push(e)));else{if(this.offscreen(t))return;let x=t[0],w=t[3],M=t[12],b=t[15];if(g[0]<this.res2){let g=new Split3(x,t[1],t[2],w),S=new Split3(t[4],t[5],t[6],t[7]),P=new Split3(t[8],t[9],t[10],t[11]),A=new Split3(M,t[13],t[14],b),y=[x,g.m0,g.m3,g.m5,t[4],S.m0,S.m3,S.m5,t[8],P.m0,P.m3,P.m5,M,A.m0,A.m3,A.m5],T=[g.m5,g.m4,g.m2,w,S.m5,S.m4,S.m2,t[7],P.m5,P.m4,P.m2,t[11],A.m5,A.m4,A.m2,b],R=this.normal(y[12],y[13],y[14],y[15],y[11],y[7],y[3]);abs2(R)<=this.epsilon&&(R=this.normal(y[12],y[13],y[14],y[15],y[2],y[1],y[0]),a!
 bs2(R)<=this.epsilon&&(R=this.normal(y[0],y[4],y[8],y[12],y[11],y[7],y[3])));let D=this.normal(T[3],T[2],T[1],T[0],T[4],T[8],T[12]);abs2(D)<=this.epsilon&&(D=this.normal(T[3],T[2],T[1],T[0],T[13],T[14],T[15]),abs2(D)<=this.epsilon&&(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12])));let I=this.Epsilon,z=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!c)if(c=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(T[12],T[8],T[4],T[0]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}else z=y[15];let L=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(x,t[1],t[2],w)<this.res2){let t=unit(this.differential(y[3],y[7],y[11],y[15]));L=[L[0]-I*t[0],L[1]-I*t[1],L[2]-I*t[2]]}else L=T[0];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(u[e]+p[e]),g[e]=.5*(v[e]+f[e]);let x=this.data.Vertex(z,R,t),w=this.data.Vertex(L,D,g);this.Render(y,e,i,x,w,n,s,z,L,l,c,!1,m,f,u,t,g),this.Render(T,w,x,a,r,L,z,o,h,!1,c,d,m,g,t,p,v)}else{let t=this.vertex(z,R),f=this.vertex(L,D);this.Render(y,e,i,t,f,n,s,z,L,l,c,!1,m),this.Render(T,f,t,a,r,L,z,o,h,!1,c,d,m)}return}if(g[1]<this.res2){let g=new Split3(x,t[4],t[8],M),S=new Split3(t[1],t[5],t[9],t[13]),P=new Split3(t[2],t[6],t[10],t[14]),A=new Split3(w,t[7],t[11],b),y=[x,t[1],t[2],w,g.m0,S.m0,P.m0,A.m0,g.m3,S.m3,P.m3,A.m3,g.m5,S.m5,P.m5,A.m5],T=[g.m5,S.m5,P.m5,A.m5,g.m4,S.m4,P.m4,A.m4,g.m2,S.m2,P.m2,A.m2,M,t[13],t[14],b],R=this.normal(y[0],y[4],y[8],y[12],y[13],y[14],y[15]);abs2(R)<=this.epsilon&&(R=this.normal(y[0],y[4],y[8],y[12],y[11],y[7],y[3]),abs2(R)<=this.epsilon&&(R=this.normal(y[3],y[2],y[1],y[0],y[13],y[14],y[15])));let D=this.normal(T[15],T[11],T[7],T[3],T[2],T[1],T[0]);abs2(D)<=this.epsilon&&(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]),abs2(D)<=this.epsilon&&(D=this.normal(T[12],T[13],T[14],T[15],T[2],T[1],T[0])));let I=this.Epsilon,z=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(x,t[4],t[8],M)<this.res2){let t=unit(this.differential(T[0],T[1],T[2],T[3]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}else z=y!
 [12];let L=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=Straightness(b,t[11],t[7],w)<this.res2){let t=unit(this.differential(y[15],y[14],y[13],y[12]));L=[L[0]-I*t[0],L[1]-I*t[1],L[2]-I*t[2]]}else L=T[3];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(p[e]+v[e]);let x=this.data.Vertex(z,R,t),w=this.data.Vertex(L,D,g);this.Render(y,e,x,w,r,n,z,L,h,l,!1,d,m,f,t,g,v),this.Render(T,x,i,a,w,z,s,o,L,l,c,d,!1,t,u,p,g)}else{let t=this.vertex(z,R),f=this.vertex(L,D);this.Render(y,e,t,f,r,n,z,L,h,l,!1,d,m),this.Render(T,t,i,a,f,z,s,o,L,l,c,d,!1)}return}let S=new Split3(x,t[1],t[2],w),P=new Split3(t[4],t[5],t[6],t[7]),A=new Split3(t[8],t[9],t[10],t[11]),y=new Split3(M,t[13],t[14],b),T=new Split3(x,t[4],t[8],M),R=new Split3(S.m0,P.m0,A.m0,y.m0),D=new Split3(S.m3,P.m3,A.m3,y.m3),I=new Split3(S.m5,P.m5,A.m5,y.m5),z=new Split3(S.m4,P.m4,A.m4,y.m4),L=new Split3(S.m2,P.m2,A.m2,y.m2),N=new Split3(w,t[7],t[11],b),E=[x,S.m0,S.m3,S.m5,T.m0,R.m0,D.m0,I.m0,T.m3,R.m3,D.m3,I.m3,T.m5,R.m5,D.m5,I.m5],O=[T.m5,R.m5,D.m5,I.m5,T.m4,R.m4,D.m4,I.m4,T.m2,R.m2,D.m2,I.m2,M,y.m0,y.m3,y.m5],V=[I.m5,z.m5,L.m5,N.m5,I.m4,z.m4,L.m4,N.m4,I.m2,z.m2,L.m2,N.m2,y.m5,y.m4,y.m2,b],C=[S.m5,S.m4,S.m2,w,I.m0,z.m0,L.m0,N.m0,I.m3,z.m3,L.m3,N.m3,I.m5,z.m5,L.m5,N.m5],B=E[15],H=this.normal(E[0],E[4],E[8],E[12],E[13],E[14],E[15]);abs2(H)<this.epsilon&&(H=this.normal(E[0],E[4],E[8],E[12],E[11],E[7],E[3]),abs2(H)<this.epsilon&&(H=this.normal(E[3],E[2],E[1],E[0],E[13],E[14],E[15])));let _=this.normal(O[12],O[13],O[14],O[15],O[11],O[7],O[3]);abs2(_)<this.epsilon&&(_=this.normal(O[12],O[13],O[14],O[15],O[2],O[1],O[0]),abs2(_)<this.epsilon&&(_=this.normal(O[0],O[4],O[8],O[12],O[11],O[7],O[3])));let F=this.normal(V[15],V[11],V[7],V[3],V[2],V[1],V[0]);abs2(F)<this.epsilon&&(F=this.normal(V[15],V[11],V[7],V[3],V[4],V[8],V[12]),abs2(F)<this.epsilon&&(F=this.normal(V[12],V[13],V[14],V[15],V[2],V[1],V[0])));let G=this.normal(C[3],C[2],C[1],C[0],C[4],C[8],C[12]);abs2(G)<this.epsilon&&(G=this.normal(C[3],C[2],C[1],C[0],C[13],C[14],C[15]),!
 abs2(G)<this.epsilon&&(G=this.normal(C[15],C[11],C[7],C[3],C[4],C[8],C[12])));let W=this.normal(V[3],V[2],V[1],B,V[4],V[8],V[12]),U=this.Epsilon,Z=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(x,t[4],t[8],M)<this.res2){let t=unit(this.differential(O[0],O[1],O[2],O[3]));Z=[Z[0]-U*t[0],Z[1]-U*t[1],Z[2]-U*t[2]]}else Z=E[12];let j=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!c)if(c=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(V[12],V[8],V[4],V[0]));j=[j[0]-U*t[0],j[1]-U*t[1],j[2]-U*t[2]]}else j=O[15];let k=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=Straightness(b,t[11],t[7],w)<this.res2){let t=unit(this.differential(C[15],C[14],C[13],C[12]));k=[k[0]-U*t[0],k[1]-U*t[1],k[2]-U*t[2]]}else k=V[3];let Y=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(x,t[1],t[2],w)<this.res2){let t=unit(this.differential(E[3],E[7],E[11],E[15]));Y=[Y[0]-U*t[0],Y[1]-U*t[1],Y[2]-U*t[2]]}else Y=C[0];if(f){let t=Array(4),g=Array(4),x=Array(4),w=Array(4),M=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(u[e]+p[e]),x[e]=.5*(p[e]+v[e]),w[e]=.5*(v[e]+f[e]),M[e]=.5*(t[e]+x[e]);let b=this.data.Vertex(Z,H,t),S=this.data.Vertex(j,_,g),P=this.data.Vertex(k,F,x),A=this.data.Vertex(Y,G,w),y=this.data.Vertex(B,W,M);this.Render(E,e,b,y,A,n,Z,B,Y,l,!1,!1,m,f,t,M,w),this.Render(O,b,i,S,y,Z,s,j,B,l,c,!1,!1,t,u,g,M),this.Render(V,y,S,a,P,B,j,o,k,!1,c,d,!1,M,g,p,x),this.Render(C,A,y,P,r,Y,B,k,h,!1,!1,d,m,w,M,x,v)}else{let t=this.vertex(Z,H),f=this.vertex(j,_),u=this.vertex(k,F),p=this.vertex(Y,G),v=this.vertex(B,W);this.Render(E,e,t,v,p,n,Z,B,Y,l,!1,!1,m),this.Render(O,t,i,f,v,Z,s,j,B,l,c,!1,!1),this.Render(V,v,f,a,u,B,j,o,k,!1,c,d,!1),this.Render(C,p,v,u,r,Y,B,k,h,!1,!1,d,m)}}}process3(t){if(1==wireframe)return this.curve(t,0,1,3,6),this.curve(t,6,7,8,9),void this.curve(t,9,5,2,0);let e=t[0],i=t[6],a=t[9],r=this.normal(a,t[5],t[2],e,t[1],t[3],i),n=this.normal(e,t[1],t[3],i,t[7],t[8],a),s=this.normal(i,t[7],t[8],a,t[5],t[2],e);if(this.color){let o=this.color!
 [0],h=this.color[1],l=this.color[2],c=this.data.Vertex(e,r,o),d=this.data.Vertex(i,n,h),m=this.data.Vertex(a,s,l);this.Render3(t,c,d,m,e,i,a,!1,!1,!1,o,h,l)}else{let o=this.vertex(e,r),h=this.vertex(i,n),l=this.vertex(a,s);this.Render3(t,o,h,l,e,i,a,!1,!1,!1)}this.data.indices.length>0&&this.append()}Render3(t,e,i,a,r,n,s,o,h,l,c,d,m){if(this.Distance3(t)<this.res2)this.offscreen([r,n,s])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(e)));else{if(this.offscreen(t))return;let f=t[0],u=t[1],p=t[2],v=t[3],g=t[4],x=t[5],w=t[6],M=t[7],b=t[8],S=t[9],P=[.5*(S[0]+x[0]),.5*(S[1]+x[1]),.5*(S[2]+x[2])],A=[.5*(S[0]+b[0]),.5*(S[1]+b[1]),.5*(S[2]+b[2])],y=[.5*(x[0]+p[0]),.5*(x[1]+p[1]),.5*(x[2]+p[2])],T=[.5*(b[0]+g[0]),.5*(b[1]+g[1]),.5*(b[2]+g[2])],R=[.5*(b[0]+M[0]),.5*(b[1]+M[1]),.5*(b[2]+M[2])],D=[.5*(p[0]+g[0]),.5*(p[1]+g[1]),.5*(p[2]+g[2])],I=[.5*(p[0]+f[0]),.5*(p[1]+f[1]),.5*(p[2]+f[2])],z=[.5*(g[0]+v[0]),.5*(g[1]+v[1]),.5*(g[2]+v[2])],L=[.5*(M[0]+w[0]),.5*(M[1]+w[1]),.5*(M[2]+w[2])],N=[.5*(f[0]+u[0]),.5*(f[1]+u[1]),.5*(f[2]+u[2])],E=[.5*(u[0]+v[0]),.5*(u[1]+v[1]),.5*(u[2]+v[2])],O=[.5*(v[0]+w[0]),.5*(v[1]+w[1]),.5*(v[2]+w[2])],V=[.5*(P[0]+y[0]),.5*(P[1]+y[1]),.5*(P[2]+y[2])],C=[.5*(A[0]+R[0]),.5*(A[1]+R[1]),.5*(A[2]+R[2])],B=[.5*(y[0]+I[0]),.5*(y[1]+I[1]),.5*(y[2]+I[2])],H=[.5*T[0]+.25*(g[0]+u[0]),.5*T[1]+.25*(g[1]+u[1]),.5*T[2]+.25*(g[2]+u[2])],_=[.5*(R[0]+L[0]),.5*(R[1]+L[1]),.5*(R[2]+L[2])],F=[.5*D[0]+.25*(g[0]+M[0]),.5*D[1]+.25*(g[1]+M[1]),.5*D[2]+.25*(g[2]+M[2])],G=[.25*(x[0]+g[0])+.5*z[0],.25*(x[1]+g[1])+.5*z[1],.25*(x[2]+g[2])+.5*z[2]],W=[.5*(N[0]+E[0]),.5*(N[1]+E[1]),.5*(N[2]+E[2])],U=[.5*(E[0]+O[0]),.5*(E[1]+O[1]),.5*(E[2]+O[2])],Z=[.5*(F[0]+W[0]),.5*(F[1]+W[1]),.5*(F[2]+W[2])],j=[.5*(F[0]+U[0]),.5*(F[1]+U[1]),.5*(F[2]+U[2])],k=[.5*(W[0]+U[0]),.5*(W[1]+U[1]),.5*(W[2]+U[2])],Y=[.5*(G[0]+_[0]),.5*(G[1]+_[1]),.5*(!
 G[2]+_[2])],X=[.5*(C[0]+G[0]),.5*(C[1]+G[1]),.5*(C[2]+G[2])],q=[.5*(C[0]+_[0]),.5*(C[1]+_[1]),.5*(C[2]+_[2])],K=[.5*(V[0]+H[0]),.5*(V[1]+H[1]),.5*(V[2]+H[2])],$=[.5*(B[0]+H[0]),.5*(B[1]+H[1]),.5*(B[2]+H[2])],Q=[.5*(V[0]+B[0]),.5*(V[1]+B[1]),.5*(V[2]+B[2])],J=[f,N,I,W,[.5*(D[0]+N[0]),.5*(D[1]+N[1]),.5*(D[2]+N[2])],B,k,Z,$,Q],tt=[k,U,j,O,[.5*(z[0]+L[0]),.5*(z[1]+L[1]),.5*(z[2]+L[2])],Y,w,L,_,q],et=[Q,K,V,X,[.5*(P[0]+T[0]),.5*(P[1]+T[1]),.5*(P[2]+T[2])],P,q,C,A,S],it=[q,X,Y,K,[.25*(y[0]+R[0]+E[0]+g[0]),.25*(y[1]+R[1]+E[1]+g[1]),.25*(y[2]+R[2]+E[2]+g[2])],j,Q,$,Z,k],at=this.normal(k,j,Y,q,X,K,Q),rt=this.normal(q,X,K,Q,$,Z,k),nt=this.normal(Q,$,Z,k,j,Y,q),st=this.Epsilon,ot=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!o)if(o=Straightness(w,M,b,S)<this.res2){let t=unit(this.sumdifferential(it[0],it[2],it[5],it[9],it[1],it[3],it[6]));ot=[ot[0]-st*t[0],ot[1]-st*t[1],ot[2]-st*t[2]]}else ot=q;let ht=[.5*(s[0]+r[0]),.5*(s[1]+r[1]),.5*(s[2]+r[2])];if(!h)if(h=Straightness(f,p,x,S)<this.res2){let t=unit(this.sumdifferential(it[6],it[3],it[1],it[0],it[7],it[8],it[9]));ht=[ht[0]-st*t[0],ht[1]-st*t[1],ht[2]-st*t[2]]}else ht=Q;let lt=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])];if(!l)if(l=Straightness(f,u,v,w)<this.res2){let t=unit(this.sumdifferential(it[9],it[8],it[7],it[6],it[5],it[2],it[0]));lt=[lt[0]-st*t[0],lt[1]-st*t[1],lt[2]-st*t[2]]}else lt=k;if(c){let t=Array(4),f=Array(4),u=Array(4);for(let e=0;e<4;++e)t[e]=.5*(d[e]+m[e]),f[e]=.5*(m[e]+c[e]),u[e]=.5*(c[e]+d[e]);let p=this.data.Vertex(ot,at,t),v=this.data.Vertex(ht,rt,f),g=this.data.Vertex(lt,nt,u);this.Render3(J,e,g,v,r,lt,ht,!1,h,l,c,u,f),this.Render3(tt,g,i,p,lt,n,ot,o,!1,l,u,d,t),this.Render3(et,v,p,a,ht,ot,s,o,h,!1,f,t,m),this.Render3(it,p,v,g,ot,ht,lt,!1,!1,!1,t,f,u)}else{let t=this.vertex(ot,at),c=this.vertex(ht,rt),d=this.vertex(lt,nt);this.Render3(J,e,d,c,r,lt,ht,!1,h,l),this.Render3(tt,d,i,t,lt,n,ot,o,!1,l),this.Render3(et,c,t,a,ht,ot,s,o,h,!1),this.Render3(it,t,c,d,ot,ht,lt,!1,!1,!1)}}}Distance(t){let e=t[0],i=t[3],a=t[12],r=t[15],n=Flatness(e,a,i,r);!
 n=Math.max(Straightness(e,t[4],t[8],a)),n=Math.max(n,Straightness(t[1],t[5],t[9],t[13])),n=Math.max(n,Straightness(i,t[7],t[11],r)),n=Math.max(n,Straightness(t[2],t[6],t[10],t[14]));let s=Flatness(e,i,a,r);return s=Math.max(s,Straightness(e,t[1],t[2],i)),s=Math.max(s,Straightness(t[4],t[5],t[6],t[7])),s=Math.max(s,Straightness(t[8],t[9],t[10],t[11])),s=Math.max(s,Straightness(a,t[13],t[14],r)),[n,s]}Distance3(t){let e=t[0],i=t[4],a=t[6],r=t[9],n=abs2([(e[0]+a[0]+r[0])*third-i[0],(e[1]+a[1]+r[1])*third-i[1],(e[2]+a[2]+r[2])*third-i[2]]);return n=Math.max(n,Straightness(e,t[1],t[3],a)),n=Math.max(n,Straightness(e,t[2],t[5],r)),Math.max(n,Straightness(a,t[7],t[8],r))}differential(t,e,i,a){let r=[3*(e[0]-t[0]),3*(e[1]-t[1]),3*(e[2]-t[2])];return abs2(r)>this.epsilon?r:(r=bezierPP(t,e,i),abs2(r)>this.epsilon?r:bezierPPP(t,e,i,a))}sumdifferential(t,e,i,a,r,n,s){let o=this.differential(t,e,i,a),h=this.differential(t,r,n,s);return[o[0]+h[0],o[1]+h[1],o[2]+h[2]]}normal(t,e,i,a,r,n,s){let o=3*(r[0]-a[0]),h=3*(r[1]-a[1]),l=3*(r[2]-a[2]),c=3*(i[0]-a[0]),d=3*(i[1]-a[1]),m=3*(i[2]-a[2]),f=[h*m-l*d,l*c-o*m,o*d-h*c];if(abs2(f)>this.epsilon)return f;let u=[c,d,m],p=[o,h,l],v=bezierPP(a,i,e),g=bezierPP(a,r,n),x=cross(g,u),w=cross(p,v);if(f=[x[0]+w[0],x[1]+w[1],x[2]+w[2]],abs2(f)>this.epsilon)return f;let M=bezierPPP(a,i,e,t),b=bezierPPP(a,r,n,s);x=cross(p,M),w=cross(b,u);let S=cross(g,v);return f=[x[0]+w[0]+S[0],x[1]+w[1]+S[1],x[2]+w[2]+S[2]],abs2(f)>this.epsilon?f:(x=cross(b,v),w=cross(g,M),f=[x[0]+w[0],x[1]+w[1],x[2]+w[2]],abs2(f)>this.epsilon?f:cross(b,M))}}class BezierCurve extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.CenterIndex=e,this.MaterialIndex=i}setMaterialIndex(){this.setMaterial(material1Data,drawMaterial1)}processLine(t){let e=t[0],i=t[1];if(!this.offscreen([e,i])){let t=[0,0,1];this.data.indices.push(this.data.vertex(e,t)),this.data.indices.push(this.data.vertex(i,t)),this.append()}}process(t){if(2==t.length)return this.processLine(t);let e=t[0],i=t[1],a=t[2],r=t[3!
 ],n=this..normal(bezierP(e,i),bezierPP(e,i,a)),s=this.normal(bezierP(a,r),bezierPP(r,a,i)),o=this.data.vertex(e,n),h=this.data.vertex(r,s);this.Render(t,o,h),this.data.indices.length>0&&this.append()}append(){material1Data.append(this.data)}notRendered(){material1Data.rendered=!1}Render(t,e,i){let a=t[0],r=t[1],n=t[2],s=t[3];if(Straightness(a,r,n,s)<this.res2)this.offscreen([a,s])||(this.data.indices.push(e),this.data.indices.push(i));else{if(this.offscreen(t))return;let o=[.5*(a[0]+r[0]),.5*(a[1]+r[1]),.5*(a[2]+r[2])],h=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])],l=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])],c=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])],d=[.5*(h[0]+l[0]),.5*(h[1]+l[1]),.5*(h[2]+l[2])],m=[.5*(c[0]+d[0]),.5*(c[1]+d[1]),.5*(c[2]+d[2])],f=[a,o,c,m],u=[m,d,l,s],p=this.normal(bezierPh(a,r,n,s),bezierPPh(a,r,n,s)),v=this.data.vertex(m,p);this.Render(f,e,v),this.Render(u,v,i)}}normal(t,e){let i=dot(t,t),a=dot(t,e);return[i*e[0]-a*t[0],i*e[1]-a*t[1],i*e[2]-a*t[2]]}}class Pixel extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoint=t,this.width=e,this.CenterIndex=0,this.MaterialIndex=i,this.Min=a,this.Max=r}setMaterialIndex(){this.setMaterial(material0Data,drawMaterial0)}process(t){this.data.indices.push(this.data.vertex0(this.controlpoint,this.width)),this.append()}append(){material0Data.append(this.data)}notRendered(){material0Data.rendered=!1}}class Triangles extends Geometry{constructor(t,e,i){super(),this.CenterIndex=0,this.MaterialIndex=t,this.Min=e,this.Max=i,this.Positions=Positions,this.Normals=Normals,this.Colors=Colors,this.Indices=Indices,Positions=[],Normals=[],Colors=[],Indices=[],this.transparent=Materials[t].diffuse[3]<1}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.setMaterial(triangleData,drawTriangle)}process(t){materialIndex=this.Colors.length>0?-1-materialIndex:1+materialIndex;for(let t=0,e=this.Indices.length;t<e;++t){let e=this.Indices[t],i=e[0],a=this.Positions[i[0]],r=this.Positions[i[1]],n=this.Positions[i[2]];if(!t!
 his.offscreen([a,r,n])){let t=e.length>1?e[1]:i;if(t&&0!=t.length||(t=i),this.Colors.length>0){let s=e.length>2?e[2]:i;s&&0!=s.length||(s=i);let o=this.Colors[s[0]],h=this.Colors[s[1]],l=this.Colors[s[2]];this.transparent|=o[3]+h[3]+l[3]<765,0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l)):(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[0],a,this.Normals[t[0]],o))}else 0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]])):(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[0],a,this.Normals[t[0]]))}}this.data.nvertices=this.Positions.length,this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):triangleData.append(this.data)}notRendered(){this.transparent?transparentData.rendered=!1:triangleData.rendered=!1}}function redraw(){initProjection(),setProjection(),remesh=!0,draw()}function home(){mat4.identity(rotMat),redraw()}let positionAttribute=0,normalAttribute=1,materialAttribute=2,colorAttribute=3,widthAttribute=4;function initShader(t=[]){let e=getShader(gl,vertex,gl.VERTEX_SHADER,t),i=getShader(gl,fragment,gl.FRAGMENT_SHADER,t),a=gl.createProgram();return gl.attachShader(a,e),gl.attachShader(a,i),gl.bindAttribLocation(a,positionAttribute,"position"),gl.bindAttribLocation(a,normalAttribute,"normal"),gl.bindAttribLocation(a,materialAttribute,"materialIndex"),gl.bindAttribLocation(a,colorAttribute,"color"),gl.bindAttribLocation(a,widthAttribute,"width"),gl.linkProgram(a),g!
 l.getProgramParameter(a,gl.LINK_STATUS)||alert("Could not initialize shaders"),a}class Split3{constructor(t,e,i,a){this.m0=[.5*(t[0]+e[0]),.5*(t[1]+e[1]),.5*(t[2]+e[2])];let r=.5*(e[0]+i[0]),n=.5*(e[1]+i[1]),s=.5*(e[2]+i[2]);this.m2=[.5*(i[0]+a[0]),.5*(i[1]+a[1]),.5*(i[2]+a[2])],this.m3=[.5*(this.m0[0]+r),.5*(this.m0[1]+n),.5*(this.m0[2]+s)],this.m4=[.5*(r+this.m2[0]),.5*(n+this.m2[1]),.5*(s+this.m2[2])],this.m5=[.5*(this.m3[0]+this.m4[0]),.5*(this.m3[1]+this.m4[1]),.5*(this.m3[2]+this.m4[2])]}}function unit(t){let e=1/(Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])||1);return[t[0]*e,t[1]*e,t[2]*e]}function abs2(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function dot(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function cross(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function bezierP(t,e){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function bezierPP(t,e,i){return[3*(t[0]+i[0])-6*e[0],3*(t[1]+i[1])-6*e[1],3*(t[2]+i[2])-6*e[2]]}function bezierPPP(t,e,i,a){return[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]}function bezierPh(t,e,i,a){return[i[0]+a[0]-t[0]-e[0],i[1]+a[1]-t[1]-e[1],i[2]+a[2]-t[2]-e[2]]}function bezierPPh(t,e,i,a){return[3*t[0]-5*e[0]+i[0]+a[0],3*t[1]-5*e[1]+i[1]+a[1],3*t[2]-5*e[2]+i[2]+a[2]]}function Straightness(t,e,i,a){let r=[third*(a[0]-t[0]),third*(a[1]-t[1]),third*(a[2]-t[2])];return Math.max(abs2([e[0]-r[0]-t[0],e[1]-r[1]-t[1],e[2]-r[2]-t[2]]),abs2([a[0]-r[0]-i[0],a[1]-r[1]-i[1],a[2]-r[2]-i[2]]))}function Flatness(t,e,i,a){let r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],n=[a[0]-i[0],a[1]-i[1],a[2]-i[2]];return Math.max(abs2(cross(r,unit(n))),abs2(cross(n,unit(r))))/9}function corners(t,e){return[t,[t[0],t[1],e[2]],[t[0],e[1],t[2]],[t[0],e[1],e[2]],[e[0],t[1],t[2]],[e[0],t[1],e[2]],[e[0],e[1],t[2]],e]}function minbound(t){return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.min(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function maxboun!
 d(t){return[Math.max(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.max(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function COBTarget(t,e){mat4.fromTranslation(T,[center.x,center.y,center.z]),mat4.invert(cjMatInv,T),mat4.multiply(t,e,cjMatInv),mat4.multiply(t,T,t)}function setUniforms(t,e){let i=e==pixelShader;gl.useProgram(e),gl.enableVertexAttribArray(positionAttribute),i&&gl.enableVertexAttribArray(widthAttribute);let a=!i&&Lights.length>0;if(a&&gl.enableVertexAttribArray(normalAttribute),gl.enableVertexAttribArray(materialAttribute),e.projViewMatUniform=gl.getUniformLocation(e,"projViewMat"),e.viewMatUniform=gl.getUniformLocation(e,"viewMat"),e.normMatUniform=gl.getUniformLocation(e,"normMat"),e!=colorShader&&e!=transparentShader||gl.enableVertexAttribArray(colorAttribute),a)for(let t=0;t<Lights.length;++t)Lights[t].setUniform(e,t);for(let i=0;i<t.materials.length;++i)t.materials[i].setUniform(e,i);gl.uniformMatrix4fv(e.projViewMatUniform,!1,projViewMat),gl.uniformMatrix4fv(e.viewMatUniform,!1,viewMat),gl.uniformMatrix3fv(e.normMatUniform,!1,normMat)}function handleMouseDown(t){zoomEnabled||enableZoom(),mouseDownOrTouchActive=!0,lastMouseX=t.clientX,lastMouseY=t.clientY}let pinchStart,touchStartTime,pinch=!1;function pinchDistance(t){return Math.hypot(t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY)}function handleTouchStart(t){t.preventDefault(),zoomEnabled||enableZoom();let e=t.targetTouches;swipe=rotate=pinch=!1,zooming||(1!=e.length||mouseDownOrTouchActive||(touchStartTime=(new Date).getTime(),touchId=e[0].identifier,lastMouseX=e[0].pageX,lastMouseY=e[0].pageY),2!=e.length||mouseDownOrTouchActive||(touchId=e[0].identifier,pinchStart=pinchDistance(e),pinch=!0))}function handleMouseUpOrTouchEnd(t){mouseDownOrTouchActive=!1}function rotateScene(t,e,i,a,r){if(t==i&&e==a)return;let[n,s]=arcball([t,-e],[i,-a]);mat4.fromRotation(T,2*r*ArcballFactor*n/Zoom,s),mat4.multiply(rotMat,T,rotMat)}function!
  shiftScene(t,e,i,a){let r=1/Zoom;shift.x+=(i-t)*r*halfCanvasWidth,shift.y-=(a-e)*r*halfCanvasHeight}function panScene(t,e,i,a){orthographic?shiftScene(t,e,i,a):(center.x+=(i-t)*(viewParam.xmax-viewParam.xmin),center.y-=(a-e)*(viewParam.ymax-viewParam.ymin))}function updateViewMatrix(){COBTarget(viewMat,rotMat),mat4.translate(viewMat,viewMat,[center.x,center.y,0]),mat3.fromMat4(viewMat3,viewMat),mat3.invert(normMat,viewMat3),mat4.multiply(projViewMat,projMat,viewMat)}function capzoom(){let t=Math.sqrt(Number.MAX_VALUE),e=1/t;Zoom<=e&&(Zoom=e),Zoom>=t&&(Zoom=t),(zoomRemeshFactor*Zoom<lastZoom||Zoom>zoomRemeshFactor*lastZoom)&&(remesh=!0,lastZoom=Zoom)}function zoomImage(t){let e=zoomStep*halfCanvasHeight*t;const i=Math.log(.1*Number.MAX_VALUE)/Math.log(zoomFactor);Math.abs(e)<i&&(Zoom*=zoomFactor**e,capzoom())}function normMouse(t){let e=t[0],i=t[1],a=Math.hypot(e,i);return a>1&&(denom=1/a,e*=denom,i*=denom),[e,i,Math.sqrt(Math.max(1-i*i-e*e,0))]}function arcball(t,e){let i=normMouse(t),a=normMouse(e),r=dot(i,a);return[r>1?0:r<-1?pi:Math.acos(r),unit(cross(i,a))]}function zoomScene(t,e,i,a){zoomImage(e-a)}const DRAGMODE_ROTATE=1,DRAGMODE_SHIFT=2,DRAGMODE_ZOOM=3,DRAGMODE_PAN=4;function processDrag(t,e,i,a=1){let r;switch(i){case 1:r=rotateScene;break;case 2:r=shiftScene;break;case 3:r=zoomScene;break;case 4:r=panScene;break;default:r=(t,e,i,a)=>{}}r((lastMouseX-halfCanvasWidth)/halfCanvasWidth,(lastMouseY-halfCanvasHeight)/halfCanvasHeight,(t-halfCanvasWidth)/halfCanvasWidth,(e-halfCanvasHeight)/halfCanvasHeight,a),lastMouseX=t,lastMouseY=e,setProjection(),draw()}let zoomEnabled=0;function enableZoom(){zoomEnabled=1,canvas.addEventListener("wheel",handleMouseWheel,!1)}function disableZoom(){zoomEnabled=0,canvas.removeEventListener("wheel",handleMouseWheel,!1)}function handleKey(t){if(zoomEnabled||enableZoom(),embedded&&zoomEnabled&&27==t.keyCode)return void disableZoom();let e=[];switch(t.key){case"x":e=[1,0,0];break;case"y":e=[0,1,0];break;case"z":e=[0,0,1];break;case"h":home();break;case"m":++wireframe,3==wirefr!
 ame&&(wireframe=0),2!=wireframe&&(embedded||deleteShaders(),initShaders()),remesh=!0,draw();break;case"+":case"=":case">":expand();break;case"-":case"_":case"<":shrink()}e.length>0&&(mat4.rotate(rotMat,rotMat,.1,e),updateViewMatrix(),draw())}function setZoom(){capzoom(),setProjection(),draw()}function handleMouseWheel(t){t.preventDefault(),t.deltaY<0?Zoom*=zoomFactor:Zoom/=zoomFactor,setZoom()}function handleMouseMove(t){if(!mouseDownOrTouchActive)return;let e,i=t.clientX,a=t.clientY;e=t.getModifierState("Control")?2:t.getModifierState("Shift")?3:t.getModifierState("Alt")?4:1,processDrag(i,a,e)}let zooming=!1,swipe=!1,rotate=!1;function handleTouchMove(t){if(t.preventDefault(),zooming)return;let e=t.targetTouches;if(!pinch&&1==e.length&&touchId==e[0].identifier){let t=e[0].pageX,i=e[0].pageY,a=t-lastMouseX,r=i-lastMouseY,n=a*a+r*r<=shiftHoldDistance*shiftHoldDistance;if(n&&!swipe&&!rotate&&(new Date).getTime()-touchStartTime>shiftWaitTime&&(navigator.vibrate&&window.navigator.vibrate(vibrateTime),swipe=!0),swipe)processDrag(t,i,2);else if(!n){rotate=!0,processDrag(e[0].pageX,e[0].pageY,1,.5)}}if(pinch&&!swipe&&2==e.length&&touchId==e[0].identifier){let t=pinchDistance(e),i=t-pinchStart;zooming=!0,i*=zoomPinchFactor,i>zoomPinchCap&&(i=zoomPinchCap),i<-zoomPinchCap&&(i=-zoomPinchCap),zoomImage(i/size2),pinchStart=t,swipe=rotate=zooming=!1,setProjection(),draw()}}let pixelShader,materialShader,colorShader,transparentShader,zbuffer=[];function transformVertices(t){let e=viewMat[2],i=viewMat[6],a=viewMat[10];zbuffer.length=t.length;for(let r=0;r<t.length;++r){let n=6*r;zbuffer[r]=e*t[n]+i*t[n+1]+a*t[n+2]}}function drawMaterial0(){drawBuffer(material0Data,pixelShader),material0Data.clear()}function drawMaterial1(){drawBuffer(material1Data,materialShader),material1Data.clear()}function drawMaterial(){drawBuffer(materialData,materialShader),materialData.clear()}function drawColor(){drawBuffer(colorData,colorShader),colorData.clear()}function drawTriangle(){drawBuffer(triangleData,transparentShader),triangleData.rendered!
 =!1,triangleData.clear()}function drawTransparent(){let t=transparentData.indices;if(wireframe>0)return drawBuffer(transparentData,transparentShader,t),void transparentData.clear();if(t.length>0){transformVertices(transparentData.vertices);let e=t.length/3,i=Array(e).fill().map((t,e)=>e);i.sort((function(e,i){let a=3*e;Ia=t[a],Ib=t[a+1],Ic=t[a+2];let r=3*i;return IA=t[r],IB=t[r+1],IC=t[r+2],zbuffer[Ia]+zbuffer[Ib]+zbuffer[Ic]<zbuffer[IA]+zbuffer[IB]+zbuffer[IC]?-1:1}));let a=Array(t.length);for(let r=0;r<e;++r){let e=3*i[r];a[3*r]=t[e],a[3*r+1]=t[e+1],a[3*r+2]=t[e+2]}gl.depthMask(!1),drawBuffer(transparentData,transparentShader,a),transparentData.rendered=!1,gl.depthMask(!0)}transparentData.clear()}function drawBuffers(){drawMaterial0(),drawMaterial1(),drawMaterial(),drawColor(),drawTriangle(),drawTransparent()}function draw(){embedded&&(offscreen.width=canvasWidth,offscreen.height=canvasHeight,setViewport()),gl.clearColor(Background[0],Background[1],Background[2],Background[3]),gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);for(let t=0;t<P.length;++t)P[t].render();drawBuffers(),embedded&&(context.clearRect(0,0,canvasWidth,canvasHeight),context.drawImage(offscreen,0,0)),0==wireframe&&(remesh=!1)}function setDimensions(t,e,i,a){let r=t/e,n=1/Zoom,s=(i/t+viewportshift[0])*Zoom,o=(a/e+viewportshift[1])*Zoom;if(orthographic){let t=B[0]-b[0],e=B[1]-b[1];if(t<e*r){let t=.5*e*r*n,i=2*t*s,a=e*n*o;viewParam.xmin=-t-i,viewParam.xmax=t-i,viewParam.ymin=b[1]*n-a,viewParam.ymax=B[1]*n-a}else{let e=.5*t/(r*Zoom),i=t*n*s,a=2*e*o;viewParam.xmin=b[0]*n-i,viewParam.xmax=B[0]*n-i,viewParam.ymin=-e-a,viewParam.ymax=e-a}}else{let t=H*n,e=t*r,i=2*e*s,a=2*t*o;viewParam.xmin=-e-i,viewParam.xmax=e-i,viewParam.ymin=-t-a,viewParam.ymax=t-a}}function setProjection(){setDimensions(canvasWidth,canvasHeight,shift.x,shift.y),(orthographic?mat4.ortho:mat4.frustum)(projMat,viewParam.xmin,viewParam.xmax,viewParam.ymin,viewParam.ymax,-viewParam.zmax,-viewParam.zmin),updateViewMatrix()}function initProjection(){H=-Math.tan(.5*angle)*B[2],center.!
 x=center..y=0,center.z=.5*(b[2]+B[2]),lastZoom=Zoom=zoom0,viewParam.zmin=b[2],viewParam.zmax=B[2],shift.x=shift.y=0}function setViewport(){gl.viewportWidth=canvasWidth,gl.viewportHeight=canvasHeight,gl.viewport(.5*(canvas.width-canvasWidth),.5*(canvas.height-canvasHeight),canvasWidth,canvasHeight),gl.scissor(0,0,canvas.width,canvas.height)}function setCanvas(){embedded&&(canvas.width=offscreen.width=canvasWidth,canvas.height=offscreen.height=canvasHeight),size2=Math.hypot(canvasWidth,canvasHeight),halfCanvasWidth=.5*canvas.width,halfCanvasHeight=.5*canvas.height,ArcballFactor=1+8*Math.hypot(viewportmargin[0],viewportmargin[1])/size2}function setsize(t,e){t>maxViewportWidth&&(t=maxViewportWidth),e>maxViewportHeight&&(e=maxViewportHeight),shift.x*=t/canvasWidth,shift.y*=e/canvasHeight,canvasWidth=t,canvasHeight=e,setCanvas(),setViewport(),setProjection(),remesh=!0}function resize(){if(zoom0=Zoom0,absolute&&!embedded)canvasWidth=canvasWidth0*window.devicePixelRatio,canvasHeight=canvasHeight0*window.devicePixelRatio;else{let t=canvasWidth0/canvasHeight0;canvasWidth=Math.max(window.innerWidth-10,10),canvasHeight=Math.max(window.innerHeight-10,10),!orthographic&&canvasWidth<canvasHeight*t&&(zoom0*=canvasWidth/(canvasHeight*t))}canvas.width=canvasWidth,canvas.height=canvasHeight;window.innerWidth,window.innerHeight;viewportshift[0]/=zoom0,viewportshift[1]/=zoom0,setsize(canvasWidth,canvasHeight),redraw()}function expand(){Zoom*=zoomFactor,setZoom()}function shrink(){Zoom/=zoomFactor,setZoom()}class Align{constructor(t,e){if(this.center=t,e){let t=e[0],i=e[1];this.ct=Math.cos(t),this.st=Math.sin(t),this.cp=Math.cos(i),this.sp=Math.sin(i)}}T0(t){return[t[0]+this.center[0],t[1]+this.center[1],t[2]+this.center[2]]}T(t){let e=t[0],i=t[1],a=t[2],r=e*this.ct+a*this.st;return[r*this.cp-i*this.sp+this.center[0],r*this.sp+i*this.cp+this.center[1],-e*this.st+a*this.ct+this.center[2]]}}function Tcorners(t,e,i){let a=[t(e),t([e[0],e[1],i[2]]),t([e[0],i[1],e[2]]),t([e[0],i[1],i[2]]),t([i[0],e[1],e[2]]),t([i[0],e[1],i[2]]),t([i[0],i[1!
 ],e[2]]),t(i)];return[minbound(a),maxbound(a)]}function sphere(t,e,i,r,n){let s,o,h,l,c,d,m=.524670512339254,f=.595936986722291,u=.954967051233925,p=.0820155480083437,v=.996685028842544,g=.0549670512339254,x=.998880711874577,w=.0405017186586849,M=[[[1,0,0],[1,0,m],[f,0,u],[p,0,v],[1,a,0],[1,a,m],[f,a*f,u],[p,a*p,v],[a,1,0],[a,1,m],[a*f,f,u],[a*p,p,v],[0,1,0],[0,1,m],[0,f,u],[0,p,v]],[[p,0,v],[p,a*p,v],[g,0,x],[a*p,p,v],[w,w,1],[.05*a,0,1],[0,p,v],[0,g,x],[0,.05*a,1],[0,0,1]]],b=new Align(t,n);function S(t){let e=Array(t.length);for(let i=0;i<t.length;++i){let a=t[i];e[i]=c([s*a[0],o*a[1],h*a[2]])}return e}n?(l=1,d=0,c=b.T.bind(b)):(l=-1,d=-e,c=b.T0.bind(b));let A=Tcorners(c,[-e,-e,d],[e,e,e]),y=A[0],T=A[1];for(let t=-1;t<=1;t+=2){s=t*e;for(let t=-1;t<=1;t+=2){o=t*e;for(let t=l;t<=1;t+=2){h=t*e;for(let t=0;t<2;++t)P.push(new BezierPatch(S(M[t]),i,r,y,T))}}}}let a=4/3*(Math.sqrt(2)-1);function disk(t,e,i,r,n){let s=1-2*a/3,o=[[1,0,0],[1,-a,0],[a,-1,0],[0,-1,0],[1,a,0],[s,0,0],[0,-s,0],[-a,-1,0],[a,1,0],[0,s,0],[-s,0,0],[-1,-a,0],[0,1,0],[-a,1,0],[-1,a,0],[-1,0,0]],h=new Align(t,n);let l=Tcorners(h.T.bind(h),[-e,-e,0],[e,e,0]);P.push(new BezierPatch(function(t){let i=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];i[a]=h.T([e*r[0],e*r[1],0])}return i}(o),i,r,l[0],l[1]))}function cylinder(t,e,i,r,n,s,o){let h,l,c=[[1,0,0],[1,0,1/3],[1,0,2/3],[1,0,1],[1,a,0],[1,a,1/3],[1,a,2/3],[1,a,1],[a,1,0],[a,1,1/3],[a,1,2/3],[a,1,1],[0,1,0],[0,1,1/3],[0,1,2/3],[0,1,1]],d=new Align(t,s);function m(t){let e=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];e[a]=d.T([h*r[0],l*r[1],i*r[2]])}return e}let f=Tcorners(d.T.bind(d),[-e,-e,0],[e,e,i]),u=f[0],p=f[1];for(let t=-1;t<=1;t+=2){h=t*e;for(let t=-1;t<=1;t+=2)l=t*e,P.push(new BezierPatch(m(c),r,n,u,p))}if(o){let e=d.T([0,0,i]);P.push(new BezierCurve([t,e],r,n,t,e))}}function rmf(t,e,i,a,r){class n{constructor(t,e,i){this.p=t,this.r=e,this.t=i,this.s=cross(i,e)}}let s=Number.EPSILON*Math.max(abs2(t),abs2(e),abs2(i),abs2(a));function o(r){if(1==r){let r=[a[0]-i[0],a[1]-i[!
 1],a[2]-i[2]];return abs2(r)>s?unit(r):(r=[2*i[0]-e[0]-a[0],2*i[1]-e[1]-a[1],2*i[2]-e[2]-a[2]],abs2(r)>s?unit(r):[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])])}let n=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])],o=[2*(t[0]+i[0])-4*e[0],2*(t[1]+i[1])-4*e[1],2*(t[2]+i[2])-4*e[2]],h=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],l=r*r,c=[n[0]*l+o[0]*r+h[0],n[1]*l+o[1]*r+h[1],n[2]*l+o[2]*r+h[2]];return abs2(c)>s?unit(c):(l=2*r,c=[n[0]*l+o[0],n[1]*l+o[1],n[2]*l+o[2]],abs2(c)>s?unit(c):unit(n))}let h=Array(r.length),l=[e[0]-t[0],e[1]-t[1],e[2]-t[2]];abs2(l)<s&&(l=[t[0]-2*e[0]+i[0],t[1]-2*e[1]+i[1],t[2]-2*e[2]+i[2]],abs2(l)<s&&(l=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])])),l=unit(l);let c=function(t){let e=cross(t,[0,1,0]),i=Number.EPSILON*abs2(t);return abs2(e)>i?unit(e):(e=cross(t,[0,0,1]),abs2(e)>i?unit(e):[1,0,0])}(l);h[0]=new n(t,c,l);for(let s=1;s<r.length;++s){let l=h[s-1],c=r[s],d=1-c,m=d*d,f=m*d,u=3*c;m*=u,d*=u*c;let p=c*c*c,v=[f*t[0]+m*e[0]+d*i[0]+p*a[0],f*t[1]+m*e[1]+d*i[1]+p*a[1],f*t[2]+m*e[2]+d*i[2]+p*a[2]],g=[v[0]-l.p[0],v[1]-l.p[1],v[2]-l.p[2]];if(0!=g[0]||0!=g[1]||0!=g[2]){let t=l.r,e=unit(g),i=l.t,a=dot(e,i),r=[i[0]-2*a*e[0],i[1]-2*a*e[1],i[2]-2*a*e[2]];i=o(c);let d=2*dot(e,t),m=[t[0]-d*e[0],t[1]-d*e[1],t[2]-d*e[2]],f=unit([i[0]-r[0],i[1]-r[1],i[2]-r[2]]),u=2*dot(f,m);m=[m[0]-u*f[0],m[1]-u*f[1],m[2]-u*f[2]],h[s]=new n(v,unit(m),unit(i))}else h[s]=h[s-1]}return h}function tube(t,e,i,r,n,s,o){let h=rmf(t[0],t[1],t[2],t[3],[0,1/3,2/3,1]),l=a*e,c=[[e,0],[e,l],[l,e],[0,e]];function d(e,a,o,l){let d=Array(16);for(let i=0;i<4;++i){let r=h[i],n=r.r[0],s=r.s[0],m=n*e+s*a,f=n*o+s*l;n=r.r[1],s=r.s[1];let u=n*e+s*a,p=n*o+s*l;n=r.r[2],s=r.s[2];let v=n*e+s*a,g=n*o+s*l,x=t[i],w=x[0];w1=x[1],w2=x[2];for(let t=0;t<4;++t){let e=c[t],a=e[0],r=e[1];d[4*i+t]=[m*a+f*r+w,u*a+p*r+w1,v*a+g*r+w2]}}P.push(new BezierPatch(d,i,r,n,s))}d(1,0,0,1),d(0,-1,1,0),d(-1,0,0,-1),d(0,1,-1,0),o&&P.push(new BezierCurve(t,i,r,n,s))}function webGLStart(){canvas=document.ge!
 tElementById("Asymptote"),embedded=window.top.document!=document,initGL(),gl.enable(gl.BLEND),gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA),gl.enable(gl.DEPTH_TEST),gl.enable(gl.SCISSOR_TEST),canvas.onmousedown=handleMouseDown,document.onmouseup=handleMouseUpOrTouchEnd,document.onmousemove=handleMouseMove,canvas.onkeydown=handleKey,embedded||enableZoom(),canvas.addEventListener("touchstart",handleTouchStart,!1),canvas.addEventListener("touchend",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchcancel",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchleave",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchmove",handleTouchMove,!1),document.addEventListener("keydown",handleKey,!1),canvasWidth0=canvasWidth,canvasHeight0=canvasHeight,mat4.identity(rotMat),0!=window.innerWidth&&0!=window.innerHeight&&resize(),window.addEventListener("resize",resize,!1)}

Modified: trunk/Master/texmf-dist/doc/asymptote/CAD.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/asy-latex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/asyRefCard.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/asymptote.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1	2021-02-24 18:33:44 UTC (rev 57876)
@@ -0,0 +1,535 @@
+HEADER    DNA/RNA                                 05-DEC-94   XXXX              
+TITLE     CRYSTAL STRUCTURE OF THE HIGHLY DISTORTED CHIMERIC DECAMER            
+TITLE    2 R(C)D(CGGCGCCG)R(G)-SPERMINE COMPLEX-SPERMINE BINDING TO             
+TITLE    3 PHOSPHATE ONLY AND MINOR GROOVE TERTIARY BASE-PAIRING                
+COMPND    5'-R(*CP*)-D(*CP*GP*GP*CP*GP*CP*CP*GP*)-R(*G)-3'                      
+KEYWDS    A-DNA/RNA, DOUBLE HELIX                                               
+EXPDTA    X-RAY DIFFRACTION                                                     
+AUTHOR    C.BAN, B.RAMAKRISHNAN, M.SUNDARALINGAM                                
+JRNL        AUTH   C.BAN, B.RAMAKRISHNAN, M.SUNDARALINGAM                       
+JRNL        TITL   CRYSTAL STRUCTURE OF THE HIGHLY DISTORTED CHIMERIC           
+JRNL        TITL 2 DECAMER R(C)D(CGGCGCCG)R(G).SPERMINE                         
+JRNL        TITL 3 COMPLEX--SPERMINE BINDING TO PHOSPHATE ONLY AND              
+JRNL        TITL 4 MINOR GROOVE TERTIARY BASE-PAIRING.                          
+JRNL        REF    NUCLEIC ACIDS RES.            V.  22  5466 1994              
+JRNL        REFN   ASTM NARHAD  UK ISSN 0305-1048                               
+REMARK   1                                                                      
+SEQRES   1 A   10    C  DC  DG  DG  DC  DG  DC  DC  DG   G                      
+SEQRES   1 B   10    C  DC  DG  DG  DC  DG  DC  DC  DG   G                      
+HETNAM     SPM SPERMINE                                                         
+FORMUL   3  SPM    C10 H26 N4                                                   
+FORMUL   4  HOH   *67(H2 O)                                                     
+CRYST1   23.980   40.770   44.840  90.00  90.00  90.00 P 21 21 21    8          
+ORIGX1      1.000000  0.000000  0.000000        0.00000                         
+ORIGX2      0.000000  1.000000  0.000000        0.00000                         
+ORIGX3      0.000000  0.000000  1.000000        0.00000                         
+SCALE1      0.041701  0.000000  0.000000        0.00000                         
+SCALE2      0.000000  0.024528  0.000000        0.00000                         
+SCALE3      0.000000  0.000000  0.022302        0.00000                         
+ATOM      1  N1    C A   1      -4.931   6.902   7.826  1.00 19.25           N  
+ATOM      2  C2    C A   1      -4.838   7.263   9.158  1.00 16.72           C  
+ATOM      3  O2    C A   1      -4.287   8.308   9.505  1.00 15.49           O  
+ATOM      4  N3    C A   1      -5.367   6.448  10.085  1.00 15.96           N  
+ATOM      5  C4    C A   1      -5.978   5.310   9.736  1.00 16.84           C  
+ATOM      6  N4    C A   1      -6.592   4.588  10.676  1.00 19.14           N  
+ATOM      7  C5    C A   1      -6.059   4.907   8.376  1.00 17.68           C  
+ATOM      8  C6    C A   1      -5.522   5.732   7.461  1.00 17.68           C  
+ATOM      9  O5'   C A   1      -4.549   5.095   4.262  1.00 28.71           O  
+ATOM     10  C5'   C A   1      -4.176   6.323   3.646  1.00 27.35           C  
+ATOM     11  C4'   C A   1      -3.853   7.410   4.672  1.00 24.41           C  
+ATOM     12  O4'   C A   1      -4.992   7.650   5.512  1.00 22.53           O  
+ATOM     13  C3'   C A   1      -2.713   7.010   5.605  1.00 23.56           C  
+ATOM     14  O3'   C A   1      -1.379   7.127   5.060  1.00 21.02           O  
+ATOM     15  C2'   C A   1      -2.950   7.949   6.756  1.00 23.73           C  
+ATOM     16  O2'   C A   1      -2.407   9.267   6.554  1.00 23.93           O  
+ATOM     17  C1'   C A   1      -4.489   7.917   6.825  1.00 20.60           C  
+ATOM     18  P    DC A   2      -0.178   6.220   5.647  1.00 24.85           P  
+ATOM     19  N1   DC A   2      -1.070   6.635  10.823  1.00 14.48           N  
+ATOM     20  C2   DC A   2      -1.417   6.355  12.130  1.00 13.03           C  
+ATOM     21  O2   DC A   2      -1.007   7.022  13.094  1.00 11.15           O  
+ATOM     22  N3   DC A   2      -2.233   5.297  12.333  1.00 11.95           N  
+ATOM     23  C4   DC A   2      -2.681   4.542  11.344  1.00 11.37           C  
+ATOM     24  N4   DC A   2      -3.532   3.569  11.652  1.00 11.93           N  
+ATOM     25  C5   DC A   2      -2.314   4.796   9.986  1.00 11.95           C  
+ATOM     26  C6   DC A   2      -1.510   5.853   9.776  1.00 11.94           C  
+ATOM     27  OP1  DC A   2       0.915   6.451   4.671  1.00 25.96           O  
+ATOM     28  OP2  DC A   2      -0.948   4.954   5.664  1.00 24.57           O  
+ATOM     29  O5'  DC A   2       0.435   6.502   7.097  1.00 24.10           O  
+ATOM     30  C5'  DC A   2       1.020   7.793   7.281  1.00 19.66           C  
+ATOM     31  C4'  DC A   2       1.034   8.184   8.738  1.00 17.99           C  
+ATOM     32  O4'  DC A   2      -0.290   8.244   9.222  1.00 17.23           O  
+ATOM     33  C3'  DC A   2       1.724   7.167   9.617  1.00 18.98           C  
+ATOM     34  O3'  DC A   2       3.130   7.395   9.564  1.00 18.39           O  
+ATOM     35  C2'  DC A   2       1.152   7.607  10.934  1.00 17.33           C  
+ATOM     36  C1'  DC A   2      -0.273   7.853  10.599  1.00 15.44           C  
+ATOM     37  P    DG A   3       4.177   6.440  10.285  1.00 21.10           P  
+ATOM     38  N9   DG A   3       1.615   4.437  14.168  1.00 11.63           N  
+ATOM     39  C8   DG A   3       1.389   4.110  12.865  1.00 10.83           C  
+ATOM     40  N7   DG A   3       0.474   3.204  12.690  1.00 12.03           N  
+ATOM     41  C5   DG A   3       0.093   2.891  13.972  1.00  9.28           C  
+ATOM     42  C6   DG A   3      -0.792   1.917  14.408  1.00  6.67           C  
+ATOM     43  O6   DG A   3      -1.528   1.253  13.693  1.00 11.90           O  
+ATOM     44  N1   DG A   3      -0.833   1.822  15.808  1.00  7.48           N  
+ATOM     45  C2   DG A   3      -0.098   2.583  16.686  1.00  7.12           C  
+ATOM     46  N2   DG A   3      -0.228   2.346  17.999  1.00  2.92           N  
+ATOM     47  N3   DG A   3       0.745   3.531  16.259  1.00  7.08           N  
+ATOM     48  C4   DG A   3       0.788   3.626  14.894  1.00 12.36           C  
+ATOM     49  OP1  DG A   3       5.469   7.004   9.830  1.00 21.52           O  
+ATOM     50  OP2  DG A   3       3.681   5.183   9.686  1.00 14.50           O  
+ATOM     51  O5'  DG A   3       4.378   6.142  11.832  1.00 19.95           O  
+ATOM     52  C5'  DG A   3       4.654   7.213  12.730  1.00 17.61           C  
+ATOM     53  C4'  DG A   3       4.016   6.885  14.035  1.00 17.62           C  
+ATOM     54  O4'  DG A   3       2.614   6.626  13.799  1.00 16.77           O  
+ATOM     55  C3'  DG A   3       4.595   5.586  14.598  1.00 16.31           C  
+ATOM     56  O3'  DG A   3       5.774   5.836  15.353  1.00 18.86           O  
+ATOM     57  C2'  DG A   3       3.484   5.274  15.528  1.00 17.71           C  
+ATOM     58  C1'  DG A   3       2.243   5.627  14.740  1.00 16.27           C  
+ATOM     59  P    DG A   4       6.647   4.633  15.976  1.00 19.10           P  
+ATOM     60  N9   DG A   4       3.496   1.232  18.319  1.00 11.82           N  
+ATOM     61  C8   DG A   4       3.617   1.742  17.054  1.00  8.09           C  
+ATOM     62  N7   DG A   4       2.902   1.118  16.167  1.00 11.07           N  
+ATOM     63  C5   DG A   4       2.252   0.091  16.894  1.00 11.16           C  
+ATOM     64  C6   DG A   4       1.310  -0.920  16.456  1.00  9.75           C  
+ATOM     65  O6   DG A   4       0.888  -1.151  15.321  1.00  9.97           O  
+ATOM     66  N1   DG A   4       0.906  -1.749  17.502  1.00  8.27           N  
+ATOM     67  C2   DG A   4       1.340  -1.630  18.818  1.00  8.31           C  
+ATOM     68  N2   DG A   4       0.852  -2.494  19.717  1.00  6.42           N  
+ATOM     69  N3   DG A   4       2.218  -0.681  19.223  1.00  9.10           N  
+ATOM     70  C4   DG A   4       2.629   0.144  18.209  1.00 10.34           C  
+ATOM     71  OP1  DG A   4       7.834   5.387  16.410  1.00 21.78           O  
+ATOM     72  OP2  DG A   4       6.811   3.466  15.083  1.00 20.41           O  
+ATOM     73  O5'  DG A   4       5.837   4.160  17.304  1.00 19.69           O  
+ATOM     74  C5'  DG A   4       5.832   4.777  18.613  1.00 14.70           C  
+ATOM     75  C4'  DG A   4       5.349   3.746  19.615  1.00 15.74           C  
+ATOM     76  O4'  DG A   4       4.014   3.339  19.320  1.00 15.71           O  
+ATOM     77  C3'  DG A   4       6.144   2.446  19.549  1.00 14.86           C  
+ATOM     78  O3'  DG A   4       7.442   2.553  20.185  1.00 20.22           O  
+ATOM     79  C2'  DG A   4       5.194   1.467  20.191  1.00 13.42           C  
+ATOM     80  C1'  DG A   4       3.886   1.904  19.582  1.00 13.10           C  
+ATOM     81  P    DC A   5       8.623   1.481  19.918  1.00 16.11           P  
+ATOM     82  N1   DC A   5       5.142  -2.576  17.527  1.00 12.08           N  
+ATOM     83  C2   DC A   5       4.179  -3.389  16.962  1.00 12.60           C  
+ATOM     84  O2   DC A   5       3.695  -4.327  17.591  1.00 10.69           O  
+ATOM     85  N3   DC A