generated from shawngraham/twine-app-builder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
770 lines (496 loc) · 197 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
<!DOCTYPE html><html><head><title>5706-cyoa-v2</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style>.small-caps{text-transform:uppercase;font-size:70%;letter-spacing:.075em}#backstage .panel h2{margin:0}#backstage .panel h2 button{text-align:left;background:none;border:none;width:100%;font-weight:400;text-transform:uppercase;font-size:70%;letter-spacing:.075em;font-size:11px;padding:0 8px}#backstage .panel h2 button:before{content:"\25BA";display:inline-block;width:1.25em}#backstage .panel h2 button:hover{color:#495057}#backstage .panel.open h2 button:before{content:"\25BC"}
#backstage table.history td.actions{width:2.5em}#backstage table.history td.go{border-right:1px solid #000}
#backstage ul.tabs{list-style:none;margin:8px;padding:0;display:flex;border:1px solid #000;font-size:12px}#backstage ul.tabs li{flex-grow:1;border-right:1px solid #000;text-align:center}#backstage ul.tabs li:last-child{border-right:none}#backstage ul.tabs li button{color:#000;text-decoration:none;display:block;width:100%;height:28px;padding:8px;border:none;border-radius:0}#backstage ul.tabs li button.active{background:#000;color:#dee2e6}#backstage .tab-content{max-height:calc(100vh - $backstage-tab-height);overflow:auto}
.small-caps{text-transform:uppercase;font-size:70%;letter-spacing:.075em}body.backstage-visible #backdrop{justify-content:flex-start;max-width:67vw}#backstage{position:fixed;top:0;right:0;bottom:0;width:33vw;max-height:100vh;font-size:18px;background:#dee2e6;color:#000;transform:translateX(100%);box-shadow:inset 2px 0 3px rgba(0,0,0,.25);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu Cantarell,Helvetica Neue,sans-serif;font-size:80%}#backstage:before{content:"";position:absolute;z-index:2;top:calc(50% - 25px);right:calc(100% - 4px);height:50px;width:4px;background:#dee2e6}@media screen and (max-width:425px){#backstage{width:calc(100vw - 25px)}}#backstage.open{transform:none}#backstage .toggle-visibility{position:absolute;z-index:1;top:calc(50% - 25px);right:100%;width:25px;height:50px;padding:0;background:#dee2e6;color:#000;border:none;border-top-left-radius:25px;border-bottom-left-radius:25px;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:inset 2px 0 3px rgba(0,0,0,.25);font-size:18px}#backstage button{color:#000;background:transparent;padding:8px;border-radius:16px;border:1px solid #000}#backstage button:hover{background:#e9ecef}#backstage p{padding:0 8px}#backstage li,#backstage p,#backstage td{font-size:12px}#backstage input,#backstage select{color:#000;background:transparent;border:1px solid #000;padding:8px}#backstage table{background:transparent;table-layout:fixed;border-collapse:collapse;width:calc(100% - 16px);margin:8px}#backstage th{text-align:left}#backstage td{position:relative;border:1px solid #000;padding:8px;vertical-align:top}#backstage td:first-child{border-left:none}#backstage td:last-child{border-right:none}#backstage td button,#backstage td input{background:none;border:none;border-radius:0;position:absolute;top:0;left:0;bottom:0;width:100%;padding:8px}#backstage textarea{background:transparent;border:1px solid #000;color:#000;padding:8px;width:100%;height:7.75em}#backstage .block{display:block;margin:8px;width:calc(100% - 16px)}#backstage .disabled{color:#868e96}#backstage .indented-input{margin-left:calc(10em + 8px);font-size:12px}#backstage .input-group{display:flex;align-items:center}#backstage .input-group label:first-child{text-align:right;margin-right:8px;width:10em}#backstage .input-group input,#backstage .input-group select{flex-grow:1}#backstage .segmented-button{display:flex}#backstage .segmented-button button{border-left:none;border-radius:0;margin:0;flex-grow:1}#backstage .segmented-button button:first-child{border-left:1px solid #000;border-top-left-radius:16px;border-bottom-left-radius:16px}#backstage .segmented-button button:last-child{border-top-right-radius:16px;border-bottom-right-radius:16px}#backstage .segmented-button .fixed{flex-grow:0;min-width:24px}#backstage .tab-content{max-height:calc(100vh - 28px);overflow:auto}
.fade-in{opacity:0;animation:fade-in 1s ease-out forwards}.fade-out{animation:fade-in 1s ease-out reverse forwards}.skip-animation{animation-delay:0s!important}@keyframes fade-in{0%{opacity:0}to{opacity:1}}
#page .warnings{list-style-type:none;padding-left:0;margin-left:0}
.small-caps{text-transform:uppercase;font-size:70%;letter-spacing:.075em}#backdrop{min-height:100vh;align-items:center}#backdrop,#page{display:flex;justify-content:center}#page{flex-direction:column;width:40em;min-height:calc(100vh - 2em);max-width:calc(100vw - 2em);line-height:150%;margin:1em;padding:4em 4em 2em;position:relative}#page article{flex-grow:1;display:flex}#page article>:first-child{margin-top:0;width:100%}#page footer,#page header{display:flex}#page footer>div,#page header>div{flex-grow:1}#page footer p,#page header p{margin:.5em 0 0}#page footer .center,#page header .center{text-align:center}#page footer .right p,#page header .right p{text-align:right}#page header{margin-top:0}#page header.has-content{border-bottom:1px solid #000}#page header.has-content+article>article>div>p:first-child,#page header.has-content+article>div>p:first-child{margin-top:1em}#page footer{margin-bottom:0}#page footer.has-content{border-top:1px solid #000}#page hr{border:none}#page hr:after{content:"* \A0 * \A0 *";display:block;text-align:center}#page .error,#page .warning{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu Cantarell,Helvetica Neue,sans-serif;font-size:80%;background:#fff5f5;color:#c92a2a;padding:.5em;border-left:4px solid #ffa8a8;position:relative;margin-bottom:1em;overflow:auto}#page .error :first-child,#page .warning :first-child{margin-top:0}#page .error :last-child,#page .warning :last-child{margin-bottom:0}#page .error a,#page .warning a{color:#c92a2a}#page .warning{background:#fff9db;color:#e67700}#page .warning a{color:#e67700}#page .fork p{display:flex;flex-direction:column;width:100%}#page .fork p a{display:block;flex-grow:1;text-align:center;padding:.5em}@media screen and (max-width:768px){#page{margin:0;width:100vw;max-width:100vw;min-height:100vh;padding:1em}}#spinner{position:absolute;bottom:0;right:0;opacity:0;transition:opacity .25s ease-in-out;pointer-events:none}#spinner.visible{display:block;opacity:1}
*{box-sizing:border-box}body{margin:0;padding:0}img{max-width:100%;height:auto}input[type=text],select{padding:.25em}pre{white-space:pre-wrap}tw-storydata{display:none}</style></head><body><form id="cb-validation" action="javascript:void(0)"><button id="cb-validation-tester" hidden></button> <button id="cb-block-enter-key" hidden></button><div id="backdrop"><div id="page" aria-live="polite"><header><div class="left"></div><div class="center"></div><div class="right"></div></header><article></article><ul class="warnings"></ul><footer><div class="left"></div><div class="center"></div><div class="right"></div></footer><div id="spinner"><img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogICAgPHJlY3QgeD0iMzEiIHk9IjE0IiB3aWR0aD0iMzgiIGhlaWdodD0iNzIiIHJ4PSI0IiBmaWxsPSJ3aGl0ZSIgLz4KICAgIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjI4IiBmaWxsPSJ3aGl0ZSIgLz4KCTxyZWN0IHg9IjM1IiB5PSIxOCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjY0IiByeD0iNCIgZmlsbD0id2hpdGUiIHN0cm9rZS13aWR0aD0iMnB4IiBzdHJva2U9ImJsYWNrIiAvPgogICAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iMjAiIHN0cm9rZT0iYmxhY2siIGZpbGw9IndoaXRlIiBzdHJva2Utd2lkdGg9IjJweCIgLz4KCTxsaW5lIHgxPSI1MCIgeTE9IjUwIiB4Mj0iNTAiIHkyPSIzNyIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIycHgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0KICAgICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgICBiZWdpbj0iMHMiCiAgICAgICAgICAgIGR1cj0iMjBzIgogICAgICAgICAgICB0eXBlPSJyb3RhdGUiCiAgICAgICAgICAgIGZyb209IjAgNTAgNTAiCiAgICAgICAgICAgIHRvPSIzNjAgNTAgNTAiCiAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIgogICAgICAgIC8+Cgk8L2xpbmU+Cgk8bGluZSB4MT0iNTAiIHkxPSI1MCIgeDI9IjQyIiB5Mj0iNTAiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMnB4IiBzdHJva2UtbGluZWNhcD0icm91bmQiPgogICAgICAgIDxhbmltYXRlVHJhbnNmb3JtCiAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKICAgICAgICAgICAgYmVnaW49IjBzIgogICAgICAgICAgICBkdXI9IjEyMHMiCiAgICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgICAgZnJvbT0iMCA1MCA1MCIKICAgICAgICAgICAgdG89IjM2MCA1MCA1MCIKICAgICAgICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiCiAgICAgICAgLz4KCTwvbGluZT4KPC9zdmc+" width="40" height="40" alt=""></div></div></div></form><tw-storydata name="5706-cyoa-v2" startnode="1" creator="Twine" creator-version="2.3.14" ifid="71774762-0FB9-42E6-9F3D-C51E54552DB6" zoom="1" format="Chapbook" format-version="1.2.1" options="" hidden><style role="stylesheet" id="twine-user-stylesheet" type="text/twine-css">blockquote {
font: 14px/22px normal helvetica, sans-serif;
margin-top: 10px;
margin-bottom: 10px;
margin-left: 50px;
padding-left: 15px;
border-left: 3px solid #ccc;
} </style><script role="script" id="twine-user-script" type="text/twine-javascript"></script><tw-passagedata pid="1" name="Start" tags="" position="967,719.5" size="100,100">interestMaps: false
interestStorytelling: false
interestData: false
structuredData: false
unstructuredData: false
interestCompC: false
interestImages: false
interestLOD: false
yourInterest: 'unknown'
mySkill: 1
config.header.right: "Your current path: {yourInterest}"
config.header.left: "HIST5706 Fall 2021 Carleton University Dr. Graham."
--
# HIST5706
## Introduction to Digital History
Let's take advantage of the fact that things are, well, different than once they were. This is an opportunity for us to rethink how we do things. For instance, why not build the course, and your experience in it, around what _you_ want to learn, rather than what I think you should know? Who knows - I might be out of touch, or perhaps I might just not appreciate what it is you need to get out of my course.
In what follows, I'm going to show you examples, and ask you questions, and by tracking your path, I will build up a syllabus for this term for you to follow, drawing on your interests and my experience with a wide variety of materials, tools, projects, and previous student work.
+ <b>When you see bulletted text in the narrative some of which is underlined, clicking on that text will change the sentence, to enable you to better describe YOUR perspective. Click until you find a sentence that is true for you. These sentences are always marked with bullet points.</b>
Elsewhere in the narrative, the link behind underlined text will take you to an altogether new passage of text. Sometimes, it will open a new window going to a website to provide you with more context
When you get to the end, copy and paste everything into a new document. And *that will be your syllabus!* If you don't like it, 'go out into the hallway' and then return, to explore a different path instead.
<blockquote>
<i><b>NB</b> This experience is made with <a href="https://twinery.org" target="_blank">Twine</a> and it saves its state - your answers - in your browser. I don't see these responses. The story will use these answers, plus how you react to subsequent prompts, to put together a syllabus that </i>should<i> help you get the most out of this course. Remember, anything underlined in red either takes you to a new passage or changes the text in meaningful ways. Roll with it.</i>
</blockquote>
___
Ready? [[Let's go!|personalSurvey]]</tw-passagedata><tw-passagedata pid="2" name="personalSurvey" tags="" position="969,869.5" size="100,100">You knock on the door to PA 406, a bit hesitant. The door is partially open, and you can see a mildly balding man, standing at his desk, clearly frustrated by whatever the computer is *not* doing.
[if passage.visits == 2]
"Ah, you're back! Changed your mind?"
"Hey, c'mon in, don't worry, I'm just fighting with the machine again. I've had to confess on Twitter that I'm not sure how to do something, and people are sending me suggestions. It'll work. Eventually."
He gestures towards the big blue chair, and you sit down.
[if passage.visits == 1]
"So... you're about to start HIST5706, eh? Good choice, good choice! What's on your mind?"
[continue]
<b>You say... </b>
+ "My experience with digital technologies has {cycling link for: 'experiencePrompt', choices: ['been limited to', 'sometimes involved a bit more than', 'gone far beyond']} writing essays.
+ I am {cycling link for: 'attitudePrompt', choices: ['ok with', 'made nervous by', 'terrified by']} the thought of admitting to a prof or my peers that something hasn't worked, that I might not know how to do something.
+ I have {cycling link for: 'guiPrompt', choices: ['never', 'sometimes', 'frequently']} used menu based or GUI point-and-click software to make creative digital things.
+ I would say that I am {cycling link for: 'skillPrompt', choices: ['not often', 'sometimes', 'frequently']} able to pick up new technologies easily.
+ I have {cycling link for: 'commandPrompt', choices: ['never', 'sometimes', 'frequently']} used the command prompt.
+ I have {cycling link for: 'dataPrompt', choices: ['never', 'sometimes', 'often']} used APIs to obtain historical data.
+ So, to sum it up, I am {cycling link for: 'outlookPrompt', choices: ['excited but nervous', 'quietly terrified', 'ready for anything']} I guess!"
He nods. "[[Good, good! Let's give you a sense of what you're in for|choicesHub]]!"
</tw-passagedata><tw-passagedata pid="3" name="choicesHub" tags="" position="967,1019.5" size="100,100">"In my opinion, there are at least three broad trends in DigHist as it is generally practised. There could be more. So let's see what [[a macroscopic perspective|data]], a [[storytelling]] approach, [[mapping|maps]], or [[computer vision|imagery]] could offer us.
Alright, four broad trends."
[if passage.visits == 4]
<i>"I like the enthusiasm! There are other things that can be digital history, but now we're really pushing the boat out. Maybe [[computational creativity]] is up your ally?"</i>
[if passage.visits == 5]
<i>"Hmm... what else. Well, there are things like [[Linked Open Data]] but I have to warn you, I haven't done much with that and it might be hard for me to support you. However, I'm game if you are!"</i>
[if passage.visits == 6]
<i>"Well, I think you've probably got more than enough options to fill the 12 weeks of this course. However, I have a number of research projects underway, like <a href="https://bonetrade.github.io" target="_blank">The BoneTrade Project</a> and the <a href="https://shawngraham.github.io/CCAD/" target="_blank">Computational Creativity and Archaeological Data project</a> and the <a href="https://carleton.ca/xlab" target="_blank">XLab</a> which probably could use some help. So let's talk about the possibilities, ok? But in the meantime, let's [[look at your personal syllabus|your personal syllabus]]."</i>
</tw-passagedata><tw-passagedata pid="4" name="data" tags="" position="743,1169.5" size="100,100">interestData: true
yourInterest: 'Data'
--
"Macroscopes?"
"If we study very small things with microscopes, then I guess for very big things, we need macroscopes. Big Data kind of things.
{embed image: 'bigdata.jpg'}
'Data' is a pretty nebulous term, eh?
"Information" is probably better; it comes in all sorts of flavours. To handle it, we {reveal link: 'sometimes take macroscopic approaches', passage: 'Macroscopic-DH'}.</tw-passagedata><tw-passagedata pid="5" name="storytelling" tags="" position="892,1169.5" size="100,100">interestStorytelling: true
yourInterest: 'Storytelling'
--
"I'm interested in the storytelling aspect of digital history" you say.
He nods. "Many public history students often are. Nothing wrong with that! A compelling story can move us towards enchantment (and 'enchantment' does not have to be experienced as a positive thing, eh? Could be absolutely emotionally devestating. But we'll talk about all that in due course).
There are lots of possibilities here. Do you know 'Dwarf Fortress'? Absolutely bonkers game. It foregoes 3d graphics and uses the computer's power to simulate plate tectonics, the whole shbang, thousands of years of history, and then launches you into the middle of trying to guide a band of dwarves. It's The Sims, powered by a nuclear reactor. Anyway, the point - the people who play the game end up telling these amazing stories about what they've experienced. <i>Storytelling</i> is as much a part of the game as any of the digital stuff. Tarn Adams, one of its creators, thinks of games as 'storytelling companions'.
Isn't that amazing? Imagine using the tools of video games - these amazing powerful simulation machines - to set the player up to tell stories about the past? Total connections here with the literature on historical consciousness or the pedagogy of history or history in public spaces. Games don't have to be mediated by a video screen, by the way. Zombies Run is a purely audio experience and yet still compelling!
Then there are the possibilities of augmented reality; we've done a bit of that in the past around here. Some <a href="https://twitter.com/AydaLoewen/status/1239912094746755072" target="_blank">former students built an AR app to use in the National Gallery, and do a magic-window kind of thing on top of art by the Group of Seven, despoiling the art with pollution</a>. There's also projection mapping, a kind of light art where you use a digital projector to map images/sound onto physical spaces. <a href="http://picturinglebretonflats.ca/" target="_blank">Here's an example of this from a few years ago by Cristina Wood, a History MA student</a>.
Lots of options! [[No? Were you thinking of building websites?|websites]] "
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]]. <br><br>[[But you can reconsider, if you want.|choicesHub]]
</blockquote
</tw-passagedata><tw-passagedata pid="6" name="maps" tags="" position="1043,1169.5" size="100,100">interestMaps: true
yourInterest: 'mapping'
--
"Yeah! Maps! I love maps" you say.
He nods. "Yep, there is <i>so much</i> we might do with maps. For instance, one of my MA students, <a href="https://jeffblackadar.ca/" target="_blank">Jeff Blackader</a>, is teaching the machine to recognize annotations in old maps to reconstruct past landscapes."
{embed image: "https://jeffblackadar.ca/wp-content/uploads/2021/01/brush_hill-1-1024x693.png"}
"There's historical geographic information systems, which permit us to overlay historical maps and other geographical / environmental information, and then ask questions about how all these layer of data intersect, like, how do soil types and waterfalls affect settlement over time? (I was/am an archaeologist, so I tend to think of GIS in archaeological terms, but talk to Joanna Dean about the kind of stuff she does!).
There are webmaps, which are kinda like GIS, but more about the [[storytelling]] aspect of maps. A good webmap can be a really compelling data visualization!
There can be simulations, too, where we turn thousands of individual software agents loose on a (digital-)landscape, and see how they interact with each other and with the environment; we run the simulation thousands of times under varying conditions and use the aggregate of those results to try to understand the real-world historical conditions that we are simulating (this is about as close to <a href="https://www.youtube.com/watch?v=oxrlhYOw11s&list=PLKbRwyeu6RQupbZVHKFPGmI8jQB_Jzd6j&index=26" target="_blank">time travel</a>) as you're going to get). Sorry... sorry. Went off, was all archaeological again for a moment. Not many historians are doing this kind of work (aka agent based modeling), but I don't see any reason why they <i>shouldn't</i>."
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]].<br><br> [[But you can reconsider, if you want.|choicesHub]]
</blockquote>
</tw-passagedata><tw-passagedata pid="7" name="imagery" tags="" position="1193,1169.5" size="100,100">interestImages: true
yourInterest: 'images'
--
"I'm interested in photographic archives, image archives, that sort of thing, I think" you say.
"Excellent! There's a lot we can do with images. First of all though, I think you ought to download and install the free research image management software <a href="https://tropy.org/" target="_blank">Tropy</a>. It'll make your life <i>so</i> much easier.
Now... images. There's a lot we can do with images. In <a href="https://bonetrade.github.io" target="_blank">my own research on the human remains trade on Instagram</a> (yes, I know), we scrape thousands of photographs, and then look for patterns in them that correlate with other metadata we have - when they were posted, patterns in the text, networks of following/followed, that sort of thing. We use computer vision approaches powered by neural networks to train the computer how to see. Every month, this gets easier as new software makes its way out there... but it also makes it more dangerous, and people apply the techniques inappropriately.
There are another ways of looking for patterns over time in images that don't require neural networks. And then there are ways of putting images online at incredibly high resolution to allow extremely close inspection and study. Then there are things like what we're doing, looking at how social media or other crowdsourced collections of images can signal historical consciousness and so on."
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]]. <br><br>[[But you can reconsider, if you want.|choicesHub]]
</bockquote>
</tw-passagedata><tw-passagedata pid="8" name="Macroscopic-DH" tags="" position="743.8333358764648,1289.5" size="100,100">interestData: true
yourInterest: 'data'
--
take macroscopic approaches.
"Hang on! What <i>is</i> a 'macroscope'?"
Shawn pauses to think.
"It is... {reveal link: 'something for seeing the forest for the trees.', text: 'erm, well, that is, say you have a huge <a href="https://dohistory.org/diary/" target="_blank">number of diaries</a>. You can read them all, study them all, but what if you could see patterns in what the diarist thinks about, over time? Well, for that, you would use a <a href="http://www.cameronblevins.org/posts/topic-modeling-martha-ballards-diary/" target="_blank">topic model</a>. Imagine a world where everyone writes using words from only ten buckets. If we look at the distribution of those words over everything that is written, the computer can decompose those documents back to the percentages that a bucket - or topic - contributes over the entire document. Add change over time, and we have some pretty interesting material to work with! Oh, and here is a study using a topic model to parse rhetoric around <a href="https://www.cell.com/action/showPdf?pii=S2590-3322%2821%2900233-5" target="_blank">climate change</a>. Same approach, two very different frames!'}
"Do you want me to show you some [[other kinds of things we can do|more-macroscope]] with a macroscopic approach? Or I can [[tell you about other kinds of digital history|choicesHub]]." </tw-passagedata><tw-passagedata pid="9" name="more-macroscope" tags="" position="741.8333358764648,1417.5" size="100,100">interestData: true
yourInterest: 'data'
--
He scratches his head. "Well, there's <a href="https://www.tidytextmining.com/sentiment.html" target="_blank>sentiment analysis</. There's a technique called <a href="https://www.tidytextmining.com/tfidf.html" target="_blank>'term-frequency inverse-distribution frequency'</a> where we compare a corpus of texts to spot words or phrases that are unique to a particular document.
We might ask ourselves what the impact of different patterns of social relationships might have had at a particular historical moment, using [[social network analysis]].
And if we have census data or other kinds of quantitative data, there's a whole world of statistical analysis that we might try (including [[sonification|sound]]."
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]]. <br><br> [[But you can reconsider, if you want.|choicesHub]]
</blockquote></tw-passagedata><tw-passagedata pid="10" name="your personal syllabus" tags="" position="741.8333358764648,1568.5" size="100,100">mySkill (guiPrompt == 'sometimes'): mySkill + 1
mySkill (guiPrompt == 'frequently'): mySkill + 2
mySkill (skillPrompt == 'sometimes'): mySkill + 1
mySkill (skillPrompt == 'frequently'): mySkill + 2
mySkill (commandPrompt == 'sometimes'): mySkill + 1
mySkill (commandPrompt == 'frequently'): mySkill + 2
mySkill (dataPrompt == 'sometimes'): mySkill + 1
mySkill (dataPrompt == 'often'): mySkill + 2
--
You sit back, your head swirling with the possibilities. So many different strands, and just now, thinking about {yourInterest} ... You said you were {outlookPrompt} but oh! Now -
<i>
[if interestLOD == true]
You feel the urge to wire historical data using a linked open data approach. You cannot resist!
[if interestMaps == true]
You're interested in the possibilities offered by mapping.
[continue]
[if interestStorytelling == true]
You explored the possibilities of storytelling.
[continue]
[if interestData == true]
You peeked into some of the possibilities offered by a data-centric approach.
[continue]
[if interestImages == true]
You can see yourself working with imagery and photography.
[continue]
[if interestCompC == true]
You feel the creative urge to push the computer and history as far as you can.
[continue]
</i>Dr. Graham nods. He can see it in your eyes - you're alive to the possibilities, and he lives for that moment!
"But which digital tech [[do you really want to explore most|do you really want to explore]]?
</tw-passagedata><tw-passagedata pid="11" name="computational creativity" tags="" position="1338,1162.5" size="100,100">interestCompC: true
yourInterest: 'compC'
--
"Computational Creativity... you mean, like artistic stuff using computers, digital drawings, that kind of thing?"
"Can be. Can be. Reconstructions. Simulations. Certainly, it needs a kind of sideways-look at the world. But I'm also talking about computational methods that are themselves generative. One of the techniques I talked about with regard to studying historical [[imagery]] involved using a neural network to represent images as lists of numbers, then calculating the similarity of images from those numbers, or classifying them. But there's something else we can do:
![](https://electricarchaeologist.files.wordpress.com/2018/08/d6f00-1-gfsbymy9ojuqj-a3gtfeg.png?w=600)
That is: we train one network to decide whether or not an image is of something it knows, and we train another network to keep rearranging the pixels and making guesses until it fools the first one. Why do this? Well, if the second network can fool the first, then presumably it's learned something important about how those images are generated. Add in change over time, and we enter the realm of the historical...
I can imagine doing something similar with [[sound]] and soundscape. Or with texts! Imagine the implications of <a href="https://electricarchaeology.ca/2019/10/23/the-resurrection-of-flinders-petrie/" target="_blank">training a computer to write with the voice of someone long dead</a>. What would you ask them? What would they tell us? Where is the 'truth' value in this? Is this more about us, or them?
And then there's stuff like what Stu Eve does. I'm not quite sure how to categorize it, but <a href="http://www.heritagejam.org/2015exhibitionentries/2015/9/25/dead-mans-nose-stuart-eve" target="_blank">Dead Man's Nose</a> demonstrates a pretty wild way of thinking about these things.
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]].<br><br> [[But you can reconsider, if you want.|choicesHub]]
</blockquote></tw-passagedata><tw-passagedata pid="12" name="Linked Open Data" tags="" position="1493,1169.5" size="100,100">interestLOD: true
yourInterest: 'LOD'
--
"Linked Open Data - it's a mouthful, eh? The idea here is that while <i>hyperlinks</i> let us join different documents on the web together (remember, a webpage is still just a document), the computer doesn't really know any of the <i>semantic</i> information behind the links. So, in a linked open data approach, we embed that semantic information into the very structure of the links themselves. This lets us start to ask questions - who also was a painter contemporary to Van Gogh but working in Southern England, and is displayed at the Museum of Modern Art? And since that information might be kept in a number of different places, we have to have methods of differentiating between people who might have the same name, or places that share the same name (Surrey, UK versus Surrey, BC) and so on. So that handles the Linked part, and the Open part; then once you are able to start querying this graph (which takes into network analysis), and collecting the [[data]], well then... you can start making dynamic [[websites]] perhaps. Or doing all sorts of data driven questions, like finding communities of similar people or exploring how knowledge moves.
There's <a href="https://lincsproject.ca/" target="_blank">a lot of action in this field</a> with people like <a href="https://www.uoguelph.ca/arts/sets/people/susan-brown" target="_blank">Susan Brown</a>,<a href="https://www.uoguelph.ca/arts/history/people/kimberley-martin" target="_blank">Kim Martin</a>, <a href="https://www.nanohistory.org/about/team/" target="_blank">Matt Milner & Susan Colgan</a> leading the way.
If this is something you're interested in, then, well, I'll do my best to support you!"
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]]. <br><br>[[But you can reconsider, if you want.|choicesHub]]
</bockquote>
</tw-passagedata><tw-passagedata pid="13" name="websites" tags="" position="892,1319.5" size="100,100">interestStorytelling: true
yourInterest: 'websites'
--
"Um, yeah. Y'know, like... data stories? Online exhibits? That kind of thing?"
"Right! Things like <a href="https://www.nytimes.com/projects/2012/snow-fall/index.html#/?part=tunnel-creek" target="_blank">Snowfall</a>, by the New York Times. I edit a journal, by the way, where a couple of the contributors <a href="https://epoiesen.library.carleton.ca/2021/01/26/now-previously/" target="_blank">wanted a similar effect</a> (and which works best on browsers other than Safari). We can <i>totally</i> do that sort of thing.
Building <a href="https://minicomp.github.io/wax/about/" target="_blank">online exhibits</a>, finding a path through the materials, managing the metadata and all of the various rights at play, this can be quite complicated. And it interesects with [[maps]] often, or other kinds of [[data]] and of course [[imagery]]. Design, and publishing - yep, this is all an important vector for doing digital history. Sometimes this can involve making all kinds of <a href="https://electricarchaeology.ca/2021/05/05/a-museum-bot/" target="_blank">bots</a> too!
But there's far more to websites for digital history than 'mere' exhibitions. Take for instance the idea of reproducibility and replicability in digital history; Sharon Leon has produced a website with all of the replicable code for working with the data from the <a href="http://sharonhoward.org/llb_code/index.html" target="_blank">London Lives</a> book project - you can see for yourself how the data was munged in order to make the arguments the book makes (and, take their techniques for your _own_ data). Caleb McDaniel calls this sort of thing <a href="http://wcaleb.org/blog/open-notebook-history" target="_blank">Open Notebook History</a>. How <i>powerful</i> it would be, if we could all see underneath the hood, eh? And note that <i>this</i> kind of thing often involves a diy, punk kind of sensibility...
So there are websites, and then there are various kinds of web technologies that can power websites, discovery, and remixing (like [[linked open data|Linked Open Data]], although I have to admit that particular area is not a strong suit for me... yet.).
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]]. <br><br> [[But you can reconsider, if you want.|choicesHub]]
</blockquote
</tw-passagedata><tw-passagedata pid="14" name="sound" tags="" position="1337,1312.5" size="100,100">interestCompC: true
yourInterest: 'sound'
--
"Oh yeah!" he says. "Sound work - this can be things like podcasts, but it can also be things like representing data in sound (hmm, I have materials on [[data over here|data]], or remixing the results into a more musical composition, a kind of reflection. There are a few people around the department doing this sort of thing. Cristina Wood did a whole MRE using sonfication to explore the environmental history of <a href="https://songsoftheottawa" target="_blank">the Ottawa River</a>. Here's an example where counts of archaeological materials become sonified and then _remixed_ to make a <a href="https://epoiesen.library.carleton.ca/2020/10/30/datacore/" target="_blank">dance track</a> (and so through dancing, embody the knowledge...) And there's work by people like <a href="https://soundmarks.co.uk/" target="_blank">Rose Ferraby and Rob St. John, combining art, remote sensing data, and geoacoustics</a> (and oh, here's an entire issue from <a href="https://intarch.ac.uk/journal/issue44/index.html" target="_blank">Internet Archaeology on digital creativity in archaeology</a>...interesting how so many archaeologists are into that kind of thing. Did I mention I edit a journal on <a href="https://epoiesen.library.carleton.ca" target="_blank">creative engagement for history and archaeology</a>? I do... where was I. Oh yes-
But sound can also be used in [[playful contexts|storytelling]] or in geolocated <a href="https://explore.echoes.xyz/collections/2mZNKP20UuYwutBb" target="_blank">augmented reality</a>. Hang, you can even use Twine with a device's geolocation turned on to make a kind of <a href="https://o-date.github.io/draft/book/place-based-interpretation-with-locative-augmented-reality.html" target="_blank">geolocated storytelling</a>. And I know you said 'sound', but that just starts me thinking of a fuller digital sensorium, and the work of Anna Collar and Stu Eve who used VR/AR/MR to <a href="https://www.tandfonline.com/eprint/RG6BI52KAIJSW6AUC6JX/full?target=10.1080/00438243.2021.1920458" target="_blank">to explore meaning and experience in an engagment with the old Gods</a>."
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]].<br><br> [[But you can reconsider, if you want.|choicesHub]]
</blockquote></tw-passagedata><tw-passagedata pid="15" name="the-result" tags="" position="892.8333358764648,1727.5" size="100,100"><i> Graham nods. "There you go! Copy everything on this page, and then paste it into a new document in Word. Save as my-syllabus.doc and print it out! Oh, and if you have <a href="https://zotero.org" target="_blank">Zotero</a> installed, you can get it to grab all of the metadata & pdfs (sometimes) from the list below. You might want that. Helps with formatting bibliography, keeping research notes. That sort of thing. Word to the wise! See you in Discord."
You pick up your belongings, and head back out to the hallway. He turns back to his computer, sighs, and says to himself 'ah, someone knows how to fix it! I have not <a href="https://thedigitalpress.org/failing-gloriously/" target="_blank">failed</a> completely today..'
[[Head out to the hallway]]
</i>
<h1> HIST5706 Syllabus </h1>
For a person who is {outlookPrompt} about the course.
<i> Warning: any link in the syllabus below will load in </i>this<i> window </i>
<blockquote>
Every exercise has detailed instructions posted on the course website </blockquote>
Dates are for the <i>start</i> of the relevant week; relevant work may be completed at any time during that week.
<h2>Assessment</h2>
+ <b> All <i>digital exercises</i> are {cycling link for: 'assessChoice', choices: ['pass/fail','not graded','open to discussion','meant to build confidence','negotiable','for reflection','a starting point']}. </b>
You will evaluate your own <i>overall</i> performance in the class at the end of term in an exit ticket, according to the learning outcomes in this course. Your entire body of work will be kept in a private Github repo. Further details are on the assessment page of the website.
<h2>Praelude</h2>
<b>Sep 8</b>
Reflection on Syllabus Exploration posted to Discord, before the start of the next week.
<h2> Module 1 Getting to Know the Field </h2>
<b>Sept 13</b>
Week 1 Article Annotation Prep (select 4)
Following the directions on the course website, you will pre-read your readings, annotating the important elements as you go, for us all to discuss asynchronously the following week.
<i> NB that none of these readings constitutes a 'canon'; rather, they are as much a starting place, a jumping off point, for a deeper engagement with the materials. Feel free to drop any of these into Google Scholar to see how, and in what contexts, these works are being cited... and if you do, and you find something </i> better <i>, why, let's read that, too...</i>
[if interestMaps == true]
{embed passage: "map-readings"}
[continue]
[if interestStorytelling == true]
{embed passage: "storytelling-readings"}
[continue]
[if interestData == true]
{embed passage: "data-readings"}
[continue]
[if interestImages == true]
{embed passage: "image-readings"}
[continue]
[if interestCompC == true]
{embed passage: "compc-readings"}
[continue]
[if interestLOD == true]
{embed passage: "lod-readings"}
[continue]
<b>Big Picture</b>
Chad Gaffield, "Clio and Computers in Canada and Beyond:Contested Past, Promising Present, Uncertain Future" Canadian Historical Review [https://muse-jhu-edu.proxy.library.carleton.ca/article/777491](https://muse-jhu-edu.proxy.library.carleton.ca/article/777491)
Catherine D'Ignazio and Lauren F. Klein "Show Your Work" Data Feminism [https://data-feminism.mitpress.mit.edu/pub/0vgzaln4/release/2?readingCollection=0cd867ef](https://data-feminism.mitpress.mit.edu/pub/0vgzaln4/release/2?readingCollection=0cd867ef)
Kim Martin Clio, "Rewired:Propositions for the Future of Digital History Pedagogy in Canada" Canadian Historical Review 101(4) [https://muse-jhu-edu.proxy.library.carleton.ca/article/777494](https://muse-jhu-edu.proxy.library.carleton.ca/article/777494)
<b>Sept 20</b>
Week 2 Collaborative Reading with Hypothesis
Full instructions are on the course website. Skim through the page-level notes on the pieces, responding as appropriate. Dive into the paragraph-level annotations as appropriate.
<h2> Module 2 How Do They Do That? </h2>
<b>Sept 27</b>
Week 3 Complete these 'Digital Basics' exercises. Full details are on the course website. You may complete these by the end of week 4.
[if mySkill < 4]
+ Writing in Markdown and Reproducible Research
+ Basics of Github (web interface)
+ Introduction to the Command Line / Terminal
+ Downloading with WGET
+ Getting Anaconda set up
+ Scraping with Trifilatura
[else]
+ Writing in Markdown and Reproducible Research
+ Basics of Github (command line interface)
+ Downloading with WGET
+ Getting Anaconda set up
+ Scraping with R
+ APIs with Python
+ Scraping with Trifilatura
[continue]
<b>Oct 4</b>
Week 4 Find a project relevant to your interests on Reviews in DH; review the review: where are the holes in your knowledge?
<i>Reviews in Digital Humanities</i> [https://reviewsindh.pubpub.org/](https://reviewsindh.pubpub.org/)
(See also
<br>Miriam Posner, “How Did They Make That?” [http://miriamposner.com/blog/how-did-they-make-that-the-video/](http://miriamposner.com/blog/how-did-they-make-that-the-video/) ).
<h2> Digital Tune Up </h2>
<b>Oct 11, Oct 18</b>
Week 5 - 6
Complete a relevant selection from these exercises, as per the detailed instructions on the website, keeping in mind that you have also indicated that you have a strong interest in <b> {finalChoice}. </b>
_You may wish to supplement with any tutorial from [_The Programming Historian_](https://programminghistorian.org/en/lessons/) or from Melanie Walsh [_Introduction to Cultural Analytics_](https://melaniewalsh.github.io/Intro-Cultural-Analytics/welcome.html) as appropriate, after consultation with Dr. Graham._
[if interestMaps == true && mySkill < 4 ]
{embed passage: "gentle-map-skills"}
[if interestMaps == true && mySkill > 3]
{embed passage: "harder-map-skills"}
[if interestStorytelling == true && mySkill < 4 ]
{embed passage: "gentle-storytelling-skills"}
[if interestStorytelling == true && mySkill > 3]
{embed passage: "harder-storytelling-skills"}
[if interestData == true && mySkill < 4 ]
{embed passage: "gentle-data-skills"}
[if interestData == true && mySkill > 3]
{embed passage: "harder-data-skills"}
[if interestImages == true && mySkill < 4 ]
{embed passage: "gentle-imagery-skills"}
[if interestImages == true && mySkill > 3]
{embed passage: "harder-imagery-skills"}
[if interestLOD == true && mySkill < 4 ]
{embed passage: "gentle-lod-skills"}
[if interestLOD == true && mySkill > 3]
{embed passage: "harder-lod-skills"}
[continue]
<b>Oct 25 - 29 Fall Term Reading Week</b>
<h2> Module 3 Your Own Digital History </h2>
In weeks 7 - 12 you will embark on your own digital history 'thing'. Guidelines are on the website. As part of this, you will write three 'devlogs' or updates on the work, the problems you're facing (or have overcome). These help to frame the 'paradata' of your work.
<b>Nov 1</b> Week 7 - devlog 1
<b>Nov 8</b> Week 8 - continue to work
<b>Nov 15</b> Week 9 - devlog 2
<b>Nov 22</b> Week 10 - continue to work
<b>Nov 29</b> Week 11 - devlog 3. <b>Share your Thing at end of week in Discord</b>.
<h2> Class Review </h2>
<b>Dec 6</b> Week 12 Review One of Your Peers' Things, in the style of Reviews in DH.
<b>Dec 10</b> Exit Ticket
<blockquote>
Term ends Dec 10. There is no final.
</blockquote>
</tw-passagedata><tw-passagedata pid="16" name="do you really want to explore" tags="" position="738.8333358764648,1724.5" size="100,100">You feel a bit overwhelmed. <i>There's so much to read and explore. And you know, even if you start looking at one path in more depth, there will always be opportunities to switch it up, if you want.</i>
Dr. Graham nods at this point, as if he was reading your mind.
+ "I think... I think the digital tech that I <br>really</b> want to most learn about, at least for now, is {cycling link for: 'finalChoice', choices: ['ummm...','mapping','storytelling','data','imagery','linked open data','computational creativity']}"
Graham nods again.
"Well, you've shown me you're interested in a lot of material. The syllabus will have a lot of <i>potential</i> reading material, but make sure you <b>read the individual assignment prompts on the course website first</b> before diving into the material, ok?
And, as far as the digital work is concerned... Just remember to be open about what works, and what hasn't; be willing to tell us about that, and to ask for help - from me, from whomever - when you need it. Remember: **if it doesn't work in 30 minutes it won't work in 3 hours**."
He pauses, as if expecting a flourish of trumpets. After an awkward moment, he produces a sheet of paper.
"Ta da!"
You humour him with a smile, and <b> he [[hands you your personal syllabus|the-result]]. </b>
</tw-passagedata><tw-passagedata pid="17" name="map-readings" tags="" position="1288,1564.5" size="100,100">_chosen: random.fraction
--
<b>Maps and Mapping</b>
[if _chosen > 0.75]
Mapping Marronage, [http://mapping-marronage.rll.lsa.umich.edu/](http://mapping-marronage.rll.lsa.umich.edu/)
[if _chosen > 0.5]
Stephen Robertson, “Putting Harlem on the Map,” Writing History in the Digital Age. [https://writinghistory.trincoll.edu/evidence/robertson-2012-spring/](https://writinghistory.trincoll.edu/evidence/robertson-2012-spring/)
[if _chosen > 0.25]
Jennifer Bonnell and Marcel Fortin "Reinventing the Map Library: The Don Valley Historical Mapping Project" in Historical GIS in Canada [https://press.ucalgary.ca/books/9781552387085/#pdf](https://press.ucalgary.ca/books/9781552387085/#pdf)
[if _chosen < 0.25]
Richard White “What is Spatial History?” Spatial History Project [https://web.stanford.edu/group/spatialhistory/cgi-bin/site/pub.php?id=29](https://web.stanford.edu/group/spatialhistory/cgi-bin/site/pub.php?id=29)</tw-passagedata><tw-passagedata pid="18" name="storytelling-readings" tags="" position="1410,1565.5" size="100,100">_chosen: random.fraction
--
<b>Storytelling</b>
[if _chosen > 0.75]
Stephen Robertson, “The Differences between Digital Humanities and Digital History.” Debates in Digital Humanities 2016 [https://dhdebates.gc.cuny.edu/read/untitled/section/ed4a1145-7044-42e9-a898-5ff8691b6628](https://dhdebates.gc.cuny.edu/read/untitled/section/ed4a1145-7044-42e9-a898-5ff8691b6628)
[if _chosen > 0.5]
Emily Bembeneck "Spatial Storytelling" Play the Past [http://www.playthepast.org/?p=2967](http://www.playthepast.org/?p=2967)
Thryn Henderson and Ioanna Iacovides "“It’s just part of being a person”—Sincerity, Support & SelfExpression in Vignette Games" [http://digra.org/wp-content/uploads/digital-library/DiGRA_2020_paper_85.pdf](http://digra.org/wp-content/uploads/digital-library/DiGRA_2020_paper_85.pdf) _Note the 'library' at [digra.org](http://www.digra.org/digital-library/publications/?s=design+history&diglib_search=true&tax_diglib_keywords=&tax_diglib_authors=&submit=Search) has a number of papers on the intersection of games and history.
[if _chosen > 0.25]
Laura Zucconi, Ethan Watrall, Hannah Ueno, and Lisa Rosner "Pox and the City: Challenges in Writing a Digital History Game" [https://writinghistory.trincoll.edu/evidence/zucconi-etal-2012-spring/](https://writinghistory.trincoll.edu/evidence/zucconi-etal-2012-spring/)
Beat Suter, René Bauer, and Mela Kocher, eds. [Narrative Mechanics](https://www.transcript-verlag.de/978-3-8376-5345-8/narrative-mechanics/). Free pdf. A rich resource; I would suggest starting with Tarn Adams' piece and some of the case studies.
[if _chosen < 0.25]
TiffanyEarley-Spadoni "Spatial History, deep mapping and digital storytelling: archaeology's future imagined through an engagement with the Digital Humanities" [https://doi.org/10.1016/j.jas.2017.05.003](https://doi.org/10.1016/j.jas.2017.05.003)
Anastasia Salter and Stuart Moulthrop "Twining: Critical and Creative Approaches to Hypertext Narratives" [https://www.fulcrum.org/concern/monographs/ms35tb924](https://www.fulcrum.org/concern/monographs/ms35tb924) _Dip into this, especially the opening chapters and practical sections_.</tw-passagedata><tw-passagedata pid="19" name="data-readings" tags="" position="1531,1569.5" size="100,100">_chosen: random.fraction
--
<b>On Data</b>
Catherine D'Ignazio and Lauren F. Klein "What Gets Counted Counts" Data Feminism [https://data-feminism.mitpress.mit.edu/pub/h1w0nbqp/release/2](https://data-feminism.mitpress.mit.edu/pub/h1w0nbqp/release/2)
[if _chosen > 0.75]
Frederick W. Gibbs and Trevor J. Owens "The Hermeneutics of Data and Historical Writing" Writing History in the Digital Age. [https://writinghistory.trincoll.edu/data/gibbs-owens-2012-spring/](https://writinghistory.trincoll.edu/data/gibbs-owens-2012-spring/)
Uta Hinrichs et al. "Trading Consequences: A Case Study of Combining Text Mining and Visualization to Facilitate Document Exploration" DSH [https://doi.org/10.1093/llc/fqv046](https://doi.org/10.1093/llc/fqv046)
[if _chosen > 0.5]
Sharon Leon "Complicating a “Great Man” Narrative of Digital History in the United States" Bodies of Information [https://dhdebates.gc.cuny.edu/read/untitled-4e08b137-aec5-49a4-83c0-38258425f145/section/53838061-eb08-4f46-ace0-e6b15e4bf5bf](https://dhdebates.gc.cuny.edu/read/untitled-4e08b137-aec5-49a4-83c0-38258425f145/section/53838061-eb08-4f46-ace0-e6b15e4bf5bf)
[if _chosen > 0.25]
Michelle Schwartz and Constance Crompton "Lesbian Feminist Historical Methods in the Digital Humanities" Bodies of Information [https://dhdebates.gc.cuny.edu/read/untitled-4e08b137-aec5-49a4-83c0-38258425f145/section/5c06c277-b9c1-4caf-a81c-a6c201e08a5a#ch09]()https://dhdebates.gc.cuny.edu/read/untitled-4e08b137-aec5-49a4-83c0-38258425f145/section/5c06c277-b9c1-4caf-a81c-a6c201e08a5a#ch09)
[if _chosen < 0.25]
Sharon Leon "The Peril and Promise of Historians as Data Creators: Perspective, Structure, and the Problem of Representation" 6th Floors - bracket [http://www.6floors.org/bracket/2019/11/24/the-peril-and-promise-of-historians-as-data-creators-perspective-structure-and-the-problem-of-representation/](http://www.6floors.org/bracket/2019/11/24/the-peril-and-promise-of-historians-as-data-creators-perspective-structure-and-the-problem-of-representation/)</tw-passagedata><tw-passagedata pid="20" name="compc-readings" tags="" position="1659,1572.5" size="100,100">_chosen: random.fraction
--
<b> On Computational Creativity </b>
[if _chosen > 0.75]
James Baker "A Machine That Writes Like Mary Dorothy George" [https://cradledincaricature.com/2020/06/18/mary-dorothy-george/](https://cradledincaricature.com/2020/06/18/mary-dorothy-george/)
Shawn Graham "The Resurrection of Flinders Petrie" [https://electricarchaeology.ca/2019/10/23/the-resurrection-of-flinders-petrie/](https://electricarchaeology.ca/2019/10/23/the-resurrection-of-flinders-petrie/)
[if _chosen > 0.5]
Tiffany Chan "The Author Function: Imitating Grant Allen With Queer Writing Machines" [https://github.com/eltiffster/authorFunction#findings](https://github.com/eltiffster/authorFunction)
[if _chosen > 0.25]
Michael Gavin "Agent-Based Modeling and Historical Simulation" DHQ [http://www.digitalhumanities.org/dhq/vol/8/4/000195/000195.html](http://www.digitalhumanities.org/dhq/vol/8/4/000195/000195.html)
[if _chosen < 0.25]
Colleen Morgan "Avatars, Monsters, and Machines: A Cyborg Archaeology" EJA [https://www.cambridge.org/core/journals/european-journal-of-archaeology/article/abs/avatars-monsters-and-machines-a-cyborg-archaeology/CD467A5E5232B50D6CAA4D72091FCFA9](https://www.cambridge.org/core/journals/european-journal-of-archaeology/article/abs/avatars-monsters-and-machines-a-cyborg-archaeology/CD467A5E5232B50D6CAA4D72091FCFA9) _If you can't access this let me know._</tw-passagedata><tw-passagedata pid="21" name="image-readings" tags="" position="1285,1680.5" size="100,100">_chosen: random.fraction
--
<b>On Images etc</b>
Ian Milligan, “We Are All Digital Now: Digital Photography and the Reshaping of Historical Practice," Canadian Historical Review, vol. 101, no. 4 (December 2020): 602-621 [https://doi.org/10.3138/chr-2020-0023](https://doi.org/10.3138/chr-2020-0023)
[if _chosen > 0.75]
Melvin Wevers and Thomas Smits "The Visual Digital Turn: Using Neural Networks to Study Historical Images" DSH [https://doi.org/10.1093/llc/fqy085](https://doi.org/10.1093/llc/fqy085)
Damien Huffer, Christina Wood, Shawn Graham "What the Machine Saw: some questions on the ethics of computer vision and machine learning to investigate human remains trafficking" Internet Archaelology [https://doi.org/10.11141/ia.52.5](https://doi.org/10.11141/ia.52.5)
[if _chosen > 0.5]
Michael Kramer "What Does A Photograph Sound Like? Digital Image Sonification As Synesthetic AudioVisual Digital Humanities" DHQ [http://digitalhumanities.org/dhq/vol/15/1/000508/000508.html](http://digitalhumanities.org/dhq/vol/15/1/000508/000508.html)
[if _chosen > 0.25]
Taylor Arnold and Lauren Tilton "Distant Viewing: Analyzing Large Visual Corpora." DSH [https://www.distantviewing.org/pdf/distant-viewing.pdf](https://www.distantviewing.org/pdf/distant-viewing.pdf)
[if _chosen < 0.25]
Taylor Arnold and Lauren Tilton "Enriching Historic Photography with Structured Data using Image RegionSegmentation" [https://statsmaths.github.io/pdf/2020-enrich-photography.pdf](https://statsmaths.github.io/pdf/2020-enrich-photography.pdf)
Taylor Arnold, Nathaniel Ayers, Lauren Tilton "Visualizing a Large Spatiotemporal Collection of Historic Photographywith a Generous Interface" [https://arxiv.org/pdf/2009.02242.pdf](https://arxiv.org/pdf/2009.02242.pdf)</tw-passagedata><tw-passagedata pid="22" name="lod-readings" tags="" position="1410,1684.5" size="100,100">_chosen: random.fraction
--
<b> On Linked Open Data </b>
Jo Guldi "Scholarly Infrastructure as Critical Argument: Nine principles in a preliminary survey of the bibliographic and critical values expressed by scholarly web-portals for visualizing data" DHQ [http://digitalhumanities.org:8081/dhq/vol/14/3/000463/000463.html](http://digitalhumanities.org:8081/dhq/vol/14/3/000463/000463.html)
Sarah Bond, Paul Dilley, Ryan Horne. "Introducing the Semantic Web and Linked Open Data" ISAW [http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-1/](http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-1/)
[if _chosen > 0.75]
Josh Wells et al. 'Web-based discovery and integration of archaeological historic properties inventory data: The Digital Index of North American Archaeology (DINAA) ' LLC [https://doi.org/10.1093/llc/fqu028](https://doi.org/10.1093/llc/fqu028)
[if _chosen > 0.5]
Sebastian Heath "Applied Use of JSON, GeoJSON, JSON-LD, SPARQL, and IPython Notebooks for Representing and Interacting with Small Datasets" ISAW [http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-13/](http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-13/)
[if _chosen > 0.25]
Hannah Skates Kettler "Linked Open Data for 3D Models and Environments" ISAW [http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-5/](http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-5/)
[if _chosen < 0.25]
Ryan Horne "Applying Linked Open Data Standards" ISAW [http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-2/](http://dlib.nyu.edu/awdl/isaw/isaw-papers/20-2/)</tw-passagedata><tw-passagedata pid="23" name="gentle-map-skills" tags="" position="1286,1804.5" size="100,100"><b>mapping</b>
+ Storymaps.js
+ Maps from Spreadsheets </tw-passagedata><tw-passagedata pid="24" name="gentle-storytelling-skills" tags="" position="1403,1806.5" size="100,100"><b>storytelling</b>
+ Twine & Games
+ Static Websites
+ Podcasting</tw-passagedata><tw-passagedata pid="25" name="gentle-data-skills" tags="" position="1529,1810.5" size="100,100"><b>data</b>
+ Voyant
+ AntConc
+ Excel vs R
+ Scraping data with R
+ REGEX
+ OpenRefine
+ Topic Models with the Topic Modeling Tool</tw-passagedata><tw-passagedata pid="26" name="gentle-imagery-skills" tags="" position="1652,1813.5" size="100,100"><b>imagery</b>
+ imj
+ imageplot
</tw-passagedata><tw-passagedata pid="27" name="gentle-lod-skills" tags="" position="1771,1814.5" size="100,100"><b>linked open data</b>
+ Jonathan Blaney [Introduction to LOD](https://programminghistorian.org/en/lessons/intro-to-linked-data) _Programming Historian_
</tw-passagedata><tw-passagedata pid="28" name="harder-map-skills" tags="" position="1291,1923" size="100,100"><b>mapping</b>
+ Webmapping with Leaflet
+ Webmapping with Python
+ See also the tutorials at [The Programming Historian](https://programminghistorian.org/en/lessons/?topic=mapping)</tw-passagedata><tw-passagedata pid="29" name="harder-storytelling-skills" tags="" position="1405,1928" size="100,100"><b>storytelling</b>
+ Visual Novels with Ren'Py
+ Photo essays / 'Snowfall' type essays
+ Basic web-based AR/VR (may involve photogrammetry)
</tw-passagedata><tw-passagedata pid="30" name="harder-data-skills" tags="" position="1528,1931" size="100,100"><b>data</b>
+ Scraping data with R
+ REGEX
+ OpenRefine
+ Topic Modeling in R
+ TF-IDF, Sentiment Analysis
+ Network Analysis in R
+ Network Analysis in Python
+ Sound and Sonification
+ publishing data with datasette</tw-passagedata><tw-passagedata pid="31" name="harder-imagery-skills" tags="" position="1655,1930" size="100,100"><b>imagery</b>
+ visual similarity with CNN
+ scene description with Microsoft Azure
+ build an image classifier with transfer learning
</tw-passagedata><tw-passagedata pid="32" name="harder-lod-skills" tags="" position="1779,1929" size="100,100"><b>linked open data</b>
+ Jonathan Blaney [Introduction to LOD](https://programminghistorian.org/en/lessons/intro-to-linked-data) _Programming Historian_
</tw-passagedata><tw-passagedata pid="33" name="Head out to the hallway" tags="" position="891.8333358764648,1880.5" size="100,100">interestMaps: false
interestStorytelling: false
interestData: false
structuredData: false
unstructuredData: false
interestCompC: false
interestImages: false
interestLOD: false
yourInterest: 'unknown'
mySkill: 1
--
As you walk down the hall, you can't help feeling like you might've missed something, explored something else. You <i> could </i> [[go back inside PA406|personalSurvey]], and see if there are some other paths, and swap readings or digital tune up tasks as you wish.
Or... you could just call it a day. Looks like an interesting class! Best go read the <i>rest</i> of the course website now.
/fin</tw-passagedata><tw-passagedata pid="34" name="social network analysis" tags="" position="621.8333358764648,1568.5" size="100,100">You say, "Social network analysis? You mean, like social media, that kind of thing?"
"Yes, it can certainly <i>start</i> there. But really, any time you have a situation where you can see that there are relationships of various kinds at play, you can represent pairs of relationships as a graph; with enough relationships, things eventually stitch together into a network.
And when you've got a network, what you're saying is, positionality matters; that the way people interconnect eventually produces effects that affect the way people interconnect; that some people are in positions that structurally effect how information (or whatever other phenomenona are at play) flows. It's a pretty powerful perspective, really."
He's clearly getting warmed up.
"In fact, I used <a href="https://hcommons.org/deposits/item/hc:18909/" target="_blank>SNA to extract <i>fossilized</i> social networks from archaeological materials, producing snapshots of Roman social relationships over two centuries centered around landholding at Rome</a>..."
He trails off, noticing that perhaps he has lost his audience. He gives a little cough.
"Well, anyway, I could imagine you doing SNA on historical materials that produces <i> serious </i> impact.
<blockquote>
You can go ahead [[and see what's in store for you if these are the things that interest you|your personal syllabus]]. <br><br> [[But you can reconsider, if you want.|choicesHub]]
</blockquote>
</tw-passagedata></tw-storydata><script>!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=28)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.get=t.set=t.defaults=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.init=function(){var e=(0,u.ifid)(),t=(0,u.name)();if(void 0===t)throw new Error("Cannot set up state: the story has no name");d="chapbook-state-"+t+"-"+e},t.reset=m,t.sameObject=function(e,t){for(var n=e.split("."),r=t.split("."),o=0;o<n.length&&o<r.length;o++)if(n[o]!==r[o])return!1;return!0},t.setDefault=function(e,t){var n=y(e);f('Defaulting "'+e+'" to '+JSON.stringify(t)),(0,i.default)(h,e,t),v(window,e),null==n&&s.default.emit("state-change",{name:e,value:t,previous:n})},t.setLookup=function(e,t){var n=y(e);f("Adding lookup variable "+e),(0,i.default)(g,e,t),function(e,t){if(!e[t]){for(var n=t.split("."),r=n[n.length-1],o=0;o<n.length-1;o++)e[n[o]]=e[n[o]]||{},e=e[n[o]];Object.defineProperty(e,r,{get:function(){return y(t)},set:function(){throw new Error("Chapbook lookup variables may only be read.")},configurable:!0})}}(window,e),null==n&&s.default.emit("state-change",{name:e,value:y(e),previous:n})},t.saveToObject=k,t.restoreFromObject=w,t.canSaveToStorage=x,t.saveToStorage=_,t.canRestoreFromStorage=function(){return x()&&null!==window.localStorage.getItem(d)},t.restoreFromStorage=function(){f("Restoring variables from local storage"),w(JSON.parse(window.localStorage.getItem(d))),f("Restore complete")},t.purgeFromStorage=function(e){e||f("Purging variables from local storage");w(JSON.parse(window.localStorage.getItem(d))),e||f("Purge complete")},t.varNames=function(e){function t(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return Object.keys(e).reduce(function(o,i){if("object"===r(e[i])&&e[i]&&!Array.isArray(e[i]))t(e[i],n?n+"."+i:i,o);else{var a=n?n+"."+i:i;-1===o.indexOf(a)&&o.push(a)}return o},o)}if(e)return t(h,null,t(p,null)).sort();return t(p).sort()};var o=c(n(34)),i=c(n(35)),a=c(n(37)),s=c(n(1)),l=c(n(4)),u=n(6);function c(e){return e&&e.__esModule?e:{default:e}}var f=(0,l.default)("state").log,d=void 0,p={},h={},g={};function v(e,t){if(!e[t]){Object.defineProperty(e,t,{get:function(){return y(t)},set:function(e){b(t,e)},configurable:!0});var n=t.split(".");n.length>1&&(n.pop(),v(e,n.join(".")))}}function m(){!function e(t,n){Object.keys(t).forEach(function(o){var i,l,u=""===n?o:n+"."+o;if("object"!==r(t[o])||Array.isArray(t[o])){var c=t[o];delete t[o],i=window,l=n,(0,a.default)(i,l),s.default.emit("state-change",{name:u,value:y(u),previous:c})}else e(t[o],u)})}(p,""),s.default.emit("state-reset"),y("config.state.autosave")&&_()}function b(e,t){var n=y(e);(0,i.default)(p,e,t),v(window,e),t!==n&&s.default.emit("state-change",{name:e,previous:n,value:t}),y("config.state.autosave")&&_()}function y(e){var t=(0,o.default)(g,e);if("function"==typeof t)return t(y,b);var n=(0,o.default)(p,e);return null==n?(0,o.default)(h,e):n}function k(){return Object.assign({},p)}function w(e){m(),Object.keys(e).forEach(function(t){return b(t,e[t])})}function x(){try{return window.localStorage.setItem("chapbook-test","a"),window.localStorage.removeItem("chapbook-test"),!0}catch(e){return!1}}function _(){f("Saving to local storage: "+JSON.stringify(k())),window.localStorage.setItem(d,JSON.stringify(k())),f("Save complete")}t.defaults={"config.state.autosave":!0},t.set=b,t.get=y},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(30),i=(r=o)&&r.__esModule?r:{default:r};t.default=(0,i.default)()},function(e,t,n){"use strict";n.r(t),n.d(t,"h",function(){return s}),n.d(t,"createElement",function(){return s}),n.d(t,"cloneElement",function(){return f}),n.d(t,"createRef",function(){return I}),n.d(t,"Component",function(){return N}),n.d(t,"render",function(){return D}),n.d(t,"rerender",function(){return g}),n.d(t,"options",function(){return o});var r=function(){},o={},i=[],a=[];function s(e,t){var n,s,l,u,c=a;for(u=arguments.length;u-- >2;)i.push(arguments[u]);for(t&&null!=t.children&&(i.length||i.push(t.children),delete t.children);i.length;)if((s=i.pop())&&void 0!==s.pop)for(u=s.length;u--;)i.push(s[u]);else"boolean"==typeof s&&(s=null),(l="function"!=typeof e)&&(null==s?s="":"number"==typeof s?s=String(s):"string"!=typeof s&&(l=!1)),l&&n?c[c.length-1]+=s:c===a?c=[s]:c.push(s),n=l;var f=new r;return f.nodeName=e,f.children=c,f.attributes=null==t?void 0:t,f.key=null==t?void 0:t.key,void 0!==o.vnode&&o.vnode(f),f}function l(e,t){for(var n in t)e[n]=t[n];return e}function u(e,t){null!=e&&("function"==typeof e?e(t):e.current=t)}var c="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout;function f(e,t){return s(e.nodeName,l(l({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)}var d=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,p=[];function h(e){!e._dirty&&(e._dirty=!0)&&1==p.push(e)&&(o.debounceRendering||c)(g)}function g(){for(var e;e=p.pop();)e._dirty&&T(e)}function v(e,t){return e.normalizedNodeName===t||e.nodeName.toLowerCase()===t.toLowerCase()}function m(e){var t=l({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var r in n)void 0===t[r]&&(t[r]=n[r]);return t}function b(e){var t=e.parentNode;t&&t.removeChild(e)}function y(e,t,n,r,o){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)u(n,null),u(r,e);else if("class"!==t||o)if("style"===t){if(r&&"string"!=typeof r&&"string"!=typeof n||(e.style.cssText=r||""),r&&"object"==typeof r){if("string"!=typeof n)for(var i in n)i in r||(e.style[i]="");for(var i in r)e.style[i]="number"==typeof r[i]&&!1===d.test(i)?r[i]+"px":r[i]}}else if("dangerouslySetInnerHTML"===t)r&&(e.innerHTML=r.__html||"");else if("o"==t[0]&&"n"==t[1]){var a=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),r?n||e.addEventListener(t,k,a):e.removeEventListener(t,k,a),(e._listeners||(e._listeners={}))[t]=r}else if("list"!==t&&"type"!==t&&!o&&t in e){try{e[t]=null==r?"":r}catch(e){}null!=r&&!1!==r||"spellcheck"==t||e.removeAttribute(t)}else{var s=o&&t!==(t=t.replace(/^xlink:?/,""));null==r||!1===r?s?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof r&&(s?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),r):e.setAttribute(t,r))}else e.className=r||""}function k(e){return this._listeners[e.type](o.event&&o.event(e)||e)}var w=[],x=0,_=!1,S=!1;function j(){for(var e;e=w.shift();)o.afterMount&&o.afterMount(e),e.componentDidMount&&e.componentDidMount()}function O(e,t,n,r,o,i){x++||(_=null!=o&&void 0!==o.ownerSVGElement,S=null!=e&&!("__preactattr_"in e));var a=C(e,t,n,r,i);return o&&a.parentNode!==o&&o.appendChild(a),--x||(S=!1,i||j()),a}function C(e,t,n,r,o){var i=e,a=_;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||o)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),M(e,!0))),i.__preactattr_=!0,i;var s,l,u=t.nodeName;if("function"==typeof u)return function(e,t,n,r){var o=e&&e._component,i=o,a=e,s=o&&e._componentConstructor===t.nodeName,l=s,u=m(t);for(;o&&!l&&(o=o._parentComponent);)l=o.constructor===t.nodeName;o&&l&&(!r||o._component)?($(o,u,3,n,r),e=o.base):(i&&!s&&(z(i),e=a=null),o=P(t.nodeName,u,n),e&&!o.nextBase&&(o.nextBase=e,a=null),$(o,u,1,n,r),e=o.base,a&&e!==a&&(a._component=null,M(a,!1)));return e}(e,t,n,r);if(_="svg"===u||"foreignObject"!==u&&_,u=String(u),(!e||!v(e,u))&&(s=u,(l=_?document.createElementNS("http://www.w3.org/2000/svg",s):document.createElement(s)).normalizedNodeName=s,i=l,e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),M(e,!0)}var c=i.firstChild,f=i.__preactattr_,d=t.children;if(null==f){f=i.__preactattr_={};for(var p=i.attributes,h=p.length;h--;)f[p[h].name]=p[h].value}return!S&&d&&1===d.length&&"string"==typeof d[0]&&null!=c&&void 0!==c.splitText&&null==c.nextSibling?c.nodeValue!=d[0]&&(c.nodeValue=d[0]):(d&&d.length||null!=c)&&function(e,t,n,r,o){var i,a,s,l,u,c=e.childNodes,f=[],d={},p=0,h=0,g=c.length,m=0,y=t?t.length:0;if(0!==g)for(var k=0;k<g;k++){var w=c[k],x=w.__preactattr_,_=y&&x?w._component?w._component.__key:x.key:null;null!=_?(p++,d[_]=w):(x||(void 0!==w.splitText?!o||w.nodeValue.trim():o))&&(f[m++]=w)}if(0!==y)for(var k=0;k<y;k++){l=t[k],u=null;var _=l.key;if(null!=_)p&&void 0!==d[_]&&(u=d[_],d[_]=void 0,p--);else if(h<m)for(i=h;i<m;i++)if(void 0!==f[i]&&(S=a=f[i],O=o,"string"==typeof(j=l)||"number"==typeof j?void 0!==S.splitText:"string"==typeof j.nodeName?!S._componentConstructor&&v(S,j.nodeName):O||S._componentConstructor===j.nodeName)){u=a,f[i]=void 0,i===m-1&&m--,i===h&&h++;break}u=C(u,l,n,r),s=c[k],u&&u!==e&&u!==s&&(null==s?e.appendChild(u):u===s.nextSibling?b(s):e.insertBefore(u,s))}var S,j,O;if(p)for(var k in d)void 0!==d[k]&&M(d[k],!1);for(;h<=m;)void 0!==(u=f[m--])&&M(u,!1)}(i,d,n,r,S||null!=f.dangerouslySetInnerHTML),function(e,t,n){var r;for(r in n)t&&null!=t[r]||null==n[r]||y(e,r,n[r],n[r]=void 0,_);for(r in t)"children"===r||"innerHTML"===r||r in n&&t[r]===("value"===r||"checked"===r?e[r]:n[r])||y(e,r,n[r],n[r]=t[r],_)}(i,t.attributes,f),_=a,i}function M(e,t){var n=e._component;n?z(n):(null!=e.__preactattr_&&u(e.__preactattr_.ref,null),!1!==t&&null!=e.__preactattr_||b(e),A(e))}function A(e){for(e=e.lastChild;e;){var t=e.previousSibling;M(e,!0),e=t}}var E=[];function P(e,t,n){var r,o=E.length;for(e.prototype&&e.prototype.render?(r=new e(t,n),N.call(r,t,n)):((r=new N(t,n)).constructor=e,r.render=L);o--;)if(E[o].constructor===e)return r.nextBase=E[o].nextBase,E.splice(o,1),r;return r}function L(e,t,n){return this.constructor(e,n)}function $(e,t,n,r,i){e._disable||(e._disable=!0,e.__ref=t.ref,e.__key=t.key,delete t.ref,delete t.key,void 0===e.constructor.getDerivedStateFromProps&&(!e.base||i?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,r)),r&&r!==e.context&&(e.prevContext||(e.prevContext=e.context),e.context=r),e.prevProps||(e.prevProps=e.props),e.props=t,e._disable=!1,0!==n&&(1!==n&&!1===o.syncComponentUpdates&&e.base?h(e):T(e,1,i)),u(e.__ref,e))}function T(e,t,n,r){if(!e._disable){var i,a,s,u=e.props,c=e.state,f=e.context,d=e.prevProps||u,p=e.prevState||c,h=e.prevContext||f,g=e.base,v=e.nextBase,b=g||v,y=e._component,k=!1,_=h;if(e.constructor.getDerivedStateFromProps&&(c=l(l({},c),e.constructor.getDerivedStateFromProps(u,c)),e.state=c),g&&(e.props=d,e.state=p,e.context=h,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(u,c,f)?k=!0:e.componentWillUpdate&&e.componentWillUpdate(u,c,f),e.props=u,e.state=c,e.context=f),e.prevProps=e.prevState=e.prevContext=e.nextBase=null,e._dirty=!1,!k){i=e.render(u,c,f),e.getChildContext&&(f=l(l({},f),e.getChildContext())),g&&e.getSnapshotBeforeUpdate&&(_=e.getSnapshotBeforeUpdate(d,p));var S,C,A=i&&i.nodeName;if("function"==typeof A){var E=m(i);(a=y)&&a.constructor===A&&E.key==a.__key?$(a,E,1,f,!1):(S=a,e._component=a=P(A,E,f),a.nextBase=a.nextBase||v,a._parentComponent=e,$(a,E,0,f,!1),T(a,1,n,!0)),C=a.base}else s=b,(S=y)&&(s=e._component=null),(b||1===t)&&(s&&(s._component=null),C=O(s,i,f,n||!g,b&&b.parentNode,!0));if(b&&C!==b&&a!==y){var L=b.parentNode;L&&C!==L&&(L.replaceChild(C,b),S||(b._component=null,M(b,!1)))}if(S&&z(S),e.base=C,C&&!r){for(var N=e,D=e;D=D._parentComponent;)(N=D).base=C;C._component=N,C._componentConstructor=N.constructor}}for(!g||n?w.push(e):k||(e.componentDidUpdate&&e.componentDidUpdate(d,p,_),o.afterUpdate&&o.afterUpdate(e));e._renderCallbacks.length;)e._renderCallbacks.pop().call(e);x||r||j()}}function z(e){o.beforeUnmount&&o.beforeUnmount(e);var t=e.base;e._disable=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?z(n):t&&(null!=t.__preactattr_&&u(t.__preactattr_.ref,null),e.nextBase=t,b(t),E.push(e),A(t)),u(e.__ref,null)}function N(e,t){this._dirty=!0,this.context=t,this.props=e,this.state=this.state||{},this._renderCallbacks=[]}function D(e,t,n){return O(n,e,{},!1,t,!1)}function I(){return{}}l(N.prototype,{setState:function(e,t){this.prevState||(this.prevState=this.state),this.state=l(l({},this.state),"function"==typeof e?e(this.state,this.props):e),t&&this._renderCallbacks.push(t),h(this)},forceUpdate:function(e){e&&this._renderCallbacks.push(e),T(this,2)},render:function(){}});var R={h:s,createElement:s,cloneElement:f,createRef:I,Component:N,render:D,rerender:g,options:o};t.default=R},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.warn=t.log=t.defaults=void 0,t.default=function(e){return{log:function(t){l(e,t)},warn:function(t){u(e,t)}}};var r,o=n(1),i=(r=o)&&r.__esModule?r:{default:r},a=n(0);t.defaults={"config.logger.show.parse":!1,"config.logger.show.render":!1,"config.logger.show.sound":!1,"config.logger.show.state":!1,"config.logger.show.story":!1,"config.logger.show.style":!1};function s(e){return e+": "}function l(e,t){(0,a.get)("config.logger.show."+e)&&console.log(s(e)+t),i.default.emit("log",{source:e,message:t})}function u(e,t){console.warn(s(e)+t),i.default.emit("log-warning",{source:e,message:t})}t.log=l,t.warn=u,window.logger={log:l,warn:u}},function(e,t,n){"use strict";function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=document.createElement(e);return Object.keys(t).forEach(function(e){void 0!==t[e]&&r.setAttribute(e,t[e])}),n.forEach(function(e){"string"==typeof e?r.appendChild(document.createTextNode(e)):r.appendChild(e)}),r}Object.defineProperty(t,"__esModule",{value:!0}),t.domify=r,t.default=function(){return r.apply(void 0,arguments).outerHTML}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.passages=void 0,t.loadFromData=function(e){["name","creator","ifid","options"].forEach(function(t){return u[t]=e.getAttribute(t)}),u.startNode=parseInt(e.getAttribute("startnode")),u.creatorVersion=e.getAttribute("creator-version");var t=function(e){return e.map(function(e){return e.textContent})};u.customScripts=t((0,a.selectAll)(e,'[type="text/twine-javascript"]')),u.customStyles=t((0,a.selectAll)(e,'[type="text/twine-css"]')),c=(0,a.selectAll)(e,"tw-passagedata").map(function(e){var t={id:parseInt(e.getAttribute("pid")),name:e.getAttribute("name"),source:e.textContent},n=e.getAttribute("tags");return t.tags=n?n.split(" "):[],t})},t.init=function(){(0,s.setDefault)("trail",[d().name]),(0,s.setDefault)("config.testing","string"==typeof u.options&&-1!==u.options.indexOf("debug")||!1),document.title=u.name},t.runCustomScripts=function(){l.log("Running custom scripts ("+u.customScripts.length+")"),u.customScripts.forEach(function(e){new Function(e).apply(window)})},t.addCustomStyles=function(){l.log("Adding custom styles ("+u.customStyles.length+")"),u.customStyles.forEach(function(e){var t=document.createElement("style");t.innerHTML=e,document.head.appendChild(t)})},t.ifid=function(){return u.ifid},t.name=function(){return u.name},t.exportedPassages=f,t.startPassage=d,t.passageNamed=function(e){return c.find(function(t){return t.name===e})},t.passageWithId=function(e){return c.find(function(t){return t.id===e})};var r,o=n(4),i=(r=o)&&r.__esModule?r:{default:r},a=n(7),s=n(0);var l=(0,i.default)("story"),u={customScripts:[],customStyles:[]},c=[];function f(){return c}function d(){return c.find(function(e){return e.id===u.startNode})}t.passages=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.select=function(e,t){return e.querySelector(t)},t.selectAll=function(e,t){return Array.from(e.querySelectorAll(t))}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){(function(t){e.exports=t}).call(this,{})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);n(46);t.default=class extends r.Component{constructor(e){super(e),this.state={open:void 0===this.props.initiallyOpen||this.props.initiallyOpen}}toggle(){this.setState({open:!this.state.open})}render(){return(0,r.h)("div",{class:"panel"+(this.state.open?" open":"")},(0,r.h)("h2",null,(0,r.h)("button",{onClick:()=>this.toggle()},this.props.title)),this.state.open&&(0,r.h)("div",{class:"content"},this.props.children))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=void 0,t.render=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return(0,a.default)((0,i.default)(e),(0,s.get)("config.template.inserts")||[],(0,s.get)("config.template.modifiers")||[],t)};var r=l(n(60)),o=l(n(84)),i=l(n(94)),a=l(n(96)),s=n(0);function l(e){return e&&e.__esModule?e:{default:e}}t.defaults={"config.template.inserts":r.default,"config.template.modifiers":o.default}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=void 0,t.init=function(){(0,s.init)(),(0,l.init)(),h=document.querySelector("#page article"),v=document.querySelector("#page #spinner"),g={},["header","footer"].forEach(function(e){g[e]={container:document.querySelector("#page "+e)},["left","center","right"].forEach(function(t){g[e][t]=document.querySelector("#page "+e+" ."+t)})}),o.default.on("state-change",function(e){var t=e.name;return y("trail"===t)}),["change","click"].forEach(function(e){document.body.addEventListener(e,function(e){for(var t=e.target;t;)t.dataset&&Object.keys(t.dataset).some(function(e){return/^cb[A-Z]/.test(e)})&&o.default.emit("dom-"+e.type,t),t=t.parentNode})})},t.changeBody=function(e){(0,d.selectAll)(h,"input").forEach(function(e){e.setAttribute("value",e.value)}),(0,d.selectAll)(h,"select").forEach(function(e){for(var t=0;t<e.options.length;t++)t===e.options.selectedIndex?e.options[t].setAttribute("selected",""):e.options[t].removeAttribute("selected")});var t={x:window.scrollX,y:window.scrollY},n=h.innerHTML,r=document.createElement("div");for(;h.firstChild;)r.insertBefore(h.firstChild,r.firstChild);h.innerHTML=n,e(r),window.scrollX=t.x,window.scrollY=t.y,b(h,r.innerHTML,(0,a.get)("config.body.transition.name"),(0,a.get)("config.body.transition.duration"))};var r=p(n(20)),o=p(n(1)),i=n(64),a=n(0),s=n(66),l=n(69),u=n(6),c=n(11),f=p(n(71));n(72);var d=n(7);function p(e){return e&&e.__esModule?e:{default:e}}var h=void 0,g=void 0,v=void 0,m={crossfade:i.crossfade,fadeInOut:i.fadeInOut,none:i.none};t.defaults={"config.body.transition.name":"crossfade","config.body.transition.duration":"500ms","config.header.left":"","config.header.center":"","config.header.right":"","config.header.transition.name":"none","config.header.transition.duration":"500ms","config.footer.left":"_{story.name}_","config.footer.center":"","config.footer.right":"{restart link}","config.footer.transition.name":"none","config.footer.transition.duration":"500ms"};function b(e,t,n,r){m[n]?m[n](e,t,r):m.none(e,t)}var y=(0,r.default)(function(e){if(e.some(function(e){return e[0]})){var t=(0,a.get)("trail"),n=(0,u.passageNamed)(t[t.length-1]);if(!n)throw new Error('There is no passage named "'+t[t.length-1]+'".');window.scrollTo(0,0),b(h,(0,c.render)(n.source),(0,a.get)("config.body.transition.name"),(0,a.get)("config.body.transition.duration")),(0,f.default)(h,v)}["header","footer"].forEach(function(e){g[e].container.classList.remove("has-content"),["left","center","right"].forEach(function(t){var n=(0,c.render)((0,a.get)("config."+e+"."+t));""!==n&&g[e].container.classList.add("has-content"),b(g[e][t],n,(0,a.get)("config."+e+".transition.name"),(0,a.get)("config."+e+".transition.duration"))})})})},function(e,t,n){"use strict";e.exports=function(e,t,n){n=Object.assign({},r,n||{});let o=0,a=function(e){let t={ms:.001,s:1,m:60,h:3600};return t.d=e.hoursPerDay*t.h,t.w=e.daysPerWeek*t.d,t.mth=e.daysPerYear/e.monthsPerYear*t.d,t.y=e.daysPerYear*t.d,t}(n),s=e.toLowerCase().replace(/[^.\w+-]+/g,"").match(/[-+]?[0-9.]+[a-z]+/g);null!==s&&s.forEach(e=>{let t=e.match(/[0-9.]+/g)[0],n=e.match(/[a-z]+/g)[0];o+=function(e,t,n){return e*n[i(t)]}(t,n,a)});if(t)return function(e,t,n){return e/n[i(t)]}(o,t,a);return o};const r={hoursPerDay:24,daysPerWeek:7,weeksPerMonth:4,monthsPerYear:12,daysPerYear:365.25},o={ms:["ms","milli","millisecond","milliseconds"],s:["s","sec","secs","second","seconds"],m:["m","min","mins","minute","minutes"],h:["h","hr","hrs","hour","hours"],d:["d","day","days"],w:["w","week","weeks"],mth:["mon","mth","mths","month","months"],y:["y","yr","yrs","year","years"]};function i(e){for(let t of Object.keys(o))if(o[t].indexOf(e)>-1)return t;throw new Error(`The unit [${e}] is not supported by timestring`)}},function(e,t){function n(e,t){if(!e)throw new Error(t||"AssertionError")}n.notEqual=function(e,t,r){n(e!=t,r)},n.notOk=function(e,t){n(!e,t)},n.equal=function(e,t,r){n(e==t,r)},n.ok=n,e.exports=n},function(e,t,n){"use strict";
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.renderLink=a,t.default=function(e){return e.replace(/\[\[(.*?)\]\]/g,function(e,t){var n=t,r=t.indexOf("|");if(-1!==r)n=t.substr(0,r),t=t.substr(r+1);else{var o=t.indexOf("->");if(-1!==o)n=t.substr(0,o),t=t.substr(o+2);else{var i=t.indexOf("<-");-1!==i&&(n=t.substr(i+2),t=t.substr(0,i))}}return a(t,n||t)})};var r,o=n(5),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){return/^\w+:\/\/\/?\w/i.test(e)?(0,i.default)("a",{href:e},[t||e]):(0,i.default)("a",{href:"javascript:void(0)","data-cb-go":e},[t||e])}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.history=t.defaults=void 0,t.rewindTo=function(e){if(!s[e])throw new Error("There is no history at index "+e+" to rewind to.");l=!1,(0,a.restoreFromObject)(s[e].state),s.length=e+1,l=!0,i.default.emit("backstage-recorder-update")},t.init=function(){i.default.on("state-change",c),i.default.on("state-reset",u)};var r,o=n(1),i=(r=o)&&r.__esModule?r:{default:r},a=n(0);t.defaults={"config.backstage.trail.maxLength":100};var s=t.history=[],l=!0;function u(){l&&(t.history=s=[],i.default.emit("backstage-recorder-update"))}function c(e){var t=e.name,n=e.value;l&&(s.length===(0,a.get)("config.backstage.trail.maxLength")&&s.shift(),s.push({change:{name:t,value:n},state:(0,a.saveToObject)()}),i.default.emit("backstage-recorder-update"))}},function(e,t,n){(function(t){var n=1/0,r="[object Symbol]",o=/[&<>"'`]/g,i=RegExp(o.source),a="object"==typeof t&&t&&t.Object===Object&&t,s="object"==typeof self&&self&&self.Object===Object&&self,l=a||s||Function("return this")();var u,c=(u={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},function(e){return null==u?void 0:u[e]}),f=Object.prototype.toString,d=l.Symbol,p=d?d.prototype:void 0,h=p?p.toString:void 0;function g(e){if("string"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==r}(e))return h?h.call(e):"";var t=e+"";return"0"==t&&1/e==-n?"-0":t}e.exports=function(e){var t;return(e=null==(t=e)?"":g(t))&&i.test(e)?e.replace(o,c):e}}).call(this,n(19))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=[],n=!1;return function(){for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];n||(n=!0,Promise.resolve().then(function(){try{e(t)}catch(e){window.setTimeout(function(){throw e},0)}t=[],n=!1})),t.push(o)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="<span"+Object.keys(t).reduce(function(e,n){return e+" "+n+'="'+t[n]+'"'},"")+">",r=n+e.replace(/[\r\n]{2,}/g,"</span>$&"+n)+"</span>";return r=r.replace(/(<span.*?>)\s*(#+)/gi,"$2 $1")}},function(e,t,n){e.exports=function(){"use strict";function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}var r,o=(function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}e.exports={defaults:{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:t,changeDefaults:function(t){e.exports.defaults=t}}}(r={exports:{}},r.exports),r.exports),i=(o.defaults,o.getDefaults,o.changeDefaults,/[&<>"']/),a=/[&<>"']/g,s=/[<>"']|&(?!#?\w+;)/,l=/[<>"']|&(?!#?\w+;)/g,u={"&":"&","<":"<",">":">",'"':""","'":"'"},c=function(e){return u[e]},f=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function d(e){return e.replace(f,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}var p=/(^|[^\[])\^/g,h=/[^\w:]/g,g=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i,v={},m=/^[^:]+:\/*[^/]*$/,b=/^([^:]+:)[\s\S]*$/,y=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){v[" "+e]||(m.test(e)?v[" "+e]=e+"/":v[" "+e]=w(e,"/",!0));var n=-1===(e=v[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(b,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(y,"$1")+t:e+t}function w(e,t,n){var r=e.length;if(0===r)return"";for(var o=0;o<r;){var i=e.charAt(r-o-1);if(i!==t||n){if(i===t||!n)break;o++}else o++}return e.substr(0,r-o)}var x={escape:function(e,t){if(t){if(i.test(e))return e.replace(a,c)}else if(s.test(e))return e.replace(l,c);return e},unescape:d,edit:function(e,t){e=e.source||e,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(p,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n},cleanUrl:function(e,t,n){if(e){var r;try{r=decodeURIComponent(d(n)).replace(h,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!g.test(n)&&(n=k(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n},resolveUrl:k,noopTest:{exec:function(){}},merge:function(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},splitCells:function(e,t){var n=e.replace(/\|/g,function(e,t,n){for(var r=!1,o=t;--o>=0&&"\\"===n[o];)r=!r;return r?"|":" |"}).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n},rtrim:w,findClosingBracket:function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,o=0;o<n;o++)if("\\"===e[o])o++;else if(e[o]===t[0])r++;else if(e[o]===t[1]&&--r<0)return o;return-1},checkSanitizeDeprecation:function(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")},repeatString:function(e,t){if(t<1)return"";for(var n="";t>1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}},_=o.defaults,S=x.rtrim,j=x.splitCells,O=x.escape,C=x.findClosingBracket;function M(e,t,n){var r=t.href,o=t.title?O(t.title):null,i=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:r,title:o,text:i}:{type:"image",raw:n,href:r,title:o,text:O(i)}}var A=function(){function e(e){this.options=e||_}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var r=t[t.length-1];if(r&&"paragraph"===r.type)return{raw:n[0],text:n[0].trimRight()};var o=n[0].replace(/^ {4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?o:S(o,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map(function(e){var t=e.match(/^\s+/);if(null===t)return e;var n=t[0];return n.length>=r.length?e.slice(r.length):e}).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:r}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var r=S(n,"#");this.options.pedantic?n=r.trim():r&&!/ $/.test(r)||(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:j(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=j(n.cells[r],n.header.length);return n}}},t.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,r,o,i,a,s,l,u,c=t[0],f=t[2],d=f.length>1,p={type:"list",raw:c,ordered:d,start:d?+f.slice(0,-1):"",loose:!1,items:[]},h=t[0].match(this.rules.block.item),g=!1,v=h.length;o=this.rules.block.listItemStart.exec(h[0]);for(var m=0;m<v;m++){if(n=h[m],c=n,m!==v-1){if((i=this.rules.block.listItemStart.exec(h[m+1]))[1].length>o[0].length||i[1].length>3){h.splice(m,2,h[m]+"\n"+h[m+1]),m--,v--;continue}(!this.options.pedantic||this.options.smartLists?i[2][i[2].length-1]!==f[f.length-1]:d===(1===i[2].length))&&(a=h.slice(m+1).join("\n"),p.raw=p.raw.substring(0,p.raw.length-a.length),m=v-1),o=i}r=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) ?/,"")).indexOf("\n ")&&(r-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+r+"}","gm"),"")),s=g||/\n\n(?!\s*$)/.test(n),m!==v-1&&(g="\n"===n.charAt(n.length-1),s||(s=g)),s&&(p.loose=!0),this.options.gfm&&(l=/^\[[ xX]\] /.test(n),u=void 0,l&&(u=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,""))),p.items.push({type:"list_item",raw:c,task:l,checked:u,loose:s,text:n})}return p}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):O(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));var n=t[1].toLowerCase().replace(/\s+/g," ");return{tag:n,raw:t[0],href:t[2],title:t[3]}}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:j(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=j(n.cells[r].replace(/^ *\| *| *\| *$/g,""),n.header.length);return n}}},t.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1]}},t.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t)return{type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1]}},t.text=function(e,t){var n=this.rules.block.text.exec(e);if(n){var r=t[t.length-1];return r&&"text"===r.type?{raw:n[0],text:n[0]}:{type:"text",raw:n[0],text:n[0]}}},t.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:O(t[1])}},t.tag=function(e,t,n){var r=this.rules.inline.tag.exec(e);if(r)return!t&&/^<a /i.test(r[0])?t=!0:t&&/^<\/a>/i.test(r[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:r[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):O(r[0]):r[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^</.test(n)){if(!/>$/.test(n))return;var r=S(n.slice(0,-1),"\\");if((n.length-r.length)%2==0)return}else{var o=C(t[2],"()");if(o>-1){var i=0===t[0].indexOf("!")?5:4,a=i+t[1].length+o;t[2]=t[2].substring(0,o),t[0]=t[0].substring(0,a).trim(),t[3]=""}}var s=t[2],l="";if(this.options.pedantic){var u=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(s);u&&(s=u[1],l=u[3])}else l=t[3]?t[3].slice(1,-1):"";return s=s.trim(),/^</.test(s)&&(s=this.options.pedantic&&!/>$/.test(n)?s.slice(1):s.slice(1,-1)),M(t,{href:s?s.replace(this.rules.inline._escapes,"$1"):s,title:l?l.replace(this.rules.inline._escapes,"$1"):l},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])||!r.href){var o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return M(n,r,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.strong.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="**"===r[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.strong.middle.exec(t.slice(0,r.index+3)))return{type:"strong",raw:e.slice(0,o[0].length),text:e.slice(2,o[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.em.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="*"===r[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.em.middle.exec(t.slice(0,r.index+2)))return{type:"em",raw:e.slice(0,o[0].length),text:e.slice(1,o[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),o=/^ /.test(n)&&/ $/.test(n);return r&&o&&(n=n.substring(1,n.length-1)),n=O(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,r,o=this.rules.inline.autolink.exec(e);if(o)return"@"===o[2]?(n=O(this.options.mangle?t(o[1]):o[1]),r="mailto:"+n):(n=O(o[1]),r=n),{type:"link",raw:o[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,o;if("@"===n[2])r=O(this.options.mangle?t(n[0]):n[0]),o="mailto:"+r;else{var i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(i!==n[0]);r=O(n[0]),o="www."===n[1]?"http://"+r:r}return{type:"link",raw:n[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}},t.inlineText=function(e,t,n){var r,o=this.rules.inline.text.exec(e);if(o)return r=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):O(o[0]):o[0]:O(this.options.smartypants?n(o[0]):o[0]),{type:"text",raw:o[0],text:r}},e}(),E=x.noopTest,P=x.edit,L=x.merge,$={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:E,table:E,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};$.def=P($.def).replace("label",$._label).replace("title",$._title).getRegex(),$.bullet=/(?:[*+-]|\d{1,9}[.)])/,$.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,$.item=P($.item,"gm").replace(/bull/g,$.bullet).getRegex(),$.listItemStart=P(/^( *)(bull)/).replace("bull",$.bullet).getRegex(),$.list=P($.list).replace(/bull/g,$.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+$.def.source+")").getRegex(),$._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",$._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,$.html=P($.html,"i").replace("comment",$._comment).replace("tag",$._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),$.paragraph=P($._paragraph).replace("hr",$.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",$._tag).getRegex(),$.blockquote=P($.blockquote).replace("paragraph",$.paragraph).getRegex(),$.normal=L({},$),$.gfm=L({},$.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),$.gfm.nptable=P($.gfm.nptable).replace("hr",$.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",$._tag).getRegex(),$.gfm.table=P($.gfm.table).replace("hr",$.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",$._tag).getRegex(),$.pedantic=L({},$.normal,{html:P("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",$._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:E,paragraph:P($.normal._paragraph).replace("hr",$.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",$.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var T={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:E,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation*\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation*\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:E,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\s*punctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};T.punctuation=P(T.punctuation).replace(/punctuation/g,T._punctuation).getRegex(),T._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",T._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",T._comment=P($._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),T.em.start=P(T.em.start).replace(/punctuation/g,T._punctuation).getRegex(),T.em.middle=P(T.em.middle).replace(/punctuation/g,T._punctuation).replace(/overlapSkip/g,T._overlapSkip).getRegex(),T.em.endAst=P(T.em.endAst,"g").replace(/punctuation/g,T._punctuation).getRegex(),T.em.endUnd=P(T.em.endUnd,"g").replace(/punctuation/g,T._punctuation).getRegex(),T.strong.start=P(T.strong.start).replace(/punctuation/g,T._punctuation).getRegex(),T.strong.middle=P(T.strong.middle).replace(/punctuation/g,T._punctuation).replace(/overlapSkip/g,T._overlapSkip).getRegex(),T.strong.endAst=P(T.strong.endAst,"g").replace(/punctuation/g,T._punctuation).getRegex(),T.strong.endUnd=P(T.strong.endUnd,"g").replace(/punctuation/g,T._punctuation).getRegex(),T.blockSkip=P(T._blockSkip,"g").getRegex(),T.overlapSkip=P(T._overlapSkip,"g").getRegex(),T._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,T._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,T._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,T.autolink=P(T.autolink).replace("scheme",T._scheme).replace("email",T._email).getRegex(),T._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,T.tag=P(T.tag).replace("comment",T._comment).replace("attribute",T._attribute).getRegex(),T._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,T._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,T._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,T.link=P(T.link).replace("label",T._label).replace("href",T._href).replace("title",T._title).getRegex(),T.reflink=P(T.reflink).replace("label",T._label).getRegex(),T.reflinkSearch=P(T.reflinkSearch,"g").replace("reflink",T.reflink).replace("nolink",T.nolink).getRegex(),T.normal=L({},T),T.pedantic=L({},T.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:P(/^!?\[(label)\]\((.*?)\)/).replace("label",T._label).getRegex(),reflink:P(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",T._label).getRegex()}),T.gfm=L({},T.normal,{escape:P(T.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),T.gfm.url=P(T.gfm.url,"i").replace("email",T.gfm._extended_email).getRegex(),T.breaks=L({},T.gfm,{br:P(T.br).replace("{2,}","*").getRegex(),text:P(T.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var z={block:$,inline:T},N=o.defaults,D=z.block,I=z.inline,R=x.repeatString;function q(e){return e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function F(e){var t,n,r="",o=e.length;for(t=0;t<o;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}var U=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||N,this.options.tokenizer=this.options.tokenizer||new A,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:D.normal,inline:I.normal};this.options.pedantic?(t.block=D.pedantic,t.inline=I.pedantic):this.options.gfm&&(t.block=D.gfm,this.options.breaks?t.inline=I.breaks:t.inline=I.gfm),this.tokenizer.rules=t}t.lex=function(e,n){var r=new t(n);return r.lex(e)},t.lexInline=function(e,n){var r=new t(n);return r.inlineTokens(e)};var n,r,o,i=t.prototype;return i.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},i.blockTokens=function(e,t,n){var r,o,i,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),e=e.replace(/^ +$/gm,"");e;)if(r=this.tokenizer.space(e))e=e.substring(r.raw.length),r.type&&t.push(r);else if(r=this.tokenizer.code(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(r=this.tokenizer.fences(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.heading(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.nptable(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.hr(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.blockquote(e))e=e.substring(r.raw.length),r.tokens=this.blockTokens(r.text,[],n),t.push(r);else if(r=this.tokenizer.list(e)){for(e=e.substring(r.raw.length),i=r.items.length,o=0;o<i;o++)r.items[o].tokens=this.blockTokens(r.items[o].text,[],!1);t.push(r)}else if(r=this.tokenizer.html(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.def(e)))e=e.substring(r.raw.length),this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});else if(r=this.tokenizer.table(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.lheading(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.paragraph(e)))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.text(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}throw new Error(s)}return t},i.inline=function(e){var t,n,r,o,i,a,s=e.length;for(t=0;t<s;t++)switch((a=e[t]).type){case"paragraph":case"text":case"heading":a.tokens=[],this.inlineTokens(a.text,a.tokens);break;case"table":for(a.tokens={header:[],cells:[]},o=a.header.length,n=0;n<o;n++)a.tokens.header[n]=[],this.inlineTokens(a.header[n],a.tokens.header[n]);for(o=a.cells.length,n=0;n<o;n++)for(i=a.cells[n],a.tokens.cells[n]=[],r=0;r<i.length;r++)a.tokens.cells[n][r]=[],this.inlineTokens(i[r],a.tokens.cells[n][r]);break;case"blockquote":this.inline(a.tokens);break;case"list":for(o=a.items.length,n=0;n<o;n++)this.inline(a.items[n].tokens)}return e},i.inlineTokens=function(e,t,n,r){var o;void 0===t&&(t=[]),void 0===n&&(n=!1),void 0===r&&(r=!1);var i,a,s,l=e;if(this.tokens.links){var u=Object.keys(this.tokens.links);if(u.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(l));)u.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,i.index)+"["+R("a",i[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,i.index)+"["+R("a",i[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(a||(s=""),a=!1,o=this.tokenizer.escape(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.tag(e,n,r))e=e.substring(o.raw.length),n=o.inLink,r=o.inRawBlock,t.push(o);else if(o=this.tokenizer.link(e))e=e.substring(o.raw.length),"link"===o.type&&(o.tokens=this.inlineTokens(o.text,[],!0,r)),t.push(o);else if(o=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(o.raw.length),"link"===o.type&&(o.tokens=this.inlineTokens(o.text,[],!0,r)),t.push(o);else if(o=this.tokenizer.strong(e,l,s))e=e.substring(o.raw.length),o.tokens=this.inlineTokens(o.text,[],n,r),t.push(o);else if(o=this.tokenizer.em(e,l,s))e=e.substring(o.raw.length),o.tokens=this.inlineTokens(o.text,[],n,r),t.push(o);else if(o=this.tokenizer.codespan(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.br(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.del(e))e=e.substring(o.raw.length),o.tokens=this.inlineTokens(o.text,[],n,r),t.push(o);else if(o=this.tokenizer.autolink(e,F))e=e.substring(o.raw.length),t.push(o);else if(n||!(o=this.tokenizer.url(e,F))){if(o=this.tokenizer.inlineText(e,r,q))e=e.substring(o.raw.length),s=o.raw.slice(-1),a=!0,t.push(o);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}else e=e.substring(o.raw.length),t.push(o);return t},n=t,o=[{key:"rules",get:function(){return{block:D,inline:I}}}],(r=null)&&e(n.prototype,r),o&&e(n,o),t}(),B=o.defaults,H=x.cleanUrl,Z=x.escape,W=function(){function e(e){this.options=e||B}var t=e.prototype;return t.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var o=this.options.highlight(e,r);null!=o&&o!==e&&(n=!0,e=o)}return r?'<pre><code class="'+this.options.langPrefix+Z(r,!0)+'">'+(n?e:Z(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:Z(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,n){var r=t?"ol":"ul",o=t&&1!==n?' start="'+n+'"':"";return"<"+r+o+">\n"+e+"</"+r+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var n=t.header?"th":"td",r=t.align?"<"+n+' align="'+t.align+'">':"<"+n+">";return r+e+"</"+n+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,n){if(null===(e=H(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+Z(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},t.image=function(e,t,n){if(null===(e=H(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},t.text=function(e){return e},e}(),V=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),J=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{n=e+"-"+ ++r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),G=o.defaults,X=x.unescape,Y=function(){function e(e){this.options=e||G,this.options.renderer=this.options.renderer||new W,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new V,this.slugger=new J}e.parse=function(t,n){var r=new e(n);return r.parse(t)},e.parseInline=function(t,n){var r=new e(n);return r.parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,r,o,i,a,s,l,u,c,f,d,p,h,g,v,m,b,y,k="",w=e.length;for(n=0;n<w;n++)switch((f=e[n]).type){case"space":continue;case"hr":k+=this.renderer.hr();continue;case"heading":k+=this.renderer.heading(this.parseInline(f.tokens),f.depth,X(this.parseInline(f.tokens,this.textRenderer)),this.slugger);continue;case"code":k+=this.renderer.code(f.text,f.lang,f.escaped);continue;case"table":for(u="",l="",i=f.header.length,r=0;r<i;r++)l+=this.renderer.tablecell(this.parseInline(f.tokens.header[r]),{header:!0,align:f.align[r]});for(u+=this.renderer.tablerow(l),c="",i=f.cells.length,r=0;r<i;r++){for(s=f.tokens.cells[r],l="",a=s.length,o=0;o<a;o++)l+=this.renderer.tablecell(this.parseInline(s[o]),{header:!1,align:f.align[o]});c+=this.renderer.tablerow(l)}k+=this.renderer.table(u,c);continue;case"blockquote":c=this.parse(f.tokens),k+=this.renderer.blockquote(c);continue;case"list":for(d=f.ordered,p=f.start,h=f.loose,i=f.items.length,c="",r=0;r<i;r++)v=f.items[r],m=v.checked,b=v.task,g="",v.task&&(y=this.renderer.checkbox(m),h?v.tokens.length>0&&"text"===v.tokens[0].type?(v.tokens[0].text=y+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=y+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:y}):g+=y),g+=this.parse(v.tokens,h),c+=this.renderer.listitem(g,b,m);k+=this.renderer.list(c,d,p);continue;case"html":k+=this.renderer.html(f.text);continue;case"paragraph":k+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(c=f.tokens?this.parseInline(f.tokens):f.text;n+1<w&&"text"===e[n+1].type;)f=e[++n],c+="\n"+(f.tokens?this.parseInline(f.tokens):f.text);k+=t?this.renderer.paragraph(c):c;continue;default:var x='Token with "'+f.type+'" type was not found.';if(this.options.silent)return void console.error(x);throw new Error(x)}return k},t.parseInline=function(e,t){t=t||this.renderer;var n,r,o="",i=e.length;for(n=0;n<i;n++)switch((r=e[n]).type){case"escape":o+=t.text(r.text);break;case"html":o+=t.html(r.text);break;case"link":o+=t.link(r.href,r.title,this.parseInline(r.tokens,t));break;case"image":o+=t.image(r.href,r.title,r.text);break;case"strong":o+=t.strong(this.parseInline(r.tokens,t));break;case"em":o+=t.em(this.parseInline(r.tokens,t));break;case"codespan":o+=t.codespan(r.text);break;case"br":o+=t.br();break;case"del":o+=t.del(this.parseInline(r.tokens,t));break;case"text":o+=t.text(r.text);break;default:var a='Token with "'+r.type+'" type was not found.';if(this.options.silent)return void console.error(a);throw new Error(a)}return o},e}(),K=x.merge,Q=x.checkSanitizeDeprecation,ee=x.escape,te=o.getDefaults,ne=o.changeDefaults,re=o.defaults;function oe(e,t,n){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof t&&(n=t,t=null),t=K({},oe.defaults,t||{}),Q(t),n){var r,o=t.highlight;try{r=U.lex(e,t)}catch(e){return n(e)}var i=function(e){var i;if(!e)try{i=Y.parse(r,t)}catch(t){e=t}return t.highlight=o,e?n(e):n(null,i)};if(!o||o.length<3)return i();if(delete t.highlight,!r.length)return i();var a=0;return oe.walkTokens(r,function(e){"code"===e.type&&(a++,setTimeout(function(){o(e.text,e.lang,function(t,n){if(t)return i(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0==--a&&i()})},0))}),void(0===a&&i())}try{var s=U.lex(e,t);return t.walkTokens&&oe.walkTokens(s,t.walkTokens),Y.parse(s,t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+ee(e.message+"",!0)+"</pre>";throw e}}return oe.options=oe.setOptions=function(e){return K(oe.defaults,e),ne(oe.defaults),oe},oe.getDefaults=te,oe.defaults=re,oe.use=function(e){var t=K({},e);if(e.renderer&&function(){var n=oe.defaults.renderer||new W,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var s=e.renderer[t].apply(n,i);return!1===s&&(s=r.apply(n,i)),s}};for(var o in e.renderer)r(o);t.renderer=n}(),e.tokenizer&&function(){var n=oe.defaults.tokenizer||new A,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var s=e.tokenizer[t].apply(n,i);return!1===s&&(s=r.apply(n,i)),s}};for(var o in e.tokenizer)r(o);t.tokenizer=n}(),e.walkTokens){var n=oe.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens(t),n&&n(t)}}oe.setOptions(t)},oe.walkTokens=function(e,t){for(var r,o=n(e);!(r=o()).done;){var i=r.value;switch(t(i),i.type){case"table":for(var a,s=n(i.tokens.header);!(a=s()).done;){var l=a.value;oe.walkTokens(l,t)}for(var u,c=n(i.tokens.cells);!(u=c()).done;)for(var f,d=n(u.value);!(f=d()).done;){var p=f.value;oe.walkTokens(p,t)}break;case"list":oe.walkTokens(i.items,t);break;default:i.tokens&&oe.walkTokens(i.tokens,t)}}},oe.parseInline=function(e,t){if(null==e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");t=K({},oe.defaults,t||{}),Q(t);try{var n=U.lexInline(e,t);return t.walkTokens&&oe.walkTokens(n,t.walkTokens),Y.parseInline(n,t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+ee(e.message+"",!0)+"</pre>";throw e}},oe.Parser=Y,oe.parser=Y.parse,oe.Renderer=W,oe.TextRenderer=V,oe.Lexer=U,oe.lexer=U.lex,oe.Tokenizer=A,oe.Slugger=J,oe.parse=oe,oe}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=void 0,t.init=function(){(p=document.createElement("div")).setAttribute("hidden",!0),p.dataset.cbSounds="",document.body.appendChild(p),i.default.on("state-change",function(e){var t=e.name,n=e.value,o=(0,s.sameObject)(t,"sound.ambient"),i=(0,s.sameObject)(t,"sound.effect");if(o){var a=(0,s.get)("sound.ambient");a&&Object.keys(a).forEach(function(e){a[e].url&&h(e,a[e].url,!1),a[e].volume&&m(e,a[e].volume),void 0!==a[e].muted&&b(e,a[e].muted),a[e].playing&&g(e,!0).catch(function(t){return f('Could not resume playing ambient sound "'+e+'" ('+t.message+")")})})}if(i){var l=(0,s.get)("sound.effect");l&&Object.keys(l).forEach(function(e){l[e].url&&h(e,l[e].url,!0),l[e].volume&&m(e,l[e].volume),void 0!==l[e].muted&&b(e,l[e].muted),l[e].playing&&g(e,!1).then(function(){return(0,s.set)("sound.effect."+e+".playing",!1)}).catch(function(t){return f('Could not resume playing sound effect "'+e+'" ('+t.message)})})}if(!o&&!i){var u=/^sound\.(ambient|effect)\.(.+?)\.(.+)$/i.exec(t);if(u)switch(u[3].toLowerCase()){case"playing":n?"ambient"===u[1]?g(u[2],!0,(0,r.default)((0,s.get)(u[2]+".transitionDuration")||(0,s.get)("sound.transitionDuration")||"0s","ms")):g(u[2],!1).then(function(){return(0,s.set)(t,!1)}):"ambient"===u[1]?v(u[2],(0,r.default)((0,s.get)(u[2]+".transitionDuration")||(0,s.get)("sound.transitionDuration")||"0s","ms")):v(u[2]);break;case"url":h(u[2],n,"effect"===u[1]);break;case"volume":m(u[2],n)}}})};var r=l(n(13)),o=l(n(4)),i=l(n(1)),a=l(n(99)),s=n(0);function l(e){return e&&e.__esModule?e:{default:e}}var u=(0,o.default)("sound"),c=u.log,f=u.warn,d={},p=void 0;t.defaults={"sound.mute":!1,"sound.volume":1,"sound.transitionDuration":"1s"};function h(e,t,n){d[e]?(d[e].setAttribute("src",t),n?d[e].setAttribute("preload","auto"):d[e].removeAttribute("preload"),c('Updated <audio> element in sound bank for "'+e+'" to use '+t)):(d[e]=document.createElement("audio"),d[e].setAttribute("src",t),n&&d[e].setAttribute("preload","auto"),p.appendChild(d[e]),c('Added new <audio> element to sound bank for "'+e+'" for '+t))}function g(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!d[e])throw new Error("There is no sound loaded named "+e+".");return c('Playing sound "'+e+'" (looping: '+t+")"),n>0&&(d[e].volume=0,(0,a.default)(d[e],1,n)),t?(d[e].loop=!0,d[e].play()):(d[e].loop=!1,new Promise(function(t,n){try{d[e].addEventListener("ended",function n(){d[e].removeEventListener("ended",n),t()}),d[e].play().catch(function(e){return n(e)})}catch(e){n(e)}}))}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!d[e])throw new Error("There is no sound loaded named "+e+".");if(t<=0)d[e].pause(),d[e].currentTime=0;else{var n=d[e].volume;(0,a.default)(d[e],0,t).then(function(){d[e].pause(),d[e].volume=n,d[e].currentTime=0})}}function m(e,t){if(!d[e])throw new Error("There is no sound loaded named "+e+".");if(t<0||t>1)throw new Error("A sound volume must be between 0 and 1.");d[e].volume=t}function b(e,t){if(!d[e])throw new Error("There is no sound loaded named "+e+".");d[e].muted=t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=void 0,t.default=function(e){e("random.coinFlip",function(){var e=l();return(0,o.default)(u),e>.5}),e("random.fraction",function(){var e=l();return(0,o.default)(u),e}),[4,5,6,8,10,12,20,25,50,100,1e3].forEach(function(t){e("random.d"+t,function(){var e=1+Math.round(l()*(t-1));return(0,o.default)(u),e})})};var r=s(n(106)),o=s(n(20)),i=s(n(1)),a=n(0);function s(e){return e&&e.__esModule?e:{default:e}}t.defaults={"config.random.seed":function(){return new Date},"config.random.privateState":null};var l=(0,r.default)(new Date,{state:!0});function u(){(0,a.set)("config.random.privateState",l.state())}i.default.on("state-change",function(e){var t=e.name,n=e.value;"config.random.seed"===t&&(l=(0,r.default)(n,{state:!0}))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=void 0,t.style=d,t.init=function(){(0,a.init)(),f.dataset.cbAuthorStyles="",document.head.appendChild(f),o.default.on("state-change",function(e){var t=e.name,n=e.value;if((0,i.sameObject)(t,"config.style.backdrop")&&(u("Setting backdrop color"),d("#backdrop",{"background-color":(0,s.parseColor)((0,i.get)("config.style.backdrop")).color})),(0,i.sameObject)(t,"config.style.page.fork.divider.color")&&(u("Setting fork divider color"),d("#page .fork p a + a",{"border-top-color":(0,s.parseColor)((0,i.get)("config.style.page.fork.divider.color")).color})),(0,i.sameObject)(t,"config.style.page.fork.divider.size")&&(u("Setting fork divider size"),d("#page .fork p a + a",{"border-top-width":(0,i.get)("config.style.page.fork.divider.size")+"px"})),(0,i.sameObject)(t,"config.style.page.fork.divider.style")&&(u("Setting fork divider style"),d("#page .fork p a + a",{"border-top-style":(0,i.get)("config.style.page.fork.divider.style")})),(0,i.sameObject)(t,"config.style.page.style")||(0,i.sameObject)(t,"config.style.page.style.borderColor"))switch(u("Setting page style"),(0,i.get)("config.style.page.style")){case"none":d("#page",{border:"none","box-shadow":"none"});break;case"shadow":d("#page",{border:"none","box-shadow":"0 4px 8px hsla(0, 0%, 0%, 0.25)"});break;case"thick-line":d("#page",{border:"4px solid "+(0,s.parseColor)((0,i.get)("config.style.page.style.borderColor")).color,"box-shadow":"none"});break;case"thin-line":d("#page",{border:"1px solid "+(0,s.parseColor)((0,i.get)("config.style.page.style.borderColor")).color,"box-shadow":"none"})}if((0,i.sameObject)(t,"config.style.page.verticalAlign"))switch(u("Setting page vertical alignment"),(0,i.get)("config.style.page.verticalAlign")){case"top":d("#page article",{"align-items":"flex-start"});break;case"center":d("#page article",{"align-items":"center"});break;case"bottom":d("#page article",{"align-items":"flex-end"})}if(/^config\.style\.page\..*\.((line)?color|font)$/i.test(t)&&p(t,n),(0,i.sameObject)(t,"config.style.page")){["config.style.page","config.style.page.header","config.style.page.footer"].forEach(function(e){var t=(0,i.get)(e);t&&function(e,t){["color","font","lineColor"].forEach(function(n){t[n]&&p(e+"."+n,t[n]),t.link&&(t.link[n]&&p(e+".link."+n,t.link[n]),t.link.active&&t.link.active[n]&&p(e+".link.active."+n,t.link.active[n]))})}(e,t)})}})};var r=l(n(4)),o=l(n(1)),i=n(0),a=n(117),s=n(118);function l(e){return e&&e.__esModule?e:{default:e}}var u=(0,r.default)("style").log,c=(t.defaults={"config.style.backdrop":"gray-0","config.style.page.style":"shadow","config.style.page.style.borderColor":"gray-2","config.style.page.font":"Iowan Old Style/Constantia/Georgia/serif 18","config.style.page.color":"gray-9 on white","config.style.page.fork.divider.color":"gray-3","config.style.page.fork.divider.style":"dashed","config.style.page.fork.divider.size":1,"config.style.page.link.color":"gray-9","config.style.page.link.lineColor":"red-8","config.style.page.link.font":"underline","config.style.page.link.active.color":"red-8 on red-0","config.style.page.verticalAlign":"center","config.style.page.header.font":"16","config.style.page.header.link.font":"small caps","config.style.page.footer.font":"16","config.style.page.footer.link.font":"small caps"},{}),f=document.createElement("style");function d(e,t){c[e]=c[e]||{},Object.assign(c[e],t),function(){f.innerHTML=Object.keys(c).reduce(function(e,t){return e+(n=t,r=c[t],n+"{"+Object.keys(r).sort().reduce(function(e,t){return r[t]?e+t+":"+r[t].toString()+";":e},"")+"}");var n,r},"")}()}function p(e,t){var n="#page",r=e.replace(/^config\.style\.page\./i,"").split(".");switch("header"===r[0].toLowerCase()?(n+=" header",r.shift()):"footer"===r[0].toLowerCase()&&(n+=" footer",r.shift()),"link"===r[0].toLowerCase()&&(n+=" a",r.shift()),"active"===r[0].toLowerCase()&&(n=n+":hover, "+n+":active",r.shift()),r[0].toLowerCase()){case"color":u("Setting color for "+n),d(n,(0,s.parseColor)(t));break;case"linecolor":u("Setting line color for "+n);var o=(0,s.parseColor)(t).color;d(n,{"text-decoration-color":o,"-webkit-text-decoration-color":o});break;case"font":u("Setting font for "+n),d(n,(0,s.parseFont)(t))}}},function(e,t){var n=/-?\d+(\.\d+)?%?/g;e.exports=function(e){return e.match(n)}},function(e,t){e.exports=function(e,t,n){return Math.min(Math.max(e,t),n)}},function(e,t,n){"use strict";var r=n(29),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(44)),i=p(n(59)),a=n(0),s=n(23),l=p(n(100)),u=p(n(116)),c=n(12),f=n(6),d=n(25);function p(e){return e&&e.__esModule?e:{default:e}}n(126),(0,f.loadFromData)(document.querySelector("tw-storydata")),(0,i.default)(),(0,a.init)(),Object.assign(window,{go:r.go,restart:r.restart}),(0,d.init)(),(0,u.default)(),(0,l.default)(),(0,c.init)(),(0,s.init)(),(0,f.init)(),o&&(0,a.get)("config.testing")&&o.init(),!(0,a.get)("config.testing")&&(0,a.canRestoreFromStorage)()&&(0,a.restoreFromStorage)(),(0,f.addCustomStyles)(),(0,f.runCustomScripts)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.go=f,t.restart=d;var r,o=n(1),i=(r=o)&&r.__esModule?r:{default:r},a=n(0),s=n(4),l=n(6),u=n(43);function c(e){(0,s.log)("actions",e)}function f(e){c('Going to passage "'+e+'"');var t=(0,l.passageNamed)(e);if(!t)throw new Error('There is no passage with the name "'+e+'"');(0,u.transferToState)(),(0,a.set)("trail",(0,a.get)("trail").concat(t.name))}function d(){c("Restarting"),(0,a.reset)(),window.location.reload()}i.default.on("dom-click",function(e){e.dataset.cbGo&&(0,u.validate)().then(function(){return f(e.dataset.cbGo)})}),i.default.on("dom-click",function(e){e.dataset.cbRestart&&d()})},function(e,t,n){var r=n(31),o=n(32),i=n(14);function a(e){if(!(this instanceof a))return new a(e);this._name=e||"nanobus",this._starListeners=[],this._listeners={}}e.exports=a,a.prototype.emit=function(e){i.ok("string"==typeof e||"symbol"==typeof e,"nanobus.emit: eventName should be type string or symbol");for(var t=[],n=1,r=arguments.length;n<r;n++)t.push(arguments[n]);var a=o(this._name+"('"+e.toString()+"')"),s=this._listeners[e];return s&&s.length>0&&this._emit(this._listeners[e],t),this._starListeners.length>0&&this._emit(this._starListeners,e,t,a.uuid),a(),this},a.prototype.on=a.prototype.addListener=function(e,t){return i.ok("string"==typeof e||"symbol"==typeof e,"nanobus.on: eventName should be type string or symbol"),i.equal(typeof t,"function","nanobus.on: listener should be type function"),"*"===e?this._starListeners.push(t):(this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)),this},a.prototype.prependListener=function(e,t){return i.ok("string"==typeof e||"symbol"==typeof e,"nanobus.prependListener: eventName should be type string or symbol"),i.equal(typeof t,"function","nanobus.prependListener: listener should be type function"),"*"===e?this._starListeners.unshift(t):(this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].unshift(t)),this},a.prototype.once=function(e,t){i.ok("string"==typeof e||"symbol"==typeof e,"nanobus.once: eventName should be type string or symbol"),i.equal(typeof t,"function","nanobus.once: listener should be type function");var n=this;return this.on(e,function r(){t.apply(n,arguments);n.removeListener(e,r)}),this},a.prototype.prependOnceListener=function(e,t){i.ok("string"==typeof e||"symbol"==typeof e,"nanobus.prependOnceListener: eventName should be type string or symbol"),i.equal(typeof t,"function","nanobus.prependOnceListener: listener should be type function");var n=this;return this.prependListener(e,function r(){t.apply(n,arguments);n.removeListener(e,r)}),this},a.prototype.removeListener=function(e,t){return i.ok("string"==typeof e||"symbol"==typeof e,"nanobus.removeListener: eventName should be type string or symbol"),i.equal(typeof t,"function","nanobus.removeListener: listener should be type function"),"*"===e?(this._starListeners=this._starListeners.slice(),n(this._starListeners,t)):(void 0!==this._listeners[e]&&(this._listeners[e]=this._listeners[e].slice()),n(this._listeners[e],t));function n(e,t){if(e){var n=e.indexOf(t);return-1!==n?(r(e,n,1),!0):void 0}}},a.prototype.removeAllListeners=function(e){return e?"*"===e?this._starListeners=[]:this._listeners[e]=[]:(this._starListeners=[],this._listeners={}),this},a.prototype.listeners=function(e){var t="*"!==e?this._listeners[e]:this._starListeners,n=[];if(t)for(var r=t.length,o=0;o<r;o++)n.push(t[o]);return n},a.prototype._emit=function(e,t,n,r){if(void 0!==e&&0!==e.length){void 0===n&&(n=t,t=null),t&&(n=void 0!==r?[t].concat(n,r):[t].concat(n));for(var o=e.length,i=0;i<o;i++){var a=e[i];a.apply(a,n)}}}},function(e,t,n){"use strict";e.exports=function(e,t,n){var r,o=e.length;if(!(t>=o||0===n)){var i=o-(n=t+n>o?o-t:n);for(r=t;r<i;++r)e[r]=e[r+n];e.length=i}}},function(e,t,n){var r,o=n(33)(),i=n(14);a.disabled=!0;try{r=window.performance,a.disabled="true"===window.localStorage.DISABLE_NANOTIMING||!r.mark}catch(e){}function a(e){if(i.equal(typeof e,"string","nanotiming: name should be type string"),a.disabled)return s;var t=(1e4*r.now()).toFixed()%Number.MAX_SAFE_INTEGER,n="start-"+t+"-"+e;function l(i){var a="end-"+t+"-"+e;r.mark(a),o.push(function(){var o=null;try{var s=e+" ["+t+"]";r.measure(s,n,a),r.clearMarks(n),r.clearMarks(a)}catch(e){o=e}i&&i(o,e)})}return r.mark(n),l.uuid=t,l}function s(e){e&&o.push(function(){e(new Error("nanotiming: performance API unavailable"))})}e.exports=a},function(e,t,n){var r=n(14),o="undefined"!=typeof window;function i(e){this.hasWindow=e,this.hasIdle=this.hasWindow&&window.requestIdleCallback,this.method=this.hasIdle?window.requestIdleCallback.bind(window):this.setTimeout,this.scheduled=!1,this.queue=[]}i.prototype.push=function(e){r.equal(typeof e,"function","nanoscheduler.push: cb should be type function"),this.queue.push(e),this.schedule()},i.prototype.schedule=function(){if(!this.scheduled){this.scheduled=!0;var e=this;this.method(function(t){for(;e.queue.length&&t.timeRemaining()>0;)e.queue.shift()(t);e.scheduled=!1,e.queue.length&&e.schedule()})}},i.prototype.setTimeout=function(e){setTimeout(e,0,{timeRemaining:function(){return 1}})},e.exports=function(){var e;return o?(window._nanoScheduler||(window._nanoScheduler=new i(!0)),e=window._nanoScheduler):e=new i,e}},function(e,t,n){
/*!
* get-value <https://github.com/jonschlinkert/get-value>
*
* Copyright (c) 2014-2018, Jon Schlinkert.
* Released under the MIT License.
*/
const r=n(15);function o(e,t,n){return"function"==typeof n.join?n.join(e):e[0]+t+e[1]}function i(e,t,n){return"function"!=typeof n.isValid||n.isValid(e,t)}function a(e){return r(e)||Array.isArray(e)||"function"==typeof e}e.exports=function(e,t,n){if(r(n)||(n={default:n}),!a(e))return void 0!==n.default?n.default:e;"number"==typeof t&&(t=String(t));const s=Array.isArray(t),l="string"==typeof t,u=n.separator||".",c=n.joinChar||("string"==typeof u?u:".");if(!l&&!s)return e;if(l&&t in e)return i(t,e,n)?e[t]:n.default;let f=s?t:function(e,t,n){if("function"==typeof n.split)return n.split(e);return e.split(t)}(t,u,n),d=f.length,p=0;do{let t=f[p];for("number"==typeof t&&(t=String(t));t&&"\\"===t.slice(-1);)t=o([t.slice(0,-1),f[++p]||""],c,n);if(t in e){if(!i(t,e,n))return n.default;e=e[t]}else{let r=!1,a=p+1;for(;a<d;)if(r=(t=o([t,f[a++]],c,n))in e){if(!i(t,e,n))return n.default;e=e[t],p=a-1;break}if(!r)return n.default}}while(++p<d&&a(e));return p===d?e:n.default}},function(e,t,n){"use strict";
/*!
* set-value <https://github.com/jonschlinkert/set-value>
*
* Copyright (c) 2014-2018, Jon Schlinkert.
* Released under the MIT License.
*/const r=n(36);function o(e,t,n,r){if(!s(e))return e;let l=r||{};const u=Array.isArray(t);if(!u&&"string"!=typeof t)return e;let c=l.merge;c&&"function"!=typeof c&&(c=Object.assign);const f=(u?t:function(e,t){const n=function(e,t){let n=e;if(void 0===t)return n+"";const r=Object.keys(t);for(let e=0;e<r.length;e++){const o=r[e];n+=";"+o+"="+String(t[o])}return n}(e,t);if(o.memo[n])return o.memo[n];const r=t&&t.separator?t.separator:".";let i=[],a=[];i=t&&"function"==typeof t.split?t.split(e):e.split(r);for(let e=0;e<i.length;e++){let t=i[e];for(;t&&"\\"===t.slice(-1)&&i[e+1];)t=t.slice(0,-1)+r+i[++e];a.push(t)}return o.memo[n]=a,a}(t,l)).filter(a),d=f.length,p=e;if(!r&&1===f.length)return i(e,f[0],n,c),e;for(let t=0;t<d;t++){let r=f[t];if(s(e[r])||(e[r]={}),t===d-1){i(e,r,n,c);break}e=e[r]}return p}function i(e,t,n,o){o&&r(e[t])&&r(n)?e[t]=o({},e[t],n):e[t]=n}function a(e){return"__proto__"!==e&&"constructor"!==e&&"prototype"!==e}function s(e){return null!==e&&("object"==typeof e||"function"==typeof e)}o.memo={},e.exports=o},function(e,t,n){"use strict";
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/var r=n(15);function o(e){return!0===r(e)&&"[object Object]"===Object.prototype.toString.call(e)}e.exports=function(e){var t,n;return!1!==o(e)&&("function"==typeof(t=e.constructor)&&(!1!==o(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")))}},function(e,t,n){"use strict";
/*!
* unset-value <https://github.com/jonschlinkert/unset-value>
*
* Copyright (c) 2015, 2017, Jon Schlinkert.
* Released under the MIT License.
*/var r=n(15),o=n(38);e.exports=function(e,t){if(!r(e))throw new TypeError("expected an object.");if(e.hasOwnProperty(t))return delete e[t],!0;if(o(e,t)){for(var n=t.split("."),i=n.pop();n.length&&"\\"===n[n.length-1].slice(-1);)i=n.pop().slice(0,-1)+"."+i;for(;n.length;)e=e[t=n.shift()];return delete e[i]}return!0}},function(e,t,n){"use strict";
/*!
* has-value <https://github.com/jonschlinkert/has-value>
*
* Copyright (c) 2014-2016, Jon Schlinkert.
* Licensed under the MIT License.
*/var r=n(39),o=n(41),i=n(42);e.exports=function(e,t,n){return r(e)?o(i(e,t),n):o(e,t)}},function(e,t,n){"use strict";
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2015, Jon Schlinkert.
* Licensed under the MIT License.
*/var r=n(40);e.exports=function(e){return null!=e&&"object"==typeof e&&!1===r(e)}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";
/*!
* has-values <https://github.com/jonschlinkert/has-values>
*
* Copyright (c) 2014-2015, Jon Schlinkert.
* Licensed under the MIT License.
*/e.exports=function(e,t){if(null==e)return!1;if("boolean"==typeof e)return!0;if("number"==typeof e)return 0!==e||!0!==t;if(void 0!==e.length)return 0!==e.length;for(var n in e)if(e.hasOwnProperty(n))return!0;return!1}},function(e,t){function n(e){return e?Array.isArray(e)?e.join("."):e:""}
/*!
* get-value <https://github.com/jonschlinkert/get-value>
*
* Copyright (c) 2014-2015, Jon Schlinkert.
* Licensed under the MIT License.
*/
e.exports=function(e,t,r,o,i){if(null===(a=e)||"object"!=typeof a&&"function"!=typeof a||!t)return e;var a;if(t=n(t),r&&(t+="."+n(r)),o&&(t+="."+n(o)),i&&(t+="."+n(i)),t in e)return e[t];for(var s=t.split("."),l=s.length,u=-1;e&&++u<l;){for(var c=s[u];"\\"===c[c.length-1];)c=c.slice(0,-1)+"."+s[++u];e=e[c]}return e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validate=function(){var e=document.querySelector("form#cb-validation"),t=(0,r.selectAll)(e,"input, select");return new Promise(function(n,r){var o=function n(){e.removeEventListener("submit",i),t.forEach(function(e){return e.removeEventListener("invalid",n)}),r()},i=function r(){e.removeEventListener("submit",r),t.forEach(function(e){return e.removeEventListener("invalid",o)}),n()};t.forEach(function(e){return e.addEventListener("invalid",o)}),e.addEventListener("submit",i),document.querySelector("button#cb-validation-tester").click()})},t.transferToState=function(){(0,r.selectAll)(document,"[data-cb-set]").forEach(function(e){var t=e.dataset.set;switch(e.nodeName){case"INPUT":(0,o.set)(t,e.value);break;case"SELECT":(0,o.set)(t,e.options[e.selectedIndex].value);break;default:(0,o.set)(t,e.textContent)}})};var r=n(7),o=n(0)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Backstage=void 0,t.init=function(){(0,o.init)(),(0,r.render)((0,r.h)(f,null),document.body)};var r=n(2),o=n(17),i=c(n(45)),a=c(n(48)),s=c(n(49)),l=c(n(52)),u=c(n(56));function c(e){return e&&e.__esModule?e:{default:e}}n(58);class f extends r.Component{constructor(e){super(e),this.state={open:!0}}setBodyClass(){this.state.open?document.body.classList.add("backstage-visible"):document.body.classList.remove("backstage-visible")}toggle(){this.setState({open:!this.state.open})}render(){const e=this.state.open?{icon:"→",text:"Close"}:{icon:"←",text:"Open"};return(0,r.h)("div",{id:"backstage",class:this.state.open&&"open"},(0,r.h)("button",{onClick:e=>this.toggle(),title:e.text+" backstage panel",class:"toggle-visibility"},e.icon),(0,r.h)(u.default,null,(0,r.h)(s.default,{label:"State"}),(0,r.h)(i.default,{label:"History"}),(0,r.h)(l.default,{label:"Style"}),(0,r.h)(a.default,{label:"Notes"})))}componentDidMount(){this.setBodyClass()}componentDidUpdate(){this.setBodyClass()}}t.Backstage=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),o=l(n(10)),i=l(n(1)),a=n(17),s=n(0);function l(e){return e&&e.__esModule?e:{default:e}}function u(e){if(0===e.length)return[];const t=[];let n,r=[];return e.forEach(({change:e},o)=>{"trail"===e.name?(t.push({historyIndex:o-1,passage:n,varChanges:r}),r=[],n=e.value[e.value.length-1]):r.push({name:e.name,value:e.value})}),t.push({historyIndex:e.length-1,passage:n,varChanges:r}),console.log("Parsed",e,t),t}function c({historyIndex:e,passage:t,varChanges:n}){const o=[(0,r.h)("tr",null,(0,r.h)("td",{class:"actions",rowspan:n.length+1},(0,r.h)("button",{onClick:e>=0?()=>(0,a.rewindTo)(e):s.reset},"↪")),(0,r.h)("td",{class:"go",rowspan:n.length+1,colspan:n.length>0?1:2},t?`Go to "${t}"`:"Startup"))];return n.forEach(e=>{o.push((0,r.h)("tr",null,(0,r.h)("td",null,e.name," ← ",JSON.stringify(e.value))))}),o}n(47);t.default=class extends r.Component{constructor(e){super(e),this.state={history:u(a.history)},this.updateBound=(()=>this.update())}update(){this.setState({history:u(a.history)})}render(){let e;return e=this.state.history.length>0?(0,r.h)("table",{class:"history"},this.state.history.map(c)):(0,r.h)("table",{class:"history"},(0,r.h)("tr",null,(0,r.h)("td",{class:"actions"},(0,r.h)("button",{onClick:s.reset},"↪")),(0,r.h)("td",{class:"go"},"Startup"))),(0,r.h)(o.default,{title:"History"},e)}componentDidMount(){i.default.on("backstage-recorder-update",this.updateBound)}componentDidUnmount(){i.default.removeEventListener("backstage-recorder-update",this.updateBound)}}},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(18)),o=n(2),i=l(n(1)),a=n(7),s=n(0);function l(e){return e&&e.__esModule?e:{default:e}}t.default=class extends o.Component{constructor(e){super(e);const t=(0,s.get)("trail");this.state={currentPassage:t[t.length-1],notes:{}},this.restore(),this.syncBound=(e=>this.sync(e))}sync({name:e,value:t}){"trail"===e&&this.setState({currentPassage:t[t.length-1]})}restore(){const e=window.localStorage.getItem(`cb-passage-notes-${(0,s.get)("config.state.saveKey")}`);e&&this.setState({notes:JSON.parse(e)})}save(){window.localStorage.setItem(`cb-passage-notes-${(0,s.get)("config.state.saveKey")}`,JSON.stringify(this.state.notes))}saveNote(e,t){const n=Object.assign({},this.state.notes);n[e]=t,this.setState({notes:n}),this.save()}export(){const e=Object.keys(this.state.notes).reduce((e,t)=>e+`<li class="note"><span class="passage">${(0,r.default)(t)}</span><pre>${(0,r.default)(this.state.notes[t])}</pre></li>`,""),t=document.createElement("a");t.setAttribute("download",`${(0,s.get)("story.name")} Notes - ${(new Date).toDateString()} ${(new Date).toTimeString()}.html`),t.setAttribute("href","data:text/html;base64,"+window.btoa(`<style>body {font-family: sans-serif}</style><h1>Notes for “${(0,r.default)((0,s.get)("story.name"))}”</h1><ul data-cb-backstage-notes data-cb-version="${(0,s.get)("engine.version")}">${e}</ul>`)),document.body.appendChild(t),t.click(),document.body.removeChild(t)}startImport(){this.upload.click()}import(e){const t=this.upload.files[0];if(!t)return;const n=new FileReader(t);n.onload=(e=>{const t=document.createElement("div"),n=Object.assign({},this.state.notes);let r=0;t.innerHTML=e.target.result;const o=(0,a.selectAll)(t,"ul[data-cb-backstage-notes] li");0!==o.length?(o.forEach(e=>{const t=(0,a.select)(e,"span.passage"),o=(0,a.select)(e,"pre");t&&o&&(n[t.textContent]=(n[t.textContent]||"")+"\n\n"+o.textContent,r++)}),this.setState({notes:n}),this.save(),window.alert(`${r} note(s) were imported.`)):window.alert("No notes were found in this file.")}),n.readAsText(t)}deleteAll(){window.confirm("Are you sure? This will delete all text entered in the Notes panel of Backstage, and cannot be undone.")&&(this.setState({notes:{}}),this.save())}render(){return(0,o.h)("div",null,(0,o.h)("p",null,(0,o.h)("label",null,"Notes on “",this.state.currentPassage,"”")),(0,o.h)("p",null,(0,o.h)("textarea",{value:this.state.notes[this.state.currentPassage],onInput:e=>this.saveNote(this.state.currentPassage,e.target.value)})),(0,o.h)("p",null,(0,o.h)("button",{onClick:()=>this.export()},"Export All Notes"),(0,o.h)("button",{onClick:()=>this.startImport()},"Import Notes From File"),(0,o.h)("button",{onClick:()=>this.deleteAll()},"Delete All Notes")),(0,o.h)("input",{type:"file",hidden:!0,ref:e=>this.upload=e,onChange:()=>this.import()}))}componentDidMount(){i.default.on("state-change",this.syncBound)}componentDidUnmount(){i.default.removeListener("state-change",this.syncBound)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return(0,r.h)("div",null,(0,r.h)(i.default,null),(0,r.h)(o.default,null))};var r=n(2),o=a(n(50)),i=a(n(51));function a(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(2),i=n(0),a=n(10),s=(r=a)&&r.__esModule?r:{default:r};t.default=class extends o.Component{constructor(e){super(e),this.state={snapshots:[]},this.restore()}addSnapshot(){const e=window.prompt("Enter a name for this snapshot:");e&&this.setState({snapshots:this.state.snapshots.concat({name:e,state:(0,i.saveToObject)()})})}loadSnapshot(e){(0,i.restoreFromObject)(this.state.snapshots[e].state)}deleteSnapshot(e){window.confirm(`Are you sure you want to delete the snapshot "${this.state.snapshots[e].name}"? This cannot be undone.`)&&this.setState({snapshots:this.state.snapshots.filter((t,n)=>n!==e)})}save(){window.localStorage.setItem(`cb-snapshots-${(0,i.get)("config.state.saveKey")}`,JSON.stringify(this.state.snapshots))}restore(){const e=window.localStorage.getItem(`cb-snapshots-${(0,i.get)("config.state.saveKey")}`);e&&this.setState({snapshots:JSON.parse(e)})}render(){const e=this.state.snapshots.map((e,t)=>(0,o.h)("div",{class:"segmented-button block"},(0,o.h)("button",{onClick:()=>this.loadSnapshot(t),title:'Load snapshot "{s.name}"'},e.name),(0,o.h)("button",{onClick:()=>this.deleteSnapshot(t),class:"fixed",title:'Delete snapshot "{s.name}"'},(0,o.h)("strong",null,"×"))));return(0,o.h)(s.default,{title:"Snapshots"},e,(0,o.h)("button",{class:"block",onClick:()=>this.addSnapshot()},"Add Snapshot"))}componentDidUpdate(){this.save()}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),o=s(n(10)),i=n(0),a=s(n(1));function s(e){return e&&e.__esModule?e:{default:e}}t.default=class extends r.Component{constructor(e){super(e),this.state={varNames:[],showDefaults:!1},this.syncBound=(()=>this.syncWithState())}syncWithState(){this.setState({varNames:(0,i.varNames)(this.state.showDefaults)})}onChangeDefaults(e){this.setState({showDefaults:e.target.checked})}onChangeVar(e,t){(0,i.set)(t,JSON.parse(e.target.value))}render(){return(0,r.h)(o.default,{title:"Variables"},(0,r.h)("p",null,(0,r.h)("input",{type:"checkbox",id:"cb-backstage-show-defaults",checked:this.state.showDefaults,onChange:e=>this.onChangeDefaults(e)}),(0,r.h)("label",{for:"cb-backstage-show-defaults"},"Show Defaults")),(0,r.h)("table",null,this.state.varNames.map(e=>(0,r.h)("tr",null,(0,r.h)("td",null,e),(0,r.h)("td",null,(0,r.h)("input",{type:"text",value:JSON.stringify((0,i.get)(e)),onChange:t=>this.onChangeVar(t,e)}))))))}componentWillMount(){this.syncWithState(),a.default.on("state-change",this.syncBound)}componentDidUpdate(e,t){t.showDefaults!==this.state.showDefaults&&this.syncWithState()}componentWillUnmount(){a.default.removeListener("state-change",this.syncBound)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return(0,r.h)("div",null,(0,r.h)(o.default,null),(0,r.h)(i.default,{title:"Page",prefix:"page"}),(0,r.h)(i.default,{title:"Header",prefix:"page.header"}),(0,r.h)(i.default,{title:"Footer",prefix:"page.footer"}))};var r=n(2),o=a(n(53)),i=a(n(54));function a(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),o=n(0),i=s(n(10)),a=s(n(1));function s(e){return e&&e.__esModule?e:{default:e}}const l=["page","page.header","page.footer"].reduce((e,t)=>e.concat([`config.style.${t}.font`,`config.style.${t}.color`,`config.style.${t}.link.font`,`config.style.${t}.link.color`,`config.style.${t}.link.lineColor`,`config.style.${t}.link.active.font`,`config.style.${t}.link.active.color`,`config.style.${t}.link.active.lineColor`]),[]);t.default=class extends r.Component{constructor(e){super(e),this.state=l.reduce((e,t)=>(e[t]=(0,o.get)(t),e),{}),this.onStateChangeBound=(({name:e,value:t})=>this.onStateChange(e,t))}onStateChange(e,t){this.state[e]&&this.setState({[e]:t})}render(){const e=Object.keys(this.state).reduce((e,t)=>{const n=(0,o.get)(t);return n?e+`${t}: ${JSON.stringify(n)}\n`:e},"").trim();return(0,r.h)(i.default,{title:"Config"},(0,r.h)("p",null,(0,r.h)("label",{for:"cb-backstage-style-config"},"Enter this code into your first passage’s vars section to permanently use this style:")),(0,r.h)("p",null,(0,r.h)("textarea",{readonly:!0,id:"cb-backstage-style-config",onClick:e=>e.target.select()},e)))}componentWillMount(){a.default.on("state-change",this.onStateChangeBound)}componentWillUnmount(){a.default.removeListener("state-change",this.onStateChangeBound)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({title:e,prefix:t}){return(0,r.h)(o.default,{title:e,initiallyOpen:!1},(0,r.h)(i.default,{label:"Font",binding:`config.style.${t}.font`}),(0,r.h)(i.default,{label:"Color",binding:`config.style.${t}.color`}),(0,r.h)(i.default,{label:"Link Font",binding:`config.style.${t}.link.font`}),(0,r.h)(i.default,{label:"Link Color",binding:`config.style.${t}.link.color`}),(0,r.h)(i.default,{label:"Link Line Color",binding:`config.style.${t}.link.lineColor`}),(0,r.h)(i.default,{label:"Active Link Font",binding:`config.style.${t}.link.active.font`}),(0,r.h)(i.default,{label:"Active Link Color",binding:`config.style.${t}.link.active.color`}),(0,r.h)(i.default,{label:"Active Link Line Color",binding:`config.style.${t}.link.active.lineColor`}))};var r=n(2),o=a(n(10)),i=a(n(55));function a(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({label:e,binding:t}){return(0,r.h)("p",{class:"input-group"},(0,r.h)("label",{for:`cb-backstage-${t}`},e),(0,r.h)("input",{type:"text",id:`cb-backstage-${t}`,value:(0,o.get)(t),onChange:e=>(0,o.set)(t,e.target.value)}))};var r=n(2),o=n(0)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);n(57);t.default=class extends r.Component{constructor(e){super(e),this.state={selected:0}}select(e){this.setState({selected:e})}render(){const e=this.props.children.map((e,t)=>(0,r.h)("li",null,(0,r.h)("button",{onClick:()=>this.select(t),class:t===this.state.selected&&"active"},e.attributes.label)));return(0,r.h)("div",null,(0,r.h)("ul",{class:"tabs"},e),(0,r.h)("div",{class:"tab-content"},this.props.children[this.state.selected]))}}},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){window.engine={extend:function(e,t){var n=a.get("engine.version"),r=d(e),o=d(n);o[0]<r[0]?f("The current engine version ("+n+") has a lower major version than requested ("+e+"); skipping"):(o[0]>r[0]?f("The current engine version ("+n+") has a higher major version than requested ("+e+"); running code but you may encounter problems"):(o[1]<r[1]&&f("The current engine version ("+n+") has a lower minor version than requested ("+e+"); running code but you may encounter problems"),o[1]===r[1]&&o[2]<r[2]&&f("The current engine version ("+n+") has a lower patch version than requested ("+e+"); running code but you may encounter problems")),t())},event:r.default,log:o.log,render:l.render,state:a,story:s,warn:o.warn}};var r=c(n(1)),o=n(4),i=c(o),a=u(n(0)),s=u(n(6)),l=n(11);function u(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}var f=(0,i.default)("extensibility").warn;function d(e){return e.split(".").map(window.parseInt)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(61)),o=m(n(62)),i=m(n(63)),a=m(n(73)),s=m(n(74)),l=m(n(75)),u=m(n(76)),c=m(n(77)),f=m(n(78)),d=m(n(79)),p=m(n(80)),h=m(n(81)),g=m(n(82)),v=m(n(83));function m(e){return e&&e.__esModule?e:{default:e}}t.default=[r.default,o.default,i.default,a.default,s.default,l.default,u.default,c.default,f.default,d.default,p.default,h.default,g.default,v.default]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={match:/^(no )?ambient\s+sound/i,render:function(e,t){var n=(0,r.get)("sound.ambient");if(n&&Object.keys(n).forEach(function(t){t!==e&&n[t].playing&&(0,r.set)("sound.ambient."+t+".playing",!1)}),e){var o=(0,r.get)("sound.ambient."+e+".description")||"";return t.volume&&(0,r.set)("sound.ambient."+e+".volume",t.volume),(0,r.set)("sound.ambient."+e+".playing",!0),"<audio>"+o+"</audio>"}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(16),o=n(0);t.default={match:/^back\s+link/i,render:function(e,t){var n=(0,o.get)("trail");return(0,r.renderLink)(n.length>1?n[n.length-2]:n[0],t.label||"Back")}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(12),o=n(0),i=s(n(1)),a=s(n(5));function s(e){return e&&e.__esModule?e:{default:e}}t.default={match:/^cycling\s+link(\s+for)?/i,render:function(e,t){var n=void 0;return e?void 0===(n=(0,o.get)(e))&&((0,o.set)(e,t.choices[0]),n=t.choices[0]):n=t.choices[0],(0,a.default)("a",{href:"javascript:void(0)","data-cb-cycle-set":e||void 0,"data-cb-cycle-choices":JSON.stringify(t.choices)},[n])}},i.default.on("dom-click",function(e){if(e.dataset.cbCycleChoices){var t=JSON.parse(e.dataset.cbCycleChoices),n=t.indexOf(e.textContent)+1;n===t.length&&(n=0),(0,r.changeBody)(function(){return e.textContent=t[n]}),e.dataset.cbCycleSet&&(0,o.set)(e.dataset.cbCycleSet,t[n])}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.none=function(e,t){return new Promise(function(n){e.innerHTML="<div>"+t+"</div>",n()})},t.fadeInOut=function(e,t,n){return new Promise(function(r){var o=e.style.pointerEvents,a=(0,i.default)(n,"s")/2;s(e),e.style.pointerEvents="none";var u=document.createElement("div");if(u.innerHTML=t,u.style.visibility="hidden",u.style.animationDuration=a+"s",u.addEventListener("animationend",function t(){u.removeEventListener("animationend",t),u.className="",u.style.animationDuration=a+"s",e.style.pointerEvents=o,r()}),""!==e.innerHTML.trim()){var c=l(e);c.style.position="absolute",c.style.top="0",c.style.left="0",c.className="fade-out",c.style.animationDuration=a+"s",c.addEventListener("animationend",function e(){c.removeEventListener("animationend",e),c.parentNode.removeChild(c),u.style.visibility="visible",u.className="fade-in"}),e.innerHTML="",e.appendChild(u),e.appendChild(c)}else u.className="fade-in",u.animationDuration=2*a,u.style.visibility="visible",u.className="fade-in",e.appendChild(u)})},t.crossfade=function(e,t,n){return new Promise(function(r){var o=e.style.pointerEvents,a=(0,i.default)(n,"s");s(e),e.style.pointerEvents="none";var u=document.createElement("div");if(u.innerHTML=t,u.className="fade-in",u.style.animationDuration=a+"s",u.addEventListener("animationend",function t(){u.removeEventListener("animationend",t),u.style.animationDuration=null,u.className="",e.style.pointerEvents=o,r()}),""!==e.innerHTML.trim()){var c=l(e);c.style.position="absolute",c.style.top="0",c.style.left="0",c.className="fade-out",c.style.animationDuration=a+"s",c.addEventListener("animationend",function e(){c.removeEventListener("animationend",e),c.style.opacity=.5,c.parentNode.removeChild(c)}),e.innerHTML="",e.appendChild(u),e.appendChild(c)}else e.innerHTML="",e.appendChild(u)})};var r,o=n(13),i=(r=o)&&r.__esModule?r:{default:r},a=n(7);function s(e){"static"===window.getComputedStyle(e).position&&(e.style.position="relative")}function l(e){var t=document.createElement(e.nodeName.toLowerCase());return t.innerHTML=e.innerHTML,t.style.width=e.clientWidth+"px",t.style.height=e.clientHeight+"px",t.setAttribute("aria-hidden",!0),t.style.pointerEvents="none",(0,a.selectAll)(t,"audio").forEach(function(e){return e.parentNode.removeChild(e)}),t}n(65)},function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.init=function(){window.addEventListener("error",s),window.addEventListener("unhandledrejection",function(e){return s(e.reason)})};var r,o=n(67),i=(r=o)&&r.__esModule?r:{default:r},a=n(0);function s(e){try{var t="";t=(t=e.error&&e.error.stack?e.message+"\n\nStack trace:\n"+e.error.stack:e.message+"\n\n[No stack trace available]").replace("\nPlease report this to https://github.com/chjj/marked.","");var n=document.createElement("div"),r=document.querySelector("#page article"),o=(0,a.get)("trail");n.className="error",n.innerHTML="\n\t\t\t<p>\n\t\t\tAn unexpected error has occurred.\n\t\t\t</p>\n\t\t\t<pre>"+((0,a.get)("config.testing")?t:"")+'</pre>\n\t\t\t<ul>\n\t\t\t\t<li>\n\t\t\t\t\t<a href="javascript:void(0)" '+(o.length>1?"data-cb-back":"data-cb-refresh")+'>Go back</a> to the previous passage.\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a href="javascript:void(0)" data-cb-hard-restart>Hard restart</a>, clearing all progress and beginning from the start.\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t',n.addEventListener("click",function(e){if((0,i.default)(e.target,"[data-cb-back]",!0)){var t=(0,a.get)("trail");Array.isArray(t)?(0,a.set)("trail",t.slice(0,t.length-1)):window.alert("Sorry, going back was not successful. Please try hard restarting.")}else{if((0,i.default)(e.target,"[data-cb-refresh]",!0))(0,a.set)("trail",[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}((0,a.get)("trail"))));else(0,i.default)(e.target,"[data-cb-hard-restart]",!0)&&((0,a.purgeFromStorage)(!0),window.location.reload())}}),r.innerHTML="",r.appendChild(n)}catch(e){console.error(e)}}},function(e,t,n){var r=n(68);e.exports=function(e,t,n){for(var o=n?e:e.parentNode;o&&o!==document;){if(r(o,t))return o;o=o.parentNode}}},function(e,t){var n=Element.prototype,r=n.matchesSelector||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector;e.exports=function(e,t){if(r)return r.call(e,t);for(var n=e.parentNode.querySelectorAll(t),o=0;o<n.length;++o)if(n[o]==e)return!0;return!1}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.init=function(){var e=window.console.warn,t=document.querySelector("#page .warnings");console.warn=function(){for(var n=arguments.length,i=Array(n),a=0;a<n;a++)i[a]=arguments[a];if((0,o.get)("config.testing"))try{t.removeAttribute("hidden"),i.forEach(function(e){var n=document.createElement("li");n.className="warning",n.innerHTML="Warning: "+(0,r.default)(e),t.appendChild(n)})}catch(e){}e.apply(window.console,i)},i.default.on("state-change",function(e){var n=e.name;"trail"===n&&(t.setAttribute("hidden",""),t.innerHTML="")})};var r=a(n(18)),o=n(0),i=a(n(1));function a(e){return e&&e.__esModule?e:{default:e}}n(70)},function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=Date.now(),r=void 0,o=(0,a.selectAll)(e,"[data-cb-skippable]").map(function(e){return{el:e,delay:1e3*(0,i.default)(window.getComputedStyle(e).animationDelay)}}).sort(function(e,t){return e.delay-t.delay});if(0===o.length)return;function s(){var e=Date.now()-n,t=Object.assign({},o.find(function(t){return t.delay>e}));t?(o.forEach(function(e){e.delay<=t.delay?(e.delay=0,e.el.classList.add("skip-animation")):(e.delay-=t.delay,e.el.style.animationDelay=e.delay+"ms")}),n=Date.now(),window.clearTimeout(r),l()):u()}function l(){r&&window.clearTimeout(r),r=window.setTimeout(u,o[o.length-1].delay)}function u(){t.classList.remove("visible"),document.body.removeEventListener("click",s),document.body.removeEventListener("keyup",s)}t.classList.add("visible"),l(),window.setTimeout(function(){document.body.addEventListener("click",s),document.body.addEventListener("keyup",s)},50)};var r,o=n(13),i=(r=o)&&r.__esModule?r:{default:r},a=n(7)},function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(5),i=(r=o)&&r.__esModule?r:{default:r};t.default={match:/^embed\s+flickr(\s+image)?/i,render:function(e,t){return(0,i.default)("img",Object.assign({},t,{src:/img src="(.+?)"/.exec(e)[1]}))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(5),i=(r=o)&&r.__esModule?r:{default:r};t.default={match:/^embed\s+image?/i,render:function(e,t){return(0,i.default)("img",Object.assign({},t,{src:e}))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6),o=n(11);t.default={match:/^embed\s+passage(\s+named)?/i,render:function(e){return(0,o.render)((0,r.passageNamed)(e).source)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(5),i=(r=o)&&r.__esModule?r:{default:r};t.default={match:/^embed\s+unsplash(\s+image)?/i,render:function(e,t){return(0,i.default)("img",Object.assign({},t,{src:"https://source.unsplash.com/"+e.replace(/.*\//,"")+"/"+t.width+"x"+t.height}))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(5),i=(r=o)&&r.__esModule?r:{default:r};t.default={match:/^embed\s+youtube(\s+video)?/i,render:function(e,t){var n="https://www.youtube-nocookie.com/embed/"+e.replace(/.*\?v=/,"")+"?modestbranding=1&rel=0&controls="+(t.controls?1:0)+"&";return t.autoplay&&(n+="autoplay=1&"),t.loop&&(n+="loop=1&"),(0,i.default)("div",{style:"position: relative; height: 0; padding-bottom: 56.25%; margin-bottom: 1em"},[(0,o.domify)("iframe",{src:n,frameBorder:0,style:"position: absolute; top: 0; left: 0; width: 100%; height: 100%"})])}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(16);t.default={match:/^link\s+to/i,render:function(e,t){return(0,r.renderLink)(e,t.label)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(1)),o=n(0),i=n(5),a=s(i);function s(e){return e&&e.__esModule?e:{default:e}}t.default={match:/^dropdown menu(\s+for)?/i,render:function(e,t){var n=void 0;return e&&void 0===(n=(0,o.get)(e))&&((0,o.set)(e,t.choices[0]),n=t.choices[0]),(0,a.default)("select",{"data-cb-menu-set":e||void 0},t.choices.map(function(t){var r={value:t};return e&&n===t&&(r.selected=""),(0,i.domify)("option",r,[t])}))}},r.default.on("dom-change",function(e){e.dataset.cbMenuSet&&(0,o.set)(e.dataset.cbMenuSet,e.querySelectorAll("option")[e.selectedIndex].value)})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(5),i=(r=o)&&r.__esModule?r:{default:r};t.default={match:/^restart\s+link/i,render:function(e,t){return(0,i.default)("a",{href:"javascript:void(0)","data-cb-restart":!0},[t.label||"Restart"])}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(12),o=l(n(1)),i=l(n(5)),a=n(6),s=n(11);function l(e){return e&&e.__esModule?e:{default:e}}t.default={match:/^reveal\s+link/i,render:function(e,t){return t.text?(0,i.default)("a",{href:"javascript:void(0)","data-cb-reveal-text":t.text},[e]):t.passage?(0,i.default)("a",{href:"javascript:void(0)","data-cb-reveal-passage":t.passage},[e]):void 0}},o.default.on("dom-click",function(e){var t=e.dataset.cbRevealText;if(e.dataset.cbRevealPassage&&(t=(0,a.passageNamed)(e.dataset.cbRevealPassage).source),t){var n=document.createElement("div");n.innerHTML=(0,s.render)(t).trim(),(0,r.changeBody)(function(){var t=n.children.length;if(t>0){var r=document.createElement("span");if(r.innerHTML=n.firstChild.innerHTML,e.parentNode.insertBefore(r,e),n.removeChild(n.firstChild),t>1){for(var o=n.lastChild;n.lastChild;)e.parentNode.parentNode.insertBefore(n.lastChild,e.parentNode.nextSibling);for(;e.nextSibling;)o.insertBefore(e.nextSibling,null)}}e.parentNode.removeChild(e)})}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={match:/^sound\s+effect/i,render:function(e,t){var n=(0,r.get)("sound.effect."+e+".description")||"";return t.volume&&(0,r.set)("sound.effect."+e+".volume",t.volume),(0,r.set)("sound.effect."+e+".playing",!0),"<audio>"+n+"</audio>"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(1)),o=n(0),i=a(n(5));function a(e){return e&&e.__esModule?e:{default:e}}t.default={match:/^text\s+input(\s+for)?/i,render:function(e,t){return(0,i.default)("input",{type:"text",value:e?(0,o.get)(e):"","data-cb-text-field-set":e||void 0,required:!1!==t.required?"":void 0})}},r.default.on("dom-change",function(e){e.dataset.cbTextFieldSet&&(0,o.set)(e.dataset.cbTextFieldSet,e.value)})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(85)),o=f(n(86)),i=f(n(87)),a=f(n(88)),s=f(n(89)),l=f(n(90)),u=f(n(91)),c=f(n(93));function f(e){return e&&e.__esModule?e:{default:e}}t.default=[r.default,o.default,i.default,a.default,s.default,l.default,u.default,c.default]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(13)),o=i(n(21));function i(e){return e&&e.__esModule?e:{default:e}}t.default={match:/^after\s/i,process:function(e,t){var n=t.invocation,i=(0,r.default)(n.replace(/^after\s/i,""),"ms");e.text=(0,o.default)(e.text,{"data-cb-skippable":"",class:"fade-in",style:"animation-delay: "+i+"ms"})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(21),i=(r=o)&&r.__esModule?r:{default:r};t.default={match:/^align\s+(left|right|center)/i,process:function(e,t){var n=t.invocation.replace(/^align\s+/i,"");e.text=(0,i.default)(e.text,{style:"display: block; text-align: "+n})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={match:/^append$/i,process:function(e){e.startsNewParagraph=!1}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={match:/^if(always|never)?\s|else$|unless\s/i,processRaw:function(e,t){var n=t.invocation,r=t.state,o=n.replace(/\s.*/,"").toLowerCase(),i=void 0;switch("else"!==o&&(i=new Function("return "+n.replace(/.*?\s/,""))),o){case"if":r.conditionEval=i.apply(window);break;case"ifalways":r.conditionEval=!0;break;case"ifnever":r.conditionEval=!1;break;case"unless":r.conditionEval=!i.apply(window);break;case"else":if(void 0===r.conditionEval)throw new Error("There was no matching if modifier for an else modifier.");r.conditionEval=!r.conditionEval}r.conditionEval||(e.text="")}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={match:/^continued?|cont('d)?$/i,process:function(){}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={match:/^css$/i,process:function(e){e.text="<style>"+e.text+"</style>"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(92),i=(r=o)&&r.__esModule?r:{default:r},a=n(0);t.default={match:/^javascript$/i,process:function(e){try{var t=new Function("\n\t\t\t\t\t\tfunction write() { write.__out += write.__join.call(arguments, ''); }\n\t\t\t\t\t\twrite.__out = '';\n\t\t\t\t\t\twrite.__join = Array.prototype.join;\n\t\t\t\t\t\t"+(0,i.default)(e.text)+";\n\t\t\t\t\t\treturn write.__out;\n\t\t\t\t\t");e.text=t.apply(window)}catch(t){if(!(0,a.get)("config.testing"))throw t;var n="unknown error";n=t.error&&t.error.stack?t.error.stack:t.message+"\n[No stack trace available]",e.text='<div class="error">An error occured evaluating:<pre>'+e.text+"</pre><p><pre>"+n+"</pre></p></div>"}}}},function(e,t,n){(function(t){var n=1/0,r="[object Symbol]",o=/&(?:amp|lt|gt|quot|#39|#96);/g,i=RegExp(o.source),a="object"==typeof t&&t&&t.Object===Object&&t,s="object"==typeof self&&self&&self.Object===Object&&self,l=a||s||Function("return this")();var u,c=(u={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},function(e){return null==u?void 0:u[e]}),f=Object.prototype.toString,d=l.Symbol,p=d?d.prototype:void 0,h=p?p.toString:void 0;function g(e){if("string"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==r}(e))return h?h.call(e):"";var t=e+"";return"0"==t&&1/e==-n?"-0":t}e.exports=function(e){var t;return(e=null==(t=e)?"":g(t))&&i.test(e)?e.replace(o,c):e}}).call(this,n(19))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={match:/^(note(\s+to\s+self)?|n?b?|todo|fixme)$/i,process:function(e){e.text=""}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u,n={vars:[],blocks:[]},i=e.split(t.varsSep,2),a=void 0,c=void 0;if(2===i.length){s("Detected vars section");var f=r(i,2);a=f[0],c=f[1],(0,o.default)(a).forEach(function(e){if(""!==e.trim()){var t=e.indexOf(":");if(-1!==t){var r=e.substr(0,t).trim(),o=e.substr(t+1).trim(),i={name:r,value:new Function("return ("+o+")")},a=r.match(/\(.+\)/);a?(i.condition=new Function("return ("+a[0]+")"),i.name=(i.name.substr(0,a.index)+i.name.substr(a.index+a[0].length)).trim(),s('Setting variable "'+i.name+'" to "'+o+'" with condition ('+a[0]+")")):s('Setting variable "'+r+'" to "'+o+'" without condition'),n.vars.push(i)}else l('The line "'+e+'" in the vars section is missing a colon. It was ignored.')}})}else s("No vars section detected"),c=i[0];var d=function(e,t){var r=t.trim();""!==r&&(s("Creating '"+e+"' block with content: \""+r+'"'),n.blocks.push({type:e,content:r}))},p=new RegExp(t.modifierPattern),h=0,g=p.exec(c);for(;g;){d("text",c.substring(h,g.index));for(var v=g[1],m="",b=0;b<v.length;b++)switch(v[b]){case'"':for(m+='"',b+=1;b<v.length&&(m+=v[b],'"'!==v[b]||"\\"===v[b-1]);b++);break;case";":d("modifier",m),m="";break;default:m+=v[b]}d("modifier",m),h=p.lastIndex,g=p.exec(c)}return d("text",c.substring(h)),n};var o=i(n(95));function i(e){return e&&e.__esModule?e:{default:e}}var a=(0,i(n(4)).default)("parse"),s=a.log,l=a.warn,u={varsSep:/^--$/m,modifierPattern:/^\[([^[].+[^\]])\]$/gm}},function(e,t,n){"use strict";e.exports=function(e,t){if("string"!=typeof e)throw new TypeError("Expected a string in the first argument, got "+typeof e);if(!(t&&t.preserveNewlines))return e.split(/\r?\n/);for(var n=e.split(/(\r?\n)/),r=[],o=0;o<n.length;o+=2)r.push(n[o]+(n[o+1]||""));return r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.markedOptions=void 0,t.default=function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e.vars)throw new Error("The renderer was given an object with no vars property.");if(!e.blocks)throw new Error("The renderer was given an object with no blocks property.");var i="";o||(c("Setting vars ("+e.vars.length+")"),e.vars.forEach(function(e){if(e.condition){var t=e.condition();t?(c('Setting var "'+name+'" (condition is currently true)'),(0,l.set)(e.name,e.value())):c('Not setting var "'+name+'" (condition is currently false)')}else c('Setting var "'+name+'"'),(0,l.set)(e.name,e.value())}));var u=[],d={};return e.blocks.forEach(function(e){switch(e.type){case"text":var r={text:e.content,startsNewParagraph:!0},o=u.filter(function(e){return!!e.mod.processRaw});c("Running "+o.length+" modifiers on raw source block"),o.forEach(function(e){e.mod.processRaw(r,{state:d[e.mod],invocation:e.invocation})}),r.text=(0,a.default)((0,s.default)(r.text),t);var l=u.filter(function(e){return!!e.mod.process});c("Running "+l.length+" modifiers on source block"),l.forEach(function(e){return e.mod.process(r,{state:d[e.mod],invocation:e.invocation})}),c("Output after modifiers: "+JSON.stringify(r)),""!==r.text.trim()&&(""!==i&&(i+=r.startsNewParagraph?"\n\n":" "),i+=r.text),u=[];break;case"modifier":var f=n.filter(function(t){return t.match.test(e.content)});if(1===f.length){var p=f[0];c('Activated "'+p.name+'" modifier matching ['+e.content+"]"),d[p]=d[p]||{},u.push({mod:p,invocation:e.content})}else 0===f.length?i+="\n\n["+e.content+"]\n\n":(console.warn('More than one modifier matched "['+e.content+']".'),i+="\n\n["+e.content+"]\n\n");break;default:throw new Error("Don't know how to render a block with type \""+e.type+'".')}}),i=i.replace(/^((>|-|\*).*$)\n+\2/gm,"$1\n$2"),r.default.setOptions(f),c("Final Markdown:\n"+i),(0,r.default)(i)};var r=u(n(22)),o=u(n(4)),i=u(n(97)),a=u(n(98)),s=u(n(16)),l=n(0);function u(e){return e&&e.__esModule?e:{default:e}}var c=(0,o.default)("render").log,f=t.markedOptions={renderer:i.default,smartypants:!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(22);var i=new((r=o)&&r.__esModule?r:{default:r}).default.Renderer;Object.assign(i,{blockquote:function(e){return'<div class="fork">'+e+"</div>"},del:function(e){return'<span class="small-caps">'+e+"</span>"}}),t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n="",r=0,i=e.indexOf("{");if(-1===i)return e;for(var a=!1,s=void 0,l=i+1;l<e.length;l++)switch(e[l]){case"{":i=l,a=!1;break;case'"':case"'":l>0&&"\\"!==e[l-1]&&(a?a&&s===e[l]&&(a=!1):(a=!0,s=e[l]));break;case"}":if(!a){var u=e.substring(i,l+1),c="";try{c=o(u,t)}catch(e){console.warn('An error occurred while rendering "'+u+'": '+e.message),c=u}void 0===c&&(c=""),n+=e.substring(r,i)+c,r=l+1,-1===(i=e.indexOf("{",r))&&(l=e.index)}}return n+e.substring(r)};var r=n(0);function o(e,t){var n=e.substr(1,e.length-2).trim();if(/\s/.test(n)){var o=n.match(/^[^:,]+/)[0],i=t.find(function(e){return e.match.test(o)});if(i){var a=n.replace(o,"");if(":"===a[0]){var s=new Function('return {"'+o+'" '+a+"}")(),l=s[o];return delete s[o],i.render(l,s,n)}if(","===a[0]){var u=new Function("return {"+a.substr(1)+"}")();return i.render(null,u,n)}if(""===a)return i.render(null,{},n)}}else{var c=/(.+)\[(.+)\]$/.exec(n),f=void 0;if(void 0!==(f=c?(0,r.get)(c[1])[c[2]]:(0,r.get)(n)))return f}return e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r=e.volume,o=t-r,i=void 0,a=0;return new Promise(function(t){return window.requestAnimationFrame(function(s){i=s,window.requestAnimationFrame(function s(l){a+=l-i;e.volume=function(e,t,n,r){if((e/=r/2)<1)return n/2*e*e+t;return-n/2*(--e*(e-2)-1)+t}(a,r,o,n);a<n?(i=l,window.requestAnimationFrame(s)):t()})})})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){(0,r.default)(u.setLookup),(0,o.default)(u.setLookup),(0,i.default)(u.setLookup),(0,a.default)(u.setLookup),(0,s.default)(u.setLookup),(0,l.default)(u.setLookup)};var r=c(n(101)),o=c(n(102)),i=c(n(104)),a=c(n(105)),s=c(n(24)),l=c(n(115)),u=n(0);function c(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e("browser.height",function(){return window.innerHeight}),e("browser.online",function(){return window.navigator.onLine}),e("browser.width",function(){return window.innerWidth})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e("engine.version",function(){return i.default.version})};var r,o=n(103),i=(r=o)&&r.__esModule?r:{default:r}},function(e){e.exports={name:"Chapbook",author:"Chris Klimas <chris@twinery.org>",description:'A Twine story format emphasizing ease of authoring, multimedia, and playability on many different types of devices. Visit the <a href="https://klembot.github.io/chapbook/guide/">guide</a> for more information.',version:"1.2.1",main:"index.js",license:"MIT",devDependencies:{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","babel-core":"^6.26.0","babel-loader":"^7.1.4","babel-preset-env":"^1.6.1","babel-preset-preact":"^1.1.0","child-process-promise":"^2.2.1",cpy:"^7.2.0","cpy-cli":"^2.0.0","cross-env":"^5.2.0","css-loader":"^0.28.11",eslint:"^4.14.0","eslint-config-prettier":"^6.11.0","gitbook-cli":"^2.3.2","html-webpack-plugin":"^3.2.0",husky:"^4.2.5",jest:"^24.7.1","jest-localstorage-mock":"^2.2.0",jsdoc:"^3.6.2","jstransformer-marked":"^1.0.3","lodash.escape":"^4.0.1","mini-css-extract-plugin":"^0.4.0","mock-local-storage":"^1.0.5","node-sass":"^4.12.0","npm-run-all":"^4.1.3",prettier:"^2.0.5",pug:"^2.0.3",rimraf:"^2.6.3","rollup-plugin-uglify":"^3.0.0","sass-loader":"^7.0.3","title-case":"^2.1.1","twine-utils":"^1.2.6","url-loader":"^1.1.2",webpack:"^4.28.2","webpack-cli":"^3.1.2","webpack-dev-server":"^3.1.12",yargs:"^11.0.0"},dependencies:{closest:"^0.0.1","get-value":"^3.0.1","lodash.unescape":"^4.0.1",marked:"^1.2.7",nanobus:"^4.3.3","open-color":"^1.6.3",preact:"^8.2.9","pure-color":"^1.3.0",seedrandom:"^2.4.3","set-value":"^3.0.1","split-lines":"^1.1.0",timestring:"^5.0.0","unset-value":"^1.0.0"},scripts:{start:"webpack-dev-server",build:"npm-run-all --parallel build:main build:micro --serial build:format clean","build:format":"node scripts/build-format.js","build:main":"cross-env NODE_ENV=production webpack","build:micro":"cross-env NODE_ENV=production CHAPBOOK_MICRO=y webpack",clean:"rimraf dist/full; rimraf dist/micro",examples:"node scripts/build-examples.js",guide:"gitbook serve guide","guide:init":"cd guide && gitbook install && cd ..","guide:release":"cd guide && gitbook build",lint:"eslint src/",prettier:'prettier --write "src/**/*.{js,scss}"',release:"run-s -l build examples guide:release website",test:"jest","test:watch":"jest --watch","test:coverage":"jest --coverage",website:"node scripts/build-website.js"},config:{commitizen:{path:"cz-conventional-changelog"}},husky:{hooks:{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},jest:{setupFiles:["jest-localstorage-mock"]}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e("now.second",function(){return(new Date).getSeconds()}),e("now.minute",function(){return(new Date).getMinutes()}),e("now.hour",function(){return(new Date).getHours()}),e("now.day",function(){return(new Date).getDate()}),e("now.weekday",function(){return(new Date).getDay()+1}),e("now.weekdayName",function(){return(new Date).toLocaleString(navigator.language,{weekday:"long"})}),e("now.month",function(){return(new Date).getMonth()+1}),e("now.monthName",function(){return(new Date).toLocaleString(navigator.language,{month:"long"})}),e("now.year",function(){return(new Date).getFullYear()}),e("now.timestamp",function(){return(new Date).toLocaleString(navigator.language,{hour:"numeric",minute:"numeric",second:"numeric"})})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e("passage.name",function(){var e=(0,r.get)("trail");if(e)return e[e.length-1]}),e("passage.visits",function(){var e=(0,r.get)("trail"),t=(0,r.get)("passage.name");if(e)return e.reduce(function(e,n){return n===t?e+1:e},0)})};var r=n(0)},function(e,t,n){var r=n(107),o=n(108),i=n(109),a=n(110),s=n(111),l=n(112),u=n(113);u.alea=r,u.xor128=o,u.xorwow=i,u.xorshift7=a,u.xor4096=s,u.tychei=l,e.exports=u},function(e,t,n){(function(e){var r;!function(e,o,i){function a(e){var t,n=this,r=(t=4022871197,function(e){e=e.toString();for(var n=0;n<e.length;n++){var r=.02519603282416938*(t+=e.charCodeAt(n));r-=t=r>>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}function s(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function l(e,t){var n=new a(e),r=t&&t.state,o=n.next;return o.int32=function(){return 4294967296*n.next()|0},o.double=function(){return o()+1.1102230246251565e-16*(2097152*o()|0)},o.quick=o,r&&("object"==typeof r&&s(r,n),o.state=function(){return s(n,{})}),o}o&&o.exports?o.exports=l:n(3)&&n(9)?void 0===(r=function(){return l}.call(t,n,t,o))||(o.exports=r):this.alea=l}(0,e,n(3))}).call(this,n(8)(e))},function(e,t,n){(function(e){var r;!function(e,o,i){function a(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=0|n.charCodeAt(r),t.next()}function s(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function l(e,t){var n=new a(e),r=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=n.next,o.quick=o,r&&("object"==typeof r&&s(r,n),o.state=function(){return s(n,{})}),o}o&&o.exports?o.exports=l:n(3)&&n(9)?void 0===(r=function(){return l}.call(t,n,t,o))||(o.exports=r):this.xor128=l}(0,e,n(3))}).call(this,n(8)(e))},function(e,t,n){(function(e){var r;!function(e,o,i){function a(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=0|n.charCodeAt(r),r==n.length&&(t.d=t.x<<10^t.x>>>4),t.next()}function s(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function l(e,t){var n=new a(e),r=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=n.next,o.quick=o,r&&("object"==typeof r&&s(r,n),o.state=function(){return s(n,{})}),o}o&&o.exports?o.exports=l:n(3)&&n(9)?void 0===(r=function(){return l}.call(t,n,t,o))||(o.exports=r):this.xorwow=l}(0,e,n(3))}).call(this,n(8)(e))},function(e,t,n){(function(e){var r;!function(e,o,i){function a(e){var t=this;t.next=function(){var e,n,r=t.x,o=t.i;return e=r[o],n=(e^=e>>>7)^e<<24,n^=(e=r[o+1&7])^e>>>10,n^=(e=r[o+3&7])^e>>>3,n^=(e=r[o+4&7])^e<<7,e=r[o+7&7],n^=(e^=e<<13)^e<<9,r[o]=n,t.i=o+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n<t.length;++n)r[7&n]=r[7&n]<<15^t.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],e.x=r,e.i=0,n=256;n>0;--n)e.next()}(t,e)}function s(e,t){return t.x=e.x.slice(),t.i=e.i,t}function l(e,t){null==e&&(e=+new Date);var n=new a(e),r=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=n.next,o.quick=o,r&&(r.x&&s(r,n),o.state=function(){return s(n,{})}),o}o&&o.exports?o.exports=l:n(3)&&n(9)?void 0===(r=function(){return l}.call(t,n,t,o))||(o.exports=r):this.xorshift7=l}(0,e,n(3))}).call(this,n(8)(e))},function(e,t,n){(function(e){var r;!function(e,o,i){function a(e){var t=this;t.next=function(){var e,n,r=t.w,o=t.X,i=t.i;return t.w=r=r+1640531527|0,n=o[i+34&127],e=o[i=i+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=o[i]=n^e,t.i=i,n+(r^r>>>16)|0},function(e,t){var n,r,o,i,a,s=[],l=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,l=Math.max(l,t.length)),o=0,i=-32;i<l;++i)t&&(r^=t.charCodeAt((i+32)%t.length)),0===i&&(a=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,i>=0&&(a=a+1640531527|0,o=0==(n=s[127&i]^=r+a)?o+1:0);for(o>=128&&(s[127&(t&&t.length||0)]=-1),o=127,i=512;i>0;--i)r=s[o+34&127],n=s[o=o+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[o]=r^n;e.w=a,e.X=s,e.i=o}(t,e)}function s(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function l(e,t){null==e&&(e=+new Date);var n=new a(e),r=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=n.next,o.quick=o,r&&(r.X&&s(r,n),o.state=function(){return s(n,{})}),o}o&&o.exports?o.exports=l:n(3)&&n(9)?void 0===(r=function(){return l}.call(t,n,t,o))||(o.exports=r):this.xor4096=l}(0,e,n(3))}).call(this,n(8)(e))},function(e,t,n){(function(e){var r;!function(e,o,i){function a(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,o=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^o,o=o-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^o,t.a=o-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r<n.length+20;r++)t.b^=0|n.charCodeAt(r),t.next()}function s(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function l(e,t){var n=new a(e),r=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=n.next,o.quick=o,r&&("object"==typeof r&&s(r,n),o.state=function(){return s(n,{})}),o}o&&o.exports?o.exports=l:n(3)&&n(9)?void 0===(r=function(){return l}.call(t,n,t,o))||(o.exports=r):this.tychei=l}(0,e,n(3))}).call(this,n(8)(e))},function(e,t,n){var r;!function(o,i){var a,s=(0,eval)("this"),l=256,u=6,c="random",f=i.pow(l,u),d=i.pow(2,52),p=2*d,h=l-1;function g(e,t,n){var r=[],h=b(function e(t,n){var r,o=[],i=typeof t;if(n&&"object"==i)for(r in t)try{o.push(e(t[r],n-1))}catch(e){}return o.length?o:"string"==i?t:t+"\0"}((t=1==t?{entropy:!0}:t||{}).entropy?[e,y(o)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(l):(e=new Uint8Array(l),(s.crypto||s.msCrypto).getRandomValues(e)),y(e)}catch(e){var t=s.navigator,n=t&&t.plugins;return[+new Date,s,n,s.screen,y(o)]}}():e,3),r),g=new v(r),k=function(){for(var e=g.g(u),t=f,n=0;e<d;)e=(e+n)*l,t*=l,n=g.g(1);for(;e>=p;)e/=2,t/=2,n>>>=1;return(e+n)/t};return k.int32=function(){return 0|g.g(4)},k.quick=function(){return g.g(4)/4294967296},k.double=k,b(y(g.S),o),(t.pass||n||function(e,t,n,r){return r&&(r.S&&m(r,g),e.state=function(){return m(g,{})}),n?(i[c]=e,t):e})(k,h,"global"in t?t.global:this==i,t.state)}function v(e){var t,n=e.length,r=this,o=0,i=r.i=r.j=0,a=r.S=[];for(n||(e=[n++]);o<l;)a[o]=o++;for(o=0;o<l;o++)a[o]=a[i=h&i+e[o%n]+(t=a[o])],a[i]=t;(r.g=function(e){for(var t,n=0,o=r.i,i=r.j,a=r.S;e--;)t=a[o=h&o+1],n=n*l+a[h&(a[o]=a[i=h&i+t])+(a[i]=t)];return r.i=o,r.j=i,n})(l)}function m(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function b(e,t){for(var n,r=e+"",o=0;o<r.length;)t[h&o]=h&(n^=19*t[h&o])+r.charCodeAt(o++);return y(t)}function y(e){return String.fromCharCode.apply(0,e)}if(i["seed"+c]=g,b(i.random(),o),e.exports){e.exports=g;try{a=n(114)}catch(e){}}else void 0===(r=function(){return g}.call(t,n,t,e))||(e.exports=r)}([],Math)},function(e,t){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e("story.name",r.name)};var r=n(6)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){[r.defaults,o.defaults,i.defaults,a.defaults,s.defaults,l.defaults,u.defaults].forEach(function(e){return Object.keys(e).forEach(function(t){"function"==typeof e[t]?(0,s.setDefault)(t,e[t]()):(0,s.setDefault)(t,e[t])})})};var r=n(12),o=n(4),i=n(24),a=n(23),s=n(0),l=n(25),u=n(11)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.init=function(){l.dataset.cbGoogleFontLoader="",l.setAttribute("hidden",!0),u.dataset.cbTypekitFontLoader="",u.setAttribute("hidden",!0),c.dataset.cbUrlFontLoader="",c.setAttribute("hidden",!0),document.body.appendChild(l),document.body.appendChild(u),document.body.appendChild(c),o.default.on("state-change",function(e){var t=e.name,n="config"===t||"config.style"===t||"config.style.fonts"===t;if(n){var r=(0,i.get)("config.style.fonts");if(!r)return;Object.keys(r).forEach(function(e){var t=r[e].name,n=r[e].url;t&&n&&d(e,n,t)})}else{var o=t.match(/^config\.style\.fonts\.([^.]+)/i);if(o){var a=o[1],c=(0,i.get)("config.style.fonts."+a+".name"),f=(0,i.get)("config.style.fonts."+a+".url");return void(f&&c&&(s("Adding font from URL ("+c+")"),d(a,f,c)))}}(0,i.sameObject)(t,"config.style.googleFont")&&(s("Adding Google font"),l.innerHTML=(0,i.get)("config.style.googleFont")),(0,i.sameObject)(t,"config.style.typekitFont")&&(s("Adding Typekit font"),u.innerHTML=(0,i.get)("config.style.typekitFont"))})};var r=a(n(4)),o=a(n(1)),i=n(0);function a(e){return e&&e.__esModule?e:{default:e}}var s=(0,r.default)("style").log,l=document.createElement("div"),u=document.createElement("div"),c=document.createElement("div"),f={};function d(e,t,n){var r=t.match(/\.(.+)$/);if(r&&r[1]){var o=r[1],i=f[e]||document.createElement("style");i.dataset.cbFontLoader=e,i.innerHTML='@font-face { font-family: "'+n+'"; src: url("'+t+'") format("'+o+'"); }',i.parentNode||c.appendChild(i)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.autopx=function(e){if("number"==typeof e)return e+"px";return e},t.parseColorValue=s,t.parseColor=function(e){if(void 0===e)return{"background-color":"inherit",color:"inherit"};if("string"!=typeof e)throw new Error("Only strings can be parsed as colors.");var t={color:"inherit","background-color":"inherit"},n=e.split(/ on /i);t.color=s(n[0].trim().toLowerCase()),2===n.length&&(t["background-color"]=s(n[1].trim().toLowerCase()));return t},t.parseFont=function(e){var t={"font-family":"inherit","font-size":"inherit","font-style":"inherit","font-weight":"inherit","letter-spacing":"inherit","text-decoration":"inherit","text-transform":"inherit"};if(void 0===e)return t;if("string"!=typeof e)throw new Error("Only strings can be parsed as fonts.");function n(e,t){e["font-family"]=t.split("/").map(function(e){var t=e;return'"'!==t[0]&&(t='"'+t),'"'!==t[t.length-1]&&(t+='"'),t}).join(",")}function r(e){e["font-weight"]="bold"}function o(e){e["font-style"]="italic"}function i(e){e["font-style"]="none",e["font-weight"]="normal",e["letter-spacing"]="normal",e["text-decoration"]="none",e["text-transform"]="none"}function a(e){e["letter-spacing"]="0.075em",e["text-transform"]="uppercase",e["font-size"]&&"inherit"!==e["font-size"]?e["font-size"]="calc(0.7 * "+e["font-size"]+")":e["font-size"]="70%"}function s(e){e["text-decoration"]="underline"}var l=/\b\d+(?:\.\d+)?(ch|cm|ex|in|mm|pc|pt|px|r?em|vh|vmax|vmin|vw|%)?/i.exec(e);if(l){/^\d+$/.test(l[0])?t["font-size"]=l[0]+"px":t["font-size"]=l[0],0!==l.index&&n(t,e.substr(0,l.index).trim());var u=e.substr(l.index);/\bregular\b/i.test(u)?(t["font-style"]="none",t["font-weight"]="normal",t["letter-spacing"]="normal",t["text-decoration"]="none",t["text-transform"]="none"):(/\bbold\b/.test(u)&&r(t),/\bitalics?\b/.test(u)&&o(t),/\bunderlined?/.test(u)&&s(t),/\bsmall caps?\b/.test(u)&&a(t))}else{for(var c=void 0,f=e;c=/(bold|italics?|regular|small caps|underlined?)$/.exec(f);){switch(c[0]){case"bold":r(t);break;case"italic":case"italics":o(t);break;case"regular":i(t);break;case"small caps":a(t);break;case"underline":case"underlined":s(t)}f=f.substr(0,c.index).trim()}""!==f.trim()&&n(t,f)}return t};var r=a(n(119)),o=a(n(120)),i=a(n(125));function a(e){return e&&e.__esModule?e:{default:e}}function s(e){if("string"!=typeof e)throw new Error("Only strings can be parsed as color values.");r.default[e]&&(e=Array.isArray(r.default[e])?r.default[e][r.default[e].length-1]:r.default[e]);var t=/^(\w+)-(\d)$/.exec(e);t&&r.default[t[1]]&&(e=r.default[t[1]][t[2]]);var n=(0,o.default)(e),a=(0,i.default)(n);return a[3]=void 0!==n[3]?n[3]:1,"hsla("+a[0]+", "+a[1]+"%, "+a[2]+"%, "+a[3]+")"}},function(e){e.exports={white:"#ffffff",black:"#000000",gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]}},function(e,t,n){var r=n(121),o=n(122),i=n(123),a=n(124);var s={"#":o,hsl:function(e){var t=r(e),n=a(t);return 4===t.length&&n.push(t[3]),n},rgb:i};function l(e){for(var t in s)if(0===e.indexOf(t))return s[t](e)}l.rgb=i,l.hsl=r,l.hex=o,e.exports=l},function(e,t,n){var r=n(26),o=n(27);function i(e,t){switch(e=parseFloat(e),t){case 0:return o(e,0,360);case 1:case 2:return o(e,0,100);case 3:return o(e,0,1)}}e.exports=function(e){return r(e).map(i)}},function(e,t){e.exports=function(e){4!==e.length&&5!==e.length||(e=function(e){for(var t="#",n=1;n<e.length;n++){var r=e.charAt(n);t+=r+r}return t}(e));var t=[parseInt(e.substring(1,3),16),parseInt(e.substring(3,5),16),parseInt(e.substring(5,7),16)];if(9===e.length){var n=parseFloat((parseInt(e.substring(7,9),16)/255).toFixed(2));t.push(n)}return t}},function(e,t,n){var r=n(26),o=n(27);function i(e,t){return t<3?-1!=e.indexOf("%")?Math.round(255*o(parseInt(e,10),0,100)/100):o(parseInt(e,10),0,255):o(parseFloat(e),0,1)}e.exports=function(e){return r(e).map(i)}},function(e,t){e.exports=function(e){var t,n,r,o,i,a=e[0]/360,s=e[1]/100,l=e[2]/100;if(0==s)return[i=255*l,i,i];t=2*l-(n=l<.5?l*(1+s):l+s-l*s),o=[0,0,0];for(var u=0;u<3;u++)(r=a+1/3*-(u-1))<0&&r++,r>1&&r--,i=6*r<1?t+6*(n-t)*r:2*r<1?n:3*r<2?t+(n-t)*(2/3-r)*6:t,o[u]=255*i;return o}},function(e,t){e.exports=function(e){var t,n,r=e[0]/255,o=e[1]/255,i=e[2]/255,a=Math.min(r,o,i),s=Math.max(r,o,i),l=s-a;return s==a?t=0:r==s?t=(o-i)/l:o==s?t=2+(i-r)/l:i==s&&(t=4+(r-o)/l),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+s)/2,[t,100*(s==a?0:n<=.5?l/(s+a):l/(2-s-a)),100*n]}},function(e,t,n){}]);</script></body></html>