grad.desc = function(
FUN = function(x, y) x^2 + 2 * y^2, rg = c(-3, -3, 3, 3), init = c(-3, 3),
gamma = 0.05, tol = 0.001, gr = NULL, len = 50, nmax = 50) {
x <- seq(rg[1], rg[3], length = len)
y <- seq(rg[2], rg[4], length = len)
contour <- expand.grid(x = x, y = y)
contour$z <- as.vector(outer(x, y, FUN))
nms = names(formals(FUN))
grad = if (is.null(gr)) {
deriv(as.expression(body(FUN)), nms, function.arg = TRUE)
} else {
function(...) {
res = FUN(...)
attr(res, 'gradient') = matrix(gr(...), nrow = 1, ncol = 2)
res
}
}
xy <- init
newxy <- xy - gamma * attr(grad(xy[1], xy[2]), 'gradient')
z <- FUN(newxy[1], newxy[2])
gap <- abs(z - FUN(xy[1], xy[2]))
i <- 1
while (gap > tol && i <= nmax) {
xy <- rbind(xy, newxy[i, ])
newxy <- rbind(newxy, xy[i + 1, ] - gamma * attr(grad(xy[i + 1, 1], xy[i + 1, 2]), 'gradient'))
z <- c(z, FUN(newxy[i + 1, 1], newxy[i + 1, 2]))
gap <- abs(z[i + 1] - FUN(xy[i + 1, 1], xy[i + 1, 2]))
i <- i + 1
if (i > nmax) warning('Maximum number of iterations reached!')
}
objective <- data.frame(iteration = 1:i, x = xy[, 1], y = xy[, 2],
newx = newxy[, 1], newy = newxy[, 2], z = z)
invisible(
list(contour = contour, objective = objective)
)
}
dat <- grad.desc()
contour <- dat$contour
objective <- dat$objective
library(plyr)
objective <- ldply(objective$iteration, function(i) {
df <- subset(objective, iteration <= i)
cbind(df, iteration2 = i)
})
objective2 <- subset(objective, iteration == iteration2)
library(animint2)
library(grid)
(contour.plot <- ggplot() +
geom_contour(data = contour, aes(x = x, y = y, z = z, colour = ..level..), size = .5) +
scale_colour_continuous(name = "z value") +
geom_path(data = objective, aes(x = x, y = y), showSelected = objective$iteration2,
colour = "red", size = 1, arrow = arrow(length = unit(.5, "cm"))) +
# argument arrow doesn't take effect.
geom_point(data = objective, aes(x = x, y = y), showSelected = objective$iteration2, colour = "green",
size = 2) +
geom_text(data = objective2, aes(x = x, y = y - 0.2, label = round(z, 2)), showSelected = objective2$iteration2,
vjust = 1) +
# argument vjust or hjust doesn't take effect.
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
ggtitle("contour of function value") +
theme_animint(width = 600, height = 600))

(objective.plot <- ggplot() +
geom_line(data = objective2, aes(x = iteration, y = z), colour = "red") +
geom_point(data = objective2, aes(x = iteration, y = z), colour = "red") +
geom_tallrect(data = objective2, aes(xmin = iteration - 1 / 2, xmax = iteration + 1 / 2),
clickSelects.variable = objective2$iteration2, alpha = .3) +
geom_text(data = objective2, aes(x = iteration, y = z + 0.3,
label = iteration), showSelected = objective2$iteration2) +
ggtitle("objective value vs. iteration") +
theme_animint(width = 600, height = 600))

