summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/asymptote
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-04-07 18:26:53 +0000
committerKarl Berry <karl@freefriends.org>2013-04-07 18:26:53 +0000
commitb04c2e1a42573e9735547702356c7b9a769a6855 (patch)
treec0753443f39500a062d7698fe6b94359c813f871 /Master/texmf-dist/doc/asymptote
parentfb0bf13304a356f197bfc1add17f98c07e96f17b (diff)
texmf -> texmf-dist: doc
git-svn-id: svn://tug.org/texlive/trunk@29714 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/asymptote')
-rw-r--r--Master/texmf-dist/doc/asymptote/CAD.pdfbin0 -> 67553 bytes
-rw-r--r--Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdfbin0 -> 31448 bytes
-rw-r--r--Master/texmf-dist/doc/asymptote/asy-latex.pdfbin0 -> 194336 bytes
-rw-r--r--Master/texmf-dist/doc/asymptote/asyRefCard.pdfbin0 -> 47440 bytes
-rw-r--r--Master/texmf-dist/doc/asymptote/asymptote.pdfbin0 -> 1234515 bytes
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/100d.views30
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/1overx.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy43
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Bode.asy27
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/CAD1.asy43
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/CDlabel.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Coons.asy6
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/GaussianSurface.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Gouraud.asy18
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Gouraudcontour.asy31
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Hobbycontrol.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Hobbydir.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Klein.asy51
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy33
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy46
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy62
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Pythagoras.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/PythagoreanTree.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy16
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/Sierpinski.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy31
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy99
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/advection.asy87
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/alignbox.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/alignedaxis.asy107
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/cube.asy46
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/earthmoon.asy78
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/embeddedmovie.asy24
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/embeddedu3d.asy6
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/externalmovie.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/glmovie.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/heatequation.asy76
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie.tex55
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie3.tex44
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/pdfmovie.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy47
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/sphere.asy42
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/torusanimation.asy43
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/wavepacket.asy86
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/animations/wheel.asy63
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/annotation.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/arrows3.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/axis3.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/bars3.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/basealign.asy44
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/bezier.asy1
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/bezier2.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/beziercurve.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/bigdiagonal.asy2
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/billboard.asy10
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/binarytreetest.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/brokenaxis.asy25
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/buildcycle.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cardioid.asy15
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cards.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/centroidfg.asy38
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cheese.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/circles.asy33
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/clockarray.asy39
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/coag.asy16
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/colons.asy1
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/colorplanes.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/colors.asy116
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/condor.asy32
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cones.asy18
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/conicurv.asy49
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/contextfonts.asy10
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/controlsystem.asy25
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cos2theta.asy15
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cos3.asy25
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cosaddition.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy259
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cube.asy15
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/curvedlabel.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cyclohexane.asy80
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cylinder.asy8
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/cylinderskeleton.asy6
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/datagraph.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/delu.asy29
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/diagonal.asy1
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/diatom.asy129
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/diatom.csv28
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/dimension.asy23
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/dots.asy1
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/dragon.asy66
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/eetomumu.asy60
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy47
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/elevation.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/elliptic.asy115
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/epix.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/equilateral.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/equilchord.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/errorbars.asy42
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/exp.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/exp3.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/externalprc.tex12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/extrudedcontour.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/fano.asy28
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/fequlogo.asy40
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/fermi.asy40
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/filegraph.asy15
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/filegraph.dat4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/filesurface.asy45
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/filesurface.dat12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/fillcontour.asy29
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/fin.asy152
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/fjortoft.asy27
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/floor.asy28
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/flow.asy31
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy27
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/fractaltree.asy27
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/functionshading.asy31
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/galleon.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/gamma.asy24
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/gamma3.asy33
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/generalaxis.asy11
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/generalaxis3.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/graphmarkers.asy37
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/grid.asy7
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/grid3xyz.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/hatch.asy11
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/helix.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/hierarchy.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/histogram.asy19
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/hyperboloid.asy8
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/hyperboloidsilhouette.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/icon.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/image.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/imagecontour.asy38
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy47
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/impact.asy29
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/integraltest.asy38
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/interpolate1.asy226
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/intro.asy958
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/irregularcontour.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/join.asy15
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/join3.asy21
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/jump.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/knots.asy27
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/label3.asy7
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/label3ribbon.asy6
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/label3solid.asy6
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/label3zoom.asy16
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/labelbox.asy11
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/labelsquare.asy6
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/laserlattice.asy44
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/latexusage.tex117
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/latticeshading.asy7
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/layers.asy44
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/leastsquares.asy55
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/leastsquares.dat882
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/legend.asy15
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/lever.asy23
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/limit.asy28
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/lineargraph.asy16
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/lineargraph0.asy16
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/lines.asy10
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/linetype.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/lmfit1.asy37
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/log.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/log2graph.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/logdown.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/loggraph.asy18
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/loggrid.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/logimage.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/logo.asy28
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/logo3.asy41
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/logticks.asy11
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/lowint.asy11
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/lowupint.asy31
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/magnetic.asy18
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/makepen.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/markers1.asy102
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/markers2.asy34
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/markregular.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/mergeExample.asy77
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/mexicanhat.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/monthaxis.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/mosaic.asy165
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/mosquito.asy82
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/multicontour.asy19
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/near_earth.asy56
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/odetest.asy43
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/onecontour.asy5
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/oneoverx.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/orthocenter.asy40
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/p-orbital.asy31
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/parametricelevation.asy10
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/parametricgraph.asy16
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/parametricsurface.asy23
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/partialsurface.asy29
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/partitionExample.asy27
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/pdb.asy172
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/penfunctionimage.asy27
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/penimage.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/phase.asy18
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/piicon.eps1135
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/pipeintersection.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/pipes.asy140
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/pixel.pdfbin0 -> 2771 bytes
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/planeproject.asy18
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/planes.asy19
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/polararea.asy38
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/polarcircle.asy30
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/polardatagraph.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/poster.asy33
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/progrid.asy1
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/projectelevation.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/pseudosphere.asy33
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/quartercircle.asy2
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/quilt.asy44
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/rainbow.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/randompath3.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/ring.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/roll.asy10
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/roundpath.asy32
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sacone.asy23
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sacone3D.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sacylinder.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sacylinder3D.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/saddle.asy7
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/scaledgraph.asy15
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy32
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/secondaryaxis.csv1003
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/shade.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/shadedtiling.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/shadestroke.asy5
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/shellmethod.asy41
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/shellsqrtx01.asy36
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sin1x.asy16
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sin3.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sinc.asy24
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sinxlex.asy24
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/slidedemo.asy118
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/slopefield1.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/smoothelevation.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/soccerball.asy87
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spectrum.asy79
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sphere.asy6
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spheresilhouette.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sphericalharmonic.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spiral.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spiral3.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spline.asy25
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/splitpatch.asy87
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spring.asy33
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spring0.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/spring2.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sqrtx01.asy25
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/sqrtx01y1.asy25
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/square.asy2
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/star.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy11
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/stroke3.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/strokepath.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/strokeshade.asy4
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/subpictures.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/superpath.asy5
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/tanh.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/teapot.asy172
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/tensor.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/textpath.asy10
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy131
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/threeviews.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/tile.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/torus.asy20
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/transparency.asy10
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/treetest.asy22
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/trefoilknot.asy23
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/triads.asy52
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/triangle.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/triangulate.asy19
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/triceratops.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/trumpet.asy12
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy68
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/tvgen.asy1314
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy30
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/unitcircle.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/unitcircle3.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/unitoctant.asy35
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/upint.asy13
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/vectorfield.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/vectorfield3.asy26
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/vectorfieldsphere.asy17
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/venn.asy37
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/venn3.asy50
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/vertexshading.asy9
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/washer.asy14
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/washermethod.asy43
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/wedge.asy23
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/westnile.asy64
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/westnile.csv402
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/workcone.asy42
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/worksheet.asy49
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/worldmap.asy87
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/xsin1x.asy24
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/xstitch.asy170
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/xxsq01.asy30
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy35
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy34
-rw-r--r--Master/texmf-dist/doc/asymptote/examples/yingyang.asy7
314 files changed, 15198 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/asymptote/CAD.pdf b/Master/texmf-dist/doc/asymptote/CAD.pdf
new file mode 100644
index 00000000000..bb61b12dd4d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/CAD.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdf b/Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdf
new file mode 100644
index 00000000000..61dfa38cc71
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/asymptote/asy-latex.pdf b/Master/texmf-dist/doc/asymptote/asy-latex.pdf
new file mode 100644
index 00000000000..55883f461c8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/asy-latex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/asymptote/asyRefCard.pdf b/Master/texmf-dist/doc/asymptote/asyRefCard.pdf
new file mode 100644
index 00000000000..bed262c88fd
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/asyRefCard.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/asymptote/asymptote.pdf b/Master/texmf-dist/doc/asymptote/asymptote.pdf
new file mode 100644
index 00000000000..914215456fb
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/asymptote.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/asymptote/examples/100d.views b/Master/texmf-dist/doc/asymptote/examples/100d.views
new file mode 100644
index 00000000000..5e73cb0c8b9
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/100d.views
@@ -0,0 +1,30 @@
+VIEW%={View A}
+ COO=0.000001944790710695088 -0.000000199754154551 -303.740966796875
+ C2C=-0.43931567668914795 -0.011656288057565689 0.8982571363449097
+ ROO=367.52660744556164
+ ROLL=-75.86431813030065
+ AAC=34.903342413559436
+ BGCOLOR=1. 1. 1.
+ LIGHTS=Artwork
+ RENDERMODE=Solid
+END
+VIEW%={View B}
+ COO=-52.16141891479492 50.85958480834961 -249.23748779296875
+ C2C=-0.0608830563724041 0.722907543182373 -0.6882571578025818
+ ROO=117.10558117788756
+ ROLL=105.68252665017765
+ AAC=34.903342413559436
+ BGCOLOR=1. 1. 1.
+ LIGHTS=Artwork
+ RENDERMODE=Solid
+END
+VIEW%={View C}
+ COO=2.2545230388641357 2.9914066791534424 -300.3456115722656
+ C2C=0.8536049127578735 0.3032689690589905 -0.42354053258895874
+ ROO=303.7410359852936
+ ROLL=-126.08445879535664
+ AAC=34.903342413559436
+ BGCOLOR=1. 1. 1.
+ LIGHTS=Artwork
+ RENDERMODE=Solid
+END
diff --git a/Master/texmf-dist/doc/asymptote/examples/1overx.asy b/Master/texmf-dist/doc/asymptote/examples/1overx.asy
new file mode 100644
index 00000000000..5d9775d44dc
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/1overx.asy
@@ -0,0 +1,17 @@
+import graph;
+size(200,IgnoreAspect);
+
+real f(real x) {return 1/x;};
+
+bool3 branch(real x)
+{
+ static int lastsign=0;
+ if(x == 0) return false;
+ int sign=sgn(x);
+ bool b=lastsign == 0 || sign == lastsign;
+ lastsign=sign;
+ return b ? true : default;
+}
+
+draw(graph(f,-1,1,branch));
+axes("$x$","$y$",red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy b/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy
new file mode 100644
index 00000000000..8d770e058ae
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy
@@ -0,0 +1,14 @@
+import three;
+
+size(10cm);
+currentlight=Viewport;
+
+surface s=surface(patch(new triple[][] {
+ {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
+ {(0,1,0),(1,0,1),(1,0,1),(2,1,0)},
+ {(0,1,0),(1,0,-1),(1,0,-1),(2,1,0)},
+ {(0,2,0),(1,2,0),(1,2,0),(2,2,0)}}));
+
+draw(s,yellow);
+draw(s.s[0].vequals(0.5),squarecap+2bp+blue,currentlight);
+draw(s.s[0].uequals(0.5),squarecap+2bp+red,currentlight);
diff --git a/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy b/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy
new file mode 100644
index 00000000000..f8cbc458ca0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy
@@ -0,0 +1,43 @@
+import three;
+
+string viewpoint="
+COO=-684.0787963867188 206.90650939941406 218.13809204101562
+C2C=0.8244762420654297 -0.563306450843811 0.0540805421769619
+ROO=1009.7407942621448
+ROLL=17.39344555165265
+";
+
+// viewpoint=getstring("viewpoint",viewpoint);
+currentprojection=perspective(viewpoint);
+
+triple[][][] P={
+ {
+ {(-1.6,0,1.875),(-2.3,0,1.875),(-2.7,0,1.875),(-2.7,0,1.65),},
+ {(-1.6,-0.3,1.875),(-2.3,-0.3,1.875),(-2.7,-0.3,1.875),(-2.7,-0.3,1.65),},
+ {(-1.5,-0.3,2.1),(-2.5,-0.3,2.1),(-3,-0.3,2.1),(-3,-0.3,1.65),},
+ {(-1.5,0,2.1),(-2.5,0,2.1),(-3,0,2.1),(-3,0,1.65),}
+ },{
+ {(-2.7,0,1.65),(-2.7,0,1.425),(-2.5,0,0.975),(-2,0,0.75),},
+ {(-2.7,-0.3,1.65),(-2.7,-0.3,1.425),(-2.5,-0.3,0.975),(-2,-0.3,0.75),},
+ {(-3,-0.3,1.65),(-3,-0.3,1.2),(-2.65,-0.3,0.7275),(-1.9,-0.3,0.45),},
+ {(-3,0,1.65),(-3,0,1.2),(-2.65,0,0.7275),(-1.9,0,0.45),}
+ },{
+ {(-2.7,0,1.65),(-2.7,0,1.875),(-2.3,0,1.875),(-1.6,0,1.875),},
+ {(-2.7,0.3,1.65),(-2.7,0.3,1.875),(-2.3,0.3,1.875),(-1.6,0.3,1.875),},
+ {(-3,0.3,1.65),(-3,0.3,2.1),(-2.5,0.3,2.1),(-1.5,0.3,2.1),},
+ {(-3,0,1.65),(-3,0,2.1),(-2.5,0,2.1),(-1.5,0,2.1),}
+ },{
+ {(-2,0,0.75),(-2.5,0,0.975),(-2.7,0,1.425),(-2.7,0,1.65),},
+ {(-2,0.3,0.75),(-2.5,0.3,0.975),(-2.7,0.3,1.425),(-2.7,0.3,1.65),},
+ {(-1.9,0.3,0.45),(-2.65,0.3,0.7275),(-3,0.3,1.2),(-3,0.3,1.65),},
+ {(-1.9,0,0.45),(-2.65,0,0.7275),(-3,0,1.2),(-3,0,1.65),}
+ }
+};
+
+picture pic;
+size(pic,15cm);
+size3(pic,10cm);
+draw(pic,surface(P),blue);
+
+add(embed("label",pic),(0,0),N);
+label(cameralink("label"),(0,0),10S,fontsize(24pt));
diff --git a/Master/texmf-dist/doc/asymptote/examples/Bode.asy b/Master/texmf-dist/doc/asymptote/examples/Bode.asy
new file mode 100644
index 00000000000..a35540e9749
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Bode.asy
@@ -0,0 +1,27 @@
+import graph;
+texpreamble("\def\Arg{\mathop {\rm Arg}\nolimits}");
+
+size(10cm,5cm,IgnoreAspect);
+
+real ampl(real x) {return 2.5/(1+x^2);}
+real phas(real x) {return -atan(x)/pi;}
+
+scale(Log,Log);
+draw(graph(ampl,0.01,10));
+ylimits(0.001,100);
+
+xaxis("$\omega\tau_0$",BottomTop,LeftTicks);
+yaxis("$|G(\omega\tau_0)|$",Left,RightTicks);
+
+picture q=secondaryY(new void(picture pic) {
+ scale(pic,Log,Linear);
+ draw(pic,graph(pic,phas,0.01,10),red);
+ ylimits(pic,-1.0,1.5);
+ yaxis(pic,"$\Arg G/\pi$",Right,red,
+ LeftTicks("$% #.1f$",
+ begin=false,end=false));
+ yequals(pic,1,Dotted);
+ });
+label(q,"(1,0)",Scale(q,(1,0)),red);
+add(q);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/CAD1.asy b/Master/texmf-dist/doc/asymptote/examples/CAD1.asy
new file mode 100644
index 00000000000..4602e73b709
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/CAD1.asy
@@ -0,0 +1,43 @@
+import CAD;
+
+sCAD cad=sCAD.Create();
+
+// Freehand line
+draw(g=cad.MakeFreehand(pFrom=(3,-1)*cm,(6,-1)*cm),
+ p=cad.pFreehand);
+
+// Standard measurement lines
+draw(g=box((0,0)*cm,(1,1)*cm),p=cad.pVisibleEdge);
+cad.MeasureParallel(L="$\sqrt{2}$",
+ pFrom=(0,1)*cm,
+ pTo=(1,0)*cm,
+ dblDistance=-15mm);
+
+// Label inside,shifted to the right; arrows outside
+draw(g=box((2,0)*cm,(3,1)*cm),p=cad.pVisibleEdge);
+cad.MeasureParallel(L="1",
+ pFrom=(2,1)*cm,
+ pTo=(3,1)*cm,
+ dblDistance=5mm,
+ dblLeft=5mm,
+ dblRelPosition=0.75);
+
+// Label and arrows outside
+draw(g=box((5,0)*cm,(5.5,1)*cm),p=cad.pVisibleEdge);
+cad.MeasureParallel(L="0.5",
+ pFrom=(5,1)*cm,
+ pTo=(5.5,1)*cm,
+ dblDistance=5mm,
+ dblLeft=10mm,
+ dblRelPosition=-1);
+
+// Small bounds,asymmetric measurement line
+draw(g=box((7,0)*cm,(7.5,1)*cm),p=cad.pVisibleEdge);
+cad.MeasureParallel(L="0.5",
+ pFrom=(7,1)*cm,
+ pTo=(7.5,1)*cm,
+ dblDistance=5mm,
+ dblLeft=2*cad.GetMeasurementBoundSize(bSmallBound=true),
+ dblRight=10mm,
+ dblRelPosition=2,
+ bSmallBound=true);
diff --git a/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy b/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy
new file mode 100644
index 00000000000..3dd59699e40
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy
@@ -0,0 +1,14 @@
+size(11.7cm,11.7cm);
+asy(nativeformat(),"logo");
+fill(unitcircle^^(scale(2/11.7)*unitcircle),
+ evenodd+rgb(124/255,205/255,124/255));
+label(scale(1.1)*minipage(
+"\centering\scriptsize \textbf{\LARGE {\tt Asymptote}\\
+\smallskip
+\small The Vector Graphics Language}\\
+\smallskip
+\textsc{Andy Hammerlindl, John Bowman, and Tom Prince}
+http://asymptote.sourceforge.net\\
+",8cm),(0,0.6));
+label(graphic("logo."+nativeformat(),"height=7cm"),(0,-0.22));
+clip(unitcircle^^(scale(2/11.7)*unitcircle),evenodd);
diff --git a/Master/texmf-dist/doc/asymptote/examples/Coons.asy b/Master/texmf-dist/doc/asymptote/examples/Coons.asy
new file mode 100644
index 00000000000..9f59d152575
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Coons.asy
@@ -0,0 +1,6 @@
+size(200);
+
+pen[] p={red,green,blue,magenta};
+path g=(0,0){dir(45)}..(1,0)..(1,1)..(0,1)..cycle;
+tensorshade(g,p);
+dot(g);
diff --git a/Master/texmf-dist/doc/asymptote/examples/GaussianSurface.asy b/Master/texmf-dist/doc/asymptote/examples/GaussianSurface.asy
new file mode 100644
index 00000000000..bf198a6a243
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/GaussianSurface.asy
@@ -0,0 +1,21 @@
+import graph3;
+
+size(200,0);
+
+currentprojection=perspective(10,8,4);
+
+real f(pair z) {return 0.5+exp(-abs(z)^2);}
+
+draw((-1,-1,0)--(1,-1,0)--(1,1,0)--(-1,1,0)--cycle);
+
+draw(arc(0.12Z,0.2,90,60,90,25),ArcArrow3);
+
+surface s=surface(f,(-1,-1),(1,1),nx=5,Spline);
+
+xaxis3(Label("$x$"),red,Arrow3);
+yaxis3(Label("$y$"),red,Arrow3);
+zaxis3(XYZero(extend=true),red,Arrow3);
+
+draw(s,lightgray,meshpen=black+thick(),nolight,render(merge=true));
+
+label("$O$",O,-Z+Y,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy b/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy
new file mode 100644
index 00000000000..d49813e5e66
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy
@@ -0,0 +1,18 @@
+size(200);
+
+pen[] p={red,green,blue,magenta};
+pair[] z={(-1,0),(0,0),(0,1),(1,0)};
+int[] edges={0,0,0,1};
+gouraudshade(z[0]--z[2]--z[3]--cycle,p,z,edges);
+
+draw(z[0]--z[1]--z[2]--cycle);
+draw(z[1]--z[3]--z[2],dashed);
+
+dot(Label,z[0],W);
+dot(Label,z[1],S);
+dot(Label,z[2],N);
+dot(Label,z[3],E);
+
+label("0",z[0]--z[1],S,red);
+label("1",z[1]--z[2],E,red);
+label("2",z[2]--z[0],NW,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/Gouraudcontour.asy b/Master/texmf-dist/doc/asymptote/examples/Gouraudcontour.asy
new file mode 100644
index 00000000000..1cf788869a2
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Gouraudcontour.asy
@@ -0,0 +1,31 @@
+import graph;
+import palette;
+import contour;
+
+size(200);
+
+int n=100;
+
+real[] x=new real[n];
+real[] y=new real[n];
+real[] f=new real[n];
+
+real F(real a, real b) {return a^2+b^2;}
+
+real r() {return 1.1*(rand()/randMax*2-1);}
+
+for(int i=0; i < n; ++i) {
+ x[i]=r();
+ y[i]=r();
+ f[i]=F(x[i],y[i]);
+}
+
+pen Tickpen=black;
+pen tickpen=gray+0.5*linewidth(currentpen);
+pen[] Palette=BWRainbow();
+
+bounds range=image(x,y,f,Range(0,2),Palette);
+draw(contour(pairs(x,y),f,new real[]{0.25,0.5,1},operator ..));
+
+palette("$f(x,y)$",range,point(NW)+(0,0.5),point(NE)+(0,0.8),Top,Palette,
+ PaletteTicks(Tickpen,tickpen));
diff --git a/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy b/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy
new file mode 100644
index 00000000000..7f4cbbebb24
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy
@@ -0,0 +1,14 @@
+import graph;
+
+size(140mm,70mm,IgnoreAspect);
+scale(false);
+real[] x={1,3,4,5,6};
+real[] y={1,5,2,0,4};
+
+marker mark=marker(scale(1mm)*cross(6,false,r=0.35),red,Fill);
+
+draw(graph(x,y,Hermite),"Hermite Spline",mark);
+xaxis("$x$",Bottom,LeftTicks(x));
+yaxis("$y$",Left,LeftTicks);
+attach(legend(),point(NW),40S+30E,UnFill);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/Hobbycontrol.asy b/Master/texmf-dist/doc/asymptote/examples/Hobbycontrol.asy
new file mode 100644
index 00000000000..50662988e04
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Hobbycontrol.asy
@@ -0,0 +1,20 @@
+size(200);
+pair z0=(0,0);
+pair z1=(0.5,3);
+pair z2=(2,1);
+
+path g=z0..z1..z2;
+
+pair d0=dir(g,0);
+pair d1=dir(g,1);
+draw(Label("$\omega_0$",1),z0-d0..z0+d0,blue+dashed,Arrow);
+draw(Label("$\omega_1$",1),z1-d1..z1+1.5d1,blue+dashed,Arrow);
+draw(z0--interp(z0,z1,1.5),dashed);
+draw(subpath(g,0,1),blue);
+draw("$\theta$",arc(z0,0.4,degrees(z1-z0),degrees(d0)),red,Arrow,
+ EndPenMargin);
+draw("$\phi$",arc(z1,1.05,degrees(z1-z0),degrees(d1)),red,Arrow,
+ EndPenMargin);
+
+dot("$z_0$",z0,SW,red);
+dot("$z_1$",z1,SE,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/Hobbydir.asy b/Master/texmf-dist/doc/asymptote/examples/Hobbydir.asy
new file mode 100644
index 00000000000..01d8a2e0ed0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Hobbydir.asy
@@ -0,0 +1,21 @@
+size(200);
+pair z0=(0,0);
+pair z1=(1,2);
+pair z2=(2,1);
+
+path g=z0..z1..z2;
+
+label("$\ell_k$",z0--z1);
+draw("$\ell_{k+1}$",z1--z2,dashed);
+draw(z0--interp(z0,z1,1.5),dashed);
+pair d1=dir(g,1);
+draw(z1-d1..z1+d1,blue+dashed);
+draw(g,blue);
+draw(Label("$\theta_k$",0.4),arc(z1,0.4,degrees(z2-z1),degrees(d1)),blue,Arrow,
+ EndPenMargin);
+draw("$\phi_k$",arc(z1,0.4,degrees(d1),degrees(z1-z0),CCW),Arrow,
+ EndPenMargin);
+
+dot("$z_{k-1}$",z0,red);
+dot("$z_k$",z1,NW,red);
+dot("$z_{k+1}$",z2,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/Klein.asy b/Master/texmf-dist/doc/asymptote/examples/Klein.asy
new file mode 100644
index 00000000000..99914d90432
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Klein.asy
@@ -0,0 +1,51 @@
+import graph3;
+
+size(469pt);
+
+viewportmargin=0;
+
+currentprojection=perspective(
+camera=(25.0851928432063,-30.3337528952473,19.3728775115443),
+up=Z,
+target=(-0.590622314050054,0.692357205025578,-0.627122488455679),
+zoom=1,
+autoadjust=false);
+
+triple f(pair t) {
+ real u=t.x;
+ real v=t.y;
+ real r=2-cos(u);
+ real x=3*cos(u)*(1+sin(u))+r*cos(v)*(u < pi ? cos(u) : -1);
+ real y=8*sin(u)+(u < pi ? r*sin(u)*cos(v) : 0);
+ real z=r*sin(v);
+ return (x,y,z);
+}
+
+surface s=surface(f,(0,0),(2pi,2pi),8,8,Spline);
+draw(s,lightolive+white,"bottle",render(merge=true));
+
+string lo="$\displaystyle u\in[0,\pi]: \cases{x=3\cos u(1+\sin u)+(2-\cos u)\cos u\cos v,\cr
+y=8\sin u+(2-\cos u)\sin u\cos v,\cr
+z=(2-\cos u)\sin v.\cr}$";
+
+string hi="$\displaystyle u\in[\pi,2\pi]:\\\cases{x=3\cos u(1+\sin u)-(2-\cos u)\cos v,\cr
+y=8\sin u,\cr
+z=(2-\cos u)\sin v.\cr}$";
+
+real h=0.0125;
+
+begingroup3("parametrization");
+draw(surface(xscale(-0.38)*yscale(-0.18)*lo,s,0,1.7,h,bottom=false),
+ "[0,pi]");
+draw(surface(xscale(0.26)*yscale(0.1)*rotate(90)*hi,s,4.9,1.4,h,bottom=false),
+ "[pi,2pi]");
+endgroup3();
+
+begingroup3("boundary");
+draw(s.uequals(0),blue+dashed);
+draw(s.uequals(pi),blue+dashed);
+endgroup3();
+
+add(new void(frame f, transform3 t, picture pic, projection P) {
+ draw(f,invert(box(min(f,P),max(f,P)),P),"frame");
+ });
diff --git a/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy b/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy
new file mode 100644
index 00000000000..c4da5c2ff5f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy
@@ -0,0 +1,33 @@
+import three;
+
+size(10cm);
+
+currentprojection=perspective(50,80,50);
+
+// Nonrational curve:
+// udegree=3, nu=6;
+real[] knot={0,0,0,0,0.4,0.6,1,1,1,1};
+
+triple[] P={
+ (-31.2061,12.001,6.45082),
+ (-31.3952,14.7353,6.53707),
+ (-31.5909,21.277,6.70051),
+ (-31.4284,25.4933,6.76745),
+ (-31.5413,30.3485,6.68777),
+ (-31.4896,32.2839,6.58385)
+ };
+
+draw(P,knot,green);
+
+// Rational Bezier curve:
+// udegree=3, nu=4;
+real[] knot={0,0,0,0,1,1,1,1};
+path3 g=scale3(20)*(X{Y}..{-X}Y);
+triple[] P={point(g,0),postcontrol(g,0),precontrol(g,1),point(g,1)};
+
+// Optional weights:
+real[] weights=array(P.length,1.0);
+weights[2]=5;
+
+draw(P,knot,weights,red);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy b/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy
new file mode 100644
index 00000000000..5258c9986de
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy
@@ -0,0 +1,46 @@
+import three;
+
+/* Reference:
+@article{Qin97,
+ title={{Representing quadric surfaces using NURBS surfaces}},
+ author={Qin, K.},
+ journal={Journal of Computer Science and Technology},
+ volume={12},
+ number={3},
+ pages={210--216},
+ year={1997},
+ publisher={Springer}
+}
+*/
+
+size(10cm);
+currentprojection=perspective(5,4,2,autoadjust=false);
+
+// udegree=2, vdegree=3, nu=3, nv=4;
+
+real[] W={2/3,1/3,1};
+real[] w={1,1/3,1/3,1};
+
+// 10 distinct control points
+triple[][] P={{(0,0,1),(-2,-2,1),(-2,-2,-1),(0,0,-1)},
+ {(0,0,1),(2,-2,1),(2,-2,-1),(0,0,-1)},
+ {(0,0,1),(2,2,1),(2,2,-1),(0,0,-1)},
+ {(0,0,1),(-2,2,1),(-2,2,-1),(0,0,-1)}};
+
+P.cyclic=true;
+
+real[][] weights=new real[3][4];
+for(int i=0; i < 3; ++i)
+for(int j=0; j < 4; ++j)
+ weights[i][j]=W[i]*w[j];
+
+real[] uknot={0,0,1/3,1/2,1,1};
+real[] vknot={0,0,0,0,1,1,1,1};
+
+int N=1;
+
+for(int k=0; k < N; ++k)
+for(int i=0; i < 4; ++i)
+ draw(shift(k*Z)*P[i:i+3],uknot,vknot,weights,blue);
+
+// draw(unitsphere,red+opacity(0.1));
diff --git a/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy b/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy
new file mode 100644
index 00000000000..32df6ff98ea
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy
@@ -0,0 +1,62 @@
+import three;
+
+size(10cm);
+
+currentprojection=perspective(50,80,50);
+
+// Nonrational surface:
+// udegree=3, vdegree=3, nu=5, nv=6;
+real[] uknot={0,0,0,0,0.5,1,1,1,1};
+real[] vknot={0,0,0,0,0.4,0.6,1,1,1,1};
+
+triple[][] P={{
+ (-31.2061,12.001,6.45082),
+ (-31.3952,14.7353,6.53707),
+ (-31.5909,21.277,6.70051),
+ (-31.4284,25.4933,6.76745),
+ (-31.5413,30.3485,6.68777),
+ (-31.4896,32.2839,6.58385)
+ },{
+ (-28.279,12.001,7.89625),
+ (-28.4187,14.7353,8.00954),
+ (-28.5633,21.277,8.22422),
+ (-28.4433,25.4933,8.31214),
+ (-28.5266,30.3485,8.20749),
+ (-28.4885,32.2839,8.07099)
+ },{
+ (-20,12.001,10.0379),
+ (-20,14.7353,10.2001),
+ (-20,21.277,10.5076),
+ (-20,25.4933,10.6335),
+ (-20,30.3485,10.4836),
+ (-20,32.2839,10.2881)
+ },{
+ (-11.721,12.001,7.84024),
+ (-11.5813,14.7353,7.95269),
+ (-11.4367,21.277,8.16575),
+ (-11.5567,25.4933,8.25302),
+ (-11.4734,30.3485,8.14915),
+ (-11.5115,32.2839,8.01367)
+ },{
+ (-8.79391,12.001,6.39481),
+ (-8.60483,14.7353,6.48022),
+ (-8.40905,21.277,6.64204),
+ (-8.57158,25.4933,6.70832),
+ (-8.45874,30.3485,6.62943),
+ (-8.51041,32.2839,6.52653)
+ }
+};
+
+draw(P,uknot,vknot,new pen[] {red,green,blue,magenta});
+
+// Rational Bezier patch:
+// udegree=3, vdegree=3, nu=4, nv=4;
+real[] uknot={0,0,0,0,1,1,1,1};
+real[] vknot={0,0,0,0,1,1,1,1};
+triple[][] P=scale3(20)*octant1.P;
+
+// Optional weights:
+real[][] weights=array(P.length,array(P[0].length,1.0));
+weights[0][2]=5.0;
+
+draw(P,uknot,vknot,weights,blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/Pythagoras.asy b/Master/texmf-dist/doc/asymptote/examples/Pythagoras.asy
new file mode 100644
index 00000000000..f4ea68fe432
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Pythagoras.asy
@@ -0,0 +1,22 @@
+size(0,150);
+import geometry;
+
+real a=3;
+real b=4;
+real c=hypot(a,b);
+
+pair z1=(0,b);
+pair z2=(a,0);
+pair z3=(a+b,0);
+perpendicular(z1,NE,z1--z2,blue);
+perpendicular(z3,NW,blue);
+draw(square((0,0),z3));
+draw(square(z1,z2));
+
+real d=0.3;
+pair v=unit(z2-z1);
+draw(baseline("$a$"),-d*I--z2-d*I,red,Bars,Arrows,PenMargins);
+draw(baseline("$b$"),z2-d*I--z3-d*I,red,Arrows,Bars,PenMargins);
+draw("$c$",z3+z2*I-d*v--z2-d*v,red,Arrows,PenMargins);
+draw("$a$",z3+d--z3+z2*I+d,red,Arrows,Bars,PenMargins);
+draw("$b$",z3+z2*I+d--z3+z3*I+d,red,Arrows,Bars,PenMargins);
diff --git a/Master/texmf-dist/doc/asymptote/examples/PythagoreanTree.asy b/Master/texmf-dist/doc/asymptote/examples/PythagoreanTree.asy
new file mode 100644
index 00000000000..8ea66650bf3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/PythagoreanTree.asy
@@ -0,0 +1,20 @@
+size(250);
+
+real a=3;
+real b=4;
+real c=hypot(a,b);
+
+transform ta=shift(c,c)*rotate(-aCos(a/c))*scale(a/c)*shift(-c);
+transform tb=shift(0,c)*rotate(aCos(b/c))*scale(b/c);
+
+picture Pythagorean(int n) {
+ picture pic;
+ fill(pic,scale(c)*unitsquare,1/(n+1)*green+n/(n+1)*brown);
+ if(n == 0) return pic;
+ picture branch=Pythagorean(--n);
+ add(pic,ta*branch);
+ add(pic,tb*branch);
+ return pic;
+}
+
+add(Pythagorean(12));
diff --git a/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy b/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy
new file mode 100644
index 00000000000..a1f1b665089
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy
@@ -0,0 +1,13 @@
+import graph3;
+import palette;
+
+size(200,300,keepAspect=false);
+//settings.nothin=true;
+
+currentprojection=orthographic(10,10,30);
+currentlight=(10,10,5);
+triple f(pair t) {return (exp(t.x)*cos(t.y),exp(t.x)*sin(t.y),t.y);}
+
+surface s=surface(f,(-4,-2pi),(0,4pi),8,16,Spline);
+s.colors(palette(s.map(zpart),Rainbow()));
+draw(s,render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy b/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy
new file mode 100644
index 00000000000..8cb3af2cfa9
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy
@@ -0,0 +1,16 @@
+// Riemann surface of z^{1/n}
+import graph3;
+import palette;
+
+int n=3;
+
+size(200,300,keepAspect=false);
+
+currentprojection=orthographic(10,10,30);
+currentlight=(10,10,5);
+triple f(pair t) {return (t.x*cos(t.y),t.x*sin(t.y),t.x^(1/n)*sin(t.y/n));}
+
+surface s=surface(f,(0,0),(1,2pi*n),8,16,Spline);
+s.colors(palette(s.map(zpart),Rainbow()));
+
+draw(s,meshpen=black,render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/Sierpinski.asy b/Master/texmf-dist/doc/asymptote/examples/Sierpinski.asy
new file mode 100644
index 00000000000..d1664045d9f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/Sierpinski.asy
@@ -0,0 +1,17 @@
+size(10cm);
+
+// Draw Sierpinski triangle with top vertex A, side s, and depth q.
+void Sierpinski(pair A, real s, int q, bool top=true)
+{
+ pair B=A-(1,sqrt(2))*s/2;
+ pair C=B+s;
+ if(top) draw(A--B--C--cycle);
+ draw((A+B)/2--(B+C)/2--(A+C)/2--cycle);
+ if(q > 0) {
+ Sierpinski(A,s/2,q-1,false);
+ Sierpinski((A+B)/2,s/2,q-1,false);
+ Sierpinski((A+C)/2,s/2,q-1,false);
+ }
+}
+
+Sierpinski((0,1),1,5);
diff --git a/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy b/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy
new file mode 100644
index 00000000000..2e0d4facd64
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy
@@ -0,0 +1,31 @@
+size(200);
+import palette;
+import three;
+currentprojection=perspective(8,2,1);
+
+triple[] M={(0,0,1),1/3*(sqrt(8),0,-1),
+ 1/3*((sqrt(8))*Cos(120),(sqrt(8))*Sin(120),-1),
+ 1/3*((sqrt(8))*Cos(240),(sqrt(8))*Sin(240),-1)};
+
+int level=5;
+
+surface s;
+
+void recur(triple p, real u, int l) {
+ if(l < level)
+ for(triple V : M)
+ recur(p+u*V,u/2,l+1);
+ else
+ for(triple V : M) {
+ s.append(surface((p+u*(V+M[0]))--(p+u*(V+M[1]))--(p+u*(V+M[2]))--cycle));
+ s.append(surface((p+u*(V+M[0]))--(p+u*(V+M[2]))--(p+u*(V+M[3]))--cycle));
+ s.append(surface((p+u*(V+M[0]))--(p+u*(V+M[3]))--(p+u*(V+M[1]))--cycle));
+ s.append(surface((p+u*(V+M[3]))--(p+u*(V+M[2]))--(p+u*(V+M[1]))--cycle));
+ }
+}
+
+recur(O,0.5,1);
+
+s.colors(palette(s.map(zpart),Rainbow()));
+
+draw(s,render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy b/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy
new file mode 100644
index 00000000000..c398aa511c6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy
@@ -0,0 +1,99 @@
+size(200);
+import palette;
+import three;
+
+currentprojection=orthographic(1,1,1);
+
+triple[] M={
+ (-1,-1,-1),(0,-1,-1),(1,-1,-1),(1,0,-1),
+ (1,1,-1),(0,1,-1),(-1,1,-1),(-1,0,-1),
+ (-1,-1,0),(1,-1,0),(1,1,0),(-1,1,0),
+ (-1,-1,1),(0,-1,1),(1,-1,1),(1,0,1),(1,1,1),(0,1,1),(-1,1,1),(-1,0,1)
+};
+
+surface[] Squares={
+ surface((1,-1,-1)--(1,1,-1)--(1,1,1)--(1,-1,1)--cycle),
+ surface((-1,-1,-1)--(-1,1,-1)--(-1,1,1)--(-1,-1,1)--cycle),
+ surface((1,1,-1)--(-1,1,-1)--(-1,1,1)--(1,1,1)--cycle),
+ surface((1,-1,-1)--(-1,-1,-1)--(-1,-1,1)--(1,-1,1)--cycle),
+ surface((1,-1,1)--(1,1,1)--(-1,1,1)--(-1,-1,1)--cycle),
+ surface((1,-1,-1)--(1,1,-1)--(-1,1,-1)--(-1,-1,-1)--cycle),
+};
+
+int[][] SquaresPoints={
+ {2,3,4,10,16,15,14,9},
+ {0,7,6,11,18,19,12,8},
+ {4,5,6,11,18,17,16,10},
+ {2,1,0,8,12,13,14,9},
+ {12,13,14,15,16,17,18,19},
+ {0,1,2,3,4,5,6,7}
+};
+
+int[][] index={
+ {0,2,4},{0,1},{1,2,4},{2,3},{1,3,4},{0,1},{0,3,4},{2,3},
+ {4,5},{4,5},{4,5},{4,5},
+ {0,2,5},{0,1},{1,2,5},{2,3},{1,3,5},{0,1},{0,3,5},{2,3}
+};
+
+int[] Sponge0=array(n=6,value=1);
+
+int[] eraseFaces(int n, int[] Sponge0) {
+ int[] temp=copy(Sponge0);
+ for(int k : index[n]) {
+ temp[k]=0;
+ }
+ return temp;
+}
+
+int[][] Sponge1=new int[20][];
+for(int n=0; n < 20; ++n) {
+ Sponge1[n]=eraseFaces(n,Sponge0);
+}
+
+int[][] eraseFaces(int n, int[][] Sponge1) {
+ int[][] temp=copy(Sponge1);
+ for(int k : index[n])
+ for(int n1 : SquaresPoints[k])
+ temp[n1][k]=0;
+ return temp;
+}
+
+int[][][] Sponge2=new int[20][][];
+for(int n=0; n < 20; ++n)
+ Sponge2[n]=eraseFaces(n,Sponge1);
+
+int[][][] eraseFaces(int n, int[][][] Sponge2) {
+ int[][][] temp=copy(Sponge2);
+ for(int k : index[n])
+ for(int n2: SquaresPoints[k])
+ for(int n1: SquaresPoints[k])
+ temp[n2][n1][k]=0;
+ return temp;
+}
+
+int[][][][] Sponge3=new int[20][][][];
+for(int n=0; n < 20; ++n)
+ Sponge3[n]=eraseFaces(n,Sponge2);
+
+surface s3;
+real u=2/3;
+for(int n3=0; n3 < 20; ++n3) {
+ surface s2;
+ for(int n2=0; n2 < 20; ++n2) {
+ surface s1;
+ for(int n1=0; n1 < 20; ++n1) {
+ for(int k=0; k < 6; ++k){
+ transform3 T=scale3(u)*shift(M[n1])*scale3(0.5);
+ if(Sponge3[n3][n2][n1][k] > 0) {
+ s1.append(T*Squares[k]);
+ }
+ }
+ }
+ transform3 T=scale3(u)*shift(M[n2])*scale3(0.5);
+ s2.append(T*s1);
+ }
+ transform3 T=scale3(u)*shift(M[n3])*scale3(0.5);
+ s3.append(T*s2);
+}
+s3.colors(palette(s3.map(abs),Rainbow()));
+draw(s3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/advection.asy b/Master/texmf-dist/doc/asymptote/examples/advection.asy
new file mode 100644
index 00000000000..ea993ff0fc8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/advection.asy
@@ -0,0 +1,87 @@
+size(0,22cm);
+
+texpreamble("
+\usepackage{bm}
+\def\v{\bm}
+\def\grad{\v\nabla}
+\def\cross{{\v\times}}
+\def\curl{\grad\cross}
+\def\del{\nabla}
+");
+
+defaultpen(fontsize(10pt));
+
+real margin=1.5mm;
+
+object IC=draw("initial condition $\v U_0$",box,(0,1),
+ margin,black,FillDraw(palegray));
+object Adv0=draw("Lagrangian state $\v U(t)$",ellipse,(1,1),
+ margin,red,FillDraw(palered));
+object Adv=draw("Lagrangian prediction $\v U(t+\tau)$",ellipse,(1,0),
+ margin,red,FillDraw(palered));
+object AdvD=draw("diffused parcels",ellipse,(1.8,1),
+ margin,red,FillDraw(palered));
+object Ur=draw("rearranged $\v \widetilde U$",box,(0,0),
+ margin,orange+gray,FillDraw(paleyellow));
+object Ui=draw("interpolated $\v \widetilde U$",box,(1,-1),
+ margin,blue,FillDraw(paleblue));
+object Crank=draw("${\cal L}^{-1}(-\tau){\cal L}(\tau)\v \widetilde U$",
+ box,(0.5,-1),margin,blue,FillDraw(paleblue));
+object CrankR=draw("${\cal L}^{-1}(-\tau){\cal L}(\tau)\v \widetilde U$",
+ box,(0,-1),margin,orange+gray,FillDraw(paleyellow));
+object Urout=draw(minipage("\center{Lagrangian rearranged solution~$\v U_R$}",
+ 100pt),box,(0,-2),margin,orange+gray,
+ FillDraw(paleyellow));
+object Diff=draw("$\v D\del^2 \v \widetilde U$",box,(0.75,-1.5),
+ margin,blue,FillDraw(paleblue));
+object UIout=draw(minipage("\center{semi-Lagrangian solution~$\v U_I$}",80pt),
+ box,(0.5,-2),margin,FillDraw(palered+paleyellow));
+object psi=draw("$\psi=\del^{-2}\omega$",box,(1.6,-1),
+ margin,darkgreen,FillDraw(palegreen));
+object vel=draw("$\v v=\v{\hat z} \cross\grad\psi$",box,(1.6,-0.5),
+ margin,darkgreen,FillDraw(palegreen));
+
+add(new void(frame f, transform t) {
+ pair padv=0.5*(point(Adv0,S,t)+point(Adv,N,t));
+ picture pic;
+ draw(pic,"initialize",point(IC,E,t)--point(Adv0,W,t),RightSide,Arrow,
+ PenMargin);
+ draw(pic,minipage("\flushright{advect: Runge-Kutta}",80pt),
+ point(Adv0,S,t)--point(Adv,N,t),RightSide,red,Arrow,PenMargin);
+ draw(pic,Label("Lagrange $\rightarrow$ Euler",0.45),
+ point(Adv,W,t)--point(Ur,E,t),5LeftSide,orange+gray,
+ Arrow,PenMargin);
+ draw(pic,"Lagrange $\rightarrow$ Euler",point(Adv,S,t)--point(Ui,N,t),
+ RightSide,blue,Arrow,PenMargin);
+ draw(pic,point(Adv,E,t)--(point(AdvD,S,t).x,point(Adv,E,t).y),red,
+ Arrow(Relative(0.7)),PenMargin);
+ draw(pic,minipage("\flushleft{diffuse: multigrid Crank--Nicholson}",80pt),
+ point(Ui,W,t)--point(Crank,E,t),5N,blue,MidArrow,PenMargin);
+ draw(pic,minipage("\flushleft{diffuse: multigrid Crank--Nicholson}",80pt),
+ point(Ur,S,t)--point(CrankR,N,t),LeftSide,orange+gray,Arrow,PenMargin);
+ draw(pic,"output",point(CrankR,S,t)--point(Urout,N,t),RightSide,
+ orange+gray,Arrow,PenMargin);
+ draw(pic,point(Ui,S,t)--point(Diff,N,t),blue,MidArrow,PenMargin);
+ draw(pic,point(Crank,S,t)--point(Diff,N,t),blue,MidArrow,PenMargin);
+ label(pic,"subtract",point(Diff,N,t),12N,blue);
+ draw(pic,Label("Euler $\rightarrow$ Lagrange",0.5),
+ point(Diff,E,t)--(point(AdvD,S,t).x,point(Diff,E,t).y)--
+ (point(AdvD,S,t).x,point(Adv,E,t).y),RightSide,blue,
+ Arrow(position=1.5),PenMargin);
+ dot(pic,(point(AdvD,S,t).x,point(Adv,E,t).y),red);
+ draw(pic,(point(AdvD,S,t).x,point(Adv,E,t).y)--point(AdvD,S,t),red,Arrow,
+ PenMargin);
+ draw(pic,"output",point(Crank,S,t)--point(UIout,N,t),RightSide,brown,Arrow,
+ PenMargin);
+ draw(pic,Label("$t+\tau\rightarrow t$",0.45),
+ point(AdvD,W,t)--point(Adv0,E,t),2.5LeftSide,red,Arrow,PenMargin);
+ draw(pic,point(psi,N,t)--point(vel,S,t),darkgreen,Arrow,PenMargin);
+ draw(pic,Label("self-advection",4.5),point(vel,N,t)--
+ arc((point(vel,N,t).x,point(Adv,E,t).y),5,270,90)--
+ (point(vel,N,t).x,padv.y)--
+ padv,LeftSide,darkgreen,Arrow,PenMargin);
+ draw(pic,Label("multigrid",0.5,S),point(Ui,E,t)--point(psi,W,t),darkgreen,
+ Arrow,PenMargin);
+
+ add(f,pic.fit());
+ });
diff --git a/Master/texmf-dist/doc/asymptote/examples/alignbox.asy b/Master/texmf-dist/doc/asymptote/examples/alignbox.asy
new file mode 100644
index 00000000000..67083b1e2e0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/alignbox.asy
@@ -0,0 +1,9 @@
+real margin=1.5mm;
+
+object left=align(object("$x^2$",ellipse,margin),W);
+add(left);
+object right=align(object("$\sin x$",ellipse,margin),4E);
+add(right);
+add(new void(frame f, transform t) {
+ draw(f,point(left,NE,t)--point(right,W,t));
+ });
diff --git a/Master/texmf-dist/doc/asymptote/examples/alignedaxis.asy b/Master/texmf-dist/doc/asymptote/examples/alignedaxis.asy
new file mode 100644
index 00000000000..542dcb9bc60
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/alignedaxis.asy
@@ -0,0 +1,107 @@
+import graph;
+
+real Freq=60.0;
+real margin=5mm;
+
+pair exp(pair x) {
+ return exp(x.x)*(cos(x.y)+I*sin(x.y));
+}
+
+real Merr(real x, real w) {
+ real tau=x/(2*Freq);
+ return 20*log(abs((tau*w+tau/(exp(I*2*pi*Freq*tau)-1))*(I*2*pi*Freq)));
+}
+
+real Aerr(real x, real w) {
+ real tau=x/(2*Freq);
+ return degrees((tau*w+tau/(exp(I*2*pi*Freq*tau)-1))*(I*2*pi*Freq));
+}
+
+picture pic1;
+scale(pic1,Log,Linear);
+real Merr1(real x){return Merr(x,1);}
+draw(pic1,graph(pic1,Merr1,1e-4,1),black+1.2);
+
+ylimits(pic1,-60,20);
+yaxis(pic1,"magnitude (dB)",LeftRight,RightTicks(new
+ real[] {-60,-40,-20,0,20}));
+xaxis(pic1,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5));
+yequals(pic1,0,Dotted);
+yequals(pic1,-20,Dotted);
+yequals(pic1,-40,Dotted);
+xequals(pic1,1e-3,Dotted);
+xequals(pic1,1e-2,Dotted);
+xequals(pic1,1e-1,Dotted);
+
+size(pic1,100,100,point(pic1,SW),point(pic1,NE));
+
+label(pic1,"$\theta=1$",point(pic1,N),2N);
+
+frame f1=pic1.fit();
+add(f1);
+
+picture pic1p;
+scale(pic1p,Log,Linear);
+real Aerr1(real x){return Aerr(x,1);}
+draw(pic1p,graph(pic1p,Aerr1,1e-4,1),black+1.2);
+
+ylimits(pic1p,-5,95);
+yaxis(pic1p,"phase (deg)",LeftRight,RightTicks(new real[] {0,45,90}));
+xaxis(pic1p,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5));
+yequals(pic1p,0,Dotted);
+yequals(pic1p,45,Dotted);
+yequals(pic1p,90,Dotted);
+xequals(pic1p,1e-3,Dotted);
+xequals(pic1p,1e-2,Dotted);
+xequals(pic1p,1e-1,Dotted);
+
+size(pic1p,100,100,point(pic1p,SW),point(pic1p,NE));
+
+frame f1p=pic1p.fit();
+f1p=shift(0,min(f1).y-max(f1p).y-margin)*f1p;
+add(f1p);
+
+picture pic2;
+scale(pic2,Log,Linear);
+real Merr2(real x){return Merr(x,0.75);}
+draw(pic2,graph(pic2,Merr2,1e-4,1),black+1.2);
+
+ylimits(pic2,-60,20);
+yaxis(pic2,"magnitude (dB)",LeftRight,RightTicks(new
+ real[] {-60,-40,-20,0,20}));
+xaxis(pic2,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5));
+yequals(pic2,0,Dotted);
+yequals(pic2,-20,Dotted);
+yequals(pic2,-40,Dotted);
+xequals(pic2,1e-3,Dotted);
+xequals(pic2,1e-2,Dotted);
+xequals(pic2,1e-1,Dotted);
+
+size(pic2,100,100,point(pic2,SW),point(pic2,NE));
+
+label(pic2,"$\theta=0.75$",point(pic2,N),2N);
+
+frame f2=pic2.fit();
+f2=shift(max(f1).x-min(f2).x+margin)*f2;
+add(f2);
+
+picture pic2p;
+scale(pic2p,Log,Linear);
+real Aerr2(real x){return Aerr(x,0.75);}
+draw(pic2p,graph(pic2p,Aerr2,1e-4,1),black+1.2);
+
+ylimits(pic2p,-5,95);
+yaxis(pic2p,"phase (deg)",LeftRight,RightTicks(new real[] {0,45.1,90}));
+xaxis(pic2p,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5));
+yequals(pic2p,0,Dotted);
+yequals(pic2p,45,Dotted);
+yequals(pic2p,90,Dotted);
+xequals(pic2p,1e-3,Dotted);
+xequals(pic2p,1e-2,Dotted);
+xequals(pic2p,1e-1,Dotted);
+
+size(pic2p,100,100,point(pic2p,SW),point(pic2p,NE));
+
+frame f2p=pic2p.fit();
+f2p=shift(max(f1p).x-min(f2p).x+margin,min(f2).y-max(f2p).y-margin)*f2p;
+add(f2p);
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/cube.asy b/Master/texmf-dist/doc/asymptote/examples/animations/cube.asy
new file mode 100644
index 00000000000..001e54466d8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/cube.asy
@@ -0,0 +1,46 @@
+import math;
+import bsp;
+import animation;
+
+size(100,100);
+
+animation a;
+
+void face(face[] faces, path3 p, int j, int k) {
+ picture pic=faces.push(p);
+ filldraw(pic,project(p),Pen(j));
+ int sign=(k % 2 == 0) ? 1 : -1;
+ transform t=scale(4)*transform(dir(p,0,sign),dir(p,0,-sign));
+ label(pic,t*(string) j,project(0.5*(min(p)+max(p))));
+}
+
+void snapshot(transform3 t)
+{
+ static transform3 s=shift(-0.5*(X+Y+Z));
+ save();
+
+ face[] faces;
+ int j=-1;
+ transform3 T=t*s;
+ for(int k=0; k < 2; ++k) {
+ face(faces,T*plane((1,0,0),(0,1,0),(0,0,k)),++j,k);
+ face(faces,T*plane((0,1,0),(0,0,1),(k,0,0)),++j,k);
+ face(faces,T*plane((0,0,1),(1,0,0),(0,k,0)),++j,k);
+ }
+ add(faces);
+
+ a.add();
+ restore();
+}
+
+int n=50;
+
+real step=360/n;
+for(int i=0; i < n; ++i)
+ snapshot(rotate(i*step,X));
+for(int i=0; i < n; ++i)
+ snapshot(rotate(i*step,Y));
+for(int i=0; i < n; ++i)
+ snapshot(rotate(i*step,Z));
+
+a.movie(loops=10,delay=50);
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/earthmoon.asy b/Master/texmf-dist/doc/asymptote/examples/animations/earthmoon.asy
new file mode 100644
index 00000000000..efca043b8bc
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/earthmoon.asy
@@ -0,0 +1,78 @@
+import graph3;
+import solids;
+import three;
+import animate;
+
+settings.render=2;
+settings.tex="pdflatex";
+settings.prc=false;
+settings.thick=false;
+settings.outformat="mpg";
+currentprojection=orthographic(5,4,2);
+currentlight=light(specular=black,(0.1,-0.1,1),viewport=true);
+
+size(15cm,0);
+
+animation A;
+
+real Rst=20, Rl=0.7, Rtl=5;
+real ast=20, est=0.3, bst=ast*sqrt(1-est^2), cst=ast*est;
+real atl=5, etl=0.8, btl=atl*sqrt(1-etl^2), ctl=atl*etl;
+
+real xST(real t) {return ast*cos(t)+cst;}
+real yST(real t) {return bst*sin(t);}
+real zST(real t) {return 0;}
+
+real xTL(real t) {return atl*cos(27t);}
+real yTL(real t) {return btl*sin(27t);}
+real zTL(real t) {return 0;}
+
+
+real xLl(real t) {return Rl*cos(27t);}
+real yLl(real t) {return Rl*sin(27t);}
+real zLl(real t) {return 0;}
+
+real xTt(real t) {return Rtl*cos(100t)/5;}
+real yTt(real t) {return Rtl*sin(100t)/5;}
+real zTt(real t) {return 0;}
+
+real xl(real t) {return xST(t)+xTL(t)+xLl(t);}
+real yl(real t) {return yST(t)+yTL(t)+yLl(t);}
+real zl(real t) {return 0;}
+
+real xt(real t) {return xST(t)+xTt(t);}
+real yt(real t) {return yST(t)+yTt(t);}
+real zt(real t) {return 0;}
+
+real xL(real t) {return xST(t)+xTL(t);}
+real yL(real t) {return yST(t)+yTL(t);}
+real zL(real t) {return 0;}
+
+path3 Pl=graph(xl,yl,zl,0,2pi,1000),Pt=graph(xt,yt,zt,0,2pi,3000),
+Pts=graph(xST,yST,zST,0,2pi,500);
+
+picture pic;
+
+draw(pic,Pl,lightgray);
+draw(pic,Pt,lightblue);
+draw(pic,Pts,blue+dashed);
+
+draw(pic,shift(cst,0,0)*scale3(Rtl/2)*unitsphere,yellow);
+
+surface terre=scale3(Rtl/5)*unitsphere;
+surface lune=scale3(Rl)*unitsphere;
+
+int n=50;
+
+real step=2pi/n;
+for(int i=0; i < n; ++i) {
+ real k=i*step;
+ add(pic);
+ draw(shift(xL(k),yL(k),0)*lune,lightgray);
+ draw(shift(xST(k),yST(k),0)*terre,lightblue+lightgreen);
+ A.add();
+ erase();
+}
+
+A.movie(BBox(1mm,Fill(Black)),delay=500,
+ options="-density 288x288 -geometry 50%x");
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/embeddedmovie.asy b/Master/texmf-dist/doc/asymptote/examples/animations/embeddedmovie.asy
new file mode 100644
index 00000000000..98dfd424db8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/embeddedmovie.asy
@@ -0,0 +1,24 @@
+// An embedded movie;
+//
+// See http://www.tug.org/tex-archive/macros/latex/contrib/movie15/README
+// for documentation of the options.
+
+import embed; // Add embedded movie
+//import external; // Add external movie (use this form under Linux).
+
+// Generated needed mpeg file if it doesn't already exist.
+asy("mpg","wheel");
+
+// Produce a pdf file.
+settings.outformat="pdf";
+
+settings.twice=true;
+
+// An embedded movie:
+label(embed("wheel.mpg","poster,text=wheel.mpg,label=wheel.mpg",20cm,5.6cm),
+ (0,0),N);
+
+// An optional button:
+label(link("wheel.mpg","Play","play"),(0,0),S);
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/embeddedu3d.asy b/Master/texmf-dist/doc/asymptote/examples/animations/embeddedu3d.asy
new file mode 100644
index 00000000000..1116c216fe2
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/embeddedu3d.asy
@@ -0,0 +1,6 @@
+// An embedded U3D object;
+//
+import embed;
+
+label(embed("dice.u3d","poster,text=(dice.u3d),3Droo=27,label=dice",settings.paperwidth,settings.paperheight));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/externalmovie.asy b/Master/texmf-dist/doc/asymptote/examples/animations/externalmovie.asy
new file mode 100644
index 00000000000..77c99528307
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/externalmovie.asy
@@ -0,0 +1,17 @@
+// Embed a movie to be run in an external window.
+
+import external;
+
+// External movies require the pdflatex engine.
+settings.tex="pdflatex";
+
+// Generated needed mpeg file if it doesn't already exist.
+asy("mpg","wheel");
+
+// Produce a pdf file.
+settings.outformat="pdf";
+
+// External movie: viewable even with the Linux version of acroread.
+label(embed("wheel.mpg"),(0,0),N);
+
+label(link("wheel.mpg","Play"),(0,0),S);
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/glmovie.asy b/Master/texmf-dist/doc/asymptote/examples/animations/glmovie.asy
new file mode 100644
index 00000000000..c3d86481b1b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/glmovie.asy
@@ -0,0 +1,21 @@
+settings.autoplay=true;
+settings.loop=true;
+
+import graph3;
+import animate;
+currentprojection=orthographic(1,-2,0.5);
+
+animation A;
+int n=25;
+
+for(int i=0; i < n; ++i) {
+ picture pic;
+ size3(pic,6cm);
+ real k=i/n*pi;
+ real f(pair z) {return 4cos(abs(z)-k)*exp(-abs(z)/6);}
+ draw(pic,surface(f,(-4pi,-4pi),(4pi,4pi),Spline),paleblue);
+ draw(pic,shift(i*6Z/n)*unitsphere,yellow);
+ A.add(pic);
+}
+
+A.glmovie();
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/heatequation.asy b/Master/texmf-dist/doc/asymptote/examples/animations/heatequation.asy
new file mode 100644
index 00000000000..3c5708e583f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/heatequation.asy
@@ -0,0 +1,76 @@
+import graph3;
+import palette;
+import animate;
+
+settings.tex="pdflatex";
+settings.render=0;
+settings.prc=false;
+unitsize(1cm);
+
+animation a;
+
+currentprojection=perspective(-20,-18,18);
+currentlight=light(1,1,10);
+
+int n=26;
+real L=2.5;
+real dx=2*L/n;
+real CFL=0.125;
+real dt=CFL*dx^2;
+
+real[][] Z=new real[n][n];
+real[][] W=new real[n][n];
+
+guide initcond1=shift((-1,-1))*scale(0.5)*unitcircle;
+guide initcond2=shift((0.5,0))*yscale(1.2)*unitcircle;
+
+real f(pair p) {return (inside(initcond1,p)||inside(initcond2,p)) ? 2 : 0;}
+
+//Initialize
+for(int i=0; i < n; ++i)
+ for (int j=0; j < n; ++j)
+ Z[i][j]=f((-L,-L)+(2*L/n)*(i,j));
+
+real f(pair t) {
+ int i=round((n/2)*(t.x/L+1));
+ int j=round((n/2)*(t.y/L+1));
+ if(i > n-1) i=n-1;
+ if(j > n-1) j=n-1;
+ return Z[i][j];
+}
+
+surface sf;
+
+void advanceZ(int iter=20) {
+ for(int k=0; k < iter; ++k) {
+ for(int i=0; i < n; ++i)
+ for(int j=0; j < n; ++j) W[i][j]=0;
+ for(int i=1; i < n-1; ++i)
+ for(int j=1; j< n-1; ++j)
+ W[i][j]=Z[i][j]+(dt/dx^2)*(Z[i+1][j]+Z[i-1][j]+Z[i][j-1]+Z[i][j+1]
+ -4*Z[i][j]);
+ for(int i=0; i < n; ++i)
+ for(int j=0; j < n; ++j)
+ Z[i][j]=W[i][j];
+ };
+}
+
+pen[] Pal=Rainbow(96);
+
+int endframe=40;
+
+for(int fr=0; fr < endframe; ++fr) {
+ if(fr == 0) {// smoothing of initial state; no Spline, but full grid
+ advanceZ(3);
+ sf=surface(f,(-L,-L),(L,L),nx=n);
+ } else // use Spline and fewer grid points to save memory
+ sf=surface(f,(-L,-L),(L,L),nx=round(n/2),Spline);
+ sf.colors(palette(sf.map(zpart),Pal[0:round(48*max(sf).z)]));
+ draw(sf);
+ a.add();
+ erase();
+ advanceZ(30);
+};
+
+label(a.pdf(delay=400,"controls,loop"));
+shipout(bbox(3mm,darkblue+3bp+miterjoin,FillDraw(fillpen=paleblue)),"pdf");
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie.tex b/Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie.tex
new file mode 100644
index 00000000000..5f1eff9d4bb
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie.tex
@@ -0,0 +1,55 @@
+\documentclass{article}
+\usepackage[inline]{asymptote}
+%\usepackage{asymptote}
+\usepackage{animate}
+\begin{document}
+
+Here is an inline PDF movie, generated with the commands
+\begin{verbatim}
+pdflatex inlinemovie
+asy inlinemovie-*.asy
+pdflatex inlinemovie
+\end{verbatim}
+or equivalently,
+\begin{verbatim}
+latexmk -pdf inlinemovie
+\end{verbatim}
+
+\begin{center}
+\begin{asy}
+import animate;
+animation A=animation("movie1");
+real h=2pi/10;
+
+picture pic;
+unitsize(pic,2cm);
+for(int i=0; i < 10; ++i) {
+ draw(pic,expi(i*h)--expi((i+1)*h));
+ A.add(pic);
+}
+label(A.pdf("controls",delay=50,keep=!settings.inlinetex));
+\end{asy}
+%Uncomment the following line when not using the [inline] package option:
+%\ASYanimategraphics[controls]{50}{movie1}{}{}
+\end{center}
+
+And here is another one, clickable but without the control panel:
+\begin{center}
+\begin{asy}
+import animate;
+animation A=animation("movie2");
+real h=2pi/10;
+
+picture pic;
+unitsize(pic,2cm);
+for(int i=0; i < 10; ++i) {
+ draw(pic,expi(-i*h)--expi(-(i+1)*h),red);
+ A.add(pic);
+}
+label(A.pdf(keep=!settings.inlinetex));
+\end{asy}
+%Uncomment the following line when not using the [inline] package option:
+%\ASYanimategraphics[controls]{10}{movie2}{}{}
+\end{center}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie3.tex b/Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie3.tex
new file mode 100644
index 00000000000..5131c652a11
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/inlinemovie3.tex
@@ -0,0 +1,44 @@
+\documentclass{article}
+\usepackage[inline]{asymptote}
+%\usepackage{asymptote}
+\usepackage{animate}
+\begin{document}
+
+Here is an inline 3D PDF movie, generated with the commands
+\begin{verbatim}
+pdflatex inlinemovie3
+asy inlinemovie3-*.asy
+pdflatex inlinemovie3
+\end{verbatim}
+or equivalently,
+\begin{verbatim}
+latexmk -pdf inlinemovie3
+\end{verbatim}
+
+\begin{center}
+\begin{asy}
+settings.render=4;
+settings.prc=false;
+
+import graph3;
+import animate;
+currentprojection=orthographic(1,-2,0.5);
+
+animation A=animation("movie3");
+int n=20;
+for(int i=0; i < n; ++i) {
+ picture pic;
+ size3(pic,12cm,12cm,8cm);
+ real k=i/n*pi;
+ real f(pair z) {return 4cos(abs(z)-k)*exp(-abs(z)/6);}
+ draw(pic,surface(f,(-4pi,-4pi),(4pi,4pi),Spline),paleblue);
+ draw(pic,shift(i*6Z/n)*unitsphere,yellow);
+ A.add(pic);
+}
+label(A.pdf("autoplay,loop",delay=20,keep=!settings.inlinetex));
+\end{asy}
+%Uncomment the following line when not using the [inline] package option:
+%\ASYanimategraphics[autoplay,loop]{50}{movie3}{}{}
+\end{center}
+\end{document}
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/pdfmovie.asy b/Master/texmf-dist/doc/asymptote/examples/animations/pdfmovie.asy
new file mode 100644
index 00000000000..0f9cbc96445
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/pdfmovie.asy
@@ -0,0 +1,20 @@
+import animate;
+import patterns;
+
+settings.tex="pdflatex";
+
+animation a;
+
+add("brick",brick(black));
+
+int n=20;
+for(int i=0; i < 3.5n; ++i) {
+ picture pic;
+ size(pic,100);
+ path g=circle((0,sin(pi/n*i)),1);
+ fill(pic,g,mediumred);
+ fill(pic,g,pattern("brick"));
+ a.add(pic);
+}
+
+label(a.pdf("controls",multipage=false));
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy b/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy
new file mode 100644
index 00000000000..205f94fbc85
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy
@@ -0,0 +1,47 @@
+// Slide demo.
+// Command-line options to enable stepping and/or reverse video:
+// asy [-u stepping=true] [-u reverse=true] slidedemo
+
+orientation=Landscape;
+
+settings.tex="pdflatex";
+
+import slide;
+
+// Optional movie modules:
+import animate; // For portable embedded PDF movies
+access external; // For portable external movies
+access embed; // For non-portable embedded movies
+
+usersetting();
+
+titlepage("Slides with {\tt Asymptote}: Animations","John C. Bowman",
+ "University of Alberta","\today","http://asymptote.sf.net");
+
+title("Embedded PDF movies (portable)");
+animation a=animation("A");
+animation b=animation("B");
+int n=20;
+for(int i=0; i < 2n; ++i) {
+ picture pic;
+ size(pic,100);
+ draw(pic,shift(0,sin(pi/n*i))*unitsquare);
+ a.add(pic);
+ if(i < 1.5n) b.add(rotate(45)*pic);
+}
+display(a.pdf("autoplay,loop,controls",multipage=false));
+display(b.pdf("controls",multipage=false));
+
+// Generated needed files if they don't already exist.
+asy("mpg","wheel");
+
+title("External Movie (portable)");
+display(external.embed("wheel.mpg",
+ "poster,text=wheel.mpg,label=wheel.mpg",20cm,5.6cm));
+display(external.link("wheel.mpg","Play","play"));
+
+title("Embedded Movie (not portable)");
+display(embed.embed("wheel.mpg",
+ "poster,text=wheel.mpg,label=wheel.mpg",
+ 20cm,5.6cm));
+display(embed.link("wheel.mpg","Play","play"));
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/sphere.asy b/Master/texmf-dist/doc/asymptote/examples/animations/sphere.asy
new file mode 100644
index 00000000000..125cecc5566
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/sphere.asy
@@ -0,0 +1,42 @@
+import solids;
+import animation;
+
+currentprojection=orthographic((0,5,2));
+currentlight=(0,5,5);
+
+settings.thick=false;
+settings.render=0;
+
+int nbpts=200;
+real step=2*pi/nbpts;
+int angle=10;
+
+unitsize(1cm);
+
+triple[] P=new triple[nbpts];
+for(int i=0; i < nbpts; ++i) {
+ real t=-pi+i*step;
+ P[i]=(3sin(t)*cos(2t),3sin(t)*sin(2t),3cos(t));
+}
+
+transform3 t=rotate(angle,(0,0,0),(1,0.25,0.25));
+revolution r=sphere(O,3);
+draw(surface(r),lightgrey);
+draw(r,backpen=linetype("8 8",8));
+
+animation A;
+
+for(int phi=0; phi < 360; phi += angle) {
+ bool[] front=new bool[nbpts];
+ save();
+ for(int i=0; i < nbpts; ++i) {
+ P[i]=t*P[i];
+ front[i]=dot(P[i],currentprojection.camera) > 0;
+ }
+ draw(segment(P,front,operator ..),1mm+blue+extendcap);
+ draw(segment(P,!front,operator ..),grey);
+ A.add();
+ restore();
+}
+
+A.movie(0,200);
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/torusanimation.asy b/Master/texmf-dist/doc/asymptote/examples/animations/torusanimation.asy
new file mode 100644
index 00000000000..74a5df43278
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/torusanimation.asy
@@ -0,0 +1,43 @@
+import graph3;
+import animation;
+import solids;
+
+currentprojection=perspective(50,40,20);
+
+currentlight=(0,5,5);
+
+real R=3;
+real a=1;
+int n=8;
+
+path3[] p=new path3[n];
+animation A;
+
+for(int i=0; i < n; ++i) {
+ triple g(real s) {
+ real twopi=2*pi;
+ real u=twopi*s;
+ real v=twopi/(1+i+s);
+ real cosu=cos(u);
+ return((R-a*cosu)*cos(v),(R-a*cosu)*sin(v),-a*sin(u));
+ }
+ p[i]=graph(g,0,1,operator ..);
+}
+
+triple f(pair t) {
+ real costy=cos(t.y);
+ return((R+a*costy)*cos(t.x),(R+a*costy)*sin(t.x),a*sin(t.y));
+}
+
+surface s=surface(f,(0,0),(2pi,2pi),8,8,Spline);
+
+for(int i=0; i < n; ++i){
+ picture fig;
+ size(fig,20cm);
+ draw(fig,s,yellow);
+ for(int j=0; j <= i; ++j)
+ draw(fig,p[j],blue+linewidth(4));
+ A.add(fig);
+}
+
+A.movie(BBox(10,Fill(rgb(0.98,0.98,0.9))),delay=100);
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/wavepacket.asy b/Master/texmf-dist/doc/asymptote/examples/animations/wavepacket.asy
new file mode 100644
index 00000000000..006fbce1543
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/wavepacket.asy
@@ -0,0 +1,86 @@
+// Author : Philippe Ivaldi
+// http://www.piprime.fr/
+// 2006/11/10
+
+import animation;
+import graph;
+
+unitsize(x=2cm,y=1.5cm);
+
+typedef real realfcn(real);
+
+real lambda=4;
+real T=2;
+real [] k=new real[3];
+real [] w=new real[3];
+k[0]=2pi/lambda;
+w[0]=2pi/T;
+real dk=-.5;
+k[1]=k[0]-dk;
+k[2]=k[0]+dk;
+real dw=1;
+w[1]=w[0]-dw;
+w[2]=w[0]+dw;
+
+real vp=w[1]/k[1];
+real vg=dw/dk;
+
+realfcn F(real x) {
+ return new real(real t) {
+ return cos(k[1]*x-w[1]*t)+cos(k[2]*x-w[2]*t);
+ };
+};
+
+realfcn G(real x) {
+ return new real(real t) {
+ return 2*cos(0.5*(k[2]-k[1])*x+0.5*(w[1]-w[2])*t);
+ };
+};
+
+realfcn operator -(realfcn f) {return new real(real t) {return -f(t);};};
+
+animation A;
+
+real tmax=abs(2pi/dk);
+real xmax=abs(2pi/dw);
+
+pen envelope=0.8*blue;
+pen fillpen=lightgrey;
+
+int n=50;
+real step=tmax/(n-1);
+for(int i=0; i < n; ++i) {
+ save();
+ real t=i*step;
+ real a=xmax*t/tmax-xmax/pi;
+ real b=xmax*t/tmax;
+ path f=graph(F(t),a,b);
+ path g=graph(G(t),a,b);
+ path h=graph(-G(t),a,b);
+ fill(buildcycle(reverse(f),g),fillpen);
+ draw(f);
+ draw(g,envelope);
+ draw(h,envelope);
+ A.add();
+ restore();
+}
+
+for(int i=0; i < n; ++i) {
+ save();
+ real t=i*step;
+ real a=-xmax/pi;
+ real b=xmax;
+ path f=graph(F(t),a,b);
+ path g=graph(G(t),a,b);
+ path h=graph(-G(t),a,b);
+ path B=box((-xmax/pi,-2),(xmax,2));
+ fill(buildcycle(reverse(f),g,B),fillpen);
+ fill(buildcycle(f,g,reverse(B)),fillpen);
+ draw(f);
+ draw(g,envelope);
+ draw(h,envelope);
+ A.add();
+ restore();
+}
+
+A.movie(0,10);
diff --git a/Master/texmf-dist/doc/asymptote/examples/animations/wheel.asy b/Master/texmf-dist/doc/asymptote/examples/animations/wheel.asy
new file mode 100644
index 00000000000..6620d590850
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/animations/wheel.asy
@@ -0,0 +1,63 @@
+import graph;
+
+// Uncomment the following 2 lines to support pdf animations:
+// usepackage("animate");
+// settings.tex="pdflatex";
+
+import animation;
+
+size(0,200);
+
+defaultpen(3);
+dotfactor=4;
+
+pair wheelpoint(real t)
+{
+ return (t+cos(t),-sin(t));
+}
+
+guide wheel(guide g=nullpath, real a, real b, int n)
+{
+ real width=(b-a)/n;
+ for(int i=0; i <= n; ++i) {
+ real t=a+width*i;
+ g=g--wheelpoint(t);
+ }
+ return g;
+}
+
+real t1=0;
+real t2=t1+2*pi;
+
+animation a;
+
+draw(circle((0,0),1));
+draw(wheel(t1,t2,100),linetype("0 2"));
+yequals(Label("$y=-1$",1.0),-1,extend=true,linetype("4 4"));
+xaxis(Label("$x$",align=3SW),0);
+yaxis("$y$",0,1.2);
+pair z1=wheelpoint(t1);
+pair z2=wheelpoint(t2);
+dot(z1);
+dot(z2);
+
+int n=10;
+real dt=(t2-t1)/n;
+for(int i=0; i <= n; ++i) {
+ save();
+
+ real t=t1+dt*i;
+ draw(circle((t,0),1),red);
+ dot(wheelpoint(t));
+
+ a.add(); // Add currentpicture to animation.
+ restore();
+}
+
+erase();
+
+// Merge the images into a gif animation.
+a.movie(BBox(0.25cm),loops=10,delay=250);
+
+// Merge the images into a pdf animation.
+// label(a.pdf(BBox(0.25cm),delay=250,"controls",multipage=false));
diff --git a/Master/texmf-dist/doc/asymptote/examples/annotation.asy b/Master/texmf-dist/doc/asymptote/examples/annotation.asy
new file mode 100644
index 00000000000..d52e15b4f76
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/annotation.asy
@@ -0,0 +1,13 @@
+import annotate;
+settings.outformat="pdf";
+
+size(200);
+
+draw(unitcircle);
+dot((0,0));
+annotate("O","(0,0)",(0,0));
+annotate("A","(1,0)",(1,0));
+annotate("B","(0,1)",(0,1));
+annotate("C","(-1,0)",(-1,0));
+annotate("D","(0,-1)",(0,-1));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/arrows3.asy b/Master/texmf-dist/doc/asymptote/examples/arrows3.asy
new file mode 100644
index 00000000000..57fc4b3d338
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/arrows3.asy
@@ -0,0 +1,22 @@
+import three;
+
+size(15cm);
+
+defaultrender.merge=true;
+
+currentprojection=perspective(24,14,13);
+currentlight=light(gray(0.5),specularfactor=3,viewport=false,
+ (0.5,-0.5,-0.25),(0.5,0.5,0.25),(0.5,0.5,1),(-0.5,-0.5,-1));
+
+defaultpen(0.75mm);
+
+path3 g=arc(O,1,90,-60,90,60);
+transform3 t=shift(invert(3S,O));
+
+draw(g,blue,Arrows3(TeXHead3),currentlight);
+draw(scale3(3)*g,green,ArcArrows3(HookHead3),currentlight);
+draw(scale3(6)*g,red,Arrows3(DefaultHead3),currentlight);
+
+draw(t*g,blue,Arrows3(TeXHead2),currentlight);
+draw(t*scale3(3)*g,green,ArcArrows3(HookHead2,NoFill),currentlight);
+draw(t*scale3(6)*g,red,Arrows3(DefaultHead2(normal=Z)),currentlight);
diff --git a/Master/texmf-dist/doc/asymptote/examples/axis3.asy b/Master/texmf-dist/doc/asymptote/examples/axis3.asy
new file mode 100644
index 00000000000..90cbdc6ad09
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/axis3.asy
@@ -0,0 +1,12 @@
+import graph3;
+
+size(0,200);
+size3(200,IgnoreAspect);
+
+currentprojection=perspective(5,2,2);
+
+scale(Linear,Linear,Log);
+
+xaxis3("$x$",0,1,red,OutTicks(2,2));
+yaxis3("$y$",0,1,red,OutTicks(2,2));
+zaxis3("$z$",1,30,red,OutTicks(beginlabel=false));
diff --git a/Master/texmf-dist/doc/asymptote/examples/bars3.asy b/Master/texmf-dist/doc/asymptote/examples/bars3.asy
new file mode 100644
index 00000000000..4205d46f37c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/bars3.asy
@@ -0,0 +1,22 @@
+import three;
+import palette;
+import graph3;
+
+size(300);
+
+currentprojection=perspective(-30,-30,30,up=Z);
+
+surface s;
+
+for(int i = 0; i < 10; ++i) {
+ for(int j = 0; j < 10; ++j) {
+ s.append(shift(i,j,0)*scale(1,1,i+j)*unitcube);
+ }
+}
+
+s.colors(palette(s.map(zpart),Rainbow()));
+draw(s,meshpen=black+thick(),nolight,render(merge=true));
+
+xaxis3("$x$",Bounds,InTicks(endlabel=false,Label,2,2));
+yaxis3(YZ()*"$y$",Bounds,InTicks(beginlabel=false,Label,2,2));
+zaxis3(XZ()*"$z$",Bounds,InTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/basealign.asy b/Master/texmf-dist/doc/asymptote/examples/basealign.asy
new file mode 100644
index 00000000000..d653ec3c043
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/basealign.asy
@@ -0,0 +1,44 @@
+import fontsize;
+import three;
+
+settings.autobillboard=false;
+settings.embed=false;
+currentprojection=orthographic(Z);
+
+defaultpen(fontsize(100pt));
+
+dot(O);
+
+label("acg",O,align=N,basealign);
+label("ace",O,align=N,red);
+label("acg",O,align=S,basealign);
+label("ace",O,align=S,red);
+label("acg",O,align=E,basealign);
+label("ace",O,align=E,red);
+label("acg",O,align=W,basealign);
+label("ace",O,align=W,red);
+
+picture pic;
+dot(pic,(labelmargin(),0,0),blue);
+dot(pic,(-labelmargin(),0,0),blue);
+dot(pic,(0,labelmargin(),0),blue);
+dot(pic,(0,-labelmargin(),0),blue);
+add(pic,O);
+
+dot((0,0));
+
+label("acg",(0,0),align=N,basealign);
+label("ace",(0,0),align=N,red);
+label("acg",(0,0),align=S,basealign);
+label("ace",(0,0),align=S,red);
+label("acg",(0,0),align=E,basealign);
+label("ace",(0,0),align=E,red);
+label("acg",(0,0),align=W,basealign);
+label("ace",(0,0),align=W,red);
+
+picture pic;
+dot(pic,(labelmargin(),0),blue);
+dot(pic,(-labelmargin(),0),blue);
+dot(pic,(0,labelmargin()),blue);
+dot(pic,(0,-labelmargin()),blue);
+add(pic,(0,0));
diff --git a/Master/texmf-dist/doc/asymptote/examples/bezier.asy b/Master/texmf-dist/doc/asymptote/examples/bezier.asy
new file mode 100644
index 00000000000..1c168042c05
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/bezier.asy
@@ -0,0 +1 @@
+label("$(1-t)^3z_0+3t(1-t)^2c_0+3t^2(1-t)c_1+t^3z_1\qquad 0\le t\le 1$.",(0,0));
diff --git a/Master/texmf-dist/doc/asymptote/examples/bezier2.asy b/Master/texmf-dist/doc/asymptote/examples/bezier2.asy
new file mode 100644
index 00000000000..745fb649dd1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/bezier2.asy
@@ -0,0 +1,21 @@
+import beziercurve;
+
+pair midpoint(pair a, pair b) {return interp(a,b,0.5);}
+
+pair m0=midpoint(z0,c0);
+pair m1=midpoint(c0,c1);
+pair m2=midpoint(c1,z1);
+
+draw(m0--m1--m2,dashed);
+dot("$m_0$",m0,NW,red);
+dot("$m_1$",m1,N,red);
+dot("$m_2$",m2,red);
+
+pair m3=midpoint(m0,m1);
+pair m4=midpoint(m1,m2);
+pair m5=midpoint(m3,m4);
+
+draw(m3--m4,dashed);
+dot("$m_3$",m3,NW,red);
+dot("$m_4$",m4,NE,red);
+dot("$m_5$",m5,N,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/beziercurve.asy b/Master/texmf-dist/doc/asymptote/examples/beziercurve.asy
new file mode 100644
index 00000000000..338109bbd6e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/beziercurve.asy
@@ -0,0 +1,12 @@
+size(400);
+pair z0=(0,0);
+pair c0=(1,1);
+pair c1=(2,1);
+pair z1=(3,0);
+draw(z0..controls c0 and c1 .. z1,blue);
+
+draw(z0--c0--c1--z1,dashed);
+dot("$z_0$",z0,W,red);
+dot("$c_0$",c0,NW,red);
+dot("$c_1$",c1,NE,red);
+dot("$z_1$",z1,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/bigdiagonal.asy b/Master/texmf-dist/doc/asymptote/examples/bigdiagonal.asy
new file mode 100644
index 00000000000..7242b7ae845
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/bigdiagonal.asy
@@ -0,0 +1,2 @@
+size(0,100.5);
+draw((0,0)--(2,1),Arrow);
diff --git a/Master/texmf-dist/doc/asymptote/examples/billboard.asy b/Master/texmf-dist/doc/asymptote/examples/billboard.asy
new file mode 100644
index 00000000000..6e5df871007
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/billboard.asy
@@ -0,0 +1,10 @@
+import three;
+
+size(100);
+
+currentprojection=perspective(1,-2,1);
+
+draw(unitbox);
+
+label("Billboard",X,red,Billboard);
+label("Embedded",Y,blue,Embedded);
diff --git a/Master/texmf-dist/doc/asymptote/examples/binarytreetest.asy b/Master/texmf-dist/doc/asymptote/examples/binarytreetest.asy
new file mode 100644
index 00000000000..0078bb749e0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/binarytreetest.asy
@@ -0,0 +1,13 @@
+import binarytree;
+
+picture pic,pic2;
+
+binarytree bt=binarytree(1,2,4,nil,5,nil,nil,0,nil,nil,3,6,nil,nil,7);
+draw(pic,bt);
+
+binarytree st=searchtree(10,5,2,1,3,4,7,6,8,9,15,13,12,11,14,17,16,18,19);
+draw(pic2,st,blue);
+
+add(pic.fit(),(0,0),10N);
+add(pic2.fit(),(0,0),10S);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/brokenaxis.asy b/Master/texmf-dist/doc/asymptote/examples/brokenaxis.asy
new file mode 100644
index 00000000000..9de9fa414d3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/brokenaxis.asy
@@ -0,0 +1,25 @@
+import graph;
+
+size(200,150,IgnoreAspect);
+
+// Break the x axis at 3; restart at 8:
+real a=3, b=8;
+
+// Break the y axis at 100; restart at 1000:
+real c=100, d=1000;
+
+scale(Broken(a,b),BrokenLog(c,d));
+
+real[] x={1,2,4,6,10};
+real[] y=x^4;
+
+draw(graph(x,y),red,MarkFill[0]);
+
+xaxis("$x$",BottomTop,LeftTicks(Break(a,b)));
+yaxis("$y$",LeftRight,RightTicks(Break(c,d)));
+
+label(rotate(90)*Break,(a,point(S).y));
+label(rotate(90)*Break,(a,point(N).y));
+label(Break,(point(W).x,ScaleY(c)));
+label(Break,(point(E).x,ScaleY(c)));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/buildcycle.asy b/Master/texmf-dist/doc/asymptote/examples/buildcycle.asy
new file mode 100644
index 00000000000..e4e7f8c7c96
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/buildcycle.asy
@@ -0,0 +1,22 @@
+size(200);
+
+real w=1.35;
+
+path[] p;
+for(int k=0; k < 2; ++k) {
+ int i=2+2*k;
+ int ii=i^2;
+ p[k]=(w/ii,1){1,-ii}::(w/i,1/i)::(w,1/ii){ii,-1};
+}
+
+path q0=(0,0)--(w,0.5);
+path q1=(0,0)--(w,1.5);
+draw(q0); draw(p[0]); draw(q1); draw(p[1]);
+path s=buildcycle(q0,p[0],q1,p[1]);
+fill(s,mediumgrey);
+
+label("$P$",intersectionpoint(p[0],q0),N);
+label("$Q$",intersectionpoint(p[0],q1),E);
+label("$R$",intersectionpoint(p[1],q1),W);
+label("$S$",intersectionpoint(p[1],q0),S);
+label("$f > 0$",0.5*(min(s)+max(s)),UnFill);
diff --git a/Master/texmf-dist/doc/asymptote/examples/cardioid.asy b/Master/texmf-dist/doc/asymptote/examples/cardioid.asy
new file mode 100644
index 00000000000..49a3c55207e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cardioid.asy
@@ -0,0 +1,15 @@
+import graph;
+
+size(0,100);
+
+real f(real t) {return 1+cos(t);}
+
+path g=polargraph(f,0,2pi,operator ..)--cycle;
+filldraw(g,pink);
+
+xaxis("$x$",above=true);
+yaxis("$y$",above=true);
+
+dot("$(a,0)$",(1,0),N);
+dot("$(2a,0)$",(2,0),N+E);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/cards.asy b/Master/texmf-dist/doc/asymptote/examples/cards.asy
new file mode 100644
index 00000000000..337a886ec86
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cards.asy
@@ -0,0 +1,26 @@
+picture rect;
+
+size(rect,0,2.5cm);
+
+real x=1;
+real y=1.25;
+
+filldraw(rect,box((-x,-y)/2,(x,y)/2),lightolive);
+
+label(rect,"1",(-x,y)*0.45,SE);
+label(rect,"2",(x,y)*0.45,SW);
+label(rect,"3",(-x,-y)*0.45,NE);
+label(rect,"4",(x,-y)*0.45,NW);
+
+frame rectf=rect.fit();
+frame toplef=rectf;
+frame toprig=xscale(-1)*rectf;
+frame botlef=yscale(-1)*rectf;
+frame botrig=xscale(-1)*yscale(-1)*rectf;
+
+size(0,7.5cm);
+
+add(toplef,(-x,y));
+add(toprig,(x,y));
+add(botlef,(-x,-y));
+add(botrig,(x,-y));
diff --git a/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy b/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy
new file mode 100644
index 00000000000..2e26454cdbe
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy
@@ -0,0 +1,38 @@
+import graph;
+size(0,150);
+
+int a=-1, b=1;
+
+real f(real x) {return x^3-x+2;}
+real g(real x) {return x^2;}
+
+draw(graph(f,a,b,operator ..),red);
+draw(graph(g,a,b,operator ..),blue);
+
+xaxis();
+
+int n=5;
+
+real width=(b-a)/(real) n;
+for(int i=0; i <= n; ++i) {
+ real x=a+width*i;
+ draw((x,g(x))--(x,f(x)));
+}
+
+labelx("$a$",a);
+labelx("$b$",b);
+draw((a,0)--(a,g(a)),dotted);
+draw((b,0)--(b,g(b)),dotted);
+
+real m=a+0.73*(b-a);
+arrow("$f(x)$",(m,f(m)),N,red);
+arrow("$g(x)$",(m,g(m)),E,0.8cm,blue);
+
+int j=2;
+real xi=b-j*width;
+real xp=xi+width;
+real xm=0.5*(xi+xp);
+pair dot=(xm,0.5*(f(xm)+g(xm)));
+dot(dot,darkgreen+4.0);
+arrow("$\left(x,\frac{f(x)+g(x)}{2}\right)$",dot,NE,2cm,darkgreen);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/cheese.asy b/Master/texmf-dist/doc/asymptote/examples/cheese.asy
new file mode 100644
index 00000000000..9a16e4130dc
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cheese.asy
@@ -0,0 +1,12 @@
+import graph3;
+import palette;
+import contour3;
+size(400);
+
+real f(real x, real y, real z) {
+ return cos(x)*sin(y)+cos(y)*sin(z)+cos(z)*sin(x);
+}
+
+surface sf=surface(contour3(f,(-2pi,-2pi,-2pi),(2pi,2pi,2pi),12));
+sf.colors(palette(sf.map(abs),Gradient(red,yellow)));
+draw(sf,nolight,render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/circles.asy b/Master/texmf-dist/doc/asymptote/examples/circles.asy
new file mode 100644
index 00000000000..69f5cf244a4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/circles.asy
@@ -0,0 +1,33 @@
+size(6cm,0);
+import math;
+
+currentpen=magenta;
+
+real r1=1;
+real r2=sqrt(7);
+real r3=4;
+pair O=0;
+
+path c1=circle(O,r1);
+draw(c1,green);
+draw(circle(O,r2),green);
+draw(circle(O,r3),green);
+
+real x=-0.6;
+real y=-0.8;
+real yD=0.3;
+pair A=(sqrt(r1^2-y^2),y);
+pair B=(-sqrt(r2^2-y^2),y);
+pair C=(x,sqrt(r3^2-x^2));
+
+pair d=A+r2*dir(B--C);
+pair D=intersectionpoint(c1,A--d);
+
+draw(A--B--C--cycle);
+draw(interp(A,D,-0.5)--interp(A,D,1.5),blue);
+
+dot("$O$",O,S,red);
+dot("$A$",A,dir(C--A,B--A),red);
+dot("$B$",B,dir(C--B,A--B),red);
+dot("$C$",C,dir(A--C,B--C),red);
+dot("$D$",D,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/clockarray.asy b/Master/texmf-dist/doc/asymptote/examples/clockarray.asy
new file mode 100644
index 00000000000..be7fd899a0e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/clockarray.asy
@@ -0,0 +1,39 @@
+int nx=3;
+int ny=4;
+real xmargin=1cm;
+real ymargin=xmargin;
+
+size(settings.paperwidth,settings.paperheight);
+
+picture pic;
+real width=settings.paperwidth/nx-xmargin;
+real height=settings.paperheight/ny-ymargin;
+if(width <= 0 || height <= 0) abort("margin too big");
+size(pic,width,height);
+
+pen p=linewidth(0.5mm);
+draw(pic,unitcircle,p);
+
+real h=0.08;
+real m=0.05;
+
+for(int hour=1; hour <= 12; ++hour) {
+ pair z=dir((12-hour+3)*30);
+ label(pic,string(hour),z,z);
+ draw(pic,z--(1-h)*z,p);
+}
+
+for(int minutes=0; minutes < 60; ++minutes) {
+ pair z=dir(6*minutes);
+ draw(pic,z--(1-m)*z);
+}
+
+dot(pic,(0,0));
+
+frame f=pic.fit();
+pair size=size(f)+(xmargin,ymargin);
+
+for(int i=0; i < nx; ++i)
+ for(int j=0; j < ny; ++j)
+ add(shift(realmult(size,(i,j)))*f);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/coag.asy b/Master/texmf-dist/doc/asymptote/examples/coag.asy
new file mode 100644
index 00000000000..de976cb145b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/coag.asy
@@ -0,0 +1,16 @@
+size(0,200);
+import graph;
+
+pair z0=(0,0);
+pair m0=(0,1);
+pair tg=(1.5,0);
+pair mt=m0+tg;
+pair tf=(3,0);
+
+draw(m0--mt{dir(-70)}..{dir(0)}2tg+m0/4);
+xtick("$T_g$",tg,N);
+label("$M(t)$",mt,2NE);
+labely("$M_0$",m0);
+
+xaxis(Label("$t$",align=2S),Arrow);
+yaxis(Arrow);
diff --git a/Master/texmf-dist/doc/asymptote/examples/colons.asy b/Master/texmf-dist/doc/asymptote/examples/colons.asy
new file mode 100644
index 00000000000..3cdb6b42962
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/colons.asy
@@ -0,0 +1 @@
+draw((0,0){up}::(100,25){right}::(200,0){down});
diff --git a/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy b/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy
new file mode 100644
index 00000000000..16bef25b545
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy
@@ -0,0 +1,22 @@
+size(6cm,0);
+import bsp;
+
+real u=2.5;
+real v=1;
+
+currentprojection=oblique;
+
+path3 y=plane((2u,0,0),(0,2v,0),(-u,-v,0));
+path3 l=rotate(90,Z)*rotate(90,Y)*y;
+path3 g=rotate(90,X)*rotate(90,Y)*y;
+
+face[] faces;
+pen[] p={red,green,blue,black};
+int[] edges={0,0,0,2};
+gouraudshade(faces.push(y),project(y),p,edges);
+gouraudshade(faces.push(l),project(l),p,edges);
+gouraudshade(faces.push(g),project(g),new pen[]{cyan,magenta,yellow,black},
+ edges);
+
+add(faces);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/colors.asy b/Master/texmf-dist/doc/asymptote/examples/colors.asy
new file mode 100644
index 00000000000..ea576379deb
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/colors.asy
@@ -0,0 +1,116 @@
+int i=0;
+int j=0;
+
+bool components=false;
+
+pen p;
+
+void col(bool fill=false ... string[] s) {
+ for(int n=0; n < s.length; ++n) {
+ j -= 10;
+ string s=s[n];
+ eval("p="+s+";",true);
+ if(components) {
+ real[] a=colors(p);
+ for(int i=0; i < a.length; ++i)
+ s += " "+(string) a[i];
+ }
+ if(fill) label(s,(i+10,j),E,p,Fill(gray));
+ else label(s,(i+10,j),E,p);
+ fill(box((i,j-5),(i+10,j+5)),p);
+ }
+}
+
+col("palered");
+col("lightred");
+col("mediumred");
+col("red");
+col("heavyred");
+col("brown");
+col("darkbrown");
+j -= 10;
+
+col("palegreen");
+col("lightgreen");
+col("mediumgreen");
+col("green");
+col("heavygreen");
+col("deepgreen");
+col("darkgreen");
+j -= 10;
+
+col("paleblue");
+col("lightblue");
+col("mediumblue");
+col("blue");
+col("heavyblue");
+col("deepblue");
+col("darkblue");
+j -= 10;
+
+i += 150;
+j=0;
+
+col("palecyan");
+col("lightcyan");
+col("mediumcyan");
+col("cyan");
+col("heavycyan");
+col("deepcyan");
+col("darkcyan");
+j -= 10;
+
+col("pink");
+col("lightmagenta");
+col("mediummagenta");
+col("magenta");
+col("heavymagenta");
+col("deepmagenta");
+col("darkmagenta");
+j -= 10;
+
+col("paleyellow");
+col("lightyellow");
+col("mediumyellow");
+col("yellow");
+col("lightolive");
+col("olive");
+col("darkolive");
+j -= 10;
+
+col("palegray");
+col("lightgray");
+col("mediumgray");
+col("gray");
+col("heavygray");
+col("deepgray");
+col("darkgray");
+j -= 10;
+
+i += 150;
+j=0;
+
+col("black");
+col("white",fill=true);
+j -= 10;
+
+col("orange");
+col("fuchsia");
+j -= 10;
+col("chartreuse");
+col("springgreen");
+j -= 10;
+col("purple");
+col("royalblue");
+j -= 10;
+
+col("Cyan");
+col("Magenta");
+col("Yellow");
+col("Black");
+
+j -= 10;
+
+col("cmyk(red)");
+col("cmyk(blue)");
+col("cmyk(green)");
diff --git a/Master/texmf-dist/doc/asymptote/examples/condor.asy b/Master/texmf-dist/doc/asymptote/examples/condor.asy
new file mode 100644
index 00000000000..5ce5caa2412
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/condor.asy
@@ -0,0 +1,32 @@
+// Peter Luschny's Condor function
+// http://www.luschny.de/math/asy/ElCondorYElGamma.html
+
+import palette;
+import graph3;
+
+size(300,300,IgnoreAspect);
+currentprojection=orthographic(0,-1,0,center=true);
+currentlight=White;
+real K=7;
+
+triple condor(pair t)
+{
+ real y=t.y;
+ real x=t.x*y;
+ real e=gamma(y+1);
+ real ymx=y-x;
+ real ypx=y+x;
+ real a=gamma((ymx+1)/2);
+ real b=gamma((ymx+2)/2);
+ real c=gamma((ypx+1)/2);
+ real d=gamma((ypx+2)/2);
+ real A=cos(pi*ymx);
+ real B=cos(pi*ypx);
+ return (x,y,log(e)+log(a)*((A-1)/2)+log(b)*((-A-1)/2)+log(c)*((B-1)/2)+
+ log(d)*((-B-1)/2));
+}
+
+surface s=surface(condor,(-1,0),(1,K),16,Spline);
+s.colors(palette(s.map(zpart),Rainbow()));
+
+draw(s,render(compression=Low,merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/cones.asy b/Master/texmf-dist/doc/asymptote/examples/cones.asy
new file mode 100644
index 00000000000..e63a4281251
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cones.asy
@@ -0,0 +1,18 @@
+import solids;
+
+size(200);
+currentprojection=orthographic(5,4,2);
+
+render render=render(compression=Low,merge=true);
+
+revolution upcone=cone(-Z,1,1);
+revolution downcone=cone(Z,1,-1);
+draw(surface(upcone),green,render);
+draw(surface(downcone),green,render);
+draw(upcone,5,blue,longitudinalpen=nullpen);
+draw(downcone,5,blue,longitudinalpen=nullpen);
+
+revolution cone=shift(2Y-2X)*cone(1,1);
+
+draw(surface(cone),green,render);
+draw(cone,5,blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/conicurv.asy b/Master/texmf-dist/doc/asymptote/examples/conicurv.asy
new file mode 100644
index 00000000000..cb678710c11
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/conicurv.asy
@@ -0,0 +1,49 @@
+// Original name : conicurv.mp
+// Author : L. Nobre G.
+// Translators : J. Pienaar (2004) and John Bowman (2005)
+
+import three;
+texpreamble("\usepackage{bm}");
+
+size(300,0);
+
+currentprojection=perspective(10,-5,5.44);
+
+real theta=30, width=3, shortradius=2, bord=2, refsize=1, vecsize=2;
+real height=0.3, anglar=1.75, totup=3;
+real longradius=shortradius+width*Cos(theta), updiff=width*Sin(theta);
+
+triple iplow=(0,shortradius,0), iphig=(0,longradius,updiff);
+triple oplow=(-shortradius,0,0), ophig=(-longradius,0,updiff);
+triple aplow=-iplow, aphig=(0,-longradius,updiff);
+triple eplow=-oplow, ephig=(longradius,0,updiff);
+triple anglebase=(0,longradius,0), centre=interp(iplow,iphig,0.5)+(0,0,height);
+triple central=(0,0,centre.z), refo=(0,0.5*centre.y,centre.z);
+triple refx=refsize*(0,Cos(theta),Sin(theta));
+triple refy=refsize*(0,-Sin(theta),Cos(theta));
+
+draw("$\theta$",arc(iplow,iplow+0.58*(iphig-iplow),anglebase),E);
+
+draw(central,linewidth(2bp));
+draw(iplow--iphig);
+draw(oplow--ophig);
+draw(aplow--aphig);
+draw(eplow--ephig);
+draw(iphig--anglebase--aplow,dashed);
+draw(oplow--eplow,dashed);
+draw(central--centre,dashed);
+
+draw((0,0,-bord)--(0,longradius+bord,-bord)--(0,longradius+bord,totup)
+ --(0,0,totup)--cycle);
+draw(Label("$y$",1),refo--refo+refy,SW,Arrow3);
+draw(Label("$x$",1),refo--refo+refx,SE,Arrow3);
+
+draw(Label("$\vec{R}_N$",1),centre--centre+vecsize*refy,E,Arrow3);
+draw(Label("$\vec{F}_a$",1),centre--centre+vecsize*refx,N,Arrow3);
+draw(Label("$\vec{F}_c$",1),centre--centre+vecsize*Y,NE,Arrow3);
+draw(Label("$\vec{P}$",1),centre--centre-vecsize*Z,E,Arrow3);
+draw(Label("$\vec{v}$",1),centre--centre+vecsize*X,E,Arrow3);
+draw(centre,10pt+blue);
+
+draw(circle((0,0,updiff),longradius),linewidth(2bp));
+draw(circle(O,shortradius),linewidth(2bp));
diff --git a/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy b/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy
new file mode 100644
index 00000000000..39177abdba3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy
@@ -0,0 +1,10 @@
+settings.tex="context";
+// Work around ConTeXT bug for font sizes less than 12pt:
+texpreamble("\setupbodyfont[8pt]");
+
+usetypescript("iwona");
+usetypescript("antykwa-torunska");
+
+label("$A$",0,N,font("iwona"));
+label("$A$",0,S,font("antykwa",8pt)+red);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy b/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy
new file mode 100644
index 00000000000..bfd8336f1f6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy
@@ -0,0 +1,25 @@
+size(0,4cm);
+import flowchart;
+
+block delay=roundrectangle("$e^{-sT_t}$",(0.33,0));
+block system=roundrectangle("$\frac{s+3}{s^2+0.3s+1}$",(0.6,0));
+block controller=roundrectangle("$0.06\left( 1 + \frac{1}{s}\right)$",
+ (0.45,-0.25));
+block sum1=circle("",(0.15,0),mindiameter=0.3cm);
+block junction1=circle("",(0.75,0),fillpen=currentpen);
+
+draw(delay);
+draw(system);
+draw(controller);
+draw(sum1);
+draw(junction1);
+
+add(new void(picture pic, transform t) {
+ blockconnector operator --=blockconnector(pic,t);
+
+ block(0,0)--Label("$u$",align=N)--Arrow--sum1--Arrow--delay--Arrow--
+ system--junction1--Label("$y$",align=N)--Arrow--block(1,0);
+
+ junction1--Down--Left--Arrow--controller--Left--Up--
+ Label("$-$",position=3,align=ESE)--Arrow--sum1;
+ });
diff --git a/Master/texmf-dist/doc/asymptote/examples/cos2theta.asy b/Master/texmf-dist/doc/asymptote/examples/cos2theta.asy
new file mode 100644
index 00000000000..1be0c519fb1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cos2theta.asy
@@ -0,0 +1,15 @@
+import graph;
+size(0,100);
+
+real f(real t) {return cos(2*t);}
+
+path g=polargraph(f,0,2pi,operator ..)--cycle;
+fill(g,green+white);
+xaxis("$x$",above=true);
+yaxis("$y$",above=true);
+draw(g);
+
+dot(Label,(1,0),NE);
+dot(Label,(0,1),NE);
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/cos3.asy b/Master/texmf-dist/doc/asymptote/examples/cos3.asy
new file mode 100644
index 00000000000..ef8054d6627
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cos3.asy
@@ -0,0 +1,25 @@
+import graph3;
+import palette;
+
+size(12cm,IgnoreAspect);
+currentprojection=orthographic(1,-2,1);
+
+real f(pair z) {return abs(cos(z));}
+
+real Arg(triple v) {return degrees(cos((v.x,v.y)),warn=false);}
+
+surface s=surface(f,(-pi,-2),(pi,2),20,Spline);
+
+s.colors(palette(s.map(Arg),Wheel()));
+draw(s,render(compression=Low,merge=true));
+
+real xmin=point((-1,-1,-1)).x;
+real xmax=point((1,1,1)).x;
+draw((xmin,0,0)--(xmax,0,0),dashed);
+
+xaxis3("$\mathop{\rm Re} z$",Bounds,InTicks);
+yaxis3("$\mathop{\rm Im} z$",Bounds,InTicks(beginlabel=false));
+zaxis3("$|\cos(z)|$",Bounds,InTicks);
+
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy b/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy
new file mode 100644
index 00000000000..f6ce8de62a4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy
@@ -0,0 +1,26 @@
+size(0,200);
+import geometry;
+
+real A=130;
+real B=40;
+
+pair O=(0,0);
+pair R=(1,0);
+pair P=dir(A);
+pair Q=dir(B);
+
+draw(circle(O,1.0));
+draw(Q--O--P);
+draw(P--Q,red);
+draw(O--Q--R--cycle);
+
+draw("$A$",arc(R,O,P,0.3),blue,Arrow,PenMargin);
+draw("$B$",arc(R,O,Q,0.6),blue,Arrow,PenMargin);
+pair S=(Cos(B),0);
+draw(Q--S,blue);
+perpendicular(S,NE,blue);
+
+dot(O);
+dot("$R=(1,0)$",R);
+dot("$P=(\cos A,\sin A)$",P,dir(O--P)+W);
+dot("$Q=(\cos B,\sin B)$",Q,dir(O--Q));
diff --git a/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy b/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy
new file mode 100644
index 00000000000..ddc7e286d58
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2003-2005 Miguel, Jmol Development, www.jmol.org
+ *
+ * Contact: miguel@jmol.org
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+string[] Element={
+ "Xx", // 0
+ "H", // 1
+ "He", // 2
+ "Li", // 3
+ "Be", // 4
+ "B", // 5
+ "C", // 6
+ "N", // 7
+ "O", // 8
+ "F", // 9
+ "Ne", // 10
+ "Na", // 11
+ "Mg", // 12
+ "Al", // 13
+ "Si", // 14
+ "P", // 15
+ "S", // 16
+ "Cl", // 17
+ "Ar", // 18
+ "K", // 19
+ "Ca", // 20
+ "Sc", // 21
+ "Ti", // 22
+ "V", // 23
+ "Cr", // 24
+ "Mn", // 25
+ "Fe", // 26
+ "Co", // 27
+ "Ni", // 28
+ "Cu", // 29
+ "Zn", // 30
+ "Ga", // 31
+ "Ge", // 32
+ "As", // 33
+ "Se", // 34
+ "Br", // 35
+ "Kr", // 36
+ "Rb", // 37
+ "Sr", // 38
+ "Y", // 39
+ "Zr", // 40
+ "Nb", // 41
+ "Mo", // 42
+ "Tc", // 43
+ "Ru", // 44
+ "Rh", // 45
+ "Pd", // 46
+ "Ag", // 47
+ "Cd", // 48
+ "In", // 49
+ "Sn", // 50
+ "Sb", // 51
+ "Te", // 52
+ "I", // 53
+ "Xe", // 54
+ "Cs", // 55
+ "Ba", // 56
+ "La", // 57
+ "Ce", // 58
+ "Pr", // 59
+ "Nd", // 60
+ "Pm", // 61
+ "Sm", // 62
+ "Eu", // 63
+ "Gd", // 64
+ "Tb", // 65
+ "Dy", // 66
+ "Ho", // 67
+ "Er", // 68
+ "Tm", // 69
+ "Yb", // 70
+ "Lu", // 71
+ "Hf", // 72
+ "Ta", // 73
+ "W", // 74
+ "Re", // 75
+ "Os", // 76
+ "Ir", // 77
+ "Pt", // 78
+ "Au", // 79
+ "Hg", // 80
+ "Tl", // 81
+ "Pb", // 82
+ "Bi", // 83
+ "Po", // 84
+ "At", // 85
+ "Rn", // 86
+ "Fr", // 87
+ "Ra", // 88
+ "Ac", // 89
+ "Th", // 90
+ "Pa", // 91
+ "U", // 92
+ "Np", // 93
+ "Pu", // 94
+ "Am", // 95
+ "Cm", // 96
+ "Bk", // 97
+ "Cf", // 98
+ "Es", // 99
+ "Fm", // 100
+ "Md", // 101
+ "No", // 102
+ "Lr", // 103
+ "Rf", // 104
+ "Db", // 105
+ "Sg", // 106
+ "Bh", // 107
+ "Hs", // 108
+ "Mt", // 109
+ /*
+ "Ds", // 110
+ "Uuu",// 111
+ "Uub",// 112
+ "Uut",// 113
+ "Uuq",// 114
+ "Uup",// 115
+ "Uuh",// 116
+ "Uus",// 117
+ "Uuo",// 118
+ */
+};
+
+// Default table of CPK atom colors
+// (ghemical colors with a few proposed modifications).
+string[] Hexcolor={
+ "FF1493", // Xx 0
+ "FFFFFF", // H 1
+ "D9FFFF", // He 2
+ "CC80FF", // Li 3
+ "C2FF00", // Be 4
+ "FFB5B5", // B 5
+ "909090", // C 6 - changed from ghemical
+ "3050F8", // N 7 - changed from ghemical
+ "FF0D0D", // O 8
+ "90E050", // F 9 - changed from ghemical
+ "B3E3F5", // Ne 10
+ "AB5CF2", // Na 11
+ "8AFF00", // Mg 12
+ "BFA6A6", // Al 13
+ "F0C8A0", // Si 14 - changed from ghemical
+ "FF8000", // P 15
+ "FFFF30", // S 16
+ "1FF01F", // Cl 17
+ "80D1E3", // Ar 18
+ "8F40D4", // K 19
+ "3DFF00", // Ca 20
+ "E6E6E6", // Sc 21
+ "BFC2C7", // Ti 22
+ "A6A6AB", // V 23
+ "8A99C7", // Cr 24
+ "9C7AC7", // Mn 25
+ "E06633", // Fe 26 - changed from ghemical
+ "F090A0", // Co 27 - changed from ghemical
+ "50D050", // Ni 28 - changed from ghemical
+ "C88033", // Cu 29 - changed from ghemical
+ "7D80B0", // Zn 30
+ "C28F8F", // Ga 31
+ "668F8F", // Ge 32
+ "BD80E3", // As 33
+ "FFA100", // Se 34
+ "A62929", // Br 35
+ "5CB8D1", // Kr 36
+ "702EB0", // Rb 37
+ "00FF00", // Sr 38
+ "94FFFF", // Y 39
+ "94E0E0", // Zr 40
+ "73C2C9", // Nb 41
+ "54B5B5", // Mo 42
+ "3B9E9E", // Tc 43
+ "248F8F", // Ru 44
+ "0A7D8C", // Rh 45
+ "006985", // Pd 46
+ "C0C0C0", // Ag 47 - changed from ghemical
+ "FFD98F", // Cd 48
+ "A67573", // In 49
+ "668080", // Sn 50
+ "9E63B5", // Sb 51
+ "D47A00", // Te 52
+ "940094", // I 53
+ "429EB0", // Xe 54
+ "57178F", // Cs 55
+ "00C900", // Ba 56
+ "70D4FF", // La 57
+ "FFFFC7", // Ce 58
+ "D9FFC7", // Pr 59
+ "C7FFC7", // Nd 60
+ "A3FFC7", // Pm 61
+ "8FFFC7", // Sm 62
+ "61FFC7", // Eu 63
+ "45FFC7", // Gd 64
+ "30FFC7", // Tb 65
+ "1FFFC7", // Dy 66
+ "00FF9C", // Ho 67
+ "00E675", // Er 68
+ "00D452", // Tm 69
+ "00BF38", // Yb 70
+ "00AB24", // Lu 71
+ "4DC2FF", // Hf 72
+ "4DA6FF", // Ta 73
+ "2194D6", // W 74
+ "267DAB", // Re 75
+ "266696", // Os 76
+ "175487", // Ir 77
+ "D0D0E0", // Pt 78 - changed from ghemical
+ "FFD123", // Au 79 - changed from ghemical
+ "B8B8D0", // Hg 80 - changed from ghemical
+ "A6544D", // Tl 81
+ "575961", // Pb 82
+ "9E4FB5", // Bi 83
+ "AB5C00", // Po 84
+ "754F45", // At 85
+ "428296", // Rn 86
+ "420066", // Fr 87
+ "007D00", // Ra 88
+ "70ABFA", // Ac 89
+ "00BAFF", // Th 90
+ "00A1FF", // Pa 91
+ "008FFF", // U 92
+ "0080FF", // Np 93
+ "006BFF", // Pu 94
+ "545CF2", // Am 95
+ "785CE3", // Cm 96
+ "8A4FE3", // Bk 97
+ "A136D4", // Cf 98
+ "B31FD4", // Es 99
+ "B31FBA", // Fm 100
+ "B30DA6", // Md 101
+ "BD0D87", // No 102
+ "C70066", // Lr 103
+ "CC0059", // Rf 104
+ "D1004F", // Db 105
+ "D90045", // Sg 106
+ "E00038", // Bh 107
+ "E6002E", // Hs 108
+ "EB0026" // Mt 109
+};
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/cube.asy b/Master/texmf-dist/doc/asymptote/examples/cube.asy
new file mode 100644
index 00000000000..acfecfdd7d4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cube.asy
@@ -0,0 +1,15 @@
+import three;
+
+currentprojection=orthographic(5,4,2,center=true);
+
+size(5cm);
+size3(3cm,5cm,8cm);
+
+draw(unitbox);
+
+dot(unitbox,red);
+
+label("$O$",(0,0,0),NW);
+label("(1,0,0)",(1,0,0),S);
+label("(0,1,0)",(0,1,0),E);
+label("(0,0,1)",(0,0,1),Z);
diff --git a/Master/texmf-dist/doc/asymptote/examples/curvedlabel.asy b/Master/texmf-dist/doc/asymptote/examples/curvedlabel.asy
new file mode 100644
index 00000000000..2ff4c6c34ec
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/curvedlabel.asy
@@ -0,0 +1,4 @@
+size(200);
+import labelpath;
+labelpath("This is a test of curved labels in Asymptote (implemented with the {\tt PSTricks pstextpath} macro).",reverse(rotate(-90)*unitcircle));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy b/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy
new file mode 100644
index 00000000000..5bee2342d83
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy
@@ -0,0 +1,17 @@
+size(200);
+import labelpath3;
+
+path3 g=(1,0,0)..(0,1,1)..(-1,0,0)..(0,-1,1)..cycle;
+path3 g2=shift(-Z)*reverse(unitcircle3);
+
+string txt1="\hbox{This is a test of \emph{curved} 3D labels in
+\textbf{Asymptote} (implemented with {\tt texpath}).}";
+
+string txt2="This is a test of curved labels in Asymptote\\(implemented
+without the {\tt PSTricks pstextpath} macro).";
+
+draw(surface(g),paleblue+opacity(0.5));
+draw(labelpath(txt1,subpath(g,0,reltime(g,0.95)),angle=-90),orange);
+
+draw(g2,1bp+red);
+draw(labelpath(txt2,subpath(g2,0,3.9),angle=180,optional=rotate(-70,X)*Z));
diff --git a/Master/texmf-dist/doc/asymptote/examples/cyclohexane.asy b/Master/texmf-dist/doc/asymptote/examples/cyclohexane.asy
new file mode 100644
index 00000000000..11b01551c8d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cyclohexane.asy
@@ -0,0 +1,80 @@
+import three;
+
+currentprojection=perspective(300,-650,500);
+currentlight.background=palecyan;
+
+surface carbon=scale3(70)*unitsphere; // 70 pm
+surface hydrogen=scale3(25)*unitsphere; // 25 pm
+
+real alpha=90+aSin(1/3);
+
+real CCbond=156; // 156 pm
+real CHbond=110; // 110 pm
+
+triple c1=(0,0,0);
+triple h1=c1+CHbond*Z;
+triple c2=rotate(alpha,c1,c1+Y)*(CCbond*Z);
+triple h2=rotate(120,c1,c2)*h1;
+triple h3=c2-CHbond*Z;
+triple h4=rotate(120,c2,c1)*h3;
+
+triple c3=rotate(120,c2,h3)*c1;
+triple h5=c3+CHbond*Z;
+triple h6=rotate(-120,c3,c2)*h5;
+
+triple c4=rotate(-120,c3,h5)*c2;
+triple h7=c4-CHbond*Z;
+triple h8=rotate(120,c4,c3)*h7;
+
+triple c5=rotate(120,c4,h7)*c3;
+triple h9=c5+CHbond*Z;
+triple h10=rotate(-120,c5,c4)*h9;
+
+triple c6=rotate(-120,c5,h9)*c4;
+triple h11=c6-CHbond*Z;
+triple h12=rotate(120,c6,c5)*h11;
+
+pen Black=gray(0.4);
+
+defaultrender=render(compression=Zero,merge=true);
+
+draw(shift(c1)*carbon,Black);
+draw(shift(c2)*carbon,Black);
+draw(shift(c3)*carbon,Black);
+draw(shift(c4)*carbon,Black);
+draw(shift(c5)*carbon,Black);
+draw(shift(c6)*carbon,Black);
+
+
+material White=material(diffusepen=gray(0.4),emissivepen=gray(0.6));
+
+draw(shift(h1)*hydrogen,White);
+draw(shift(h2)*hydrogen,White);
+draw(shift(h3)*hydrogen,White);
+draw(shift(h4)*hydrogen,White);
+draw(shift(h5)*hydrogen,White);
+draw(shift(h6)*hydrogen,White);
+draw(shift(h7)*hydrogen,White);
+draw(shift(h8)*hydrogen,White);
+draw(shift(h9)*hydrogen,White);
+draw(shift(h10)*hydrogen,White);
+draw(shift(h11)*hydrogen,White);
+draw(shift(h12)*hydrogen,White);
+
+
+pen thick=linewidth(10);
+
+draw(c1--c2--c3--c4--c5--c6--cycle,thick);
+
+draw(c1--h1,thick);
+draw(c1--h2,thick);
+draw(c2--h3,thick);
+draw(c2--h4,thick);
+draw(c3--h5,thick);
+draw(c3--h6,thick);
+draw(c4--h7,thick);
+draw(c4--h8,thick);
+draw(c5--h9,thick);
+draw(c5--h10,thick);
+draw(c6--h11,thick);
+draw(c6--h12,thick);
diff --git a/Master/texmf-dist/doc/asymptote/examples/cylinder.asy b/Master/texmf-dist/doc/asymptote/examples/cylinder.asy
new file mode 100644
index 00000000000..88ff1394bac
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cylinder.asy
@@ -0,0 +1,8 @@
+import solids;
+
+size(0,100);
+currentlight=Viewport;
+
+revolution r=cylinder(O,1,1.5,Y+Z);
+draw(surface(r),green,render(merge=true));
+draw(r,blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/cylinderskeleton.asy b/Master/texmf-dist/doc/asymptote/examples/cylinderskeleton.asy
new file mode 100644
index 00000000000..7dcd1c81190
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/cylinderskeleton.asy
@@ -0,0 +1,6 @@
+import solids;
+
+size(0,100);
+
+revolution r=cylinder(O,1,1.5,Y+Z);
+draw(r,heavygreen);
diff --git a/Master/texmf-dist/doc/asymptote/examples/datagraph.asy b/Master/texmf-dist/doc/asymptote/examples/datagraph.asy
new file mode 100644
index 00000000000..62cca8ea896
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/datagraph.asy
@@ -0,0 +1,12 @@
+import graph;
+
+size(200,150,IgnoreAspect);
+
+real[] x={0,1,2,3};
+real[] y=x^2;
+
+draw(graph(x,y),red);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,
+ RightTicks(Label(fontsize(8pt)),new real[]{0,4,9}));
diff --git a/Master/texmf-dist/doc/asymptote/examples/delu.asy b/Master/texmf-dist/doc/asymptote/examples/delu.asy
new file mode 100644
index 00000000000..7f9853eb51c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/delu.asy
@@ -0,0 +1,29 @@
+size(7cm,0);
+
+pair z1=(1,-0.25);
+pair v1=dir(45);
+pair z2=-z1;
+pair v2=0.75*dir(260);
+pair z3=(z1.x,-3);
+
+// A centered random number
+real crand() {return unitrand()-0.5;}
+
+guide g;
+pair lastz;
+for(int i=0; i < 60; ++i) {
+ pair z=0.75*lastz+(crand(),crand());
+ g=g..2.5*z;
+ lastz=z;
+}
+g=shift(0,-.5)*g..cycle;
+
+draw(g,gray(0.7));
+
+draw("$r$",z1--z2,RightSide,red,Arrows,DotMargins);
+draw(z1--z1+v1,Arrow);
+draw(z2--z2+v2,Arrow);
+draw(z3--z3+v1-v2,green,Arrow);
+
+dot("1",z1,S,blue);
+dot("2",z2,NW,blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/diagonal.asy b/Master/texmf-dist/doc/asymptote/examples/diagonal.asy
new file mode 100644
index 00000000000..32f3fc04be0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/diagonal.asy
@@ -0,0 +1 @@
+draw((0,0)--(100,100));
diff --git a/Master/texmf-dist/doc/asymptote/examples/diatom.asy b/Master/texmf-dist/doc/asymptote/examples/diatom.asy
new file mode 100644
index 00000000000..23673dcadf5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/diatom.asy
@@ -0,0 +1,129 @@
+import graph;
+
+size(15cm,12cm,IgnoreAspect);
+
+real minpercent=20;
+real ignorebelow=0;
+string data="diatom.csv";
+string[] group;
+int[] begin,end;
+
+defaultpen(fontsize(8pt)+overwrite(MoveQuiet));
+
+file in=input(data).line().csv();
+
+string depthlabel=in;
+string yearlabel=in;
+string[] taxa=in;
+group=in;
+begin=in;
+real[] depth;
+int[] year;
+real[][] percentage;
+
+while(true) {
+ real d=in;
+ if(eof(in)) break;
+ depth.push(d);
+ year.push(in);
+ percentage.push(in);
+}
+
+percentage=transpose(percentage);
+real depthmin=-min(depth);
+real depthmax=-max(depth);
+
+int n=percentage.length;
+
+int final;
+for(int taxon=0; taxon < n; ++taxon) {
+ real[] P=percentage[taxon];
+ if(max(P) < ignorebelow) continue;
+ final=taxon;
+}
+
+real angle=45;
+real L=3cm;
+pair Ldir=L*dir(angle);
+real ymax=-infinity;
+real margin=labelmargin();
+
+real location=0;
+
+for(int i=0; i < begin.length-1; ++i) end[i]=begin[i+1]-1;
+end[begin.length-1]=n-1;
+
+typedef void drawfcn(frame f);
+drawfcn[] draw=new drawfcn[begin.length];
+
+pair z0;
+
+for(int taxon=0; taxon < n; ++taxon) {
+ real[] P=percentage[taxon];
+ real maxP=max(P);
+ if(maxP < ignorebelow) continue;
+ picture pic;
+ real x=1;
+ if(maxP < minpercent) x=minpercent/maxP;
+ if(maxP > 100) x=50/maxP;
+ scale(pic,Linear(true,x),Linear(-1));
+ filldraw(pic,(0,depthmin)--graph(pic,P,depth)--(0,depthmax)--cycle,
+ gray(0.9));
+ xaxis(pic,Bottom,LeftTicks("$%.3g$",beginlabel=false,0,2),above=true);
+ xaxis(pic,Top,above=true);
+
+ frame label;
+ label(label,rotate(angle)*TeXify(taxa[taxon]),(0,0),N);
+
+ pair z=point(pic,N);
+ pair v=max(label);
+ int taxon=taxon;
+ pic.add(new void(frame f, transform t) {
+ pair z1=t*z+v;
+ ymax=max(ymax,z1.y+margin);
+ });
+
+ for(int i=0; i < begin.length; ++i) {
+ pair z=point(pic,N);
+ pair v=max(label);
+ if(taxon == begin[i]) {
+ pic.add(new void(frame f, transform t) {
+ pair Z=t*z+v;
+ z0=Z;
+ pair w0=Z+Ldir;
+ });
+ } else if(taxon == end[i]) {
+ int i=i;
+ pair align=2N;
+ pic.add(new void(frame, transform t) {
+ pair z0=z0;
+ pair z1=t*z+v;
+ pair w1=z1+Ldir;
+ draw[i]=new void(frame f) {
+ path g=z0--(z0.x+(ymax-z0.y)/Tan(angle),ymax)--
+ (z1.x+(ymax-z1.y)/Tan(angle),ymax)--z1;
+ draw(f,g);
+ label(f,group[i],point(g,1.5),align);
+ };
+ });
+ }
+ }
+
+ add(pic,label,point(pic,N));
+
+ if(taxon == 0) yaxis(pic,depthlabel,Left,RightTicks(0,10),above=true);
+ if(taxon == final) yaxis(pic,Right,LeftTicks("%",0,10),above=true);
+
+ add(shift(location,0)*pic);
+ location += pic.userMax().x;
+}
+
+add(new void(frame f, transform) {
+ for(int i=0; i < draw.length; ++i)
+ draw[i](f);
+ });
+
+for(int i=0; i < year.length; ++i)
+ if(year[i] != 0) label((string) year[i],(location,-depth[i]),E);
+
+label("\%",(0.5*location,point(S).y),5*S);
diff --git a/Master/texmf-dist/doc/asymptote/examples/diatom.csv b/Master/texmf-dist/doc/asymptote/examples/diatom.csv
new file mode 100644
index 00000000000..d05c3f4bc9a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/diatom.csv
@@ -0,0 +1,28 @@
+"sediment depth (cm)","year","Achnanthes minutissima Kuetzing","Anomoeoneis vitrea (Grunow) Ross","Asterionella formosa Hassall","Tabellaria flocculosa (Roth) Kuetzing","Fragilaria cf. tenera","Chaetoceros muelleri/elmorei cysts","Aulacoseira spp. ","Fragilaria capucina var. vaucheriae (Kuetzing)","Fragilaria crotonensis Kitton"
+"A","B","C"
+0,4,6
+0,2000,11.6959064327485,9.55165692007797,49.6101364522417,1.364522417154,0,0.974658869395711,0,2.14424951267057,4.09356725146199
+10,1998,20.2676864244742,11.2810707456979,34.7992351816444,2.39005736137667,0,0.191204588910134,0.573613766730402,0.382409177820268,7.55258126195029
+20,1996,21.1282051282051,33.6410256410256,24,2.35897435897436,0.615384615384615,0,0.205128205128205,0.615384615384615,2.56410256410256
+30,1994,25.7620452310718,21.0422812192724,31.3667649950836,2.16322517207473,0.393313667649951,0.393313667649951,0.196656833824975,1.76991150442478,3.73647984267453
+40,1992,21.0422812192724,16.5191740412979,42.9695181907571,0.589970501474926,0,0.983284169124877,0.589970501474926,0.393313667649951,1.96656833824975
+50,1990,23.1067961165049,24.0776699029126,29.126213592233,1.35922330097087,0,0.970873786407767,0.388349514563107,0.58252427184466,3.30097087378641
+60,1988,35.0738916256158,33.3004926108374,4.33497536945813,1.37931034482759,0.591133004926108,1.97044334975369,1.18226600985222,0.985221674876847,2.75862068965517
+70,1986,42.2090729783037,33.7278106508876,2.26824457593688,1.38067061143984,0.788954635108481,1.18343195266272,0.591715976331361,1.38067061143984,3.25443786982249
+90,1984,34.5098039215686,41.9607843137255,0.196078431372549,2.15686274509804,0.588235294117647,2.74509803921569,0.588235294117647,2.15686274509804,0
+95,1982,38.0487804878049,45.4634146341463,0.487804878048781,0.975609756097561,0.975609756097561,0,0.390243902439024,0.390243902439024,0
+110,1980,40.1860465116279,41.4883720930233,1.30232558139535,0.837209302325581,0,0.930232558139535,0.372093023255814,0.372093023255814,1.3953488372093
+130,1978,39.6501457725948,42.1768707482993,0.291545189504373,0.194363459669582,2.72108843537415,1.55490767735666,0,1.36054421768707,0.777453838678329
+150,1972,32.6298701298701,31.4935064935065,1.86688311688312,1.78571428571429,0.162337662337662,13.961038961039,0.162337662337662,1.94805194805195,1.86688311688312
+170,1970,30.7692307692308,47.534516765286,0.986193293885602,3.35305719921105,0.19723865877712,1.38067061143984,0,1.18343195266272,0.591715976331361
+190,1965,40.5268490374873,37.8926038500507,1.82370820668693,2.63424518743668,0,1.21580547112462,0.405268490374873,1.21580547112462,1.01317122593718
+260,1961,40.4494382022472,26.0299625468165,0.468164794007491,1.31086142322097,0.561797752808989,8.05243445692884,0,3.74531835205992,0.374531835205993
+280,1950,44.946025515211,11.9725220804711,0.294406280667321,0.785083415112856,16.48675171737,1.96270853778214,0.392541707556428,2.35525024533857,0
+290,1942,41.2818096135721,8.29406220546654,0.188501413760603,0.282752120640905,28.6522148916117,0.942507068803016,0.377002827521206,4.33553251649387,0
+300,1940,18.0995475113122,12.3076923076923,0,0.180995475113122,40.3619909502262,5.61085972850679,0,2.35294117647059,0
+310,1920,28.6844708209693,11.2759643916914,0.593471810089021,3.26409495548961,13.0563798219585,13.2542037586548,0.19782393669634,9.89119683481701,0.989119683481701
+320,1915,6.17977528089888,1.31086142322097,4.30711610486891,6.74157303370787,32.7715355805243,34.4569288389513,1.31086142322097,2.62172284644195,0
+330,1910,4.03846153846154,0.769230769230769,14.5192307692308,36.4423076923077,5,0.769230769230769,11.1538461538462,0,2.11538461538462
+340,1888,7.37148399612027,1.1639185257032,9.40834141610087,31.8137730358875,1.1639185257032,0.969932104752667,14.3549951503395,0.193986420950533,0.969932104752667
+400,1763,2.69749518304432,0.192678227360308,24.8554913294798,26.7822736030829,0.385356454720617,2.69749518304432,20.0385356454721,0,1.54142581888247
+450,1726,2.37859266600595,0.396432111000991,9.71258671952428,28.5431119920714,0.198216055500496,0.594648166501487,30.5252725470763,0,0.792864222001982
diff --git a/Master/texmf-dist/doc/asymptote/examples/dimension.asy b/Master/texmf-dist/doc/asymptote/examples/dimension.asy
new file mode 100644
index 00000000000..1244ba84e68
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/dimension.asy
@@ -0,0 +1,23 @@
+size(12cm,0);
+
+void distance(picture pic=currentpicture, pair A, pair B, Label L="", real n=0,
+ pen p=currentpen)
+{
+ real d=3mm;
+ path g=A--B;
+ transform T=shift(-n*d*unit(B-A)*I);
+ pic.add(new void(frame f, transform t) {
+ picture opic;
+ path G=T*t*g;
+ draw(opic,Label(L,Center,UnFill(1)),G,p,Arrows(NoFill),Bars,PenMargins);
+ add(f,opic.fit());
+ });
+ pic.addBox(min(g),max(g),T*min(p),T*max(p));
+}
+
+pair A=(0,0), B=(3,3);
+
+dot(A);
+dot(B);
+
+distance(A,B,"$\ell$",1);
diff --git a/Master/texmf-dist/doc/asymptote/examples/dots.asy b/Master/texmf-dist/doc/asymptote/examples/dots.asy
new file mode 100644
index 00000000000..49acfce341f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/dots.asy
@@ -0,0 +1 @@
+draw((0,0){up}..(100,25){right}..(200,0){down});
diff --git a/Master/texmf-dist/doc/asymptote/examples/dragon.asy b/Master/texmf-dist/doc/asymptote/examples/dragon.asy
new file mode 100644
index 00000000000..08fcb61f5c0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/dragon.asy
@@ -0,0 +1,66 @@
+pair crease(pair z1, pair z2, bool left)
+{
+ pair dz = z2 - z1;
+
+ if (left)
+ return z1 + dz * (0.5, 0.5);
+ else
+ return z1 + dz * (0.5, -0.5);
+}
+
+pair[] fold(pair[] oldz)
+{
+ int n = oldz.length;
+ pair[] newz = new pair[2n-1];
+
+ for (int i = 0; i < n-1; ++i)
+ {
+ newz[2i] = oldz[i];
+ newz[2i+1] = crease(oldz[i], oldz[i+1], i%2==0);
+ }
+
+ newz[2(n-1)] = oldz[n-1];
+
+ return newz;
+}
+
+pair[] dragon(int n, pair[] base={})
+{
+ if (base.length == 0)
+ if (n%2 == 0)
+ base = new pair[] {(0,0), (1,1) };
+ else
+ base = new pair[] {(0,0), (1,0) };
+
+ pair[] z = base;
+
+ for (int i = 1; i < n; ++i)
+ z = fold(z);
+
+ return z;
+}
+
+void drawtris(pair[] z, pen p = currentpen)
+{
+ int n = z.length;
+
+ for (int i = 0; i < n-2; i+=2)
+ fill(z[i]--z[i+1]--z[i+2]--cycle, p);
+}
+
+void drawtris(pair[] z, pen p1, pen p2)
+{
+ int n = z.length;
+
+ for (int i = 0; i < n-2; i+=2)
+ fill(z[i]--z[i+1]--z[i+2]--cycle, 2i < n-1 ? p1 : p2);
+}
+
+size(500,0);
+
+int n = 10;
+
+drawtris(dragon(n, new pair[] {(0,0), (1,0)}), black);
+drawtris(dragon(n, new pair[] {(0,0), (0,-1)}), blue);
+drawtris(dragon(n, new pair[] {(0,0), (-1,0)}), red);
+drawtris(dragon(n, new pair[] {(0,0), (0,1)}), green);
diff --git a/Master/texmf-dist/doc/asymptote/examples/eetomumu.asy b/Master/texmf-dist/doc/asymptote/examples/eetomumu.asy
new file mode 100644
index 00000000000..309547d1455
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/eetomumu.asy
@@ -0,0 +1,60 @@
+import feynman;
+
+
+// set default line width to 0.8bp
+currentpen = linewidth(0.8);
+
+// scale all other defaults of the feynman module appropriately
+fmdefaults();
+
+// define vertex and external points
+
+real L = 50;
+
+pair zl = (-0.75*L,0);
+pair zr = (+0.75*L,0);
+
+pair xu = zl + L*dir(+120);
+pair xl = zl + L*dir(-120);
+
+pair yu = zr + L*dir(+60);
+pair yl = zr + L*dir(-60);
+
+
+// draw propagators and vertices
+
+drawFermion(xu--zl);
+drawFermion(zl--xl);
+
+drawPhoton(zl--zr);
+
+drawFermion(yu--zr);
+drawFermion(zr--yl);
+
+drawVertex(zl);
+drawVertex(zr);
+
+
+// draw momentum arrows and momentum labels
+
+drawMomArrow(xl--zl, Relative(left));
+label(Label("$k'$",2RightSide), xl--zl);
+
+label(Label("$k$",2LeftSide), xu--zl);
+
+drawMomArrow(zl--zr, Relative(left));
+label(Label("$q$",2RightSide), zl--zr);
+
+drawMomArrow(zr--yu, Relative(right));
+label(Label("$p'$",2LeftSide), zr--yu);
+
+label(Label("$p$",2RightSide), zr--yl);
+
+
+// draw particle labels
+
+label("$e^-$", xu, left);
+label("$e^+$", xl, left);
+
+label("$\mu^+$", yu, right);
+label("$\mu^-$", yl, right);
diff --git a/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy b/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy
new file mode 100644
index 00000000000..d229f76b748
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy
@@ -0,0 +1,47 @@
+import graph;
+import palette;
+texpreamble("\usepackage[amssymb,thinqspace,thinspace]{SIunits}");
+
+size(800,200);
+
+real c=3e8;
+real nm=1e-9;
+real freq(real lambda) {return c/(lambda*nm);}
+real lambda(real f) {return c/(f*nm);}
+
+real fmin=10;
+real fmax=1e23;
+
+scale(Log(true),Linear(true));
+xlimits(fmin,fmax);
+ylimits(0,1);
+
+real uv=freq(400);
+real ir=freq(700);
+
+bounds visible=bounds(Scale(uv).x,Scale(ir).x);
+palette(visible,uv,ir+(0,2),Bottom,Rainbow(),invisible);
+
+xaxis(Label("\hertz",1),Bottom,RightTicks,above=true);
+
+real log10Left(real x) {return -log10(x);}
+real pow10Left(real x) {return pow10(-x);}
+
+scaleT LogLeft=scaleT(log10Left,pow10Left,logarithmic=true);
+
+picture q=secondaryX(new void(picture p) {
+ scale(p,LogLeft,Linear);
+ xlimits(p,lambda(fmax),lambda(fmin));
+ ylimits(p,0,1);
+ xaxis(p,Label("\nano\metre",1,0.01N),Top,LeftTicks(DefaultLogFormat,n=10));
+ });
+
+add(q,above=true);
+
+margin margin=PenMargin(0,0);
+draw("radio",Scale((10,1))--Scale((5e12,1)),S,Arrow);
+draw("infrared",Scale((1e12,1.75))--Scale(shift(0,1.75)*ir),LeftSide,Arrows,margin);
+draw("UV",Scale(shift(0,1.75)*uv)--Scale((1e17,1.76)),LeftSide,Arrows,margin);
+draw("x-rays",Scale((1e16,1))--Scale((1e21,1)),RightSide,Arrows);
+draw("$\gamma$-rays",Scale((fmax,1.75))--Scale((2e18,1.75)),Arrow);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/elevation.asy b/Master/texmf-dist/doc/asymptote/examples/elevation.asy
new file mode 100644
index 00000000000..1ff4ee38f28
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/elevation.asy
@@ -0,0 +1,17 @@
+import graph3;
+import grid3;
+import palette;
+
+currentprojection=orthographic(0.8,1,1);
+
+size(400,300,IgnoreAspect);
+
+defaultrender.merge=true;
+
+real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);}
+
+surface s=surface(f,(-1/2,-1/2),(1/2,1/2),50,Spline);
+
+draw(s,mean(palette(s.map(zpart),Rainbow())),black);
+
+grid3(XYZgrid);
diff --git a/Master/texmf-dist/doc/asymptote/examples/elliptic.asy b/Master/texmf-dist/doc/asymptote/examples/elliptic.asy
new file mode 100644
index 00000000000..728508f0110
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/elliptic.asy
@@ -0,0 +1,115 @@
+struct curve {
+ real a=0;
+ real b=8;
+
+ real y2(real x) {
+ return x^3+a*x+b;
+ }
+
+ real disc() {
+ return -16*(4*a*a*a+27*b*b);
+ }
+
+ real lowx () {
+ return sqrt(-a/3);
+ }
+
+ int comps() {
+ if (a < 0) {
+ real x=sqrt(-a/3);
+ return y2(x) < 0 ? 2 : 1;
+ }
+ return 1;
+ }
+
+ void locus(picture pic=currentpicture, real m, real M, int n=100,
+ pen p=currentpen) {
+ path flip(path p, bool close) {
+ path pp=reverse(yscale(-1)*p)..p;
+ return close ? pp..cycle : pp;
+ }
+ path section(real m, real M, int n) {
+ guide g;
+ real width=(M-m)/n;
+ for(int i=0; i <= n; ++i) {
+ real x=m+width*i;
+ real yy=y2(x);
+ if (yy > 0)
+ g=g..(x,sqrt(yy));
+ }
+ return g;
+ }
+
+ if (comps() == 1) {
+ draw(pic,flip(section(m,M,n),false),p);
+ }
+ else {
+ real x=lowx(); // The minimum on x^3+ax+b
+ if (m < x)
+ draw(pic,flip(section(m,min(x,M),n),true),p);
+ if (x < M)
+ draw(pic,flip(section(max(x,m),M,n),false),p);
+ }
+ }
+
+ pair neg(pair P) {
+ return finite(P.y) ? yscale(-1)*P : P;
+ }
+
+ pair add(pair P, pair Q) {
+ if (P.x == Q.x && P.x != Q.x)
+ return (0,infinity);
+ else {
+ real lambda=P == Q ? (3*P.x^2+a)/(2*P.y) : (Q.y-P.y)/(Q.x-P.x);
+ real Rx=lambda^2-P.x-Q.x;
+ return (Rx,(P.x-Rx)*lambda-P.y);
+ }
+ }
+}
+
+import graph;
+import math;
+
+size(0,200);
+
+curve c; c.a=-1; c.b=4;
+
+pair oncurve(real x)
+{
+ return (x,sqrt(c.y2(x)));
+}
+
+picture output;
+
+axes();
+c.locus(-4,3,.3red+.7blue);
+
+pair P=oncurve(-1),Q=oncurve(1.2);
+pair PP=c.add(P,P),sum=c.add(P,Q);
+
+save();
+
+drawline(P,Q,dashed);
+drawline(c.neg(sum),sum,dashed);
+dot("$P$", P, NW);
+dot("$Q$", Q, SSE);
+dot(c.neg(sum));
+dot("$P+Q$", sum, 2SW);
+
+add(output,currentpicture.fit(),(-0.5cm,0),W);
+
+restore();
+
+save();
+
+drawline(P,c.neg(PP),dashed);
+drawline(c.neg(PP),PP,dashed);
+dot("$P$", P, NW);
+dot(c.neg(PP));
+dot("$2P$", PP, SW);
+
+add(output,currentpicture.fit(),(0.5cm,0),E);
+
+shipout(output);
+
+restore();
diff --git a/Master/texmf-dist/doc/asymptote/examples/epix.asy b/Master/texmf-dist/doc/asymptote/examples/epix.asy
new file mode 100644
index 00000000000..b833289bd80
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/epix.asy
@@ -0,0 +1,14 @@
+import graph3;
+
+size(200,200,IgnoreAspect);
+
+currentprojection=perspective(4,2,3);
+
+real f(pair z) {return z.y^3/2-3z.x^2*z.y;}
+
+draw(surface(f,(-1,-1),(1,1),nx=10,Spline),green,render(merge=true));
+draw(Label("$y$",1),(0,0,0)--(0,2,0),red,Arrow3);
+
+draw(Label("$x$",1),(0,0,0)--(2,0,0),red,Arrow3);
+draw(Label("$z$",1),(0,0,0)--(0,0,2.5),red,Arrow3);
+label("$z=\frac{1}{2}y^3-3x^2y$",(1,1,1),NE);
diff --git a/Master/texmf-dist/doc/asymptote/examples/equilateral.asy b/Master/texmf-dist/doc/asymptote/examples/equilateral.asy
new file mode 100644
index 00000000000..d68e0d02225
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/equilateral.asy
@@ -0,0 +1,12 @@
+size(10cm,0);
+import math;
+
+pair b=(0,0), c=(1,0);
+pair a=extension(b,b+dir(60),c,c+dir(120));
+pair d=extension(b,b+dir(30),a,a+dir(270));
+
+draw(a--b--c--a--d--b^^d--c);
+label("$A$",a,N);
+label("$B$",b,W);
+label("$C$",c,E);
+label("$D$",d,S);
diff --git a/Master/texmf-dist/doc/asymptote/examples/equilchord.asy b/Master/texmf-dist/doc/asymptote/examples/equilchord.asy
new file mode 100644
index 00000000000..b93da942d08
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/equilchord.asy
@@ -0,0 +1,21 @@
+import graph3;
+
+size(0,150);
+currentprojection=perspective(5,-4,6);
+currentlight=(-1,-1,2);
+real t=0.5;
+
+real F(pair z) {
+ return (z.x^2+z.y^2 <= 1) ? sqrt(3)*(sqrt(1-z.x^2)-abs(z.y)) : 0;
+}
+
+real a=1.5;
+draw((-a,-a,0)--(-a,a,0)--(a,a,0)--(a,-a,0)--cycle,lightgray);
+
+xaxis3(Label("$x$",1),red,Arrow3);
+yaxis3(Label("$y$",1),red,Arrow3);
+draw(circle((0,0,0),1),dashed);
+draw(surface(F,(-1,-1),(t,1),20,monotonic),green,black,render(merge=true));
+real y=sqrt(1-t^2);
+draw((t,y,0)--(t,-y,0)--(t,0,sqrt(3)*y)--cycle,blue);
+label("$1$",(1,0,0),-Y+X);
diff --git a/Master/texmf-dist/doc/asymptote/examples/errorbars.asy b/Master/texmf-dist/doc/asymptote/examples/errorbars.asy
new file mode 100644
index 00000000000..a8707b24972
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/errorbars.asy
@@ -0,0 +1,42 @@
+import graph;
+
+picture pic;
+real xsize=200, ysize=140;
+size(pic,xsize,ysize,IgnoreAspect);
+
+pair[] f={(5,5),(50,20),(90,90)};
+pair[] df={(0,0),(5,7),(0,5)};
+
+errorbars(pic,f,df,red);
+draw(pic,graph(pic,f),"legend",
+ marker(scale(0.8mm)*unitcircle,red,FillDraw(blue),above=false));
+
+scale(pic,true);
+
+xaxis(pic,"$x$",BottomTop,LeftTicks);
+yaxis(pic,"$y$",LeftRight,RightTicks);
+add(pic,legend(pic),point(pic,NW),20SE,UnFill);
+
+picture pic2;
+size(pic2,xsize,ysize,IgnoreAspect);
+
+frame mark;
+filldraw(mark,scale(0.8mm)*polygon(6),green,green);
+draw(mark,scale(0.8mm)*cross(6),blue);
+
+draw(pic2,graph(pic2,f),marker(mark,markuniform(5)));
+
+scale(pic2,true);
+
+xaxis(pic2,"$x$",BottomTop,LeftTicks);
+yaxis(pic2,"$y$",LeftRight,RightTicks);
+
+yequals(pic2,55.0,red+Dotted);
+xequals(pic2,70.0,red+Dotted);
+
+// Fit pic to W of origin:
+add(pic.fit(),(0,0),W);
+
+// Fit pic2 to E of (5mm,0):
+add(pic2.fit(),(5mm,0),E);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/exp.asy b/Master/texmf-dist/doc/asymptote/examples/exp.asy
new file mode 100644
index 00000000000..2c4eed90d4e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/exp.asy
@@ -0,0 +1,14 @@
+import graph;
+size(150,0);
+
+real f(real x) {return exp(x);}
+pair F(real x) {return (x,f(x));}
+
+xaxis("$x$");
+yaxis("$y$",0);
+
+draw(graph(f,-4,2,operator ..),red);
+
+labely(1,E);
+label("$e^x$",F(1),SE);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/exp3.asy b/Master/texmf-dist/doc/asymptote/examples/exp3.asy
new file mode 100644
index 00000000000..39baba993f3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/exp3.asy
@@ -0,0 +1,22 @@
+import graph3;
+import palette;
+
+size(12cm,IgnoreAspect);
+currentprojection=orthographic(1,-2,1);
+
+real f(pair z) {return abs(exp(z));}
+
+real Arg(triple v) {return degrees(exp((v.x,v.y)),warn=false);}
+
+surface s=surface(f,(-2,-pi),(2,pi),20,Spline);
+
+s.colors(palette(s.map(Arg),Wheel()));
+draw(s,render(compression=Low,merge=true));
+
+real xmin=point((-1,-1,-1)).x;
+real xmax=point((1,1,1)).x;
+draw((xmin,0,0)--(xmax,0,0),dashed);
+
+xaxis3("$\mathop{\rm Re} z$",Bounds,InTicks);
+yaxis3("$\mathop{\rm Im} z$",Bounds,InTicks(beginlabel=false));
+zaxis3("$|\exp(z)|$",Bounds,InTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/externalprc.tex b/Master/texmf-dist/doc/asymptote/examples/externalprc.tex
new file mode 100644
index 00000000000..e6d4ade1dcf
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/externalprc.tex
@@ -0,0 +1,12 @@
+% Generate inline PRC images for latex with
+% asy -inlineimage teapot -render=4
+%
+% Generate inline PRC images for pdflatex with
+% asy -inlineimage teapot -render=4 -tex pdflatex
+%
+\documentclass[12pt]{article}
+\input teapot.pre
+\RequirePackage{color,graphicx}
+\begin{document}
+\input teapot.tex
+\end{document}
diff --git a/Master/texmf-dist/doc/asymptote/examples/extrudedcontour.asy b/Master/texmf-dist/doc/asymptote/examples/extrudedcontour.asy
new file mode 100644
index 00000000000..dabd56b9298
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/extrudedcontour.asy
@@ -0,0 +1,26 @@
+import contour;
+import palette;
+import graph3;
+
+defaultrender.merge=true;
+
+currentprojection=orthographic(25,10,10);
+size(0,12cm);
+real a=3;
+real b=4;
+real f(pair z) {return (z.x+z.y)/(2+cos(z.x)*sin(z.y));}
+guide[][] g=contour(f,(-10,-10),(10,10),new real[]{8},150);
+
+render render=render(merge=true);
+for(guide p:g[0]){
+ draw(extrude(p,8Z),palered,render);
+ draw(path3(p),red+2pt,render);
+}
+
+draw(lift(f,g),red+2pt,render);
+
+surface s=surface(f,(0,0),(10,10),20,Spline);
+s.colors(palette(s.map(zpart),Rainbow()+opacity(0.5)));
+draw(s,render);
+axes3("$x$","$y$","$z$",Arrow3);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/fano.asy b/Master/texmf-dist/doc/asymptote/examples/fano.asy
new file mode 100644
index 00000000000..12286d7006e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/fano.asy
@@ -0,0 +1,28 @@
+import math;
+
+size(100,0);
+
+pair z4=(0,0);
+pair z7=(2,0);
+pair z1=point(rotate(60)*(z4--z7),1);
+
+pair z5=interp(z4,z7,0.5);
+pair z3=interp(z7,z1,0.5);
+pair z2=interp(z1,z4,0.5);
+pair z6=extension(z4,z3,z7,z2);
+
+draw(z4--z7--z1--cycle);
+draw(z4--z3);
+draw(z7--z2);
+draw(z1--z5);
+draw(circle(z6,abs(z3-z6)));
+
+label("1",z1,dir(z5--z1));
+label("2",z2,dir(z7--z2));
+label("3",z3,dir(z4--z3));
+label("4",z4,dir(z3--z4));
+label("5",z5,dir(z1--z5));
+label("6",z6,2.5E+0.1*N);
+label("7",z7,dir(z2--z7));
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy b/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy
new file mode 100644
index 00000000000..e53e1831419
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy
@@ -0,0 +1,40 @@
+// A compressed version of the required data file may be obtained from:
+// http://www-roc.inria.fr/gamma/download/counter.php?dir=ARCHITEC/&get_obj=uhrturm.obj.gz
+
+import graph3;
+import obj;
+
+size(200,0);
+size3(200);
+
+settings.render=8;
+
+texpreamble("\usepackage[T1]{fontenc}");
+texpreamble("\usepackage{ccfonts,eulervm}");
+
+currentprojection=perspective(4,1,2);
+currentlight=(4,0,2);
+currentlight.background=blue;
+
+real R=4;
+
+triple f1(pair t) {return (R*cos(t.x),R*sin(t.x),t.y);}
+
+draw(shift(-0.6Z)*scale3(0.66)*rotate(55,Z)*rotate(90,X)*
+ obj("uhrturm.obj",orange));
+
+surface s=surface(f1,(0,0),(2pi,2),8,8,Spline);
+
+string lo="$\displaystyle f(x+y)=f(x)+f(y)$";
+string hi="$\displaystyle F_{t+s}=F_t\circ F_s$";
+
+real h=0.0125;
+
+draw(surface(rotate(2)*xscale(0.32)*yscale(0.6)*lo,s,-pi/4-1.5*pi/20,0.5,h));
+draw(surface(rotate(0)*xscale(-0.45)*yscale(0.3)*hi,s,0.8*pi,0.25,h),blue);
+
+add(new void(frame f, transform3 t, picture pic, projection P) {
+ draw(f,surface(invert(box(min(f,P),max(f,P)),min3(f),P),
+ new pen[] {orange,red,yellow,brown}));
+ }
+);
diff --git a/Master/texmf-dist/doc/asymptote/examples/fermi.asy b/Master/texmf-dist/doc/asymptote/examples/fermi.asy
new file mode 100644
index 00000000000..c74da952ab2
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/fermi.asy
@@ -0,0 +1,40 @@
+import feynman;
+
+// set default line width to 0.8bp
+currentpen = linewidth(0.8);
+
+// scale all other defaults of the feynman module appropriately
+fmdefaults();
+
+// disable middle arrows
+currentarrow = None;
+
+// define vertex and external points
+
+pair xu = (-40,+45);
+pair xl = (-40,-45);
+pair yu = (+40,+45);
+pair yl = (+40,-45);
+
+pair zu = ( 0,+ 5);
+pair zl = ( 0,- 5);
+
+// define mid points
+
+pair mxu = (xu+zu)/2;
+pair mxl = (xl+zl)/2;
+pair myu = (yu+zu)/2;
+pair myl = (yl+zl)/2;
+
+// draw fermion lines
+drawFermion(xu--zu--yu);
+drawFermion(xl--zl--yl);
+
+// draw vertices
+drawVertexOX(zu);
+drawVertexOX(zl);
+
+// draw gluon. Note that the underlying fermion line is blotted out.
+drawGluon(arc((0,0),mxu,myl,CW));
+
+// shipout
diff --git a/Master/texmf-dist/doc/asymptote/examples/filegraph.asy b/Master/texmf-dist/doc/asymptote/examples/filegraph.asy
new file mode 100644
index 00000000000..4b05c5bcbd7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/filegraph.asy
@@ -0,0 +1,15 @@
+import graph;
+
+size(200,150,IgnoreAspect);
+
+file in=input("filegraph.dat").line();
+real[][] a=in.dimension(0,0);
+a=transpose(a);
+
+real[] x=a[0];
+real[] y=a[1];
+
+draw(graph(x,y),red);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/filegraph.dat b/Master/texmf-dist/doc/asymptote/examples/filegraph.dat
new file mode 100644
index 00000000000..f69ffe330de
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/filegraph.dat
@@ -0,0 +1,4 @@
+# x y
+ 50 0
+100 0.5
+125 2
diff --git a/Master/texmf-dist/doc/asymptote/examples/filesurface.asy b/Master/texmf-dist/doc/asymptote/examples/filesurface.asy
new file mode 100644
index 00000000000..eef9d37f494
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/filesurface.asy
@@ -0,0 +1,45 @@
+import graph3;
+import palette;
+
+size3(200,IgnoreAspect);
+
+file in=input("filesurface.dat").line();
+real[] x=in;
+real[] y=in;
+
+real[][] f=in.dimension(0,0);
+
+triple f(pair t) {
+ int i=round(t.x);
+ int j=round(t.y);
+ return (x[i],y[j],f[i][j]);
+}
+
+surface s=surface(f,(0,0),(x.length-1,y.length-1),x.length-1,y.length-1);
+real[] level=uniform(min(f)*(1-sqrtEpsilon),max(f)*(1+sqrtEpsilon),4);
+
+s.colors(palette(s.map(new real(triple v) {return find(level >= v.z);}),
+ Rainbow()));
+
+draw(s,meshpen=thick(),render(merge=true));
+
+triple m=currentpicture.userMin();
+triple M=currentpicture.userMax();
+triple target=0.5*(m+M);
+
+xaxis3("$x$",Bounds,InTicks);
+yaxis3("$y$",Bounds,InTicks(Step=1,step=0.1));
+zaxis3("$z$",Bounds,InTicks);
+
+/*
+picture palette;
+size3(palette,1cm);
+draw(palette,unitcube,red);
+frame F=palette.fit3();
+add(F,(M.x,m.y,m.z));
+*/
+
+currentprojection=perspective(camera=target+realmult(dir(68,225),M-m),
+ target=target);
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/filesurface.dat b/Master/texmf-dist/doc/asymptote/examples/filesurface.dat
new file mode 100644
index 00000000000..16d5966f6be
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/filesurface.dat
@@ -0,0 +1,12 @@
+1 12 24 36 60 84 120 180 240 360
+2005 2005.083333 2005.166667 2005.25 2005.333333 2005.416667 2005.5 2005.583333 2005.666667 2005.75 2005.833333 2005.916667 2006 2006.083333 2006.166667 2006.25 2006.333333 2006.416667 2006.5 2006.583333 2006.666667 2006.75 2006.833333 2006.916667 2007 2007.083333 2007.166667 2007.25 2007.333333 2007.416667 2007.5 2007.583333 2007.666667 2007.75 2007.833333 2007.916667 2008 2008.083333 2008.166667 2008.25 2008.333333 2008.416667 2008.5 2008.583333 2008.666667 2008.75 2008.833333 2008.916667
+2.111 2.1039 2.103 2.1047 2.1041 2.1039 2.1064 2.1126 2.1152 2.1209 2.2225 2.4112 2.3885 2.4586 2.6333 2.6489 2.6926 2.8691 2.9389 3.0941 3.1572 3.3501 3.4214 3.64 3.6159 3.6511 3.8439 3.859 3.9194 4.0982 4.105 4.3081 4.4339 4.2355 4.216 4.7114 4.1973 4.1821 4.3046 4.3691 4.3874 4.4724 4.4716 4.4875 4.6599 4.8313 3.8433 2.9929
+2.223809524 2.228 2.246190476 2.165238095 2.092727273 1.997272727 2.07185 2.14 2.128636364 2.327619048 2.577272727 2.67 2.717727273 2.793 2.978695652 3.094210526 3.175 3.271363636 3.415238095 3.489565217 3.573333333 3.664090909 3.723636364 3.773157895 3.914090909 3.9605 3.982727273 4.132105263 4.254545455 4.398095238 4.44 4.228695652 4.088 4.09 4.044090909 4.0855 3.870909091 3.631904762 3.711052632 3.955909091 4.141428571 4.562380952 4.575217391 4.36952381 4.210909091 2.93173913 2.3795 2.007727273
+2.431904762 2.4595 2.517142857 2.367619048 2.237272727 2.077727273 2.18235 2.253913043 2.222727273 2.484761905 2.743636364 2.804285714 2.862272727 2.968 3.192173913 3.343157895 3.381818182 3.462727273 3.574285714 3.575652174 3.602380952 3.657272727 3.677727273 3.744210526 3.926818182 3.954 3.922272727 4.105263158 4.255454545 4.464285714 4.475 4.183478261 4.0595 4.090434783 3.898636364 3.9975 3.68 3.334761905 3.402105263 3.781818182 4.07047619 4.624761905 4.542608696 4.178095238 4.008636364 3.151304348 2.641 2.375
+2.638095238 2.6685 2.735714286 2.562380952 2.416818182 2.241363636 2.33035 2.400869565 2.340454545 2.60952381 2.865454545 2.895238095 2.949545455 3.0775 3.297826087 3.477368421 3.521363636 3.589545455 3.685714286 3.640434783 3.614761905 3.674545455 3.668636364 3.742631579 3.938636364 3.9625 3.91 4.106842105 4.258636364 4.496666667 4.496818182 4.210869565 4.0975 4.138695652 3.933181818 4.027 3.719090909 3.413809524 3.434210526 3.818636364 4.071428571 4.622380952 4.56826087 4.157619048 3.993181818 3.358695652 2.8285 2.594090909
+2.996190476 3.015 3.124761905 2.920952381 2.753181818 2.581818182 2.6606 2.710869565 2.595 2.829047619 3.082272727 3.056190476 3.080909091 3.2445 3.45173913 3.664736842 3.703181818 3.74 3.82047619 3.726956522 3.655714286 3.712727273 3.669090909 3.753157895 3.970454545 4.0055 3.914090909 4.126315789 4.273181818 4.538095238 4.537727273 4.25826087 4.1655 4.210869565 3.982727273 4.1085 3.829545455 3.600952381 3.591578947 3.941363636 4.137619048 4.65952381 4.622173913 4.201428571 4.126363636 3.774782609 3.2075 2.983181818
+3.265714286 3.2665 3.405238095 3.21 3.04 2.87 2.9277 2.959565217 2.819545455 3.021428571 3.238636364 3.144761905 3.143636364 3.3225 3.536086957 3.798421053 3.85 3.867727273 3.91047619 3.803043478 3.706666667 3.757727273 3.700454545 3.775263158 4.003181818 4.037368421 3.938181818 4.156315789 4.288636364 4.566190476 4.546363636 4.31173913 4.23 4.27 4.076818182 4.185 3.949545455 3.793333333 3.730526316 4.043636364 4.219047619 4.636190476 4.62173913 4.258095238 4.190454545 3.967826087 3.53 3.192272727
+3.593809524 3.5845 3.745238095 3.543333333 3.381363636 3.209545455 3.249 3.282173913 3.122272727 3.285714286 3.488181818 3.380952381 3.344545455 3.497 3.674347826 3.935789474 4.004090909 4.004545455 4.029047619 3.906956522 3.778095238 3.817272727 3.75 3.811052632 4.055909091 4.091 3.99 4.203157895 4.330454545 4.614285714 4.590454545 4.393913043 4.344 4.397391304 4.234545455 4.346 4.165 4.105238095 4.044210526 4.252727273 4.398571429 4.718571429 4.705217391 4.407142857 4.379090909 4.255652174 3.998 3.514545455
+3.78952381 3.7435 3.9255 3.75 3.582272727 3.451363636 3.50775 3.513913043 3.359545455 3.494761905 3.665909091 3.551428571 3.504545455 3.6535 3.812608696 4.098421053 4.167272727 4.175909091 4.186666667 4.056086957 3.908571429 3.916363636 3.824545455 3.882105263 4.12 4.162 4.089090909 4.306315789 4.423181818 4.699047619 4.661818182 4.504782609 4.4985 4.519565217 4.402272727 4.5115 4.382727273 4.366666667 4.336842105 4.509545455 4.613809524 4.861428571 4.877391304 4.636666667 4.659545455 4.482173913 4.2535 3.744545455
+3.99 3.9085 4.098571429 3.944285714 3.771363636 3.609090909 3.6536 3.640869565 3.488181818 3.604761905 3.755454545 3.634285714 3.565909091 3.7165 3.866521739 4.151052632 4.235454545 4.235909091 4.249047619 4.116086957 3.961904762 3.953333333 3.855714286 3.92 4.153636364 4.1985 4.139090909 4.365789474 4.471818182 4.747142857 4.695454545 4.55 4.572 4.590434783 4.500909091 4.602 4.504090909 4.513809524 4.521052632 4.656818182 4.733809524 4.899047619 4.935652174 4.746190476 4.776818182 4.598695652 4.4835 3.900454545
+4.137142857 4.0305 4.213333333 4.08 3.902727273 3.739090909 3.774285714 3.757391304 3.598181818 3.706190476 3.842272727 3.712 3.629545455 3.771 3.919565217 4.231111111 4.295909091 4.306818182 4.31 4.170434783 4.000952381 3.99 3.881818182 3.943684211 4.176818182 4.2195 4.163636364 4.387368421 4.480454545 4.758095238 4.710454545 4.559565217 4.595 4.612173913 4.544090909 4.64 4.57 4.58 4.614736842 4.702727273 4.768571429 4.884761905 4.905652174 4.741904762 4.775454545 4.496521739 4.3585 3.738636364
diff --git a/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy b/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy
new file mode 100644
index 00000000000..311192fb7f8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy
@@ -0,0 +1,29 @@
+import graph;
+import palette;
+import contour;
+
+size(12cm,IgnoreAspect);
+
+pair a=(pi/2,0);
+pair b=(3pi/2,2pi);
+
+real f(real x, real y) {return cos(x)*sin(y);}
+
+int N=100;
+int Divs=10;
+
+defaultpen(1bp);
+
+bounds range=bounds(-1,1);
+
+real[] Cvals=uniform(range.min,range.max,Divs);
+guide[][] g=contour(f,a,b,Cvals,N,operator --);
+
+pen[] Palette=quantize(Rainbow(),Divs);
+
+pen[][] interior=interior(g,extend(Palette,grey,black));
+fill(g,interior);
+draw(g);
+
+palette("$f(x,y)$",range,point(SE)+(0.5,0),point(NE)+(1,0),Right,Palette,
+ PaletteTicks("$%+#0.1f$",N=Divs));
diff --git a/Master/texmf-dist/doc/asymptote/examples/fin.asy b/Master/texmf-dist/doc/asymptote/examples/fin.asy
new file mode 100644
index 00000000000..8fe88f3dc0e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/fin.asy
@@ -0,0 +1,152 @@
+import three;
+import palette;
+
+int N = 26;
+real[] C = array(N,0);
+real[][] A = new real[N][N];
+for(int i = 0; i < N; ++i)
+ for(int j = 0; j < N; ++j)
+ A[i][j] = 0;
+
+real Tb = 100; // deg C
+real h = 240; // 240 W/m^2 K
+real k = 240; // W/m K
+real Tinf = 20; // deg C
+real L = 12; // cm
+real t = 2; // cm
+
+real delta = 0.01; // 1 cm = 0.01 m
+
+// (1,2)-(2,2)-(3,2)-...-(13,2)
+// | | | |
+// (1,1)-(2,1)-(3,1)-...-(13,1)
+//
+// |
+// \ /
+// V
+//
+// 13-14-15-...-24-25
+// | | | ... | |
+// 0- 1- 2-...-11-12
+
+// but, note zero-based array indexing, so counting starts at 0
+int indexof(int m, int n)
+{
+ return 13(n-1)+m-1;
+}
+
+int i = 0;
+
+// fixed temperature bottom left
+A[i][indexof(1,1)] = 1; C[i] = Tb;
+++i;
+// fixed temperature middle left
+A[i][indexof(1,2)] = 1; C[i] = Tb;
+++i;
+
+// interior nodes
+for(int m = 2; m<13; ++m)
+{
+ A[i][indexof(m,2)] = -4;
+ A[i][indexof(m-1,2)] = A[i][indexof(m+1,2)] = 1;
+ A[i][indexof(m,1)] = 2;
+ C[i] = 0;
+ ++i;
+}
+
+// convective bottom side nodes
+for(int m = 2; m<13; ++m)
+{
+ A[i][indexof(m,1)] = -(2+h*delta/k);
+ A[i][indexof(m-1,1)] = A[i][indexof(m+1,1)] = 0.5;
+ A[i][indexof(m,2)] = 1;
+ C[i] = -h*delta*Tinf/k;
+ ++i;
+}
+
+// convective bottom right corner node
+A[i][indexof(13,2)] = A[i][indexof(12,1)] = 0.5;
+A[i][indexof(13,1)] = -(1+h*delta/k);
+C[i] = -h*delta*Tinf/k;
+++i;
+
+// convective middle right side node
+A[i][indexof(13,2)] = -(2+h*delta/k);
+A[i][indexof(13,1)] = 1;
+A[i][indexof(12,2)] = 1;
+C[i] = -h*delta*Tinf/k;
+++i;
+
+real[] T = solve(A,C);
+
+pen[] Palette = Gradient(256,blue,cyan,yellow,orange,red);
+
+real[][] T = {T[0:13],T[13:26],T[0:13]};
+T = transpose(T);
+
+size3(15cm);
+real w = 10;
+real h = 5;
+currentprojection = orthographic(2*(L,h,w),Y);
+draw((L,t,0)--(L,0,0)--(L,0,w)--(0,0,w)--(0,-h,w));
+draw((0,t,w)--(0,t+h,w)--(0,t+h,0)--(0,t,0));
+draw((L,0,w)--(L,t,w)--(0,t,w)--(0,t,0)--(L,t,0)--(L,t,w));
+
+real wo2 = 0.5*w;
+draw((0,0,wo2)--(0,t,wo2)--(L,t,wo2)--(L,0,wo2)--cycle);
+
+// centre points
+surface square = surface(shift(-0.5,-0.5,wo2)*unitsquare3);
+surface bottomsquare = surface(shift(-0.5,-0.5,wo2)*scale(1,0.5,1)*unitsquare3);
+surface topsquare = surface(shift(-0.5,0,wo2)*scale(1,0.5,1)*unitsquare3);
+surface leftsquare = surface(shift(-0.5,-0.5,wo2)*scale(0.5,1,1)*unitsquare3);
+surface rightsquare = surface(shift(0,-0.5,wo2)*scale(0.5,1,1)*unitsquare3);
+surface NEcorner = surface(shift(0,0,wo2)*scale(0.5,0.5,1)*unitsquare3);
+surface SEcorner = surface(shift(0,-0.5,wo2)*scale(0.5,0.5,1)*unitsquare3);
+surface SWcorner = surface(shift(-0.5,-0.5,wo2)*scale(0.5,0.5,1)*unitsquare3);
+surface NWcorner = surface(shift(-0.5,0,wo2)*scale(0.5,0.5,1)*unitsquare3);
+
+material lookupColour(int m,int n)
+{
+ int index = round(Palette.length*(T[m-1][n-1]-60)/(100-60));
+ if(index >= Palette.length) index = Palette.length-1;
+ return emissive(Palette[index]);
+}
+
+draw(shift(0,1,0)*rightsquare,lookupColour(1,2));
+for(int i = 2; i < 13; ++i)
+{
+ draw(shift(i-1,1,0)*square,lookupColour(i,2));
+}
+draw(shift(12,1,0)*leftsquare,lookupColour(13,2));
+
+draw(shift(0,2,0)*SEcorner,lookupColour(1,3));
+draw(shift(0,0,0)*NEcorner,lookupColour(1,1));
+for(int i = 2; i < 13; ++i)
+{
+ draw(shift(i-1,0,0)*topsquare,lookupColour(i,1));
+ draw(shift(i-1,2,0)*bottomsquare,lookupColour(i,3));
+}
+draw(shift(12,2,0)*SWcorner,lookupColour(13,3));
+draw(shift(12,0,0)*NWcorner,lookupColour(13,1));
+
+// annotations
+draw("$x$",(0,-h/2,w)--(L/4,-h/2,w),Y,Arrow3(HookHead2(normal=Z)),BeginBar3(Y));
+draw("$y$",(0,0,1.05*w)--(0,2t,1.05*w),Z,Arrow3(HookHead2(normal=X)),
+ BeginBar3(Z));
+draw("$z$",(L,-h/2,0)--(L,-h/2,w/4),Y,Arrow3(HookHead2(normal=X)),BeginBar3(Y));
+
+draw("$L$",(0,-h/4,w)--(L,-h/4,w),-Y,Arrows3(HookHead2(normal=Z)),
+ Bars3(Y),PenMargins2);
+draw("$w$",(L,-h/4,0)--(L,-h/4,w),-Y,Arrows3(HookHead2(normal=X)),
+ Bars3(Y),PenMargins2);
+draw("$t$",(1.05*L,0,0)--(1.05*L,t,0),-2Z,Arrows3(HookHead2(normal=Z)),
+ Bars3(X),PenMargins2);
+
+label(ZY()*"$T_b$",(0,t+h/2,wo2));
+
+label("$h$,$T_\infty$",(L/2,t+h/2,0),Y);
+path3 air = (L/2,t+h/3,w/3.5)--(1.5*L/2,t+2*h/3,w/8);
+draw(air,EndArrow3(TeXHead2));
+draw(shift(0.5,0,0)*air,EndArrow3(TeXHead2));
+draw(shift(1.0,0,0)*air,EndArrow3(TeXHead2));
diff --git a/Master/texmf-dist/doc/asymptote/examples/fjortoft.asy b/Master/texmf-dist/doc/asymptote/examples/fjortoft.asy
new file mode 100644
index 00000000000..0ef81ca2c09
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/fjortoft.asy
@@ -0,0 +1,27 @@
+size(15cm,0);
+
+pair d=(1.5,1);
+real s=d.x+1;
+
+picture box(string s) {
+ picture pic;
+ draw(pic,box(0,d));
+ label(pic,s,d/2);
+ return pic;
+}
+
+add(box("$k_1$"));
+add(shift(s)*box("$k_2$"));
+add(shift(s)^2*box("$k_3$"));
+
+path g=(d.x,d.y/2)--(s,d.y/2);
+path G=(d.x/2,-(s-d.x))--(d.x/2,0);
+
+draw(Label(baseline("$\ldots$")),shift(-s)*g,BeginArrow,BeginPenMargin);
+draw(Label("$Z_1$"),g,BeginArrow,BeginPenMargin);
+draw(Label("$E_1$",LeftSide),g,Blank);
+draw(Label("$Z_3$"),shift(s)*g,Arrow,PenMargin);
+draw(Label("$E_3$",LeftSide),shift(s)*g,Blank);
+draw(Label("$Z_2$"),shift(s)*G,Arrow,PenMargin);
+draw(Label("$E_2$",LeftSide),shift(s)*G,Blank);
+draw(Label(baseline("$\ldots$")),shift(s)^2*g,Arrow,PenMargin);
diff --git a/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy b/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy
new file mode 100644
index 00000000000..be8b339767d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy
@@ -0,0 +1,26 @@
+import trembling;
+settings.outformat="pdf";
+size(6cm,0);
+
+real R=1/5;
+real h=0.5;
+real d=1/12;
+real l=.7;
+
+pair pA=(-l,0);
+pair pB=(l,0);
+
+tremble tr=tremble(angle=10,frequency=0.1,random=50,fuzz=1);
+path waterline=tr.deform(pA..pB);
+
+path disk=shift(0,-d)*scale(R)*unitcircle;
+path water=waterline--(l,-h)--(-l,-h)--(-l,0)--cycle;
+path container=(l,1/7)--(l,-h)--(-l,-h)--(-l,1/7);
+
+filldraw(disk,red,linewidth(.3));
+fill(water,mediumgrey+opacity(0.5));
+draw(waterline);
+
+draw(container,linewidth(1.5));
+
+shipout(bbox(2mm));
diff --git a/Master/texmf-dist/doc/asymptote/examples/floor.asy b/Master/texmf-dist/doc/asymptote/examples/floor.asy
new file mode 100644
index 00000000000..02c2446abe8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/floor.asy
@@ -0,0 +1,28 @@
+import graph;
+unitsize(1cm);
+
+real Floor(real x) {return floor(x);}
+
+pair[] Close;
+pair[] Open;
+
+bool3 branch(real x) {
+ static real lasty;
+ static bool first=true;
+ real y=floor(x);
+ bool samebranch=first || lasty == y;
+ first=false;
+ if(samebranch) lasty=x;
+ else {
+ Close.push((x,lasty));
+ Open.push((x,y));
+ }
+ lasty=y;
+ return samebranch ? true : default;
+};
+
+draw(graph(Floor,-5.5,5.5,500,branch));
+axes("$x$",rotate(0)*"$\lfloor x\rfloor$",red);
+
+dot(Close);
+dot(Open,UnFill);
diff --git a/Master/texmf-dist/doc/asymptote/examples/flow.asy b/Master/texmf-dist/doc/asymptote/examples/flow.asy
new file mode 100644
index 00000000000..aba6c5aa055
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/flow.asy
@@ -0,0 +1,31 @@
+import graph;
+defaultpen(1.0);
+
+size(0,150,IgnoreAspect);
+
+real arrowsize=4mm;
+real arrowlength=2arrowsize;
+
+typedef path vector(real);
+
+// Return a vector interpolated linearly between a and b.
+vector vector(pair a, pair b) {
+ return new path(real x) {
+ return (0,0)--arrowlength*interp(a,b,x);
+ };
+}
+
+real f(real x) {return 1/x;}
+
+real epsilon=0.5;
+path g=graph(f,epsilon,1/epsilon);
+
+int n=3;
+draw(g);
+xaxis("$x$");
+yaxis("$y$");
+
+add(vectorfield(vector(W,W),g,n,true));
+add(vectorfield(vector(NE,NW),(0,0)--(point(E).x,0),n,true));
+add(vectorfield(vector(NE,NE),(0,0)--(0,point(N).y),n,true));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy b/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy
new file mode 100644
index 00000000000..796e357a5ff
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy
@@ -0,0 +1,27 @@
+size(0,300);
+
+import flowchart;
+
+block block1=rectangle(Label("Example",magenta),
+ pack(Label("Start:",heavygreen),"",Label("$A:=0$",blue),
+ "$B:=1$"),(-0.5,3),palegreen,paleblue,red);
+block block2=diamond(Label("Choice?",blue),(0,2),palegreen,red);
+block block3=roundrectangle("Do something",(-1,1));
+block block4=bevel("Don't do something",(1,1));
+block block5=circle("End",(0,0));
+
+draw(block1);
+draw(block2);
+draw(block3);
+draw(block4);
+draw(block5);
+
+add(new void(picture pic, transform t) {
+ blockconnector operator --=blockconnector(pic,t);
+ // draw(pic,block1.right(t)--block2.top(t));
+ block1--Right--Down--Arrow--block2;
+ block2--Label("Yes",0.5,NW)--Left--Down--Arrow--block3;
+ block2--Right--Label("No",0.5,NE)--Down--Arrow--block4;
+ block4--Down--Left--Arrow--block5;
+ block3--Down--Right--Arrow--block5;
+ });
diff --git a/Master/texmf-dist/doc/asymptote/examples/fractaltree.asy b/Master/texmf-dist/doc/asymptote/examples/fractaltree.asy
new file mode 100644
index 00000000000..c9775ec69d7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/fractaltree.asy
@@ -0,0 +1,27 @@
+size(200);
+
+path ltrans(path p,int d)
+{
+ path a=rotate(65)*scale(0.4)*p;
+ return shift(point(p,(1/d)*length(p))-point(a,0))*a;
+}
+path rtrans(path p, int d)
+{
+ path a=reflect(point(p,0),point(p,length(p)))*rotate(65)*scale(0.35)*p;
+ return shift(point(p,(1/d)*length(p))-point(a,0))*a;
+}
+
+void drawtree(int depth, path branch)
+{
+ if(depth == 0) return;
+ real breakp=(1/depth)*length(branch);
+ draw(subpath(branch,0,breakp),deepgreen);
+ drawtree(depth-1,subpath(branch,breakp,length(branch)));
+ drawtree(depth-1,ltrans(branch,depth));
+ drawtree(depth-1,rtrans(branch,depth));
+ return;
+}
+
+path start=(0,0)..controls (-1/10,1/3) and (-1/20,2/3)..(1/20,1);
+drawtree(6,start);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/functionshading.asy b/Master/texmf-dist/doc/asymptote/examples/functionshading.asy
new file mode 100644
index 00000000000..7cdeb6f4bf4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/functionshading.asy
@@ -0,0 +1,31 @@
+size(200);
+
+settings.tex="pdflatex";
+
+// PostScript Calculator routine to convert from [0,1]x[0,1] to RG:
+string redgreen="0";
+
+// PostScript Calculator routine to convert from [0,1]x[0,1] to HS to RGB:
+// (http://www.texample.net/tikz/examples/hsv-shading):
+string hsv="0.5 sub exch 0.5 sub exch
+2 copy 2 copy 0 eq exch 0 eq and { pop pop 0.0 } {atan 360.0 div}
+ifelse dup 360 eq { pop 0.0 }{} ifelse 3 1 roll dup mul exch dup mul add
+sqrt 2.5 mul 0.25 sub 1 1 index 1.0
+eq { 3 1 roll pop pop dup dup } { 3 -1 roll 6.0 mul dup 4 1 roll floor dup
+5 1 roll 3 index sub neg 1.0 3 index sub 2 index mul 6 1 roll dup 3 index
+mul neg 1.0 add 2 index mul 7 1 roll neg 1.0 add 2 index mul neg 1.0 add 1
+index mul 7 2 roll pop pop dup 0 eq { pop exch pop } { dup 1 eq { pop exch
+4 1 roll exch pop } { dup 2 eq { pop 4 1 roll pop } { dup 3 eq { pop exch 4
+2 roll pop } { dup 4 eq { pop exch pop 3 -1 roll } { pop 3 1 roll exch pop
+} ifelse } ifelse } ifelse } ifelse } ifelse } ifelse cvr 3 1 roll cvr 3 1
+roll cvr 3 1 roll";
+
+path p=unitcircle;
+functionshade(p,rgb(zerowinding),redgreen);
+layer();
+draw(p);
+
+path g=shift(2*dir(-45))*p;
+functionshade(g,rgb(zerowinding),hsv);
+layer();
+draw(g);
diff --git a/Master/texmf-dist/doc/asymptote/examples/galleon.asy b/Master/texmf-dist/doc/asymptote/examples/galleon.asy
new file mode 100644
index 00000000000..1221fd5c862
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/galleon.asy
@@ -0,0 +1,14 @@
+import obj;
+
+size(15cm);
+currentprojection=orthographic(0,2,5,up=Y);
+
+// A compressed version of the required data file may be obtained from:
+// http://www.cs.technion.ac.il/~irit/data/Viewpoint/galleon.obj.gz
+
+pen[] surfacepen={darkred,brown,darkred+orange,heavyred,heavyred,darkred+orange,
+ palegreen+blue+lightgrey,darkred,darkred,yellow,darkred,white,
+ white,white,white,white,white};
+surfacepen.cyclic=true;
+
+draw(obj("galleon.obj",verbose=false,surfacepen));
diff --git a/Master/texmf-dist/doc/asymptote/examples/gamma.asy b/Master/texmf-dist/doc/asymptote/examples/gamma.asy
new file mode 100644
index 00000000000..f92dd775abb
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/gamma.asy
@@ -0,0 +1,24 @@
+import graph;
+size(300,IgnoreAspect);
+
+bool3 branch(real x)
+{
+ static int lastsign=0;
+ if(x <= 0 && x == floor(x)) return false;
+ int sign=sgn(gamma(x));
+ bool b=lastsign == 0 || sign == lastsign;
+ lastsign=sign;
+ return b ? true : default;
+}
+
+draw(graph(gamma,-4,4,n=2000,branch),red);
+
+scale(false);
+xlimits(-4,4);
+ylimits(-6,6);
+crop();
+
+xaxis("$x$",RightTicks(NoZero));
+yaxis(LeftTicks(NoZero));
+
+label("$\Gamma(x)$",(1,2),red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/gamma3.asy b/Master/texmf-dist/doc/asymptote/examples/gamma3.asy
new file mode 100644
index 00000000000..e522dad4e70
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/gamma3.asy
@@ -0,0 +1,33 @@
+import graph3;
+import palette;
+
+size(12cm,IgnoreAspect);
+currentprojection=orthographic(1,-2,1);
+
+real X=4.5;
+real M=abs(gamma((X,0)));
+
+pair Gamma(pair z)
+{
+ return (z.x > 0 || z != floor(z.x)) ? gamma(z) : M;
+}
+
+real f(pair z) {return min(abs(Gamma(z)),M);}
+
+surface s=surface(f,(-2.1,-2),(X,2),70,Spline);
+
+real Arg(triple v)
+{
+ return degrees(Gamma((v.x,v.y)),warn=false);
+}
+
+s.colors(palette(s.map(Arg),Wheel()));
+draw(s,render(compression=Low,merge=true));
+
+real xmin=point((-1,-1,-1)).x;
+real xmax=point((1,1,1)).x;
+draw((xmin,0,0)--(xmax,0,0),dashed);
+
+xaxis3("$\mathop{\rm Re} z$",Bounds,InTicks);
+yaxis3("$\mathop{\rm Im} z$",Bounds,InTicks(beginlabel=false));
+zaxis3("$|\Gamma(z)|$",Bounds,InTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/generalaxis.asy b/Master/texmf-dist/doc/asymptote/examples/generalaxis.asy
new file mode 100644
index 00000000000..dfe1000838e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/generalaxis.asy
@@ -0,0 +1,11 @@
+import graph;
+size(0,100);
+
+path g=ellipse((0,0),1,2);
+
+scale(true);
+
+axis(Label("C",align=10W),g,LeftTicks(endlabel=false,8,end=false),
+ ticklocate(0,360,new real(real v) {
+ path h=(0,0)--max(abs(max(g)),abs(min(g)))*dir(v);
+ return intersect(g,h)[0];}));
diff --git a/Master/texmf-dist/doc/asymptote/examples/generalaxis3.asy b/Master/texmf-dist/doc/asymptote/examples/generalaxis3.asy
new file mode 100644
index 00000000000..68a01c8ce28
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/generalaxis3.asy
@@ -0,0 +1,13 @@
+import graph3;
+
+size(0,100);
+
+path3 g=yscale3(2)*unitcircle3;
+currentprojection=perspective(10,10,10);
+
+axis(Label("C",position=0,align=15X),g,InTicks(endlabel=false,8,end=false),
+ ticklocate(0,360,new real(real v) {
+ path3 h=O--max(abs(max(g)),abs(min(g)))*dir(90,v);
+ return intersect(g,h)[0];},
+ new triple(real t) {return cross(dir(g,t),Z);}));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/graphmarkers.asy b/Master/texmf-dist/doc/asymptote/examples/graphmarkers.asy
new file mode 100644
index 00000000000..f40f00d9ff6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/graphmarkers.asy
@@ -0,0 +1,37 @@
+import graph;
+
+size(200,100,IgnoreAspect);
+
+markroutine marks() {
+ return new void(picture pic=currentpicture, frame f, path g) {
+ path p=scale(1mm)*unitcircle;
+ for(int i=0; i <= length(g); ++i) {
+ pair z=point(g,i);
+ frame f;
+ if(i % 4 == 0) {
+ fill(f,p);
+ add(pic,f,z);
+ } else {
+ if(z.y > 50) {
+ pic.add(new void(frame F, transform t) {
+ path q=shift(t*z)*p;
+ unfill(F,q);
+ draw(F,q);
+ });
+ } else {
+ draw(f,p);
+ add(pic,f,z);
+ }
+ }
+ }
+ };
+}
+
+pair[] f={(5,5),(40,20),(55,51),(90,30)};
+
+draw(graph(f),marker(marks()));
+
+scale(true);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/grid.asy b/Master/texmf-dist/doc/asymptote/examples/grid.asy
new file mode 100644
index 00000000000..a607ac78e28
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/grid.asy
@@ -0,0 +1,7 @@
+import math;
+size(100,0);
+
+add(shift(-5,-5)*grid(10,10));
+
+dot((0,0),red);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/grid3xyz.asy b/Master/texmf-dist/doc/asymptote/examples/grid3xyz.asy
new file mode 100644
index 00000000000..888b9202eee
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/grid3xyz.asy
@@ -0,0 +1,17 @@
+import grid3;
+
+size(8cm,0,IgnoreAspect);
+currentprojection=orthographic(0.5,1,0.5);
+
+scale(Linear, Linear, Log);
+
+limits((-2,-2,1),(0,2,100));
+
+grid3(XYZgrid);
+
+xaxis3(Label("$x$",position=EndPoint,align=S),Bounds(Min,Min),
+ OutTicks());
+yaxis3(Label("$y$",position=EndPoint,align=S),Bounds(Min,Min),OutTicks());
+zaxis3(Label("$z$",position=EndPoint,align=(-1,0.5)),Bounds(Min,Min),
+ OutTicks(beginlabel=false));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/hatch.asy b/Master/texmf-dist/doc/asymptote/examples/hatch.asy
new file mode 100644
index 00000000000..126b5bec13a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/hatch.asy
@@ -0,0 +1,11 @@
+size(0,100);
+import patterns;
+
+add("hatch",hatch());
+add("hatchback",hatch(NW));
+add("crosshatch",crosshatch(3mm));
+
+real s=1.25;
+filldraw(unitsquare,pattern("hatch"));
+filldraw(shift(s,0)*unitsquare,pattern("hatchback"));
+filldraw(shift(2s,0)*unitsquare,pattern("crosshatch"));
diff --git a/Master/texmf-dist/doc/asymptote/examples/helix.asy b/Master/texmf-dist/doc/asymptote/examples/helix.asy
new file mode 100644
index 00000000000..0925e0821b1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/helix.asy
@@ -0,0 +1,20 @@
+import graph3;
+
+size(0,200);
+size3(200,IgnoreAspect);
+
+currentprojection=orthographic(4,6,3);
+
+real x(real t) {return cos(2pi*t);}
+real y(real t) {return sin(2pi*t);}
+real z(real t) {return t;}
+
+path3 p=graph(x,y,z,0,2.7,operator ..);
+
+draw(p,Arrow3);
+
+scale(true);
+
+xaxis3(XZ()*"$x$",Bounds,red,InTicks(Label,2,2));
+yaxis3(YZ()*"$y$",Bounds,red,InTicks(beginlabel=false,Label,2,2));
+zaxis3(XZ()*"$z$",Bounds,red,InTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/hierarchy.asy b/Master/texmf-dist/doc/asymptote/examples/hierarchy.asy
new file mode 100644
index 00000000000..fdb833e652a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/hierarchy.asy
@@ -0,0 +1,9 @@
+texpreamble("\def\Ham{\mathop {\rm Ham}\nolimits}");
+pair align=2N;
+frame f;
+ellipse(f,Label("$\Ham(r,2)$",(0,0)),lightblue,Fill,above=false);
+ellipse(f,Label("BCH Codes",point(f,N),align),green,Fill,above=false);
+ellipse(f,Label("Cyclic Codes",point(f,N),align),lightmagenta,Fill,above=false);
+ellipse(f,Label("Linear Codes",point(f,N),align),-4mm,orange,Fill,above=false);
+box(f,Label("General Codes",point(f,N),align),2mm,yellow,Fill,above=false);
+add(f);
diff --git a/Master/texmf-dist/doc/asymptote/examples/histogram.asy b/Master/texmf-dist/doc/asymptote/examples/histogram.asy
new file mode 100644
index 00000000000..ec00d6638d1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/histogram.asy
@@ -0,0 +1,19 @@
+import graph;
+import stats;
+
+size(400,200,IgnoreAspect);
+
+int n=10000;
+real[] a=new real[n];
+for(int i=0; i < n; ++i) a[i]=Gaussrand();
+
+draw(graph(Gaussian,min(a),max(a)),blue);
+
+// Optionally calculate "optimal" number of bins a la Shimazaki and Shinomoto.
+int N=bins(a);
+
+histogram(a,min(a),max(a),N,normalize=true,low=0,lightred,black,bars=false);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$dP/dx$",LeftRight,RightTicks(trailingzero));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/hyperboloid.asy b/Master/texmf-dist/doc/asymptote/examples/hyperboloid.asy
new file mode 100644
index 00000000000..22f3b3d80b0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/hyperboloid.asy
@@ -0,0 +1,8 @@
+size(200);
+import solids;
+
+currentprojection=perspective(4,4,3);
+revolution hyperboloid=revolution(graph(new triple(real z) {
+ return (sqrt(1+z*z),0,z);},-2,2,20,operator ..),axis=Z);
+draw(surface(hyperboloid),green,render(compression=Low,merge=true));
+draw(hyperboloid,6,blue,longitudinalpen=nullpen);
diff --git a/Master/texmf-dist/doc/asymptote/examples/hyperboloidsilhouette.asy b/Master/texmf-dist/doc/asymptote/examples/hyperboloidsilhouette.asy
new file mode 100644
index 00000000000..1bb265de622
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/hyperboloidsilhouette.asy
@@ -0,0 +1,9 @@
+size(200);
+import solids;
+settings.render=0;
+settings.prc=false;
+
+currentprojection=perspective(4,4,3);
+revolution hyperboloid=revolution(graph(new triple(real z) {
+ return (sqrt(1+z*z),0,z);},-2,2,20,operator ..),axis=Z);
+draw(hyperboloid.silhouette(64),blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/icon.asy b/Master/texmf-dist/doc/asymptote/examples/icon.asy
new file mode 100644
index 00000000000..1701fe0f32e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/icon.asy
@@ -0,0 +1,22 @@
+import graph;
+
+size(30,30,IgnoreAspect);
+
+real f(real t) {return t < 0 ? -1/t : -0.5/t;}
+
+picture logo(pair s=0, pen q)
+{
+ picture pic;
+ pen p=linewidth(3)+q;
+ real a=-0.5;
+ real b=1;
+ real eps=0.1;
+ draw(pic,shift((eps,-f(a)))*graph(f,a,-eps),p);
+ real c=0.5*a;
+ pair z=(0,f(c)-f(a));
+ draw(pic,z+c+eps--z,p);
+ yaxis(pic,p);
+ return shift(s)*pic;
+}
+
+add(logo(red));
diff --git a/Master/texmf-dist/doc/asymptote/examples/image.asy b/Master/texmf-dist/doc/asymptote/examples/image.asy
new file mode 100644
index 00000000000..37a2cf60172
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/image.asy
@@ -0,0 +1,21 @@
+size(12cm,12cm);
+
+import graph;
+import palette;
+
+int n=256;
+real ninv=2pi/n;
+real[][] v=new real[n][n];
+
+for(int i=0; i < n; ++i)
+ for(int j=0; j < n; ++j)
+ v[i][j]=sin(i*ninv)*cos(j*ninv);
+
+pen[] Palette=BWRainbow();
+
+picture bar;
+
+bounds range=image(v,(0,0),(1,1),Palette);
+palette(bar,"$A$",range,(0,0),(0.5cm,8cm),Right,Palette,
+ PaletteTicks("$%+#.1f$"));
+add(bar.fit(),point(E),30E);
diff --git a/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy b/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy
new file mode 100644
index 00000000000..6b5eb455cad
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy
@@ -0,0 +1,38 @@
+import graph;
+import palette;
+import contour;
+
+size(10cm,10cm,IgnoreAspect);
+
+pair a=(0,0);
+pair b=(2pi,2pi);
+
+real f(real x, real y) {return cos(x)*sin(y);}
+
+int N=200;
+int Divs=10;
+int divs=2;
+
+defaultpen(1bp);
+pen Tickpen=black;
+pen tickpen=gray+0.5*linewidth(currentpen);
+pen[] Palette=BWRainbow();
+
+bounds range=image(f,Automatic,a,b,N,Palette);
+
+// Major contours
+
+real[] Cvals=uniform(range.min,range.max,Divs);
+draw(contour(f,a,b,Cvals,N,operator --),Tickpen);
+
+// Minor contours
+real[] cvals;
+for(int i=0; i < Cvals.length-1; ++i)
+ cvals.append(uniform(Cvals[i],Cvals[i+1],divs)[1:divs]);
+draw(contour(f,a,b,cvals,N,operator --),tickpen);
+
+xaxis("$x$",BottomTop,LeftTicks,above=true);
+yaxis("$y$",LeftRight,RightTicks,above=true);
+
+palette("$f(x,y)$",range,point(NW)+(0,0.5),point(NE)+(0,1),Top,Palette,
+ PaletteTicks(N=Divs,n=divs,Tickpen,tickpen));
diff --git a/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy b/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy
new file mode 100644
index 00000000000..d3bdc783757
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy
@@ -0,0 +1,47 @@
+import stats;
+import graph;
+import palette;
+import contour;
+
+size(20cm);
+
+scale(false);
+
+pair[] data=new pair[50000];
+for(int i=0; i < data.length; ++i)
+ data[i]=Gaussrandpair();
+
+// Histogram limits and number of bins
+pair datamin=(-0.15,-0.15);
+pair datamax=(0.15,0.15);
+int Nx=30;
+int Ny=30;
+
+int[][] bins=frequency(data,datamin,datamax,Nx,Ny);
+
+real[] values=new real[Nx*Ny];
+pair[] points=new pair[Nx*Ny];
+int k=0;
+real dx=(datamax.x-datamin.x)/Nx;
+real dy=(datamax.y-datamin.y)/Ny;
+for(int i=0; i < Nx; ++i) {
+ for(int j=0; j < Ny; ++j) {
+ values[k]=bins[i][j];
+ points[k]=(datamin.x+(i+0.5)*dx,datamin.y+(j+0.5)*dy);
+ ++k;
+ }
+}
+
+// Create a color palette
+pen[] InvGrayscale(int NColors=256) {
+ real ninv=1.0/(NColors-1.0);
+ return sequence(new pen(int i) {return gray(1-17*i*ninv);},NColors);
+}
+
+// Draw the histogram, with axes
+bounds range=image(points,values,Range(0,40),InvGrayscale());
+draw(contour(points,values,new real[] {1,2,3,4,8,12,16,20,24,28,32,36,40},
+ operator--),blue);
+xaxis("$x$",BottomTop,LeftTicks,above=true);
+yaxis("$y$",LeftRight,RightTicks,above=true);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/impact.asy b/Master/texmf-dist/doc/asymptote/examples/impact.asy
new file mode 100644
index 00000000000..d9039697779
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/impact.asy
@@ -0,0 +1,29 @@
+// Contributed by Philippe Ivaldi.
+// http://www.piprime.fr/
+
+import graph3 ;
+import contour;
+size (6cm,0);
+currentprojection=orthographic(1,1,1) ;
+
+real rc=1, hc=2, c=rc/hc;
+draw(shift(hc*Z)*scale(rc,rc,-hc)*unitcone,blue);
+
+triple Os=(0.5,0.5,1);
+real r=0.5;
+draw(shift(Os)*scale3(r)*unitsphere,red);
+
+real a=1+1/c^2;
+real b=abs(Os)^2-r^2;
+
+real f(pair z)
+{
+ real x=z.x, y=z.y;
+ return a*x^2-2*Os.x*x+a*y^2-2*Os.y*y-2*Os.z*sqrt(x^2+y^2)/c+b;
+}
+
+real g(pair z){return (sqrt(z.x^2+z.y^2))/c;}
+
+draw(lift(g,contour(f,(-rc,-rc),(rc,rc),new real[]{0})),linewidth(2bp)+yellow);
+
+axes3("$x$","$y$","$z$",Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/integraltest.asy b/Master/texmf-dist/doc/asymptote/examples/integraltest.asy
new file mode 100644
index 00000000000..c45b1eb8f17
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/integraltest.asy
@@ -0,0 +1,38 @@
+import graph;
+size(300,150,IgnoreAspect);
+
+real f(real x) {return 1/x^(1.1);}
+pair F(real x) {return (x,f(x));}
+
+dotfactor=7;
+
+void subinterval(real a, real b)
+{
+ path g=box((a,0),(b,f(b)));
+ filldraw(g,lightgray);
+ draw(box((a,f(a)),(b,0)));
+}
+
+int a=1, b=9;
+
+xaxis("$x$",0,b);
+yaxis("$y$",0);
+
+draw(graph(f,a,b,operator ..),red);
+
+int n=2;
+
+for(int i=a; i <= b; ++i) {
+ if(i < b) subinterval(i,i+1);
+ if(i <= n) labelx(i);
+ dot(F(i));
+}
+
+int i=n;
+labelx("$\ldots$",++i);
+labelx("$k$",++i);
+labelx("$k+1$",++i);
+labelx("$\ldots$",++i);
+
+arrow("$f(x)$",F(i-1.5),NE,1.5cm,red,Margin(0,0.5));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy b/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy
new file mode 100644
index 00000000000..8845c8dd2f8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy
@@ -0,0 +1,226 @@
+// Lagrange and Hermite interpolation in Asymptote
+// Author: Olivier Guibé
+
+import interpolate;
+import graph;
+
+// Test 1: The Runge effect in the Lagrange interpolation of 1/(x^2+1).
+
+unitsize(2cm);
+
+real f(real x) {return(1/(x^2+1));}
+real df(real x) {return(-2*x/(x^2+1)^2);}
+
+real a=-5, b=5;
+int n=15;
+real[] x,y,dy;
+x=a+(b-a)*sequence(n+1)/n;
+y=map(f,x);
+dy=map(df,x);
+for(int i=0; i <= n; ++i)
+ dot((x[i],y[i]),5bp+blue);
+horner h=diffdiv(x,y);
+fhorner p=fhorner(h);
+draw(graph(p,a,b,n=500),"$x\longmapsto{}L_{"+string(n)+"}$");
+draw(graph(f,a,b),red,"$x\longmapsto{}\frac{1}{x^2+1}$");
+
+xlimits(-5,5);
+ylimits(-1,1,Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
+attach(legend(),point(10S),30S);
+
+shipout("runge1");
+
+erase();
+
+// Test 2: The Runge effect in the Hermite interpolation of 1/(x^2+1).
+
+real f(real x) {return(1/(x^2+1));}
+real df(real x) {return(-2*x/(x^2+1)^2);}
+
+real a=-5, b=5;
+int n=16;
+real[] x,y,dy;
+x=a+(b-a)*sequence(n+1)/n;
+y=map(f,x);
+dy=map(df,x);
+for(int i=0; i <= n; ++i)
+ dot((x[i],y[i]),5bp+blue);
+horner h=hdiffdiv(x,y,dy);
+fhorner ph=fhorner(h);
+draw(graph(p,a,b,n=500),"$x\longmapsto{}H_{"+string(n)+"}$");
+draw(graph(f,a,b),red,"$x\longmapsto{}\frac{1}{x^2+1}$");
+
+unitsize(2cm);
+
+xlimits(-5,5);
+ylimits(-1,5,Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
+attach(legend(),point(10S),30S);
+
+shipout("runge2");
+
+erase();
+
+// Test 3: The Runge effect does not occur for all functions:
+// Lagrange interpolation of a function whose successive derivatives
+// are bounded by a constant M (here M=1) is shown here to converge.
+
+real f(real x) {return(sin(x));}
+real df(real x) {return(cos(x));}
+
+real a=-5, b=5;
+int n=16;
+real[] x,y,dy;
+x=a+(b-a)*sequence(n+1)/n;
+y=map(f,x);
+dy=map(df,x);
+for(int i=0; i <= n; ++i)
+ dot((x[i],y[i]),5bp+blue);
+horner h=diffdiv(x,y);
+fhorner p=fhorner(h);
+
+draw(graph(p,a,b,n=500),"$x\longmapsto{}L_{"+string(n)+"}$");
+draw(graph(f,a,b),red,"$x\longmapsto{}\cos(x)$");
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
+attach(legend(),point(10S),30S);
+
+shipout("runge3");
+
+erase();
+
+// Test 4: However, one notes here that numerical artifacts may arise
+// from limit precision (typically 1e-16).
+
+real f(real x) {return(sin(x));}
+real df(real x) {return(cos(x));}
+
+real a=-5, b=5;
+int n=72;
+real[] x,y,dy;
+x=a+(b-a)*sequence(n+1)/n;
+y=map(f,x);
+dy=map(df,x);
+for(int i=0; i <= n; ++i)
+ dot((x[i],y[i]),5bp+blue);
+horner h=diffdiv(x,y);
+fhorner p=fhorner(h);
+
+draw(graph(p,a,b,n=500),"$x\longmapsto{}L_{"+string(n)+"}$");
+draw(graph(f,a,b),red,"$x\longmapsto{}\cos(x)$");
+
+ylimits(-1,5,Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
+attach(legend(),point(10S),30S);
+
+shipout("runge4");
+
+erase();
+
+// Test 5: The situation is much better using Tchebychev points.
+
+unitsize(2cm);
+
+real f(real x) {return(1/(x^2+1));}
+real df(real x) {return(-2*x/(x^2+1)^2);}
+
+real a=-5, b=5;
+int n=16;
+real[] x,y,dy;
+fhorner p,ph,ph1;
+for(int i=0; i <= n; ++i)
+ x[i]=(a+b)/2+(b-a)/2*cos((2*i+1)/(2*n+2)*pi);
+y=map(f,x);
+dy=map(df,x);
+for(int i=0; i <= n; ++i)
+ dot((x[i],y[i]),5bp+blue);
+horner h=diffdiv(x,y);
+fhorner p=fhorner(h);
+
+draw(graph(p,a,b,n=500),"$x\longmapsto{}T_{"+string(n)+"}$");
+draw(graph(f,a,b),red,"$x\longmapsto{}\frac{1}{x^2+1}$");
+
+xlimits(-5,5);
+ylimits(-1,2,Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+attach(legend(),point(10S),30S);
+
+shipout("runge5");
+
+erase();
+
+// Test 6: Adding a few more Tchebychev points yields a very good result.
+
+unitsize(2cm);
+
+real f(real x) {return(1/(x^2+1));}
+real df(real x) {return(-2*x/(x^2+1)^2);}
+
+real a=-5, b=5;
+int n=26;
+real[] x,y,dy;
+for(int i=0; i <= n; ++i)
+ x[i]=(a+b)/2+(b-a)/2*cos((2*i+1)/(2*n+2)*pi);
+y=map(f,x);
+dy=map(df,x);
+for(int i=0; i <= n; ++i)
+ dot((x[i],y[i]),5bp+blue);
+horner h=diffdiv(x,y);
+fhorner p=fhorner(h);
+draw(graph(p,a,b,n=500),"$x\longmapsto{}T_{"+string(n)+"}$");
+draw(graph(f,a,b),red,"$x\longmapsto{}\frac{1}{x^2+1}$");
+
+xlimits(-5,5);
+ylimits(-1,2,Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+attach(legend(),point(10S),30S);
+
+
+shipout("runge6");
+
+erase();
+
+// Test 7: Another Tchebychev example.
+
+unitsize(2cm);
+
+real f(real x) {return(sqrt(abs(x-1)));}
+
+real a=-2, b=2;
+int n=30;
+real[] x,y,dy;
+for(int i=0; i <= n; ++i)
+ x[i]=(a+b)/2+(b-a)/2*cos((2*i+1)/(2*n+2)*pi);
+y=map(f,x);
+dy=map(df,x);
+for(int i=0; i <= n; ++i)
+ dot((x[i],y[i]),5bp+blue);
+horner h=diffdiv(x,y);
+fhorner p=fhorner(h);
+draw(graph(p,a,b,n=500),"$x\longmapsto{}T_{"+string(n)+"}$");
+draw(graph(f,a,b),red,"$x\longmapsto{}\sqrt{|x-1|}$");
+
+xlimits(-2,2);
+ylimits(-0.5,2,Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+attach(legend(),point(10S),30S);
+
+shipout("runge7");
diff --git a/Master/texmf-dist/doc/asymptote/examples/intro.asy b/Master/texmf-dist/doc/asymptote/examples/intro.asy
new file mode 100644
index 00000000000..fcafefb32a6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/intro.asy
@@ -0,0 +1,958 @@
+orientation=Landscape;
+
+settings.tex="pdflatex";
+
+import slide;
+import three;
+import animate;
+
+bool long=true;
+
+usepackage("mflogo");
+
+usersetting();
+
+viewportsize=pagewidth-2pagemargin;
+
+// To generate bibliographic references:
+// asy -k goysr
+// bibtex goysr_
+bibliographystyle("alpha");
+
+itempen=fontsize(22pt);
+defaultpen(itempen);
+viewportmargin=(2,2);
+
+titlepage(long ? "Asymptote: The Vector Graphics Language" :
+ "Interactive TeX-Aware 3D Vector Graphics",
+ "John Bowman and Andy Hammerlindl",
+"Department of Mathematical and Statistical Sciences\\
+ University of Alberta\\
+%and Instituto Nacional de Matem\'atica Pura e Aplicada (IMPA)
+\medskip\Green{Collaborators: Orest Shardt, Michail Vidiassov}",
+"June 30, 2010",
+"http://asymptote.sf.net/intro.pdf");
+
+title("History");
+item("1979: \TeX\ and \MF\ (Knuth)");
+item("1986: 2D B\'ezier control point selection (Hobby)");
+item("1989: MetaPost (Hobby)");
+item("2004: Asymptote");
+subitem("2004: initial public release (Hammerlindl, Bowman, \& Prince)");
+subitem("2005: 3D B\'ezier control point selection (Bowman)");
+subitem("2008: 3D interactive \TeX\ within PDF files (Shardt \& Bowman)");
+subitem("2009: 3D billboard labels that always face camera (Bowman)");
+subitem("2010: 3D PDF enhancements (Vidiassov \& Bowman)");
+
+title("Statistics (as of June, 2010)");
+item("Runs under Linux/UNIX, Mac OS X, Microsoft Windows.");
+item("4000 downloads/month from primary\hfill\\
+ {\tt asymptote.sourceforge.net} site alone.");
+item("80\ 000 lines of low-level C++ code.");
+item("36\ 000 lines of high-level Asymptote code.");
+
+if(long) {
+title("Vector Graphics");
+item("Raster graphics assign colors to a grid of pixels.");
+figure("pixel.pdf");
+item("Vector graphics are graphics which still maintain their look when
+ inspected at arbitrarily small scales.");
+asyfigure(asywrite("
+picture pic;
+
+path zoombox(real h) {
+ return box((-h,-h/2),(min(10,h),min(10,h)/2));
+}
+
+frame zoom(real h, real next=0) {
+ frame f;
+ draw(f, (0,-100){W}..{E}(0,0), Arrow);
+ clip(f, zoombox(h));
+ if(next > 0)
+ draw(f, zoombox(next));
+
+ return scale(100/h)*f;
+}
+
+add(zoom(100), (0,0));
+add(zoom(10), (200,0));
+add(zoom(1), (400,0));
+"));
+}
+
+title("Cartesian Coordinates");
+
+item("Asymptote's graphical capabilities are based on four primitive
+ commands: {\tt draw}, {\tt label}, {\tt fill}, {\tt clip} \cite{Bowman08}");
+
+asyfilecode("diagonal");
+item("units are {\tt PostScript} {\it big points\/} (1 {\tt bp} =
+1/72 {\tt inch})");
+item("{\tt --} means join the points with a linear segment to create
+a {\it path}");
+
+item("{\it cyclic\/} path:");
+
+asycode("
+draw((0,0)--(100,0)--(100,100)--(0,100)--cycle);
+");
+
+title("Scaling to a Given Size");
+
+item("{\tt PostScript} units are often inconvenient.");
+
+item("Instead, scale user coordinates to a specified final size:");
+
+asyfilecode("square");
+
+item("One can also specify the size in {\tt cm}:");
+
+asycode("
+size(3cm,3cm);
+draw(unitsquare);
+");
+
+title("Labels");
+
+item("Adding and aligning \LaTeX\ labels is easy:");
+
+asycode(preamble="defaultpen(fontsize("+string(fontsize(itempen))+"));",
+"size(6cm);
+draw(unitsquare);
+label(\"$A$\",(0,0),SW);
+label(\"$B$\",(1,0),SE);
+label(\"$C$\",(1,1),NE);
+label(\"$D$\",(0,1),NW);
+");
+
+title("2D B\'ezier Splines");
+
+item("Using {\tt ..} instead of {\tt --} specifies a {\it B\'ezier cubic
+spline}:");
+
+code("
+draw(z0 .. controls c0 and c1 .. z1,blue);
+");
+asyfigure(asywrite("defaultpen(fontsize("+string(fontsize(itempen))+"));
+size(0,7cm);
+pair z0=(0,0);
+pair c0=(1,1);
+pair c1=(2,1);
+pair z1=(3,0);
+draw(z0..controls c0 and c1 .. z1,blue);
+draw(z0--c0--c1--z1,dashed);
+dot(\"$z_0$\",z0,W,red);
+dot(\"$c_0$\",c0,NW,red);
+dot(\"$c_1$\",c1,NE,red);
+dot(\"$z_1$\",z1,red);
+"));
+
+equation("(1-t)^3 z_0+3t(1-t)^2 c_0+3t^2(1-t) c_1+t^3 z_1, \qquad t\in [0,1].");
+
+title("Smooth Paths");
+
+item("Asymptote can choose control points for you, using the algorithms of
+Hobby and Knuth \cite{Hobby86,Knuth86b}:");
+
+string bean="
+pair[] z={(0,0), (0,1), (2,1), (2,0), (1,0)};
+";
+
+asycode(preamble="size(130,0);",bean+"
+draw(z[0]..z[1]..z[2]..z[3]..z[4]..cycle,
+ grey+linewidth(5));
+dot(z,linewidth(7));
+");
+
+item("First, linear equations involving the curvature are solved to find the
+ direction through each knot. Then, control points along those directions
+ are chosen:");
+
+asyfigure(asywrite(preamble="size(130,0);",bean+"
+path p=z[0]..z[1]..z[2]..z[3]..z[4]..cycle;
+
+dot(z);
+draw(p,lightgrey+linewidth(5));
+dot(z);
+
+picture output;
+save();
+for(int i=0; i<length(p); ++i) {
+ pair z=point(p,i), dir=dir(p,i);
+ draw((z-0.3dir)--(z+0.3dir), Arrow);
+}
+add(output, currentpicture.fit(), (-0.5inch, 0), W);
+restore();
+
+save();
+guide g;
+for(int i=0; i<length(p); ++i) {
+ dot(precontrol(p,i));
+ dot(postcontrol(p,i));
+ g=g--precontrol(p,i)--point(p,i)--postcontrol(p,i);
+}
+draw(g--cycle,dashed);
+add(output, currentpicture.fit(), (+0.5inch, 0), E);
+restore();
+
+shipout(output);
+"));
+
+title("Filling");
+item("The {\tt fill} primitive to fill the inside of a path:");
+asycode(preamble="size(0,200);","
+path star;
+for(int i=0; i < 5; ++i)
+ star=star--dir(90+144i);
+star=star--cycle;
+
+fill(star,orange+zerowinding);
+draw(star,linewidth(3));
+
+fill(shift(2,0)*star,blue+evenodd);
+draw(shift(2,0)*star,linewidth(3));
+");
+
+title("Filling");
+item("Use a list of paths to fill a region with holes:");
+asycode(preamble="size(0,300);","
+path[] p={scale(2)*unitcircle, reverse(unitcircle)};
+fill(p,green+zerowinding);
+");
+
+title("Clipping");
+item("Pictures can be clipped to a path:");
+asycode(preamble="
+size(0,200);
+guide star;
+for(int i=0; i<5; ++i)
+ star=star--dir(90+144i);
+star=star--cycle;","
+fill(star,orange+zerowinding);
+clip(scale(0.7)*unitcircle);
+draw(scale(0.7)*unitcircle);
+");
+
+title("Affine Transforms");
+
+item("Affine transformations: shifts, rotations, reflections, and scalings
+ can be applied to pairs, paths, pens, strings, and even whole pictures:");
+
+code("
+fill(P,blue);
+fill(shift(2,0)*reflect((0,0),(0,1))*P, red);
+fill(shift(4,0)*rotate(30)*P, yellow);
+fill(shift(6,0)*yscale(0.7)*xscale(2)*P, green);
+");
+asyfigure(asywrite("
+size(500,0);
+real bw=0.15;
+real sw=0.2;
+real r=0.15;
+
+path outside=(0,0)--(0,1)--
+ (bw+sw,1)..(bw+sw+r+bw,1-(r+bw))..(bw+sw,1-2(r+bw))--
+ (bw,1-2(r+bw))--(bw,0)--cycle;
+path inside=(bw,1-bw-2r)--(bw,1-bw)--
+ (bw+sw,1-bw)..(bw+sw+r,1-bw-r)..(bw+sw,1-bw-2r)--cycle;
+//fill(new path[] {outside, reverse(inside)},yellow);
+
+path[] P={outside, reverse(inside)};
+
+fill(P,blue);
+fill(shift(2,0)*reflect((0,0),(0,1))*P, red);
+fill(shift(4,0)*rotate(30)*P, yellow);
+fill(shift(6,0)*yscale(0.7)*xscale(2)*P, green);
+"));
+
+if(long) {
+title("C++/Java-like Programming Syntax");
+
+code("// Declaration: Declare x to be real:
+real x;
+
+// Assignment: Assign x the value 1.
+x=1.0;
+
+// Conditional: Test if x equals 1 or not.
+if(x == 1.0) {
+ write(\"x equals 1.0\");
+} else {
+ write(\"x is not equal to 1.0\");
+}
+
+// Loop: iterate 10 times
+for(int i=0; i < 10; ++i) {
+ write(i);
+}");
+}
+
+title("Modules");
+
+item("There are modules for Feynman diagrams,");
+asyfigure("eetomumu","height=6cm");
+remark("data structures,");
+asyfigure(asywrite("
+import binarytree;
+
+binarytree bt=binarytree(1,2,4,nil,5,nil,nil,0,nil,nil,3,6,nil,nil,7);
+draw(bt);
+"),"height=6cm");
+newslide();
+remark("algebraic knot theory:");
+asyfigure("knots");
+equations("\Phi\Phi(x_1,x_2,x_3,x_4,x_5)
+ = &\rho_{4b}(x_1+x_4,x_2,x_3,x_5) + \rho_{4b}(x_1,x_2,x_3,x_4) \\
+ + &\rho_{4a}(x_1,x_2+x_3,x_4,x_5) - \rho_{4b}(x_1,x_2,x_3,x_4+x_5) \\
+ - &\rho_{4a}(x_1+x_2,x_3,x_4,x_5) - \rho_{4a}(x_1,x_2,x_4,x_5).");
+
+if(long) {
+title("Textbook Graph");
+asy(nativeformat(),"exp");
+filecode("exp.asy");
+label(graphic("exp."+nativeformat(),"height=10cm"),(0.5,0),
+ Fill(figureborder,figuremattpen));
+
+title("Scientific Graph");
+asyfilecode("lineargraph","height=13cm",newslide=true);
+
+title("Data Graph");
+asyfilecode("datagraph","height=13cm",newslide=true);
+
+title("Imported Data Graph");
+asyfilecode("filegraph","height=15cm",newslide=true);
+
+title("Logarithmic Graph");
+asyfilecode("loggraph","height=15cm",newslide=true);
+title("Secondary Axis");
+} else
+title("Scientific Graph");
+
+asyfigure("secondaryaxis","height=15cm");
+
+title("Images and Contours");
+asyfigure("imagecontour","height=17cm");
+
+title("Multiple Graphs");
+asyfigure("diatom","height=17cm");
+
+title("Hobby's 2D Direction Algorithm");
+item("A tridiagonal system of linear equations is solved to determine any unspecified directions $\phi_k$ and $\theta_k$ through each knot $z_k$:");
+
+equation("\frac{\theta_{k-1}-2\phi_k}{\ell_k}=
+\frac{\phi_{k+1}-2\theta_k}{\ell_{k+1}}.");
+
+asyfigure("Hobbydir","height=9cm");
+
+item("The resulting shape may be adjusted by modifying optional {\it tension\/} parameters and {\it curl\/} boundary conditions.");
+
+title("Hobby's 2D Control Point Algorithm");
+item("Having prescribed outgoing and incoming path directions $e^{i\theta}$
+at node~$z_0$ and $e^{i\phi}$ at node $z_1$ relative to the
+vector $z_1-z_0$, the control points are determined as:");
+
+equations("u&=&z_0+e^{i\theta}(z_1-z_0)f(\theta,-\phi),\nonumber\\
+v&=&z_1-e^{i\phi}(z_1-z_0)f(-\phi,\theta),");
+
+remark("where the relative distance function $f(\theta,\phi)$ is given by Hobby [1986].");
+
+asyfigure("Hobbycontrol","height=9cm");
+
+if(long) {
+title("B\'ezier Curves in 3D");
+
+item("Apply an affine transformation");
+
+equation("x'_i=A_{ij} x_j+C_i");
+
+remark("to a B\'ezier curve:");
+
+equation("\displaystyle x(t)=\sum_{k=0}^3 B_k(t) P_k, \qquad t\in [0,1].");
+
+item("The resulting curve is also a B\'ezier curve:");
+
+skip(-2);
+
+equations("x'_i(t)&=&\sum_{k=0}^3 B_k(t) A_{ij}(P_k)_j+C_i\nonumber\\
+&=&\sum_{k=0}^3 B_k(t) P'_k,");
+
+skip(-2);
+
+remark("where $P'_k$ is the transformed $k^{\rm th}$ control point, noting
+$\displaystyle\sum_{k=0}^3 B_k(t)=1.$");
+}
+
+title("3D Generalization of Direction Algorithm");
+
+item("Must reduce to 2D algorithm in planar case.");
+
+item("Determine directions by applying Hobby's algorithm in the plane containing $z_{k-1}$, $z_k$, $z_{k+1}$.");
+
+// Reformulate Hobby's equations in terms of the angle $\psi_k=$
+item("The only ambiguity that can arise is the overall sign of the angles, which relates to viewing each 2D plane from opposing normal directions.");
+
+item("A reference vector based on the mean unit normal of successive segments can be used to resolve such ambiguities \cite{Bowman07,Bowman09}");
+
+title("3D Control Point Algorithm");
+
+item("Express Hobby's algorithm in terms of the absolute directions $\omega_0$ and~$\omega_1$:");
+skip(-1);
+equation("u=z_0+\omega_0\left|z_1-z_0\right|f(\theta,-\phi),");
+equation("v=z_1-\omega_1\left|z_1-z_0\right|f(-\phi,\theta),");
+
+asyfigure("Hobbycontrol");
+
+remark("interpreting $\theta$ and $\phi$ as the angle between the corresponding path direction vector and $z_1-z_0$.");
+
+item("Here there is an unambiguous reference vector for determining the relative sign of the angles $\phi$ and $\theta$.");
+
+viewportmargin=(2,0.5cm);
+//defaultpen(1.0);
+title("Interactive 3D Saddle");
+item("A unit circle in the $X$--$Y$ plane may be constructed with:
+{\tt (1,0,0)..(0,1,0)..(-1,0,0)..(0,-1,0)..cycle}:");
+asyinclude("unitcircle3",8cm);
+remark("and then distorted into the saddle\\
+{\tt (1,0,0)..(0,1,1)..(-1,0,0)..(0,-1,1)..cycle}:");
+asyinclude("saddle",8cm);
+//defaultpen(0.5);
+
+title("Lifting TeX to 3D");
+item("Glyphs are first split into simply connected regions and then decomposed into planar B\'ezier surface patches \cite{Bowman09,Shardt10}:");
+asyfigure("../examples/partitionExample");
+
+viewportmargin=(2,1cm);
+title("Label Manipulation");
+item("They can then be extruded and/or arbitrarily transformed:");
+asyinclude("../examples/label3solid");
+
+title("Billboard Labels");
+defaultpen(fontsize(36pt));
+asyinclude("../examples/billboard",15cm);
+defaultpen(itempen);
+
+title("Smooth 3D surfaces");
+asyinclude("../examples/sinc",25cm);
+
+title("Curved 3D Arrows");
+asyinclude("../examples/arrows3",20cm);
+
+title("Slide Presentations");
+item("Asymptote has a module for preparing slides.");
+item("It even supports embedded high-resolution PDF movies.");
+
+code('
+title("Slide Presentations");
+item("Asymptote has a module for preparing slides.");
+item("It even supports embedded high-resolution PDF movies.");
+');
+remark("\quad\ldots");
+
+import graph;
+
+pen p=linewidth(1);
+pen dotpen=linewidth(5);
+
+pair wheelpoint(real t) {return (t+cos(t),-sin(t));}
+
+guide wheel(guide g=nullpath, real a, real b, int n)
+{
+ real width=(b-a)/n;
+ for(int i=0; i <= n; ++i) {
+ real t=a+width*i;
+ g=g--wheelpoint(t);
+ }
+ return g;
+}
+
+real t1=0;
+real t2=t1+2*pi;
+
+picture base;
+draw(base,circle((0,0),1),p);
+draw(base,wheel(t1,t2,100),p+linetype("0 2"));
+yequals(base,Label("$y=-1$",1.0),-1,extend=true,p+linetype("4 4"));
+xaxis(base,Label("$x$",align=3SW),0,p);
+yaxis(base,"$y$",0,1.3,p);
+pair z1=wheelpoint(t1);
+pair z2=wheelpoint(t2);
+dot(base,z1,dotpen);
+dot(base,z2,dotpen);
+
+animation a;
+
+int n=25;
+real dt=(t2-t1)/n;
+for(int i=0; i <= n; ++i) {
+ picture pic;
+ size(pic,24cm);
+ real t=t1+dt*i;
+ add(pic,base);
+ draw(pic,circle((t,0),1),p+red);
+ dot(pic,wheelpoint(t),dotpen);
+ a.add(pic);
+}
+
+display(a.pdf(delay=150,"controls"));
+
+title("Automatic Sizing");
+item("Figures can be specified in user coordinates, then
+ automatically scaled to the desired final size.");
+asyfigure(asywrite("
+import graph;
+
+size(0,100);
+
+frame cardsize(real w=0, real h=0, bool keepAspect=Aspect) {
+ picture pic;
+ pic.size(w,h,keepAspect);
+
+ real f(real t) {return 1+cos(t);}
+
+ guide g=polargraph(f,0,2pi,operator ..)--cycle;
+ filldraw(pic,g,pink);
+
+ xaxis(pic,\"$x$\",above=true);
+ yaxis(pic,\"$y$\",above=true);
+
+ dot(pic,\"$(a,0)$\",(1,0),N);
+ dot(pic,\"$(2a,0)$\",(2,0),N+E);
+
+ frame f=pic.fit();
+ label(f,\"{\tt size(\"+string(w)+\",\"+string(h)+\");}\",point(f,S),align=S);
+ return f;
+}
+
+add(cardsize(0,50), (0,0));
+add(cardsize(0,100), (230,0));
+add(cardsize(0,200), (540,0));
+"));
+
+title("Deferred Drawing");
+item("We can't draw a graphical object until we know the scaling
+ factors for the user coordinates.");
+item("Instead, store a function that, given the scaling information, draws
+ the scaled object.");
+code("
+void draw(picture pic=currentpicture, path g, pen p=currentpen) {
+ pic.add(new void(frame f, transform t) {
+ draw(f,t*g,p);
+ });
+ pic.addPoint(min(g),min(p));
+ pic.addPoint(max(g),max(p));
+}
+");
+
+title("Coordinates");
+item("Store bounding box information as the sum of user and true-size
+ coordinates:");
+asyfigure(asywrite("
+size(0,150);
+
+path q=(0,0){dir(70)}..{dir(70)}(100,50);
+pen p=rotate(30)*yscale(0.7)*(lightblue+linewidth(20));
+draw(q,p);
+draw((90,10),p);
+
+currentpicture.add(new void(frame f, transform t) {
+ draw(f,box(min(t*q)+min(p),max(t*q)+max(p)), dashed);
+ });
+
+draw(box(min(q),max(q)));
+
+frame f;
+draw(f,box(min(p),max(p)));
+
+add(f,min(q));
+add(f,max(q));
+
+draw(q);
+"));
+
+code("pic.addPoint(min(g),min(p));
+pic.addPoint(max(g),max(p));");
+item("Filling ignores the pen width:");
+code("pic.addPoint(min(g),(0,0));
+pic.addPoint(max(g),(0,0));");
+item("Communicate with \LaTeX\ {\it via\/} a pipe to determine label sizes:");
+
+asyfigure(asywrite("
+size(0,100);
+
+pen p=fontsize(30pt);
+frame f;
+label(f, \"$E=mc^2$\", p);
+draw(f, box(min(f),max(f)));
+shipout(f);
+"));
+
+title("Sizing");
+
+item("When scaling the final figure to a given size $S$, we first need to
+ determine a scaling factor $a>0$ and a shift $b$ so that all of the
+ coordinates when transformed will lie in the interval $[0,S]$.");
+
+item("That is, if $u$ and $t$ are the user and truesize components:");
+equation("0\le au+t+b \le S.");
+
+item("Maximize the variable $a$ subject to a number of inequalities.");
+
+item("Use the simplex method to solve the resulting linear programming problem.");
+
+if(long) {
+title("Sizing");
+item("Every addition of a coordinate $(t,u)$ adds two restrictions");
+equation("au+t+b\ge 0,");
+equation("au+t+b\le S,");
+remark("and each drawing component adds two coordinates.");
+item("A figure could easily produce thousands of restrictions, making the
+ simplex method impractical.");
+
+item("Most of these restrictions are redundant, however. For instance, with
+ concentric circles, only the largest circle needs to be accounted for.");
+asyfigure(asywrite("
+import palette;
+size(160,0);
+pen[] p=Rainbow(NColors=11);
+for(int i=1; i<10; ++i) {
+ draw(scale(i)*unitcircle, p[i]+linewidth(2));
+}
+"));
+
+title("Redundant Restrictions");
+item("In general, if $u\le u'$ and $t\le t'$ then");
+equation("au+t+b\le au'+t'+b");
+remark("for all choices of $a>0$ and $b$, so");
+equation("0\le au+t+b\le au'+t'+b\le S.");
+item("This defines a partial ordering on coordinates. When sizing a picture,
+ the program first computes which coordinates are maximal (or minimal) and
+ only sends effective constraints to the simplex algorithm.");
+item("In practice, the linear programming problem will have less than a dozen
+ restraints.");
+item("All picture sizing is implemented in Asymptote code.");
+}
+
+title("Infinite Lines");
+item("Deferred drawing allows us to draw infinite lines.");
+code("drawline(P, Q);");
+
+asyfigure("elliptic","height=12cm");
+
+title("Helpful Math Notation");
+
+item("Integer division returns a {\tt real}. Use {\tt quotient} for an integer
+ result:");
+code("3/4 == 0.75 quotient(3,4) == 0");
+
+item("Caret for real and integer exponentiation:");
+code("2^3 2.7^3 2.7^3.2");
+
+item("Many expressions can be implicitly scaled by a numeric constant:");
+code("2pi 10cm 2x^2 3sin(x) 2(a+b)");
+
+item("Pairs are complex numbers:");
+code("(0,1)*(0,1) == (-1,0)");
+
+title("Function Calls");
+
+item("Functions can take default arguments in any position. Arguments are
+ matched to the first possible location:");
+string unitsize="unitsize(0.65cm);";
+string preamble="void drawEllipse(real xsize=1, real ysize=xsize, pen p=blue) {
+ draw(xscale(xsize)*yscale(ysize)*unitcircle, p);
+}
+";
+
+asycode(preamble=unitsize,preamble+"
+drawEllipse(2);
+drawEllipse(red);
+");
+
+item("Arguments can be given by name:");
+asycode(preamble=unitsize+preamble,"
+drawEllipse(xsize=2, ysize=1);
+drawEllipse(ysize=2, xsize=3, green);
+");
+
+if(long) {
+title("Rest Arguments");
+item("Rest arguments allow one to write a function that takes an arbitrary
+ number of arguments:");
+code("
+int sum(... int[] nums) {
+ int total=0;
+ for(int i=0; i < nums.length; ++i)
+ total += nums[i];
+ return total;
+}
+
+sum(1,2,3,4); // returns 10
+sum(); // returns 0
+sum(1,2,3 ... new int[] {4,5,6}); // returns 21
+
+int subtract(int start ... int[] subs) {
+ return start - sum(... subs);
+}
+");
+}
+
+title("High-Order Functions");
+
+item("Functions are first-class values. They can be passed to other
+ functions:");
+code("import graph;
+real f(real x) {
+ return x*sin(10x);
+}
+draw(graph(f,-3,3,300),red);");
+asyfigure(asywrite("
+import graph;
+size(300,0);
+real f(real x) {
+ return x*sin(10x);
+}
+draw(graph(f,-3,3,300),red);
+"));
+
+if(long) {
+title("Higher-Order Functions");
+item("Functions can return functions:");
+equation("f_n(x)=n\sin\left(\frac{x}{n}\right).");
+skip();
+string preamble="
+import graph;
+size(300,0);
+";
+string graphfunc2="
+typedef real func(real);
+func f(int n) {
+ real fn(real x) {
+ return n*sin(x/n);
+ }
+ return fn;
+}
+
+func f1=f(1);
+real y=f1(pi);
+
+for(int i=1; i<=5; ++i)
+ draw(graph(f(i),-10,10),red);
+";
+code(graphfunc2);
+string name=asywrite(graphfunc2,preamble=preamble);
+asy(nativeformat(),name+".asy");
+label(graphic(name+"."+nativeformat()),(0.5,0),
+ Fill(figureborder,figuremattpen));
+
+title("Anonymous Functions");
+
+item("Create new functions with {\tt new}:");
+code("
+path p=graph(new real (real x) { return x*sin(10x); },-3,3,red);
+
+func f(int n) {
+ return new real (real x) { return n*sin(x/n); };
+}");
+
+item("Function definitions are just syntactic sugar for assigning function
+objects to variables.");
+code("
+real square(real x) {
+ return x^2;
+}
+");
+
+remark("is equivalent to");
+code("
+real square(real x);
+square=new real (real x) {
+ return x^2;
+};
+");
+
+title("Structures");
+
+item("As in other languages, structures group together data.");
+code("
+struct Person {
+ string firstname, lastname;
+ int age;
+}
+Person bob=new Person;
+bob.firstname=\"Bob\";
+bob.lastname=\"Chesterton\";
+bob.age=24;
+");
+
+item("Any code in the structure body will be executed every time a new structure
+ is allocated...");
+code("
+struct Person {
+ write(\"Making a person.\");
+ string firstname, lastname;
+ int age=18;
+}
+Person eve=new Person; // Writes \"Making a person.\"
+write(eve.age); // Writes 18.
+");
+
+title("Modules");
+
+item("Function and structure definitions can be grouped into modules:");
+code("
+// powers.asy
+real square(real x) { return x^2; }
+real cube(real x) { return x^3; }
+");
+remark("and imported:");
+code("
+import powers;
+real eight=cube(2.0);
+draw(graph(powers.square, -1, 1));
+");
+}
+
+title("Object-Oriented Programming");
+item("Functions are defined for each instance of a structure.");
+code("
+struct Quadratic {
+ real a,b,c;
+ real discriminant() {
+ return b^2-4*a*c;
+ }
+ real eval(real x) {
+ return a*x^2 + b*x + c;
+ }
+}
+");
+
+item("This allows us to construct ``methods'' which are just normal functions
+ declared in the environment of a particular object:");
+code("
+Quadratic poly=new Quadratic;
+poly.a=-1; poly.b=1; poly.c=2;
+
+real f(real x)=poly.eval;
+real y=f(2);
+draw(graph(poly.eval, -5, 5));
+");
+
+title("Specialization");
+
+item("Can create specialized objects just by redefining methods:");
+code("
+struct Shape {
+ void draw();
+ real area();
+}
+
+Shape rectangle(real w, real h) {
+ Shape s=new Shape;
+ s.draw = new void () {
+ fill((0,0)--(w,0)--(w,h)--(0,h)--cycle); };
+ s.area = new real () { return w*h; };
+ return s;
+}
+
+Shape circle(real radius) {
+ Shape s=new Shape;
+ s.draw = new void () { fill(scale(radius)*unitcircle); };
+ s.area = new real () { return pi*radius^2; }
+ return s;
+}
+");
+
+title("Overloading");
+item("Consider the code:");
+code("
+int x1=2;
+int x2() {
+ return 7;
+}
+int x3(int y) {
+ return 2y;
+}
+
+write(x1+x2()); // Writes 9.
+write(x3(x1)+x2()); // Writes 11.
+");
+
+title("Overloading");
+item("{\tt x1}, {\tt x2}, and {\tt x3} are never used in the same context, so
+ they can all be renamed {\tt x} without ambiguity:");
+code("
+int x=2;
+int x() {
+ return 7;
+}
+int x(int y) {
+ return 2y;
+}
+
+write(x+x()); // Writes 9.
+write(x(x)+x()); // Writes 11.
+");
+
+item("Function definitions are just variable definitions, but variables are
+ distinguished by their signatures to allow overloading.");
+
+title("Operators");
+item("Operators are just syntactic sugar for functions, and can be addressed or
+ defined as functions with the {\tt operator} keyword.");
+code("
+int add(int x, int y)=operator +;
+write(add(2,3)); // Writes 5.
+
+// Don't try this at home.
+int operator +(int x, int y) {
+ return add(2x,y);
+}
+write(2+3); // Writes 7.
+");
+item("This allows operators to be defined for new types.");
+
+title("Operators");
+item("Operators for constructing paths are also functions:");
+code("a.. controls b and c .. d--e");
+remark("is equivalent to");
+code(
+ "operator --(operator ..(a, operator controls(b,c), d), e)");
+item("This allowed us to redefine all of the path operators for 3D paths.");
+
+title("Summary");
+
+item("Asymptote:");
+subitem("uses IEEE floating point numerics;");
+subitem("uses C++/Java-like syntax;");
+subitem("supports deferred drawing for automatic picture sizing;");
+subitem("supports Grayscale, RGB, CMYK, and HSV colour spaces;");
+subitem("supports PostScript shading, pattern fills, and function shading;");
+subitem("can fill nonsimply connected regions;");
+subitem("generalizes MetaPost path construction algorithms to 3D;");
+subitem("lifts \TeX\ to 3D;");
+subitem("supports 3D billboard labels and PDF grouping.");
+
+bibliography("refs");
+
+viewportmargin=(2,2);
+viewportsize=0;
+defaultpen(0.5);
+title("\mbox{Asymptote: 2D \& 3D Vector Graphics Language}");
+asyinclude("../examples/logo3");
+skip();
+center("\tt http://asymptote.sf.net");
+center("(freely available under the LGPL license)");
+
+// LocalWords: pdflatex mflogo viewportsize pagewidth pagemargin goysr bibtex
+// LocalWords: itempen defaultrender medskip Orest Shardt Vidiassov MF ezier
+// LocalWords: Hammerlindl MetaPost PDF hfill LGPL pdf asywrite zoombox LaTeX
+// LocalWords: asyfilecode PostScript asycode unitsquare beziercurve grey bw
+// LocalWords: lightgrey zerowinding evenodd sw unitsize drawEllipse nums fn
+// LocalWords: frac graphfunc func nativeformat figureborder figuremattpen bt
+// LocalWords: firstname lastname eval eetomumu binarytree filecode datagraph
+// LocalWords: lineargraph filegraph loggraph secondaryaxis imagecontour ij
+// LocalWords: tridiagonal Hobbydir nonumber Hobbycontrol th viewportmargin
+// LocalWords: asyinclude dotpen wheelpoint yequals xaxis yaxis cardsize mc
+// LocalWords: polargraph filldraw addPoint lightblue truesize le au NColors
+// LocalWords: drawline unityroot mult oct intang IEEE numerics HSV colour
+// LocalWords: nonsimply
diff --git a/Master/texmf-dist/doc/asymptote/examples/irregularcontour.asy b/Master/texmf-dist/doc/asymptote/examples/irregularcontour.asy
new file mode 100644
index 00000000000..70b38ae15e7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/irregularcontour.asy
@@ -0,0 +1,21 @@
+import contour;
+
+size(200);
+
+int n=100;
+
+real f(real a, real b) {return a^2+b^2;}
+
+srand(1);
+
+real r() {return 1.1*(rand()/randMax*2-1);}
+
+pair[] points=new pair[n];
+real[] values=new real[n];
+
+for(int i=0; i < n; ++i) {
+ points[i]=(r(),r());
+ values[i]=f(points[i].x,points[i].y);
+}
+
+draw(contour(points,values,new real[]{0.25,0.5,1},operator ..),blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/join.asy b/Master/texmf-dist/doc/asymptote/examples/join.asy
new file mode 100644
index 00000000000..75fa14f36ca
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/join.asy
@@ -0,0 +1,15 @@
+size(300,0);
+pair[] z=new pair[10];
+
+z[0]=(0,100); z[1]=(50,0); z[2]=(180,0);
+
+for(int n=3; n <= 9; ++n)
+ z[n]=z[n-3]+(200,0);
+
+path p=z[0]..z[1]---z[2]::{up}z[3]
+&z[3]..z[4]--z[5]::{up}z[6]
+&z[6]::z[7]---z[8]..{up}z[9];
+
+draw(p,grey+linewidth(4mm));
+
+dot(z);
diff --git a/Master/texmf-dist/doc/asymptote/examples/join3.asy b/Master/texmf-dist/doc/asymptote/examples/join3.asy
new file mode 100644
index 00000000000..9513d522b4d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/join3.asy
@@ -0,0 +1,21 @@
+import graph3;
+
+size(200);
+
+currentprojection=orthographic(500,-500,500);
+
+triple[] z=new triple[10];
+
+z[0]=(0,100,0); z[1]=(50,0,0); z[2]=(180,0,0);
+
+for(int n=3; n <= 9; ++n)
+ z[n]=z[n-3]+(200,0,0);
+
+path3 p=z[0]..z[1]---z[2]::{Y}z[3]
+&z[3]..z[4]--z[5]::{Y}z[6]
+&z[6]::z[7]---z[8]..{Y}z[9];
+
+draw(p,grey+linewidth(4mm),currentlight);
+
+xaxis3(Label(XY()*"$x$",align=-3Y),red,above=true);
+yaxis3(Label(XY()*"$y$",align=-3X),red,above=true);
diff --git a/Master/texmf-dist/doc/asymptote/examples/jump.asy b/Master/texmf-dist/doc/asymptote/examples/jump.asy
new file mode 100644
index 00000000000..7ae19be3886
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/jump.asy
@@ -0,0 +1,14 @@
+import graph;
+size(4inches,0);
+
+real f1(real x) {return (1+x^2);}
+real f2(real x) {return (4-x);}
+
+xaxis("$x$",LeftTicks,Arrow);
+yaxis("$y$",RightTicks,Arrow);
+
+draw("$y=1+x^2$",graph(f1,-2,1));
+dot((1,f1(1)),UnFill);
+
+draw("$y=4-x$",graph(f2,1,5),LeftSide,red,Arrow);
+dot((1,f2(1)),red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/knots.asy b/Master/texmf-dist/doc/asymptote/examples/knots.asy
new file mode 100644
index 00000000000..48881459d05
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/knots.asy
@@ -0,0 +1,27 @@
+import syzygy;
+
+Braid initial;
+initial.n = 4;
+initial.add(bp,1);
+initial.add(bp,0);
+initial.add(bp,2);
+initial.add(bp,1);
+initial.add(phi,2);
+initial.add(phi,0);
+
+Syzygy pp;
+pp.lsym="\Phi\Phi"; pp.codename="PhiAroundPhi";
+
+pp.number=true;
+pp.initial=initial;
+pp.apply(r4b,2,1);
+pp.apply(r4b,0,0);
+pp.apply(r4a,1,0);
+pp.swap(0,1);
+pp.apply(-r4b,1,0);
+pp.apply(-r4a,0,1);
+pp.apply(-r4a,2,0);
+pp.swap(4,5);
+
+pp.draw();
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/label3.asy b/Master/texmf-dist/doc/asymptote/examples/label3.asy
new file mode 100644
index 00000000000..f8d5e07049f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/label3.asy
@@ -0,0 +1,7 @@
+import three;
+
+currentprojection=perspective(0,0,1,up=Y);
+
+label(scale(4)*"$\displaystyle\int_{-\infty}^{+\infty} e^{-\alpha x^2}\,dx=
+\sqrt{\frac{\pi}{\alpha}}$",O,blue,Embedded);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/label3ribbon.asy b/Master/texmf-dist/doc/asymptote/examples/label3ribbon.asy
new file mode 100644
index 00000000000..59ccbc9237c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/label3ribbon.asy
@@ -0,0 +1,6 @@
+import three;
+
+currentprojection=perspective(100,100,200,up=Y);
+
+draw(scale3(4)*extrude(texpath("$\displaystyle\int_{-\infty}^{+\infty}
+e^{-\alpha x^2}\,dx=\sqrt{\frac{\pi}{\alpha}}$"),2Z),blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/label3solid.asy b/Master/texmf-dist/doc/asymptote/examples/label3solid.asy
new file mode 100644
index 00000000000..476d41fdbc3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/label3solid.asy
@@ -0,0 +1,6 @@
+import three;
+
+currentprojection=perspective(100,100,200,up=Y);
+
+draw(scale3(4)*extrude("$\displaystyle\int_{-\infty}^{+\infty}
+e^{-\alpha x^2}\,dx=\sqrt{\frac{\pi}{\alpha}}$",2Z),blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy b/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy
new file mode 100644
index 00000000000..7eafccd8fcd
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy
@@ -0,0 +1,16 @@
+import three;
+
+currentlight=Headlamp;
+size(469.75499pt,0);
+
+currentprojection=perspective(
+camera=(160.119024441391,136.348802919248,253.822628496226),
+up=(-0.188035408976828,0.910392236102215,-0.368549401594584),
+target=(25.5462739598034,1.77605243766079,-9.93996244768584),
+zoom=5.59734733413271,
+angle=5.14449021168139,
+viewportshift=(0.813449720559684,-0.604674743165144),
+autoadjust=false);
+
+draw(scale3(4)*extrude("$\displaystyle\int\limits_{-\infty}^{+\infty}\!\! e^{-\alpha x^2}\!\!=\sqrt{\frac{\pi}{\alpha}}$",2Z),
+ material(blue,ambientpen=mediumgray));
diff --git a/Master/texmf-dist/doc/asymptote/examples/labelbox.asy b/Master/texmf-dist/doc/asymptote/examples/labelbox.asy
new file mode 100644
index 00000000000..38153b856e5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/labelbox.asy
@@ -0,0 +1,11 @@
+size(0,100);
+real margin=2mm;
+pair z1=(0,1);
+pair z0=(0,0);
+
+object Box=draw("small box",box,z1,margin);
+object Ellipse=draw("LARGE ELLIPSE",ellipse,z0,margin);
+
+add(new void(frame f, transform t) {
+ draw(f,point(Box,SW,t){SW}..{SW}point(Ellipse,NNE,t));
+ });
diff --git a/Master/texmf-dist/doc/asymptote/examples/labelsquare.asy b/Master/texmf-dist/doc/asymptote/examples/labelsquare.asy
new file mode 100644
index 00000000000..9531792b6a1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/labelsquare.asy
@@ -0,0 +1,6 @@
+size(3cm);
+draw(unitsquare);
+label("$A$",(0,0),SW);
+label("$B$",(1,0),SE);
+label("$C$",(1,1),NE);
+label("$D$",(0,1),NW);
diff --git a/Master/texmf-dist/doc/asymptote/examples/laserlattice.asy b/Master/texmf-dist/doc/asymptote/examples/laserlattice.asy
new file mode 100644
index 00000000000..da4d9a49b7c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/laserlattice.asy
@@ -0,0 +1,44 @@
+import graph;
+import palette;
+
+int n=256;
+pen[] Palette=BWRainbow();
+
+real w(real w0, real z0, real z) {return w0*sqrt(1+(z/z0)^2);}
+
+real pot(real lambda, real w0, real r, real z)
+{
+ real z0=pi*w0^2/lambda, kappa=2pi/lambda;
+ return exp(-2*(r/w(w0,z0,z))^2)*cos(kappa*z)^2;
+}
+
+picture make_field(real lambda, real w0)
+{
+ real[][] v=new real[n][n];
+ for(int i=0; i < n; ++i)
+ for(int j=0; j < n; ++j)
+ v[i][j]=pot(lambda,w0,i-n/2,abs(j-n/2));
+
+ picture p=new picture;
+ size(p,250,250,IgnoreAspect);
+ real xm=-n/lambda, ym=-n/(2*w0), xx=n/lambda, yx=n/(2*w0);
+ image(p,v,(xm,ym),(xx,yx),Palette);
+ xlimits(p,xm,xx);
+ ylimits(p,ym,yx);
+ xaxis(p,"{\Large $z/\frac{\lambda}{2}$}",BottomTop,LeftTicks);
+ yaxis(p,"{\Large $r/w_0$}",LeftRight,RightTicks);
+ label(p,format("{\LARGE $w_0/\lambda=%.2f$}",w0/lambda),point(p,NW),5N);
+
+ return p;
+}
+
+picture p=make_field(160,80);
+picture q=make_field(80,80);
+picture r=make_field(16,80);
+picture s=make_field(2,80);
+
+real margin=1cm;
+add(p.fit(),(0,0),margin*NW);
+add(q.fit(),(0,0),margin*NE);
+add(r.fit(),(0,0),margin*SW);
+add(s.fit(),(0,0),margin*SE);
diff --git a/Master/texmf-dist/doc/asymptote/examples/latexusage.tex b/Master/texmf-dist/doc/asymptote/examples/latexusage.tex
new file mode 100644
index 00000000000..910cef5bf10
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/latexusage.tex
@@ -0,0 +1,117 @@
+\documentclass[12pt]{article}
+
+% Use this form to include EPS (latex) or PDF (pdflatex) files:
+\usepackage{asymptote}
+
+% Use this form with latex or pdflatex to include inline LaTeX code by default:
+%\usepackage[inline]{asymptote}
+
+% Use this form with latex or pdflatex to create PDF attachments by default:
+%\usepackage[attach]{asymptote}
+
+% Enable this line to support the attach option:
+%\usepackage[dvips]{attachfile2}
+
+\begin{document}
+
+% Optional subdirectory for asy files (no spaces):
+\def\asydir{}
+
+\begin{asydef}
+// Global Asymptote definitions can be put here.
+import three;
+usepackage("bm");
+texpreamble("\def\V#1{\bm{#1}}");
+// One can globally override the default toolbar settings here:
+// settings.toolbar=true;
+\end{asydef}
+
+Here is a venn diagram produced with Asymptote, drawn to width 4cm:
+
+\def\A{A}
+\def\B{\V{B}}
+
+%\begin{figure}
+\begin{center}
+\begin{asy}
+size(4cm,0);
+pen colour1=red;
+pen colour2=green;
+
+pair z0=(0,0);
+pair z1=(-1,0);
+pair z2=(1,0);
+real r=1.5;
+path c1=circle(z1,r);
+path c2=circle(z2,r);
+fill(c1,colour1);
+fill(c2,colour2);
+
+picture intersection=new picture;
+fill(intersection,c1,colour1+colour2);
+clip(intersection,c2);
+
+add(intersection);
+
+draw(c1);
+draw(c2);
+
+//draw("$\A$",box,z1); // Requires [inline] package option.
+//draw(Label("$\B$","$B$"),box,z2); // Requires [inline] package option.
+draw("$A$",box,z1);
+draw("$\V{B}$",box,z2);
+
+pair z=(0,-2);
+real m=3;
+margin BigMargin=Margin(0,m*dot(unit(z1-z),unit(z0-z)));
+
+draw(Label("$A\cap B$",0),conj(z)--z0,Arrow,BigMargin);
+draw(Label("$A\cup B$",0),z--z0,Arrow,BigMargin);
+draw(z--z1,Arrow,Margin(0,m));
+draw(z--z2,Arrow,Margin(0,m));
+
+shipout(bbox(0.25cm));
+\end{asy}
+%\caption{Venn diagram}\label{venn}
+\end{center}
+%\end{figure}
+
+Each graph is drawn in its own environment. One can specify the width
+and height to \LaTeX\ explicitly. This 3D example can be viewed
+interactively either with Adobe Reader or Asymptote's fast OpenGL-based
+renderer. To support {\tt latexmk}, 3D figures should specify
+\verb+inline=true+. It is sometimes desirable to embed 3D files as annotated
+attachments; this requires the \verb+attach=true+ option as well as the
+\verb+attachfile2+ \LaTeX\ package.
+\begin{center}
+\begin{asy}[height=4cm,inline=true,attach=false,viewportwidth=\linewidth]
+currentprojection=orthographic(5,4,2);
+draw(unitcube,blue);
+label("$V-E+F=2$",(0,1,0.5),3Y,blue+fontsize(17pt));
+\end{asy}
+\end{center}
+
+One can also scale the figure to the full line width:
+\begin{center}
+\begin{asy}[width=\the\linewidth,inline=true]
+pair z0=(0,0);
+pair z1=(2,0);
+pair z2=(5,0);
+pair zf=z1+0.75*(z2-z1);
+
+draw(z1--z2);
+dot(z1,red+0.15cm);
+dot(z2,darkgreen+0.3cm);
+label("$m$",z1,1.2N,red);
+label("$M$",z2,1.5N,darkgreen);
+label("$\hat{\ }$",zf,0.2*S,fontsize(24pt)+blue);
+
+pair s=-0.2*I;
+draw("$x$",z0+s--z1+s,N,red,Arrows,Bars,PenMargins);
+s=-0.5*I;
+draw("$\bar{x}$",z0+s--zf+s,blue,Arrows,Bars,PenMargins);
+s=-0.95*I;
+draw("$X$",z0+s--z2+s,darkgreen,Arrows,Bars,PenMargins);
+\end{asy}
+\end{center}
+\end{document}
diff --git a/Master/texmf-dist/doc/asymptote/examples/latticeshading.asy b/Master/texmf-dist/doc/asymptote/examples/latticeshading.asy
new file mode 100644
index 00000000000..c6689fa72d5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/latticeshading.asy
@@ -0,0 +1,7 @@
+size(200);
+
+pen[][] p={{white,grey,black},
+ {red,green,blue},
+ {cyan,magenta,yellow}};
+
+latticeshade(unitsquare,p);
diff --git a/Master/texmf-dist/doc/asymptote/examples/layers.asy b/Master/texmf-dist/doc/asymptote/examples/layers.asy
new file mode 100644
index 00000000000..4fe745f6a3c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/layers.asy
@@ -0,0 +1,44 @@
+usepackage("ocg");
+settings.tex="pdflatex";
+
+size(0,150);
+
+pen colour1=red;
+pen colour2=green;
+
+pair z0=(0,0);
+pair z1=(-1,0);
+pair z2=(1,0);
+real r=1.5;
+path c1=circle(z1,r);
+path c2=circle(z2,r);
+
+begin("A");
+fill(c1,colour1);
+end();
+
+fill(c2,colour2);
+
+picture intersection;
+fill(intersection,c1,colour1+colour2);
+clip(intersection,c2);
+
+add(intersection);
+
+draw(c1);
+draw(c2);
+
+label("$A$",z1);
+
+begin("B");
+label("$B$",z2);
+end();
+
+pair z=(0,-2);
+real m=3;
+margin BigMargin=Margin(0,m*dot(unit(z1-z),unit(z0-z)));
+
+draw(Label("$A\cap B$",0),conj(z)--z0,Arrow,BigMargin);
+draw(Label("$A\cup B$",0),z--z0,Arrow,BigMargin);
+draw(z--z1,Arrow,Margin(0,m));
+draw(z--z2,Arrow,Margin(0,m));
diff --git a/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy b/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy
new file mode 100644
index 00000000000..cb2b8f3a42b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy
@@ -0,0 +1,55 @@
+size(400,200,IgnoreAspect);
+
+import graph;
+import stats;
+
+file fin=input("leastsquares.dat").line();
+
+real[][] a=fin.dimension(0,0);
+a=transpose(a);
+
+real[] t=a[0], rho=a[1];
+
+// Read in parameters from the keyboard:
+//real first=getreal("first");
+//real step=getreal("step");
+//real last=getreal("last");
+
+real first=100;
+real step=50;
+real last=700;
+
+// Remove negative or zero values of rho:
+t=rho > 0 ? t : null;
+rho=rho > 0 ? rho : null;
+
+scale(Log(true),Linear(true));
+
+int n=step > 0 ? ceil((last-first)/step) : 0;
+
+real[] T,xi,dxi;
+
+for(int i=0; i <= n; ++i) {
+ real first=first+i*step;
+ real[] logrho=(t >= first & t <= last) ? log(rho) : null;
+ real[] logt=(t >= first & t <= last) ? -log(t) : null;
+
+ if(logt.length < 2) break;
+
+ // Fit to the line logt=L.m*logrho+L.b:
+ linefit L=leastsquares(logt,logrho);
+
+ T.push(first);
+ xi.push(L.m);
+ dxi.push(L.dm);
+}
+
+draw(graph(T,xi),blue);
+errorbars(T,xi,dxi,red);
+
+crop();
+
+ylimits(0);
+
+xaxis("$T$",BottomTop,LeftTicks);
+yaxis("$\xi$",LeftRight,RightTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/leastsquares.dat b/Master/texmf-dist/doc/asymptote/examples/leastsquares.dat
new file mode 100644
index 00000000000..a4d63d6e100
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/leastsquares.dat
@@ -0,0 +1,882 @@
+1 3825
+2 4057
+3 4217
+4 4278
+5 4353
+6 4483
+7 4410
+8 4462
+9 4626
+10 4511
+11 4531
+12 4450
+13 4354
+14 4402
+15 4489
+16 4441
+17 4366
+18 4443
+19 4442
+20 4335
+21 4292
+22 4458
+23 4444
+24 4426
+25 4310
+26 4264
+27 4263
+28 4252
+29 4330
+30 4304
+31 4242
+32 4272
+33 4284
+34 4198
+35 4242
+36 4096
+37 4142
+38 4248
+39 4186
+40 4210
+41 4125
+42 4134
+43 4098
+44 4129
+45 3960
+46 4012
+47 4079
+48 4038
+49 4024
+50 3949
+51 3996
+52 3970
+53 4031
+54 3895
+55 3806
+56 3825
+57 3850
+58 3742
+59 3678
+60 3589
+61 3648
+62 3476
+63 3490
+64 3353
+65 3270
+66 3134
+67 3018
+68 2922
+69 2801
+70 2691
+71 2528
+72 2460
+73 2254
+74 2105
+75 2009
+76 1854
+77 1677
+78 1562
+79 1501
+80 1399
+81 1244
+82 1160
+83 1080
+84 963
+85 879
+86 797
+87 745
+88 701
+89 634
+90 554
+91 532
+92 549
+93 521
+94 466
+95 460
+96 435
+97 412
+98 376
+99 367
+100 350
+101 360
+102 321
+103 302
+104 291
+105 273
+106 261
+107 255
+108 231
+109 245
+110 252
+111 236
+112 227
+113 207
+114 196
+115 199
+116 211
+117 232
+118 220
+119 214
+120 229
+121 213
+122 208
+123 196
+124 218
+125 196
+126 192
+127 178
+128 177
+129 178
+130 179
+131 170
+132 173
+133 170
+134 150
+135 144
+136 149
+137 145
+138 145
+139 139
+140 147
+141 140
+142 128
+143 133
+144 156
+145 136
+146 164
+147 152
+148 140
+149 141
+150 112
+151 108
+152 110
+153 133
+154 118
+155 113
+156 113
+157 108
+158 88
+159 109
+160 97
+161 99
+162 94
+163 97
+164 104
+165 105
+166 118
+167 108
+168 130
+169 126
+170 114
+171 112
+172 107
+173 96
+174 96
+175 102
+176 85
+177 89
+178 93
+179 96
+180 101
+181 82
+182 97
+183 96
+184 94
+185 97
+186 85
+187 79
+188 72
+189 75
+190 63
+191 65
+192 62
+193 54
+194 53
+195 49
+196 55
+197 48
+198 53
+199 46
+200 50
+201 48
+202 50
+203 51
+204 50
+205 49
+206 46
+207 47
+208 44
+209 42
+210 47
+211 45
+212 44
+213 46
+214 43
+215 40
+216 42
+217 41
+218 40
+219 43
+220 41
+221 42
+222 43
+223 40
+224 42
+225 39
+226 41
+227 42
+228 44
+229 40
+230 40
+231 35
+232 38
+233 37
+234 36
+235 34
+236 34
+237 34
+238 36
+239 36
+240 36
+241 37
+242 37
+243 37
+244 36
+245 36
+246 45
+247 43
+248 43
+249 43
+250 49
+251 58
+252 48
+253 50
+254 56
+255 51
+256 50
+257 55
+258 64
+259 55
+260 49
+261 36
+262 36
+263 40
+264 49
+265 37
+266 35
+267 35
+268 33
+269 33
+270 39
+271 35
+272 34
+273 36
+274 32
+275 37
+276 31
+277 31
+278 32
+279 30
+280 32
+281 29
+282 31
+283 30
+284 30
+285 28
+286 27
+287 26
+288 24
+289 25
+290 28
+291 30
+292 29
+293 27
+294 27
+295 27
+296 26
+297 26
+298 28
+299 27
+300 24
+301 22
+302 27
+303 26
+304 25
+305 25
+306 25
+307 26
+308 28
+309 26
+310 25
+311 24
+312 26
+313 25
+314 23
+315 25
+316 24
+317 23
+318 23
+319 24
+320 23
+321 24
+322 22
+323 24
+324 24
+325 24
+326 23
+327 25
+328 24
+329 22
+330 22
+331 23
+332 23
+333 23
+334 21
+335 19
+336 20
+337 22
+338 26
+339 25
+340 24
+341 22
+342 22
+343 23
+344 23
+345 23
+346 20
+347 21
+348 20
+349 21
+350 25
+351 22
+352 22
+353 21
+354 24
+355 24
+356 22
+357 23
+358 26
+359 24
+360 23
+361 22
+362 26
+363 30
+364 27
+365 25
+366 26
+367 26
+368 25
+369 24
+370 24
+371 22
+372 21
+373 20
+374 20
+375 19
+376 20
+377 21
+378 20
+379 20
+380 19
+381 19
+382 19
+383 19
+384 20
+385 20
+386 19
+387 20
+388 20
+389 20
+390 17
+391 18
+392 16
+393 18
+394 32
+395 31
+396 47
+397 57
+398 64
+399 34
+400 42
+401 40
+402 41
+403 35
+404 26
+405 25
+406 25
+407 36
+408 42
+409 55
+410 75
+411 94
+412 87
+413 97
+414 95
+415 101
+416 70
+417 66
+418 66
+419 73
+420 77
+421 89
+422 79
+423 63
+424 66
+425 71
+426 70
+427 49
+428 46
+429 46
+430 43
+431 49
+432 48
+433 44
+434 36
+435 33
+436 28
+437 29
+438 32
+439 31
+440 29
+441 28
+442 29
+443 31
+444 31
+445 33
+446 33
+447 39
+448 44
+449 37
+450 58
+451 64
+452 38
+453 31
+454 36
+455 33
+456 29
+457 34
+458 28
+459 27
+460 23
+461 31
+462 26
+463 21
+464 23
+465 26
+466 21
+467 21
+468 24
+469 24
+470 24
+471 24
+472 26
+473 23
+474 26
+475 20
+476 21
+477 25
+478 21
+479 22
+480 22
+481 23
+482 22
+483 23
+484 22
+485 20
+486 22
+487 20
+488 22
+489 20
+490 24
+491 20
+492 22
+493 19
+494 19
+495 20
+496 19
+497 18
+498 18
+499 17
+500 16
+501 16
+502 17
+503 17
+504 16
+505 17
+506 16
+507 16
+508 16
+509 17
+510 18
+511 17
+512 16
+513 17
+514 16
+515 16
+516 16
+517 17
+518 16
+519 16
+520 16
+521 16
+522 16
+523 16
+524 16
+525 16
+526 16
+527 17
+528 17
+529 18
+530 17
+531 16
+532 15
+533 15
+534 15
+535 15
+536 16
+537 17
+538 16
+539 18
+540 17
+541 17
+542 15
+543 15
+544 15
+545 16
+546 15
+547 15
+548 15
+549 15
+550 15
+551 14
+552 14
+553 14
+554 14
+555 14
+556 14
+557 14
+558 15
+559 14
+560 16
+561 15
+562 16
+563 17
+564 15
+565 14
+566 17
+567 18
+568 17
+569 16
+570 17
+571 14
+572 15
+573 15
+574 15
+575 14
+576 15
+577 14
+578 14
+579 13
+580 13
+581 13
+582 13
+583 13
+584 12
+585 12
+586 13
+587 12
+588 12
+589 12
+590 13
+591 15
+592 16
+593 14
+594 13
+595 14
+596 13
+597 13
+598 13
+599 13
+600 14
+601 13
+602 13
+603 13
+604 14
+605 15
+606 15
+607 15
+608 15
+609 15
+610 15
+611 15
+612 15
+613 15
+614 15
+615 15
+616 14
+617 14
+618 14
+619 14
+620 14
+621 14
+622 14
+623 15
+624 15
+625 15
+626 14
+627 15
+628 14
+629 14
+630 14
+631 14
+632 14
+633 14
+634 13
+635 13
+636 13
+637 13
+638 13
+639 13
+640 13
+641 13
+642 13
+643 13
+644 13
+645 13
+646 13
+647 13
+648 13
+649 13
+650 13
+651 13
+652 13
+653 13
+654 13
+655 13
+656 13
+657 13
+658 13
+659 13
+660 13
+661 13
+662 13
+663 13
+664 13
+665 13
+666 13
+667 13
+668 13
+669 13
+670 13
+671 13
+672 13
+673 13
+674 13
+675 13
+676 13
+677 13
+678 13
+679 12
+680 12
+681 13
+682 13
+683 13
+684 13
+685 12
+686 12
+687 13
+688 13
+689 13
+690 13
+691 13
+692 13
+693 13
+694 13
+695 13
+696 13
+697 13
+698 13
+699 13
+700 13
+701 13
+702 13
+703 13
+704 13
+705 13
+706 13
+707 13
+708 13
+709 13
+710 13
+711 13
+712 13
+713 13
+714 13
+715 13
+716 13
+717 13
+718 13
+719 13
+720 13
+721 13
+722 13
+723 13
+724 13
+725 13
+726 13
+727 13
+728 13
+729 13
+730 13
+731 13
+732 13
+733 13
+734 13
+735 13
+736 13
+737 13
+738 13
+739 13
+740 13
+741 13
+742 13
+743 13
+744 13
+745 13
+746 13
+747 13
+748 13
+749 13
+750 13
+751 13
+752 13
+753 13
+754 13
+755 12
+756 12
+757 12
+758 12
+759 11
+760 12
+761 11
+762 12
+763 11
+764 12
+765 12
+766 12
+767 12
+768 14
+769 14
+770 14
+771 14
+772 12
+773 12
+774 12
+775 13
+776 13
+777 13
+778 12
+779 13
+780 13
+781 13
+782 13
+783 13
+784 13
+785 12
+786 11
+787 11
+788 11
+789 12
+790 13
+791 13
+792 13
+793 12
+794 13
+795 13
+796 13
+797 13
+798 13
+799 12
+800 12
+801 12
+802 12
+803 12
+804 12
+805 11
+806 11
+807 11
+808 12
+809 13
+810 13
+811 12
+812 12
+813 12
+814 12
+815 12
+816 12
+817 12
+818 12
+819 12
+820 13
+821 13
+822 13
+823 13
+824 12
+825 13
+826 12
+827 13
+828 13
+829 13
+830 13
+831 12
+832 12
+833 12
+834 13
+835 13
+836 12
+837 9
+838 9
+839 10
+840 10
+841 11
+842 11
+843 11
+844 12
+845 12
+846 11
+847 12
+848 12
+849 12
+850 12
+851 12
+852 12
+853 12
+854 12
+855 12
+856 11
+857 10
+858 11
+859 12
+860 11
+861 11
+862 11
+863 10
+864 10
+865 10
+866 11
+867 10
+868 10
+869 10
+870 11
+871 11
+872 12
+873 12
+874 12
+875 12
+876 12
+877 12
+878 12
+879 12
+880 12
+881 0
+882 0
diff --git a/Master/texmf-dist/doc/asymptote/examples/legend.asy b/Master/texmf-dist/doc/asymptote/examples/legend.asy
new file mode 100644
index 00000000000..09a31868ae4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/legend.asy
@@ -0,0 +1,15 @@
+import graph;
+size(8cm,6cm,IgnoreAspect);
+
+typedef real realfcn(real);
+realfcn F(real p) {
+ return new real(real x) {return sin(p*x);};
+};
+
+for(int i=1; i < 5; ++i)
+ draw(graph(F(i*pi),0,1),Pen(i),
+ "$\sin("+(i == 1 ? "" : (string) i)+"\pi x)$");
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks(trailingzero));
+
+attach(legend(2),(point(S).x,truepoint(S).y),10S,UnFill);
diff --git a/Master/texmf-dist/doc/asymptote/examples/lever.asy b/Master/texmf-dist/doc/asymptote/examples/lever.asy
new file mode 100644
index 00000000000..a0c81f5a47a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/lever.asy
@@ -0,0 +1,23 @@
+size(200,0);
+
+pair z0=(0,0);
+pair z1=(2,0);
+pair z2=(5,0);
+pair zf=z1+0.75*(z2-z1);
+
+draw(z1--z2);
+dot(z1,red+0.15cm);
+dot(z2,darkgreen+0.3cm);
+label("$m$",z1,1.2N,red);
+label("$M$",z2,1.5N,darkgreen);
+label("$\hat{\ }$",zf,0.2*S,fontsize(24pt)+blue);
+
+pair s=-0.2*I;
+draw("$x$",z0+s--z1+s,N,red,Arrows,Bars,PenMargins);
+
+s=-0.5*I;
+draw("$\bar{x}$",z0+s--zf+s,blue,Arrows,Bars,PenMargins);
+
+s=-0.95*I;
+draw("$X$",z0+s--z2+s,darkgreen,Arrows,Bars,PenMargins);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/limit.asy b/Master/texmf-dist/doc/asymptote/examples/limit.asy
new file mode 100644
index 00000000000..ef71928941e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/limit.asy
@@ -0,0 +1,28 @@
+size(200,200,IgnoreAspect);
+import graph;
+
+real L=1;
+real epsilon=0.25;
+
+real a(int n) {return L+1/n;}
+
+for(int i=1; i < 20; ++i)
+ dot((i,a(i)));
+
+real N=1/epsilon;
+
+xaxis(Label("$n$",align=2S));
+yaxis(Label("$a_n$",0.85));
+
+xtick("$2$",2);
+ytick("$\frac{3}{2}$",3/2);
+ytick("$2$",2);
+
+yequals(Label("$L$",0,up),L,extend=true,blue);
+yequals(Label("$L+\epsilon$",1,NW),L+epsilon,extend=true,red+dashed);
+yequals(Label("$L-\epsilon$",1,SW),L-epsilon,extend=true,red+dashed);
+
+xequals(N,extend=true,darkgreen+dashed);
+labelx(shift(0,-10)*"$N=\frac{1}{\epsilon}$",N,E,darkgreen);
+
+label("$a_n=1+\frac{1}{n},\quad \epsilon=\frac{1}{4}$",point((0,1)),10S+E);
diff --git a/Master/texmf-dist/doc/asymptote/examples/lineargraph.asy b/Master/texmf-dist/doc/asymptote/examples/lineargraph.asy
new file mode 100644
index 00000000000..c352311ee72
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/lineargraph.asy
@@ -0,0 +1,16 @@
+import graph;
+
+size(250,200,IgnoreAspect);
+
+real Sin(real t) {return sin(2pi*t);}
+real Cos(real t) {return cos(2pi*t);}
+
+draw(graph(Sin,0,1),red,"$\sin(2\pi x)$");
+draw(graph(Cos,0,1),blue,"$\cos(2\pi x)$");
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks(trailingzero));
+
+label("LABEL",point(0),UnFill(1mm));
+
+attach(legend(),truepoint(E),20E,UnFill);
diff --git a/Master/texmf-dist/doc/asymptote/examples/lineargraph0.asy b/Master/texmf-dist/doc/asymptote/examples/lineargraph0.asy
new file mode 100644
index 00000000000..fc344181d51
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/lineargraph0.asy
@@ -0,0 +1,16 @@
+import graph;
+
+size(400,200,IgnoreAspect);
+
+real Sin(real t) {return sin(2pi*t);}
+real Cos(real t) {return cos(2pi*t);}
+
+draw(graph(Sin,0,1),red,"$\sin(2\pi x)$");
+draw(graph(Cos,0,1),blue,"$\cos(2\pi x)$");
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks(trailingzero));
+
+label("LABEL",point(0),UnFill(1mm));
+
+add(legend(),point(E),20E,UnFill);
diff --git a/Master/texmf-dist/doc/asymptote/examples/lines.asy b/Master/texmf-dist/doc/asymptote/examples/lines.asy
new file mode 100644
index 00000000000..9749f73a350
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/lines.asy
@@ -0,0 +1,10 @@
+import math;
+
+int n=7;
+
+size(200,0);
+
+draw(unitcircle,red);
+for (int i=0; i < n-1; ++i)
+ for (int j=i+1; j < n; ++j)
+ drawline(unityroot(n,i),unityroot(n,j),blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/linetype.asy b/Master/texmf-dist/doc/asymptote/examples/linetype.asy
new file mode 100644
index 00000000000..dc4762c2478
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/linetype.asy
@@ -0,0 +1,13 @@
+void testline(real y) {
+ draw((0,y)--(100,y),currentpen+solid);
+ draw((0,y-10)--(100,y-10),currentpen+dotted);
+ draw((0,y-20)--(100,y-20),currentpen+dashed);
+ draw((0,y-30)--(100,y-30),currentpen+longdashed);
+ draw((0,y-40)--(100,y-40),currentpen+dashdotted);
+ draw((0,y-50)--(100,y-50),currentpen+longdashdotted);
+ draw((0,y-60)--(100,y-60),currentpen+Dotted);
+}
+
+currentpen=linewidth(0.5);
+testline(100);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy b/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy
new file mode 100644
index 00000000000..c25a7c4b4be
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy
@@ -0,0 +1,37 @@
+import lmfit;
+import graph;
+
+size(10cm, 7cm, IgnoreAspect);
+
+real[] date = { 1790, 1800, 1810, 1820, 1830, 1840, 1850, 1860, 1870, 1880,
+1890, 1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990 };
+real[] population = { 3.929, 5.308, 7.240, 9.638, 12.866, 17.069, 23.192, 31.443,
+38.558, 50.156, 62.948, 75.996, 91.972, 105.711, 122.775, 131.669, 150.697,
+179.323, 203.185, 226.546, 248.710 };
+
+real t0 = 1776;
+
+real P(real[] params, real t) {
+ real P0 = params[0];
+ real K = params[1];
+ real r = params[2];
+ return (K * P0) / (P0 + (K - P0) * exp(-r * (t - t0)));
+}
+
+real[] params = { 10, 500, 0.1 };
+
+real res = lmfit.fit(date, population, P, params).norm;
+
+write("P_0 = ", params[0]);
+write("K = ", params[1]);
+write("r = ", params[2]);
+write("error = ", res);
+
+real P(real t) {
+ return P(params, t);
+}
+
+draw(graph(date, population), blue);
+draw(graph(P, t0, 2000), red);
+xaxis("Year", BottomTop, LeftTicks);
+yaxis("Population in millions", LeftRight, RightTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/log.asy b/Master/texmf-dist/doc/asymptote/examples/log.asy
new file mode 100644
index 00000000000..532b7b782b6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/log.asy
@@ -0,0 +1,14 @@
+import graph;
+
+size(150,0);
+
+real f(real x) {return log(x);}
+pair F(real x) {return (x,f(x));}
+
+xaxis("$x$",0);
+yaxis("$y$");
+
+draw(graph(f,0.01,10,operator ..));
+
+labelx(1,SSE);
+label("$\log x$",F(7),SE);
diff --git a/Master/texmf-dist/doc/asymptote/examples/log2graph.asy b/Master/texmf-dist/doc/asymptote/examples/log2graph.asy
new file mode 100644
index 00000000000..238f4126274
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/log2graph.asy
@@ -0,0 +1,17 @@
+import graph;
+size(200,IgnoreAspect);
+
+// Base-2 logarithmic scale on y-axis:
+
+real log2(real x) {static real log2=log(2); return log(x)/log2;}
+real pow2(real x) {return 2^x;}
+
+scaleT yscale=scaleT(log2,pow2,logarithmic=true);
+scale(Linear,yscale);
+
+real f(real x) {return 1+x^2;}
+
+draw(graph(f,-4,4));
+
+yaxis("$y$",ymin=1,ymax=f(5),RightTicks(Label(Fill(white))),EndArrow);
+xaxis("$x$",xmin=-5,xmax=5,LeftTicks,EndArrow);
diff --git a/Master/texmf-dist/doc/asymptote/examples/logdown.asy b/Master/texmf-dist/doc/asymptote/examples/logdown.asy
new file mode 100644
index 00000000000..25d10ed978e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/logdown.asy
@@ -0,0 +1,13 @@
+import graph;
+size(200,IgnoreAspect);
+
+real log10Down(real x) {return -log10(x);}
+real pow10Down(real x) {return pow10(-x);}
+
+scaleT LogDown=scaleT(log10Down,pow10Down,logarithmic=true);
+scale(Linear,LogDown);
+
+draw(graph(exp,-5,5));
+
+yaxis("$y$",RightTicks(Label(Fill(white)),DefaultLogFormat),BeginArrow);
+xaxis("$x$",LeftTicks(NoZero),EndArrow);
diff --git a/Master/texmf-dist/doc/asymptote/examples/loggraph.asy b/Master/texmf-dist/doc/asymptote/examples/loggraph.asy
new file mode 100644
index 00000000000..edd9d3e0a67
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/loggraph.asy
@@ -0,0 +1,18 @@
+import graph;
+
+size(200,200,IgnoreAspect);
+
+real f(real t) {return 1/t;}
+
+scale(Log,Log);
+
+draw(graph(f,0.1,10));
+
+//xlimits(1,10,Crop);
+//ylimits(0.1,1,Crop);
+
+dot(Label("(3,5)",align=S),Scale((3,5)));
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/loggrid.asy b/Master/texmf-dist/doc/asymptote/examples/loggrid.asy
new file mode 100644
index 00000000000..bb48a1e4ca8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/loggrid.asy
@@ -0,0 +1,13 @@
+import graph;
+size(200,200,IgnoreAspect);
+
+real f(real t) {return 1/t;}
+
+scale(Log,Log);
+draw(graph(f,0.1,10),red);
+pen thin=linewidth(0.5*linewidth());
+xaxis("$x$",BottomTop,LeftTicks(begin=false,end=false,extend=true,
+ ptick=thin));
+yaxis("$y$",LeftRight,RightTicks(begin=false,end=false,extend=true,
+ ptick=thin));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/logimage.asy b/Master/texmf-dist/doc/asymptote/examples/logimage.asy
new file mode 100644
index 00000000000..65d6bb53111
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/logimage.asy
@@ -0,0 +1,22 @@
+import graph;
+import palette;
+
+size(10cm,10cm,IgnoreAspect);
+
+real f(real x, real y) {
+ return 0.9*pow10(2*sin(x/5+2*y^0.25)) + 0.1*(1+cos(10*log(y)));
+}
+
+scale(Linear,Log,Log);
+
+pen[] Palette=BWRainbow();
+
+bounds range=image(f,Automatic,(0,1),(100,100),nx=200,Palette);
+
+xaxis("$x$",BottomTop,LeftTicks,above=true);
+yaxis("$y$",LeftRight,RightTicks,above=true);
+
+palette("$f(x,y)$",range,(0,200),(100,250),Top,Palette,
+ PaletteTicks(ptick=linewidth(0.5*linewidth())));
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/logo.asy b/Master/texmf-dist/doc/asymptote/examples/logo.asy
new file mode 100644
index 00000000000..d180558ad34
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/logo.asy
@@ -0,0 +1,28 @@
+size(140,80,IgnoreAspect);
+
+picture logo(pair s=0, pen q)
+{
+ picture pic;
+ pen p=linewidth(2)+fontsize(24pt)+q;
+ real a=-0.4;
+ real b=0.95;
+ real y1=-5;
+ real y2=-3y1/2;
+ path A=(a,0){dir(10)}::{dir(89.5)}(0,y2);
+ draw(pic,A,p);
+ draw(pic,(0,y1){dir(88.3)}::{dir(20)}(b,0),p);
+ real c=0.5*a;
+ pair z=(0,2.5);
+ label(pic,"{\it symptote}",z,0.25*E+0.169S,p);
+ pair w=(0,1.7);
+ draw(pic,intersectionpoint(A,w-1--w)--w,p);
+ draw(pic,(0,y1)--(0,y2),p);
+ draw(pic,(a,0)--(b,0),p);
+ return shift(s)*pic;
+}
+
+pair z=(-0.015,0.08);
+for(int x=0; x < 10; ++x)
+ add(logo(0.1*x*z,gray(0.04*x)));
+
+add(logo(red));
diff --git a/Master/texmf-dist/doc/asymptote/examples/logo3.asy b/Master/texmf-dist/doc/asymptote/examples/logo3.asy
new file mode 100644
index 00000000000..93b5a331e9e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/logo3.asy
@@ -0,0 +1,41 @@
+import three;
+
+size(560,320,IgnoreAspect);
+size3(140,80,15);
+currentprojection=perspective(-2,20,10,up=Y);
+currentlight=White;
+
+real a=-0.4;
+real b=0.95;
+real y1=-5;
+real y2=-3y1/2;
+path A=(a,0){dir(10)}::{dir(89.5)}(0,y2);
+path B=(0,y1){dir(88.3)}::{dir(20)}(b,0);
+real c=0.5*a;
+pair z=(0,2.5);
+transform t=scale(1,15);
+transform T=inverse(scale(t.yy,t.xx));
+path[] g=shift(0,1.979)*scale(0.01)*t*
+ texpath(Label("{\it symptote}",z,0.25*E+0.169S,fontsize(24pt)));
+pair w=(0,1.7);
+pair u=intersectionpoint(A,w-1--w);
+
+real h=0.25*linewidth();
+real hy=(T*(h,h)).x;
+g.push(t*((a,hy)--(b,hy)..(b+hy,0)..(b,-hy)--(a,-hy)..(a-hy,0)..cycle));
+g.push(T*((h,y1)--(h,y2)..(0,y2+h)..(-h,y2)--(-h,y1)..(0,y1-h)..cycle));
+g.push(shift(0,w.y)*t*((u.x,hy)--(w.x,hy)..(w.x+hy,0)..(w.x,-hy)--(u.x,-hy)..(u.x-hy,0)..cycle));
+real f=0.75;
+g.push(point(A,0)--shift(-f*hy,f*h)*A--point(A,1)--shift(f*hy,-f*h)*reverse(A)--cycle);
+g.push(point(B,0)--shift(f*hy,-f*h)*B--point(B,1)--shift(-f*hy,f*h)*reverse(B)--cycle);
+
+triple H=-0.1Z;
+material m=material(lightgray,shininess=1.0);
+
+for(path p : g)
+ draw(extrude(p,H),m);
+
+surface s=surface(g);
+draw(s,red,nolight);
+draw(shift(H)*s,m);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/logticks.asy b/Master/texmf-dist/doc/asymptote/examples/logticks.asy
new file mode 100644
index 00000000000..bdd14411692
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/logticks.asy
@@ -0,0 +1,11 @@
+import graph;
+
+size(300,175,IgnoreAspect);
+scale(Log,Log);
+draw(graph(identity,5,20));
+xlimits(5,20);
+ylimits(1,100);
+xaxis("$M/M_\odot$",BottomTop,LeftTicks(DefaultFormat,
+ new real[] {6,10,12,14,16,18}));
+yaxis("$\nu_{\rm upp}$ [Hz]",LeftRight,RightTicks(DefaultFormat));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/lowint.asy b/Master/texmf-dist/doc/asymptote/examples/lowint.asy
new file mode 100644
index 00000000000..e4bf1c55606
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/lowint.asy
@@ -0,0 +1,11 @@
+size(100,0);
+import graph;
+import lowupint;
+
+real a=-0.8, b=1.2;
+real c=1.0/sqrt(3.0);
+
+partition(a,b,c,min);
+
+arrow("$f(x)$",F(0.5*(a+b)),NNE,red);
+label("$\cal{L}$",(0.5*(a+b),f(0.5*(a+b))/2));
diff --git a/Master/texmf-dist/doc/asymptote/examples/lowupint.asy b/Master/texmf-dist/doc/asymptote/examples/lowupint.asy
new file mode 100644
index 00000000000..3a14cd91104
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/lowupint.asy
@@ -0,0 +1,31 @@
+import graph;
+
+real f(real x) {return x^3-x+2;}
+pair F(real x) {return (x,f(x));}
+
+void rectangle(real a, real b, real c, real h(real,real))
+{
+ real height=(a < c && c < b) ? f(c) : h(f(a),f(b));
+ pair p=(a,0), q=(b,height);
+ path g=box(p,q);
+ fill(g,lightgray);
+ draw(g);
+}
+
+void partition(real a, real b, real c, real h(real,real))
+{
+ rectangle(a,a+.4,c,h);
+ rectangle(a+.4,a+.6,c,h);
+ rectangle(a+.6,a+1.2,c,h);
+ rectangle(a+1.2,a+1.6,c,h);
+ rectangle(a+1.6,a+1.8,c,h);
+ rectangle(a+1.8,b,c,h);
+
+ draw((a,0)--(F(a)));
+ draw((b,0)--(F(b)));
+
+ draw(graph(f,a,b,operator ..),red);
+ draw((a,0)--(b,0));
+ labelx("$a$",a);
+ labelx("$b$",b);
+}
diff --git a/Master/texmf-dist/doc/asymptote/examples/magnetic.asy b/Master/texmf-dist/doc/asymptote/examples/magnetic.asy
new file mode 100644
index 00000000000..3ae40466d43
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/magnetic.asy
@@ -0,0 +1,18 @@
+import graph3;
+import contour3;
+
+size(200,0);
+currentprojection=orthographic((6,8,2),up=Y);
+
+real a(real z) {return (z < 6) ? 1 : exp((abs(z)-6)/4);}
+real b(real z) {return 1/a(z);}
+real B(real z) {return 1-0.5cos(pi*z/10);}
+
+real f(real x, real y, real z) {return 0.5B(z)*(a(z)*x^2+b(z)*y^2)-1;}
+
+draw(surface(contour3(f,(-2,-2,-10),(2,2,10),10)),blue+opacity(0.75),
+ render(merge=true));
+
+xaxis3(Label("$x$",1),red);
+yaxis3(Label("$y$",1),red);
+zaxis3(Label("$z$",1),red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/makepen.asy b/Master/texmf-dist/doc/asymptote/examples/makepen.asy
new file mode 100644
index 00000000000..7c7868a0901
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/makepen.asy
@@ -0,0 +1,9 @@
+size(200);
+pen convex=makepen(scale(10)*polygon(8))+grey;
+draw((1,0.4),convex);
+draw((0,0)---(1,1)..(2,0)--cycle,convex);
+
+pen nonconvex=scale(10)*
+ makepen((0,0)--(0.25,-1)--(0.5,0.25)--(1,0)--(0.5,1.25)--cycle)+red;
+draw((0.5,-1.5),nonconvex);
+draw((0,-1.5)..(1,-0.5)..(2,-1.5),nonconvex);
diff --git a/Master/texmf-dist/doc/asymptote/examples/markers1.asy b/Master/texmf-dist/doc/asymptote/examples/markers1.asy
new file mode 100644
index 00000000000..a3af424616d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/markers1.asy
@@ -0,0 +1,102 @@
+size(12cm,0);
+import markers;
+
+pair A=(0,0), B=(1,0), C=(2,0), D=(3,0);
+path p=A--B--C--D;
+transform T=shift(-4,-1);
+transform t=shift(4,0);
+
+//line 1 **********
+draw(p,marker(markinterval(3,dotframe,true)));
+label("$1$",point(p,0),3W);
+
+//line 2 **********
+p=t*p;
+draw(p,marker(stickframe,markuniform(4)));
+label("$2$",point(p,0),3W);
+
+//line 3 **********
+p=T*p;
+draw(p,marker(stickframe(red),markinterval(3,dotframe(blue),true)));
+label("$3$",point(p,0),3W);
+
+//line 4 **********
+p=t*p;
+draw(p,StickIntervalMarker(3,2,blue,dotframe(red)));
+label("$4$",point(p,0),3W);
+
+//line 5 **********
+p=T*p;
+pen pn=linewidth(4bp);
+draw(p,pn,StickIntervalMarker(3,3,angle=25,pn,dotframe(red+pn)));
+label("$5$",point(p,0),3W);
+
+//line 6 **********
+p=t*p;
+draw(p,StickIntervalMarker(3,5,angle=25,size=4mm,space=2mm,offset=I*2mm,
+ scale(2)*dotframe(red)));
+label("$6$",point(p,0),3W);
+
+//line 7 **********
+p=T*p;
+draw(p,StickIntervalMarker(n=3,angle=45,size=10mm,space=3mm,dotframe));
+label("$7$",point(p,0),3W);
+
+//line 8 **********
+p=t*p;
+draw(p,CircleBarIntervalMarker(n=2,dotframe));
+label("$8$",point(p,0),3W);
+
+//line 9 **********
+p=T*p;
+draw(p,CircleBarIntervalMarker(n=3,angle=30,barsize=8mm,radius=2mm,
+ FillDraw(.8red),
+ dotframe));
+label("$9$",point(p,0),3W);
+
+//line 10 **********
+p=t*p;
+draw(p,CircleBarIntervalMarker(n=3,angle=30,barsize=8mm,radius=2mm,
+ FillDraw(.8red),circleabove=true,dotframe));
+label("$10$",point(p,0),3W);
+
+//line 11 **********
+p=T*p;
+draw(p,CircleBarIntervalMarker(n=3,angle=30,barsize=8mm,radius=2mm,
+ FillDraw(.8red),circleabove=true,dotframe,
+ above=false));
+label("$11$",point(p,0),3W);
+
+//line 12 **********
+p=t*p;
+draw(p,TildeIntervalMarker(i=3,dotframe));
+label("$12$",point(p,0),3W);
+
+//line 13 **********
+p=T*p;
+draw(p,TildeIntervalMarker(i=3,n=2,angle=-20,dotframe));
+label("$13$",point(p,0),3W);
+
+//line 14 **********
+p=t*p;
+draw(p,CrossIntervalMarker(3,3,dotframe));
+label("$14$",point(p,0),3W);
+
+//line 15 **********
+p=shift(.25S)*T*p;
+path cle=shift(relpoint(p,.5))*scale(abs(A-D)/4)*unitcircle;
+draw(cle,StickIntervalMarker(5,3,dotframe(6bp+red)));
+label("$15$",point(p,0),3W);
+
+//line 16 **********
+cle=t*cle;
+p=t*p;
+frame a;
+label(a,"$a$",(0,-2labelmargin()));
+draw(cle,marker(dotframe(6bp+red),markinterval(5,a,true)));
+label("$16$",point(p,0),3W);
+
+// line 17 **********
+p=T*shift(relpoint(p,.5)+.65S)*scale(.5)*shift(-relpoint(p,.5))*rotate(45,relpoint(p,.5))*p;
+draw(p,TildeIntervalMarker(size=5mm,rotated=false,dotframe));
+label("$17$",point(p,0),3W);
diff --git a/Master/texmf-dist/doc/asymptote/examples/markers2.asy b/Master/texmf-dist/doc/asymptote/examples/markers2.asy
new file mode 100644
index 00000000000..b9c8ac21894
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/markers2.asy
@@ -0,0 +1,34 @@
+size(10cm,0);
+import markers;
+import geometry;
+import math;
+
+pair A=0, B=(1,0), C=(0.7,1), D=(-0.5,0), F=rotate(-90)*(C-B)/2+B;
+
+draw(A--B);
+draw(A--C);
+pen p=linewidth(1mm);
+draw(B--C,p);
+draw(A--D);
+draw(B--F,p);
+label("$A$",A,SW);
+label("$B$",B,S);
+label("$C$",C,N);
+dot(Label("$D$",D,S));
+dot(Label("$F$",F,N+NW));
+
+markangle(A,C,B);
+
+markangle(scale(1.5)*"$\theta$",radius=40,C,B,A,ArcArrow(2mm),1mm+red);
+markangle(scale(1.5)*"$-\theta$",radius=-70,A,B,C,ArcArrow,green);
+
+markangle(Label("$\gamma$",Relative(0.25)),n=2,radius=-30,A,C,B,p=0.7blue+2);
+
+markangle(n=3,B,A,C,marker(markinterval(stickframe(n=2),true)));
+
+pen RedPen=0.7red+1bp;
+markangle(C,A,D,RedPen,marker(markinterval(2,stickframe(3,4mm,RedPen),true)));
+drawline(A,A+dir(A--D,A--C),dotted);
+
+perpendicular(B,NE,F-B,size=10mm,1mm+red,
+ TrueMargin(linewidth(p)/2,linewidth(p)/2),Fill(yellow));
diff --git a/Master/texmf-dist/doc/asymptote/examples/markregular.asy b/Master/texmf-dist/doc/asymptote/examples/markregular.asy
new file mode 100644
index 00000000000..716599fbcf1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/markregular.asy
@@ -0,0 +1,26 @@
+import graph;
+
+size(10cm,0);
+
+real xmin=-4,xmax=4;
+real ymin=-2,ymax=10;
+
+real f(real x) {return x^2;}
+
+marker cross=marker(scale(4)*rotate(45)*cross(4),
+ markuniform(new pair(real t) {return Scale((t,f(t)));},
+ xmin,xmax,round(2*(xmax-xmin))),1bp+red);
+
+draw(graph(f,xmin,xmax,n=400),linewidth(1bp),cross);
+
+ylimits(-2.5,10,Crop);
+
+xaxis(Label("$x$",position=EndPoint, align=NE),xmin=xmin,xmax=xmax,
+ Ticks(scale(.7)*Label(align=E),NoZero,begin=false,beginlabel=false,
+ end=false,endlabel=false,Step=1,step=.25,
+ Size=1mm, size=.5mm,pTick=black,ptick=gray),Arrow);
+
+yaxis(Label("$y$",position=EndPoint, align=NE),ymin=ymin,ymax=ymax,
+ Ticks(scale(.7)*Label(),NoZero,begin=false,beginlabel=false,
+ end=false,endlabel=false,Step=1,step=.25,Size=1mm,size=.5mm,
+ pTick=black,ptick=gray),Arrow);
diff --git a/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy b/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy
new file mode 100644
index 00000000000..e0fdcd0f6c7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy
@@ -0,0 +1,77 @@
+size(16cm);
+import bezulate;
+
+pen edgepen=linewidth(1)+blue;
+pen dotpen=deepgreen;
+pen labelpen=fontsize(8pt);
+
+path outer = (0.5,5){E}..(5,-1){S}..{W}(4,-4)..{W}(2.5,-1.5){W}..(-0.3,-2.5){W}..(-3,0)..cycle;
+outer = subdivide(outer);
+path[] p = {outer,shift(-0.5,1.0)*rotate(-22)*scale(1.5,2.4)*subdivide(unitcircle),shift(2.3,0.3)*scale(0.7)*unitcircle};
+
+// a
+filldraw(p,lightgrey+evenodd);
+
+real w = 1.1*(max(p).x-min(p).x);
+
+// b
+p = shift(w)*p;
+draw(p);
+path l = point(p[1],2)--point(p[0],4);
+draw(l,red);
+for(int i = 0; i < p.length; ++i)
+{
+ real[][] ts = intersections(l,p[i]);
+ for(real[] t:ts)
+ dot(point(l,t[0]));
+}
+path l2 = point(l,intersections(l,p[0])[0][0])--point(l,intersections(l,p[2])[1][0]);
+real to = intersections(l,p[0])[0][1];
+real ti = intersections(l,p[2])[1][1];
+draw(l2,edgepen);
+label("$A$",point(l2,1),2E,labelpen);
+label("$B$",point(l2,0),1.5E,labelpen);
+
+// c
+p = shift(w)*p;
+l2 = shift(w)*l2;
+draw(p);
+real timeoffset=2;
+path t1=subpath(p[0],to,to+timeoffset);
+t1=t1--point(p[2],ti)--cycle;
+fill(t1,lightgrey);
+draw(point(p[2],ti)--point(p[0],to+4),red);
+dot(Label("$A$",labelpen),point(p[2],ti),2E,dotpen);
+dot(Label("$B$",labelpen),point(p[0],to),1.5E,dotpen);
+dot(Label("$C$",labelpen),point(p[0],to+timeoffset),1.5S,dotpen);
+draw(t1,edgepen);
+dot(point(p[0],to+4));
+draw(shift(-0.5,-0.5)*subpath(p[0],to+4,to+timeoffset+0.5),Arrow(4));
+
+// d
+p = shift(w)*p;
+p[0] = subpath(p[0],to+timeoffset,to+length(p[0]))--uncycle(p[2],ti)--cycle;
+p.delete(2);
+draw(p);
+
+// e
+p = shift(w)*p;
+path q=point(p[1],0)--subpath(p[0],15.4,16)--cycle;
+p[0] = subpath(p[0],16,15.4+length(p[0]))--uncycle(p[1],0)--cycle;
+p.delete(1);
+filldraw(p,lightgrey);
+
+// f
+p = shift(w)*p;
+filldraw(bezulate(p),lightgrey);
+filldraw(shift(3w)*t1,lightgrey);
+filldraw(shift(w)*q,lightgrey);
+
+
+real x = min(p).x - 4.5w;
+string l = "abcdef";
+for(int i = 0; i < 6; ++i)
+{
+ label("("+substr(l,i,1)+")",(x,min(p).y),3S,fontsize(10pt));
+ x += w;
+}
diff --git a/Master/texmf-dist/doc/asymptote/examples/mexicanhat.asy b/Master/texmf-dist/doc/asymptote/examples/mexicanhat.asy
new file mode 100644
index 00000000000..d55b127ae5c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/mexicanhat.asy
@@ -0,0 +1,22 @@
+size(200);
+
+real mexican(real x) {return (1-8x^2)*exp(-(4x^2));}
+
+int n=30;
+real a=1.5;
+real width=2a/n;
+
+guide hat;
+path solved;
+
+for(int i=0; i < n; ++i) {
+ real t=-a+i*width;
+ pair z=(t,mexican(t));
+ hat=hat..z;
+ solved=solved..z;
+}
+
+draw(hat);
+dot(hat,red);
+draw(solved,dashed);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/monthaxis.asy b/Master/texmf-dist/doc/asymptote/examples/monthaxis.asy
new file mode 100644
index 00000000000..d2c8bf3298f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/monthaxis.asy
@@ -0,0 +1,17 @@
+import graph;
+
+size(400,150,IgnoreAspect);
+
+real[] x=sequence(12);
+real[] y=sin(2pi*x/12);
+
+scale(false);
+
+string[] month={"Jan","Feb","Mar","Apr","May","Jun",
+ "Jul","Aug","Sep","Oct","Nov","Dec"};
+
+draw(graph(x,y),red,MarkFill[0]);
+
+xaxis(BottomTop,LeftTicks(new string(real x) {
+ return month[round(x % 12)];}));
+yaxis("$y$",LeftRight,RightTicks(4));
diff --git a/Master/texmf-dist/doc/asymptote/examples/mosaic.asy b/Master/texmf-dist/doc/asymptote/examples/mosaic.asy
new file mode 100644
index 00000000000..0f19117c4b3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/mosaic.asy
@@ -0,0 +1,165 @@
+// Calendar example contributed by Jens Schwaiger
+
+// transformations
+path similarpath(pair a, pair b, path p) {
+ // transform p into a path starting at a and ending at b
+ pair first;
+ pair last;
+ path p_;
+ first=point(p,0);
+ last=point(p,length(p));
+ p_=shift(-first)*p;
+ p_=rotate(degrees(b-a))*p_;
+ p_=scale(abs(b-a)/abs(last-first))*p_;
+ p_=shift(a)*p_;
+ return p_;
+}
+
+path c_line(path p) {
+ // returns the path obtained by adding to p a copy rotated
+ // around the endpoint of p by 180 degrees
+ // works only if the initial point and the endpoint of p are different
+ // a c_line is symetric with respect to the center of
+ // the straight line between its endpoints
+ //
+ return p..rotate(180,point(p,length(p)))*reverse(p);
+}
+
+path tounitcircle(path p, int n=300) {
+ // the transformation pair x --> x/sqrt(1+abs(x)^2)
+ // is a bijection from the plane to the open unitdisk
+ real l=arclength(p);
+ path ghlp;
+ for(int i=0; i <= n; ++i) {
+ real at=arctime(p,l/n*i);
+ pair phlp=point(p,at);
+ real trhlp=1/(1+abs(phlp)^2)^(1/2);
+ ghlp=ghlp--trhlp*phlp;
+ }
+ if(cyclic(p)) {ghlp=ghlp--cycle;}
+ return ghlp;
+}
+
+void centershade(picture pic=currentpicture, path p, pen in, pen out,
+ pen drawpen=currentpen) {
+ pair center=0.5(max(p)+min(p));
+ real radius=0.5abs(max(p)-min(p));
+ radialshade(pic,p,in,center,0,out,center,radius);
+ draw(pic,p,drawpen);
+}
+
+pair zentrum(path p) {return 0.5(min(p)+max(p));}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+real scalefactor=19/13; // For output: height=scalefactor*width
+real outputwidth=13cm;
+picture kalender;// at first we produce a calendar for february 2006
+texpreamble("\usepackage[latin1]{inputenc}");
+size(outputwidth,0);
+real yc=0.5;
+pair diff=(-3.5,5*yc);
+pen farbe(int j) {
+ pen hlp=0.8white;
+ if(j % 7 == 6) {hlp=red+white;}
+ return hlp;}
+
+// farbe=German word for color
+path kasten=yscale(yc)*unitsquare;
+// Kasten is a German word meaning something like box
+path Gkasten=shift((0,2*yc)+diff)*xscale(7)*yscale(2)*kasten;
+path tage[]= new path[7]; // Tag=day
+string wochentag[]={"MO","DI","MI","DO","FR","SA","SO"};
+path[][] bx= new path[6][7];
+string[][] entry= new string[6][7];
+bool[][] holiday=new bool[6][7];
+
+// Now the necessary information for February 2006
+int start=2;
+int days=28;
+for(int i=0; i < entry.length; ++i) {
+ for(int j=0; j < entry[0].length; ++j) {
+ int day=i*7+j-start+1;
+ entry[i][j]=(day > 0 && day <= days ? (string) day : "");
+ holiday[i][j]=false;
+ }
+}
+
+for(int j=0; j < 7; ++j) {
+ tage[j]=shift((j,yc)+diff)*kasten;
+ filldraw(tage[j],farbe(j),black+2bp);
+ label(wochentag[j],zentrum(tage[j]),Palatino());
+ for(int i=0; i < 6; ++i) {bx[i][j]=shift((j,-yc*i)+diff)*kasten;
+ filldraw(bx[i][j],farbe(j),black+2bp);
+ if(holiday[i][j]) {filldraw(bx[i][j],farbe(6),black+2bp);};
+ };
+};
+filldraw(Gkasten,0.3white,black+2bp);
+for(int j=0; j < 7; ++j)
+ for(int i=0; i < 6 ; ++i) {label(entry[i][j],zentrum(bx[i][j]),Palatino());}
+label("\Huge Februar 2006",zentrum(Gkasten),Palatino()+white);
+// Zentrum=center; Februar=february
+add(kalender,currentpicture);
+erase();
+
+// Now the mosaic is constructed
+pair a[]=new pair[4];
+path p[]=new path[4];
+path q[]=new path[4];
+path kontur[]=new path[5];
+picture temppic;
+
+a[1]=(0,0);
+a[2]=(1,0);
+a[3]=(0,1); // a triangle with abs(a[2]-a[1])=abs(a[3]-a[1]
+ // and a right angle at a[1];
+q[1]=(0,0){dir(-20)}::{dir(20)}(0.2,0){dir(-140)}..{dir(0)}(0.3,-0.2){dir(0)}..
+{dir(140)}(0.4,0){dir(20)}..{dir(-20)}(1,0);
+q[2]=(0,0){dir(20)}..{dir(-20)}(0.8,0){dir(-140)}..{dir(0)}(0.9,-0.3){dir(0)}..
+{dir(140)}(1,0);
+q[2]=c_line(q[2]);
+p[1]=similarpath(a[1],a[2],q[1]);// arbitrary path from a[1] to a[2]
+p[2]=similarpath(a[2],a[3],q[2]);// arbitrary c_line from a[2] to a[3]
+p[3]=rotate(90,a[1])*reverse(p[1]);//
+kontur[1]=p[1]..p[2]..p[3]..cycle;// first tile
+kontur[2]=rotate(90,a[1])*kontur[1];// second
+kontur[3]=rotate(180,a[1])*kontur[1];// third
+kontur[4]=rotate(270,a[1])*kontur[1];// fourth
+pair tri=2*(interp(a[2],a[3],0.5)-a[1]);
+pair trii=rotate(90)*tri;
+// translations of kontur[i], i=1,2,3,4, with respect to
+// j*tri+k*trii
+// fill the plane
+
+for(int j=-4; j < 4; ++j)
+ for(int k=-4; k < 4; ++k) {
+ transform tr=shift(j*tri+k*trii);
+ for(int i=1; i < 5; ++i) {
+ centershade(temppic,tr*kontur[i],(1-i/10)*white,
+ (1-i/10)*chartreuse,black+2bp);
+ }
+ }
+
+// Now we produce the bijective images inside
+// a suitably scaled unitcircle
+for(int k=-1; k < 2; ++k)
+ for(int l=-1; l < 2; ++l) {
+ transform tr=shift(k*tri+l*trii);
+ for(int i=1; i < 5; ++i) {
+ centershade(temppic,scale(2.5)*tounitcircle(tr*kontur[i],380),
+ (1-i/10)*white,(1-i/10)*orange,black+2bp);
+ }
+ }
+
+add(temppic);
+
+// We clip the picture to a suitable box
+pair piccenter=0.5*(temppic.min()+temppic.max());
+pair picbox=temppic.max()-temppic.min();
+real picwidth=picbox.x;
+transform trialtrans=shift(0,-1.5)*shift(piccenter)*yscale(scalefactor)*
+ scale(0.25picwidth)*shift((-0.5,-0.5))*identity();
+clip(trialtrans*unitsquare);
+
+// add the calendar at a suitable position
+add(kalender.fit(0.75*outputwidth),interp(point(S),point(N),1/13));
diff --git a/Master/texmf-dist/doc/asymptote/examples/mosquito.asy b/Master/texmf-dist/doc/asymptote/examples/mosquito.asy
new file mode 100644
index 00000000000..7e299d264d3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/mosquito.asy
@@ -0,0 +1,82 @@
+size(9cm,10cm,IgnoreAspect);
+
+pair d=(1,0.25);
+real s=1.6d.x;
+real y=0.6;
+defaultpen(fontsize(8pt));
+
+picture box(string s, pair z=(0,0)) {
+ picture pic;
+ draw(pic,box(-d/2,d/2));
+ label(pic,s,(0,0));
+ return shift(z)*pic;
+}
+
+label("Birds",(0,y));
+picture removed=box("Removed ($R_B$)");
+picture infectious=box("Infectious ($I_B$)",(0,-1.5));
+picture susceptible=box("Susceptible ($S_B$)",(0,-3));
+
+add(removed);
+add(infectious);
+add(susceptible);
+
+label("Mosquitoes",(s,y));
+picture larval=box("Larval ($L_M$)",(s,0));
+picture susceptibleM=box("Susceptible ($S_M$)",(s,-1));
+picture exposed=box("Exposed ($E_M$)",(s,-2));
+picture infectiousM=box("Infectious ($I_M$)",(s,-3));
+
+add(larval);
+add(susceptibleM);
+add(exposed);
+add(infectiousM);
+
+path ls=point(larval,S)--point(susceptibleM,N);
+path se=point(susceptibleM,S)--point(exposed,N);
+path ei=point(exposed,S)--point(infectiousM,N);
+path si=point(susceptible,N)--point(infectious,S);
+
+draw(minipage("\flushright{recovery rate ($g$) \& death rate from virus
+($\mu_V$)}",40pt),point(infectious,N)--point(removed,S),LeftSide,Arrow,
+ PenMargin);
+
+draw(si,LeftSide,Arrow,PenMargin);
+
+draw(minipage("\flushright{maturation rate ($m$)}",50pt),ls,RightSide,
+ Arrow,PenMargin);
+draw(minipage("\flushright{viral incubation rate ($k$)}",40pt),ei,
+ RightSide,Arrow,PenMargin);
+
+path ise=point(infectious,E)--point(se,0.5);
+
+draw("$(ac)$",ise,LeftSide,dashed,Arrow,PenMargin);
+label(minipage("\flushleft{biting rate $\times$ transmission
+probability}",50pt),point(infectious,SE),dir(-60)+S);
+
+path isi=point(infectiousM,W)--point(si,2.0/3);
+
+draw("$(ab)$",isi,LeftSide,dashed,Arrow,PenMargin);
+draw(se,LeftSide,Arrow,PenMargin);
+
+real t=2.0;
+draw("$\beta_M$",
+ point(susceptibleM,E){right}..tension t..{left}point(larval,E),
+ 2*(S+SE),red,Arrow(Fill,0.5));
+draw(minipage("\flushleft{birth rate ($\beta_M$)}",20pt),
+ point(exposed,E){right}..tension t..{left}point(larval,E),2SW,red,
+ Arrow(Fill,0.5));
+draw("$\beta_M$",
+ point(infectiousM,E){right}..tension t..{left}point(larval,E),2SW,
+ red,Arrow(Fill,0.5));
+
+path arrow=(0,0)--0.75cm*dir(35);
+draw(point(larval,NNE),
+ Label(minipage("\flushleft{larval death rate ($\mu_L$)}",45pt),1),
+ arrow,blue,Arrow);
+draw(point(susceptibleM,NNE),
+ Label(minipage("\flushleft{adult death rate ($\mu_A$)}",20pt),1),
+ arrow,N,blue,Arrow);
+draw(point(exposed,NNE),Label("$\mu_A$",1),arrow,blue,Arrow);
+draw(point(infectiousM,NNE),Label("$\mu_A$",1),arrow,blue,Arrow);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/multicontour.asy b/Master/texmf-dist/doc/asymptote/examples/multicontour.asy
new file mode 100644
index 00000000000..0e8476de922
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/multicontour.asy
@@ -0,0 +1,19 @@
+import contour;
+
+size(200);
+
+real f(real x, real y) {return x^2-y^2;}
+int n=10;
+real[] c=new real[n];
+for(int i=0; i < n; ++i) c[i]=(i-n/2)/n;
+
+pen[] p=sequence(new pen(int i) {
+ return (c[i] >= 0 ? solid : dashed)+fontsize(6pt);
+ },c.length);
+
+Label[] Labels=sequence(new Label(int i) {
+ return Label(c[i] != 0 ? (string) c[i] : "",Relative(unitrand()),(0,0),
+ UnFill(1bp));
+ },c.length);
+
+draw(Labels,contour(f,(-1,-1),(1,1),c),p);
diff --git a/Master/texmf-dist/doc/asymptote/examples/near_earth.asy b/Master/texmf-dist/doc/asymptote/examples/near_earth.asy
new file mode 100644
index 00000000000..afdf64c6b5c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/near_earth.asy
@@ -0,0 +1,56 @@
+import three;
+import math;
+texpreamble("\usepackage{bm}");
+
+size(300,0);
+
+pen thickp=linewidth(0.5mm);
+real radius=0.8, lambda=37, aux=60;
+
+currentprojection=perspective(4,1,2);
+
+// Planes
+pen bg=gray(0.9)+opacity(0.5);
+draw(surface((1.2,0,0)--(1.2,0,1.2)--(0,0,1.2)--(0,0,0)--cycle),bg);
+draw(surface((0,1.2,0)--(0,1.2,1.2)--(0,0,1.2)--(0,0,0)--cycle),bg);
+draw(surface((1.2,0,0)--(1.2,1.2,0)--(0,1.2,0)--(0,0,0)--cycle),bg);
+
+real r=1.5;
+pen p=rgb(0,0.7,0);
+draw(Label("$x$",1),O--r*X,p,Arrow3);
+draw(Label("$y$",1),O--r*Y,p,Arrow3);
+draw(Label("$z$",1),O--r*Z,p,Arrow3);
+label("$\rm O$",(0,0,0),W);
+
+// Point Q
+triple pQ=radius*dir(lambda,aux);
+draw(O--radius*dir(90,aux),dashed);
+label("$\rm Q$",pQ,N+3*W);
+draw("$\lambda$",arc(O,0.15pQ,0.15*Z),N+0.3E);
+
+// Particle
+triple m=pQ-(0.26,-0.4,0.28);
+real width=5;
+dot("$m$",m,SE,linewidth(width));
+draw("$\bm{\rho}$",(0,0,0)--m,Arrow3,PenMargin3(0,width));
+draw("$\bm{r}$",pQ--m,Arrow3,PenMargin3(0,width));
+
+// Spherical octant
+real r=sqrt(pQ.x^2+pQ.y^2);
+draw(arc((0,0,pQ.z),(r,0,pQ.z),(0,r,pQ.z)),dashed);
+draw(arc(O,radius*Z,radius*dir(90,aux)),dashed);
+draw(arc(O,radius*Z,radius*X),thickp);
+draw(arc(O,radius*Z,radius*Y),thickp);
+draw(arc(O,radius*X,radius*Y),thickp);
+
+// Moving axes
+triple i=dir(90+lambda,aux);
+triple k=unit(pQ);
+triple j=cross(k,i);
+
+draw(Label("$x$",1),pQ--pQ+0.2*i,2W,red,Arrow3);
+draw(Label("$y$",1),pQ--pQ+0.32*j,red,Arrow3);
+draw(Label("$z$",1),pQ--pQ+0.26*k,red,Arrow3);
+
+draw("$\bm{R}$",O--pQ,Arrow3,PenMargin3);
+draw("$\omega\bm{K}$",arc(0.9Z,0.2,90,-120,90,160,CW),1.2N,Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/odetest.asy b/Master/texmf-dist/doc/asymptote/examples/odetest.asy
new file mode 100644
index 00000000000..69f8ea3fd07
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/odetest.asy
@@ -0,0 +1,43 @@
+import ode;
+
+write("integration test");
+real f(real t, real x) {return cos(x);}
+write(integrate(1,f,0,10,0.1,dynamic=true,0.0002,0.0004,RK3BS,verbose=true));
+write();
+
+write("system integration test");
+real[] f(real t, real[] x) {return new real[] {x[1],1.5*x[0]^2};}
+write(integrate(new real[] {4,-8},f,0,1,n=100,dynamic=true,tolmin=0.0002,
+ tolmax=0.0004,RK3BS,verbose=false));
+write();
+
+write("simultaneous newton test");
+real[] function(real[] x) {
+ return new real[] {x[0]^2+x[1]^2-25,(x[0]-6)^2+x[1]^2-25};
+}
+real[][] fJac(real[] x) {
+ return new real[][] {{2*x[0],2*x[1]},{2*(x[0]-6),2*x[1]}};
+}
+write(newton(function,fJac,new real[] {0,-1}));
+write();
+
+
+write("BVP solver test");
+write("Finding initial conditions that solve w''(t)=1.5*w(t), w(0)=4, w(1)=1");
+real[] initial(real[] x) {
+ return new real[] {4,x[0]};
+}
+
+real[] discrepancy(real[] x) {
+ real error=x[0]-1;
+ write("Error: ",error);
+ return new real[] {error};
+}
+
+real[] w0=solveBVP(f,0,1,n=10,dynamic=true,tolmin=0.0002,tolmax=0.0004,RK3BS,
+ initial,discrepancy,guess=new real[] {-30},iterations=10);
+write(w0);
+write();
+write(integrate(w0,f,0,1,n=10,dynamic=true,tolmin=0.0002,tolmax=0.0004,RK3BS,
+ verbose=false));
+write();
diff --git a/Master/texmf-dist/doc/asymptote/examples/onecontour.asy b/Master/texmf-dist/doc/asymptote/examples/onecontour.asy
new file mode 100644
index 00000000000..0d7f247fd39
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/onecontour.asy
@@ -0,0 +1,5 @@
+import contour;
+size(75);
+
+real f(real a, real b) {return a^2+b^2;}
+draw(contour(f,(-1,-1),(1,1),new real[] {1}));
diff --git a/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy b/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy
new file mode 100644
index 00000000000..5d9775d44dc
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy
@@ -0,0 +1,17 @@
+import graph;
+size(200,IgnoreAspect);
+
+real f(real x) {return 1/x;};
+
+bool3 branch(real x)
+{
+ static int lastsign=0;
+ if(x == 0) return false;
+ int sign=sgn(x);
+ bool b=lastsign == 0 || sign == lastsign;
+ lastsign=sign;
+ return b ? true : default;
+}
+
+draw(graph(f,-1,1,branch));
+axes("$x$","$y$",red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/orthocenter.asy b/Master/texmf-dist/doc/asymptote/examples/orthocenter.asy
new file mode 100644
index 00000000000..5c6807b4f25
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/orthocenter.asy
@@ -0,0 +1,40 @@
+import geometry;
+import math;
+
+size(7cm,0);
+
+real theta=degrees(asin(0.5/sqrt(7)));
+
+pair B=(0,sqrt(7));
+pair A=B+2sqrt(3)*dir(270-theta);
+pair C=A+sqrt(21);
+pair O=0;
+
+pair Ap=extension(A,O,B,C);
+pair Bp=extension(B,O,C,A);
+pair Cp=extension(C,O,A,B);
+
+perpendicular(Ap,NE,Ap--O,blue);
+perpendicular(Bp,NE,Bp--C,blue);
+perpendicular(Cp,NE,Cp--O,blue);
+
+draw(A--B--C--cycle);
+
+currentpen=black;
+
+draw("1",A--O,-0.25*I*dir(A--O));
+draw(O--Ap);
+draw("$\sqrt{7}$",B--O,LeftSide);
+draw(O--Bp);
+draw("4",C--O);
+draw(O--Cp);
+
+dot("$O$",O,dir(B--Bp,Cp--C),red);
+dot("$A$",A,dir(C--A,B--A),red);
+dot("$B$",B,NW,red);
+dot("$C$",C,dir(A--C,B--C),red);
+dot("$A'$",Ap,dir(A--Ap),red);
+dot("$B'$",Bp,dir(B--Bp),red);
+dot("$C'$",Cp,dir(C--Cp),red);
+
+label(graphic("piicon","width=2.5cm"),Ap,5ENE,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy b/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy
new file mode 100644
index 00000000000..1932e098c67
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy
@@ -0,0 +1,31 @@
+import graph3;
+import palette;
+size(200);
+currentprojection=orthographic(6,8,2);
+viewportmargin=(1cm,0);
+
+real c0=0.1;
+
+real f(real r) {return r*(1-r/6)*exp(-r/3);}
+
+triple f(pair t) {
+ real r=t.x;
+ real phi=t.y;
+ real f=f(r);
+ real s=max(min(c0/f,1),-1);
+ real R=r*sqrt(1-s^2);
+ return (R*cos(phi),R*sin(phi),r*s);
+}
+
+bool cond(pair t) {return f(t.x) != 0;}
+
+real R=abs((20,20,20));
+surface s=surface(f,(0,0),(R,2pi),100,8,Spline,cond);
+
+s.colors(palette(s.map(abs),Gradient(palegreen,heavyblue)));
+
+render render=render(compression=Low,merge=true);
+draw(s,render);
+draw(zscale3(-1)*s);
+
+axes3("$x$","$y$","$z$",Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/parametricelevation.asy b/Master/texmf-dist/doc/asymptote/examples/parametricelevation.asy
new file mode 100644
index 00000000000..ac0f0b09ad5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/parametricelevation.asy
@@ -0,0 +1,10 @@
+import graph3;
+import palette;
+size(200);
+
+currentprojection=orthographic(4,2,4);
+
+triple f(pair z) {return expi(z.x,z.y);}
+
+surface s=surface(f,(0,0),(pi,2pi),10,Spline);
+draw(s,mean(palette(s.map(zpart),BWRainbow())),black,nolight,render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/parametricgraph.asy b/Master/texmf-dist/doc/asymptote/examples/parametricgraph.asy
new file mode 100644
index 00000000000..a5688a6f9dd
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/parametricgraph.asy
@@ -0,0 +1,16 @@
+import graph;
+
+size(0,200);
+
+real x(real t) {return cos(2pi*t);}
+real y(real t) {return sin(2pi*t);}
+
+draw(graph(x,y,0,1));
+
+//xlimits(0,1,Crop);
+//ylimits(-1,0,Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks(trailingzero));
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/parametricsurface.asy b/Master/texmf-dist/doc/asymptote/examples/parametricsurface.asy
new file mode 100644
index 00000000000..299ea72eef7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/parametricsurface.asy
@@ -0,0 +1,23 @@
+import graph3;
+
+size(200,0);
+currentprojection=orthographic(4,0,2);
+
+real R=2;
+real a=1.9;
+
+triple f(pair t) {
+ return ((R+a*cos(t.y))*cos(t.x),(R+a*cos(t.y))*sin(t.x),a*sin(t.y));
+}
+
+pen p=rgb(0.2,0.5,0.7);
+surface s=surface(f,(0,0),(2pi,2pi),8,8,Spline);
+
+// surface only
+//draw(s,lightgray);
+
+// mesh only
+// draw(s,nullpen,meshpen=p);
+
+// surface & mesh
+draw(s,lightgray,meshpen=p,render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/partialsurface.asy b/Master/texmf-dist/doc/asymptote/examples/partialsurface.asy
new file mode 100644
index 00000000000..2e8ad34d834
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/partialsurface.asy
@@ -0,0 +1,29 @@
+import graph3;
+import palette;
+
+size(0,300);
+currentprojection=perspective(3,-2,2);
+
+real V(real r) {return r^4-r^2;}
+real V(pair pos) {return V(abs(pos));}
+
+real R=1/sqrt(2);
+real z=-0.2;
+
+bool active(pair pos) {return abs(pos) < R;}
+bool above(pair pos) {return V(pos) >= z;}
+
+pair a=(-1.5,-1);
+pair b=(0.5,1);
+real f=1.2;
+
+draw(plane(f*(b.x-a.x,0,z),(0,f*(b.y-a.y),z),(a.x,a.y,z)),
+ lightgrey+opacity(0.5));
+
+surface s=surface(V,a,b,40,Spline,active);
+draw(s,mean(palette(s.map(new real(triple v) {
+ return above((v.x,v.y)) ? 1 : 0;}),
+ new pen[] {lightblue,lightgreen})),black);
+
+xaxis3(Label("$\phi^\dagger\phi$",1),red,Arrow3);
+zaxis3(Label("$V(\phi^\dagger\phi)$",1),0,0.3,red,Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/partitionExample.asy b/Master/texmf-dist/doc/asymptote/examples/partitionExample.asy
new file mode 100644
index 00000000000..4974d99d9ca
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/partitionExample.asy
@@ -0,0 +1,27 @@
+size(15cm);
+import bezulate;
+
+path[] p = texpath("$\sigma \Theta$");
+pair m = min(p);
+pair M = max(p);
+real midy = 0.5(M.y+m.y);
+
+path[] alpha = p[0:2];
+path[] theta = p[2:5];
+filldraw(p,lightgrey,black);
+
+draw("{\tt partition}",(M.x+1mm,midy)--(M.x+5mm,midy),Arrow);
+draw((M.x+1mm,midy+1mm)--(M.x+5mm,midy+2mm),Arrow);
+draw((M.x+1mm,midy-1mm)--(M.x+5mm,midy-2mm),Arrow);
+
+filldraw(shift((M.x+8.5mm,midy+3.5mm))*alpha,lightgrey,black);
+filldraw(shift((M.x+5.5mm,0))*theta[0:2],lightgrey,black);
+filldraw(shift(M.x+5.5mm,midy-2.5mm)*theta[2:3],lightgrey,black);
+
+draw("{\tt merge}, {\tt bezulate}",(M.x+9mm,midy+3mm)--(M.x+15mm,midy+3mm),Arrow);
+draw("{\tt merge}, {\tt bezulate}",(M.x+9mm,midy)--(M.x+15mm,midy),Arrow);
+draw("{\tt bezulate}",(M.x+9mm,midy-2.5mm)--(M.x+15mm,midy-2.5mm),Arrow);
+
+filldraw(shift(M.x+16mm-min(alpha).x,midy+3.5mm)*bezulate(alpha),lightgrey,black);
+filldraw(shift(M.x+16mm-min(theta[0:2]).x,0)*bezulate(theta[0:2]),lightgrey,black);
+filldraw(shift(M.x+16mm-min(theta[0:2]).x,midy-2.5mm)*bezulate(theta[2:3]),lightgrey,black);
diff --git a/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy b/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy
new file mode 100644
index 00000000000..b69b0b859a5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy
@@ -0,0 +1,20 @@
+size(500);
+import graph3;
+
+currentprojection=perspective(-5,-4,2);
+
+path3 g=randompath3(10);
+
+draw(g,red+thin());
+
+triple[][] P={
+ {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
+ {(0,4/3,0),(2/3,4/3,2),(4/3,4/3,2),(2,4/3,0)},
+ {(0,2/3,0),(2/3,2/3,0),(4/3,2/3,0),(2,2/3,0)},
+ {(0,2,0),(2/3,2,0),(4/3,2,0),(2,2,0)}};
+
+surface s=surface(patch(P));
+s.append(unitplane);
+
+draw(s,lightgray+opacity(0.9));
+dot(intersectionpoints(g,s),blue);
diff --git a/Master/texmf-dist/doc/asymptote/examples/pdb.asy b/Master/texmf-dist/doc/asymptote/examples/pdb.asy
new file mode 100644
index 00000000000..b3b954c8c6a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/pdb.asy
@@ -0,0 +1,172 @@
+import three;
+import cpkcolors;
+
+// A sample Protein Data Bank file for this example is available from
+// http://ndbserver.rutgers.edu/ftp/NDB/coordinates/na-biol/100d.pdb1
+
+bool getviews=true;
+
+currentlight=White;
+//currentlight=nolight;
+
+defaultrender.merge=true; // Fast low-quality rendering
+//defaultrender.merge=false; // Slow high-quality rendering
+bool pixel=false; // Set to true to draw dots as pixels.
+real width=10*linewidth(currentpen);
+
+size(200);
+currentprojection=perspective(30,30,15);
+
+pen chainpen=green;
+pen hetpen=purple;
+
+string filename="100d.pdb1";
+//string filename=getstring("filename");
+
+string prefix=stripextension(filename);
+file data=input(filename);
+
+pen color(string e)
+{
+ e=replace(e," ","");
+ int n=length(e);
+ if(n < 1) return currentpen;
+ if(n > 1) e=substr(e,0,1)+downcase(substr(e,1,n-1));
+ int index=find(Element == e);
+ if(index < 0) return currentpen;
+ return rgb(Hexcolor[index]);
+}
+
+// ATOM
+string[] name,altLoc,resName,chainID,iCode,element,charge;
+int[] serial,resSeq;
+real[][] occupancy,tempFactor;
+
+bool newchain=true;
+
+struct bond
+{
+ int i,j;
+ void operator init(int i, int j) {
+ this.i=i;
+ this.j=j;
+ }
+}
+
+bond[] bonds;
+
+struct atom
+{
+ string name;
+ triple v;
+ void operator init(string name, triple v) {
+ this.name=name;
+ this.v=v;
+ }
+}
+
+struct chain
+{
+ int[] serial;
+ atom[] a;
+}
+
+int[] serials;
+chain[] chains;
+atom[] atoms;
+
+while(true) {
+ string line=data;
+ if(eof(data)) break;
+ string record=replace(substr(line,0,6)," ","");
+ if(record == "TER") {newchain=true; continue;}
+ bool ATOM=record == "ATOM";
+ bool HETATOM=record == "HETATM";
+ int serial;
+
+ atom a;
+ if(ATOM || HETATOM) {
+ serial=(int) substr(line,6,5);
+ a.name=substr(line,76,2);
+ a.v=((real) substr(line,30,8),
+ (real) substr(line,38,8),
+ (real) substr(line,46,8));
+ }
+ if(ATOM) {
+ if(newchain) {
+ chains.push(new chain);
+ newchain=false;
+ }
+ chain c=chains[chains.length-1];
+ c.serial.push(serial);
+ c.a.push(a);
+ continue;
+ }
+ if(HETATOM) {
+ serials.push(serial);
+ atoms.push(a);
+ }
+ if(record == "CONECT") {
+ int k=0;
+ int i=(int) substr(line,6,5);
+ while(true) {
+ string s=replace(substr(line,11+k,5)," ","");
+ if(s == "") break;
+ k += 5;
+ int j=(int) s;
+ if(j <= i) continue;
+ bonds.push(bond(i,j));
+ }
+ }
+}
+
+write("Number of atomic chains: ",chains.length);
+
+int natoms;
+begingroup3("chained");
+for(chain c : chains) {
+ for(int i=0; i < c.a.length-1; ++i)
+ draw(c.a[i].v--c.a[i+1].v,chainpen,currentlight);
+ for(atom a : c.a)
+ if(pixel)
+ pixel(a.v,color(a.name),width);
+ else
+ dot(a.v,color(a.name),currentlight);
+ natoms += c.a.length;
+}
+endgroup3();
+
+write("Number of chained atoms: ",natoms);
+write("Number of hetero atoms: ",atoms.length);
+
+begingroup3("hetero");
+for(atom h : atoms)
+ if(pixel)
+ pixel(h.v,color(h.name),width);
+ else
+ dot(h.v,color(h.name),currentlight);
+endgroup3();
+
+write("Number of hetero bonds: ",bonds.length);
+
+begingroup3("bonds");
+for(bond b : bonds) {
+ triple v(int i) {return atoms[find(serials == i)].v;}
+ draw(v(b.i)--v(b.j),hetpen,currentlight);
+}
+endgroup3();
+
+string options;
+string viewfilename=prefix+".views";
+
+if(!error(input(viewfilename,check=false)))
+ options="3Dviews2="+viewfilename;
+
+if(getviews && prc()) {
+ picture pic;
+ add(pic,embed("label",currentpicture,options=options),(0,0),N);
+ label(pic,cameralink("label"),(0,0),S,fontsize(12pt));
+ shipout(prefix,pic,options=options);
+} else
+ shipout(prefix,options=options);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/penfunctionimage.asy b/Master/texmf-dist/doc/asymptote/examples/penfunctionimage.asy
new file mode 100644
index 00000000000..38951e550d5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/penfunctionimage.asy
@@ -0,0 +1,27 @@
+import palette;
+
+size(200);
+
+real fracpart(real x) {return (x-floor(x));}
+
+pair pws(pair z) {
+ pair w=(z+exp(pi*I/5)/0.9)/(1+z/0.9*exp(-pi*I/5));
+ return exp(w)*(w^3-0.5*I);
+}
+
+int N=512;
+
+pair a=(-1,-1);
+pair b=(0.5,0.5);
+real dx=(b-a).x/N;
+real dy=(b-a).y/N;
+
+pen f(int u, int v) {
+ pair z=a+(u*dx,v*dy);
+ pair w=pws(z);
+ real phase=degrees(w,warn=false);
+ real modulus=w == 0 ? 0: fracpart(log(abs(w)));
+ return hsv(phase,1,sqrt(modulus));
+}
+
+image(f,N,N,(0,0),(300,300),antialias=true);
diff --git a/Master/texmf-dist/doc/asymptote/examples/penimage.asy b/Master/texmf-dist/doc/asymptote/examples/penimage.asy
new file mode 100644
index 00000000000..2aef9f9ebe2
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/penimage.asy
@@ -0,0 +1,14 @@
+size(200);
+
+import palette;
+
+int n=256;
+real ninv=2pi/n;
+pen[][] v=new pen[n][n];
+
+for(int i=0; i < n; ++i)
+ for(int j=0; j < n; ++j)
+ v[i][j]=rgb(0.5*(1+sin(i*ninv)),0.5*(1+cos(j*ninv)),0);
+
+image(v,(0,0),(1,1));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/phase.asy b/Master/texmf-dist/doc/asymptote/examples/phase.asy
new file mode 100644
index 00000000000..7256ffc515c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/phase.asy
@@ -0,0 +1,18 @@
+import graph;
+size(8cm,6cm,IgnoreAspect);
+
+pair S0=(4,0.2);
+pair S1=(2,3);
+pair S8=(0.5,0);
+
+xaxis("$S$");
+yaxis(Label("$I$",0.5));
+
+draw(S0{curl 0}..tension 1.5..S1{W}..tension 1.5..{curl 0}S8,Arrow(Fill,0.4));
+draw((S1.x,0)..S1,dashed);
+draw((0,S1.y)..S1,dotted);
+
+labelx("$\frac{\gamma}{\beta}$",S1.x);
+labelx("$S_\infty$",S8.x);
+labely("$I_{\max}$",S1.y);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/piicon.eps b/Master/texmf-dist/doc/asymptote/examples/piicon.eps
new file mode 100644
index 00000000000..56bf59bde96
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/piicon.eps
@@ -0,0 +1,1135 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 147 144
+%%HiResBoundingBox: 0.000000 0.000000 147.000000 144.000000
+%.........................................
+%%Creator: AFPL Ghostscript 814 (epswrite)
+%%CreationDate: 2005/05/07 23:32:22
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+% This copyright applies to everything between here and the %%EndProlog:
+% Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved.
+%%BeginResource: procset GS_epswrite_2_0_1001
+/GS_epswrite_2_0_1001 80 dict dup begin
+/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
+4 index eq and{ pop pop pop}{ PageSize dup 1
+5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get exec}
+{ pop/setpagedevice where
+{ pop 1 dict dup /PageSize PageSize put setpagedevice}
+{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
+setpage}if}ifelse}ifelse}ifelse} bind def
+/!{bind def}bind def/#{load def}!/N/counttomark #
+/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
+/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
+/w/setlinewidth #/J/setlinecap #
+/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
+/m/moveto #/l/lineto #/c/rcurveto #
+/p{N 2 idiv{N -2 roll rlineto}repeat}!
+/P{N 0 gt{N -2 roll moveto p}if}!
+/h{p closepath}!/H{P closepath}!
+/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
+/re{4 -2 roll m exch dup lx exch ly neg lx h}!
+/^{3 index neg 3 index neg}!
+/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
+/q/gsave #/Q/grestore #/rf{re fill}!
+/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
+/|={pop exch 4 1 roll 1 array astore cvx 3 array astore cvx exch 1 index def exec}!
+/|{exch string readstring |=}!
+/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
+/@/currentfile #/${+ @ |}!
+/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
+3 1 roll}repeat pop pop true}!
+/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
+/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
+/Ic{exch Ix false 3 colorimage}!
+/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
+/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
+/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
+/@F{@ &2<<F}!/@C{@X &2 FX}!
+/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
+/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
+/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
+currentdict end image}!
+/~{@ read {pop} if}!
+end readonly def
+%%EndResource
+/pagesave null def
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+GS_epswrite_2_0_1001 begin
+/pagesave save store 197 dict begin
+0.1 0.1 scale
+%%EndPageSetup
+gsave mark
+Q q
+0 0 250000 250000 re
+Y
+q[1470 0 0 1440 0 0]concat
+147 144 8[147 0 0 -144 0 144]@X false 3
+colorimage
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2rts7Z*U`K_\Jms=`eDnV)BF^#aQnF?PYs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts6f@F>Y#U0HO],N3WK,=
+aI!gMUk8XHs8;cjs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8Vfco#@%As6tC0iGZDf&oh%mnF5uJs8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2oss8VNUn6AL!Wd>3;]fH,mNQ@M*[&/KUs8W#oqZ$Tqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,mo^^"g,QI7\
+pYfu%M\9r3)=[.cs8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,en*jRQ'rlTik.NeTs,G-g)7QPss8W,sr;-Hns8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr<#up@\!rR3_h&IJ;Z3]S[5<=;p\unc/Xhrr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#umdKXM8/8.O%Hb>a
+s8S)$RMiW6KE(uOr;?Eks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr)lss7,UF`0_bKnUC5hB"Ea,CfVJCnF?PYs8N#s
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2rts6f@F>Y#U0HO],N3WK,=c(,`_W.Y-Ms8;fks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;6?js8T$jM6ML5
+s7h<Ag1@gL%Vo&_n*olIs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8VNUn6AL!Wd>3;]fH,mNm4+4\Z1;^s8W#pqZ$Tq
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8;cjs8W+uSV"1u"981Qp"EibL(8$")Xm1cs8W,urr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,en*jRQ'rlWj
+k.<YRs,kQt)S)l#s8W,sr;-Hns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#oqZ$TqXeLKXJcu,LM"95+\:kE.<>t>qnc/Xh
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr<#un*faK8/8+O%Hb;`s8S5+Sf5/>KE(uOr;?Eks8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,sqtg?ms0/;O
+\:Y"cq2+[p?FGLsAPsH7n+$GXs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts6oFG=\9F.HO],L3WK,Ac(5iaWe:?Os8;fk
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!r;6?js8T@"K=HXAs8.]Fe6]J7%:`6Rn*ffHs8W)trr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8VQVn5r3r
+WI,0;]K-#lOj0I9\>k2]s8W#pqZ$Tqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;cjs8W,+Vh;O:#ljd[o$gmNK+2?f)Xm.b
+s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#ss8W,emdO4H'rlWjk.<YRs,kTu)S<#%s8W,sr;-Hns8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#oqZ$Tq
+[&8YhL^O1ZN:PJ$["Aiu:E&]jnc/Xhrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#umdBRE7hr%O%Hb8_s8S5,Sf5;BKE(uO
+r;?Eks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,sr;-Hns0en]\qpdor/C3r=gWek@87[-n*pAWs8N#ss8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts6f=E
+<C[e(Hk#5M3WK,AcCPreWe:?Os8;fks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;?Eks8TU.L:`?Ns8@oIdoj&2%U_sH
+mdBQDs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#u
+rr2opr;-BiqYg?grVcZnrr2orrr<#urr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2oss8VNTn5VsnWdG9<]K-#lOj9O:]W6\bs8W#pqZ$Tqs8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;fk
+s8W,/X+n6H$NL'ao$^[IK+;9_([g_[s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W,urr2rts8N#s
+rr2orrr2rts8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#srr2oss8W&qqu-Kks8W,urr2rts8N#ss8W,urqu`mqYgBjs8N#srr;usrr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,emdO4H'rlWjk.<YRs,kTu)SE,'
+s8W,sr;-Hns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W#pqZ$Tq];p\$NXPmdORpn"[=Jco8f-m_n,NFfrr2oss8W-!s8W-!
+s8W-!s8W,urr2ors8W,trVQQlr;ZfsrVZNjrVZZorr2ors8W,urr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts8N#sr;?Hls8Vcao#.kmf=m!]Z$Y9R\G>pq
+q"OL^s8W)ts8N#qrVZNkrr2rts8W-!s8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#u
+mdBRE7hr%O%Hb5^s8S5,Sf58BKE(uOr;?Eks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,sr;-Hns1PLg^lAj'rfH^!;71rb
+>"KOtmdL2Us8N#ss8W-!s8W-!s8W-!s8N#srr2rts8Doos8W,pq"XIOnc&Oes8W,urr2lpr;Q]p
+s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,urr2inqu?]r
+e^;=:O@[*C#j/r`gUJuhW@c,U+j$NXcF8GTb-h9Ls8N#srr2oqrVQTnrVuots8W-!s8N&us8W-!
+s8W-!s8W-!s8W-!s8W,urr2rts6f=E<C[e(Hk#5N3WK,AcCPreX+UHPs8;fks8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+r;?Eks8Ta6L;T#[s8A#Icr%&u%Tu@>mI'HCs8W)trr2orrVc`prr2orrr2orrr2opr;-Hns5;SM
+W/jN?H6LM?I,NShp\=X`r;?QnrVlfprr2orrr2orrr2orrr2orrr2orrr2orrr2orrr2orrr2or
+rr2orrr2orrr)fpr;?Hks8UBc[W>CRY'^QLb=)C-KDtn7rr%fUomcYi?/2nBaI!gkX&RWbP4J,-
+s8W,urr2loqYpKmrr2orrr2orrr2orrr2orrr2orrr2orrVc]ps8VKSmo2alWI#*9]/fokOj0I9
+]W6\bs8Vunq>UBmrr2orrr2orrr2orrr2orrr2orrr2orrr2orrr2orrr2orrr2orrr2orrr2or
+s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#u
+rr2orrr2inrV?9dqYL-dqY^3dr:p$\s8W,1WeA<O%0-9ema"b6J.>aR)!L5Os8N&oq>:*frVuot
+rr2oss8W)trr)fns8W,Ncb"mA$aYEkeY+,8TbP\<)Ph]tfZpl(s8W)trVlfqs8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rtrr2rtLO3$79*'r`'<[$.e"nGHX=E,2/a^D>
+q:]3Unp:<7PQ1T?p#0?8ZR<h`-e,h`o^_GMs8W,urr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+s8W,emdO7J's2oolG#@Zs-(m))SW>+s8W,sr;-Hns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#ss8W,urr2cjr;6Birr2oss8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#ss8W,urr2flrVHBgrr2oss8W)trr<#us8W-!s8W#pqZ$Tq]W?k*NXYscORCCk
+YCI*d7i:X]nGiOgs8W,oq"O=Kn+-&>o()>@nF-)FqqTW1F&`O)B+)>2*o<b=s5@8`q1\@a9>Q]#
+]:W6to_%S<p@@bCnaZ5@nal>AoC;ABnaZ2?nac5?oC;ABnaZ5@nal;@oC;ABnF,oBq>SUV[:)N-
+E`Wm0AdOT:%\n=^UNmEJHk3Z@'ul@Sd@MH?ZS;$t;#^!3s8S>]np'3-0ufP*`3P'Zl1=B4p[RbB
+nF,u<nFQ/<oC25?nF,r;n+,r9nauJIi8EZl5o-)7%G@pDq!s?[PT$g#IJWmAmd9H3n+,u:o'l,=
+nF,u<nFQ/=oC28@nF6&=nFQ/=oC28@nF6)?nal;@oC;AAo()DOrr2rts8;fnrVc`qs8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W)trqlTkr;?Nns8W#pr;6Bf['[qoE2%]+Y'G;r
+H$QT=GcQ(9]Qn6tcC,CGqMjmd:U5T`903c%D52E'YC_A85X:#'!)a+0?3^^A#7"N>#[dc<9`P/i
+82VZWE!3_/);D2CpYTEZs-!?MHJ>GCT6M/$,>naPEs`7b#RP/M$"jPNBF5)]$41MT$#U%VE!Zki
+#mtVY$?-=ZE!cqk$Oh%[#@R`=@fusG1FPUr6kW`o&5"nk<'Lt1:C2GR!0qL-Xah(uN#0m5*p^L#
+r9//#s-NQGDq:a!LLVnJ&pY'(KbG/G&JKL('71?*HP.!?&efa-'7LQ.Ih<<B#mkV]$uumjF:o74
+%h<Ui%sS^$J.`NE&efa-'7UW.IM*<@&JKL&'719&HOpa7&.j.!&:+itH4:@.$Oq.b%<2XZD%R@r
+BkaEN[E\aOrqlTkrr2oss8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr<#uqtp<hr;HWorr<#u
+[C+4lBqlI^I0p@7$k&18)PJ8rX!8mn-Rl;A,f*DI@+Cn_s7hT@b>5Bo"'A6.,q?__0!QoXZ8FPT
+5=!CS4ioiOaZr275XELY7*J"ec::CNA5uNZ@L&o^&BBqNkIWSLoRQu<Ms.Z'Nb8PV2O@-5i(Qhj
+92*f/9[up6ePAul:J]P;:tAH?ek]/o:f?(L<8LYThGmP2=BOQb=lNLbiDEY=>[?&i?J/OffN__@
+=&uD3>)6Tc;dr?&Kk(@ZGSIQ>(!rBfm__3foR[#APk)s^TlguM;P@/qpKq:g?XN#)?ftg(k[7c^
+?si/+?g1s*l!n2h@:AM1@-h9.l=")e@:8A.?g(m)l!Rl_?si/+?g1s*kZqKW?!c`$?fta%jBc-Q
+>@$>q?0,6oi)a%=<E7mP:tSB5eLN2Z#7#oS8s&oGqYgBlrr2orrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+s8W,urr2cjr;HTns8W)2][Ai&N!'<7,:0Nr=Q!k+n8E:=B4pO;@-1HkhcEt;;HWF)>BA5a&-)Hc
+m`JD/IfNnVGuI`/='!jO<S:2HfM#&j8l!i-:=Dj2dS!<_92*c,9[-1&cU1(K3Ac@g57<Ec&$gg$
+hPqt%nU:H1K\WI?M/5XK7aFLmb="eB6UT$a6cVP^_a$Q+5XN@R6Gl#S_`^9'4[?tL5fGlO`B?K)
+4?pbH4Mj9E^,nBl4$(2?42Ep<^,J'i2`f/;1r(1TFs\7t9f`]/?3m*F'tK/8go)FniFW&hQM]E6
+_iY[28s(GN^b[jU0Jg0m1Uf%o[kKVI0Jg0l1Uf%o[P0MG0Jg-l1U\tn[P0MH0f-9m1Uf%o[kT\J
+0Jg0k1:Akm[PTkM1c;]u27GJ%[l?CZ3BFc53kmg@_EC0&5=37R7*&V=hfEl5(Drl87ZRNKrr2os
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2oss8W-!s8DoqqYL-is8TmMdlKOH"9sK=42c#SojhY!5=!(,+J&rNL^=B=
+"pf__#C6U\FoVMo6SUs]V&01,N:"\]Z%WWP1+N>)Gm4It"9`rM"*aeIGQ7eh!!%'?!H8#?E<#uW
+!!$s<!,quBFTVhu!X3]q+XhSA$F5="i3=g4r/LO2E6=FM4"NAl!-ePIDu]o[!!.-@!HS5AEW?,\
+!!.*?!HS5@E<#uV!!$a6!,DQ7BE/$I!!$d7!,qo<D?'ZP!!$g8!,DQ7B`J-G!<Hs>"aC(OJcl3V
+*uZ5(6j\lj(9`B-c^GgHdo$/FQi,]C]8-h:(et&2C]OQF!!$L/!+Q!/@fQL=!!$L/!+#X*?N:(;
+!!$U2!+Gp.?iU1:!!$L/!+Z'0@fQLB!!$j9!,MW8C]FHO!!$g8!,MW8CB+?M!!$m:!,qo<EW?,\
+!!$m<"*uj`[rHKc'c)n;ZHW@Ks8;fns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2ors8W,rqu$Kos7GpVI=/(##^@jO[W$6\
+>@->9-`I7RIK0@a!!$L/!*K:%9E5&V!!#1a!B^>^4?tPDfqoeipPA4X9X'0_82q"X!&O]V3<0%=
+!!"tY!&srY2ZNhN!!#Oi!'pSb8cSic!!#Uk!&srY2#mV<!!"qZ!"<O7$,;H8mDqcss.Ao+9<3IT
+*#1F5!&=QU0E;),!!"\Q!&+BQ0E;),!!"\Q!&"<P0`V2?!<>=m$qL@!63%!O!!"YP!%n6O/cYl(
+!!"VO!&"<P/H>c#!!"DI!%%[G0`V2(!!!*B&ccfF#H!"had!_:bt7s7PPsBC]8I7J*BFZB<t5[/
+%Lu&?%S7-?8.Q5'*$&8u(Kq7U5Re,d&e[tS(0(eQ7h-##%Lu,B%o3E849,@0!!"ML!%S$L.f]Q"
+!!"VO!&"<P0E;)+!!"YP!&4HR2ZNhQ!!$F-!-h%+bYCse6q!:>s8W)ts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W)trqu]m
+rVc]fp%LmEOT>N<@V"b>C[`c&XT8NN!!$j:!au'/57%WU"pQeO7UM"/SUGpLJ:E`3Jsq7/:=#@E
+s7qH<a\/dg&5GG&F*34hJs(V5O+2Y?J:N`1J<Nhn+*V<OJq@0H=sm-/(+ggOG^5$pJW5//MLU,4
+JqTY$=A+-K"43JVq;Q&eq30^=,Bd6-GBo-uJW##-M1:#1It*6'ItrN'LOXf.JV&c(GC<@N'7OXI
+kN7D@?Q_s#'RG(TJUrQ*ItN6#KR\K)It*-$ItN6#K7AB'It**#It<-#Jp_s$L51Xs>=Da]!2b5a
+a,q/2b";X5QMB08["Ah-^T@>2s6oCCnaZ/@oCV;3lCaJn`N+"5[QaEQHIT6#cH!Njq"jLKn*f`6
+qYL&u\@Qj,H@^X$It**#ItN6#K7AB(It*-$ItrN'LOXf/JUrc+HA<"A2uiqQ!!$dP)OG/PnLH,\
+jlPe-s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr<#urVc`lqY^Bns08iO"U/fr0=5tKr('E(#RQ4c!,;Q:@K6Bm!!"3,5$#M9`:s#u
+p@e.Ys8W)trqu]js8W,5Y(afT%KH?]m`A,)J.GXK([UPXs8W,urr2oqr;Zfskhj>,T,7P%HN3V^
+jKB\[?N?adJH,ZLr;6Bjrr2orrr<#up\F`3C.FJ%"Q6L7s88&Oem,J3&Du0[s8W,trVZ]qs8W-!
+s8W-!s8W&qqZ$Tq`jh8JL]mbHEW>ZZhk_-FC)ld6o)Jairr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr<#uq"aeq>YA-]!2k>daHRP9cqOK>QhAd'X*bE-d(o\]s8;fls8W,dmdX4=%B+CL
+l+f=Zs,kEi&@A3Ys8W,sqtg?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqcKf
+s8W+EH$fSl-3OH]!WmaU?f<Uk\UK"2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W&rrqlTks8W,'Yg!1LGY1TUF*%%%.B3@JEWQ;U
+!<Gsr!%C)q;o$2as8W&rrVliss8;fnq>'m`qYU'^pAb0m\u^P&Nt)-eL[N8WY^d6b72G(Mm/R+c
+q"XX`s8VWYm\kRKnBao0qiTmA0Vit)@8.^)l0SHMs7uKdqYL'bqYKs\p](9n]=b^g:CY.#')(@"
+s7VAhOq<Y!7J6EQqtp6cq>0saqYL'bq>'jcrr;6Jl\K6lgSu_&r/U3h9:Tl#Wh>+Hs8VlgpA4X^
+qYL'bqYL'bqYL'bqYL'bqYL'bqYL'bqYL'bqYL$`q>UBlq"jkt>YA9c!3(MgcBfFDd8L#ERHqjU
+a.Pp"r;QZnqu?]rmdKUO9GsmY&EUSds8S)"R2`N2L&_2Qqtp3frVlfqrqu]lq>'m`qYL'bqYL'b
+qYL'bqYL'bqYL'bqYL'bqYKs\q#CBo\@B$K!%%^H=9&>@7S(Z_43`/$\,ZL.s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#urVc]nrVl`mqaa86
+"9a9`@-D68lkUJ-!!$d;"ChH54:)<BZ*C\9s8W)trqu]lqtp<jrr2orrr<#urr2opr;-Hns1GIf
+_iG9,r.j^_8[*aV<CI_imI1)Ts8Mupp\F^!Sl=[Y/H>a8p!$4PP8\L?!0rXrs8W,rqtg<krr2or
+rr2oss8VunqZ$TqW1Sd0B)q><70!:TjgR(-CDZI/n,NFfrr2orrr2orrqu]ks8W,#TnT@e!;kY`
+s7_6"V&tA$(?t)Js8W,urr)lss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W&rrVlfp
+q"jl#?V4iu!N^klc^>[GfNA1RRd7jLcDX_<qu$Kos6f@D>tPm4HO],N3WK,=aI*pPVM"pKs8;cj
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2rts7#OH%1Off!)3FnD)OAd
+:/9V78<j/Sr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2oss8W&rrVc]orVZU]6])6ZMf<S-<E@c\$\n]^C'=cD!!!p193V#]o`"jhr;?KiqtpBlrr<#u
+rr2oss8W-!s8W-!r;?Eks8Ta5L;&ZVs87Q<btP?m%p2:;m-X<Bs8N&us1kgl_MnZtqM>(1CsSLg
+P&(Lo2&#6>mJm4drr2lqrr2rts8W-!rr2orrr2rts6T+;N,'6\U`]X5NUkIsW-Jfub.RcSs8Doo
+rr2orrr2rts6Aq;L1_O^W?_H@MY,G"XaC;%E(Kp*s8W,urr2orrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2oss8W&rrVc]nqtp:r<C:Cl!j@4pd$l$Nfj"LVRcM+9aei#:s8VQVmTiBu
+Wd>3;]fH,mNQIS+[]"iYs8W#pqZ$Tqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+rVc]ps8VHPl3n(H!!#[m!,aeY^JRqd%M3:BnF-DWs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr<#urVc]nrVl`mr'Ec3&JLRYHMp?*c3"5t!!$[4!)<n007SJ.
+oCMMPs8Vunqu6Tos8W,urr2rts8W-!s8W-!s8W-!s8;fks8W,1X+n6E%0-6Xm`eG/J.GgS([LGT
+s8W,Jc+L?8')LQps7hK1W[=Zo'j='8[^NOBs8W&qr;Q]prr2oss8W-!s8N#srr2oss8VNUno7hS
+`0(c2m!A^"I'S5%Xe'k=s8W&qqYpKnr;?Hls8T*kKr&hjr8(c[pkIS*-@oJ._n`e^s8W#pr;Q]p
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8Vunqu?]r]"5Hs(]ekb%BP1!
+d[M3PhIHTcS`774c`:46m-\1O(92]ik.NeTs,P9l)7ZYus8W,sr;-Hns8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2rts8Dops8W,gnF$hs0E;)O!!%1B<SB8f_g-O6s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W&rrVc]or;?I[6^&K0Uj77b
+4$CC\!d=\IB)hp$!s9RN[(-/9s8)TgrVc]ps8W-!s8N#ss8W,urr2rts8N#srr2orrr2flq>^Kp
+\>b1oM@BO^J*tTSZ@NNi8J^[[mem(aZB.H3ZRPqSRIA!Z^Ps+;5lch"J,fQKqYL'gs8W)trr<#u
+s8W-!s8W-!s8N#sr;?Eks8T3pJ"^f]o\!IKqN0:(+FIZ@mdTfIs8W&rrVuotlg*qmBcZ!.,QI\"
+o[['HIKkXP9)JSes8Murrr2orrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2oss8Vunqu?]r['[1f)Zk7f%BP0ueY+&]iFr8kSEIXB]9u/m8K+XW%Hb5]s8S5+Sf52>KE(uO
+qtp3grr2orrr2orrr2orrr2orrr2orrr2orrr2orrr)fpqYL*bq>:$bqu?]rZEgh;!'1)[A.9'/
+DJo"\(RobuV>pSqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#u
+rVc]nrVl`mqa3c9+<dh2H2]NR[K$;J!s3!7!^?tt,dXhas8W,oq"Xjfrr<#us8W,urr2orrqu]l
+q>'paqY^3dr;Q]ps8W,sqtg?ms0nq^\:k4gpNH,Q9=9?^>Y#S&qZ"L?L;o;Zs87ZNk%iJ;)hqf*
+Cgfj1qu-Qps82]kqtp<ks8W)trr2orr;?Nhq>:$br:]jYs8W+dP_Xos!:%?^s8SJL]fVd0([UMR
+rVccjp\4^fs/DZGTPso+g0agQM:ngTHs$Zj^:4.Bs7lBbqYL*cqYU-cqtg0dqYL*cqYU-cr;HTn
+s8W-!s8W-!s8DoqqYL*cqYU-cqtg0dqYL*cqY^'\p](9nYHP2T)$"h_$a,1!eY+&\i+E#hRcqUL
+Tlpp:FV3lN2#mT7e"RhqXb6ZRs8;fks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+rVc`qs8TF3]*&6j!!$4'!I%./cXg\T!<R/J\&\OKs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2oss8W&rrVc]or;?FZ7$]&DZ#t9g.P._&!,r)FAcMf`91rXbp%84]rVZTk
+s8W,urr2lprqcKgr;?Nns8W)trr2ors8W,urr2N[oCDJDn*f`Ds8T3nJ$st7s7'mrbtGBq%r#&d
+^q-VRL)oX1>kIE=etXXcGSa(7#.(\Cs8W,dmI'cEq#CBorr2oqrVl`mrVuotrr2oss8W)trr<#u
+o()=,Bc#3g)?9Ggr7u%^Er`D@N;rqXs8W,Vf<hl<&G=7,s8S;]i(pn:!1SdDs8W-!rr2orrr<#u
+s8W-!s8W-!s8W-!rr2oss8W)trqu]ms8W,sr;HWorr<#urr2oss8W-!s8W-!s8W-!s8W#pr;Zfs
+`lGta3"1:F$a#+!etO5_i+2lfQhAa!Wd5,pTIp3DPKK@5\#4QMrr;KVmIKi=o()ABo(2GCoCDJD
+o()DCo(2GCo^VJDoCM\AlgKIYRtcWq7RhP$!(?kfB+,3*923fQEqKtTP<hKcs8W,urr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#urVc]nrVl`mr'No<-7H0BGk`U7WW3$:
+"U/B9!%^`7>5S3ns8W,rqtpEns82]kr;?Nns8W-!s7Z0\qYL)u\&`T1S:5phF*"8h%UfMF@gWNR
+!<[3m,<*T+'*%0%o#aD2L^um0.f]QS#R+E>$>9_M@0H[;!!$:,"'uHICBk)U!<HCc3d\`\cN!qE
+qtp?ls8972b\qHrH@)];H)c7>X))^Q;*HGFN=PX@C]F!]aHI'dE`m^:[!-\f75Ql37kf=2@s`K=
+D,NGY.4.ndF+].PH$Q65H_l(9V0mWdI!_];I&24<VL!QaJqC#glgb#Ts8DoqrVc]]m-TIZUO.?a
+I!hf=I&24<VgEchH[D]<H`2+2UQ(8G2E,1l(]\tl$*/Xoe=I`Xh-L'\Qh&U*_3#M&O')Yl<!<@r
+#RFK:#?V6;=pPC;#7"Q?#[[fBAI&QR#7+rJ#\jVND$^Mi#mtYP!+,^+A,u^R&e^?f3kT0@n7?1s
+)B,"D!*m+Hc2[hDr;?Nns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W)trr<#u
+r;?I[7$Af>X`\mb-7>_l!,i#EA,lT[8kN4_qtg9irqu]lqtp?ir;HZqs8)TgkND5iMmGQ1L&_9h
+#mteT!-\VPM\d8)0JU'r35.F9_Dsd"7Rau!MBr5R8b0k_Z%O,m:<?%!g.=rf7nD'"9$p.$cpgUP
+7n:ff5fPrN`%s9b#ml(l%nQ*Tmf!+`9MC$<!-o(fRL^$q%M4j8&<I8/U,FT&V0N(+a%?=2RHM"3
+G?5F\#)i`kM[pGj#nEI-"criiNW]ZQ#nN=-$&JW^IK0A!!!%KK!.4bHHN4%n!!%?G!."VFHN=.o
+$4:gXYfZqFs0fDS#RF</!G)62H2mqj!!%<F!.+\GIfKJ!!!.TM!J:@PKFeZX)&no)1HB\_!NLYe
+d@2-NeQ2_MMY>OmV03;(/92j[[4!K*-n2;L/@$iZYV.Z:0f$9p1V#G(^,\9k4?peP7*.qicV73d
+>[?Au@d%B6l"Ol"AS1?i42D%'HiX7K[C"0Xs8W#prVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#srr2oqrVl`mqEdN.)&]&jGlB*@XT/?="U/B9!%1B2<r;dkrVc]jq>:*frVlfq
+s8W,6^="r!Jcl6u"p]i--`p-=eR;qOCM`KZEV='[mo39=:/BA4:!lR,e4E6LY(@_e`&I(t0s6*O
+5XNFW7En1gb!eeC7nLlo8]jRqb=bLR92<r.9@%BjnjuL$!!$&WMPHE#YQ+Z.='=F$EV=*[nS;q3
+C2<<VDuNL+Vh\dhh5i"(r0$Zu=K[,^C1ObeC]%m[l=O\rB5$^JC@#VJl"4SlB4gIEC$o\MmqHP-
+Bkm-JB^fVJnRu\-Bkd!KB^BMOnL#`g%Luk=p%1jKCB+?=1c;dVBC'/>l!\/h@qG%>B'a)?l==Mk
+AnUIBB'j)=l=+8j?=)h_3C%[f!3(Dbb*<k2^c;5?:$Af*Vgogt@G,.#l<dr]?=)Yr>i8[dhH3k8
+;cMLK;UnQ>eOiQ`7nLom7`mq]`B$)p2)Vfs19_fDTEPLL!!$70#Z7t9`rH)=qYL*hs8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts7uKfs8W+FHDUlNKm7nC2)`#G!-&/G@fQKY
+8kN.^r;-?hrVHBfrr2oss8KaHe2]RF!!%'c-)t-PiG`c.@V+k!:!kaT\/l``',?T;%>P,lI0'Ot
+!!.$=!,VlBB:sJejKC,lX=LE*'I"Dq!!%*A!Gqf:E<#uT!!$d7!,DQ7C]FHN!<[aT?fj+"ZiC).
+<)e!38Uq'QM/-qt+<dE`#_Wd%NXuk`&/1*9'9d$(*6=BYqWN#"mt&fQ%8&ZN#S*C@(Q]CLQPUR,
+(E8\X)j_?[QPpj5*$(Lg*h+,iS/`T?*?^jk*h!rdSf8]C)&\fE=klG9cO:5#jQ,>8'Lr-'DbX$W
+;,Z![(RZ<fSfJoD*?L^h*LdlbQl$d/()`GS(mc!TOqeh!&/(9V*[u26$DVna]o3`RRiT\?+Ld1<
+75dsD#*B<'KaJ0>$4;Ci#_E6dI0Bh$"U02R!d4PDC]FHO!!$d7!,)?4@fQL>!!$"#!_WLn92/-#
+p%A%WrVcZlrVuotrr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,sr;HZqs0oJ`
+$4MJuB^J;]c2[ig!s2s4!%gf8=oA3pqtp<gqu$Kork?+p3]`#r!-BP9Y@hS<Bl!3(6,a]\Qj*hH
+!!.*?!+Gp.>lXk"!!#1_!&srY0*__J%hDVJ$V>VH&&XSR_iu@EIh,OD)Z]q)&.Co/"#^Pr8Ic5)
+%Ll,D%o<6+<#m!KCi/eZ(7,"$7!!F"*?ArB-EC`km03fF!!$%"!'pSb4ok[M!!#P=*?qY;%HbAf
+s641OW?m+%'*&#1!!$1&!([(i7fWNZ!!#Oi!([(i8,rW\!!#Oi!(R"h8,rW^!!#pt!+,^+>Q=bE
+?<uVK27sY=EilIL!<Gam!dS-[juPQ:!!$1'!D<Cm8,rW\!!#Oi!([(i7fWN[!!#Ff!(6ee6N@*V
+!!#Rs!t/-m!ge!FWe)(lKGg(n#ppQ5!!#Cf!BpJ`4obRA!!"qX!&afW2?3_2#6mL*%TNuJ9b%Y-
+%Lu)B&4Qg,1dsiJOH?C(kiqs?q#CBor;?Kms8W)trr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr2orrVc`nr;8cDNB]\LA7Y!1#_W3ZB)hon8kNLhr;-<fr;?Kjp%A#M8WEcNDCI'=
+BPR!ND"'AD\d8au!!$j9!+>j-9)nrK&.h>8"YN;8@Yor2It*B"G'pg0])):"nF?1*E^u4'!j74s
+P&D(04:H+,%VJ<4@9cLsoCVPAnFcJHhr!Ds"_'AK]O"t+!!%3U&m@Re?iU17:J]G6:X]:DD?pJ0
+H$P3tJsUt:PCS4TJUN3(A.cqK)W%PCbF9W?EY18]&N_TqI!_'.JXV+=Q[jUTJ:O/?J=M.?S:H-[
+J:O/=I[Z+MVFX3h!!"/B!)a::MIpMf)]YIi*+a24GlRh2&.st7BC$`aUBh-+I!h93JY%CARt-$Z
+J:O,>J=(k;R"0^SJ:O&<J=1q<Q[XCMKnc:":IccK!*))]>X8?o8fE&'Lk1,?It*N/Iuf)/Mgp58
+It*?,JVnVoHapSsqYL*Xn*ff:naZ/>naZ,<nEp#GpAb0ms8W)rr;HTmrVuots8W,urr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8Vojqu?]rG^-5%'UO&gr#?`K!!$a6!)+"<.dcWj
+r;?Qos8TC1bl\)c)]bV`B'a>NnMN8:#mu@d!,V]9=onag"9^YP7:)"8QKdYunaZ)Bp\+Xes8N#s
+s8W-!s8W#pr;Zfs^V76J3"8A6!\PMo(C^@@3rs,.;"jY[s8W,pq>:3ls+cB*!!$D2?/n:@a8c3N
+,U?'&E0^J(Eb&eJ1H)]B!*MlbDZBb8rr2rsrr2rtrr<#uIr7c?C'D/+)m4f.M/!bj/-)oKJcGcM
+r;6Bjrr2rts8W-!s8W-!s8W-!s8W-!rr2ooqu$Kos*fE]!!#S:-`Cj!o)JcB=BLQ5J<g089-kp\
+DK,:L!.T6<W;lntqYL-hrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#unF5t&KnPD@I$^%O
+lg3s;s8W)trr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,sr;HKgqu-Km
+rr2oss8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#ur;?Nns8TR;cO1/3
+CMN?)6H&p)EWH2E!!"=MZ*OE0s8W-!ZEhdV!-Ue#c#e%&5=!0p$\\Q\CB+?<!!#"k&O1erOR)5u
+q>'dbs8W)trr<#ur;?Nhq>0saqYBs`r;?Klrr2lprVc]nkj%MlM1pY:ItWAr]=YQNrr;ooqu-Kl
+qYL-is8R4aUAt:BD/Sqi,c1PA=?SfP&eS7\(78rUnJN75!!#97J;XC,s7Q'YqYL*`p\=dgs2Dme
+:cel1>RZ<u&m.C!2(B=-mHsoPs7uKeqYL*cqYU-cqtg0dqYL*cqYU-cqt^'bq>'pfs8>M\FoVMJ
+5XE@q?KD.eATMpQ.4J!l!*qE=[q0.;!!$PYI[gB;s7Q'ZqYL*cqYU-cqtg0dqYL*cqYU-cqtg0d
+qYL*cqYU*aqY^9hs8W,urr2rts8N#sqYL*cqYL'bqYL'bqYL'bqYL'bqYL'bq>'mbr;?Qnrr)fp
+rr2orrr2orrr)fprr2oss8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2orrr)fpr;?FU5E%]ga(8iI"p]\[!Fu014%i4Ms8W,ko^mQZV[Eod<`\*kC@<#YRfEG,
+!<HU/!'q2/5(A'CmHs9?s8W-!s8;fmqYL'erVlfqrr2ors8W,urr2rts8W-!rr2oss8W&rr;Q]p
+s8W,urr2orrr<#ur;?Klrr)iqrr<#uoCMSa%V$k6WG6/8%1S-o!(M6ZM]3UX/2"8;@HI[qIK0@9
+[^N^Gs8W#pr;Q]ps8W,sr;?Tps1Q"N1arhl.17jZ%CimQs8W,sr;?Qnrr2ors8W-!s8W-!s8W-!
+s8W,urr2orrr<#ul07=<$VCC!G[Fh;4?gR]!+N%2\f)Jb!!$_*9[QL-e,TJV\@BQYs8W#pr;Q]p
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W)trqcKfqYL'cqtg<krVuots8W,urr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,pq>:3ls*/dh',-[UGPiI'TE"t,!!#\(&1Hl1li7"b
+7Rht0!,l7QkZqNT#RZ=e!,;W><WE+K9hf*ho^i%[rVlfqqYL*frVc`prr<#urr2oss8W-!s8W-!
+s8W-!s8W-!s8N#ss8W-!s8W)trVHBeqYL'bqYC'er;Q]ps8W,sr;?Tps1,\]!!$A":=;p7eGoSa
++X(-2EK:)"@9H^g7nCi(!+lr\8b;QDs8W,urr2rts8N#ss8W,trVZ]qs5;kq^:h5Sq"ajcr;Q]p
+rr2rsrr2rts8W-!s8W-!s8W-!s8W-!s8W,qqYU<ms+cAu!!#J.*Lpn^nduP"():,VXK2C%8HAm<
+?=2eS3kkt,B(PWes8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts8;fns8W,.\'GEkK558l
+5siNj!-/)@>6"XM['[4?s8PDPK`hR1C2<9@=l'AgK)bmb!Wl.""!OtU\,ZL.rVc]kqYU6irVuot
+s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL-is8R:eQiI,'B5-fe0s^i[?R[EuCi#=9!-W$iln:&r!!#c>H'\L1s82]krr2oss8W)trr2or
+s8W,sr;?Qnrr<#urr2opr;?Tps8N#srr2oss8W-!s8W-!s8W-!s8W-!s8N#srr2rts85>UC]FH>
+3BOo`A*EsnD-:"rIt)tK!'Lf%NFZVe+X<oj#>XdXmf3=erVc`qs8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2orrr2lprqu]l5<k2o5fdGFl3.EC!Wcg3!'3_E>6"X$77E"<#_d28oM/33!sO2V!GVT78HT&8
+['[7@s8VrlqYgBks8W-!s8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr<#uoCMMa&R67qSn`*4',?Z1!(:sPJg2LZ()`QVD=S>TOoPJM
+L5)#os8Vrlqu?]rs8W-!s8W)trr<#us8W,trVcZlr;Q]prr2oss8W)trr<#us8W-!s8W-!s8W-!
+s8W-!s8W)trr<#unaZ#W%7L6sFB;W#84h,-!)B#QYEkKQ!!#A-+.[7co*,MX6:,qss8Drrs8N#s
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr<#uq>'pfs8R=gWtQ59G'<d&*M!01B`J-+$k+K_s7q(kW;lpE
+E,bJA9$dS?HNF4^!Wkar#plpa[/^1+q>'mdrr2rts8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2rts6Ak9"pSd(5/g]/hZ*Y!
+#R=(EEe+;p@lZTb>?p.f!-ASV;![H5s8W,trVlfqrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2opr;?Tps0oJO!!#b#$]/J.lm!dQ"U/6#mHR>;CB+?6
+/M=/CD=RZ,EIWJ:s8W,qqYU<ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W#prVuot\$sZj%>8S7nNK1V
+!!%!>!F#O(+iVF:]tN&#"aXZgl;:I0!<RTL!bVK51eUJOp%@tUrVcZlr;Zfsrr2orrr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL*hs8Rb*VuQg3@q=gc42([p?n*X0F*!6>!+9,>j?c8T!!$OE'h@lenGiOgrr2oss8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qYL'gs8RV"NrT/L
+-7>X*D=Io>MA6k-jQ,).&NKgkB0&/h?!ZCh!*al"PlLd`qYL*grr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+rr2oqrVl`mr'*E*5![1t@d4+$J-#d_!!"oe@r&lqeGoSc:/KMN@d"%&K`V<g!!#;W8n%Voq>^Kp
+qtp9js8W)trr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W*c6@B:PNc8n.)B>4H!).`dOB,D>!!%RcC@3GuW;lok
+H?teTs8Vrlqu6Tos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr2oss8W$h8T4Y0=ueXT@:JI$!+pV+U&Y/l$O]Q,!,YS1e4E<\!!$<8\\nIIs8;fm
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2rts7uKgs8W+DGcDDkQ[!`O*$1[O!,2E58KAg)X/j)=!c:Csb\V1g
+&/1-*!,MW88J)O]mHs<@s8W#pr;Zfss8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2rts6An8"pS<j2nWL*j95a;
+!!#B4H%R(VAfVqdBl!5L&rlql4be]Qs8W,qqYL6ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts7,XH%LkW&!,k\2e4i`i!!#l[P,caMb5_N.
+!sEpY@H9@+]EegRoCMVSs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,rqu$Kos1#Sb$4MH!C@OSW`rH*[
+!!$.)"=pOQXVVds4$:;uEV1.dQiI,'!Wl7$![>"Y[f?C-qtp9js8W)trr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL*hs8Rh-V>pU+?!lYW6,N[&AJl=SUSFpk!,"J]aAuC"!!$sH$V]mPlMpnarVc`prr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srVc`qs8VENljXA(
+!!.LXAEbd'[/pG<s8W+NJqa7*3t;g^A7b!K,,>GK:%7Z>s8W,trVliss8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2or
+rVc`nr;8`CO$5hLAS(-2#D)sWA,lTj:/4ti;Oo0aZ#OgZ*?C^O!,_i><s&OQ['[@Cs8W#pr;Zfs
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W*c6@B+GMJ[;(+!@0U!)?d(FFo+6!!$J:@d-*@_#OIG
+(DfF/o'cVYs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8)Ths8W+RL6_f>6PgW,BPQuN(RYC/9)nqkL5)6!!(IqLSSN*5"pp,Q6?rP1rVlfr
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2orrr2lprr<#t6puhO*MR\!q]-`K!!$a6!(SUm3coJ:$4Mi6FS[I;WrN-:
+!s;^0"=pjd\c;^0qYL'gs8W)trr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2rts6An7"U8-c1V."(k6D9E
+!!#6@MNV(DP6(i<CMWD_,GG/<7XBB;s8W,qqYU9krr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2cjqu?]rH?thV!)5("Y\S%F!!%:57<ee3r's7k
+!!$"N/Zil-o`+u4It+Ess8Vrlqu?]rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;?Nns8TI5bmOr2DK,;/3PGInE<#uA
+%1P"7G)-P9IplaI8kR>.!-/)@?iU0UZEgq=s8VrlqZ$Tqrr2orrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL*hs8Rh-UAt:'>[HJX7)o9-BFthChVQrp$sb5-WbH28#mu=c!)0r6_#OH7r;?Kms8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8VWZmM$@(
+!!$Xu7)i;1huEa[K7fcqs83001&q;c3B=i]?fqCh?%%*ds8W,qqYU9krr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#u
+r;?CW6'=l6do]f2!!@ZO!Fu01/Pf/G8P5-s0",P2mg9DV!<Hj6!'3eI>Q=a'r;?Klrr2orrr2or
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W*c6@/nBMJ[8'+!R?X!)ZZnE4rs,!!$Iu8^(%1f)Peh
+%Ltqtna?GWs8N#srr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#ss8W,hnaR%t:&k9:?!cJS5K3['>J%MgrVcU&%8$U#C.q@K9MNt9!+*4H`W,u<
+r;?Kms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,qqYU<ms*fEo&e^@KFScjlQN.#$!!#/i?tY+EXpYYqG'<a0-DphDC]FH2
+&eZ\\m-F]Os8N#srr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2rts6An7"pS6d1V."(k6D9E
+!!#-LR\Gb!VuQg-AnLBj3kPFm=\22(s8W#rrr;usrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2inr;Zfs\$s*P!)*k5N+ltm*Zq'\#?(<jp$_A=
+$49Z2!-VXTiB06>#RG,8oC`.`s8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qYL-is8R+\YX(V#;,YmD!-/&><sAjY
+G'/i](lVg0k=J7k!!%'@!+5d,-F0q_s8W,rqu$Kos8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL*hs8Rh-V>pU+?=2bZ6cT0,BFk_Ahr!-'(0V4\O_\b'*$1UM!(DEgNrT.ZqYL'gs8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qqYU<ms+#W_
+!!#P=.]dN*o`,&E5X9Yqs8Rh.OT5AE$4DSuAEbKlYQb;1nF5lGs8W&rrr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+o^q_m)Kf4fj#/m+!!$O0!)E_#3=#q/92*]AAEX4&K`V<h!!#)S9O%Pss8N#srr2orrr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W*d6@K7KMf!D(+!@3V!)cKaC@L]["U/?d0!f,#l3%<B
+!!#[$\%Mb@s8;fmrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#srr2rts85DYDu]lF4[6nk?fV1e@![-ds8W+EH&Ve(6PL?$BkcrD&!9.EIfKHI
+rr2rsrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8Vrlr;ZfsEcS3@3Q,3/i!^*Q!!79C!.$t!aDPnf'Gco5!,DQ78J)O]
+m-O*=s8W)trr2orrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2rts6An8"pS?m34rX-jou'@
+!!#*LR\6+<Z2al*;cMCC:=9+BCCUh;naZ#Hs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#unaZ#V%7L6sG$%r+5t&fp!+<.>_Z0Z9
+IX[[b!(eIaVf$JK!!%=nI&R)Fs8)Ths8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,rqu-Qps0]8[$4DGn?fu0>nQK2Y
+@V"_;B^Zr^T)\k1!WlC)"!b1[[K$:,r;?Kms8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL-is8Re+W;lp4?t&+Z5/R@#BF>21qu#u3H`$iDD.RDK1,ZN@!*;``CB+>2rr2rsrr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2opr;?Tps0oJO
+!!#b#$]/J.lm!dS"p\6#nac_[s$fIm!!$.W1:(\/mJm6$I!_Ufs8Vrlqu6Tos8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2orrr2rts%?"D!!$[S+eh(]^,J*e&/($)!ce8@<!*4P['[FEs8W#pr;Zfsrr2oss8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2orrr2oss8W*c6@o[XP&G=3)B5.G!)Q9[@/'Ee%hDkY(7K#ToGAI5
+!!#97J;XC,s8)Tgs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!qYL'gs8RV"O8o8M,q#U-Dt3r3KL/"Ss8W,gnEg\p3rf7n4?gMa>MfD\?A4*,
+s8W,qqYU<ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2oss8V]^omM7b$k-GB!)3Fn:&k8`!<G+c#r&]l\,ZL.
+qYL'gs8W)trr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,sr;?Tps1,\W!!$%f7*8e>huEe%
+!!#R']u9[>q#^_,1GlUL@H@UpHiO.7[^N^Gs8W#pr;Q]ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W!g8T=_1?9:?c?t&*r!+^P-V#UJp
+mHs<Q&5N9+D,!jW7Rt`-#&<Mkn,NFfrVc`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#urr2opr;HZqs6T+?
+L5).HJ"(n9QA($Rm-O$;s8W#pr;Zfsrr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qtp<ks8R:eQiI,(Bkcul27W\eA.fMEs8W%RLo::R?<ULg7nCi(!+lr\8b;QDs8W,urr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts7,XI
+%1P`+!,tt@g.=r_!!#lKK:;i?s6&S0$O]i4!-VURjuY]@#7"`/o(;t^s8N#ss8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr<#urr2onqY^?lrr<#urr2orrr2rts8N#sr;?Kms8W)trr2ors8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2orrr<#unaZ/]&7He-UMF];&JL6+!(D$QLB%;REcR`O!-;jhm4U/s
+!!#c>H'\L1s82]krr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#sr;?Kms8TX?^&S.,$42AuB'^imX9Ac4kND+0s8Rb*NrT/C$4DW!AEbNmXp,,7
+o()AOs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#us8W,trVlZiqtg0dqYL*cqYL0hrVuot
+s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2opr;HZqs1#S]!!$P-;:eWAeGoSi
+!!#9r]YFLHrsT<?)BGDbD=S>TOoPJML5)#os8Vrlqu?]rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8)Tgs8W+LJ;XC-6QmYICM`PN%ZV&2<:B;D
+s8W+JIZOO05nk&uBP6ZJ)4:sE;tT_Ps8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2or
+rr2rts8PGRF9;YtDf,+o-`-kD?4ml4rr2c*]#F^M=$Agc>?g%d!-ASV;![H5s8W,trVlfqrr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2cjr;Zfs
+I!hC`!)ba7\7]I?!!$e\HD1B=s8W-!J:O'g!(S1VT5SZA!!%OlFe\p9s8)Tirr2oss8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W&rrr<#um-F!C#[B,?\79+9#muFf!(2*[NW9%YH[D%Y!*ru>j?c8T
+!!$OE'h@lenGiOgrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2oss8VWZmh6@*!!$_'9$U@7g&M+PJ:Npbs8W-!s*B!Y!!#bF/Zs#1oDel2
+I=8!ms8Vrlqu?]rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2ooqu$Kos*fEk!!$_A@H9[>`W-!Q
+%LteilKJ9Js$T8&!<[siC@3GtW;lokH?teTs8Vrlqu6Tos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,hnaR%t:]LK=?XMnX5/R@#=1GcU
+s8W,gnEgo(5QCdm1,HCLAa9<rAq5E,s8W,qqYU9krr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2or
+s8W,joCEJ'=r&!ED/Jh^)O^X+;+=#[s8W,hnaQhh<$<KbBkm&H&WHbj5DFoTs8W,qqYL6ls8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2inr;Zfs
+\$s$N!)*e1MJ$Sg+<dKb#[-]fo)JainF5iU%R:!oANW/l>$Bha!*4T!OoPI]qYL*hs8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2inr;Zfs\@BT[!+/;hcW+$&!!%0B!(jT+^An65[C*pQ!+J5]b#MKu
+!!%!I$UsCIkPtS^rVc]orr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,qqYL6ls+#W[!!#G5-DYHpo*c%d&.hV+nF$>Vs7#OH%Lu&1!,>,!cV@6b
+!!$E;\\nIIs8;fms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2onqYU<ms*&[X!!%(WD=T52Y5eQ/
+'bs(%m-F]Os*]<c!!$M?A*H0@_>jR@8P+%(s8N#ss8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2rts8>M\D#aQ>2E/-WAa9<rB6\Zl
+s8W,urr;NYnI5q(!!$q;<S9Z*b6A/ao()GQs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Doq
+s8W,dmI1PpBe1j?BPHlC%Z(/c8Ul5Qs8W-!s858RJHlI:CM`Ma,,,&;7Y$#Ns8W,qqYU9krr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#u
+naYuV%Qj^kDGX-Y:f5aC!*4i/UAt8ns8W,blg+ue;?-]??XVtV4N%C-AFT*Zs8W,trVliss8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2flr;ZfsIXe$k!,?.YlU=:a!!$sI%n5dJkPtS^lK[[>#[K,>[qTXG
+#RcCf!Dp88^An65r;?Klrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,trVliss6T+>$kQYH#(UB%lSLK0#7G22m-juSrr<#uL51ij!'U`!M.^Me
+1,QNH$Y8i!oDejjrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2oss8V]_ndc=:*ZgqpFSHjuSH&Xl
+7n@CnrVHQos+Q9)!!$>.=PZqTfDknj%1ktuna?GWs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sqYL*hs8Rb,PQ1\R+!@+mDtOteSI#[%
+o'u2Jrr<#us+#WZ!!#=s&s$dAm3sKd#74T)o()h\s8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqu]m
+s8W,/\]OmPBhM1I?<uIn$%N!U4GAQOs8W-!s8R:fUAt::DJei&3Of%h?:de.s8Vuqrr;usrr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8)Th
+s8W+LJ=QZ?;)'l5EHCdQ"+ip2HN4$Dq>'sgs8RV$PlLeS(DrBPC[iJgU(.f=o^q_Ss8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2cjr;ZfsGB]VY!-rR)oeSD2!!$[I),0;[kPtS^oCMPa'4)UuS8`NC
+*?L^N!(MKhMuWhWqYL'gs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2ors8W,t7nR_#!+J5\`+3B@!!$Y\J#32Fs7Q'[s8W+LJsZN<8KAkA
+DK,@U$B0+OVuQesqYL-hrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2oss8VENmLKqE/haPIDY+MSO8o8O
+H?tGJs8W)trp&b8"UJm%3PK'9lN@KH!!#Nt\%2P=s8;fmrr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8VWYljXIi!!%%=<7b)Kg&M+W
+K8-'!s8Vcbq#CBoJ:a6j!)+U_TlY;M!<e1)IB<JKs8)Tis8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqcKh
+s8W+PL8FqNAn,?4923e6!-J8A3k2]0s8W-!s8Re.VuQg/?XVqe:"'(BC_R^_oCMMPs8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+s8W,io(!;(;ucuFA7aph6,a!6C@(<Us8W,pq>1-ks+#]k!!#e@.&V62q#CGIH[Vmns8Vrlr;Q]p
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2orrr2ors8W-!6:?G9&!D-ZqB[Ja!!$+k88eJ-rr2oss8Vs`7!Sb6Jo5Gq
+0f--9!)e)gRK*<eqtp<jrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W&rrr<#ulg3sF%Trr@KP>2i/M=:5$Y/buo`+skq>'mes8RV$S,`Oc
+.kIfFG5M=?I!gCBs8W,qqY^Bns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;?Kms8TX?_Z0[=6q#.,AEF.*K)bm@
+L51ums8W)ts75^L#mscY,c5U&o+i41!!#KCLmA#?s8)Ths8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qqYL6ls+Z>j!!#A&)4"rOoGo$J
+#RXf+nac_[s7uKes8W+LJtE#C;(aQ*FERBZ!.0*BWW3"uqYL-is8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqlTj
+s8W+CGb"g7F)>g`4?^=W!,2rU6KmXos8W-!s8TR<`W-!J6Uf+(?fM+eGmb'\lg!g9s8W&rrr2or
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL*hs8RS!PlLeV,:0+'EVC%YPRnL/oCVVRs8VojqZ$TqJ:aHp!)tU*Y]Y*b!!%@nI]<AIs8)Ti
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2orrr2rts7,XN&JSq(-`V0*oG8=0!!#qf86c,os7uKfs8W+JJ"?W?AS,N=
+7n:Z$!,*)a8FuHBs8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8)Ths8W+LJt2lA;)'l5F`mEY!./m6V#UJpqYL-dqYU<ms+#]o
+!!#nM0X5\@q>^MBI"&'ps8Vrlr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sr;?Nns8TU>bQ%WY<EIsV<SIKTFoVM6
+\@K?Rs8W#prVuor77_q7$&NS>oI;Dl!!#oCHBnO1s8)Thrr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2cjr;ZfsH@24_!*;9H^hINN
+!!$e`JZ&PJs8)ThqYL*hs8RV$T)\jf/hjGMFnl";H[L:As8W,qqY^Bns8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr2os
+s8W*d7!o:IMK<k6-nDA!!+Q]Z6LjU6s8W-!s8VWZnH]J,-nDE;DtO\UOoPJML5:uls8Vrlqu?]r
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2oss8V]^mM$L)!!$e&8'>(?irB'eIt+0ls8Vrlqtg0ds8W+LJt)f@:b40#Fa!Z_!.90CWW3"u
+qYL-is8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2oqrVliss6K";#n(<+4ht`EljOAZ!!#T?JWTp3s7lBcs8W,0]#t'RCJ7IN
+='4;Z!-\h]8*fI's8W,trVc`prr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,hna?nt8H8a1<*.^L;V1sL<ecF%s8W,qqYU-cqu?]r
+J:a9k!)OsjWHNI]!!%OrIB!8Hs8)Tis8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sqYL-is8RP!VZ6^=CMW?&6,`g(D[m=I
+lg![5s8Vojqu?]rGBfSW!,cRfm63hR!!$Cu9R-U;rr2osrr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&srr<#un*f]R&5iK0H"1CH
+5XEBn#\iYln,NFfrVc`lqYU<ms+#]k!!#e@-_tp-pAb5JH[Vsps8Vrlr;Zfss8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr<#u
+lg4!J%qHq3Wc<(S(E&S?!*)N\?2ss)rVc`qs8V]^ne)[B'Gm*TE:bA#UAt9bJ:Na]s8Vrlqu6To
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2rts7,[N$P-AC#(gQ&lS13(#7G/7o(;t^s8N#sqYL*hs8RV$R/d4[+siq'Eqoe@L3e3I
+s8W,qqY^?lrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2onqY^Bns+H-'!!$J7?K"mafDkts!!#<p\\.tBs82]js8W,blg=r_A2,mL
+C2<5C$AJN]:q*sKs8W,sr;?Qnrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;?Kms8TX@]`8%-&e^=CD"8bpV$[]?o()DPs8W)trqcKg
+s8W+LJscT=9->@KE,t^V#)R_UXT/>#qYL-is8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrVc`qs8GARKaS?NF`mO..B<FK>XqA)
+s8W&rrVlZiqu?]rKnlE'!*rc3hbmA(!!$sI&4Q-Zmf3=err2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8)Tgs8W+LJ;=1*66IGC
+D/T%`)4Cm?;"F/Fs8W,urr2cjqu?]rJ:a-g!(\1RS8E0<&.t'l7="q5rVlfrrr2oss8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2inr;Zfs
+\@K]]!*r)bb[FuC#Rc:c!(2HpPQ1[_qYL*cqY^Bns)rU^!!%4[D=BPF\,ZM88P="%s82fps8N#s
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2cjqu?]rJqTTn!)4mmW,m(T"UKoN7XP18rr2osrr2onqYU<ms+#]d!!#J,*1(JXnf/[C
+#ms2nna6AVs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#srr2orrr<#us$]D$"9jBrEV)1L[K$;?',=((lfnHLs8Dops8W,jo^`V-?l^>^
+EH:gn*1Hp.7Y$#Is8W,qqYL6ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qqYU<ms+#]m!!#nS2R[XHoDel7I=J9ss8Vrlqu?]r
+qYL*hs8RV$PQ1\R)&e`UC[iMiUC%K6o(2DOs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)fps8W,blg4rb@l?6WCi/YQ&WQhk9Rq_\
+s8W,qqYU3gr;Zfs\$s0R!*qfS`FWQA!sa;U!(XK,\c;^0r;?Klrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sqYL-is8RCmS,`Ol
+4[-brBBoNtC4(N.s8W,qqY^?lrqcKgs8W+NKTZ<87M?N!C2<8`-)UtU=n;.Ss8W,urr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2cjr;Zfs
+IY"L!!-N$km6a:\!!%!K&4c$NkPtS^rVc`lqYU<ms*oNf!!$M<A*$9Tbl@`Z'c9U8oC;k\s8N#s
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr<#uoCMDb(d\3&CIUk=>$Kqc!+15+U&Y/mqYL*hs8VrlqZ$TqJ:N7P!'Li)NbE.p
+.4_P+$XN>ooDejjrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rVc`qs8VNTn-on?-Rc!8EV(%aQ2gnb7nHtcs8W)ts8N#srr2rts85;VJ-Q@5
+DfG>$0!50S;L*SSs8W,rqu$Hmrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts7,UI%1c)3!-2(@g/:l&!!$&SLn=YHs8)Th
+s8W,sr;?Tps1#YR!!#[s$AN8/l8:K0"q"r4o(;t^s8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqlTjs8W+JJ>3)EC1(K3:/B7;!d4PE6+FG8
+s8W,sr;?Qnrr<#unaZ)S$<nl,XE/@Q'GZc2!(M^!Q2gmaqYL*hs8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8VW[ndQ14
+!!7LYB';HF`<6H\m-O3@s8W&rrr<#urr2oss8VWZndH(4!!7LYA`l3A`<HW^nF6&Ls8W&srr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2rts7,[N
+&.r:j*M7Frq&prV!!$"h87qo%rr)fprr2opr;HZqs1,_a!!$_)9@$gHhZ*Y#$Oo_olKJ9Js8Doq
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8Doqs8W,bm-P,h=p51cBkm)f/Zo<dA+K3_s8W,urr2rts8Drrs8W,fn*^Yr;ucoB
+>[?8W8'V>HDY!Aks8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#sr;?Nns8TU=bQ%WY:f>qL>MfD`I/j7@\@B?Ss8W#pr;Q]pqYL-is8R=gRfEG)
+Bkcs"6Grj(?qF%9s8W)trr;usrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrlqu?]rL5;&o!(IqJRVcm5)]YFU$X</ko)Jai
+rr2oss8W)trr<#unaZ)Y&kr?+DGO-Z:f>sH!+`UNa8c2>r;?Kms8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr)fps8W*d7=PRMMK<n7.kI_$!+lr^6h0^7
+s8W,urr2orrr<#uoCMPc'j_UlQZ@-@,:'#a!(_WjOT5@\qYL*grr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qqYU<ms+#Wc
+!!#Y?.B.?.pC@gs&/8%6o^Vt]s8N#ss8W,urr2rts7,XJ%M2#.!,P%jaC&E<!!$AUJ!p?:s8)Th
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2opr;?Tps1#VZ
+!!$=n7`]+OkQq]R!!#K<J<0a1s82]krr2orrr2rts6Ak9"pep#27R@9lj!lO!!,p*\A&"Cs8;fm
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!qYL*hs8RV$SH&Xe1GlI[FS5\7H$=P0s8W,qqY^?lrr<#urr2oss8V]^mM$L%
+!!$Uj34Nd?mJm6*I=S0os8Vrlr;Q]ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr2orrr2rts8PMWF92SoE,kG.3P,7kB+u1[m-X-=s8W&rrr<#uqYL*hs8Re.VuQg-
+>[?8_:XT4CD@R4EnaYuGs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8)Ths8W+LJtW/E<&m"PD/AV?!-*I<WW3"u
+qYL*hs8W-!s8N#sqYL*hs8RCmR/d4c0JTbRG52+<H@11@s8W,qqY^Bns8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2lprr<#ulg*mC$=bkK\8H3S&JL<-!)%WaM?!VU
+qYL*grr2orrr2oss8W$b7!o"<Jo>Su0f$!6!*Vl`B`J,1rr2rsrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrlqu?]r
+J:aEo!*2<L_.@6E!!$e`J>`GIs8)Thrr2oss8W-!s8)Ths8W+NKU`#B:*M!XEH:d\%$!YCI/j6G
+rr2rsrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2onqY^Bns*oTt
+!!$qNBBr#VaT)<`!!,3l\@;M<s8;fmrr2orrr2rts7,XL#Raf^.&q<,obA:-!!#KCLmA#?s8)Th
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,qqYU<ms+#]o!!$(e6cNVHkPtTnIY"?qs8Vrlqu?]rs8W,urr2cjqZ$Tq
+It*:T!(.P?Q"t4)+<[Eb$<$Ean,NFfrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr2ors8W,bm-P5mA0N7qEc_!o*16d,<_#\hs8W,urr;usrr2orr;?Nns8TX@b5_NW
+8kdN8>MfD\G7+mRl07@1s8W)trr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qYL*hs8RV$U&Y0q6q#+)@d!dl@t0')
+s8W,qqYU<ms8W-!s8W,sr;?Tps1#YU!!#e$$\iA/lRt!##n:G:oCW(_s8N#ss8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2cjqu?]rKSH<'!+B&8hc<e5!!@BE!(s`1^]4?6
+r;?Klrr2orrqlTjs8W+CGFSX5DJO(W4[?mb!+8AlGQ7^Brr2rsrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8)Th
+s8W+LJtrAH=@>Tu?sr*s!+UM0V#UJpqYL*hs8W-!s8W-!rr2oss8VW[ndQ14!!%:TA*--H`rlZ_
+m-O3@s8W&rrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2oqrVlisr^0).
+$P&8@Fnm=2VZ6^,'c0.*naHMXs8N#srr2orrr2rts7>jR&J\[m*1:bdq&giR!!#Q?J<0a1s8)Th
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,urr2cjqu?]rJ:aQs!*Vc\a^AK;!!$JXJY`>Gs8)Ths8W-!s8W-!s8Doq
+s8W,fn*UVq8cSj0;Gu%F=53cU>(qa's8W,qqYU9krr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trqu]ls8W,/\]=aN?V*i8@:A4&$A&6X7"9`Gs8W,rqtpBlrr2orr;?Kms8TR;_Z0[C
+4[-eqAa'@)K)bmD[^WmKs8W#pr;Q]ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qqYU<ms+#]t!!$7r9$LXIirB'g
+It=Eqs8Vrlqu?]rs8W-!s8W)trr<#uoCMGc(e"E)BKeYrA7as)!,-h2V>pSqqYL*hs8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2ors8W-!77MP*#(gl8oeSJ7!!$XE'M.WYlMpna
+rVc`qs8W)trqcKgs8W+KJ"6Q>AR]3484h#*!,NDh:\42Js8W,urr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+qYL-is8R@lT)\js9MNi=>MoJ]@"3a%s8W,qqYU<ms8W-!s8W,urr2cjr;ZfsH@2.]!)t[/[<$H_
+!!%=hH)1K?s8)Tirr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srVc`qs8VENm0F&0
+2`SEdD=7uHM?!WMJ:a*es8Vrlqu6Torr2orrr2ors8W,u77`1>$&ieBoI;Do!!#i@HB%t)s82]j
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr<#uoCMA`(IA*%D+m[O='+5Y!*t)*U&Y/mqYL*hs8W-!s8W-!
+s8W,qqYU<ms+#Wd!!#Y9,,&mlp(\F4%h`"7o'l\Zs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2orrqcKhs8W+JJZ8\MF_Y^Z6:8]l!-&M\8*]C&s8W,trVlfqrr2orrr2oss8V?JlN[]&
+0ep"MD=IuCM#[NT\[oZXs8W#pr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts7,XH%1kc)!-(k5ePoT(
+!!$,NJtN)Cs8)Ths8W-!s8W-!s8N#sqYL*hs8Re.O8o8J%han:C@3Z*Xp58@o()DPs8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,trVliss6f=E$k?ns-`M-,pD4^6!!$(j8R;Ars8N#t
+rr2orrr2orrqcKgs8W+RLo(.P?WgRg;H)3J!-&J[7e-!8s8W,urr2orrr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2oss8VWZmg]su!!%"><SLGNec5\MJ:a<ks8Vrlqu?]rs8W-!s8W-!s8Doqs8W,cm-G/n<r`5G
+@q+Rl8B_&6?FdYds8W,sr;?Qnrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sqtp<ks8ROuUAt:.
+?t&(j:t5OIG5qY2\@B3Os8W#pr;Q]ps8W,urr2ors8W-!6q)M(!J,-+nhW/3!!$4m88A2)r;Q]q
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,hna?o!7K<F.=BXBV;:Y^I<If[js8W,qqYU<ms8W-!
+s8W-!s8W)trr<#unaYuU&3g-pDbEaJ>[6:h!*t)(RfEEfqYL*hs8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2orrr<#unac5^&muXuS98uM,:'&b!*2T\BE/#2rVc`prr2orrr2orrVc`qs8VENklqGs
+,q,^3EV't^Q2gnWL5;5ss8Vrlqu?]rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#unaZ)X&P)m%E*?K%
+;c;3I!*"K#R/d3dqYL*hs8W-!s8W-!s8W,urr2ors8W,s8PF"%!+.TAZuL*X!!%1fH_pcBs8)Ti
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2opr;HZqs1#Sa!!$e3;:\uWhuEn.!!#d(\AJ:Gs8;fm
+rr2oss8W-!s8)Ths8W+RLn+MG>Yn8G>?p(d!-ek]9Bk^'s8W,urr2orrr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2rts75aL%hhG5!,u+Gh,@5&!!#uKJt)f?s8)Ths8W-!s8W-!s8W-!s8W,qqYL6ls+#W\
+!!#S6,GK-rp(nO4%hi:@o^r1`s8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrVc`qs8PGTJHuXA
+FER@//?8aNB,)4MnaZ&Is8W)trr2ors8W,urr2flr;ZfsGB]h_!-2jkmQEeL!!$@t9QpI9rr2os
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8VWZljXId!!%(B=kZePec5\NJ:a?ls8Vrlqu?]r
+s8W-!s8W-!s8N#sr;?Kms8TR<]`8(0#n)T(C@*i8[g!(Jlg+!=s8W&rrr2ors8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2inrVuot\@BZ]!+JMkc"(AJ$4MUg!(MHgNrT.Zqtp9irr2rts8N#srr2oss8V]^oFM[H
+*$(VjEVU[uT)\j^J:N[[s8VrlqYpKns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2rts8>DYF8u;T
+='"'S<7h0N<e#^ms8W,qqYU<ms8W-!s8W-!s8W-!s8N#ss8W,hna6hs7fWO3=BO<W<SIKR>_\'1
+s8W,qqYU<ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2oqrVliss$T;)"pfs'EqV1C[K$;?&emq)mHX`Os8Doq
+s8W-!s8W-!s8;fms8W,0\]=aN?9git@q4[(#CujT8%,n;s8W,sr;?Qnrr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8)Ths8W+KJYrJJ>u4DK<`e)W!*t#&U&Y/mqYL*grr2rts8W-!s8W-!s8W)trr2os
+s8W!g961(5@66WdCi/P>!-*4,UAt8nqtp<jrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqu]ms8W,/\B+^N?pmH+
+B4pK;%Yt)b8Ul;Ts8W,qqYU9krr2ors8W,urr2flr;ZfsG^,VV!,6(XlpX@b!!$[J)G0PlnGiOg
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2cjqu?]rIXn*l!*Vobb[+W8!!$MYJYrJIs8)Th
+s8W-!s8W-!s8W-!s8W-!s8VrlqZ$TqJ:N[\!(eI_VfQnR(`/MM'OUJ'oDejjrr2orrr2rts8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2orrr2lprr<#u6q2V0#_mA?p,"Y8!!$[F'hn#^li7"brVc`prr2rts8W-!rr2oss8V]^o+DdF
+'Gm'TEV1P&VZ6]kH$YGLs8Vunqu6Tos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qqYU<ms+5ot
+!!#t\5/:`AlMpp-77_S$s8Drrs8N#ss8W-!s8W-!s8W-!rr2opr;?Tps0fDK!!#[t$\i;.lT./C
+!!$<8]#XjNs8;fms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sr;?Nns8TU=a8c3I6:Jt.BBfj7LB%<GIt<g`s8Vrlqu6To
+rr2oss8W)trqu]ls8W,.\&/1G?9(*[BkZi=$AJN\9t7aKs8W,sr;?Tps8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!qYL'gs8RV"NW9&O1GuRZEUsDCM$jb_naZ#Hs8W)trr<#us8W-!s8W-!s8W-!
+rr2oss8V]^nJ3!@!!$t6:XWKRiW&seG^5\Vs8Vunr;Q]ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr2oss8W*f7XYCCKQ2#'
+2E8/G!+uoY9C;-4s8W,trVlfqrr<#us8W,urr2cjqu?]rIt*sg!+TJIj\/@p!!$jO)H-.snGiOg
+rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;fms8W,0]"n@H;^*H]F)q'i'Trk9?h3dZ
+s8W,urr2rts8W-!s8W-!s8W-!s8N#sqtp<ks8R@jOT5A[/hjVOEV'\NM\?n7naZ/Ls8W)trr2or
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2opr;?Tps1#VX!!$4d5Jh2OmLKkd!!#ZBJsHB9s8)Thrr2orrr2rts8W-!rr2orrr<#ur^BA6
+#RZK/EqCn7X8i5sH$YSPs8Vunqu6Tos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#u
+o()A]&75hWNG<;$+<dKb$=N5emf3=erVc`qs8W-!s8W-!s8W-!s8W-!s8;fms8W,/\\S7G;%+"q
+D/Jc!27<Jb?+IPfs8W,sr;?Qnrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr2orqYL-is8R=gScAb4DK##.5JdC#D%7+GlK[R4s8W&rrr2or
+s8W-!s8W)trr2ors8W,`l0AQ[?na=CCMiPK%Z(/c;7O0Rs8W,sr;?Tps8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W,trVliss6oFC$OoZ/"bC9!l9.AH!!#iKL7J;Ds8)Thrr2oss8W-!s8W-!
+s8W,urr2orrr<#uoCMJd(/Fo1E_]K\?XVjn!,G%oDu]k;rr2rsrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr<#umI'EQ&o0!LZZ'jR
+&epK/!*)N\>6"X&rr2rsrr2orrr<#us8W,urr2cjqu?]rKnu].!+oG>hbm>&!!$pQ)HQG"nc/Xh
+rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr<#urC0D'!!$nB?/\RWe,TJN
+J:OBos8Vrlqu?]rs8W-!s8W-!s8W-!s8W,urr2flr;ZfsJ:a6j!*1KuXE/LX'Gd#B$ruQVkl:\_
+rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2ooqu$Kos*fHm!!$bDA*HQXci=)i!!,6m\@MY>s8;fmrr2oss8W-!s8W-!rr2orrr<#us$K5*
+"pTa"E:bk?Z2al$H$YYRs8Vunqu6Tos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+qYL*hs8RV"T`>'p7S([/@,q:fDad3Cs8W#rrr;usrr<#us8W-!s8W-!s8W-!s8W,trVliss6K"9
+$4Kl9#D6Z&l:+4a!!$,VM51+Ns8)Thrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr2ors8W,ho(!>(@3-J`Ec_$t+J/W6<_#\ks8W)srVlfqrr2or
+s8W-!s8W)trr2ors8W,`l0AQ\>q@S3D/SqS%ugPh<Oo]Zs8W,sr;?Tps8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trqcKgs8W+PL6hl?:GO`5E,b@T%>bH%:\!uDs8W,urr2rts8W-!
+s8W-!s8W-!s8N#srr2orrr<#us$oV'!!$Ot7`]:Xkl:^*77M_*s8N#ss8N#ss8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2inrVuot\@Kf`!,>D1fNVS9
+!!@NI!)0o4_#OH7r;?Klrr2rts8W-!s8W,urr2cjr;ZfsKnlT,!+K&5gf%/)!!%'O&kDH\mJm4d
+rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr<#ulg*pD$==ScQZ-m9
+*[%*U!*-M<_>jQ8r;?Klrr2rts8W-!s8W-!s8W-!s8N#sqYL*hs8Rh0S,`Ob+<dD!EqUOrTa(m.
+m-F!;s8W&rrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2orrr<#us$K2%#RQ<-F8.7:XT/?5'Gj4.naHMXs8N#srr2oss8W-!s8N#srr2orrr<#us$T;,
+!sO9rE:bh=ZN'u.7n@(gs8Drrs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2rts7>jQ&f+OM"Fk)uks.SQ!!#fFJ<^*6s8)Thrr2oss8W-!s8W-!s8W-!s8W)trr2or
+s8W,`l0&Ka:B1HF@:A1i9[<\=>)%j,s8W,qqYU9krr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8Doqs8W,blg5#eB0JQ!BP?]?%Yk#a8:Q2Rs8W,rqu$Hmrr<#u
+s8W-!s8W)trqu]ls8W,0\\8%D;)0o6Ci/_Q&<6_j;7O0Ss8W,sr;?Tps8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2onqY^Bns*8m^!!$D,=4pVTg&M+c8PF@.s8N#ss8N#s
+s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W'g8p(+6@m3/rBPHl7!,R+5W;lntqYL*hs8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2cjr;ZfsJqU-(!-E'omliqP
+!!$aB%S5pOlMpnarVc`qs8W-!s8W-!rr2orrr2cjqu?]rH$YbV!+K2;iDNV+!!$pQ)HZFunGiOg
+rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qYL*hs8Rk2T)\jj
+3'+]fD!hH4KF/,[l07=0s8W)trr2ors8W-!s8W-!s8W-!s8W,urr2cjqu?]rJ:a?m!)Y-oWH37[
+!!@muGcC`Cs8)Tirr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,qqY^Bns*B!n&J::NG52pkQ2gnj*?d]@p%&._s8N#srr2oss8W-!s8N#srVc`qs8VKRlk'q=
+%M4_>E:Y\8Z2al&H?tbSs8Vunqu6Tos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W)trr)fps8W,blg"f`=;MmCEH1Up,bb8=98A=hs8W,qqYU9krr<#us8W-!s8W-!s8W-!
+rr2onqYU<ms*oTb!!#P+)3\iOn00'P$kQV6oCDq]s8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2rts8G>RM_Hru@q4U($%N!U9gD'HrVcTms8W)trr2or
+s8W,urr2rts7uKfs8W+LJsQH;<'<F^Bl!/F%>Xua9";FGs8W,sr;?Tps8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W*f7XtI=G\_$Z6UScl!+/5eDZBb8
+rr2rsrr2orrr<#us8W-!s8W)trr2orrVc`qs8>G[?2st&%1e>2C$I6%Z3q1FoCVSQs8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#uo'u)P$!9hoeko>q
+!!%-A!Dj7;,4P*hs8W,trVccrs8N#srr2onqYU<ms6f=@&/.tB"+FlokXS.d!!$M"8TXq3s8N#s
+rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2cjqu?]r
+L5;],!+/>kcX1)@!!7HS%8#mOl2Ue`rVc`prr2rts8N#ss8W-!s8VrlqZ$Tq\@K!I!#tt?@1Np-
+D/JbY(nYkkW;lntqYL-hrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2ors8W,u77WD+7*SV.ec5\m!!HF)"!FnUZ2ak(qYL'aq>0saqu6Tos8W,rqtNfZC]FH?
+/1muDEVC:gR/d4b\@BKWs8W#prVlfqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2orrr2rts68e5#n(&^+es+"pDtHK!!#iHK:)]=s7uKfs8W,urr2orrr2or
+qtp9irr;ooqaEtG!!#"Z!c9)*TQPDR#766=KWb@Ts8)Tis8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qqY^Bns*/gi.4hi7A*F%!IfKUZ!!>"Z"p_H?ZiC(*
+rVc]lqu$9cp;+Va4[30O!(R8"Jm`!H;,YsF!,4qpGQ7^BrVc`prr2orrr<#us8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr<#us$]G&!!%:WB'MiUaoDEX
+&en%,md0uRs7lBbqYL'bqYL3jrr)fpp%@rM9i(fi+9MjX!!.148',1KkReGPl07R7s8W&rrr2or
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sr;?Nns8T:-bTeF0
+D/]%[(6ee"B`SE9!sC:X!!u.f:Pt*jGBn]R));@#1B7DO!!.=(3Os3Qq&(-@!!#g)\]+UKs8;fn
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#s
+r;?Kms8TU>a8c3H3]t2jB^?3@NW9&W9200uqtU3ks8N#sqtp9hrVNn,ZO%'U!<OMK#?Lm+C_IMF
+FEI.(/$D0&JH,ZLrr2rsrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8N#ss8W,ioCWe4J6u^I6Uo/t!dObJAcW*<!X)$o!%IsK,6.]t!!#mt"(qZ=Hn[:]
+H@,QO4i%*u>YS%>s8W&srr2orrr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W)trr2orrVc`qs8PMWIfot-Ci&W"34f.kF8u;)7S$jAMMlt8JpD]j
+'Gr(u"s3gF3<KLj!!6m:#(fcPfP,'d#Rc-l]$:9Ts8;fnrr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqu]ms8W,"XNMY,TlkSX3]t+Y#(ZaSDZBiL
+!<ls8#AO8BD?'`X%M=^l9$Vd2r]WN^!!$:t:4rH@qYgBlrr2orrr2rts8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqu]ms8W,/\]OmP><bEl
+Ci/_W(6ALuD#jZ-!!")@!#P\9*<6(%!X)I'"_7T7D[$K$8P76THiF6QKR/$Fs8W,qqY^Bns8N#s
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2os
+s8W*n:6ZhEVfHkU?<uJ7-`@LdM[0ZE$kA.<,G.=ka)c=pCMWDT(RkR5C4Lo8o^qeUs8W&rrVuot
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W,urr2orrr2ors8W$j:4WBFE+3AB?!lS"%>k,fD$1,W":/?:#\!c:B)hsM!<dZd*1^JHjDf26
+"p^)V8<!KEqYgBlrr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2orrr2orrqlTks8W,&YgO*uP!;4WBkd-QD";=Wm;$P.D/JuR?fiRYX8i6D
+4$JG:_pn_ds8)TirVc`qs8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr)fpqu$=]8rEfUJo,>oAS13N,GYPOJH?"%
+!X*oX$AKZIU/+V7F`dIO8_+OhNdQ;Xo^qhVs8W)trr<#urr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W)trqcKhs8W,-\'8`,XXl,r
+-7>T/*i'\nSf]/C(`Rp<CSeMMd/X.GrVc`lqYU9krr<#urr2oss8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W&rrr)fp
+r;?I`98roOG>1faE,bSgC@#)*gg"+@CMN6UDtd..h]<o85<tOJ^XiGbs8)TirVc`qs8W)trr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2oss8W)trqu]mrr2opr;?<`q6I?JCi>qsJu[trmITrBrVc`qs8W#prVQKis8W,urr2orrr<#u
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!rr2oss8W&rrVuoto_%p(IAmnsHl!Zf,q$&U1r(t-_'gh<+<d(:6']$neGfLH
+rVc`lqY^?lrr<#urr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rsrr2rts8;fnqYL-hrr2rts8N#srr2oss8W)trqcKh
+qu$Elrr2rts8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W&rrqu]mr;?NjqtdY+c#7U%
+I"&MIGd)UGXl\[2q"adds8W#prVQKjs8W,urr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rts8N#s
+rr2opr;HHfqtg0erVc`prr2orrr<#urr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+rr2oss8W)trqcKhrr2oss8W)trr<#us8W,urr2rts8;fnqtp?krr2rts8N#ss8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W)trr2orqu$Egq>C*cr;$3eqYL-grVlfqrr<#u
+rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!~>
+Q
+cleartomark end end pagesave restore showpage
+%%PageTrailer
+%%Trailer
+%%Pages: 1
diff --git a/Master/texmf-dist/doc/asymptote/examples/pipeintersection.asy b/Master/texmf-dist/doc/asymptote/examples/pipeintersection.asy
new file mode 100644
index 00000000000..6b0388f1378
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/pipeintersection.asy
@@ -0,0 +1,13 @@
+import graph3;
+
+currentprojection=orthographic(5,4,2);
+
+size(12cm,0);
+
+real f(pair z) {return min(sqrt(1-z.x^2),sqrt(1-z.y^2));}
+
+surface s=surface(f,(0,0),(1,1),40,Spline);
+
+transform3 t=rotate(90,O,Z), t2=t*t, t3=t2*t, i=xscale3(-1)*zscale3(-1);
+draw(surface(s,t*s,t2*s,t3*s,i*s,i*t*s,i*t2*s,i*t3*s),blue,
+ render(compression=Low,closed=true,merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/pipes.asy b/Master/texmf-dist/doc/asymptote/examples/pipes.asy
new file mode 100644
index 00000000000..6b2025f6b35
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/pipes.asy
@@ -0,0 +1,140 @@
+import solids;
+import tube;
+import graph3;
+import palette;
+size(8cm);
+
+currentprojection=perspective(
+camera=(13.3596389245356,8.01038090435314,14.4864483364785),
+up=(-0.0207054323419367,-0.00472438375047319,0.0236460907598947),
+target=(-1.06042550499095,2.68154529985845,0.795007562120261));
+
+defaultpen(fontsize(6pt));
+
+// draw coordinates and frames
+// axis1 is defined by z axis of TBase
+// axis2 is defined by z axis of TEnd
+void DrawFrame(transform3 TBase, transform3 TEnd, string s)
+{
+ triple p1,v1,p2,v2;
+ p1=TBase*O;
+ v1=TBase*Z-p1;
+ p2=TEnd*O;
+ v2=TEnd*Z-p2;
+ triple n=cross(v1,v2);
+
+ real[][] A=
+ {
+ {v1.x,-v2.x,-n.x},
+ {v1.y,-v2.y,-n.y},
+ {v1.z,-v2.z,-n.z}
+ };
+
+ triple vb=p2-p1;
+
+ real[] b={vb.x,vb.y,vb.z};
+
+ // Get the extention along vector v1 and v2,
+ // so, we can get the common normal between two axis
+ real[] x=solve(A,b);
+
+ real s1=x[0];
+ real s2=x[1];
+
+ // get foot of a perpendicular on both axies
+ triple foot1=p1+s1*v1;
+ triple foot2=p2+s2*v2;
+
+ // draw two axis
+ triple axis_a,axis_b;
+ axis_a=p1+s1*v1*1.5;
+ axis_b=p1-s1*v1*1.5;
+ draw(axis_a--axis_b);
+
+ axis_a=p2+s2*v2*1.5;
+ axis_b=p2-s2*v2*1.5;
+ draw(axis_a--axis_b);
+
+ // draw "a"(common normal)
+ draw(Label("$a_{"+s+"}$"),foot1--foot2,linewidth(1pt));
+
+ // draw the coordinates frame
+ triple dx,dy,dz,org;
+ real length=0.8;
+
+ org=foot1;
+ dx =length*unit(foot2-foot1); // define the x axis of the frame on "a"
+ dz =length*unit(v1); // define the z axis which is along axis1
+ dy =length*unit(cross(dz,dx));
+
+ draw(Label("$X_{"+s+"}$",1,align=-dy-dz),org--(org+dx),red+linewidth(1.5pt),
+ Arrow3(8));
+ draw(Label("$Y_{"+s+"}$",1,align=2dy-dz-dx),org--(org+dy),
+ green+linewidth(1.5pt), Arrow3(8));
+ draw(Label("$Z_{"+s+"}$",1,align=-2dx-dy),org--(org+dz),
+ blue+linewidth(1.5pt), Arrow3(8));
+
+ dot(Label("$O_{"+s+"}$",align =-dx-dz,black),org,black); // origin
+
+}
+
+void DrawLink(transform3 TBase, transform3 TEnd, pen objStyle,string s)
+{
+ real h=1;
+ real r=0.5;
+ path3 generator=(0.5*r,0,h)--(r,0,h)--(r,0,0)--(0.5*r,0,0);
+ revolution vase=revolution(O,generator,0,360);
+ surface objSurface=surface(vase);
+
+ render render=render(merge=true);
+
+ // draw two cylinders
+ draw(TBase*objSurface,objStyle,render);
+ draw(TEnd*shift((0,0,-h))*objSurface,objStyle,render);
+
+ // draw the link between two cylinders
+ triple pStart=TBase*(0.5*h*Z);
+ triple pEnd =TEnd*(-0.5*h*Z);
+ triple pControl1=0.25*(pEnd-pStart)+TBase*(0,0,h);
+ triple pControl2=-0.25*(pEnd-pStart)+TEnd*(0,0,-h);
+ path3 p=pStart..controls pControl1 and pControl2..pEnd;
+ draw(tube(p,scale(0.2)*unitsquare),objStyle,render);
+}
+
+// t1 and t2 define the starting frame and ending frame of the first link(i-1)
+transform3 t1=shift((0,0,1));
+transform3 t2=shift((0,0,-1))*rotate(-20,Y)*shift((0,3,2));
+// as, the two links were connected, so t2 is also the starting frame of link(i)
+// t3 defines the ending frame of link(i)
+transform3 t3=t2*rotate(40,Z)*shift((0,3,1.5))*rotate(-15,Y)*shift(-1.5*Z);
+
+// draw link(i-1)
+DrawLink(t1,t2,palegreen,"i-1");
+DrawFrame(t1,t2,"i-1");
+// draw link(i)
+DrawLink(t2,t3,lightmagenta,"i");
+DrawFrame(t2,t3,"i");
+
+
+// draw angle alpha, which is the angle between axis(i-1) and axis(i)
+triple p0=(0,0,-1);
+triple p1=(0,0,2.3);
+triple p2=shift((0,0,-1))*rotate(-20,Y)*(0,0,4);
+draw(p0--p2,cyan);
+draw("$\alpha_{i-1}$",arc(p0,p1,p2,Y,CW),ArcArrow3(3));
+
+
+// draw angle theta, which is the angle between a_i and a_{i-1}
+transform3 tx=shift((0,0,-1))*rotate(-20,Y)*shift((0,3,0));
+p0=tx*O;
+p1=tx*(0,3,0);
+p2=tx*rotate(40,Z)*(0,3,0);
+draw(p0--p1,cyan);
+draw(p0--p2,cyan);
+
+triple p1a=tx*(0,1.5,0);
+draw("$\theta_{i}$",arc(p0,p1a,p2),ArcArrow3(3));
+
+// draw d_{i-1}
+triple org_i =t2*shift((0,0,1.5))*O;
+draw(Label("$d_{i}$",0.13),p0--org_i,linewidth(1pt));
diff --git a/Master/texmf-dist/doc/asymptote/examples/pixel.pdf b/Master/texmf-dist/doc/asymptote/examples/pixel.pdf
new file mode 100644
index 00000000000..de3d0820da2
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/pixel.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/asymptote/examples/planeproject.asy b/Master/texmf-dist/doc/asymptote/examples/planeproject.asy
new file mode 100644
index 00000000000..ab8980b613e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/planeproject.asy
@@ -0,0 +1,18 @@
+import graph3;
+
+size3(200,IgnoreAspect);
+
+currentprojection=orthographic(4,6,3);
+
+real x(real t) {return 1+cos(2pi*t);}
+real y(real t) {return 1+sin(2pi*t);}
+real z(real t) {return t;}
+
+path3 p=graph(x,y,z,0,1,operator ..);
+
+draw(p,Arrow3);
+draw(planeproject(XY*unitsquare3)*p,red,Arrow3);
+draw(planeproject(YZ*unitsquare3)*p,green,Arrow3);
+draw(planeproject(ZX*unitsquare3)*p,blue,Arrow3);
+
+axes3("$x$","$y$","$z$");
diff --git a/Master/texmf-dist/doc/asymptote/examples/planes.asy b/Master/texmf-dist/doc/asymptote/examples/planes.asy
new file mode 100644
index 00000000000..da859200f03
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/planes.asy
@@ -0,0 +1,19 @@
+size(6cm,0);
+import bsp;
+
+real u=2.5;
+real v=1;
+
+currentprojection=oblique;
+
+path3 y=plane((2u,0,0),(0,2v,0),(-u,-v,0));
+path3 l=rotate(90,Z)*rotate(90,Y)*y;
+path3 g=rotate(90,X)*rotate(90,Y)*y;
+
+face[] faces;
+filldraw(faces.push(y),project(y),yellow);
+filldraw(faces.push(l),project(l),lightgrey);
+filldraw(faces.push(g),project(g),green);
+
+add(faces);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/polararea.asy b/Master/texmf-dist/doc/asymptote/examples/polararea.asy
new file mode 100644
index 00000000000..15d42ffd00e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/polararea.asy
@@ -0,0 +1,38 @@
+import math;
+import graph;
+
+size(0,150);
+
+real f(real t) {return 5+cos(10*t);}
+
+xaxis("$x$");
+yaxis("$y$");
+
+real theta1=pi/8;
+real theta2=pi/3;
+path k=graph(f,theta1,theta2,operator ..);
+real rmin=min(k).y;
+real rmax=max(k).y;
+draw((0,0)--rmax*expi(theta1),dotted);
+draw((0,0)--rmax*expi(theta2),dotted);
+
+path g=polargraph(f,theta1,theta2,operator ..);
+path h=(0,0)--g--cycle;
+fill(h,lightgray);
+draw(h);
+
+real thetamin=3*pi/10;
+real thetamax=2*pi/10;
+pair zmin=polar(f(thetamin),thetamin);
+pair zmax=polar(f(thetamax),thetamax);
+draw((0,0)--zmin,dotted+red);
+draw((0,0)--zmax,dotted+blue);
+
+draw("$\theta_*$",arc((0,0),0.5*rmin,0,degrees(thetamin)),red+fontsize(10pt),
+ PenMargins);
+draw("$\theta^*$",arc((0,0),0.5*rmax,0,degrees(thetamax)),blue+fontsize(10pt),
+ PenMargins);
+
+draw(arc((0,0),rmin,degrees(theta1),degrees(theta2)),red,PenMargins);
+draw(arc((0,0),rmax,degrees(theta1),degrees(theta2)),blue,PenMargins);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/polarcircle.asy b/Master/texmf-dist/doc/asymptote/examples/polarcircle.asy
new file mode 100644
index 00000000000..ce7ed948199
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/polarcircle.asy
@@ -0,0 +1,30 @@
+import math;
+import graph;
+size(0,100);
+
+real f(real t) {return 2*cos(t);}
+pair F(real x) {return (x,f(x));}
+
+draw(polargraph(f,0,pi,operator ..));
+
+defaultpen(fontsize(10pt));
+
+xaxis("$x$");
+yaxis("$y$");
+
+real theta=radians(50);
+real r=f(theta);
+draw("$\theta$",arc((0,0),0.5,0,degrees(theta)),red,Arrow,PenMargins);
+
+pair z=polar(r,theta);
+draw(z--(z.x,0),dotted+red);
+draw((0,0)--(z.x,0),dotted+red);
+label("$r\cos\theta$",(0.5*z.x,0),0.5*S,red);
+label("$r\sin\theta$",(z.x,0.5*z.y),0.5*E,red);
+dot("$(x,y)$",z,N);
+draw("r",(0,0)--z,0.5*unit(z)*I,blue,Arrow,DotMargin);
+
+dot("$(a,0)$",(1,0),NE);
+dot("$(2a,0)$",(2,0),NE);
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/polardatagraph.asy b/Master/texmf-dist/doc/asymptote/examples/polardatagraph.asy
new file mode 100644
index 00000000000..6bd646e8aa4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/polardatagraph.asy
@@ -0,0 +1,17 @@
+import graph;
+
+size(100);
+
+int n=30;
+real minRadius=0.2;
+real angles[]=uniform(0,2pi,n);
+angles.delete(angles.length-1);
+
+real[] r=new real[n];
+for(int i=0; i < n; ++i)
+ r[i]=unitrand()*(1-minRadius)+minRadius;
+
+interpolate join=operator ..(operator tension(10,true));
+draw(join(polargraph(r,angles,join),cycle),dot(red));
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/poster.asy b/Master/texmf-dist/doc/asymptote/examples/poster.asy
new file mode 100644
index 00000000000..cbcefc4bf69
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/poster.asy
@@ -0,0 +1,33 @@
+orientation=Landscape;
+import slide;
+import graph;
+
+defaultpen(deepblue);
+pagenumberpen=invisible;
+
+real f(real x) {return (x != 0) ? x*sin(1/x) : 0;}
+pair F(real x) {return (x,f(x));}
+
+xaxis(background,grey);
+yaxis(background,-0.25,0.25,grey);
+real a=1.2/pi;
+draw(background,graph(background,f,-a,a,10000),grey);
+label(background,"$x\sin\frac{1}{x}$",F(0.92/pi),3SE,grey+fontsize(14pt));
+frame f=background.fit();
+box(f,RadialShade(yellow,0.6*yellow+red),above=false);
+background.erase();
+add(background,f);
+
+title("Young Researchers' Conference",align=3S,fontsize(48pt));
+center("University of Alberta, Edmonton, April 1--2, 2006");
+
+skip(4);
+
+center("A general conference for\\
+the mathematical and statistical sciences\\
+for graduate students, by graduate students.",fontsize(32pt));
+
+label("Registration and abstract submission online.",(0,-0.5));
+
+label("\tt http://www.pims.math.ca/science/2006/06yrc/",point(SW),2NE,
+ black+fontsize(18pt));
diff --git a/Master/texmf-dist/doc/asymptote/examples/progrid.asy b/Master/texmf-dist/doc/asymptote/examples/progrid.asy
new file mode 100644
index 00000000000..20400b7148a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/progrid.asy
@@ -0,0 +1 @@
+label("$\displaystyle X_i = \sum_{j=1}^{N} a_{ij} f_j$");
diff --git a/Master/texmf-dist/doc/asymptote/examples/projectelevation.asy b/Master/texmf-dist/doc/asymptote/examples/projectelevation.asy
new file mode 100644
index 00000000000..6ffe5126633
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/projectelevation.asy
@@ -0,0 +1,17 @@
+import graph3;
+import grid3;
+import palette;
+
+currentprojection=orthographic(0.8,1,2);
+size(400,300,IgnoreAspect);
+
+real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);}
+
+surface s=surface(f,(-1/2,-1/2),(1/2,1/2),50,Spline);
+
+surface S=planeproject(unitsquare3)*s;
+S.colors(palette(s.map(zpart),Rainbow()));
+draw(S,nolight);
+draw(s,lightgray+opacity(0.7));
+
+grid3(XYZgrid);
diff --git a/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy b/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy
new file mode 100644
index 00000000000..25cbe6d4902
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy
@@ -0,0 +1,17 @@
+import solids;
+import palette;
+
+currentprojection=orthographic(20,0,3);
+
+size(400,300,IgnoreAspect);
+
+revolution r=revolution(new real(real x) {return sin(x)*exp(-x/2);},
+ 0,2pi,operator ..,Z);
+surface s=surface(r);
+
+surface S=planeproject(shift(-Z)*unitsquare3)*s;
+S.colors(palette(s.map(zpart),Rainbow()));
+
+render render=render(compression=Low,merge=true);
+draw(S,render);
+draw(s,lightgray,render);
diff --git a/Master/texmf-dist/doc/asymptote/examples/pseudosphere.asy b/Master/texmf-dist/doc/asymptote/examples/pseudosphere.asy
new file mode 100644
index 00000000000..a740381ef0e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/pseudosphere.asy
@@ -0,0 +1,33 @@
+// Pseudosphere:
+// x = a sin(u) cos(v);
+// y = a sin(u) sin(v);
+// z = a (ln(tg(u/2))+cos(u));
+
+import three;
+import solids;
+import graph3;
+import palette;
+
+triple pseudosphere(real x) {
+ return (sin(x),0,cos(x)+log(tan(x/2)));
+}
+
+size(20cm,IgnoreAspect);
+currentprojection=orthographic(160,40,100);
+currentlight=(50,50,50);
+
+path3 G=graph(pseudosphere,0.5pi,0.965pi,10,Spline);
+
+revolution r=revolution(O,G,Z);
+
+draw(r,1,longitudinalpen=nullpen);
+surface s=surface(r);
+s.colors(palette(s.map(zpart),Gradient(cyan+white+opacity(0.9),
+ magenta+white+opacity(0.9))));
+draw(s);
+
+draw(r,6,backpen=linetype("10 10",10),longitudinalpen=nullpen);
+
+int n=10;
+for(int i=0; i < n; ++i)
+ draw(rotate(i*360/n,O,Z)*G);
diff --git a/Master/texmf-dist/doc/asymptote/examples/quartercircle.asy b/Master/texmf-dist/doc/asymptote/examples/quartercircle.asy
new file mode 100644
index 00000000000..6565daa046e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/quartercircle.asy
@@ -0,0 +1,2 @@
+size(100,0);
+draw((1,0){up}..{left}(0,1),Arrow);
diff --git a/Master/texmf-dist/doc/asymptote/examples/quilt.asy b/Master/texmf-dist/doc/asymptote/examples/quilt.asy
new file mode 100644
index 00000000000..7a84017762c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/quilt.asy
@@ -0,0 +1,44 @@
+import math;
+
+int n=8, skip=3;
+
+pair r(int k) { return unityroot(n,k); }
+
+pen col=blue, col2=purple;
+
+guide square=box((1,1),(-1,-1));
+
+guide step(int mult)
+{
+ guide g;
+ for(int k=0; k<n; ++k)
+ g=g--r(mult*k);
+ g=g--cycle;
+ return g;
+}
+
+guide oct=step(1), star=step(skip);
+
+guide wedge(pair z, pair v, real r, real a)
+{
+ pair w=expi(a/2.0);
+ v=unit(v)*r;
+ return shift(z)*((0,0)--v*w--v*conj(w)--cycle);
+}
+
+filldraw(square, col);
+filldraw(oct, yellow);
+
+// The interior angle of the points of the star.
+real intang=pi*(1-((real)2skip)/((real)n));
+
+for(int k=0; k<n; ++k) {
+ pair z=midpoint(r(k)--r(k+1));
+ guide g=wedge(z,-z,1,intang);
+ filldraw(g,col2);
+}
+
+fill(star,yellow);
+filldraw(star,evenodd+col);
+
+size(5inch,0);
diff --git a/Master/texmf-dist/doc/asymptote/examples/rainbow.asy b/Master/texmf-dist/doc/asymptote/examples/rainbow.asy
new file mode 100644
index 00000000000..c85282a87b1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/rainbow.asy
@@ -0,0 +1,12 @@
+size(200);
+
+pen indigo=rgb(102/255,0,238/255);
+
+void rainbow(path g) {
+ draw(new path[] {scale(1.3)*g,scale(1.2)*g,scale(1.1)*g,g,
+ scale(0.9)*g,scale(0.8)*g,scale(0.7)*g},
+ new pen[] {red,orange,yellow,green,blue,indigo,purple});
+}
+
+rainbow((1,0){N}..(0,1){W}..{S}(-1,0));
+rainbow(scale(4)*shift(-0.5,-0.5)*unitsquare);
diff --git a/Master/texmf-dist/doc/asymptote/examples/randompath3.asy b/Master/texmf-dist/doc/asymptote/examples/randompath3.asy
new file mode 100644
index 00000000000..755c3a29128
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/randompath3.asy
@@ -0,0 +1,4 @@
+import three;
+
+size(300);
+draw(randompath3(100),red,currentlight);
diff --git a/Master/texmf-dist/doc/asymptote/examples/ring.asy b/Master/texmf-dist/doc/asymptote/examples/ring.asy
new file mode 100644
index 00000000000..5fec60d4c0b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/ring.asy
@@ -0,0 +1,4 @@
+size(0,100);
+path g=scale(2)*unitcircle;
+label("$a \le r \le b$");
+radialshade(unitcircle^^g,yellow+evenodd,(0,0),1.0,yellow+brown,(0,0),2);
diff --git a/Master/texmf-dist/doc/asymptote/examples/roll.asy b/Master/texmf-dist/doc/asymptote/examples/roll.asy
new file mode 100644
index 00000000000..4d15ac0febe
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/roll.asy
@@ -0,0 +1,10 @@
+import graph3;
+
+size(200,0);
+
+triple f(pair t) {
+return(t.x+t.y/4+sin(t.y),cos(t.y),sin(t.y));
+}
+
+surface s=surface(f,(0,0),(2pi,2pi),7,20,Spline);
+draw(s,olive,render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/roundpath.asy b/Master/texmf-dist/doc/asymptote/examples/roundpath.asy
new file mode 100644
index 00000000000..e6d31c6bc9c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/roundpath.asy
@@ -0,0 +1,32 @@
+// example file for 'roundedpath.asy'
+// written by stefan knorr
+
+// import needed packages
+import roundedpath;
+
+// define open and closed path
+path A = (0,0)--(10,10)--(30,10)--(20,0)--(30,-10)--(10,-10);
+path B = A--cycle;
+
+draw(shift(-60,0)*A, green);
+draw(shift(-30,0)*roundedpath(A,1), red);
+
+// draw open path and some modifications
+for (int i = 1; i < 20; ++i)
+ draw(roundedpath(A,i/4), rgb(1 - i*0.049, 0, i*0.049) + linewidth(0.5));
+
+draw(shift(-60,-30)*B, green);
+draw(shift(-30,-30)*roundedpath(B,1), red);
+
+//draw closed path and some modifications
+for (int i = 1; i < 20; ++i) // only round edges
+ draw(shift(0,-30)*roundedpath(B,i/4), rgb(0.5, i*0.049,0) + linewidth(0.5));
+
+for (int i = 1; i < 20; ++i) // round edged and scale
+ draw(shift(0,-60)*roundedpath(B,i/4,1-i/50), rgb(1, 1 - i*0.049,i*0.049) + linewidth(0.5));
+
+for (int i = 1; i < 50; ++i) // shift (round edged und scaled shifted version)
+ draw(shift(-30,-60)*shift(10,0)*roundedpath(shift(-10,0)*B,i/10,1-i/80), rgb( i*0.024, 1 - i*0.024,0) + linewidth(0.5));
+
+for (int i = 1; i < 20; ++i) // shift (round edged und scaled shifted version)
+ draw(shift(-60,-60)*shift(10,0)*roundedpath(shift(-10,0)*B,i/4,1-i/50), gray(i/40));
diff --git a/Master/texmf-dist/doc/asymptote/examples/sacone.asy b/Master/texmf-dist/doc/asymptote/examples/sacone.asy
new file mode 100644
index 00000000000..9cdd0e138af
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sacone.asy
@@ -0,0 +1,23 @@
+size(0,150);
+
+pair z0=(0,0);
+real r=1;
+real h=1;
+real l=sqrt(r^2+h^2);
+real a=(1-r/l)*360;
+real a1=a/2;
+real a2=360-a/2;
+path g=arc(z0,r,a1,a2);
+fill((0,0)--g--cycle,lightgreen);
+draw(g);
+pair z1=point(g,0);
+pair z2=point(g,length(g));
+
+real r2=1.1*r;
+path c=arc(0,r2,a1,a2);
+draw("$2\pi r$",c,red,Arrows,Bars,PenMargins);
+pen edge=blue+0.5mm;
+draw("$\ell$",z0--z1,0.5*SE,edge);
+draw(z0--z2,edge);
+draw(arc(z0,r,a2-360,a1),grey+dashed);
+dot(0);
diff --git a/Master/texmf-dist/doc/asymptote/examples/sacone3D.asy b/Master/texmf-dist/doc/asymptote/examples/sacone3D.asy
new file mode 100644
index 00000000000..d8f3aa373d3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sacone3D.asy
@@ -0,0 +1,14 @@
+import solids;
+
+size(0,75);
+real r=1;
+real h=1;
+
+revolution R=cone(r,h);
+
+draw(surface(R),lightgreen+opacity(0.5),render(compression=Low));
+pen edge=blue+0.25mm;
+draw("$\ell$",(0,r,0)--(0,0,h),W,edge);
+draw("$r$",(0,0,0)--(r,0,0),red+dashed);
+draw((0,0,0)--(0,0,h),red+dashed);
+dot(h*Z);
diff --git a/Master/texmf-dist/doc/asymptote/examples/sacylinder.asy b/Master/texmf-dist/doc/asymptote/examples/sacylinder.asy
new file mode 100644
index 00000000000..06f7909d52a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sacylinder.asy
@@ -0,0 +1,26 @@
+import graph;
+size(0,100);
+
+real r=1;
+real h=3;
+
+yaxis(dashed);
+
+real m=0.475*h;
+
+draw((r,0)--(r,h));
+label("$L$",(r,0.5*h),E);
+
+real s=4;
+
+pair z1=(s,0);
+pair z2=z1+(2*pi*r,h);
+filldraw(box(z1,z2),lightgreen);
+pair zm=0.5*(z1+z2);
+label("$L$",(z1.x,zm.y),W);
+label("$2\pi r$",(zm.x,z2.y),N);
+draw("$r$",(0,m)--(r,m),N,red,Arrows);
+
+draw((0,1.015h),yscale(0.5)*arc(0,0.25cm,-250,70),red,ArcArrow);
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/sacylinder3D.asy b/Master/texmf-dist/doc/asymptote/examples/sacylinder3D.asy
new file mode 100644
index 00000000000..fcc1a487bbe
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sacylinder3D.asy
@@ -0,0 +1,14 @@
+import solids;
+size(0,100);
+
+real r=1;
+real h=3;
+
+revolution R=cylinder(-h/2*Z,r,h);
+draw(surface(R),lightgreen+opacity(0.5),render(compression=Low));
+draw((0,0,-h/2)--(0,0,h/2),dashed);
+dot((0,0,-h/2));
+dot((0,0,h/2));
+draw("$L$",(0,r,-h/2)--(0,r,h/2),W,black);
+draw("$r$",(0,0,-h/2)--(0,r,-h/2),red);
+draw(arc(O,1,90,90,90,0),red,Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/saddle.asy b/Master/texmf-dist/doc/asymptote/examples/saddle.asy
new file mode 100644
index 00000000000..0180bf125a6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/saddle.asy
@@ -0,0 +1,7 @@
+import three;
+
+size(100,0);
+path3 g=(1,0,0)..(0,1,1)..(-1,0,0)..(0,-1,1)..cycle;
+draw(g);
+draw(((-1,-1,0)--(1,-1,0)--(1,1,0)--(-1,1,0)--cycle));
+dot(g,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/scaledgraph.asy b/Master/texmf-dist/doc/asymptote/examples/scaledgraph.asy
new file mode 100644
index 00000000000..408c10cc582
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/scaledgraph.asy
@@ -0,0 +1,15 @@
+import graph;
+
+axiscoverage=0.9;
+size(200,IgnoreAspect);
+
+real[] x={-1e-11,1e-11};
+real[] y={0,1e6};
+
+real xscale=round(log10(max(x)));
+real yscale=round(log10(max(y)))-1;
+
+draw(graph(x*10^(-xscale),y*10^(-yscale)),red);
+
+xaxis("$x/10^{"+(string) xscale+"}$",BottomTop,LeftTicks);
+yaxis("$y/10^{"+(string) yscale+"}$",LeftRight,RightTicks(trailingzero));
diff --git a/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy b/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy
new file mode 100644
index 00000000000..39f802f935d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy
@@ -0,0 +1,32 @@
+import graph;
+
+size(9cm,6cm,IgnoreAspect);
+string data="secondaryaxis.csv";
+
+file in=input(data).line().csv();
+
+string[] titlelabel=in;
+string[] columnlabel=in;
+
+real[][] a=in.dimension(0,0);
+a=transpose(a);
+real[] t=a[0], susceptible=a[1], infectious=a[2], dead=a[3], larvae=a[4];
+real[] susceptibleM=a[5], exposed=a[6],infectiousM=a[7];
+
+scale(true);
+
+draw(graph(t,susceptible,t >= 10 & t <= 15));
+draw(graph(t,dead,t >= 10 & t <= 15),dashed);
+
+xaxis("Time ($\tau$)",BottomTop,LeftTicks);
+yaxis(Left,RightTicks);
+
+picture secondary=secondaryY(new void(picture pic) {
+ scale(pic,Linear(true),Log(true));
+ draw(pic,graph(pic,t,infectious,t >= 10 & t <= 15),red);
+ yaxis(pic,Right,red,LeftTicks(begin=false,end=false));
+ });
+
+add(secondary);
+label(shift(5mm*N)*"Proportion of crows",point(NW),E);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.csv b/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.csv
new file mode 100644
index 00000000000..082d45a0e71
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.csv
@@ -0,0 +1,1003 @@
+,"Proportion of crows",,,"Mosquitoes per crow",,,
+Time,Susceptible,Infectious,Dead,Larvae,Susceptible,Exposed,Infectious
+0,1,0,0,,30,0.000,0.001
+0.1,1.000,0.000,0.000,12.794,30.000,0.000,0.001
+0.2,1.000,0.000,0.000,12.794,30.000,0.000,0.001
+0.3,1.000,0.000,0.000,12.795,30.000,0.000,0.001
+0.4,1.000,0.000,0.000,12.795,30.000,0.000,0.001
+0.5,1.000,0.000,0.000,12.795,30.000,0.000,0.001
+0.6,1.000,0.000,0.000,12.795,30.000,0.000,0.001
+0.7,1.000,0.000,0.000,12.795,30.000,0.000,0.001
+0.8,0.999,0.000,0.000,12.795,30.000,0.000,0.001
+0.9,0.999,0.000,0.000,12.795,29.999,0.001,0.001
+1,0.999,0.000,0.000,12.795,29.999,0.001,0.001
+1.1,0.999,0.000,0.000,12.795,29.999,0.001,0.001
+1.2,0.999,0.000,0.000,12.795,29.999,0.001,0.001
+1.3,0.999,0.000,0.000,12.795,29.999,0.001,0.001
+1.4,0.999,0.000,0.001,12.795,29.999,0.001,0.001
+1.5,0.999,0.001,0.001,12.795,29.999,0.001,0.001
+1.6,0.999,0.001,0.001,12.795,29.999,0.001,0.001
+1.7,0.999,0.001,0.001,12.795,29.998,0.001,0.001
+1.8,0.999,0.001,0.001,12.795,29.998,0.001,0.001
+1.9,0.998,0.001,0.001,12.795,29.998,0.001,0.002
+2,0.998,0.001,0.001,12.795,29.998,0.001,0.002
+2.1,0.998,0.001,0.001,12.795,29.998,0.002,0.002
+2.2,0.998,0.001,0.001,12.795,29.998,0.002,0.002
+2.3,0.998,0.001,0.001,12.795,29.997,0.002,0.002
+2.4,0.998,0.001,0.001,12.795,29.997,0.002,0.002
+2.5,0.998,0.001,0.002,12.795,29.997,0.002,0.002
+2.6,0.997,0.001,0.002,12.795,29.997,0.002,0.002
+2.7,0.997,0.001,0.002,12.795,29.996,0.002,0.003
+2.8,0.997,0.001,0.002,12.795,29.996,0.002,0.003
+2.9,0.997,0.001,0.002,12.795,29.996,0.002,0.003
+3,0.997,0.001,0.002,12.795,29.995,0.003,0.003
+3.1,0.996,0.001,0.002,12.795,29.995,0.003,0.003
+3.2,0.996,0.001,0.003,12.795,29.995,0.003,0.003
+3.3,0.996,0.001,0.003,12.795,29.994,0.003,0.004
+3.4,0.996,0.001,0.003,12.795,29.994,0.003,0.004
+3.5,0.995,0.002,0.003,12.795,29.994,0.003,0.004
+3.6,0.995,0.002,0.003,12.795,29.993,0.004,0.004
+3.7,0.995,0.002,0.004,12.795,29.993,0.004,0.004
+3.8,0.994,0.002,0.004,12.795,29.992,0.004,0.005
+3.9,0.994,0.002,0.004,12.795,29.992,0.004,0.005
+4,0.994,0.002,0.004,12.795,29.991,0.005,0.005
+4.1,0.993,0.002,0.005,12.795,29.991,0.005,0.006
+4.2,0.993,0.002,0.005,12.795,29.990,0.005,0.006
+4.3,0.992,0.002,0.005,12.795,29.989,0.005,0.006
+4.4,0.992,0.003,0.006,12.795,29.989,0.006,0.007
+4.5,0.991,0.003,0.006,12.795,29.988,0.006,0.007
+4.6,0.991,0.003,0.006,12.795,29.987,0.006,0.008
+4.7,0.990,0.003,0.007,12.795,29.986,0.007,0.008
+4.8,0.990,0.003,0.007,12.795,29.985,0.007,0.008
+4.9,0.989,0.003,0.008,12.795,29.984,0.008,0.009
+5,0.988,0.004,0.008,12.795,29.984,0.008,0.009
+5.1,0.988,0.004,0.009,12.795,29.982,0.008,0.010
+5.2,0.987,0.004,0.009,12.795,29.981,0.009,0.011
+5.3,0.986,0.004,0.010,12.795,29.980,0.010,0.011
+5.4,0.985,0.005,0.010,12.795,29.979,0.010,0.012
+5.5,0.984,0.005,0.011,12.795,29.978,0.011,0.013
+5.6,0.983,0.005,0.012,12.795,29.976,0.011,0.013
+5.7,0.982,0.005,0.012,12.795,29.975,0.012,0.014
+5.8,0.981,0.006,0.013,12.795,29.973,0.013,0.015
+5.9,0.980,0.006,0.014,12.795,29.972,0.013,0.016
+6,0.979,0.006,0.015,12.795,29.970,0.014,0.017
+6.1,0.978,0.007,0.016,12.795,29.968,0.015,0.018
+6.2,0.976,0.007,0.016,12.795,29.966,0.016,0.019
+6.3,0.975,0.008,0.017,12.795,29.964,0.017,0.020
+6.4,0.973,0.008,0.019,12.795,29.962,0.018,0.021
+6.5,0.972,0.008,0.020,12.795,29.960,0.019,0.022
+6.6,0.970,0.009,0.021,12.795,29.957,0.020,0.024
+6.7,0.968,0.009,0.022,12.795,29.955,0.021,0.025
+6.8,0.967,0.010,0.023,12.795,29.952,0.022,0.026
+6.9,0.965,0.011,0.025,12.795,29.949,0.024,0.028
+7,0.963,0.011,0.026,12.795,29.946,0.025,0.030
+7.1,0.960,0.012,0.028,12.795,29.943,0.026,0.031
+7.2,0.958,0.013,0.029,12.795,29.940,0.028,0.033
+7.3,0.956,0.013,0.031,12.795,29.936,0.029,0.035
+7.4,0.953,0.014,0.033,12.795,29.933,0.031,0.037
+7.5,0.950,0.015,0.035,12.795,29.929,0.033,0.039
+7.6,0.947,0.016,0.037,12.795,29.925,0.035,0.042
+7.7,0.944,0.016,0.039,12.795,29.920,0.037,0.044
+7.8,0.941,0.017,0.041,12.795,29.916,0.039,0.046
+7.9,0.938,0.018,0.044,12.795,29.911,0.041,0.049
+8,0.934,0.019,0.046,12.795,29.906,0.043,0.052
+8.1,0.931,0.020,0.049,12.795,29.900,0.046,0.055
+8.2,0.927,0.021,0.052,12.795,29.895,0.048,0.058
+8.3,0.923,0.023,0.055,12.795,29.889,0.051,0.061
+8.4,0.918,0.024,0.058,12.795,29.883,0.054,0.065
+8.5,0.914,0.025,0.061,12.795,29.876,0.056,0.069
+8.6,0.909,0.026,0.065,12.795,29.869,0.059,0.072
+8.7,0.904,0.028,0.068,12.795,29.862,0.063,0.076
+8.8,0.899,0.029,0.072,12.795,29.854,0.066,0.081
+8.9,0.893,0.031,0.076,12.795,29.846,0.070,0.085
+9,0.887,0.032,0.080,12.795,29.838,0.073,0.090
+9.1,0.881,0.034,0.085,12.795,29.829,0.077,0.095
+9.2,0.875,0.036,0.090,12.795,29.820,0.081,0.100
+9.3,0.868,0.037,0.095,12.795,29.810,0.085,0.106
+9.4,0.861,0.039,0.100,12.795,29.800,0.090,0.112
+9.5,0.854,0.041,0.105,12.795,29.789,0.094,0.118
+9.6,0.846,0.043,0.111,12.795,29.778,0.099,0.124
+9.7,0.838,0.045,0.117,12.795,29.766,0.104,0.131
+9.8,0.830,0.047,0.123,12.795,29.754,0.109,0.138
+9.9,0.821,0.049,0.130,12.795,29.742,0.114,0.145
+10,0.812,0.052,0.136,12.795,29.729,0.120,0.153
+10.1,0.802,0.054,0.144,12.795,29.715,0.126,0.161
+10.2,0.793,0.056,0.151,12.795,29.701,0.132,0.169
+10.3,0.782,0.059,0.159,12.795,29.686,0.138,0.178
+10.4,0.772,0.061,0.167,12.795,29.670,0.144,0.187
+10.5,0.761,0.064,0.175,12.795,29.654,0.150,0.196
+10.6,0.750,0.066,0.184,12.795,29.638,0.157,0.206
+10.7,0.738,0.069,0.193,12.795,29.621,0.164,0.216
+10.8,0.726,0.072,0.203,12.795,29.603,0.171,0.227
+10.9,0.713,0.074,0.212,12.795,29.585,0.178,0.238
+11,0.700,0.077,0.223,12.795,29.566,0.185,0.250
+11.1,0.687,0.080,0.233,12.795,29.547,0.193,0.261
+11.2,0.674,0.082,0.244,12.795,29.527,0.200,0.274
+11.3,0.660,0.085,0.255,12.795,29.507,0.208,0.286
+11.4,0.645,0.088,0.267,12.795,29.486,0.215,0.300
+11.5,0.631,0.090,0.279,12.795,29.465,0.223,0.313
+11.6,0.616,0.093,0.291,12.795,29.443,0.231,0.327
+11.7,0.601,0.095,0.304,12.795,29.421,0.238,0.341
+11.8,0.585,0.098,0.317,12.795,29.399,0.246,0.356
+11.9,0.570,0.100,0.330,12.795,29.376,0.254,0.371
+12,0.554,0.102,0.344,12.795,29.353,0.261,0.386
+12.1,0.538,0.104,0.358,12.795,29.330,0.269,0.402
+12.2,0.521,0.106,0.372,12.795,29.307,0.276,0.418
+12.3,0.505,0.108,0.387,12.795,29.283,0.283,0.434
+12.4,0.489,0.110,0.401,12.795,29.260,0.290,0.451
+12.5,0.472,0.112,0.416,12.795,29.236,0.297,0.468
+12.6,0.456,0.113,0.432,12.795,29.213,0.303,0.485
+12.7,0.439,0.114,0.447,12.795,29.190,0.309,0.502
+12.8,0.423,0.115,0.462,12.795,29.167,0.315,0.519
+12.9,0.406,0.116,0.478,12.795,29.144,0.320,0.536
+13,0.390,0.116,0.494,12.795,29.122,0.325,0.554
+13.1,0.374,0.117,0.509,12.795,29.100,0.329,0.571
+13.2,0.358,0.117,0.525,12.795,29.079,0.333,0.588
+13.3,0.343,0.117,0.541,12.795,29.059,0.337,0.606
+13.4,0.327,0.116,0.557,12.795,29.039,0.340,0.623
+13.5,0.312,0.116,0.572,12.795,29.020,0.342,0.639
+13.6,0.297,0.115,0.588,12.795,29.001,0.344,0.656
+13.7,0.283,0.114,0.603,12.795,28.984,0.345,0.672
+13.8,0.269,0.113,0.618,12.795,28.967,0.346,0.688
+13.9,0.255,0.111,0.634,12.795,28.952,0.346,0.704
+14,0.242,0.109,0.648,12.795,28.937,0.345,0.719
+14.1,0.229,0.108,0.663,12.795,28.924,0.344,0.733
+14.2,0.217,0.106,0.677,12.795,28.912,0.342,0.747
+14.3,0.205,0.103,0.692,12.795,28.900,0.340,0.761
+14.4,0.194,0.101,0.705,12.795,28.891,0.337,0.774
+14.5,0.183,0.099,0.719,12.795,28.882,0.333,0.786
+14.6,0.172,0.096,0.732,12.795,28.874,0.329,0.797
+14.7,0.162,0.093,0.745,12.795,28.868,0.325,0.808
+14.8,0.153,0.090,0.757,12.795,28.863,0.320,0.818
+14.9,0.143,0.087,0.769,12.795,28.860,0.314,0.827
+15,0.135,0.084,0.781,12.795,28.857,0.308,0.836
+15.1,0.127,0.081,0.792,12.795,28.856,0.302,0.843
+15.2,0.119,0.078,0.803,12.795,28.856,0.295,0.850
+15.3,0.112,0.075,0.813,12.795,28.857,0.288,0.856
+15.4,0.105,0.072,0.823,12.795,28.859,0.281,0.861
+15.5,0.098,0.069,0.833,12.795,28.863,0.273,0.865
+15.6,0.092,0.066,0.842,12.795,28.867,0.266,0.868
+15.7,0.086,0.063,0.850,12.795,28.873,0.258,0.870
+15.8,0.081,0.060,0.859,12.795,28.879,0.250,0.872
+15.9,0.076,0.058,0.867,12.795,28.887,0.242,0.873
+16,0.071,0.055,0.874,12.795,28.895,0.233,0.873
+16.1,0.066,0.052,0.882,12.795,28.904,0.225,0.872
+16.2,0.062,0.049,0.888,12.795,28.914,0.217,0.870
+16.3,0.058,0.047,0.895,12.795,28.925,0.209,0.867
+16.4,0.055,0.044,0.901,12.795,28.936,0.201,0.864
+16.5,0.051,0.042,0.907,12.795,28.948,0.192,0.860
+16.6,0.048,0.040,0.912,12.795,28.961,0.185,0.856
+16.7,0.045,0.037,0.918,12.795,28.974,0.177,0.850
+16.8,0.042,0.035,0.922,12.795,28.988,0.169,0.844
+16.9,0.040,0.033,0.927,12.795,29.002,0.161,0.838
+17,0.037,0.031,0.931,12.795,29.016,0.154,0.831
+17.1,0.035,0.029,0.936,12.795,29.031,0.147,0.823
+17.2,0.033,0.028,0.939,12.795,29.046,0.140,0.815
+17.3,0.031,0.026,0.943,12.795,29.061,0.133,0.807
+17.4,0.029,0.024,0.946,12.795,29.077,0.126,0.798
+17.5,0.028,0.023,0.950,12.795,29.093,0.120,0.788
+17.6,0.026,0.021,0.953,12.795,29.108,0.114,0.779
+17.7,0.025,0.020,0.955,12.795,29.124,0.108,0.769
+17.8,0.023,0.019,0.958,12.795,29.141,0.102,0.758
+17.9,0.022,0.018,0.960,12.795,29.157,0.097,0.748
+18,0.021,0.017,0.963,12.795,29.173,0.092,0.737
+18.1,0.020,0.015,0.965,12.795,29.189,0.087,0.726
+18.2,0.019,0.014,0.967,12.795,29.205,0.082,0.714
+18.3,0.018,0.014,0.969,12.795,29.221,0.077,0.703
+18.4,0.017,0.013,0.971,12.795,29.237,0.073,0.691
+18.5,0.016,0.012,0.972,12.795,29.253,0.069,0.680
+18.6,0.015,0.011,0.974,12.795,29.268,0.065,0.668
+18.7,0.014,0.010,0.975,12.795,29.284,0.061,0.656
+18.8,0.014,0.010,0.977,12.795,29.299,0.057,0.644
+18.9,0.013,0.009,0.978,12.795,29.315,0.054,0.632
+19,0.012,0.008,0.979,12.795,29.330,0.051,0.620
+19.1,0.012,0.008,0.980,12.795,29.345,0.048,0.609
+19.2,0.011,0.007,0.981,12.795,29.359,0.045,0.597
+19.3,0.011,0.007,0.982,12.795,29.374,0.042,0.585
+19.4,0.010,0.007,0.983,12.795,29.388,0.040,0.573
+19.5,0.010,0.006,0.984,12.795,29.402,0.037,0.562
+19.6,0.010,0.006,0.985,12.795,29.416,0.035,0.550
+19.7,0.009,0.005,0.985,12.795,29.430,0.033,0.538
+19.8,0.009,0.005,0.986,12.795,29.443,0.031,0.527
+19.9,0.009,0.005,0.987,12.795,29.456,0.029,0.516
+20,0.008,0.004,0.987,12.795,29.469,0.027,0.505
+20.1,0.008,0.004,0.988,12.795,29.482,0.026,0.494
+20.2,0.008,0.004,0.989,12.795,29.494,0.024,0.483
+20.3,0.007,0.004,0.989,12.795,29.506,0.023,0.472
+20.4,0.007,0.003,0.990,12.795,29.518,0.021,0.461
+20.5,0.007,0.003,0.990,12.795,29.530,0.020,0.451
+20.6,0.007,0.003,0.990,12.795,29.541,0.019,0.441
+20.7,0.006,0.003,0.991,12.795,29.553,0.018,0.431
+20.8,0.006,0.003,0.991,12.795,29.564,0.017,0.421
+20.9,0.006,0.002,0.991,12.795,29.575,0.016,0.411
+21,0.006,0.002,0.992,12.795,29.585,0.015,0.401
+21.1,0.006,0.002,0.992,12.795,29.595,0.014,0.392
+21.2,0.006,0.002,0.992,12.795,29.605,0.013,0.383
+21.3,0.005,0.002,0.993,12.795,29.615,0.012,0.374
+21.4,0.005,0.002,0.993,12.795,29.625,0.011,0.365
+21.5,0.005,0.002,0.993,12.795,29.634,0.011,0.356
+21.6,0.005,0.002,0.993,12.795,29.644,0.010,0.347
+21.7,0.005,0.002,0.994,12.795,29.653,0.009,0.339
+21.8,0.005,0.001,0.994,12.795,29.661,0.009,0.331
+21.9,0.005,0.001,0.994,12.795,29.670,0.008,0.323
+22,0.004,0.001,0.994,12.795,29.678,0.008,0.315
+22.1,0.004,0.001,0.994,12.795,29.687,0.007,0.307
+22.2,0.004,0.001,0.995,12.795,29.695,0.007,0.299
+22.3,0.004,0.001,0.995,12.795,29.702,0.007,0.292
+22.4,0.004,0.001,0.995,12.795,29.710,0.006,0.285
+22.5,0.004,0.001,0.995,12.795,29.718,0.006,0.278
+22.6,0.004,0.001,0.995,12.795,29.725,0.006,0.271
+22.7,0.004,0.001,0.995,12.795,29.732,0.005,0.264
+22.8,0.004,0.001,0.995,12.795,29.739,0.005,0.257
+22.9,0.004,0.001,0.995,12.795,29.746,0.005,0.251
+23,0.004,0.001,0.996,12.795,29.752,0.004,0.244
+23.1,0.004,0.001,0.996,12.795,29.758,0.004,0.238
+23.2,0.004,0.001,0.996,12.795,29.765,0.004,0.232
+23.3,0.003,0.001,0.996,12.795,29.771,0.004,0.226
+23.4,0.003,0.001,0.996,12.795,29.777,0.004,0.221
+23.5,0.003,0.001,0.996,12.795,29.783,0.003,0.215
+23.6,0.003,0.001,0.996,12.795,29.788,0.003,0.210
+23.7,0.003,0.001,0.996,12.795,29.794,0.003,0.204
+23.8,0.003,0.001,0.996,12.795,29.799,0.003,0.199
+23.9,0.003,0.001,0.996,12.795,29.804,0.003,0.194
+24,0.003,0.000,0.996,12.795,29.809,0.003,0.189
+24.1,0.003,0.000,0.996,12.795,29.814,0.002,0.184
+24.2,0.003,0.000,0.997,12.795,29.819,0.002,0.179
+24.3,0.003,0.000,0.997,12.795,29.824,0.002,0.175
+24.4,0.003,0.000,0.997,12.795,29.829,0.002,0.170
+24.5,0.003,0.000,0.997,12.795,29.833,0.002,0.166
+24.6,0.003,0.000,0.997,12.795,29.838,0.002,0.162
+24.7,0.003,0.000,0.997,12.795,29.842,0.002,0.157
+24.8,0.003,0.000,0.997,12.795,29.846,0.002,0.153
+24.9,0.003,0.000,0.997,12.795,29.850,0.002,0.149
+25,0.003,0.000,0.997,12.795,29.854,0.002,0.145
+25.1,0.003,0.000,0.997,12.795,29.858,0.002,0.142
+25.2,0.003,0.000,0.997,12.795,29.862,0.001,0.138
+25.3,0.003,0.000,0.997,12.795,29.865,0.001,0.134
+25.4,0.003,0.000,0.997,12.795,29.869,0.001,0.131
+25.5,0.003,0.000,0.997,12.795,29.872,0.001,0.128
+25.6,0.003,0.000,0.997,12.795,29.876,0.001,0.124
+25.7,0.003,0.000,0.997,12.795,29.879,0.001,0.121
+25.8,0.003,0.000,0.997,12.795,29.882,0.001,0.118
+25.9,0.003,0.000,0.997,12.795,29.885,0.001,0.115
+26,0.002,0.000,0.997,12.795,29.888,0.001,0.112
+26.1,0.002,0.000,0.997,12.795,29.891,0.001,0.109
+26.2,0.002,0.000,0.997,12.795,29.894,0.001,0.106
+26.3,0.002,0.000,0.997,12.795,29.897,0.001,0.103
+26.4,0.002,0.000,0.997,12.795,29.900,0.001,0.101
+26.5,0.002,0.000,0.997,12.795,29.902,0.001,0.098
+26.6,0.002,0.000,0.997,12.795,29.905,0.001,0.095
+26.7,0.002,0.000,0.997,12.795,29.907,0.001,0.093
+26.8,0.002,0.000,0.997,12.795,29.910,0.001,0.090
+26.9,0.002,0.000,0.998,12.795,29.912,0.001,0.088
+27,0.002,0.000,0.998,12.795,29.915,0.001,0.086
+27.1,0.002,0.000,0.998,12.795,29.917,0.001,0.083
+27.2,0.002,0.000,0.998,12.795,29.919,0.001,0.081
+27.3,0.002,0.000,0.998,12.795,29.921,0.001,0.079
+27.4,0.002,0.000,0.998,12.795,29.923,0.001,0.077
+27.5,0.002,0.000,0.998,12.795,29.925,0.001,0.075
+27.6,0.002,0.000,0.998,12.795,29.927,0.001,0.073
+27.7,0.002,0.000,0.998,12.795,29.929,0.001,0.071
+27.8,0.002,0.000,0.998,12.795,29.931,0.001,0.069
+27.9,0.002,0.000,0.998,12.795,29.933,0.000,0.067
+28,0.002,0.000,0.998,12.795,29.935,0.000,0.066
+28.1,0.002,0.000,0.998,12.795,29.937,0.000,0.064
+28.2,0.002,0.000,0.998,12.795,29.938,0.000,0.062
+28.3,0.002,0.000,0.998,12.795,29.940,0.000,0.061
+28.4,0.002,0.000,0.998,12.795,29.942,0.000,0.059
+28.5,0.002,0.000,0.998,12.795,29.943,0.000,0.057
+28.6,0.002,0.000,0.998,12.795,29.945,0.000,0.056
+28.7,0.002,0.000,0.998,12.795,29.946,0.000,0.054
+28.8,0.002,0.000,0.998,12.795,29.948,0.000,0.053
+28.9,0.002,0.000,0.998,12.795,29.949,0.000,0.052
+29,0.002,0.000,0.998,12.795,29.950,0.000,0.050
+29.1,0.002,0.000,0.998,12.795,29.952,0.000,0.049
+29.2,0.002,0.000,0.998,12.795,29.953,0.000,0.048
+29.3,0.002,0.000,0.998,12.795,29.954,0.000,0.046
+29.4,0.002,0.000,0.998,12.795,29.955,0.000,0.045
+29.5,0.002,0.000,0.998,12.795,29.957,0.000,0.044
+29.6,0.002,0.000,0.998,12.795,29.958,0.000,0.043
+29.7,0.002,0.000,0.998,12.795,29.959,0.000,0.042
+29.8,0.002,0.000,0.998,12.795,29.960,0.000,0.041
+29.9,0.002,0.000,0.998,12.795,29.961,0.000,0.040
+30,0.002,0.000,0.998,12.795,29.962,0.000,0.039
+30.1,0.002,0.000,0.998,12.795,29.963,0.000,0.037
+30.2,0.002,0.000,0.998,12.795,29.964,0.000,0.037
+30.3,0.002,0.000,0.998,12.795,29.965,0.000,0.036
+30.4,0.002,0.000,0.998,12.795,29.966,0.000,0.035
+30.5,0.002,0.000,0.998,12.795,29.967,0.000,0.034
+30.6,0.002,0.000,0.998,12.795,29.968,0.000,0.033
+30.7,0.002,0.000,0.998,12.795,29.969,0.000,0.032
+30.8,0.002,0.000,0.998,12.795,29.970,0.000,0.031
+30.9,0.002,0.000,0.998,12.795,29.971,0.000,0.030
+31,0.002,0.000,0.998,12.795,29.971,0.000,0.029
+31.1,0.002,0.000,0.998,12.795,29.972,0.000,0.029
+31.2,0.002,0.000,0.998,12.795,29.973,0.000,0.028
+31.3,0.002,0.000,0.998,12.795,29.974,0.000,0.027
+31.4,0.002,0.000,0.998,12.795,29.974,0.000,0.026
+31.5,0.002,0.000,0.998,12.795,29.975,0.000,0.026
+31.6,0.002,0.000,0.998,12.795,29.976,0.000,0.025
+31.7,0.002,0.000,0.998,12.795,29.976,0.000,0.024
+31.8,0.002,0.000,0.998,12.795,29.977,0.000,0.024
+31.9,0.002,0.000,0.998,12.795,29.978,0.000,0.023
+32,0.002,0.000,0.998,12.795,29.978,0.000,0.023
+32.1,0.002,0.000,0.998,12.795,29.979,0.000,0.022
+32.2,0.002,0.000,0.998,12.795,29.979,0.000,0.021
+32.3,0.002,0.000,0.998,12.795,29.980,0.000,0.021
+32.4,0.002,0.000,0.998,12.795,29.981,0.000,0.020
+32.5,0.002,0.000,0.998,12.795,29.981,0.000,0.020
+32.6,0.002,0.000,0.998,12.795,29.982,0.000,0.019
+32.7,0.002,0.000,0.998,12.795,29.982,0.000,0.019
+32.8,0.002,0.000,0.998,12.795,29.983,0.000,0.018
+32.9,0.002,0.000,0.998,12.795,29.983,0.000,0.018
+33,0.002,0.000,0.998,12.795,29.984,0.000,0.017
+33.1,0.002,0.000,0.998,12.795,29.984,0.000,0.017
+33.2,0.002,0.000,0.998,12.795,29.985,0.000,0.016
+33.3,0.002,0.000,0.998,12.795,29.985,0.000,0.016
+33.4,0.002,0.000,0.998,12.795,29.985,0.000,0.015
+33.5,0.002,0.000,0.998,12.795,29.986,0.000,0.015
+33.6,0.002,0.000,0.998,12.795,29.986,0.000,0.015
+33.7,0.002,0.000,0.998,12.795,29.987,0.000,0.014
+33.8,0.002,0.000,0.998,12.795,29.987,0.000,0.014
+33.9,0.002,0.000,0.998,12.795,29.987,0.000,0.014
+34,0.002,0.000,0.998,12.795,29.988,0.000,0.013
+34.1,0.002,0.000,0.998,12.795,29.988,0.000,0.013
+34.2,0.002,0.000,0.998,12.795,29.988,0.000,0.012
+34.3,0.002,0.000,0.998,12.795,29.989,0.000,0.012
+34.4,0.002,0.000,0.998,12.795,29.989,0.000,0.012
+34.5,0.002,0.000,0.998,12.795,29.989,0.000,0.012
+34.6,0.002,0.000,0.998,12.795,29.990,0.000,0.011
+34.7,0.002,0.000,0.998,12.795,29.990,0.000,0.011
+34.8,0.002,0.000,0.998,12.795,29.990,0.000,0.011
+34.9,0.002,0.000,0.998,12.795,29.991,0.000,0.010
+35,0.002,0.000,0.998,12.795,29.991,0.000,0.010
+35.1,0.002,0.000,0.998,12.795,29.991,0.000,0.010
+35.2,0.002,0.000,0.998,12.795,29.991,0.000,0.010
+35.3,0.002,0.000,0.998,12.795,29.992,0.000,0.009
+35.4,0.002,0.000,0.998,12.795,29.992,0.000,0.009
+35.5,0.002,0.000,0.998,12.795,29.992,0.000,0.009
+35.6,0.002,0.000,0.998,12.795,29.992,0.000,0.009
+35.7,0.002,0.000,0.998,12.795,29.993,0.000,0.008
+35.8,0.002,0.000,0.998,12.795,29.993,0.000,0.008
+35.9,0.002,0.000,0.998,12.795,29.993,0.000,0.008
+36,0.002,0.000,0.998,12.795,29.993,0.000,0.008
+36.1,0.002,0.000,0.998,12.795,29.993,0.000,0.008
+36.2,0.002,0.000,0.998,12.795,29.994,0.000,0.007
+36.3,0.002,0.000,0.998,12.795,29.994,0.000,0.007
+36.4,0.002,0.000,0.998,12.795,29.994,0.000,0.007
+36.5,0.002,0.000,0.998,12.795,29.994,0.000,0.007
+36.6,0.002,0.000,0.998,12.795,29.994,0.000,0.007
+36.7,0.002,0.000,0.998,12.795,29.995,0.000,0.006
+36.8,0.002,0.000,0.998,12.795,29.995,0.000,0.006
+36.9,0.002,0.000,0.998,12.795,29.995,0.000,0.006
+37,0.002,0.000,0.998,12.795,29.995,0.000,0.006
+37.1,0.002,0.000,0.998,12.795,29.995,0.000,0.006
+37.2,0.002,0.000,0.998,12.795,29.995,0.000,0.006
+37.3,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+37.4,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+37.5,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+37.6,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+37.7,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+37.8,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+37.9,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+38,0.002,0.000,0.998,12.795,29.996,0.000,0.005
+38.1,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.2,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.3,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.4,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.5,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.6,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.7,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.8,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+38.9,0.002,0.000,0.998,12.795,29.997,0.000,0.004
+39,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.1,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.2,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.3,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.4,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.5,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.6,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.7,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.8,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+39.9,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+40,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+40.1,0.002,0.000,0.998,12.795,29.998,0.000,0.003
+40.2,0.002,0.000,0.998,12.795,29.998,0.000,0.002
+40.3,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+40.4,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+40.5,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+40.6,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+40.7,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+40.8,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+40.9,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.1,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.2,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.3,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.4,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.5,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.6,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.7,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.8,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+41.9,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+42,0.002,0.000,0.998,12.795,29.999,0.000,0.002
+42.1,0.002,0.000,0.998,12.795,29.999,0.000,0.001
+42.2,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+42.3,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+42.4,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+42.5,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+42.6,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+42.7,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+42.8,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+42.9,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.1,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.2,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.3,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.4,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.5,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.6,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.7,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.8,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+43.9,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.1,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.2,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.3,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.4,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.5,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.6,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.7,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.8,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+44.9,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.1,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.2,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.3,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.4,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.5,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.6,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.7,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.8,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+45.9,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+46,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+46.1,0.002,0.000,0.998,12.795,30.000,0.000,0.001
+46.2,0.002,0.000,0.998,12.795,30.000,0.000,0.000
+46.3,0.002,0.000,0.998,12.795,30.000,0.000,0.000
+46.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+46.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+46.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+46.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+46.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+46.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+47.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+48.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+49.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+50.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+51.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+52.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+53.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+54.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+55.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+56.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+57.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+58.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+59.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+60.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+61.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+62.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+63.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+64.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+65.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+66.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+67.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+68.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+69.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+70.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+71.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+72.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+73.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+74.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+75.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+76.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+77.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+78.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+79.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+80.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+81.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+82.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+83.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+84.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+85.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+86.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+87.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+88.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+89.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+90.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+91.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+92.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+93.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+94.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+95.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+96.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+97.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+98.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.1,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.2,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.3,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.4,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.5,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.6,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.7,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.8,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+99.9,0.002,0.000,0.998,12.795,30.001,0.000,0.000
+100,0.002,0.000,0.998,12.795,30.001,0.000,0.000
diff --git a/Master/texmf-dist/doc/asymptote/examples/shade.asy b/Master/texmf-dist/doc/asymptote/examples/shade.asy
new file mode 100644
index 00000000000..66b8880fd4b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/shade.asy
@@ -0,0 +1,4 @@
+
+size(100,0);
+radialshade(unitsquare,yellow,(0,0),0,red,(0,0),1);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/shadedtiling.asy b/Master/texmf-dist/doc/asymptote/examples/shadedtiling.asy
new file mode 100644
index 00000000000..4d3b8ae894b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/shadedtiling.asy
@@ -0,0 +1,12 @@
+size(0,100);
+import patterns;
+
+real d=4mm;
+picture tiling;
+path square=scale(d)*unitsquare;
+axialshade(tiling,square,white,(0,0),black,(d,d));
+fill(tiling,shift(d,d)*square,blue);
+add("shadedtiling",tiling);
+
+filldraw(unitcircle,pattern("shadedtiling"));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy b/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy
new file mode 100644
index 00000000000..44f0b6e8a3f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy
@@ -0,0 +1,5 @@
+size(100);
+
+radialshade(W..N..E--(0,0),stroke=true,
+ red+linewidth(30),(0,0),0.25,yellow,(0,0),1);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/shellmethod.asy b/Master/texmf-dist/doc/asymptote/examples/shellmethod.asy
new file mode 100644
index 00000000000..c8e541f2a62
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/shellmethod.asy
@@ -0,0 +1,41 @@
+import graph3;
+import solids;
+
+size(400);
+currentprojection=perspective(0,-1,30,up=Y);
+currentlight=light(gray(0.75),(0.25,-0.25,1),(0,1,0));
+
+pen color=green;
+real alpha=240;
+
+real f(real x) {return 2x^2-x^3;}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+
+int n=10;
+path3[] blocks=new path3[n];
+for(int i=1; i <= n; ++i) {
+ real height=f((i-0.5)*2/n);
+ real left=(i-1)*2/n;
+ real right=i*2/n;
+ blocks[i-1]=
+ (left,0,0)--(left,height,0)--(right,height,0)--(right,0,0)--cycle;
+}
+
+path p=graph(F,0,2,n,operator ..)--cycle;
+surface s=surface(p);
+path3 p3=path3(p);
+
+render render=render(compression=0,merge=true);
+
+revolution a=revolution(p3,Y,0,alpha);
+draw(surface(a),color,render);
+draw(rotate(alpha,Y)*s,color,render);
+for(int i=0; i < n; ++i)
+ draw(surface(blocks[i]),color+opacity(0.5),black,render);
+draw(p3);
+
+xaxis3(Label("$x$",1,align=2X),Arrow3);
+yaxis3(Label("$y$",1,align=2Y),ymax=1.4,dashed,Arrow3);
+arrow("$y=2x^2-x^3$",XYplane(F(1.8)),X+Z,1.5cm,red,Arrow3(DefaultHead2));
+draw(arc(1.17Y,0.3,90,0,7.5,180),ArcArrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/shellsqrtx01.asy b/Master/texmf-dist/doc/asymptote/examples/shellsqrtx01.asy
new file mode 100644
index 00000000000..553200df14c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/shellsqrtx01.asy
@@ -0,0 +1,36 @@
+import graph3;
+import solids;
+size(0,150);
+currentprojection=orthographic(1,0,10,up=Y);
+pen color=green;
+real alpha=-240;
+
+real f(real x) {return sqrt(x);}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+
+path p=graph(F,0,1,n=30,operator ..)--(1,0)--cycle;
+path3 p3=path3(p);
+
+revolution a=revolution(p3,X,alpha,0);
+
+render render=render(compression=0,merge=true);
+draw(surface(a),color,render);
+draw(p3,blue);
+
+surface s=surface(p);
+draw(s,color,render);
+draw(rotate(alpha,X)*s,color,render);
+
+xaxis3(Label("$x$",1),xmax=1.25,dashed,Arrow3);
+yaxis3(Label("$y$",1),Arrow3);
+
+dot("$(1,1)$",(1,1,0));
+arrow("$y=\sqrt{x}$",F3(0.8),Y,0.75cm,red);
+
+real r=0.4;
+draw(F3(r)--(1,f(r),0),red);
+real x=(1+r)/2;
+
+draw("$r$",(x,0,0)--(x,f(r),0),X+0.2Z,red,Arrow3,PenMargin3);
+draw(arc(1.1X,0.4,90,90,3,-90),Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/sin1x.asy b/Master/texmf-dist/doc/asymptote/examples/sin1x.asy
new file mode 100644
index 00000000000..637943691f1
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sin1x.asy
@@ -0,0 +1,16 @@
+import graph;
+size(200,0);
+
+real f(real x) {return (x != 0) ? sin(1/x) : 0;}
+real T(real x) {return 2/(x*pi);}
+
+real a=-4/pi, b=4/pi;
+int n=150,m=5;
+
+xaxis("$x$",red);
+yaxis(red);
+
+draw(graph(f,a,-T(m),n)--graph(f,-m,-(m+n),n,T)--(0,f(0))--graph(f,m+n,m,n,T)--
+ graph(f,T(m),b,n));
+
+label("$\sin\frac{1}{x}$",(b,f(b)),SW);
diff --git a/Master/texmf-dist/doc/asymptote/examples/sin3.asy b/Master/texmf-dist/doc/asymptote/examples/sin3.asy
new file mode 100644
index 00000000000..76551dacb95
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sin3.asy
@@ -0,0 +1,22 @@
+import graph3;
+import palette;
+
+size(12cm,IgnoreAspect);
+currentprojection=orthographic(1,-2,1);
+
+real f(pair z) {return abs(sin(z));}
+
+real Arg(triple v) {return degrees(cos((v.x,v.y)),warn=false);}
+
+surface s=surface(f,(-pi,-2),(pi,2),20,Spline);
+
+s.colors(palette(s.map(Arg),Wheel()));
+draw(s,render(compression=Low,merge=true));
+
+real xmin=point((-1,-1,-1)).x;
+real xmax=point((1,1,1)).x;
+draw((xmin,0,0)--(xmax,0,0),dashed);
+
+xaxis3("$\mathop{\rm Re} z$",Bounds,InTicks);
+yaxis3("$\mathop{\rm Im} z$",Bounds,InTicks(beginlabel=false));
+zaxis3("$|\sin(z)|$",Bounds,InTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/sinc.asy b/Master/texmf-dist/doc/asymptote/examples/sinc.asy
new file mode 100644
index 00000000000..352585bdbe4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sinc.asy
@@ -0,0 +1,24 @@
+import graph3;
+import contour;
+
+currentprojection=orthographic(1,-2,1);
+currentlight=White;
+
+size(12cm,0);
+
+real sinc(pair z) {
+ real r=2pi*abs(z);
+ return r != 0 ? sin(r)/r : 1;
+}
+
+render render=render(compression=Low,merge=true);
+
+draw(lift(sinc,contour(sinc,(-2,-2),(2,2),new real[] {0})),red);
+draw(surface(sinc,(-2,-2),(2,2),Spline),lightgray,render);
+
+draw(scale3(2*sqrt(2))*unitdisk,paleyellow+opacity(0.25),nolight,render);
+draw(scale3(2*sqrt(2))*unitcircle3,red,render);
+
+xaxis3("$x$",Bounds,InTicks);
+yaxis3("$y$",Bounds,InTicks(beginlabel=false));
+zaxis3("$z$",Bounds,InTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy b/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy
new file mode 100644
index 00000000000..912fa3c889b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy
@@ -0,0 +1,24 @@
+import geometry;
+
+size(0,100);
+real theta=30;
+
+pair A=(0,0);
+pair B=dir(theta);
+pair C=(1,0);
+pair D=(1,Tan(theta));
+pair E=(Cos(theta),0);
+
+filldraw(A--C{N}..B--cycle,lightgrey);
+draw(B--C--D--cycle);
+draw(B--E);
+
+draw("$x$",arc(C,A,B,0.7),RightSide,Arrow,PenMargin);
+
+dot("$A$",A,W);
+dot("$B$",B,NW);
+dot("$C$",C);
+dot("$D$",D);
+dot(("$E$"),E,S);
+label("$1$",A--B,LeftSide);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy b/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy
new file mode 100644
index 00000000000..0cbd15af741
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy
@@ -0,0 +1,118 @@
+// Slide demo.
+// Command-line options to enable stepping and/or reverse video:
+// asy [-u stepping=true] [-u reverse=true] [-u itemstep=true] slidedemo
+
+orientation=Landscape;
+
+import slide;
+import three;
+
+viewportsize=pagewidth-2pagemargin;
+
+usersetting();
+
+// Commands to generate optional bibtex citations:
+// asy slidedemo
+// bibtex slidedemo_
+// asy slidedemo
+//
+bibliographystyle("alpha");
+
+// Generated needed files if they don't already exist.
+asy(nativeformat(),"Pythagoras","log","PythagoreanTree");
+usepackage("mflogo");
+
+// Optional background color or header:
+// import x11colors;
+// fill(background,box((-1,-1),(1,1)),Azure);
+// label(background,"Header",(0,startposition.y));
+
+titlepage(title="Slides with {\tt Asymptote}: A Demo",
+ author="John C. Bowman",
+ institution="University of Alberta",
+ date="\today",
+ url="http://asymptote.sf.net");
+
+outline("Basic Commands");
+item("item");
+subitem("subitem");
+remark("remark");
+item("draw \cite{Hobby86,Knuth86b}");
+item("figure");
+item("embedded and external animations: see {\tt slidemovie.asy}");
+
+title("Items");
+item("First item.");
+subitem("First subitem.");
+subitem("Second subitem.");
+item("Second item.");
+equation("a^2+b^2=c^2.");
+equations("\frac{\sin^2\theta+\cos^2\theta}{\cos^2\theta}
+&=&\frac{1}{\cos^2\theta}\nonumber\\
+&=&\sec^2\theta.");
+remark("A remark.");
+item("To enable pausing between bullets:");
+remark("{\tt asy -u stepping=true}");
+item("To enable reverse video:");
+remark("{\tt asy -u reverse=true}");
+
+title("Can draw on a slide, preserving the aspect ratio:");
+picture pic,pic2;
+draw(pic,unitcircle);
+add(pic.fit(15cm));
+step();
+fill(pic2,unitcircle,paleblue);
+label(pic2,"$\pi$",(0,0),fontsize(500pt));
+add(pic2.fit(15cm));
+
+newslide();
+item("The slide \Red{title} \Green{can} \Blue{be} omitted.");
+figure("Pythagoras","height=12cm",
+ "A simple proof of Pythagoras' Theorem.");
+
+newslide();
+item("Single skip:");
+skip();
+item("Double skip:");
+skip(2);
+figure(new string[] {"log."+nativeformat(),"PythagoreanTree."+nativeformat()},
+ "width=10cm",new string[] {"{\tt log.asy}","{\tt PythagoreanTree.asy}"},
+ "Examples of {\tt Asymptote} output.");
+
+title("Embedded Interactive 3D Graphics");
+picture pic;
+import graph3;
+import solids;
+viewportmargin=(0,1cm);
+currentprojection=orthographic(1,0,10,up=Y);
+pen color=green;
+real alpha=-240;
+real f(real x) {return sqrt(x);}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+path p=graph(pic,F,0,1,n=30,operator ..)--(1,0)--cycle;
+path3 p3=path3(p);
+revolution a=revolution(p3,X,alpha,0);
+render render=render(compression=0,merge=true);
+draw(pic,surface(a),color,render);
+draw(pic,p3,blue);
+surface s=surface(p);
+draw(pic,s,color,render);
+draw(pic,rotate(alpha,X)*s,color,render);
+xaxis3(pic,Label("$x$",1),xmax=1.25,dashed,Arrow3);
+yaxis3(pic,Label("$y$",1),Arrow3);
+dot(pic,"$(1,1)$",(1,1,0));
+arrow(pic,"$y=\sqrt{x}$",F3(0.8),Y,0.75cm,red);
+real r=0.4;
+draw(pic,F3(r)--(1,f(r),0),red);
+real x=(1+r)/2;
+draw(pic,"$r$",(x,0,0)--(x,f(r),0),X+0.2Z,red,Arrow3);
+draw(pic,arc(1.1X,0.4,90,90,3,-90),Arrow3);
+add(pic.fit(0,14cm));
+
+title("\mbox{Asymptote: 2D \& 3D Vector Graphics Language}");
+asyinclude("logo3");
+center("\tt http://asymptote.sf.net");
+center("(freely available under the LGPL license)");
+
+bibliography("refs");
diff --git a/Master/texmf-dist/doc/asymptote/examples/slopefield1.asy b/Master/texmf-dist/doc/asymptote/examples/slopefield1.asy
new file mode 100644
index 00000000000..fd60de4f632
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/slopefield1.asy
@@ -0,0 +1,9 @@
+import slopefield;
+
+size(200);
+
+real func(real x) {return 2x;}
+add(slopefield(func,(-3,-3),(3,3),20,Arrow));
+draw(curve((0,0),func,(-3,-3),(3,3)),red);
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/smoothelevation.asy b/Master/texmf-dist/doc/asymptote/examples/smoothelevation.asy
new file mode 100644
index 00000000000..a7995b7079a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/smoothelevation.asy
@@ -0,0 +1,26 @@
+import graph3;
+import grid3;
+import palette;
+
+currentlight=Viewport;
+
+if(settings.render <= 0) settings.prc=false;
+
+currentprojection=orthographic(1,2,13);
+
+size(400,300,IgnoreAspect);
+
+real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);}
+
+surface s=surface(f,(-1/2,-1/2),(1/2,1/2),20,Spline);
+s.colors(palette(s.map(zpart),Rainbow()));
+
+draw(s);
+
+scale(true);
+
+xaxis3(Label("$x$",0.5),Bounds,InTicks);
+yaxis3(Label("$y$",0.5),Bounds,InTicks);
+zaxis3(Label("$z$",0.5),Bounds,InTicks(beginlabel=false));
+
+grid3(XYZgrid);
diff --git a/Master/texmf-dist/doc/asymptote/examples/soccerball.asy b/Master/texmf-dist/doc/asymptote/examples/soccerball.asy
new file mode 100644
index 00000000000..a37063dbb29
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/soccerball.asy
@@ -0,0 +1,87 @@
+import graph3;
+size(400);
+currentlight.background=palegreen;
+
+defaultrender=render(compression=Zero,merge=true);
+
+real c=(1+sqrt(5))/2;
+
+triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)};
+triple[] x={(0,c,1),(0,-c,1),(0,-c,-1),(0,c,-1)};
+triple[] y={(1,0,c),(1,0,-c),(-1,0,-c),(-1,0,c)};
+
+triple[][] Q={
+ {z[0],y[1],x[3],x[0],y[0],z[3]},
+ {z[1],x[0],x[3],y[2],z[2],y[3]},
+ {z[2],z[1],y[2],x[2],x[1],y[3]},
+ {z[3],z[0],y[0],x[1],x[2],y[1]},
+ {x[0],x[3],z[1],y[3],y[0],z[0]},
+ {x[1],x[2],z[2],y[3],y[0],z[3]},
+ {x[2],x[1],z[3],y[1],y[2],z[2]},
+ {x[3],x[0],z[0],y[1],y[2],z[1]},
+ {y[0],y[3],x[1],z[3],z[0],x[0]},
+ {y[1],y[2],x[2],z[3],z[0],x[3]},
+ {y[2],y[1],x[3],z[1],z[2],x[2]},
+ {y[3],y[0],x[0],z[1],z[2],x[1]}
+};
+
+path3 p=arc(O,Q[0][0],Q[0][1]);
+real R=abs(point(p,reltime(p,1/3)));
+
+triple[][] P;
+for(int i=0; i < Q.length; ++i){
+ P[i]=new triple[] ;
+ for(int j=0; j < Q[i].length; ++j){
+ P[i][j]=Q[i][j]/R;
+ }
+}
+
+surface sphericaltriangle(triple center, triple A, triple B, triple C,
+ int nu=3, int nv=nu) {
+ path3 tri1=arc(center,A,B);
+ path3 tri2=arc(center,A,C);
+ path3 tri3=arc(center,B,C);
+ triple tri(pair p) {
+ path3 cr=arc(O,relpoint(tri2,p.x),relpoint(tri3,p.x));
+ return relpoint(cr,p.y);
+ };
+
+ return surface(tri,(0,0),(1-sqrtEpsilon,1),nu,nv,Spline);
+}
+
+for(int i=0; i < P.length; ++i){
+ triple[] pentagon=sequence(new triple(int k) {
+ path3 p=arc(O,P[i][0],P[i][k+1]);
+ return point(p,reltime(p,1/3));
+ },5);
+ pentagon.cyclic=true;
+ draw(sequence(new path3(int k) {
+ return arc(O,pentagon[k],pentagon[k+1]);},5),linewidth(2pt));
+ triple M=unit(sum(pentagon)/5);
+ for(int i=0; i < 5; ++i){
+ surface sf=sphericaltriangle(O,pentagon[i],M,pentagon[i+1]);
+ draw(sf,black);
+ }
+}
+
+for(int i=0; i < P.length; ++i){
+ for(int j=1; j <= 5; ++j){
+ triple K=P[i][0];
+ triple A=P[i][j];
+ triple B=P[i][(j % 5)+1];
+ path3[] p={arc(O,K,A),arc(O,A,B),arc(O,B,K)};
+ draw(subpath(p[0],reltime(p[0],1/3),reltime(p[0],2/3)),linewidth(4pt));
+ triple[] hexagon={point(p[0],reltime(p[0],1/3)),
+ point(p[0],reltime(p[0],2/3)),
+ point(p[1],reltime(p[1],1/3)),
+ point(p[1],reltime(p[1],2/3)),
+ point(p[2],reltime(p[2],1/3)),
+ point(p[2],reltime(p[2],2/3))};
+ hexagon.cyclic=true;
+ triple M=unit(sum(hexagon)/6);
+ for(int i=0; i < 6; ++i){
+ surface sf=sphericaltriangle(O,hexagon[i],M,hexagon[i+1]);
+ draw(sf,white);
+ }
+ }
+}
diff --git a/Master/texmf-dist/doc/asymptote/examples/spectrum.asy b/Master/texmf-dist/doc/asymptote/examples/spectrum.asy
new file mode 100644
index 00000000000..a5d576921cf
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spectrum.asy
@@ -0,0 +1,79 @@
+import graph;
+usepackage("ocg");
+settings.tex="pdflatex";
+
+// Dan Bruton algorithm
+pen nm2rgb(real wl, real gamma=0.8, bool intensity=true) {
+ triple rgb;
+ if(wl >= 380 && wl <= 440) {rgb=((440-wl)/60,0,1);}
+ if(wl > 440 && wl <= 490) {rgb=(0,(wl-440)/50,1);}
+ if(wl > 490 && wl <= 510) {rgb=(0,1,(510-wl)/20);}
+ if(wl > 510 && wl <= 580) {rgb=((wl-510)/70,1,0);}
+ if(wl > 580 && wl <= 645) {rgb=(1,(645-wl)/65,0);}
+ if(wl > 645 && wl <= 780) {rgb=(1,0,0);}
+
+ real Intensity=1;
+ if(intensity) {
+ if(wl >= 700) {Intensity=0.3+0.7*(780-wl)/80;}
+ else if(wl <= 420) {Intensity=0.3+0.7*(wl-380)/40;}
+ }
+
+ return rgb((Intensity*rgb.x)**gamma,(Intensity*rgb.y)**gamma,
+ (Intensity*rgb.z)**gamma);
+}
+
+real width=1;
+real height=50;
+
+begin("spectrum");
+for(real i=380 ; i <= 780 ; i += width) {
+ draw((i,0)--(i,height),width+nm2rgb(wl=i,false)+squarecap);
+}
+begin("Extinction",false); // nested
+for(real i=380 ; i <= 780 ; i += width) {
+ draw((i,0)--(i,height),width+nm2rgb(wl=i,true)+squarecap);
+}
+end();
+end();
+
+begin("Wavelength");
+xaxis(scale(0.5)*"$\lambda$(nm)",BottomTop,380,780,
+ RightTicks(scale(0.5)*rotate(90)*Label(),step=2,Step=10),above=true);
+end();
+
+// From Astronomical Data Center(NASA)
+// Neutral only
+real[] Na={423.899, 424.208, 427.364, 427.679, 428.784, 429.101,
+ 432.14, 432.462, 434.149, 434.474, 439.003, 439.334, 441.989, 442.325,
+ 449.418, 449.766, 454.163, 454.519, 568.2633, 568.8204, 588.995,
+ 589.5924};
+begin("Na absorption");
+for(int i=0; i < Na.length; ++i) {
+ draw((Na[i],0)--(Na[i],height),0.1*width+squarecap);
+}
+end();
+
+begin("Na emission");
+for(int i=0; i < Na.length; ++i) {
+ draw((Na[i],0)--(Na[i],-height),0.1*width+nm2rgb(Na[i],false)+squarecap);
+}
+end();
+
+// Neutral only
+real[] Zn={388.334, 396.543, 411.321, 429.288, 429.833, 462.981,
+ 468.014, 472.215, 481.053 , 506.866, 506.958, 518.198, 530.865,
+ 531.024, 531.102, 577.21, 577.55, 577.711, 623.79, 623.917, 636.234,
+ 647.918, 692.832, 693.847, 694.32, 779.936};
+begin("Zn absorption",false);
+for(int i=0; i < Zn.length; ++i) {
+ draw((Zn[i],0)--(Zn[i],height),width+squarecap);
+}
+end();
+
+begin("Zn emission",false);
+for(int i=0; i < Zn.length; ++i) {
+ draw((Zn[i],0)--(Zn[i],-height),width+nm2rgb(Zn[i],false)+squarecap);
+}
+end();
+
+shipout(bbox(2mm,Fill(white)));
diff --git a/Master/texmf-dist/doc/asymptote/examples/sphere.asy b/Master/texmf-dist/doc/asymptote/examples/sphere.asy
new file mode 100644
index 00000000000..8d1b5fe50cd
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sphere.asy
@@ -0,0 +1,6 @@
+import three;
+
+size(200);
+currentprojection=orthographic(5,4,3);
+
+draw(unitsphere,green,render(compression=Zero,merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/spheresilhouette.asy b/Master/texmf-dist/doc/asymptote/examples/spheresilhouette.asy
new file mode 100644
index 00000000000..795efb00660
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spheresilhouette.asy
@@ -0,0 +1,9 @@
+import solids;
+settings.render=0;
+settings.prc=false;
+
+size(200);
+
+revolution r=sphere(O,1);
+draw(r,1,longitudinalpen=nullpen);
+draw(r.silhouette());
diff --git a/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy b/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy
new file mode 100644
index 00000000000..ca8b8c3d584
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy
@@ -0,0 +1,9 @@
+size(100);
+import solids;
+
+currentprojection=orthographic(5,4,2);
+
+revolution sphere=sphere(1);
+draw(surface(sphere),green+opacity(0.2));
+draw(sphere,m=7,blue);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/sphericalharmonic.asy b/Master/texmf-dist/doc/asymptote/examples/sphericalharmonic.asy
new file mode 100644
index 00000000000..9fbb16f624d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sphericalharmonic.asy
@@ -0,0 +1,14 @@
+import graph3;
+import palette;
+size(200);
+
+currentprojection=orthographic(4,2,4);
+currentlight=Viewport;
+
+real r(real theta, real phi) {return 1+0.5*(sin(2*theta)*sin(2*phi))^2;}
+
+triple f(pair z) {return r(z.x,z.y)*expi(z.x,z.y);}
+
+surface s=surface(f,(0,0),(pi,2pi),50,Spline);
+s.colors(palette(s.map(abs),Gradient(yellow,red)));
+draw(s,render(compression=Low,merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/spiral.asy b/Master/texmf-dist/doc/asymptote/examples/spiral.asy
new file mode 100644
index 00000000000..a417ea06a7f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spiral.asy
@@ -0,0 +1,12 @@
+size(0,150);
+import graph;
+
+real f(real t) {return exp(-t/(2pi));}
+
+draw(polargraph(f,0,20*pi,operator ..));
+
+xaxis("$x$",-infinity,1.3);
+yaxis("$y$",-infinity,1);
+
+labelx(1);
+labelx("$e^{-1}$",1.0/exp(1),SE);
diff --git a/Master/texmf-dist/doc/asymptote/examples/spiral3.asy b/Master/texmf-dist/doc/asymptote/examples/spiral3.asy
new file mode 100644
index 00000000000..727ca3f6d3a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spiral3.asy
@@ -0,0 +1,20 @@
+import graph3;
+import palette;
+
+size3(10cm);
+
+currentprojection=orthographic(5,4,2);
+viewportmargin=(2cm,0);
+
+real r(real t) {return 3exp(-0.1*t);}
+real x(real t) {return r(t)*cos(t);}
+real y(real t) {return r(t)*sin(t);}
+real z(real t) {return t;}
+
+path3 p=graph(x,y,z,0,6*pi,50,operator ..);
+
+tube T=tube(p,2);
+surface s=T.s;
+s.colors(palette(s.map(zpart),BWRainbow()));
+draw(s,render(merge=true));
+draw(T.center,thin());
diff --git a/Master/texmf-dist/doc/asymptote/examples/spline.asy b/Master/texmf-dist/doc/asymptote/examples/spline.asy
new file mode 100644
index 00000000000..9d79ef3a962
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spline.asy
@@ -0,0 +1,25 @@
+import graph;
+import interpolate;
+
+size(15cm,15cm,IgnoreAspect);
+
+real a=1997, b=2002;
+int n=5;
+real[] xpt=a+sequence(n+1)*(b-a)/n;
+real[] ypt={31,36,26,22,21,24};
+horner h=diffdiv(xpt,ypt);
+fhorner L=fhorner(h);
+
+scale(false,true);
+
+pen p=linewidth(1);
+
+draw(graph(L,a,b),dashed+black+p,"Lagrange interpolation");
+draw(graph(xpt,ypt,Hermite(natural)),red+p,"natural spline");
+draw(graph(xpt,ypt,Hermite(monotonic)),blue+p,"monotone spline");
+xaxis("$x$",BottomTop,LeftTicks(Step=1,step=0.25));
+yaxis("$y$",LeftRight,RightTicks(Step=5));
+
+dot(pairs(xpt,ypt),4bp+gray(0.3));
+
+attach(legend(),point(10S),30S);
diff --git a/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy b/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy
new file mode 100644
index 00000000000..2e9fae66431
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy
@@ -0,0 +1,87 @@
+import three;
+
+size(300);
+
+// A structure to subdivide two intersecting patches about their intersection.
+struct split
+{
+ surface[] S=sequence(new surface(int i) {return new surface;},1);
+ surface[] T=sequence(new surface(int i) {return new surface;},1);
+
+ struct tree {
+ tree[] tree=new tree[2];
+ }
+ // Default subdivision depth.
+ int n=20;
+
+ // Subdivide p and q to depth n if they overlap.
+ void write(tree pt, tree qt, triple[][] p, triple[][] q, int depth=n) {
+ --depth;
+ triple[][][] Split(triple[][] P)=depth % 2 == 0 ? hsplit : vsplit;
+ triple[][][] P=Split(p);
+ triple[][][] Q=Split(q);
+
+ for(int i=0; i < 2; ++i) {
+ triple[][] Pi=P[i];
+ for(int j=0; j < 2; ++j) {
+ triple[][] Qj=Q[j];
+ if(overlap(Pi,Qj)) {
+ if(!pt.tree.initialized(i))
+ pt.tree[i]=new tree;
+ if(!qt.tree.initialized(j))
+ qt.tree[j]=new tree;
+ if(depth > 0)
+ write(pt.tree[i],qt.tree[j],Pi,Qj,depth);
+ }
+ }
+ }
+ }
+
+ // Output the subpatches of p from subdivision.
+ void read(surface[] S, tree t, triple[][] p, int depth=n) {
+ --depth;
+ triple[][][] Split(triple[][] P)=depth % 2 == 0 ? hsplit : vsplit;
+ triple[][][] P=Split(p);
+
+ for(int i=0; i < 2; ++i) {
+ if(t.tree.initialized(i))
+ read(S,t.tree[i],P[i],depth);
+ else {
+ S[0].push(patch(P[i]));
+ }
+ }
+ }
+
+ void operator init(triple[][] p, triple[][] q, int depth=n) {
+ tree ptrunk,qtrunk;
+ write(ptrunk,qtrunk,p,q,depth);
+ read(T,ptrunk,p,depth);
+ read(S,qtrunk,q,depth);
+ }
+}
+
+currentprojection=orthographic(0,0,1);
+
+triple[][] A={
+ {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
+ {(0,4/3,0),(2/3,4/3,2),(4/3,4/3,2),(2,4/3,0)},
+ {(0,2/3,0),(2/3,2/3,0),(4/3,2/3,0),(2,2/3,0)},
+ {(0,2,0),(2/3,2,0),(4/3,2,0),(2,2,0)}
+};
+
+triple[][] B={
+ {(0.5,0,-1),(0.5,1,-1),(0.5,2,-1),(0.5,3,-1)},
+ {(0.5,0,0),(0.5,1,0),(0.5,2,0),(0.5,3,0)},
+ {(0.5,0,1),(0.5,1,1),(0.5,2,1),(0.5,3,1)},
+ {(0.5,0,2),(0.5,1,2),(0.5,2,2),(0.5,3,2)}
+};
+
+split S=split(B,A);
+
+defaultrender.merge=true;
+
+for(int i=0; i < S.S[0].s.length; ++i)
+ draw(surface(S.S[0].s[i]),Pen(i));
+
+for(int i=0; i < S.T[0].s.length; ++i)
+ draw(surface(S.T[0].s[i]),Pen(i));
diff --git a/Master/texmf-dist/doc/asymptote/examples/spring.asy b/Master/texmf-dist/doc/asymptote/examples/spring.asy
new file mode 100644
index 00000000000..cbfb256eee4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spring.asy
@@ -0,0 +1,33 @@
+pair coilpoint(real lambda, real r, real t)
+{
+ return (2.0*lambda*t+r*cos(t),r*sin(t));
+}
+
+guide coil(guide g=nullpath, real lambda, real r, real a, real b, int n)
+{
+ real width=(b-a)/n;
+ for(int i=0; i <= n; ++i) {
+ real t=a+width*i;
+ g=g..coilpoint(lambda,r,t);
+ }
+ return g;
+}
+
+void drawspring(real x, string label) {
+ real r=8;
+ real t1=-pi;
+ real t2=10*pi;
+ real lambda=(t2-t1+x)/(t2-t1);
+ pair b=coilpoint(lambda,r,t1);
+ pair c=coilpoint(lambda,r,t2);
+ pair a=b-20;
+ pair d=c+20;
+
+ draw(a--b,BeginBar(2*barsize()));
+ draw(c--d);
+ draw(coil(lambda,r,t1,t2,100));
+ dot(d);
+
+ pair h=20*I;
+ draw(label,a-h--d-h,red,Arrow,Bars,PenMargin);
+}
diff --git a/Master/texmf-dist/doc/asymptote/examples/spring0.asy b/Master/texmf-dist/doc/asymptote/examples/spring0.asy
new file mode 100644
index 00000000000..fd6cdf82938
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spring0.asy
@@ -0,0 +1,4 @@
+import spring;
+
+drawspring(0,"$L$");
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/spring2.asy b/Master/texmf-dist/doc/asymptote/examples/spring2.asy
new file mode 100644
index 00000000000..e3eec5f39f5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/spring2.asy
@@ -0,0 +1,4 @@
+import spring;
+
+drawspring(40.0,"$L+x$");
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/sqrtx01.asy b/Master/texmf-dist/doc/asymptote/examples/sqrtx01.asy
new file mode 100644
index 00000000000..4d2b0a45dce
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sqrtx01.asy
@@ -0,0 +1,25 @@
+import graph3;
+import solids;
+size(0,150);
+currentprojection=perspective(1.5,0,10,Y);
+pen color=green+opacity(0.75);
+
+real f(real x){return sqrt(x);}
+pair F(real x){return (x,f(x));}
+triple F3(real x){return (x,f(x),0);}
+
+path p=graph(F,0,1,n=20,operator ..);
+path3 p3=path3(p);
+
+revolution a=revolution(p3,X,0,360);
+draw(surface(a),color,render(compression=Low,merge=true));
+draw(p3,blue);
+
+real x=relpoint(p,0.5).x;
+
+xaxis3(Label("$x$",1),xmax=1.5,dashed,Arrow3);
+yaxis3(Label("$y$",1),Arrow3);
+dot(Label("$(1,1)$"),(1,1,0));
+arrow(Label("$y=\sqrt{x}$"),F3(0.7),Y,0.75cm,red);
+draw(arc(1.2X,0.4,90,90,175,-40,CW),Arrow3);
+draw("$r$",(x,0,0)--F3(x),red,Arrow3,PenMargin3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/sqrtx01y1.asy b/Master/texmf-dist/doc/asymptote/examples/sqrtx01y1.asy
new file mode 100644
index 00000000000..dcb247f572e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/sqrtx01y1.asy
@@ -0,0 +1,25 @@
+import graph3;
+import solids;
+size(0,150);
+currentprojection=perspective(0,1,10,up=Y);
+currentlight=White;
+
+real f(real x) {return sqrt(x);}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+
+path p=graph(F,0,1,n=25,operator ..);
+path3 p3=path3(p);
+
+revolution a=revolution(p3,Y,0,360);
+draw(surface(a),green,render(compression=Low,merge=true));
+draw(p3,blue);
+
+xtick((0,0,0));
+xtick((1,0,0));
+
+xaxis3(Label("$x$",1),Arrow3);
+yaxis3(Label("$y$",1),ymax=1.5,dashed,Arrow3);
+dot(Label("$(1,1)$"),(1,1,0));
+arrow("$y=\sqrt{x}$",F3(0.5),X,0.75cm,red);
+draw(arc(1.2Y,0.3,90,0,7.5,140),Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/square.asy b/Master/texmf-dist/doc/asymptote/examples/square.asy
new file mode 100644
index 00000000000..6fd9d2314d7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/square.asy
@@ -0,0 +1,2 @@
+size(3cm);
+draw((0,0)--(1,0)--(1,1)--(0,1)--cycle);
diff --git a/Master/texmf-dist/doc/asymptote/examples/star.asy b/Master/texmf-dist/doc/asymptote/examples/star.asy
new file mode 100644
index 00000000000..3a7afb2529b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/star.asy
@@ -0,0 +1,13 @@
+size(100);
+import math;
+
+int n=5;
+path p;
+
+int i=0;
+do {
+ p=p--unityroot(n,i);
+ i=(i+2) % n;
+} while(i != 0);
+
+filldraw(p--cycle,red+evenodd);
diff --git a/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy b/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy
new file mode 100644
index 00000000000..639333ec476
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy
@@ -0,0 +1,11 @@
+import three;
+
+currentprojection=perspective(50*dir(70,15));
+
+picture pic;
+unitsize(pic,1cm);
+
+draw(pic,xscale3(10)*unitcube,yellow,blue);
+
+addStereoViews(pic);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/stroke3.asy b/Master/texmf-dist/doc/asymptote/examples/stroke3.asy
new file mode 100644
index 00000000000..75824d41dd3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/stroke3.asy
@@ -0,0 +1,4 @@
+import three;
+size(5cm);
+
+draw(O--X,red+1cm,currentlight);
diff --git a/Master/texmf-dist/doc/asymptote/examples/strokepath.asy b/Master/texmf-dist/doc/asymptote/examples/strokepath.asy
new file mode 100644
index 00000000000..c857150ec58
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/strokepath.asy
@@ -0,0 +1,17 @@
+path g=scale(100)*unitcircle;
+pen p=linewidth(1cm);
+
+frame f;
+// Equivalent to draw(f,g,p):
+fill(f,strokepath(g,p),red);
+shipout("strokepathframe",f);
+shipped=false;
+
+size(400);
+
+// Equivalent to draw(g,p):
+add(new void(frame f, transform t) {
+ fill(f,strokepath(t*g,p),red);
+ });
+currentpicture.addPath(g,p);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy b/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy
new file mode 100644
index 00000000000..f9413091d1c
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy
@@ -0,0 +1,4 @@
+size(100);
+guide g=(0,0)..controls(70,30) and (-40,30)..(30,0);
+latticeshade(g,stroke=true,linewidth(10),
+ new pen[][] {{red,orange,yellow},{green,blue,purple}});
diff --git a/Master/texmf-dist/doc/asymptote/examples/subpictures.asy b/Master/texmf-dist/doc/asymptote/examples/subpictures.asy
new file mode 100644
index 00000000000..1ace23f5678
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/subpictures.asy
@@ -0,0 +1,20 @@
+picture pic1;
+real size=50;
+size(pic1,size);
+fill(pic1,(0,0)--(50,100)--(100,0)--cycle,red);
+
+picture pic2;
+size(pic2,size);
+fill(pic2,unitcircle,green);
+
+picture pic3;
+size(pic3,size);
+fill(pic3,unitsquare,blue);
+
+picture pic;
+add(pic,pic1.fit(),(0,0),N);
+add(pic,pic2.fit(),(0,0),10S);
+
+add(pic.fit(),(0,0),N);
+add(pic3.fit(),(0,0),10S);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/superpath.asy b/Master/texmf-dist/doc/asymptote/examples/superpath.asy
new file mode 100644
index 00000000000..ec2787a9ce0
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/superpath.asy
@@ -0,0 +1,5 @@
+size(0,100);
+path unitcircle=E..N..W..S..cycle;
+path g=scale(2)*unitcircle;
+filldraw(unitcircle^^g,evenodd+yellow,black);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/tanh.asy b/Master/texmf-dist/doc/asymptote/examples/tanh.asy
new file mode 100644
index 00000000000..21d4decb1a6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/tanh.asy
@@ -0,0 +1,13 @@
+import graph;
+size(100,0);
+
+real f(real x) {return tanh(x);}
+pair F(real x) {return (x,f(x));}
+
+xaxis("$x$");
+yaxis("$y$");
+
+draw(graph(f,-2.5,2.5,operator ..));
+
+label("$\tanh x$",F(1.5),1.25*N);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/teapot.asy b/Master/texmf-dist/doc/asymptote/examples/teapot.asy
new file mode 100644
index 00000000000..401ecec5ab9
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/teapot.asy
@@ -0,0 +1,172 @@
+import three;
+
+size(20cm);
+
+currentprojection=perspective(250,-250,250);
+currentlight=Viewport;
+
+triple[][][] Q={
+ {
+ {(39.68504,0,68.0315),(37.91339,0,71.75197),(40.74803,0,71.75197),(42.51969,0,68.0315)},
+ {(39.68504,-22.22362,68.0315),(37.91339,-21.2315,71.75197),(40.74803,-22.8189,71.75197),(42.51969,-23.81102,68.0315)},
+ {(22.22362,-39.68504,68.0315),(21.2315,-37.91339,71.75197),(22.8189,-40.74803,71.75197),(23.81102,-42.51969,68.0315)},
+ {(0,-39.68504,68.0315),(0,-37.91339,71.75197),(0,-40.74803,71.75197),(0,-42.51969,68.0315)}
+ },{
+ {(0,-39.68504,68.0315),(0,-37.91339,71.75197),(0,-40.74803,71.75197),(0,-42.51969,68.0315)},
+ {(-22.22362,-39.68504,68.0315),(-21.2315,-37.91339,71.75197),(-22.8189,-40.74803,71.75197),(-23.81102,-42.51969,68.0315)},
+ {(-39.68504,-22.22362,68.0315),(-37.91339,-21.2315,71.75197),(-40.74803,-22.8189,71.75197),(-42.51969,-23.81102,68.0315)},
+ {(-39.68504,0,68.0315),(-37.91339,0,71.75197),(-40.74803,0,71.75197),(-42.51969,0,68.0315)}
+ },{
+ {(-39.68504,0,68.0315),(-37.91339,0,71.75197),(-40.74803,0,71.75197),(-42.51969,0,68.0315)},
+ {(-39.68504,22.22362,68.0315),(-37.91339,21.2315,71.75197),(-40.74803,22.8189,71.75197),(-42.51969,23.81102,68.0315)},
+ {(-22.22362,39.68504,68.0315),(-21.2315,37.91339,71.75197),(-22.8189,40.74803,71.75197),(-23.81102,42.51969,68.0315)},
+ {(0,39.68504,68.0315),(0,37.91339,71.75197),(0,40.74803,71.75197),(0,42.51969,68.0315)}
+ },{
+ {(0,39.68504,68.0315),(0,37.91339,71.75197),(0,40.74803,71.75197),(0,42.51969,68.0315)},
+ {(22.22362,39.68504,68.0315),(21.2315,37.91339,71.75197),(22.8189,40.74803,71.75197),(23.81102,42.51969,68.0315)},
+ {(39.68504,22.22362,68.0315),(37.91339,21.2315,71.75197),(40.74803,22.8189,71.75197),(42.51969,23.81102,68.0315)},
+ {(39.68504,0,68.0315),(37.91339,0,71.75197),(40.74803,0,71.75197),(42.51969,0,68.0315)}
+ },{
+ {(42.51969,0,68.0315),(49.60629,0,53.1496),(56.69291,0,38.26771),(56.69291,0,25.51181)},
+ {(42.51969,-23.81102,68.0315),(49.60629,-27.77952,53.1496),(56.69291,-31.74803,38.26771),(56.69291,-31.74803,25.51181)},
+ {(23.81102,-42.51969,68.0315),(27.77952,-49.60629,53.1496),(31.74803,-56.69291,38.26771),(31.74803,-56.69291,25.51181)},
+ {(0,-42.51969,68.0315),(0,-49.60629,53.1496),(0,-56.69291,38.26771),(0,-56.69291,25.51181)}
+ },{
+ {(0,-42.51969,68.0315),(0,-49.60629,53.1496),(0,-56.69291,38.26771),(0,-56.69291,25.51181)},
+ {(-23.81102,-42.51969,68.0315),(-27.77952,-49.60629,53.1496),(-31.74803,-56.69291,38.26771),(-31.74803,-56.69291,25.51181)},
+ {(-42.51969,-23.81102,68.0315),(-49.60629,-27.77952,53.1496),(-56.69291,-31.74803,38.26771),(-56.69291,-31.74803,25.51181)},
+ {(-42.51969,0,68.0315),(-49.60629,0,53.1496),(-56.69291,0,38.26771),(-56.69291,0,25.51181)}
+ },{
+ {(-42.51969,0,68.0315),(-49.60629,0,53.1496),(-56.69291,0,38.26771),(-56.69291,0,25.51181)},
+ {(-42.51969,23.81102,68.0315),(-49.60629,27.77952,53.1496),(-56.69291,31.74803,38.26771),(-56.69291,31.74803,25.51181)},
+ {(-23.81102,42.51969,68.0315),(-27.77952,49.60629,53.1496),(-31.74803,56.69291,38.26771),(-31.74803,56.69291,25.51181)},
+ {(0,42.51969,68.0315),(0,49.60629,53.1496),(0,56.69291,38.26771),(0,56.69291,25.51181)}
+ },{
+ {(0,42.51969,68.0315),(0,49.60629,53.1496),(0,56.69291,38.26771),(0,56.69291,25.51181)},
+ {(23.81102,42.51969,68.0315),(27.77952,49.60629,53.1496),(31.74803,56.69291,38.26771),(31.74803,56.69291,25.51181)},
+ {(42.51969,23.81102,68.0315),(49.60629,27.77952,53.1496),(56.69291,31.74803,38.26771),(56.69291,31.74803,25.51181)},
+ {(42.51969,0,68.0315),(49.60629,0,53.1496),(56.69291,0,38.26771),(56.69291,0,25.51181)}
+ },{
+ {(56.69291,0,25.51181),(56.69291,0,12.7559),(42.51969,0,6.377957),(42.51969,0,4.251961)},
+ {(56.69291,-31.74803,25.51181),(56.69291,-31.74803,12.7559),(42.51969,-23.81102,6.377957),(42.51969,-23.81102,4.251961)},
+ {(31.74803,-56.69291,25.51181),(31.74803,-56.69291,12.7559),(23.81102,-42.51969,6.377957),(23.81102,-42.51969,4.251961)},
+ {(0,-56.69291,25.51181),(0,-56.69291,12.7559),(0,-42.51969,6.377957),(0,-42.51969,4.251961)}
+ },{
+ {(0,-56.69291,25.51181),(0,-56.69291,12.7559),(0,-42.51969,6.377957),(0,-42.51969,4.251961)},
+ {(-31.74803,-56.69291,25.51181),(-31.74803,-56.69291,12.7559),(-23.81102,-42.51969,6.377957),(-23.81102,-42.51969,4.251961)},
+ {(-56.69291,-31.74803,25.51181),(-56.69291,-31.74803,12.7559),(-42.51969,-23.81102,6.377957),(-42.51969,-23.81102,4.251961)},
+ {(-56.69291,0,25.51181),(-56.69291,0,12.7559),(-42.51969,0,6.377957),(-42.51969,0,4.251961)}
+ },{
+ {(-56.69291,0,25.51181),(-56.69291,0,12.7559),(-42.51969,0,6.377957),(-42.51969,0,4.251961)},
+ {(-56.69291,31.74803,25.51181),(-56.69291,31.74803,12.7559),(-42.51969,23.81102,6.377957),(-42.51969,23.81102,4.251961)},
+ {(-31.74803,56.69291,25.51181),(-31.74803,56.69291,12.7559),(-23.81102,42.51969,6.377957),(-23.81102,42.51969,4.251961)},
+ {(0,56.69291,25.51181),(0,56.69291,12.7559),(0,42.51969,6.377957),(0,42.51969,4.251961)}
+ },{
+ {(0,56.69291,25.51181),(0,56.69291,12.7559),(0,42.51969,6.377957),(0,42.51969,4.251961)},
+ {(31.74803,56.69291,25.51181),(31.74803,56.69291,12.7559),(23.81102,42.51969,6.377957),(23.81102,42.51969,4.251961)},
+ {(56.69291,31.74803,25.51181),(56.69291,31.74803,12.7559),(42.51969,23.81102,6.377957),(42.51969,23.81102,4.251961)},
+ {(56.69291,0,25.51181),(56.69291,0,12.7559),(42.51969,0,6.377957),(42.51969,0,4.251961)}
+ },{
+ {(-45.35433,0,57.40157),(-65.19685,0,57.40157),(-76.53543,0,57.40157),(-76.53543,0,51.02362)},
+ {(-45.35433,-8.503932,57.40157),(-65.19685,-8.503932,57.40157),(-76.53543,-8.503932,57.40157),(-76.53543,-8.503932,51.02362)},
+ {(-42.51969,-8.503932,63.77952),(-70.86614,-8.503932,63.77952),(-85.03937,-8.503932,63.77952),(-85.03937,-8.503932,51.02362)},
+ {(-42.51969,0,63.77952),(-70.86614,0,63.77952),(-85.03937,0,63.77952),(-85.03937,0,51.02362)}
+ },{
+ {(-42.51969,0,63.77952),(-70.86614,0,63.77952),(-85.03937,0,63.77952),(-85.03937,0,51.02362)},
+ {(-42.51969,8.503932,63.77952),(-70.86614,8.503932,63.77952),(-85.03937,8.503932,63.77952),(-85.03937,8.503932,51.02362)},
+ {(-45.35433,8.503932,57.40157),(-65.19685,8.503932,57.40157),(-76.53543,8.503932,57.40157),(-76.53543,8.503932,51.02362)},
+ {(-45.35433,0,57.40157),(-65.19685,0,57.40157),(-76.53543,0,57.40157),(-76.53543,0,51.02362)}
+ },{
+ {(-76.53543,0,51.02362),(-76.53543,0,44.64566),(-70.86614,0,31.88976),(-56.69291,0,25.51181)},
+ {(-76.53543,-8.503932,51.02362),(-76.53543,-8.503932,44.64566),(-70.86614,-8.503932,31.88976),(-56.69291,-8.503932,25.51181)},
+ {(-85.03937,-8.503932,51.02362),(-85.03937,-8.503932,38.26771),(-75.11811,-8.503932,26.5748),(-53.85826,-8.503932,17.00787)},
+ {(-85.03937,0,51.02362),(-85.03937,0,38.26771),(-75.11811,0,26.5748),(-53.85826,0,17.00787)}
+ },{
+ {(-85.03937,0,51.02362),(-85.03937,0,38.26771),(-75.11811,0,26.5748),(-53.85826,0,17.00787)},
+ {(-85.03937,8.503932,51.02362),(-85.03937,8.503932,38.26771),(-75.11811,8.503932,26.5748),(-53.85826,8.503932,17.00787)},
+ {(-76.53543,8.503932,51.02362),(-76.53543,8.503932,44.64566),(-70.86614,8.503932,31.88976),(-56.69291,8.503932,25.51181)},
+ {(-76.53543,0,51.02362),(-76.53543,0,44.64566),(-70.86614,0,31.88976),(-56.69291,0,25.51181)}
+ },{
+ {(48.18897,0,40.3937),(73.70078,0,40.3937),(65.19685,0,59.52755),(76.53543,0,68.0315)},
+ {(48.18897,-18.70866,40.3937),(73.70078,-18.70866,40.3937),(65.19685,-7.086619,59.52755),(76.53543,-7.086619,68.0315)},
+ {(48.18897,-18.70866,17.00787),(87.87401,-18.70866,23.38582),(68.0315,-7.086619,57.40157),(93.5433,-7.086619,68.0315)},
+ {(48.18897,0,17.00787),(87.87401,0,23.38582),(68.0315,0,57.40157),(93.5433,0,68.0315)}
+ },{
+ {(48.18897,0,17.00787),(87.87401,0,23.38582),(68.0315,0,57.40157),(93.5433,0,68.0315)},
+ {(48.18897,18.70866,17.00787),(87.87401,18.70866,23.38582),(68.0315,7.086619,57.40157),(93.5433,7.086619,68.0315)},
+ {(48.18897,18.70866,40.3937),(73.70078,18.70866,40.3937),(65.19685,7.086619,59.52755),(76.53543,7.086619,68.0315)},
+ {(48.18897,0,40.3937),(73.70078,0,40.3937),(65.19685,0,59.52755),(76.53543,0,68.0315)}
+ },{
+ {(76.53543,0,68.0315),(79.37007,0,70.15748),(82.20472,0,70.15748),(79.37007,0,68.0315)},
+ {(76.53543,-7.086619,68.0315),(79.37007,-7.086619,70.15748),(82.20472,-4.251961,70.15748),(79.37007,-4.251961,68.0315)},
+ {(93.5433,-7.086619,68.0315),(99.92125,-7.086619,70.68897),(97.79527,-4.251961,71.22047),(90.70866,-4.251961,68.0315)},
+ {(93.5433,0,68.0315),(99.92125,0,70.68897),(97.79527,0,71.22047),(90.70866,0,68.0315)}
+ },{
+ {(93.5433,0,68.0315),(99.92125,0,70.68897),(97.79527,0,71.22047),(90.70866,0,68.0315)},
+ {(93.5433,7.086619,68.0315),(99.92125,7.086619,70.68897),(97.79527,4.251961,71.22047),(90.70866,4.251961,68.0315)},
+ {(76.53543,7.086619,68.0315),(79.37007,7.086619,70.15748),(82.20472,4.251961,70.15748),(79.37007,4.251961,68.0315)},
+ {(76.53543,0,68.0315),(79.37007,0,70.15748),(82.20472,0,70.15748),(79.37007,0,68.0315)}
+ },{
+ {(0,0,89.29133),(22.67716,0,89.29133),(0,0,80.7874),(5.669294,0,76.53543)},
+ {(0,0,89.29133),(22.67716,-12.7559,89.29133),(0,0,80.7874),(5.669294,-3.174809,76.53543)},
+ {(0,0,89.29133),(12.7559,-22.67716,89.29133),(0,0,80.7874),(3.174809,-5.669294,76.53543)},
+ {(0,0,89.29133),(0,-22.67716,89.29133),(0,0,80.7874),(0,-5.669294,76.53543)}
+ },{
+ {(0,0,89.29133),(0,-22.67716,89.29133),(0,0,80.7874),(0,-5.669294,76.53543)},
+ {(0,0,89.29133),(-12.7559,-22.67716,89.29133),(0,0,80.7874),(-3.174809,-5.669294,76.53543)},
+ {(0,0,89.29133),(-22.67716,-12.7559,89.29133),(0,0,80.7874),(-5.669294,-3.174809,76.53543)},
+ {(0,0,89.29133),(-22.67716,0,89.29133),(0,0,80.7874),(-5.669294,0,76.53543)}
+ },{
+ {(0,0,89.29133),(-22.67716,0,89.29133),(0,0,80.7874),(-5.669294,0,76.53543)},
+ {(0,0,89.29133),(-22.67716,12.7559,89.29133),(0,0,80.7874),(-5.669294,3.174809,76.53543)},
+ {(0,0,89.29133),(-12.7559,22.67716,89.29133),(0,0,80.7874),(-3.174809,5.669294,76.53543)},
+ {(0,0,89.29133),(0,22.67716,89.29133),(0,0,80.7874),(0,5.669294,76.53543)}
+ },{
+ {(0,0,89.29133),(0,22.67716,89.29133),(0,0,80.7874),(0,5.669294,76.53543)},
+ {(0,0,89.29133),(12.7559,22.67716,89.29133),(0,0,80.7874),(3.174809,5.669294,76.53543)},
+ {(0,0,89.29133),(22.67716,12.7559,89.29133),(0,0,80.7874),(5.669294,3.174809,76.53543)},
+ {(0,0,89.29133),(22.67716,0,89.29133),(0,0,80.7874),(5.669294,0,76.53543)}
+ },{
+ {(5.669294,0,76.53543),(11.33858,0,72.28346),(36.85039,0,72.28346),(36.85039,0,68.0315)},
+ {(5.669294,-3.174809,76.53543),(11.33858,-6.349609,72.28346),(36.85039,-20.63622,72.28346),(36.85039,-20.63622,68.0315)},
+ {(3.174809,-5.669294,76.53543),(6.349609,-11.33858,72.28346),(20.63622,-36.85039,72.28346),(20.63622,-36.85039,68.0315)},
+ {(0,-5.669294,76.53543),(0,-11.33858,72.28346),(0,-36.85039,72.28346),(0,-36.85039,68.0315)}
+ },{
+ {(0,-5.669294,76.53543),(0,-11.33858,72.28346),(0,-36.85039,72.28346),(0,-36.85039,68.0315)},
+ {(-3.174809,-5.669294,76.53543),(-6.349609,-11.33858,72.28346),(-20.63622,-36.85039,72.28346),(-20.63622,-36.85039,68.0315)},
+ {(-5.669294,-3.174809,76.53543),(-11.33858,-6.349609,72.28346),(-36.85039,-20.63622,72.28346),(-36.85039,-20.63622,68.0315)},
+ {(-5.669294,0,76.53543),(-11.33858,0,72.28346),(-36.85039,0,72.28346),(-36.85039,0,68.0315)},
+ },{
+ {(-5.669294,0,76.53543),(-11.33858,0,72.28346),(-36.85039,0,72.28346),(-36.85039,0,68.0315)},
+ {(-5.669294,3.174809,76.53543),(-11.33858,6.349609,72.28346),(-36.85039,20.63622,72.28346),(-36.85039,20.63622,68.0315)},
+ {(-3.174809,5.669294,76.53543),(-6.349609,11.33858,72.28346),(-20.63622,36.85039,72.28346),(-20.63622,36.85039,68.0315)},
+ {(0,5.669294,76.53543),(0,11.33858,72.28346),(0,36.85039,72.28346),(0,36.85039,68.0315)}
+ },{
+ {(0,5.669294,76.53543),(0,11.33858,72.28346),(0,36.85039,72.28346),(0,36.85039,68.0315)},
+ {(3.174809,5.669294,76.53543),(6.349609,11.33858,72.28346),(20.63622,36.85039,72.28346),(20.63622,36.85039,68.0315)},
+ {(5.669294,3.174809,76.53543),(11.33858,6.349609,72.28346),(36.85039,20.63622,72.28346),(36.85039,20.63622,68.0315)},
+ {(5.669294,0,76.53543),(11.33858,0,72.28346),(36.85039,0,72.28346),(36.85039,0,68.0315)},
+ },{
+ {(0,0,0),(40.3937,0,0),(42.51969,0,2.12598),(42.51969,0,4.251961)},
+ {(0,0,0),(40.3937,22.62047,0),(42.51969,23.81102,2.12598),(42.51969,23.81102,4.251961)},
+ {(0,0,0),(22.62047,40.3937,0),(23.81102,42.51969,2.12598),(23.81102,42.51969,4.251961)},
+ {(0,0,0),(0,40.3937,0),(0,42.51969,2.12598),(0,42.51969,4.251961)}
+ },{
+ {(0,0,0),(0,40.3937,0),(0,42.51969,2.12598),(0,42.51969,4.251961)},
+ {(0,0,0),(-22.62047,40.3937,0),(-23.81102,42.51969,2.12598),(-23.81102,42.51969,4.251961)},
+ {(0,0,0),(-40.3937,22.62047,0),(-42.51969,23.81102,2.12598),(-42.51969,23.81102,4.251961)},
+ {(0,0,0),(-40.3937,0,0),(-42.51969,0,2.12598),(-42.51969,0,4.251961)}
+ },{
+ {(0,0,0),(-40.3937,0,0),(-42.51969,0,2.12598),(-42.51969,0,4.251961)},
+ {(0,0,0),(-40.3937,-22.62047,0),(-42.51969,-23.81102,2.12598),(-42.51969,-23.81102,4.251961)},
+ {(0,0,0),(-22.62047,-40.3937,0),(-23.81102,-42.51969,2.12598),(-23.81102,-42.51969,4.251961)},
+ {(0,0,0),(0,-40.3937,0),(0,-42.51969,2.12598),(0,-42.51969,4.251961)}
+ },{
+ {(0,0,0),(0,-40.3937,0),(0,-42.51969,2.12598),(0,-42.51969,4.251961)},
+ {(0,0,0),(22.62047,-40.3937,0),(23.81102,-42.51969,2.12598),(23.81102,-42.51969,4.251961)},
+ {(0,0,0),(40.3937,-22.62047,0),(42.51969,-23.81102,2.12598),(42.51969,-23.81102,4.251961)},
+ {(0,0,0),(40.3937,0,0),(42.51969,0,2.12598),(42.51969,0,4.251961)}
+ }
+};
+
+draw(surface(Q),blue,render(compression=Low));
diff --git a/Master/texmf-dist/doc/asymptote/examples/tensor.asy b/Master/texmf-dist/doc/asymptote/examples/tensor.asy
new file mode 100644
index 00000000000..19b1e087658
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/tensor.asy
@@ -0,0 +1,9 @@
+size(200);
+
+pen[][] p={{red,green,blue,cyan},{blue,green,magenta,rgb(black)}};
+path G=(0,0){dir(-120)}..(1,0)..(1,1)..(0,1)..cycle;
+path[] g={G,subpath(G,2,1)..(2,0)..(2,1)..cycle};
+pair[][] z={{(0.5,0.5),(0.5,0.5),(0.5,0.5),(0.5,0.5)},{(2,0.5),(2,0.5),(1.5,0.5),(2,0.5)}};
+tensorshade(g,p,z);
+
+dot(g);
diff --git a/Master/texmf-dist/doc/asymptote/examples/textpath.asy b/Master/texmf-dist/doc/asymptote/examples/textpath.asy
new file mode 100644
index 00000000000..1fc105364be
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/textpath.asy
@@ -0,0 +1,10 @@
+size(300);
+
+fill(texpath(Label("test",TimesRoman())),pink);
+fill(texpath(Label("test",fontcommand('.fam T\n.ps 12')),tex=false),red);
+
+pair z=10S;
+
+fill(texpath(Label("$ \sqrt{x^2} $",z,TimesRoman())),pink);
+fill(texpath(Label("$ sqrt {x sup 2} $",z,fontcommand('.fam T\n.ps 12')),
+ tex=false),red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy b/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy
new file mode 100644
index 00000000000..cfcc3d0e98e
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy
@@ -0,0 +1,131 @@
+// example file for roundedpath() in roundedpath.asy
+// written by stefan knorr
+
+
+// import needed packages
+import roundedpath;
+
+// function definition
+picture CreateKOOS(real Scale, string legend) // draw labeled coordinate system as picture
+{
+ picture ReturnPic;
+ real S = 1.2*Scale;
+ draw(ReturnPic, ((-S,0)--(S,0)), bar = EndArrow); // x axis
+ draw(ReturnPic, ((0,-S)--(0,S)), bar = EndArrow); // y axis
+ label(ReturnPic, "$\varepsilon$", (S,0), SW); // x axis label
+ label(ReturnPic, "$\sigma$", (0,S), SW); // y axis label
+ label(ReturnPic, legend, (0.7S, -S), NW); // add label 'legend'
+ return ReturnPic; // return picture
+}
+
+
+// some global definitions
+real S = 13mm; // universal scale factor for the whole file
+real grad = 0.25; // gradient for lines
+real radius = 0.04; // radius for the rounded path'
+real lw = 2; // linewidth
+pair A = (-1, -1); // start point for graphs
+pair E = ( 1, 1); // end point for graphs
+path graph; // local graph
+pen ActPen; // actual pen for each drawing
+picture T[]; // vector of all four diagrams
+real inc = 2.8; // increment-offset for combining pictures
+
+//////////////////////////////////////// 1st diagram
+T[1] = CreateKOOS(S, "$T_1$"); // initialise T[1] as empty diagram with label $T_1$
+graph = A; // # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*1.6, A.y + 1.6); // #
+graph = graph -- (E.x - grad*0.4, E.y - 0.4); // #
+graph = graph -- E; // #
+
+graph = roundedpath(graph, radius, S); // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen = rgb(0,0,0.6) + linewidth(lw); // define pen for drawing in 1st diagram
+draw(T[1], graph, ActPen); // draw 'graph' with 'ActPen' into 'T[1]' (1st hysteresis branch)
+draw(T[1], rotate(180,(0,0))*graph, ActPen); // draw rotated 'graph' (2nd hysteresis branch)
+
+graph = (0,0) -- (grad*0.6, 0.6) -- ( (grad*0.6, 0.6) + (0.1, 0) ); // define branch from origin to hysteresis
+graph = roundedpath(graph, radius, S); // round this path
+draw(T[1], graph, ActPen); // draw this path into 'T[1]'
+
+
+//////////////////////////////////////// 2nd diagram
+T[2] = CreateKOOS(S, "$T_2$"); // initialise T[2] as empty diagram with label $T_2$
+graph = A; // # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*1.3, A.y + 1.3); // #
+graph = graph -- (E.x - grad*0.7 , E.y - 0.7); // #
+graph = graph -- E; // #
+
+graph = roundedpath(graph, radius, S); // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen = rgb(0.2,0,0.4) + linewidth(lw); // define pen for drawing in 2nd diagram
+draw(T[2], graph, ActPen); // draw 'graph' with 'ActPen' into 'T[2]' (1st hysteresis branch)
+draw(T[2], rotate(180,(0,0))*graph, ActPen); // draw rotated 'graph' (2nd hysteresis branch)
+
+graph = (0,0) -- (grad*0.3, 0.3) -- ( (grad*0.3, 0.3) + (0.1, 0) ); // define branch from origin to hysteresis
+graph = roundedpath(graph, radius, S); // round this path
+draw(T[2], graph, ActPen); // draw this path into 'T[2]'
+
+
+//////////////////////////////////////// 3rd diagram
+T[3] = CreateKOOS(S, "$T_3$"); // initialise T[3] as empty diagram with label $T_3$
+graph = A; // # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*0.7, A.y + 0.7); // #
+graph = graph -- ( - grad*0.3 , - 0.3); // #
+graph = graph -- (0,0); // #
+graph = graph -- (grad*0.6, 0.6); // #
+graph = graph -- (E.x - grad*0.4, E.y - 0.4); // #
+graph = graph -- E; // #
+
+graph = roundedpath(graph, radius, S); // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen = rgb(0.6,0,0.2) + linewidth(lw); // define pen for drawing in 3rd diagram
+draw(T[3], graph, ActPen); // draw 'graph' with 'ActPen' into 'T[3]' (1st hysteresis branch)
+draw(T[3], rotate(180,(0,0))*graph, ActPen); // draw rotated 'graph' (2nd hysteresis branch)
+
+
+//////////////////////////////////////// 4th diagram
+T[4] = CreateKOOS(S, "$T_4$"); // initialise T[4] as empty diagram with label $T_4$
+graph = A; // # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*0.4, A.y + 0.4); // #
+graph = graph -- ( - grad*0.6 , - 0.6); // #
+graph = graph -- (0,0); // #
+graph = graph -- (grad*0.9, 0.9); // #
+graph = graph -- (E.x - grad*0.1, E.y - 0.1); // #
+graph = graph -- E; // #
+
+graph = roundedpath(graph, radius, S); // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen = rgb(0.6,0,0) + linewidth(lw); // define pen for drawing in 4th diagram
+draw(T[4], graph, ActPen); // draw 'graph' with 'ActPen' into 'T[4]' (1st hysteresis branch)
+draw(T[4], rotate(180,(0,0))*graph, ActPen); // draw rotated 'graph' (3nd hysteresis branch)
+
+
+// add some labels and black dots to the first two pictures
+pair SWW = (-0.8, -0.6);
+label(T[1], "$\sigma_f$", (0, 0.6S), NE); // sigma_f
+draw(T[1], (0, 0.6S), linewidth(3) + black);
+label(T[2], "$\sigma_f$", (0, 0.3S), NE); // sigma_f
+draw(T[2], (0, 0.3S), linewidth(3) + black);
+label(T[1], "$\varepsilon_p$", (0.7S, 0), SWW); // epsilon_p
+draw(T[1], (0.75S, 0), linewidth(3) + black);
+label(T[2], "$\varepsilon_p$", (0.7S, 0), SWW); // epsilon_p
+draw(T[2], (0.75S, 0), linewidth(3) + black);
+
+
+// add all pictures T[1...4] to the current one
+add(T[1],(0,0));
+add(T[2],(1*inc*S,0));
+add(T[3],(2*inc*S,0));
+add(T[4],(3*inc*S,0));
+
+
+// draw line of constant \sigma and all intersection points with the graphs in T[1...4]
+ActPen = linewidth(1) + dashed + gray(0.5); // pen definition
+draw((-S, 0.45*S)--((3*inc+1)*S, 0.45*S), ActPen); // draw backgoundline
+label("$\sigma_s$", (-S, 0.45S), W); // label 'sigma_s'
+
+path mark = scale(2)*unitcircle; // define mark-symbol to be used for intersections
+ActPen = linewidth(1) + gray(0.5); // define pen for intersection mark
+draw(shift(( 1 - grad*0.55 + 0*inc)*S, 0.45*S)*mark, ActPen); // # draw all intersections
+draw(shift((-1 + grad*1.45 + 0*inc)*S, 0.45*S)*mark, ActPen); // #
+draw(shift(( 1 - grad*0.55 + 1*inc)*S, 0.45*S)*mark, ActPen); // #
+draw(shift(( 1 - grad*0.55 + 2*inc)*S, 0.45*S)*mark, ActPen); // #
+draw(shift(( grad*0.45 + 2*inc)*S, 0.45*S)*mark, ActPen); // #
+draw(shift(( grad*0.45 + 3*inc)*S, 0.45*S)*mark, ActPen); // #
diff --git a/Master/texmf-dist/doc/asymptote/examples/threeviews.asy b/Master/texmf-dist/doc/asymptote/examples/threeviews.asy
new file mode 100644
index 00000000000..1bcc36ae8d7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/threeviews.asy
@@ -0,0 +1,26 @@
+import three;
+
+picture pic;
+unitsize(pic,5cm);
+
+currentlight.viewport=false;
+settings.render=4;
+settings.toolbar=false;
+viewportmargin=(1cm,1cm);
+
+draw(pic,scale3(0.5)*unitsphere,green,render(compression=Low,merge=true));
+draw(pic,Label("$x$",1),O--X);
+draw(pic,Label("$y$",1),O--Y);
+draw(pic,Label("$z$",1),O--Z);
+
+// Europe and Asia:
+//addViews(pic,ThreeViewsFR);
+//addViews(pic,SixViewsFR);
+
+// United Kingdom, United States, Canada, and Australia:
+addViews(pic,ThreeViewsUS);
+//addViews(pic,SixViewsUS);
+
+// Front, Top, Right,
+// Back, Bottom, Left:
+//addViews(pic,SixViews);
diff --git a/Master/texmf-dist/doc/asymptote/examples/tile.asy b/Master/texmf-dist/doc/asymptote/examples/tile.asy
new file mode 100644
index 00000000000..fe9cbc523c7
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/tile.asy
@@ -0,0 +1,13 @@
+size(0,90);
+import patterns;
+
+add("tile",tile());
+add("filledtilewithmargin",tile(6mm,4mm,red,Fill),(1mm,1mm),(1mm,1mm));
+add("checker",checker());
+add("brick",brick());
+
+real s=2.5;
+filldraw(unitcircle,pattern("tile"));
+filldraw(shift(s,0)*unitcircle,pattern("filledtilewithmargin"));
+filldraw(shift(2s,0)*unitcircle,pattern("checker"));
+filldraw(shift(3s,0)*unitcircle,pattern("brick"));
diff --git a/Master/texmf-dist/doc/asymptote/examples/torus.asy b/Master/texmf-dist/doc/asymptote/examples/torus.asy
new file mode 100644
index 00000000000..d0b8673d737
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/torus.asy
@@ -0,0 +1,20 @@
+size(200);
+import graph3;
+
+currentprojection=perspective(5,4,4);
+
+real R=3;
+real a=1;
+
+/*
+import solids;
+revolution torus=revolution(reverse(Circle(R*X,a,Y,32)),Z,90,345);
+surface s=surface(torus);
+*/
+
+triple f(pair t) {
+ return ((R+a*cos(t.y))*cos(t.x),(R+a*cos(t.y))*sin(t.x),a*sin(t.y));
+}
+
+surface s=surface(f,(radians(90),0),(radians(345),2pi),8,8,Spline);
+draw(s,green,render(compression=Low,merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/transparency.asy b/Master/texmf-dist/doc/asymptote/examples/transparency.asy
new file mode 100644
index 00000000000..36e741d294d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/transparency.asy
@@ -0,0 +1,10 @@
+size(0,150);
+
+if(settings.outformat == "")
+ settings.outformat="pdf";
+
+begingroup();
+fill(shift(1.5dir(120))*unitcircle,green+opacity(0.75));
+fill(shift(1.5dir(60))*unitcircle,red+opacity(0.75));
+fill(unitcircle,blue+opacity(0.75));
+endgroup();
diff --git a/Master/texmf-dist/doc/asymptote/examples/treetest.asy b/Master/texmf-dist/doc/asymptote/examples/treetest.asy
new file mode 100644
index 00000000000..dbdf973c508
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/treetest.asy
@@ -0,0 +1,22 @@
+import drawtree;
+
+treeLevelStep = 2cm;
+
+TreeNode root = makeNode( "Root" );
+TreeNode child1 = makeNode( root, "Child\_1" );
+TreeNode child2 = makeNode( root, "Child\_2" );
+
+TreeNode gchild1 = makeNode( child1, "Grandchild\_1" );
+TreeNode gchild2 = makeNode( child1, "Grandchild\_2" );
+
+TreeNode gchild3 = makeNode( child1, "Grandchild\_3" );
+TreeNode gchild4 = makeNode( child1, "Grandchild\_4" );
+
+
+TreeNode gchild11 = makeNode( child2, "Grandchild\_1" );
+TreeNode gchild22 = makeNode( child2, "Grandchild\_2" );
+
+TreeNode ggchild1 = makeNode( gchild1, "Great Grandchild\_1" );
+
+draw( root, (0,0) );
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/trefoilknot.asy b/Master/texmf-dist/doc/asymptote/examples/trefoilknot.asy
new file mode 100644
index 00000000000..8ea5b264b48
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/trefoilknot.asy
@@ -0,0 +1,23 @@
+import tube;
+import graph3;
+import palette;
+currentlight=White;
+
+size(0,8cm);
+currentprojection=perspective(1,1,1,up=-Y);
+
+int e=1;
+real x(real t) {return cos(t)+2*cos(2t);}
+real y(real t) {return sin(t)-2*sin(2t);}
+real z(real t) {return 2*e*sin(3t);}
+
+path3 p=scale3(2)*graph(x,y,z,0,2pi,50,operator ..)&cycle;
+
+pen[] pens=Gradient(6,red,blue,purple);
+pens.push(yellow);
+for (int i=pens.length-2; i >= 0 ; --i)
+ pens.push(pens[i]);
+
+path sec=scale(0.25)*texpath("$\pi$")[0];
+coloredpath colorsec=coloredpath(sec, pens,colortype=coloredNodes);
+draw(tube(p,colorsec),render(merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/triads.asy b/Master/texmf-dist/doc/asymptote/examples/triads.asy
new file mode 100644
index 00000000000..73088197e25
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/triads.asy
@@ -0,0 +1,52 @@
+import graph;
+
+path p=(10,75)..(15,85)..(20,90)..(35,85)..(40,79)--(78,30)..(85,15)..(87,5);
+
+pair l=point(p,3.5);
+pair m=point(p,4.5);
+pair s=point(p,4.9);
+
+pen c=linewidth(1.5);
+pair o=(m.x,0.5(m.x+l.y));
+
+pen d=c+darkgreen;
+
+void drawarrow(string s="", pair p, pair q, side side=RightSide,
+ bool upscale=false, pen c)
+{
+ path g=p{dir(-5)}..{dir(-85)}q;
+ if(upscale) g=reverse(g);
+ draw(s,g,side,c,Arrow(Fill,0.65));
+}
+
+void spectrum(pair l,pair m, pair s) {
+ draw(p,c);
+
+ d += 4.0;
+ dot("$p$",l,SW,d);
+ dot("$q$",m,SW,d);
+ dot("$k$",s,SW,d);
+
+ xaxis("$k$",0);
+ yaxis("$E(k)$",0);
+}
+
+drawarrow("$T_p$",l,m,true,blue);
+drawarrow("$T_k$",m,s,LeftSide,red);
+spectrum(l,m,s);
+shipout("triadpqk");
+
+erase();
+
+drawarrow("$-T_p$",l,m,LeftSide,red);
+drawarrow("$-T_q$",m,s,true,blue);
+spectrum(l,s,m);
+shipout("triadpkq");
+
+erase();
+
+drawarrow("$T_k$",l,m,true,blue);
+drawarrow("$T_q$",m,s,LeftSide,red);
+spectrum(m,s,l);
+
+shipout("triadkpq");
diff --git a/Master/texmf-dist/doc/asymptote/examples/triangle.asy b/Master/texmf-dist/doc/asymptote/examples/triangle.asy
new file mode 100644
index 00000000000..60388a78515
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/triangle.asy
@@ -0,0 +1,12 @@
+size(0,100);
+import geometry;
+
+triangle t=triangle(b=3,alpha=90,c=4);
+
+dot((0,0));
+
+draw(t);
+draw(rotate(90)*t,red);
+draw(shift((-4,0))*t,blue);
+draw(reflect((0,0),(1,0))*t,green);
+draw(slant(2)*t,magenta);
diff --git a/Master/texmf-dist/doc/asymptote/examples/triangulate.asy b/Master/texmf-dist/doc/asymptote/examples/triangulate.asy
new file mode 100644
index 00000000000..56ad347b53d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/triangulate.asy
@@ -0,0 +1,19 @@
+size(200);
+int np=100;
+pair[] points;
+
+real r() {return 1.2*(rand()/randMax*2-1);}
+
+for(int i=0; i < np; ++i)
+ points.push((r(),r()));
+
+int[][] trn=triangulate(points);
+
+for(int i=0; i < trn.length; ++i) {
+ draw(points[trn[i][0]]--points[trn[i][1]]);
+ draw(points[trn[i][1]]--points[trn[i][2]]);
+ draw(points[trn[i][2]]--points[trn[i][0]]);
+}
+
+for(int i=0; i < np; ++i)
+ dot(points[i],red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/triceratops.asy b/Master/texmf-dist/doc/asymptote/examples/triceratops.asy
new file mode 100644
index 00000000000..a9e6e93cd52
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/triceratops.asy
@@ -0,0 +1,9 @@
+import obj;
+
+size(15cm);
+currentprojection=orthographic(0,2,5,up=Y);
+
+// A compressed version of the required data file may be obtained from:
+// http://www.cs.technion.ac.il/~irit/data/Viewpoint/triceratops.obj.gz
+
+draw(obj("triceratops.obj",brown));
diff --git a/Master/texmf-dist/doc/asymptote/examples/trumpet.asy b/Master/texmf-dist/doc/asymptote/examples/trumpet.asy
new file mode 100644
index 00000000000..842af2b23c2
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/trumpet.asy
@@ -0,0 +1,12 @@
+import graph3;
+size(200,0);
+
+currentlight=Viewport;
+
+triple f(pair t) {
+ real u=log(abs(tan(t.y/2)));
+ return (10*sin(t.y),cos(t.x)*(cos(t.y)+u),sin(t.x)*(cos(t.y)+u));
+}
+
+surface s=surface(f,(0,pi/2),(2pi,pi-0.1),7,15,Spline);
+draw(s,olive+0.25*white,render(compression=Low,merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy b/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy
new file mode 100644
index 00000000000..e4d07a49e5b
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy
@@ -0,0 +1,68 @@
+import graph3;
+
+size(200);
+
+defaultrender.merge=true;
+
+real c=(1+sqrt(5))/2;
+
+triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)};
+triple[] x={(0,c,1),(0,-c,1),(0,-c,-1),(0,c,-1)};
+triple[] y={(1,0,c),(1,0,-c),(-1,0,-c),(-1,0,c)};
+
+triple[][] Q={
+ {(c,1,0),(1,0,-c),(0,c,-1),(0,c,1),(1,0,c),(c,-1,0)},
+ {(-c,1,0),(0,c,1),(0,c,-1),(-1,0,-c),(-c,-1,0),(-1,0,c)},
+ {(-c,-1,0),(-c,1,0),(-1,0,-c),(0,-c,-1),(0,-c,1),(-1,0,c)},
+ {(c,-1,0),(c,1,0),(1,0,c),(0,-c,1),(0,-c,-1),(1,0,-c)},
+ {(0,c,1),(0,c,-1),(-c,1,0),(-1,0,c),(1,0,c),(c,1,0)},
+ {(0,-c,1),(0,-c,-1),(-c,-1,0),(-1,0,c),(1,0,c),(c,-1,0)},
+ {(0,-c,-1),(0,-c,1),(c,-1,0),(1,0,-c),(-1,0,-c),(-c,-1,0)},
+ {(0,c,-1),(0,c,1),(c,1,0),(1,0,-c),(-1,0,-c),(-c,1,0)},
+ {(1,0,c),(-1,0,c),(0,-c,1),(c,-1,0),(c,1,0),(0,c,1)},
+ {(1,0,-c),(-1,0,-c),(0,-c,-1),(c,-1,0),(c,1,0),(0,c,-1)},
+ {(-1,0,-c),(1,0,-c),(0,c,-1),(-c,1,0),(-c,-1,0),(0,-c,-1)},
+ {(-1,0,c),(1,0,c),(0,c,1),(-c,1,0),(-c,-1,0),(0,-c,1)}
+};
+
+real R=abs(interp(Q[0][0],Q[0][1],1/3));
+
+triple[][] P;
+for(int i=0; i < Q.length; ++i) {
+ P[i]=new triple[] ;
+ for(int j=0; j < Q[i].length; ++j) {
+ P[i][j]=Q[i][j]/R;
+ }
+}
+
+for(int i=0; i < P.length; ++i) {
+ for(int j=1; j < P[i].length; ++j) {
+ triple C=P[i][0];
+ triple A=P[i][j];
+ triple B=P[i][j % 5+1];
+ triple[] sixout=new
+ triple[] {interp(C,A,1/3),interp(C,A,2/3),interp(A,B,1/3),interp(A,B,2/3),
+ interp(B,C,1/3),interp(B,C,2/3)};
+ triple M=(sum(sixout))/6;
+ triple[] sixin=sequence(new triple(int k) {
+ return interp(sixout[k],M,0.1);
+ },6);
+ draw(surface(reverse(operator--(...sixout)--cycle)^^
+ operator--(...sixin)--cycle,planar=true),magenta);
+ }
+}
+
+for(int i=0; i < P.length; ++i) {
+ triple[] fiveout=sequence(new triple(int k) {
+ return interp(P[i][0],P[i][k+1],1/3);
+ },5);
+ triple M=(sum(fiveout))/5;
+ triple[] fivein=sequence(new triple(int k) {
+ return interp(fiveout[k],M,0.1);
+ },5);
+ draw(surface(reverse(operator--(...fiveout)--cycle)^^
+ operator--(...fivein)--cycle,planar=true),cyan);
+}
+
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/tvgen.asy b/Master/texmf-dist/doc/asymptote/examples/tvgen.asy
new file mode 100644
index 00000000000..ade90e89211
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/tvgen.asy
@@ -0,0 +1,1314 @@
+/* tvgen - draw pm5544-like television test cards.
+ * Copyright (C) 2007, 2009, Servaas Vandenberghe.
+ *
+ * The tvgen code below is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with tvgen: see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * tvgen-1.1/tvgen.asy
+ * This asy script generates pm5544-like television test cards. The image
+ * parameters were derived from a 1990 recording. The basic parameters
+ * conform to itu-r bt.470, bt.601, and bt.709. There is no unique image
+ * since local variants exist and parameters have varied over time.
+ */
+//papertype="a4";
+import plain;
+int verbose=settings.verbose/*+2*/; /* uncomment for debug info */
+
+/* tv dot coordinates --> PS points */
+pair tvps(real col, real row, real xd, real yd, int Nv) {
+ real psx, psy;
+ psx=col*xd; psy=(Nv-row)*yd;
+ return (psx,psy);
+}
+path tvrect(int lc, int tr, int rc, int br, real xd, real yd, int Nv) {
+ real lx, ty, rx, by;
+ pair[] z;
+
+ lx=lc*xd; ty=(Nv-tr)*yd;
+ rx=rc*xd; by=(Nv-br)*yd;
+ /* bl br tr tl */
+ z[0]=(lx, by);
+ z[1]=(rx, by);
+ z[2]=(rx, ty);
+ z[3]=(lx, ty);
+
+ return z[0]--z[1]--z[2]--z[3]--cycle;
+}
+
+/********************* image aspect ratio markers ********************/
+void rimarkers(real rimage, int Nh, int Nhc, int os, int Nvc, int Nsy, pen pdef, real xd, real yd, int Nv) {
+ int[] ridefN={ 4, 16 };
+ int[] ridefD={ 3, 9 };
+ int i;
+
+ for(i=0; i<2; ++i) {
+ real rid=ridefN[i]/ridefD[i];
+
+ if(rimage>rid) {
+ int off, offa, offb;
+
+ /* Nhdef=Nh/rimage*rid */
+ off=round(Nh/rimage*rid/2);
+ offa=off+os;
+ offb=off-os;
+ // write(offa,offb);
+
+ if(2*offa<Nh) {
+ int hy, tr, br;
+ path zz;
+
+ hy=floor(Nsy/3);
+ tr=Nvc-hy;
+ br=Nvc+hy;
+
+ zz=tvrect(Nhc+offb, tr, Nhc+offa, br, xd,yd,Nv);
+ //dot(zz);
+ fill(zz, p=pdef);
+ zz=tvrect(Nhc-offa, tr, Nhc-offb, br, xd,yd,Nv);
+ fill(zz, p=pdef);
+ }
+ }
+ } /* for i */
+ return;
+}
+
+/************* cross hatch: line pairing, center interlace test *************/
+void centerline(int[] coff, int[] coffa, int[] coffb, int Nhc, int divsx,
+ int os, int[] rcrowc, int Nvc, int divsy,
+ pair ccenter, real[] rcoff, pair[] rcright, pair[] rcleft,
+ pen pdef, real xd, real yd, int Nv) {
+ pair[] z;
+ int col;
+ pen pblack=pdef+gray(0.0), pwhite=pdef+gray(1.0);
+
+ z[0]=rcright[divsy];
+
+ col=Nhc+coff[0];
+ z[1]=tvps(col,rcrowc[divsy], xd,yd,Nv);
+ z[2]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
+ col=Nhc-coff[0];
+ z[3]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
+ z[4]=tvps(col,rcrowc[divsy], xd,yd,Nv);
+
+ z[5]=rcleft[divsy];
+ z[6]=rcleft[divsy+1];
+
+ z[7]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
+ z[8]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
+ col=Nhc+coff[0];
+ z[9]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
+ z[10]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
+
+ z[11]=rcright[divsy+1];
+ fill(z[1]--z[2]--z[3]--z[4] //--z[5]--z[6]
+ --arc(ccenter, z[5], z[6])
+ --z[7]--z[8]--z[9]--z[10] //--z[11]--z[0]
+ --arc(ccenter,z[11], z[0])
+ --cycle, p=pblack);
+
+ int i, maxoff, rows, tr, br;
+ path zz;
+
+ maxoff=floor(rcoff[divsy]);
+
+ /* center cross: vertical and horizontal centerline */
+ rows=min(Nvc-rcrowc[divsy-1], rcrowc[divsy+2]-Nvc);
+ tr=Nvc-rows;
+ br=Nvc+rows;
+ //write("centerline long: rows tr br ", rows, tr, br);
+ zz=tvrect(Nhc-os, tr, Nhc+os, br, xd,yd,Nv);
+ fill(zz, p=pwhite);
+ zz=tvrect(Nhc-maxoff,Nvc-1, Nhc+maxoff,Nvc+1, xd,yd,Nv);
+ fill(zz, p=pwhite);
+
+ /* vertical short lines */
+ rows=min(Nvc-rcrowc[divsy], rcrowc[divsy+1]-Nvc);
+ tr=Nvc-rows;
+ br=Nvc+rows;
+ if(verbose>1)
+ write("centerline: rows tr br ", rows, tr, br);
+ for(i=0; i<=divsx; ++i) {
+ int off;
+
+ off=coff[i];
+ if(off<maxoff) {
+ int offa, offb;
+ path zzv;
+ offa=coffa[i];
+ offb=coffb[i];
+
+ zzv=tvrect(Nhc+offb, tr, Nhc+offa, br, xd,yd,Nv);
+ fill(zzv, p=pwhite);
+ zzv=tvrect(Nhc-offa, tr, Nhc-offb, br, xd,yd,Nv);
+ fill(zzv, p=pwhite);
+ }
+ }
+ return;
+}
+
+/************************ topbw **************************************/
+void topbw(int[] coff, int Nhc, int os, int urow, int trow, int brow,
+ pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+ pen pdef, real xd, real yd, int Nv) {
+ pen pblack=pdef+gray(0.0), pwhite=pdef+gray(1.0);
+ pair[] ze;
+ path zext, zref, zint;
+ int off, col, cr;
+
+ off=ceil((coff[2]+coff[3])/2);
+ ze[0]=tvps(Nhc+off,trow, xd,yd,Nv);
+ ze[1]=rcrt;
+ ze[2]=rclt;
+ ze[3]=tvps(Nhc-off,trow, xd,yd,Nv);
+ ze[4]=tvps(Nhc-off,brow, xd,yd,Nv);
+ col=Nhc-coff[2]-os;
+ ze[5]=tvps(col,brow, xd,yd,Nv);
+ ze[6]=tvps(col,trow, xd,yd,Nv);
+ cr=col+3*os; /* reflection test black pulse */
+ zref=tvrect(col,trow, cr,brow, xd,yd,Nv);
+ ze[7]=tvps(cr,trow, xd,yd,Nv);
+ ze[8]=tvps(cr,brow, xd,yd,Nv);
+ ze[9]=tvps(Nhc+off,brow, xd,yd,Nv);
+ //dot(ze);
+
+ zext=ze[0] // --ze[1]--ze[2]
+ --arc(ccenter, ze[1], ze[2])
+ --ze[3]--ze[4]--ze[5]--ze[6]--ze[7]--ze[8]--ze[9]--cycle;
+
+ off=ceil((coff[1]+coff[2])/2);
+ zint=tvrect(Nhc-off,urow, Nhc+off,trow, xd,yd,Nv);
+
+ /* paths are completely resolved; no free endpoint conditions */
+ fill(zext^^reverse(zint), p=pwhite);
+ fill(zint, p=pblack);
+ fill(zref, p=pblack);
+
+ fill(arc(ccenter,rclt,rclb)--ze[4]--ze[3]--cycle, p=pblack);
+ fill(arc(ccenter,rcrb,rcrt)--ze[0]--ze[9]--cycle, p=pblack);
+ return;
+}
+
+/************************ testtone **************************************/
+/* x on circle -> return y>=0
+ * in:
+ * x x-coordinate relative to origin
+ * crad circle radius in y units, true size=crad*yd
+ */
+real testcircx(real x, real crad, real xd, real yd) {
+ real relx, phi, y;
+
+ relx=x*xd/yd/crad;
+ if(relx>1) {
+ phi=0;
+ } else {
+ phi=acos(relx);
+ }
+ y=crad*sin(phi); // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
+
+ return y;
+}
+/* y on circle -> return x>=0 */
+real testcircy(real y, real crad, real xd, real yd) {
+ real rely, phi, x;
+
+ rely=y/crad;
+ if(rely>1) {
+ phi=pi/2;
+ } else {
+ phi=asin(rely);
+ }
+ x=crad*cos(phi)*yd/xd; // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
+
+ return x;
+}
+
+/* brow>trow && xb>xt */
+void testtone(real Tt, int trow, int brow,
+ real ccol, real crow, real crad,
+ pen pdef, real xd, real yd, int Nv) {
+ int blocks, i;
+ real yt, xt, yb, xb, Ttt=Tt/2;
+ pair ccenter;
+
+ yt=crow-trow;
+ xt=testcircy(yt, crad, xd, yd);
+ yb=crow-brow;
+ xb=testcircy(yb, crad, xd, yd);
+ //write('#xt yt\t',xt,yt); write('#xb yb\t',xb,yb);
+
+ ccenter=tvps(ccol,crow, xd,yd,Nv);
+
+ blocks=floor(2*xb/Tt);
+
+ for(i=-blocks-1; i<=blocks; ++i) {
+ real tl, tr;
+ path zz;
+
+ tl=max(-xb,min(i*Ttt,xb)); /* limit [-xb..xb] */
+ tr=max(-xb,min((i+1)*Ttt,xb));
+
+ if(tl<-xt && tr<=-xt || tr>xt && tl>=xt) { /* top full circle */
+ pair[] z;
+ real yl, yr;
+
+ yl=testcircx(tl, crad, xd, yd);
+ yr=testcircx(tr, crad, xd, yd);
+
+ z[0]=tvps(ccol+tl,brow, xd,yd,Nv);
+ z[1]=tvps(ccol+tr,brow, xd,yd,Nv);
+ z[2]=tvps(ccol+tr,crow-yr, xd,yd,Nv);
+ z[3]=tvps(ccol+tl,crow-yl, xd,yd,Nv);
+
+ zz=z[0]--z[1]--arc(ccenter,z[2],z[3])--cycle;
+ } else if(tl<-xt) { /* tl in circel, tr not, partial */
+ pair[] z;
+ real yl;
+
+ yl=testcircx(tl, crad, xd, yd);
+
+ z[0]=tvps(ccol+tl,brow, xd,yd,Nv);
+ z[1]=tvps(ccol+tr,brow, xd,yd,Nv);
+ z[2]=tvps(ccol+tr,trow, xd,yd,Nv);
+ z[3]=tvps(ccol-xt,trow, xd,yd,Nv);
+ z[4]=tvps(ccol+tl,crow-yl, xd,yd,Nv);
+
+ zz=z[0]--z[1]--z[2]--arc(ccenter,z[3],z[4])--cycle;
+ } else if(tr>xt) { /* tr in circle, tl not, partial */
+ pair[] z;
+ real yr;
+
+ yr=testcircx(tr, crad, xd, yd);
+
+ z[0]=tvps(ccol+tl,brow, xd,yd,Nv);
+ z[1]=tvps(ccol+tr,brow, xd,yd,Nv);
+ z[2]=tvps(ccol+tr,crow-yr, xd,yd,Nv);
+ z[3]=tvps(ccol+xt,trow, xd,yd,Nv);
+ z[4]=tvps(ccol+tl,trow, xd,yd,Nv);
+ zz=z[0]--z[1]--arc(ccenter,z[2],z[3])--z[4]--cycle;
+ } else { /* full block */
+ pair[] z;
+
+ z[0]=tvps(ccol+tr,trow, xd,yd,Nv);
+ z[1]=tvps(ccol+tl,trow, xd,yd,Nv);
+ z[2]=tvps(ccol+tl,brow, xd,yd,Nv);
+ z[3]=tvps(ccol+tr,brow, xd,yd,Nv);
+ zz=z[0]--z[1]--z[2]--z[3]--cycle;
+ }
+
+ if(tl<tr) {
+ if(i%2 == 0) {
+ fill(zz, p=pdef+gray(0.0));
+ } else {
+ fill(zz, p=pdef+gray(0.75));
+ }
+ }
+ }
+ return;
+}
+
+/************************ color bars *************************************/
+void colorbars(int[] coff, int Nhc, int trow, int crow, int brow,
+ pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+ pen pdef, real xd, real yd, int Nv) {
+ real cI=0.75;
+ real[] cR={ cI, 0, 0, cI, cI, 0 };
+ real[] cG={ cI, cI, cI, 0, 0, 0 };
+ real[] cB={ 0, cI, 0, cI, 0, cI };
+ int cmax=2, poff, rows, i;
+
+ rows=brow-trow;
+ poff=0;
+ for(i=0; i<=cmax; ++i) {
+ int off;
+ int ii=2*i, il=cmax-i, ir=i+cmax+1;
+ path zzl, zzr;
+
+ off=ceil((coff[1+ii]+coff[2+ii])/2);
+ if(i!=0 && i<cmax) {
+ zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
+ zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
+ } else {
+ if(i==0) {
+ int col, pcol;
+ pair[] zl, zr;
+
+ col=Nhc+off;
+ pcol=Nhc+poff;
+ zr[0]=tvps(col,trow, xd,yd,Nv);
+ zr[1]=tvps(pcol,trow, xd,yd,Nv);
+ zr[2]=tvps(pcol,crow, xd,yd,Nv);
+ zr[3]=tvps(Nhc+coff[0],crow, xd,yd,Nv);
+ zr[4]=tvps(Nhc+coff[0],brow, xd,yd,Nv);
+ zr[5]=tvps(col,brow, xd,yd,Nv);
+ zzr=zr[0]--zr[1]--zr[2]--zr[3]--zr[4]--zr[5]--cycle;
+
+ col=Nhc-off;
+ pcol=Nhc-poff;
+ zl[0]=tvps(pcol,trow, xd,yd,Nv);
+ zl[1]=tvps(col,trow, xd,yd,Nv);
+ zl[2]=tvps(col,brow, xd,yd,Nv);
+ zl[3]=tvps(Nhc-coff[0],brow, xd,yd,Nv);
+ zl[4]=tvps(Nhc-coff[0],crow, xd,yd,Nv);
+ zl[5]=tvps(pcol,crow, xd,yd,Nv);
+ zzl=zl[0]--zl[1]--zl[2]--zl[3]--zl[4]--zl[5]--cycle;
+ } else {
+ int pcol;
+ pair[] zl, zr;
+
+ pcol=Nhc+poff;
+ zr[0]=tvps(pcol,brow, xd,yd,Nv);
+ zr[1]=rcrb;
+ zr[2]=rcrt;
+ zr[3]=tvps(pcol,trow, xd,yd,Nv);
+ zzr=zr[0]--arc(ccenter,zr[1],zr[2])--zr[3]--cycle;
+
+ pcol=Nhc-poff;
+ zl[0]=tvps(pcol,trow, xd,yd,Nv);
+ zl[1]=rclt;
+ zl[2]=rclb;
+ zl[3]=tvps(pcol,brow, xd,yd,Nv);
+ zzl=zl[0]--arc(ccenter,zl[1],zl[2])--zl[3]--cycle;
+ }
+ }
+ fill(zzr, p=pdef+rgb(cR[ir], cG[ir], cB[ir]));
+ fill(zzl, p=pdef+rgb(cR[il], cG[il], cB[il]));
+
+ poff=off;
+ }
+ return;
+}
+
+/************************ test frequencies ****************************/
+/* in
+ * theta rad
+ * freq 1/hdot
+ * step hdot
+ * out
+ * new phase theta
+ */
+real addphase(real theta, real freq, real step) {
+ real cycles, thetaret;
+ int coverflow;
+
+ cycles=freq*step;
+ coverflow=floor(abs(cycles));
+ if(coverflow>1) {
+ thetaret=0;
+ } else {
+ real dpi=2*pi;
+
+ cycles-=coverflow*sgn(cycles);
+ thetaret=theta+cycles*dpi; /* cycles=(-1 .. 1) */
+
+ if(thetaret>pi) {
+ thetaret-=dpi;
+ } else if(thetaret<-pi) {
+ thetaret-=dpi;
+ }
+ }
+
+ //write("addphase: ", step, theta, thetaret);
+ return thetaret;
+}
+
+void testfreqs(real[] ftones, int[] coff, int Nhc, int trow,int crow,int brow,
+ pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+ pen pdef, real xd, real yd, int Nv) {
+ int[] divc;
+ real[] divfl, divfr;
+ int i, divs, coffmax, off, divnext;
+ real fl, fr, thr, thl;
+
+ /* Segment info for PAL continental test card
+ * segment i extends from [divc[i] .. divc[i+1]) with frequency divf[i]
+ */
+ divs=2; // the number of segments on the right, total=2*divs+1
+ divc[0]=0;
+ for(i=0; i<=divs; ++i) {
+ int ii=i*2, il=divs-i, ir=divs+i;
+
+ divc[i+1]=ceil((coff[ii]+coff[ii+1])/2); /* xdot distance to center */
+
+ divfl[i]=ftones[divs-i];
+ divfr[i]=ftones[divs+i];
+ }
+ coffmax=divc[divs+1];
+
+ int trowlim=coff[0];
+ int tr;
+
+ tr=crow;
+
+ divnext=0;
+ fl=0;
+ fr=0;
+ thl=0;
+ thr=0;
+ // draw a vertical line at off..off+1
+ for(off=0; off<coffmax; ++off) {
+ real ampl, ampr;
+ int col;
+ path zz;
+
+ if(off==trowlim) {
+ tr=trow;
+ }
+
+ if(off == divc[divnext]) {
+ /* switch frequency: cycles=0.5*fcur+0.5*fnext */
+ thl=addphase(thl, fl, -0.5);
+ thr=addphase(thr, fr, 0.5);
+ fl=divfl[divnext];
+ fr=divfr[divnext];
+ thl=addphase(thl, fl, -0.5);
+ thr=addphase(thr, fr, 0.5);
+
+ ++divnext;
+ // thl=pi; thr=pi;
+ //write(off, fl, fr);
+ } else {
+ thl=addphase(thl, fl, -1);
+ thr=addphase(thr, fr, 1);
+ // thl=0; thr=0;
+ }
+
+ ampl=(1+sin(thl))/2;
+ ampr=(1+sin(thr))/2;
+ //write(off, thr, ampr);
+
+ col=Nhc-off-1;
+ zz=tvrect(col,tr, col+1,brow, xd,yd,Nv);
+ fill(zz, p=pdef+gray(ampl));
+ col=Nhc+off;
+ zz=tvrect(col,tr, col+1,brow, xd,yd,Nv);
+ fill(zz, p=pdef+gray(ampr));
+ }
+
+ pair[] z;
+ z[0]=tvps(Nhc-coffmax,trow, xd,yd,Nv);
+ z[1]=tvps(Nhc-coffmax,brow, xd,yd,Nv);
+ fill(z[0]--arc(ccenter,rclt,rclb)--z[1]--cycle, p=pdef+gray(0.0));
+ z[0]=tvps(Nhc+coffmax,brow, xd,yd,Nv);
+ z[1]=tvps(Nhc+coffmax,trow, xd,yd,Nv);
+ fill(z[0]--arc(ccenter,rcrb,rcrt)--z[1]--cycle, p=pdef+gray(0.0));
+ return;
+}
+
+/************************ gray bars **************************************/
+void graybars(int[] coff, int Nhc, int trow, int brow,
+ pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+ pen pdef, real xd, real yd, int Nv) {
+ int[] gs={0, 51, 102, 153, 204, 255};
+ int cmax=2, poff, rows, i;
+
+ rows=brow-trow;
+ poff=0;
+ for(i=0; i<=cmax; ++i) {
+ int off;
+ int ii=2*i, il=cmax-i, ir=i+cmax+1;
+ path zzl, zzr;
+
+ off=ceil((coff[1+ii]+coff[2+ii])/2);
+ if(i<cmax) {
+ zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
+ zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
+ } else {
+ int pcol;
+ pair zlt, zlb, zrt, zrb;
+
+ pcol=Nhc-poff;
+ zlt=tvps(pcol,trow, xd,yd,Nv);
+ zlb=tvps(pcol,brow, xd,yd,Nv);
+ zzl=zlt--arc(ccenter,rclt,rclb)--zlb--cycle;
+
+ pcol=Nhc+poff;
+ zrb=tvps(pcol,brow, xd,yd,Nv);
+ zrt=tvps(pcol,trow, xd,yd,Nv);
+ zzr=zrb--arc(ccenter,rcrb,rcrt)--zrt--cycle;
+ }
+ fill(zzl, p=pdef+gray(gs[il]/255));
+ fill(zzr, p=pdef+gray(gs[ir]/255));
+
+ poff=off;
+ }
+ return;
+}
+
+/************************ bottom bw **************************************/
+void bottombw(int off, int Nhc, int trow, int brow,
+ pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+ pen pdef, real xd, real yd, int Nv) {
+ int rows;
+ pair zt, zb;
+ path zz;
+
+ rows=brow-trow;
+ zz=tvrect(Nhc-off,trow, Nhc+off,brow, xd,yd,Nv);
+ fill(zz, p=pdef+gray(0.0));
+
+ zt=tvps(Nhc-off,trow, xd,yd,Nv);
+ zb=tvps(Nhc-off,brow, xd,yd,Nv);
+ fill(zt--arc(ccenter,rclt,rclb)--zb--cycle, p=pdef+gray(1.0));
+
+ zb=tvps(Nhc+off,brow, xd,yd,Nv);
+ zt=tvps(Nhc+off,trow, xd,yd,Nv);
+ fill(zb--arc(ccenter,rcrb,rcrt)--zt--cycle, p=pdef+gray(1.0));
+ return;
+}
+
+/************************ bottom circle **************************************/
+void bottomcirc(int off, int Nhc, int trow, real cx, real cy, real crad,
+ pair ccenter, pair rclt, pair rcrt,
+ pen pdef, real xd, real yd, int Nv) {
+ real cI=0.75;
+ real xl, yl, xr, yr, phil, phir;
+ pair ccleft, ccright;
+ pair[] z;
+
+ xl=Nhc-off-cx;
+ phil=acos(xl*xd/yd/crad);
+ yl=crad*sin(phil); // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
+ ccleft=tvps(cx+xl,cy+yl, xd,yd,Nv);
+ //write(xl,yl);
+
+ xr=Nhc+off-cx;
+ phir=acos(xr*xd/yd/crad);
+ yr=crad*sin(phir);
+ ccright=tvps(cx+xr,cy+yr, xd,yd,Nv);
+
+ //dot(ccright); dot(ccleft);
+ // red center
+ z[0]=tvps(Nhc-off,trow, xd,yd,Nv);
+ z[1]=ccleft;
+ z[2]=ccright;
+ z[3]=tvps(Nhc+off,trow, xd,yd,Nv);
+ fill(z[0]--arc(ccenter,z[1],z[2])--z[3]--cycle, p=pdef+rgb(cI,0,0));
+
+ // yellow
+ z[0]=tvps(Nhc-off,trow, xd,yd,Nv);
+ z[1]=rclt;
+ z[2]=ccleft;
+ fill(z[0]--arc(ccenter,z[1],z[2])--cycle, p=pdef+rgb(cI,cI,0));
+ z[0]=tvps(Nhc+off,trow, xd,yd,Nv);
+ z[1]=ccright;
+ z[2]=rcrt;
+ fill(z[0]--arc(ccenter,z[1],z[2])--cycle, p=pdef+rgb(cI,cI,0));
+
+ return;
+}
+
+/****************************** PAL ears ***********************************
+ * left y R G B
+ * 0.55 98 162 140
+ * 0.5 103 128 191
+ * 0.5 152 128 64
+ * 0.45 157 93 115
+ * right
+ * 0.6 153 168 76
+ * 0.4 102 87 179
+ *
+ * in: dright= -1 left ear, +1 right ear
+ */
+void palears(int[] coff, int[] coffa, int[] coffb, int Nhc,
+ int[] rcrowt, int[] rcrowb, int Nvc, int divsy, int dright,
+ pen pdef, real xd, real yd, int Nv) {
+ /* the amplitude of (u,v) as seen on a vectorscope,
+ * max 0.296 Vn for 100% saturation in W and V ears.
+ * cvbs: 0.7*( y +/- |u+jv| ) = -0.24 .. 0.93 V
+ * maxima: ebu 75/0 bars 0.70, bbc 100/25 0.88, 100/0 bars 0.93
+ * burst: 0.150 Vcvbs, 21.4 IRE or 0.214 V normalized.
+ * luma: modulated for monochrome compatibility, 1990 version.
+ * choice: set amplitude of subcarrier equal to amplitude of colorburst.
+ */
+ real cI=0.214;
+
+ /* (u,v) for zero G-y, phase of -34.5 degrees */
+ real wr=0.299, wb=0.114, wg=1-wr-wb; /* wg=0.587, y=wr*R+wg*G+wb*B */
+ real wu=0.493, wv=0.877; /* u=wu*(B-y) v=wv*(R-y) */
+ real colu=wu*wg/wb, colv=-wv*wg/wr; /* for w=(G-y)/0.696 == 0 */
+
+ /* ears: U==0 W==0 W==0 U==0 */
+ real[] cyl={ 0.55, 0.5, 0.5, 0.45 };
+ real[] cul={ 0, colu, -colu, 0 };
+ real[] cvl={ -1, colv, -colv, 1 };
+
+ /* ears: V==0 W==0 W==0 V==0 */
+ real[] cyr={ 0.60, 0.5, 0.5, 0.40 };
+ real[] cur={ -1, colu, -colu, 1 };
+ real[] cvr={ 0, colv, -colv, 0 };
+
+ real[] cy, cu, cv;
+ pair[] z;
+ path[] zz;
+ int lcol, ccol, cicol, rcol, i;
+
+ if(dright>0) {
+ cy=cyr; cu=cur; cv=cvr;
+ } else {
+ cy=cyl; cu=cul; cv=cvl;
+ }
+
+ lcol=Nhc+dright*coffa[5];
+ ccol=Nhc+dright*coff[6];
+ cicol=Nhc+dright*coffa[6];
+ rcol=Nhc+dright*coffb[7];
+
+ int urow, trow, crow, brow, arow;
+ urow=rcrowb[divsy-5];
+ trow=rcrowt[divsy-3];
+ crow=Nvc;
+ brow=rcrowb[divsy+4];
+ arow=rcrowt[divsy+6];
+
+ z[0]=tvps(ccol,urow, xd,yd,Nv);
+ z[1]=tvps(ccol,trow, xd,yd,Nv);
+ z[2]=tvps(cicol,trow, xd,yd,Nv);
+ z[3]=tvps(cicol,crow, xd,yd,Nv);
+ z[4]=tvps(rcol,crow, xd,yd,Nv);
+ z[5]=tvps(rcol,urow, xd,yd,Nv);
+ zz[0]=z[0]--z[1]--z[2]--z[3]--z[4]--z[5]--cycle;
+
+ zz[1]=tvrect(lcol,urow, ccol,trow, xd,yd,Nv);
+ zz[2]=tvrect(lcol,brow, ccol,arow, xd,yd,Nv);
+
+ z[0]=tvps(ccol,arow, xd,yd,Nv);
+ z[1]=tvps(ccol,brow, xd,yd,Nv);
+ z[2]=tvps(cicol,brow, xd,yd,Nv);
+ z[3]=tvps(cicol,crow, xd,yd,Nv);
+ z[4]=tvps(rcol,crow, xd,yd,Nv);
+ z[5]=tvps(rcol,arow, xd,yd,Nv);
+ zz[3]=z[0]--z[1]--z[2]--z[3]--z[4]--z[5]--cycle;
+
+ for(i=0; i<4; ++i) {
+ real y, u, v, A, ph, By, Ry, Gy, R, G, B;
+
+ y=cy[i];
+ u=cu[i];
+ v=cv[i];
+
+ A=hypot(u,v);
+ ph= (u!=0 || v!=0) ? atan2(v,u) : 0.0;
+ if(v>=0) {
+ if(ph<0) ph=ph+pi;
+ } else {
+ if(ph>0) ph=ph-pi;
+ }
+ if(A>0) {
+ u=u/A*cI;
+ v=v/A*cI;
+ }
+
+ By=u/wu;
+ Ry=v/wv;
+ Gy=(-wr*Ry-wb*By)/wg;
+ //write(y,Gy,A,ph*180/pi);
+
+ R=Ry+y;
+ G=Gy+y;
+ B=By+y;
+ if(verbose > 1)
+ write(y,round(R*255),round(G*255),round(B*255));
+
+ fill(zz[i], p=pdef+rgb(R,G,B));
+ }
+ return;
+}
+
+/****************************** NTSC bars ***********************************
+ * amplitude equals color burst smpte (pm: -V +U)
+ * y campl sat R G B
+ * left 0.5 0.21 70% -I?
+ * right 0.5 0.17 60% +Q?
+ */
+void ntscbars(int[] coff, int[] coffa, int[] coffb, int Nhc,
+ int[] rcrowt, int[] rcrowb, int Nvc, int divsy, int dright,
+ pen pdef, real xd, real yd, int Nv) {
+ /* The amplitude of (i,q) as seen on a vectorscope,
+ * max 0.292 Vn for 100% saturation in I==0 ears.
+ * burst: 0.143 Vcvbs, 20 IRE or 0.200 V normalized.
+ * pedestal: (yp,up,vp)=(p,0,0)+(1-p)*(y,u,v), p=0.075.
+ * choice: equal amplitude for colorburst and subcarrier.
+ */
+ real campl=0.200/0.925;
+
+ /* wg=0.587, y=wr*R+wg*G+wb*B */
+ real wr=0.299, wb=0.114, wg=1-wr-wb;
+ /* iT : iq -> RyBy : rotation+scaling */
+ real iT11=0.95, iT12=0.62, iT21=-1.11, iT22=1.71;
+
+ /* bars -2 -1 0 1 2 */
+ real[] cyl={ 0.50, 0.50, 0, 0.50, 0.50 };
+ real[] cil={ 0, 0, 0, -1, 1 };
+ real[] cql={ -1, 1, 0, 0, 0 };
+ int[] offil={ 6, 7, 5, 7, 6 };
+
+ real cy, ci, cq;
+ int dri, dris, offi, lcol, rcol, i;
+
+ if(dright>=0) {
+ dris=1;
+ } else {
+ dris=-1;
+ }
+ if(dright<-2 || dright>2) {
+ dri=2;
+ } else {
+ dri=2+dright;
+ }
+
+ cy=cyl[dri]; ci=cil[dri]; cq=cql[dri];
+ offi=offil[dri];
+ lcol=Nhc+dris*coffa[offi];
+ rcol=Nhc+dris*coffb[offi+1];
+
+ real A, By, Ry, Gy, R, G, B;
+
+ A=hypot(ci,cq);
+ if(A>0) {
+ ci=ci/A*campl;
+ cq=cq/A*campl;
+ }
+ Ry=iT11*ci+iT12*cq;
+ By=iT21*ci+iT22*cq;
+ Gy=(-wr*Ry-wb*By)/wg;
+ //write(cy,Ry,Gy,By);
+
+ R=Ry+cy;
+ G=Gy+cy;
+ B=By+cy;
+ if(verbose > 1)
+ write(cy,ci,cq,round(R*255),round(G*255),round(B*255));
+
+ for(i=-divsy; i<=divsy; ++i) {
+ path zz;
+ int brow, trow;
+
+ if(i>-divsy) {
+ trow=rcrowb[divsy+i];
+ } else {
+ trow=floor((rcrowb[divsy+i]+rcrowt[divsy+i+1])/2);
+ }
+
+ if(divsy>i) {
+ brow=rcrowt[divsy+i+1];
+ } else {
+ brow=floor((rcrowb[divsy+i]+rcrowt[divsy+i+1])/2);
+ }
+
+ zz=tvrect(lcol,brow, rcol,trow, xd,yd,Nv);
+ fill(zz, p=pdef+rgb(R,G,B));
+ }
+
+ return;
+}
+
+
+/****************************** main ***********************************/
+/* Conversion to bitmap:
+ * EPSPNG='gs -dQUIET -dNOPAUSE -dBATCH -sDEVICE=png16m'
+ * asy -u bsys=2 -u colortv=1 -u os=1 -a Z tvgen
+ * $EPSPNG -r132x144 -g720x576 -sOutputFile=tvgen.png tvgen.eps
+ *
+ * asy -u bsys=2 -u colortv=1 -u os=1 tvgen
+ */
+int bsys=2, colortv=1, os=1;
+
+/* bsys: broadcast system
+ * bsys im aspect Nh
+ * 0 4/3 704 guaranteed analog broadcast itu-r bt.470
+ * 1 4/3 720 new broadcast, most TV station logos and animations
+ * 2 15/11 720 total aperture analog 4/3, 1.37 film DVDs
+ * 3 20/11 720 total aperture analog 16/9, 1.85 film DVDs
+ * 4 4/3 768 bsys=0, square dot analog broadcast
+ * 5 4/3 768 bsys=1, square dot cable TV info channel
+ * 6 131/96 786 bsys=2, total square dot broadcast camera
+ * 7 16/9 720 new broadcast 16/9, SD from HD-1440 or itu-r bt.709
+ * 8 4/3 704 525 analog broadcast itu-r bt.470 711*485
+ * 9 4/3 720 525 new broadcast
+ * 10 15/11 720 525 total aperture analog broadcast
+ * 11 16/9 1920 1250, 1080 square dot at 12.5 frames/second
+ * 12 4/3 1600 1250, 1200 square dot at 12.5 frames/second
+ *
+ * colortv:
+ * set 0 for monochrome crosshatch, 1 for pal ears, 2 for ntsc bars
+ *
+ * os: horizontal oversampling, typical values for 13.5MHz:
+ * 2 4/3 704*576, 15/11 720*576
+ * 4 4/3 720*480
+ * 5 4/3 704*480, 15/11 720*480, 4/3 768*576 14.4MHz
+ * 8 4/3 720*576, 20/11 720*576
+ * 12 704->768 rerastering
+ * 16 720->768 rerastering
+ */
+access settings;
+usersetting();
+
+if(bsys<0 || bsys>12 || colortv<0 || colortv>3 || os<=0 || os>16) {
+ write('Error: bad user input: bsys, colortv, os=\t', bsys, colortv, os);
+ abort('Bad option -u bsys=N ?');
+}
+
+int[] bNdot=
+ { 12, 16, 12, 16, 1, 1, 1, 64, 10, 8, 10, 1, 1 };
+int[] bDdot=
+ { 11, 15, 11, 11, 1, 1, 1, 45, 11, 9, 11, 1, 1 };
+int[] bNh=
+ { 704, 720, 720, 720, 768, 768, 786, 720, 704, 720, 720, 1920, 1600 };
+int[] bNv=
+ { 576, 576, 576, 576, 576, 576, 576, 576, 480, 480, 480, 1080, 1200 };
+real[] bfs=
+ { 13.5,13.5,13.5,13.5, 14.75,14.4,14.75,13.5, 13.5,13.5,13.5, 36, 30 };
+int[] bNsy=
+ { 42, 42, 42, 42, 42, 42, 42, 42, 34, 34, 34, 78, 90 };
+int[] bNsh=
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+
+/* active lines for a 625 line frame
+ * The number of active video lines decreased around 1997.
+ * old: 3 run in + 575 visible + 3 run out = 581 lines
+ * new: 6 teletext and WSS + 575 visible
+ * Hence the image center shifted down by 3 lines. Thus
+ * old TV + new testcard = bottom is cut off,
+ * new TV + old testcard = top is cut off.
+ *
+ * To generate the old testcard either use Nv=582 Nsh=0 or Nv=576 Nsh=3.
+ *
+ * aspect ratio
+ * rimage=xsize/ysize rimage=rdot*Nh/Nv
+ * Nh=704 dots
+ * Nv=576 lines
+ * rd=ri*Nv/Nh=4/3*9/11=12/11
+ *
+ * Nv: 480=2^5*3*5 576=2^6*3^2
+ * Nh: 704=2^6*11 720=2^4*3^2*5
+ *
+ * horizontal line distance for pre 1997 test pattern
+ * top 8 lines, 13 squares of Ny=43 lines, bottom 9 lines
+ * top 12 lines, 13 squares of Ny=42 lines, bottom 18 lines
+ * pairs are from odd even field
+ * Interlace test: Ny must be odd for a cross-hatch without centerline.
+ *
+ * squares: ly=Nsy, lx=rd*Nsx, lx=ly ==> Nsx=Nsy/rd={ 39.4, 38.5 }
+ * x line width 230 ns -> 3 dots
+ * bottom 2.9us red -> 39.15 dots
+ *
+ * resolution DPI from image aspect ratio
+ * Rv=Nv/ly, ly=4in
+ * ri=Ni/Di, Ni={4,15,16} Di={3,11,9}
+ * lx=ri*ly
+ *
+ * Rh=Nh/lx=Di*(Nh/(Ni*ly))
+ * ==> ri=4/Di => Nh=k*16
+ * ri=15/Di => Nh=k*60
+ * ri=16/Di => Nh=k*64
+ *
+ * resolution DPI from dot aspect ratio, general algorithm,
+ *
+ * rd=Nd/Dd=ldx/ldy
+ *
+ * assume 1 dot = Nd x Dd square subdots at a resolution of k, in dpi, then
+ *
+ * ldx=Nd/k, ldy=Dd/k ==> Rh=k/Nd, Rv=k/Dd
+ *
+ * choosing k=m*Nd*Dd for integer Rh and Rv gives
+ *
+ * ldx=1/(m*Dd), ldy=1/(m*Nd), Rh=m*Dd, Rv=m*Nd
+ *
+ * and
+ *
+ * lx=Nh*ldx=Nh/(m*Dd), ly=Nv*ldy=Nv/(m*Nd)
+ *
+ * so choose m for the intended height Ly, in inch, as
+ *
+ * m=round(Nv/(Ly*Nd))
+ *
+ * which limits Ly<=Nv/Nd since Rv>=Nd.
+ */
+//cm=72/2.540005;
+real Ly, ly, lx, ysize, xsize, rimage, xd, yd, pwidth;
+int Nd, Dd, m, Nh, Nv, Nshift, Na, Nsy;
+real fs, Ttone;
+
+Nd=bNdot[bsys];
+Dd=bDdot[bsys]*os;
+Nh=bNh[bsys]*os;
+Nv=bNv[bsys];
+
+Ly=4; // 4 inch vertical size
+m=floor(0.5+Nv/(Ly*Nd));
+if(m<1) m=1;
+ly=Nv/(m*Nd);
+lx=Nh/(m*Dd);
+
+ysize=ly*1inch;
+xsize=lx*1inch;
+rimage=xsize/ysize;
+if(verbose > 1)
+ write('#Nd Dd m ri:\t', Nd, Dd, m, rimage);
+//size(xsize,ysize,Aspect); // should not have any effect
+
+Nsy=bNsy[bsys]; // grating size in lines 42,43, 34,35
+Nshift=bNsh[bsys]; // shift image up: pre 1997 =3, 2007 =0
+fs=1e6*bfs[bsys]*os;
+Na=0; // add 1,0,-1 to height of hor center squares for even Na+Nsy
+
+Ttone=fs/250e3; // period of ft=250 kHz, fs/ft=54
+real[] ftones={0.8e6/fs, 1.8e6/fs, 2.8e6/fs, 3.8e6/fs, 4.8e6/fs};
+
+xd=xsize/Nh;
+yd=ysize/Nv;
+pwidth=min(abs(xd),abs(yd));
+
+pen pdefault=squarecap+linewidth(pwidth);
+pen pblack=pdefault+gray(0.0);
+pen pwhite=pdefault+gray(1.0);
+
+/**** calculate grating repeats and size in tv dots ****/
+// horizontal lines
+int divsy, rdisty, Nvc, Nt, Nb;
+
+Nvc=floor(Nv/2)-Nshift;
+divsy=floor(((Nv-Na-2)/Nsy-1)/2); // (Nv-Na-2)/2-Nsy/2 dots for Nsy lengths
+rdisty=Na+Nsy*(1+2*divsy);
+Nt=Nvc-ceil(rdisty/2);
+Nb=Nv-Nt-rdisty;
+if(verbose > 1)
+ write('#divsy t b: \t',divsy,Nt,Nb);
+
+/* Nsyc: center square height
+ * line pairing test: verify distance of center to top and bot
+ * distance is odd ==> top=even/odd, cent=odd/even, bot=even/odd
+ *
+ * Nsyc odd: not possible
+ *
+ * Nsyc even:
+ * Nsyc/2 odd --> OK
+ * Nsyc/2 even --> stagger the raster one line upwards
+ *
+ * rcrowt top dist of hor line
+ * rcrowc true center for color info, distance to top of image.
+ * rcrowb bot dist of hor line
+ *
+ * Nt=Nvc-(offu+divsy*Nsy);
+ * Nb=Nv-( Nvc-(offd-divsy*Nsy) );
+ * ==> Nt+Nb=Nv-Nsyc-2*divsy*Nsy
+ */
+int Nsyc, offu, offd, Nyst=0, i;
+int[] rcrowt, rcrowc, rcrowb;
+
+Nsyc=Nsy+Na;
+offu=floor(Nsyc/2);
+offd=offu-Nsyc;
+if(Nsyc%2 != 0) {
+ Nyst=1;
+} else if(Nsyc%4 == 0) {
+ Nyst=1; /* stagger */
+}
+for(i=0; i<=divsy; ++i) {
+ int iu, id, ou, od, ru, rd;
+
+ iu=divsy-i;
+ id=divsy+i+1;
+
+ ou=offu+Nsy*i;
+ od=offd-Nsy*i;
+ if(verbose > 1)
+ write(ou,od);
+ rcrowc[iu]=Nvc-ou;
+ rcrowc[id]=Nvc-od;
+
+ ru=Nvc-(ou+Nyst);
+ rd=Nvc-(od+Nyst);
+
+ rcrowt[iu]=ru-1;
+ rcrowb[iu]=ru+1;
+
+ rcrowt[id]=rd-1;
+ rcrowb[id]=rd+1;
+}
+Nt=floor((rcrowt[0]+rcrowb[0])/2);
+Nb=Nv-Nt-Nsyc-2*Nsy*divsy;
+if(verbose > 1)
+ write('#st t b: \t',Nyst,Nt,Nb);
+
+/* vertical lines
+ * (Nh-2*os)/2-Nsx/2 dots available for divisions of Nsx dots.
+ * At least 5 dots margin left and right ==> use -10*os
+ */
+real lsq, Nsx;
+int divsx, Nhc, Nl;
+
+lsq=Nsy*yd;
+Nsx=lsq/xd;
+divsx=floor(((Nh-10*os)/Nsx-1)/2);
+Nhc=round(Nh/2);
+Nl=Nhc-round((1+2*divsx)*Nsx/2);
+if(verbose > 1)
+ write('#Nsx divsx Nl:\t',Nsx,divsx,Nl);
+
+/**** draw gray background ****/
+{
+ path zz;
+ //zz=tvrect(0,0, Nh,Nv, xd,yd,Nv);
+ /* keep white canvas for castellations */
+ zz=tvrect(Nl,Nt, Nh-Nl,Nv-Nb, xd,yd,Nv);
+ fill(zz, p=pdefault+gray(0.5));
+ //dot(zz);
+}
+/**** draw center circle ****/
+real cx, cy, crad;
+pair ccenter;
+path ccirc;
+cx=Nh/2;
+cy=Nv/2-Nshift;
+crad=6*Nsy;
+if(Nv%2 != 0) {
+ crad+=0.5;
+}
+ccenter=tvps(cx,cy, xd,yd,Nv);
+ccirc=circle(ccenter, crad*yd);
+if(colortv<=0) {
+ draw(ccirc, p=pwhite+linewidth(2*yd));
+}
+
+/****** draw 2*divsy+2 horizontal lines **********************************/
+real[] rcang, rcoff;
+pair[] rcright, rcleft;
+int i, iend=2*divsy+1;
+for(i=0; i<=iend; ++i) {
+ real y, phi, x;
+ path zzh;
+ pair zd;
+
+ zzh=tvrect(0,rcrowt[i], Nh,rcrowb[i], xd,yd,Nv);
+ fill(zzh, p=pwhite);
+
+ y=cy-rcrowc[i];
+ //write(roff);
+ if(abs(y)<crad) {
+ phi=asin(y/crad);
+ } else {
+ phi=pi/2;
+ }
+ rcang[i]=phi;
+ x=(crad*cos(phi))*yd/xd;
+ rcoff[i]=x;
+ zd=tvps(cx+x,cy-y, xd,yd,Nv);
+ rcright[i]=zd;
+ //dot(zd);
+ zd=tvps(cx-x,cy-y, xd,yd,Nv);
+ rcleft[i]=zd;
+}
+
+/****** draw 2*divsx+2 vertical lines ***************************/
+int[] coff, coffa, coffb;
+int poffa=0, ccenterwhite=divsx%2;
+for(i=0; i<=divsx; ++i) {
+ real cdist=(1+2*i)*Nsx;
+ int off, offa, offb;
+ path zzv;
+
+ off=round(cdist/2);
+ //write(cdist,off);
+ offa=off+os;
+ offb=off-os;
+
+ coff[i]=off;
+ coffa[i]=offa;
+ coffb[i]=offb;
+
+ //write(Nhc-offa);
+ zzv=tvrect(Nhc+offb,0, Nhc+offa,Nv, xd,yd,Nv);
+ fill(zzv, p=pwhite);
+ zzv=tvrect(Nhc-offa,0, Nhc-offb,Nv, xd,yd,Nv);
+ fill(zzv, p=pwhite);
+
+ /** top castellations, must end with black **/
+ if(i%2 == ccenterwhite) {
+ int j, jnum;
+
+ if(poffa == 0) {
+ poffa=-offb;
+ jnum=1;
+ } else {
+ jnum=2;
+ }
+
+ for(j=0; j<jnum; ++j) {
+ int lc, rc;
+ path zzc;
+
+ if(j==0) {
+ lc=Nhc+poffa;
+ rc=Nhc+offb;
+ } else {
+ lc=Nhc-offb;
+ rc=Nhc-poffa;
+ }
+
+ zzc=tvrect(lc,0, rc,Nt-1, xd,yd,Nv);
+ fill(zzc, p=pblack);
+ zzc=tvrect(lc,Nv-Nb+1, rc,Nv, xd,yd,Nv);
+ fill(zzc, p=pblack);
+ }
+ }
+
+ poffa=offa;
+}
+//write(coff);
+
+/** left and right castellations **/
+/* The bottom right red rectangle tests for a non causal color FIR
+ * filter in the receiver. The last 2..4 dots then typically appear
+ * colorless, green, or cyan.
+ *
+ * This comes from the fact that the chroma subcarrier is of lower
+ * bandwidth than luma and thus continues after the last active sample.
+ * These trailing (y,u,v) samples result from a signal to zero
+ * transition and depend on the transmit and receive filters. Samples
+ * from VHS, system B/G/D/K, system I, or a DVD player output are
+ * different. Nevertheless, a sharpening filter uses this data and so
+ * adds false color to the last dots.
+ */
+int lc, rc;
+iend=2*divsy+1;
+lc=Nhc-coffa[divsx];
+rc=Nhc+coffa[divsx];
+for(i=1; i<=iend; ++i) {
+ pen pcast;
+ if(i == iend && colortv>0) {
+ pcast=pdefault+rgb(0.75,0.0,0);
+ } else {
+ pcast=pblack;
+ }
+ if(i%2 == 1) {
+ int tr, br;
+ path zzc;
+
+ tr=rcrowb[i-1];
+ br=rcrowt[i];
+ zzc=tvrect( 0,tr, lc,br, xd,yd,Nv);
+ fill(zzc, p=pblack);
+ zzc=tvrect(rc,tr, Nh,br, xd,yd,Nv);
+ fill(zzc, p=pcast);
+ }
+}
+
+/****** markers for 4/3 aspect ratio ******/
+if(rimage>4/3)
+ rimarkers(rimage, Nh, Nhc, os, Nvc, Nsy, pwhite, xd, yd, Nv);
+
+/****** line pairing center ******/
+centerline(coff, coffa, coffb, Nhc, divsx, os, rcrowc, Nvc, divsy,
+ ccenter, rcoff, rcright, rcleft, pdefault, xd, yd, Nv);
+
+if(colortv>0) {
+ /* topbw structure */
+ topbw(coff, Nhc, os, rcrowc[divsy-5], rcrowc[divsy-4], rcrowc[divsy-3],
+ ccenter, rcleft[divsy-4], rcleft[divsy-3], rcright[divsy-4],
+ rcright[divsy-3], pdefault, xd, yd, Nv);
+
+ /* 250 kHz */
+ testtone(Ttone, rcrowc[divsy-3], rcrowc[divsy-2],
+ cx, cy, crad, pdefault, xd, yd, Nv);
+
+ /* color bars */
+ colorbars(coff, Nhc, rcrowc[divsy-2], rcrowc[divsy-1], rcrowc[divsy],
+ ccenter, rcleft[divsy-2], rcleft[divsy], rcright[divsy-2],
+ rcright[divsy], pdefault, xd, yd, Nv);
+
+ /* test frequencies */
+ testfreqs(ftones, coff, Nhc, rcrowc[divsy+1], rcrowc[divsy+2],
+ rcrowc[divsy+3], ccenter, rcleft[divsy+1], rcleft[divsy+3],
+ rcright[divsy+1],rcright[divsy+3], pdefault, xd, yd, Nv);
+
+ /* gray bars */
+ graybars(coff, Nhc, rcrowc[divsy+3], rcrowc[divsy+4], ccenter,
+ rcleft[divsy+3], rcleft[divsy+4],
+ rcright[divsy+3], rcright[divsy+4], pdefault, xd,yd,Nv);
+
+ /* PAL ears */
+ if(colortv==1) {
+ palears(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
+ pdefault, xd, yd, Nv);
+ palears(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
+ pdefault, xd, yd, Nv);
+ } else if(colortv==2) {
+ ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
+ pdefault, xd, yd, Nv);
+ ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
+ pdefault, xd, yd, Nv);
+ ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -2,
+ pdefault, xd, yd, Nv);
+ ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 2,
+ pdefault, xd, yd, Nv);
+ }
+
+ /* bottom wh - black - wh */
+ bottombw(round((coff[2]+coff[3])/2), Nhc, rcrowc[divsy+4], rcrowc[divsy+5],
+ ccenter, rcleft[divsy+4], rcleft[divsy+5],
+ rcright[divsy+4], rcright[divsy+5], pdefault, xd, yd, Nv);
+
+ /* bottom yellow red circle */
+ bottomcirc(coff[0], Nhc, rcrowc[divsy+5], cx, cy, crad,
+ ccenter, rcleft[divsy+5], rcright[divsy+5], pdefault, xd, yd, Nv);
+}
+
+/********************** set id *********************/
+{ /* dpi */
+ pair rpos=tvps(Nhc,round((rcrowc[divsy-4]+rcrowc[divsy-5])/2), xd,yd,Nv);
+ string iRhor, iRver, ires;
+ real Rh, Rv;
+
+ Rh=Nh/xsize*inch;
+ Rv=Nv/ysize*inch;
+ iRhor=format("%.4gx", Rh);
+ iRver=format("%.4gdpi", Rv);
+ ires=insert(iRver,0, iRhor);
+
+ /* size info */
+ int rowbot=round((rcrowc[divsy+4]+rcrowc[divsy+5])/2);
+ pair tpos=tvps(Nhc,rowbot, xd,yd,Nv);
+ string ihor, iver, itot, iasp, ifm;
+ real asp, fm;
+
+ ihor=format("%ix",Nh);
+ iver=format("%i ",Nv);
+ itot=insert(iver,0, ihor);
+ asp=xsize/ysize;
+ iasp=format("%.3g ",asp);
+ fm=fs/1e6;
+ ifm=format("%.4gMHz",fm);
+ itot=insert(iasp,0, itot);
+ itot=insert(ifm,0, itot);
+
+ /* size of square */
+ int rowNsy=round((rcrowc[divsy+5]+rcrowc[divsy+6])/2);
+ pair Npos=tvps(Nhc+round((coff[4]+coff[5])/2),rowNsy, xd,yd,Nv);
+ string iNsy=format("%i",Nsy);
+
+ pen pbw;
+ if(colortv>0) {
+ pbw=pdefault+gray(1.0);
+ } else {
+ pbw=pdefault+gray(0.0);
+ }
+ label(ires, rpos, p=pbw);
+ label(itot, tpos, p=pbw);
+ label(iNsy, Npos, p=pbw);
+ if(verbose > 1)
+ write('#res:\t', ires, itot, iNsy);
+}
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy b/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy
new file mode 100644
index 00000000000..9121ad6444d
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy
@@ -0,0 +1,30 @@
+import graph3;
+import palette;
+
+size(300,300,keepAspect=true);
+
+real w=0.4;
+
+real f(triple t) {return sin(t.x);}
+triple f1(pair t) {return (cos(t.x)-2cos(w*t.y),sin(t.x)-2sin(w*t.y),t.y);}
+triple f2(pair t) {return (cos(t.x)+2cos(w*t.y),sin(t.x)+2sin(w*t.y),t.y);}
+triple f3(pair t) {return (cos(t.x)+2sin(w*t.y),sin(t.x)-2cos(w*t.y),t.y);}
+triple f4(pair t) {return (cos(t.x)-2sin(w*t.y),sin(t.x)+2cos(w*t.y),t.y);}
+
+surface s1=surface(f1,(0,0),(2pi,10),8,8,Spline);
+surface s2=surface(f2,(0,0),(2pi,10),8,8,Spline);
+surface s3=surface(f3,(0,0),(2pi,10),8,8,Spline);
+surface s4=surface(f4,(0,0),(2pi,10),8,8,Spline);
+
+pen[] Rainbow=Rainbow();
+s1.colors(palette(s1.map(f),Rainbow));
+s2.colors(palette(s2.map(f),Rainbow));
+s3.colors(palette(s3.map(f),Rainbow));
+s4.colors(palette(s4.map(f),Rainbow));
+
+defaultrender.merge=true;
+
+draw(s1);
+draw(s2);
+draw(s3);
+draw(s4);
diff --git a/Master/texmf-dist/doc/asymptote/examples/unitcircle.asy b/Master/texmf-dist/doc/asymptote/examples/unitcircle.asy
new file mode 100644
index 00000000000..582f5f3c1ff
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/unitcircle.asy
@@ -0,0 +1,14 @@
+size(0,150);
+
+pair z0=0;
+pair z1=1;
+real theta=30;
+pair z=dir(theta);
+
+draw(circle(z0,1));
+filldraw(z0--arc(z0,1,0,theta)--cycle,lightgrey);
+dot(z0);
+dot(Label,z1);
+dot("$(x,y)=(\cos\theta,\sin\theta)$",z);
+arrow("area $\frac{\theta}{2}$",dir(0.5*theta),2E);
+draw("$\theta$",arc(z0,0.7,0,theta),LeftSide,Arrow,PenMargin);
diff --git a/Master/texmf-dist/doc/asymptote/examples/unitcircle3.asy b/Master/texmf-dist/doc/asymptote/examples/unitcircle3.asy
new file mode 100644
index 00000000000..be282011dca
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/unitcircle3.asy
@@ -0,0 +1,9 @@
+import three;
+
+size(100);
+
+path3 g=(1,0,0)..(0,1,0)..(-1,0,0)..(0,-1,0)..cycle;
+draw(g);
+draw(O--Z,red+dashed,Arrow3);
+draw(((-1,-1,0)--(1,-1,0)--(1,1,0)--(-1,1,0)--cycle));
+dot(g,red);
diff --git a/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy b/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy
new file mode 100644
index 00000000000..89f851f6a23
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy
@@ -0,0 +1,35 @@
+import graph3;
+
+currentprojection=orthographic(5,4,2);
+
+size(0,150);
+patch s=octant1;
+draw(surface(s),green+opacity(0.5));
+draw(s.external(),blue);
+
+triple[][] P=s.P;
+
+for(int i=0; i < 4; ++i)
+ dot(P[i],red);
+
+axes3("$x$","$y$",Label("$z$",align=Z));
+triple P00=P[0][0];
+triple P10=P[1][0];
+triple P01=P[0][1];
+triple P02=P[0][2];
+triple P11=P[1][1];
+triple P12=P[1][2];
+triple Q11=XYplane(xypart(P11));
+triple Q12=XYplane(xypart(P12));
+
+draw(P11--Q11,dashed);
+draw(P12--Q12,dashed);
+draw(O--Q12--Q11--(Q11.x,0,0));
+draw(Q12--(Q12.x,0,0));
+
+label("$(1,0,0)$",P00,-2Y);
+label("$(1,a,0)$",P10,-Z);
+label("$(1,0,a)$",P01,-2Y);
+label("$(a,0,1)$",P02,Z+X-Y);
+label("$(1,a,a)$",P11,3X);
+label("$(a,a^2,1)$",P12,7X+Y);
diff --git a/Master/texmf-dist/doc/asymptote/examples/upint.asy b/Master/texmf-dist/doc/asymptote/examples/upint.asy
new file mode 100644
index 00000000000..b488358ec6a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/upint.asy
@@ -0,0 +1,13 @@
+import graph;
+import lowupint;
+
+size(100,0);
+
+real a=-0.8, b=1.2;
+real c=-1.0/sqrt(3.0);
+
+partition(a,b,c,max);
+
+arrow("$f(x)$",F(0.5*(a+b)),NNE,red);
+label("$\cal{U}$",(0.5*(a+b),f(0.5*(a+b))/2));
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/vectorfield.asy b/Master/texmf-dist/doc/asymptote/examples/vectorfield.asy
new file mode 100644
index 00000000000..12de66e49c5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/vectorfield.asy
@@ -0,0 +1,9 @@
+import graph;
+size(100);
+
+pair a=(0,0);
+pair b=(2pi,2pi);
+
+path vector(pair z) {return (0,0)--(sin(z.x),cos(z.y));}
+
+add(vectorfield(vector,a,b));
diff --git a/Master/texmf-dist/doc/asymptote/examples/vectorfield3.asy b/Master/texmf-dist/doc/asymptote/examples/vectorfield3.asy
new file mode 100644
index 00000000000..a7bdbdb36c9
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/vectorfield3.asy
@@ -0,0 +1,26 @@
+import graph3;
+
+size(12cm,0);
+
+currentprojection=orthographic(1,-2,1);
+currentlight=(1,-1,0.5);
+
+real f(pair z) {return abs(z)^2;}
+
+path3 gradient(pair z) {
+ static real dx=sqrtEpsilon, dy=dx;
+ return O--((f(z+dx)-f(z-dx))/2dx,(f(z+I*dy)-f(z-I*dy))/2dy,0);
+}
+
+pair a=(-1,-1);
+pair b=(1,1);
+
+triple F(pair z) {return (z.x,z.y,0);}
+
+add(vectorfield(gradient,F,a,b,red));
+
+draw(surface(f,a,b,Spline),gray+opacity(0.5));
+
+xaxis3(XY()*"$x$",OutTicks(XY()*Label));
+yaxis3(XY()*"$y$",InTicks(YX()*Label));
+zaxis3("$z$",OutTicks);
diff --git a/Master/texmf-dist/doc/asymptote/examples/vectorfieldsphere.asy b/Master/texmf-dist/doc/asymptote/examples/vectorfieldsphere.asy
new file mode 100644
index 00000000000..7f1e49057a5
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/vectorfieldsphere.asy
@@ -0,0 +1,17 @@
+import graph3;
+
+size(12cm);
+
+currentprojection=orthographic(1,-2,1);
+currentlight=(1,-1,0.5);
+
+triple f(pair z) {return expi(z.x,z.y);}
+
+path3 vector(pair z) {
+ triple v=f(z);
+ return O--(v.y,v.z,v.x);
+}
+
+add(vectorfield(vector,f,(0,0),(pi,2pi),10,0.25,red,render(merge=true)));
+
+draw(unitsphere,gray+opacity(0.5),render(compression=0,merge=true));
diff --git a/Master/texmf-dist/doc/asymptote/examples/venn.asy b/Master/texmf-dist/doc/asymptote/examples/venn.asy
new file mode 100644
index 00000000000..f56440ba0a4
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/venn.asy
@@ -0,0 +1,37 @@
+size(0,150);
+
+pen colour1=red;
+pen colour2=green;
+
+pair z0=(0,0);
+pair z1=(-1,0);
+pair z2=(1,0);
+real r=1.5;
+path c1=circle(z1,r);
+path c2=circle(z2,r);
+fill(c1,colour1);
+fill(c2,colour2);
+
+picture intersection;
+fill(intersection,c1,colour1+colour2);
+clip(intersection,c2);
+
+add(intersection);
+
+draw(c1);
+draw(c2);
+
+label("$A$",z1);
+label("$B$",z2);
+
+pair z=(0,-2);
+real m=3;
+margin BigMargin=Margin(0,m*dot(unit(z1-z),unit(z0-z)));
+
+draw(Label("$A\cap B$",0),conj(z)--z0,Arrow,BigMargin);
+draw(Label("$A\cup B$",0),z--z0,Arrow,BigMargin);
+draw(z--z1,Arrow,Margin(0,m));
+draw(z--z2,Arrow,Margin(0,m));
+
+shipout(bbox(0.25cm));
+currentpicture.uptodate=true;
diff --git a/Master/texmf-dist/doc/asymptote/examples/venn3.asy b/Master/texmf-dist/doc/asymptote/examples/venn3.asy
new file mode 100644
index 00000000000..6118fab6e9a
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/venn3.asy
@@ -0,0 +1,50 @@
+size(0,150);
+
+pen colour1=red;
+pen colour2=green;
+pen colour3=blue;
+
+real r=sqrt(3);
+
+pair z0=(0,0);
+pair z1=(-1,0);
+pair z2=(1,0);
+pair z3=(0,r);
+
+path c1=circle(z1,r);
+path c2=circle(z2,r);
+path c3=circle(z3,r);
+
+fill(c1,colour1);
+fill(c2,colour2);
+fill(c3,colour3);
+
+picture intersection12;
+fill(intersection12,c1,colour1+colour2);
+clip(intersection12,c2);
+
+picture intersection13;
+fill(intersection13,c1,colour1+colour3);
+clip(intersection13,c3);
+
+picture intersection23;
+fill(intersection23,c2,colour2+colour3);
+clip(intersection23,c3);
+
+picture intersection123;
+fill(intersection123,c1,colour1+colour2+colour3);
+clip(intersection123,c2);
+clip(intersection123,c3);
+
+add(intersection12);
+add(intersection13);
+add(intersection23);
+add(intersection123);
+
+draw(c1);
+draw(c2);
+draw(c3);
+
+label("$A$",z1);
+label("$B$",z2);
+label("$C$",z3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy b/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy
new file mode 100644
index 00000000000..ea97b98daf3
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy
@@ -0,0 +1,9 @@
+import three;
+
+size(200);
+
+currentprojection=perspective(4,5,5);
+
+draw(surface(unitcircle3,new pen[] {red,green,blue,white}));
+draw(surface(shift(Z)*unitsquare3,
+ new pen[] {red,green+opacity(0.5),blue,black}));
diff --git a/Master/texmf-dist/doc/asymptote/examples/washer.asy b/Master/texmf-dist/doc/asymptote/examples/washer.asy
new file mode 100644
index 00000000000..457ae69fb83
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/washer.asy
@@ -0,0 +1,14 @@
+import three;
+size(10cm);
+
+path3[] p=reverse(unitcircle3)^^scale3(0.5)*unitcircle3;
+path[] g=reverse(unitcircle)^^scale(0.5)*unitcircle;
+triple H=-0.4Z;
+
+render render=render(merge=true);
+draw(surface(p,planar=true),render);
+draw(surface(shift(H)*p,planar=true),render);
+material m=material(lightgray,shininess=1.0);
+for(path pp : g)
+ draw(extrude(pp,H),m);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/washermethod.asy b/Master/texmf-dist/doc/asymptote/examples/washermethod.asy
new file mode 100644
index 00000000000..d86bf8cd4df
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/washermethod.asy
@@ -0,0 +1,43 @@
+import graph3;
+import solids;
+size(0,150);
+currentprojection=perspective(0,0,11,up=Y);
+
+pen color1=green+opacity(0.25);
+pen color2=red;
+real alpha=250;
+
+real f(real x) {return 2x^2-x^3;}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+
+ngraph=12;
+
+real x1=0.7476;
+real x2=1.7787;
+real x3=1.8043;
+
+path[] p={graph(F,x1,x2,Spline),
+ graph(F,0.7,x1,Spline)--graph(F,x2,x3,Spline),
+ graph(F,0,0.7,Spline)--graph(F,x3,2,Spline)};
+
+pen[] pn=new pen[] {color1,color2,color1};
+
+render render=render(compression=0);
+
+for(int i=0; i < p.length; ++i) {
+ revolution a=revolution(path3(p[i]),Y,0,alpha);
+ draw(surface(a),pn[i],render);
+
+ surface s=surface(p[i]--cycle);
+ draw(s,pn[i],render);
+ draw(rotate(alpha,Y)*s,pn[i],render);
+}
+
+draw((4/3,0,0)--F3(4/3),dashed);
+xtick("$\frac{4}{3}$",(4/3,0,0));
+
+xaxis3(Label("$x$",1),Arrow3);
+yaxis3(Label("$y$",1),ymax=1.25,dashed,Arrow3);
+arrow("$y=2x^2-x^3$",F3(1.6),X+Y,0.75cm,red);
+draw(arc(1.1Y,0.3,90,0,7.5,180),Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/wedge.asy b/Master/texmf-dist/doc/asymptote/examples/wedge.asy
new file mode 100644
index 00000000000..41b4326cf42
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/wedge.asy
@@ -0,0 +1,23 @@
+import graph3;
+import solids;
+size(0,150);
+currentprojection=perspective(8,10,2);
+currentlight=White;
+
+draw(circle(O,4,Z));
+draw(shift(-4Z)*scale(4,4,8)*unitcylinder,green+opacity(0.2));
+
+triple F(real x){return (x,sqrt(16-x^2),sqrt((16-x^2)/3));}
+path3 p=graph(F,0,4,operator ..);
+path3 q=reverse(p)--rotate(180,(0,4,4/sqrt(3)))*p--cycle;
+
+render render=render(merge=true);
+draw(surface(q--cycle),red,render);
+
+real t=2;
+path3 triangle=(t,0,0)--(t,sqrt(16-t^2),0)--F(t)--cycle;
+draw(surface(triangle),blue,render);
+
+xaxis3("$x$",Arrow3,PenMargin3(0,0.25));
+yaxis3("$y$",Arrow3,PenMargin3(0,0.25));
+zaxis3("$z$",dashed,Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/westnile.asy b/Master/texmf-dist/doc/asymptote/examples/westnile.asy
new file mode 100644
index 00000000000..7f63047983f
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/westnile.asy
@@ -0,0 +1,64 @@
+import graph;
+
+size(9cm,8cm,IgnoreAspect);
+string data="westnile.csv";
+
+file in=input(data).line().csv();
+
+string[] columnlabel=in;
+
+real[][] A=in.dimension(0,0);
+A=transpose(A);
+real[] number=A[0], survival=A[1];
+
+path g=graph(number,survival);
+draw(g);
+
+scale(true);
+
+xaxis("Initial no.\ of mosquitoes per bird ($S_{M_0}/N_{B_0}$)",
+ Bottom,LeftTicks);
+xaxis(Top);
+yaxis("Susceptible bird survival",Left,RightTicks(trailingzero));
+yaxis(Right);
+
+real a=number[0];
+real b=number[number.length-1];
+
+real S1=0.475;
+path h1=(a,S1)--(b,S1);
+real M1=interp(a,b,intersect(h1,g)[0]);
+
+real S2=0.9;
+path h2=(a,S2)--(b,S2);
+real M2=interp(a,b,intersect(h2,g)[0]);
+
+labelx("$M_1$",M1);
+labelx("$M_2$",M2);
+
+draw((a,S2)--(M2,S2)--(M2,0),Dotted);
+draw((a,S1)--(M1,S1)--(M1,0),dashed);
+
+pen p=fontsize(10pt);
+
+real y3=0.043;
+path reduction=(M1,y3)--(M2,y3);
+draw(reduction,Arrow,TrueMargin(0,0.5*(linewidth(Dotted)+linewidth())));
+
+arrow(shift(-20,5)*Label(minipage("\flushleft{\begin{itemize}\item[1.]
+Estimate proportion of birds surviving at end of season\end{itemize}}",100),
+ align=NNE),
+ (M1,S1),NNE,1cm,p,Arrow(NoFill));
+
+arrow(shift(-24,5)*Label(minipage("\flushleft{\begin{itemize}\item[2.]
+Read off initial mosquito abundance\end{itemize}}",80),align=NNE),
+ (M1,0),NE,2cm,p,Arrow(NoFill));
+
+arrow(shift(20,0)*Label(minipage("\flushleft{\begin{itemize}\item[3.]
+Determine desired bird survival for next season\end{itemize}}",90),align=SW),
+ (M2,S2),SW,arrowlength,p,Arrow(NoFill));
+
+arrow(shift(8,-15)*Label(minipage("\flushleft{\begin{itemize}\item[4.]
+Calculate required proportional reduction in mosquitoes\end{itemize}}",90),
+ align=NW),
+ point(reduction,0.5),NW,1.5cm,p,Arrow(NoFill));
diff --git a/Master/texmf-dist/doc/asymptote/examples/westnile.csv b/Master/texmf-dist/doc/asymptote/examples/westnile.csv
new file mode 100644
index 00000000000..cfc8493ed22
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/westnile.csv
@@ -0,0 +1,402 @@
+sm0,0.001(T14)
+0.0,0.9973
+0.1,0.9973
+0.2,0.9972
+0.3,0.9972
+0.4,0.9971
+0.5,0.9971
+0.6,0.9970
+0.7,0.9970
+0.8,0.9969
+0.9,0.9968
+1.0,0.9968
+1.1,0.9967
+1.2,0.9966
+1.3,0.9966
+1.4,0.9965
+1.5,0.9964
+1.6,0.9963
+1.7,0.9963
+1.8,0.9962
+1.9,0.9961
+2.0,0.9960
+2.1,0.9959
+2.2,0.9958
+2.3,0.9957
+2.4,0.9957
+2.5,0.9956
+2.6,0.9955
+2.7,0.9954
+2.8,0.9952
+2.9,0.9951
+3.0,0.9950
+3.1,0.9949
+3.2,0.9948
+3.3,0.9947
+3.4,0.9945
+3.5,0.9944
+3.6,0.9943
+3.7,0.9941
+3.8,0.9940
+3.9,0.9939
+4.0,0.9937
+4.1,0.9936
+4.2,0.9934
+4.3,0.9932
+4.4,0.9931
+4.5,0.9929
+4.6,0.9927
+4.7,0.9926
+4.8,0.9924
+4.9,0.9922
+5.0,0.9920
+5.1,0.9918
+5.2,0.9916
+5.3,0.9914
+5.4,0.9912
+5.5,0.9909
+5.6,0.9907
+5.7,0.9905
+5.8,0.9902
+5.9,0.9900
+6.0,0.9897
+6.1,0.9895
+6.2,0.9892
+6.3,0.9889
+6.4,0.9887
+6.5,0.9884
+6.6,0.9881
+6.7,0.9878
+6.8,0.9875
+6.9,0.9872
+7.0,0.9868
+7.1,0.9865
+7.2,0.9861
+7.3,0.9858
+7.4,0.9854
+7.5,0.9851
+7.6,0.9847
+7.7,0.9843
+7.8,0.9839
+7.9,0.9835
+8.0,0.9831
+8.1,0.9826
+8.2,0.9822
+8.3,0.9818
+8.4,0.9813
+8.5,0.9808
+8.6,0.9803
+8.7,0.9798
+8.8,0.9793
+8.9,0.9788
+9.0,0.9783
+9.1,0.9777
+9.2,0.9772
+9.3,0.9766
+9.4,0.9760
+9.5,0.9754
+9.6,0.9748
+9.7,0.9742
+9.8,0.9735
+9.9,0.9729
+10.0,0.9722
+10.1,0.9715
+10.2,0.9708
+10.3,0.9701
+10.4,0.9694
+10.5,0.9686
+10.6,0.9679
+10.7,0.9671
+10.8,0.9663
+10.9,0.9654
+11.0,0.9646
+11.1,0.9637
+11.2,0.9629
+11.3,0.9620
+11.4,0.9611
+11.5,0.9601
+11.6,0.9592
+11.7,0.9582
+11.8,0.9572
+11.9,0.9562
+12.0,0.9551
+12.1,0.9541
+12.2,0.9530
+12.3,0.9519
+12.4,0.9507
+12.5,0.9496
+12.6,0.9484
+12.7,0.9472
+12.8,0.9460
+12.9,0.9447
+13.0,0.9434
+13.1,0.9421
+13.2,0.9408
+13.3,0.9394
+13.4,0.9380
+13.5,0.9366
+13.6,0.9352
+13.7,0.9337
+13.8,0.9322
+13.9,0.9307
+14.0,0.9291
+14.1,0.9275
+14.2,0.9259
+14.3,0.9243
+14.4,0.9226
+14.5,0.9209
+14.6,0.9191
+14.7,0.9174
+14.8,0.9156
+14.9,0.9137
+15.0,0.9118
+15.1,0.9099
+15.2,0.9080
+15.3,0.9060
+15.4,0.9041
+15.5,0.9020
+15.6,0.8999
+15.7,0.8978
+15.8,0.8956
+15.9,0.8934
+16.0,0.8912
+16.1,0.8889
+16.2,0.8866
+16.3,0.8843
+16.4,0.8819
+16.5,0.8795
+16.6,0.8770
+16.7,0.8745
+16.8,0.8720
+16.9,0.8694
+17.0,0.8668
+17.1,0.8641
+17.2,0.8614
+17.3,0.8587
+17.4,0.8559
+17.5,0.8531
+17.6,0.8502
+17.7,0.8473
+17.8,0.8444
+17.9,0.8414
+18.0,0.8383
+18.1,0.8353
+18.2,0.8323
+18.3,0.8291
+18.4,0.8259
+18.5,0.8227
+18.6,0.8194
+18.7,0.8160
+18.8,0.8127
+18.9,0.8092
+19.0,0.8058
+19.1,0.8022
+19.2,0.7987
+19.3,0.7951
+19.4,0.7914
+19.5,0.7878
+19.6,0.7840
+19.7,0.7803
+19.8,0.7764
+19.9,0.7726
+20.0,0.7687
+20.1,0.7647
+20.2,0.7607
+20.3,0.7567
+20.4,0.7526
+20.5,0.7485
+20.6,0.7443
+20.7,0.7401
+20.8,0.7359
+20.9,0.7316
+21.0,0.7272
+21.1,0.7229
+21.2,0.7185
+21.3,0.7140
+21.4,0.7096
+21.5,0.7050
+21.6,0.7005
+21.7,0.6959
+21.8,0.6912
+21.9,0.6866
+22.0,0.6819
+22.1,0.6771
+22.2,0.6723
+22.3,0.6675
+22.4,0.6627
+22.5,0.6578
+22.6,0.6530
+22.7,0.6480
+22.8,0.6430
+22.9,0.6380
+23.0,0.6330
+23.1,0.6280
+23.2,0.6229
+23.3,0.6178
+23.4,0.6126
+23.5,0.6075
+23.6,0.6023
+23.7,0.5971
+23.8,0.5918
+23.9,0.5866
+24.0,0.5813
+24.1,0.5760
+24.2,0.5706
+24.3,0.5653
+24.4,0.5600
+24.5,0.5547
+24.6,0.5493
+24.7,0.5440
+24.8,0.5385
+24.9,0.5332
+25.0,0.5278
+25.1,0.5224
+25.2,0.5170
+25.3,0.5115
+25.4,0.5061
+25.5,0.5007
+25.6,0.4952
+25.7,0.4898
+25.8,0.4844
+25.9,0.4789
+26.0,0.4735
+26.1,0.4681
+26.2,0.4627
+26.3,0.4572
+26.4,0.4518
+26.5,0.4464
+26.6,0.4410
+26.7,0.4356
+26.8,0.4303
+26.9,0.4249
+27.0,0.4194
+27.1,0.4143
+27.2,0.4089
+27.3,0.4036
+27.4,0.3983
+27.5,0.3931
+27.6,0.3878
+27.7,0.3826
+27.8,0.3774
+27.9,0.3724
+28.0,0.3672
+28.1,0.3621
+28.2,0.3571
+28.3,0.3520
+28.4,0.3470
+28.5,0.3420
+28.6,0.3370
+28.7,0.3320
+28.8,0.3271
+28.9,0.3223
+29.0,0.3174
+29.1,0.3126
+29.2,0.3078
+29.3,0.3031
+29.4,0.2983
+29.5,0.2936
+29.6,0.2890
+29.7,0.2845
+29.8,0.2801
+29.9,0.2756
+30.0,0.2711
+30.1,0.2667
+30.2,0.2623
+30.3,0.2580
+30.4,0.2537
+30.5,0.2495
+30.6,0.2453
+30.7,0.2411
+30.8,0.2370
+30.9,0.2329
+31.0,0.2289
+31.1,0.2250
+31.2,0.2210
+31.3,0.2171
+31.4,0.2133
+31.5,0.2095
+31.6,0.2057
+31.7,0.2019
+31.8,0.1983
+31.9,0.1947
+32.0,0.1912
+32.1,0.1876
+32.2,0.1842
+32.3,0.1807
+32.4,0.1773
+32.5,0.1740
+32.6,0.1707
+32.7,0.1674
+32.8,0.1642
+32.9,0.1611
+33.0,0.1580
+33.1,0.1549
+33.2,0.1520
+33.3,0.1490
+33.4,0.1461
+33.5,0.1432
+33.6,0.1404
+33.7,0.1376
+33.8,0.1348
+33.9,0.1321
+34.0,0.1294
+34.1,0.1268
+34.2,0.1242
+34.3,0.1217
+34.4,0.1193
+34.5,0.1168
+34.6,0.1144
+34.7,0.1120
+34.8,0.1097
+34.9,0.1074
+35.0,0.1052
+35.1,0.1029
+35.2,0.1008
+35.3,0.0987
+35.4,0.0966
+35.5,0.0946
+35.6,0.0925
+35.7,0.0905
+35.8,0.0886
+35.9,0.0867
+36.0,0.0848
+36.1,0.0830
+36.2,0.0812
+36.3,0.0794
+36.4,0.0777
+36.5,0.0760
+36.6,0.0743
+36.7,0.0727
+36.8,0.0711
+36.9,0.0696
+37.0,0.0680
+37.1,0.0665
+37.2,0.0651
+37.3,0.0636
+37.4,0.0622
+37.5,0.0608
+37.6,0.0595
+37.7,0.0581
+37.8,0.0568
+37.9,0.0555
+38.0,0.0543
+38.1,0.0531
+38.2,0.0519
+38.3,0.0507
+38.4,0.0495
+38.5,0.0484
+38.6,0.0473
+38.7,0.0462
+38.8,0.0452
+38.9,0.0441
+39.0,0.0431
+39.1,0.0421
+39.2,0.0412
+39.3,0.0402
+39.4,0.0393
+39.5,0.0384
+39.6,0.0375
+39.7,0.0366
+39.8,0.0358
+39.9,0.0350
+40.0,0.0342
diff --git a/Master/texmf-dist/doc/asymptote/examples/workcone.asy b/Master/texmf-dist/doc/asymptote/examples/workcone.asy
new file mode 100644
index 00000000000..5d102d86214
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/workcone.asy
@@ -0,0 +1,42 @@
+import solids;
+size(0,150);
+currentprojection=orthographic(0,-30,5);
+
+real r=4;
+real h=10;
+real s=8;
+real x=r*s/h;
+
+real sr=5;
+real xr=r*sr/h;
+
+real s1=sr-0.1;
+real x1=r*s1/h;
+
+real s2=sr+0.2;
+real x2=r*s2/h;
+
+render render=render(compression=0,merge=true);
+
+path3 p=(0,0,0)--(x,0,s);
+revolution a=revolution(p,Z);
+draw(surface(a,4),lightblue+opacity(0.5),render);
+
+path3 q=(x,0,s)--(r,0,h);
+revolution b=revolution(q,Z);
+draw(surface(b),white+opacity(0.5),render);
+
+draw((-r-1,0,0)--(r+1,0,0));
+draw((0,0,0)--(0,0,h+1),dashed);
+
+path3 w=(x1,0,s1)--(x2,0,s2)--(0,0,s2);
+revolution b=revolution(w,Z);
+draw(surface(b),blue+opacity(0.5),render);
+draw(circle((0,0,s2),x2));
+draw(circle((0,0,s1),x1));
+
+draw("$x$",(xr,0,0)--(xr,0,sr),red,Arrow3,PenMargin3);
+draw("$r$",(0,0,sr)--(xr,0,sr),N,red);
+draw((string) r,(0,0,h)--(r,0,h),N,red);
+draw((string) h,(r,0,0)--(r,0,h),red,Arrow3,PenMargin3);
+draw((string) s,(-x,0,0)--(-x,0,s),W,red,Arrow3,Bar3,PenMargin3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/worksheet.asy b/Master/texmf-dist/doc/asymptote/examples/worksheet.asy
new file mode 100644
index 00000000000..9894e5802b8
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/worksheet.asy
@@ -0,0 +1,49 @@
+import fontsize;
+
+defaultpen(Helvetica());
+
+picture pic;
+unitsize(pic,mm);
+
+pair z=(0,0);
+real length=88;
+real height=8;
+pair step=height*S;
+
+label(pic,"Word Wall Spelling",z,Align);
+z += step;
+frame f;
+label(f,"Name:");
+pair z0=(max(f).x,min(f).y);
+draw(f,z0--z0+50mm);
+add(pic,f,z,Align);
+z += step;
+
+for(int i=1; i <= 15; ++i) {
+ draw(pic,z--z+length);
+ z += step;
+ draw(pic,z--z+length,dashed+gray);
+ z += step;
+ void label(int i) {
+ label(pic,string(i)+".",z,0.2NE,fontsize(0.8*1.5*2*height*mm)+gray);
+ }
+ if(i <= 10) label(i);
+ else if(i == 11) {
+ pair z0=z+length/2;
+ pen p=fontsize(20pt);
+ label(pic,"Challenge Word",z0+N*height,I*Align.y,p+basealign);
+ label(pic,"(optional)",z0,I*Align.y,p);
+ }
+ else if(i == 12) label(1);
+ else if(i == 13) label(2);
+ else if(i == 14) label(3);
+}
+draw(pic,z--z+length);
+
+add(pic.fit(),(0,0),W);
+add(pic.fit(),(0,0),E);
+newpage();
+add(pic.fit(),(0,0),W);
+add(pic.fit(),(0,0),E);
+
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/worldmap.asy b/Master/texmf-dist/doc/asymptote/examples/worldmap.asy
new file mode 100644
index 00000000000..59479fffbe2
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/worldmap.asy
@@ -0,0 +1,87 @@
+settings.outformat="pdf";
+size(20cm);
+
+// The required data file is available here:
+// http://www.uni-graz.at/~schwaige/asymptote/worldmap.dat
+// This data was originally obtained from
+// http://www.ngdc.noaa.gov/mgg_coastline/mapit.jsp
+
+real findtheta(real phi, real epsilon=realEpsilon) {
+ // Determine for given phi the unique solution -pi/2 <= theta <= pi/2 off
+ // 2*theta+sin(2*theta)=pi*sin(phi)
+ // in the non-trivial cases by Newton iteration;
+ // theoretically the initial guess pi*sin(phi)/4 always works.
+ real nwtn(real x, real y) {return x-(2x+sin(2x)-y)/(2+2*cos(2x));};
+ real y=pi*sin(phi);
+ if(y == 0) return 0.0;
+ if(abs(y) == 1) return pi/2;
+ real startv=y/4;
+ real endv=nwtn(startv,y);
+ if(epsilon < 500*realEpsilon) epsilon=500*realEpsilon;
+ while(abs(endv-startv) > epsilon) {startv=endv; endv=nwtn(startv,y);};
+ return endv;
+}
+
+pair mollweide(real lambda, real phi, real lambda0=0){
+ // calculate the Mollweide projection centered at lambda0 for the point
+ // with coordinates(phi,lambda)
+ static real c1=2*sqrt(2)/pi;
+ static real c2=sqrt(2);
+ real theta=findtheta(phi);
+ return(c1*(lambda-lambda0)*cos(theta), c2*sin(theta));
+}
+
+guide gfrompairs(pair[] data){
+ guide gtmp;
+ for(int i=0; i < data.length; ++i) {
+ pair tmp=mollweide(radians(data[i].y),radians(data[i].x));
+ gtmp=gtmp--tmp;
+ }
+ return gtmp;
+}
+
+string datafile="worldmap.dat";
+
+file in=input(datafile,comment="/").line();
+// new commentchar since "#" is contained in the file
+pair[][] arrarrpair=new pair[][] ;
+int cnt=-1;
+bool newseg=false;
+while(true) {
+ if(eof(in)) break;
+ string str=in;
+ string[] spstr=split(str,"");
+
+ if(spstr[0] == "#") {++cnt; arrarrpair[cnt]=new pair[] ; newseg=true;}
+ if(spstr[0] != "#" && newseg) {
+ string[] spstr1=split(str,'\t'); // separator is TAB not SPACE
+ pair tmp=((real) spstr1[1],(real) spstr1[0]);
+ arrarrpair[cnt].push(tmp);
+ }
+}
+
+for(int i=0; i < arrarrpair.length; ++i)
+ draw(gfrompairs(arrarrpair[i]),1bp+black);
+
+// lines of longitude and latitude
+pair[] constlong(real lambda, int np=100) {
+ pair[] tmp;
+ for(int i=0; i <= np; ++i) tmp.push((-90+i*180/np,lambda));
+ return tmp;
+}
+
+pair[] constlat(real phi, int np=100) {
+ pair[] tmp;
+ for(int i=0; i <= 2*np; ++i) tmp.push((phi,-180+i*180/np));
+ return tmp;
+}
+
+for(int j=1; j <= 5; ++j) draw(gfrompairs(constlong(-180+j/6*360)),white);
+draw(gfrompairs(constlong(-180)),1.5bp+white);
+draw(gfrompairs(constlong(180)),1.5bp+white);
+for(int j=0; j <= 12; ++j) draw(gfrompairs(constlat(-90+j/6*180)),white);
+//draw(gfrompairs(constlong(10)),dotted);
+
+close(in);
+shipout(bbox(1mm,darkblue,Fill(lightblue)), view=true);
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/xsin1x.asy b/Master/texmf-dist/doc/asymptote/examples/xsin1x.asy
new file mode 100644
index 00000000000..cf394efb1a6
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/xsin1x.asy
@@ -0,0 +1,24 @@
+import graph;
+size(300,0);
+
+real f(real x) {return (x != 0.0) ? x * sin(1.0 / x) : 0.0;}
+pair F(real x) {return (x,f(x));}
+
+xaxis("$x$",red);
+yaxis(red);
+draw(graph(f,-1.2/pi,1.2/pi,1000));
+label("$x\sin\frac{1}{x}$",F(1.1/pi),NW);
+
+picture pic;
+size(pic,50,IgnoreAspect);
+xaxis(pic,red);
+yaxis(pic,red);
+draw(pic,graph(pic,f,-0.1/pi,0.1/pi,1000));
+
+add(new void(frame f, transform t) {
+ frame G=shift(point(f,N+0.85W))*align(bbox(pic,blue),10SE);
+ add(f,G);
+ draw(f,t*box(min(pic,user=true),max(pic,user=true)),blue);
+ draw(f,point(G,E)--t*point(pic,W),blue);
+ });
+
diff --git a/Master/texmf-dist/doc/asymptote/examples/xstitch.asy b/Master/texmf-dist/doc/asymptote/examples/xstitch.asy
new file mode 100644
index 00000000000..5f332881733
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/xstitch.asy
@@ -0,0 +1,170 @@
+pair c=(0,0.8);
+
+int iters(pair z, int max=160) {
+ int n=0;
+ while(abs(z) < 2 && n < max) {
+ z=z*z+c;
+ ++n;
+ }
+ return n;
+}
+
+int[] cutoffs={12,15,20,30,40,60,200};
+int key(pair z) {
+ int i=iters(z);
+ int j=0;
+ while(cutoffs[j] < i)
+ ++j;
+ return j;
+}
+
+
+int width=210;
+int height=190;
+
+real zoom=2.5/200;
+
+int[][] values=new int[width][height];
+int[] histogram; for(int v=0; v < 10; ++v) histogram.push(0);
+for(int i=0; i < width; ++i) {
+ real x=zoom*(i-width/2);
+ for(int j=0; j < height; ++j) {
+ real y=zoom*(j-height/2);
+ int v=key((x,y));
+ values[i][j]=v;
+ ++histogram[v];
+ }
+}
+
+// Print out a histogram.
+write("histogram: ");
+write(histogram);
+
+
+pen linepen(int i, int max) {
+ real w=i == -1 || i == max+1 ? 2.0 :
+ i % 10 == 0 || i == max ? 1.0 :
+ i % 5 == 0 ? 0.8 :
+ 0.25;
+ return linewidth(w);
+}
+
+pen xpen(int i) {
+ return linepen(i,width)+(i == width/2 ? red :
+ i == 75 || i == width-75 ? dashed :
+ black);
+}
+
+pen ypen(int i) {
+ return linepen(i,height)+(i == height/2 ? red :
+ i == 75 || i == height-75 ? dashed :
+ black);
+}
+
+// The length of the side of a cross stitch cell.
+real cell=2.3mm;
+transform t=scale(cell);
+
+
+picture tick;
+draw(tick,(0,0)--(1,1));
+
+picture ell;
+draw(ell,(0,1)--(0,0)--(0.7,0));
+
+picture cross;
+draw(cross,(0,0)--(1,1));
+draw(cross,(1,0)--(0,1));
+
+picture star;
+draw(star,(0.15,0.15)--(0.85,0.85));
+draw(star,(0.85,0.15)--(0.15,0.85));
+draw(star,(.5,0)--(.5,1));
+draw(star,(0,.5)--(1,.5));
+
+picture triangle;
+draw(triangle,(0,0)--(2,0)--(1,1.5)--cycle);
+
+picture circle;
+fill(circle,shift(1,1)*unitcircle);
+
+picture ocircle;
+draw(ocircle,shift(1,1)*unitcircle);
+
+picture spare;
+fill(spare,(0,0)--(1,1)--(0,1)--cycle);
+
+picture[] pics={tick,ell,cross,star,triangle,circle};
+pen[] colors={black,0.2purple,0.4purple,0.6purple,0.8purple,purple,
+ 0.8purple+0.2white};
+
+frame[] icons;
+icons.push(newframe);
+for(picture pic : pics) {
+ // Scaling factor, so that we don't need weird line widths.
+ real X=1.0;
+ frame f=pic.fit(.8X*cell,.8X*cell,Aspect);
+ f=scale(1/X)*f;
+
+ // Center the icon in the cell.
+ f=shift((cell/2,cell/2)-0.5(max(f)-min(f)))*f;
+
+ icons.push(f);
+}
+
+void drawSection(int xmin, int xmax, int ymin, int ymax) {
+ static int shipoutNumber=0;
+
+ // Draw directly to a frame for speed reasons.
+ frame pic;
+
+ for(int i=xmin; i <= xmax; ++i) {
+ draw(pic,t*((i,ymin)--(i,ymax)),xpen(i));
+ if(i%10 == 0) {
+ label(pic,string(i),t*(i,ymin),align=S);
+ label(pic,string(i),t*(i,ymax),align=N);
+ }
+ }
+ for(int j=ymin; j <= ymax; ++j) {
+ draw(pic,t*((xmin,j)--(xmax,j)),ypen(j));
+ if(j%10 == 0) {
+ label(pic,string(j),t*(xmin,j),align=W);
+ label(pic,string(j),t*(xmax,j),align=E);
+ }
+ }
+
+ if(xmin < 0)
+ xmin=0;
+ if(xmax >= width)
+ xmax=width-1;
+ if(ymin < 0)
+ ymin=0;
+ if(ymax >= height)
+ ymax=height-1;
+
+ int stitchCount=0;
+ path box=scale(cell) *((0,0)--(1,0)--(1,1)--(0,1)--cycle);
+ for(int i=xmin; i < xmax; ++i)
+ for(int j=ymin; j < ymax; ++j) {
+ int v=values[i][j];
+ add(pic,icons[v],(i*cell,j*cell));
+ //fill(pic,shift(i*cell,j*cell)*box,colors[v]);
+ if(v != 0)
+ ++stitchCount;
+ }
+
+ write("stitch count: ",stitchCount);
+
+ // shipout("xstitch"+string(shipoutNumber),pic);
+ shipout(pic);
+ ++shipoutNumber;
+}
+
+//drawSection(-1,width+1,-1,height+1);
+
+
+//drawSection(-1,80,height-80,height+1);
+//drawSection(70,150,height-80,height+1);
+drawSection(quotient(width,2)-40,quotient(width,2)+40,quotient(height,2)-40,quotient(height,2)+40);
+//drawSection(width-150,width-70,-1,80);
+//drawSection(width-80,width+1,-1,80);
diff --git a/Master/texmf-dist/doc/asymptote/examples/xxsq01.asy b/Master/texmf-dist/doc/asymptote/examples/xxsq01.asy
new file mode 100644
index 00000000000..23a38393a94
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/xxsq01.asy
@@ -0,0 +1,30 @@
+import graph3;
+import solids;
+size(0,150);
+currentprojection=perspective(0,0,10,up=Y);
+
+pen color=green;
+real alpha=250;
+
+real f(real x) {return x^2;}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+
+path p=graph(F,0,1,n=10,operator ..)--cycle;
+path3 p3=path3(p);
+
+revolution a=revolution(p3,X,-alpha,0);
+render render=render(compression=0,merge=true);
+draw(surface(a),color,render);
+surface s=surface(p);
+draw(s,color,render);
+draw(rotate(-alpha,X)*s,color,render);
+
+draw(p3,blue);
+
+xaxis3(Label("$x$",1),xmax=1.25,dashed,Arrow3);
+yaxis3(Label("$y$",1),Arrow3);
+dot(Label("$(1,1)$"),(1,1,0),X+Y);
+arrow("$y=x$",(0.7,0.7,0),Y,0.75cm,red);
+arrow("$y=x^2$",F3(0.7),X,0.75cm,red);
+draw(arc(1.1X,0.3,90,90,3,-90),Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy b/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy
new file mode 100644
index 00000000000..6d645a49664
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy
@@ -0,0 +1,35 @@
+import graph3;
+import solids;
+size(300);
+currentprojection=perspective(0,2,10,up=Y);
+currentlight=Viewport;
+
+pen color=green;
+
+real f(real x) {return x^2;}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+
+path p=graph(F,0,1,n=10,operator ..)--cycle;
+path3 p3=path3(p);
+
+revolution a=revolution(-X,p3,Y,0,180);
+render render=render(merge=true);
+draw(surface(a),color);
+surface s=surface(p);
+draw(s,color);
+transform3 t=shift(-2X)*rotate(180,Y);
+draw(t*s,color);
+draw(p3);
+draw(t*p3);
+
+draw((-1,0,0)--(-1,1,0),dashed);
+xaxis3(Label("$x$",1),Arrow3);
+yaxis3(Label("$y$",1),Arrow3);
+dot(Label("$(1,1)$"),(1,1,0));
+dot(Label("$(-1,1)$"),(-1,1,0),W);
+arrow("$y=x^{2}$",F3(0.7),X,1cm,red);
+arrow("$y=x$",(0.3,0.3,0),X,1.5cm,red);
+draw(circle((-1,1,0),2,Y),dashed);
+draw((-1,1,0)--(1,1,0),dashed);
+draw(shift(-X)*arc(0.02Y,0.3,90,0,0,0,CW),Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy b/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy
new file mode 100644
index 00000000000..770f4fc22cf
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy
@@ -0,0 +1,34 @@
+import solids;
+size(0,150);
+currentprojection=perspective(0,0,10,up=Y);
+pen color=green;
+real alpha=240;
+
+real f(real x) {return x^2;}
+pair F(real x) {return (x,f(x));}
+triple F3(real x) {return (x,f(x),0);}
+
+path p=graph(F,0,1,n=10,operator ..)--cycle;
+path3 p3=path3(p);
+
+render render=render(compression=0,merge=true);
+
+draw(surface(revolution(p3,Y,0,alpha)),color,render);
+
+surface s=surface(p);
+draw(s,color,render);
+draw(rotate(alpha,Y)*s,color,render);
+
+draw(p3,blue);
+
+xaxis3(Label("$x$",1),Arrow3);
+yaxis3(Label("$y$",1),ymax=1.25,dashed,Arrow3);
+
+dot("$(1,1)$",(1,1,0),X);
+arrow("$y=x^{2}$",F3(0.7),X,0.75cm,red);
+arrow("$y=x$",(0.8,0.8,0),Y,1cm,red);
+
+real r=0.4;
+draw((r,f(r),0)--(r,r,0),red);
+draw("$r$",(0,(f(r)+r)*0.5,0)--(r,(f(r)+r)*0.5,0),N,red,Arrows3,PenMargins3);
+draw(arc(1.1Y,0.3,90,0,7.5,180),Arrow3);
diff --git a/Master/texmf-dist/doc/asymptote/examples/yingyang.asy b/Master/texmf-dist/doc/asymptote/examples/yingyang.asy
new file mode 100644
index 00000000000..68b0d0eea74
--- /dev/null
+++ b/Master/texmf-dist/doc/asymptote/examples/yingyang.asy
@@ -0,0 +1,7 @@
+size(0,25cm);
+guide center=(0,1){W}..tension 0.8..(0,0){(1,-.5)}..tension 0.8..{W}(0,-1);
+
+draw((0,1)..(-1,0)..(0,-1));
+filldraw(center{E}..{N}(1,0)..{W}cycle);
+unfill(circle((0,0.5),0.125));
+fill(circle((0,-0.5),0.125));