| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558 | 'use strict';// http://www.w3.org/TR/SVG11/intro.html#Definitionsexports.elemsGroups = {    animation: ['animate', 'animateColor', 'animateMotion', 'animateTransform', 'set'],    descriptive: ['desc', 'metadata', 'title'],    shape: ['circle', 'ellipse', 'line', 'path', 'polygon', 'polyline', 'rect'],    structural: ['defs', 'g', 'svg', 'symbol', 'use'],    paintServer: ['solidColor', 'linearGradient', 'radialGradient', 'meshGradient', 'pattern', 'hatch'],    nonRendering: ['linearGradient', 'radialGradient', 'pattern', 'clipPath', 'mask', 'marker', 'symbol', 'filter', 'solidColor'],    container: ['a', 'defs', 'g', 'marker', 'mask', 'missing-glyph', 'pattern', 'svg', 'switch', 'symbol', 'foreignObject'],    textContent: ['altGlyph', 'altGlyphDef', 'altGlyphItem', 'glyph', 'glyphRef', 'textPath', 'text', 'tref', 'tspan'],    textContentChild: ['altGlyph', 'textPath', 'tref', 'tspan'],    lightSource: ['feDiffuseLighting', 'feSpecularLighting', 'feDistantLight', 'fePointLight', 'feSpotLight'],    filterPrimitive: ['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feFlood', 'feGaussianBlur', 'feImage', 'feMerge', 'feMorphology', 'feOffset', 'feSpecularLighting', 'feTile', 'feTurbulence']};exports.pathElems = ['path', 'glyph', 'missing-glyph'];// http://www.w3.org/TR/SVG11/intro.html#Definitionsexports.attrsGroups = {    animationAddition: ['additive', 'accumulate'],    animationAttributeTarget: ['attributeType', 'attributeName'],    animationEvent: ['onbegin', 'onend', 'onrepeat', 'onload'],    animationTiming: ['begin', 'dur', 'end', 'min', 'max', 'restart', 'repeatCount', 'repeatDur', 'fill'],    animationValue: ['calcMode', 'values', 'keyTimes', 'keySplines', 'from', 'to', 'by'],    conditionalProcessing: ['requiredFeatures', 'requiredExtensions', 'systemLanguage'],    core: ['id', 'tabindex', 'xml:base', 'xml:lang', 'xml:space'],    graphicalEvent: ['onfocusin', 'onfocusout', 'onactivate', 'onclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout', 'onload'],    presentation: [        'alignment-baseline',        'baseline-shift',        'clip',        'clip-path',        'clip-rule',        'color',        'color-interpolation',        'color-interpolation-filters',        'color-profile',        'color-rendering',        'cursor',        'direction',        'display',        'dominant-baseline',        'enable-background',        'fill',        'fill-opacity',        'fill-rule',        'filter',        'flood-color',        'flood-opacity',        'font-family',        'font-size',        'font-size-adjust',        'font-stretch',        'font-style',        'font-variant',        'font-weight',        'glyph-orientation-horizontal',        'glyph-orientation-vertical',        'image-rendering',        'letter-spacing',        'lighting-color',        'marker-end',        'marker-mid',        'marker-start',        'mask',        'opacity',        'overflow',        'paint-order',        'pointer-events',        'shape-rendering',        'stop-color',        'stop-opacity',        'stroke',        'stroke-dasharray',        'stroke-dashoffset',        'stroke-linecap',        'stroke-linejoin',        'stroke-miterlimit',        'stroke-opacity',        'stroke-width',        'text-anchor',        'text-decoration',        'text-overflow',        'text-rendering',        'transform',        'unicode-bidi',        'vector-effect',        'visibility',        'word-spacing',        'writing-mode'    ],    xlink: ['xlink:href', 'xlink:show', 'xlink:actuate', 'xlink:type', 'xlink:role', 'xlink:arcrole', 'xlink:title'],    documentEvent: ['onunload', 'onabort', 'onerror', 'onresize', 'onscroll', 'onzoom'],    filterPrimitive: ['x', 'y', 'width', 'height', 'result'],    transferFunction: ['type', 'tableValues', 'slope', 'intercept', 'amplitude', 'exponent', 'offset']};exports.attrsGroupsDefaults = {    core: {'xml:space': 'preserve'},    filterPrimitive: {x: '0', y: '0', width: '100%', height: '100%'},    presentation: {        clip: 'auto',        'clip-path': 'none',        'clip-rule': 'nonzero',        mask: 'none',        opacity: '1',        'stop-color': '#000',        'stop-opacity': '1',        'fill-opacity': '1',        'fill-rule': 'nonzero',        fill: '#000',        stroke: 'none',        'stroke-width': '1',        'stroke-linecap': 'butt',        'stroke-linejoin': 'miter',        'stroke-miterlimit': '4',        'stroke-dasharray': 'none',        'stroke-dashoffset': '0',        'stroke-opacity': '1',        'paint-order': 'normal',        'vector-effect': 'none',        display: 'inline',        visibility: 'visible',        'marker-start': 'none',        'marker-mid': 'none',        'marker-end': 'none',        'color-interpolation': 'sRGB',        'color-interpolation-filters': 'linearRGB',        'color-rendering': 'auto',        'shape-rendering': 'auto',        'text-rendering': 'auto',        'image-rendering': 'auto',        'font-style': 'normal',        'font-variant': 'normal',        'font-weight': 'normal',        'font-stretch': 'normal',        'font-size': 'medium',        'font-size-adjust': 'none',        kerning: 'auto',        'letter-spacing': 'normal',        'word-spacing': 'normal',        'text-decoration': 'none',        'text-anchor': 'start',        'text-overflow': 'clip',        'writing-mode': 'lr-tb',        'glyph-orientation-vertical': 'auto',        'glyph-orientation-horizontal': '0deg',        direction: 'ltr',        'unicode-bidi': 'normal',        'dominant-baseline': 'auto',        'alignment-baseline': 'baseline',        'baseline-shift': 'baseline'    },    transferFunction: {slope: '1', intercept: '0', amplitude: '1', exponent: '1', offset: '0'}};// http://www.w3.org/TR/SVG11/eltindex.htmlexports.elems = {    a: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'target'        ],        defaults: {            target: '_self'        },        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    altGlyph: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'x',            'y',            'dx',            'dy',            'glyphRef',            'format',            'rotate'        ]    },    altGlyphDef: {        attrsGroups: [            'core'        ],        content: [            'glyphRef'        ]    },    altGlyphItem: {        attrsGroups: [            'core'        ],        content: [            'glyphRef',            'altGlyphItem'        ]    },    animate: {        attrsGroups: [            'conditionalProcessing',            'core',            'animationAddition',            'animationAttributeTarget',            'animationEvent',            'animationTiming',            'animationValue',            'presentation',            'xlink'        ],        attrs: [            'externalResourcesRequired'        ],        contentGroups: [            'descriptive'        ]    },    animateColor: {        attrsGroups: [            'conditionalProcessing',            'core',            'animationEvent',            'xlink',            'animationAttributeTarget',            'animationTiming',            'animationValue',            'animationAddition',            'presentation'        ],        attrs: [            'externalResourcesRequired'        ],        contentGroups: [            'descriptive'        ]    },    animateMotion: {        attrsGroups: [            'conditionalProcessing',            'core',            'animationEvent',            'xlink',            'animationTiming',            'animationValue',            'animationAddition'        ],        attrs: [            'externalResourcesRequired',            'path',            'keyPoints',            'rotate',            'origin'        ],        defaults: {            'rotate': '0'        },        contentGroups: [            'descriptive'        ],        content: [            'mpath'        ]    },    animateTransform: {        attrsGroups: [            'conditionalProcessing',            'core',            'animationEvent',            'xlink',            'animationAttributeTarget',            'animationTiming',            'animationValue',            'animationAddition'        ],        attrs: [            'externalResourcesRequired',            'type'        ],        contentGroups: [            'descriptive'        ]    },    circle: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'cx',            'cy',            'r'        ],        defaults: {            cx: '0',            cy: '0'        },        contentGroups: [            'animation',            'descriptive'        ]    },    clipPath: {        attrsGroups: [            'conditionalProcessing',            'core',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'clipPathUnits'        ],        defaults: {            clipPathUnits: 'userSpaceOnUse'        },        contentGroups: [            'animation',            'descriptive',            'shape'        ],        content: [            'text',            'use'        ]    },    'color-profile': {        attrsGroups: [            'core',            'xlink'        ],        attrs: [            'local',            'name',            'rendering-intent'        ],        defaults: {            name: 'sRGB',            'rendering-intent': 'auto'        },        contentGroups: [            'descriptive'        ]    },    cursor: {        attrsGroups: [            'core',            'conditionalProcessing',            'xlink'        ],        attrs: [            'externalResourcesRequired',            'x',            'y'        ],        defaults: {            x: '0',            y: '0'        },        contentGroups: [            'descriptive'        ]    },    defs: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform'        ],        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    desc: {        attrsGroups: [            'core'        ],        attrs: [            'class',            'style'        ]    },    ellipse: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'cx',            'cy',            'rx',            'ry'        ],        defaults: {            cx: '0',            cy: '0'        },        contentGroups: [            'animation',            'descriptive'        ]    },    feBlend: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            // TODO: in - 'If no value is provided and this is the first filter primitive,            // then this filter primitive will use SourceGraphic as its input'            'in',            'in2',            'mode'        ],        defaults: {            mode: 'normal'        },        content: [            'animate',            'set'        ]    },    feColorMatrix: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'type',            'values'        ],        defaults: {            type: 'matrix'        },        content: [            'animate',            'set'        ]    },    feComponentTransfer: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in'        ],        content: [            'feFuncA',            'feFuncB',            'feFuncG',            'feFuncR'        ]    },    feComposite: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'in2',            'operator',            'k1',            'k2',            'k3',            'k4'        ],        defaults: {            operator: 'over',            k1: '0',            k2: '0',            k3: '0',            k4: '0'        },        content: [            'animate',            'set'        ]    },    feConvolveMatrix: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'order',            'kernelMatrix',            // TODO: divisor - 'The default value is the sum of all values in kernelMatrix,            // with the exception that if the sum is zero, then the divisor is set to 1'            'divisor',            'bias',            // TODO: targetX - 'By default, the convolution matrix is centered in X over each            // pixel of the input image (i.e., targetX = floor ( orderX / 2 ))'            'targetX',            'targetY',            'edgeMode',            // TODO: kernelUnitLength - 'The first number is the <dx> value. The second number            // is the <dy> value. If the <dy> value is not specified, it defaults to the same value as <dx>'            'kernelUnitLength',            'preserveAlpha'        ],        defaults: {            order: '3',            bias: '0',            edgeMode: 'duplicate',            preserveAlpha: 'false'        },        content: [            'animate',            'set'        ]    },    feDiffuseLighting: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'surfaceScale',            'diffuseConstant',            'kernelUnitLength'        ],        defaults: {            surfaceScale: '1',            diffuseConstant: '1'        },        contentGroups: [            'descriptive'        ],        content: [            // TODO: 'exactly one light source element, in any order'            'feDistantLight',            'fePointLight',            'feSpotLight'        ]    },    feDisplacementMap: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'in2',            'scale',            'xChannelSelector',            'yChannelSelector'        ],        defaults: {            scale: '0',            xChannelSelector: 'A',            yChannelSelector: 'A'        },        content: [            'animate',            'set'        ]    },    feDistantLight: {        attrsGroups: [            'core'        ],        attrs: [            'azimuth',            'elevation'        ],        defaults: {            azimuth: '0',            elevation: '0'        },        content: [            'animate',            'set'        ]    },    feFlood: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style'        ],        content: [            'animate',            'animateColor',            'set'        ]    },    feFuncA: {        attrsGroups: [            'core',            'transferFunction'        ],        content: [            'set',            'animate'        ]    },    feFuncB: {        attrsGroups: [            'core',            'transferFunction'        ],        content: [            'set',            'animate'        ]    },    feFuncG: {        attrsGroups: [            'core',            'transferFunction'        ],        content: [            'set',            'animate'        ]    },    feFuncR: {        attrsGroups: [            'core',            'transferFunction'        ],        content: [            'set',            'animate'        ]    },    feGaussianBlur: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'stdDeviation'        ],        defaults: {            stdDeviation: '0'        },        content: [            'set',            'animate'        ]    },    feImage: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'preserveAspectRatio',            'href',            'xlink:href'        ],        defaults: {            preserveAspectRatio: 'xMidYMid meet'        },        content: [            'animate',            'animateTransform',            'set'        ]    },    feMerge: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style'        ],        content: [            'feMergeNode'        ]    },    feMergeNode: {        attrsGroups: [            'core'        ],        attrs: [            'in'        ],        content: [            'animate',            'set'        ]    },    feMorphology: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'operator',            'radius'        ],        defaults: {            operator: 'erode',            radius: '0'        },        content: [            'animate',            'set'        ]    },    feOffset: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'dx',            'dy'        ],        defaults: {            dx: '0',            dy: '0'        },        content: [            'animate',            'set'        ]    },    fePointLight: {        attrsGroups: [            'core'        ],        attrs: [            'x',            'y',            'z'        ],        defaults: {            x: '0',            y: '0',            z: '0'        },        content: [            'animate',            'set'        ]    },    feSpecularLighting: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in',            'surfaceScale',            'specularConstant',            'specularExponent',            'kernelUnitLength'        ],        defaults: {            surfaceScale: '1',            specularConstant: '1',            specularExponent: '1'        },        contentGroups: [            'descriptive',            // TODO: exactly one 'light source element'            'lightSource'        ]    },    feSpotLight: {        attrsGroups: [            'core'        ],        attrs: [            'x',            'y',            'z',            'pointsAtX',            'pointsAtY',            'pointsAtZ',            'specularExponent',            'limitingConeAngle'        ],        defaults: {            x: '0',            y: '0',            z: '0',            pointsAtX: '0',            pointsAtY: '0',            pointsAtZ: '0',            specularExponent: '1'        },        content: [            'animate',            'set'        ]    },    feTile: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'in'        ],        content: [            'animate',            'set'        ]    },    feTurbulence: {        attrsGroups: [            'core',            'presentation',            'filterPrimitive'        ],        attrs: [            'class',            'style',            'baseFrequency',            'numOctaves',            'seed',            'stitchTiles',            'type'        ],        defaults: {            baseFrequency: '0',            numOctaves: '1',            seed: '0',            stitchTiles: 'noStitch',            type: 'turbulence'        },        content: [            'animate',            'set'        ]    },    filter: {        attrsGroups: [            'core',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'x',            'y',            'width',            'height',            'filterRes',            'filterUnits',            'primitiveUnits',            'href',            'xlink:href'        ],        defaults: {            primitiveUnits: 'userSpaceOnUse',            x: '-10%',            y: '-10%',            width: '120%',            height: '120%'        },        contentGroups: [            'descriptive',            'filterPrimitive'        ],        content: [            'animate',            'set'        ]    },    font: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'horiz-origin-x',            'horiz-origin-y',            'horiz-adv-x',            'vert-origin-x',            'vert-origin-y',            'vert-adv-y'        ],        defaults: {            'horiz-origin-x': '0',            'horiz-origin-y': '0'        },        contentGroups: [            'descriptive'        ],        content: [            'font-face',            'glyph',            'hkern',            'missing-glyph',            'vkern'        ]    },    'font-face': {        attrsGroups: [            'core'        ],        attrs: [            'font-family',            'font-style',            'font-variant',            'font-weight',            'font-stretch',            'font-size',            'unicode-range',            'units-per-em',            'panose-1',            'stemv',            'stemh',            'slope',            'cap-height',            'x-height',            'accent-height',            'ascent',            'descent',            'widths',            'bbox',            'ideographic',            'alphabetic',            'mathematical',            'hanging',            'v-ideographic',            'v-alphabetic',            'v-mathematical',            'v-hanging',            'underline-position',            'underline-thickness',            'strikethrough-position',            'strikethrough-thickness',            'overline-position',            'overline-thickness'        ],        defaults: {            'font-style': 'all',            'font-variant': 'normal',            'font-weight': 'all',            'font-stretch': 'normal',            'unicode-range': 'U+0-10FFFF',            'units-per-em': '1000',            'panose-1': '0 0 0 0 0 0 0 0 0 0',            'slope': '0'        },        contentGroups: [            'descriptive'        ],        content: [            // TODO: "at most one 'font-face-src' element"            'font-face-src'        ]    },    // TODO: empty content    'font-face-format': {        attrsGroups: [            'core'        ],        attrs: [            'string'        ]    },    'font-face-name': {        attrsGroups: [            'core'        ],        attrs: [            'name'        ]    },    'font-face-src': {        attrsGroups: [            'core'        ],        content: [            'font-face-name',            'font-face-uri'        ]    },    'font-face-uri': {        attrsGroups: [            'core',            'xlink'        ],        attrs: [            'href',            'xlink:href'        ],        content: [            'font-face-format'        ]    },    foreignObject: {        attrsGroups: [            'core',            'conditionalProcessing',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'x',            'y',            'width',            'height'        ],        defaults: {            x: 0,            y: 0        }    },    g: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform'        ],        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    glyph: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style',            'd',            'horiz-adv-x',            'vert-origin-x',            'vert-origin-y',            'vert-adv-y',            'unicode',            'glyph-name',            'orientation',            'arabic-form',            'lang'        ],        defaults: {            'arabic-form': 'initial'        },        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ],    },    glyphRef: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style',            'd',            'horiz-adv-x',            'vert-origin-x',            'vert-origin-y',            'vert-adv-y'        ],        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    hatch: {        attrsGroups: [            'core',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'x',            'y',            'pitch',            'rotate',            'hatchUnits',            'hatchContentUnits',            'transform'        ],        defaults: {            hatchUnits: 'objectBoundingBox',            hatchContentUnits: 'userSpaceOnUse',            x: '0',            y: '0',            pitch: '0',            rotate: '0'        },        contentGroups: [            'animation',            'descriptive'        ],        content: [            'hatchPath'        ]    },    hatchPath: {        attrsGroups: [            'core',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'd',            'offset'        ],        defaults: {            offset: '0'        },        contentGroups: [            'animation',            'descriptive'        ]    },    hkern: {        attrsGroups: [            'core'        ],        attrs: [            'u1',            'g1',            'u2',            'g2',            'k'        ]    },    image: {        attrsGroups: [            'core',            'conditionalProcessing',            'graphicalEvent',            'xlink',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'preserveAspectRatio',            'transform',            'x',            'y',            'width',            'height',            'href',            'xlink:href'        ],        defaults: {            x: '0',            y: '0',            preserveAspectRatio: 'xMidYMid meet'        },        contentGroups: [            'animation',            'descriptive'        ]    },    line: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'x1',            'y1',            'x2',            'y2'        ],        defaults: {            x1: '0',            y1: '0',            x2: '0',            y2: '0'        },        contentGroups: [            'animation',            'descriptive'        ]    },    linearGradient: {        attrsGroups: [            'core',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'x1',            'y1',            'x2',            'y2',            'gradientUnits',            'gradientTransform',            'spreadMethod',            'href',            'xlink:href'        ],        defaults: {            x1: '0',            y1: '0',            x2: '100%',            y2: '0',            spreadMethod: 'pad'        },        contentGroups: [            'descriptive'        ],        content: [            'animate',            'animateTransform',            'set',            'stop'        ]    },    marker: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'viewBox',            'preserveAspectRatio',            'refX',            'refY',            'markerUnits',            'markerWidth',            'markerHeight',            'orient'        ],        defaults: {            markerUnits: 'strokeWidth',            refX: '0',            refY: '0',            markerWidth: '3',            markerHeight: '3'        },        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    mask: {        attrsGroups: [            'conditionalProcessing',            'core',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'x',            'y',            'width',            'height',            'maskUnits',            'maskContentUnits'        ],        defaults: {            maskUnits: 'objectBoundingBox',            maskContentUnits: 'userSpaceOnUse',            x: '-10%',            y: '-10%',            width: '120%',            height: '120%'        },        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    metadata: {        attrsGroups: [            'core'        ]    },    'missing-glyph': {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style',            'd',            'horiz-adv-x',            'vert-origin-x',            'vert-origin-y',            'vert-adv-y'        ],        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    mpath: {        attrsGroups: [            'core',            'xlink'        ],        attrs: [            'externalResourcesRequired',            'href',            'xlink:href'        ],        contentGroups: [            'descriptive'        ]    },    path: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'd',            'pathLength'        ],        contentGroups: [            'animation',            'descriptive'        ]    },    pattern: {        attrsGroups: [            'conditionalProcessing',            'core',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'viewBox',            'preserveAspectRatio',            'x',            'y',            'width',            'height',            'patternUnits',            'patternContentUnits',            'patternTransform',            'href',            'xlink:href'        ],        defaults: {            patternUnits: 'objectBoundingBox',            patternContentUnits: 'userSpaceOnUse',            x: '0',            y: '0',            width: '0',            height: '0',            preserveAspectRatio: 'xMidYMid meet'        },        contentGroups: [            'animation',            'descriptive',            'paintServer',            'shape',            'structural'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    polygon: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'points'        ],        contentGroups: [            'animation',            'descriptive'        ]    },    polyline: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'points'        ],        contentGroups: [            'animation',            'descriptive'        ]    },    radialGradient: {        attrsGroups: [            'core',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'cx',            'cy',            'r',            'fx',            'fy',            'fr',            'gradientUnits',            'gradientTransform',            'spreadMethod',            'href',            'xlink:href'        ],        defaults: {            gradientUnits: 'objectBoundingBox',            cx: '50%',            cy: '50%',            r: '50%'        },        contentGroups: [            'descriptive'        ],        content: [            'animate',            'animateTransform',            'set',            'stop'        ]    },    meshGradient: {        attrsGroups: [            'core',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'x',            'y',            'gradientUnits',            'transform'        ],        contentGroups: [            'descriptive',            'paintServer',            'animation',        ],        content: [            'meshRow'        ]    },    meshRow: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style'        ],        contentGroups: [            'descriptive'        ],        content: [            'meshPatch'        ]    },    meshPatch: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style'        ],        contentGroups: [            'descriptive'        ],        content: [            'stop'        ]    },    rect: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'x',            'y',            'width',            'height',            'rx',            'ry'        ],        defaults: {            x: '0',            y: '0'        },        contentGroups: [            'animation',            'descriptive'        ]    },    script: {        attrsGroups: [            'core',            'xlink'        ],        attrs: [            'externalResourcesRequired',            'type',            'href',            'xlink:href'        ]    },    set: {        attrsGroups: [            'conditionalProcessing',            'core',            'animation',            'xlink',            'animationAttributeTarget',            'animationTiming',        ],        attrs: [            'externalResourcesRequired',            'to'        ],        contentGroups: [            'descriptive'        ]    },    solidColor: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style'        ],        contentGroups: [            'paintServer'        ]    },    stop: {        attrsGroups: [            'core',            'presentation'        ],        attrs: [            'class',            'style',            'offset',            'path'        ],        content: [            'animate',            'animateColor',            'set'        ]    },    style: {        attrsGroups: [            'core'        ],        attrs: [            'type',            'media',            'title'        ],        defaults: {            type: 'text/css'        }    },    svg: {        attrsGroups: [            'conditionalProcessing',            'core',            'documentEvent',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'x',            'y',            'width',            'height',            'viewBox',            'preserveAspectRatio',            'zoomAndPan',            'version',            'baseProfile',            'contentScriptType',            'contentStyleType'        ],        defaults: {            x: '0',            y: '0',            width: '100%',            height: '100%',            preserveAspectRatio: 'xMidYMid meet',            zoomAndPan: 'magnify',            version: '1.1',            baseProfile: 'none',            contentScriptType: 'application/ecmascript',            contentStyleType: 'text/css'        },        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    switch: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform'        ],        contentGroups: [            'animation',            'descriptive',            'shape'        ],        content: [            'a',            'foreignObject',            'g',            'image',            'svg',            'switch',            'text',            'use'        ]    },    symbol: {        attrsGroups: [            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'preserveAspectRatio',            'viewBox',            'refX',            'refY'        ],        defaults: {            refX: 0,            refY: 0        },        contentGroups: [            'animation',            'descriptive',            'shape',            'structural',            'paintServer'        ],        content: [            'a',            'altGlyphDef',            'clipPath',            'color-profile',            'cursor',            'filter',            'font',            'font-face',            'foreignObject',            'image',            'marker',            'mask',            'pattern',            'script',            'style',            'switch',            'text',            'view'        ]    },    text: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'lengthAdjust',            'x',            'y',            'dx',            'dy',            'rotate',            'textLength'        ],        defaults: {            x: '0',            y: '0',            lengthAdjust: 'spacing'        },        contentGroups: [            'animation',            'descriptive',            'textContentChild'        ],        content: [            'a'        ]    },    textPath: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'href',            'xlink:href',            'startOffset',            'method',            'spacing',            'd'        ],        defaults: {            startOffset: '0',            method: 'align',            spacing: 'exact'        },        contentGroups: [            'descriptive'        ],        content: [            'a',            'altGlyph',            'animate',            'animateColor',            'set',            'tref',            'tspan'        ]    },    title: {        attrsGroups: [            'core'        ],        attrs: [            'class',            'style'        ]    },    tref: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'href',            'xlink:href'        ],        contentGroups: [            'descriptive'        ],        content: [            'animate',            'animateColor',            'set'        ]    },    tspan: {        attrsGroups: [            'conditionalProcessing',            'core',            'graphicalEvent',            'presentation'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'x',            'y',            'dx',            'dy',            'rotate',            'textLength',            'lengthAdjust'        ],        contentGroups: [            'descriptive'        ],        content: [            'a',            'altGlyph',            'animate',            'animateColor',            'set',            'tref',            'tspan'        ]    },    use: {        attrsGroups: [            'core',            'conditionalProcessing',            'graphicalEvent',            'presentation',            'xlink'        ],        attrs: [            'class',            'style',            'externalResourcesRequired',            'transform',            'x',            'y',            'width',            'height',            'href',            'xlink:href'        ],        defaults: {            x: '0',            y: '0'        },        contentGroups: [            'animation',            'descriptive'        ]    },    view: {        attrsGroups: [            'core'        ],        attrs: [            'externalResourcesRequired',            'viewBox',            'preserveAspectRatio',            'zoomAndPan',            'viewTarget'        ],        contentGroups: [            'descriptive'        ]    },    vkern: {        attrsGroups: [            'core'        ],        attrs: [            'u1',            'g1',            'u2',            'g2',            'k'        ]    }};// http://wiki.inkscape.org/wiki/index.php/Inkscape-specific_XML_attributesexports.editorNamespaces = [    'http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd',    'http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd',    'http://www.inkscape.org/namespaces/inkscape',    'http://www.bohemiancoding.com/sketch/ns',    'http://ns.adobe.com/AdobeIllustrator/10.0/',    'http://ns.adobe.com/Graphs/1.0/',    'http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/',    'http://ns.adobe.com/Variables/1.0/',    'http://ns.adobe.com/SaveForWeb/1.0/',    'http://ns.adobe.com/Extensibility/1.0/',    'http://ns.adobe.com/Flows/1.0/',    'http://ns.adobe.com/ImageReplacement/1.0/',    'http://ns.adobe.com/GenericCustomNamespace/1.0/',    'http://ns.adobe.com/XPath/1.0/',    'http://schemas.microsoft.com/visio/2003/SVGExtensions/',    'http://taptrix.com/vectorillustrator/svg_extensions',    'http://www.figma.com/figma/ns',    'http://purl.org/dc/elements/1.1/',    'http://creativecommons.org/ns#',    'http://www.w3.org/1999/02/22-rdf-syntax-ns#',    'http://www.serif.com/',    'http://www.vector.evaxdesign.sk'];// http://www.w3.org/TR/SVG11/linking.html#processingIRIexports.referencesProps = [    'clip-path',    'color-profile',    'fill',    'filter',    'marker-start',    'marker-mid',    'marker-end',    'mask',    'stroke',    'style'];// http://www.w3.org/TR/SVG11/propidx.htmlexports.inheritableAttrs = [    'clip-rule',    'color',    'color-interpolation',    'color-interpolation-filters',    'color-profile',    'color-rendering',    'cursor',    'direction',    'dominant-baseline',    'fill',    'fill-opacity',    'fill-rule',    'font',    'font-family',    'font-size',    'font-size-adjust',    'font-stretch',    'font-style',    'font-variant',    'font-weight',    'glyph-orientation-horizontal',    'glyph-orientation-vertical',    'image-rendering',    'letter-spacing',    'marker',    'marker-end',    'marker-mid',    'marker-start',    'paint-order',    'pointer-events',    'shape-rendering',    'stroke',    'stroke-dasharray',    'stroke-dashoffset',    'stroke-linecap',    'stroke-linejoin',    'stroke-miterlimit',    'stroke-opacity',    'stroke-width',    'text-anchor',    'text-rendering',    'transform',    'visibility',    'word-spacing',    'writing-mode'];exports.presentationNonInheritableGroupAttrs = [    'display',    'clip-path',    'filter',    'mask',    'opacity',    'text-decoration',    'transform',    'unicode-bidi',    'visibility'];// http://www.w3.org/TR/SVG11/single-page.html#types-ColorKeywordsexports.colorsNames = {    'aliceblue': '#f0f8ff',    'antiquewhite': '#faebd7',    'aqua': '#0ff',    'aquamarine': '#7fffd4',    'azure': '#f0ffff',    'beige': '#f5f5dc',    'bisque': '#ffe4c4',    'black': '#000',    'blanchedalmond': '#ffebcd',    'blue': '#00f',    'blueviolet': '#8a2be2',    'brown': '#a52a2a',    'burlywood': '#deb887',    'cadetblue': '#5f9ea0',    'chartreuse': '#7fff00',    'chocolate': '#d2691e',    'coral': '#ff7f50',    'cornflowerblue': '#6495ed',    'cornsilk': '#fff8dc',    'crimson': '#dc143c',    'cyan': '#0ff',    'darkblue': '#00008b',    'darkcyan': '#008b8b',    'darkgoldenrod': '#b8860b',    'darkgray': '#a9a9a9',    'darkgreen': '#006400',    'darkgrey': '#a9a9a9',    'darkkhaki': '#bdb76b',    'darkmagenta': '#8b008b',    'darkolivegreen': '#556b2f',    'darkorange': '#ff8c00',    'darkorchid': '#9932cc',    'darkred': '#8b0000',    'darksalmon': '#e9967a',    'darkseagreen': '#8fbc8f',    'darkslateblue': '#483d8b',    'darkslategray': '#2f4f4f',    'darkslategrey': '#2f4f4f',    'darkturquoise': '#00ced1',    'darkviolet': '#9400d3',    'deeppink': '#ff1493',    'deepskyblue': '#00bfff',    'dimgray': '#696969',    'dimgrey': '#696969',    'dodgerblue': '#1e90ff',    'firebrick': '#b22222',    'floralwhite': '#fffaf0',    'forestgreen': '#228b22',    'fuchsia': '#f0f',    'gainsboro': '#dcdcdc',    'ghostwhite': '#f8f8ff',    'gold': '#ffd700',    'goldenrod': '#daa520',    'gray': '#808080',    'green': '#008000',    'greenyellow': '#adff2f',    'grey': '#808080',    'honeydew': '#f0fff0',    'hotpink': '#ff69b4',    'indianred': '#cd5c5c',    'indigo': '#4b0082',    'ivory': '#fffff0',    'khaki': '#f0e68c',    'lavender': '#e6e6fa',    'lavenderblush': '#fff0f5',    'lawngreen': '#7cfc00',    'lemonchiffon': '#fffacd',    'lightblue': '#add8e6',    'lightcoral': '#f08080',    'lightcyan': '#e0ffff',    'lightgoldenrodyellow': '#fafad2',    'lightgray': '#d3d3d3',    'lightgreen': '#90ee90',    'lightgrey': '#d3d3d3',    'lightpink': '#ffb6c1',    'lightsalmon': '#ffa07a',    'lightseagreen': '#20b2aa',    'lightskyblue': '#87cefa',    'lightslategray': '#789',    'lightslategrey': '#789',    'lightsteelblue': '#b0c4de',    'lightyellow': '#ffffe0',    'lime': '#0f0',    'limegreen': '#32cd32',    'linen': '#faf0e6',    'magenta': '#f0f',    'maroon': '#800000',    'mediumaquamarine': '#66cdaa',    'mediumblue': '#0000cd',    'mediumorchid': '#ba55d3',    'mediumpurple': '#9370db',    'mediumseagreen': '#3cb371',    'mediumslateblue': '#7b68ee',    'mediumspringgreen': '#00fa9a',    'mediumturquoise': '#48d1cc',    'mediumvioletred': '#c71585',    'midnightblue': '#191970',    'mintcream': '#f5fffa',    'mistyrose': '#ffe4e1',    'moccasin': '#ffe4b5',    'navajowhite': '#ffdead',    'navy': '#000080',    'oldlace': '#fdf5e6',    'olive': '#808000',    'olivedrab': '#6b8e23',    'orange': '#ffa500',    'orangered': '#ff4500',    'orchid': '#da70d6',    'palegoldenrod': '#eee8aa',    'palegreen': '#98fb98',    'paleturquoise': '#afeeee',    'palevioletred': '#db7093',    'papayawhip': '#ffefd5',    'peachpuff': '#ffdab9',    'peru': '#cd853f',    'pink': '#ffc0cb',    'plum': '#dda0dd',    'powderblue': '#b0e0e6',    'purple': '#800080',    'rebeccapurple': '#639',    'red': '#f00',    'rosybrown': '#bc8f8f',    'royalblue': '#4169e1',    'saddlebrown': '#8b4513',    'salmon': '#fa8072',    'sandybrown': '#f4a460',    'seagreen': '#2e8b57',    'seashell': '#fff5ee',    'sienna': '#a0522d',    'silver': '#c0c0c0',    'skyblue': '#87ceeb',    'slateblue': '#6a5acd',    'slategray': '#708090',    'slategrey': '#708090',    'snow': '#fffafa',    'springgreen': '#00ff7f',    'steelblue': '#4682b4',    'tan': '#d2b48c',    'teal': '#008080',    'thistle': '#d8bfd8',    'tomato': '#ff6347',    'turquoise': '#40e0d0',    'violet': '#ee82ee',    'wheat': '#f5deb3',    'white': '#fff',    'whitesmoke': '#f5f5f5',    'yellow': '#ff0',    'yellowgreen': '#9acd32'};exports.colorsShortNames = {  '#f0ffff': 'azure',  '#f5f5dc': 'beige',  '#ffe4c4': 'bisque',  '#a52a2a': 'brown',  '#ff7f50': 'coral',  '#ffd700': 'gold',  '#808080': 'gray',  '#008000': 'green',  '#4b0082': 'indigo',  '#fffff0': 'ivory',  '#f0e68c': 'khaki',  '#faf0e6': 'linen',  '#800000': 'maroon',  '#000080': 'navy',  '#808000': 'olive',  '#ffa500': 'orange',  '#da70d6': 'orchid',  '#cd853f': 'peru',  '#ffc0cb': 'pink',  '#dda0dd': 'plum',  '#800080': 'purple',  '#f00': 'red',  '#ff0000': 'red',  '#fa8072': 'salmon',  '#a0522d': 'sienna',  '#c0c0c0': 'silver',  '#fffafa': 'snow',  '#d2b48c': 'tan',  '#008080': 'teal',  '#ff6347': 'tomato',  '#ee82ee': 'violet',  '#f5deb3': 'wheat'};// http://www.w3.org/TR/SVG11/single-page.html#types-DataTypeColorexports.colorsProps = [    'color', 'fill', 'stroke', 'stop-color', 'flood-color', 'lighting-color'];
 |