viz <- list(contour = contour.plot, objective = objective.plot,
time = list(variable = "iteration2", ms = 2000),
title = "Demonstration of Gradient Descent Algorithm")
animint2dir(viz, out.dir = "grad.desc")
mapping: x = x, y = y
geom_path: lineend = butt, linejoin = round, linemitre = 1, arrow = list(angle = 30, length = 0.5, ends = 2, type = 1), na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
$problem.aes
showSelected1 showSelected2 showSelected3 showSelected4 showSelected5
"`1`" "`2`" "`2`" "`3`" "`3`"
showSelected6 showSelected7 showSelected8 showSelected9 showSelected10
"`3`" "`4`" "`4`" "`4`" "`4`"
showSelected11 showSelected12 showSelected13 showSelected14 showSelected15
"`5`" "`5`" "`5`" "`5`" "`5`"
showSelected16 showSelected17 showSelected18 showSelected19 showSelected20
"`6`" "`6`" "`6`" "`6`" "`6`"
showSelected21 showSelected22 showSelected23 showSelected24 showSelected25
"`6`" "`7`" "`7`" "`7`" "`7`"
showSelected26 showSelected27 showSelected28 showSelected29 showSelected30
"`7`" "`7`" "`7`" "`8`" "`8`"
showSelected31 showSelected32 showSelected33 showSelected34 showSelected35
"`8`" "`8`" "`8`" "`8`" "`8`"
showSelected36 showSelected37 showSelected38 showSelected39 showSelected40
"`8`" "`9`" "`9`" "`9`" "`9`"
showSelected41 showSelected42 showSelected43 showSelected44 showSelected45
"`9`" "`9`" "`9`" "`9`" "`9`"
showSelected46 showSelected47 showSelected48 showSelected49 showSelected50
"`10`" "`10`" "`10`" "`10`" "`10`"
showSelected51 showSelected52 showSelected53 showSelected54 showSelected55
"`10`" "`10`" "`10`" "`10`" "`10`"
showSelected56 showSelected57 showSelected58 showSelected59 showSelected60
"`11`" "`11`" "`11`" "`11`" "`11`"
showSelected61 showSelected62 showSelected63 showSelected64 showSelected65
"`11`" "`11`" "`11`" "`11`" "`11`"
showSelected66 showSelected67 showSelected68 showSelected69 showSelected70
"`11`" "`12`" "`12`" "`12`" "`12`"
showSelected71 showSelected72 showSelected73 showSelected74 showSelected75
"`12`" "`12`" "`12`" "`12`" "`12`"
showSelected76 showSelected77 showSelected78 showSelected79 showSelected80
"`12`" "`12`" "`12`" "`13`" "`13`"
showSelected81 showSelected82 showSelected83 showSelected84 showSelected85
"`13`" "`13`" "`13`" "`13`" "`13`"
showSelected86 showSelected87 showSelected88 showSelected89 showSelected90
"`13`" "`13`" "`13`" "`13`" "`13`"
showSelected91 showSelected92 showSelected93 showSelected94 showSelected95
"`13`" "`14`" "`14`" "`14`" "`14`"
showSelected96 showSelected97 showSelected98 showSelected99 showSelected100
"`14`" "`14`" "`14`" "`14`" "`14`"
showSelected101 showSelected102 showSelected103 showSelected104 showSelected105
"`14`" "`14`" "`14`" "`14`" "`14`"
showSelected106 showSelected107 showSelected108 showSelected109 showSelected110
"`15`" "`15`" "`15`" "`15`" "`15`"
showSelected111 showSelected112 showSelected113 showSelected114 showSelected115
"`15`" "`15`" "`15`" "`15`" "`15`"
showSelected116 showSelected117 showSelected118 showSelected119 showSelected120
"`15`" "`15`" "`15`" "`15`" "`15`"
showSelected121 showSelected122 showSelected123 showSelected124 showSelected125
"`16`" "`16`" "`16`" "`16`" "`16`"
showSelected126 showSelected127 showSelected128 showSelected129 showSelected130
"`16`" "`16`" "`16`" "`16`" "`16`"
showSelected131 showSelected132 showSelected133 showSelected134 showSelected135
"`16`" "`16`" "`16`" "`16`" "`16`"
showSelected136 showSelected137 showSelected138 showSelected139 showSelected140
"`16`" "`17`" "`17`" "`17`" "`17`"
showSelected141 showSelected142 showSelected143 showSelected144 showSelected145
"`17`" "`17`" "`17`" "`17`" "`17`"
showSelected146 showSelected147 showSelected148 showSelected149 showSelected150
"`17`" "`17`" "`17`" "`17`" "`17`"
showSelected151 showSelected152 showSelected153 showSelected154 showSelected155
"`17`" "`17`" "`17`" "`18`" "`18`"
showSelected156 showSelected157 showSelected158 showSelected159 showSelected160
"`18`" "`18`" "`18`" "`18`" "`18`"
showSelected161 showSelected162 showSelected163 showSelected164 showSelected165
"`18`" "`18`" "`18`" "`18`" "`18`"
showSelected166 showSelected167 showSelected168 showSelected169 showSelected170
"`18`" "`18`" "`18`" "`18`" "`18`"
showSelected171 showSelected172 showSelected173 showSelected174 showSelected175
"`18`" "`19`" "`19`" "`19`" "`19`"
showSelected176 showSelected177 showSelected178 showSelected179 showSelected180
"`19`" "`19`" "`19`" "`19`" "`19`"
showSelected181 showSelected182 showSelected183 showSelected184 showSelected185
"`19`" "`19`" "`19`" "`19`" "`19`"
showSelected186 showSelected187 showSelected188 showSelected189 showSelected190
"`19`" "`19`" "`19`" "`19`" "`19`"
showSelected191 showSelected192 showSelected193 showSelected194 showSelected195
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected196 showSelected197 showSelected198 showSelected199 showSelected200
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected201 showSelected202 showSelected203 showSelected204 showSelected205
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected206 showSelected207 showSelected208 showSelected209 showSelected210
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected211 showSelected212 showSelected213 showSelected214 showSelected215
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected216 showSelected217 showSelected218 showSelected219 showSelected220
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected221 showSelected222 showSelected223 showSelected224 showSelected225
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected226 showSelected227 showSelected228 showSelected229 showSelected230
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected231 showSelected232 showSelected233 showSelected234 showSelected235
"`21`" "`22`" "`22`" "`22`" "`22`"
showSelected236 showSelected237 showSelected238 showSelected239 showSelected240
"`22`" "`22`" "`22`" "`22`" "`22`"
showSelected241 showSelected242 showSelected243 showSelected244 showSelected245
"`22`" "`22`" "`22`" "`22`" "`22`"
showSelected246 showSelected247 showSelected248 showSelected249 showSelected250
"`22`" "`22`" "`22`" "`22`" "`22`"
showSelected251 showSelected252 showSelected253 showSelected254 showSelected255
"`22`" "`22`" "`22`" "`23`" "`23`"
showSelected256 showSelected257 showSelected258 showSelected259 showSelected260
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected261 showSelected262 showSelected263 showSelected264 showSelected265
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected266 showSelected267 showSelected268 showSelected269 showSelected270
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected271 showSelected272 showSelected273 showSelected274 showSelected275
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected276 showSelected277 showSelected278 showSelected279 showSelected280
"`23`" "`24`" "`24`" "`24`" "`24`"
showSelected281 showSelected282 showSelected283 showSelected284 showSelected285
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected286 showSelected287 showSelected288 showSelected289 showSelected290
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected291 showSelected292 showSelected293 showSelected294 showSelected295
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected296 showSelected297 showSelected298 showSelected299 showSelected300
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected301 showSelected302 showSelected303 showSelected304 showSelected305
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected306 showSelected307 showSelected308 showSelected309 showSelected310
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected311 showSelected312 showSelected313 showSelected314 showSelected315
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected316 showSelected317 showSelected318 showSelected319 showSelected320
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected321 showSelected322 showSelected323 showSelected324 showSelected325
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected326 showSelected327 showSelected328 showSelected329 showSelected330
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected331 showSelected332 showSelected333 showSelected334 showSelected335
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected336 showSelected337 showSelected338 showSelected339 showSelected340
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected341 showSelected342 showSelected343 showSelected344 showSelected345
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected346 showSelected347 showSelected348 showSelected349 showSelected350
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected351 showSelected352 showSelected353 showSelected354 showSelected355
"`26`" "`27`" "`27`" "`27`" "`27`"
showSelected356 showSelected357 showSelected358 showSelected359 showSelected360
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected361 showSelected362 showSelected363 showSelected364 showSelected365
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected366 showSelected367 showSelected368 showSelected369 showSelected370
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected371 showSelected372 showSelected373 showSelected374 showSelected375
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected376 showSelected377 showSelected378 showSelected379 showSelected380
"`27`" "`27`" "`27`" "`28`" "`28`"
showSelected381 showSelected382 showSelected383 showSelected384 showSelected385
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected386 showSelected387 showSelected388 showSelected389 showSelected390
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected391 showSelected392 showSelected393 showSelected394 showSelected395
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected396 showSelected397 showSelected398 showSelected399 showSelected400
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected401 showSelected402 showSelected403 showSelected404 showSelected405
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected406 showSelected407 showSelected408 showSelected409 showSelected410
"`28`" "`29`" "`29`" "`29`" "`29`"
showSelected411 showSelected412 showSelected413 showSelected414 showSelected415
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected416 showSelected417 showSelected418 showSelected419 showSelected420
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected421 showSelected422 showSelected423 showSelected424 showSelected425
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected426 showSelected427 showSelected428 showSelected429 showSelected430
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected431 showSelected432 showSelected433 showSelected434 showSelected435
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected436 showSelected437 showSelected438 showSelected439 showSelected440
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected441 showSelected442 showSelected443 showSelected444 showSelected445
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected446 showSelected447 showSelected448 showSelected449 showSelected450
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected451 showSelected452 showSelected453 showSelected454 showSelected455
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected456 showSelected457 showSelected458 showSelected459 showSelected460
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected461 showSelected462 showSelected463 showSelected464 showSelected465
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected466 showSelected467 showSelected468 showSelected469 showSelected470
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected471 showSelected472 showSelected473 showSelected474 showSelected475
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected476 showSelected477 showSelected478 showSelected479 showSelected480
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected481 showSelected482 showSelected483 showSelected484 showSelected485
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected486 showSelected487 showSelected488 showSelected489 showSelected490
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected491 showSelected492 showSelected493 showSelected494 showSelected495
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected496 showSelected497 showSelected498 showSelected499 showSelected500
"`31`" "`32`" "`32`" "`32`" "`32`"
showSelected501 showSelected502 showSelected503 showSelected504 showSelected505
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected506 showSelected507 showSelected508 showSelected509 showSelected510
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected511 showSelected512 showSelected513 showSelected514 showSelected515
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected516 showSelected517 showSelected518 showSelected519 showSelected520
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected521 showSelected522 showSelected523 showSelected524 showSelected525
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected526 showSelected527 showSelected528 showSelected529 showSelected530
"`32`" "`32`" "`32`" "`33`" "`33`"
showSelected531 showSelected532 showSelected533 showSelected534 showSelected535
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected536 showSelected537 showSelected538 showSelected539 showSelected540
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected541 showSelected542 showSelected543 showSelected544 showSelected545
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected546 showSelected547 showSelected548 showSelected549 showSelected550
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected551 showSelected552 showSelected553 showSelected554 showSelected555
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected556 showSelected557 showSelected558 showSelected559 showSelected560
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected561 showSelected562 showSelected563 showSelected564 showSelected565
"`33`" "`34`" "`34`" "`34`" "`34`"
showSelected566 showSelected567 showSelected568 showSelected569 showSelected570
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected571 showSelected572 showSelected573 showSelected574 showSelected575
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected576 showSelected577 showSelected578 showSelected579 showSelected580
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected581 showSelected582 showSelected583 showSelected584 showSelected585
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected586 showSelected587 showSelected588 showSelected589 showSelected590
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected591 showSelected592 showSelected593 showSelected594 showSelected595
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected596 showSelected597 showSelected598 showSelected599 showSelected600
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected601 showSelected602 showSelected603 showSelected604 showSelected605
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected606 showSelected607 showSelected608 showSelected609 showSelected610
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected611 showSelected612 showSelected613 showSelected614 showSelected615
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected616 showSelected617 showSelected618 showSelected619 showSelected620
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected621 showSelected622 showSelected623 showSelected624 showSelected625
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected626 showSelected627 showSelected628 showSelected629 showSelected630
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected631 showSelected632 showSelected633 showSelected634 showSelected635
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected636 showSelected637 showSelected638 showSelected639 showSelected640
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected641 showSelected642 showSelected643 showSelected644 showSelected645
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected646 showSelected647 showSelected648 showSelected649 showSelected650
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected651 showSelected652 showSelected653 showSelected654 showSelected655
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected656 showSelected657 showSelected658 showSelected659 showSelected660
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected661 showSelected662 showSelected663 showSelected664 showSelected665
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected666 showSelected667 showSelected668 showSelected669 showSelected670
"`36`" "`37`" "`37`" "`37`" "`37`"
showSelected671 showSelected672 showSelected673 showSelected674 showSelected675
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected676 showSelected677 showSelected678 showSelected679 showSelected680
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected681 showSelected682 showSelected683 showSelected684 showSelected685
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected686 showSelected687 showSelected688 showSelected689 showSelected690
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected691 showSelected692 showSelected693 showSelected694 showSelected695
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected696 showSelected697 showSelected698 showSelected699 showSelected700
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected701 showSelected702 showSelected703
"`37`" "`37`" "`37`"
$data.variables
[1] "iteration" "x" "y" "newx" "newy" "z"
[7] "iteration2"
Error in checkPlotForAnimintExtensions(p, list.name) :
data does not have interactive variables
animint2gist(viz, out.dir = "grad.desc")
mapping: x = x, y = y
geom_path: lineend = butt, linejoin = round, linemitre = 1, arrow = list(angle = 30, length = 0.5, ends = 2, type = 1), na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
$problem.aes
showSelected1 showSelected2 showSelected3 showSelected4 showSelected5
"`1`" "`2`" "`2`" "`3`" "`3`"
showSelected6 showSelected7 showSelected8 showSelected9 showSelected10
"`3`" "`4`" "`4`" "`4`" "`4`"
showSelected11 showSelected12 showSelected13 showSelected14 showSelected15
"`5`" "`5`" "`5`" "`5`" "`5`"
showSelected16 showSelected17 showSelected18 showSelected19 showSelected20
"`6`" "`6`" "`6`" "`6`" "`6`"
showSelected21 showSelected22 showSelected23 showSelected24 showSelected25
"`6`" "`7`" "`7`" "`7`" "`7`"
showSelected26 showSelected27 showSelected28 showSelected29 showSelected30
"`7`" "`7`" "`7`" "`8`" "`8`"
showSelected31 showSelected32 showSelected33 showSelected34 showSelected35
"`8`" "`8`" "`8`" "`8`" "`8`"
showSelected36 showSelected37 showSelected38 showSelected39 showSelected40
"`8`" "`9`" "`9`" "`9`" "`9`"
showSelected41 showSelected42 showSelected43 showSelected44 showSelected45
"`9`" "`9`" "`9`" "`9`" "`9`"
showSelected46 showSelected47 showSelected48 showSelected49 showSelected50
"`10`" "`10`" "`10`" "`10`" "`10`"
showSelected51 showSelected52 showSelected53 showSelected54 showSelected55
"`10`" "`10`" "`10`" "`10`" "`10`"
showSelected56 showSelected57 showSelected58 showSelected59 showSelected60
"`11`" "`11`" "`11`" "`11`" "`11`"
showSelected61 showSelected62 showSelected63 showSelected64 showSelected65
"`11`" "`11`" "`11`" "`11`" "`11`"
showSelected66 showSelected67 showSelected68 showSelected69 showSelected70
"`11`" "`12`" "`12`" "`12`" "`12`"
showSelected71 showSelected72 showSelected73 showSelected74 showSelected75
"`12`" "`12`" "`12`" "`12`" "`12`"
showSelected76 showSelected77 showSelected78 showSelected79 showSelected80
"`12`" "`12`" "`12`" "`13`" "`13`"
showSelected81 showSelected82 showSelected83 showSelected84 showSelected85
"`13`" "`13`" "`13`" "`13`" "`13`"
showSelected86 showSelected87 showSelected88 showSelected89 showSelected90
"`13`" "`13`" "`13`" "`13`" "`13`"
showSelected91 showSelected92 showSelected93 showSelected94 showSelected95
"`13`" "`14`" "`14`" "`14`" "`14`"
showSelected96 showSelected97 showSelected98 showSelected99 showSelected100
"`14`" "`14`" "`14`" "`14`" "`14`"
showSelected101 showSelected102 showSelected103 showSelected104 showSelected105
"`14`" "`14`" "`14`" "`14`" "`14`"
showSelected106 showSelected107 showSelected108 showSelected109 showSelected110
"`15`" "`15`" "`15`" "`15`" "`15`"
showSelected111 showSelected112 showSelected113 showSelected114 showSelected115
"`15`" "`15`" "`15`" "`15`" "`15`"
showSelected116 showSelected117 showSelected118 showSelected119 showSelected120
"`15`" "`15`" "`15`" "`15`" "`15`"
showSelected121 showSelected122 showSelected123 showSelected124 showSelected125
"`16`" "`16`" "`16`" "`16`" "`16`"
showSelected126 showSelected127 showSelected128 showSelected129 showSelected130
"`16`" "`16`" "`16`" "`16`" "`16`"
showSelected131 showSelected132 showSelected133 showSelected134 showSelected135
"`16`" "`16`" "`16`" "`16`" "`16`"
showSelected136 showSelected137 showSelected138 showSelected139 showSelected140
"`16`" "`17`" "`17`" "`17`" "`17`"
showSelected141 showSelected142 showSelected143 showSelected144 showSelected145
"`17`" "`17`" "`17`" "`17`" "`17`"
showSelected146 showSelected147 showSelected148 showSelected149 showSelected150
"`17`" "`17`" "`17`" "`17`" "`17`"
showSelected151 showSelected152 showSelected153 showSelected154 showSelected155
"`17`" "`17`" "`17`" "`18`" "`18`"
showSelected156 showSelected157 showSelected158 showSelected159 showSelected160
"`18`" "`18`" "`18`" "`18`" "`18`"
showSelected161 showSelected162 showSelected163 showSelected164 showSelected165
"`18`" "`18`" "`18`" "`18`" "`18`"
showSelected166 showSelected167 showSelected168 showSelected169 showSelected170
"`18`" "`18`" "`18`" "`18`" "`18`"
showSelected171 showSelected172 showSelected173 showSelected174 showSelected175
"`18`" "`19`" "`19`" "`19`" "`19`"
showSelected176 showSelected177 showSelected178 showSelected179 showSelected180
"`19`" "`19`" "`19`" "`19`" "`19`"
showSelected181 showSelected182 showSelected183 showSelected184 showSelected185
"`19`" "`19`" "`19`" "`19`" "`19`"
showSelected186 showSelected187 showSelected188 showSelected189 showSelected190
"`19`" "`19`" "`19`" "`19`" "`19`"
showSelected191 showSelected192 showSelected193 showSelected194 showSelected195
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected196 showSelected197 showSelected198 showSelected199 showSelected200
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected201 showSelected202 showSelected203 showSelected204 showSelected205
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected206 showSelected207 showSelected208 showSelected209 showSelected210
"`20`" "`20`" "`20`" "`20`" "`20`"
showSelected211 showSelected212 showSelected213 showSelected214 showSelected215
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected216 showSelected217 showSelected218 showSelected219 showSelected220
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected221 showSelected222 showSelected223 showSelected224 showSelected225
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected226 showSelected227 showSelected228 showSelected229 showSelected230
"`21`" "`21`" "`21`" "`21`" "`21`"
showSelected231 showSelected232 showSelected233 showSelected234 showSelected235
"`21`" "`22`" "`22`" "`22`" "`22`"
showSelected236 showSelected237 showSelected238 showSelected239 showSelected240
"`22`" "`22`" "`22`" "`22`" "`22`"
showSelected241 showSelected242 showSelected243 showSelected244 showSelected245
"`22`" "`22`" "`22`" "`22`" "`22`"
showSelected246 showSelected247 showSelected248 showSelected249 showSelected250
"`22`" "`22`" "`22`" "`22`" "`22`"
showSelected251 showSelected252 showSelected253 showSelected254 showSelected255
"`22`" "`22`" "`22`" "`23`" "`23`"
showSelected256 showSelected257 showSelected258 showSelected259 showSelected260
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected261 showSelected262 showSelected263 showSelected264 showSelected265
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected266 showSelected267 showSelected268 showSelected269 showSelected270
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected271 showSelected272 showSelected273 showSelected274 showSelected275
"`23`" "`23`" "`23`" "`23`" "`23`"
showSelected276 showSelected277 showSelected278 showSelected279 showSelected280
"`23`" "`24`" "`24`" "`24`" "`24`"
showSelected281 showSelected282 showSelected283 showSelected284 showSelected285
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected286 showSelected287 showSelected288 showSelected289 showSelected290
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected291 showSelected292 showSelected293 showSelected294 showSelected295
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected296 showSelected297 showSelected298 showSelected299 showSelected300
"`24`" "`24`" "`24`" "`24`" "`24`"
showSelected301 showSelected302 showSelected303 showSelected304 showSelected305
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected306 showSelected307 showSelected308 showSelected309 showSelected310
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected311 showSelected312 showSelected313 showSelected314 showSelected315
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected316 showSelected317 showSelected318 showSelected319 showSelected320
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected321 showSelected322 showSelected323 showSelected324 showSelected325
"`25`" "`25`" "`25`" "`25`" "`25`"
showSelected326 showSelected327 showSelected328 showSelected329 showSelected330
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected331 showSelected332 showSelected333 showSelected334 showSelected335
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected336 showSelected337 showSelected338 showSelected339 showSelected340
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected341 showSelected342 showSelected343 showSelected344 showSelected345
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected346 showSelected347 showSelected348 showSelected349 showSelected350
"`26`" "`26`" "`26`" "`26`" "`26`"
showSelected351 showSelected352 showSelected353 showSelected354 showSelected355
"`26`" "`27`" "`27`" "`27`" "`27`"
showSelected356 showSelected357 showSelected358 showSelected359 showSelected360
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected361 showSelected362 showSelected363 showSelected364 showSelected365
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected366 showSelected367 showSelected368 showSelected369 showSelected370
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected371 showSelected372 showSelected373 showSelected374 showSelected375
"`27`" "`27`" "`27`" "`27`" "`27`"
showSelected376 showSelected377 showSelected378 showSelected379 showSelected380
"`27`" "`27`" "`27`" "`28`" "`28`"
showSelected381 showSelected382 showSelected383 showSelected384 showSelected385
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected386 showSelected387 showSelected388 showSelected389 showSelected390
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected391 showSelected392 showSelected393 showSelected394 showSelected395
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected396 showSelected397 showSelected398 showSelected399 showSelected400
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected401 showSelected402 showSelected403 showSelected404 showSelected405
"`28`" "`28`" "`28`" "`28`" "`28`"
showSelected406 showSelected407 showSelected408 showSelected409 showSelected410
"`28`" "`29`" "`29`" "`29`" "`29`"
showSelected411 showSelected412 showSelected413 showSelected414 showSelected415
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected416 showSelected417 showSelected418 showSelected419 showSelected420
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected421 showSelected422 showSelected423 showSelected424 showSelected425
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected426 showSelected427 showSelected428 showSelected429 showSelected430
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected431 showSelected432 showSelected433 showSelected434 showSelected435
"`29`" "`29`" "`29`" "`29`" "`29`"
showSelected436 showSelected437 showSelected438 showSelected439 showSelected440
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected441 showSelected442 showSelected443 showSelected444 showSelected445
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected446 showSelected447 showSelected448 showSelected449 showSelected450
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected451 showSelected452 showSelected453 showSelected454 showSelected455
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected456 showSelected457 showSelected458 showSelected459 showSelected460
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected461 showSelected462 showSelected463 showSelected464 showSelected465
"`30`" "`30`" "`30`" "`30`" "`30`"
showSelected466 showSelected467 showSelected468 showSelected469 showSelected470
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected471 showSelected472 showSelected473 showSelected474 showSelected475
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected476 showSelected477 showSelected478 showSelected479 showSelected480
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected481 showSelected482 showSelected483 showSelected484 showSelected485
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected486 showSelected487 showSelected488 showSelected489 showSelected490
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected491 showSelected492 showSelected493 showSelected494 showSelected495
"`31`" "`31`" "`31`" "`31`" "`31`"
showSelected496 showSelected497 showSelected498 showSelected499 showSelected500
"`31`" "`32`" "`32`" "`32`" "`32`"
showSelected501 showSelected502 showSelected503 showSelected504 showSelected505
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected506 showSelected507 showSelected508 showSelected509 showSelected510
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected511 showSelected512 showSelected513 showSelected514 showSelected515
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected516 showSelected517 showSelected518 showSelected519 showSelected520
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected521 showSelected522 showSelected523 showSelected524 showSelected525
"`32`" "`32`" "`32`" "`32`" "`32`"
showSelected526 showSelected527 showSelected528 showSelected529 showSelected530
"`32`" "`32`" "`32`" "`33`" "`33`"
showSelected531 showSelected532 showSelected533 showSelected534 showSelected535
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected536 showSelected537 showSelected538 showSelected539 showSelected540
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected541 showSelected542 showSelected543 showSelected544 showSelected545
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected546 showSelected547 showSelected548 showSelected549 showSelected550
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected551 showSelected552 showSelected553 showSelected554 showSelected555
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected556 showSelected557 showSelected558 showSelected559 showSelected560
"`33`" "`33`" "`33`" "`33`" "`33`"
showSelected561 showSelected562 showSelected563 showSelected564 showSelected565
"`33`" "`34`" "`34`" "`34`" "`34`"
showSelected566 showSelected567 showSelected568 showSelected569 showSelected570
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected571 showSelected572 showSelected573 showSelected574 showSelected575
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected576 showSelected577 showSelected578 showSelected579 showSelected580
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected581 showSelected582 showSelected583 showSelected584 showSelected585
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected586 showSelected587 showSelected588 showSelected589 showSelected590
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected591 showSelected592 showSelected593 showSelected594 showSelected595
"`34`" "`34`" "`34`" "`34`" "`34`"
showSelected596 showSelected597 showSelected598 showSelected599 showSelected600
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected601 showSelected602 showSelected603 showSelected604 showSelected605
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected606 showSelected607 showSelected608 showSelected609 showSelected610
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected611 showSelected612 showSelected613 showSelected614 showSelected615
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected616 showSelected617 showSelected618 showSelected619 showSelected620
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected621 showSelected622 showSelected623 showSelected624 showSelected625
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected626 showSelected627 showSelected628 showSelected629 showSelected630
"`35`" "`35`" "`35`" "`35`" "`35`"
showSelected631 showSelected632 showSelected633 showSelected634 showSelected635
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected636 showSelected637 showSelected638 showSelected639 showSelected640
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected641 showSelected642 showSelected643 showSelected644 showSelected645
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected646 showSelected647 showSelected648 showSelected649 showSelected650
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected651 showSelected652 showSelected653 showSelected654 showSelected655
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected656 showSelected657 showSelected658 showSelected659 showSelected660
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected661 showSelected662 showSelected663 showSelected664 showSelected665
"`36`" "`36`" "`36`" "`36`" "`36`"
showSelected666 showSelected667 showSelected668 showSelected669 showSelected670
"`36`" "`37`" "`37`" "`37`" "`37`"
showSelected671 showSelected672 showSelected673 showSelected674 showSelected675
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected676 showSelected677 showSelected678 showSelected679 showSelected680
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected681 showSelected682 showSelected683 showSelected684 showSelected685
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected686 showSelected687 showSelected688 showSelected689 showSelected690
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected691 showSelected692 showSelected693 showSelected694 showSelected695
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected696 showSelected697 showSelected698 showSelected699 showSelected700
"`37`" "`37`" "`37`" "`37`" "`37`"
showSelected701 showSelected702 showSelected703
"`37`" "`37`" "`37`"
$data.variables
[1] "iteration" "x" "y" "newx" "newy" "z"
[7] "iteration2"
Error in checkPlotForAnimintExtensions(p, list.name) :
data does not have interactive variables
LS0tCnRpdGxlOiAiR3JhZGllbnQgRGVzY2VudCBpbiBhbmltaW50MiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpgYGB7cn0KCmdyYWQuZGVzYyA9IGZ1bmN0aW9uKAogIEZVTiA9IGZ1bmN0aW9uKHgsIHkpIHheMiArIDIgKiB5XjIsIHJnID0gYygtMywgLTMsIDMsIDMpLCBpbml0ID0gYygtMywgMyksCiAgZ2FtbWEgPSAwLjA1LCB0b2wgPSAwLjAwMSwgZ3IgPSBOVUxMLCBsZW4gPSA1MCwgbm1heCA9IDUwKSB7CiAgeCA8LSBzZXEocmdbMV0sIHJnWzNdLCBsZW5ndGggPSBsZW4pCiAgeSA8LSBzZXEocmdbMl0sIHJnWzRdLCBsZW5ndGggPSBsZW4pCiAgY29udG91ciA8LSBleHBhbmQuZ3JpZCh4ID0geCwgeSA9IHkpCiAgY29udG91ciR6IDwtIGFzLnZlY3RvcihvdXRlcih4LCB5LCBGVU4pKQogIAogIG5tcyA9IG5hbWVzKGZvcm1hbHMoRlVOKSkKICBncmFkID0gaWYgKGlzLm51bGwoZ3IpKSB7CiAgICBkZXJpdihhcy5leHByZXNzaW9uKGJvZHkoRlVOKSksIG5tcywgZnVuY3Rpb24uYXJnID0gVFJVRSkKICB9IGVsc2UgewogICAgZnVuY3Rpb24oLi4uKSB7CiAgICAgIHJlcyA9IEZVTiguLi4pCiAgICAgIGF0dHIocmVzLCAnZ3JhZGllbnQnKSA9IG1hdHJpeChnciguLi4pLCBucm93ID0gMSwgbmNvbCA9IDIpCiAgICAgIHJlcwogICAgfQogIH0KICAKICB4eSA8LSBpbml0CiAgbmV3eHkgPC0geHkgLSBnYW1tYSAqIGF0dHIoZ3JhZCh4eVsxXSwgeHlbMl0pLCAnZ3JhZGllbnQnKQogIHogPC0gRlVOKG5ld3h5WzFdLCBuZXd4eVsyXSkKICBnYXAgPC0gYWJzKHogLSBGVU4oeHlbMV0sIHh5WzJdKSkKICBpIDwtIDEKICB3aGlsZSAoZ2FwID4gdG9sICYmIGkgPD0gbm1heCkgewogICAgeHkgPC0gcmJpbmQoeHksIG5ld3h5W2ksIF0pCiAgICBuZXd4eSA8LSByYmluZChuZXd4eSwgeHlbaSArIDEsIF0gLSBnYW1tYSAqIGF0dHIoZ3JhZCh4eVtpICsgMSwgMV0sIHh5W2kgKyAxLCAyXSksICdncmFkaWVudCcpKQogICAgeiA8LSBjKHosIEZVTihuZXd4eVtpICsgMSwgMV0sIG5ld3h5W2kgKyAxLCAyXSkpCiAgICBnYXAgPC0gYWJzKHpbaSArIDFdIC0gRlVOKHh5W2kgKyAxLCAxXSwgeHlbaSArIDEsIDJdKSkKICAgIGkgPC0gaSArIDEKICAgIGlmIChpID4gbm1heCkgd2FybmluZygnTWF4aW11bSBudW1iZXIgb2YgaXRlcmF0aW9ucyByZWFjaGVkIScpCiAgfQogIG9iamVjdGl2ZSA8LSBkYXRhLmZyYW1lKGl0ZXJhdGlvbiA9IDE6aSwgeCA9IHh5WywgMV0sIHkgPSB4eVssIDJdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd4ID0gbmV3eHlbLCAxXSwgbmV3eSA9IG5ld3h5WywgMl0sIHogPSB6KQogIGludmlzaWJsZSgKICAgIGxpc3QoY29udG91ciA9IGNvbnRvdXIsIG9iamVjdGl2ZSA9IG9iamVjdGl2ZSkKICApCn0KYGBgCgoKYGBge3J9CmRhdCA8LSBncmFkLmRlc2MoKQpjb250b3VyIDwtIGRhdCRjb250b3VyCm9iamVjdGl2ZSA8LSBkYXQkb2JqZWN0aXZlCgpsaWJyYXJ5KHBseXIpCm9iamVjdGl2ZSA8LSBsZHBseShvYmplY3RpdmUkaXRlcmF0aW9uLCBmdW5jdGlvbihpKSB7CiAgZGYgPC0gc3Vic2V0KG9iamVjdGl2ZSwgaXRlcmF0aW9uIDw9IGkpCiAgY2JpbmQoZGYsIGl0ZXJhdGlvbjIgPSBpKQp9KQpvYmplY3RpdmUyIDwtIHN1YnNldChvYmplY3RpdmUsIGl0ZXJhdGlvbiA9PSBpdGVyYXRpb24yKQpgYGAKCgpgYGB7cn0KbGlicmFyeShhbmltaW50MikKbGlicmFyeShncmlkKQoKKGNvbnRvdXIucGxvdCA8LSBnZ3Bsb3QoKSArIAogICAgZ2VvbV9jb250b3VyKGRhdGEgPSBjb250b3VyLCBhZXMoeCA9IHgsIHkgPSB5LCB6ID0geiwgY29sb3VyID0gLi5sZXZlbC4uKSwgc2l6ZSA9IC41KSArIAogICAgc2NhbGVfY29sb3VyX2NvbnRpbnVvdXMobmFtZSA9ICJ6IHZhbHVlIikgKyAKICAgIGdlb21fcGF0aChkYXRhID0gb2JqZWN0aXZlLCBhZXMoeCA9IHgsIHkgPSB5KSwgc2hvd1NlbGVjdGVkID0gb2JqZWN0aXZlJGl0ZXJhdGlvbjIsIAogICAgICAgICAgICAgIGNvbG91ciA9ICJyZWQiLCBzaXplID0gMSwgYXJyb3cgPSBhcnJvdyhsZW5ndGggPSB1bml0KC41LCAiY20iKSkpICsgCiAgICAjIGFyZ3VtZW50IGFycm93IGRvZXNuJ3QgdGFrZSBlZmZlY3QuCiAgICBnZW9tX3BvaW50KGRhdGEgPSBvYmplY3RpdmUsIGFlcyh4ID0geCwgeSA9IHkpLCBzaG93U2VsZWN0ZWQgPSBvYmplY3RpdmUkaXRlcmF0aW9uMiwgY29sb3VyID0gImdyZWVuIiwgCiAgICAgICAgICAgICAgIHNpemUgPSAyKSArIAogICAgZ2VvbV90ZXh0KGRhdGEgPSBvYmplY3RpdmUyLCBhZXMoeCA9IHgsIHkgPSB5IC0gMC4yLCBsYWJlbCA9IHJvdW5kKHosIDIpKSwgc2hvd1NlbGVjdGVkID0gb2JqZWN0aXZlMiRpdGVyYXRpb24yLCAKICAgICAgICAgICAgICB2anVzdCA9IDEpICsgCiAgICAjIGFyZ3VtZW50IHZqdXN0IG9yIGhqdXN0IGRvZXNuJ3QgdGFrZSBlZmZlY3QuCiAgICBzY2FsZV94X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSkgKyAKICAgIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsIDApKSArIAogICAgZ2d0aXRsZSgiY29udG91ciBvZiBmdW5jdGlvbiB2YWx1ZSIpICsgCiAgICB0aGVtZV9hbmltaW50KHdpZHRoID0gNjAwLCBoZWlnaHQgPSA2MDApKQoKKG9iamVjdGl2ZS5wbG90IDwtIGdncGxvdCgpICsKICAgIGdlb21fbGluZShkYXRhID0gb2JqZWN0aXZlMiwgYWVzKHggPSBpdGVyYXRpb24sIHkgPSB6KSwgY29sb3VyID0gInJlZCIpICsgCiAgICBnZW9tX3BvaW50KGRhdGEgPSBvYmplY3RpdmUyLCBhZXMoeCA9IGl0ZXJhdGlvbiwgeSA9IHopLCBjb2xvdXIgPSAicmVkIikgKyAKICAgIGdlb21fdGFsbHJlY3QoZGF0YSA9IG9iamVjdGl2ZTIsIGFlcyh4bWluID0gaXRlcmF0aW9uIC0gMSAvIDIsIHhtYXggPSBpdGVyYXRpb24gKyAxIC8gMiksIAogICAgICAgICAgICAgICAgICBjbGlja1NlbGVjdHMudmFyaWFibGUgPSBvYmplY3RpdmUyJGl0ZXJhdGlvbjIsIGFscGhhID0gLjMpICsgCiAgICBnZW9tX3RleHQoZGF0YSA9IG9iamVjdGl2ZTIsIGFlcyh4ID0gaXRlcmF0aW9uLCB5ID0geiArIDAuMywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IGl0ZXJhdGlvbiksIHNob3dTZWxlY3RlZCA9IG9iamVjdGl2ZTIkaXRlcmF0aW9uMikgKyAKICAgIGdndGl0bGUoIm9iamVjdGl2ZSB2YWx1ZSB2cy4gaXRlcmF0aW9uIikgKyAKICAgIHRoZW1lX2FuaW1pbnQod2lkdGggPSA2MDAsIGhlaWdodCA9IDYwMCkpCgp2aXogPC0gbGlzdChjb250b3VyID0gY29udG91ci5wbG90LCBvYmplY3RpdmUgPSBvYmplY3RpdmUucGxvdCwgCiAgICAgICAgICAgIHRpbWUgPSBsaXN0KHZhcmlhYmxlID0gIml0ZXJhdGlvbjIiLCBtcyA9IDIwMDApLCAKICAgICAgICAgICAgdGl0bGUgPSAiRGVtb25zdHJhdGlvbiBvZiBHcmFkaWVudCBEZXNjZW50IEFsZ29yaXRobSIpCmBgYAoKCmBgYHtyfQphbmltaW50MmRpcih2aXosIG91dC5kaXIgPSAiZ3JhZC5kZXNjIikKYGBgCgpgYGB7cn0KYW5pbWludDJnaXN0KHZpeiwgb3V0LmRpciA9ICJncmFkLmRlc2MiKQpgYGAKCg==