Create a gist now

Instantly share code, notes, and snippets.

R finance charts with the svgPanZoom htmlwidget
# some finance with the svgPanZoom htmlwidget
library(quantmod)
library(fPortfolio)
library(PerformanceAnalytics)
library(svgPanZoom)
library(SVGAnnotation)
library(pipeR)
funds = list(
"VFINX"
,"VEXAX"
,"VBMFX"
,"VWIGX"
,"VTRIX"
,"VEIEX"
)
funds %>>%
lapply(
function(x){getSymbols(x,from="1900-01-01",auto.assign=F)}[,6]
) %>>%
( do.call( merge, . ) ) %>>%
na.omit %>>%
( ~ prices ) %>>%
( ./lag(.,k=1) - 1 ) -> returns
# change the column names to the tickers
colnames(prices) <- colnames(returns) <- unlist(funds)
# set the first to 0
returns[1,] <- 0
# now let's do an efficient frontier using fPortfolio
svgPanZoom(
svgPlot(
{
# some colors thanks to RColorBrewer
mycolors = RColorBrewer::brewer.pal(9,"Set1")[-6]
frontier <- portfolioFrontier(as.timeSeries(returns))
pointsFrontier = frontierPoints(frontier, frontier = "both", auto=TRUE)
targetRisk = getTargetRisk(frontier@portfolio)[,1]
targetReturn = getTargetReturn(frontier@portfolio)[,1]
ans = cbind(Risk = targetRisk, Return = targetReturn)
colnames(ans) = c("targetRisk", "targetReturn")
rownames(ans) = as.character(1:NROW(ans))
plot(
ans
,type="l"
,lwd=2
,lty=3
,xlab=NA
,ylab=NA
,bty="L"
)
minvariancePoints(frontier,pch=19,col="red")
tangencyPoints(frontier,pch=19,col="blue")
#tangencyLines(frontier,pch=19,col="blue")
equalWeightsPoints(frontier,pch=15,col="grey")
singleAssetPoints(frontier,pch=19,cex=1.5,col=mycolors)
twoAssetsLines(frontier,lty=3,col="grey")
#sharpeRatioLines(frontier,col="orange",lwd=2)
#legend("topleft",legend=colnames(portfolio.xts),pch=19,col=mycolors,
# cex=0.65)
#label assets
stats <- getStatistics(frontier)
text(y=stats$mean,x=sqrt(diag(stats$Cov)),labels=names(stats$mean),pos=4,col=mycolors,cex=0.7)
#set up function from equalWeightsPoints to also label the point
equalLabel <- function (object, return = c("mean", "mu"), risk = c("Cov", "Sigma",
"CVaR", "VaR"), auto = TRUE, ...)
{
return = match.arg(return)
risk = match.arg(risk)
data = getSeries(object)
spec = getSpec(object)
constraints = getConstraints(object)
numberOfAssets = getNAssets(object)
setWeights(spec) = rep(1/numberOfAssets, times = numberOfAssets)
ewPortfolio = feasiblePortfolio(data, spec, constraints)
assets = frontierPoints(ewPortfolio, return = return, risk = risk,
auto = auto)
text(assets, labels = "Equal-Weight", pos=4,...)
invisible(assets)
}
equalLabel(frontier,cex=0.7,col="grey")
title(main=paste0(
"Efficient Frontier Vanguard Funds "
, format(head(index(returns),1), "%Y")
," to "
, format(tail(index(returns),1), "%Y")
))
}
, height = 10
, width = 16
)
)
# now let's svgPanZoom one of my favorite charts
# from PerformanceAnalytics
svgPanZoom(
svgPlot({
returns %>>%
(cumprod( 1 + . )) %>>%
(.[endpoints(.,"months")]) %>>%
( ./lag(.,k=1) - 1 ) %>>%
chart.SnailTrail(
colorset = RColorBrewer::brewer.pal(9,"Set1")[-6]
,add.names="none"
,width = 36
,step = 36
,legend.loc = "topright"
)
},height= 10, width = 16)
)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body style="background-color:white;">
<iframe srcdoc="&lt;!DOCTYPE html&gt;&#10;&lt;html&gt;&#10;&lt;head&gt;&#10;&lt;meta charset=&quot;utf-8&quot; /&gt;&#10;&lt;script src=&quot;data:application/x-javascript,%28function%28%29%20%7B%0A%20%20%2F%2F%20If%20window%2EHTMLWidgets%20is%20already%20defined%2C%20then%20use%20it%3B%20otherwise%20create%20a%0A%20%20%2F%2F%20new%20object%2E%20This%20allows%20preceding%20code%20to%20set%20options%20that%20affect%20the%0A%20%20%2F%2F%20initialization%20process%20%28though%20none%20currently%20exist%29%2E%0A%20%20window%2EHTMLWidgets%20%3D%20window%2EHTMLWidgets%20%7C%7C%20%7B%7D%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20a%20viewer%20pane%2E%20If%20not%2C%20we%27re%20in%20a%20web%20browser%2E%0A%20%20var%20viewerMode%20%3D%20window%2EHTMLWidgets%2EviewerMode%20%3D%0A%20%20%20%20%20%20%2F%5Cbviewer%5Fpane%3D1%5Cb%2F%2Etest%28window%2Elocation%29%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20Shiny%20mode%2E%20If%20not%2C%20it%27s%20a%20static%20document%2E%0A%20%20%2F%2F%20Note%20that%20static%20widgets%20can%20appear%20in%20both%20Shiny%20and%20static%20modes%2C%20but%0A%20%20%2F%2F%20obviously%2C%20Shiny%20widgets%20can%20only%20appear%20in%20Shiny%20apps%2Fdocuments%2E%0A%20%20var%20shinyMode%20%3D%20window%2EHTMLWidgets%2EshinyMode%20%3D%0A%20%20%20%20%20%20typeof%28window%2EShiny%29%20%21%3D%3D%20%22undefined%22%20%26%26%20%21%21window%2EShiny%2EoutputBindings%3B%0A%0A%20%20%2F%2F%20We%20can%27t%20count%20on%20jQuery%20being%20available%2C%20so%20we%20implement%20our%20own%0A%20%20%2F%2F%20version%20if%20necessary%2E%0A%20%20function%20querySelectorAll%28scope%2C%20selector%29%20%7B%0A%20%20%20%20if%20%28typeof%28jQuery%29%20%21%3D%3D%20%22undefined%22%20%26%26%20scope%20instanceof%20jQuery%29%20%7B%0A%20%20%20%20%20%20return%20scope%2Efind%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28scope%2EquerySelectorAll%29%20%7B%0A%20%20%20%20%20%20return%20scope%2EquerySelectorAll%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20asArray%28value%29%20%7B%0A%20%20%20%20if%20%28value%20%3D%3D%3D%20null%29%0A%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28%24%2EisArray%28value%29%29%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20return%20%5Bvalue%5D%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20jQuery%27s%20extend%0A%20%20function%20extend%28target%20%2F%2A%2C%20%2E%2E%2E%20%2A%2F%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20target%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%201%3B%20i%20%3C%20arguments%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bi%5D%3B%0A%20%20%20%20%20%20for%20%28var%20prop%20in%20source%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28source%2EhasOwnProperty%28prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20source%5Bprop%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20target%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Replaces%20the%20specified%20method%20with%20the%20return%20value%20of%20funcSource%2E%0A%20%20%2F%2F%0A%20%20%2F%2F%20Note%20that%20funcSource%20should%20not%20BE%20the%20new%20method%2C%20it%20should%20be%20a%20function%0A%20%20%2F%2F%20that%20RETURNS%20the%20new%20method%2E%20funcSource%20receives%20a%20single%20argument%20that%20is%0A%20%20%2F%2F%20the%20overridden%20method%2C%20it%20can%20be%20called%20from%20the%20new%20method%2E%20The%20overridden%0A%20%20%2F%2F%20method%20can%20be%20called%20like%20a%20regular%20function%2C%20it%20has%20the%20target%20permanently%0A%20%20%2F%2F%20bound%20to%20it%20so%20%22this%22%20will%20work%20correctly%2E%0A%20%20function%20overrideMethod%28target%2C%20methodName%2C%20funcSource%29%20%7B%0A%20%20%20%20var%20superFunc%20%3D%20target%5BmethodName%5D%20%7C%7C%20function%28%29%20%7B%7D%3B%0A%20%20%20%20var%20superFuncBound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20superFunc%2Eapply%28target%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20target%5BmethodName%5D%20%3D%20funcSource%28superFuncBound%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20a%20vague%20facsimilie%20of%20jQuery%27s%20data%20method%0A%20%20function%20elementData%28el%2C%20name%2C%20value%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%3B%0A%20%20%20%20%7D%20else%20if%20%28arguments%2Elength%20%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%20%3D%20value%3B%0A%20%20%20%20%20%20return%20el%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Wrong%20number%20of%20arguments%20for%20elementData%3A%20%22%20%2B%0A%20%20%20%20%20%20%20%20arguments%2Elength%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F3446170%2Fescape%2Dstring%2Dfor%2Duse%2Din%2Djavascript%2Dregex%0A%20%20function%20escapeRegExp%28str%29%20%7B%0A%20%20%20%20return%20str%2Ereplace%28%2F%5B%5C%2D%5C%5B%5C%5D%5C%2F%5C%7B%5C%7D%5C%28%5C%29%5C%2A%5C%2B%5C%3F%5C%2E%5C%5C%5C%5E%5C%24%5C%7C%5D%2Fg%2C%20%22%5C%5C%24%26%22%29%3B%0A%20%20%7D%0A%0A%20%20function%20hasClass%28el%2C%20className%29%20%7B%0A%20%20%20%20var%20re%20%3D%20new%20RegExp%28%22%5C%5Cb%22%20%2B%20escapeRegExp%28className%29%20%2B%20%22%5C%5Cb%22%29%3B%0A%20%20%20%20return%20re%2Etest%28el%2EclassName%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20elements%20%2D%20array%20%28or%20array%2Dlike%20object%29%20of%20HTML%20elements%0A%20%20%2F%2F%20className%20%2D%20class%20name%20to%20test%20for%0A%20%20%2F%2F%20include%20%2D%20if%20true%2C%20only%20return%20elements%20with%20given%20className%3B%0A%20%20%2F%2F%20%20%20if%20false%2C%20only%20return%20elements%20%2Awithout%2A%20given%20className%0A%20%20function%20filterByClass%28elements%2C%20className%2C%20include%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20elements%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28hasClass%28elements%5Bi%5D%2C%20className%29%20%3D%3D%20include%29%0A%20%20%20%20%20%20%20%20results%2Epush%28elements%5Bi%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%0A%20%20function%20on%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EaddEventListener%29%20%7B%0A%20%20%20%20%20%20obj%2EaddEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20%7D%20else%20if%20%28obj%2EattachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EattachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20off%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EremoveEventListener%29%0A%20%20%20%20%20%20obj%2EremoveEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20else%20if%20%28obj%2EdetachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EdetachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Translate%20array%20of%20values%20to%20top%2Fright%2Fbottom%2Fleft%2C%20as%20usual%20with%0A%20%20%2F%2F%20the%20%22padding%22%20CSS%20property%0A%20%20%2F%2F%20https%3A%2F%2Fdeveloper%2Emozilla%2Eorg%2Fen%2DUS%2Fdocs%2FWeb%2FCSS%2Fpadding%0A%20%20function%20unpackPadding%28value%29%20%7B%0A%20%20%20%20if%20%28typeof%28value%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20value%20%3D%20%5Bvalue%5D%3B%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B0%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B0%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%204%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B3%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Convert%20an%20unpacked%20padding%20object%20to%20a%20CSS%20value%0A%20%20function%20paddingToCss%28paddingObj%29%20%7B%0A%20%20%20%20return%20paddingObj%2Etop%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eright%20%2B%20%22px%20%22%20%2B%20paddingObj%2Ebottom%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eleft%20%2B%20%22px%22%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Makes%20a%20number%20suitable%20for%20CSS%0A%20%20function%20px%28x%29%20%7B%0A%20%20%20%20if%20%28typeof%28x%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20return%20x%20%2B%20%22px%22%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20x%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Retrieves%20runtime%20widget%20sizing%20information%20for%20an%20element%2E%0A%20%20%2F%2F%20The%20return%20value%20is%20either%20null%2C%20or%20an%20object%20with%20fill%2C%20padding%2C%0A%20%20%2F%2F%20defaultWidth%2C%20defaultHeight%20fields%2E%0A%20%20function%20sizingPolicy%28el%29%20%7B%0A%20%20%20%20var%20sizingEl%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fhtmlwidget%2Dsizing%27%5D%22%29%3B%0A%20%20%20%20if%20%28%21sizingEl%29%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20sp%20%3D%20JSON%2Eparse%28sizingEl%2EtextContent%20%7C%7C%20sizingEl%2Etext%20%7C%7C%20%22%7B%7D%22%29%3B%0A%20%20%20%20if%20%28viewerMode%29%20%7B%0A%20%20%20%20%20%20return%20sp%2Eviewer%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20sp%2Ebrowser%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20initSizing%28el%29%20%7B%0A%20%20%20%20var%20sizing%20%3D%20sizingPolicy%28el%29%3B%0A%20%20%20%20if%20%28%21sizing%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20cel%20%3D%20document%2EgetElementById%28%22htmlwidget%5Fcontainer%22%29%3B%0A%20%20%20%20if%20%28%21cel%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20if%20%28typeof%28sizing%2Epadding%29%20%21%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Emargin%20%3D%20%220%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Epadding%20%3D%20paddingToCss%28unpackPadding%28sizing%2Epadding%29%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28sizing%2Efill%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eoverflow%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20if%20%28cel%29%20%7B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eposition%20%3D%20%22absolute%22%3B%0A%20%20%20%20%20%20%20%20var%20pad%20%3D%20unpackPadding%28sizing%2Epadding%29%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Etop%20%3D%20pad%2Etop%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eright%20%3D%20pad%2Eright%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Ebottom%20%3D%20pad%2Ebottom%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eleft%20%3D%20pad%2Eleft%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20cel%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20cel%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20px%28sizing%2Ewidth%29%3B%0A%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20px%28sizing%2Eheight%29%3B%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20el%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20el%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Default%20implementations%20for%20methods%0A%20%20var%20defaults%20%3D%20%7B%0A%20%20%20%20find%3A%20function%28scope%29%20%7B%0A%20%20%20%20%20%20return%20querySelectorAll%28scope%2C%20%22%2E%22%20%2B%20this%2Ename%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20renderError%3A%20function%28el%2C%20err%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%0A%20%20%20%20%20%20this%2EclearError%28el%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Add%20all%20these%20error%20classes%2C%20as%20Shiny%20does%0A%20%20%20%20%20%20var%20errClass%20%3D%20%22shiny%2Doutput%2Derror%22%3B%0A%20%20%20%20%20%20if%20%28err%2Etype%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20use%20the%20classes%20of%20the%20error%20condition%20as%20CSS%20class%20names%0A%20%20%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20%22%20%2B%20%24%2Emap%28asArray%28err%2Etype%29%2C%20function%28type%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20errClass%20%2B%20%22%2D%22%20%2B%20type%3B%0A%20%20%20%20%20%20%20%20%7D%29%2Ejoin%28%22%20%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20htmlwidgets%2Derror%22%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Is%20el%20inline%20or%20block%3F%20If%20inline%20or%20inline%2Dblock%2C%20just%20display%3Anone%20it%0A%20%20%20%20%20%20%2F%2F%20and%20add%20an%20inline%20error%2E%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Ecss%28%22display%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20display%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20%24el%2Ehide%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorSpan%20%3D%20%24%28%22%3Cspan%3E%22%29%2EaddClass%28errClass%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorSpan%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorSpan%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20block%2C%20add%20an%20error%20just%20after%20the%20el%2C%20set%20visibility%3Anone%20on%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20el%2C%20and%20position%20the%20error%20to%20be%20on%20top%20of%20the%20el%2E%0A%20%20%20%20%20%20%20%20%2F%2F%20Mark%20it%20with%20a%20unique%20ID%20and%20CSS%20class%20so%20we%20can%20remove%20it%20later%2E%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorDiv%20%3D%20%24%28%22%3Cdiv%3E%22%29%2EaddClass%28errClass%29%2Ecss%28%22position%22%2C%20%22absolute%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20setting%20width%20can%20push%20out%20the%20page%20size%2C%20forcing%20otherwise%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20unnecessary%20scrollbars%20to%20appear%20and%20making%20it%20impossible%20for%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20element%20to%20shrink%3B%20so%20use%20max%2Dwidth%20instead%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorDiv%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorDiv%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Really%20dumb%20way%20to%20keep%20the%20size%2Fposition%20of%20the%20error%20in%20sync%20with%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20parent%20element%20as%20the%20window%20is%20resized%20or%20whatever%2E%0A%20%20%20%20%20%20%20%20%20%20var%20intId%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21errorDiv%5B0%5D%2EparentElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20clearInterval%28intId%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20errorDiv%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20clearError%3A%20function%28el%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20null%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28display%29%0A%20%20%20%20%20%20%20%20%20%20%24el%2Ecss%28%22display%22%2C%20display%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%7B%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22inherit%22%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20sizing%3A%20%7B%7D%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Called%20by%20widget%20bindings%20to%20register%20a%20new%20type%20of%20widget%2E%20The%20definition%0A%20%20%2F%2F%20object%20can%20contain%20the%20following%20properties%3A%0A%20%20%2F%2F%20%2D%20name%20%28required%29%20%2D%20A%20string%20indicating%20the%20binding%20name%2C%20which%20will%20be%0A%20%20%2F%2F%20%20%20used%20by%20default%20as%20the%20CSS%20classname%20to%20look%20for%2E%0A%20%20%2F%2F%20%2D%20initialize%20%28optional%29%20%2D%20A%20function%28el%29%20that%20will%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20widget%20element%3B%20if%20a%20value%20is%20returned%2C%20it%20will%20be%20passed%20as%20the%20third%0A%20%20%2F%2F%20%20%20value%20to%20renderValue%2E%0A%20%20%2F%2F%20%2D%20renderValue%20%28required%29%20%2D%20A%20function%28el%2C%20data%2C%20initValue%29%20that%20will%20be%0A%20%20%2F%2F%20%20%20called%20with%20data%2E%20Static%20contexts%20will%20cause%20this%20to%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20element%3B%20Shiny%20apps%20will%20cause%20this%20to%20be%20called%20multiple%20times%20per%0A%20%20%2F%2F%20%20%20element%2C%20as%20the%20data%20changes%2E%0A%20%20window%2EHTMLWidgets%2Ewidget%20%3D%20function%28definition%29%20%7B%0A%20%20%20%20if%20%28%21definition%2Ename%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20name%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21definition%2Etype%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20type%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Currently%20we%20only%20support%20output%20widgets%0A%20%20%20%20if%20%28definition%2Etype%20%21%3D%3D%20%22output%22%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Unrecognized%20widget%20type%20%27%22%20%2B%20definition%2Etype%20%2B%20%22%27%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20TODO%3A%20Verify%20that%20%2Ename%20is%20a%20valid%20CSS%20classname%0A%20%20%20%20if%20%28%21definition%2ErenderValue%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20renderValue%20function%22%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20For%20static%20rendering%20%28non%2DShiny%29%2C%20use%20a%20simple%20widget%20registration%0A%20%20%20%20%2F%2F%20scheme%2E%20We%20also%20use%20this%20scheme%20for%20Shiny%20apps%2Fdocuments%20that%20also%0A%20%20%20%20%2F%2F%20contain%20static%20widgets%2E%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20%2F%2F%20Merge%20defaults%20into%20the%20definition%3B%20don%27t%20mutate%20the%20original%20definition%2E%0A%20%20%20%20var%20staticBinding%20%3D%20extend%28%7B%7D%2C%20defaults%2C%20definition%29%3B%0A%20%20%20%20overrideMethod%28staticBinding%2C%20%22find%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20return%20function%28scope%29%20%7B%0A%20%20%20%20%20%20%20%20var%20results%20%3D%20superfunc%28scope%29%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Filter%20out%20Shiny%20outputs%2C%20we%20only%20want%20the%20static%20kind%0A%20%20%20%20%20%20%20%20return%20filterByClass%28results%2C%20%22html%2Dwidget%2Doutput%22%2C%20false%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%2Epush%28staticBinding%29%3B%0A%0A%20%20%20%20if%20%28shinyMode%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Shiny%20is%20running%2E%20Register%20the%20definition%20as%20an%20output%20binding%2E%0A%0A%20%20%20%20%20%20%2F%2F%20Merge%20defaults%20into%20the%20definition%3B%20don%27t%20mutate%20the%20original%20definition%2E%0A%20%20%20%20%20%20%2F%2F%20The%20base%20object%20is%20a%20Shiny%20output%20binding%20if%20we%27re%20running%20in%20Shiny%20mode%2C%0A%20%20%20%20%20%20%2F%2F%20or%20an%20empty%20object%20if%20we%27re%20not%2E%0A%20%20%20%20%20%20var%20shinyBinding%20%3D%20extend%28new%20Shiny%2EOutputBinding%28%29%2C%20defaults%2C%20definition%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Wrap%20renderValue%20to%20handle%20initialization%2C%20which%20unfortunately%20isn%27t%0A%20%20%20%20%20%20%2F%2F%20supported%20natively%20by%20Shiny%20at%20the%20time%20of%20this%20writing%2E%0A%0A%20%20%20%20%20%20%2F%2F%20NB%3A%20shinyBinding%2Einitialize%20may%20be%20undefined%2C%20as%20it%27s%20optional%2E%0A%0A%20%20%20%20%20%20%2F%2F%20Rename%20initialize%20to%20make%20sure%20it%20isn%27t%20called%20by%20a%20future%20version%0A%20%20%20%20%20%20%2F%2F%20of%20Shiny%20that%20does%20support%20initialize%20directly%2E%0A%20%20%20%20%20%20shinyBinding%2E%5Fhtmlwidgets%5Finitialize%20%3D%20shinyBinding%2Einitialize%3B%0A%20%20%20%20%20%20delete%20shinyBinding%2Einitialize%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22find%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28scope%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20var%20results%20%3D%20superfunc%28scope%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Only%20return%20elements%20that%20are%20Shiny%20outputs%2C%20not%20static%20ones%0A%20%20%20%20%20%20%20%20%20%20var%20dynamicResults%20%3D%20results%2Efilter%28%22%2Ehtml%2Dwidget%2Doutput%22%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20It%27s%20possible%20that%20whatever%20caused%20Shiny%20to%20think%20there%20might%20be%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20new%20dynamic%20outputs%2C%20also%20caused%20there%20to%20be%20new%20static%20outputs%2E%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Since%20there%20might%20be%20lots%20of%20different%20htmlwidgets%20bindings%2C%20we%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20schedule%20execution%20for%20later%2D%2Dno%20need%20to%20staticRender%20multiple%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20times%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28results%2Elength%20%21%3D%3D%20dynamicResults%2Elength%29%0A%20%20%20%20%20%20%20%20%20%20%20%20scheduleStaticRender%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20return%20dynamicResults%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22renderValue%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28el%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20data%2Eevals%20%26%26%20i%20%3C%20data%2Eevals%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21this%2ErenderOnNullValue%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28data%2Ex%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22inherit%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20initSizing%28el%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22initialized%22%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28this%2E%5Fhtmlwidgets%5Finitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20this%2E%5Fhtmlwidgets%5Finitialize%28el%2C%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22init%5Fresult%22%2C%20result%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20Shiny%2ErenderDependencies%28data%2Edeps%29%3B%0A%20%20%20%20%20%20%20%20%20%20superfunc%28el%2C%20data%2Ex%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22resize%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28el%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Shiny%20can%20call%20resize%20before%20initialize%2FrenderValue%20have%20been%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20called%2C%20which%20doesn%27t%20make%20sense%20for%20widgets%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20superfunc%28el%2C%20width%2C%20height%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20Shiny%2EoutputBindings%2Eregister%28shinyBinding%2C%20shinyBinding%2Ename%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20var%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20function%20scheduleStaticRender%28%29%20%7B%0A%20%20%20%20if%20%28%21scheduleStaticRenderTimerId%29%20%7B%0A%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%20%20%7D%2C%201%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Render%20static%20widgets%20after%20the%20document%20finishes%20loading%0A%20%20%2F%2F%20Statically%20render%20all%20elements%20that%20are%20of%20this%20widget%27s%20class%0A%20%20function%20staticRender%28%29%20%7B%0A%20%20%20%20var%20bindings%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20bindings%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20binding%20%3D%20bindings%5Bi%5D%3B%0A%20%20%20%20%20%20var%20matches%20%3D%20binding%2Efind%28document%2EdocumentElement%29%3B%0A%20%20%20%20%20%20for%20%28var%20j%20%3D%200%3B%20j%20%3C%20matches%2Elength%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20var%20el%20%3D%20matches%5Bj%5D%3B%0A%20%20%20%20%20%20%20%20var%20sizeObj%20%3D%20initSizing%28el%2C%20binding%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28hasClass%28el%2C%20%22html%2Dwidget%2Dstatic%2Dbound%22%29%29%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20el%2EclassName%20%3D%20el%2EclassName%20%2B%20%22%20html%2Dwidget%2Dstatic%2Dbound%22%3B%0A%0A%20%20%20%20%20%20%20%20var%20initResult%3B%0A%20%20%20%20%20%20%20%20if%20%28binding%2Einitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20initResult%20%3D%20binding%2Einitialize%28el%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28binding%2Eresize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lastSize%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20on%28window%2C%20%22resize%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20size%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20w%3A%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20h%3A%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%200%20%26%26%20size%2Eh%20%3D%3D%3D%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%20lastSize%2Ew%20%26%26%20size%2Eh%20%3D%3D%3D%20lastSize%2Eh%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20lastSize%20%3D%20size%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20binding%2Eresize%28el%2C%20size%2Ew%2C%20size%2Eh%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20var%20scriptData%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fjson%27%5D%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28scriptData%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20data%20%3D%20JSON%2Eparse%28scriptData%2EtextContent%20%7C%7C%20scriptData%2Etext%29%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20data%2Eevals%20%26%26%20i%20%3C%20data%2Eevals%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20binding%2ErenderValue%28el%2C%20data%2Ex%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Wait%20until%20after%20the%20document%20has%20loaded%20to%20render%20the%20widgets%2E%0A%20%20if%20%28document%2EaddEventListener%29%20%7B%0A%20%20%20%20document%2EaddEventListener%28%22DOMContentLoaded%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20document%2EremoveEventListener%28%22DOMContentLoaded%22%2C%20arguments%2Ecallee%2C%20false%29%3B%0A%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%7D%20else%20if%20%28document%2EattachEvent%29%20%7B%0A%20%20%20%20document%2EattachEvent%28%22onreadystatechange%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28document%2EreadyState%20%3D%3D%3D%20%22complete%22%29%20%7B%0A%20%20%20%20%20%20%20%20document%2EdetachEvent%28%22onreadystatechange%22%2C%20arguments%2Ecallee%29%3B%0A%20%20%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%0A%0A%20%20window%2EHTMLWidgets%2EgetAttachmentUrl%20%3D%20function%28depname%2C%20key%29%20%7B%0A%20%20%20%20%2F%2F%20If%20no%20key%2C%20default%20to%20the%20first%20item%0A%20%20%20%20if%20%28typeof%28key%29%20%3D%3D%3D%20%22undefined%22%29%0A%20%20%20%20%20%20key%20%3D%201%3B%0A%0A%20%20%20%20var%20link%20%3D%20document%2EgetElementById%28depname%20%2B%20%22%2D%22%20%2B%20key%20%2B%20%22%2Dattachment%22%29%3B%0A%20%20%20%20if%20%28%21link%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Attachment%20%22%20%2B%20depname%20%2B%20%22%2F%22%20%2B%20key%20%2B%20%22%20not%20found%20in%20document%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20link%2EgetAttribute%28%22href%22%29%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EdataframeToD3%20%3D%20function%28df%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20length%3B%0A%20%20%20%20for%20%28var%20name%20in%20df%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28df%2EhasOwnProperty%28name%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20names%2Epush%28name%29%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%28df%5Bname%5D%29%20%21%3D%3D%20%22object%22%20%7C%7C%20typeof%28df%5Bname%5D%2Elength%29%20%3D%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28typeof%28length%29%20%21%3D%3D%20%22undefined%22%20%26%26%20length%20%21%3D%3D%20df%5Bname%5D%2Elength%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%20of%20the%20same%20length%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20length%20%3D%20df%5Bname%5D%2Elength%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20item%3B%0A%20%20%20%20for%20%28var%20row%20%3D%200%3B%20row%20%3C%20length%3B%20row%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20item%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20col%20%3D%200%3B%20col%20%3C%20names%2Elength%3B%20col%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20item%5Bnames%5Bcol%5D%5D%20%3D%20df%5Bnames%5Bcol%5D%5D%5Brow%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20results%2Epush%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EtransposeArray2D%20%3D%20function%28array%29%20%7B%0A%20%20%20%20%20%20var%20newArray%20%3D%20array%5B0%5D%2Emap%28function%28col%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20array%2Emap%28function%28row%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20row%5Bi%5D%0A%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20newArray%3B%0A%20%20%7D%3B%0A%20%20%2F%2F%20Split%20value%20at%20splitChar%2C%20but%20allow%20splitChar%20to%20be%20escaped%0A%20%20%2F%2F%20using%20escapeChar%2E%20Any%20other%20characters%20escaped%20by%20escapeChar%0A%20%20%2F%2F%20will%20be%20included%20as%20usual%20%28including%20escapeChar%20itself%29%2E%0A%20%20function%20splitWithEscape%28value%2C%20splitChar%2C%20escapeChar%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20escapeMode%20%3D%20false%3B%0A%20%20%20%20var%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20for%20%28var%20pos%20%3D%200%3B%20pos%20%3C%20value%2Elength%3B%20pos%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28%21escapeMode%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20splitChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20escapeChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20escapeMode%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20escapeMode%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28currentResult%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%20%20%2F%2F%20Function%20authored%20by%20Yihui%2FJJ%20Allaire%0A%20%20window%2EHTMLWidgets%2EevaluateStringMember%20%3D%20function%28o%2C%20member%29%20%7B%0A%20%20%20%20var%20parts%20%3D%20splitWithEscape%28member%2C%20%27%2E%27%2C%20%27%5C%5C%27%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20l%20%3D%20parts%2Elength%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20part%20%3D%20parts%5Bi%5D%3B%0A%20%20%20%20%20%20%2F%2F%20part%20may%20be%20a%20character%20or%20%27numeric%27%20member%20name%0A%20%20%20%20%20%20if%20%28o%20%21%3D%3D%20null%20%26%26%20typeof%20o%20%3D%3D%3D%20%22object%22%20%26%26%20part%20in%20o%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28i%20%3D%3D%20%28l%20%2D%201%29%29%20%7B%20%2F%2F%20if%20we%20are%20at%20the%20end%20of%20the%20line%20then%20evalulate%0A%20%20%20%20%20%20%20%20%20%20if%20%28typeof%20o%5Bpart%5D%20%3D%3D%3D%20%22string%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20o%5Bpart%5D%20%3D%20eval%28%22%28%22%20%2B%20o%5Bpart%5D%20%2B%20%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%20%2F%2F%20otherwise%20continue%20to%20next%20embedded%20object%0A%20%20%20%20%20%20%20%20%20%20o%20%3D%20o%5Bpart%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%7D%29%28%29%3B%0A%0A&quot;&gt;&lt;/script&gt;&#10;&lt;script src=&quot;data:application/x-javascript,%2F%2F%20svg%2Dpan%2Dzoom%20v3%2E1%2E0%0A%2F%2F%20https%3A%2F%2Fgithub%2Ecom%2Fariutta%2Fsvg%2Dpan%2Dzoom%0A%28function%20e%28t%2Cn%2Cr%29%7Bfunction%20s%28o%2Cu%29%7Bif%28%21n%5Bo%5D%29%7Bif%28%21t%5Bo%5D%29%7Bvar%20a%3Dtypeof%20require%3D%3D%22function%22%26%26require%3Bif%28%21u%26%26a%29return%20a%28o%2C%210%29%3Bif%28i%29return%20i%28o%2C%210%29%3Bvar%20f%3Dnew%20Error%28%22Cannot%20find%20module%20%27%22%2Bo%2B%22%27%22%29%3Bthrow%20f%2Ecode%3D%22MODULE%5FNOT%5FFOUND%22%2Cf%7Dvar%20l%3Dn%5Bo%5D%3D%7Bexports%3A%7B%7D%7D%3Bt%5Bo%5D%5B0%5D%2Ecall%28l%2Eexports%2Cfunction%28e%29%7Bvar%20n%3Dt%5Bo%5D%5B1%5D%5Be%5D%3Breturn%20s%28n%3Fn%3Ae%29%7D%2Cl%2Cl%2Eexports%2Ce%2Ct%2Cn%2Cr%29%7Dreturn%20n%5Bo%5D%2Eexports%7Dvar%20i%3Dtypeof%20require%3D%3D%22function%22%26%26require%3Bfor%28var%20o%3D0%3Bo%3Cr%2Elength%3Bo%2B%2B%29s%28r%5Bo%5D%29%3Breturn%20s%7D%29%28%7B1%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20svgPanZoom%20%3D%20require%28%27%2E%2Fsvg%2Dpan%2Dzoom%2Ejs%27%29%3B%0A%0A%2F%2F%20UMD%20module%20definition%0A%28function%28window%2C%20document%29%7B%0A%20%20%2F%2F%20AMD%0A%20%20if%20%28typeof%20define%20%3D%3D%3D%20%27function%27%20%26%26%20define%2Eamd%29%20%7B%0A%20%20%20%20define%28%27svg%2Dpan%2Dzoom%27%2C%20function%20%28%29%20%7B%0A%20%20%20%20%20%20return%20svgPanZoom%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%2F%2F%20CMD%0A%20%20%7D%20else%20if%20%28typeof%20module%20%21%3D%3D%20%27undefined%27%20%26%26%20module%2Eexports%29%20%7B%0A%20%20%20%20module%2Eexports%20%3D%20svgPanZoom%3B%0A%0A%20%20%20%20%2F%2F%20Browser%0A%20%20%20%20%2F%2F%20Keep%20exporting%20globally%20as%20module%2Eexports%20is%20available%20because%20of%20browserify%0A%20%20%20%20window%2EsvgPanZoom%20%3D%20svgPanZoom%3B%0A%20%20%7D%0A%7D%29%28window%2C%20document%29%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dpan%2Dzoom%2Ejs%22%3A5%7D%5D%2C2%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0A%28function%28factory%29%7B%0A%20%20if%20%28%20typeof%20define%20%3D%3D%3D%20%27function%27%20%26%26%20define%2Eamd%20%29%20%7B%0A%20%20%20%20%2F%2F%20AMD%2E%20Register%20as%20an%20anonymous%20module%2E%0A%20%20%20%20define%28%5B%5D%2C%20factory%28%29%29%3B%0A%20%20%7D%20else%20if%20%28typeof%20exports%20%3D%3D%3D%20%27object%27%29%20%7B%0A%20%20%20%20%2F%2F%20Node%2FCommonJS%0A%20%20%20%20module%2Eexports%20%3D%20factory%28%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Browser%20globals%0A%20%20%20%20window%2Ewheel%20%3D%20factory%28%29%3B%0A%20%20%7D%0A%7D%0A%28function%28%29%7B%0A%0A%20%20%2F%2FFull%20details%3A%20https%3A%2F%2Fdeveloper%2Emozilla%2Eorg%2Fen%2DUS%2Fdocs%2FWeb%2FReference%2FEvents%2Fwheel%0A%0A%20%20var%20prefix%20%3D%20%22%22%2C%20%5FaddEventListener%2C%20%5FremoveEventListener%2C%20onwheel%2C%20support%2C%20fns%20%3D%20%5B%5D%3B%0A%0A%20%20%2F%2F%20detect%20event%20model%0A%20%20if%20%28%20window%2EaddEventListener%20%29%20%7B%0A%20%20%20%20%5FaddEventListener%20%3D%20%22addEventListener%22%3B%0A%20%20%20%20%5FremoveEventListener%20%3D%20%22removeEventListener%22%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%5FaddEventListener%20%3D%20%22attachEvent%22%3B%0A%20%20%20%20%5FremoveEventListener%20%3D%20%22detachEvent%22%3B%0A%20%20%20%20prefix%20%3D%20%22on%22%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20detect%20available%20wheel%20event%0A%20%20support%20%3D%20%22onwheel%22%20in%20document%2EcreateElement%28%22div%22%29%20%3F%20%22wheel%22%20%3A%20%2F%2F%20Modern%20browsers%20support%20%22wheel%22%0A%20%20%20%20%20%20%20%20%20%20%20%20document%2Eonmousewheel%20%21%3D%3D%20undefined%20%3F%20%22mousewheel%22%20%3A%20%2F%2F%20Webkit%20and%20IE%20support%20at%20least%20%22mousewheel%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%22DOMMouseScroll%22%3B%20%2F%2F%20let%27s%20assume%20that%20remaining%20browsers%20are%20older%20Firefox%0A%0A%0A%20%20function%20createCallback%28element%2Ccallback%2Ccapture%29%20%7B%0A%0A%20%20%20%20var%20fn%20%3D%20function%28originalEvent%29%20%7B%0A%0A%20%20%20%20%20%20%21originalEvent%20%26%26%20%28%20originalEvent%20%3D%20window%2Eevent%20%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20create%20a%20normalized%20event%20object%0A%20%20%20%20%20%20var%20event%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20keep%20a%20ref%20to%20the%20original%20event%20object%0A%20%20%20%20%20%20%20%20originalEvent%3A%20originalEvent%2C%0A%20%20%20%20%20%20%20%20target%3A%20originalEvent%2Etarget%20%7C%7C%20originalEvent%2EsrcElement%2C%0A%20%20%20%20%20%20%20%20type%3A%20%22wheel%22%2C%0A%20%20%20%20%20%20%20%20deltaMode%3A%20originalEvent%2Etype%20%3D%3D%20%22MozMousePixelScroll%22%20%3F%200%20%3A%201%2C%0A%20%20%20%20%20%20%20%20deltaX%3A%200%2C%0A%20%20%20%20%20%20%20%20delatZ%3A%200%2C%0A%20%20%20%20%20%20%20%20preventDefault%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20originalEvent%2EpreventDefault%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20originalEvent%2EpreventDefault%28%29%20%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20originalEvent%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%2F%2F%20calculate%20deltaY%20%28and%20deltaX%29%20according%20to%20the%20event%0A%20%20%20%20%20%20if%20%28%20support%20%3D%3D%20%22mousewheel%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20event%2EdeltaY%20%3D%20%2D%201%2F40%20%2A%20originalEvent%2EwheelDelta%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Webkit%20also%20support%20wheelDeltaX%0A%20%20%20%20%20%20%20%20originalEvent%2EwheelDeltaX%20%26%26%20%28%20event%2EdeltaX%20%3D%20%2D%201%2F40%20%2A%20originalEvent%2EwheelDeltaX%20%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20event%2EdeltaY%20%3D%20originalEvent%2Edetail%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20it%27s%20time%20to%20fire%20the%20callback%0A%20%20%20%20%20%20return%20callback%28%20event%20%29%3B%0A%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20fns%2Epush%28%7B%0A%20%20%20%20%20%20element%3A%20element%2C%0A%20%20%20%20%20%20fn%3A%20fn%2C%0A%20%20%20%20%20%20capture%3A%20capture%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20return%20fn%3B%0A%20%20%7D%0A%0A%20%20function%20getCallback%28element%2Ccapture%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20fns%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28fns%5Bi%5D%2Eelement%20%3D%3D%3D%20element%20%26%26%20fns%5Bi%5D%2Ecapture%20%3D%3D%3D%20capture%29%20%7B%0A%20%20%20%20%20%20%20%20return%20fns%5Bi%5D%2Efn%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28%29%7B%7D%3B%0A%20%20%7D%0A%0A%20%20function%20removeCallback%28element%2Ccapture%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20fns%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28fns%5Bi%5D%2Eelement%20%3D%3D%3D%20element%20%26%26%20fns%5Bi%5D%2Ecapture%20%3D%3D%3D%20capture%29%20%7B%0A%20%20%20%20%20%20%20%20return%20fns%2Esplice%28i%2C1%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20%5FaddWheelListener%28%20elem%2C%20eventName%2C%20callback%2C%20useCapture%20%29%20%7B%0A%20%20%20%20%0A%20%20%20%20var%20cb%3B%0A%0A%20%20%20%20if%20%28support%20%3D%3D%3D%20%22wheel%22%29%20%7B%0A%20%20%20%20%20%20cb%20%3D%20callback%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20cb%20%3D%20createCallback%28elem%2Ccallback%2CuseCapture%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20elem%5B%20%5FaddEventListener%20%5D%28%20prefix%20%2B%20eventName%2C%20cb%2C%20useCapture%20%7C%7C%20false%20%29%3B%0A%0A%20%20%7D%0A%0A%20%20function%20%5FremoveWheelListener%28%20elem%2C%20eventName%2C%20callback%2C%20useCapture%20%29%20%7B%0A%0A%20%20%20%20if%20%28support%20%3D%3D%3D%20%22wheel%22%29%20%7B%0A%20%20%20%20%20%20cb%20%3D%20callback%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20cb%20%3D%20getCallback%28elem%2CuseCapture%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20elem%5B%20%5FremoveEventListener%20%5D%28%20prefix%20%2B%20eventName%2C%20cb%2C%20useCapture%20%7C%7C%20false%20%29%3B%0A%0A%20%20%20%20removeCallback%28elem%2CuseCapture%29%3B%0A%0A%20%20%7D%0A%0A%20%20function%20addWheelListener%28%20elem%2C%20callback%2C%20useCapture%20%29%20%7B%0A%20%20%20%20%5FaddWheelListener%28%20elem%2C%20support%2C%20callback%2C%20useCapture%20%29%3B%0A%0A%20%20%20%20%2F%2F%20handle%20MozMousePixelScroll%20in%20older%20Firefox%0A%20%20%20%20if%28%20support%20%3D%3D%20%22DOMMouseScroll%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%5FaddWheelListener%28%20elem%2C%20%22MozMousePixelScroll%22%2C%20callback%2C%20useCapture%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20removeWheelListener%28elem%2Ccallback%2CuseCapture%29%7B%0A%20%20%20%20%5FremoveWheelListener%28elem%2Csupport%2Ccallback%2CuseCapture%29%3B%0A%0A%20%20%20%20%2F%2F%20handle%20MozMousePixelScroll%20in%20older%20Firefox%0A%20%20%20%20if%28%20support%20%3D%3D%20%22DOMMouseScroll%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%5FremoveWheelListener%28elem%2C%20%22MozMousePixelScroll%22%2C%20callback%2C%20useCapture%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20return%20%7B%0A%20%20%20%20on%3A%20addWheelListener%2C%0A%20%20%20%20off%3A%20removeWheelListener%0A%20%20%7D%3B%0A%0A%7D%29%29%3B%0A%7D%2C%7B%7D%5D%2C3%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%3B%0A%0Amodule%2Eexports%20%3D%20%7B%0A%20%20enable%3A%20function%28instance%29%20%7B%0A%20%20%20%20%2F%2F%20Select%20%28and%20create%20if%20necessary%29%20defs%0A%20%20%20%20var%20defs%20%3D%20instance%2Esvg%2EquerySelector%28%27defs%27%29%0A%20%20%20%20if%20%28%21defs%29%20%7B%0A%20%20%20%20%20%20defs%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27defs%27%29%0A%20%20%20%20%20%20instance%2Esvg%2EappendChild%28defs%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Create%20style%20element%0A%20%20%20%20var%20style%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27style%27%29%0A%20%20%20%20style%2EsetAttribute%28%27type%27%2C%20%27text%2Fcss%27%29%0A%20%20%20%20style%2EtextContent%20%3D%20%27%2Esvg%2Dpan%2Dzoom%2Dcontrol%20%7B%20cursor%3A%20pointer%3B%20fill%3A%20black%3B%20fill%2Dopacity%3A%200%2E333%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%3Ahover%20%7B%20fill%2Dopacity%3A%200%2E8%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%20%7B%20fill%3A%20white%3B%20fill%2Dopacity%3A%200%2E5%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%20%7B%20fill%2Dopacity%3A%200%2E8%3B%20%7D%27%0A%20%20%20%20defs%2EappendChild%28style%29%0A%0A%0A%20%20%20%20%2F%2F%20Zoom%20Group%0A%20%20%20%20var%20zoomGroup%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrols%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27transform%27%2C%20%27translate%28%27%20%2B%20%28%20instance%2Ewidth%20%2D%2070%20%29%20%2B%20%27%20%27%20%2B%20%28%20instance%2Eheight%20%2D%2076%20%29%20%2B%20%27%29%20scale%280%2E75%29%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%0A%20%20%20%20%2F%2F%20Control%20elements%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomIn%28instance%29%29%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomReset%28instance%29%29%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomOut%28instance%29%29%0A%0A%20%20%20%20%2F%2F%20Finally%20append%20created%20element%0A%20%20%20%20instance%2Esvg%2EappendChild%28zoomGroup%29%0A%0A%20%20%20%20%2F%2F%20Cache%20control%20instance%0A%20%20%20%20instance%2EcontrolIcons%20%3D%20zoomGroup%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomIn%3A%20function%28instance%29%20%7B%0A%20%20%20%20var%20zoomIn%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dzoom%2Din%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27transform%27%2C%20%27translate%2830%2E5%205%29%20scale%280%2E015%29%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20zoomIn%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomIn%28%29%7D%2C%20false%29%0A%20%20%20%20zoomIn%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomIn%28%29%7D%2C%20false%29%0A%0A%20%20%20%20var%20zoomInBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27x%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27y%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27width%27%2C%20%271500%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27height%27%2C%20%271400%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20zoomIn%2EappendChild%28zoomInBackground%29%3B%0A%0A%20%20%20%20var%20zoomInShape%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20zoomInShape%2EsetAttribute%28%27d%27%2C%20%27M1280%20576v128q0%2026%20%2D19%2045t%2D45%2019h%2D320v320q0%2026%20%2D19%2045t%2D45%2019h%2D128q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D320h%2D320q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D128q0%20%2D26%2019%20%2D45t45%20%2D19h320v%2D320q0%20%2D26%2019%20%2D45t45%20%2D19h128q26%200%2045%2019t19%2045v320h320q26%200%2045%2019t19%2045zM1536%201120v%2D960%20q0%20%2D119%20%2D84%2E5%20%2D203%2E5t%2D203%2E5%20%2D84%2E5h%2D960q%2D119%200%20%2D203%2E5%2084%2E5t%2D84%2E5%20203%2E5v960q0%20119%2084%2E5%20203%2E5t203%2E5%2084%2E5h960q119%200%20203%2E5%20%2D84%2E5t84%2E5%20%2D203%2E5z%27%29%3B%0A%20%20%20%20zoomInShape%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20zoomIn%2EappendChild%28zoomInShape%29%3B%0A%0A%20%20%20%20return%20zoomIn%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomReset%3A%20function%28instance%29%7B%0A%20%20%20%20%2F%2F%20reset%0A%20%20%20%20var%20resetPanZoomControl%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dreset%2Dpan%2Dzoom%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27transform%27%2C%20%27translate%285%2035%29%20scale%280%2E4%29%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2Ereset%28%29%7D%2C%20false%29%3B%0A%20%20%20%20resetPanZoomControl%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2Ereset%28%29%7D%2C%20false%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27x%27%2C%20%272%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27y%27%2C%20%272%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27width%27%2C%20%27182%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27height%27%2C%20%2758%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlBackground%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlShape1%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20resetPanZoomControlShape1%2EsetAttribute%28%27d%27%2C%20%27M33%2E051%2C20%2E632c%2D0%2E742%2D0%2E406%2D1%2E854%2D0%2E609%2D3%2E338%2D0%2E609h%2D7%2E969v9%2E281h7%2E769c1%2E543%2C0%2C2%2E701%2D0%2E188%2C3%2E473%2D0%2E562c1%2E365%2D0%2E656%2C2%2E048%2D1%2E953%2C2%2E048%2D3%2E891C35%2E032%2C22%2E757%2C34%2E372%2C21%2E351%2C33%2E051%2C20%2E632z%27%29%3B%0A%20%20%20%20resetPanZoomControlShape1%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlShape1%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlShape2%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20resetPanZoomControlShape2%2EsetAttribute%28%27d%27%2C%20%27M170%2E231%2C0%2E5H15%2E847C7%2E102%2C0%2E5%2C0%2E5%2C5%2E708%2C0%2E5%2C11%2E84v38%2E861C0%2E5%2C56%2E833%2C7%2E102%2C61%2E5%2C15%2E847%2C61%2E5h154%2E384c8%2E745%2C0%2C15%2E269%2D4%2E667%2C15%2E269%2D10%2E798V11%2E84C185%2E5%2C5%2E708%2C178%2E976%2C0%2E5%2C170%2E231%2C0%2E5z%20M42%2E837%2C48%2E569h%2D7%2E969c%2D0%2E219%2D0%2E766%2D0%2E375%2D1%2E383%2D0%2E469%2D1%2E852c%2D0%2E188%2D0%2E969%2D0%2E289%2D1%2E961%2D0%2E305%2D2%2E977l%2D0%2E047%2D3%2E211c%2D0%2E03%2D2%2E203%2D0%2E41%2D3%2E672%2D1%2E142%2D4%2E406c%2D0%2E732%2D0%2E734%2D2%2E103%2D1%2E102%2D4%2E113%2D1%2E102h%2D7%2E05v13%2E547h%2D7%2E055V14%2E022h16%2E524c2%2E361%2C0%2E047%2C4%2E178%2C0%2E344%2C5%2E45%2C0%2E891c1%2E272%2C0%2E547%2C2%2E351%2C1%2E352%2C3%2E234%2C2%2E414c0%2E731%2C0%2E875%2C1%2E31%2C1%2E844%2C1%2E737%2C2%2E906s0%2E64%2C2%2E273%2C0%2E64%2C3%2E633c0%2C1%2E641%2D0%2E414%2C3%2E254%2D1%2E242%2C4%2E84s%2D2%2E195%2C2%2E707%2D4%2E102%2C3%2E363c1%2E594%2C0%2E641%2C2%2E723%2C1%2E551%2C3%2E387%2C2%2E73s0%2E996%2C2%2E98%2C0%2E996%2C5%2E402v2%2E32c0%2C1%2E578%2C0%2E063%2C2%2E648%2C0%2E19%2C3%2E211c0%2E19%2C0%2E891%2C0%2E635%2C1%2E547%2C1%2E333%2C1%2E969V48%2E569z%20M75%2E579%2C48%2E569h%2D26%2E18V14%2E022h25%2E336v6%2E117H56%2E454v7%2E336h16%2E781v6H56%2E454v8%2E883h19%2E125V48%2E569z%20M104%2E497%2C46%2E331c%2D2%2E44%2C2%2E086%2D5%2E887%2C3%2E129%2D10%2E34%2C3%2E129c%2D4%2E548%2C0%2D8%2E125%2D1%2E027%2D10%2E731%2D3%2E082s%2D3%2E909%2D4%2E879%2D3%2E909%2D8%2E473h6%2E891c0%2E224%2C1%2E578%2C0%2E662%2C2%2E758%2C1%2E316%2C3%2E539c1%2E196%2C1%2E422%2C3%2E246%2C2%2E133%2C6%2E15%2C2%2E133c1%2E739%2C0%2C3%2E151%2D0%2E188%2C4%2E236%2D0%2E562c2%2E058%2D0%2E719%2C3%2E087%2D2%2E055%2C3%2E087%2D4%2E008c0%2D1%2E141%2D0%2E504%2D2%2E023%2D1%2E512%2D2%2E648c%2D1%2E008%2D0%2E609%2D2%2E607%2D1%2E148%2D4%2E796%2D1%2E617l%2D3%2E74%2D0%2E82c%2D3%2E676%2D0%2E812%2D6%2E201%2D1%2E695%2D7%2E576%2D2%2E648c%2D2%2E328%2D1%2E594%2D3%2E492%2D4%2E086%2D3%2E492%2D7%2E477c0%2D3%2E094%2C1%2E139%2D5%2E664%2C3%2E417%2D7%2E711s5%2E623%2D3%2E07%2C10%2E036%2D3%2E07c3%2E685%2C0%2C6%2E829%2C0%2E965%2C9%2E431%2C2%2E895c2%2E602%2C1%2E93%2C3%2E966%2C4%2E73%2C4%2E093%2C8%2E402h%2D6%2E938c%2D0%2E128%2D2%2E078%2D1%2E057%2D3%2E555%2D2%2E787%2D4%2E43c%2D1%2E154%2D0%2E578%2D2%2E587%2D0%2E867%2D4%2E301%2D0%2E867c%2D1%2E907%2C0%2D3%2E428%2C0%2E375%2D4%2E565%2C1%2E125c%2D1%2E138%2C0%2E75%2D1%2E706%2C1%2E797%2D1%2E706%2C3%2E141c0%2C1%2E234%2C0%2E561%2C2%2E156%2C1%2E682%2C2%2E766c0%2E721%2C0%2E406%2C2%2E25%2C0%2E883%2C4%2E589%2C1%2E43l6%2E063%2C1%2E43c2%2E657%2C0%2E625%2C4%2E648%2C1%2E461%2C5%2E975%2C2%2E508c2%2E059%2C1%2E625%2C3%2E089%2C3%2E977%2C3%2E089%2C7%2E055C108%2E157%2C41%2E624%2C106%2E937%2C44%2E245%2C104%2E497%2C46%2E331z%20M139%2E61%2C48%2E569h%2D26%2E18V14%2E022h25%2E336v6%2E117h%2D18%2E281v7%2E336h16%2E781v6h%2D16%2E781v8%2E883h19%2E125V48%2E569z%20M170%2E337%2C20%2E14h%2D10%2E336v28%2E43h%2D7%2E266V20%2E14h%2D10%2E383v%2D6%2E117h27%2E984V20%2E14z%27%29%3B%0A%20%20%20%20resetPanZoomControlShape2%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlShape2%29%3B%0A%0A%20%20%20%20return%20resetPanZoomControl%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomOut%3A%20function%28instance%29%7B%0A%20%20%20%20%2F%2F%20zoom%20out%0A%20%20%20%20var%20zoomOut%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dzoom%2Dout%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27transform%27%2C%20%27translate%2830%2E5%2070%29%20scale%280%2E015%29%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20zoomOut%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomOut%28%29%7D%2C%20false%29%3B%0A%20%20%20%20zoomOut%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomOut%28%29%7D%2C%20false%29%3B%0A%0A%20%20%20%20var%20zoomOutBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27x%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27y%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27width%27%2C%20%271500%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27height%27%2C%20%271400%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20zoomOut%2EappendChild%28zoomOutBackground%29%3B%0A%0A%20%20%20%20var%20zoomOutShape%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20zoomOutShape%2EsetAttribute%28%27d%27%2C%20%27M1280%20576v128q0%2026%20%2D19%2045t%2D45%2019h%2D896q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D128q0%20%2D26%2019%20%2D45t45%20%2D19h896q26%200%2045%2019t19%2045zM1536%201120v%2D960q0%20%2D119%20%2D84%2E5%20%2D203%2E5t%2D203%2E5%20%2D84%2E5h%2D960q%2D119%200%20%2D203%2E5%2084%2E5t%2D84%2E5%20203%2E5v960q0%20119%2084%2E5%20203%2E5t203%2E5%2084%2E5h960q119%200%20203%2E5%20%2D84%2E5%20t84%2E5%20%2D203%2E5z%27%29%3B%0A%20%20%20%20zoomOutShape%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20zoomOut%2EappendChild%28zoomOutShape%29%3B%0A%0A%20%20%20%20return%20zoomOut%0A%20%20%7D%0A%0A%2C%20disable%3A%20function%28instance%29%20%7B%0A%20%20%20%20if%20%28instance%2EcontrolIcons%29%20%7B%0A%20%20%20%20%20%20instance%2EcontrolIcons%2EparentNode%2EremoveChild%28instance%2EcontrolIcons%29%0A%20%20%20%20%20%20instance%2EcontrolIcons%20%3D%20null%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dutilities%22%3A6%7D%5D%2C4%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%0A%20%20%2C%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%20%20%3B%0A%0Avar%20ShadowViewport%20%3D%20function%28viewport%2C%20options%29%7B%0A%20%20this%2Einit%28viewport%2C%20options%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Initialization%0A%20%2A%0A%20%2A%20%40param%20%20%7BSVGElement%7D%20viewport%0A%20%2A%20%40param%20%20%7BObject%7D%20options%0A%20%2A%2F%0AShadowViewport%2Eprototype%2Einit%20%3D%20function%28viewport%2C%20options%29%20%7B%0A%20%20%2F%2F%20DOM%20Elements%0A%20%20this%2Eviewport%20%3D%20viewport%0A%20%20this%2Eoptions%20%3D%20options%0A%0A%20%20%2F%2F%20State%20cache%0A%20%20this%2EoriginalState%20%3D%20%7Bzoom%3A%201%2C%20x%3A%200%2C%20y%3A%200%7D%0A%20%20this%2EactiveState%20%3D%20%7Bzoom%3A%201%2C%20x%3A%200%2C%20y%3A%200%7D%0A%0A%20%20this%2EupdateCTMCached%20%3D%20Utils%2Eproxy%28this%2EupdateCTM%2C%20this%29%0A%0A%20%20%2F%2F%20Create%20a%20custom%20requestAnimationFrame%20taking%20in%20account%20refreshRate%0A%20%20this%2ErequestAnimationFrame%20%3D%20Utils%2EcreateRequestAnimationFrame%28this%2Eoptions%2ErefreshRate%29%0A%0A%20%20%2F%2F%20ViewBox%0A%20%20this%2EviewBox%20%3D%20%7Bx%3A%200%2C%20y%3A%200%2C%20width%3A%200%2C%20height%3A%200%7D%0A%20%20this%2EcacheViewBox%28%29%0A%0A%20%20%2F%2F%20Process%20CTM%0A%20%20this%2EprocessCTM%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Cache%20initial%20viewBox%20value%0A%20%2A%20If%20no%20viewBox%20is%20defined%2C%20then%20use%20viewport%20size%2Fposition%20instead%20for%20viewBox%20values%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EcacheViewBox%20%3D%20function%28%29%20%7B%0A%20%20var%20svgViewBox%20%3D%20this%2Eoptions%2Esvg%2EgetAttribute%28%27viewBox%27%29%0A%0A%20%20if%20%28svgViewBox%29%20%7B%0A%20%20%20%20var%20viewBoxValues%20%3D%20svgViewBox%2Esplit%28%27%20%27%29%2Emap%28parseFloat%29%0A%0A%20%20%20%20%2F%2F%20Cache%20viewbox%20x%20and%20y%20offset%0A%20%20%20%20this%2EviewBox%2Ex%20%3D%20viewBoxValues%5B0%5D%0A%20%20%20%20this%2EviewBox%2Ey%20%3D%20viewBoxValues%5B1%5D%0A%20%20%20%20this%2EviewBox%2Ewidth%20%3D%20viewBoxValues%5B2%5D%0A%20%20%20%20this%2EviewBox%2Eheight%20%3D%20viewBoxValues%5B3%5D%0A%0A%20%20%20%20var%20zoom%20%3D%20Math%2Emin%28this%2Eoptions%2Ewidth%20%2F%20this%2EviewBox%2Ewidth%2C%20this%2Eoptions%2Eheight%20%2F%20this%2EviewBox%2Eheight%29%0A%0A%20%20%20%20%2F%2F%20Update%20active%20state%0A%20%20%20%20this%2EactiveState%2Ezoom%20%3D%20zoom%0A%20%20%20%20this%2EactiveState%2Ex%20%3D%20%28this%2Eoptions%2Ewidth%20%2D%20this%2EviewBox%2Ewidth%20%2A%20zoom%29%20%2F%202%0A%20%20%20%20this%2EactiveState%2Ey%20%3D%20%28this%2Eoptions%2Eheight%20%2D%20this%2EviewBox%2Eheight%20%2A%20zoom%29%20%2F%202%0A%0A%20%20%20%20%2F%2F%20Force%20updating%20CTM%0A%20%20%20%20this%2EupdateCTMOnNextFrame%28%29%0A%0A%20%20%20%20this%2Eoptions%2Esvg%2EremoveAttribute%28%27viewBox%27%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20bBox%20%3D%20this%2Eviewport%2EgetBBox%28%29%3B%0A%0A%20%20%20%20%2F%2F%20Cache%20viewbox%20sizes%0A%20%20%20%20this%2EviewBox%2Ex%20%3D%20bBox%2Ex%3B%0A%20%20%20%20this%2EviewBox%2Ey%20%3D%20bBox%2Ey%3B%0A%20%20%20%20this%2EviewBox%2Ewidth%20%3D%20bBox%2Ewidth%0A%20%20%20%20this%2EviewBox%2Eheight%20%3D%20bBox%2Eheight%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Recalculate%20viewport%20sizes%20and%20update%20viewBox%20cache%0A%20%2A%2F%0AShadowViewport%2Eprototype%2ErecacheViewBox%20%3D%20function%28%29%20%7B%0A%20%20var%20boundingClientRect%20%3D%20this%2Eviewport%2EgetBoundingClientRect%28%29%0A%20%20%20%20%2C%20viewBoxWidth%20%3D%20boundingClientRect%2Ewidth%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%2C%20viewBoxHeight%20%3D%20boundingClientRect%2Eheight%20%2F%20this%2EgetZoom%28%29%0A%0A%20%20%2F%2F%20Cache%20viewbox%0A%20%20this%2EviewBox%2Ex%20%3D%200%0A%20%20this%2EviewBox%2Ey%20%3D%200%0A%20%20this%2EviewBox%2Ewidth%20%3D%20viewBoxWidth%0A%20%20this%2EviewBox%2Eheight%20%3D%20viewBoxHeight%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Returns%20a%20viewbox%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20viewbox%20object%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetViewBox%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EviewBox%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20initial%20zoom%20and%20pan%20values%2E%20Save%20them%20into%20originalState%0A%20%2A%20Parses%20viewBox%20attribute%20to%20alter%20initial%20sizes%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EprocessCTM%20%3D%20function%28%29%20%7B%0A%20%20var%20newCTM%20%3D%20this%2EgetCTM%28%29%0A%0A%20%20if%20%28this%2Eoptions%2Efit%29%20%7B%0A%20%20%20%20var%20newScale%20%3D%20Math%2Emin%28this%2Eoptions%2Ewidth%2F%28this%2EviewBox%2Ewidth%20%2D%20this%2EviewBox%2Ex%29%2C%20this%2Eoptions%2Eheight%2F%28this%2EviewBox%2Eheight%20%2D%20this%2EviewBox%2Ey%29%29%3B%0A%0A%20%20%20%20newCTM%2Ea%20%3D%20newScale%3B%20%2F%2Fx%2Dscale%0A%20%20%20%20newCTM%2Ed%20%3D%20newScale%3B%20%2F%2Fy%2Dscale%0A%20%20%20%20newCTM%2Ee%20%3D%20%2Dthis%2EviewBox%2Ex%20%2A%20newScale%3B%20%2F%2Fx%2Dtransform%0A%20%20%20%20newCTM%2Ef%20%3D%20%2Dthis%2EviewBox%2Ey%20%2A%20newScale%3B%20%2F%2Fy%2Dtransform%0A%20%20%7D%0A%0A%20%20if%20%28this%2Eoptions%2Ecenter%29%20%7B%0A%20%20%20%20var%20offsetX%20%3D%20%28this%2Eoptions%2Ewidth%20%2D%20%28this%2EviewBox%2Ewidth%20%2B%20this%2EviewBox%2Ex%29%20%2A%20newCTM%2Ea%29%20%2A%200%2E5%0A%20%20%20%20%20%20%2C%20offsetY%20%3D%20%28this%2Eoptions%2Eheight%20%2D%20%28this%2EviewBox%2Eheight%20%2B%20this%2EviewBox%2Ey%29%20%2A%20newCTM%2Ea%29%20%2A%200%2E5%0A%0A%20%20%20%20newCTM%2Ee%20%3D%20offsetX%0A%20%20%20%20newCTM%2Ef%20%3D%20offsetY%0A%20%20%7D%0A%0A%20%20%2F%2F%20Cache%20initial%20values%2E%20Based%20on%20activeState%20and%20fix%2Bcenter%20opitons%0A%20%20this%2EoriginalState%2Ezoom%20%3D%20newCTM%2Ea%0A%20%20this%2EoriginalState%2Ex%20%3D%20newCTM%2Ee%0A%20%20this%2EoriginalState%2Ey%20%3D%20newCTM%2Ef%0A%0A%20%20%2F%2F%20Update%20viewport%20CTM%20and%20cache%20zoom%20and%20pan%0A%20%20this%2EsetCTM%28newCTM%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20originalState%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetOriginalState%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EoriginalState%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20actualState%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetState%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EactiveState%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%20for%20pubilc%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetRelativeZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%20%2F%20this%2EoriginalState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Compute%20zoom%20scale%20for%20pubilc%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EcomputeRelativeZoom%20%3D%20function%28scale%29%20%7B%0A%20%20return%20scale%20%2F%20this%2EoriginalState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20pan%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetPan%20%3D%20function%28%29%20%7B%0A%20%20return%20%7Bx%3A%20this%2EactiveState%2Ex%2C%20y%3A%20this%2EactiveState%2Ey%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20cached%20viewport%20CTM%20value%20that%20can%20be%20safely%20modified%0A%20%2A%0A%20%2A%20%40return%20%7BSVGMatrix%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetCTM%20%3D%20function%28%29%20%7B%0A%20%20var%20safeCTM%20%3D%20this%2Eoptions%2Esvg%2EcreateSVGMatrix%28%29%0A%0A%20%20%2F%2F%20Copy%20values%20manually%20as%20in%20FF%20they%20are%20not%20itterable%0A%20%20safeCTM%2Ea%20%3D%20this%2EactiveState%2Ezoom%0A%20%20safeCTM%2Eb%20%3D%200%0A%20%20safeCTM%2Ec%20%3D%200%0A%20%20safeCTM%2Ed%20%3D%20this%2EactiveState%2Ezoom%0A%20%20safeCTM%2Ee%20%3D%20this%2EactiveState%2Ex%0A%20%20safeCTM%2Ef%20%3D%20this%2EactiveState%2Ey%0A%0A%20%20return%20safeCTM%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20a%20new%20CTM%0A%20%2A%0A%20%2A%20%40param%20%7BSVGMatrix%7D%20newCTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EsetCTM%20%3D%20function%28newCTM%29%20%7B%0A%20%20var%20willZoom%20%3D%20this%2EisZoomDifferent%28newCTM%29%0A%20%20%20%20%2C%20willPan%20%3D%20this%2EisPanDifferent%28newCTM%29%0A%0A%20%20if%20%28willZoom%20%7C%7C%20willPan%29%20%7B%0A%20%20%20%20%2F%2F%20Before%20zoom%0A%20%20%20%20if%20%28willZoom%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20returns%20false%20then%20cancel%20zooming%0A%20%20%20%20%20%20if%20%28this%2Eoptions%2EbeforeZoom%28this%2EgetRelativeZoom%28%29%2C%20this%2EcomputeRelativeZoom%28newCTM%2Ea%29%29%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20newCTM%2Ea%20%3D%20newCTM%2Ed%20%3D%20this%2EactiveState%2Ezoom%0A%20%20%20%20%20%20%20%20willZoom%20%3D%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Before%20pan%0A%20%20%20%20if%20%28willPan%29%20%7B%0A%20%20%20%20%20%20var%20preventPan%20%3D%20this%2Eoptions%2EbeforePan%28this%2EgetPan%28%29%2C%20%7Bx%3A%20newCTM%2Ee%2C%20y%3A%20newCTM%2Ef%7D%29%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20prevent%20pan%20is%20an%20object%0A%20%20%20%20%20%20%20%20%2C%20preventPanX%20%3D%20false%0A%20%20%20%20%20%20%20%20%2C%20preventPanY%20%3D%20false%0A%0A%20%20%20%20%20%20%2F%2F%20If%20prevent%20pan%20is%20Boolean%20false%0A%20%20%20%20%20%20if%20%28preventPan%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Set%20x%20and%20y%20same%20as%20before%0A%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20this%2EgetPan%28%29%2Ex%0A%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20this%2EgetPan%28%29%2Ey%0A%0A%20%20%20%20%20%20%20%20preventPanX%20%3D%20preventPanY%20%3D%20true%0A%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisObject%28preventPan%29%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20for%20X%20axes%20attribute%0A%20%20%20%20%20%20%20%20if%20%28preventPan%2Ex%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Prevent%20panning%20on%20x%20axes%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20this%2EgetPan%28%29%2Ex%0A%20%20%20%20%20%20%20%20%20%20preventPanX%20%3D%20true%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisNumber%28preventPan%2Ex%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20a%20custom%20pan%20value%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20preventPan%2Ex%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20for%20Y%20axes%20attribute%0A%20%20%20%20%20%20%20%20if%20%28preventPan%2Ey%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Prevent%20panning%20on%20x%20axes%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20this%2EgetPan%28%29%2Ey%0A%20%20%20%20%20%20%20%20%20%20preventPanY%20%3D%20true%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisNumber%28preventPan%2Ey%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20a%20custom%20pan%20value%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20preventPan%2Ey%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Update%20willPan%20flag%0A%20%20%20%20%20%20if%20%28preventPanX%20%26%26%20preventPanY%29%20%7B%0A%20%20%20%20%20%20%20%20willPan%20%3D%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Check%20again%20if%20should%20zoom%20or%20pan%0A%20%20%20%20if%20%28willZoom%20%7C%7C%20willPan%29%20%7B%0A%20%20%20%20%20%20this%2EupdateCache%28newCTM%29%0A%0A%20%20%20%20%20%20this%2EupdateCTMOnNextFrame%28%29%0A%0A%20%20%20%20%20%20%2F%2F%20After%20callbacks%0A%20%20%20%20%20%20if%20%28willZoom%29%20%7Bthis%2Eoptions%2EonZoom%28this%2EgetRelativeZoom%28%29%29%7D%0A%20%20%20%20%20%20if%20%28willPan%29%20%7Bthis%2Eoptions%2EonPan%28this%2EgetPan%28%29%29%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0AShadowViewport%2Eprototype%2EisZoomDifferent%20%3D%20function%28newCTM%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%20%21%3D%3D%20newCTM%2Ea%0A%7D%0A%0AShadowViewport%2Eprototype%2EisPanDifferent%20%3D%20function%28newCTM%29%20%7B%0A%20%20return%20this%2EactiveState%2Ex%20%21%3D%3D%20newCTM%2Ee%20%7C%7C%20this%2EactiveState%2Ey%20%21%3D%3D%20newCTM%2Ef%0A%7D%0A%0A%0A%2F%2A%2A%0A%20%2A%20Update%20cached%20CTM%20and%20active%20state%0A%20%2A%0A%20%2A%20%40param%20%7BSVGMatrix%7D%20newCTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCache%20%3D%20function%28newCTM%29%20%7B%0A%20%20this%2EactiveState%2Ezoom%20%3D%20newCTM%2Ea%0A%20%20this%2EactiveState%2Ex%20%3D%20newCTM%2Ee%0A%20%20this%2EactiveState%2Ey%20%3D%20newCTM%2Ef%0A%7D%0A%0AShadowViewport%2Eprototype%2EpendingUpdate%20%3D%20false%0A%0A%2F%2A%2A%0A%20%2A%20Place%20a%20request%20to%20update%20CTM%20on%20next%20Frame%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCTMOnNextFrame%20%3D%20function%28%29%20%7B%0A%20%20if%20%28%21this%2EpendingUpdate%29%20%7B%0A%20%20%20%20%2F%2F%20Lock%0A%20%20%20%20this%2EpendingUpdate%20%3D%20true%0A%0A%20%20%20%20%2F%2F%20Throttle%20next%20update%0A%20%20%20%20this%2ErequestAnimationFrame%2Ecall%28window%2C%20this%2EupdateCTMCached%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Update%20viewport%20CTM%20with%20cached%20CTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCTM%20%3D%20function%28%29%20%7B%0A%20%20%2F%2F%20Updates%20SVG%20element%0A%20%20SvgUtils%2EsetCTM%28this%2Eviewport%2C%20this%2EgetCTM%28%29%2C%20this%2Edefs%29%0A%0A%20%20%2F%2F%20Free%20the%20lock%0A%20%20this%2EpendingUpdate%20%3D%20false%0A%7D%0A%0Amodule%2Eexports%20%3D%20function%28viewport%2C%20options%29%7B%0A%20%20return%20new%20ShadowViewport%28viewport%2C%20options%29%0A%7D%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dutilities%22%3A6%2C%22%2E%2Futilities%22%3A7%7D%5D%2C5%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20Wheel%20%3D%20require%28%27uniwheel%27%29%0A%2C%20ControlIcons%20%3D%20require%28%27%2E%2Fcontrol%2Dicons%27%29%0A%2C%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%2C%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%0A%2C%20ShadowViewport%20%3D%20require%28%27%2E%2Fshadow%2Dviewport%27%29%0A%0Avar%20SvgPanZoom%20%3D%20function%28svg%2C%20options%29%20%7B%0A%20%20this%2Einit%28svg%2C%20options%29%0A%7D%0A%0Avar%20optionsDefaults%20%3D%20%7B%0A%20%20viewportSelector%3A%20%27%2Esvg%2Dpan%2Dzoom%5Fviewport%27%20%2F%2F%20Viewport%20selector%2E%20Can%20be%20querySelector%20string%20or%20SVGElement%0A%2C%20panEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20panning%20%28default%20enabled%29%0A%2C%20controlIconsEnabled%3A%20false%20%2F%2F%20insert%20icons%20to%20give%20user%20an%20option%20in%20addition%20to%20mouse%20events%20to%20control%20pan%2Fzoom%20%28default%20disabled%29%0A%2C%20zoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20%28default%20enabled%29%0A%2C%20dblClickZoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20by%20double%20clicking%20%28default%20enabled%29%0A%2C%20mouseWheelZoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20by%20mouse%20wheel%20%28default%20enabled%29%0A%2C%20zoomScaleSensitivity%3A%200%2E2%20%2F%2F%20Zoom%20sensitivity%0A%2C%20minZoom%3A%200%2E5%20%2F%2F%20Minimum%20Zoom%20level%0A%2C%20maxZoom%3A%2010%20%2F%2F%20Maximum%20Zoom%20level%0A%2C%20fit%3A%20true%20%2F%2F%20enable%20or%20disable%20viewport%20fit%20in%20SVG%20%28default%20true%29%0A%2C%20center%3A%20true%20%2F%2F%20enable%20or%20disable%20viewport%20centering%20in%20SVG%20%28default%20true%29%0A%2C%20refreshRate%3A%20%27auto%27%20%2F%2F%20Maximum%20number%20of%20frames%20per%20second%20%28altering%20SVG%27s%20viewport%29%0A%2C%20beforeZoom%3A%20null%0A%2C%20onZoom%3A%20null%0A%2C%20beforePan%3A%20null%0A%2C%20onPan%3A%20null%0A%2C%20customEventsHandler%3A%20null%0A%7D%0A%0ASvgPanZoom%2Eprototype%2Einit%20%3D%20function%28svg%2C%20options%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20this%2Esvg%20%3D%20svg%0A%20%20this%2Edefs%20%3D%20svg%2EquerySelector%28%27defs%27%29%0A%0A%20%20%2F%2F%20Add%20default%20attributes%20to%20SVG%0A%20%20SvgUtils%2EsetupSvgAttributes%28this%2Esvg%29%0A%0A%20%20%2F%2F%20Set%20options%0A%20%20this%2Eoptions%20%3D%20Utils%2Eextend%28Utils%2Eextend%28%7B%7D%2C%20optionsDefaults%29%2C%20options%29%0A%0A%20%20%2F%2F%20Set%20default%20state%0A%20%20this%2Estate%20%3D%20%27none%27%0A%0A%20%20%2F%2F%20Get%20dimensions%0A%20%20var%20boundingClientRectNormalized%20%3D%20SvgUtils%2EgetBoundingClientRectNormalized%28svg%29%0A%20%20this%2Ewidth%20%3D%20boundingClientRectNormalized%2Ewidth%0A%20%20this%2Eheight%20%3D%20boundingClientRectNormalized%2Eheight%0A%0A%20%20%2F%2F%20Init%20shadow%20viewport%0A%20%20this%2Eviewport%20%3D%20ShadowViewport%28SvgUtils%2EgetOrCreateViewport%28this%2Esvg%2C%20this%2Eoptions%2EviewportSelector%29%2C%20%7B%0A%20%20%20%20svg%3A%20this%2Esvg%0A%20%20%2C%20width%3A%20this%2Ewidth%0A%20%20%2C%20height%3A%20this%2Eheight%0A%20%20%2C%20fit%3A%20this%2Eoptions%2Efit%0A%20%20%2C%20center%3A%20this%2Eoptions%2Ecenter%0A%20%20%2C%20refreshRate%3A%20this%2Eoptions%2ErefreshRate%0A%20%20%2F%2F%20Put%20callbacks%20into%20functions%20as%20they%20can%20change%20through%20time%0A%20%20%2C%20beforeZoom%3A%20function%28oldScale%2C%20newScale%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EbeforeZoom%29%20%7Breturn%20that%2Eoptions%2EbeforeZoom%28oldScale%2C%20newScale%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20onZoom%3A%20function%28scale%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EonZoom%29%20%7Breturn%20that%2Eoptions%2EonZoom%28scale%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20beforePan%3A%20function%28oldPoint%2C%20newPoint%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EbeforePan%29%20%7Breturn%20that%2Eoptions%2EbeforePan%28oldPoint%2C%20newPoint%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20onPan%3A%20function%28point%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EonPan%29%20%7Breturn%20that%2Eoptions%2EonPan%28point%29%7D%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%0A%20%20%2F%2F%20Wrap%20callbacks%20into%20public%20API%20context%0A%20%20var%20publicInstance%20%3D%20this%2EgetPublicInstance%28%29%0A%20%20publicInstance%2EsetBeforeZoom%28this%2Eoptions%2EbeforeZoom%29%0A%20%20publicInstance%2EsetOnZoom%28this%2Eoptions%2EonZoom%29%0A%20%20publicInstance%2EsetBeforePan%28this%2Eoptions%2EbeforePan%29%0A%20%20publicInstance%2EsetOnPan%28this%2Eoptions%2EonPan%29%0A%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20ControlIcons%2Eenable%28this%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Init%20events%20handlers%0A%20%20this%2EsetupHandlers%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Register%20event%20handlers%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EsetupHandlers%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%20%20%20%20%2C%20prevEvt%20%3D%20null%20%2F%2F%20use%20for%20touchstart%20event%20to%20detect%20double%20tap%0A%20%20%20%20%3B%0A%0A%20%20this%2EeventListeners%20%3D%20%7B%0A%20%20%20%20%2F%2F%20Mouse%20down%20group%0A%20%20%20%20mousedown%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseDown%28evt%2C%20null%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchstart%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20var%20result%20%3D%20that%2EhandleMouseDown%28evt%2C%20prevEvt%29%3B%0A%20%20%20%20%20%20prevEvt%20%3D%20evt%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20up%20group%0A%20%20%2C%20mouseup%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchend%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20move%20group%0A%20%20%2C%20mousemove%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseMove%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchmove%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseMove%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20leave%20group%0A%20%20%2C%20mouseleave%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchleave%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchcancel%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Init%20custom%20events%20handler%20if%20available%0A%20%20if%20%28this%2Eoptions%2EcustomEventsHandler%20%21%3D%20null%29%20%7B%20%2F%2F%20jshint%20ignore%3Aline%0A%20%20%20%20this%2Eoptions%2EcustomEventsHandler%2Einit%28%7B%0A%20%20%20%20%20%20svgElement%3A%20this%2Esvg%0A%20%20%20%20%2C%20instance%3A%20this%2EgetPublicInstance%28%29%0A%20%20%20%20%7D%29%0A%0A%20%20%20%20%2F%2F%20Custom%20event%20handler%20may%20halt%20builtin%20listeners%0A%20%20%20%20var%20haltEventListeners%20%3D%20this%2Eoptions%2EcustomEventsHandler%2EhaltEventListeners%0A%20%20%20%20if%20%28haltEventListeners%20%26%26%20haltEventListeners%2Elength%29%20%7B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%20haltEventListeners%2Elength%20%2D%201%3B%20i%20%3E%3D%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this%2EeventListeners%2EhasOwnProperty%28haltEventListeners%5Bi%5D%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20delete%20this%2EeventListeners%5BhaltEventListeners%5Bi%5D%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Bind%20eventListeners%0A%20%20for%20%28var%20event%20in%20this%2EeventListeners%29%20%7B%0A%20%20%20%20this%2Esvg%2EaddEventListener%28event%2C%20this%2EeventListeners%5Bevent%5D%2C%20false%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Zoom%20using%20mouse%20wheel%0A%20%20if%20%28this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20false%20%2F%2F%20set%20to%20false%20as%20enable%20will%20set%20it%20back%20to%20true%0A%20%20%20%20this%2EenableMouseWheelZoom%28%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Enable%20ability%20to%20zoom%20using%20mouse%20wheel%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EenableMouseWheelZoom%20%3D%20function%28%29%20%7B%0A%20%20if%20%28%21this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%0A%0A%20%20%20%20%2F%2F%20Mouse%20wheel%20listener%0A%20%20%20%20this%2EwheelListener%20%3D%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseWheel%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Bind%20wheelListener%0A%20%20%20%20Wheel%2Eon%28this%2Esvg%2C%20this%2EwheelListener%2C%20false%29%0A%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20true%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Disable%20ability%20to%20zoom%20using%20mouse%20wheel%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EdisableMouseWheelZoom%20%3D%20function%28%29%20%7B%0A%20%20if%20%28this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20Wheel%2Eoff%28this%2Esvg%2C%20this%2EwheelListener%2C%20false%29%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20false%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20wheel%20event%0A%20%2A%0A%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseWheel%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28%21this%2Eoptions%2EzoomEnabled%20%7C%7C%20this%2Estate%20%21%3D%3D%20%27none%27%29%20%7B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%3B%0A%20%20%7D%0A%0A%20%20var%20delta%20%3D%200%0A%0A%20%20if%20%28%27deltaMode%27%20in%20evt%20%26%26%20evt%2EdeltaMode%20%3D%3D%3D%200%29%20%7B%0A%20%20%20%20%2F%2F%20Make%20empirical%20adjustments%20for%20browsers%20that%20give%20deltaY%20in%20pixels%20%28deltaMode%3D0%29%0A%0A%20%20%20%20if%20%28evt%2EwheelDelta%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Normalizer%20for%20Chrome%0A%20%20%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%20Math%2Eabs%28evt%2EwheelDelta%2F3%29%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%2F%2F%20Others%2E%20Possibly%20tablets%3F%20Use%20a%20value%20just%20in%20case%0A%20%20%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%20120%0A%20%20%20%20%7D%0A%20%20%7D%20else%20if%20%28%27mozPressure%27%20in%20evt%29%20%7B%0A%20%20%20%20%2F%2F%20Normalizer%20for%20newer%20Firefox%0A%20%20%20%20%2F%2F%20NOTE%3A%20May%20need%20to%20change%20detection%20at%20some%20point%20if%20mozPressure%20disappears%2E%0A%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%203%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Others%20should%20be%20reasonably%20normalized%20by%20the%20mousewheel%20code%20at%20the%20end%20of%20the%20file%2E%0A%20%20%20%20delta%20%3D%20evt%2EdeltaY%3B%0A%20%20%7D%0A%0A%20%20var%20inversedScreenCTM%20%3D%20this%2Esvg%2EgetScreenCTM%28%29%2Einverse%28%29%0A%20%20%20%20%2C%20relativeMousePoint%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28inversedScreenCTM%29%0A%20%20%20%20%2C%20zoom%20%3D%20Math%2Epow%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%2C%20%28%2D1%29%20%2A%20delta%29%3B%20%2F%2F%20multiplying%20by%20neg%2E%201%20so%20as%20to%20make%20zoom%20in%2Fout%20behavior%20match%20Google%20maps%20behavior%0A%0A%20%20this%2EzoomAtPoint%28zoom%2C%20relativeMousePoint%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20in%20at%20a%20SVG%20point%0A%20%2A%0A%20%2A%20%40param%20%20%7BSVGPoint%7D%20point%0A%20%2A%20%40param%20%20%7BFloat%7D%20zoomScale%20%20%20%20Number%20representing%20how%20much%20to%20zoom%0A%20%2A%20%40param%20%20%7BBoolean%7D%20zoomAbsolute%20Default%20false%2E%20If%20true%2C%20zoomScale%20is%20treated%20as%20an%20absolute%20value%2E%0A%20%2A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Otherwise%2C%20zoomScale%20is%20treated%20as%20a%20multiplied%20%28e%2Eg%2E%201%2E10%20would%20zoom%20in%2010%25%29%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EzoomAtPoint%20%3D%20function%28zoomScale%2C%20point%2C%20zoomAbsolute%29%20%7B%0A%20%20var%20originalState%20%3D%20this%2Eviewport%2EgetOriginalState%28%29%0A%0A%20%20if%20%28%21zoomAbsolute%29%20%7B%0A%20%20%20%20%2F%2F%20Fit%20zoomScale%20in%20set%20bounds%0A%20%20%20%20if%20%28this%2EgetZoom%28%29%20%2A%20zoomScale%20%3C%20this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%29%20%7B%0A%20%20%20%20%20%20zoomScale%20%3D%20%28this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%29%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%7D%20else%20if%20%28this%2EgetZoom%28%29%20%2A%20zoomScale%20%3E%20this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%29%20%7B%0A%20%20%20%20%20%20zoomScale%20%3D%20%28this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%29%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%7D%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Fit%20zoomScale%20in%20set%20bounds%0A%20%20%20%20zoomScale%20%3D%20Math%2Emax%28this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%2C%20Math%2Emin%28this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%2C%20zoomScale%29%29%0A%20%20%20%20%2F%2F%20Find%20relative%20scale%20to%20achieve%20desired%20scale%0A%20%20%20%20zoomScale%20%3D%20zoomScale%2Fthis%2EgetZoom%28%29%0A%20%20%7D%0A%0A%20%20var%20oldCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20%20%20%2C%20relativePoint%20%3D%20point%2EmatrixTransform%28oldCTM%2Einverse%28%29%29%0A%20%20%20%20%2C%20modifier%20%3D%20this%2Esvg%2EcreateSVGMatrix%28%29%2Etranslate%28relativePoint%2Ex%2C%20relativePoint%2Ey%29%2Escale%28zoomScale%29%2Etranslate%28%2DrelativePoint%2Ex%2C%20%2DrelativePoint%2Ey%29%0A%20%20%20%20%2C%20newCTM%20%3D%20oldCTM%2Emultiply%28modifier%29%0A%0A%20%20if%20%28newCTM%2Ea%20%21%3D%3D%20oldCTM%2Ea%29%20%7B%0A%20%20%20%20this%2Eviewport%2EsetCTM%28newCTM%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20at%20center%20point%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ezoom%20%3D%20function%28scale%2C%20absolute%29%20%7B%0A%20%20this%2EzoomAtPoint%28scale%2C%20SvgUtils%2EgetSvgCenterPoint%28this%2Esvg%2C%20this%2Ewidth%2C%20this%2Eheight%29%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20used%20by%20public%20instance%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpublicZoom%20%3D%20function%28scale%2C%20absolute%29%20%7B%0A%20%20if%20%28absolute%29%20%7B%0A%20%20%20%20scale%20%3D%20this%2EcomputeFromRelativeZoom%28scale%29%0A%20%20%7D%0A%0A%20%20this%2Ezoom%28scale%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20at%20point%20used%20by%20public%20instance%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BSVGPoint%7CObject%7D%20point%20%20%20%20An%20object%20that%20has%20x%20and%20y%20attributes%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpublicZoomAtPoint%20%3D%20function%28scale%2C%20point%2C%20absolute%29%20%7B%0A%20%20if%20%28absolute%29%20%7B%0A%20%20%20%20%2F%2F%20Transform%20zoom%20into%20a%20relative%20value%0A%20%20%20%20scale%20%3D%20this%2EcomputeFromRelativeZoom%28scale%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20If%20not%20a%20SVGPoint%20but%20has%20x%20and%20y%20than%20create%20a%20SVGPoint%0A%20%20if%20%28Utils%2EgetType%28point%29%20%21%3D%3D%20%27SVGPoint%27%20%26%26%20%27x%27%20in%20point%20%26%26%20%27y%27%20in%20point%29%20%7B%0A%20%20%20%20point%20%3D%20SvgUtils%2EcreateSVGPoint%28this%2Esvg%2C%20point%2Ex%2C%20point%2Ey%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20throw%20new%20Error%28%27Given%20point%20is%20invalid%27%29%0A%20%20%20%20return%0A%20%20%7D%0A%0A%20%20this%2EzoomAtPoint%28scale%2C%20point%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2Eviewport%2EgetZoom%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%20for%20public%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetRelativeZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2Eviewport%2EgetRelativeZoom%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Compute%20actual%20zoom%20from%20public%20zoom%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20zoom%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EcomputeFromRelativeZoom%20%3D%20function%28zoom%29%20%7B%0A%20%20return%20zoom%20%2A%20this%2Eviewport%2EgetOriginalState%28%29%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20zoom%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EresetZoom%20%3D%20function%28%29%20%7B%0A%20%20var%20originalState%20%3D%20this%2Eviewport%2EgetOriginalState%28%29%0A%0A%20%20this%2Ezoom%28originalState%2Ezoom%2C%20true%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20pan%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EresetPan%20%3D%20function%28%29%20%7B%0A%20%20this%2Epan%28this%2Eviewport%2EgetOriginalState%28%29%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20pan%20and%20zoom%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ereset%20%3D%20function%28%29%20%7B%0A%20%20this%2EresetZoom%28%29%0A%20%20this%2EresetPan%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20double%20click%20event%0A%20%2A%20See%20handleMouseDown%28%29%20for%20alternate%20detection%20method%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleDblClick%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20%2F%2F%20Check%20if%20target%20was%20a%20control%20button%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20var%20targetClass%20%3D%20evt%2Etarget%2EgetAttribute%28%27class%27%29%20%7C%7C%20%27%27%0A%20%20%20%20if%20%28targetClass%2EindexOf%28%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%20%3E%20%2D1%29%20%7B%0A%20%20%20%20%20%20return%20false%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20var%20zoomFactor%0A%0A%20%20if%20%28evt%2EshiftKey%29%20%7B%0A%20%20%20%20zoomFactor%20%3D%201%2F%28%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%29%20%2A%202%29%20%2F%2F%20zoom%20out%20when%20shift%20key%20pressed%0A%20%20%7D%20else%20%7B%0A%20%20%20%20zoomFactor%20%3D%20%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%29%20%2A%202%0A%20%20%7D%0A%0A%20%20var%20point%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2Esvg%2EgetScreenCTM%28%29%2Einverse%28%29%29%0A%20%20this%2EzoomAtPoint%28zoomFactor%2C%20point%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20click%20event%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseDown%20%3D%20function%28evt%2C%20prevEvt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20Utils%2EmouseAndTouchNormalize%28evt%2C%20this%2Esvg%29%0A%0A%20%20%2F%2F%20Double%20click%20detection%3B%20more%20consistent%20than%20ondblclick%0A%20%20if%20%28this%2Eoptions%2EdblClickZoomEnabled%20%26%26%20Utils%2EisDblClick%28evt%2C%20prevEvt%29%29%7B%0A%20%20%20%20this%2EhandleDblClick%28evt%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Pan%20mode%0A%20%20%20%20this%2Estate%20%3D%20%27pan%27%0A%20%20%20%20this%2EfirstEventCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20%20%20this%2EstateOrigin%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2EfirstEventCTM%2Einverse%28%29%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20move%20event%0A%20%2A%0A%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseMove%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20if%20%28this%2Estate%20%3D%3D%3D%20%27pan%27%20%26%26%20this%2Eoptions%2EpanEnabled%29%20%7B%0A%20%20%20%20%2F%2F%20Pan%20mode%0A%20%20%20%20var%20point%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2EfirstEventCTM%2Einverse%28%29%29%0A%20%20%20%20%20%20%2C%20viewportCTM%20%3D%20this%2EfirstEventCTM%2Etranslate%28point%2Ex%20%2D%20this%2EstateOrigin%2Ex%2C%20point%2Ey%20%2D%20this%2EstateOrigin%2Ey%29%0A%0A%20%20%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20button%20release%20event%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseUp%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20if%20%28this%2Estate%20%3D%3D%3D%20%27pan%27%29%20%7B%0A%20%20%20%20%2F%2F%20Quit%20pan%20mode%0A%20%20%20%20this%2Estate%20%3D%20%27none%27%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Adjust%20viewport%20size%20%28only%29%20so%20it%20will%20fit%20in%20SVG%0A%20%2A%20Does%20not%20center%20image%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Efit%20%3D%20function%28%29%20%7B%0A%20%20var%20viewBox%20%3D%20this%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%2C%20newScale%20%3D%20Math%2Emin%28this%2Ewidth%2F%28viewBox%2Ewidth%20%2D%20viewBox%2Ex%29%2C%20this%2Eheight%2F%28viewBox%2Eheight%20%2D%20viewBox%2Ey%29%29%0A%0A%20%20this%2Ezoom%28newScale%2C%20true%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Adjust%20viewport%20pan%20%28only%29%20so%20it%20will%20be%20centered%20in%20SVG%0A%20%2A%20Does%20not%20zoom%2Ffit%20image%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ecenter%20%3D%20function%28%29%20%7B%0A%20%20var%20viewBox%20%3D%20this%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%2C%20offsetX%20%3D%20%28this%2Ewidth%20%2D%20%28viewBox%2Ewidth%20%2B%20viewBox%2Ex%29%20%2A%20this%2EgetZoom%28%29%29%20%2A%200%2E5%0A%20%20%20%20%2C%20offsetY%20%3D%20%28this%2Eheight%20%2D%20%28viewBox%2Eheight%20%2B%20viewBox%2Ey%29%20%2A%20this%2EgetZoom%28%29%29%20%2A%200%2E5%0A%0A%20%20this%2EgetPublicInstance%28%29%2Epan%28%7Bx%3A%20offsetX%2C%20y%3A%20offsetY%7D%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Update%20content%20cached%20BorderBox%0A%20%2A%20Use%20when%20viewport%20contents%20change%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EupdateBBox%20%3D%20function%28%29%20%7B%0A%20%20this%2Eviewport%2ErecacheViewBox%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Pan%20to%20a%20rendered%20position%0A%20%2A%0A%20%2A%20%40param%20%20%7BObject%7D%20point%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Epan%20%3D%20function%28point%29%20%7B%0A%20%20var%20viewportCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20viewportCTM%2Ee%20%3D%20point%2Ex%0A%20%20viewportCTM%2Ef%20%3D%20point%2Ey%0A%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Relatively%20pan%20the%20graph%20by%20a%20specified%20rendered%20position%20vector%0A%20%2A%0A%20%2A%20%40param%20%20%7BObject%7D%20point%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpanBy%20%3D%20function%28point%29%20%7B%0A%20%20var%20viewportCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20viewportCTM%2Ee%20%2B%3D%20point%2Ex%0A%20%20viewportCTM%2Ef%20%2B%3D%20point%2Ey%0A%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20pan%20vector%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetPan%20%3D%20function%28%29%20%7B%0A%20%20var%20state%20%3D%20this%2Eviewport%2EgetState%28%29%0A%0A%20%20return%20%7Bx%3A%20state%2Ex%2C%20y%3A%20state%2Ey%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Recalculates%20cached%20svg%20dimensions%20and%20controls%20position%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Eresize%20%3D%20function%28%29%20%7B%0A%20%20%2F%2F%20Get%20dimensions%0A%20%20var%20boundingClientRectNormalized%20%3D%20SvgUtils%2EgetBoundingClientRectNormalized%28this%2Esvg%29%0A%20%20this%2Ewidth%20%3D%20boundingClientRectNormalized%2Ewidth%0A%20%20this%2Eheight%20%3D%20boundingClientRectNormalized%2Eheight%0A%0A%20%20%2F%2F%20Reposition%20control%20icons%20by%20re%2Denabling%20them%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20this%2EgetPublicInstance%28%29%2EdisableControlIcons%28%29%0A%20%20%20%20this%2EgetPublicInstance%28%29%2EenableControlIcons%28%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Unbind%20mouse%20events%2C%20free%20callbacks%20and%20destroy%20public%20instance%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Edestroy%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20%2F%2F%20Free%20callbacks%0A%20%20this%2EbeforeZoom%20%3D%20null%0A%20%20this%2EonZoom%20%3D%20null%0A%20%20this%2EbeforePan%20%3D%20null%0A%20%20this%2EonPan%20%3D%20null%0A%0A%20%20%2F%2F%20Destroy%20custom%20event%20handlers%0A%20%20if%20%28this%2Eoptions%2EcustomEventsHandler%20%21%3D%20null%29%20%7B%20%2F%2F%20jshint%20ignore%3Aline%0A%20%20%20%20this%2Eoptions%2EcustomEventsHandler%2Edestroy%28%7B%0A%20%20%20%20%20%20svgElement%3A%20this%2Esvg%0A%20%20%20%20%2C%20instance%3A%20this%2EgetPublicInstance%28%29%0A%20%20%20%20%7D%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Unbind%20eventListeners%0A%20%20for%20%28var%20event%20in%20this%2EeventListeners%29%20%7B%0A%20%20%20%20this%2Esvg%2EremoveEventListener%28event%2C%20this%2EeventListeners%5Bevent%5D%2C%20false%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Unbind%20wheelListener%0A%20%20this%2EdisableMouseWheelZoom%28%29%0A%0A%20%20%2F%2F%20Remove%20control%20icons%0A%20%20this%2EgetPublicInstance%28%29%2EdisableControlIcons%28%29%0A%0A%20%20%2F%2F%20Reset%20zoom%20and%20pan%0A%20%20this%2Ereset%28%29%0A%0A%20%20%2F%2F%20Remove%20instance%20from%20instancesStore%0A%20%20instancesStore%20%3D%20instancesStore%2Efilter%28function%28instance%29%7B%0A%20%20%20%20return%20instance%2Esvg%20%21%3D%3D%20that%2Esvg%0A%20%20%7D%29%0A%0A%20%20%2F%2F%20Delete%20options%20and%20its%20contents%0A%20%20delete%20this%2Eoptions%0A%0A%20%20%2F%2F%20Destroy%20public%20instance%20and%20rewrite%20getPublicInstance%0A%20%20delete%20this%2EpublicInstance%0A%20%20delete%20this%2Epi%0A%20%20this%2EgetPublicInstance%20%3D%20function%28%29%7B%0A%20%20%20%20return%20null%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Returns%20a%20public%20instance%20object%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20Public%20instance%20object%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetPublicInstance%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20%2F%2F%20Create%20cache%0A%20%20if%20%28%21this%2EpublicInstance%29%20%7B%0A%20%20%20%20this%2EpublicInstance%20%3D%20this%2Epi%20%3D%20%7B%0A%20%20%20%20%20%20%2F%2F%20Pan%0A%20%20%20%20%20%20enablePan%3A%20function%28%29%20%7Bthat%2Eoptions%2EpanEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disablePan%3A%20function%28%29%20%7Bthat%2Eoptions%2EpanEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isPanEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EpanEnabled%7D%0A%20%20%20%20%2C%20pan%3A%20function%28point%29%20%7Bthat%2Epan%28point%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20panBy%3A%20function%28point%29%20%7Bthat%2EpanBy%28point%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getPan%3A%20function%28%29%20%7Breturn%20that%2EgetPan%28%29%7D%0A%20%20%20%20%20%20%2F%2F%20Pan%20event%0A%20%20%20%20%2C%20setBeforePan%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EbeforePan%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setOnPan%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EonPan%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20and%20Control%20Icons%0A%20%20%20%20%2C%20enableZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EzoomEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EzoomEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EzoomEnabled%7D%0A%20%20%20%20%2C%20enableControlIcons%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21that%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20that%2Eoptions%2EcontrolIconsEnabled%20%3D%20true%0A%20%20%20%20%20%20%20%20%20%20ControlIcons%2Eenable%28that%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20that%2Epi%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%2C%20disableControlIcons%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28that%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20that%2Eoptions%2EcontrolIconsEnabled%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20ControlIcons%2Edisable%28that%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20that%2Epi%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%2C%20isControlIconsEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EcontrolIconsEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Double%20click%20zoom%0A%20%20%20%20%2C%20enableDblClickZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EdblClickZoomEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableDblClickZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EdblClickZoomEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isDblClickZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EdblClickZoomEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Mouse%20wheel%20zoom%0A%20%20%20%20%2C%20enableMouseWheelZoom%3A%20function%28%29%20%7Bthat%2EenableMouseWheelZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableMouseWheelZoom%3A%20function%28%29%20%7Bthat%2EdisableMouseWheelZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isMouseWheelZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EmouseWheelZoomEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20scale%20and%20bounds%0A%20%20%20%20%2C%20setZoomScaleSensitivity%3A%20function%28scale%29%20%7Bthat%2Eoptions%2EzoomScaleSensitivity%20%3D%20scale%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setMinZoom%3A%20function%28zoom%29%20%7Bthat%2Eoptions%2EminZoom%20%3D%20zoom%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setMaxZoom%3A%20function%28zoom%29%20%7Bthat%2Eoptions%2EmaxZoom%20%3D%20zoom%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20event%0A%20%20%20%20%2C%20setBeforeZoom%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EbeforeZoom%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setOnZoom%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EonZoom%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zooming%0A%20%20%20%20%2C%20zoom%3A%20function%28scale%29%20%7Bthat%2EpublicZoom%28scale%2C%20true%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomBy%3A%20function%28scale%29%20%7Bthat%2EpublicZoom%28scale%2C%20false%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomAtPoint%3A%20function%28scale%2C%20point%29%20%7Bthat%2EpublicZoomAtPoint%28scale%2C%20point%2C%20true%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomAtPointBy%3A%20function%28scale%2C%20point%29%20%7Bthat%2EpublicZoomAtPoint%28scale%2C%20point%2C%20false%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomIn%3A%20function%28%29%20%7Bthis%2EzoomBy%281%20%2B%20that%2Eoptions%2EzoomScaleSensitivity%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomOut%3A%20function%28%29%20%7Bthis%2EzoomBy%281%20%2F%20%281%20%2B%20that%2Eoptions%2EzoomScaleSensitivity%29%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getZoom%3A%20function%28%29%20%7Breturn%20that%2EgetRelativeZoom%28%29%7D%0A%20%20%20%20%20%20%2F%2F%20Reset%0A%20%20%20%20%2C%20resetZoom%3A%20function%28%29%20%7Bthat%2EresetZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20resetPan%3A%20function%28%29%20%7Bthat%2EresetPan%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20reset%3A%20function%28%29%20%7Bthat%2Ereset%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Fit%20and%20Center%0A%20%20%20%20%2C%20fit%3A%20function%28%29%20%7Bthat%2Efit%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20center%3A%20function%28%29%20%7Bthat%2Ecenter%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Size%20and%20Resize%0A%20%20%20%20%2C%20updateBBox%3A%20function%28%29%20%7Bthat%2EupdateBBox%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20resize%3A%20function%28%29%20%7Bthat%2Eresize%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getSizes%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20width%3A%20that%2Ewidth%0A%20%20%20%20%20%20%20%20%2C%20height%3A%20that%2Eheight%0A%20%20%20%20%20%20%20%20%2C%20realZoom%3A%20that%2EgetZoom%28%29%0A%20%20%20%20%20%20%20%20%2C%20viewBox%3A%20that%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20Destroy%0A%20%20%20%20%2C%20destroy%3A%20function%28%29%20%7Bthat%2Edestroy%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20return%20this%2EpublicInstance%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Stores%20pairs%20of%20instances%20of%20SvgPanZoom%20and%20SVG%0A%20%2A%20Each%20pair%20is%20represented%20by%20an%20object%20%7Bsvg%3A%20SVGSVGElement%2C%20instance%3A%20SvgPanZoom%7D%0A%20%2A%0A%20%2A%20%40type%20%7BArray%7D%0A%20%2A%2F%0Avar%20instancesStore%20%3D%20%5B%5D%0A%0Avar%20svgPanZoom%20%3D%20function%28elementOrSelector%2C%20options%29%7B%0A%20%20var%20svg%20%3D%20Utils%2EgetSvg%28elementOrSelector%29%0A%0A%20%20if%20%28svg%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20return%20null%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Look%20for%20existent%20instance%0A%20%20%20%20for%28var%20i%20%3D%20instancesStore%2Elength%20%2D%201%3B%20i%20%3E%3D%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20if%20%28instancesStore%5Bi%5D%2Esvg%20%3D%3D%3D%20svg%29%20%7B%0A%20%20%20%20%20%20%20%20return%20instancesStore%5Bi%5D%2Einstance%2EgetPublicInstance%28%29%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20If%20instance%20not%20found%20%2D%20create%20one%0A%20%20%20%20instancesStore%2Epush%28%7B%0A%20%20%20%20%20%20svg%3A%20svg%0A%20%20%20%20%2C%20instance%3A%20new%20SvgPanZoom%28svg%2C%20options%29%0A%20%20%20%20%7D%29%0A%0A%20%20%20%20%2F%2F%20Return%20just%20pushed%20instance%0A%20%20%20%20return%20instancesStore%5BinstancesStore%2Elength%20%2D%201%5D%2Einstance%2EgetPublicInstance%28%29%0A%20%20%7D%0A%7D%0A%0Amodule%2Eexports%20%3D%20svgPanZoom%3B%0A%0A%7D%2C%7B%22%2E%2Fcontrol%2Dicons%22%3A3%2C%22%2E%2Fshadow%2Dviewport%22%3A4%2C%22%2E%2Fsvg%2Dutilities%22%3A6%2C%22%2E%2Futilities%22%3A7%2C%22uniwheel%22%3A2%7D%5D%2C6%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%20%20%2C%20%5Fbrowser%20%3D%20%27unknown%27%0A%20%20%3B%0A%0A%2F%2F%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F9847580%2Fhow%2Dto%2Ddetect%2Dsafari%2Dchrome%2Die%2Dfirefox%2Dand%2Dopera%2Dbrowser%0Aif%20%28%2F%2A%40cc%5Fon%21%40%2A%2Ffalse%20%7C%7C%20%21%21document%2EdocumentMode%29%20%7B%20%2F%2F%20internet%20explorer%0A%20%20%5Fbrowser%20%3D%20%27ie%27%3B%0A%7D%0A%0Amodule%2Eexports%20%3D%20%7B%0A%20%20svgNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%27%0A%2C%20xmlNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2FXML%2F1998%2Fnamespace%27%0A%2C%20xmlnsNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fxmlns%2F%27%0A%2C%20xlinkNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F1999%2Fxlink%27%0A%2C%20evNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2001%2Fxml%2Devents%27%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Get%20svg%20dimensions%3A%20width%20and%20height%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BObject%7D%20%20%20%20%20%7Bwidth%3A%200%2C%20height%3A%200%7D%0A%20%20%20%2A%2F%0A%2C%20getBoundingClientRectNormalized%3A%20function%28svg%29%20%7B%0A%20%20%20%20if%20%28svg%2EclientWidth%20%26%26%20svg%2EclientHeight%29%20%7B%0A%20%20%20%20%20%20return%20%7Bwidth%3A%20svg%2EclientWidth%2C%20height%3A%20svg%2EclientHeight%7D%0A%20%20%20%20%7D%20else%20if%20%28%21%21svg%2EgetBoundingClientRect%28%29%29%20%7B%0A%20%20%20%20%20%20return%20svg%2EgetBoundingClientRect%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20get%20BoundingClientRect%20for%20SVG%2E%27%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Gets%20g%20element%20with%20class%20of%20%22viewport%22%20or%20creates%20it%20if%20it%20doesn%27t%20exist%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGElement%7D%20%20%20%20%20g%20%28group%29%20element%0A%20%20%20%2A%2F%0A%2C%20getOrCreateViewport%3A%20function%28svg%2C%20selector%29%20%7B%0A%20%20%20%20var%20viewport%20%3D%20null%0A%0A%20%20%20%20if%20%28Utils%2EisElement%28selector%29%29%20%7B%0A%20%20%20%20%20%20viewport%20%3D%20selector%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20viewport%20%3D%20svg%2EquerySelector%28selector%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Check%20if%20there%20is%20just%20one%20main%20group%20in%20SVG%0A%20%20%20%20if%20%28%21viewport%29%20%7B%0A%20%20%20%20%20%20var%20childNodes%20%3D%20Array%2Eprototype%2Eslice%2Ecall%28svg%2EchildNodes%20%7C%7C%20svg%2Echildren%29%2Efilter%28function%28el%29%7B%0A%20%20%20%20%20%20%20%20return%20el%2EnodeName%20%21%3D%3D%20%27defs%27%20%26%26%20el%2EnodeName%20%21%3D%3D%20%27%23text%27%0A%20%20%20%20%20%20%7D%29%0A%0A%20%20%20%20%20%20%2F%2F%20Node%20name%20should%20be%20SVGGElement%20and%20should%20have%20no%20transform%20attribute%0A%20%20%20%20%20%20%2F%2F%20Groups%20with%20transform%20are%20not%20used%20as%20viewport%20because%20it%20involves%20parsing%20of%20all%20transform%20possibilities%0A%20%20%20%20%20%20if%20%28childNodes%2Elength%20%3D%3D%3D%201%20%26%26%20childNodes%5B0%5D%2EnodeName%20%3D%3D%3D%20%27g%27%20%26%26%20childNodes%5B0%5D%2EgetAttribute%28%27transform%27%29%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20viewport%20%3D%20childNodes%5B0%5D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20If%20no%20favorable%20group%20element%20exists%20then%20create%20one%0A%20%20%20%20if%20%28%21viewport%29%20%7B%0A%20%20%20%20%20%20var%20viewportId%20%3D%20%27viewport%2D%27%20%2B%20new%20Date%28%29%2EtoISOString%28%29%2Ereplace%28%2F%5CD%2Fg%2C%20%27%27%29%3B%0A%20%20%20%20%20%20viewport%20%3D%20document%2EcreateElementNS%28this%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20%20%20viewport%2EsetAttribute%28%27id%27%2C%20viewportId%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Internet%20Explorer%20%28all%20versions%3F%29%20can%27t%20use%20childNodes%2C%20but%20other%20browsers%20prefer%20%28require%3F%29%20using%20childNodes%0A%20%20%20%20%20%20var%20svgChildren%20%3D%20svg%2EchildNodes%20%7C%7C%20svg%2Echildren%3B%0A%20%20%20%20%20%20if%20%28%21%21svgChildren%20%26%26%20svgChildren%2Elength%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%20svgChildren%2Elength%3B%20i%20%3E%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Move%20everything%20into%20viewport%20except%20defs%0A%20%20%20%20%20%20%20%20%20%20if%20%28svgChildren%5BsvgChildren%2Elength%20%2D%20i%5D%2EnodeName%20%21%3D%3D%20%27defs%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20viewport%2EappendChild%28svgChildren%5BsvgChildren%2Elength%20%2D%20i%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20svg%2EappendChild%28viewport%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Parse%20class%20names%0A%20%20%20%20var%20classNames%20%3D%20%5B%5D%3B%0A%20%20%20%20if%20%28viewport%2EgetAttribute%28%27class%27%29%29%20%7B%0A%20%20%20%20%20%20classNames%20%3D%20viewport%2EgetAttribute%28%27class%27%29%2Esplit%28%27%20%27%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Set%20class%20%28if%20not%20set%20already%29%0A%20%20%20%20if%20%28%21%7EclassNames%2EindexOf%28%27svg%2Dpan%2Dzoom%5Fviewport%27%29%29%20%7B%0A%20%20%20%20%20%20classNames%2Epush%28%27svg%2Dpan%2Dzoom%5Fviewport%27%29%0A%20%20%20%20%20%20viewport%2EsetAttribute%28%27class%27%2C%20classNames%2Ejoin%28%27%20%27%29%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20viewport%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Set%20SVG%20attributes%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%2F%0A%20%20%2C%20setupSvgAttributes%3A%20function%28svg%29%20%7B%0A%20%20%20%20%2F%2F%20Setting%20default%20attributes%0A%20%20%20%20svg%2EsetAttribute%28%27xmlns%27%2C%20this%2EsvgNS%29%3B%0A%20%20%20%20svg%2EsetAttributeNS%28this%2ExmlnsNS%2C%20%27xmlns%3Axlink%27%2C%20this%2ExlinkNS%29%3B%0A%20%20%20%20svg%2EsetAttributeNS%28this%2ExmlnsNS%2C%20%27xmlns%3Aev%27%2C%20this%2EevNS%29%3B%0A%0A%20%20%20%20%2F%2F%20Needed%20for%20Internet%20Explorer%2C%20otherwise%20the%20viewport%20overflows%0A%20%20%20%20if%20%28svg%2EparentNode%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20var%20style%20%3D%20svg%2EgetAttribute%28%27style%27%29%20%7C%7C%20%27%27%3B%0A%20%20%20%20%20%20if%20%28style%2EtoLowerCase%28%29%2EindexOf%28%27overflow%27%29%20%3D%3D%3D%20%2D1%29%20%7B%0A%20%20%20%20%20%20%20%20svg%2EsetAttribute%28%27style%27%2C%20%27overflow%3A%20hidden%3B%20%27%20%2B%20style%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%2F%2A%2A%0A%20%2A%20How%20long%20Internet%20Explorer%20takes%20to%20finish%20updating%20its%20display%20%28ms%29%2E%0A%20%2A%2F%0A%2C%20internetExplorerRedisplayInterval%3A%20300%0A%0A%2F%2A%2A%0A%20%2A%20Forces%20the%20browser%20to%20redisplay%20all%20SVG%20elements%20that%20rely%20on%20an%0A%20%2A%20element%20defined%20in%20a%20%27defs%27%20section%2E%20It%20works%20globally%2C%20for%20every%0A%20%2A%20available%20defs%20element%20on%20the%20page%2E%0A%20%2A%20The%20throttling%20is%20intentionally%20global%2E%0A%20%2A%0A%20%2A%20This%20is%20only%20needed%20for%20IE%2E%20It%20is%20as%20a%20hack%20to%20make%20markers%20%28and%20%27use%27%20elements%3F%29%0A%20%2A%20visible%20after%20pan%2Fzoom%20when%20there%20are%20multiple%20SVGs%20on%20the%20page%2E%0A%20%2A%20See%20bug%20report%3A%20https%3A%2F%2Fconnect%2Emicrosoft%2Ecom%2FIE%2Ffeedback%2Fdetails%2F781964%2F%0A%20%2A%20also%20see%20svg%2Dpan%2Dzoom%20issue%3A%20https%3A%2F%2Fgithub%2Ecom%2Fariutta%2Fsvg%2Dpan%2Dzoom%2Fissues%2F62%0A%20%2A%2F%0A%2C%20refreshDefsGlobal%3A%20Utils%2Ethrottle%28function%28%29%20%7B%0A%20%20%20%20var%20allDefs%20%3D%20document%2EquerySelectorAll%28%27defs%27%29%3B%0A%20%20%20%20var%20allDefsCount%20%3D%20allDefs%2Elength%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20allDefsCount%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20thisDefs%20%3D%20allDefs%5Bi%5D%3B%0A%20%20%20%20%20%20thisDefs%2EparentNode%2EinsertBefore%28thisDefs%2C%20thisDefs%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%20this%2EinternetExplorerRedisplayInterval%29%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Sets%20the%20current%20transform%20matrix%20of%20an%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%7BSVGElement%7D%20element%0A%20%20%20%2A%20%40param%20%7BSVGMatrix%7D%20matrix%20%20CTM%0A%20%20%20%2A%20%40param%20%7BSVGElement%7D%20defs%0A%20%20%20%2A%2F%0A%2C%20setCTM%3A%20function%28element%2C%20matrix%2C%20defs%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%0A%20%20%20%20%20%20%2C%20s%20%3D%20%27matrix%28%27%20%2B%20matrix%2Ea%20%2B%20%27%2C%27%20%2B%20matrix%2Eb%20%2B%20%27%2C%27%20%2B%20matrix%2Ec%20%2B%20%27%2C%27%20%2B%20matrix%2Ed%20%2B%20%27%2C%27%20%2B%20matrix%2Ee%20%2B%20%27%2C%27%20%2B%20matrix%2Ef%20%2B%20%27%29%27%3B%0A%0A%20%20%20%20element%2EsetAttributeNS%28null%2C%20%27transform%27%2C%20s%29%3B%0A%0A%20%20%20%20%2F%2F%20IE%20has%20a%20bug%20that%20makes%20markers%20disappear%20on%20zoom%20%28when%20the%20matrix%20%22a%22%20and%2For%20%22d%22%20elements%20change%29%0A%20%20%20%20%2F%2F%20see%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F17654578%2Fsvg%2Dmarker%2Ddoes%2Dnot%2Dwork%2Din%2Die9%2D10%0A%20%20%20%20%2F%2F%20and%20http%3A%2F%2Fsrndolha%2Ewordpress%2Ecom%2F2013%2F11%2F25%2Fsvg%2Dline%2Dmarkers%2Dmay%2Ddisappear%2Din%2Dinternet%2Dexplorer%2D11%2F%0A%20%20%20%20if%20%28%5Fbrowser%20%3D%3D%3D%20%27ie%27%20%26%26%20%21%21defs%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20this%20refresh%20is%20intended%20for%20redisplaying%20the%20SVG%20during%20zooming%0A%20%20%20%20%20%20defs%2EparentNode%2EinsertBefore%28defs%2C%20defs%29%3B%0A%20%20%20%20%20%20%2F%2F%20this%20refresh%20is%20intended%20for%20redisplaying%20the%20other%20SVGs%20on%20a%20page%20when%20panning%20a%20given%20SVG%0A%20%20%20%20%20%20%2F%2F%20it%20is%20also%20needed%20for%20the%20given%20SVG%20itself%2C%20on%20zoomEnd%2C%20if%20the%20SVG%20contains%20any%20markers%20that%0A%20%20%20%20%20%20%2F%2F%20are%20located%20under%20any%20other%20element%28s%29%2E%0A%20%20%20%20%20%20window%2EsetTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20that%2ErefreshDefsGlobal%28%29%3B%0A%20%20%20%20%20%20%7D%2C%20that%2EinternetExplorerRedisplayInterval%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Instantiate%20an%20SVGPoint%20object%20with%20given%20event%20coordinates%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%20%20%20%20%20point%0A%20%20%20%2A%2F%0A%2C%20getEventPoint%3A%20function%28evt%2C%20svg%29%20%7B%0A%20%20%20%20var%20point%20%3D%20svg%2EcreateSVGPoint%28%29%0A%0A%20%20%20%20Utils%2EmouseAndTouchNormalize%28evt%2C%20svg%29%0A%0A%20%20%20%20point%2Ex%20%3D%20evt%2EclientX%0A%20%20%20%20point%2Ey%20%3D%20evt%2EclientY%0A%0A%20%20%20%20return%20point%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Get%20SVG%20center%20point%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%0A%20%20%20%2A%2F%0A%2C%20getSvgCenterPoint%3A%20function%28svg%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20return%20this%2EcreateSVGPoint%28svg%2C%20width%20%2F%202%2C%20height%20%2F%202%29%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Create%20a%20SVGPoint%20with%20given%20x%20and%20y%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40param%20%20%7BNumber%7D%20x%0A%20%20%20%2A%20%40param%20%20%7BNumber%7D%20y%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%0A%20%20%20%2A%2F%0A%2C%20createSVGPoint%3A%20function%28svg%2C%20x%2C%20y%29%20%7B%0A%20%20%20%20var%20point%20%3D%20svg%2EcreateSVGPoint%28%29%0A%20%20%20%20point%2Ex%20%3D%20x%0A%20%20%20%20point%2Ey%20%3D%20y%0A%0A%20%20%20%20return%20point%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%22%2E%2Futilities%22%3A7%7D%5D%2C7%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Amodule%2Eexports%20%3D%20%7B%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Extends%20an%20object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20target%20object%20to%20extend%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20source%20object%20to%20take%20properties%20from%0A%20%20%20%2A%20%40return%20%7BObject%7D%20%20%20%20%20%20%20%20extended%20object%0A%20%20%20%2A%2F%0A%20%20extend%3A%20function%28target%2C%20source%29%20%7B%0A%20%20%20%20target%20%3D%20target%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20prop%20in%20source%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Go%20recursively%0A%20%20%20%20%20%20if%20%28this%2EisObject%28source%5Bprop%5D%29%29%20%7B%0A%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20this%2Eextend%28target%5Bprop%5D%2C%20source%5Bprop%5D%29%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20source%5Bprop%5D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20target%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20an%20object%20is%20a%20DOM%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20o%20HTML%20element%20or%20String%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20object%20is%20a%20DOM%20element%0A%20%20%20%2A%2F%0A%2C%20isElement%3A%20function%28o%29%7B%0A%20%20%20%20return%20%28%0A%20%20%20%20%20%20typeof%20HTMLElement%20%3D%3D%3D%20%27object%27%20%3F%20%28o%20instanceof%20HTMLElement%20%7C%7C%20o%20instanceof%20SVGElement%20%7C%7C%20o%20instanceof%20SVGSVGElement%29%20%3A%20%2F%2FDOM2%0A%20%20%20%20%20%20o%20%26%26%20typeof%20o%20%3D%3D%3D%20%27object%27%20%26%26%20o%20%21%3D%3D%20null%20%26%26%20o%2EnodeType%20%3D%3D%3D%201%20%26%26%20typeof%20o%2EnodeName%20%3D%3D%3D%20%27string%27%0A%20%20%20%20%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20an%20object%20is%20an%20Object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20o%20Object%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20object%20is%20an%20Object%0A%20%20%20%2A%2F%0A%2C%20isObject%3A%20function%28o%29%7B%0A%20%20%20%20return%20Object%2Eprototype%2EtoString%2Ecall%28o%29%20%3D%3D%3D%20%27%5Bobject%20Object%5D%27%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20variable%20is%20Number%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BInteger%7CFloat%7D%20%20n%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20variable%20is%20Number%0A%20%20%20%2A%2F%0A%2C%20isNumber%3A%20function%28n%29%20%7B%0A%20%20%20%20return%20%21isNaN%28parseFloat%28n%29%29%20%26%26%20isFinite%28n%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Search%20for%20an%20SVG%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7CString%7D%20elementOrSelector%20DOM%20Element%20or%20selector%20String%0A%20%20%20%2A%20%40return%20%7BObject%7CNull%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SVG%20or%20null%0A%20%20%20%2A%2F%0A%2C%20getSvg%3A%20function%28elementOrSelector%29%20%7B%0A%20%20%20%20var%20element%0A%20%20%20%20%20%20%2C%20svg%3B%0A%0A%20%20%20%20if%20%28%21this%2EisElement%28elementOrSelector%29%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20selector%20provided%0A%20%20%20%20%20%20if%20%28typeof%20elementOrSelector%20%3D%3D%3D%20%27string%27%20%7C%7C%20elementOrSelector%20instanceof%20String%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Try%20to%20find%20the%20element%0A%20%20%20%20%20%20%20%20element%20%3D%20document%2EquerySelector%28elementOrSelector%29%0A%0A%20%20%20%20%20%20%20%20if%20%28%21element%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Provided%20selector%20did%20not%20find%20any%20elements%2E%20Selector%3A%20%27%20%2B%20elementOrSelector%29%0A%20%20%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Provided%20selector%20is%20not%20an%20HTML%20object%20nor%20String%27%29%0A%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20element%20%3D%20elementOrSelector%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27svg%27%29%20%7B%0A%20%20%20%20%20%20svg%20%3D%20element%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27object%27%29%20%7B%0A%20%20%20%20%20%20%20%20svg%20%3D%20element%2EcontentDocument%2EdocumentElement%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27embed%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20svg%20%3D%20element%2EgetSVGDocument%28%29%2EdocumentElement%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27img%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20script%20an%20SVG%20in%20an%20%22img%22%20element%2E%20Please%20use%20an%20%22object%22%20element%20or%20an%20in%2Dline%20SVG%2E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20get%20SVG%2E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20svg%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Attach%20a%20given%20context%20to%20a%20function%0A%20%20%20%2A%20%40param%20%20%7BFunction%7D%20fn%20%20%20%20%20%20Function%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20%20context%20Context%0A%20%20%20%2A%20%40return%20%7BFunction%7D%20%20%20%20%20%20%20%20%20%20%20Function%20with%20certain%20context%0A%20%20%20%2A%2F%0A%2C%20proxy%3A%20function%28fn%2C%20context%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20fn%2Eapply%28context%2C%20arguments%29%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Returns%20object%20type%0A%20%20%20%2A%20Uses%20toString%20that%20returns%20%5Bobject%20SVGPoint%5D%0A%20%20%20%2A%20And%20than%20parses%20object%20type%20from%20string%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20o%20Any%20object%0A%20%20%20%2A%20%40return%20%7BString%7D%20%20%20Object%20type%0A%20%20%20%2A%2F%0A%2C%20getType%3A%20function%28o%29%20%7B%0A%20%20%20%20return%20Object%2Eprototype%2EtoString%2Eapply%28o%29%2Ereplace%28%2F%5E%5C%5Bobject%5Cs%2F%2C%20%27%27%29%2Ereplace%28%2F%5C%5D%24%2F%2C%20%27%27%29%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20If%20it%20is%20a%20touch%20event%20than%20add%20clientX%20and%20clientY%20to%20event%20object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%2F%0A%2C%20mouseAndTouchNormalize%3A%20function%28evt%2C%20svg%29%20%7B%0A%20%20%20%20%2F%2F%20If%20no%20cilentX%20and%20but%20touch%20objects%20are%20available%0A%20%20%20%20if%20%28evt%2EclientX%20%3D%3D%3D%20void%200%20%7C%7C%20evt%2EclientX%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Fallback%0A%20%20%20%20%20%20evt%2EclientX%20%3D%200%0A%20%20%20%20%20%20evt%2EclientY%20%3D%200%0A%0A%20%20%20%20%20%20%2F%2F%20If%20it%20is%20a%20touch%20event%0A%20%20%20%20%20%20if%20%28evt%2EchangedTouches%20%21%3D%3D%20void%200%20%26%26%20evt%2EchangedTouches%2Elength%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20touch%20event%20has%20changedTouches%0A%20%20%20%20%20%20%20%20if%20%28evt%2EchangedTouches%5B0%5D%2EclientX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EchangedTouches%5B0%5D%2EclientX%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EchangedTouches%5B0%5D%2EclientY%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20changedTouches%20has%20pageX%20attribute%0A%20%20%20%20%20%20%20%20else%20if%20%28evt%2EchangedTouches%5B0%5D%2EpageX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20rect%20%3D%20svg%2EgetBoundingClientRect%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EchangedTouches%5B0%5D%2EpageX%20%2D%20rect%2Eleft%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EchangedTouches%5B0%5D%2EpageY%20%2D%20rect%2Etop%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20If%20it%20is%20a%20custom%20event%0A%20%20%20%20%20%20%7D%20else%20if%20%28evt%2EoriginalEvent%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28evt%2EoriginalEvent%2EclientX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EoriginalEvent%2EclientX%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EoriginalEvent%2EclientY%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Check%20if%20an%20event%20is%20a%20double%20click%2Ftap%0A%20%20%20%2A%20TODO%3A%20For%20touch%20gestures%20use%20a%20library%20%28hammer%2Ejs%29%20that%20takes%20in%20account%20other%20events%0A%20%20%20%2A%20%28touchmove%20and%20touchend%29%2E%20It%20should%20take%20in%20account%20tap%20duration%20and%20traveled%20distance%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20%20evt%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20%20prevEvt%20Previous%20Event%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%0A%20%20%20%2A%2F%0A%2C%20isDblClick%3A%20function%28evt%2C%20prevEvt%29%20%7B%0A%20%20%20%20%2F%2F%20Double%20click%20detected%20by%20browser%0A%20%20%20%20if%20%28evt%2Edetail%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Try%20to%20compare%20events%0A%20%20%20%20else%20if%20%28prevEvt%20%21%3D%3D%20void%200%20%26%26%20prevEvt%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20var%20timeStampDiff%20%3D%20evt%2EtimeStamp%20%2D%20prevEvt%2EtimeStamp%20%2F%2F%20should%20be%20lower%20than%20250%20ms%0A%20%20%20%20%20%20%20%20%2C%20touchesDistance%20%3D%20Math%2Esqrt%28Math%2Epow%28evt%2EclientX%20%2D%20prevEvt%2EclientX%2C%202%29%20%2B%20Math%2Epow%28evt%2EclientY%20%2D%20prevEvt%2EclientY%2C%202%29%29%0A%0A%20%20%20%20%20%20return%20timeStampDiff%20%3C%20250%20%26%26%20touchesDistance%20%3C%2010%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Nothing%20found%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Returns%20current%20timestamp%20as%20an%20integer%0A%20%20%20%2A%0A%20%20%20%2A%20%40return%20%7BNumber%7D%0A%20%20%20%2A%2F%0A%2C%20now%3A%20Date%2Enow%20%7C%7C%20function%28%29%20%7B%0A%20%20%20%20return%20new%20Date%28%29%2EgetTime%28%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20From%20underscore%2E%0A%20%20%2F%2F%20Returns%20a%20function%2C%20that%2C%20when%20invoked%2C%20will%20only%20be%20triggered%20at%20most%20once%0A%20%20%2F%2F%20during%20a%20given%20window%20of%20time%2E%20Normally%2C%20the%20throttled%20function%20will%20run%0A%20%20%2F%2F%20as%20much%20as%20it%20can%2C%20without%20ever%20going%20more%20than%20once%20per%20%60wait%60%20duration%3B%0A%20%20%2F%2F%20but%20if%20you%27d%20like%20to%20disable%20the%20execution%20on%20the%20leading%20edge%2C%20pass%0A%20%20%2F%2F%20%60%7Bleading%3A%20false%7D%60%2E%20To%20disable%20execution%20on%20the%20trailing%20edge%2C%20ditto%2E%0A%2F%2F%20jscs%3Adisable%0A%2F%2F%20jshint%20ignore%3Astart%0A%2C%20throttle%3A%20function%28func%2C%20wait%2C%20options%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%3B%0A%20%20%20%20var%20context%2C%20args%2C%20result%3B%0A%20%20%20%20var%20timeout%20%3D%20null%3B%0A%20%20%20%20var%20previous%20%3D%200%3B%0A%20%20%20%20if%20%28%21options%29%20options%20%3D%20%7B%7D%3B%0A%20%20%20%20var%20later%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20previous%20%3D%20options%2Eleading%20%3D%3D%3D%20false%20%3F%200%20%3A%20that%2Enow%28%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20result%20%3D%20func%2Eapply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20now%20%3D%20that%2Enow%28%29%3B%0A%20%20%20%20%20%20if%20%28%21previous%20%26%26%20options%2Eleading%20%3D%3D%3D%20false%29%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20var%20remaining%20%3D%20wait%20%2D%20%28now%20%2D%20previous%29%3B%0A%20%20%20%20%20%20context%20%3D%20this%3B%0A%20%20%20%20%20%20args%20%3D%20arguments%3B%0A%20%20%20%20%20%20if%20%28remaining%20%3C%3D%200%20%7C%7C%20remaining%20%3E%20wait%29%20%7B%0A%20%20%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20%20%20result%20%3D%20func%2Eapply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21timeout%20%26%26%20options%2Etrailing%20%21%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20remaining%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%2F%2F%20jshint%20ignore%3Aend%0A%2F%2F%20jscs%3Aenable%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Create%20a%20requestAnimationFrame%20simulation%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BNumber%7CString%7D%20refreshRate%0A%20%20%20%2A%20%40return%20%7BFunction%7D%0A%20%20%20%2A%2F%0A%2C%20createRequestAnimationFrame%3A%20function%28refreshRate%29%20%7B%0A%20%20%20%20var%20timeout%20%3D%20null%0A%0A%20%20%20%20%2F%2F%20Convert%20refreshRate%20to%20timeout%0A%20%20%20%20if%20%28refreshRate%20%21%3D%3D%20%27auto%27%20%26%26%20refreshRate%20%3C%2060%20%26%26%20refreshRate%20%3E%201%29%20%7B%0A%20%20%20%20%20%20timeout%20%3D%20Math%2Efloor%281000%20%2F%20refreshRate%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28timeout%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20window%2ErequestAnimationFrame%20%7C%7C%20requestTimeout%2833%29%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20requestTimeout%28timeout%29%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Create%20a%20callback%20that%20will%20execute%20after%20a%20given%20timeout%0A%20%2A%0A%20%2A%20%40param%20%20%7BFunction%7D%20timeout%0A%20%2A%20%40return%20%7BFunction%7D%0A%20%2A%2F%0Afunction%20requestTimeout%28timeout%29%20%7B%0A%20%20return%20function%28callback%29%20%7B%0A%20%20%20%20window%2EsetTimeout%28callback%2C%20timeout%29%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%7D%5D%7D%2C%7B%7D%2C%5B1%5D%29%3B%0A&quot;&gt;&lt;/script&gt;&#10;&lt;script src=&quot;data:application/x-javascript,HTMLWidgets%2Ewidget%28%7B%0A%0A%20%20name%3A%20%27svgPanZoom%27%2C%0A%0A%20%20type%3A%20%27output%27%2C%0A%0A%20%20initialize%3A%20function%28el%2C%20width%2C%20height%29%20%7B%0A%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%2F%2F%20TODO%3A%20add%20instance%20fields%20as%20required%0A%20%20%20%20%7D%0A%0A%20%20%7D%2C%0A%0A%20%20renderValue%3A%20function%28el%2C%20x%2C%20instance%29%20%7B%0A%20%20%20%20%2F%2F%20set%20innerHTML%20equal%20to%20the%20SVG%20provided%20by%20R%20as%20x%2Esvg%0A%20%20%20%20%2F%2F%20%20for%20better%20robustness%2C%20create%20DOM%20element%20separately%0A%20%20%20%20%2F%2F%20%20and%20add%20to%20the%20htmlwidgets%20container%20el%0A%20%20%20%20el%2EinnerHTML%20%3D%20x%2Esvg%3B%0A%0A%20%20%20%20var%20svg%20%3D%20el%2EgetElementsByTagName%28%22svg%22%29%5B0%5D%0A%0A%20%20%20%20%2F%2F%20use%20this%20to%20sort%20of%20make%20our%20diagram%20responsive%0A%20%20%20%20%2F%2F%20%20or%20at%20a%20minimum%20fit%20within%20the%20bounds%20set%20by%20htmlwidgets%0A%20%20%20%20%2F%2F%20%20for%20the%20parent%20container%0A%20%20%20%20function%20makeResponsive%28el%29%7B%0A%20%20%20%20%20%20%20var%20svg%20%3D%20el%2EgetElementsByTagName%28%22svg%22%29%5B0%5D%3B%0A%20%20%20%20%20%20%20if%28svg%29%7B%0A%20%20%20%20%20%20%20%20if%28svg%2Ewidth%29%20%7Bsvg%2EremoveAttribute%28%22width%22%29%7D%3B%0A%20%20%20%20%20%20%20%20if%28svg%2Eheight%29%20%7Bsvg%2EremoveAttribute%28%22height%22%29%7D%3B%0A%20%20%20%20%20%20%20%20svg%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20svg%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20makeResponsive%28el%29%3B%0A%0A%20%20%20%20instance%2EzoomWidget%20%3D%20svgPanZoom%28svg%2C%20x%2Econfig%29%3B%0A%20%20%20%20%2F%2F%20%20use%20expando%20property%20so%20we%20can%20access%20later%0A%20%20%20%20%2F%2F%20%20%20%20somewhere%20saw%20where%20expando%20can%20cause%20memory%20leak%20in%20IE%0A%20%20%20%20%2F%2F%20%20%20%20could%20also%20set%20in%20HTMLWidgets%2Ewidgets%5Bx%5D%20where%20matches%20el%0A%20%20%20%20el%2EzoomWidget%20%3D%20instance%2EzoomWidget%3B%0A%0A%20%20%7D%2C%0A%0A%20%20resize%3A%20function%28el%2C%20width%2C%20height%2C%20instance%29%20%7B%0A%0A%20%20%7D%0A%0A%7D%29%3B%0A&quot;&gt;&lt;/script&gt;&#10;&#10;&lt;/head&gt;&#10;&lt;body style=&quot;background-color:white;&quot;&gt;&#10;&lt;div id=&quot;htmlwidget_container&quot;&gt;&#10; &lt;div id=&quot;htmlwidget-3332&quot; style=&quot;width:960px;height:500px;&quot; class=&quot;svgPanZoom&quot;&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;script type=&quot;application/json&quot; data-for=&quot;htmlwidget-3332&quot;&gt;{ &quot;x&quot;: {&#10; &quot;svg&quot;: &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;\n&lt;svg xmlns=\&quot;http://www.w3.org/2000/svg\&quot; xmlns:xlink=\&quot;http://www.w3.org/1999/xlink\&quot; width=\&quot;1152pt\&quot; height=\&quot;720pt\&quot; viewBox=\&quot;0 0 1152 720\&quot; version=\&quot;1.1\&quot;&gt;\n &lt;display xmlns:r=\&quot;http://www.r-project.org\&quot; usr=\&quot;0.00183856116448483,0.0153817133293448,0.000199229492253874,0.000500182006401707\&quot;&gt;&lt;![CDATA[{\nmycolors = RColorBrewer::brewer.pal(9, \&quot;Set1\&quot;)[-6]\nfrontier &lt;- portfolioFrontier(as.timeSeries(returns))\npointsFrontier = frontierPoints(frontier, frontier = \&quot;both\&quot;, auto = TRUE)\ntargetRisk = getTargetRisk(frontier@portfolio)[, 1]\ntargetReturn = getTargetReturn(frontier@portfolio)[, 1]\nans = cbind(Risk = targetRisk, Return = targetReturn)\ncolnames(ans) = c(\&quot;targetRisk\&quot;, \&quot;targetReturn\&quot;)\nrownames(ans) = as.character(1:NROW(ans))\nplot(ans, type = \&quot;l\&quot;, lwd = 2, lty = 3, xlab = NA, ylab = NA, bty = \&quot;L\&quot;)\nminvariancePoints(frontier, pch = 19, col = \&quot;red\&quot;)\ntangencyPoints(frontier, pch = 19, col = \&quot;blue\&quot;)\nequalWeightsPoints(frontier, pch = 15, col = \&quot;grey\&quot;)\nsingleAssetPoints(frontier, pch = 19, cex = 1.5, col = mycolors)\ntwoAssetsLines(frontier, lty = 3, col = \&quot;grey\&quot;)\nstats &lt;- getStatistics(frontier)\ntext(y = stats$mean, x = sqrt(diag(stats$Cov)), labels = names(stats$mean), pos = 4, col = mycolors, cex = 0.7)\nequalLabel &lt;- function(object, return = c(\&quot;mean\&quot;, \&quot;mu\&quot;), risk = c(\&quot;Cov\&quot;, \&quot;Sigma\&quot;, \&quot;CVaR\&quot;, \&quot;VaR\&quot;), auto = TRUE, ...) {\n return = match.arg(return)\n risk = match.arg(risk)\n data = getSeries(object)\n spec = getSpec(object)\n constraints = getConstraints(object)\n numberOfAssets = getNAssets(object)\n setWeights(spec) = rep(1/numberOfAssets, times = numberOfAssets)\n ewPortfolio = feasiblePortfolio(data, spec, constraints)\n assets = frontierPoints(ewPortfolio, return = return, risk = risk, auto = auto)\n text(assets, labels = \&quot;Equal-Weight\&quot;, pos = 4, ...)\n invisible(assets)\n}\nequalLabel(frontier, cex = 0.7, col = \&quot;grey\&quot;)\ntitle(main = paste0(\&quot;Efficient Frontier Vanguard Funds \&quot;, format(head(index(returns), 1), \&quot;%Y\&quot;), \&quot; to \&quot;, format(tail(index(returns), 1), \&quot;%Y\&quot;)))\n}\n]]&gt;&lt;/display&gt;\n &lt;defs&gt;\n &lt;g&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.519531 -4.414063 C 0.515625 -5.46875 0.625 -6.320313 0.84375 -6.964844 C 1.0625 -7.609375 1.386719 -8.105469 1.816406 -8.457031 C 2.246094 -8.804688 2.785156 -8.980469 3.4375 -8.984375 C 3.914063 -8.980469 4.335938 -8.886719 4.699219 -8.695313 C 5.058594 -8.5 5.355469 -8.21875 5.59375 -7.859375 C 5.828125 -7.492188 6.015625 -7.050781 6.152344 -6.527344 C 6.285156 -6.003906 6.351563 -5.296875 6.355469 -4.414063 C 6.351563 -3.359375 6.242188 -2.511719 6.03125 -1.871094 C 5.8125 -1.222656 5.492188 -0.726563 5.0625 -0.375 C 4.632813 -0.0234375 4.089844 0.152344 3.4375 0.152344 C 2.570313 0.152344 1.890625 -0.15625 1.402344 -0.773438 C 0.808594 -1.515625 0.515625 -2.726563 0.519531 -4.414063 Z M 1.648438 -4.414063 C 1.644531 -2.941406 1.816406 -1.964844 2.164063 -1.480469 C 2.503906 -0.992188 2.929688 -0.75 3.4375 -0.75 C 3.9375 -0.75 4.359375 -0.992188 4.707031 -1.480469 C 5.050781 -1.96875 5.226563 -2.945313 5.226563 -4.414063 C 5.226563 -5.882813 5.050781 -6.863281 4.707031 -7.347656 C 4.359375 -7.832031 3.933594 -8.074219 3.425781 -8.074219 C 2.917969 -8.074219 2.515625 -7.859375 2.214844 -7.433594 C 1.835938 -6.886719 1.644531 -5.878906 1.648438 -4.414063 Z M 1.648438 -4.414063 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 1.136719 0 L 1.136719 -1.25 L 2.386719 -1.25 L 2.386719 0 Z M 1.136719 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 6.292969 -1.054688 L 6.292969 0 L 0.378906 0 C 0.367188 -0.265625 0.410156 -0.519531 0.507813 -0.761719 C 0.65625 -1.164063 0.898438 -1.558594 1.230469 -1.953125 C 1.558594 -2.339844 2.035156 -2.792969 2.667969 -3.308594 C 3.636719 -4.101563 4.292969 -4.734375 4.636719 -5.203125 C 4.976563 -5.667969 5.148438 -6.105469 5.152344 -6.523438 C 5.148438 -6.957031 4.992188 -7.324219 4.683594 -7.625 C 4.371094 -7.921875 3.96875 -8.074219 3.46875 -8.074219 C 2.9375 -8.074219 2.511719 -7.914063 2.195313 -7.597656 C 1.878906 -7.277344 1.71875 -6.839844 1.714844 -6.28125 L 0.585938 -6.398438 C 0.664063 -7.238281 0.953125 -7.878906 1.457031 -8.320313 C 1.960938 -8.761719 2.640625 -8.980469 3.492188 -8.984375 C 4.347656 -8.980469 5.023438 -8.742188 5.527344 -8.269531 C 6.027344 -7.789063 6.28125 -7.199219 6.28125 -6.5 C 6.28125 -6.140625 6.207031 -5.789063 6.058594 -5.445313 C 5.910156 -5.09375 5.664063 -4.730469 5.328125 -4.351563 C 4.984375 -3.964844 4.421875 -3.441406 3.636719 -2.777344 C 2.976563 -2.222656 2.554688 -1.84375 2.367188 -1.648438 C 2.179688 -1.449219 2.023438 -1.253906 1.90625 -1.054688 Z M 6.292969 -1.054688 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 4.039063 0 L 4.039063 -2.140625 L 0.160156 -2.140625 L 0.160156 -3.148438 L 4.242188 -8.949219 L 5.140625 -8.949219 L 5.140625 -3.148438 L 6.347656 -3.148438 L 6.347656 -2.140625 L 5.140625 -2.140625 L 5.140625 0 Z M 4.039063 -3.148438 L 4.039063 -7.183594 L 1.238281 -3.148438 Z M 4.039063 -3.148438 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 6.21875 -6.757813 L 5.125 -6.671875 C 5.027344 -7.097656 4.890625 -7.410156 4.710938 -7.609375 C 4.414063 -7.921875 4.046875 -8.078125 3.613281 -8.082031 C 3.261719 -8.078125 2.953125 -7.980469 2.691406 -7.789063 C 2.339844 -7.53125 2.066406 -7.164063 1.871094 -6.683594 C 1.667969 -6.195313 1.566406 -5.503906 1.5625 -4.613281 C 1.824219 -5.011719 2.148438 -5.3125 2.53125 -5.511719 C 2.914063 -5.703125 3.3125 -5.800781 3.734375 -5.804688 C 4.464844 -5.800781 5.089844 -5.53125 5.605469 -4.996094 C 6.117188 -4.453125 6.375 -3.757813 6.378906 -2.90625 C 6.375 -2.34375 6.253906 -1.820313 6.015625 -1.339844 C 5.769531 -0.855469 5.4375 -0.484375 5.015625 -0.230469 C 4.59375 0.0273438 4.113281 0.152344 3.578125 0.152344 C 2.660156 0.152344 1.914063 -0.183594 1.335938 -0.855469 C 0.757813 -1.527344 0.46875 -2.636719 0.46875 -4.1875 C 0.46875 -5.914063 0.789063 -7.171875 1.429688 -7.960938 C 1.984375 -8.640625 2.734375 -8.980469 3.679688 -8.984375 C 4.382813 -8.980469 4.957031 -8.785156 5.410156 -8.390625 C 5.855469 -7.996094 6.125 -7.449219 6.21875 -6.757813 Z M 1.734375 -2.898438 C 1.734375 -2.519531 1.8125 -2.15625 1.972656 -1.8125 C 2.132813 -1.460938 2.359375 -1.199219 2.648438 -1.019531 C 2.9375 -0.839844 3.238281 -0.75 3.558594 -0.75 C 4.019531 -0.75 4.417969 -0.9375 4.753906 -1.3125 C 5.082031 -1.6875 5.25 -2.195313 5.253906 -2.839844 C 5.25 -3.453125 5.085938 -3.941406 4.757813 -4.300781 C 4.429688 -4.65625 4.015625 -4.832031 3.515625 -4.835938 C 3.015625 -4.832031 2.59375 -4.65625 2.25 -4.300781 C 1.90625 -3.941406 1.734375 -3.472656 1.734375 -2.898438 Z M 1.734375 -2.898438 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.210938 -4.851563 C 1.75 -5.015625 1.414063 -5.253906 1.195313 -5.566406 C 0.976563 -5.875 0.867188 -6.242188 0.867188 -6.675781 C 0.867188 -7.324219 1.097656 -7.871094 1.566406 -8.316406 C 2.03125 -8.757813 2.65625 -8.980469 3.4375 -8.984375 C 4.214844 -8.980469 4.84375 -8.753906 5.320313 -8.304688 C 5.796875 -7.847656 6.035156 -7.296875 6.035156 -6.648438 C 6.035156 -6.230469 5.925781 -5.867188 5.707031 -5.5625 C 5.488281 -5.25 5.15625 -5.015625 4.71875 -4.851563 C 5.265625 -4.671875 5.683594 -4.382813 5.972656 -3.984375 C 6.253906 -3.585938 6.398438 -3.109375 6.402344 -2.558594 C 6.398438 -1.789063 6.128906 -1.144531 5.589844 -0.628906 C 5.046875 -0.105469 4.332031 0.152344 3.453125 0.152344 C 2.566406 0.152344 1.855469 -0.105469 1.316406 -0.628906 C 0.773438 -1.148438 0.503906 -1.800781 0.507813 -2.585938 C 0.503906 -3.164063 0.652344 -3.652344 0.949219 -4.050781 C 1.242188 -4.441406 1.660156 -4.710938 2.210938 -4.851563 Z M 1.988281 -6.714844 C 1.984375 -6.289063 2.121094 -5.941406 2.398438 -5.675781 C 2.667969 -5.40625 3.023438 -5.273438 3.460938 -5.273438 C 3.878906 -5.273438 4.226563 -5.40625 4.5 -5.671875 C 4.769531 -5.9375 4.902344 -6.261719 4.90625 -6.652344 C 4.902344 -7.050781 4.765625 -7.390625 4.488281 -7.667969 C 4.207031 -7.941406 3.859375 -8.078125 3.449219 -8.082031 C 3.027344 -8.078125 2.679688 -7.945313 2.402344 -7.675781 C 2.125 -7.40625 1.984375 -7.085938 1.988281 -6.714844 Z M 1.636719 -2.582031 C 1.632813 -2.265625 1.707031 -1.960938 1.859375 -1.671875 C 2.003906 -1.375 2.226563 -1.148438 2.519531 -0.992188 C 2.8125 -0.828125 3.128906 -0.75 3.46875 -0.75 C 3.992188 -0.75 4.421875 -0.917969 4.765625 -1.257813 C 5.105469 -1.59375 5.277344 -2.023438 5.28125 -2.546875 C 5.277344 -3.074219 5.101563 -3.511719 4.75 -3.855469 C 4.394531 -4.199219 3.953125 -4.371094 3.429688 -4.375 C 2.910156 -4.371094 2.484375 -4.199219 2.144531 -3.863281 C 1.804688 -3.519531 1.632813 -3.09375 1.636719 -2.582031 Z M 1.636719 -2.582031 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 4.65625 0 L 3.558594 0 L 3.558594 -7 C 3.289063 -6.746094 2.941406 -6.492188 2.515625 -6.242188 C 2.085938 -5.988281 1.703125 -5.800781 1.359375 -5.675781 L 1.359375 -6.738281 C 1.972656 -7.027344 2.507813 -7.375 2.972656 -7.789063 C 3.429688 -8.195313 3.757813 -8.59375 3.949219 -8.984375 L 4.65625 -8.984375 Z M 4.65625 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -4.414063 -0.519531 C -5.46875 -0.515625 -6.320313 -0.625 -6.964844 -0.84375 C -7.609375 -1.0625 -8.105469 -1.386719 -8.457031 -1.816406 C -8.804688 -2.246094 -8.980469 -2.785156 -8.984375 -3.4375 C -8.980469 -3.914063 -8.886719 -4.335938 -8.695313 -4.699219 C -8.5 -5.058594 -8.21875 -5.355469 -7.859375 -5.59375 C -7.492188 -5.828125 -7.050781 -6.015625 -6.527344 -6.152344 C -6.003906 -6.285156 -5.296875 -6.351563 -4.414063 -6.355469 C -3.359375 -6.351563 -2.511719 -6.242188 -1.871094 -6.03125 C -1.222656 -5.8125 -0.726563 -5.492188 -0.375 -5.0625 C -0.0234375 -4.632813 0.152344 -4.089844 0.152344 -3.4375 C 0.152344 -2.570313 -0.15625 -1.890625 -0.773438 -1.402344 C -1.515625 -0.808594 -2.726563 -0.515625 -4.414063 -0.519531 Z M -4.414063 -1.648438 C -2.941406 -1.644531 -1.964844 -1.816406 -1.480469 -2.164063 C -0.992188 -2.503906 -0.75 -2.929688 -0.75 -3.4375 C -0.75 -3.9375 -0.992188 -4.359375 -1.480469 -4.707031 C -1.96875 -5.050781 -2.945313 -5.226563 -4.414063 -5.226563 C -5.882813 -5.226563 -6.863281 -5.050781 -7.347656 -4.707031 C -7.832031 -4.359375 -8.074219 -3.933594 -8.074219 -3.425781 C -8.074219 -2.917969 -7.859375 -2.515625 -7.433594 -2.214844 C -6.886719 -1.835938 -5.878906 -1.644531 -4.414063 -1.648438 Z M -4.414063 -1.648438 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -1.136719 L -1.25 -1.136719 L -1.25 -2.386719 L 0 -2.386719 Z M 0 -1.136719 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -1.054688 -6.292969 L 0 -6.292969 L 0 -0.378906 C -0.265625 -0.367188 -0.519531 -0.410156 -0.761719 -0.507813 C -1.164063 -0.65625 -1.558594 -0.898438 -1.953125 -1.230469 C -2.339844 -1.558594 -2.792969 -2.035156 -3.308594 -2.667969 C -4.101563 -3.636719 -4.734375 -4.292969 -5.203125 -4.636719 C -5.667969 -4.976563 -6.105469 -5.148438 -6.523438 -5.152344 C -6.957031 -5.148438 -7.324219 -4.992188 -7.625 -4.683594 C -7.921875 -4.371094 -8.074219 -3.96875 -8.074219 -3.46875 C -8.074219 -2.9375 -7.914063 -2.511719 -7.597656 -2.195313 C -7.277344 -1.878906 -6.839844 -1.71875 -6.28125 -1.714844 L -6.398438 -0.585938 C -7.238281 -0.664063 -7.878906 -0.953125 -8.320313 -1.457031 C -8.761719 -1.960938 -8.980469 -2.640625 -8.984375 -3.492188 C -8.980469 -4.347656 -8.742188 -5.023438 -8.269531 -5.527344 C -7.789063 -6.027344 -7.199219 -6.28125 -6.5 -6.28125 C -6.140625 -6.28125 -5.789063 -6.207031 -5.445313 -6.058594 C -5.09375 -5.910156 -4.730469 -5.664063 -4.351563 -5.328125 C -3.964844 -4.984375 -3.441406 -4.421875 -2.777344 -3.636719 C -2.222656 -2.976563 -1.84375 -2.554688 -1.648438 -2.367188 C -1.449219 -2.179688 -1.253906 -2.023438 -1.054688 -1.90625 Z M -1.054688 -6.292969 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -2.34375 -0.519531 L -2.441406 -1.671875 C -1.875 -1.753906 -1.453125 -1.953125 -1.171875 -2.265625 C -0.890625 -2.574219 -0.75 -2.949219 -0.75 -3.394531 C -0.75 -3.917969 -0.949219 -4.367188 -1.347656 -4.734375 C -1.746094 -5.101563 -2.273438 -5.285156 -2.9375 -5.285156 C -3.558594 -5.285156 -4.054688 -5.109375 -4.417969 -4.757813 C -4.777344 -4.40625 -4.957031 -3.945313 -4.960938 -3.375 C -4.957031 -3.019531 -4.875 -2.699219 -4.71875 -2.414063 C -4.554688 -2.128906 -4.347656 -1.90625 -4.09375 -1.746094 L -4.230469 -0.714844 L -8.824219 -1.582031 L -8.824219 -6.03125 L -7.777344 -6.03125 L -7.777344 -2.460938 L -5.371094 -1.976563 C -5.742188 -2.511719 -5.929688 -3.078125 -5.933594 -3.667969 C -5.929688 -4.449219 -5.660156 -5.105469 -5.121094 -5.644531 C -4.578125 -6.179688 -3.882813 -6.449219 -3.035156 -6.453125 C -2.222656 -6.449219 -1.519531 -6.214844 -0.933594 -5.742188 C -0.207031 -5.167969 0.152344 -4.382813 0.152344 -3.394531 C 0.152344 -2.574219 -0.0742188 -1.910156 -0.53125 -1.398438 C -0.984375 -0.882813 -1.589844 -0.589844 -2.34375 -0.519531 Z M -2.34375 -0.519531 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -2.363281 -0.523438 L -2.507813 -1.625 C -1.882813 -1.746094 -1.433594 -1.960938 -1.160156 -2.265625 C -0.886719 -2.566406 -0.75 -2.9375 -0.75 -3.375 C -0.75 -3.890625 -0.925781 -4.324219 -1.285156 -4.683594 C -1.640625 -5.035156 -2.085938 -5.214844 -2.617188 -5.21875 C -3.121094 -5.214844 -3.539063 -5.050781 -3.867188 -4.722656 C -4.195313 -4.394531 -4.359375 -3.976563 -4.359375 -3.46875 C -4.359375 -3.257813 -4.316406 -2.996094 -4.234375 -2.691406 L -5.199219 -2.8125 C -5.1875 -2.882813 -5.183594 -2.941406 -5.1875 -2.992188 C -5.183594 -3.457031 -5.308594 -3.878906 -5.554688 -4.253906 C -5.796875 -4.628906 -6.171875 -4.816406 -6.683594 -4.816406 C -7.085938 -4.816406 -7.417969 -4.679688 -7.683594 -4.40625 C -7.945313 -4.132813 -8.078125 -3.78125 -8.082031 -3.351563 C -8.078125 -2.921875 -7.945313 -2.5625 -7.675781 -2.28125 C -7.40625 -1.992188 -7.003906 -1.8125 -6.46875 -1.734375 L -6.664063 -0.636719 C -7.398438 -0.765625 -7.96875 -1.070313 -8.375 -1.550781 C -8.777344 -2.023438 -8.980469 -2.617188 -8.984375 -3.328125 C -8.980469 -3.8125 -8.875 -4.261719 -8.667969 -4.675781 C -8.457031 -5.085938 -8.171875 -5.398438 -7.8125 -5.617188 C -7.445313 -5.832031 -7.0625 -5.941406 -6.660156 -5.945313 C -6.269531 -5.941406 -5.917969 -5.835938 -5.601563 -5.632813 C -5.28125 -5.421875 -5.027344 -5.117188 -4.847656 -4.710938 C -4.722656 -5.238281 -4.46875 -5.648438 -4.085938 -5.941406 C -3.695313 -6.234375 -3.214844 -6.378906 -2.644531 -6.382813 C -1.859375 -6.378906 -1.199219 -6.09375 -0.65625 -5.527344 C -0.113281 -4.957031 0.15625 -4.238281 0.160156 -3.367188 C 0.15625 -2.582031 -0.0742188 -1.929688 -0.542969 -1.414063 C -1.007813 -0.890625 -1.613281 -0.59375 -2.363281 -0.523438 Z M -2.363281 -0.523438 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -4.039063 L -2.140625 -4.039063 L -2.140625 -0.160156 L -3.148438 -0.160156 L -8.949219 -4.242188 L -8.949219 -5.140625 L -3.148438 -5.140625 L -3.148438 -6.347656 L -2.140625 -6.347656 L -2.140625 -5.140625 L 0 -5.140625 Z M -3.148438 -4.039063 L -7.183594 -4.039063 L -3.148438 -1.238281 Z M -3.148438 -4.039063 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.507813 0 L 0.0390625 -6.371094 L 0.953125 -6.371094 L 2.605469 -1.742188 C 2.738281 -1.367188 2.851563 -1.019531 2.941406 -0.699219 C 3.039063 -1.042969 3.152344 -1.390625 3.285156 -1.742188 L 5.007813 -6.371094 L 5.867188 -6.371094 L 3.371094 0 Z M 2.507813 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.730469 0 L 0.730469 -6.371094 L 5.027344 -6.371094 L 5.027344 -5.617188 L 1.574219 -5.617188 L 1.574219 -3.644531 L 4.5625 -3.644531 L 4.5625 -2.894531 L 1.574219 -2.894531 L 1.574219 0 Z M 0.730469 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.828125 0 L 0.828125 -6.371094 L 1.671875 -6.371094 L 1.671875 0 Z M 0.828125 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.679688 0 L 0.679688 -6.371094 L 1.542969 -6.371094 L 4.890625 -1.367188 L 4.890625 -6.371094 L 5.695313 -6.371094 L 5.695313 0 L 4.832031 0 L 1.484375 -5.007813 L 1.484375 0 Z M 0.679688 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.0390625 0 L 2.503906 -3.320313 L 0.332031 -6.371094 L 1.335938 -6.371094 L 2.488281 -4.738281 C 2.726563 -4.394531 2.898438 -4.132813 3.003906 -3.953125 C 3.140625 -4.183594 3.308594 -4.425781 3.507813 -4.679688 L 4.789063 -6.371094 L 5.707031 -6.371094 L 3.46875 -3.367188 L 5.878906 0 L 4.835938 0 L 3.234375 -2.273438 C 3.140625 -2.402344 3.046875 -2.542969 2.953125 -2.699219 C 2.8125 -2.464844 2.710938 -2.304688 2.652344 -2.21875 L 1.050781 0 Z M 0.0390625 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.703125 0 L 0.703125 -6.371094 L 5.308594 -6.371094 L 5.308594 -5.617188 L 1.546875 -5.617188 L 1.546875 -3.667969 L 5.070313 -3.667969 L 5.070313 -2.921875 L 1.546875 -2.921875 L 1.546875 -0.75 L 5.457031 -0.75 L 5.457031 0 Z M 0.703125 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -0.0117188 0 L 2.433594 -6.371094 L 3.34375 -6.371094 L 5.949219 0 L 4.988281 0 L 4.246094 -1.929688 L 1.582031 -1.929688 L 0.882813 0 Z M 1.824219 -2.617188 L 3.984375 -2.617188 L 3.320313 -4.378906 C 3.113281 -4.910156 2.960938 -5.351563 2.867188 -5.703125 C 2.78125 -5.289063 2.667969 -4.882813 2.523438 -4.484375 Z M 1.824219 -2.617188 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-7\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.652344 0 L 0.652344 -6.371094 L 3.042969 -6.371094 C 3.527344 -6.367188 3.917969 -6.304688 4.210938 -6.175781 C 4.503906 -6.046875 4.734375 -5.847656 4.902344 -5.582031 C 5.066406 -5.3125 5.148438 -5.03125 5.152344 -4.742188 C 5.148438 -4.464844 5.074219 -4.207031 4.929688 -3.96875 C 4.78125 -3.726563 4.558594 -3.535156 4.261719 -3.390625 C 4.644531 -3.273438 4.941406 -3.078125 5.148438 -2.808594 C 5.355469 -2.535156 5.460938 -2.214844 5.460938 -1.847656 C 5.460938 -1.542969 5.398438 -1.265625 5.273438 -1.011719 C 5.148438 -0.753906 4.992188 -0.558594 4.804688 -0.421875 C 4.617188 -0.28125 4.382813 -0.175781 4.109375 -0.105469 C 3.828125 -0.0351563 3.488281 0 3.082031 0 Z M 1.496094 -3.695313 L 2.871094 -3.695313 C 3.246094 -3.691406 3.511719 -3.714844 3.675781 -3.769531 C 3.886719 -3.828125 4.050781 -3.933594 4.160156 -4.082031 C 4.269531 -4.226563 4.324219 -4.414063 4.324219 -4.640625 C 4.324219 -4.851563 4.273438 -5.035156 4.171875 -5.199219 C 4.070313 -5.355469 3.921875 -5.464844 3.734375 -5.527344 C 3.542969 -5.582031 3.222656 -5.613281 2.769531 -5.617188 L 1.496094 -5.617188 Z M 1.496094 -0.75 L 3.082031 -0.75 C 3.351563 -0.75 3.542969 -0.757813 3.65625 -0.78125 C 3.847656 -0.8125 4.007813 -0.871094 4.140625 -0.957031 C 4.269531 -1.035156 4.375 -1.152344 4.460938 -1.308594 C 4.542969 -1.460938 4.585938 -1.640625 4.589844 -1.847656 C 4.585938 -2.082031 4.527344 -2.289063 4.40625 -2.464844 C 4.28125 -2.640625 4.109375 -2.765625 3.898438 -2.835938 C 3.679688 -2.90625 3.371094 -2.941406 2.96875 -2.941406 L 1.496094 -2.941406 Z M 1.496094 -0.75 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-8\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.660156 0 L 0.660156 -6.371094 L 1.929688 -6.371094 L 3.4375 -1.859375 C 3.574219 -1.4375 3.675781 -1.125 3.742188 -0.917969 C 3.8125 -1.148438 3.925781 -1.488281 4.082031 -1.9375 L 5.605469 -6.371094 L 6.738281 -6.371094 L 6.738281 0 L 5.925781 0 L 5.925781 -5.332031 L 4.078125 0 L 3.316406 0 L 1.472656 -5.421875 L 1.472656 0 Z M 0.660156 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-9\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 1.800781 0 L 0.109375 -6.371094 L 0.972656 -6.371094 L 1.941406 -2.195313 C 2.042969 -1.753906 2.132813 -1.320313 2.210938 -0.890625 C 2.371094 -1.570313 2.46875 -1.960938 2.5 -2.070313 L 3.710938 -6.371094 L 4.726563 -6.371094 L 5.640625 -3.144531 C 5.867188 -2.34375 6.03125 -1.59375 6.136719 -0.890625 C 6.214844 -1.292969 6.320313 -1.753906 6.453125 -2.277344 L 7.453125 -6.371094 L 8.300781 -6.371094 L 6.554688 0 L 5.742188 0 L 4.398438 -4.855469 C 4.28125 -5.257813 4.214844 -5.507813 4.199219 -5.601563 C 4.128906 -5.308594 4.066406 -5.058594 4.011719 -4.855469 L 2.660156 0 Z M 1.800781 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-10\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.667969 -2.5 L 3.667969 -3.246094 L 6.367188 -3.25 L 6.367188 -0.886719 C 5.949219 -0.550781 5.523438 -0.304688 5.085938 -0.140625 C 4.644531 0.0234375 4.191406 0.105469 3.730469 0.109375 C 3.101563 0.105469 2.53125 -0.0273438 2.023438 -0.292969 C 1.507813 -0.558594 1.121094 -0.945313 0.863281 -1.453125 C 0.597656 -1.960938 0.46875 -2.527344 0.472656 -3.15625 C 0.46875 -3.773438 0.597656 -4.351563 0.859375 -4.890625 C 1.117188 -5.425781 1.492188 -5.824219 1.980469 -6.085938 C 2.464844 -6.347656 3.023438 -6.480469 3.664063 -6.480469 C 4.121094 -6.480469 4.539063 -6.402344 4.914063 -6.253906 C 5.285156 -6.101563 5.578125 -5.894531 5.789063 -5.628906 C 6 -5.359375 6.160156 -5.011719 6.269531 -4.589844 L 5.511719 -4.378906 C 5.414063 -4.699219 5.292969 -4.957031 5.152344 -5.144531 C 5.007813 -5.328125 4.804688 -5.476563 4.542969 -5.589844 C 4.277344 -5.699219 3.988281 -5.753906 3.667969 -5.757813 C 3.28125 -5.753906 2.945313 -5.695313 2.667969 -5.582031 C 2.382813 -5.460938 2.15625 -5.304688 1.988281 -5.117188 C 1.8125 -4.921875 1.679688 -4.714844 1.585938 -4.488281 C 1.421875 -4.09375 1.339844 -3.664063 1.34375 -3.207031 C 1.339844 -2.636719 1.4375 -2.164063 1.636719 -1.78125 C 1.828125 -1.398438 2.113281 -1.113281 2.488281 -0.929688 C 2.859375 -0.742188 3.257813 -0.648438 3.679688 -0.652344 C 4.042969 -0.648438 4.398438 -0.71875 4.746094 -0.863281 C 5.09375 -1 5.355469 -1.152344 5.539063 -1.3125 L 5.539063 -2.5 Z M 3.667969 -2.5 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-11\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.308594 0 L 2.308594 -5.617188 L 0.207031 -5.617188 L 0.207031 -6.371094 L 5.257813 -6.371094 L 5.257813 -5.617188 L 3.152344 -5.617188 L 3.152344 0 Z M 2.308594 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-12\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.699219 0 L 0.699219 -6.371094 L 3.523438 -6.371094 C 4.085938 -6.367188 4.519531 -6.3125 4.816406 -6.199219 C 5.113281 -6.082031 5.347656 -5.878906 5.527344 -5.59375 C 5.699219 -5.300781 5.789063 -4.980469 5.792969 -4.632813 C 5.789063 -4.175781 5.640625 -3.792969 5.351563 -3.488281 C 5.054688 -3.175781 4.605469 -2.980469 3.996094 -2.898438 C 4.21875 -2.789063 4.386719 -2.683594 4.507813 -2.582031 C 4.75 -2.351563 4.984375 -2.070313 5.207031 -1.734375 L 6.3125 0 L 5.253906 0 L 4.410156 -1.324219 C 4.164063 -1.707031 3.960938 -2 3.800781 -2.203125 C 3.640625 -2.40625 3.496094 -2.546875 3.371094 -2.628906 C 3.242188 -2.707031 3.117188 -2.761719 2.988281 -2.796875 C 2.894531 -2.8125 2.738281 -2.824219 2.519531 -2.828125 L 1.542969 -2.828125 L 1.542969 0 Z M 1.542969 -3.558594 L 3.355469 -3.558594 C 3.738281 -3.554688 4.039063 -3.59375 4.257813 -3.675781 C 4.472656 -3.753906 4.636719 -3.882813 4.753906 -4.058594 C 4.863281 -4.234375 4.921875 -4.425781 4.921875 -4.632813 C 4.921875 -4.933594 4.8125 -5.179688 4.59375 -5.375 C 4.375 -5.566406 4.027344 -5.664063 3.558594 -5.667969 L 1.542969 -5.667969 Z M 1.542969 -3.558594 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-13\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.527344 1.769531 L 3.527344 -0.492188 C 3.40625 -0.320313 3.234375 -0.175781 3.019531 -0.0625 C 2.796875 0.0507813 2.566406 0.105469 2.320313 0.105469 C 1.773438 0.105469 1.300781 -0.113281 0.90625 -0.550781 C 0.507813 -0.988281 0.308594 -1.585938 0.3125 -2.351563 C 0.308594 -2.8125 0.390625 -3.230469 0.554688 -3.597656 C 0.714844 -3.964844 0.949219 -4.242188 1.253906 -4.433594 C 1.558594 -4.621094 1.890625 -4.714844 2.257813 -4.71875 C 2.828125 -4.714844 3.277344 -4.476563 3.605469 -3.996094 L 3.605469 -4.613281 L 4.3125 -4.613281 L 4.3125 1.769531 Z M 1.117188 -2.320313 C 1.113281 -1.726563 1.238281 -1.28125 1.488281 -0.984375 C 1.738281 -0.6875 2.035156 -0.539063 2.386719 -0.539063 C 2.714844 -0.539063 3.003906 -0.679688 3.246094 -0.960938 C 3.484375 -1.242188 3.601563 -1.671875 3.605469 -2.25 C 3.601563 -2.863281 3.476563 -3.324219 3.226563 -3.636719 C 2.972656 -3.945313 2.675781 -4.101563 2.332031 -4.101563 C 1.992188 -4.101563 1.703125 -3.957031 1.46875 -3.667969 C 1.230469 -3.378906 1.113281 -2.929688 1.117188 -2.320313 Z M 1.117188 -2.320313 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-14\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.609375 0 L 3.609375 -0.679688 C 3.25 -0.15625 2.761719 0.105469 2.148438 0.105469 C 1.871094 0.105469 1.617188 0.0546875 1.382813 -0.0507813 C 1.148438 -0.152344 0.972656 -0.285156 0.859375 -0.445313 C 0.742188 -0.601563 0.660156 -0.792969 0.617188 -1.027344 C 0.582031 -1.175781 0.566406 -1.417969 0.570313 -1.753906 L 0.570313 -4.613281 L 1.351563 -4.613281 L 1.351563 -2.054688 C 1.347656 -1.644531 1.363281 -1.371094 1.398438 -1.230469 C 1.445313 -1.023438 1.550781 -0.859375 1.710938 -0.746094 C 1.871094 -0.625 2.066406 -0.566406 2.304688 -0.570313 C 2.535156 -0.566406 2.757813 -0.628906 2.964844 -0.75 C 3.167969 -0.867188 3.3125 -1.027344 3.398438 -1.238281 C 3.484375 -1.441406 3.527344 -1.742188 3.527344 -2.140625 L 3.527344 -4.613281 L 4.3125 -4.613281 L 4.3125 0 Z M 3.609375 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-15\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.597656 -0.570313 C 3.308594 -0.320313 3.027344 -0.148438 2.761719 -0.046875 C 2.488281 0.0546875 2.203125 0.105469 1.898438 0.105469 C 1.390625 0.105469 1 -0.015625 0.726563 -0.265625 C 0.453125 -0.511719 0.316406 -0.828125 0.320313 -1.214844 C 0.316406 -1.4375 0.367188 -1.644531 0.472656 -1.835938 C 0.574219 -2.019531 0.710938 -2.171875 0.878906 -2.285156 C 1.042969 -2.398438 1.230469 -2.484375 1.441406 -2.542969 C 1.59375 -2.582031 1.824219 -2.621094 2.136719 -2.660156 C 2.765625 -2.734375 3.230469 -2.824219 3.53125 -2.929688 C 3.535156 -3.035156 3.539063 -3.101563 3.539063 -3.132813 C 3.539063 -3.449219 3.464844 -3.675781 3.316406 -3.808594 C 3.113281 -3.980469 2.816406 -4.066406 2.425781 -4.070313 C 2.054688 -4.066406 1.78125 -4 1.609375 -3.875 C 1.433594 -3.742188 1.304688 -3.515625 1.222656 -3.195313 L 0.457031 -3.296875 C 0.527344 -3.621094 0.640625 -3.886719 0.800781 -4.089844 C 0.957031 -4.292969 1.1875 -4.445313 1.488281 -4.554688 C 1.789063 -4.660156 2.136719 -4.714844 2.539063 -4.71875 C 2.929688 -4.714844 3.25 -4.667969 3.496094 -4.578125 C 3.742188 -4.484375 3.921875 -4.371094 4.039063 -4.230469 C 4.152344 -4.089844 4.234375 -3.910156 4.285156 -3.699219 C 4.308594 -3.5625 4.324219 -3.324219 4.324219 -2.976563 L 4.324219 -1.933594 C 4.324219 -1.207031 4.339844 -0.746094 4.375 -0.554688 C 4.40625 -0.359375 4.472656 -0.175781 4.570313 0 L 3.753906 0 C 3.671875 -0.160156 3.621094 -0.347656 3.597656 -0.570313 Z M 3.53125 -2.316406 C 3.246094 -2.195313 2.820313 -2.097656 2.253906 -2.019531 C 1.929688 -1.972656 1.703125 -1.921875 1.574219 -1.863281 C 1.4375 -1.804688 1.335938 -1.71875 1.265625 -1.609375 C 1.191406 -1.496094 1.152344 -1.371094 1.15625 -1.238281 C 1.152344 -1.027344 1.230469 -0.855469 1.390625 -0.714844 C 1.546875 -0.574219 1.78125 -0.503906 2.085938 -0.507813 C 2.386719 -0.503906 2.652344 -0.570313 2.890625 -0.703125 C 3.121094 -0.835938 3.292969 -1.015625 3.40625 -1.246094 C 3.484375 -1.421875 3.527344 -1.683594 3.53125 -2.03125 Z M 3.53125 -2.316406 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-16\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.570313 0 L 0.570313 -6.371094 L 1.351563 -6.371094 L 1.351563 0 Z M 0.570313 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-17\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.28125 -1.910156 L 0.28125 -2.699219 L 2.6875 -2.699219 L 2.6875 -1.910156 Z M 0.28125 -1.910156 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-18\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.746094 -1.484375 L 4.554688 -1.386719 C 4.421875 -0.914063 4.1875 -0.546875 3.84375 -0.285156 C 3.5 -0.0234375 3.058594 0.105469 2.523438 0.105469 C 1.847656 0.105469 1.3125 -0.101563 0.917969 -0.519531 C 0.519531 -0.933594 0.320313 -1.515625 0.324219 -2.269531 C 0.320313 -3.042969 0.519531 -3.644531 0.921875 -4.074219 C 1.320313 -4.5 1.839844 -4.714844 2.480469 -4.71875 C 3.09375 -4.714844 3.597656 -4.507813 3.992188 -4.089844 C 4.382813 -3.667969 4.582031 -3.074219 4.582031 -2.316406 C 4.582031 -2.265625 4.578125 -2.199219 4.574219 -2.109375 L 1.132813 -2.109375 C 1.15625 -1.601563 1.300781 -1.210938 1.5625 -0.941406 C 1.820313 -0.671875 2.140625 -0.539063 2.527344 -0.539063 C 2.8125 -0.539063 3.058594 -0.613281 3.261719 -0.765625 C 3.460938 -0.914063 3.621094 -1.152344 3.746094 -1.484375 Z M 1.175781 -2.75 L 3.753906 -2.75 C 3.71875 -3.132813 3.621094 -3.425781 3.460938 -3.625 C 3.207031 -3.925781 2.882813 -4.078125 2.488281 -4.078125 C 2.128906 -4.078125 1.828125 -3.957031 1.582031 -3.714844 C 1.335938 -3.472656 1.199219 -3.148438 1.175781 -2.75 Z M 1.175781 -2.75 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-19\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.589844 -5.472656 L 0.589844 -6.371094 L 1.375 -6.371094 L 1.375 -5.472656 Z M 0.589844 0 L 0.589844 -4.613281 L 1.375 -4.613281 L 1.375 0 Z M 0.589844 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-20\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.441406 0.382813 L 1.203125 0.496094 C 1.230469 0.726563 1.320313 0.898438 1.46875 1.007813 C 1.660156 1.152344 1.925781 1.222656 2.265625 1.226563 C 2.625 1.222656 2.902344 1.152344 3.101563 1.007813 C 3.296875 0.859375 3.433594 0.65625 3.503906 0.398438 C 3.542969 0.238281 3.558594 -0.09375 3.558594 -0.605469 C 3.214844 -0.199219 2.789063 0 2.28125 0 C 1.640625 0 1.148438 -0.226563 0.804688 -0.6875 C 0.453125 -1.140625 0.28125 -1.691406 0.285156 -2.332031 C 0.28125 -2.773438 0.359375 -3.179688 0.523438 -3.550781 C 0.679688 -3.921875 0.914063 -4.207031 1.21875 -4.414063 C 1.519531 -4.613281 1.875 -4.714844 2.285156 -4.71875 C 2.828125 -4.714844 3.277344 -4.496094 3.632813 -4.058594 L 3.632813 -4.613281 L 4.355469 -4.613281 L 4.355469 -0.625 C 4.351563 0.09375 4.277344 0.601563 4.132813 0.902344 C 3.984375 1.199219 3.753906 1.433594 3.4375 1.609375 C 3.121094 1.78125 2.730469 1.867188 2.269531 1.871094 C 1.714844 1.867188 1.269531 1.746094 0.933594 1.5 C 0.589844 1.25 0.425781 0.875 0.441406 0.382813 Z M 1.089844 -2.390625 C 1.089844 -1.78125 1.207031 -1.335938 1.449219 -1.0625 C 1.6875 -0.78125 1.992188 -0.644531 2.355469 -0.648438 C 2.714844 -0.644531 3.015625 -0.78125 3.257813 -1.0625 C 3.5 -1.335938 3.621094 -1.769531 3.625 -2.363281 C 3.621094 -2.925781 3.496094 -3.351563 3.246094 -3.640625 C 2.996094 -3.921875 2.695313 -4.066406 2.34375 -4.070313 C 1.992188 -4.066406 1.695313 -3.925781 1.453125 -3.644531 C 1.210938 -3.363281 1.089844 -2.945313 1.089844 -2.390625 Z M 1.089844 -2.390625 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-21\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.585938 0 L 0.585938 -6.371094 L 1.367188 -6.371094 L 1.367188 -4.085938 C 1.730469 -4.503906 2.191406 -4.714844 2.75 -4.71875 C 3.085938 -4.714844 3.382813 -4.648438 3.640625 -4.515625 C 3.890625 -4.378906 4.070313 -4.191406 4.179688 -3.957031 C 4.285156 -3.714844 4.339844 -3.371094 4.34375 -2.925781 L 4.34375 0 L 3.5625 0 L 3.5625 -2.925781 C 3.5625 -3.3125 3.476563 -3.597656 3.308594 -3.777344 C 3.136719 -3.953125 2.898438 -4.042969 2.589844 -4.046875 C 2.355469 -4.042969 2.136719 -3.980469 1.933594 -3.863281 C 1.730469 -3.738281 1.582031 -3.578125 1.496094 -3.375 C 1.40625 -3.167969 1.363281 -2.882813 1.367188 -2.523438 L 1.367188 0 Z M 0.585938 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-22\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.292969 -0.699219 L 2.40625 -0.0078125 C 2.183594 0.0390625 1.988281 0.0585938 1.816406 0.0625 C 1.53125 0.0585938 1.308594 0.015625 1.15625 -0.0703125 C 0.996094 -0.160156 0.886719 -0.277344 0.824219 -0.425781 C 0.757813 -0.570313 0.726563 -0.878906 0.730469 -1.351563 L 0.730469 -4.007813 L 0.15625 -4.007813 L 0.15625 -4.613281 L 0.730469 -4.613281 L 0.730469 -5.757813 L 1.507813 -6.226563 L 1.507813 -4.613281 L 2.292969 -4.613281 L 2.292969 -4.007813 L 1.507813 -4.007813 L 1.507813 -1.308594 C 1.503906 -1.082031 1.519531 -0.9375 1.546875 -0.875 C 1.574219 -0.808594 1.617188 -0.757813 1.683594 -0.722656 C 1.742188 -0.683594 1.832031 -0.667969 1.953125 -0.667969 C 2.035156 -0.667969 2.148438 -0.675781 2.292969 -0.699219 Z M 2.292969 -0.699219 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 1.085938 0 L 1.085938 -10.664063 L 8.992188 -10.664063 L 8.992188 -8.863281 L 3.238281 -8.863281 L 3.238281 -6.496094 L 8.59375 -6.496094 L 8.59375 -4.699219 L 3.238281 -4.699219 L 3.238281 -1.796875 L 9.195313 -1.796875 L 9.195313 0 Z M 1.085938 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.175781 -7.726563 L 1.308594 -7.726563 L 1.308594 -8.308594 C 1.304688 -8.957031 1.375 -9.441406 1.515625 -9.761719 C 1.652344 -10.082031 1.90625 -10.339844 2.277344 -10.542969 C 2.648438 -10.742188 3.117188 -10.84375 3.6875 -10.847656 C 4.265625 -10.84375 4.835938 -10.757813 5.398438 -10.585938 L 5.121094 -9.160156 C 4.792969 -9.234375 4.480469 -9.273438 4.183594 -9.277344 C 3.886719 -9.273438 3.671875 -9.207031 3.546875 -9.070313 C 3.414063 -8.929688 3.351563 -8.664063 3.355469 -8.273438 L 3.355469 -7.726563 L 4.882813 -7.726563 L 4.882813 -6.117188 L 3.355469 -6.117188 L 3.355469 0 L 1.308594 0 L 1.308594 -6.117188 L 0.175781 -6.117188 Z M 0.175781 -7.726563 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 1.070313 -8.773438 L 1.070313 -10.664063 L 3.113281 -10.664063 L 3.113281 -8.773438 Z M 1.070313 0 L 1.070313 -7.726563 L 3.113281 -7.726563 L 3.113281 0 Z M 1.070313 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 7.804688 -5.441406 L 5.792969 -5.078125 C 5.71875 -5.480469 5.5625 -5.785156 5.328125 -5.988281 C 5.085938 -6.191406 4.777344 -6.292969 4.394531 -6.292969 C 3.882813 -6.292969 3.476563 -6.117188 3.175781 -5.765625 C 2.871094 -5.414063 2.71875 -4.824219 2.722656 -4 C 2.71875 -3.082031 2.871094 -2.433594 3.183594 -2.058594 C 3.488281 -1.675781 3.902344 -1.488281 4.421875 -1.492188 C 4.808594 -1.488281 5.125 -1.597656 5.375 -1.820313 C 5.617188 -2.039063 5.792969 -2.417969 5.898438 -2.960938 L 7.910156 -2.617188 C 7.699219 -1.695313 7.296875 -1 6.707031 -0.53125 C 6.113281 -0.0585938 5.320313 0.175781 4.328125 0.175781 C 3.195313 0.175781 2.292969 -0.179688 1.625 -0.894531 C 0.949219 -1.605469 0.613281 -2.59375 0.617188 -3.855469 C 0.613281 -5.128906 0.953125 -6.121094 1.628906 -6.835938 C 2.300781 -7.542969 3.210938 -7.898438 4.367188 -7.902344 C 5.304688 -7.898438 6.054688 -7.695313 6.609375 -7.292969 C 7.164063 -6.886719 7.5625 -6.269531 7.804688 -5.441406 Z M 7.804688 -5.441406 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.542969 -2.460938 L 7.582031 -2.117188 C 7.316406 -1.367188 6.902344 -0.800781 6.339844 -0.410156 C 5.773438 -0.0195313 5.066406 0.175781 4.21875 0.175781 C 2.875 0.175781 1.878906 -0.261719 1.238281 -1.140625 C 0.722656 -1.839844 0.46875 -2.726563 0.472656 -3.804688 C 0.46875 -5.082031 0.804688 -6.085938 1.476563 -6.8125 C 2.144531 -7.535156 2.988281 -7.898438 4.015625 -7.902344 C 5.164063 -7.898438 6.074219 -7.519531 6.738281 -6.761719 C 7.402344 -6.003906 7.71875 -4.839844 7.691406 -3.273438 L 2.566406 -3.273438 C 2.582031 -2.664063 2.746094 -2.191406 3.0625 -1.855469 C 3.375 -1.515625 3.769531 -1.347656 4.242188 -1.351563 C 4.5625 -1.347656 4.828125 -1.433594 5.046875 -1.613281 C 5.261719 -1.785156 5.429688 -2.070313 5.542969 -2.460938 Z M 5.660156 -4.523438 C 5.644531 -5.117188 5.488281 -5.566406 5.199219 -5.875 C 4.90625 -6.179688 4.554688 -6.332031 4.140625 -6.335938 C 3.691406 -6.332031 3.324219 -6.171875 3.035156 -5.847656 C 2.742188 -5.523438 2.597656 -5.082031 2.605469 -4.523438 Z M 5.660156 -4.523438 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 8.097656 0 L 6.054688 0 L 6.054688 -3.941406 C 6.050781 -4.773438 6.007813 -5.3125 5.921875 -5.5625 C 5.832031 -5.804688 5.691406 -5.996094 5.496094 -6.132813 C 5.300781 -6.265625 5.0625 -6.332031 4.789063 -6.335938 C 4.429688 -6.332031 4.113281 -6.234375 3.835938 -6.042969 C 3.550781 -5.847656 3.355469 -5.59375 3.253906 -5.273438 C 3.144531 -4.953125 3.09375 -4.359375 3.097656 -3.5 L 3.097656 0 L 1.054688 0 L 1.054688 -7.726563 L 2.953125 -7.726563 L 2.953125 -6.589844 C 3.625 -7.460938 4.472656 -7.898438 5.5 -7.902344 C 5.949219 -7.898438 6.359375 -7.816406 6.734375 -7.65625 C 7.105469 -7.492188 7.390625 -7.285156 7.582031 -7.035156 C 7.773438 -6.78125 7.90625 -6.496094 7.984375 -6.175781 C 8.058594 -5.855469 8.097656 -5.394531 8.097656 -4.800781 Z M 8.097656 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 4.613281 -7.726563 L 4.613281 -6.097656 L 3.214844 -6.097656 L 3.214844 -2.984375 C 3.210938 -2.351563 3.222656 -1.984375 3.253906 -1.878906 C 3.277344 -1.773438 3.339844 -1.6875 3.4375 -1.621094 C 3.527344 -1.550781 3.640625 -1.515625 3.78125 -1.519531 C 3.96875 -1.515625 4.246094 -1.582031 4.605469 -1.71875 L 4.78125 -0.132813 C 4.304688 0.0742188 3.765625 0.175781 3.164063 0.175781 C 2.796875 0.175781 2.464844 0.117188 2.167969 -0.0078125 C 1.871094 -0.128906 1.652344 -0.289063 1.515625 -0.488281 C 1.375 -0.683594 1.28125 -0.953125 1.230469 -1.289063 C 1.183594 -1.523438 1.160156 -2 1.164063 -2.726563 L 1.164063 -6.097656 L 0.226563 -6.097656 L 0.226563 -7.726563 L 1.164063 -7.726563 L 1.164063 -9.261719 L 3.214844 -10.453125 L 3.214844 -7.726563 Z M 4.613281 -7.726563 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-7\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;\&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-8\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 1.097656 0 L 1.097656 -10.664063 L 8.410156 -10.664063 L 8.410156 -8.863281 L 3.253906 -8.863281 L 3.253906 -6.335938 L 7.703125 -6.335938 L 7.703125 -4.53125 L 3.253906 -4.53125 L 3.253906 0 Z M 1.097656 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-9\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.027344 0 L 0.980469 0 L 0.980469 -7.726563 L 2.882813 -7.726563 L 2.882813 -6.628906 C 3.203125 -7.144531 3.492188 -7.488281 3.757813 -7.652344 C 4.015625 -7.816406 4.3125 -7.898438 4.640625 -7.902344 C 5.105469 -7.898438 5.554688 -7.769531 5.988281 -7.515625 L 5.355469 -5.734375 C 5.011719 -5.953125 4.691406 -6.0625 4.394531 -6.066406 C 4.105469 -6.0625 3.859375 -5.984375 3.664063 -5.828125 C 3.460938 -5.667969 3.304688 -5.382813 3.195313 -4.976563 C 3.078125 -4.5625 3.023438 -3.699219 3.027344 -2.386719 Z M 3.027344 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-10\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.597656 -3.972656 C 0.597656 -4.652344 0.761719 -5.308594 1.097656 -5.945313 C 1.429688 -6.578125 1.90625 -7.0625 2.519531 -7.398438 C 3.132813 -7.730469 3.816406 -7.898438 4.578125 -7.902344 C 5.742188 -7.898438 6.699219 -7.519531 7.449219 -6.761719 C 8.191406 -6.003906 8.566406 -5.042969 8.570313 -3.886719 C 8.566406 -2.714844 8.1875 -1.746094 7.4375 -0.976563 C 6.679688 -0.207031 5.730469 0.175781 4.589844 0.175781 C 3.878906 0.175781 3.203125 0.015625 2.5625 -0.304688 C 1.917969 -0.625 1.429688 -1.09375 1.097656 -1.710938 C 0.761719 -2.328125 0.597656 -3.082031 0.597656 -3.972656 Z M 2.691406 -3.863281 C 2.6875 -3.09375 2.871094 -2.507813 3.234375 -2.101563 C 3.597656 -1.691406 4.046875 -1.488281 4.582031 -1.492188 C 5.113281 -1.488281 5.558594 -1.691406 5.925781 -2.101563 C 6.285156 -2.507813 6.46875 -3.101563 6.46875 -3.878906 C 6.46875 -4.632813 6.285156 -5.210938 5.925781 -5.621094 C 5.558594 -6.027344 5.113281 -6.234375 4.582031 -6.234375 C 4.046875 -6.234375 3.597656 -6.027344 3.234375 -5.621094 C 2.871094 -5.210938 2.6875 -4.625 2.691406 -3.863281 Z M 2.691406 -3.863281 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-11\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.804688 0 L -0.0078125 -10.664063 L 2.328125 -10.664063 L 5.027344 -2.773438 L 7.640625 -10.664063 L 9.921875 -10.664063 L 6.105469 0 Z M 3.804688 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-12\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.597656 -5.371094 L 0.742188 -5.703125 C 0.949219 -6.445313 1.308594 -7 1.816406 -7.363281 C 2.324219 -7.71875 3.082031 -7.898438 4.089844 -7.902344 C 5 -7.898438 5.675781 -7.789063 6.125 -7.578125 C 6.570313 -7.359375 6.886719 -7.085938 7.066406 -6.753906 C 7.246094 -6.421875 7.335938 -5.8125 7.339844 -4.925781 L 7.320313 -2.539063 C 7.316406 -1.855469 7.351563 -1.355469 7.417969 -1.035156 C 7.480469 -0.710938 7.601563 -0.367188 7.785156 0 L 5.761719 0 C 5.707031 -0.132813 5.644531 -0.332031 5.566406 -0.605469 C 5.53125 -0.722656 5.503906 -0.804688 5.492188 -0.84375 C 5.140625 -0.503906 4.769531 -0.246094 4.371094 -0.078125 C 3.972656 0.09375 3.546875 0.175781 3.097656 0.175781 C 2.300781 0.175781 1.675781 -0.0390625 1.21875 -0.472656 C 0.757813 -0.902344 0.527344 -1.449219 0.53125 -2.109375 C 0.527344 -2.546875 0.632813 -2.933594 0.84375 -3.277344 C 1.050781 -3.613281 1.339844 -3.875 1.71875 -4.0625 C 2.09375 -4.242188 2.636719 -4.402344 3.347656 -4.539063 C 4.300781 -4.714844 4.964844 -4.882813 5.332031 -5.042969 L 5.332031 -5.246094 C 5.332031 -5.636719 5.234375 -5.917969 5.039063 -6.085938 C 4.84375 -6.25 4.476563 -6.332031 3.941406 -6.335938 C 3.578125 -6.332031 3.292969 -6.261719 3.089844 -6.121094 C 2.882813 -5.976563 2.71875 -5.726563 2.597656 -5.371094 Z M 5.332031 -3.710938 C 5.070313 -3.617188 4.65625 -3.511719 4.089844 -3.394531 C 3.519531 -3.269531 3.148438 -3.152344 2.976563 -3.042969 C 2.707031 -2.847656 2.570313 -2.609375 2.574219 -2.320313 C 2.570313 -2.03125 2.679688 -1.78125 2.894531 -1.578125 C 3.105469 -1.367188 3.375 -1.265625 3.710938 -1.265625 C 4.074219 -1.265625 4.425781 -1.386719 4.765625 -1.628906 C 5.007813 -1.8125 5.171875 -2.035156 5.253906 -2.304688 C 5.304688 -2.476563 5.332031 -2.8125 5.332031 -3.304688 Z M 5.332031 -3.710938 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-13\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.878906 0.507813 L 3.214844 0.792969 C 3.25 1.058594 3.339844 1.246094 3.484375 1.351563 C 3.675781 1.496094 3.980469 1.570313 4.402344 1.570313 C 4.933594 1.570313 5.335938 1.488281 5.601563 1.332031 C 5.78125 1.222656 5.914063 1.050781 6.007813 0.816406 C 6.070313 0.640625 6.105469 0.332031 6.105469 -0.125 L 6.105469 -1.25 C 5.492188 -0.414063 4.71875 0 3.789063 0 C 2.75 0 1.929688 -0.4375 1.324219 -1.316406 C 0.847656 -2.007813 0.609375 -2.871094 0.609375 -3.90625 C 0.609375 -5.199219 0.917969 -6.1875 1.542969 -6.875 C 2.164063 -7.554688 2.941406 -7.898438 3.871094 -7.902344 C 4.824219 -7.898438 5.613281 -7.476563 6.234375 -6.640625 L 6.234375 -7.726563 L 8.148438 -7.726563 L 8.148438 -0.792969 C 8.144531 0.121094 8.070313 0.796875 7.921875 1.25 C 7.773438 1.699219 7.5625 2.054688 7.289063 2.3125 C 7.015625 2.566406 6.652344 2.769531 6.203125 2.917969 C 5.746094 3.0625 5.171875 3.132813 4.480469 3.136719 C 3.167969 3.132813 2.238281 2.910156 1.691406 2.460938 C 1.140625 2.011719 0.867188 1.441406 0.871094 0.757813 C 0.867188 0.6875 0.871094 0.605469 0.878906 0.507813 Z M 2.707031 -4.023438 C 2.707031 -3.199219 2.863281 -2.597656 3.183594 -2.222656 C 3.496094 -1.839844 3.890625 -1.652344 4.359375 -1.652344 C 4.855469 -1.652344 5.273438 -1.847656 5.621094 -2.238281 C 5.964844 -2.628906 6.140625 -3.207031 6.140625 -3.972656 C 6.140625 -4.769531 5.972656 -5.363281 5.644531 -5.753906 C 5.3125 -6.140625 4.898438 -6.332031 4.394531 -6.335938 C 3.902344 -6.332031 3.496094 -6.144531 3.183594 -5.765625 C 2.863281 -5.382813 2.707031 -4.800781 2.707031 -4.023438 Z M 2.707031 -4.023438 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-14\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 6.15625 0 L 6.15625 -1.15625 C 5.871094 -0.742188 5.5 -0.417969 5.046875 -0.179688 C 4.585938 0.0585938 4.101563 0.175781 3.59375 0.175781 C 3.070313 0.175781 2.605469 0.0625 2.195313 -0.164063 C 1.78125 -0.390625 1.484375 -0.710938 1.300781 -1.125 C 1.117188 -1.539063 1.023438 -2.109375 1.027344 -2.835938 L 1.027344 -7.726563 L 3.070313 -7.726563 L 3.070313 -4.175781 C 3.070313 -3.085938 3.105469 -2.421875 3.183594 -2.179688 C 3.253906 -1.933594 3.390625 -1.738281 3.59375 -1.597656 C 3.789063 -1.453125 4.042969 -1.382813 4.351563 -1.382813 C 4.699219 -1.382813 5.011719 -1.476563 5.289063 -1.667969 C 5.5625 -1.859375 5.75 -2.097656 5.855469 -2.382813 C 5.953125 -2.664063 6.003906 -3.359375 6.007813 -4.46875 L 6.007813 -7.726563 L 8.054688 -7.726563 L 8.054688 0 Z M 6.15625 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-15\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 8.15625 0 L 6.257813 0 L 6.257813 -1.136719 C 5.941406 -0.691406 5.566406 -0.359375 5.140625 -0.148438 C 4.707031 0.0703125 4.273438 0.175781 3.839844 0.175781 C 2.949219 0.175781 2.191406 -0.179688 1.558594 -0.898438 C 0.925781 -1.609375 0.609375 -2.609375 0.609375 -3.890625 C 0.609375 -5.199219 0.917969 -6.195313 1.535156 -6.878906 C 2.152344 -7.558594 2.929688 -7.898438 3.871094 -7.902344 C 4.730469 -7.898438 5.476563 -7.539063 6.109375 -6.824219 L 6.109375 -10.664063 L 8.15625 -10.664063 Z M 2.699219 -4.03125 C 2.695313 -3.203125 2.808594 -2.605469 3.042969 -2.242188 C 3.367188 -1.707031 3.828125 -1.441406 4.421875 -1.441406 C 4.890625 -1.441406 5.289063 -1.640625 5.621094 -2.039063 C 5.949219 -2.4375 6.117188 -3.035156 6.117188 -3.835938 C 6.117188 -4.71875 5.957031 -5.355469 5.636719 -5.75 C 5.316406 -6.136719 4.90625 -6.332031 4.410156 -6.335938 C 3.921875 -6.332031 3.515625 -6.140625 3.1875 -5.757813 C 2.859375 -5.371094 2.695313 -4.796875 2.699219 -4.03125 Z M 2.699219 -4.03125 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-16\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.347656 -2.203125 L 2.402344 -2.515625 C 2.488281 -2.117188 2.664063 -1.816406 2.929688 -1.609375 C 3.195313 -1.402344 3.566406 -1.300781 4.050781 -1.300781 C 4.574219 -1.300781 4.972656 -1.398438 5.246094 -1.59375 C 5.421875 -1.726563 5.511719 -1.90625 5.515625 -2.140625 C 5.511719 -2.289063 5.464844 -2.417969 5.371094 -2.523438 C 5.265625 -2.621094 5.035156 -2.710938 4.683594 -2.792969 C 3.03125 -3.15625 1.988281 -3.488281 1.550781 -3.789063 C 0.9375 -4.207031 0.632813 -4.785156 0.632813 -5.527344 C 0.632813 -6.195313 0.894531 -6.761719 1.425781 -7.21875 C 1.949219 -7.671875 2.769531 -7.898438 3.886719 -7.902344 C 4.941406 -7.898438 5.726563 -7.726563 6.242188 -7.382813 C 6.75 -7.039063 7.105469 -6.527344 7.304688 -5.855469 L 5.375 -5.5 C 5.289063 -5.800781 5.132813 -6.03125 4.90625 -6.191406 C 4.671875 -6.347656 4.34375 -6.425781 3.921875 -6.429688 C 3.378906 -6.425781 2.996094 -6.351563 2.765625 -6.207031 C 2.609375 -6.097656 2.53125 -5.960938 2.53125 -5.792969 C 2.53125 -5.644531 2.597656 -5.519531 2.734375 -5.421875 C 2.917969 -5.28125 3.554688 -5.089844 4.644531 -4.84375 C 5.730469 -4.59375 6.492188 -4.292969 6.925781 -3.9375 C 7.351563 -3.570313 7.5625 -3.0625 7.566406 -2.414063 C 7.5625 -1.703125 7.269531 -1.09375 6.679688 -0.585938 C 6.085938 -0.078125 5.207031 0.175781 4.050781 0.175781 C 2.996094 0.175781 2.164063 -0.0351563 1.550781 -0.464844 C 0.9375 -0.886719 0.535156 -1.46875 0.347656 -2.203125 Z M 0.347656 -2.203125 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-17\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 7.539063 -1.898438 L 7.539063 0 L 0.371094 0 C 0.445313 -0.71875 0.679688 -1.398438 1.070313 -2.039063 C 1.457031 -2.679688 2.222656 -3.53125 3.367188 -4.597656 C 4.285156 -5.453125 4.851563 -6.035156 5.0625 -6.34375 C 5.34375 -6.761719 5.484375 -7.179688 5.484375 -7.59375 C 5.484375 -8.050781 5.359375 -8.402344 5.117188 -8.648438 C 4.867188 -8.890625 4.53125 -9.011719 4.101563 -9.015625 C 3.675781 -9.011719 3.335938 -8.882813 3.085938 -8.628906 C 2.832031 -8.367188 2.6875 -7.941406 2.648438 -7.347656 L 0.609375 -7.550781 C 0.730469 -8.671875 1.109375 -9.480469 1.753906 -9.972656 C 2.390625 -10.464844 3.191406 -10.710938 4.152344 -10.710938 C 5.203125 -10.710938 6.03125 -10.425781 6.636719 -9.859375 C 7.234375 -9.289063 7.535156 -8.582031 7.539063 -7.742188 C 7.535156 -7.257813 7.449219 -6.800781 7.277344 -6.367188 C 7.105469 -5.933594 6.832031 -5.480469 6.460938 -5.003906 C 6.210938 -4.6875 5.765625 -4.234375 5.121094 -3.644531 C 4.472656 -3.050781 4.0625 -2.65625 3.894531 -2.464844 C 3.71875 -2.269531 3.578125 -2.082031 3.476563 -1.898438 Z M 7.539063 -1.898438 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-18\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 4.089844 -10.710938 C 5.121094 -10.710938 5.925781 -10.339844 6.511719 -9.601563 C 7.199219 -8.726563 7.546875 -7.28125 7.550781 -5.261719 C 7.546875 -3.242188 7.199219 -1.789063 6.503906 -0.910156 C 5.925781 -0.179688 5.121094 0.179688 4.089844 0.183594 C 3.050781 0.179688 2.210938 -0.214844 1.578125 -1.011719 C 0.9375 -1.808594 0.621094 -3.230469 0.625 -5.28125 C 0.621094 -7.285156 0.96875 -8.730469 1.671875 -9.617188 C 2.246094 -10.34375 3.054688 -10.710938 4.089844 -10.710938 Z M 4.089844 -9.015625 C 3.839844 -9.011719 3.617188 -8.933594 3.425781 -8.777344 C 3.230469 -8.621094 3.082031 -8.335938 2.976563 -7.929688 C 2.835938 -7.398438 2.765625 -6.511719 2.765625 -5.261719 C 2.765625 -4.007813 2.828125 -3.144531 2.953125 -2.679688 C 3.078125 -2.210938 3.234375 -1.902344 3.429688 -1.746094 C 3.617188 -1.589844 3.839844 -1.511719 4.089844 -1.511719 C 4.335938 -1.511719 4.554688 -1.589844 4.75 -1.746094 C 4.941406 -1.902344 5.09375 -2.183594 5.203125 -2.597656 C 5.34375 -3.117188 5.414063 -4.007813 5.414063 -5.261719 C 5.414063 -6.511719 5.347656 -7.371094 5.222656 -7.839844 C 5.09375 -8.308594 4.9375 -8.621094 4.746094 -8.777344 C 4.554688 -8.933594 4.335938 -9.011719 4.089844 -9.015625 Z M 4.089844 -9.015625 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-19\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.863281 0 L 3.820313 0 L 3.820313 -7.703125 C 3.070313 -7.003906 2.1875 -6.488281 1.179688 -6.15625 L 1.179688 -8.011719 C 1.710938 -8.183594 2.292969 -8.515625 2.917969 -9.003906 C 3.542969 -9.488281 3.972656 -10.058594 4.207031 -10.710938 L 5.863281 -10.710938 Z M 5.863281 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-20\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.660156 -2.742188 L 2.699219 -2.953125 C 2.753906 -2.492188 2.925781 -2.125 3.214844 -1.855469 C 3.5 -1.585938 3.832031 -1.453125 4.207031 -1.453125 C 4.628906 -1.453125 4.988281 -1.625 5.289063 -1.972656 C 5.582031 -2.320313 5.730469 -2.84375 5.734375 -3.542969 C 5.730469 -4.195313 5.582031 -4.6875 5.292969 -5.015625 C 4.996094 -5.34375 4.617188 -5.507813 4.148438 -5.507813 C 3.558594 -5.507813 3.03125 -5.246094 2.566406 -4.730469 L 0.910156 -4.96875 L 1.957031 -10.519531 L 7.363281 -10.519531 L 7.363281 -8.605469 L 3.507813 -8.605469 L 3.1875 -6.796875 C 3.640625 -7.023438 4.105469 -7.136719 4.582031 -7.136719 C 5.488281 -7.136719 6.257813 -6.804688 6.890625 -6.148438 C 7.519531 -5.484375 7.832031 -4.628906 7.835938 -3.578125 C 7.832031 -2.699219 7.578125 -1.917969 7.070313 -1.230469 C 6.375 -0.289063 5.414063 0.179688 4.183594 0.183594 C 3.199219 0.179688 2.394531 -0.0820313 1.773438 -0.609375 C 1.152344 -1.136719 0.78125 -1.847656 0.660156 -2.742188 Z M 0.660156 -2.742188 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;/g&gt;\n &lt;clipPath id=\&quot;clip1\&quot;&gt;\n &lt;path d=\&quot;M 59.039063 59.039063 L 1122.757813 59.039063 L 1122.757813 647.558594 L 59.039063 647.558594 Z M 59.039063 59.039063 \&quot;/&gt;\n &lt;/clipPath&gt;\n &lt;clipPath id=\&quot;clip2\&quot;&gt;\n &lt;path d=\&quot;M 59.039063 59.039063 L 1122.757813 59.039063 L 1122.757813 647.558594 L 59.039063 647.558594 Z M 59.039063 59.039063 \&quot;/&gt;\n &lt;/clipPath&gt;\n &lt;/defs&gt;\n &lt;g id=\&quot;surface41\&quot;&gt;\n &lt;rect x=\&quot;0\&quot; y=\&quot;0\&quot; width=\&quot;1152\&quot; height=\&quot;720\&quot; style=\&quot;fill: rgb(100%,100%,100%); fill-opacity: 1; stroke: none;\&quot;/&gt;\n &lt;g clip-path=\&quot;url(#clip1)\&quot; clip-rule=\&quot;nonzero\&quot;&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 124.246094 624.800781 L 98.398438 613.699219 L 99.148438 602.597656 L 101.597656 591.492188 L 105.566406 580.390625 L 111.265625 569.289063 L 119.445313 558.1875 L 129.882813 547.085938 L 142.265625 535.984375 L 156.5 524.882813 L 172.410156 513.78125 L 189.703125 502.675781 L 208.136719 491.574219 L 227.511719 480.472656 L 247.65625 469.371094 L 268.445313 458.269531 L 289.769531 447.167969 L 311.542969 436.066406 L 333.691406 424.964844 L 356.167969 413.859375 L 378.917969 402.757813 L 401.902344 391.65625 L 425.09375 380.554688 L 448.460938 369.453125 L 471.984375 358.351563 L 495.644531 347.25 L 519.425781 336.148438 L 543.316406 325.042969 L 567.300781 313.941406 L 591.367188 302.839844 L 615.511719 291.738281 L 639.726563 280.636719 L 664.003906 269.535156 L 688.335938 258.433594 L 712.71875 247.332031 L 737.148438 236.230469 L 761.617188 225.125 L 786.128906 214.023438 L 810.675781 202.921875 L 835.257813 191.820313 L 859.867188 180.71875 L 884.503906 169.617188 L 909.167969 158.515625 L 933.855469 147.414063 L 958.566406 136.308594 L 983.296875 125.207031 L 1008.046875 114.105469 L 1032.8125 103.003906 L 1057.597656 91.902344 L 1082.398438 80.800781 \&quot;/&gt;\n &lt;/g&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 71.707031 646.558594 L 1013.339844 646.558594 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 71.707031 646.558594 L 71.707031 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 228.644531 646.558594 L 228.644531 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 385.585938 646.558594 L 385.585938 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 542.523438 646.558594 L 542.523438 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 699.460938 646.558594 L 699.460938 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 856.398438 646.558594 L 856.398438 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 1013.339844 646.558594 L 1013.339844 653.761719 \&quot;/&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;56.066406\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;63.018311\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;66.491211\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;73.443115\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-2\&quot; x=\&quot;80.39502\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;213.003906\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;219.955811\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;223.428711\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;230.380615\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-3\&quot; x=\&quot;237.33252\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;369.945313\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;376.897217\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;380.370117\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;387.322021\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-4\&quot; x=\&quot;394.273926\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;526.882813\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;533.834717\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;537.307617\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;544.259521\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-5\&quot; x=\&quot;551.211426\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;683.820313\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;690.772217\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;694.245117\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;701.197021\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;708.148926\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;840.757813\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;847.709717\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;851.182617\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;858.134521\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-2\&quot; x=\&quot;865.086426\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;997.699219\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;1004.651123\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;1008.124023\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;1015.075928\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-3\&quot; x=\&quot;1022.027832\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 645.054688 L 59.039063 59.394531 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 645.054688 L 51.839844 645.054688 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 547.445313 L 51.839844 547.445313 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 449.835938 L 51.839844 449.835938 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 352.226563 L 51.839844 352.226563 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 254.617188 L 51.839844 254.617188 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 157.003906 L 51.839844 157.003906 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 59.394531 L 51.839844 59.394531 \&quot;/&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;667.648438\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;660.696533\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;657.223633\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;650.271729\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;643.319824\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;636.36792\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;629.416016\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;570.039063\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;563.087158\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;559.614258\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;552.662354\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;545.710449\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;538.758545\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-3\&quot; x=\&quot;43.199219\&quot; y=\&quot;531.806641\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;472.429688\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;465.477783\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;462.004883\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;455.052979\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;448.101074\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-4\&quot; x=\&quot;43.199219\&quot; y=\&quot;441.14917\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;434.197266\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;374.820313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;367.868408\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;364.395508\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;357.443604\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;350.491699\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-4\&quot; x=\&quot;43.199219\&quot; y=\&quot;343.539795\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-3\&quot; x=\&quot;43.199219\&quot; y=\&quot;336.587891\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;277.210938\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;270.259033\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;266.786133\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;259.834229\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;252.882324\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-5\&quot; x=\&quot;43.199219\&quot; y=\&quot;245.93042\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;238.978516\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;179.597656\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;172.645752\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;169.172852\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;162.220947\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;155.269043\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-5\&quot; x=\&quot;43.199219\&quot; y=\&quot;148.317139\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-3\&quot; x=\&quot;43.199219\&quot; y=\&quot;141.365234\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;81.988281\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;75.036377\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;71.563477\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;64.611572\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;57.659668\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-3\&quot; x=\&quot;43.199219\&quot; y=\&quot;50.707764\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;43.755859\&quot;/&gt;\n &lt;/g&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 59.039063 L 59.039063 646.558594 L 1121.761719 646.558594 \&quot;/&gt;\n &lt;g clip-path=\&quot;url(#clip2)\&quot; clip-rule=\&quot;nonzero\&quot;&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(100%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 101.59375 612.753906 C 101.59375 617.019531 95.191406 617.019531 95.191406 612.753906 C 95.191406 608.488281 101.59375 608.488281 101.59375 612.753906 \&quot;/&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(0%,0%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 108.609375 580.765625 C 108.609375 585.03125 102.207031 585.03125 102.207031 580.765625 C 102.207031 576.5 108.609375 576.5 108.609375 580.765625 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(74.509804%,74.509804%,74.509804%);fill-opacity:1;\&quot; d=\&quot;M 749.3125 409.5 L 754.710938 409.5 L 754.710938 404.101563 L 749.3125 404.101563 Z M 749.3125 409.5 \&quot;/&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(89.411765%,10.196078%,10.980392%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(89.411765%,10.196078%,10.980392%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 920.03125 506.828125 C 920.03125 512.894531 910.929688 512.894531 910.929688 506.828125 C 910.929688 500.761719 920.03125 500.761719 920.03125 506.828125 \&quot;/&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(21.568627%,49.411765%,72.156863%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(21.568627%,49.411765%,72.156863%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 1081.890625 332.945313 C 1081.890625 339.011719 1072.789063 339.011719 1072.789063 332.945313 C 1072.789063 326.878906 1081.890625 326.878906 1081.890625 332.945313 \&quot;/&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(30.196078%,68.627451%,29.019608%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(30.196078%,68.627451%,29.019608%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 128.796875 624.800781 C 128.796875 630.867188 119.699219 630.867188 119.699219 624.800781 C 119.699219 618.734375 128.796875 618.734375 128.796875 624.800781 \&quot;/&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(59.607843%,30.588235%,63.921569%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(59.607843%,30.588235%,63.921569%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 993.90625 455.15625 C 993.90625 461.222656 984.804688 461.222656 984.804688 455.15625 C 984.804688 449.089844 993.90625 449.089844 993.90625 455.15625 \&quot;/&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(100%,49.803922%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,49.803922%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 955.480469 440.277344 C 955.480469 446.34375 946.382813 446.34375 946.382813 440.277344 C 946.382813 434.210938 955.480469 434.210938 955.480469 440.277344 \&quot;/&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(65.098039%,33.72549%,15.686275%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(65.098039%,33.72549%,15.686275%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 1086.949219 80.800781 C 1086.949219 86.867188 1077.851563 86.867188 1077.851563 80.800781 C 1077.851563 74.734375 1086.949219 74.734375 1086.949219 80.800781 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 915.480469 506.828125 L 916.992188 503.28125 L 918.585938 499.730469 L 920.261719 496.183594 L 922.023438 492.636719 L 923.863281 489.085938 L 925.789063 485.539063 L 927.792969 481.988281 L 929.875 478.441406 L 932.039063 474.890625 L 934.285156 471.34375 L 936.609375 467.792969 L 939.011719 464.246094 L 941.492188 460.699219 L 944.046875 457.148438 L 946.683594 453.601563 L 949.390625 450.050781 L 952.179688 446.503906 L 955.039063 442.953125 L 957.976563 439.40625 L 960.984375 435.855469 L 964.066406 432.308594 L 967.222656 428.757813 L 970.449219 425.210938 L 973.746094 421.664063 L 977.113281 418.113281 L 980.554688 414.566406 L 984.0625 411.015625 L 987.636719 407.46875 L 991.28125 403.917969 L 994.992188 400.371094 L 998.769531 396.820313 L 1002.613281 393.273438 L 1006.519531 389.726563 L 1010.496094 386.175781 L 1014.53125 382.628906 L 1018.628906 379.078125 L 1022.792969 375.53125 L 1027.015625 371.980469 L 1031.300781 368.433594 L 1035.644531 364.882813 L 1040.046875 361.335938 L 1044.511719 357.785156 L 1049.03125 354.238281 L 1053.609375 350.691406 L 1058.246094 347.140625 L 1062.9375 343.59375 L 1067.683594 340.042969 L 1072.484375 336.496094 L 1077.339844 332.945313 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 124.246094 624.800781 L 114.542969 622.390625 L 106.910156 619.984375 L 101.601563 617.578125 L 98.820313 615.167969 L 98.679688 612.761719 L 101.183594 610.355469 L 106.230469 607.945313 L 113.625 605.539063 L 123.121094 603.132813 L 134.441406 600.722656 L 147.324219 598.316406 L 161.523438 595.910156 L 176.824219 593.5 L 193.046875 591.09375 L 210.035156 588.6875 L 227.671875 586.277344 L 245.84375 583.871094 L 264.476563 581.464844 L 283.496094 579.054688 L 302.84375 576.648438 L 322.476563 574.242188 L 342.351563 571.832031 L 362.441406 569.425781 L 382.714844 567.019531 L 403.148438 564.609375 L 423.722656 562.203125 L 444.425781 559.796875 L 465.238281 557.386719 L 486.152344 554.980469 L 507.152344 552.574219 L 528.234375 550.164063 L 549.386719 547.757813 L 570.601563 545.351563 L 591.878906 542.941406 L 613.207031 540.535156 L 634.582031 538.128906 L 656.003906 535.71875 L 677.46875 533.3125 L 698.96875 530.90625 L 720.5 528.496094 L 742.066406 526.089844 L 763.660156 523.683594 L 785.28125 521.273438 L 806.929688 518.867188 L 828.597656 516.460938 L 850.289063 514.050781 L 872.003906 511.644531 L 893.734375 509.238281 L 915.480469 506.828125 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 915.480469 506.828125 L 913.191406 505.773438 L 911.054688 504.71875 L 909.078125 503.664063 L 907.257813 502.609375 L 905.597656 501.558594 L 904.09375 500.503906 L 902.753906 499.449219 L 901.574219 498.394531 L 900.554688 497.339844 L 899.699219 496.285156 L 899.003906 495.230469 L 898.472656 494.175781 L 898.101563 493.121094 L 897.898438 492.066406 L 897.855469 491.011719 L 897.976563 489.957031 L 898.261719 488.902344 L 898.707031 487.847656 L 899.320313 486.792969 L 900.09375 485.738281 L 901.027344 484.683594 L 902.125 483.628906 L 903.382813 482.574219 L 904.800781 481.519531 L 906.382813 480.464844 L 908.117188 479.410156 L 910.015625 478.355469 L 912.070313 477.300781 L 914.28125 476.246094 L 916.644531 475.191406 L 919.164063 474.136719 L 921.839844 473.082031 L 924.664063 472.027344 L 927.640625 470.972656 L 930.765625 469.917969 L 934.039063 468.863281 L 937.457031 467.8125 L 941.023438 466.757813 L 944.730469 465.703125 L 948.582031 464.648438 L 952.570313 463.59375 L 956.699219 462.539063 L 960.96875 461.484375 L 965.371094 460.429688 L 969.90625 459.375 L 974.574219 458.320313 L 979.375 457.265625 L 984.300781 456.210938 L 989.355469 455.15625 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 915.480469 506.828125 L 912.628906 505.472656 L 909.917969 504.113281 L 907.351563 502.753906 L 904.929688 501.398438 L 902.652344 500.039063 L 900.523438 498.679688 L 898.539063 497.324219 L 896.707031 495.964844 L 895.019531 494.605469 L 893.484375 493.246094 L 892.097656 491.890625 L 890.863281 490.53125 L 889.78125 489.171875 L 888.847656 487.816406 L 888.070313 486.457031 L 887.445313 485.097656 L 886.972656 483.742188 L 886.65625 482.382813 L 886.492188 481.023438 L 886.480469 479.664063 L 886.625 478.308594 L 886.921875 476.949219 L 887.371094 475.589844 L 887.976563 474.234375 L 888.730469 472.875 L 889.640625 471.515625 L 890.703125 470.160156 L 891.917969 468.800781 L 893.28125 467.441406 L 894.796875 466.085938 L 896.460938 464.726563 L 898.277344 463.367188 L 900.238281 462.007813 L 902.351563 460.652344 L 904.605469 459.292969 L 907.007813 457.933594 L 909.554688 456.578125 L 912.246094 455.21875 L 915.078125 453.859375 L 918.050781 452.503906 L 921.164063 451.144531 L 924.414063 449.785156 L 927.800781 448.429688 L 931.328125 447.070313 L 934.984375 445.710938 L 938.777344 444.351563 L 942.699219 442.996094 L 946.75 441.636719 L 950.933594 440.277344 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 915.480469 506.828125 L 913.320313 498.136719 L 911.402344 489.441406 L 909.722656 480.746094 L 908.289063 472.050781 L 907.097656 463.355469 L 906.148438 454.664063 L 905.445313 445.96875 L 904.992188 437.273438 L 904.78125 428.578125 L 904.816406 419.882813 L 905.097656 411.191406 L 905.628906 402.496094 L 906.402344 393.800781 L 907.421875 385.105469 L 908.683594 376.414063 L 910.191406 367.71875 L 911.9375 359.023438 L 913.929688 350.328125 L 916.160156 341.632813 L 918.625 332.941406 L 921.332031 324.246094 L 924.269531 315.550781 L 927.4375 306.855469 L 930.839844 298.160156 L 934.46875 289.46875 L 938.320313 280.773438 L 942.398438 272.078125 L 946.695313 263.382813 L 951.210938 254.691406 L 955.9375 245.996094 L 960.878906 237.300781 L 966.027344 228.605469 L 971.382813 219.910156 L 976.941406 211.21875 L 982.699219 202.523438 L 988.652344 193.828125 L 994.796875 185.132813 L 1001.132813 176.4375 L 1007.65625 167.746094 L 1014.359375 159.050781 L 1021.246094 150.355469 L 1028.308594 141.660156 L 1035.542969 132.96875 L 1042.945313 124.273438 L 1050.519531 115.578125 L 1058.253906 106.882813 L 1066.144531 98.1875 L 1074.195313 89.496094 L 1082.398438 80.800781 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 124.246094 624.800781 L 114.464844 618.84375 L 107.523438 612.886719 L 103.734375 606.929688 L 103.292969 600.976563 L 106.222656 595.019531 L 112.367188 589.0625 L 121.441406 583.105469 L 133.085938 577.152344 L 146.910156 571.195313 L 162.550781 565.238281 L 179.683594 559.28125 L 198.042969 553.324219 L 217.402344 547.371094 L 237.578125 541.414063 L 258.4375 535.457031 L 279.851563 529.5 L 301.734375 523.542969 L 324.011719 517.589844 L 346.617188 511.632813 L 369.507813 505.675781 L 392.640625 499.71875 L 415.976563 493.765625 L 439.5 487.808594 L 463.175781 481.851563 L 486.988281 475.894531 L 510.925781 469.9375 L 534.96875 463.984375 L 559.109375 458.027344 L 583.332031 452.070313 L 607.628906 446.113281 L 631.996094 440.15625 L 656.425781 434.203125 L 680.910156 428.246094 L 705.445313 422.289063 L 730.027344 416.332031 L 754.648438 410.378906 L 779.308594 404.421875 L 804.007813 398.464844 L 828.734375 392.507813 L 853.492188 386.550781 L 878.277344 380.597656 L 903.089844 374.640625 L 927.921875 368.683594 L 952.78125 362.726563 L 977.65625 356.769531 L 1002.550781 350.816406 L 1027.464844 344.859375 L 1052.394531 338.902344 L 1077.339844 332.945313 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 989.355469 455.15625 L 986.277344 452.660156 L 983.402344 450.167969 L 980.722656 447.671875 L 978.246094 445.179688 L 975.972656 442.683594 L 973.90625 440.191406 L 972.039063 437.699219 L 970.382813 435.203125 L 968.929688 432.710938 L 967.6875 430.214844 L 966.652344 427.722656 L 965.828125 425.226563 L 965.214844 422.734375 L 964.808594 420.238281 L 964.617188 417.746094 L 964.632813 415.25 L 964.859375 412.757813 L 965.296875 410.261719 L 965.945313 407.769531 L 966.804688 405.273438 L 967.871094 402.78125 L 969.148438 400.285156 L 970.632813 397.792969 L 972.324219 395.296875 L 974.222656 392.804688 L 976.324219 390.308594 L 978.632813 387.816406 L 981.140625 385.320313 L 983.851563 382.828125 L 986.757813 380.332031 L 989.867188 377.839844 L 993.167969 375.347656 L 996.667969 372.851563 L 1000.359375 370.359375 L 1004.238281 367.863281 L 1008.308594 365.371094 L 1012.5625 362.875 L 1017.003906 360.382813 L 1021.625 357.886719 L 1026.425781 355.394531 L 1031.40625 352.898438 L 1036.5625 350.40625 L 1041.886719 347.910156 L 1047.386719 345.417969 L 1053.050781 342.921875 L 1058.882813 340.429688 L 1064.875 337.933594 L 1071.027344 335.441406 L 1077.339844 332.945313 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 950.933594 440.277344 L 948.570313 438.089844 L 946.417969 435.898438 L 944.472656 433.707031 L 942.738281 431.515625 L 941.214844 429.328125 L 939.90625 427.136719 L 938.808594 424.945313 L 937.925781 422.753906 L 937.257813 420.566406 L 936.804688 418.375 L 936.566406 416.183594 L 936.542969 413.992188 L 936.734375 411.804688 L 937.140625 409.613281 L 937.761719 407.421875 L 938.597656 405.230469 L 939.648438 403.042969 L 940.914063 400.851563 L 942.390625 398.660156 L 944.078125 396.46875 L 945.976563 394.277344 L 948.085938 392.089844 L 950.402344 389.898438 L 952.925781 387.707031 L 955.652344 385.515625 L 958.585938 383.328125 L 961.71875 381.136719 L 965.050781 378.945313 L 968.585938 376.753906 L 972.3125 374.566406 L 976.234375 372.375 L 980.351563 370.183594 L 984.65625 367.992188 L 989.148438 365.804688 L 993.824219 363.613281 L 998.683594 361.421875 L 1003.722656 359.230469 L 1008.941406 357.042969 L 1014.335938 354.851563 L 1019.902344 352.660156 L 1025.640625 350.46875 L 1031.542969 348.28125 L 1037.613281 346.089844 L 1043.84375 343.898438 L 1050.234375 341.707031 L 1056.78125 339.519531 L 1063.484375 337.328125 L 1070.335938 335.136719 L 1077.339844 332.945313 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 1077.339844 332.945313 L 1071.59375 327.800781 L 1066.066406 322.65625 L 1060.757813 317.507813 L 1055.671875 312.363281 L 1050.8125 307.21875 L 1046.183594 302.070313 L 1041.785156 296.925781 L 1037.621094 291.78125 L 1033.691406 286.632813 L 1030.003906 281.488281 L 1026.558594 276.34375 L 1023.359375 271.195313 L 1020.402344 266.050781 L 1017.699219 260.90625 L 1015.242188 255.757813 L 1013.035156 250.613281 L 1011.085938 245.46875 L 1009.390625 240.320313 L 1007.949219 235.175781 L 1006.765625 230.03125 L 1005.839844 224.882813 L 1005.175781 219.738281 L 1004.765625 214.59375 L 1004.617188 209.445313 L 1004.726563 204.300781 L 1005.097656 199.15625 L 1005.726563 194.007813 L 1006.613281 188.863281 L 1007.757813 183.71875 L 1009.160156 178.570313 L 1010.820313 173.425781 L 1012.730469 168.28125 L 1014.898438 163.132813 L 1017.316406 157.988281 L 1019.988281 152.84375 L 1022.90625 147.695313 L 1026.070313 142.550781 L 1029.476563 137.40625 L 1033.128906 132.257813 L 1037.019531 127.113281 L 1041.152344 121.964844 L 1045.515625 116.820313 L 1050.109375 111.675781 L 1054.9375 106.527344 L 1059.988281 101.382813 L 1065.261719 96.238281 L 1070.757813 91.089844 L 1076.472656 85.945313 L 1082.398438 80.800781 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 124.246094 624.800781 L 115.851563 621.335938 L 109.898438 617.875 L 106.613281 614.414063 L 106.140625 610.953125 L 108.492188 607.488281 L 113.570313 604.027344 L 121.179688 600.566406 L 131.046875 597.101563 L 142.878906 593.640625 L 156.390625 590.179688 L 171.316406 586.714844 L 187.421875 583.253906 L 204.511719 579.792969 L 222.425781 576.332031 L 241.019531 572.867188 L 260.191406 569.40625 L 279.847656 565.945313 L 299.910156 562.480469 L 320.324219 559.019531 L 341.035156 555.558594 L 362.007813 552.09375 L 383.199219 548.632813 L 404.585938 545.171875 L 426.144531 541.707031 L 447.847656 538.246094 L 469.6875 534.785156 L 491.640625 531.324219 L 513.699219 527.859375 L 535.847656 524.398438 L 558.082031 520.9375 L 580.390625 517.472656 L 602.765625 514.011719 L 625.203125 510.550781 L 647.695313 507.085938 L 670.238281 503.625 L 692.824219 500.164063 L 715.457031 496.703125 L 738.128906 493.238281 L 760.832031 489.777344 L 783.574219 486.316406 L 806.339844 482.851563 L 829.136719 479.390625 L 851.960938 475.929688 L 874.808594 472.464844 L 897.679688 469.003906 L 920.570313 465.542969 L 943.480469 462.078125 L 966.410156 458.617188 L 989.355469 455.15625 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 124.246094 624.800781 L 115.925781 621.035156 L 109.875 617.269531 L 106.304688 613.503906 L 105.355469 609.738281 L 107.066406 605.972656 L 111.371094 602.207031 L 118.101563 598.441406 L 127.027344 594.675781 L 137.882813 590.910156 L 150.40625 587.144531 L 164.347656 583.375 L 179.476563 579.609375 L 195.605469 575.84375 L 212.574219 572.078125 L 230.242188 568.3125 L 248.5 564.546875 L 267.257813 560.78125 L 286.4375 557.015625 L 305.976563 553.25 L 325.828125 549.484375 L 345.945313 545.71875 L 366.292969 541.953125 L 386.84375 538.1875 L 407.566406 534.421875 L 428.449219 530.65625 L 449.464844 526.890625 L 470.601563 523.125 L 491.847656 519.359375 L 513.191406 515.59375 L 534.617188 511.828125 L 556.125 508.0625 L 577.699219 504.296875 L 599.339844 500.53125 L 621.035156 496.765625 L 642.785156 493 L 664.585938 489.234375 L 686.425781 485.46875 L 708.308594 481.703125 L 730.226563 477.9375 L 752.179688 474.171875 L 774.164063 470.40625 L 796.175781 466.640625 L 818.21875 462.875 L 840.285156 459.109375 L 862.371094 455.339844 L 884.484375 451.574219 L 906.613281 447.808594 L 928.765625 444.042969 L 950.933594 440.277344 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 124.246094 624.800781 L 115.855469 613.699219 L 110.363281 602.597656 L 108.011719 591.492188 L 108.917969 580.390625 L 113.039063 569.289063 L 120.179688 558.1875 L 130.039063 547.085938 L 142.265625 535.984375 L 156.5 524.882813 L 172.410156 513.78125 L 189.703125 502.675781 L 208.136719 491.574219 L 227.511719 480.472656 L 247.65625 469.371094 L 268.445313 458.269531 L 289.769531 447.167969 L 311.542969 436.066406 L 333.691406 424.964844 L 356.167969 413.859375 L 378.917969 402.757813 L 401.902344 391.65625 L 425.09375 380.554688 L 448.460938 369.453125 L 471.984375 358.351563 L 495.644531 347.25 L 519.425781 336.148438 L 543.316406 325.042969 L 567.300781 313.941406 L 591.367188 302.839844 L 615.511719 291.738281 L 639.726563 280.636719 L 664.003906 269.535156 L 688.335938 258.433594 L 712.71875 247.332031 L 737.148438 236.230469 L 761.617188 225.125 L 786.128906 214.023438 L 810.675781 202.921875 L 835.257813 191.820313 L 859.867188 180.71875 L 884.503906 169.617188 L 909.167969 158.515625 L 933.855469 147.414063 L 958.566406 136.308594 L 983.296875 125.207031 L 1008.046875 114.105469 L 1032.8125 103.003906 L 1057.597656 91.902344 L 1082.398438 80.800781 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 989.355469 455.15625 L 988.226563 454.851563 L 987.109375 454.546875 L 986.007813 454.246094 L 984.917969 453.941406 L 983.84375 453.636719 L 982.78125 453.335938 L 981.734375 453.03125 L 980.703125 452.726563 L 979.683594 452.421875 L 978.679688 452.121094 L 977.691406 451.816406 L 976.714844 451.511719 L 975.753906 451.207031 L 974.804688 450.90625 L 973.875 450.601563 L 972.953125 450.296875 L 972.050781 449.996094 L 971.160156 449.691406 L 970.285156 449.386719 L 969.425781 449.082031 L 968.578125 448.78125 L 967.75 448.476563 L 966.929688 448.171875 L 966.128906 447.867188 L 965.339844 447.566406 L 964.570313 447.261719 L 963.8125 446.957031 L 963.066406 446.65625 L 962.339844 446.351563 L 961.625 446.046875 L 960.929688 445.742188 L 960.246094 445.441406 L 959.574219 445.136719 L 958.921875 444.832031 L 958.28125 444.53125 L 957.660156 444.226563 L 957.050781 443.921875 L 956.457031 443.617188 L 955.878906 443.316406 L 955.316406 443.011719 L 954.769531 442.707031 L 954.234375 442.402344 L 953.71875 442.101563 L 953.214844 441.796875 L 952.726563 441.492188 L 952.253906 441.191406 L 951.800781 440.886719 L 951.359375 440.582031 L 950.933594 440.277344 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 989.355469 455.15625 L 988.484375 447.515625 L 987.730469 439.875 L 987.097656 432.234375 L 986.582031 424.597656 L 986.1875 416.957031 L 985.910156 409.316406 L 985.75 401.675781 L 985.710938 394.035156 L 985.792969 386.398438 L 985.992188 378.757813 L 986.3125 371.117188 L 986.75 363.476563 L 987.304688 355.835938 L 987.980469 348.195313 L 988.773438 340.558594 L 989.6875 332.917969 L 990.714844 325.277344 L 991.863281 317.636719 L 993.128906 309.996094 L 994.507813 302.359375 L 996.007813 294.71875 L 997.621094 287.078125 L 999.347656 279.4375 L 1001.191406 271.796875 L 1003.148438 264.15625 L 1005.222656 256.519531 L 1007.40625 248.878906 L 1009.703125 241.238281 L 1012.109375 233.597656 L 1014.628906 225.957031 L 1017.257813 218.320313 L 1019.996094 210.679688 L 1022.84375 203.039063 L 1025.796875 195.398438 L 1028.859375 187.757813 L 1032.023438 180.117188 L 1035.296875 172.480469 L 1038.671875 164.839844 L 1042.152344 157.199219 L 1045.734375 149.558594 L 1049.414063 141.917969 L 1053.199219 134.28125 L 1057.082031 126.640625 L 1061.0625 119 L 1065.136719 111.359375 L 1069.3125 103.71875 L 1073.582031 96.078125 L 1077.945313 88.441406 L 1082.398438 80.800781 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\&quot; d=\&quot;M 950.933594 440.277344 L 950.710938 432.941406 L 950.621094 425.605469 L 950.65625 418.269531 L 950.824219 410.933594 L 951.117188 403.597656 L 951.535156 396.261719 L 952.085938 388.925781 L 952.761719 381.589844 L 953.5625 374.253906 L 954.492188 366.914063 L 955.550781 359.578125 L 956.734375 352.242188 L 958.042969 344.90625 L 959.476563 337.570313 L 961.035156 330.234375 L 962.71875 322.898438 L 964.523438 315.5625 L 966.453125 308.226563 L 968.507813 300.890625 L 970.679688 293.554688 L 972.976563 286.214844 L 975.390625 278.878906 L 977.925781 271.542969 L 980.578125 264.207031 L 983.347656 256.871094 L 986.234375 249.535156 L 989.238281 242.199219 L 992.355469 234.863281 L 995.585938 227.527344 L 998.929688 220.191406 L 1002.386719 212.851563 L 1005.953125 205.515625 L 1009.628906 198.179688 L 1013.410156 190.84375 L 1017.304688 183.507813 L 1021.300781 176.171875 L 1025.402344 168.835938 L 1029.609375 161.5 L 1033.917969 154.164063 L 1038.332031 146.828125 L 1042.84375 139.492188 L 1047.453125 132.152344 L 1052.160156 124.816406 L 1056.964844 117.480469 L 1061.867188 110.144531 L 1066.863281 102.808594 L 1071.949219 95.472656 L 1077.128906 88.136719 L 1082.398438 80.800781 \&quot;/&gt;\n &lt;g style=\&quot;fill:rgb(89.411765%,10.196078%,10.980392%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-0\&quot; x=\&quot;922.679688\&quot; y=\&quot;508.953125\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-1\&quot; x=\&quot;928.615918\&quot; y=\&quot;508.953125\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-2\&quot; x=\&quot;934.052393\&quot; y=\&quot;508.953125\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-3\&quot; x=\&quot;936.525098\&quot; y=\&quot;508.953125\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;942.952393\&quot; y=\&quot;508.953125\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(21.568627%,49.411765%,72.156863%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-0\&quot; x=\&quot;1084.539063\&quot; y=\&quot;335.070313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-5\&quot; x=\&quot;1090.475293\&quot; y=\&quot;335.070313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;1096.411523\&quot; y=\&quot;335.070313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-6\&quot; x=\&quot;1102.347754\&quot; y=\&quot;335.070313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;1108.283984\&quot; y=\&quot;335.070313\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(30.196078%,68.627451%,29.019608%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-0\&quot; x=\&quot;131.449219\&quot; y=\&quot;626.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-7\&quot; x=\&quot;137.385449\&quot; y=\&quot;626.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-8\&quot; x=\&quot;143.32168\&quot; y=\&quot;626.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-1\&quot; x=\&quot;150.735449\&quot; y=\&quot;626.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;156.171924\&quot; y=\&quot;626.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(59.607843%,30.588235%,63.921569%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-0\&quot; x=\&quot;996.554688\&quot; y=\&quot;457.277344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-9\&quot; x=\&quot;1002.490918\&quot; y=\&quot;457.277344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-2\&quot; x=\&quot;1010.891162\&quot; y=\&quot;457.277344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-10\&quot; x=\&quot;1013.363867\&quot; y=\&quot;457.277344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;1020.286572\&quot; y=\&quot;457.277344\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(100%,49.803922%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-0\&quot; x=\&quot;958.132813\&quot; y=\&quot;442.402344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-11\&quot; x=\&quot;964.069043\&quot; y=\&quot;442.402344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-12\&quot; x=\&quot;969.505518\&quot; y=\&quot;442.402344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-2\&quot; x=\&quot;975.932812\&quot; y=\&quot;442.402344\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;978.405518\&quot; y=\&quot;442.402344\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(65.098039%,33.72549%,15.686275%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-0\&quot; x=\&quot;1089.601563\&quot; y=\&quot;82.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-5\&quot; x=\&quot;1095.537793\&quot; y=\&quot;82.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-2\&quot; x=\&quot;1101.474023\&quot; y=\&quot;82.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-5\&quot; x=\&quot;1103.946729\&quot; y=\&quot;82.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;1109.882959\&quot; y=\&quot;82.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(74.509804%,74.509804%,74.509804%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-5\&quot; x=\&quot;759.210938\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-13\&quot; x=\&quot;765.147168\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-14\&quot; x=\&quot;770.096924\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-15\&quot; x=\&quot;775.04668\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-16\&quot; x=\&quot;779.996436\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-17\&quot; x=\&quot;781.97373\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-9\&quot; x=\&quot;784.9375\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-18\&quot; x=\&quot;793.337744\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-19\&quot; x=\&quot;798.2875\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-20\&quot; x=\&quot;800.264795\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-21\&quot; x=\&quot;805.214551\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-22\&quot; x=\&quot;810.164307\&quot; y=\&quot;408.925781\&quot;/&gt;\n &lt;/g&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph3-0\&quot; x=\&quot;423.5625\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-1\&quot; x=\&quot;433.500684\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-1\&quot; x=\&quot;438.4625\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-2\&quot; x=\&quot;443.424316\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-3\&quot; x=\&quot;447.564014\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-2\&quot; x=\&quot;455.850684\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-4\&quot; x=\&quot;459.990381\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-5\&quot; x=\&quot;468.277051\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-6\&quot; x=\&quot;477.378564\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-7\&quot; x=\&quot;482.340381\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-8\&quot; x=\&quot;486.480078\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-9\&quot; x=\&quot;495.581592\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-10\&quot; x=\&quot;501.380078\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-5\&quot; x=\&quot;510.481592\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-6\&quot; x=\&quot;519.583105\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-2\&quot; x=\&quot;524.544922\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-4\&quot; x=\&quot;528.684619\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-9\&quot; x=\&quot;536.971289\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-7\&quot; x=\&quot;542.769775\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-11\&quot; x=\&quot;546.909473\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-12\&quot; x=\&quot;556.847656\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-5\&quot; x=\&quot;565.134326\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-13\&quot; x=\&quot;574.23584\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-14\&quot; x=\&quot;583.337354\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-12\&quot; x=\&quot;592.438867\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-9\&quot; x=\&quot;600.725537\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-15\&quot; x=\&quot;606.524023\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-7\&quot; x=\&quot;615.625537\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-8\&quot; x=\&quot;619.765234\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-14\&quot; x=\&quot;628.866748\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-5\&quot; x=\&quot;637.968262\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-15\&quot; x=\&quot;647.069775\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-16\&quot; x=\&quot;656.171289\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-7\&quot; x=\&quot;664.457959\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-17\&quot; x=\&quot;668.597656\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-18\&quot; x=\&quot;676.884326\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-18\&quot; x=\&quot;685.170996\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-18\&quot; x=\&quot;693.457666\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-7\&quot; x=\&quot;701.744336\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-6\&quot; x=\&quot;705.884033\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-10\&quot; x=\&quot;710.84585\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-7\&quot; x=\&quot;719.947363\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-17\&quot; x=\&quot;724.087061\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-18\&quot; x=\&quot;732.37373\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-19\&quot; x=\&quot;740.6604\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-20\&quot; x=\&quot;748.94707\&quot; y=\&quot;34.851563\&quot;/&gt;\n &lt;/g&gt;\n &lt;/g&gt;\n&lt;/svg&gt;\n&quot;,&#10;&quot;config&quot;: [] &#10;},&quot;evals&quot;: [ ] }&lt;/script&gt;&#10;&lt;script type=&quot;application/htmlwidget-sizing&quot; data-for=&quot;htmlwidget-3332&quot;&gt;{ &quot;viewer&quot;: {&#10; &quot;width&quot;: 450,&#10;&quot;height&quot;: 350,&#10;&quot;padding&quot;: 15,&#10;&quot;fill&quot;: true &#10;},&quot;browser&quot;: {&#10; &quot;width&quot;: 960,&#10;&quot;height&quot;: 500,&#10;&quot;padding&quot;: 40,&#10;&quot;fill&quot;: false &#10;} }&lt;/script&gt;&#10;&lt;/body&gt;&#10;&lt;/html&gt;" width="100%" height="500" style="border-width:0px ;"></iframe>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body style="background-color:white;">
<iframe srcdoc="&lt;!DOCTYPE html&gt;&#10;&lt;html&gt;&#10;&lt;head&gt;&#10;&lt;meta charset=&quot;utf-8&quot; /&gt;&#10;&lt;script src=&quot;data:application/x-javascript,%28function%28%29%20%7B%0A%20%20%2F%2F%20If%20window%2EHTMLWidgets%20is%20already%20defined%2C%20then%20use%20it%3B%20otherwise%20create%20a%0A%20%20%2F%2F%20new%20object%2E%20This%20allows%20preceding%20code%20to%20set%20options%20that%20affect%20the%0A%20%20%2F%2F%20initialization%20process%20%28though%20none%20currently%20exist%29%2E%0A%20%20window%2EHTMLWidgets%20%3D%20window%2EHTMLWidgets%20%7C%7C%20%7B%7D%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20a%20viewer%20pane%2E%20If%20not%2C%20we%27re%20in%20a%20web%20browser%2E%0A%20%20var%20viewerMode%20%3D%20window%2EHTMLWidgets%2EviewerMode%20%3D%0A%20%20%20%20%20%20%2F%5Cbviewer%5Fpane%3D1%5Cb%2F%2Etest%28window%2Elocation%29%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20Shiny%20mode%2E%20If%20not%2C%20it%27s%20a%20static%20document%2E%0A%20%20%2F%2F%20Note%20that%20static%20widgets%20can%20appear%20in%20both%20Shiny%20and%20static%20modes%2C%20but%0A%20%20%2F%2F%20obviously%2C%20Shiny%20widgets%20can%20only%20appear%20in%20Shiny%20apps%2Fdocuments%2E%0A%20%20var%20shinyMode%20%3D%20window%2EHTMLWidgets%2EshinyMode%20%3D%0A%20%20%20%20%20%20typeof%28window%2EShiny%29%20%21%3D%3D%20%22undefined%22%20%26%26%20%21%21window%2EShiny%2EoutputBindings%3B%0A%0A%20%20%2F%2F%20We%20can%27t%20count%20on%20jQuery%20being%20available%2C%20so%20we%20implement%20our%20own%0A%20%20%2F%2F%20version%20if%20necessary%2E%0A%20%20function%20querySelectorAll%28scope%2C%20selector%29%20%7B%0A%20%20%20%20if%20%28typeof%28jQuery%29%20%21%3D%3D%20%22undefined%22%20%26%26%20scope%20instanceof%20jQuery%29%20%7B%0A%20%20%20%20%20%20return%20scope%2Efind%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28scope%2EquerySelectorAll%29%20%7B%0A%20%20%20%20%20%20return%20scope%2EquerySelectorAll%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20asArray%28value%29%20%7B%0A%20%20%20%20if%20%28value%20%3D%3D%3D%20null%29%0A%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28%24%2EisArray%28value%29%29%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20return%20%5Bvalue%5D%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20jQuery%27s%20extend%0A%20%20function%20extend%28target%20%2F%2A%2C%20%2E%2E%2E%20%2A%2F%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20target%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%201%3B%20i%20%3C%20arguments%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bi%5D%3B%0A%20%20%20%20%20%20for%20%28var%20prop%20in%20source%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28source%2EhasOwnProperty%28prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20source%5Bprop%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20target%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Replaces%20the%20specified%20method%20with%20the%20return%20value%20of%20funcSource%2E%0A%20%20%2F%2F%0A%20%20%2F%2F%20Note%20that%20funcSource%20should%20not%20BE%20the%20new%20method%2C%20it%20should%20be%20a%20function%0A%20%20%2F%2F%20that%20RETURNS%20the%20new%20method%2E%20funcSource%20receives%20a%20single%20argument%20that%20is%0A%20%20%2F%2F%20the%20overridden%20method%2C%20it%20can%20be%20called%20from%20the%20new%20method%2E%20The%20overridden%0A%20%20%2F%2F%20method%20can%20be%20called%20like%20a%20regular%20function%2C%20it%20has%20the%20target%20permanently%0A%20%20%2F%2F%20bound%20to%20it%20so%20%22this%22%20will%20work%20correctly%2E%0A%20%20function%20overrideMethod%28target%2C%20methodName%2C%20funcSource%29%20%7B%0A%20%20%20%20var%20superFunc%20%3D%20target%5BmethodName%5D%20%7C%7C%20function%28%29%20%7B%7D%3B%0A%20%20%20%20var%20superFuncBound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20superFunc%2Eapply%28target%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20target%5BmethodName%5D%20%3D%20funcSource%28superFuncBound%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20a%20vague%20facsimilie%20of%20jQuery%27s%20data%20method%0A%20%20function%20elementData%28el%2C%20name%2C%20value%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%3B%0A%20%20%20%20%7D%20else%20if%20%28arguments%2Elength%20%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%20%3D%20value%3B%0A%20%20%20%20%20%20return%20el%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Wrong%20number%20of%20arguments%20for%20elementData%3A%20%22%20%2B%0A%20%20%20%20%20%20%20%20arguments%2Elength%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F3446170%2Fescape%2Dstring%2Dfor%2Duse%2Din%2Djavascript%2Dregex%0A%20%20function%20escapeRegExp%28str%29%20%7B%0A%20%20%20%20return%20str%2Ereplace%28%2F%5B%5C%2D%5C%5B%5C%5D%5C%2F%5C%7B%5C%7D%5C%28%5C%29%5C%2A%5C%2B%5C%3F%5C%2E%5C%5C%5C%5E%5C%24%5C%7C%5D%2Fg%2C%20%22%5C%5C%24%26%22%29%3B%0A%20%20%7D%0A%0A%20%20function%20hasClass%28el%2C%20className%29%20%7B%0A%20%20%20%20var%20re%20%3D%20new%20RegExp%28%22%5C%5Cb%22%20%2B%20escapeRegExp%28className%29%20%2B%20%22%5C%5Cb%22%29%3B%0A%20%20%20%20return%20re%2Etest%28el%2EclassName%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20elements%20%2D%20array%20%28or%20array%2Dlike%20object%29%20of%20HTML%20elements%0A%20%20%2F%2F%20className%20%2D%20class%20name%20to%20test%20for%0A%20%20%2F%2F%20include%20%2D%20if%20true%2C%20only%20return%20elements%20with%20given%20className%3B%0A%20%20%2F%2F%20%20%20if%20false%2C%20only%20return%20elements%20%2Awithout%2A%20given%20className%0A%20%20function%20filterByClass%28elements%2C%20className%2C%20include%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20elements%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28hasClass%28elements%5Bi%5D%2C%20className%29%20%3D%3D%20include%29%0A%20%20%20%20%20%20%20%20results%2Epush%28elements%5Bi%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%0A%20%20function%20on%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EaddEventListener%29%20%7B%0A%20%20%20%20%20%20obj%2EaddEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20%7D%20else%20if%20%28obj%2EattachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EattachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20off%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EremoveEventListener%29%0A%20%20%20%20%20%20obj%2EremoveEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20else%20if%20%28obj%2EdetachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EdetachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Translate%20array%20of%20values%20to%20top%2Fright%2Fbottom%2Fleft%2C%20as%20usual%20with%0A%20%20%2F%2F%20the%20%22padding%22%20CSS%20property%0A%20%20%2F%2F%20https%3A%2F%2Fdeveloper%2Emozilla%2Eorg%2Fen%2DUS%2Fdocs%2FWeb%2FCSS%2Fpadding%0A%20%20function%20unpackPadding%28value%29%20%7B%0A%20%20%20%20if%20%28typeof%28value%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20value%20%3D%20%5Bvalue%5D%3B%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B0%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B0%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%204%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B3%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Convert%20an%20unpacked%20padding%20object%20to%20a%20CSS%20value%0A%20%20function%20paddingToCss%28paddingObj%29%20%7B%0A%20%20%20%20return%20paddingObj%2Etop%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eright%20%2B%20%22px%20%22%20%2B%20paddingObj%2Ebottom%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eleft%20%2B%20%22px%22%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Makes%20a%20number%20suitable%20for%20CSS%0A%20%20function%20px%28x%29%20%7B%0A%20%20%20%20if%20%28typeof%28x%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20return%20x%20%2B%20%22px%22%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20x%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Retrieves%20runtime%20widget%20sizing%20information%20for%20an%20element%2E%0A%20%20%2F%2F%20The%20return%20value%20is%20either%20null%2C%20or%20an%20object%20with%20fill%2C%20padding%2C%0A%20%20%2F%2F%20defaultWidth%2C%20defaultHeight%20fields%2E%0A%20%20function%20sizingPolicy%28el%29%20%7B%0A%20%20%20%20var%20sizingEl%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fhtmlwidget%2Dsizing%27%5D%22%29%3B%0A%20%20%20%20if%20%28%21sizingEl%29%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20sp%20%3D%20JSON%2Eparse%28sizingEl%2EtextContent%20%7C%7C%20sizingEl%2Etext%20%7C%7C%20%22%7B%7D%22%29%3B%0A%20%20%20%20if%20%28viewerMode%29%20%7B%0A%20%20%20%20%20%20return%20sp%2Eviewer%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20sp%2Ebrowser%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20initSizing%28el%29%20%7B%0A%20%20%20%20var%20sizing%20%3D%20sizingPolicy%28el%29%3B%0A%20%20%20%20if%20%28%21sizing%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20cel%20%3D%20document%2EgetElementById%28%22htmlwidget%5Fcontainer%22%29%3B%0A%20%20%20%20if%20%28%21cel%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20if%20%28typeof%28sizing%2Epadding%29%20%21%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Emargin%20%3D%20%220%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Epadding%20%3D%20paddingToCss%28unpackPadding%28sizing%2Epadding%29%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28sizing%2Efill%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eoverflow%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20if%20%28cel%29%20%7B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eposition%20%3D%20%22absolute%22%3B%0A%20%20%20%20%20%20%20%20var%20pad%20%3D%20unpackPadding%28sizing%2Epadding%29%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Etop%20%3D%20pad%2Etop%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eright%20%3D%20pad%2Eright%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Ebottom%20%3D%20pad%2Ebottom%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eleft%20%3D%20pad%2Eleft%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20cel%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20cel%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20px%28sizing%2Ewidth%29%3B%0A%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20px%28sizing%2Eheight%29%3B%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20el%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20el%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Default%20implementations%20for%20methods%0A%20%20var%20defaults%20%3D%20%7B%0A%20%20%20%20find%3A%20function%28scope%29%20%7B%0A%20%20%20%20%20%20return%20querySelectorAll%28scope%2C%20%22%2E%22%20%2B%20this%2Ename%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20renderError%3A%20function%28el%2C%20err%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%0A%20%20%20%20%20%20this%2EclearError%28el%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Add%20all%20these%20error%20classes%2C%20as%20Shiny%20does%0A%20%20%20%20%20%20var%20errClass%20%3D%20%22shiny%2Doutput%2Derror%22%3B%0A%20%20%20%20%20%20if%20%28err%2Etype%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20use%20the%20classes%20of%20the%20error%20condition%20as%20CSS%20class%20names%0A%20%20%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20%22%20%2B%20%24%2Emap%28asArray%28err%2Etype%29%2C%20function%28type%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20errClass%20%2B%20%22%2D%22%20%2B%20type%3B%0A%20%20%20%20%20%20%20%20%7D%29%2Ejoin%28%22%20%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20htmlwidgets%2Derror%22%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Is%20el%20inline%20or%20block%3F%20If%20inline%20or%20inline%2Dblock%2C%20just%20display%3Anone%20it%0A%20%20%20%20%20%20%2F%2F%20and%20add%20an%20inline%20error%2E%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Ecss%28%22display%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20display%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20%24el%2Ehide%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorSpan%20%3D%20%24%28%22%3Cspan%3E%22%29%2EaddClass%28errClass%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorSpan%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorSpan%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20block%2C%20add%20an%20error%20just%20after%20the%20el%2C%20set%20visibility%3Anone%20on%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20el%2C%20and%20position%20the%20error%20to%20be%20on%20top%20of%20the%20el%2E%0A%20%20%20%20%20%20%20%20%2F%2F%20Mark%20it%20with%20a%20unique%20ID%20and%20CSS%20class%20so%20we%20can%20remove%20it%20later%2E%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorDiv%20%3D%20%24%28%22%3Cdiv%3E%22%29%2EaddClass%28errClass%29%2Ecss%28%22position%22%2C%20%22absolute%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20setting%20width%20can%20push%20out%20the%20page%20size%2C%20forcing%20otherwise%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20unnecessary%20scrollbars%20to%20appear%20and%20making%20it%20impossible%20for%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20element%20to%20shrink%3B%20so%20use%20max%2Dwidth%20instead%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorDiv%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorDiv%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Really%20dumb%20way%20to%20keep%20the%20size%2Fposition%20of%20the%20error%20in%20sync%20with%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20parent%20element%20as%20the%20window%20is%20resized%20or%20whatever%2E%0A%20%20%20%20%20%20%20%20%20%20var%20intId%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21errorDiv%5B0%5D%2EparentElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20clearInterval%28intId%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20errorDiv%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20clearError%3A%20function%28el%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20null%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28display%29%0A%20%20%20%20%20%20%20%20%20%20%24el%2Ecss%28%22display%22%2C%20display%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%7B%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22inherit%22%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20sizing%3A%20%7B%7D%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Called%20by%20widget%20bindings%20to%20register%20a%20new%20type%20of%20widget%2E%20The%20definition%0A%20%20%2F%2F%20object%20can%20contain%20the%20following%20properties%3A%0A%20%20%2F%2F%20%2D%20name%20%28required%29%20%2D%20A%20string%20indicating%20the%20binding%20name%2C%20which%20will%20be%0A%20%20%2F%2F%20%20%20used%20by%20default%20as%20the%20CSS%20classname%20to%20look%20for%2E%0A%20%20%2F%2F%20%2D%20initialize%20%28optional%29%20%2D%20A%20function%28el%29%20that%20will%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20widget%20element%3B%20if%20a%20value%20is%20returned%2C%20it%20will%20be%20passed%20as%20the%20third%0A%20%20%2F%2F%20%20%20value%20to%20renderValue%2E%0A%20%20%2F%2F%20%2D%20renderValue%20%28required%29%20%2D%20A%20function%28el%2C%20data%2C%20initValue%29%20that%20will%20be%0A%20%20%2F%2F%20%20%20called%20with%20data%2E%20Static%20contexts%20will%20cause%20this%20to%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20element%3B%20Shiny%20apps%20will%20cause%20this%20to%20be%20called%20multiple%20times%20per%0A%20%20%2F%2F%20%20%20element%2C%20as%20the%20data%20changes%2E%0A%20%20window%2EHTMLWidgets%2Ewidget%20%3D%20function%28definition%29%20%7B%0A%20%20%20%20if%20%28%21definition%2Ename%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20name%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21definition%2Etype%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20type%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Currently%20we%20only%20support%20output%20widgets%0A%20%20%20%20if%20%28definition%2Etype%20%21%3D%3D%20%22output%22%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Unrecognized%20widget%20type%20%27%22%20%2B%20definition%2Etype%20%2B%20%22%27%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20TODO%3A%20Verify%20that%20%2Ename%20is%20a%20valid%20CSS%20classname%0A%20%20%20%20if%20%28%21definition%2ErenderValue%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20renderValue%20function%22%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20For%20static%20rendering%20%28non%2DShiny%29%2C%20use%20a%20simple%20widget%20registration%0A%20%20%20%20%2F%2F%20scheme%2E%20We%20also%20use%20this%20scheme%20for%20Shiny%20apps%2Fdocuments%20that%20also%0A%20%20%20%20%2F%2F%20contain%20static%20widgets%2E%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20%2F%2F%20Merge%20defaults%20into%20the%20definition%3B%20don%27t%20mutate%20the%20original%20definition%2E%0A%20%20%20%20var%20staticBinding%20%3D%20extend%28%7B%7D%2C%20defaults%2C%20definition%29%3B%0A%20%20%20%20overrideMethod%28staticBinding%2C%20%22find%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20return%20function%28scope%29%20%7B%0A%20%20%20%20%20%20%20%20var%20results%20%3D%20superfunc%28scope%29%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Filter%20out%20Shiny%20outputs%2C%20we%20only%20want%20the%20static%20kind%0A%20%20%20%20%20%20%20%20return%20filterByClass%28results%2C%20%22html%2Dwidget%2Doutput%22%2C%20false%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%2Epush%28staticBinding%29%3B%0A%0A%20%20%20%20if%20%28shinyMode%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Shiny%20is%20running%2E%20Register%20the%20definition%20as%20an%20output%20binding%2E%0A%0A%20%20%20%20%20%20%2F%2F%20Merge%20defaults%20into%20the%20definition%3B%20don%27t%20mutate%20the%20original%20definition%2E%0A%20%20%20%20%20%20%2F%2F%20The%20base%20object%20is%20a%20Shiny%20output%20binding%20if%20we%27re%20running%20in%20Shiny%20mode%2C%0A%20%20%20%20%20%20%2F%2F%20or%20an%20empty%20object%20if%20we%27re%20not%2E%0A%20%20%20%20%20%20var%20shinyBinding%20%3D%20extend%28new%20Shiny%2EOutputBinding%28%29%2C%20defaults%2C%20definition%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Wrap%20renderValue%20to%20handle%20initialization%2C%20which%20unfortunately%20isn%27t%0A%20%20%20%20%20%20%2F%2F%20supported%20natively%20by%20Shiny%20at%20the%20time%20of%20this%20writing%2E%0A%0A%20%20%20%20%20%20%2F%2F%20NB%3A%20shinyBinding%2Einitialize%20may%20be%20undefined%2C%20as%20it%27s%20optional%2E%0A%0A%20%20%20%20%20%20%2F%2F%20Rename%20initialize%20to%20make%20sure%20it%20isn%27t%20called%20by%20a%20future%20version%0A%20%20%20%20%20%20%2F%2F%20of%20Shiny%20that%20does%20support%20initialize%20directly%2E%0A%20%20%20%20%20%20shinyBinding%2E%5Fhtmlwidgets%5Finitialize%20%3D%20shinyBinding%2Einitialize%3B%0A%20%20%20%20%20%20delete%20shinyBinding%2Einitialize%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22find%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28scope%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20var%20results%20%3D%20superfunc%28scope%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Only%20return%20elements%20that%20are%20Shiny%20outputs%2C%20not%20static%20ones%0A%20%20%20%20%20%20%20%20%20%20var%20dynamicResults%20%3D%20results%2Efilter%28%22%2Ehtml%2Dwidget%2Doutput%22%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20It%27s%20possible%20that%20whatever%20caused%20Shiny%20to%20think%20there%20might%20be%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20new%20dynamic%20outputs%2C%20also%20caused%20there%20to%20be%20new%20static%20outputs%2E%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Since%20there%20might%20be%20lots%20of%20different%20htmlwidgets%20bindings%2C%20we%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20schedule%20execution%20for%20later%2D%2Dno%20need%20to%20staticRender%20multiple%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20times%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28results%2Elength%20%21%3D%3D%20dynamicResults%2Elength%29%0A%20%20%20%20%20%20%20%20%20%20%20%20scheduleStaticRender%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20return%20dynamicResults%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22renderValue%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28el%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20data%2Eevals%20%26%26%20i%20%3C%20data%2Eevals%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21this%2ErenderOnNullValue%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28data%2Ex%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22inherit%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20initSizing%28el%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22initialized%22%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28this%2E%5Fhtmlwidgets%5Finitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20this%2E%5Fhtmlwidgets%5Finitialize%28el%2C%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22init%5Fresult%22%2C%20result%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20Shiny%2ErenderDependencies%28data%2Edeps%29%3B%0A%20%20%20%20%20%20%20%20%20%20superfunc%28el%2C%20data%2Ex%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22resize%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28el%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Shiny%20can%20call%20resize%20before%20initialize%2FrenderValue%20have%20been%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20called%2C%20which%20doesn%27t%20make%20sense%20for%20widgets%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20superfunc%28el%2C%20width%2C%20height%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20Shiny%2EoutputBindings%2Eregister%28shinyBinding%2C%20shinyBinding%2Ename%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20var%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20function%20scheduleStaticRender%28%29%20%7B%0A%20%20%20%20if%20%28%21scheduleStaticRenderTimerId%29%20%7B%0A%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%20%20%7D%2C%201%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Render%20static%20widgets%20after%20the%20document%20finishes%20loading%0A%20%20%2F%2F%20Statically%20render%20all%20elements%20that%20are%20of%20this%20widget%27s%20class%0A%20%20function%20staticRender%28%29%20%7B%0A%20%20%20%20var%20bindings%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20bindings%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20binding%20%3D%20bindings%5Bi%5D%3B%0A%20%20%20%20%20%20var%20matches%20%3D%20binding%2Efind%28document%2EdocumentElement%29%3B%0A%20%20%20%20%20%20for%20%28var%20j%20%3D%200%3B%20j%20%3C%20matches%2Elength%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20var%20el%20%3D%20matches%5Bj%5D%3B%0A%20%20%20%20%20%20%20%20var%20sizeObj%20%3D%20initSizing%28el%2C%20binding%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28hasClass%28el%2C%20%22html%2Dwidget%2Dstatic%2Dbound%22%29%29%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20el%2EclassName%20%3D%20el%2EclassName%20%2B%20%22%20html%2Dwidget%2Dstatic%2Dbound%22%3B%0A%0A%20%20%20%20%20%20%20%20var%20initResult%3B%0A%20%20%20%20%20%20%20%20if%20%28binding%2Einitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20initResult%20%3D%20binding%2Einitialize%28el%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28binding%2Eresize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lastSize%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20on%28window%2C%20%22resize%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20size%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20w%3A%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20h%3A%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%200%20%26%26%20size%2Eh%20%3D%3D%3D%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%20lastSize%2Ew%20%26%26%20size%2Eh%20%3D%3D%3D%20lastSize%2Eh%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20lastSize%20%3D%20size%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20binding%2Eresize%28el%2C%20size%2Ew%2C%20size%2Eh%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20var%20scriptData%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fjson%27%5D%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28scriptData%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20data%20%3D%20JSON%2Eparse%28scriptData%2EtextContent%20%7C%7C%20scriptData%2Etext%29%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20data%2Eevals%20%26%26%20i%20%3C%20data%2Eevals%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20binding%2ErenderValue%28el%2C%20data%2Ex%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Wait%20until%20after%20the%20document%20has%20loaded%20to%20render%20the%20widgets%2E%0A%20%20if%20%28document%2EaddEventListener%29%20%7B%0A%20%20%20%20document%2EaddEventListener%28%22DOMContentLoaded%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20document%2EremoveEventListener%28%22DOMContentLoaded%22%2C%20arguments%2Ecallee%2C%20false%29%3B%0A%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%7D%20else%20if%20%28document%2EattachEvent%29%20%7B%0A%20%20%20%20document%2EattachEvent%28%22onreadystatechange%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28document%2EreadyState%20%3D%3D%3D%20%22complete%22%29%20%7B%0A%20%20%20%20%20%20%20%20document%2EdetachEvent%28%22onreadystatechange%22%2C%20arguments%2Ecallee%29%3B%0A%20%20%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%0A%0A%20%20window%2EHTMLWidgets%2EgetAttachmentUrl%20%3D%20function%28depname%2C%20key%29%20%7B%0A%20%20%20%20%2F%2F%20If%20no%20key%2C%20default%20to%20the%20first%20item%0A%20%20%20%20if%20%28typeof%28key%29%20%3D%3D%3D%20%22undefined%22%29%0A%20%20%20%20%20%20key%20%3D%201%3B%0A%0A%20%20%20%20var%20link%20%3D%20document%2EgetElementById%28depname%20%2B%20%22%2D%22%20%2B%20key%20%2B%20%22%2Dattachment%22%29%3B%0A%20%20%20%20if%20%28%21link%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Attachment%20%22%20%2B%20depname%20%2B%20%22%2F%22%20%2B%20key%20%2B%20%22%20not%20found%20in%20document%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20link%2EgetAttribute%28%22href%22%29%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EdataframeToD3%20%3D%20function%28df%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20length%3B%0A%20%20%20%20for%20%28var%20name%20in%20df%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28df%2EhasOwnProperty%28name%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20names%2Epush%28name%29%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%28df%5Bname%5D%29%20%21%3D%3D%20%22object%22%20%7C%7C%20typeof%28df%5Bname%5D%2Elength%29%20%3D%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28typeof%28length%29%20%21%3D%3D%20%22undefined%22%20%26%26%20length%20%21%3D%3D%20df%5Bname%5D%2Elength%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%20of%20the%20same%20length%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20length%20%3D%20df%5Bname%5D%2Elength%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20item%3B%0A%20%20%20%20for%20%28var%20row%20%3D%200%3B%20row%20%3C%20length%3B%20row%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20item%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20col%20%3D%200%3B%20col%20%3C%20names%2Elength%3B%20col%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20item%5Bnames%5Bcol%5D%5D%20%3D%20df%5Bnames%5Bcol%5D%5D%5Brow%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20results%2Epush%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EtransposeArray2D%20%3D%20function%28array%29%20%7B%0A%20%20%20%20%20%20var%20newArray%20%3D%20array%5B0%5D%2Emap%28function%28col%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20array%2Emap%28function%28row%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20row%5Bi%5D%0A%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20newArray%3B%0A%20%20%7D%3B%0A%20%20%2F%2F%20Split%20value%20at%20splitChar%2C%20but%20allow%20splitChar%20to%20be%20escaped%0A%20%20%2F%2F%20using%20escapeChar%2E%20Any%20other%20characters%20escaped%20by%20escapeChar%0A%20%20%2F%2F%20will%20be%20included%20as%20usual%20%28including%20escapeChar%20itself%29%2E%0A%20%20function%20splitWithEscape%28value%2C%20splitChar%2C%20escapeChar%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20escapeMode%20%3D%20false%3B%0A%20%20%20%20var%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20for%20%28var%20pos%20%3D%200%3B%20pos%20%3C%20value%2Elength%3B%20pos%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28%21escapeMode%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20splitChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20escapeChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20escapeMode%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20escapeMode%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28currentResult%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%20%20%2F%2F%20Function%20authored%20by%20Yihui%2FJJ%20Allaire%0A%20%20window%2EHTMLWidgets%2EevaluateStringMember%20%3D%20function%28o%2C%20member%29%20%7B%0A%20%20%20%20var%20parts%20%3D%20splitWithEscape%28member%2C%20%27%2E%27%2C%20%27%5C%5C%27%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20l%20%3D%20parts%2Elength%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20part%20%3D%20parts%5Bi%5D%3B%0A%20%20%20%20%20%20%2F%2F%20part%20may%20be%20a%20character%20or%20%27numeric%27%20member%20name%0A%20%20%20%20%20%20if%20%28o%20%21%3D%3D%20null%20%26%26%20typeof%20o%20%3D%3D%3D%20%22object%22%20%26%26%20part%20in%20o%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28i%20%3D%3D%20%28l%20%2D%201%29%29%20%7B%20%2F%2F%20if%20we%20are%20at%20the%20end%20of%20the%20line%20then%20evalulate%0A%20%20%20%20%20%20%20%20%20%20if%20%28typeof%20o%5Bpart%5D%20%3D%3D%3D%20%22string%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20o%5Bpart%5D%20%3D%20eval%28%22%28%22%20%2B%20o%5Bpart%5D%20%2B%20%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%20%2F%2F%20otherwise%20continue%20to%20next%20embedded%20object%0A%20%20%20%20%20%20%20%20%20%20o%20%3D%20o%5Bpart%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%7D%29%28%29%3B%0A%0A&quot;&gt;&lt;/script&gt;&#10;&lt;script src=&quot;data:application/x-javascript,%2F%2F%20svg%2Dpan%2Dzoom%20v3%2E1%2E0%0A%2F%2F%20https%3A%2F%2Fgithub%2Ecom%2Fariutta%2Fsvg%2Dpan%2Dzoom%0A%28function%20e%28t%2Cn%2Cr%29%7Bfunction%20s%28o%2Cu%29%7Bif%28%21n%5Bo%5D%29%7Bif%28%21t%5Bo%5D%29%7Bvar%20a%3Dtypeof%20require%3D%3D%22function%22%26%26require%3Bif%28%21u%26%26a%29return%20a%28o%2C%210%29%3Bif%28i%29return%20i%28o%2C%210%29%3Bvar%20f%3Dnew%20Error%28%22Cannot%20find%20module%20%27%22%2Bo%2B%22%27%22%29%3Bthrow%20f%2Ecode%3D%22MODULE%5FNOT%5FFOUND%22%2Cf%7Dvar%20l%3Dn%5Bo%5D%3D%7Bexports%3A%7B%7D%7D%3Bt%5Bo%5D%5B0%5D%2Ecall%28l%2Eexports%2Cfunction%28e%29%7Bvar%20n%3Dt%5Bo%5D%5B1%5D%5Be%5D%3Breturn%20s%28n%3Fn%3Ae%29%7D%2Cl%2Cl%2Eexports%2Ce%2Ct%2Cn%2Cr%29%7Dreturn%20n%5Bo%5D%2Eexports%7Dvar%20i%3Dtypeof%20require%3D%3D%22function%22%26%26require%3Bfor%28var%20o%3D0%3Bo%3Cr%2Elength%3Bo%2B%2B%29s%28r%5Bo%5D%29%3Breturn%20s%7D%29%28%7B1%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20svgPanZoom%20%3D%20require%28%27%2E%2Fsvg%2Dpan%2Dzoom%2Ejs%27%29%3B%0A%0A%2F%2F%20UMD%20module%20definition%0A%28function%28window%2C%20document%29%7B%0A%20%20%2F%2F%20AMD%0A%20%20if%20%28typeof%20define%20%3D%3D%3D%20%27function%27%20%26%26%20define%2Eamd%29%20%7B%0A%20%20%20%20define%28%27svg%2Dpan%2Dzoom%27%2C%20function%20%28%29%20%7B%0A%20%20%20%20%20%20return%20svgPanZoom%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%2F%2F%20CMD%0A%20%20%7D%20else%20if%20%28typeof%20module%20%21%3D%3D%20%27undefined%27%20%26%26%20module%2Eexports%29%20%7B%0A%20%20%20%20module%2Eexports%20%3D%20svgPanZoom%3B%0A%0A%20%20%20%20%2F%2F%20Browser%0A%20%20%20%20%2F%2F%20Keep%20exporting%20globally%20as%20module%2Eexports%20is%20available%20because%20of%20browserify%0A%20%20%20%20window%2EsvgPanZoom%20%3D%20svgPanZoom%3B%0A%20%20%7D%0A%7D%29%28window%2C%20document%29%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dpan%2Dzoom%2Ejs%22%3A5%7D%5D%2C2%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0A%28function%28factory%29%7B%0A%20%20if%20%28%20typeof%20define%20%3D%3D%3D%20%27function%27%20%26%26%20define%2Eamd%20%29%20%7B%0A%20%20%20%20%2F%2F%20AMD%2E%20Register%20as%20an%20anonymous%20module%2E%0A%20%20%20%20define%28%5B%5D%2C%20factory%28%29%29%3B%0A%20%20%7D%20else%20if%20%28typeof%20exports%20%3D%3D%3D%20%27object%27%29%20%7B%0A%20%20%20%20%2F%2F%20Node%2FCommonJS%0A%20%20%20%20module%2Eexports%20%3D%20factory%28%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Browser%20globals%0A%20%20%20%20window%2Ewheel%20%3D%20factory%28%29%3B%0A%20%20%7D%0A%7D%0A%28function%28%29%7B%0A%0A%20%20%2F%2FFull%20details%3A%20https%3A%2F%2Fdeveloper%2Emozilla%2Eorg%2Fen%2DUS%2Fdocs%2FWeb%2FReference%2FEvents%2Fwheel%0A%0A%20%20var%20prefix%20%3D%20%22%22%2C%20%5FaddEventListener%2C%20%5FremoveEventListener%2C%20onwheel%2C%20support%2C%20fns%20%3D%20%5B%5D%3B%0A%0A%20%20%2F%2F%20detect%20event%20model%0A%20%20if%20%28%20window%2EaddEventListener%20%29%20%7B%0A%20%20%20%20%5FaddEventListener%20%3D%20%22addEventListener%22%3B%0A%20%20%20%20%5FremoveEventListener%20%3D%20%22removeEventListener%22%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%5FaddEventListener%20%3D%20%22attachEvent%22%3B%0A%20%20%20%20%5FremoveEventListener%20%3D%20%22detachEvent%22%3B%0A%20%20%20%20prefix%20%3D%20%22on%22%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20detect%20available%20wheel%20event%0A%20%20support%20%3D%20%22onwheel%22%20in%20document%2EcreateElement%28%22div%22%29%20%3F%20%22wheel%22%20%3A%20%2F%2F%20Modern%20browsers%20support%20%22wheel%22%0A%20%20%20%20%20%20%20%20%20%20%20%20document%2Eonmousewheel%20%21%3D%3D%20undefined%20%3F%20%22mousewheel%22%20%3A%20%2F%2F%20Webkit%20and%20IE%20support%20at%20least%20%22mousewheel%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%22DOMMouseScroll%22%3B%20%2F%2F%20let%27s%20assume%20that%20remaining%20browsers%20are%20older%20Firefox%0A%0A%0A%20%20function%20createCallback%28element%2Ccallback%2Ccapture%29%20%7B%0A%0A%20%20%20%20var%20fn%20%3D%20function%28originalEvent%29%20%7B%0A%0A%20%20%20%20%20%20%21originalEvent%20%26%26%20%28%20originalEvent%20%3D%20window%2Eevent%20%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20create%20a%20normalized%20event%20object%0A%20%20%20%20%20%20var%20event%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20keep%20a%20ref%20to%20the%20original%20event%20object%0A%20%20%20%20%20%20%20%20originalEvent%3A%20originalEvent%2C%0A%20%20%20%20%20%20%20%20target%3A%20originalEvent%2Etarget%20%7C%7C%20originalEvent%2EsrcElement%2C%0A%20%20%20%20%20%20%20%20type%3A%20%22wheel%22%2C%0A%20%20%20%20%20%20%20%20deltaMode%3A%20originalEvent%2Etype%20%3D%3D%20%22MozMousePixelScroll%22%20%3F%200%20%3A%201%2C%0A%20%20%20%20%20%20%20%20deltaX%3A%200%2C%0A%20%20%20%20%20%20%20%20delatZ%3A%200%2C%0A%20%20%20%20%20%20%20%20preventDefault%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20originalEvent%2EpreventDefault%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20originalEvent%2EpreventDefault%28%29%20%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20originalEvent%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%2F%2F%20calculate%20deltaY%20%28and%20deltaX%29%20according%20to%20the%20event%0A%20%20%20%20%20%20if%20%28%20support%20%3D%3D%20%22mousewheel%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20event%2EdeltaY%20%3D%20%2D%201%2F40%20%2A%20originalEvent%2EwheelDelta%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Webkit%20also%20support%20wheelDeltaX%0A%20%20%20%20%20%20%20%20originalEvent%2EwheelDeltaX%20%26%26%20%28%20event%2EdeltaX%20%3D%20%2D%201%2F40%20%2A%20originalEvent%2EwheelDeltaX%20%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20event%2EdeltaY%20%3D%20originalEvent%2Edetail%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20it%27s%20time%20to%20fire%20the%20callback%0A%20%20%20%20%20%20return%20callback%28%20event%20%29%3B%0A%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20fns%2Epush%28%7B%0A%20%20%20%20%20%20element%3A%20element%2C%0A%20%20%20%20%20%20fn%3A%20fn%2C%0A%20%20%20%20%20%20capture%3A%20capture%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20return%20fn%3B%0A%20%20%7D%0A%0A%20%20function%20getCallback%28element%2Ccapture%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20fns%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28fns%5Bi%5D%2Eelement%20%3D%3D%3D%20element%20%26%26%20fns%5Bi%5D%2Ecapture%20%3D%3D%3D%20capture%29%20%7B%0A%20%20%20%20%20%20%20%20return%20fns%5Bi%5D%2Efn%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28%29%7B%7D%3B%0A%20%20%7D%0A%0A%20%20function%20removeCallback%28element%2Ccapture%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20fns%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28fns%5Bi%5D%2Eelement%20%3D%3D%3D%20element%20%26%26%20fns%5Bi%5D%2Ecapture%20%3D%3D%3D%20capture%29%20%7B%0A%20%20%20%20%20%20%20%20return%20fns%2Esplice%28i%2C1%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20%5FaddWheelListener%28%20elem%2C%20eventName%2C%20callback%2C%20useCapture%20%29%20%7B%0A%20%20%20%20%0A%20%20%20%20var%20cb%3B%0A%0A%20%20%20%20if%20%28support%20%3D%3D%3D%20%22wheel%22%29%20%7B%0A%20%20%20%20%20%20cb%20%3D%20callback%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20cb%20%3D%20createCallback%28elem%2Ccallback%2CuseCapture%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20elem%5B%20%5FaddEventListener%20%5D%28%20prefix%20%2B%20eventName%2C%20cb%2C%20useCapture%20%7C%7C%20false%20%29%3B%0A%0A%20%20%7D%0A%0A%20%20function%20%5FremoveWheelListener%28%20elem%2C%20eventName%2C%20callback%2C%20useCapture%20%29%20%7B%0A%0A%20%20%20%20if%20%28support%20%3D%3D%3D%20%22wheel%22%29%20%7B%0A%20%20%20%20%20%20cb%20%3D%20callback%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20cb%20%3D%20getCallback%28elem%2CuseCapture%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20elem%5B%20%5FremoveEventListener%20%5D%28%20prefix%20%2B%20eventName%2C%20cb%2C%20useCapture%20%7C%7C%20false%20%29%3B%0A%0A%20%20%20%20removeCallback%28elem%2CuseCapture%29%3B%0A%0A%20%20%7D%0A%0A%20%20function%20addWheelListener%28%20elem%2C%20callback%2C%20useCapture%20%29%20%7B%0A%20%20%20%20%5FaddWheelListener%28%20elem%2C%20support%2C%20callback%2C%20useCapture%20%29%3B%0A%0A%20%20%20%20%2F%2F%20handle%20MozMousePixelScroll%20in%20older%20Firefox%0A%20%20%20%20if%28%20support%20%3D%3D%20%22DOMMouseScroll%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%5FaddWheelListener%28%20elem%2C%20%22MozMousePixelScroll%22%2C%20callback%2C%20useCapture%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20removeWheelListener%28elem%2Ccallback%2CuseCapture%29%7B%0A%20%20%20%20%5FremoveWheelListener%28elem%2Csupport%2Ccallback%2CuseCapture%29%3B%0A%0A%20%20%20%20%2F%2F%20handle%20MozMousePixelScroll%20in%20older%20Firefox%0A%20%20%20%20if%28%20support%20%3D%3D%20%22DOMMouseScroll%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%5FremoveWheelListener%28elem%2C%20%22MozMousePixelScroll%22%2C%20callback%2C%20useCapture%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20return%20%7B%0A%20%20%20%20on%3A%20addWheelListener%2C%0A%20%20%20%20off%3A%20removeWheelListener%0A%20%20%7D%3B%0A%0A%7D%29%29%3B%0A%7D%2C%7B%7D%5D%2C3%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%3B%0A%0Amodule%2Eexports%20%3D%20%7B%0A%20%20enable%3A%20function%28instance%29%20%7B%0A%20%20%20%20%2F%2F%20Select%20%28and%20create%20if%20necessary%29%20defs%0A%20%20%20%20var%20defs%20%3D%20instance%2Esvg%2EquerySelector%28%27defs%27%29%0A%20%20%20%20if%20%28%21defs%29%20%7B%0A%20%20%20%20%20%20defs%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27defs%27%29%0A%20%20%20%20%20%20instance%2Esvg%2EappendChild%28defs%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Create%20style%20element%0A%20%20%20%20var%20style%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27style%27%29%0A%20%20%20%20style%2EsetAttribute%28%27type%27%2C%20%27text%2Fcss%27%29%0A%20%20%20%20style%2EtextContent%20%3D%20%27%2Esvg%2Dpan%2Dzoom%2Dcontrol%20%7B%20cursor%3A%20pointer%3B%20fill%3A%20black%3B%20fill%2Dopacity%3A%200%2E333%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%3Ahover%20%7B%20fill%2Dopacity%3A%200%2E8%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%20%7B%20fill%3A%20white%3B%20fill%2Dopacity%3A%200%2E5%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%20%7B%20fill%2Dopacity%3A%200%2E8%3B%20%7D%27%0A%20%20%20%20defs%2EappendChild%28style%29%0A%0A%0A%20%20%20%20%2F%2F%20Zoom%20Group%0A%20%20%20%20var%20zoomGroup%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrols%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27transform%27%2C%20%27translate%28%27%20%2B%20%28%20instance%2Ewidth%20%2D%2070%20%29%20%2B%20%27%20%27%20%2B%20%28%20instance%2Eheight%20%2D%2076%20%29%20%2B%20%27%29%20scale%280%2E75%29%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%0A%20%20%20%20%2F%2F%20Control%20elements%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomIn%28instance%29%29%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomReset%28instance%29%29%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomOut%28instance%29%29%0A%0A%20%20%20%20%2F%2F%20Finally%20append%20created%20element%0A%20%20%20%20instance%2Esvg%2EappendChild%28zoomGroup%29%0A%0A%20%20%20%20%2F%2F%20Cache%20control%20instance%0A%20%20%20%20instance%2EcontrolIcons%20%3D%20zoomGroup%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomIn%3A%20function%28instance%29%20%7B%0A%20%20%20%20var%20zoomIn%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dzoom%2Din%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27transform%27%2C%20%27translate%2830%2E5%205%29%20scale%280%2E015%29%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20zoomIn%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomIn%28%29%7D%2C%20false%29%0A%20%20%20%20zoomIn%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomIn%28%29%7D%2C%20false%29%0A%0A%20%20%20%20var%20zoomInBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27x%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27y%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27width%27%2C%20%271500%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27height%27%2C%20%271400%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20zoomIn%2EappendChild%28zoomInBackground%29%3B%0A%0A%20%20%20%20var%20zoomInShape%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20zoomInShape%2EsetAttribute%28%27d%27%2C%20%27M1280%20576v128q0%2026%20%2D19%2045t%2D45%2019h%2D320v320q0%2026%20%2D19%2045t%2D45%2019h%2D128q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D320h%2D320q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D128q0%20%2D26%2019%20%2D45t45%20%2D19h320v%2D320q0%20%2D26%2019%20%2D45t45%20%2D19h128q26%200%2045%2019t19%2045v320h320q26%200%2045%2019t19%2045zM1536%201120v%2D960%20q0%20%2D119%20%2D84%2E5%20%2D203%2E5t%2D203%2E5%20%2D84%2E5h%2D960q%2D119%200%20%2D203%2E5%2084%2E5t%2D84%2E5%20203%2E5v960q0%20119%2084%2E5%20203%2E5t203%2E5%2084%2E5h960q119%200%20203%2E5%20%2D84%2E5t84%2E5%20%2D203%2E5z%27%29%3B%0A%20%20%20%20zoomInShape%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20zoomIn%2EappendChild%28zoomInShape%29%3B%0A%0A%20%20%20%20return%20zoomIn%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomReset%3A%20function%28instance%29%7B%0A%20%20%20%20%2F%2F%20reset%0A%20%20%20%20var%20resetPanZoomControl%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dreset%2Dpan%2Dzoom%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27transform%27%2C%20%27translate%285%2035%29%20scale%280%2E4%29%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2Ereset%28%29%7D%2C%20false%29%3B%0A%20%20%20%20resetPanZoomControl%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2Ereset%28%29%7D%2C%20false%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27x%27%2C%20%272%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27y%27%2C%20%272%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27width%27%2C%20%27182%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27height%27%2C%20%2758%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlBackground%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlShape1%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20resetPanZoomControlShape1%2EsetAttribute%28%27d%27%2C%20%27M33%2E051%2C20%2E632c%2D0%2E742%2D0%2E406%2D1%2E854%2D0%2E609%2D3%2E338%2D0%2E609h%2D7%2E969v9%2E281h7%2E769c1%2E543%2C0%2C2%2E701%2D0%2E188%2C3%2E473%2D0%2E562c1%2E365%2D0%2E656%2C2%2E048%2D1%2E953%2C2%2E048%2D3%2E891C35%2E032%2C22%2E757%2C34%2E372%2C21%2E351%2C33%2E051%2C20%2E632z%27%29%3B%0A%20%20%20%20resetPanZoomControlShape1%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlShape1%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlShape2%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20resetPanZoomControlShape2%2EsetAttribute%28%27d%27%2C%20%27M170%2E231%2C0%2E5H15%2E847C7%2E102%2C0%2E5%2C0%2E5%2C5%2E708%2C0%2E5%2C11%2E84v38%2E861C0%2E5%2C56%2E833%2C7%2E102%2C61%2E5%2C15%2E847%2C61%2E5h154%2E384c8%2E745%2C0%2C15%2E269%2D4%2E667%2C15%2E269%2D10%2E798V11%2E84C185%2E5%2C5%2E708%2C178%2E976%2C0%2E5%2C170%2E231%2C0%2E5z%20M42%2E837%2C48%2E569h%2D7%2E969c%2D0%2E219%2D0%2E766%2D0%2E375%2D1%2E383%2D0%2E469%2D1%2E852c%2D0%2E188%2D0%2E969%2D0%2E289%2D1%2E961%2D0%2E305%2D2%2E977l%2D0%2E047%2D3%2E211c%2D0%2E03%2D2%2E203%2D0%2E41%2D3%2E672%2D1%2E142%2D4%2E406c%2D0%2E732%2D0%2E734%2D2%2E103%2D1%2E102%2D4%2E113%2D1%2E102h%2D7%2E05v13%2E547h%2D7%2E055V14%2E022h16%2E524c2%2E361%2C0%2E047%2C4%2E178%2C0%2E344%2C5%2E45%2C0%2E891c1%2E272%2C0%2E547%2C2%2E351%2C1%2E352%2C3%2E234%2C2%2E414c0%2E731%2C0%2E875%2C1%2E31%2C1%2E844%2C1%2E737%2C2%2E906s0%2E64%2C2%2E273%2C0%2E64%2C3%2E633c0%2C1%2E641%2D0%2E414%2C3%2E254%2D1%2E242%2C4%2E84s%2D2%2E195%2C2%2E707%2D4%2E102%2C3%2E363c1%2E594%2C0%2E641%2C2%2E723%2C1%2E551%2C3%2E387%2C2%2E73s0%2E996%2C2%2E98%2C0%2E996%2C5%2E402v2%2E32c0%2C1%2E578%2C0%2E063%2C2%2E648%2C0%2E19%2C3%2E211c0%2E19%2C0%2E891%2C0%2E635%2C1%2E547%2C1%2E333%2C1%2E969V48%2E569z%20M75%2E579%2C48%2E569h%2D26%2E18V14%2E022h25%2E336v6%2E117H56%2E454v7%2E336h16%2E781v6H56%2E454v8%2E883h19%2E125V48%2E569z%20M104%2E497%2C46%2E331c%2D2%2E44%2C2%2E086%2D5%2E887%2C3%2E129%2D10%2E34%2C3%2E129c%2D4%2E548%2C0%2D8%2E125%2D1%2E027%2D10%2E731%2D3%2E082s%2D3%2E909%2D4%2E879%2D3%2E909%2D8%2E473h6%2E891c0%2E224%2C1%2E578%2C0%2E662%2C2%2E758%2C1%2E316%2C3%2E539c1%2E196%2C1%2E422%2C3%2E246%2C2%2E133%2C6%2E15%2C2%2E133c1%2E739%2C0%2C3%2E151%2D0%2E188%2C4%2E236%2D0%2E562c2%2E058%2D0%2E719%2C3%2E087%2D2%2E055%2C3%2E087%2D4%2E008c0%2D1%2E141%2D0%2E504%2D2%2E023%2D1%2E512%2D2%2E648c%2D1%2E008%2D0%2E609%2D2%2E607%2D1%2E148%2D4%2E796%2D1%2E617l%2D3%2E74%2D0%2E82c%2D3%2E676%2D0%2E812%2D6%2E201%2D1%2E695%2D7%2E576%2D2%2E648c%2D2%2E328%2D1%2E594%2D3%2E492%2D4%2E086%2D3%2E492%2D7%2E477c0%2D3%2E094%2C1%2E139%2D5%2E664%2C3%2E417%2D7%2E711s5%2E623%2D3%2E07%2C10%2E036%2D3%2E07c3%2E685%2C0%2C6%2E829%2C0%2E965%2C9%2E431%2C2%2E895c2%2E602%2C1%2E93%2C3%2E966%2C4%2E73%2C4%2E093%2C8%2E402h%2D6%2E938c%2D0%2E128%2D2%2E078%2D1%2E057%2D3%2E555%2D2%2E787%2D4%2E43c%2D1%2E154%2D0%2E578%2D2%2E587%2D0%2E867%2D4%2E301%2D0%2E867c%2D1%2E907%2C0%2D3%2E428%2C0%2E375%2D4%2E565%2C1%2E125c%2D1%2E138%2C0%2E75%2D1%2E706%2C1%2E797%2D1%2E706%2C3%2E141c0%2C1%2E234%2C0%2E561%2C2%2E156%2C1%2E682%2C2%2E766c0%2E721%2C0%2E406%2C2%2E25%2C0%2E883%2C4%2E589%2C1%2E43l6%2E063%2C1%2E43c2%2E657%2C0%2E625%2C4%2E648%2C1%2E461%2C5%2E975%2C2%2E508c2%2E059%2C1%2E625%2C3%2E089%2C3%2E977%2C3%2E089%2C7%2E055C108%2E157%2C41%2E624%2C106%2E937%2C44%2E245%2C104%2E497%2C46%2E331z%20M139%2E61%2C48%2E569h%2D26%2E18V14%2E022h25%2E336v6%2E117h%2D18%2E281v7%2E336h16%2E781v6h%2D16%2E781v8%2E883h19%2E125V48%2E569z%20M170%2E337%2C20%2E14h%2D10%2E336v28%2E43h%2D7%2E266V20%2E14h%2D10%2E383v%2D6%2E117h27%2E984V20%2E14z%27%29%3B%0A%20%20%20%20resetPanZoomControlShape2%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlShape2%29%3B%0A%0A%20%20%20%20return%20resetPanZoomControl%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomOut%3A%20function%28instance%29%7B%0A%20%20%20%20%2F%2F%20zoom%20out%0A%20%20%20%20var%20zoomOut%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dzoom%2Dout%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27transform%27%2C%20%27translate%2830%2E5%2070%29%20scale%280%2E015%29%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20zoomOut%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomOut%28%29%7D%2C%20false%29%3B%0A%20%20%20%20zoomOut%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomOut%28%29%7D%2C%20false%29%3B%0A%0A%20%20%20%20var%20zoomOutBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27x%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27y%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27width%27%2C%20%271500%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27height%27%2C%20%271400%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20zoomOut%2EappendChild%28zoomOutBackground%29%3B%0A%0A%20%20%20%20var%20zoomOutShape%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20zoomOutShape%2EsetAttribute%28%27d%27%2C%20%27M1280%20576v128q0%2026%20%2D19%2045t%2D45%2019h%2D896q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D128q0%20%2D26%2019%20%2D45t45%20%2D19h896q26%200%2045%2019t19%2045zM1536%201120v%2D960q0%20%2D119%20%2D84%2E5%20%2D203%2E5t%2D203%2E5%20%2D84%2E5h%2D960q%2D119%200%20%2D203%2E5%2084%2E5t%2D84%2E5%20203%2E5v960q0%20119%2084%2E5%20203%2E5t203%2E5%2084%2E5h960q119%200%20203%2E5%20%2D84%2E5%20t84%2E5%20%2D203%2E5z%27%29%3B%0A%20%20%20%20zoomOutShape%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20zoomOut%2EappendChild%28zoomOutShape%29%3B%0A%0A%20%20%20%20return%20zoomOut%0A%20%20%7D%0A%0A%2C%20disable%3A%20function%28instance%29%20%7B%0A%20%20%20%20if%20%28instance%2EcontrolIcons%29%20%7B%0A%20%20%20%20%20%20instance%2EcontrolIcons%2EparentNode%2EremoveChild%28instance%2EcontrolIcons%29%0A%20%20%20%20%20%20instance%2EcontrolIcons%20%3D%20null%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dutilities%22%3A6%7D%5D%2C4%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%0A%20%20%2C%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%20%20%3B%0A%0Avar%20ShadowViewport%20%3D%20function%28viewport%2C%20options%29%7B%0A%20%20this%2Einit%28viewport%2C%20options%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Initialization%0A%20%2A%0A%20%2A%20%40param%20%20%7BSVGElement%7D%20viewport%0A%20%2A%20%40param%20%20%7BObject%7D%20options%0A%20%2A%2F%0AShadowViewport%2Eprototype%2Einit%20%3D%20function%28viewport%2C%20options%29%20%7B%0A%20%20%2F%2F%20DOM%20Elements%0A%20%20this%2Eviewport%20%3D%20viewport%0A%20%20this%2Eoptions%20%3D%20options%0A%0A%20%20%2F%2F%20State%20cache%0A%20%20this%2EoriginalState%20%3D%20%7Bzoom%3A%201%2C%20x%3A%200%2C%20y%3A%200%7D%0A%20%20this%2EactiveState%20%3D%20%7Bzoom%3A%201%2C%20x%3A%200%2C%20y%3A%200%7D%0A%0A%20%20this%2EupdateCTMCached%20%3D%20Utils%2Eproxy%28this%2EupdateCTM%2C%20this%29%0A%0A%20%20%2F%2F%20Create%20a%20custom%20requestAnimationFrame%20taking%20in%20account%20refreshRate%0A%20%20this%2ErequestAnimationFrame%20%3D%20Utils%2EcreateRequestAnimationFrame%28this%2Eoptions%2ErefreshRate%29%0A%0A%20%20%2F%2F%20ViewBox%0A%20%20this%2EviewBox%20%3D%20%7Bx%3A%200%2C%20y%3A%200%2C%20width%3A%200%2C%20height%3A%200%7D%0A%20%20this%2EcacheViewBox%28%29%0A%0A%20%20%2F%2F%20Process%20CTM%0A%20%20this%2EprocessCTM%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Cache%20initial%20viewBox%20value%0A%20%2A%20If%20no%20viewBox%20is%20defined%2C%20then%20use%20viewport%20size%2Fposition%20instead%20for%20viewBox%20values%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EcacheViewBox%20%3D%20function%28%29%20%7B%0A%20%20var%20svgViewBox%20%3D%20this%2Eoptions%2Esvg%2EgetAttribute%28%27viewBox%27%29%0A%0A%20%20if%20%28svgViewBox%29%20%7B%0A%20%20%20%20var%20viewBoxValues%20%3D%20svgViewBox%2Esplit%28%27%20%27%29%2Emap%28parseFloat%29%0A%0A%20%20%20%20%2F%2F%20Cache%20viewbox%20x%20and%20y%20offset%0A%20%20%20%20this%2EviewBox%2Ex%20%3D%20viewBoxValues%5B0%5D%0A%20%20%20%20this%2EviewBox%2Ey%20%3D%20viewBoxValues%5B1%5D%0A%20%20%20%20this%2EviewBox%2Ewidth%20%3D%20viewBoxValues%5B2%5D%0A%20%20%20%20this%2EviewBox%2Eheight%20%3D%20viewBoxValues%5B3%5D%0A%0A%20%20%20%20var%20zoom%20%3D%20Math%2Emin%28this%2Eoptions%2Ewidth%20%2F%20this%2EviewBox%2Ewidth%2C%20this%2Eoptions%2Eheight%20%2F%20this%2EviewBox%2Eheight%29%0A%0A%20%20%20%20%2F%2F%20Update%20active%20state%0A%20%20%20%20this%2EactiveState%2Ezoom%20%3D%20zoom%0A%20%20%20%20this%2EactiveState%2Ex%20%3D%20%28this%2Eoptions%2Ewidth%20%2D%20this%2EviewBox%2Ewidth%20%2A%20zoom%29%20%2F%202%0A%20%20%20%20this%2EactiveState%2Ey%20%3D%20%28this%2Eoptions%2Eheight%20%2D%20this%2EviewBox%2Eheight%20%2A%20zoom%29%20%2F%202%0A%0A%20%20%20%20%2F%2F%20Force%20updating%20CTM%0A%20%20%20%20this%2EupdateCTMOnNextFrame%28%29%0A%0A%20%20%20%20this%2Eoptions%2Esvg%2EremoveAttribute%28%27viewBox%27%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20bBox%20%3D%20this%2Eviewport%2EgetBBox%28%29%3B%0A%0A%20%20%20%20%2F%2F%20Cache%20viewbox%20sizes%0A%20%20%20%20this%2EviewBox%2Ex%20%3D%20bBox%2Ex%3B%0A%20%20%20%20this%2EviewBox%2Ey%20%3D%20bBox%2Ey%3B%0A%20%20%20%20this%2EviewBox%2Ewidth%20%3D%20bBox%2Ewidth%0A%20%20%20%20this%2EviewBox%2Eheight%20%3D%20bBox%2Eheight%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Recalculate%20viewport%20sizes%20and%20update%20viewBox%20cache%0A%20%2A%2F%0AShadowViewport%2Eprototype%2ErecacheViewBox%20%3D%20function%28%29%20%7B%0A%20%20var%20boundingClientRect%20%3D%20this%2Eviewport%2EgetBoundingClientRect%28%29%0A%20%20%20%20%2C%20viewBoxWidth%20%3D%20boundingClientRect%2Ewidth%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%2C%20viewBoxHeight%20%3D%20boundingClientRect%2Eheight%20%2F%20this%2EgetZoom%28%29%0A%0A%20%20%2F%2F%20Cache%20viewbox%0A%20%20this%2EviewBox%2Ex%20%3D%200%0A%20%20this%2EviewBox%2Ey%20%3D%200%0A%20%20this%2EviewBox%2Ewidth%20%3D%20viewBoxWidth%0A%20%20this%2EviewBox%2Eheight%20%3D%20viewBoxHeight%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Returns%20a%20viewbox%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20viewbox%20object%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetViewBox%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EviewBox%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20initial%20zoom%20and%20pan%20values%2E%20Save%20them%20into%20originalState%0A%20%2A%20Parses%20viewBox%20attribute%20to%20alter%20initial%20sizes%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EprocessCTM%20%3D%20function%28%29%20%7B%0A%20%20var%20newCTM%20%3D%20this%2EgetCTM%28%29%0A%0A%20%20if%20%28this%2Eoptions%2Efit%29%20%7B%0A%20%20%20%20var%20newScale%20%3D%20Math%2Emin%28this%2Eoptions%2Ewidth%2F%28this%2EviewBox%2Ewidth%20%2D%20this%2EviewBox%2Ex%29%2C%20this%2Eoptions%2Eheight%2F%28this%2EviewBox%2Eheight%20%2D%20this%2EviewBox%2Ey%29%29%3B%0A%0A%20%20%20%20newCTM%2Ea%20%3D%20newScale%3B%20%2F%2Fx%2Dscale%0A%20%20%20%20newCTM%2Ed%20%3D%20newScale%3B%20%2F%2Fy%2Dscale%0A%20%20%20%20newCTM%2Ee%20%3D%20%2Dthis%2EviewBox%2Ex%20%2A%20newScale%3B%20%2F%2Fx%2Dtransform%0A%20%20%20%20newCTM%2Ef%20%3D%20%2Dthis%2EviewBox%2Ey%20%2A%20newScale%3B%20%2F%2Fy%2Dtransform%0A%20%20%7D%0A%0A%20%20if%20%28this%2Eoptions%2Ecenter%29%20%7B%0A%20%20%20%20var%20offsetX%20%3D%20%28this%2Eoptions%2Ewidth%20%2D%20%28this%2EviewBox%2Ewidth%20%2B%20this%2EviewBox%2Ex%29%20%2A%20newCTM%2Ea%29%20%2A%200%2E5%0A%20%20%20%20%20%20%2C%20offsetY%20%3D%20%28this%2Eoptions%2Eheight%20%2D%20%28this%2EviewBox%2Eheight%20%2B%20this%2EviewBox%2Ey%29%20%2A%20newCTM%2Ea%29%20%2A%200%2E5%0A%0A%20%20%20%20newCTM%2Ee%20%3D%20offsetX%0A%20%20%20%20newCTM%2Ef%20%3D%20offsetY%0A%20%20%7D%0A%0A%20%20%2F%2F%20Cache%20initial%20values%2E%20Based%20on%20activeState%20and%20fix%2Bcenter%20opitons%0A%20%20this%2EoriginalState%2Ezoom%20%3D%20newCTM%2Ea%0A%20%20this%2EoriginalState%2Ex%20%3D%20newCTM%2Ee%0A%20%20this%2EoriginalState%2Ey%20%3D%20newCTM%2Ef%0A%0A%20%20%2F%2F%20Update%20viewport%20CTM%20and%20cache%20zoom%20and%20pan%0A%20%20this%2EsetCTM%28newCTM%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20originalState%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetOriginalState%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EoriginalState%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20actualState%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetState%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EactiveState%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%20for%20pubilc%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetRelativeZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%20%2F%20this%2EoriginalState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Compute%20zoom%20scale%20for%20pubilc%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EcomputeRelativeZoom%20%3D%20function%28scale%29%20%7B%0A%20%20return%20scale%20%2F%20this%2EoriginalState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20pan%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetPan%20%3D%20function%28%29%20%7B%0A%20%20return%20%7Bx%3A%20this%2EactiveState%2Ex%2C%20y%3A%20this%2EactiveState%2Ey%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20cached%20viewport%20CTM%20value%20that%20can%20be%20safely%20modified%0A%20%2A%0A%20%2A%20%40return%20%7BSVGMatrix%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetCTM%20%3D%20function%28%29%20%7B%0A%20%20var%20safeCTM%20%3D%20this%2Eoptions%2Esvg%2EcreateSVGMatrix%28%29%0A%0A%20%20%2F%2F%20Copy%20values%20manually%20as%20in%20FF%20they%20are%20not%20itterable%0A%20%20safeCTM%2Ea%20%3D%20this%2EactiveState%2Ezoom%0A%20%20safeCTM%2Eb%20%3D%200%0A%20%20safeCTM%2Ec%20%3D%200%0A%20%20safeCTM%2Ed%20%3D%20this%2EactiveState%2Ezoom%0A%20%20safeCTM%2Ee%20%3D%20this%2EactiveState%2Ex%0A%20%20safeCTM%2Ef%20%3D%20this%2EactiveState%2Ey%0A%0A%20%20return%20safeCTM%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20a%20new%20CTM%0A%20%2A%0A%20%2A%20%40param%20%7BSVGMatrix%7D%20newCTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EsetCTM%20%3D%20function%28newCTM%29%20%7B%0A%20%20var%20willZoom%20%3D%20this%2EisZoomDifferent%28newCTM%29%0A%20%20%20%20%2C%20willPan%20%3D%20this%2EisPanDifferent%28newCTM%29%0A%0A%20%20if%20%28willZoom%20%7C%7C%20willPan%29%20%7B%0A%20%20%20%20%2F%2F%20Before%20zoom%0A%20%20%20%20if%20%28willZoom%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20returns%20false%20then%20cancel%20zooming%0A%20%20%20%20%20%20if%20%28this%2Eoptions%2EbeforeZoom%28this%2EgetRelativeZoom%28%29%2C%20this%2EcomputeRelativeZoom%28newCTM%2Ea%29%29%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20newCTM%2Ea%20%3D%20newCTM%2Ed%20%3D%20this%2EactiveState%2Ezoom%0A%20%20%20%20%20%20%20%20willZoom%20%3D%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Before%20pan%0A%20%20%20%20if%20%28willPan%29%20%7B%0A%20%20%20%20%20%20var%20preventPan%20%3D%20this%2Eoptions%2EbeforePan%28this%2EgetPan%28%29%2C%20%7Bx%3A%20newCTM%2Ee%2C%20y%3A%20newCTM%2Ef%7D%29%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20prevent%20pan%20is%20an%20object%0A%20%20%20%20%20%20%20%20%2C%20preventPanX%20%3D%20false%0A%20%20%20%20%20%20%20%20%2C%20preventPanY%20%3D%20false%0A%0A%20%20%20%20%20%20%2F%2F%20If%20prevent%20pan%20is%20Boolean%20false%0A%20%20%20%20%20%20if%20%28preventPan%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Set%20x%20and%20y%20same%20as%20before%0A%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20this%2EgetPan%28%29%2Ex%0A%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20this%2EgetPan%28%29%2Ey%0A%0A%20%20%20%20%20%20%20%20preventPanX%20%3D%20preventPanY%20%3D%20true%0A%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisObject%28preventPan%29%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20for%20X%20axes%20attribute%0A%20%20%20%20%20%20%20%20if%20%28preventPan%2Ex%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Prevent%20panning%20on%20x%20axes%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20this%2EgetPan%28%29%2Ex%0A%20%20%20%20%20%20%20%20%20%20preventPanX%20%3D%20true%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisNumber%28preventPan%2Ex%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20a%20custom%20pan%20value%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20preventPan%2Ex%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20for%20Y%20axes%20attribute%0A%20%20%20%20%20%20%20%20if%20%28preventPan%2Ey%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Prevent%20panning%20on%20x%20axes%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20this%2EgetPan%28%29%2Ey%0A%20%20%20%20%20%20%20%20%20%20preventPanY%20%3D%20true%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisNumber%28preventPan%2Ey%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20a%20custom%20pan%20value%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20preventPan%2Ey%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Update%20willPan%20flag%0A%20%20%20%20%20%20if%20%28preventPanX%20%26%26%20preventPanY%29%20%7B%0A%20%20%20%20%20%20%20%20willPan%20%3D%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Check%20again%20if%20should%20zoom%20or%20pan%0A%20%20%20%20if%20%28willZoom%20%7C%7C%20willPan%29%20%7B%0A%20%20%20%20%20%20this%2EupdateCache%28newCTM%29%0A%0A%20%20%20%20%20%20this%2EupdateCTMOnNextFrame%28%29%0A%0A%20%20%20%20%20%20%2F%2F%20After%20callbacks%0A%20%20%20%20%20%20if%20%28willZoom%29%20%7Bthis%2Eoptions%2EonZoom%28this%2EgetRelativeZoom%28%29%29%7D%0A%20%20%20%20%20%20if%20%28willPan%29%20%7Bthis%2Eoptions%2EonPan%28this%2EgetPan%28%29%29%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0AShadowViewport%2Eprototype%2EisZoomDifferent%20%3D%20function%28newCTM%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%20%21%3D%3D%20newCTM%2Ea%0A%7D%0A%0AShadowViewport%2Eprototype%2EisPanDifferent%20%3D%20function%28newCTM%29%20%7B%0A%20%20return%20this%2EactiveState%2Ex%20%21%3D%3D%20newCTM%2Ee%20%7C%7C%20this%2EactiveState%2Ey%20%21%3D%3D%20newCTM%2Ef%0A%7D%0A%0A%0A%2F%2A%2A%0A%20%2A%20Update%20cached%20CTM%20and%20active%20state%0A%20%2A%0A%20%2A%20%40param%20%7BSVGMatrix%7D%20newCTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCache%20%3D%20function%28newCTM%29%20%7B%0A%20%20this%2EactiveState%2Ezoom%20%3D%20newCTM%2Ea%0A%20%20this%2EactiveState%2Ex%20%3D%20newCTM%2Ee%0A%20%20this%2EactiveState%2Ey%20%3D%20newCTM%2Ef%0A%7D%0A%0AShadowViewport%2Eprototype%2EpendingUpdate%20%3D%20false%0A%0A%2F%2A%2A%0A%20%2A%20Place%20a%20request%20to%20update%20CTM%20on%20next%20Frame%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCTMOnNextFrame%20%3D%20function%28%29%20%7B%0A%20%20if%20%28%21this%2EpendingUpdate%29%20%7B%0A%20%20%20%20%2F%2F%20Lock%0A%20%20%20%20this%2EpendingUpdate%20%3D%20true%0A%0A%20%20%20%20%2F%2F%20Throttle%20next%20update%0A%20%20%20%20this%2ErequestAnimationFrame%2Ecall%28window%2C%20this%2EupdateCTMCached%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Update%20viewport%20CTM%20with%20cached%20CTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCTM%20%3D%20function%28%29%20%7B%0A%20%20%2F%2F%20Updates%20SVG%20element%0A%20%20SvgUtils%2EsetCTM%28this%2Eviewport%2C%20this%2EgetCTM%28%29%2C%20this%2Edefs%29%0A%0A%20%20%2F%2F%20Free%20the%20lock%0A%20%20this%2EpendingUpdate%20%3D%20false%0A%7D%0A%0Amodule%2Eexports%20%3D%20function%28viewport%2C%20options%29%7B%0A%20%20return%20new%20ShadowViewport%28viewport%2C%20options%29%0A%7D%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dutilities%22%3A6%2C%22%2E%2Futilities%22%3A7%7D%5D%2C5%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20Wheel%20%3D%20require%28%27uniwheel%27%29%0A%2C%20ControlIcons%20%3D%20require%28%27%2E%2Fcontrol%2Dicons%27%29%0A%2C%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%2C%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%0A%2C%20ShadowViewport%20%3D%20require%28%27%2E%2Fshadow%2Dviewport%27%29%0A%0Avar%20SvgPanZoom%20%3D%20function%28svg%2C%20options%29%20%7B%0A%20%20this%2Einit%28svg%2C%20options%29%0A%7D%0A%0Avar%20optionsDefaults%20%3D%20%7B%0A%20%20viewportSelector%3A%20%27%2Esvg%2Dpan%2Dzoom%5Fviewport%27%20%2F%2F%20Viewport%20selector%2E%20Can%20be%20querySelector%20string%20or%20SVGElement%0A%2C%20panEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20panning%20%28default%20enabled%29%0A%2C%20controlIconsEnabled%3A%20false%20%2F%2F%20insert%20icons%20to%20give%20user%20an%20option%20in%20addition%20to%20mouse%20events%20to%20control%20pan%2Fzoom%20%28default%20disabled%29%0A%2C%20zoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20%28default%20enabled%29%0A%2C%20dblClickZoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20by%20double%20clicking%20%28default%20enabled%29%0A%2C%20mouseWheelZoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20by%20mouse%20wheel%20%28default%20enabled%29%0A%2C%20zoomScaleSensitivity%3A%200%2E2%20%2F%2F%20Zoom%20sensitivity%0A%2C%20minZoom%3A%200%2E5%20%2F%2F%20Minimum%20Zoom%20level%0A%2C%20maxZoom%3A%2010%20%2F%2F%20Maximum%20Zoom%20level%0A%2C%20fit%3A%20true%20%2F%2F%20enable%20or%20disable%20viewport%20fit%20in%20SVG%20%28default%20true%29%0A%2C%20center%3A%20true%20%2F%2F%20enable%20or%20disable%20viewport%20centering%20in%20SVG%20%28default%20true%29%0A%2C%20refreshRate%3A%20%27auto%27%20%2F%2F%20Maximum%20number%20of%20frames%20per%20second%20%28altering%20SVG%27s%20viewport%29%0A%2C%20beforeZoom%3A%20null%0A%2C%20onZoom%3A%20null%0A%2C%20beforePan%3A%20null%0A%2C%20onPan%3A%20null%0A%2C%20customEventsHandler%3A%20null%0A%7D%0A%0ASvgPanZoom%2Eprototype%2Einit%20%3D%20function%28svg%2C%20options%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20this%2Esvg%20%3D%20svg%0A%20%20this%2Edefs%20%3D%20svg%2EquerySelector%28%27defs%27%29%0A%0A%20%20%2F%2F%20Add%20default%20attributes%20to%20SVG%0A%20%20SvgUtils%2EsetupSvgAttributes%28this%2Esvg%29%0A%0A%20%20%2F%2F%20Set%20options%0A%20%20this%2Eoptions%20%3D%20Utils%2Eextend%28Utils%2Eextend%28%7B%7D%2C%20optionsDefaults%29%2C%20options%29%0A%0A%20%20%2F%2F%20Set%20default%20state%0A%20%20this%2Estate%20%3D%20%27none%27%0A%0A%20%20%2F%2F%20Get%20dimensions%0A%20%20var%20boundingClientRectNormalized%20%3D%20SvgUtils%2EgetBoundingClientRectNormalized%28svg%29%0A%20%20this%2Ewidth%20%3D%20boundingClientRectNormalized%2Ewidth%0A%20%20this%2Eheight%20%3D%20boundingClientRectNormalized%2Eheight%0A%0A%20%20%2F%2F%20Init%20shadow%20viewport%0A%20%20this%2Eviewport%20%3D%20ShadowViewport%28SvgUtils%2EgetOrCreateViewport%28this%2Esvg%2C%20this%2Eoptions%2EviewportSelector%29%2C%20%7B%0A%20%20%20%20svg%3A%20this%2Esvg%0A%20%20%2C%20width%3A%20this%2Ewidth%0A%20%20%2C%20height%3A%20this%2Eheight%0A%20%20%2C%20fit%3A%20this%2Eoptions%2Efit%0A%20%20%2C%20center%3A%20this%2Eoptions%2Ecenter%0A%20%20%2C%20refreshRate%3A%20this%2Eoptions%2ErefreshRate%0A%20%20%2F%2F%20Put%20callbacks%20into%20functions%20as%20they%20can%20change%20through%20time%0A%20%20%2C%20beforeZoom%3A%20function%28oldScale%2C%20newScale%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EbeforeZoom%29%20%7Breturn%20that%2Eoptions%2EbeforeZoom%28oldScale%2C%20newScale%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20onZoom%3A%20function%28scale%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EonZoom%29%20%7Breturn%20that%2Eoptions%2EonZoom%28scale%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20beforePan%3A%20function%28oldPoint%2C%20newPoint%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EbeforePan%29%20%7Breturn%20that%2Eoptions%2EbeforePan%28oldPoint%2C%20newPoint%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20onPan%3A%20function%28point%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EonPan%29%20%7Breturn%20that%2Eoptions%2EonPan%28point%29%7D%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%0A%20%20%2F%2F%20Wrap%20callbacks%20into%20public%20API%20context%0A%20%20var%20publicInstance%20%3D%20this%2EgetPublicInstance%28%29%0A%20%20publicInstance%2EsetBeforeZoom%28this%2Eoptions%2EbeforeZoom%29%0A%20%20publicInstance%2EsetOnZoom%28this%2Eoptions%2EonZoom%29%0A%20%20publicInstance%2EsetBeforePan%28this%2Eoptions%2EbeforePan%29%0A%20%20publicInstance%2EsetOnPan%28this%2Eoptions%2EonPan%29%0A%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20ControlIcons%2Eenable%28this%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Init%20events%20handlers%0A%20%20this%2EsetupHandlers%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Register%20event%20handlers%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EsetupHandlers%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%20%20%20%20%2C%20prevEvt%20%3D%20null%20%2F%2F%20use%20for%20touchstart%20event%20to%20detect%20double%20tap%0A%20%20%20%20%3B%0A%0A%20%20this%2EeventListeners%20%3D%20%7B%0A%20%20%20%20%2F%2F%20Mouse%20down%20group%0A%20%20%20%20mousedown%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseDown%28evt%2C%20null%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchstart%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20var%20result%20%3D%20that%2EhandleMouseDown%28evt%2C%20prevEvt%29%3B%0A%20%20%20%20%20%20prevEvt%20%3D%20evt%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20up%20group%0A%20%20%2C%20mouseup%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchend%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20move%20group%0A%20%20%2C%20mousemove%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseMove%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchmove%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseMove%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20leave%20group%0A%20%20%2C%20mouseleave%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchleave%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchcancel%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Init%20custom%20events%20handler%20if%20available%0A%20%20if%20%28this%2Eoptions%2EcustomEventsHandler%20%21%3D%20null%29%20%7B%20%2F%2F%20jshint%20ignore%3Aline%0A%20%20%20%20this%2Eoptions%2EcustomEventsHandler%2Einit%28%7B%0A%20%20%20%20%20%20svgElement%3A%20this%2Esvg%0A%20%20%20%20%2C%20instance%3A%20this%2EgetPublicInstance%28%29%0A%20%20%20%20%7D%29%0A%0A%20%20%20%20%2F%2F%20Custom%20event%20handler%20may%20halt%20builtin%20listeners%0A%20%20%20%20var%20haltEventListeners%20%3D%20this%2Eoptions%2EcustomEventsHandler%2EhaltEventListeners%0A%20%20%20%20if%20%28haltEventListeners%20%26%26%20haltEventListeners%2Elength%29%20%7B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%20haltEventListeners%2Elength%20%2D%201%3B%20i%20%3E%3D%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this%2EeventListeners%2EhasOwnProperty%28haltEventListeners%5Bi%5D%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20delete%20this%2EeventListeners%5BhaltEventListeners%5Bi%5D%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Bind%20eventListeners%0A%20%20for%20%28var%20event%20in%20this%2EeventListeners%29%20%7B%0A%20%20%20%20this%2Esvg%2EaddEventListener%28event%2C%20this%2EeventListeners%5Bevent%5D%2C%20false%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Zoom%20using%20mouse%20wheel%0A%20%20if%20%28this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20false%20%2F%2F%20set%20to%20false%20as%20enable%20will%20set%20it%20back%20to%20true%0A%20%20%20%20this%2EenableMouseWheelZoom%28%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Enable%20ability%20to%20zoom%20using%20mouse%20wheel%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EenableMouseWheelZoom%20%3D%20function%28%29%20%7B%0A%20%20if%20%28%21this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%0A%0A%20%20%20%20%2F%2F%20Mouse%20wheel%20listener%0A%20%20%20%20this%2EwheelListener%20%3D%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseWheel%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Bind%20wheelListener%0A%20%20%20%20Wheel%2Eon%28this%2Esvg%2C%20this%2EwheelListener%2C%20false%29%0A%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20true%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Disable%20ability%20to%20zoom%20using%20mouse%20wheel%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EdisableMouseWheelZoom%20%3D%20function%28%29%20%7B%0A%20%20if%20%28this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20Wheel%2Eoff%28this%2Esvg%2C%20this%2EwheelListener%2C%20false%29%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20false%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20wheel%20event%0A%20%2A%0A%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseWheel%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28%21this%2Eoptions%2EzoomEnabled%20%7C%7C%20this%2Estate%20%21%3D%3D%20%27none%27%29%20%7B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%3B%0A%20%20%7D%0A%0A%20%20var%20delta%20%3D%200%0A%0A%20%20if%20%28%27deltaMode%27%20in%20evt%20%26%26%20evt%2EdeltaMode%20%3D%3D%3D%200%29%20%7B%0A%20%20%20%20%2F%2F%20Make%20empirical%20adjustments%20for%20browsers%20that%20give%20deltaY%20in%20pixels%20%28deltaMode%3D0%29%0A%0A%20%20%20%20if%20%28evt%2EwheelDelta%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Normalizer%20for%20Chrome%0A%20%20%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%20Math%2Eabs%28evt%2EwheelDelta%2F3%29%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%2F%2F%20Others%2E%20Possibly%20tablets%3F%20Use%20a%20value%20just%20in%20case%0A%20%20%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%20120%0A%20%20%20%20%7D%0A%20%20%7D%20else%20if%20%28%27mozPressure%27%20in%20evt%29%20%7B%0A%20%20%20%20%2F%2F%20Normalizer%20for%20newer%20Firefox%0A%20%20%20%20%2F%2F%20NOTE%3A%20May%20need%20to%20change%20detection%20at%20some%20point%20if%20mozPressure%20disappears%2E%0A%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%203%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Others%20should%20be%20reasonably%20normalized%20by%20the%20mousewheel%20code%20at%20the%20end%20of%20the%20file%2E%0A%20%20%20%20delta%20%3D%20evt%2EdeltaY%3B%0A%20%20%7D%0A%0A%20%20var%20inversedScreenCTM%20%3D%20this%2Esvg%2EgetScreenCTM%28%29%2Einverse%28%29%0A%20%20%20%20%2C%20relativeMousePoint%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28inversedScreenCTM%29%0A%20%20%20%20%2C%20zoom%20%3D%20Math%2Epow%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%2C%20%28%2D1%29%20%2A%20delta%29%3B%20%2F%2F%20multiplying%20by%20neg%2E%201%20so%20as%20to%20make%20zoom%20in%2Fout%20behavior%20match%20Google%20maps%20behavior%0A%0A%20%20this%2EzoomAtPoint%28zoom%2C%20relativeMousePoint%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20in%20at%20a%20SVG%20point%0A%20%2A%0A%20%2A%20%40param%20%20%7BSVGPoint%7D%20point%0A%20%2A%20%40param%20%20%7BFloat%7D%20zoomScale%20%20%20%20Number%20representing%20how%20much%20to%20zoom%0A%20%2A%20%40param%20%20%7BBoolean%7D%20zoomAbsolute%20Default%20false%2E%20If%20true%2C%20zoomScale%20is%20treated%20as%20an%20absolute%20value%2E%0A%20%2A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Otherwise%2C%20zoomScale%20is%20treated%20as%20a%20multiplied%20%28e%2Eg%2E%201%2E10%20would%20zoom%20in%2010%25%29%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EzoomAtPoint%20%3D%20function%28zoomScale%2C%20point%2C%20zoomAbsolute%29%20%7B%0A%20%20var%20originalState%20%3D%20this%2Eviewport%2EgetOriginalState%28%29%0A%0A%20%20if%20%28%21zoomAbsolute%29%20%7B%0A%20%20%20%20%2F%2F%20Fit%20zoomScale%20in%20set%20bounds%0A%20%20%20%20if%20%28this%2EgetZoom%28%29%20%2A%20zoomScale%20%3C%20this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%29%20%7B%0A%20%20%20%20%20%20zoomScale%20%3D%20%28this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%29%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%7D%20else%20if%20%28this%2EgetZoom%28%29%20%2A%20zoomScale%20%3E%20this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%29%20%7B%0A%20%20%20%20%20%20zoomScale%20%3D%20%28this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%29%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%7D%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Fit%20zoomScale%20in%20set%20bounds%0A%20%20%20%20zoomScale%20%3D%20Math%2Emax%28this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%2C%20Math%2Emin%28this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%2C%20zoomScale%29%29%0A%20%20%20%20%2F%2F%20Find%20relative%20scale%20to%20achieve%20desired%20scale%0A%20%20%20%20zoomScale%20%3D%20zoomScale%2Fthis%2EgetZoom%28%29%0A%20%20%7D%0A%0A%20%20var%20oldCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20%20%20%2C%20relativePoint%20%3D%20point%2EmatrixTransform%28oldCTM%2Einverse%28%29%29%0A%20%20%20%20%2C%20modifier%20%3D%20this%2Esvg%2EcreateSVGMatrix%28%29%2Etranslate%28relativePoint%2Ex%2C%20relativePoint%2Ey%29%2Escale%28zoomScale%29%2Etranslate%28%2DrelativePoint%2Ex%2C%20%2DrelativePoint%2Ey%29%0A%20%20%20%20%2C%20newCTM%20%3D%20oldCTM%2Emultiply%28modifier%29%0A%0A%20%20if%20%28newCTM%2Ea%20%21%3D%3D%20oldCTM%2Ea%29%20%7B%0A%20%20%20%20this%2Eviewport%2EsetCTM%28newCTM%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20at%20center%20point%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ezoom%20%3D%20function%28scale%2C%20absolute%29%20%7B%0A%20%20this%2EzoomAtPoint%28scale%2C%20SvgUtils%2EgetSvgCenterPoint%28this%2Esvg%2C%20this%2Ewidth%2C%20this%2Eheight%29%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20used%20by%20public%20instance%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpublicZoom%20%3D%20function%28scale%2C%20absolute%29%20%7B%0A%20%20if%20%28absolute%29%20%7B%0A%20%20%20%20scale%20%3D%20this%2EcomputeFromRelativeZoom%28scale%29%0A%20%20%7D%0A%0A%20%20this%2Ezoom%28scale%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20at%20point%20used%20by%20public%20instance%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BSVGPoint%7CObject%7D%20point%20%20%20%20An%20object%20that%20has%20x%20and%20y%20attributes%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpublicZoomAtPoint%20%3D%20function%28scale%2C%20point%2C%20absolute%29%20%7B%0A%20%20if%20%28absolute%29%20%7B%0A%20%20%20%20%2F%2F%20Transform%20zoom%20into%20a%20relative%20value%0A%20%20%20%20scale%20%3D%20this%2EcomputeFromRelativeZoom%28scale%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20If%20not%20a%20SVGPoint%20but%20has%20x%20and%20y%20than%20create%20a%20SVGPoint%0A%20%20if%20%28Utils%2EgetType%28point%29%20%21%3D%3D%20%27SVGPoint%27%20%26%26%20%27x%27%20in%20point%20%26%26%20%27y%27%20in%20point%29%20%7B%0A%20%20%20%20point%20%3D%20SvgUtils%2EcreateSVGPoint%28this%2Esvg%2C%20point%2Ex%2C%20point%2Ey%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20throw%20new%20Error%28%27Given%20point%20is%20invalid%27%29%0A%20%20%20%20return%0A%20%20%7D%0A%0A%20%20this%2EzoomAtPoint%28scale%2C%20point%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2Eviewport%2EgetZoom%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%20for%20public%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetRelativeZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2Eviewport%2EgetRelativeZoom%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Compute%20actual%20zoom%20from%20public%20zoom%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20zoom%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EcomputeFromRelativeZoom%20%3D%20function%28zoom%29%20%7B%0A%20%20return%20zoom%20%2A%20this%2Eviewport%2EgetOriginalState%28%29%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20zoom%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EresetZoom%20%3D%20function%28%29%20%7B%0A%20%20var%20originalState%20%3D%20this%2Eviewport%2EgetOriginalState%28%29%0A%0A%20%20this%2Ezoom%28originalState%2Ezoom%2C%20true%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20pan%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EresetPan%20%3D%20function%28%29%20%7B%0A%20%20this%2Epan%28this%2Eviewport%2EgetOriginalState%28%29%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20pan%20and%20zoom%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ereset%20%3D%20function%28%29%20%7B%0A%20%20this%2EresetZoom%28%29%0A%20%20this%2EresetPan%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20double%20click%20event%0A%20%2A%20See%20handleMouseDown%28%29%20for%20alternate%20detection%20method%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleDblClick%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20%2F%2F%20Check%20if%20target%20was%20a%20control%20button%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20var%20targetClass%20%3D%20evt%2Etarget%2EgetAttribute%28%27class%27%29%20%7C%7C%20%27%27%0A%20%20%20%20if%20%28targetClass%2EindexOf%28%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%20%3E%20%2D1%29%20%7B%0A%20%20%20%20%20%20return%20false%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20var%20zoomFactor%0A%0A%20%20if%20%28evt%2EshiftKey%29%20%7B%0A%20%20%20%20zoomFactor%20%3D%201%2F%28%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%29%20%2A%202%29%20%2F%2F%20zoom%20out%20when%20shift%20key%20pressed%0A%20%20%7D%20else%20%7B%0A%20%20%20%20zoomFactor%20%3D%20%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%29%20%2A%202%0A%20%20%7D%0A%0A%20%20var%20point%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2Esvg%2EgetScreenCTM%28%29%2Einverse%28%29%29%0A%20%20this%2EzoomAtPoint%28zoomFactor%2C%20point%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20click%20event%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseDown%20%3D%20function%28evt%2C%20prevEvt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20Utils%2EmouseAndTouchNormalize%28evt%2C%20this%2Esvg%29%0A%0A%20%20%2F%2F%20Double%20click%20detection%3B%20more%20consistent%20than%20ondblclick%0A%20%20if%20%28this%2Eoptions%2EdblClickZoomEnabled%20%26%26%20Utils%2EisDblClick%28evt%2C%20prevEvt%29%29%7B%0A%20%20%20%20this%2EhandleDblClick%28evt%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Pan%20mode%0A%20%20%20%20this%2Estate%20%3D%20%27pan%27%0A%20%20%20%20this%2EfirstEventCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20%20%20this%2EstateOrigin%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2EfirstEventCTM%2Einverse%28%29%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20move%20event%0A%20%2A%0A%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseMove%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20if%20%28this%2Estate%20%3D%3D%3D%20%27pan%27%20%26%26%20this%2Eoptions%2EpanEnabled%29%20%7B%0A%20%20%20%20%2F%2F%20Pan%20mode%0A%20%20%20%20var%20point%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2EfirstEventCTM%2Einverse%28%29%29%0A%20%20%20%20%20%20%2C%20viewportCTM%20%3D%20this%2EfirstEventCTM%2Etranslate%28point%2Ex%20%2D%20this%2EstateOrigin%2Ex%2C%20point%2Ey%20%2D%20this%2EstateOrigin%2Ey%29%0A%0A%20%20%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20button%20release%20event%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseUp%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20if%20%28this%2Estate%20%3D%3D%3D%20%27pan%27%29%20%7B%0A%20%20%20%20%2F%2F%20Quit%20pan%20mode%0A%20%20%20%20this%2Estate%20%3D%20%27none%27%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Adjust%20viewport%20size%20%28only%29%20so%20it%20will%20fit%20in%20SVG%0A%20%2A%20Does%20not%20center%20image%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Efit%20%3D%20function%28%29%20%7B%0A%20%20var%20viewBox%20%3D%20this%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%2C%20newScale%20%3D%20Math%2Emin%28this%2Ewidth%2F%28viewBox%2Ewidth%20%2D%20viewBox%2Ex%29%2C%20this%2Eheight%2F%28viewBox%2Eheight%20%2D%20viewBox%2Ey%29%29%0A%0A%20%20this%2Ezoom%28newScale%2C%20true%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Adjust%20viewport%20pan%20%28only%29%20so%20it%20will%20be%20centered%20in%20SVG%0A%20%2A%20Does%20not%20zoom%2Ffit%20image%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ecenter%20%3D%20function%28%29%20%7B%0A%20%20var%20viewBox%20%3D%20this%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%2C%20offsetX%20%3D%20%28this%2Ewidth%20%2D%20%28viewBox%2Ewidth%20%2B%20viewBox%2Ex%29%20%2A%20this%2EgetZoom%28%29%29%20%2A%200%2E5%0A%20%20%20%20%2C%20offsetY%20%3D%20%28this%2Eheight%20%2D%20%28viewBox%2Eheight%20%2B%20viewBox%2Ey%29%20%2A%20this%2EgetZoom%28%29%29%20%2A%200%2E5%0A%0A%20%20this%2EgetPublicInstance%28%29%2Epan%28%7Bx%3A%20offsetX%2C%20y%3A%20offsetY%7D%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Update%20content%20cached%20BorderBox%0A%20%2A%20Use%20when%20viewport%20contents%20change%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EupdateBBox%20%3D%20function%28%29%20%7B%0A%20%20this%2Eviewport%2ErecacheViewBox%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Pan%20to%20a%20rendered%20position%0A%20%2A%0A%20%2A%20%40param%20%20%7BObject%7D%20point%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Epan%20%3D%20function%28point%29%20%7B%0A%20%20var%20viewportCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20viewportCTM%2Ee%20%3D%20point%2Ex%0A%20%20viewportCTM%2Ef%20%3D%20point%2Ey%0A%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Relatively%20pan%20the%20graph%20by%20a%20specified%20rendered%20position%20vector%0A%20%2A%0A%20%2A%20%40param%20%20%7BObject%7D%20point%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpanBy%20%3D%20function%28point%29%20%7B%0A%20%20var%20viewportCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20viewportCTM%2Ee%20%2B%3D%20point%2Ex%0A%20%20viewportCTM%2Ef%20%2B%3D%20point%2Ey%0A%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20pan%20vector%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetPan%20%3D%20function%28%29%20%7B%0A%20%20var%20state%20%3D%20this%2Eviewport%2EgetState%28%29%0A%0A%20%20return%20%7Bx%3A%20state%2Ex%2C%20y%3A%20state%2Ey%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Recalculates%20cached%20svg%20dimensions%20and%20controls%20position%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Eresize%20%3D%20function%28%29%20%7B%0A%20%20%2F%2F%20Get%20dimensions%0A%20%20var%20boundingClientRectNormalized%20%3D%20SvgUtils%2EgetBoundingClientRectNormalized%28this%2Esvg%29%0A%20%20this%2Ewidth%20%3D%20boundingClientRectNormalized%2Ewidth%0A%20%20this%2Eheight%20%3D%20boundingClientRectNormalized%2Eheight%0A%0A%20%20%2F%2F%20Reposition%20control%20icons%20by%20re%2Denabling%20them%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20this%2EgetPublicInstance%28%29%2EdisableControlIcons%28%29%0A%20%20%20%20this%2EgetPublicInstance%28%29%2EenableControlIcons%28%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Unbind%20mouse%20events%2C%20free%20callbacks%20and%20destroy%20public%20instance%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Edestroy%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20%2F%2F%20Free%20callbacks%0A%20%20this%2EbeforeZoom%20%3D%20null%0A%20%20this%2EonZoom%20%3D%20null%0A%20%20this%2EbeforePan%20%3D%20null%0A%20%20this%2EonPan%20%3D%20null%0A%0A%20%20%2F%2F%20Destroy%20custom%20event%20handlers%0A%20%20if%20%28this%2Eoptions%2EcustomEventsHandler%20%21%3D%20null%29%20%7B%20%2F%2F%20jshint%20ignore%3Aline%0A%20%20%20%20this%2Eoptions%2EcustomEventsHandler%2Edestroy%28%7B%0A%20%20%20%20%20%20svgElement%3A%20this%2Esvg%0A%20%20%20%20%2C%20instance%3A%20this%2EgetPublicInstance%28%29%0A%20%20%20%20%7D%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Unbind%20eventListeners%0A%20%20for%20%28var%20event%20in%20this%2EeventListeners%29%20%7B%0A%20%20%20%20this%2Esvg%2EremoveEventListener%28event%2C%20this%2EeventListeners%5Bevent%5D%2C%20false%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Unbind%20wheelListener%0A%20%20this%2EdisableMouseWheelZoom%28%29%0A%0A%20%20%2F%2F%20Remove%20control%20icons%0A%20%20this%2EgetPublicInstance%28%29%2EdisableControlIcons%28%29%0A%0A%20%20%2F%2F%20Reset%20zoom%20and%20pan%0A%20%20this%2Ereset%28%29%0A%0A%20%20%2F%2F%20Remove%20instance%20from%20instancesStore%0A%20%20instancesStore%20%3D%20instancesStore%2Efilter%28function%28instance%29%7B%0A%20%20%20%20return%20instance%2Esvg%20%21%3D%3D%20that%2Esvg%0A%20%20%7D%29%0A%0A%20%20%2F%2F%20Delete%20options%20and%20its%20contents%0A%20%20delete%20this%2Eoptions%0A%0A%20%20%2F%2F%20Destroy%20public%20instance%20and%20rewrite%20getPublicInstance%0A%20%20delete%20this%2EpublicInstance%0A%20%20delete%20this%2Epi%0A%20%20this%2EgetPublicInstance%20%3D%20function%28%29%7B%0A%20%20%20%20return%20null%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Returns%20a%20public%20instance%20object%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20Public%20instance%20object%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetPublicInstance%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20%2F%2F%20Create%20cache%0A%20%20if%20%28%21this%2EpublicInstance%29%20%7B%0A%20%20%20%20this%2EpublicInstance%20%3D%20this%2Epi%20%3D%20%7B%0A%20%20%20%20%20%20%2F%2F%20Pan%0A%20%20%20%20%20%20enablePan%3A%20function%28%29%20%7Bthat%2Eoptions%2EpanEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disablePan%3A%20function%28%29%20%7Bthat%2Eoptions%2EpanEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isPanEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EpanEnabled%7D%0A%20%20%20%20%2C%20pan%3A%20function%28point%29%20%7Bthat%2Epan%28point%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20panBy%3A%20function%28point%29%20%7Bthat%2EpanBy%28point%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getPan%3A%20function%28%29%20%7Breturn%20that%2EgetPan%28%29%7D%0A%20%20%20%20%20%20%2F%2F%20Pan%20event%0A%20%20%20%20%2C%20setBeforePan%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EbeforePan%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setOnPan%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EonPan%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20and%20Control%20Icons%0A%20%20%20%20%2C%20enableZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EzoomEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EzoomEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EzoomEnabled%7D%0A%20%20%20%20%2C%20enableControlIcons%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21that%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20that%2Eoptions%2EcontrolIconsEnabled%20%3D%20true%0A%20%20%20%20%20%20%20%20%20%20ControlIcons%2Eenable%28that%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20that%2Epi%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%2C%20disableControlIcons%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28that%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20that%2Eoptions%2EcontrolIconsEnabled%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20ControlIcons%2Edisable%28that%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20that%2Epi%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%2C%20isControlIconsEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EcontrolIconsEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Double%20click%20zoom%0A%20%20%20%20%2C%20enableDblClickZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EdblClickZoomEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableDblClickZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EdblClickZoomEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isDblClickZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EdblClickZoomEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Mouse%20wheel%20zoom%0A%20%20%20%20%2C%20enableMouseWheelZoom%3A%20function%28%29%20%7Bthat%2EenableMouseWheelZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableMouseWheelZoom%3A%20function%28%29%20%7Bthat%2EdisableMouseWheelZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isMouseWheelZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EmouseWheelZoomEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20scale%20and%20bounds%0A%20%20%20%20%2C%20setZoomScaleSensitivity%3A%20function%28scale%29%20%7Bthat%2Eoptions%2EzoomScaleSensitivity%20%3D%20scale%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setMinZoom%3A%20function%28zoom%29%20%7Bthat%2Eoptions%2EminZoom%20%3D%20zoom%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setMaxZoom%3A%20function%28zoom%29%20%7Bthat%2Eoptions%2EmaxZoom%20%3D%20zoom%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20event%0A%20%20%20%20%2C%20setBeforeZoom%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EbeforeZoom%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setOnZoom%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EonZoom%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zooming%0A%20%20%20%20%2C%20zoom%3A%20function%28scale%29%20%7Bthat%2EpublicZoom%28scale%2C%20true%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomBy%3A%20function%28scale%29%20%7Bthat%2EpublicZoom%28scale%2C%20false%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomAtPoint%3A%20function%28scale%2C%20point%29%20%7Bthat%2EpublicZoomAtPoint%28scale%2C%20point%2C%20true%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomAtPointBy%3A%20function%28scale%2C%20point%29%20%7Bthat%2EpublicZoomAtPoint%28scale%2C%20point%2C%20false%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomIn%3A%20function%28%29%20%7Bthis%2EzoomBy%281%20%2B%20that%2Eoptions%2EzoomScaleSensitivity%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomOut%3A%20function%28%29%20%7Bthis%2EzoomBy%281%20%2F%20%281%20%2B%20that%2Eoptions%2EzoomScaleSensitivity%29%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getZoom%3A%20function%28%29%20%7Breturn%20that%2EgetRelativeZoom%28%29%7D%0A%20%20%20%20%20%20%2F%2F%20Reset%0A%20%20%20%20%2C%20resetZoom%3A%20function%28%29%20%7Bthat%2EresetZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20resetPan%3A%20function%28%29%20%7Bthat%2EresetPan%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20reset%3A%20function%28%29%20%7Bthat%2Ereset%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Fit%20and%20Center%0A%20%20%20%20%2C%20fit%3A%20function%28%29%20%7Bthat%2Efit%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20center%3A%20function%28%29%20%7Bthat%2Ecenter%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Size%20and%20Resize%0A%20%20%20%20%2C%20updateBBox%3A%20function%28%29%20%7Bthat%2EupdateBBox%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20resize%3A%20function%28%29%20%7Bthat%2Eresize%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getSizes%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20width%3A%20that%2Ewidth%0A%20%20%20%20%20%20%20%20%2C%20height%3A%20that%2Eheight%0A%20%20%20%20%20%20%20%20%2C%20realZoom%3A%20that%2EgetZoom%28%29%0A%20%20%20%20%20%20%20%20%2C%20viewBox%3A%20that%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20Destroy%0A%20%20%20%20%2C%20destroy%3A%20function%28%29%20%7Bthat%2Edestroy%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20return%20this%2EpublicInstance%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Stores%20pairs%20of%20instances%20of%20SvgPanZoom%20and%20SVG%0A%20%2A%20Each%20pair%20is%20represented%20by%20an%20object%20%7Bsvg%3A%20SVGSVGElement%2C%20instance%3A%20SvgPanZoom%7D%0A%20%2A%0A%20%2A%20%40type%20%7BArray%7D%0A%20%2A%2F%0Avar%20instancesStore%20%3D%20%5B%5D%0A%0Avar%20svgPanZoom%20%3D%20function%28elementOrSelector%2C%20options%29%7B%0A%20%20var%20svg%20%3D%20Utils%2EgetSvg%28elementOrSelector%29%0A%0A%20%20if%20%28svg%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20return%20null%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Look%20for%20existent%20instance%0A%20%20%20%20for%28var%20i%20%3D%20instancesStore%2Elength%20%2D%201%3B%20i%20%3E%3D%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20if%20%28instancesStore%5Bi%5D%2Esvg%20%3D%3D%3D%20svg%29%20%7B%0A%20%20%20%20%20%20%20%20return%20instancesStore%5Bi%5D%2Einstance%2EgetPublicInstance%28%29%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20If%20instance%20not%20found%20%2D%20create%20one%0A%20%20%20%20instancesStore%2Epush%28%7B%0A%20%20%20%20%20%20svg%3A%20svg%0A%20%20%20%20%2C%20instance%3A%20new%20SvgPanZoom%28svg%2C%20options%29%0A%20%20%20%20%7D%29%0A%0A%20%20%20%20%2F%2F%20Return%20just%20pushed%20instance%0A%20%20%20%20return%20instancesStore%5BinstancesStore%2Elength%20%2D%201%5D%2Einstance%2EgetPublicInstance%28%29%0A%20%20%7D%0A%7D%0A%0Amodule%2Eexports%20%3D%20svgPanZoom%3B%0A%0A%7D%2C%7B%22%2E%2Fcontrol%2Dicons%22%3A3%2C%22%2E%2Fshadow%2Dviewport%22%3A4%2C%22%2E%2Fsvg%2Dutilities%22%3A6%2C%22%2E%2Futilities%22%3A7%2C%22uniwheel%22%3A2%7D%5D%2C6%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%20%20%2C%20%5Fbrowser%20%3D%20%27unknown%27%0A%20%20%3B%0A%0A%2F%2F%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F9847580%2Fhow%2Dto%2Ddetect%2Dsafari%2Dchrome%2Die%2Dfirefox%2Dand%2Dopera%2Dbrowser%0Aif%20%28%2F%2A%40cc%5Fon%21%40%2A%2Ffalse%20%7C%7C%20%21%21document%2EdocumentMode%29%20%7B%20%2F%2F%20internet%20explorer%0A%20%20%5Fbrowser%20%3D%20%27ie%27%3B%0A%7D%0A%0Amodule%2Eexports%20%3D%20%7B%0A%20%20svgNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%27%0A%2C%20xmlNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2FXML%2F1998%2Fnamespace%27%0A%2C%20xmlnsNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fxmlns%2F%27%0A%2C%20xlinkNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F1999%2Fxlink%27%0A%2C%20evNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2001%2Fxml%2Devents%27%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Get%20svg%20dimensions%3A%20width%20and%20height%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BObject%7D%20%20%20%20%20%7Bwidth%3A%200%2C%20height%3A%200%7D%0A%20%20%20%2A%2F%0A%2C%20getBoundingClientRectNormalized%3A%20function%28svg%29%20%7B%0A%20%20%20%20if%20%28svg%2EclientWidth%20%26%26%20svg%2EclientHeight%29%20%7B%0A%20%20%20%20%20%20return%20%7Bwidth%3A%20svg%2EclientWidth%2C%20height%3A%20svg%2EclientHeight%7D%0A%20%20%20%20%7D%20else%20if%20%28%21%21svg%2EgetBoundingClientRect%28%29%29%20%7B%0A%20%20%20%20%20%20return%20svg%2EgetBoundingClientRect%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20get%20BoundingClientRect%20for%20SVG%2E%27%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Gets%20g%20element%20with%20class%20of%20%22viewport%22%20or%20creates%20it%20if%20it%20doesn%27t%20exist%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGElement%7D%20%20%20%20%20g%20%28group%29%20element%0A%20%20%20%2A%2F%0A%2C%20getOrCreateViewport%3A%20function%28svg%2C%20selector%29%20%7B%0A%20%20%20%20var%20viewport%20%3D%20null%0A%0A%20%20%20%20if%20%28Utils%2EisElement%28selector%29%29%20%7B%0A%20%20%20%20%20%20viewport%20%3D%20selector%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20viewport%20%3D%20svg%2EquerySelector%28selector%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Check%20if%20there%20is%20just%20one%20main%20group%20in%20SVG%0A%20%20%20%20if%20%28%21viewport%29%20%7B%0A%20%20%20%20%20%20var%20childNodes%20%3D%20Array%2Eprototype%2Eslice%2Ecall%28svg%2EchildNodes%20%7C%7C%20svg%2Echildren%29%2Efilter%28function%28el%29%7B%0A%20%20%20%20%20%20%20%20return%20el%2EnodeName%20%21%3D%3D%20%27defs%27%20%26%26%20el%2EnodeName%20%21%3D%3D%20%27%23text%27%0A%20%20%20%20%20%20%7D%29%0A%0A%20%20%20%20%20%20%2F%2F%20Node%20name%20should%20be%20SVGGElement%20and%20should%20have%20no%20transform%20attribute%0A%20%20%20%20%20%20%2F%2F%20Groups%20with%20transform%20are%20not%20used%20as%20viewport%20because%20it%20involves%20parsing%20of%20all%20transform%20possibilities%0A%20%20%20%20%20%20if%20%28childNodes%2Elength%20%3D%3D%3D%201%20%26%26%20childNodes%5B0%5D%2EnodeName%20%3D%3D%3D%20%27g%27%20%26%26%20childNodes%5B0%5D%2EgetAttribute%28%27transform%27%29%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20viewport%20%3D%20childNodes%5B0%5D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20If%20no%20favorable%20group%20element%20exists%20then%20create%20one%0A%20%20%20%20if%20%28%21viewport%29%20%7B%0A%20%20%20%20%20%20var%20viewportId%20%3D%20%27viewport%2D%27%20%2B%20new%20Date%28%29%2EtoISOString%28%29%2Ereplace%28%2F%5CD%2Fg%2C%20%27%27%29%3B%0A%20%20%20%20%20%20viewport%20%3D%20document%2EcreateElementNS%28this%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20%20%20viewport%2EsetAttribute%28%27id%27%2C%20viewportId%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Internet%20Explorer%20%28all%20versions%3F%29%20can%27t%20use%20childNodes%2C%20but%20other%20browsers%20prefer%20%28require%3F%29%20using%20childNodes%0A%20%20%20%20%20%20var%20svgChildren%20%3D%20svg%2EchildNodes%20%7C%7C%20svg%2Echildren%3B%0A%20%20%20%20%20%20if%20%28%21%21svgChildren%20%26%26%20svgChildren%2Elength%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%20svgChildren%2Elength%3B%20i%20%3E%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Move%20everything%20into%20viewport%20except%20defs%0A%20%20%20%20%20%20%20%20%20%20if%20%28svgChildren%5BsvgChildren%2Elength%20%2D%20i%5D%2EnodeName%20%21%3D%3D%20%27defs%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20viewport%2EappendChild%28svgChildren%5BsvgChildren%2Elength%20%2D%20i%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20svg%2EappendChild%28viewport%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Parse%20class%20names%0A%20%20%20%20var%20classNames%20%3D%20%5B%5D%3B%0A%20%20%20%20if%20%28viewport%2EgetAttribute%28%27class%27%29%29%20%7B%0A%20%20%20%20%20%20classNames%20%3D%20viewport%2EgetAttribute%28%27class%27%29%2Esplit%28%27%20%27%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Set%20class%20%28if%20not%20set%20already%29%0A%20%20%20%20if%20%28%21%7EclassNames%2EindexOf%28%27svg%2Dpan%2Dzoom%5Fviewport%27%29%29%20%7B%0A%20%20%20%20%20%20classNames%2Epush%28%27svg%2Dpan%2Dzoom%5Fviewport%27%29%0A%20%20%20%20%20%20viewport%2EsetAttribute%28%27class%27%2C%20classNames%2Ejoin%28%27%20%27%29%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20viewport%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Set%20SVG%20attributes%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%2F%0A%20%20%2C%20setupSvgAttributes%3A%20function%28svg%29%20%7B%0A%20%20%20%20%2F%2F%20Setting%20default%20attributes%0A%20%20%20%20svg%2EsetAttribute%28%27xmlns%27%2C%20this%2EsvgNS%29%3B%0A%20%20%20%20svg%2EsetAttributeNS%28this%2ExmlnsNS%2C%20%27xmlns%3Axlink%27%2C%20this%2ExlinkNS%29%3B%0A%20%20%20%20svg%2EsetAttributeNS%28this%2ExmlnsNS%2C%20%27xmlns%3Aev%27%2C%20this%2EevNS%29%3B%0A%0A%20%20%20%20%2F%2F%20Needed%20for%20Internet%20Explorer%2C%20otherwise%20the%20viewport%20overflows%0A%20%20%20%20if%20%28svg%2EparentNode%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20var%20style%20%3D%20svg%2EgetAttribute%28%27style%27%29%20%7C%7C%20%27%27%3B%0A%20%20%20%20%20%20if%20%28style%2EtoLowerCase%28%29%2EindexOf%28%27overflow%27%29%20%3D%3D%3D%20%2D1%29%20%7B%0A%20%20%20%20%20%20%20%20svg%2EsetAttribute%28%27style%27%2C%20%27overflow%3A%20hidden%3B%20%27%20%2B%20style%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%2F%2A%2A%0A%20%2A%20How%20long%20Internet%20Explorer%20takes%20to%20finish%20updating%20its%20display%20%28ms%29%2E%0A%20%2A%2F%0A%2C%20internetExplorerRedisplayInterval%3A%20300%0A%0A%2F%2A%2A%0A%20%2A%20Forces%20the%20browser%20to%20redisplay%20all%20SVG%20elements%20that%20rely%20on%20an%0A%20%2A%20element%20defined%20in%20a%20%27defs%27%20section%2E%20It%20works%20globally%2C%20for%20every%0A%20%2A%20available%20defs%20element%20on%20the%20page%2E%0A%20%2A%20The%20throttling%20is%20intentionally%20global%2E%0A%20%2A%0A%20%2A%20This%20is%20only%20needed%20for%20IE%2E%20It%20is%20as%20a%20hack%20to%20make%20markers%20%28and%20%27use%27%20elements%3F%29%0A%20%2A%20visible%20after%20pan%2Fzoom%20when%20there%20are%20multiple%20SVGs%20on%20the%20page%2E%0A%20%2A%20See%20bug%20report%3A%20https%3A%2F%2Fconnect%2Emicrosoft%2Ecom%2FIE%2Ffeedback%2Fdetails%2F781964%2F%0A%20%2A%20also%20see%20svg%2Dpan%2Dzoom%20issue%3A%20https%3A%2F%2Fgithub%2Ecom%2Fariutta%2Fsvg%2Dpan%2Dzoom%2Fissues%2F62%0A%20%2A%2F%0A%2C%20refreshDefsGlobal%3A%20Utils%2Ethrottle%28function%28%29%20%7B%0A%20%20%20%20var%20allDefs%20%3D%20document%2EquerySelectorAll%28%27defs%27%29%3B%0A%20%20%20%20var%20allDefsCount%20%3D%20allDefs%2Elength%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20allDefsCount%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20thisDefs%20%3D%20allDefs%5Bi%5D%3B%0A%20%20%20%20%20%20thisDefs%2EparentNode%2EinsertBefore%28thisDefs%2C%20thisDefs%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%20this%2EinternetExplorerRedisplayInterval%29%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Sets%20the%20current%20transform%20matrix%20of%20an%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%7BSVGElement%7D%20element%0A%20%20%20%2A%20%40param%20%7BSVGMatrix%7D%20matrix%20%20CTM%0A%20%20%20%2A%20%40param%20%7BSVGElement%7D%20defs%0A%20%20%20%2A%2F%0A%2C%20setCTM%3A%20function%28element%2C%20matrix%2C%20defs%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%0A%20%20%20%20%20%20%2C%20s%20%3D%20%27matrix%28%27%20%2B%20matrix%2Ea%20%2B%20%27%2C%27%20%2B%20matrix%2Eb%20%2B%20%27%2C%27%20%2B%20matrix%2Ec%20%2B%20%27%2C%27%20%2B%20matrix%2Ed%20%2B%20%27%2C%27%20%2B%20matrix%2Ee%20%2B%20%27%2C%27%20%2B%20matrix%2Ef%20%2B%20%27%29%27%3B%0A%0A%20%20%20%20element%2EsetAttributeNS%28null%2C%20%27transform%27%2C%20s%29%3B%0A%0A%20%20%20%20%2F%2F%20IE%20has%20a%20bug%20that%20makes%20markers%20disappear%20on%20zoom%20%28when%20the%20matrix%20%22a%22%20and%2For%20%22d%22%20elements%20change%29%0A%20%20%20%20%2F%2F%20see%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F17654578%2Fsvg%2Dmarker%2Ddoes%2Dnot%2Dwork%2Din%2Die9%2D10%0A%20%20%20%20%2F%2F%20and%20http%3A%2F%2Fsrndolha%2Ewordpress%2Ecom%2F2013%2F11%2F25%2Fsvg%2Dline%2Dmarkers%2Dmay%2Ddisappear%2Din%2Dinternet%2Dexplorer%2D11%2F%0A%20%20%20%20if%20%28%5Fbrowser%20%3D%3D%3D%20%27ie%27%20%26%26%20%21%21defs%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20this%20refresh%20is%20intended%20for%20redisplaying%20the%20SVG%20during%20zooming%0A%20%20%20%20%20%20defs%2EparentNode%2EinsertBefore%28defs%2C%20defs%29%3B%0A%20%20%20%20%20%20%2F%2F%20this%20refresh%20is%20intended%20for%20redisplaying%20the%20other%20SVGs%20on%20a%20page%20when%20panning%20a%20given%20SVG%0A%20%20%20%20%20%20%2F%2F%20it%20is%20also%20needed%20for%20the%20given%20SVG%20itself%2C%20on%20zoomEnd%2C%20if%20the%20SVG%20contains%20any%20markers%20that%0A%20%20%20%20%20%20%2F%2F%20are%20located%20under%20any%20other%20element%28s%29%2E%0A%20%20%20%20%20%20window%2EsetTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20that%2ErefreshDefsGlobal%28%29%3B%0A%20%20%20%20%20%20%7D%2C%20that%2EinternetExplorerRedisplayInterval%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Instantiate%20an%20SVGPoint%20object%20with%20given%20event%20coordinates%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%20%20%20%20%20point%0A%20%20%20%2A%2F%0A%2C%20getEventPoint%3A%20function%28evt%2C%20svg%29%20%7B%0A%20%20%20%20var%20point%20%3D%20svg%2EcreateSVGPoint%28%29%0A%0A%20%20%20%20Utils%2EmouseAndTouchNormalize%28evt%2C%20svg%29%0A%0A%20%20%20%20point%2Ex%20%3D%20evt%2EclientX%0A%20%20%20%20point%2Ey%20%3D%20evt%2EclientY%0A%0A%20%20%20%20return%20point%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Get%20SVG%20center%20point%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%0A%20%20%20%2A%2F%0A%2C%20getSvgCenterPoint%3A%20function%28svg%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20return%20this%2EcreateSVGPoint%28svg%2C%20width%20%2F%202%2C%20height%20%2F%202%29%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Create%20a%20SVGPoint%20with%20given%20x%20and%20y%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40param%20%20%7BNumber%7D%20x%0A%20%20%20%2A%20%40param%20%20%7BNumber%7D%20y%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%0A%20%20%20%2A%2F%0A%2C%20createSVGPoint%3A%20function%28svg%2C%20x%2C%20y%29%20%7B%0A%20%20%20%20var%20point%20%3D%20svg%2EcreateSVGPoint%28%29%0A%20%20%20%20point%2Ex%20%3D%20x%0A%20%20%20%20point%2Ey%20%3D%20y%0A%0A%20%20%20%20return%20point%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%22%2E%2Futilities%22%3A7%7D%5D%2C7%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Amodule%2Eexports%20%3D%20%7B%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Extends%20an%20object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20target%20object%20to%20extend%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20source%20object%20to%20take%20properties%20from%0A%20%20%20%2A%20%40return%20%7BObject%7D%20%20%20%20%20%20%20%20extended%20object%0A%20%20%20%2A%2F%0A%20%20extend%3A%20function%28target%2C%20source%29%20%7B%0A%20%20%20%20target%20%3D%20target%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20prop%20in%20source%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Go%20recursively%0A%20%20%20%20%20%20if%20%28this%2EisObject%28source%5Bprop%5D%29%29%20%7B%0A%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20this%2Eextend%28target%5Bprop%5D%2C%20source%5Bprop%5D%29%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20source%5Bprop%5D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20target%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20an%20object%20is%20a%20DOM%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20o%20HTML%20element%20or%20String%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20object%20is%20a%20DOM%20element%0A%20%20%20%2A%2F%0A%2C%20isElement%3A%20function%28o%29%7B%0A%20%20%20%20return%20%28%0A%20%20%20%20%20%20typeof%20HTMLElement%20%3D%3D%3D%20%27object%27%20%3F%20%28o%20instanceof%20HTMLElement%20%7C%7C%20o%20instanceof%20SVGElement%20%7C%7C%20o%20instanceof%20SVGSVGElement%29%20%3A%20%2F%2FDOM2%0A%20%20%20%20%20%20o%20%26%26%20typeof%20o%20%3D%3D%3D%20%27object%27%20%26%26%20o%20%21%3D%3D%20null%20%26%26%20o%2EnodeType%20%3D%3D%3D%201%20%26%26%20typeof%20o%2EnodeName%20%3D%3D%3D%20%27string%27%0A%20%20%20%20%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20an%20object%20is%20an%20Object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20o%20Object%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20object%20is%20an%20Object%0A%20%20%20%2A%2F%0A%2C%20isObject%3A%20function%28o%29%7B%0A%20%20%20%20return%20Object%2Eprototype%2EtoString%2Ecall%28o%29%20%3D%3D%3D%20%27%5Bobject%20Object%5D%27%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20variable%20is%20Number%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BInteger%7CFloat%7D%20%20n%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20variable%20is%20Number%0A%20%20%20%2A%2F%0A%2C%20isNumber%3A%20function%28n%29%20%7B%0A%20%20%20%20return%20%21isNaN%28parseFloat%28n%29%29%20%26%26%20isFinite%28n%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Search%20for%20an%20SVG%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7CString%7D%20elementOrSelector%20DOM%20Element%20or%20selector%20String%0A%20%20%20%2A%20%40return%20%7BObject%7CNull%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SVG%20or%20null%0A%20%20%20%2A%2F%0A%2C%20getSvg%3A%20function%28elementOrSelector%29%20%7B%0A%20%20%20%20var%20element%0A%20%20%20%20%20%20%2C%20svg%3B%0A%0A%20%20%20%20if%20%28%21this%2EisElement%28elementOrSelector%29%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20selector%20provided%0A%20%20%20%20%20%20if%20%28typeof%20elementOrSelector%20%3D%3D%3D%20%27string%27%20%7C%7C%20elementOrSelector%20instanceof%20String%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Try%20to%20find%20the%20element%0A%20%20%20%20%20%20%20%20element%20%3D%20document%2EquerySelector%28elementOrSelector%29%0A%0A%20%20%20%20%20%20%20%20if%20%28%21element%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Provided%20selector%20did%20not%20find%20any%20elements%2E%20Selector%3A%20%27%20%2B%20elementOrSelector%29%0A%20%20%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Provided%20selector%20is%20not%20an%20HTML%20object%20nor%20String%27%29%0A%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20element%20%3D%20elementOrSelector%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27svg%27%29%20%7B%0A%20%20%20%20%20%20svg%20%3D%20element%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27object%27%29%20%7B%0A%20%20%20%20%20%20%20%20svg%20%3D%20element%2EcontentDocument%2EdocumentElement%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27embed%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20svg%20%3D%20element%2EgetSVGDocument%28%29%2EdocumentElement%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27img%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20script%20an%20SVG%20in%20an%20%22img%22%20element%2E%20Please%20use%20an%20%22object%22%20element%20or%20an%20in%2Dline%20SVG%2E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20get%20SVG%2E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20svg%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Attach%20a%20given%20context%20to%20a%20function%0A%20%20%20%2A%20%40param%20%20%7BFunction%7D%20fn%20%20%20%20%20%20Function%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20%20context%20Context%0A%20%20%20%2A%20%40return%20%7BFunction%7D%20%20%20%20%20%20%20%20%20%20%20Function%20with%20certain%20context%0A%20%20%20%2A%2F%0A%2C%20proxy%3A%20function%28fn%2C%20context%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20fn%2Eapply%28context%2C%20arguments%29%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Returns%20object%20type%0A%20%20%20%2A%20Uses%20toString%20that%20returns%20%5Bobject%20SVGPoint%5D%0A%20%20%20%2A%20And%20than%20parses%20object%20type%20from%20string%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20o%20Any%20object%0A%20%20%20%2A%20%40return%20%7BString%7D%20%20%20Object%20type%0A%20%20%20%2A%2F%0A%2C%20getType%3A%20function%28o%29%20%7B%0A%20%20%20%20return%20Object%2Eprototype%2EtoString%2Eapply%28o%29%2Ereplace%28%2F%5E%5C%5Bobject%5Cs%2F%2C%20%27%27%29%2Ereplace%28%2F%5C%5D%24%2F%2C%20%27%27%29%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20If%20it%20is%20a%20touch%20event%20than%20add%20clientX%20and%20clientY%20to%20event%20object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%2F%0A%2C%20mouseAndTouchNormalize%3A%20function%28evt%2C%20svg%29%20%7B%0A%20%20%20%20%2F%2F%20If%20no%20cilentX%20and%20but%20touch%20objects%20are%20available%0A%20%20%20%20if%20%28evt%2EclientX%20%3D%3D%3D%20void%200%20%7C%7C%20evt%2EclientX%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Fallback%0A%20%20%20%20%20%20evt%2EclientX%20%3D%200%0A%20%20%20%20%20%20evt%2EclientY%20%3D%200%0A%0A%20%20%20%20%20%20%2F%2F%20If%20it%20is%20a%20touch%20event%0A%20%20%20%20%20%20if%20%28evt%2EchangedTouches%20%21%3D%3D%20void%200%20%26%26%20evt%2EchangedTouches%2Elength%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20touch%20event%20has%20changedTouches%0A%20%20%20%20%20%20%20%20if%20%28evt%2EchangedTouches%5B0%5D%2EclientX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EchangedTouches%5B0%5D%2EclientX%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EchangedTouches%5B0%5D%2EclientY%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20changedTouches%20has%20pageX%20attribute%0A%20%20%20%20%20%20%20%20else%20if%20%28evt%2EchangedTouches%5B0%5D%2EpageX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20rect%20%3D%20svg%2EgetBoundingClientRect%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EchangedTouches%5B0%5D%2EpageX%20%2D%20rect%2Eleft%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EchangedTouches%5B0%5D%2EpageY%20%2D%20rect%2Etop%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20If%20it%20is%20a%20custom%20event%0A%20%20%20%20%20%20%7D%20else%20if%20%28evt%2EoriginalEvent%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28evt%2EoriginalEvent%2EclientX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EoriginalEvent%2EclientX%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EoriginalEvent%2EclientY%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Check%20if%20an%20event%20is%20a%20double%20click%2Ftap%0A%20%20%20%2A%20TODO%3A%20For%20touch%20gestures%20use%20a%20library%20%28hammer%2Ejs%29%20that%20takes%20in%20account%20other%20events%0A%20%20%20%2A%20%28touchmove%20and%20touchend%29%2E%20It%20should%20take%20in%20account%20tap%20duration%20and%20traveled%20distance%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20%20evt%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20%20prevEvt%20Previous%20Event%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%0A%20%20%20%2A%2F%0A%2C%20isDblClick%3A%20function%28evt%2C%20prevEvt%29%20%7B%0A%20%20%20%20%2F%2F%20Double%20click%20detected%20by%20browser%0A%20%20%20%20if%20%28evt%2Edetail%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Try%20to%20compare%20events%0A%20%20%20%20else%20if%20%28prevEvt%20%21%3D%3D%20void%200%20%26%26%20prevEvt%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20var%20timeStampDiff%20%3D%20evt%2EtimeStamp%20%2D%20prevEvt%2EtimeStamp%20%2F%2F%20should%20be%20lower%20than%20250%20ms%0A%20%20%20%20%20%20%20%20%2C%20touchesDistance%20%3D%20Math%2Esqrt%28Math%2Epow%28evt%2EclientX%20%2D%20prevEvt%2EclientX%2C%202%29%20%2B%20Math%2Epow%28evt%2EclientY%20%2D%20prevEvt%2EclientY%2C%202%29%29%0A%0A%20%20%20%20%20%20return%20timeStampDiff%20%3C%20250%20%26%26%20touchesDistance%20%3C%2010%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Nothing%20found%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Returns%20current%20timestamp%20as%20an%20integer%0A%20%20%20%2A%0A%20%20%20%2A%20%40return%20%7BNumber%7D%0A%20%20%20%2A%2F%0A%2C%20now%3A%20Date%2Enow%20%7C%7C%20function%28%29%20%7B%0A%20%20%20%20return%20new%20Date%28%29%2EgetTime%28%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20From%20underscore%2E%0A%20%20%2F%2F%20Returns%20a%20function%2C%20that%2C%20when%20invoked%2C%20will%20only%20be%20triggered%20at%20most%20once%0A%20%20%2F%2F%20during%20a%20given%20window%20of%20time%2E%20Normally%2C%20the%20throttled%20function%20will%20run%0A%20%20%2F%2F%20as%20much%20as%20it%20can%2C%20without%20ever%20going%20more%20than%20once%20per%20%60wait%60%20duration%3B%0A%20%20%2F%2F%20but%20if%20you%27d%20like%20to%20disable%20the%20execution%20on%20the%20leading%20edge%2C%20pass%0A%20%20%2F%2F%20%60%7Bleading%3A%20false%7D%60%2E%20To%20disable%20execution%20on%20the%20trailing%20edge%2C%20ditto%2E%0A%2F%2F%20jscs%3Adisable%0A%2F%2F%20jshint%20ignore%3Astart%0A%2C%20throttle%3A%20function%28func%2C%20wait%2C%20options%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%3B%0A%20%20%20%20var%20context%2C%20args%2C%20result%3B%0A%20%20%20%20var%20timeout%20%3D%20null%3B%0A%20%20%20%20var%20previous%20%3D%200%3B%0A%20%20%20%20if%20%28%21options%29%20options%20%3D%20%7B%7D%3B%0A%20%20%20%20var%20later%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20previous%20%3D%20options%2Eleading%20%3D%3D%3D%20false%20%3F%200%20%3A%20that%2Enow%28%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20result%20%3D%20func%2Eapply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20now%20%3D%20that%2Enow%28%29%3B%0A%20%20%20%20%20%20if%20%28%21previous%20%26%26%20options%2Eleading%20%3D%3D%3D%20false%29%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20var%20remaining%20%3D%20wait%20%2D%20%28now%20%2D%20previous%29%3B%0A%20%20%20%20%20%20context%20%3D%20this%3B%0A%20%20%20%20%20%20args%20%3D%20arguments%3B%0A%20%20%20%20%20%20if%20%28remaining%20%3C%3D%200%20%7C%7C%20remaining%20%3E%20wait%29%20%7B%0A%20%20%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20%20%20result%20%3D%20func%2Eapply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21timeout%20%26%26%20options%2Etrailing%20%21%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20remaining%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%2F%2F%20jshint%20ignore%3Aend%0A%2F%2F%20jscs%3Aenable%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Create%20a%20requestAnimationFrame%20simulation%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BNumber%7CString%7D%20refreshRate%0A%20%20%20%2A%20%40return%20%7BFunction%7D%0A%20%20%20%2A%2F%0A%2C%20createRequestAnimationFrame%3A%20function%28refreshRate%29%20%7B%0A%20%20%20%20var%20timeout%20%3D%20null%0A%0A%20%20%20%20%2F%2F%20Convert%20refreshRate%20to%20timeout%0A%20%20%20%20if%20%28refreshRate%20%21%3D%3D%20%27auto%27%20%26%26%20refreshRate%20%3C%2060%20%26%26%20refreshRate%20%3E%201%29%20%7B%0A%20%20%20%20%20%20timeout%20%3D%20Math%2Efloor%281000%20%2F%20refreshRate%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28timeout%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20window%2ErequestAnimationFrame%20%7C%7C%20requestTimeout%2833%29%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20requestTimeout%28timeout%29%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Create%20a%20callback%20that%20will%20execute%20after%20a%20given%20timeout%0A%20%2A%0A%20%2A%20%40param%20%20%7BFunction%7D%20timeout%0A%20%2A%20%40return%20%7BFunction%7D%0A%20%2A%2F%0Afunction%20requestTimeout%28timeout%29%20%7B%0A%20%20return%20function%28callback%29%20%7B%0A%20%20%20%20window%2EsetTimeout%28callback%2C%20timeout%29%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%7D%5D%7D%2C%7B%7D%2C%5B1%5D%29%3B%0A&quot;&gt;&lt;/script&gt;&#10;&lt;script src=&quot;data:application/x-javascript,HTMLWidgets%2Ewidget%28%7B%0A%0A%20%20name%3A%20%27svgPanZoom%27%2C%0A%0A%20%20type%3A%20%27output%27%2C%0A%0A%20%20initialize%3A%20function%28el%2C%20width%2C%20height%29%20%7B%0A%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%2F%2F%20TODO%3A%20add%20instance%20fields%20as%20required%0A%20%20%20%20%7D%0A%0A%20%20%7D%2C%0A%0A%20%20renderValue%3A%20function%28el%2C%20x%2C%20instance%29%20%7B%0A%20%20%20%20%2F%2F%20set%20innerHTML%20equal%20to%20the%20SVG%20provided%20by%20R%20as%20x%2Esvg%0A%20%20%20%20%2F%2F%20%20for%20better%20robustness%2C%20create%20DOM%20element%20separately%0A%20%20%20%20%2F%2F%20%20and%20add%20to%20the%20htmlwidgets%20container%20el%0A%20%20%20%20el%2EinnerHTML%20%3D%20x%2Esvg%3B%0A%0A%20%20%20%20var%20svg%20%3D%20el%2EgetElementsByTagName%28%22svg%22%29%5B0%5D%0A%0A%20%20%20%20%2F%2F%20use%20this%20to%20sort%20of%20make%20our%20diagram%20responsive%0A%20%20%20%20%2F%2F%20%20or%20at%20a%20minimum%20fit%20within%20the%20bounds%20set%20by%20htmlwidgets%0A%20%20%20%20%2F%2F%20%20for%20the%20parent%20container%0A%20%20%20%20function%20makeResponsive%28el%29%7B%0A%20%20%20%20%20%20%20var%20svg%20%3D%20el%2EgetElementsByTagName%28%22svg%22%29%5B0%5D%3B%0A%20%20%20%20%20%20%20if%28svg%29%7B%0A%20%20%20%20%20%20%20%20if%28svg%2Ewidth%29%20%7Bsvg%2EremoveAttribute%28%22width%22%29%7D%3B%0A%20%20%20%20%20%20%20%20if%28svg%2Eheight%29%20%7Bsvg%2EremoveAttribute%28%22height%22%29%7D%3B%0A%20%20%20%20%20%20%20%20svg%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20svg%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20makeResponsive%28el%29%3B%0A%0A%20%20%20%20instance%2EzoomWidget%20%3D%20svgPanZoom%28svg%2C%20x%2Econfig%29%3B%0A%20%20%20%20%2F%2F%20%20use%20expando%20property%20so%20we%20can%20access%20later%0A%20%20%20%20%2F%2F%20%20%20%20somewhere%20saw%20where%20expando%20can%20cause%20memory%20leak%20in%20IE%0A%20%20%20%20%2F%2F%20%20%20%20could%20also%20set%20in%20HTMLWidgets%2Ewidgets%5Bx%5D%20where%20matches%20el%0A%20%20%20%20el%2EzoomWidget%20%3D%20instance%2EzoomWidget%3B%0A%0A%20%20%7D%2C%0A%0A%20%20resize%3A%20function%28el%2C%20width%2C%20height%2C%20instance%29%20%7B%0A%0A%20%20%7D%0A%0A%7D%29%3B%0A&quot;&gt;&lt;/script&gt;&#10;&#10;&lt;/head&gt;&#10;&lt;body style=&quot;background-color:white;&quot;&gt;&#10;&lt;div id=&quot;htmlwidget_container&quot;&gt;&#10; &lt;div id=&quot;htmlwidget-7754&quot; style=&quot;width:960px;height:500px;&quot; class=&quot;svgPanZoom&quot;&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;script type=&quot;application/json&quot; data-for=&quot;htmlwidget-7754&quot;&gt;{ &quot;x&quot;: {&#10; &quot;svg&quot;: &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;\n&lt;svg xmlns=\&quot;http://www.w3.org/2000/svg\&quot; xmlns:xlink=\&quot;http://www.w3.org/1999/xlink\&quot; width=\&quot;1152pt\&quot; height=\&quot;720pt\&quot; viewBox=\&quot;0 0 1152 720\&quot; version=\&quot;1.1\&quot;&gt;\n &lt;display xmlns:r=\&quot;http://www.r-project.org\&quot; usr=\&quot;-0.0121890951631686,0.316916474242384,-0.195716081151993,0.486389264739405\&quot;&gt;&lt;![CDATA[{\nreturns %&gt;&gt;% (cumprod(1 + .)) %&gt;&gt;% (.[endpoints(., \&quot;months\&quot;)]) %&gt;&gt;% (./lag(., k = 1) - 1) %&gt;&gt;% chart.SnailTrail(colorset = RColorBrewer::brewer.pal(9, \&quot;Set1\&quot;)[-6], add.names = \&quot;none\&quot;, width = 36, step = 36, legend.loc = \&quot;topright\&quot;)\n}\n]]&gt;&lt;/display&gt;\n &lt;defs&gt;\n &lt;g&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.417969 -3.566406 C 0.414063 -4.417969 0.503906 -5.105469 0.679688 -5.628906 C 0.855469 -6.148438 1.117188 -6.550781 1.464844 -6.832031 C 1.8125 -7.113281 2.25 -7.253906 2.777344 -7.257813 C 3.164063 -7.253906 3.503906 -7.175781 3.796875 -7.023438 C 4.085938 -6.863281 4.324219 -6.636719 4.519531 -6.347656 C 4.707031 -6.050781 4.859375 -5.695313 4.96875 -5.273438 C 5.078125 -4.851563 5.132813 -4.28125 5.132813 -3.566406 C 5.132813 -2.714844 5.042969 -2.03125 4.871094 -1.511719 C 4.691406 -0.988281 4.433594 -0.582031 4.089844 -0.300781 C 3.742188 -0.015625 3.304688 0.121094 2.777344 0.125 C 2.078125 0.121094 1.527344 -0.125 1.132813 -0.625 C 0.652344 -1.222656 0.414063 -2.203125 0.417969 -3.566406 Z M 1.332031 -3.566406 C 1.328125 -2.375 1.46875 -1.585938 1.746094 -1.195313 C 2.023438 -0.800781 2.367188 -0.601563 2.777344 -0.605469 C 3.183594 -0.601563 3.523438 -0.800781 3.804688 -1.195313 C 4.078125 -1.589844 4.21875 -2.378906 4.222656 -3.566406 C 4.21875 -4.753906 4.078125 -5.542969 3.804688 -5.9375 C 3.523438 -6.324219 3.179688 -6.519531 2.765625 -6.523438 C 2.359375 -6.519531 2.03125 -6.347656 1.789063 -6.007813 C 1.480469 -5.5625 1.328125 -4.75 1.332031 -3.566406 Z M 1.332031 -3.566406 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.917969 0 L 0.917969 -1.011719 L 1.929688 -1.011719 L 1.929688 0 Z M 0.917969 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.417969 -1.894531 L 1.351563 -1.972656 C 1.417969 -1.515625 1.578125 -1.175781 1.832031 -0.949219 C 2.082031 -0.71875 2.386719 -0.601563 2.742188 -0.605469 C 3.167969 -0.601563 3.527344 -0.765625 3.824219 -1.089844 C 4.117188 -1.410156 4.265625 -1.835938 4.269531 -2.371094 C 4.265625 -2.875 4.125 -3.273438 3.84375 -3.570313 C 3.558594 -3.859375 3.183594 -4.007813 2.726563 -4.007813 C 2.4375 -4.007813 2.179688 -3.941406 1.953125 -3.8125 C 1.71875 -3.683594 1.539063 -3.515625 1.410156 -3.308594 L 0.578125 -3.417969 L 1.277344 -7.132813 L 4.871094 -7.132813 L 4.871094 -6.28125 L 1.988281 -6.28125 L 1.597656 -4.339844 C 2.03125 -4.640625 2.488281 -4.792969 2.964844 -4.792969 C 3.59375 -4.792969 4.125 -4.574219 4.558594 -4.136719 C 4.992188 -3.699219 5.207031 -3.136719 5.210938 -2.449219 C 5.207031 -1.792969 5.019531 -1.226563 4.640625 -0.753906 C 4.175781 -0.167969 3.542969 0.121094 2.742188 0.125 C 2.082031 0.121094 1.542969 -0.0585938 1.128906 -0.425781 C 0.710938 -0.792969 0.472656 -1.28125 0.417969 -1.894531 Z M 0.417969 -1.894531 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.761719 0 L 2.875 0 L 2.875 -5.65625 C 2.660156 -5.449219 2.378906 -5.246094 2.035156 -5.042969 C 1.683594 -4.835938 1.375 -4.683594 1.101563 -4.585938 L 1.101563 -5.445313 C 1.59375 -5.671875 2.027344 -5.953125 2.402344 -6.289063 C 2.773438 -6.617188 3.035156 -6.941406 3.191406 -7.257813 L 3.761719 -7.257813 Z M 3.761719 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.085938 -0.851563 L 5.085938 0 L 0.304688 0 C 0.296875 -0.210938 0.332031 -0.414063 0.410156 -0.617188 C 0.53125 -0.9375 0.722656 -1.257813 0.992188 -1.578125 C 1.257813 -1.890625 1.648438 -2.257813 2.15625 -2.671875 C 2.9375 -3.316406 3.464844 -3.824219 3.746094 -4.203125 C 4.019531 -4.578125 4.160156 -4.9375 4.164063 -5.273438 C 4.160156 -5.625 4.035156 -5.917969 3.785156 -6.160156 C 3.53125 -6.398438 3.203125 -6.519531 2.800781 -6.523438 C 2.371094 -6.519531 2.027344 -6.390625 1.773438 -6.136719 C 1.515625 -5.878906 1.386719 -5.527344 1.386719 -5.074219 L 0.472656 -5.167969 C 0.53125 -5.847656 0.765625 -6.363281 1.175781 -6.722656 C 1.582031 -7.074219 2.128906 -7.253906 2.820313 -7.257813 C 3.511719 -7.253906 4.0625 -7.0625 4.46875 -6.679688 C 4.871094 -6.296875 5.074219 -5.820313 5.074219 -5.253906 C 5.074219 -4.960938 5.011719 -4.675781 4.894531 -4.398438 C 4.773438 -4.117188 4.578125 -3.824219 4.304688 -3.515625 C 4.027344 -3.203125 3.570313 -2.777344 2.9375 -2.242188 C 2.402344 -1.792969 2.0625 -1.488281 1.914063 -1.332031 C 1.761719 -1.167969 1.636719 -1.007813 1.539063 -0.851563 Z M 5.085938 -0.851563 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.425781 -1.910156 L 1.3125 -2.027344 C 1.414063 -1.523438 1.585938 -1.160156 1.832031 -0.9375 C 2.074219 -0.714844 2.371094 -0.601563 2.726563 -0.605469 C 3.140625 -0.601563 3.496094 -0.746094 3.785156 -1.039063 C 4.070313 -1.324219 4.210938 -1.683594 4.214844 -2.117188 C 4.210938 -2.519531 4.078125 -2.855469 3.816406 -3.121094 C 3.546875 -3.382813 3.210938 -3.515625 2.800781 -3.519531 C 2.632813 -3.515625 2.421875 -3.484375 2.175781 -3.421875 L 2.273438 -4.203125 C 2.332031 -4.191406 2.378906 -4.1875 2.417969 -4.191406 C 2.792969 -4.1875 3.132813 -4.289063 3.4375 -4.488281 C 3.738281 -4.683594 3.890625 -4.984375 3.890625 -5.398438 C 3.890625 -5.71875 3.777344 -5.988281 3.558594 -6.207031 C 3.335938 -6.417969 3.054688 -6.527344 2.707031 -6.53125 C 2.363281 -6.527344 2.074219 -6.417969 1.84375 -6.203125 C 1.613281 -5.984375 1.464844 -5.660156 1.402344 -5.226563 L 0.511719 -5.386719 C 0.617188 -5.976563 0.863281 -6.4375 1.25 -6.765625 C 1.632813 -7.089844 2.113281 -7.253906 2.6875 -7.257813 C 3.082031 -7.253906 3.445313 -7.167969 3.777344 -7.003906 C 4.109375 -6.832031 4.363281 -6.601563 4.539063 -6.3125 C 4.714844 -6.015625 4.804688 -5.707031 4.804688 -5.378906 C 4.804688 -5.066406 4.71875 -4.78125 4.550781 -4.527344 C 4.382813 -4.269531 4.136719 -4.066406 3.808594 -3.914063 C 4.234375 -3.816406 4.566406 -3.609375 4.804688 -3.300781 C 5.039063 -2.988281 5.15625 -2.601563 5.160156 -2.136719 C 5.15625 -1.5 4.925781 -0.964844 4.46875 -0.527344 C 4.003906 -0.0898438 3.421875 0.128906 2.722656 0.128906 C 2.085938 0.128906 1.558594 -0.0585938 1.140625 -0.4375 C 0.71875 -0.816406 0.480469 -1.308594 0.425781 -1.910156 Z M 0.425781 -1.910156 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.84375 0 L 0.0429688 -7.230469 L 1.078125 -7.230469 L 2.960938 -1.976563 C 3.109375 -1.554688 3.238281 -1.160156 3.339844 -0.792969 C 3.449219 -1.183594 3.578125 -1.578125 3.726563 -1.976563 L 5.679688 -7.230469 L 6.65625 -7.230469 L 3.828125 0 Z M 2.84375 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-7\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.828125 0 L 0.828125 -7.230469 L 5.707031 -7.230469 L 5.707031 -6.375 L 1.785156 -6.375 L 1.785156 -4.136719 L 5.179688 -4.136719 L 5.179688 -3.285156 L 1.785156 -3.285156 L 1.785156 0 Z M 0.828125 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-8\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.941406 0 L 0.941406 -7.230469 L 1.898438 -7.230469 L 1.898438 0 Z M 0.941406 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-9\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.769531 0 L 0.769531 -7.230469 L 1.75 -7.230469 L 5.546875 -1.554688 L 5.546875 -7.230469 L 6.464844 -7.230469 L 6.464844 0 L 5.484375 0 L 1.6875 -5.679688 L 1.6875 0 Z M 0.769531 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-10\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.0429688 0 L 2.839844 -3.769531 L 0.375 -7.230469 L 1.515625 -7.230469 L 2.824219 -5.375 C 3.097656 -4.984375 3.289063 -4.691406 3.40625 -4.488281 C 3.5625 -4.75 3.753906 -5.023438 3.980469 -5.3125 L 5.433594 -7.230469 L 6.476563 -7.230469 L 3.933594 -3.820313 L 6.671875 0 L 5.488281 0 L 3.667969 -2.578125 C 3.566406 -2.726563 3.460938 -2.886719 3.355469 -3.0625 C 3.191406 -2.796875 3.074219 -2.617188 3.007813 -2.519531 L 1.195313 0 Z M 0.0429688 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-11\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.800781 0 L 0.800781 -7.230469 L 6.027344 -7.230469 L 6.027344 -6.375 L 1.753906 -6.375 L 1.753906 -4.164063 L 5.753906 -4.164063 L 5.753906 -3.3125 L 1.753906 -3.3125 L 1.753906 -0.851563 L 6.195313 -0.851563 L 6.195313 0 Z M 0.800781 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-12\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -0.015625 0 L 2.761719 -7.230469 L 3.792969 -7.230469 L 6.75 0 L 5.660156 0 L 4.816406 -2.191406 L 1.796875 -2.191406 L 1 0 Z M 2.070313 -2.96875 L 4.523438 -2.96875 L 3.769531 -4.972656 C 3.535156 -5.578125 3.363281 -6.078125 3.253906 -6.46875 C 3.160156 -6.003906 3.03125 -5.542969 2.867188 -5.089844 Z M 2.070313 -2.96875 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-13\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.738281 0 L 0.738281 -7.230469 L 3.453125 -7.230469 C 4 -7.230469 4.445313 -7.15625 4.78125 -7.007813 C 5.113281 -6.859375 5.371094 -6.632813 5.5625 -6.332031 C 5.75 -6.027344 5.847656 -5.710938 5.847656 -5.378906 C 5.847656 -5.070313 5.761719 -4.777344 5.597656 -4.507813 C 5.425781 -4.230469 5.175781 -4.011719 4.839844 -3.847656 C 5.273438 -3.71875 5.605469 -3.5 5.84375 -3.191406 C 6.078125 -2.878906 6.199219 -2.515625 6.199219 -2.097656 C 6.199219 -1.757813 6.125 -1.441406 5.984375 -1.152344 C 5.835938 -0.859375 5.660156 -0.632813 5.453125 -0.476563 C 5.242188 -0.316406 4.980469 -0.199219 4.664063 -0.121094 C 4.34375 -0.0390625 3.953125 0 3.496094 0 Z M 1.695313 -4.191406 L 3.261719 -4.191406 C 3.679688 -4.1875 3.984375 -4.21875 4.171875 -4.277344 C 4.414063 -4.347656 4.597656 -4.464844 4.722656 -4.632813 C 4.84375 -4.800781 4.902344 -5.011719 4.90625 -5.265625 C 4.902344 -5.503906 4.847656 -5.714844 4.734375 -5.902344 C 4.617188 -6.082031 4.453125 -6.207031 4.242188 -6.273438 C 4.027344 -6.339844 3.660156 -6.375 3.140625 -6.375 L 1.695313 -6.375 Z M 1.695313 -0.851563 L 3.496094 -0.851563 C 3.804688 -0.847656 4.023438 -0.859375 4.148438 -0.886719 C 4.367188 -0.921875 4.550781 -0.988281 4.699219 -1.082031 C 4.847656 -1.171875 4.96875 -1.304688 5.0625 -1.484375 C 5.15625 -1.65625 5.203125 -1.863281 5.207031 -2.097656 C 5.203125 -2.363281 5.132813 -2.59375 5 -2.796875 C 4.859375 -2.992188 4.667969 -3.132813 4.425781 -3.21875 C 4.175781 -3.296875 3.824219 -3.339844 3.367188 -3.339844 L 1.695313 -3.339844 Z M 1.695313 -0.851563 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-14\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.75 0 L 0.75 -7.230469 L 2.191406 -7.230469 L 3.902344 -2.109375 C 4.058594 -1.632813 4.171875 -1.273438 4.246094 -1.039063 C 4.328125 -1.296875 4.457031 -1.683594 4.628906 -2.199219 L 6.363281 -7.230469 L 7.648438 -7.230469 L 7.648438 0 L 6.726563 0 L 6.726563 -6.050781 L 4.625 0 L 3.761719 0 L 1.671875 -6.15625 L 1.671875 0 Z M 0.75 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-15\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.042969 0 L 0.125 -7.230469 L 1.105469 -7.230469 L 2.203125 -2.492188 C 2.320313 -1.992188 2.421875 -1.5 2.511719 -1.011719 C 2.691406 -1.78125 2.800781 -2.226563 2.835938 -2.347656 L 4.210938 -7.230469 L 5.367188 -7.230469 L 6.402344 -3.570313 C 6.65625 -2.660156 6.84375 -1.808594 6.964844 -1.011719 C 7.054688 -1.464844 7.175781 -1.988281 7.324219 -2.585938 L 8.457031 -7.230469 L 9.417969 -7.230469 L 7.4375 0 L 6.515625 0 L 4.992188 -5.507813 C 4.859375 -5.96875 4.78125 -6.25 4.765625 -6.355469 C 4.6875 -6.023438 4.617188 -5.742188 4.550781 -5.507813 L 3.019531 0 Z M 2.042969 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-16\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 4.164063 -2.835938 L 4.164063 -3.683594 L 7.226563 -3.6875 L 7.226563 -1.007813 C 6.75 -0.632813 6.265625 -0.347656 5.769531 -0.160156 C 5.265625 0.03125 4.753906 0.121094 4.230469 0.125 C 3.519531 0.121094 2.875 -0.0273438 2.296875 -0.332031 C 1.714844 -0.632813 1.273438 -1.074219 0.980469 -1.652344 C 0.683594 -2.226563 0.539063 -2.867188 0.539063 -3.582031 C 0.539063 -4.28125 0.683594 -4.9375 0.980469 -5.550781 C 1.269531 -6.15625 1.695313 -6.609375 2.25 -6.90625 C 2.800781 -7.199219 3.433594 -7.347656 4.15625 -7.351563 C 4.675781 -7.347656 5.148438 -7.261719 5.574219 -7.097656 C 5.992188 -6.925781 6.324219 -6.691406 6.566406 -6.390625 C 6.804688 -6.085938 6.988281 -5.691406 7.117188 -5.207031 L 6.253906 -4.972656 C 6.140625 -5.335938 6.007813 -5.625 5.847656 -5.839844 C 5.683594 -6.046875 5.453125 -6.214844 5.15625 -6.34375 C 4.859375 -6.46875 4.527344 -6.53125 4.164063 -6.535156 C 3.722656 -6.53125 3.34375 -6.464844 3.027344 -6.335938 C 2.707031 -6.199219 2.449219 -6.023438 2.253906 -5.808594 C 2.054688 -5.589844 1.902344 -5.351563 1.800781 -5.09375 C 1.613281 -4.640625 1.523438 -4.15625 1.523438 -3.640625 C 1.523438 -2.992188 1.632813 -2.453125 1.855469 -2.019531 C 2.078125 -1.585938 2.402344 -1.265625 2.824219 -1.054688 C 3.246094 -0.84375 3.695313 -0.738281 4.175781 -0.738281 C 4.585938 -0.738281 4.988281 -0.816406 5.386719 -0.976563 C 5.777344 -1.136719 6.078125 -1.308594 6.289063 -1.488281 L 6.289063 -2.835938 Z M 4.164063 -2.835938 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-17\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.617188 0 L 2.617188 -6.375 L 0.238281 -6.375 L 0.238281 -7.230469 L 5.96875 -7.230469 L 5.96875 -6.375 L 3.574219 -6.375 L 3.574219 0 Z M 2.617188 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph0-18\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.792969 0 L 0.792969 -7.230469 L 4 -7.230469 C 4.640625 -7.230469 5.128906 -7.164063 5.46875 -7.035156 C 5.800781 -6.902344 6.070313 -6.671875 6.273438 -6.347656 C 6.472656 -6.015625 6.574219 -5.652344 6.574219 -5.257813 C 6.574219 -4.742188 6.40625 -4.3125 6.074219 -3.960938 C 5.742188 -3.609375 5.230469 -3.382813 4.539063 -3.289063 C 4.789063 -3.164063 4.980469 -3.046875 5.113281 -2.929688 C 5.390625 -2.671875 5.65625 -2.351563 5.90625 -1.96875 L 7.164063 0 L 5.960938 0 L 5.003906 -1.503906 C 4.722656 -1.9375 4.492188 -2.269531 4.3125 -2.5 C 4.132813 -2.726563 3.96875 -2.886719 3.828125 -2.980469 C 3.679688 -3.070313 3.535156 -3.136719 3.394531 -3.175781 C 3.28125 -3.199219 3.105469 -3.210938 2.859375 -3.210938 L 1.75 -3.210938 L 1.75 0 Z M 1.75 -4.039063 L 3.808594 -4.039063 C 4.246094 -4.035156 4.585938 -4.082031 4.832031 -4.171875 C 5.078125 -4.261719 5.265625 -4.40625 5.394531 -4.605469 C 5.519531 -4.804688 5.582031 -5.019531 5.585938 -5.257813 C 5.582031 -5.59375 5.460938 -5.875 5.214844 -6.097656 C 4.964844 -6.316406 4.570313 -6.425781 4.039063 -6.429688 L 1.75 -6.429688 Z M 1.75 -4.039063 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -2.171875 -0.320313 L -3.0625 -0.320313 L -3.0625 -3.046875 L -2.171875 -3.046875 Z M -2.171875 -0.320313 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -3.566406 -0.417969 C -4.417969 -0.414063 -5.105469 -0.503906 -5.628906 -0.679688 C -6.148438 -0.855469 -6.550781 -1.117188 -6.832031 -1.464844 C -7.113281 -1.8125 -7.253906 -2.25 -7.257813 -2.777344 C -7.253906 -3.164063 -7.175781 -3.503906 -7.023438 -3.796875 C -6.863281 -4.085938 -6.636719 -4.324219 -6.347656 -4.519531 C -6.050781 -4.707031 -5.695313 -4.859375 -5.273438 -4.96875 C -4.851563 -5.078125 -4.28125 -5.132813 -3.566406 -5.132813 C -2.714844 -5.132813 -2.03125 -5.042969 -1.511719 -4.871094 C -0.988281 -4.691406 -0.582031 -4.433594 -0.300781 -4.089844 C -0.015625 -3.742188 0.121094 -3.304688 0.125 -2.777344 C 0.121094 -2.078125 -0.125 -1.527344 -0.625 -1.132813 C -1.222656 -0.652344 -2.203125 -0.414063 -3.566406 -0.417969 Z M -3.566406 -1.332031 C -2.375 -1.328125 -1.585938 -1.46875 -1.195313 -1.746094 C -0.800781 -2.023438 -0.601563 -2.367188 -0.605469 -2.777344 C -0.601563 -3.183594 -0.800781 -3.523438 -1.195313 -3.804688 C -1.589844 -4.078125 -2.378906 -4.21875 -3.566406 -4.222656 C -4.753906 -4.21875 -5.542969 -4.078125 -5.9375 -3.804688 C -6.324219 -3.523438 -6.519531 -3.179688 -6.523438 -2.765625 C -6.519531 -2.359375 -6.347656 -2.03125 -6.007813 -1.789063 C -5.5625 -1.480469 -4.75 -1.328125 -3.566406 -1.332031 Z M -3.566406 -1.332031 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -0.917969 L -1.011719 -0.917969 L -1.011719 -1.929688 L 0 -1.929688 Z M 0 -0.917969 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -3.761719 L 0 -2.875 L -5.65625 -2.875 C -5.449219 -2.660156 -5.246094 -2.378906 -5.042969 -2.035156 C -4.835938 -1.683594 -4.683594 -1.375 -4.585938 -1.101563 L -5.445313 -1.101563 C -5.671875 -1.59375 -5.953125 -2.027344 -6.289063 -2.402344 C -6.617188 -2.773438 -6.941406 -3.035156 -7.257813 -3.191406 L -7.257813 -3.761719 Z M 0 -3.761719 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -0.851563 -5.085938 L 0 -5.085938 L 0 -0.304688 C -0.210938 -0.296875 -0.414063 -0.332031 -0.617188 -0.410156 C -0.9375 -0.53125 -1.257813 -0.722656 -1.578125 -0.992188 C -1.890625 -1.257813 -2.257813 -1.648438 -2.671875 -2.15625 C -3.316406 -2.9375 -3.824219 -3.464844 -4.203125 -3.746094 C -4.578125 -4.019531 -4.9375 -4.160156 -5.273438 -4.164063 C -5.625 -4.160156 -5.917969 -4.035156 -6.160156 -3.785156 C -6.398438 -3.53125 -6.519531 -3.203125 -6.523438 -2.800781 C -6.519531 -2.371094 -6.390625 -2.027344 -6.136719 -1.773438 C -5.878906 -1.515625 -5.527344 -1.386719 -5.074219 -1.386719 L -5.167969 -0.472656 C -5.847656 -0.53125 -6.363281 -0.765625 -6.722656 -1.175781 C -7.074219 -1.582031 -7.253906 -2.128906 -7.257813 -2.820313 C -7.253906 -3.511719 -7.0625 -4.0625 -6.679688 -4.46875 C -6.296875 -4.871094 -5.820313 -5.074219 -5.253906 -5.074219 C -4.960938 -5.074219 -4.675781 -5.011719 -4.398438 -4.894531 C -4.117188 -4.773438 -3.824219 -4.578125 -3.515625 -4.304688 C -3.203125 -4.027344 -2.777344 -3.570313 -2.242188 -2.9375 C -1.792969 -2.402344 -1.488281 -2.0625 -1.332031 -1.914063 C -1.167969 -1.761719 -1.007813 -1.636719 -0.851563 -1.539063 Z M -0.851563 -5.085938 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -1.910156 -0.425781 L -2.027344 -1.3125 C -1.523438 -1.414063 -1.160156 -1.585938 -0.9375 -1.832031 C -0.714844 -2.074219 -0.601563 -2.371094 -0.605469 -2.726563 C -0.601563 -3.140625 -0.746094 -3.496094 -1.039063 -3.785156 C -1.324219 -4.070313 -1.683594 -4.210938 -2.117188 -4.214844 C -2.519531 -4.210938 -2.855469 -4.078125 -3.121094 -3.816406 C -3.382813 -3.546875 -3.515625 -3.210938 -3.519531 -2.800781 C -3.515625 -2.632813 -3.484375 -2.421875 -3.421875 -2.175781 L -4.203125 -2.273438 C -4.191406 -2.332031 -4.1875 -2.378906 -4.191406 -2.417969 C -4.1875 -2.792969 -4.289063 -3.132813 -4.488281 -3.4375 C -4.683594 -3.738281 -4.984375 -3.890625 -5.398438 -3.890625 C -5.71875 -3.890625 -5.988281 -3.777344 -6.207031 -3.558594 C -6.417969 -3.335938 -6.527344 -3.054688 -6.53125 -2.707031 C -6.527344 -2.363281 -6.417969 -2.074219 -6.203125 -1.84375 C -5.984375 -1.613281 -5.660156 -1.464844 -5.226563 -1.402344 L -5.386719 -0.511719 C -5.976563 -0.617188 -6.4375 -0.863281 -6.765625 -1.25 C -7.089844 -1.632813 -7.253906 -2.113281 -7.257813 -2.6875 C -7.253906 -3.082031 -7.167969 -3.445313 -7.003906 -3.777344 C -6.832031 -4.109375 -6.601563 -4.363281 -6.3125 -4.539063 C -6.015625 -4.714844 -5.707031 -4.804688 -5.378906 -4.804688 C -5.066406 -4.804688 -4.78125 -4.71875 -4.527344 -4.550781 C -4.269531 -4.382813 -4.066406 -4.136719 -3.914063 -3.808594 C -3.816406 -4.234375 -3.609375 -4.566406 -3.300781 -4.804688 C -2.988281 -5.039063 -2.601563 -5.15625 -2.136719 -5.160156 C -1.5 -5.15625 -0.964844 -4.925781 -0.527344 -4.46875 C -0.0898438 -4.003906 0.128906 -3.421875 0.128906 -2.722656 C 0.128906 -2.085938 -0.0585938 -1.558594 -0.4375 -1.140625 C -0.816406 -0.71875 -1.308594 -0.480469 -1.910156 -0.425781 Z M -1.910156 -0.425781 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph1-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -3.265625 L -1.730469 -3.265625 L -1.730469 -0.128906 L -2.542969 -0.128906 L -7.230469 -3.425781 L -7.230469 -4.152344 L -2.542969 -4.152344 L -2.542969 -5.128906 L -1.730469 -5.128906 L -1.730469 -4.152344 L 0 -4.152344 Z M -2.542969 -3.265625 L -5.804688 -3.265625 L -2.542969 -1 Z M -2.542969 -3.265625 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 0.0195313 L -8.949219 -3.417969 L -8.949219 -4.695313 L 0 -8.355469 L 0 -7.007813 L -2.710938 -5.964844 L -2.710938 -2.222656 L 0 -1.238281 Z M -3.675781 -2.5625 L -3.675781 -5.597656 L -6.152344 -4.664063 C -6.902344 -4.375 -7.519531 -4.160156 -8.007813 -4.027344 C -7.433594 -3.910156 -6.863281 -3.75 -6.296875 -3.546875 Z M -3.675781 -2.5625 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -0.824219 L -6.480469 -0.824219 L -6.480469 -1.8125 L -5.558594 -1.8125 C -6.269531 -2.285156 -6.625 -2.972656 -6.628906 -3.875 C -6.625 -4.261719 -6.554688 -4.621094 -6.417969 -4.953125 C -6.273438 -5.277344 -6.089844 -5.523438 -5.863281 -5.6875 C -5.632813 -5.847656 -5.363281 -5.960938 -5.054688 -6.03125 C -4.847656 -6.066406 -4.492188 -6.085938 -3.984375 -6.089844 L 0 -6.089844 L 0 -4.992188 L -3.941406 -4.992188 C -4.386719 -4.992188 -4.722656 -4.949219 -4.945313 -4.863281 C -5.167969 -4.777344 -5.34375 -4.625 -5.476563 -4.40625 C -5.605469 -4.1875 -5.671875 -3.933594 -5.675781 -3.644531 C -5.671875 -3.175781 -5.523438 -2.769531 -5.230469 -2.429688 C -4.929688 -2.089844 -4.367188 -1.921875 -3.539063 -1.921875 L 0 -1.921875 Z M 0 -0.824219 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -5.070313 L -0.953125 -5.070313 C -0.21875 -4.5625 0.144531 -3.878906 0.148438 -3.015625 C 0.144531 -2.628906 0.0742188 -2.269531 -0.0703125 -1.941406 C -0.21875 -1.605469 -0.402344 -1.359375 -0.625 -1.203125 C -0.84375 -1.039063 -1.117188 -0.929688 -1.441406 -0.867188 C -1.65625 -0.820313 -1.996094 -0.796875 -2.464844 -0.800781 L -6.480469 -0.800781 L -6.480469 -1.898438 L -2.886719 -1.898438 C -2.3125 -1.898438 -1.925781 -1.917969 -1.726563 -1.964844 C -1.433594 -2.03125 -1.207031 -2.179688 -1.046875 -2.40625 C -0.878906 -2.628906 -0.796875 -2.90625 -0.800781 -3.234375 C -0.796875 -3.5625 -0.878906 -3.871094 -1.050781 -4.164063 C -1.214844 -4.449219 -1.445313 -4.652344 -1.742188 -4.777344 C -2.03125 -4.894531 -2.453125 -4.957031 -3.007813 -4.957031 L -6.480469 -4.957031 L -6.480469 -6.054688 L 0 -6.054688 Z M 0 -5.070313 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -0.800781 -5.054688 C -0.453125 -4.644531 -0.207031 -4.253906 -0.0664063 -3.878906 C 0.078125 -3.5 0.144531 -3.09375 0.148438 -2.667969 C 0.144531 -1.949219 -0.0273438 -1.402344 -0.375 -1.023438 C -0.722656 -0.640625 -1.167969 -0.449219 -1.710938 -0.453125 C -2.023438 -0.449219 -2.3125 -0.523438 -2.578125 -0.667969 C -2.839844 -0.8125 -3.050781 -1 -3.210938 -1.234375 C -3.367188 -1.464844 -3.484375 -1.730469 -3.570313 -2.027344 C -3.625 -2.242188 -3.679688 -2.566406 -3.734375 -3.003906 C -3.835938 -3.886719 -3.964844 -4.539063 -4.113281 -4.960938 C -4.261719 -4.964844 -4.355469 -4.96875 -4.402344 -4.96875 C -4.84375 -4.96875 -5.160156 -4.863281 -5.347656 -4.65625 C -5.59375 -4.371094 -5.71875 -3.953125 -5.71875 -3.40625 C -5.71875 -2.882813 -5.625 -2.5 -5.445313 -2.257813 C -5.261719 -2.007813 -4.941406 -1.828125 -4.484375 -1.714844 L -4.632813 -0.640625 C -5.089844 -0.734375 -5.460938 -0.894531 -5.746094 -1.121094 C -6.027344 -1.339844 -6.246094 -1.664063 -6.398438 -2.089844 C -6.550781 -2.511719 -6.625 -3.003906 -6.628906 -3.566406 C -6.625 -4.117188 -6.5625 -4.566406 -6.433594 -4.914063 C -6.300781 -5.257813 -6.136719 -5.511719 -5.941406 -5.675781 C -5.742188 -5.835938 -5.492188 -5.949219 -5.195313 -6.019531 C -5.003906 -6.050781 -4.664063 -6.070313 -4.179688 -6.074219 L -2.714844 -6.074219 C -1.691406 -6.070313 -1.046875 -6.09375 -0.777344 -6.144531 C -0.503906 -6.1875 -0.246094 -6.28125 0 -6.421875 L 0 -5.273438 C -0.226563 -5.15625 -0.492188 -5.082031 -0.800781 -5.054688 Z M -3.253906 -4.960938 C -3.085938 -4.558594 -2.949219 -3.960938 -2.839844 -3.167969 C -2.773438 -2.714844 -2.699219 -2.394531 -2.617188 -2.210938 C -2.535156 -2.019531 -2.417969 -1.875 -2.261719 -1.777344 C -2.105469 -1.671875 -1.929688 -1.621094 -1.738281 -1.625 C -1.445313 -1.621094 -1.203125 -1.734375 -1.007813 -1.957031 C -0.8125 -2.175781 -0.714844 -2.5 -0.714844 -2.929688 C -0.714844 -3.351563 -0.804688 -3.726563 -0.992188 -4.058594 C -1.171875 -4.386719 -1.425781 -4.628906 -1.75 -4.785156 C -1.996094 -4.898438 -2.363281 -4.957031 -2.851563 -4.960938 Z M -3.253906 -4.960938 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -0.800781 L -8.949219 -0.800781 L -8.949219 -1.898438 L 0 -1.898438 Z M 0 -0.800781 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -7.683594 -0.832031 L -8.949219 -0.832031 L -8.949219 -1.929688 L -7.683594 -1.929688 Z M 0 -0.828125 L -6.480469 -0.832031 L -6.480469 -1.929688 L 0 -1.929688 Z M 0 -0.828125 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -0.242188 L -0.890625 -0.246094 L -5.628906 -4.371094 C -5.601563 -3.902344 -5.589844 -3.488281 -5.589844 -3.132813 L -5.589844 -0.488281 L -6.480469 -0.488281 L -6.480469 -5.785156 L -5.753906 -5.785156 L -1.640625 -2.277344 L -0.890625 -1.597656 C -0.925781 -2.085938 -0.941406 -2.546875 -0.945313 -2.984375 L -0.945313 -5.980469 L 0 -5.980469 Z M 0 -0.242188 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-7\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -2.085938 -5.261719 L -1.945313 -6.398438 C -1.28125 -6.21875 -0.765625 -5.886719 -0.402344 -5.402344 C -0.0351563 -4.917969 0.144531 -4.296875 0.148438 -3.546875 C 0.144531 -2.59375 -0.144531 -1.84375 -0.726563 -1.289063 C -1.3125 -0.734375 -2.132813 -0.457031 -3.1875 -0.457031 C -4.273438 -0.457031 -5.117188 -0.734375 -5.722656 -1.296875 C -6.324219 -1.855469 -6.625 -2.585938 -6.628906 -3.484375 C -6.625 -4.347656 -6.332031 -5.054688 -5.742188 -5.609375 C -5.152344 -6.15625 -4.320313 -6.433594 -3.253906 -6.433594 C -3.183594 -6.433594 -3.085938 -6.429688 -2.960938 -6.425781 L -2.960938 -1.59375 C -2.242188 -1.632813 -1.699219 -1.832031 -1.324219 -2.195313 C -0.945313 -2.558594 -0.753906 -3.011719 -0.757813 -3.550781 C -0.753906 -3.953125 -0.859375 -4.296875 -1.074219 -4.582031 C -1.28125 -4.867188 -1.621094 -5.09375 -2.085938 -5.261719 Z M -3.863281 -1.652344 L -3.863281 -5.273438 C -4.402344 -5.222656 -4.8125 -5.082031 -5.089844 -4.859375 C -5.511719 -4.503906 -5.722656 -4.050781 -5.726563 -3.496094 C -5.722656 -2.992188 -5.554688 -2.570313 -5.21875 -2.226563 C -4.878906 -1.882813 -4.425781 -1.691406 -3.863281 -1.652344 Z M -3.863281 -1.652344 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-8\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -5.03125 L -0.816406 -5.03125 C -0.171875 -4.617188 0.144531 -4.011719 0.148438 -3.214844 C 0.144531 -2.695313 0.0078125 -2.21875 -0.277344 -1.789063 C -0.558594 -1.351563 -0.957031 -1.015625 -1.472656 -0.78125 C -1.980469 -0.539063 -2.570313 -0.421875 -3.234375 -0.425781 C -3.882813 -0.421875 -4.46875 -0.53125 -4.996094 -0.75 C -5.519531 -0.964844 -5.921875 -1.285156 -6.207031 -1.71875 C -6.484375 -2.148438 -6.625 -2.632813 -6.628906 -3.167969 C -6.625 -3.554688 -6.542969 -3.902344 -6.378906 -4.210938 C -6.210938 -4.511719 -5.996094 -4.761719 -5.738281 -4.957031 L -8.949219 -4.957031 L -8.949219 -6.046875 L 0 -6.046875 Z M -3.234375 -1.554688 C -2.402344 -1.550781 -1.78125 -1.726563 -1.371094 -2.078125 C -0.960938 -2.425781 -0.753906 -2.839844 -0.757813 -3.320313 C -0.753906 -3.796875 -0.949219 -4.203125 -1.34375 -4.542969 C -1.734375 -4.875 -2.335938 -5.042969 -3.144531 -5.046875 C -4.027344 -5.042969 -4.675781 -4.875 -5.09375 -4.535156 C -5.507813 -4.191406 -5.71875 -3.769531 -5.71875 -3.273438 C -5.71875 -2.78125 -5.519531 -2.371094 -5.121094 -2.046875 C -4.722656 -1.714844 -4.09375 -1.550781 -3.234375 -1.554688 Z M -3.234375 -1.554688 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-9\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;\&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-10\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -0.984375 L -8.949219 -0.984375 L -8.949219 -4.949219 C -8.945313 -5.742188 -8.867188 -6.347656 -8.707031 -6.765625 C -8.542969 -7.179688 -8.257813 -7.511719 -7.855469 -7.761719 C -7.445313 -8.007813 -6.996094 -8.132813 -6.507813 -8.136719 C -5.871094 -8.132813 -5.335938 -7.925781 -4.902344 -7.519531 C -4.464844 -7.105469 -4.1875 -6.472656 -4.070313 -5.617188 C -3.917969 -5.925781 -3.769531 -6.164063 -3.625 -6.328125 C -3.304688 -6.671875 -2.90625 -7 -2.433594 -7.3125 L 0 -8.867188 L 0 -7.378906 L -1.863281 -6.195313 C -2.398438 -5.84375 -2.808594 -5.558594 -3.09375 -5.339844 C -3.378906 -5.113281 -3.578125 -4.914063 -3.691406 -4.738281 C -3.804688 -4.558594 -3.882813 -4.378906 -3.929688 -4.199219 C -3.957031 -4.0625 -3.972656 -3.84375 -3.972656 -3.539063 L -3.972656 -2.167969 L 0 -2.167969 Z M -5 -2.167969 L -5 -4.710938 C -4.996094 -5.25 -5.054688 -5.671875 -5.167969 -5.980469 C -5.277344 -6.28125 -5.453125 -6.511719 -5.703125 -6.675781 C -5.945313 -6.832031 -6.214844 -6.914063 -6.507813 -6.914063 C -6.925781 -6.914063 -7.273438 -6.757813 -7.550781 -6.453125 C -7.820313 -6.140625 -7.957031 -5.65625 -7.960938 -5 L -7.960938 -2.167969 Z M -5 -2.167969 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-11\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -0.984375 -3.222656 L -0.0117188 -3.382813 C 0.0507813 -3.070313 0.0820313 -2.792969 0.0859375 -2.550781 C 0.0820313 -2.148438 0.0234375 -1.839844 -0.101563 -1.621094 C -0.226563 -1.398438 -0.394531 -1.242188 -0.601563 -1.15625 C -0.804688 -1.0625 -1.238281 -1.019531 -1.898438 -1.027344 L -5.628906 -1.027344 L -5.628906 -0.21875 L -6.480469 -0.21875 L -6.480469 -1.027344 L -8.085938 -1.027344 L -8.746094 -2.117188 L -6.480469 -2.117188 L -6.480469 -3.222656 L -5.628906 -3.222656 L -5.628906 -2.117188 L -1.835938 -2.117188 C -1.519531 -2.113281 -1.320313 -2.132813 -1.230469 -2.175781 C -1.140625 -2.210938 -1.070313 -2.273438 -1.019531 -2.363281 C -0.964844 -2.449219 -0.9375 -2.578125 -0.941406 -2.742188 C -0.9375 -2.859375 -0.953125 -3.019531 -0.984375 -3.222656 Z M -0.984375 -3.222656 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph2-12\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0 -0.8125 L -6.480469 -0.8125 L -6.480469 -1.800781 L -5.5 -1.800781 C -5.957031 -2.050781 -6.257813 -2.285156 -6.40625 -2.5 C -6.550781 -2.710938 -6.625 -2.945313 -6.628906 -3.203125 C -6.625 -3.574219 -6.507813 -3.949219 -6.273438 -4.332031 L -5.253906 -3.957031 C -5.410156 -3.683594 -5.488281 -3.414063 -5.492188 -3.148438 C -5.488281 -2.90625 -5.417969 -2.691406 -5.273438 -2.5 C -5.128906 -2.308594 -4.929688 -2.171875 -4.675781 -2.09375 C -4.285156 -1.96875 -3.855469 -1.910156 -3.394531 -1.910156 L 0 -1.910156 Z M 0 -0.8125 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M -0.0195313 0 L 3.417969 -8.949219 L 4.695313 -8.949219 L 8.355469 0 L 7.007813 0 L 5.964844 -2.710938 L 2.222656 -2.710938 L 1.238281 0 Z M 2.5625 -3.675781 L 5.597656 -3.675781 L 4.664063 -6.152344 C 4.375 -6.902344 4.160156 -7.519531 4.027344 -8.007813 C 3.910156 -7.433594 3.75 -6.863281 3.546875 -6.296875 Z M 2.5625 -3.675781 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.824219 0 L 0.824219 -6.480469 L 1.8125 -6.480469 L 1.8125 -5.558594 C 2.285156 -6.269531 2.972656 -6.625 3.875 -6.628906 C 4.261719 -6.625 4.621094 -6.554688 4.953125 -6.417969 C 5.277344 -6.273438 5.523438 -6.089844 5.6875 -5.863281 C 5.847656 -5.632813 5.960938 -5.363281 6.03125 -5.054688 C 6.066406 -4.847656 6.085938 -4.492188 6.089844 -3.984375 L 6.089844 0 L 4.992188 0 L 4.992188 -3.941406 C 4.992188 -4.386719 4.949219 -4.722656 4.863281 -4.945313 C 4.777344 -5.167969 4.625 -5.34375 4.40625 -5.476563 C 4.1875 -5.605469 3.933594 -5.671875 3.644531 -5.675781 C 3.175781 -5.671875 2.769531 -5.523438 2.429688 -5.230469 C 2.089844 -4.929688 1.921875 -4.367188 1.921875 -3.539063 L 1.921875 0 Z M 0.824219 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.070313 0 L 5.070313 -0.953125 C 4.5625 -0.21875 3.878906 0.144531 3.015625 0.148438 C 2.628906 0.144531 2.269531 0.0742188 1.941406 -0.0703125 C 1.605469 -0.21875 1.359375 -0.402344 1.203125 -0.625 C 1.039063 -0.84375 0.929688 -1.117188 0.867188 -1.441406 C 0.820313 -1.65625 0.796875 -1.996094 0.800781 -2.464844 L 0.800781 -6.480469 L 1.898438 -6.480469 L 1.898438 -2.886719 C 1.898438 -2.3125 1.917969 -1.925781 1.964844 -1.726563 C 2.03125 -1.433594 2.179688 -1.207031 2.40625 -1.046875 C 2.628906 -0.878906 2.90625 -0.796875 3.234375 -0.800781 C 3.5625 -0.796875 3.871094 -0.878906 4.164063 -1.050781 C 4.449219 -1.214844 4.652344 -1.445313 4.777344 -1.742188 C 4.894531 -2.03125 4.957031 -2.453125 4.957031 -3.007813 L 4.957031 -6.480469 L 6.054688 -6.480469 L 6.054688 0 Z M 5.070313 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.054688 -0.800781 C 4.644531 -0.453125 4.253906 -0.207031 3.878906 -0.0664063 C 3.5 0.078125 3.09375 0.144531 2.667969 0.148438 C 1.949219 0.144531 1.402344 -0.0273438 1.023438 -0.375 C 0.640625 -0.722656 0.449219 -1.167969 0.453125 -1.710938 C 0.449219 -2.023438 0.523438 -2.3125 0.667969 -2.578125 C 0.8125 -2.839844 1 -3.050781 1.234375 -3.210938 C 1.464844 -3.367188 1.730469 -3.484375 2.027344 -3.570313 C 2.242188 -3.625 2.566406 -3.679688 3.003906 -3.734375 C 3.886719 -3.835938 4.539063 -3.964844 4.960938 -4.113281 C 4.964844 -4.261719 4.96875 -4.355469 4.96875 -4.402344 C 4.96875 -4.84375 4.863281 -5.160156 4.65625 -5.347656 C 4.371094 -5.59375 3.953125 -5.71875 3.40625 -5.71875 C 2.882813 -5.71875 2.5 -5.625 2.257813 -5.445313 C 2.007813 -5.261719 1.828125 -4.941406 1.714844 -4.484375 L 0.640625 -4.632813 C 0.734375 -5.089844 0.894531 -5.460938 1.121094 -5.746094 C 1.339844 -6.027344 1.664063 -6.246094 2.089844 -6.398438 C 2.511719 -6.550781 3.003906 -6.625 3.5625 -6.628906 C 4.117188 -6.625 4.566406 -6.5625 4.914063 -6.433594 C 5.257813 -6.300781 5.511719 -6.136719 5.675781 -5.941406 C 5.835938 -5.742188 5.949219 -5.492188 6.019531 -5.195313 C 6.050781 -5.003906 6.070313 -4.664063 6.074219 -4.179688 L 6.074219 -2.714844 C 6.070313 -1.691406 6.09375 -1.046875 6.144531 -0.777344 C 6.1875 -0.503906 6.28125 -0.246094 6.421875 0 L 5.273438 0 C 5.15625 -0.226563 5.082031 -0.492188 5.054688 -0.800781 Z M 4.960938 -3.253906 C 4.558594 -3.085938 3.960938 -2.949219 3.167969 -2.839844 C 2.714844 -2.773438 2.394531 -2.699219 2.210938 -2.617188 C 2.019531 -2.535156 1.875 -2.417969 1.777344 -2.261719 C 1.671875 -2.105469 1.621094 -1.929688 1.625 -1.738281 C 1.621094 -1.445313 1.734375 -1.203125 1.957031 -1.007813 C 2.175781 -0.8125 2.5 -0.714844 2.929688 -0.714844 C 3.351563 -0.714844 3.726563 -0.804688 4.058594 -0.992188 C 4.386719 -1.171875 4.628906 -1.425781 4.785156 -1.75 C 4.898438 -1.996094 4.957031 -2.363281 4.960938 -2.851563 Z M 4.960938 -3.253906 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.800781 0 L 0.800781 -8.949219 L 1.898438 -8.949219 L 1.898438 0 Z M 0.800781 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.828125 -7.683594 L 0.828125 -8.949219 L 1.929688 -8.949219 L 1.929688 -7.683594 Z M 0.828125 0 L 0.828125 -6.480469 L 1.929688 -6.480469 L 1.929688 0 Z M 0.828125 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.242188 0 L 0.242188 -0.890625 L 4.371094 -5.628906 C 3.902344 -5.601563 3.488281 -5.589844 3.132813 -5.589844 L 0.488281 -5.589844 L 0.488281 -6.480469 L 5.785156 -6.480469 L 5.785156 -5.753906 L 2.277344 -1.640625 L 1.597656 -0.890625 C 2.085938 -0.925781 2.546875 -0.941406 2.984375 -0.945313 L 5.980469 -0.945313 L 5.980469 0 Z M 0.242188 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-7\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.261719 -2.085938 L 6.398438 -1.945313 C 6.21875 -1.28125 5.886719 -0.765625 5.402344 -0.402344 C 4.917969 -0.0351563 4.296875 0.144531 3.546875 0.148438 C 2.59375 0.144531 1.84375 -0.144531 1.289063 -0.726563 C 0.734375 -1.3125 0.457031 -2.132813 0.457031 -3.1875 C 0.457031 -4.273438 0.734375 -5.117188 1.296875 -5.722656 C 1.855469 -6.324219 2.585938 -6.625 3.484375 -6.628906 C 4.347656 -6.625 5.054688 -6.332031 5.609375 -5.742188 C 6.15625 -5.152344 6.433594 -4.320313 6.433594 -3.253906 C 6.433594 -3.183594 6.429688 -3.085938 6.425781 -2.960938 L 1.59375 -2.960938 C 1.632813 -2.242188 1.832031 -1.699219 2.195313 -1.324219 C 2.558594 -0.945313 3.011719 -0.753906 3.550781 -0.757813 C 3.953125 -0.753906 4.296875 -0.859375 4.582031 -1.074219 C 4.867188 -1.28125 5.09375 -1.621094 5.261719 -2.085938 Z M 1.652344 -3.863281 L 5.273438 -3.863281 C 5.222656 -4.402344 5.082031 -4.8125 4.859375 -5.089844 C 4.503906 -5.511719 4.050781 -5.722656 3.496094 -5.726563 C 2.992188 -5.722656 2.570313 -5.554688 2.226563 -5.21875 C 1.882813 -4.878906 1.691406 -4.425781 1.652344 -3.863281 Z M 1.652344 -3.863281 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-8\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.03125 0 L 5.03125 -0.816406 C 4.617188 -0.171875 4.011719 0.144531 3.214844 0.148438 C 2.695313 0.144531 2.21875 0.0078125 1.789063 -0.277344 C 1.351563 -0.558594 1.015625 -0.957031 0.78125 -1.472656 C 0.539063 -1.980469 0.421875 -2.570313 0.425781 -3.234375 C 0.421875 -3.882813 0.53125 -4.46875 0.75 -4.996094 C 0.964844 -5.519531 1.285156 -5.921875 1.71875 -6.207031 C 2.148438 -6.484375 2.632813 -6.625 3.167969 -6.628906 C 3.554688 -6.625 3.902344 -6.542969 4.210938 -6.378906 C 4.511719 -6.210938 4.761719 -5.996094 4.957031 -5.738281 L 4.957031 -8.949219 L 6.046875 -8.949219 L 6.046875 0 Z M 1.554688 -3.234375 C 1.550781 -2.402344 1.726563 -1.78125 2.078125 -1.371094 C 2.425781 -0.960938 2.839844 -0.753906 3.320313 -0.757813 C 3.796875 -0.753906 4.203125 -0.949219 4.542969 -1.34375 C 4.875 -1.734375 5.042969 -2.335938 5.046875 -3.144531 C 5.042969 -4.027344 4.875 -4.675781 4.535156 -5.09375 C 4.191406 -5.507813 3.769531 -5.71875 3.273438 -5.71875 C 2.78125 -5.71875 2.371094 -5.519531 2.046875 -5.121094 C 1.714844 -4.722656 1.550781 -4.09375 1.554688 -3.234375 Z M 1.554688 -3.234375 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-9\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;\&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-10\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.984375 0 L 0.984375 -8.949219 L 4.949219 -8.949219 C 5.742188 -8.945313 6.347656 -8.867188 6.765625 -8.707031 C 7.179688 -8.542969 7.511719 -8.257813 7.761719 -7.855469 C 8.007813 -7.445313 8.132813 -6.996094 8.136719 -6.507813 C 8.132813 -5.871094 7.925781 -5.335938 7.519531 -4.902344 C 7.105469 -4.464844 6.472656 -4.1875 5.617188 -4.070313 C 5.925781 -3.917969 6.164063 -3.769531 6.328125 -3.625 C 6.671875 -3.304688 7 -2.90625 7.3125 -2.433594 L 8.867188 0 L 7.378906 0 L 6.195313 -1.863281 C 5.84375 -2.398438 5.558594 -2.808594 5.339844 -3.09375 C 5.113281 -3.378906 4.914063 -3.578125 4.738281 -3.691406 C 4.558594 -3.804688 4.378906 -3.882813 4.199219 -3.929688 C 4.0625 -3.957031 3.84375 -3.972656 3.539063 -3.972656 L 2.167969 -3.972656 L 2.167969 0 Z M 2.167969 -5 L 4.710938 -5 C 5.25 -4.996094 5.671875 -5.054688 5.980469 -5.167969 C 6.28125 -5.277344 6.511719 -5.453125 6.675781 -5.703125 C 6.832031 -5.945313 6.914063 -6.214844 6.914063 -6.507813 C 6.914063 -6.925781 6.757813 -7.273438 6.453125 -7.550781 C 6.140625 -7.820313 5.65625 -7.957031 5 -7.960938 L 2.167969 -7.960938 Z M 2.167969 -5 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-11\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.382813 -1.933594 L 1.472656 -2.105469 C 1.527344 -1.667969 1.699219 -1.335938 1.980469 -1.105469 C 2.257813 -0.871094 2.644531 -0.753906 3.148438 -0.757813 C 3.648438 -0.753906 4.023438 -0.859375 4.273438 -1.066406 C 4.515625 -1.269531 4.640625 -1.507813 4.640625 -1.789063 C 4.640625 -2.03125 4.53125 -2.226563 4.316406 -2.375 C 4.164063 -2.46875 3.789063 -2.59375 3.191406 -2.746094 C 2.382813 -2.945313 1.824219 -3.121094 1.515625 -3.273438 C 1.203125 -3.417969 0.96875 -3.625 0.808594 -3.890625 C 0.644531 -4.152344 0.5625 -4.441406 0.566406 -4.761719 C 0.5625 -5.046875 0.628906 -5.3125 0.765625 -5.5625 C 0.894531 -5.804688 1.074219 -6.011719 1.304688 -6.175781 C 1.472656 -6.300781 1.707031 -6.40625 2.003906 -6.496094 C 2.300781 -6.582031 2.617188 -6.625 2.953125 -6.628906 C 3.460938 -6.625 3.90625 -6.550781 4.292969 -6.40625 C 4.675781 -6.257813 4.960938 -6.0625 5.144531 -5.8125 C 5.328125 -5.5625 5.453125 -5.226563 5.523438 -4.808594 L 4.449219 -4.664063 C 4.394531 -4.996094 4.253906 -5.253906 4.023438 -5.445313 C 3.789063 -5.628906 3.460938 -5.722656 3.035156 -5.726563 C 2.527344 -5.722656 2.164063 -5.640625 1.953125 -5.476563 C 1.734375 -5.308594 1.628906 -5.113281 1.628906 -4.890625 C 1.628906 -4.746094 1.671875 -4.617188 1.765625 -4.503906 C 1.851563 -4.382813 1.992188 -4.285156 2.183594 -4.210938 C 2.292969 -4.167969 2.617188 -4.074219 3.15625 -3.929688 C 3.929688 -3.722656 4.472656 -3.554688 4.78125 -3.421875 C 5.085938 -3.289063 5.324219 -3.09375 5.503906 -2.84375 C 5.675781 -2.585938 5.765625 -2.273438 5.769531 -1.90625 C 5.765625 -1.535156 5.65625 -1.191406 5.445313 -0.867188 C 5.226563 -0.542969 4.917969 -0.292969 4.519531 -0.117188 C 4.113281 0.0585938 3.660156 0.144531 3.15625 0.148438 C 2.308594 0.144531 1.664063 -0.0273438 1.226563 -0.375 C 0.78125 -0.726563 0.5 -1.246094 0.382813 -1.933594 Z M 0.382813 -1.933594 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph3-12\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.828125 0 L 0.828125 -8.949219 L 1.929688 -8.949219 L 1.929688 -3.84375 L 4.527344 -6.480469 L 5.949219 -6.480469 L 3.472656 -4.078125 L 6.203125 0 L 4.847656 0 L 2.703125 -3.3125 L 1.929688 -2.570313 L 1.929688 0 Z M 0.828125 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-0\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 8.976563 0 L 7.011719 0 L 6.230469 -2.03125 L 2.65625 -2.03125 L 1.917969 0 L 0 0 L 3.484375 -8.949219 L 5.394531 -8.949219 Z M 5.652344 -3.539063 L 4.417969 -6.859375 L 3.210938 -3.539063 Z M 5.652344 -3.539063 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-1\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 6.792969 0 L 5.078125 0 L 5.078125 -3.308594 C 5.074219 -4.007813 5.039063 -4.460938 4.96875 -4.664063 C 4.894531 -4.867188 4.773438 -5.027344 4.609375 -5.144531 C 4.441406 -5.257813 4.242188 -5.3125 4.015625 -5.316406 C 3.714844 -5.3125 3.449219 -5.230469 3.214844 -5.070313 C 2.976563 -4.90625 2.816406 -4.691406 2.730469 -4.425781 C 2.644531 -4.152344 2.601563 -3.65625 2.601563 -2.9375 L 2.601563 0 L 0.886719 0 L 0.886719 -6.480469 L 2.476563 -6.480469 L 2.476563 -5.53125 C 3.042969 -6.261719 3.753906 -6.625 4.613281 -6.628906 C 4.988281 -6.625 5.335938 -6.558594 5.652344 -6.421875 C 5.960938 -6.285156 6.199219 -6.109375 6.363281 -5.902344 C 6.523438 -5.6875 6.632813 -5.449219 6.699219 -5.179688 C 6.757813 -4.910156 6.789063 -4.523438 6.792969 -4.027344 Z M 6.792969 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-2\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 5.164063 0 L 5.164063 -0.96875 C 4.921875 -0.621094 4.613281 -0.351563 4.230469 -0.152344 C 3.847656 0.046875 3.441406 0.144531 3.015625 0.148438 C 2.578125 0.144531 2.1875 0.0546875 1.84375 -0.136719 C 1.496094 -0.324219 1.246094 -0.59375 1.089844 -0.945313 C 0.933594 -1.289063 0.855469 -1.769531 0.859375 -2.378906 L 0.859375 -6.480469 L 2.574219 -6.480469 L 2.574219 -3.503906 C 2.570313 -2.589844 2.601563 -2.03125 2.667969 -1.828125 C 2.730469 -1.621094 2.847656 -1.457031 3.015625 -1.339844 C 3.179688 -1.21875 3.390625 -1.160156 3.648438 -1.160156 C 3.941406 -1.160156 4.203125 -1.238281 4.4375 -1.398438 C 4.664063 -1.558594 4.824219 -1.757813 4.914063 -1.996094 C 4.996094 -2.234375 5.039063 -2.816406 5.042969 -3.746094 L 5.042969 -6.480469 L 6.757813 -6.480469 L 6.757813 0 Z M 5.164063 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-3\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.179688 -4.503906 L 0.621094 -4.785156 C 0.796875 -5.410156 1.097656 -5.875 1.527344 -6.175781 C 1.953125 -6.476563 2.585938 -6.625 3.429688 -6.628906 C 4.191406 -6.625 4.761719 -6.535156 5.136719 -6.355469 C 5.507813 -6.171875 5.773438 -5.941406 5.929688 -5.667969 C 6.082031 -5.386719 6.15625 -4.875 6.160156 -4.132813 L 6.140625 -2.128906 C 6.140625 -1.558594 6.167969 -1.140625 6.222656 -0.871094 C 6.277344 -0.597656 6.378906 -0.308594 6.53125 0 L 4.835938 0 C 4.785156 -0.113281 4.730469 -0.28125 4.667969 -0.507813 C 4.636719 -0.605469 4.617188 -0.671875 4.609375 -0.707031 C 4.3125 -0.421875 4 -0.207031 3.667969 -0.0664063 C 3.332031 0.078125 2.976563 0.144531 2.601563 0.148438 C 1.929688 0.144531 1.402344 -0.03125 1.019531 -0.394531 C 0.636719 -0.753906 0.445313 -1.214844 0.445313 -1.769531 C 0.445313 -2.136719 0.53125 -2.460938 0.707031 -2.75 C 0.878906 -3.03125 1.125 -3.25 1.441406 -3.40625 C 1.757813 -3.554688 2.210938 -3.691406 2.808594 -3.808594 C 3.605469 -3.957031 4.160156 -4.097656 4.472656 -4.230469 L 4.472656 -4.402344 C 4.46875 -4.726563 4.386719 -4.960938 4.226563 -5.105469 C 4.0625 -5.242188 3.757813 -5.3125 3.308594 -5.316406 C 3 -5.3125 2.761719 -5.253906 2.59375 -5.136719 C 2.417969 -5.015625 2.28125 -4.804688 2.179688 -4.503906 Z M 4.472656 -3.113281 C 4.25 -3.035156 3.902344 -2.949219 3.429688 -2.851563 C 2.949219 -2.746094 2.640625 -2.644531 2.496094 -2.550781 C 2.269531 -2.386719 2.15625 -2.1875 2.160156 -1.945313 C 2.15625 -1.703125 2.246094 -1.496094 2.429688 -1.324219 C 2.605469 -1.148438 2.832031 -1.058594 3.113281 -1.0625 C 3.417969 -1.058594 3.714844 -1.160156 3.996094 -1.367188 C 4.203125 -1.515625 4.339844 -1.707031 4.40625 -1.933594 C 4.449219 -2.082031 4.46875 -2.359375 4.472656 -2.769531 Z M 4.472656 -3.113281 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-4\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.898438 0 L 0.898438 -8.949219 L 2.613281 -8.949219 L 2.613281 0 Z M 0.898438 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-5\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.898438 -7.359375 L 0.898438 -8.949219 L 2.613281 -8.949219 L 2.613281 -7.359375 Z M 0.898438 0 L 0.898438 -6.480469 L 2.613281 -6.480469 L 2.613281 0 Z M 0.898438 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-6\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.207031 0 L 0.207031 -1.335938 L 2.636719 -4.125 C 3.035156 -4.578125 3.328125 -4.902344 3.523438 -5.097656 C 3.320313 -5.082031 3.058594 -5.070313 2.734375 -5.070313 L 0.445313 -5.058594 L 0.445313 -6.480469 L 5.804688 -6.480469 L 5.804688 -5.265625 L 3.328125 -2.410156 L 2.453125 -1.464844 C 2.925781 -1.492188 3.222656 -1.503906 3.339844 -1.507813 L 5.992188 -1.507813 L 5.992188 0 Z M 0.207031 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-7\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 4.652344 -2.0625 L 6.359375 -1.777344 C 6.136719 -1.144531 5.792969 -0.667969 5.320313 -0.34375 C 4.84375 -0.015625 4.25 0.144531 3.539063 0.148438 C 2.410156 0.144531 1.574219 -0.21875 1.039063 -0.957031 C 0.609375 -1.542969 0.398438 -2.289063 0.398438 -3.191406 C 0.398438 -4.265625 0.675781 -5.105469 1.238281 -5.714844 C 1.796875 -6.320313 2.507813 -6.625 3.367188 -6.628906 C 4.332031 -6.625 5.09375 -6.308594 5.652344 -5.671875 C 6.207031 -5.035156 6.472656 -4.058594 6.453125 -2.746094 L 2.15625 -2.746094 C 2.164063 -2.234375 2.300781 -1.839844 2.566406 -1.558594 C 2.832031 -1.277344 3.160156 -1.136719 3.558594 -1.136719 C 3.824219 -1.136719 4.050781 -1.207031 4.234375 -1.355469 C 4.417969 -1.496094 4.558594 -1.734375 4.652344 -2.0625 Z M 4.75 -3.796875 C 4.734375 -4.289063 4.605469 -4.664063 4.363281 -4.925781 C 4.117188 -5.183594 3.820313 -5.3125 3.472656 -5.316406 C 3.09375 -5.3125 2.785156 -5.175781 2.546875 -4.90625 C 2.300781 -4.632813 2.179688 -4.265625 2.183594 -3.796875 Z M 4.75 -3.796875 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-8\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 6.84375 0 L 5.25 0 L 5.25 -0.953125 C 4.984375 -0.582031 4.671875 -0.304688 4.3125 -0.125 C 3.953125 0.0585938 3.589844 0.144531 3.222656 0.148438 C 2.476563 0.144531 1.835938 -0.152344 1.308594 -0.75 C 0.773438 -1.351563 0.507813 -2.1875 0.511719 -3.265625 C 0.507813 -4.359375 0.765625 -5.195313 1.285156 -5.769531 C 1.800781 -6.339844 2.457031 -6.625 3.246094 -6.628906 C 3.96875 -6.625 4.59375 -6.324219 5.125 -5.726563 L 5.125 -8.949219 L 6.84375 -8.949219 Z M 2.265625 -3.382813 C 2.261719 -2.6875 2.355469 -2.1875 2.550781 -1.878906 C 2.824219 -1.429688 3.210938 -1.207031 3.710938 -1.207031 C 4.101563 -1.207031 4.4375 -1.375 4.71875 -1.710938 C 4.992188 -2.046875 5.132813 -2.546875 5.132813 -3.214844 C 5.132813 -3.957031 4.996094 -4.492188 4.730469 -4.824219 C 4.457031 -5.148438 4.113281 -5.3125 3.699219 -5.316406 C 3.289063 -5.3125 2.949219 -5.152344 2.675781 -4.828125 C 2.398438 -4.503906 2.261719 -4.019531 2.265625 -3.382813 Z M 2.265625 -3.382813 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-9\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;\&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-10\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.914063 0 L 0.914063 -8.949219 L 4.71875 -8.949219 C 5.671875 -8.945313 6.367188 -8.867188 6.800781 -8.707031 C 7.234375 -8.542969 7.582031 -8.253906 7.84375 -7.847656 C 8.101563 -7.433594 8.230469 -6.964844 8.234375 -6.4375 C 8.230469 -5.765625 8.035156 -5.210938 7.640625 -4.777344 C 7.246094 -4.335938 6.65625 -4.0625 5.871094 -3.949219 C 6.261719 -3.71875 6.582031 -3.464844 6.835938 -3.195313 C 7.089844 -2.921875 7.433594 -2.441406 7.867188 -1.746094 L 8.960938 0 L 6.800781 0 L 5.492188 -1.945313 C 5.023438 -2.640625 4.707031 -3.078125 4.539063 -3.261719 C 4.367188 -3.441406 4.1875 -3.566406 3.996094 -3.632813 C 3.804688 -3.699219 3.5 -3.730469 3.089844 -3.734375 L 2.722656 -3.734375 L 2.722656 0 Z M 2.722656 -5.164063 L 4.058594 -5.164063 C 4.921875 -5.160156 5.464844 -5.199219 5.683594 -5.273438 C 5.898438 -5.34375 6.066406 -5.46875 6.1875 -5.652344 C 6.308594 -5.828125 6.367188 -6.050781 6.371094 -6.324219 C 6.367188 -6.621094 6.289063 -6.863281 6.128906 -7.050781 C 5.96875 -7.234375 5.742188 -7.351563 5.449219 -7.402344 C 5.300781 -7.417969 4.859375 -7.429688 4.132813 -7.433594 L 2.722656 -7.433594 Z M 2.722656 -5.164063 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-11\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 3.871094 -6.480469 L 3.871094 -5.113281 L 2.699219 -5.113281 L 2.699219 -2.503906 C 2.695313 -1.972656 2.707031 -1.664063 2.730469 -1.578125 C 2.753906 -1.484375 2.804688 -1.414063 2.882813 -1.359375 C 2.960938 -1.304688 3.054688 -1.277344 3.171875 -1.277344 C 3.328125 -1.277344 3.558594 -1.332031 3.863281 -1.441406 L 4.011719 -0.109375 C 3.609375 0.0625 3.15625 0.144531 2.65625 0.148438 C 2.34375 0.144531 2.066406 0.0976563 1.816406 -0.0078125 C 1.566406 -0.109375 1.382813 -0.246094 1.269531 -0.410156 C 1.152344 -0.574219 1.074219 -0.796875 1.03125 -1.082031 C 0.992188 -1.277344 0.972656 -1.679688 0.976563 -2.289063 L 0.976563 -5.113281 L 0.1875 -5.113281 L 0.1875 -6.480469 L 0.976563 -6.480469 L 0.976563 -7.769531 L 2.699219 -8.769531 L 2.699219 -6.480469 Z M 3.871094 -6.480469 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-12\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 2.539063 0 L 0.824219 0 L 0.824219 -6.480469 L 2.417969 -6.480469 L 2.417969 -5.558594 C 2.6875 -5.992188 2.933594 -6.28125 3.152344 -6.421875 C 3.371094 -6.558594 3.617188 -6.625 3.894531 -6.628906 C 4.28125 -6.625 4.65625 -6.519531 5.023438 -6.304688 L 4.492188 -4.808594 C 4.199219 -4.992188 3.929688 -5.085938 3.6875 -5.089844 C 3.445313 -5.085938 3.242188 -5.019531 3.074219 -4.890625 C 2.90625 -4.757813 2.773438 -4.519531 2.679688 -4.175781 C 2.582031 -3.828125 2.535156 -3.101563 2.539063 -2 Z M 2.539063 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-13\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.292969 -1.847656 L 2.015625 -2.113281 C 2.085938 -1.773438 2.234375 -1.519531 2.460938 -1.351563 C 2.683594 -1.175781 2.996094 -1.089844 3.398438 -1.09375 C 3.84375 -1.089844 4.175781 -1.171875 4.402344 -1.335938 C 4.546875 -1.449219 4.621094 -1.601563 4.625 -1.792969 C 4.621094 -1.921875 4.582031 -2.027344 4.503906 -2.117188 C 4.414063 -2.195313 4.222656 -2.273438 3.929688 -2.34375 C 2.542969 -2.648438 1.667969 -2.925781 1.300781 -3.179688 C 0.785156 -3.527344 0.527344 -4.015625 0.53125 -4.640625 C 0.527344 -5.199219 0.75 -5.667969 1.195313 -6.054688 C 1.640625 -6.433594 2.328125 -6.625 3.257813 -6.628906 C 4.144531 -6.625 4.800781 -6.480469 5.234375 -6.195313 C 5.664063 -5.902344 5.964844 -5.476563 6.128906 -4.914063 L 4.511719 -4.613281 C 4.441406 -4.863281 4.308594 -5.058594 4.117188 -5.191406 C 3.921875 -5.324219 3.644531 -5.390625 3.289063 -5.394531 C 2.835938 -5.390625 2.515625 -5.328125 2.320313 -5.207031 C 2.1875 -5.113281 2.121094 -4.996094 2.125 -4.859375 C 2.121094 -4.734375 2.179688 -4.632813 2.296875 -4.546875 C 2.449219 -4.429688 2.980469 -4.265625 3.894531 -4.0625 C 4.804688 -3.851563 5.445313 -3.597656 5.8125 -3.300781 C 6.167969 -2.992188 6.34375 -2.570313 6.347656 -2.027344 C 6.34375 -1.433594 6.097656 -0.921875 5.601563 -0.492188 C 5.105469 -0.0664063 4.371094 0.144531 3.398438 0.148438 C 2.515625 0.144531 1.816406 -0.03125 1.300781 -0.390625 C 0.785156 -0.746094 0.449219 -1.230469 0.292969 -1.847656 Z M 0.292969 -1.847656 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;symbol overflow=\&quot;visible\&quot; id=\&quot;glyph4-14\&quot;&gt;\n &lt;path style=\&quot;stroke:none;\&quot; d=\&quot;M 0.835938 0 L 0.835938 -8.949219 L 2.550781 -8.949219 L 2.550781 -4.199219 L 4.558594 -6.480469 L 6.671875 -6.480469 L 4.457031 -4.113281 L 6.828125 0 L 4.980469 0 L 3.351563 -2.910156 L 2.550781 -2.074219 L 2.550781 0 Z M 0.835938 0 \&quot;/&gt;\n &lt;/symbol&gt;\n &lt;/g&gt;\n &lt;clipPath id=\&quot;clip1\&quot;&gt;\n &lt;path d=\&quot;M 59.039063 59.039063 L 1122.757813 59.039063 L 1122.757813 647.558594 L 59.039063 647.558594 Z M 59.039063 59.039063 \&quot;/&gt;\n &lt;/clipPath&gt;\n &lt;clipPath id=\&quot;clip2\&quot;&gt;\n &lt;path d=\&quot;M 59.039063 59.039063 L 1122.757813 59.039063 L 1122.757813 647.558594 L 59.039063 647.558594 Z M 59.039063 59.039063 \&quot;/&gt;\n &lt;/clipPath&gt;\n &lt;clipPath id=\&quot;clip3\&quot;&gt;\n &lt;path d=\&quot;M 59.039063 59.039063 L 1122.757813 59.039063 L 1122.757813 647.558594 L 59.039063 647.558594 Z M 59.039063 59.039063 \&quot;/&gt;\n &lt;/clipPath&gt;\n &lt;/defs&gt;\n &lt;g id=\&quot;surface46\&quot;&gt;\n &lt;rect x=\&quot;0\&quot; y=\&quot;0\&quot; width=\&quot;1152\&quot; height=\&quot;720\&quot; style=\&quot;fill: rgb(100%,100%,100%); fill-opacity: 1; stroke: none;\&quot;/&gt;\n &lt;g clip-path=\&quot;url(#clip1)\&quot; clip-rule=\&quot;nonzero\&quot;&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(90.980392%,83.137255%,78.823529%);fill-opacity:1;\&quot; d=\&quot;M 653.851563 98.027344 C 653.851563 102.292969 647.453125 102.292969 647.453125 98.027344 C 647.453125 93.761719 653.851563 93.761719 653.851563 98.027344 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(82.352941%,66.666667%,57.647059%);fill-opacity:1;\&quot; d=\&quot;M 1021.019531 587.386719 C 1021.019531 591.652344 1014.617188 591.652344 1014.617188 587.386719 C 1014.617188 583.121094 1021.019531 583.121094 1021.019531 587.386719 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(73.72549%,50.196078%,36.470588%);fill-opacity:1;\&quot; d=\&quot;M 968.941406 200.195313 C 968.941406 204.460938 962.542969 204.460938 962.542969 200.195313 C 962.542969 195.929688 968.941406 195.929688 968.941406 200.195313 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(65.098039%,33.72549%,15.686275%);fill-opacity:1;\&quot; d=\&quot;M 555.824219 479.84375 C 555.824219 484.109375 549.421875 484.109375 549.421875 479.84375 C 549.421875 475.578125 555.824219 475.578125 555.824219 479.84375 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(82.352941%,66.666667%,57.647059%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 1017.816406 587.386719 L 650.652344 98.027344 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(73.72549%,50.196078%,36.470588%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 965.742188 200.195313 L 1017.816406 587.386719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(65.098039%,33.72549%,15.686275%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 552.621094 479.84375 L 965.742188 200.195313 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(100%,87.45098%,74.901961%);fill-opacity:1;\&quot; d=\&quot;M 495.003906 202.554688 C 495.003906 206.824219 488.605469 206.824219 488.605469 202.554688 C 488.605469 198.289063 495.003906 198.289063 495.003906 202.554688 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(100%,74.901961%,49.803922%);fill-opacity:1;\&quot; d=\&quot;M 773.097656 601.773438 C 773.097656 606.039063 766.699219 606.039063 766.699219 601.773438 C 766.699219 597.503906 773.097656 597.503906 773.097656 601.773438 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(100%,62.352941%,24.705882%);fill-opacity:1;\&quot; d=\&quot;M 832.089844 307.703125 C 832.089844 311.96875 825.691406 311.96875 825.691406 307.703125 C 825.691406 303.4375 832.089844 303.4375 832.089844 307.703125 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(100%,49.803922%,0%);fill-opacity:1;\&quot; d=\&quot;M 517.695313 416.296875 C 517.695313 420.5625 511.292969 420.5625 511.292969 416.296875 C 511.292969 412.03125 517.695313 412.03125 517.695313 416.296875 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,74.901961%,49.803922%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 769.898438 601.773438 L 491.804688 202.554688 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,62.352941%,24.705882%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 828.890625 307.703125 L 769.898438 601.773438 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,49.803922%,0%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 514.492188 416.296875 L 828.890625 307.703125 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(89.803922%,82.352941%,90.980392%);fill-opacity:1;\&quot; d=\&quot;M 460.398438 237.304688 C 460.398438 241.570313 454 241.570313 454 237.304688 C 454 233.035156 460.398438 233.035156 460.398438 237.304688 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(79.607843%,65.098039%,81.960784%);fill-opacity:1;\&quot; d=\&quot;M 813.035156 602.851563 C 813.035156 607.121094 806.632813 607.121094 806.632813 602.851563 C 806.632813 598.585938 813.035156 598.585938 813.035156 602.851563 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(69.411765%,47.843137%,72.941176%);fill-opacity:1;\&quot; d=\&quot;M 852.121094 262.390625 C 852.121094 266.65625 845.722656 266.65625 845.722656 262.390625 C 845.722656 258.121094 852.121094 258.121094 852.121094 262.390625 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(59.607843%,30.588235%,63.921569%);fill-opacity:1;\&quot; d=\&quot;M 517.53125 409.757813 C 517.53125 414.023438 511.132813 414.023438 511.132813 409.757813 C 511.132813 405.492188 517.53125 405.492188 517.53125 409.757813 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(79.607843%,65.098039%,81.960784%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 809.832031 602.851563 L 457.199219 237.304688 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(69.411765%,47.843137%,72.941176%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 848.921875 262.390625 L 809.832031 602.851563 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(59.607843%,30.588235%,63.921569%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 514.332031 409.757813 L 848.921875 262.390625 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(82.352941%,92.156863%,81.960784%);fill-opacity:1;\&quot; d=\&quot;M 232.890625 451.007813 C 232.890625 455.277344 226.492188 455.277344 226.492188 451.007813 C 226.492188 446.742188 232.890625 446.742188 232.890625 451.007813 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(64.705882%,84.313725%,64.313725%);fill-opacity:1;\&quot; d=\&quot;M 236.496094 435.421875 C 236.496094 439.691406 230.09375 439.691406 230.09375 435.421875 C 230.09375 431.15625 236.496094 431.15625 236.496094 435.421875 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(47.45098%,76.470588%,46.666667%);fill-opacity:1;\&quot; d=\&quot;M 192.386719 414.789063 C 192.386719 419.054688 185.988281 419.054688 185.988281 414.789063 C 185.988281 410.523438 192.386719 410.523438 192.386719 414.789063 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(30.196078%,68.627451%,29.019608%);fill-opacity:1;\&quot; d=\&quot;M 195.964844 454.671875 C 195.964844 458.9375 189.566406 458.9375 189.566406 454.671875 C 189.566406 450.402344 195.964844 450.402344 195.964844 454.671875 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(64.705882%,84.313725%,64.313725%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 233.296875 435.421875 L 229.691406 451.007813 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(47.45098%,76.470588%,46.666667%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 189.1875 414.789063 L 233.296875 435.421875 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(30.196078%,68.627451%,29.019608%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 192.765625 454.671875 L 189.1875 414.789063 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(80.392157%,87.058824%,92.941176%);fill-opacity:1;\&quot; d=\&quot;M 508.445313 237.65625 C 508.445313 241.921875 502.042969 241.921875 502.042969 237.65625 C 502.042969 233.390625 508.445313 233.390625 508.445313 237.65625 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(60.784314%,74.509804%,85.882353%);fill-opacity:1;\&quot; d=\&quot;M 761.972656 624.800781 C 761.972656 629.066406 755.574219 629.066406 755.574219 624.800781 C 755.574219 620.535156 761.972656 620.535156 761.972656 624.800781 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(41.176471%,61.960784%,78.823529%);fill-opacity:1;\&quot; d=\&quot;M 806.910156 202.269531 C 806.910156 206.539063 800.511719 206.539063 800.511719 202.269531 C 800.511719 198.003906 806.910156 198.003906 806.910156 202.269531 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(21.568627%,49.411765%,72.156863%);fill-opacity:1;\&quot; d=\&quot;M 474.324219 334.8125 C 474.324219 339.082031 467.921875 339.082031 467.921875 334.8125 C 467.921875 330.546875 474.324219 330.546875 474.324219 334.8125 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(60.784314%,74.509804%,85.882353%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 758.773438 624.800781 L 505.242188 237.65625 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(41.176471%,61.960784%,78.823529%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 803.710938 202.269531 L 758.773438 624.800781 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(21.568627%,49.411765%,72.156863%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 471.121094 334.8125 L 803.710938 202.269531 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(97.254902%,77.254902%,77.647059%);fill-opacity:1;\&quot; d=\&quot;M 385.46875 331.957031 C 385.46875 336.222656 379.066406 336.222656 379.066406 331.957031 C 379.066406 327.691406 385.46875 327.691406 385.46875 331.957031 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(94.509804%,54.901961%,55.294118%);fill-opacity:1;\&quot; d=\&quot;M 642.140625 608.691406 C 642.140625 612.957031 635.742188 612.957031 635.742188 608.691406 C 635.742188 604.421875 642.140625 604.421875 642.140625 608.691406 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(91.764706%,32.54902%,32.941176%);fill-opacity:1;\&quot; d=\&quot;M 641 258.863281 C 641 263.128906 634.597656 263.128906 634.597656 258.863281 C 634.597656 254.597656 641 254.597656 641 258.863281 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(89.411765%,10.196078%,10.980392%);fill-opacity:1;\&quot; d=\&quot;M 398.175781 334.097656 C 398.175781 338.363281 391.777344 338.363281 391.777344 334.097656 C 391.777344 329.828125 398.175781 329.828125 398.175781 334.097656 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(94.509804%,54.901961%,55.294118%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 638.941406 608.691406 L 382.269531 331.957031 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(91.764706%,32.54902%,32.941176%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 637.796875 258.863281 L 638.941406 608.691406 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(89.411765%,10.196078%,10.980392%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 394.976563 334.097656 L 637.796875 258.863281 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 477.984375 L 1121.761719 477.984375 \&quot;/&gt;\n &lt;/g&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 98.398438 646.558594 L 1067.132813 646.558594 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 98.398438 646.558594 L 98.398438 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 259.855469 646.558594 L 259.855469 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 421.3125 646.558594 L 421.3125 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 582.765625 646.558594 L 582.765625 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 744.222656 646.558594 L 744.222656 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 905.679688 646.558594 L 905.679688 653.761719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 1067.132813 646.558594 L 1067.132813 653.761719 \&quot;/&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;88.570313\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;94.187451\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;96.993555\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;102.610693\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;250.027344\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;255.644482\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;258.450586\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-2\&quot; x=\&quot;264.067725\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;411.484375\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;417.101514\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-3\&quot; x=\&quot;419.907617\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;425.524756\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;572.9375\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;578.554639\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-3\&quot; x=\&quot;581.360742\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-2\&quot; x=\&quot;586.977881\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;734.394531\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;740.01167\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-4\&quot; x=\&quot;742.817773\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;748.434912\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;895.851563\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;901.468701\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-4\&quot; x=\&quot;904.274805\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-2\&quot; x=\&quot;909.891943\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;1057.304688\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-1\&quot; x=\&quot;1062.921826\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-5\&quot; x=\&quot;1065.72793\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-0\&quot; x=\&quot;1071.345068\&quot; y=\&quot;673.921875\&quot;/&gt;\n &lt;/g&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 564.117188 L 59.039063 133.449219 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 564.117188 L 51.839844 564.117188 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 477.984375 L 51.839844 477.984375 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 391.851563 L 51.839844 391.851563 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 305.714844 L 51.839844 305.714844 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 219.582031 L 51.839844 219.582031 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 133.449219 L 51.839844 133.449219 \&quot;/&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-0\&quot; x=\&quot;43.199219\&quot; y=\&quot;572.820313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;569.456934\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;563.839795\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-3\&quot; x=\&quot;43.199219\&quot; y=\&quot;561.033691\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;485.003906\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;479.386768\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;476.580664\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;398.871094\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;393.253955\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-3\&quot; x=\&quot;43.199219\&quot; y=\&quot;390.447852\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;312.734375\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;307.117236\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-4\&quot; x=\&quot;43.199219\&quot; y=\&quot;304.311133\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;226.601563\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;220.984424\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-5\&quot; x=\&quot;43.199219\&quot; y=\&quot;218.17832\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph1-1\&quot; x=\&quot;43.199219\&quot; y=\&quot;140.46875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-2\&quot; x=\&quot;43.199219\&quot; y=\&quot;134.851611\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph1-6\&quot; x=\&quot;43.199219\&quot; y=\&quot;132.045508\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph2-0\&quot; x=\&quot;14.398438\&quot; y=\&quot;404.222656\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-1\&quot; x=\&quot;14.398438\&quot; y=\&quot;395.885254\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-1\&quot; x=\&quot;14.398438\&quot; y=\&quot;388.93335\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-2\&quot; x=\&quot;14.398438\&quot; y=\&quot;381.981445\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-3\&quot; x=\&quot;14.398438\&quot; y=\&quot;375.029541\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-4\&quot; x=\&quot;14.398438\&quot; y=\&quot;368.077637\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-5\&quot; x=\&quot;14.398438\&quot; y=\&quot;365.300537\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-6\&quot; x=\&quot;14.398438\&quot; y=\&quot;362.523438\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-7\&quot; x=\&quot;14.398438\&quot; y=\&quot;356.273438\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-8\&quot; x=\&quot;14.398438\&quot; y=\&quot;349.321533\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-9\&quot; x=\&quot;14.398438\&quot; y=\&quot;342.369629\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-10\&quot; x=\&quot;14.398438\&quot; y=\&quot;338.896729\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-7\&quot; x=\&quot;14.398438\&quot; y=\&quot;329.869629\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-11\&quot; x=\&quot;14.398438\&quot; y=\&quot;322.917725\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-2\&quot; x=\&quot;14.398438\&quot; y=\&quot;319.444824\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-12\&quot; x=\&quot;14.398438\&quot; y=\&quot;312.49292\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph2-1\&quot; x=\&quot;14.398438\&quot; y=\&quot;308.330322\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph3-0\&quot; x=\&quot;545.582031\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-1\&quot; x=\&quot;553.919434\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-1\&quot; x=\&quot;560.871338\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-2\&quot; x=\&quot;567.823242\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-3\&quot; x=\&quot;574.775146\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-4\&quot; x=\&quot;581.727051\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-5\&quot; x=\&quot;584.50415\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-6\&quot; x=\&quot;587.28125\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-7\&quot; x=\&quot;593.53125\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-8\&quot; x=\&quot;600.483154\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-9\&quot; x=\&quot;607.435059\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-10\&quot; x=\&quot;610.907959\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-5\&quot; x=\&quot;619.935059\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-11\&quot; x=\&quot;622.712158\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph3-12\&quot; x=\&quot;628.962158\&quot; y=\&quot;702.71875\&quot;/&gt;\n &lt;/g&gt;\n &lt;g clip-path=\&quot;url(#clip2)\&quot; clip-rule=\&quot;nonzero\&quot;&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:4,4;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 488.480469 L 1121.761719 205.011719 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:4,4;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 498.980469 L 994.375 0 \&quot;/&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:4,4;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 509.480469 L 695.714844 0 \&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(0%,0%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph4-0\&quot; x=\&quot;507.402344\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-1\&quot; x=\&quot;516.429443\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-1\&quot; x=\&quot;524.064941\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-2\&quot; x=\&quot;531.700439\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-3\&quot; x=\&quot;539.335938\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-4\&quot; x=\&quot;546.287842\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-5\&quot; x=\&quot;549.760742\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-6\&quot; x=\&quot;553.233643\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-7\&quot; x=\&quot;559.483643\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-8\&quot; x=\&quot;566.435547\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-9\&quot; x=\&quot;574.071045\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-10\&quot; x=\&quot;577.543945\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-7\&quot; x=\&quot;586.571045\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-11\&quot; x=\&quot;593.522949\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-2\&quot; x=\&quot;597.685547\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-12\&quot; x=\&quot;605.321045\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-1\&quot; x=\&quot;610.185547\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-9\&quot; x=\&quot;617.821045\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-3\&quot; x=\&quot;621.293945\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-1\&quot; x=\&quot;628.24585\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-8\&quot; x=\&quot;635.881348\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-9\&quot; x=\&quot;643.516846\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-10\&quot; x=\&quot;646.989746\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-5\&quot; x=\&quot;656.016846\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-13\&quot; x=\&quot;659.489746\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph4-14\&quot; x=\&quot;666.44165\&quot; y=\&quot;33.992188\&quot;/&gt;\n &lt;/g&gt;\n &lt;g clip-path=\&quot;url(#clip3)\&quot; clip-rule=\&quot;nonzero\&quot;&gt;\n &lt;path style=\&quot;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 1039.792969 70.789063 L 1100.503906 70.789063 L 1100.503906 151.429688 L 1039.792969 151.429688 Z M 1039.792969 70.789063 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(89.411765%,10.196078%,10.980392%);fill-opacity:1;\&quot; d=\&quot;M 1051.09375 82.308594 C 1051.09375 85.855469 1045.773438 85.855469 1045.773438 82.308594 C 1045.773438 78.765625 1051.09375 78.765625 1051.09375 82.308594 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(21.568627%,49.411765%,72.156863%);fill-opacity:1;\&quot; d=\&quot;M 1051.09375 93.832031 C 1051.09375 97.378906 1045.773438 97.378906 1045.773438 93.832031 C 1045.773438 90.285156 1051.09375 90.285156 1051.09375 93.832031 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(30.196078%,68.627451%,29.019608%);fill-opacity:1;\&quot; d=\&quot;M 1051.09375 105.351563 C 1051.09375 108.898438 1045.773438 108.898438 1045.773438 105.351563 C 1045.773438 101.804688 1051.09375 101.804688 1051.09375 105.351563 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(59.607843%,30.588235%,63.921569%);fill-opacity:1;\&quot; d=\&quot;M 1051.09375 116.871094 C 1051.09375 120.417969 1045.773438 120.417969 1045.773438 116.871094 C 1045.773438 113.324219 1051.09375 113.324219 1051.09375 116.871094 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(100%,49.803922%,0%);fill-opacity:1;\&quot; d=\&quot;M 1051.09375 128.390625 C 1051.09375 131.9375 1045.773438 131.9375 1045.773438 128.390625 C 1045.773438 124.84375 1051.09375 124.84375 1051.09375 128.390625 \&quot;/&gt;\n &lt;path style=\&quot; stroke:none;fill-rule:nonzero;fill:rgb(65.098039%,33.72549%,15.686275%);fill-opacity:1;\&quot; d=\&quot;M 1051.09375 139.910156 C 1051.09375 143.457031 1045.773438 143.457031 1045.773438 139.910156 C 1045.773438 136.363281 1051.09375 136.363281 1051.09375 139.910156 \&quot;/&gt;\n &lt;g style=\&quot;fill:rgb(89.411765%,10.196078%,10.980392%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;1061.394531\&quot; y=\&quot;85.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-7\&quot; x=\&quot;1068.131152\&quot; y=\&quot;85.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-8\&quot; x=\&quot;1074.300635\&quot; y=\&quot;85.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-9\&quot; x=\&quot;1077.106738\&quot; y=\&quot;85.925781\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-10\&quot; x=\&quot;1084.400635\&quot; y=\&quot;85.925781\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(21.568627%,49.411765%,72.156863%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;1061.394531\&quot; y=\&quot;97.445313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-11\&quot; x=\&quot;1068.131152\&quot; y=\&quot;97.445313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-10\&quot; x=\&quot;1074.867773\&quot; y=\&quot;97.445313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-12\&quot; x=\&quot;1081.604395\&quot; y=\&quot;97.445313\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-10\&quot; x=\&quot;1088.341016\&quot; y=\&quot;97.445313\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(30.196078%,68.627451%,29.019608%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;1061.394531\&quot; y=\&quot;108.964844\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-13\&quot; x=\&quot;1068.131152\&quot; y=\&quot;108.964844\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-14\&quot; x=\&quot;1074.867773\&quot; y=\&quot;108.964844\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-7\&quot; x=\&quot;1083.281152\&quot; y=\&quot;108.964844\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-10\&quot; x=\&quot;1089.450635\&quot; y=\&quot;108.964844\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(59.607843%,30.588235%,63.921569%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;1061.394531\&quot; y=\&quot;120.484375\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-15\&quot; x=\&quot;1068.131152\&quot; y=\&quot;120.484375\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-8\&quot; x=\&quot;1077.664014\&quot; y=\&quot;120.484375\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-16\&quot; x=\&quot;1080.470117\&quot; y=\&quot;120.484375\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-10\&quot; x=\&quot;1088.326221\&quot; y=\&quot;120.484375\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(100%,49.803922%,0%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;1061.394531\&quot; y=\&quot;132.003906\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-17\&quot; x=\&quot;1068.131152\&quot; y=\&quot;132.003906\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-18\&quot; x=\&quot;1074.300635\&quot; y=\&quot;132.003906\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-8\&quot; x=\&quot;1081.594531\&quot; y=\&quot;132.003906\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-10\&quot; x=\&quot;1084.400635\&quot; y=\&quot;132.003906\&quot;/&gt;\n &lt;/g&gt;\n &lt;g style=\&quot;fill:rgb(65.098039%,33.72549%,15.686275%);fill-opacity:1;\&quot;&gt;\n &lt;use xlink:href=\&quot;#glyph0-6\&quot; x=\&quot;1061.394531\&quot; y=\&quot;143.523438\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-11\&quot; x=\&quot;1068.131152\&quot; y=\&quot;143.523438\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-8\&quot; x=\&quot;1074.867773\&quot; y=\&quot;143.523438\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-11\&quot; x=\&quot;1077.673877\&quot; y=\&quot;143.523438\&quot;/&gt;\n &lt;use xlink:href=\&quot;#glyph0-10\&quot; x=\&quot;1084.410498\&quot; y=\&quot;143.523438\&quot;/&gt;\n &lt;/g&gt;\n &lt;/g&gt;\n &lt;path style=\&quot;fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(66.27451%,66.27451%,66.27451%);stroke-opacity:1;stroke-miterlimit:10;\&quot; d=\&quot;M 59.039063 646.558594 L 1121.761719 646.558594 L 1121.761719 59.039063 L 59.039063 59.039063 L 59.039063 646.558594 \&quot;/&gt;\n &lt;/g&gt;\n&lt;/svg&gt;\n&quot;,&#10;&quot;config&quot;: [] &#10;},&quot;evals&quot;: [ ] }&lt;/script&gt;&#10;&lt;script type=&quot;application/htmlwidget-sizing&quot; data-for=&quot;htmlwidget-7754&quot;&gt;{ &quot;viewer&quot;: {&#10; &quot;width&quot;: 450,&#10;&quot;height&quot;: 350,&#10;&quot;padding&quot;: 15,&#10;&quot;fill&quot;: true &#10;},&quot;browser&quot;: {&#10; &quot;width&quot;: 960,&#10;&quot;height&quot;: 500,&#10;&quot;padding&quot;: 40,&#10;&quot;fill&quot;: false &#10;} }&lt;/script&gt;&#10;&lt;/body&gt;&#10;&lt;/html&gt;" width="100%" height="500" style="border-width:0px ;"></iframe>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment