-
Notifications
You must be signed in to change notification settings - Fork 206
/
Copy pathSRReportsLib.ps1
658 lines (547 loc) · 448 KB
/
SRReportsLib.ps1
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
[int]$Script:BarChartCounter = 0 # id counter for the chart elements
$Script:BarCharts = $null
[bool]$Script:BarChartRowIsOpen = $false # show charts in a row
# ScriptRunner colors
[string[]]$Colors = @('#7C92C5','#FFAE4C','#C191BF','#8CBCD9','#D7CA6C','#4CC08C','#4C81B5','#F19351',
'#A2B1D6','#FFC57F','#D3B0D1','#ADCFE4','#E3D996','#7FD2AD','#7FA5CA','#F5B283')
# ScriptRunner border colors
[string[]]$BorderColors = @('#5773B5','#FF9719','#AF71AD','#6CA9CF','#CCBB42','#19AE6C','#195DA0','#ED751F',
'#7C92C5','#FFAE4C','#C191BF','#8CBCD9','#D7CA6C','#4CC08C','#4C81B5','#F19351')
# bar chart properties class
class BarChartProperties{
[string]$Description = '' # Bar label
[int]$Value = 0 # Bar value
[string]$BackgroundColor = '#FF9719' # Bar color
[string]$BorderColor = '#195DA0' # Bar border color
BarChartProperties( # constructor label, value, color
[string]$Desc,
[int]$Val,
[string]$ColorBack
){
$this.Description = $Desc
$this.Value = $Val
$this.BackgroundColor = $ColorBack
}
BarChartProperties( # constructor label, value
[string]$Desc,
[int]$Val
){
$this.Description = $Desc
$this.Value = $Val
}
BarChartProperties( # constructor label, value, color, border color
[string]$Desc,
[int]$Val,
[string]$ColorBack,
[string]$ColorBorder
){
$this.Description = $Desc
$this.Value = $Val
$this.BackgroundColor = $ColorBack
$this.BorderColor = $ColorBorder
}
}
# fav icon base 64
[string]$FavIcon = "data:image/x-icon;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUXAJz1IwCc9S4AnPU4AJz1UwCc9VQAnPVfAJz1cACc9XAAnPVwAJz1cACc9XAAnPVwAJz1cACc9XAAnPVwAJz1cACc9XAAnPVwAJz1XwCc9VQAnPVTAJz1OACc9S4AnPUjAJz1FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUHAJz1EACc9RgAnPUfAJz1KQCc9VQAnPVtAJz1gACc9ZQAnPXHAJz1yQCc9d8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXfAJz1yQCc9ccAnPWUAJz1gACc9W0AnPVUAJz1KQCc9R8AnPUYAJz1EACc9QcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SwAnPVjAJz1lwCc9cQAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1xACc9ZcAnPVjAJz1LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUrAJz1YACc9ZoAnPXSAJz15QCc9ewAnPXyAJz1+ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX4AJz18gCc9ewAnPXlAJz10gCc9ZoAnPVgAJz1KwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1BgCc9R8AnPVPAJz1hgCc9agAnPXFAJz13wCc9fkAnPX+AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f4AnPX5AJz13wCc9cUAnPWoAJz1hgCc9U8AnPUfAJz1BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUCAJz1CgCc9S4AnPVMAJz1dQCc9asAnPXpAJz1+gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9foAnPXpAJz1qwCc9XUAnPVMAJz1LgCc9QoAnPUCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUAAJz1AwCc9QwAnPUpAJz1lACc9doAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9doAnPWUAJz1KQCc9QwAnPUDAJz1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QwAnPVPAJz1rgCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1rgCc9U8AnPUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPVhAJz1oQCc9c4AnPXsAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXsAJz1zgCc9aEAnPVhAHe7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9REAnPU0AJz1awCc9b0AnPXnAJz1+gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX6AJz15wCc9b0AnPVrAJz1NACc9REAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUYAJz1RgCc9YoAnPXlAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9eUAnPWKAJz1RgCc9RgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9XgAnPXOAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXOAJz1eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1DACc9TEAnPW+AJz17QCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPXtAJz1vgCc9TEAnPUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SMAnPVhAJz1rQCc9e4AnPX8AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fwAnPXuAJz1rQCc9WEAnPUjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUhAJz1bACc9bgAnPX2AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX2AJz1uACc9WwAnPUhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUDAJz1DQCc9WkAnPXQAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz10ACc9WkAnPUNAJz1AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SYAnPWfAJz1+wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+wCc9Z8AnPUmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPVCAJz1mQCc9ewAnPX+AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX+AJz17ACc9ZkAnPVCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1QgCc9ZQAnPXcAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz13ACc9ZQAnPVCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AwCc9SYAnPWZAJz13ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz13ACc9ZkAnPUmAJz1AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUNAJz1nwCc9ewAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz17ACc9Z8AnPUNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1IQCc9WkAnPX7AJz1/gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX+AJz1+wCc9WkAnPUhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SMAnPVsAJz10ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wOd9f8LoPb/V774/3bK+v+Czvr/gs76/4LO+v9TvPj/Hqj2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/L673/1S9+P9wx/n/gs76/4LO+v+Czvr/gs76/4LO+v+Czvr/gs76/4LO+v+Czvr/gs76/4LO+v+Czvr/gs76/4LO+v+Czvr/gs76/4LO+v+Czvr/gs76/4LO+v+Czvr/gs76/4LO+v+Czvr/ecv6/1m++f8yr/f/C6D2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz10ACc9WwAnPUjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUMAJz1YQCc9bgAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8LoPX/K633/2nF+f+z4vz/zuz9/9nw/v/Z8P7/2fD+/6/g/P91yfn/OrP3/wae9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8CnfX/Bp71/0y6+P+I0fv/sOD8/8jq/f/Z8P7/2fD+/9nw/v/Z8P7/2fD+/9nw/v/Z8P7/2fD+/9nw/v/Z8P7/2fD+/9nw/v/Z8P7/2fD+/9nw/v/Z8P7/2fD+/9nw/v/Z8P7/2fD+/9nw/v/Z8P7/2fD+/9nw/v/R7f3/tOL8/4/T+/9jwvn/E6T2/wWe9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1uACc9WEAnPUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9TEAnPWtAJz19gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/Ap31/yes9/91yvr/8fr+/////////////////////////////////+b1/v+e2fv/Kaz3/wae9f8BnfX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wqg9f8jqff/x+n9/+/5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/z//+P0/v9Ft/j/FaT2/wGc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX2AJz1rQCc9TEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1vgCc9e4AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Nofb/hM/6/+j2/v////////////////////////////////////////////r9///n9v7/MK/3/wyh9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/Ma/3/6/g/P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/z/v9Kufj/CZ/2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXuAJz1vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1GACc9XgAnPXtAJz1/ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/0a3+P+x4Pz/+/7//////////////////////////////////////////////v////v9///Q7f3/b8f5/yqs9/8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xel9v9hwvn/8vr/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+v3//4LO+v8vrvf/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fwAnPXtAJz1eACc9RgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9REAnPVGAJz1zgCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/dsr6/83r/f////////////////////////////////////////////////////////////j8///I6v3/g8/6/zmy9/8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/NLD3/4rS+v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////rN/8/0+6+P8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPXOAJz1RgCc9REAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1NACc9YoAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f+X1/v/3vL+///////////////////////////////////////////////////////////////////////T7v3/jNL6/y2t9/8EnfX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f9IuPj/pNz7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////J6v3/ZcP5/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWKAJz1NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3uwAAnPVrAJz15QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/6Da/P/j9P7////////////////////////////////////////////////////////////////////////////s+P7/n9r7/w2h9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/0i4+P+k3Pv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Ht/v9rxfn/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9eUAnPVrAHe7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1YQCc9b0AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/eMv6/87s/f//////////////////////////////////////////////////////////////////////////////////////0+79/1W9+f8KoPb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/P7T3/5jX+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uuT8/1m/+P8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9b0AnPVhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AACc9QwAnPWhAJz15wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f9IuPj/teL8///////////////////////////////////////////////////////////////////////////////////////z+v7/wef9/3bK+v8gqfb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8eqPb/b8f5//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Z1/v/QLX4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz15wCc9aEAnPUMAJz1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUDAJz1TwCc9c4AnPX6AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/x6o9v+H0Pr/4fP+///////////////////////////////////////////////////////////////////////////////////////0+///x+r9/3zN+v8jqvb/B5/1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wqg9f9Ht/j/zuz9////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4/T+/2bE+f8eqPb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX6AJz1zgCc9U8AnPUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AgCc9QwAnPWuAJz17ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/0u5+P+j3Pv/8Pn+///////////////////////////////////////////////////////////////////////////////////////6/f//5/b+/2zG+f8kqvb/CZ/1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/yKp9v94y/r/7fj+//r9////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/7///L6//+j2/z/Lq73/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXsAJz1rgCc9QwAnPUCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUKAJz1KQCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/y2t9/+f2vv//////////////////////////////////////////////////////////////////////////////////////////////////////43S+v82sff/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f+P1Pv/4PP+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////p9v7/r+D8/xCi9v8EnvX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1KQCc9QoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9S4AnPWUAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/BZ71/xOj9v9zyPr/2PD+////////////////////////////////////////////////////////////////////////////////////////////8fr+/7vl/P9qxfn/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xGj9v8vrvf/Wr74/4PP+v+P1Pv/j9T7/4/U+/+P1Pv/j9T7/4/U+/+P1Pv/j9T7/4/U+/+P1Pv/j9T7/4/U+/+P1Pv/j9T7/4/U+/+P1Pv/j9T7/4/U+/+P1Pv/j9T7/4/U+/+P1Pv/j9T7/4/U+/+P1Pv/aMX5/zqz9/8VpPb/Ap31/wGc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWUAJz1LgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUGAJz1TACc9doAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/yar9/9wx/r/u+X8//f8/v//////////////////////////////////////////////////////////////////////////////////////6/f+/8Lo/f98zPr/DqH2/wOd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wmf9f8bpvb/Lq73/zOw9/8zsPf/M7D3/zOw9/8zsPf/M7D3/zOw9/8zsPf/M7D3/zOw9/8zsPf/M7D3/zOw9/8zsPf/M7D3/zOw9/8zsPf/M7D3/zOw9/8zsPf/M7D3/zOw9/8zsPf/M7D3/zOw9/8hqfb/DqH2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9doAnPVMAJz1BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9R8AnPV1AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/x+o9v9nxPn/vOX8//D5/v/9/v//////////////////////////////////////////////////////////////////////////////////9/z//97y/v9Yvvn/Jar3/wmg9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9XUAnPUfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1TwCc9asAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xSk9v9HuPj/x+n9//b7///+/////////////////////////////////////////////////////////////////////////////////////////+L0/v9ux/n/I6r2/wOd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1qwCc9U8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPWGAJz16QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wOd9f8Qovb/qt78/+X1/v////////////////////////////////////////////////////////////////////////////////////////////T7/v+v4Pz/Rrf4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXpAJz1hgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1KwCc9agAnPX6AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AZz1/wSd9f8prPf/gM76/83s/f///////////////////////////////////////////////////////////////////////////////////////P7//+z4/v/G6f3/Vb34/w6h9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9foAnPWoAJz1KwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPVgAJz1xQCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8yr/f/ccj5/7bi/P////////////////////////////////////////////////////////////////////////////////////////////b8//+14vz/XcD5/yKp9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9cUAnPVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9ZoAnPXfAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Zpfb/Urz4/9nw/v/z+////f7///////////////////////////////////////////////////////////////////////////////////////++5vz/ZsP5/x+o9v8DnfX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz13wCc9ZoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz10gCc9fkAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8DnfX/QLX4/8Xp/f/3/P7////////////////////////////////////////////////////////////////////////////////////////////k9P7/mtf7/xCi9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX5AJz10gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1CQCc9TsAnPXmAJz1/gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8FnvX/Ma/3/4bQ+v/c8f7///////////////////////////////////////////////////////////////////////////////////////3+///v+f7/zu39/yyt9/8Mofb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f4AnPXlAJz1LACc9QcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPURAJz1aQCc9e0AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Nofb/Mq/3/2/H+v/W7/7//P7///////////////////////////////////////////////////////////////////////////////////z+///z+///qt77/1W9+P8dp/b/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9ewAnPVjAJz1EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9RgAnPWXAJz18gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8FnvX/Ian3/3rL+v/V7/3/8/r+///////////////////////////////////////////////////////////////////////////////////////1+/7/q9/8/2LC+f8iqfb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz18gCc9ZcAnPUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1HwCc9cQAnPX4AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/4fQ+v/Q7f3/9/z/////////////////////////////////////////////////////////////////////////////////////////////xej9/2rF+f8NofX/Ap31/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX4AJz1xACc9R8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUpAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/z20+P+Z1/v/////////////////////////////////////////////////////////////////////////////////////////////////8Pn+/5/a+/8To/b/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1KQAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1FwCc9VQAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/DKH2/zGv9/9xyPr/8vr+//z+///////////////////////////////////////////////////////////////////////////////////8/v//7Pj+/67f/P9KuPj/CZ/2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPVUAJz1FwAAAAAAAAAAAAAAAAAAAAAAnPUjAJz1bQCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/C6D2/yer9/+M0/r/1O79//P6////////////////////////////////////////////////////////////////////////////////////////6/f+/6fd/P9cwPn/GKX2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9W0AnPUjAAAAAAAAAAAAAAAAAAAAAACc9S4AnPWAAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/A531/ySq9/+I0fr/yur9//P6////////////////////////////////////////////////////////////////////////////////////////8Pr//7vl/P9bwPn/E6P2/wWe9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1gACc9S4AAAAAAAAAAAAAAAAAAAAAAJz1OACc9ZQAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/w2h9v9rxfr/zuz9////////////////////////////////////////////////////////////////////////////////////////////+v3//+n3/v9Qu/j/E6P2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWUAJz1OAAAAAAAAAAAAAAAAAAAAAAAnPVTAJz1xwCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AZz1/wSe9f8trff/o9v7//v+/////////////////////////////////////////////////////////////////////////////////////////v////j8//+N0vr/OLH3/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9ccAnPVTAAAAAAAAAAAAAAAAAAAAAACc9VQAnPXJAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wyh9f8zsPf/j9P7/9zy/v///////////////////////////////////////////////////////////////////////////////////////////9zx/v+h2vv/Vr74/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1yQCc9VQAAAAAAAAAAAAAAAAAAAAAAJz1XwCc9d8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f83sff/kNT7/9Lu/f/5/f///////////////////////////////////////////////////////////////////////////////////////+P0/v+u4Pz/U7z4/w2h9v8CnfX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXfAJz1XwAAAAAAAAAAAAAAAAAAAAAAnPVwAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8wr/f/gc76/9zy/f/7/v///v////////////////////////////////////////////////////////////////////////////////////f8///V7v3/M7D3/w2h9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPVwAAAAAAAAAAAAAAAAAAAAAACc9XAAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8TpPb/Rbf4/9/z/v/6/f/////////////////////////////////////////////////////////////////////////////////////////////E6P3/Rbf4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9XAAAAAAAAAAAAAAAAAAAAAAAJz1cACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wOd9f8Nofb/Ma/3/7zl/P/t+P7///////////////////////////////////////////////////////////////////////////////////////b7//9yyPr/Gqb2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1cAAAAAAAAAAAAAAAAAAAAAAAnPVwAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wGc9f8Hn/X/Trr4/5nX+//Y8P3//////////////////////////////////////////////////////////////////////////////////////5fX+/87s/f/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPVwAAAAAAAAAAAAAAAAAAAAAACc9XAAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/QLX3/4/T+v/X7/3/////////////////////////////////////////////////////////////////////////////////ruD8/1K8+P8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9XAAAAAAAAAAAAAAAAAAAAAAAJz1cACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/H6j2/3DH+f////////////////////////////////////////////////////////////////////////////////+u4Pz/Urz4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1cAAAAAAAAAAAAAAAAAAAAAAAnPVwAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/5/a+//k9f7//////////////////////////////////////////////////////////////////////6Pb+/9IuPj/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPVwAAAAAAAAAAAAAAAAAAAAAACc9XAAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wqg9f8jqvb/5PX+//f8////////////////////////////////////////////////////////////////////////f836/yOp9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9XAAAAAAAAAAAAAAAAAAAAAAAJz1cACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/Ian2/3bK+v///////////////////////////////////////////////////////////////////////////8zr/f9TvPj/C6D1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1cAAAAAAAAAAAAAAAAAAAAAAAnPVwAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wqg9f9JuPj/1+/9//////////////////////////////////////////////////////////////////3+///3/P//d8r6/yer9/8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPVwAAAAAAAAAAAAAAAAAAAAAACc9XAAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/P7T3/5jX+///////////////////////////////////////////////////////////////////////9fv//8/s/f8Rovb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9XAAAAAAAAAAAAAAAAAAAAAAAJz1cACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xil9v+K0fr/6fb+///////////////////////////////////////////////////////////////////////Z8P7/Q7b4/wWe9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1cAAAAAAAAAAAAAAAAAAAAAAAnPVfAJz13wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/a8X5/8Po/f/6/f//////////////////////////////////////////////////////////////////3/P+/5rY+/8TpPb/Ap31/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9d8AnPVfAAAAAAAAAAAAAAAAAAAAAACc9VQAnPXJAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/BJ31/x+o9v+34/z/7Pj+//////////////////////////////////////////////////////////////////f8//+w4fz/Urz5/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1yQCc9VQAAAAAAAAAAAAAAAAAAAAAAJz1UwCc9ccAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Nofb/ZsP5/+b1/v//////////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AAAAAAAAnPUXAJz1VACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wOd9f9Ctvj/n9r8///////////////////////////////////////////////////////////////////////w+f7/x+r9/w2h9v8DnfX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9VQAnPUXAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUpAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/D6L2/53Z+//s+P7//////////////////////////////////////////////////////////////////////8fp/f9Nuvj/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9R8AnPXEAJz1+ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f+Azvr/1u/+//3+///////////////////////////////////////////////////////////////////c8f7/h9D7/wae9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+ACc9cQAnPUfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1GACc9ZcAnPXyAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Hn/X/H6j2/8/t/f/y+v//////////////////////////////////////////////////////////////////9vz+/5fX+/89s/f/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXyAJz1lwCc9RgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUQAJz1YwCc9ewAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xmm9v9pxfn/+f3////////////////////////////////////////////////////////////////////////J6v3/Wr/4/w6h9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9e0AnPVpAJz1EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QcAnPUsAJz15QCc9f4AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8FnvX/OrP3/9Pu/f/9/v/////////////////////////////////////////////////////////////+////+/3//3nL+f8prPb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX+AJz15gCc9TsAnPUJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPXSAJz1+QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/0O2+P+e2vv///////////////////////////////////////////////////////////////////////f8///P7P3/Gab2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fkAnPXSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9ZoAnPXfAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8UpPb/hM/6/+z4/v//////////////////////////////////////////////////////////////////////4/T+/1C7+P8KoPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz13wCc9ZoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1YACc9cUAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/1y/+f+85fz//////////////////////////////////////////////////////////////////////+L0/v+i2/v/F6X2/wOd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXFAJz1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUrAJz1qACc9foAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wKd9f8bpvb/qt78/+j2/v/////////////////////////////////////////////////////////////////5/f//teP8/1K8+P8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+gCc9agAnPUrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPWGAJz16QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/CZ/1/3DH+f/i9P7//////////////////////////////////////////////////////////////////////+j2/v99zfr/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXpAJz1hgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9U8AnPWrAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wae9f8hqff/6vf+//v9////////////////////////////////////////////////////////////////////////esz6/yer9/8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9asAnPVPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1HwCc9XUAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/La33/4bQ+v/6/f///v///////////////////////////////////////////////////////////////////7Pi/P9Btfj/C6D2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1dQCc9R8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUGAJz1TACc9doAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xSk9v9fwfn/0+79//////////////////////////////////////////////////////////////////v+///y+v//XMD5/xqm9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9doAnPVMAJz1BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUuAJz1lACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8CnfX/QLX3/5vY+///////////////////////////////////////////////////////////////////////8fr//87s/f8Oofb/BJ31/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1lACc9S4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QoAnPUpAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/w+i9v+f2vv/9fv+///////////////////////////////////////////////////////////////////////O7P3/ULv4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPUpAJz1CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AgCc9QwAnPWuAJz17ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/ccj6/87s/f/9/v//////////////////////////////////////////////////////////////////2fD+/4vS+/8NofX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXsAJz1rgCc9QwAnPUCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AwCc9U8AnPXOAJz1+gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f+14/z/6vf+//////////////////////////////////////////////////////////////////f8//+c2fv/PrT4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+gCc9c4AnPVPAJz1AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUAAJz1DACc9aEAnPXnAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/+Dz/v/7/f//////////////////////////////////////////////////////////////////1O79/2DB+f8In/b/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXnAJz1oQCc9QwAnPUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1YQCc9b0AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/6/f+//////////////////////////////////////////////////////////////////////+H0Pr/Ma/3/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9b0AnPVhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1awCc9eUAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f/r9/7////////////////////////////////////////////////////////////3/P//v+b9/x+o9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXlAJz1awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPU0AJz1igCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/9Xv/v/3/P//////////////////////////////////////////////////+v3//9/z/v9Nufj/DKH1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9YoAnPU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9REAnPVGAJz1zgCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/p938/+T1/v/////////////////////////////////////////////////l9f7/qd77/xKj9v8DnfX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPXOAJz1RgCc9REAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9RgAnPV4AJz17QCc9fwAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f9jw/n/wOf9//X7////////////////////////////////////////9fv//7vl/P9fwfn/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX8AJz17QCc9XgAnPUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPW+AJz17gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f9mxPn/wuf8//////////////////////////////////////++5vz/X8H5/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9e4AnPW+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9TEAnPWtAJz19gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wyh9f82sff/e8v6/9Xu/f/3/P////////X7///V7v3/d8r6/zKv9/8LoPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX2AJz1rQCc9TEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1DACc9WEAnPW4AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/w6h9v8qrPf/U7z4/2LC+f9mxPn/YcL5/1O8+P8oq/f/DKH2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9bgAnPVhAJz1DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1IwCc9WwAnPXQAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXQAJz1bACc9SMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1IQCc9WkAnPX7AJz1/gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX+AJz1+wCc9WkAnPUhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1DQCc9Z8AnPXsAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9ewAnPWfAJz1DQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUDAJz1JgCc9ZkAnPXcAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXcAJz1mQCc9SYAnPUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1QgCc9ZQAnPXcAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz13ACc9ZQAnPVCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1QgCc9ZkAnPXsAJz1/gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/gCc9ewAnPWZAJz1QgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1JgCc9Z8AnPX7AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX7AJz1nwCc9SYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUDAJz1DQCc9WkAnPXQAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz10ACc9WkAnPUNAJz1AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1IQCc9WwAnPW4AJz19gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz19gCc9bgAnPVsAJz1IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1IwCc9WEAnPWtAJz17gCc9fwAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/ACc9e4AnPWtAJz1YQCc9SMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1DACc9TEAnPW+AJz17QCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPXtAJz1vgCc9TEAnPUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPV4AJz1zgCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1zgCc9XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9RgAnPVGAJz1igCc9eUAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz15QCc9YoAnPVGAJz1GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9REAnPU0AJz1awCc9b0AnPXnAJz1+gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX6AJz15wCc9b0AnPVrAJz1NACc9REAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1YQCc9aEAnPXOAJz17ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz17ACc9c4AnPWhAJz1YQB3uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1DACc9U8AnPWuAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWuAJz1TwCc9QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUAAJz1AwCc9QwAnPUpAJz1lACc9doAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9doAnPWUAJz1KQCc9QwAnPUDAJz1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AgCc9QoAnPUuAJz1TACc9XUAnPWrAJz16QCc9foAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX6AJz16QCc9asAnPV1AJz1TACc9S4AnPUKAJz1AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUGAJz1HwCc9U8AnPWGAJz1qACc9cUAnPXfAJz1+QCc9f4AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/gCc9fkAnPXfAJz1xQCc9agAnPWGAJz1TwCc9R8AnPUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUrAJz1YACc9ZoAnPXSAJz15gCc9e0AnPXyAJz1+ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX4AJz18gCc9ewAnPXlAJz10gCc9ZoAnPVgAJz1KwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPU7AJz1aQCc9ZcAnPXEAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9cQAnPWXAJz1YwCc9SwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QkAnPURAJz1GACc9R8AnPUpAJz1VACc9W0AnPWAAJz1lACc9ccAnPXJAJz13wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9d8AnPXJAJz1xwCc9ZQAnPWAAJz1bQCc9VQAnPUpAJz1HwCc9RgAnPUQAJz1BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUXAJz1IwCc9S4AnPU4AJz1UwCc9VQAnPVfAJz1cACc9XAAnPVwAJz1cACc9XAAnPVwAJz1cACc9XAAnPVwAJz1cACc9XAAnPVwAJz1XwCc9VQAnPVTAJz1OACc9S4AnPUjAJz1FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////+AAAAf///////////////wAAAAAP//////////////8AAAAAD//////////////wAAAAAAD/////////////AAAAAAAAD///////////+AAAAAAAAAH//////////+AAAAAAAAAAf//////////gAAAAAAAAAH//////////wAAAAAAAAAAf/////////gAAAAAAAAAAB/////////wAAAAAAAAAAAP////////8AAAAAAAAAAAD////////4AAAAAAAAAAAAH///////8AAAAAAAAAAAAA///////+AAAAAAAAAAAAAH//////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAA//////4AAAAAAAAAAAAAAH/////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAAAAH/////AAAAAAAAAAAAAAAA/////gAAAAAAAAAAAAAAAH////wAAAAAAAAAAAAAAAA////8AAAAAAAAAAAAAAAAP////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA///AAAAAAAAAAAAAAAAAA///4AAAAAAAAAAAAAAAAAf//+AAAAAAAAAAAAAAAAAH///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAAAAAAAAAAAAA////8AAAAAAAAAAAAAAAAP////AAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAB/////AAAAAAAAAAAAAAAA/////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAAAAH/////4AAAAAAAAAAAAAAH//////AAAAAAAAAAAAAAD//////4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf//////4AAAAAAAAAAAAAf///////AAAAAAAAAAAAAP///////4AAAAAAAAAAAAH////////wAAAAAAAAAAAP////////8AAAAAAAAAAAD/////////gAAAAAAAAAAB//////////AAAAAAAAAAB//////////4AAAAAAAAAB//////////+AAAAAAAAAAf//////////4AAAAAAAAAf///////////wAAAAAAAA/////////////wAAAAAAD//////////////wAAAAAP//////////////8AAAAAD///////////////+AAAAf//////////////////////////////////////////////////ygAAABAAAAAgAAAAAEAIAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUGAJz1DgCc9SUAnPVPAJz1egCc9ZcAnPW4AJz1uACc9bgAnPW4AJz1uACc9bgAnPWXAJz1egCc9U8AnPUlAJz1DgCc9QYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SMAnPVbAJz1mACc9dEAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9dEAnPWYAJz1WwCc9SMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QAAnPUOAJz1OQCc9ZoAnPXZAJz19QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fUAnPXZAJz1mgCc9TkAnPUOAJz1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QMAnPVDAJz1rwCc9fYAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX2AJz1rwCc9UMAnPUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1BACc9SgAnPWpAJz17QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXtAJz1qQCc9SgAnPUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9WkAnPXbAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXbAJz1aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1JACc9aMAnPX5AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fkAnPWjAJz1JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUBAJz1JgCc9b0AnPX9AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/QCc9b0AnPUmAJz1AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1QACc9eEAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz14QCc9UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUBAJz1QACc9dMAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXTAJz1QACc9QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1JgCc9eEAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9eEAnPUmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1JACc9b0AnPX/AJz1/wCc9f8AnPX/AJz1/wOd9f8prPf/k9X7/63f/P+X1vv/NLD3/wKd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/Ap31/0G1+P+P1Pv/rd/8/63f/P+t3/z/rd/8/63f/P+t3/z/rd/8/63f/P+t3/z/rd/8/63f/P+t3/z/ltb7/0y5+P8GnvX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1vQCc9SQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9aMAnPX9AJz1/wCc9f8AnPX/AJz1/wCc9f8vrvf/0+79/////////////////9/z/v9SvPj/A531/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/0O2+P/t+P7////////////////////////////////////////////////////////////////////////////2/P//YcL5/wOd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f0AnPWjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1BACc9WkAnPX5AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/jtP7//7/////////////////////////8Pn+/3nL+v8Oovb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xOj9v+34/z//////////////////////////////////////////////////////////////////////////////////////8rq/f8fqPb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+QCc9WkAnPUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SgAnPXbAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/77m/f/////////////////////////////////0+///kdT7/wSe9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8kqvb/0e39///////////////////////////////////////////////////////////////////////////////////////m9f7/NLD3/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXbAJz1KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QMAnPWpAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f+R1Pv///////////////////////////////////////////+34/z/KKz3/wCc9f8AnPX/AJz1/wCc9f8AnPX/F6X2/8Hn/P//////////////////////////////////////////////////////////////////////////////////////1O79/yar9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9akAnPUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QAAnPVDAJz17QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/PLP3/93y/v///////////////////////////////////////P7//8nq/f8vrvf/Ap31/wCc9f8AnPX/AJz1/wOd9f9rxvn/+f3/////////////////////////////////////////////////////////////////////////////+/3//4bQ+/8In/X/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXtAJz1QwCc9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUOAJz1rwCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f85svf/0u79////////////////////////////////////////////3/L+/1e++P8AnPX/AJz1/wCc9f8AnPX/AJz1/2zG+f+34/z/x+n9/8fp/f/H6f3/x+n9/8fp/f/H6f3/x+n9/8fp/f/H6f3/x+n9/8fp/f/H6f3/veb8/3rL+v8GnvX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9a8AnPUOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1OQCc9fYAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/y2u9/+14vz/+/3////////////////////////////////////////p9v7/cMf5/wyh9v8AnPX/AJz1/wCc9f8CnfX/EqP2/xqm9v8apvb/Gqb2/xqm9v8apvb/Gqb2/xqm9v8apvb/Gqb2/xqm9v8apvb/Gqb2/xWk9v8DnfX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX2AJz1OQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9ZoAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/F6X2/57Z+//4/P////////////////////////////////////////j8//+N0/r/EqP2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9ZoAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SMAnPXZAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8LoPX/fMz6/+34/v//////////////////////////////////////+v3/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/////////////////////////////////9jw/f9Wvfj/BJ31/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWXAAAAAAAAAAAAnPW4AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8xr/f/v+b9//7+////////////////////////////////////////8vr+/1K8+f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1uAAAAAAAAAAAAJz1uACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AZz1/xGj9v+k3Pv/9fv///////////////////////////////////////+/5v3/FaT2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9bgAAAAAAAAAAACc9bgAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/EKL2/33M+v//////////////////////////////////////1u/9/yms9/8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPW4AAAAAAAAAAAAnPW4AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8LoPX/2PD9/////////////////////////////////8jq/f8bpvb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1uAAAAAAAAAAAAJz1uACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8DnfX/bsb5//////////////////////////////////3+//9vx/n/A531/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9bgAAAAAAAAAAACc9bgAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/OLL3/+Dz/v////////////////////////////////+44/z/BZ71/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPW4AAAAAAAAAAAAnPWXAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/CZ/1/7Ti/P/+////////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AAAAAAAAAAAAAJz1AQCc9UAAnPXTAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz10wCc9UAAnPUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1QACc9eEAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz14QCc9UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QEAnPUmAJz1vQCc9f0AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX9AJz1vQCc9SYAnPUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9SQAnPWjAJz1+QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX5AJz1owCc9SQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9WkAnPXbAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXbAJz1aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUEAJz1KACc9akAnPXtAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9e0AnPWpAJz1KACc9QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUDAJz1QwCc9a8AnPX2AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz19gCc9a8AnPVDAJz1AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QAAnPUOAJz1OQCc9ZoAnPXZAJz19QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fUAnPXZAJz1mgCc9TkAnPUOAJz1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1IwCc9VsAnPWeAJz10QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz10QCc9ZgAnPVbAJz1IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1BwCc9Q4AnPUlAJz1TwCc9XoAnPWXAJz1uACc9bgAnPW4AJz1uACc9bgAnPW4AJz1lwCc9XoAnPVPAJz1JQCc9Q4AnPUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////4AAH//////+AAAH/////+AAAAB/////wAAAAD////8AAAAAD////wAAAAAP///8AAAAAAP///AAAAAAAP//8AAAAAAA///AAAAAAAA//8AAAAAAAD//gAAAAAAAH/+AAAAAAAAf/gAAAAAAAAf+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB+AAAAAAAAAHwAAAAAAAAAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAcAAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB/AAAAAAAAAP+AAAAAAAAB/4AAAAAAAAH/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//8AAAAAAAD//8AAAAAAA///wAAAAAAD///wAAAAAA////wAAAAAP////AAAAAA/////AAAAAP////+AAAAB//////gAAB///////gAAf/////////////8oAAAAMAAAAGAAAAABACAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QMAnPUIAJz1DACc9Q4AnPUOAJz1DgCc9Q4AnPUMAJz1CACc9QMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1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///////+/v//gc76/wGc9f8AnPX/AJz1/wCc9f8AnPX/AJz1tACc9Q0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkPAACc9XMAnPX9AJz1/wCc9f8AnPX/AJz1/1C7+P/7/f///////////////////f7//7Xj/P8VpPb/AJz1/wCc9f8AnPX/AJz1/wKd9f+04vz/////////////////////////////////////////////////////////////////zez9/wOd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/QCc9XMACQ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1JgCc9ekAnPX/AJz1/wCc9f8AnPX/AJz1/y6u9//0+//////////////////////////////V7/3/MK/3/wGc9f8AnPX/AJz1/wGc9f+X1/v/////////////////////////////////////////////////////////////////seH8/wKd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9ekAnPUmAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUEAJz1mQCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wGd9f97zPr/+Pz/////////////////////////////5PX+/026+P8CnfX/AJz1/wCc9f8fqPb/0O39//L6/v/z+v//8/r///P6///z+v//8/r///P6///z+v//8/r///P6///Y8P3/La33/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWZAJz1BAAAAAAAAAAAAAAAAAAAAAAAnPUlAJz18ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8BnPX/XsD5/+34/v////////////////////////////H6/v9txvn/B5/1/wCc9f8AnPX/C6D1/zKv9/81sff/NbH3/zWx9/81sff/NbH3/zWx9/81sff/NbH3/zWx9/8Povb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXwAJz1JQAAAAAAAAAAAAAAAACc9QEAnPWAAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AZz1/z+0+P/a8P7////////////////////////////7/f//j9T7/xCi9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1gACc9QEAAAAAAAAAAACc9Q4AnPXRAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8oq/f/vub9//7//////////////////////////v///7Dg/P8cp/b/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz10QCc9Q4AAAAAAAAAAACc9TQAnPX6AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/F6X2/6Ha+//7/f/////////////////////////////R7f3/MK/3/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+gCc9TEAAAAAAAAAAACc9XIAnPX+AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wug9f+Bzvr/9Pv/////////////////////////////4vT+/026+P8BnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/gCc9XIAAAAAAJz1AwCc9akAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8FnvX/X8H5/+n2/v///////////////////////////+/5/v9xyPr/Bp71/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9akAnPUDAJz1CACc9c0AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/Ap31/0C1+P/b8f7////////////////////////////4/P//ktX7/w2h9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9c0AnPUIAJz1DACc9esAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8lqvb/xOj9//7//////////////////////////P7//7Lh/P8cp/b/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9esAnPUMAJz1DgCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/F6X2/6ne/P/9/v////////////////////////7///+t3/z/BZ71/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPUOAJz1DgCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wef9f+Dz/r////////////////////////////f8/7/Hqj2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPUOAJz1DgCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Qovb/6fb+///////////////////////P7P3/EKL2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPUOAJz1DgCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wKd9f+S1fv///////////////////////f8//9Yvvj/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPUOAJz1DACc9esAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/0K2+P/1+////////////////////v///6jd/P8GnvX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9esAnPUMAJz1CACc9c0AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/EaL2/8zr/f//////////////////////4vT+/yar9/8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9c0AnPUIAJz1AwCc9akAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8BnPX/gc76//3+///////////////////6/f//a8b5/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9akAnPUDAAAAAACc9XIAnPX+AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f82sff/7Pj+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/wCc9f8AnPXZAJz1KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1QACc9eYAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9eYAnPVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9UsAnPXmAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz15gCc9UsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPVAAJz12QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXZAJz1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1KACc9bQAnPX9AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/QCc9bQAnPUoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9Q0AnPVzAJz16QCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXpAJz1cwCc9Q0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1JgCc9ZkAnPXwAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz18ACc9ZkAnPUmAAkPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QQAnPUlAJz1gACc9dEAnPX6AJz1/gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX+AJz1+gCc9dEAnPWAAJz1JQCc9QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AQCc9Q4AnPU0AJz1cgCc9akAnPXNAJz16wCc9fsAnPX7AJz1+wCc9fsAnPXrAJz1zQCc9akAnPVyAJz1MQCc9Q4AnPUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9QMAnPUIAJz1DACc9Q4AnPUOAJz1DgCc9Q4AnPUMAJz1CACc9QMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///gB///AAD//gAAf/8AAP/4AAAf/wAA//AAAAf/AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAA4AAAAAAHAADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP8AAAAA/wAA/4AAAAH/AAD/wAAAA/8AAP/wAAAH/wAA//gAAB//AAD//gAAf/8AAP//4Af//wAAKAAAACAAAABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AQCc9Q0AnPUyAJz1VACc9VwAnPVcAJz1VACc9TIAnPUNAJz1AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUAAJz1EgCc9WYAnPW6AJz19ACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fQAnPW6AJz1ZgCc9RIAnPUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1CwCc9XcAnPXpAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz16QCc9XcAnPULAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9TIAnPXPAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9c8AnPUyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPVSAJz17gCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9e4AnPVSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1UgCc9fQAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fQAnPVSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc9TIAnPXuAJz1/wCc9f9Lufj/0O39/6re/P8WpPb/AJz1/wCc9f8AnPX/AJz1/xGj9v+v4Pz/1u/+/9bv/v/W7/7/1u/+/9bv/v/W7/7/tuL8/xqm9v8AnPX/AJz1/wCc9e4AnPUyAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPULAJz1zwCc9f8AnPX/AJz1/9Lu/f///////////9fw/f8prPf/AJz1/wCc9f8AnPX/cMf5////////////////////////////////////////////gc76/wCc9f8AnPX/AJz1/wCc9c8AnPULAAAAAAAAAAAAAAAAAJz1AACc9XcAnPX/AJz1/wCc9f8AnPX/qt78/////////////////+z4/v9IuPj/AZz1/wCc9f9SvPj//v7///////////////////////////////////7///9iwvn/AJz1/wCc9f8AnPX/AJz1/wCc9XcAnPUAAAAAAAAAAAAAnPUSAJz16QCc9f8AnPX/AJz1/wCc9f8Oovb/rd/8//7///////////////f8//9sxvn/A531/wCc9f9Ouvj/cMj5/3DI+f9wyPn/cMj5/3DI+f9wyPn/VL34/wGd9f8AnPX/AJz1/wCc9f8AnPX/AJz16QCc9RIAAAAAAAAAAACc9WYAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8GnvX/h9H6//r9//////////////3+//+T1fv/CZ/1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1ZgAAAAAAnPUCAJz1uwCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8CnfX/YcL5//H6/v////////////////+44/z/FaT2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPW6AJz1AQCc9Q0AnPX0AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/QLX4/+H0/v/////////////////T7v3/K633/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fQAnPUNAJz1MgCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/Jar2/8vr/f/////////////////p9v7/Sbj4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9TIAnPVUAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/EKL2/6/g/P/////////////////1+///aMT5/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1VACc9VwAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/BZ71/4rR+v/////////////////l9f7/EKL2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPVcAJz1XACc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/H6j2//X7/////////////83r/f8Hn/X/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9VwAnPVUAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wKd9f+y4fz////////////4/P//P7X4/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1VACc9TIAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/W7/5//3+/////////////5XW+/8BnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPUyAJz1DQCc9fQAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/xim9v/i9P7////////////e8v7/E6P2/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz19ACc9Q0AnPUBAJz1ugCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8BnPX/ndn7/////////////f7//1G7+P8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPW7AJz1AgAAAAAAnPVmAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/0m4+P/5/f////////////+o3fz/Ap31/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9WYAAAAAAAAAAACc9RIAnPXpAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Qovb/1u/9////////////7Pj+/xim9v8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXpAJz1EgAAAAAAAAAAAJz1AACc9XcAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/2rF+f////////////////9jw/n/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9XcAnPUAAAAAAAAAAAAAAAAAAJz1CwCc9c8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/ZsT5//7/////////uOT8/wOd9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXPAJz1CwAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1MgCc9e4AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8Hn/X/csj5/4jR+v8Wpfb/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz17gCc9TIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1UgCc9fQAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fQAnPVSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1UgCc9e4AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXuAJz1UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1MgCc9c8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1zwCc9TIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1CwCc9XcAnPXpAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz16QCc9XcAnPULAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1AACc9RIAnPVmAJz1uwCc9fQAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX0AJz1ugCc9WYAnPUSAJz1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPUCAJz1DQCc9TIAnPVUAJz1XACc9VwAnPVUAJz1MgCc9Q0AnPUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4Af//wAA//4AAH/8AAA/+AAAH/AAAA/gAAAHwAAAA4AAAAGAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAYAAAAHAAAAD4AAAB/AAAA/4AAAf/AAAP/4AAH//AAD//+AH/ygAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1BACc9UgAnPWMAJz1qwCc9asAnPWMAJz1SACc9QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1QwCc9dcAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPXXAJz1QwAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1ZgCc9fsAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9fsAnPVmAAAAAAAAAAAAAAAAAJz1QwCc9ftHuPj/3vL+/0W3+P8AnPX/IKn2/+Hz/v/r9/7/6/f+/+L0/v8nq/f/AJz1+wCc9UMAAAAAAJz1BACc9dcAnPX/Lq73/+r3/v/6/f//a8X5/xWk9v+v4Pz/uOP8/7jj/P+w4Pz/Gab2/wCc9f8AnPXXAJz1BACc9UkAnPX/AJz1/wCc9f8kqvb/0+79//////+U1vv/BZ71/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9UgAnPWMAJz1/wCc9f8AnPX/AJz1/xCi9v+04vz//////7nk/P8So/b/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWMAJz1qwCc9f8AnPX/AJz1/wCc9f8AnPX/BJ71/4/U+///////0O39/wSe9f8AnPX/AJz1/wCc9f8AnPX/AJz1qwCc9asAnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f81sPf//f7//8Hn/f8CnfX/AJz1/wCc9f8AnPX/AJz1/wCc9asAnPWMAJz1/wCc9f8AnPX/AJz1/wCc9f8GnvX/zuz9//f8//8qrPf/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPWMAJz1SACc9f8AnPX/AJz1/wCc9f8AnPX/eMv6//////9+zfr/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1SQCc9QQAnPXXAJz1/wCc9f8AnPX/H6j2//X7///T7v3/Bp71/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz11wCc9QQAAAAAAJz1QwCc9fsAnPX/AJz1/xun9v++5vz/NLD3/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+wCc9UMAAAAAAAAAAAAAAAAAnPVmAJz1+wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz1+wCc9WYAAAAAAAAAAAAAAAAAAAAAAAAAAACc9UMAnPXXAJz1/wCc9f8AnPX/AJz1/wCc9f8AnPX/AJz11wCc9UMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJz1BACc9UkAnPWMAJz1qwCc9asAnPWMAJz1SACc9QQAAAAAAAAAAAAAAAAAAAAA8A8AAOAHAADAAwAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAMADAADgBwAA8A8AAA=="
# header image right align base 64
[string]$RightHeaderImage = 'data:image/png;base64,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'
# java script
# https://www.chartjs.org/docs/latest/
[string]$chartJS = "!function (t, e) { ""object"" == typeof exports && ""undefined"" != typeof module ? module.exports = e() : ""function"" == typeof define && define.amd ? define(e) : (t = t || self).Chart = e() }(this, (function () { ""use strict""; ""undefined"" != typeof globalThis ? globalThis : ""undefined"" != typeof window ? window : ""undefined"" != typeof global ? global : ""undefined"" != typeof self && self; function t() { throw new Error(""Dynamic requires are not currently supported by rollup-plugin-commonjs"") } function e(t, e) { return t(e = { exports: {} }, e.exports), e.exports } var n = { aliceblue: [240, 248, 255], antiquewhite: [250, 235, 215], aqua: [0, 255, 255], aquamarine: [127, 255, 212], azure: [240, 255, 255], beige: [245, 245, 220], bisque: [255, 228, 196], black: [0, 0, 0], blanchedalmond: [255, 235, 205], blue: [0, 0, 255], blueviolet: [138, 43, 226], brown: [165, 42, 42], burlywood: [222, 184, 135], cadetblue: [95, 158, 160], chartreuse: [127, 255, 0], chocolate: [210, 105, 30], coral: [255, 127, 80], cornflowerblue: [100, 149, 237], cornsilk: [255, 248, 220], crimson: [220, 20, 60], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgoldenrod: [184, 134, 11], darkgray: [169, 169, 169], darkgreen: [0, 100, 0], darkgrey: [169, 169, 169], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkseagreen: [143, 188, 143], darkslateblue: [72, 61, 139], darkslategray: [47, 79, 79], darkslategrey: [47, 79, 79], darkturquoise: [0, 206, 209], darkviolet: [148, 0, 211], deeppink: [255, 20, 147], deepskyblue: [0, 191, 255], dimgray: [105, 105, 105], dimgrey: [105, 105, 105], dodgerblue: [30, 144, 255], firebrick: [178, 34, 34], floralwhite: [255, 250, 240], forestgreen: [34, 139, 34], fuchsia: [255, 0, 255], gainsboro: [220, 220, 220], ghostwhite: [248, 248, 255], gold: [255, 215, 0], goldenrod: [218, 165, 32], gray: [128, 128, 128], green: [0, 128, 0], greenyellow: [173, 255, 47], grey: [128, 128, 128], honeydew: [240, 255, 240], hotpink: [255, 105, 180], indianred: [205, 92, 92], indigo: [75, 0, 130], ivory: [255, 255, 240], khaki: [240, 230, 140], lavender: [230, 230, 250], lavenderblush: [255, 240, 245], lawngreen: [124, 252, 0], lemonchiffon: [255, 250, 205], lightblue: [173, 216, 230], lightcoral: [240, 128, 128], lightcyan: [224, 255, 255], lightgoldenrodyellow: [250, 250, 210], lightgray: [211, 211, 211], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightsalmon: [255, 160, 122], lightseagreen: [32, 178, 170], lightskyblue: [135, 206, 250], lightslategray: [119, 136, 153], lightslategrey: [119, 136, 153], lightsteelblue: [176, 196, 222], lightyellow: [255, 255, 224], lime: [0, 255, 0], limegreen: [50, 205, 50], linen: [250, 240, 230], magenta: [255, 0, 255], maroon: [128, 0, 0], mediumaquamarine: [102, 205, 170], mediumblue: [0, 0, 205], mediumorchid: [186, 85, 211], mediumpurple: [147, 112, 219], mediumseagreen: [60, 179, 113], mediumslateblue: [123, 104, 238], mediumspringgreen: [0, 250, 154], mediumturquoise: [72, 209, 204], mediumvioletred: [199, 21, 133], midnightblue: [25, 25, 112], mintcream: [245, 255, 250], mistyrose: [255, 228, 225], moccasin: [255, 228, 181], navajowhite: [255, 222, 173], navy: [0, 0, 128], oldlace: [253, 245, 230], olive: [128, 128, 0], olivedrab: [107, 142, 35], orange: [255, 165, 0], orangered: [255, 69, 0], orchid: [218, 112, 214], palegoldenrod: [238, 232, 170], palegreen: [152, 251, 152], paleturquoise: [175, 238, 238], palevioletred: [219, 112, 147], papayawhip: [255, 239, 213], peachpuff: [255, 218, 185], peru: [205, 133, 63], pink: [255, 192, 203], plum: [221, 160, 221], powderblue: [176, 224, 230], purple: [128, 0, 128], rebeccapurple: [102, 51, 153], red: [255, 0, 0], rosybrown: [188, 143, 143], royalblue: [65, 105, 225], saddlebrown: [139, 69, 19], salmon: [250, 128, 114], sandybrown: [244, 164, 96], seagreen: [46, 139, 87], seashell: [255, 245, 238], sienna: [160, 82, 45], silver: [192, 192, 192], skyblue: [135, 206, 235], slateblue: [106, 90, 205], slategray: [112, 128, 144], slategrey: [112, 128, 144], snow: [255, 250, 250], springgreen: [0, 255, 127], steelblue: [70, 130, 180], tan: [210, 180, 140], teal: [0, 128, 128], thistle: [216, 191, 216], tomato: [255, 99, 71], turquoise: [64, 224, 208], violet: [238, 130, 238], wheat: [245, 222, 179], white: [255, 255, 255], whitesmoke: [245, 245, 245], yellow: [255, 255, 0], yellowgreen: [154, 205, 50] }, i = e((function (t) { var e = {}; for (var i in n) n.hasOwnProperty(i) && (e[n[i]] = i); var a = t.exports = { rgb: { channels: 3, labels: ""rgb"" }, hsl: { channels: 3, labels: ""hsl"" }, hsv: { channels: 3, labels: ""hsv"" }, hwb: { channels: 3, labels: ""hwb"" }, cmyk: { channels: 4, labels: ""cmyk"" }, xyz: { channels: 3, labels: ""xyz"" }, lab: { channels: 3, labels: ""lab"" }, lch: { channels: 3, labels: ""lch"" }, hex: { channels: 1, labels: [""hex""] }, keyword: { channels: 1, labels: [""keyword""] }, ansi16: { channels: 1, labels: [""ansi16""] }, ansi256: { channels: 1, labels: [""ansi256""] }, hcg: { channels: 3, labels: [""h"", ""c"", ""g""] }, apple: { channels: 3, labels: [""r16"", ""g16"", ""b16""] }, gray: { channels: 1, labels: [""gray""] } }; for (var r in a) if (a.hasOwnProperty(r)) { if (!(""channels"" in a[r])) throw new Error(""missing channels property: "" + r); if (!(""labels"" in a[r])) throw new Error(""missing channel labels property: "" + r); if (a[r].labels.length !== a[r].channels) throw new Error(""channel and label counts mismatch: "" + r); var o = a[r].channels, s = a[r].labels; delete a[r].channels, delete a[r].labels, Object.defineProperty(a[r], ""channels"", { value: o }), Object.defineProperty(a[r], ""labels"", { value: s }) } a.rgb.hsl = function (t) { var e, n, i = t[0] / 255, a = t[1] / 255, r = t[2] / 255, o = Math.min(i, a, r), s = Math.max(i, a, r), l = s - o; return s === o ? e = 0 : i === s ? e = (a - r) / l : a === s ? e = 2 + (r - i) / l : r === s && (e = 4 + (i - a) / l), (e = Math.min(60 * e, 360)) < 0 && (e += 360), n = (o + s) / 2, [e, 100 * (s === o ? 0 : n <= .5 ? l / (s + o) : l / (2 - s - o)), 100 * n] }, a.rgb.hsv = function (t) { var e, n, i, a, r, o = t[0] / 255, s = t[1] / 255, l = t[2] / 255, u = Math.max(o, s, l), d = u - Math.min(o, s, l), h = function (t) { return (u - t) / 6 / d + .5 }; return 0 === d ? a = r = 0 : (r = d / u, e = h(o), n = h(s), i = h(l), o === u ? a = i - n : s === u ? a = 1 / 3 + e - i : l === u && (a = 2 / 3 + n - e), a < 0 ? a += 1 : a > 1 && (a -= 1)), [360 * a, 100 * r, 100 * u] }, a.rgb.hwb = function (t) { var e = t[0], n = t[1], i = t[2]; return [a.rgb.hsl(t)[0], 100 * (1 / 255 * Math.min(e, Math.min(n, i))), 100 * (i = 1 - 1 / 255 * Math.max(e, Math.max(n, i)))] }, a.rgb.cmyk = function (t) { var e, n = t[0] / 255, i = t[1] / 255, a = t[2] / 255; return [100 * ((1 - n - (e = Math.min(1 - n, 1 - i, 1 - a))) / (1 - e) || 0), 100 * ((1 - i - e) / (1 - e) || 0), 100 * ((1 - a - e) / (1 - e) || 0), 100 * e] }, a.rgb.keyword = function (t) { var i = e[t]; if (i) return i; var a, r, o, s = 1 / 0; for (var l in n) if (n.hasOwnProperty(l)) { var u = n[l], d = (r = t, o = u, Math.pow(r[0] - o[0], 2) + Math.pow(r[1] - o[1], 2) + Math.pow(r[2] - o[2], 2)); d < s && (s = d, a = l) } return a }, a.keyword.rgb = function (t) { return n[t] }, a.rgb.xyz = function (t) { var e = t[0] / 255, n = t[1] / 255, i = t[2] / 255; return [100 * (.4124 * (e = e > .04045 ? Math.pow((e + .055) / 1.055, 2.4) : e / 12.92) + .3576 * (n = n > .04045 ? Math.pow((n + .055) / 1.055, 2.4) : n / 12.92) + .1805 * (i = i > .04045 ? Math.pow((i + .055) / 1.055, 2.4) : i / 12.92)), 100 * (.2126 * e + .7152 * n + .0722 * i), 100 * (.0193 * e + .1192 * n + .9505 * i)] }, a.rgb.lab = function (t) { var e = a.rgb.xyz(t), n = e[0], i = e[1], r = e[2]; return i /= 100, r /= 108.883, n = (n /= 95.047) > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116, [116 * (i = i > .008856 ? Math.pow(i, 1 / 3) : 7.787 * i + 16 / 116) - 16, 500 * (n - i), 200 * (i - (r = r > .008856 ? Math.pow(r, 1 / 3) : 7.787 * r + 16 / 116))] }, a.hsl.rgb = function (t) { var e, n, i, a, r, o = t[0] / 360, s = t[1] / 100, l = t[2] / 100; if (0 === s) return [r = 255 * l, r, r]; e = 2 * l - (n = l < .5 ? l * (1 + s) : l + s - l * s), a = [0, 0, 0]; for (var u = 0; u < 3; u++)(i = o + 1 / 3 * -(u - 1)) < 0 && i++, i > 1 && i--, r = 6 * i < 1 ? e + 6 * (n - e) * i : 2 * i < 1 ? n : 3 * i < 2 ? e + (n - e) * (2 / 3 - i) * 6 : e, a[u] = 255 * r; return a }, a.hsl.hsv = function (t) { var e = t[0], n = t[1] / 100, i = t[2] / 100, a = n, r = Math.max(i, .01); return n *= (i *= 2) <= 1 ? i : 2 - i, a *= r <= 1 ? r : 2 - r, [e, 100 * (0 === i ? 2 * a / (r + a) : 2 * n / (i + n)), 100 * ((i + n) / 2)] }, a.hsv.rgb = function (t) { var e = t[0] / 60, n = t[1] / 100, i = t[2] / 100, a = Math.floor(e) % 6, r = e - Math.floor(e), o = 255 * i * (1 - n), s = 255 * i * (1 - n * r), l = 255 * i * (1 - n * (1 - r)); switch (i *= 255, a) { case 0: return [i, l, o]; case 1: return [s, i, o]; case 2: return [o, i, l]; case 3: return [o, s, i]; case 4: return [l, o, i]; case 5: return [i, o, s] } }, a.hsv.hsl = function (t) { var e, n, i, a = t[0], r = t[1] / 100, o = t[2] / 100, s = Math.max(o, .01); return i = (2 - r) * o, n = r * s, [a, 100 * (n = (n /= (e = (2 - r) * s) <= 1 ? e : 2 - e) || 0), 100 * (i /= 2)] }, a.hwb.rgb = function (t) { var e, n, i, a, r, o, s, l = t[0] / 360, u = t[1] / 100, d = t[2] / 100, h = u + d; switch (h > 1 && (u /= h, d /= h), i = 6 * l - (e = Math.floor(6 * l)), 0 != (1 & e) && (i = 1 - i), a = u + i * ((n = 1 - d) - u), e) { default: case 6: case 0: r = n, o = a, s = u; break; case 1: r = a, o = n, s = u; break; case 2: r = u, o = n, s = a; break; case 3: r = u, o = a, s = n; break; case 4: r = a, o = u, s = n; break; case 5: r = n, o = u, s = a }return [255 * r, 255 * o, 255 * s] }, a.cmyk.rgb = function (t) { var e = t[0] / 100, n = t[1] / 100, i = t[2] / 100, a = t[3] / 100; return [255 * (1 - Math.min(1, e * (1 - a) + a)), 255 * (1 - Math.min(1, n * (1 - a) + a)), 255 * (1 - Math.min(1, i * (1 - a) + a))] }, a.xyz.rgb = function (t) { var e, n, i, a = t[0] / 100, r = t[1] / 100, o = t[2] / 100; return n = -.9689 * a + 1.8758 * r + .0415 * o, i = .0557 * a + -.204 * r + 1.057 * o, e = (e = 3.2406 * a + -1.5372 * r + -.4986 * o) > .0031308 ? 1.055 * Math.pow(e, 1 / 2.4) - .055 : 12.92 * e, n = n > .0031308 ? 1.055 * Math.pow(n, 1 / 2.4) - .055 : 12.92 * n, i = i > .0031308 ? 1.055 * Math.pow(i, 1 / 2.4) - .055 : 12.92 * i, [255 * (e = Math.min(Math.max(0, e), 1)), 255 * (n = Math.min(Math.max(0, n), 1)), 255 * (i = Math.min(Math.max(0, i), 1))] }, a.xyz.lab = function (t) { var e = t[0], n = t[1], i = t[2]; return n /= 100, i /= 108.883, e = (e /= 95.047) > .008856 ? Math.pow(e, 1 / 3) : 7.787 * e + 16 / 116, [116 * (n = n > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116) - 16, 500 * (e - n), 200 * (n - (i = i > .008856 ? Math.pow(i, 1 / 3) : 7.787 * i + 16 / 116))] }, a.lab.xyz = function (t) { var e, n, i, a = t[0]; e = t[1] / 500 + (n = (a + 16) / 116), i = n - t[2] / 200; var r = Math.pow(n, 3), o = Math.pow(e, 3), s = Math.pow(i, 3); return n = r > .008856 ? r : (n - 16 / 116) / 7.787, e = o > .008856 ? o : (e - 16 / 116) / 7.787, i = s > .008856 ? s : (i - 16 / 116) / 7.787, [e *= 95.047, n *= 100, i *= 108.883] }, a.lab.lch = function (t) { var e, n = t[0], i = t[1], a = t[2]; return (e = 360 * Math.atan2(a, i) / 2 / Math.PI) < 0 && (e += 360), [n, Math.sqrt(i * i + a * a), e] }, a.lch.lab = function (t) { var e, n = t[0], i = t[1]; return e = t[2] / 360 * 2 * Math.PI, [n, i * Math.cos(e), i * Math.sin(e)] }, a.rgb.ansi16 = function (t) { var e = t[0], n = t[1], i = t[2], r = 1 in arguments ? arguments[1] : a.rgb.hsv(t)[2]; if (0 === (r = Math.round(r / 50))) return 30; var o = 30 + (Math.round(i / 255) << 2 | Math.round(n / 255) << 1 | Math.round(e / 255)); return 2 === r && (o += 60), o }, a.hsv.ansi16 = function (t) { return a.rgb.ansi16(a.hsv.rgb(t), t[2]) }, a.rgb.ansi256 = function (t) { var e = t[0], n = t[1], i = t[2]; return e === n && n === i ? e < 8 ? 16 : e > 248 ? 231 : Math.round((e - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(e / 255 * 5) + 6 * Math.round(n / 255 * 5) + Math.round(i / 255 * 5) }, a.ansi16.rgb = function (t) { var e = t % 10; if (0 === e || 7 === e) return t > 50 && (e += 3.5), [e = e / 10.5 * 255, e, e]; var n = .5 * (1 + ~~(t > 50)); return [(1 & e) * n * 255, (e >> 1 & 1) * n * 255, (e >> 2 & 1) * n * 255] }, a.ansi256.rgb = function (t) { if (t >= 232) { var e = 10 * (t - 232) + 8; return [e, e, e] } var n; return t -= 16, [Math.floor(t / 36) / 5 * 255, Math.floor((n = t % 36) / 6) / 5 * 255, n % 6 / 5 * 255] }, a.rgb.hex = function (t) { var e = (((255 & Math.round(t[0])) << 16) + ((255 & Math.round(t[1])) << 8) + (255 & Math.round(t[2]))).toString(16).toUpperCase(); return ""000000"".substring(e.length) + e }, a.hex.rgb = function (t) { var e = t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); if (!e) return [0, 0, 0]; var n = e[0]; 3 === e[0].length && (n = n.split("""").map((function (t) { return t + t })).join("""")); var i = parseInt(n, 16); return [i >> 16 & 255, i >> 8 & 255, 255 & i] }, a.rgb.hcg = function (t) { var e, n = t[0] / 255, i = t[1] / 255, a = t[2] / 255, r = Math.max(Math.max(n, i), a), o = Math.min(Math.min(n, i), a), s = r - o; return e = s <= 0 ? 0 : r === n ? (i - a) / s % 6 : r === i ? 2 + (a - n) / s : 4 + (n - i) / s + 4, e /= 6, [360 * (e %= 1), 100 * s, 100 * (s < 1 ? o / (1 - s) : 0)] }, a.hsl.hcg = function (t) { var e = t[1] / 100, n = t[2] / 100, i = 1, a = 0; return (i = n < .5 ? 2 * e * n : 2 * e * (1 - n)) < 1 && (a = (n - .5 * i) / (1 - i)), [t[0], 100 * i, 100 * a] }, a.hsv.hcg = function (t) { var e = t[1] / 100, n = t[2] / 100, i = e * n, a = 0; return i < 1 && (a = (n - i) / (1 - i)), [t[0], 100 * i, 100 * a] }, a.hcg.rgb = function (t) { var e = t[0] / 360, n = t[1] / 100, i = t[2] / 100; if (0 === n) return [255 * i, 255 * i, 255 * i]; var a, r = [0, 0, 0], o = e % 1 * 6, s = o % 1, l = 1 - s; switch (Math.floor(o)) { case 0: r[0] = 1, r[1] = s, r[2] = 0; break; case 1: r[0] = l, r[1] = 1, r[2] = 0; break; case 2: r[0] = 0, r[1] = 1, r[2] = s; break; case 3: r[0] = 0, r[1] = l, r[2] = 1; break; case 4: r[0] = s, r[1] = 0, r[2] = 1; break; default: r[0] = 1, r[1] = 0, r[2] = l }return a = (1 - n) * i, [255 * (n * r[0] + a), 255 * (n * r[1] + a), 255 * (n * r[2] + a)] }, a.hcg.hsv = function (t) { var e = t[1] / 100, n = e + t[2] / 100 * (1 - e), i = 0; return n > 0 && (i = e / n), [t[0], 100 * i, 100 * n] }, a.hcg.hsl = function (t) { var e = t[1] / 100, n = t[2] / 100 * (1 - e) + .5 * e, i = 0; return n > 0 && n < .5 ? i = e / (2 * n) : n >= .5 && n < 1 && (i = e / (2 * (1 - n))), [t[0], 100 * i, 100 * n] }, a.hcg.hwb = function (t) { var e = t[1] / 100, n = e + t[2] / 100 * (1 - e); return [t[0], 100 * (n - e), 100 * (1 - n)] }, a.hwb.hcg = function (t) { var e = t[1] / 100, n = 1 - t[2] / 100, i = n - e, a = 0; return i < 1 && (a = (n - i) / (1 - i)), [t[0], 100 * i, 100 * a] }, a.apple.rgb = function (t) { return [t[0] / 65535 * 255, t[1] / 65535 * 255, t[2] / 65535 * 255] }, a.rgb.apple = function (t) { return [t[0] / 255 * 65535, t[1] / 255 * 65535, t[2] / 255 * 65535] }, a.gray.rgb = function (t) { return [t[0] / 100 * 255, t[0] / 100 * 255, t[0] / 100 * 255] }, a.gray.hsl = a.gray.hsv = function (t) { return [0, 0, t[0]] }, a.gray.hwb = function (t) { return [0, 100, t[0]] }, a.gray.cmyk = function (t) { return [0, 0, 0, t[0]] }, a.gray.lab = function (t) { return [t[0], 0, 0] }, a.gray.hex = function (t) { var e = 255 & Math.round(t[0] / 100 * 255), n = ((e << 16) + (e << 8) + e).toString(16).toUpperCase(); return ""000000"".substring(n.length) + n }, a.rgb.gray = function (t) { return [(t[0] + t[1] + t[2]) / 3 / 255 * 100] } })); i.rgb, i.hsl, i.hsv, i.hwb, i.cmyk, i.xyz, i.lab, i.lch, i.hex, i.keyword, i.ansi16, i.ansi256, i.hcg, i.apple, i.gray; function a(t) { var e = function () { for (var t = {}, e = Object.keys(i), n = e.length, a = 0; a < n; a++)t[e[a]] = { distance: -1, parent: null }; return t }(), n = [t]; for (e[t].distance = 0; n.length;)for (var a = n.pop(), r = Object.keys(i[a]), o = r.length, s = 0; s < o; s++) { var l = r[s], u = e[l]; -1 === u.distance && (u.distance = e[a].distance + 1, u.parent = a, n.unshift(l)) } return e } function r(t, e) { return function (n) { return e(t(n)) } } function o(t, e) { for (var n = [e[t].parent, t], a = i[e[t].parent][t], o = e[t].parent; e[o].parent;)n.unshift(e[o].parent), a = r(i[e[o].parent][o], a), o = e[o].parent; return a.conversion = n, a } var s = {}; Object.keys(i).forEach((function (t) { s[t] = {}, Object.defineProperty(s[t], ""channels"", { value: i[t].channels }), Object.defineProperty(s[t], ""labels"", { value: i[t].labels }); var e = function (t) { for (var e = a(t), n = {}, i = Object.keys(e), r = i.length, s = 0; s < r; s++) { var l = i[s]; null !== e[l].parent && (n[l] = o(l, e)) } return n }(t); Object.keys(e).forEach((function (n) { var i = e[n]; s[t][n] = function (t) { var e = function (e) { if (null == e) return e; arguments.length > 1 && (e = Array.prototype.slice.call(arguments)); var n = t(e); if (""object"" == typeof n) for (var i = n.length, a = 0; a < i; a++)n[a] = Math.round(n[a]); return n }; return ""conversion"" in t && (e.conversion = t.conversion), e }(i), s[t][n].raw = function (t) { var e = function (e) { return null == e ? e : (arguments.length > 1 && (e = Array.prototype.slice.call(arguments)), t(e)) }; return ""conversion"" in t && (e.conversion = t.conversion), e }(i) })) })); var l = s, u = { aliceblue: [240, 248, 255], antiquewhite: [250, 235, 215], aqua: [0, 255, 255], aquamarine: [127, 255, 212], azure: [240, 255, 255], beige: [245, 245, 220], bisque: [255, 228, 196], black: [0, 0, 0], blanchedalmond: [255, 235, 205], blue: [0, 0, 255], blueviolet: [138, 43, 226], brown: [165, 42, 42], burlywood: [222, 184, 135], cadetblue: [95, 158, 160], chartreuse: [127, 255, 0], chocolate: [210, 105, 30], coral: [255, 127, 80], cornflowerblue: [100, 149, 237], cornsilk: [255, 248, 220], crimson: [220, 20, 60], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgoldenrod: [184, 134, 11], darkgray: [169, 169, 169], darkgreen: [0, 100, 0], darkgrey: [169, 169, 169], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkseagreen: [143, 188, 143], darkslateblue: [72, 61, 139], darkslategray: [47, 79, 79], darkslategrey: [47, 79, 79], darkturquoise: [0, 206, 209], darkviolet: [148, 0, 211], deeppink: [255, 20, 147], deepskyblue: [0, 191, 255], dimgray: [105, 105, 105], dimgrey: [105, 105, 105], dodgerblue: [30, 144, 255], firebrick: [178, 34, 34], floralwhite: [255, 250, 240], forestgreen: [34, 139, 34], fuchsia: [255, 0, 255], gainsboro: [220, 220, 220], ghostwhite: [248, 248, 255], gold: [255, 215, 0], goldenrod: [218, 165, 32], gray: [128, 128, 128], green: [0, 128, 0], greenyellow: [173, 255, 47], grey: [128, 128, 128], honeydew: [240, 255, 240], hotpink: [255, 105, 180], indianred: [205, 92, 92], indigo: [75, 0, 130], ivory: [255, 255, 240], khaki: [240, 230, 140], lavender: [230, 230, 250], lavenderblush: [255, 240, 245], lawngreen: [124, 252, 0], lemonchiffon: [255, 250, 205], lightblue: [173, 216, 230], lightcoral: [240, 128, 128], lightcyan: [224, 255, 255], lightgoldenrodyellow: [250, 250, 210], lightgray: [211, 211, 211], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightsalmon: [255, 160, 122], lightseagreen: [32, 178, 170], lightskyblue: [135, 206, 250], lightslategray: [119, 136, 153], lightslategrey: [119, 136, 153], lightsteelblue: [176, 196, 222], lightyellow: [255, 255, 224], lime: [0, 255, 0], limegreen: [50, 205, 50], linen: [250, 240, 230], magenta: [255, 0, 255], maroon: [128, 0, 0], mediumaquamarine: [102, 205, 170], mediumblue: [0, 0, 205], mediumorchid: [186, 85, 211], mediumpurple: [147, 112, 219], mediumseagreen: [60, 179, 113], mediumslateblue: [123, 104, 238], mediumspringgreen: [0, 250, 154], mediumturquoise: [72, 209, 204], mediumvioletred: [199, 21, 133], midnightblue: [25, 25, 112], mintcream: [245, 255, 250], mistyrose: [255, 228, 225], moccasin: [255, 228, 181], navajowhite: [255, 222, 173], navy: [0, 0, 128], oldlace: [253, 245, 230], olive: [128, 128, 0], olivedrab: [107, 142, 35], orange: [255, 165, 0], orangered: [255, 69, 0], orchid: [218, 112, 214], palegoldenrod: [238, 232, 170], palegreen: [152, 251, 152], paleturquoise: [175, 238, 238], palevioletred: [219, 112, 147], papayawhip: [255, 239, 213], peachpuff: [255, 218, 185], peru: [205, 133, 63], pink: [255, 192, 203], plum: [221, 160, 221], powderblue: [176, 224, 230], purple: [128, 0, 128], rebeccapurple: [102, 51, 153], red: [255, 0, 0], rosybrown: [188, 143, 143], royalblue: [65, 105, 225], saddlebrown: [139, 69, 19], salmon: [250, 128, 114], sandybrown: [244, 164, 96], seagreen: [46, 139, 87], seashell: [255, 245, 238], sienna: [160, 82, 45], silver: [192, 192, 192], skyblue: [135, 206, 235], slateblue: [106, 90, 205], slategray: [112, 128, 144], slategrey: [112, 128, 144], snow: [255, 250, 250], springgreen: [0, 255, 127], steelblue: [70, 130, 180], tan: [210, 180, 140], teal: [0, 128, 128], thistle: [216, 191, 216], tomato: [255, 99, 71], turquoise: [64, 224, 208], violet: [238, 130, 238], wheat: [245, 222, 179], white: [255, 255, 255], whitesmoke: [245, 245, 245], yellow: [255, 255, 0], yellowgreen: [154, 205, 50] }, d = { getRgba: h, getHsla: c, getRgb: function (t) { var e = h(t); return e && e.slice(0, 3) }, getHsl: function (t) { var e = c(t); return e && e.slice(0, 3) }, getHwb: f, getAlpha: function (t) { var e = h(t); if (e) return e[3]; if (e = c(t)) return e[3]; if (e = f(t)) return e[3] }, hexString: function (t, e) { e = void 0 !== e && 3 === t.length ? e : t[3]; return ""#"" + b(t[0]) + b(t[1]) + b(t[2]) + (e >= 0 && e < 1 ? b(Math.round(255 * e)) : """") }, rgbString: function (t, e) { if (e < 1 || t[3] && t[3] < 1) return g(t, e); return ""rgb("" + t[0] + "", "" + t[1] + "", "" + t[2] + "")"" }, rgbaString: g, percentString: function (t, e) { if (e < 1 || t[3] && t[3] < 1) return m(t, e); var n = Math.round(t[0] / 255 * 100), i = Math.round(t[1] / 255 * 100), a = Math.round(t[2] / 255 * 100); return ""rgb("" + n + ""%, "" + i + ""%, "" + a + ""%)"" }, percentaString: m, hslString: function (t, e) { if (e < 1 || t[3] && t[3] < 1) return p(t, e); return ""hsl("" + t[0] + "", "" + t[1] + ""%, "" + t[2] + ""%)"" }, hslaString: p, hwbString: function (t, e) { void 0 === e && (e = void 0 !== t[3] ? t[3] : 1); return ""hwb("" + t[0] + "", "" + t[1] + ""%, "" + t[2] + ""%"" + (void 0 !== e && 1 !== e ? "", "" + e : """") + "")"" }, keyword: function (t) { return y[t.slice(0, 3)] } }; function h(t) { if (t) { var e = [0, 0, 0], n = 1, i = t.match(/^#([a-fA-F0-9]{3,4})µ/i), a = """"; if (i) { a = (i = i[1])[3]; for (var r = 0; r < e.length; r++)e[r] = parseInt(i[r] + i[r], 16); a && (n = Math.round(parseInt(a + a, 16) / 255 * 100) / 100) } else if (i = t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)µ/i)) { a = i[2], i = i[1]; for (r = 0; r < e.length; r++)e[r] = parseInt(i.slice(2 * r, 2 * r + 2), 16); a && (n = Math.round(parseInt(a, 16) / 255 * 100) / 100) } else if (i = t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)µ/i)) { for (r = 0; r < e.length; r++)e[r] = parseInt(i[r + 1]); n = parseFloat(i[4]) } else if (i = t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)µ/i)) { for (r = 0; r < e.length; r++)e[r] = Math.round(2.55 * parseFloat(i[r + 1])); n = parseFloat(i[4]) } else if (i = t.match(/(\w+)/)) { if (""transparent"" == i[1]) return [0, 0, 0, 0]; if (!(e = u[i[1]])) return } for (r = 0; r < e.length; r++)e[r] = v(e[r], 0, 255); return n = n || 0 == n ? v(n, 0, 1) : 1, e[3] = n, e } } function c(t) { if (t) { var e = t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/); if (e) { var n = parseFloat(e[4]); return [v(parseInt(e[1]), 0, 360), v(parseFloat(e[2]), 0, 100), v(parseFloat(e[3]), 0, 100), v(isNaN(n) ? 1 : n, 0, 1)] } } } function f(t) { if (t) { var e = t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/); if (e) { var n = parseFloat(e[4]); return [v(parseInt(e[1]), 0, 360), v(parseFloat(e[2]), 0, 100), v(parseFloat(e[3]), 0, 100), v(isNaN(n) ? 1 : n, 0, 1)] } } } function g(t, e) { return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), ""rgba("" + t[0] + "", "" + t[1] + "", "" + t[2] + "", "" + e + "")"" } function m(t, e) { return ""rgba("" + Math.round(t[0] / 255 * 100) + ""%, "" + Math.round(t[1] / 255 * 100) + ""%, "" + Math.round(t[2] / 255 * 100) + ""%, "" + (e || t[3] || 1) + "")"" } function p(t, e) { return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), ""hsla("" + t[0] + "", "" + t[1] + ""%, "" + t[2] + ""%, "" + e + "")"" } function v(t, e, n) { return Math.min(Math.max(e, t), n) } function b(t) { var e = t.toString(16).toUpperCase(); return e.length < 2 ? ""0"" + e : e } var y = {}; for (var x in u) y[u[x]] = x; var _ = function (t) { return t instanceof _ ? t : this instanceof _ ? (this.valid = !1, this.values = { rgb: [0, 0, 0], hsl: [0, 0, 0], hsv: [0, 0, 0], hwb: [0, 0, 0], cmyk: [0, 0, 0, 0], alpha: 1 }, void (""string"" == typeof t ? (e = d.getRgba(t)) ? this.setValues(""rgb"", e) : (e = d.getHsla(t)) ? this.setValues(""hsl"", e) : (e = d.getHwb(t)) && this.setValues(""hwb"", e) : ""object"" == typeof t && (void 0 !== (e = t).r || void 0 !== e.red ? this.setValues(""rgb"", e) : void 0 !== e.l || void 0 !== e.lightness ? this.setValues(""hsl"", e) : void 0 !== e.v || void 0 !== e.value ? this.setValues(""hsv"", e) : void 0 !== e.w || void 0 !== e.whiteness ? this.setValues(""hwb"", e) : void 0 === e.c && void 0 === e.cyan || this.setValues(""cmyk"", e)))) : new _(t); var e }; _.prototype = { isValid: function () { return this.valid }, rgb: function () { return this.setSpace(""rgb"", arguments) }, hsl: function () { return this.setSpace(""hsl"", arguments) }, hsv: function () { return this.setSpace(""hsv"", arguments) }, hwb: function () { return this.setSpace(""hwb"", arguments) }, cmyk: function () { return this.setSpace(""cmyk"", arguments) }, rgbArray: function () { return this.values.rgb }, hslArray: function () { return this.values.hsl }, hsvArray: function () { return this.values.hsv }, hwbArray: function () { var t = this.values; return 1 !== t.alpha ? t.hwb.concat([t.alpha]) : t.hwb }, cmykArray: function () { return this.values.cmyk }, rgbaArray: function () { var t = this.values; return t.rgb.concat([t.alpha]) }, hslaArray: function () { var t = this.values; return t.hsl.concat([t.alpha]) }, alpha: function (t) { return void 0 === t ? this.values.alpha : (this.setValues(""alpha"", t), this) }, red: function (t) { return this.setChannel(""rgb"", 0, t) }, green: function (t) { return this.setChannel(""rgb"", 1, t) }, blue: function (t) { return this.setChannel(""rgb"", 2, t) }, hue: function (t) { return t && (t = (t %= 360) < 0 ? 360 + t : t), this.setChannel(""hsl"", 0, t) }, saturation: function (t) { return this.setChannel(""hsl"", 1, t) }, lightness: function (t) { return this.setChannel(""hsl"", 2, t) }, saturationv: function (t) { return this.setChannel(""hsv"", 1, t) }, whiteness: function (t) { return this.setChannel(""hwb"", 1, t) }, blackness: function (t) { return this.setChannel(""hwb"", 2, t) }, value: function (t) { return this.setChannel(""hsv"", 2, t) }, cyan: function (t) { return this.setChannel(""cmyk"", 0, t) }, magenta: function (t) { return this.setChannel(""cmyk"", 1, t) }, yellow: function (t) { return this.setChannel(""cmyk"", 2, t) }, black: function (t) { return this.setChannel(""cmyk"", 3, t) }, hexString: function () { return d.hexString(this.values.rgb) }, rgbString: function () { return d.rgbString(this.values.rgb, this.values.alpha) }, rgbaString: function () { return d.rgbaString(this.values.rgb, this.values.alpha) }, percentString: function () { return d.percentString(this.values.rgb, this.values.alpha) }, hslString: function () { return d.hslString(this.values.hsl, this.values.alpha) }, hslaString: function () { return d.hslaString(this.values.hsl, this.values.alpha) }, hwbString: function () { return d.hwbString(this.values.hwb, this.values.alpha) }, keyword: function () { return d.keyword(this.values.rgb, this.values.alpha) }, rgbNumber: function () { var t = this.values.rgb; return t[0] << 16 | t[1] << 8 | t[2] }, luminosity: function () { for (var t = this.values.rgb, e = [], n = 0; n < t.length; n++) { var i = t[n] / 255; e[n] = i <= .03928 ? i / 12.92 : Math.pow((i + .055) / 1.055, 2.4) } return .2126 * e[0] + .7152 * e[1] + .0722 * e[2] }, contrast: function (t) { var e = this.luminosity(), n = t.luminosity(); return e > n ? (e + .05) / (n + .05) : (n + .05) / (e + .05) }, level: function (t) { var e = this.contrast(t); return e >= 7.1 ? ""AAA"" : e >= 4.5 ? ""AA"" : """" }, dark: function () { var t = this.values.rgb; return (299 * t[0] + 587 * t[1] + 114 * t[2]) / 1e3 < 128 }, light: function () { return !this.dark() }, negate: function () { for (var t = [], e = 0; e < 3; e++)t[e] = 255 - this.values.rgb[e]; return this.setValues(""rgb"", t), this }, lighten: function (t) { var e = this.values.hsl; return e[2] += e[2] * t, this.setValues(""hsl"", e), this }, darken: function (t) { var e = this.values.hsl; return e[2] -= e[2] * t, this.setValues(""hsl"", e), this }, saturate: function (t) { var e = this.values.hsl; return e[1] += e[1] * t, this.setValues(""hsl"", e), this }, desaturate: function (t) { var e = this.values.hsl; return e[1] -= e[1] * t, this.setValues(""hsl"", e), this }, whiten: function (t) { var e = this.values.hwb; return e[1] += e[1] * t, this.setValues(""hwb"", e), this }, blacken: function (t) { var e = this.values.hwb; return e[2] += e[2] * t, this.setValues(""hwb"", e), this }, greyscale: function () { var t = this.values.rgb, e = .3 * t[0] + .59 * t[1] + .11 * t[2]; return this.setValues(""rgb"", [e, e, e]), this }, clearer: function (t) { var e = this.values.alpha; return this.setValues(""alpha"", e - e * t), this }, opaquer: function (t) { var e = this.values.alpha; return this.setValues(""alpha"", e + e * t), this }, rotate: function (t) { var e = this.values.hsl, n = (e[0] + t) % 360; return e[0] = n < 0 ? 360 + n : n, this.setValues(""hsl"", e), this }, mix: function (t, e) { var n = t, i = void 0 === e ? .5 : e, a = 2 * i - 1, r = this.alpha() - n.alpha(), o = ((a * r == -1 ? a : (a + r) / (1 + a * r)) + 1) / 2, s = 1 - o; return this.rgb(o * this.red() + s * n.red(), o * this.green() + s * n.green(), o * this.blue() + s * n.blue()).alpha(this.alpha() * i + n.alpha() * (1 - i)) }, toJSON: function () { return this.rgb() }, clone: function () { var t, e, n = new _, i = this.values, a = n.values; for (var r in i) i.hasOwnProperty(r) && (t = i[r], ""[object Array]"" === (e = {}.toString.call(t)) ? a[r] = t.slice(0) : ""[object Number]"" === e ? a[r] = t : console.error(""unexpected color value:"", t)); return n } }, _.prototype.spaces = { rgb: [""red"", ""green"", ""blue""], hsl: [""hue"", ""saturation"", ""lightness""], hsv: [""hue"", ""saturation"", ""value""], hwb: [""hue"", ""whiteness"", ""blackness""], cmyk: [""cyan"", ""magenta"", ""yellow"", ""black""] }, _.prototype.maxes = { rgb: [255, 255, 255], hsl: [360, 100, 100], hsv: [360, 100, 100], hwb: [360, 100, 100], cmyk: [100, 100, 100, 100] }, _.prototype.getValues = function (t) { for (var e = this.values, n = {}, i = 0; i < t.length; i++)n[t.charAt(i)] = e[t][i]; return 1 !== e.alpha && (n.a = e.alpha), n }, _.prototype.setValues = function (t, e) { var n, i, a = this.values, r = this.spaces, o = this.maxes, s = 1; if (this.valid = !0, ""alpha"" === t) s = e; else if (e.length) a[t] = e.slice(0, t.length), s = e[t.length]; else if (void 0 !== e[t.charAt(0)]) { for (n = 0; n < t.length; n++)a[t][n] = e[t.charAt(n)]; s = e.a } else if (void 0 !== e[r[t][0]]) { var u = r[t]; for (n = 0; n < t.length; n++)a[t][n] = e[u[n]]; s = e.alpha } if (a.alpha = Math.max(0, Math.min(1, void 0 === s ? a.alpha : s)), ""alpha"" === t) return !1; for (n = 0; n < t.length; n++)i = Math.max(0, Math.min(o[t][n], a[t][n])), a[t][n] = Math.round(i); for (var d in r) d !== t && (a[d] = l[t][d](a[t])); return !0 }, _.prototype.setSpace = function (t, e) { var n = e[0]; return void 0 === n ? this.getValues(t) : (""number"" == typeof n && (n = Array.prototype.slice.call(e)), this.setValues(t, n), this) }, _.prototype.setChannel = function (t, e, n) { var i = this.values[t]; return void 0 === n ? i[e] : n === i[e] ? this : (i[e] = n, this.setValues(t, i), this) }, ""undefined"" != typeof window && (window.Color = _); var w, k = _, M = { noop: function () { }, uid: (w = 0, function () { return w++ }), isNullOrUndef: function (t) { return null == t }, isArray: function (t) { if (Array.isArray && Array.isArray(t)) return !0; var e = Object.prototype.toString.call(t); return ""[object"" === e.substr(0, 7) && ""Array]"" === e.substr(-6) }, isObject: function (t) { return null !== t && ""[object Object]"" === Object.prototype.toString.call(t) }, isFinite: function (t) { return (""number"" == typeof t || t instanceof Number) && isFinite(t) }, valueOrDefault: function (t, e) { return void 0 === t ? e : t }, valueAtIndexOrDefault: function (t, e, n) { return M.valueOrDefault(M.isArray(t) ? t[e] : t, n) }, callback: function (t, e, n) { if (t && ""function"" == typeof t.call) return t.apply(n, e) }, each: function (t, e, n, i) { var a, r, o; if (M.isArray(t)) if (r = t.length, i) for (a = r - 1; a >= 0; a--)e.call(n, t[a], a); else for (a = 0; a < r; a++)e.call(n, t[a], a); else if (M.isObject(t)) for (r = (o = Object.keys(t)).length, a = 0; a < r; a++)e.call(n, t[o[a]], o[a]) }, arrayEquals: function (t, e) { var n, i, a, r; if (!t || !e || t.length !== e.length) return !1; for (n = 0, i = t.length; n < i; ++n)if (a = t[n], r = e[n], a instanceof Array && r instanceof Array) { if (!M.arrayEquals(a, r)) return !1 } else if (a !== r) return !1; return !0 }, clone: function (t) { if (M.isArray(t)) return t.map(M.clone); if (M.isObject(t)) { for (var e = {}, n = Object.keys(t), i = n.length, a = 0; a < i; ++a)e[n[a]] = M.clone(t[n[a]]); return e } return t }, _merger: function (t, e, n, i) { var a = e[t], r = n[t]; M.isObject(a) && M.isObject(r) ? M.merge(a, r, i) : e[t] = M.clone(r) }, _mergerIf: function (t, e, n) { var i = e[t], a = n[t]; M.isObject(i) && M.isObject(a) ? M.mergeIf(i, a) : e.hasOwnProperty(t) || (e[t] = M.clone(a)) }, merge: function (t, e, n) { var i, a, r, o, s, l = M.isArray(e) ? e : [e], u = l.length; if (!M.isObject(t)) return t; for (i = (n = n || {}).merger || M._merger, a = 0; a < u; ++a)if (e = l[a], M.isObject(e)) for (s = 0, o = (r = Object.keys(e)).length; s < o; ++s)i(r[s], t, e, n); return t }, mergeIf: function (t, e) { return M.merge(t, e, { merger: M._mergerIf }) }, extend: Object.assign || function (t) { return M.merge(t, [].slice.call(arguments, 1), { merger: function (t, e, n) { e[t] = n[t] } }) }, inherits: function (t) { var e = this, n = t && t.hasOwnProperty(""constructor"") ? t.constructor : function () { return e.apply(this, arguments) }, i = function () { this.constructor = n }; return i.prototype = e.prototype, n.prototype = new i, n.extend = M.inherits, t && M.extend(n.prototype, t), n.__super__ = e.prototype, n }, _deprecated: function (t, e, n, i) { void 0 !== e && console.warn(t + ': ""' + n + '"" is deprecated. Please use ""' + i + '"" instead') } }, S = M; M.callCallback = M.callback, M.indexOf = function (t, e, n) { return Array.prototype.indexOf.call(t, e, n) }, M.getValueOrDefault = M.valueOrDefault, M.getValueAtIndexOrDefault = M.valueAtIndexOrDefault; var D = { linear: function (t) { return t }, easeInQuad: function (t) { return t * t }, easeOutQuad: function (t) { return -t * (t - 2) }, easeInOutQuad: function (t) { return (t /= .5) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1) }, easeInCubic: function (t) { return t * t * t }, easeOutCubic: function (t) { return (t -= 1) * t * t + 1 }, easeInOutCubic: function (t) { return (t /= .5) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2) }, easeInQuart: function (t) { return t * t * t * t }, easeOutQuart: function (t) { return -((t -= 1) * t * t * t - 1) }, easeInOutQuart: function (t) { return (t /= .5) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2) }, easeInQuint: function (t) { return t * t * t * t * t }, easeOutQuint: function (t) { return (t -= 1) * t * t * t * t + 1 }, easeInOutQuint: function (t) { return (t /= .5) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2) }, easeInSine: function (t) { return 1 - Math.cos(t * (Math.PI / 2)) }, easeOutSine: function (t) { return Math.sin(t * (Math.PI / 2)) }, easeInOutSine: function (t) { return -.5 * (Math.cos(Math.PI * t) - 1) }, easeInExpo: function (t) { return 0 === t ? 0 : Math.pow(2, 10 * (t - 1)) }, easeOutExpo: function (t) { return 1 === t ? 1 : 1 - Math.pow(2, -10 * t) }, easeInOutExpo: function (t) { return 0 === t ? 0 : 1 === t ? 1 : (t /= .5) < 1 ? .5 * Math.pow(2, 10 * (t - 1)) : .5 * (2 - Math.pow(2, -10 * --t)) }, easeInCirc: function (t) { return t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1) }, easeOutCirc: function (t) { return Math.sqrt(1 - (t -= 1) * t) }, easeInOutCirc: function (t) { return (t /= .5) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1) }, easeInElastic: function (t) { var e = 1.70158, n = 0, i = 1; return 0 === t ? 0 : 1 === t ? 1 : (n || (n = .3), i < 1 ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), -i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / n)) }, easeOutElastic: function (t) { var e = 1.70158, n = 0, i = 1; return 0 === t ? 0 : 1 === t ? 1 : (n || (n = .3), i < 1 ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), i * Math.pow(2, -10 * t) * Math.sin((t - e) * (2 * Math.PI) / n) + 1) }, easeInOutElastic: function (t) { var e = 1.70158, n = 0, i = 1; return 0 === t ? 0 : 2 == (t /= .5) ? 1 : (n || (n = .45), i < 1 ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), t < 1 ? i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / n) * -.5 : i * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / n) * .5 + 1) }, easeInBack: function (t) { var e = 1.70158; return t * t * ((e + 1) * t - e) }, easeOutBack: function (t) { var e = 1.70158; return (t -= 1) * t * ((e + 1) * t + e) + 1 }, easeInOutBack: function (t) { var e = 1.70158; return (t /= .5) < 1 ? t * t * ((1 + (e *= 1.525)) * t - e) * .5 : .5 * ((t -= 2) * t * ((1 + (e *= 1.525)) * t + e) + 2) }, easeInBounce: function (t) { return 1 - D.easeOutBounce(1 - t) }, easeOutBounce: function (t) { return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375 }, easeInOutBounce: function (t) { return t < .5 ? .5 * D.easeInBounce(2 * t) : .5 * D.easeOutBounce(2 * t - 1) + .5 } }, C = { effects: D }; S.easingEffects = D; var P = Math.PI, T = P / 180, O = 2 * P, A = P / 2, F = P / 4, I = 2 * P / 3, L = { clear: function (t) { t.ctx.clearRect(0, 0, t.width, t.height) }, roundedRect: function (t, e, n, i, a, r) { if (r) { var o = Math.min(r, a / 2, i / 2), s = e + o, l = n + o, u = e + i - o, d = n + a - o; t.moveTo(e, l), s < u && l < d ? (t.arc(s, l, o, -P, -A), t.arc(u, l, o, -A, 0), t.arc(u, d, o, 0, A), t.arc(s, d, o, A, P)) : s < u ? (t.moveTo(s, n), t.arc(u, l, o, -A, A), t.arc(s, l, o, A, P + A)) : l < d ? (t.arc(s, l, o, -P, 0), t.arc(s, d, o, 0, P)) : t.arc(s, l, o, -P, P), t.closePath(), t.moveTo(e, n) } else t.rect(e, n, i, a) }, drawPoint: function (t, e, n, i, a, r) { var o, s, l, u, d, h = (r || 0) * T; if (e && ""object"" == typeof e && (""[object HTMLImageElement]"" === (o = e.toString()) || ""[object HTMLCanvasElement]"" === o)) return t.save(), t.translate(i, a), t.rotate(h), t.drawImage(e, -e.width / 2, -e.height / 2, e.width, e.height), void t.restore(); if (!(isNaN(n) || n <= 0)) { switch (t.beginPath(), e) { default: t.arc(i, a, n, 0, O), t.closePath(); break; case ""triangle"": t.moveTo(i + Math.sin(h) * n, a - Math.cos(h) * n), h += I, t.lineTo(i + Math.sin(h) * n, a - Math.cos(h) * n), h += I, t.lineTo(i + Math.sin(h) * n, a - Math.cos(h) * n), t.closePath(); break; case ""rectRounded"": u = n - (d = .516 * n), s = Math.cos(h + F) * u, l = Math.sin(h + F) * u, t.arc(i - s, a - l, d, h - P, h - A), t.arc(i + l, a - s, d, h - A, h), t.arc(i + s, a + l, d, h, h + A), t.arc(i - l, a + s, d, h + A, h + P), t.closePath(); break; case ""rect"": if (!r) { u = Math.SQRT1_2 * n, t.rect(i - u, a - u, 2 * u, 2 * u); break } h += F; case ""rectRot"": s = Math.cos(h) * n, l = Math.sin(h) * n, t.moveTo(i - s, a - l), t.lineTo(i + l, a - s), t.lineTo(i + s, a + l), t.lineTo(i - l, a + s), t.closePath(); break; case ""crossRot"": h += F; case ""cross"": s = Math.cos(h) * n, l = Math.sin(h) * n, t.moveTo(i - s, a - l), t.lineTo(i + s, a + l), t.moveTo(i + l, a - s), t.lineTo(i - l, a + s); break; case ""star"": s = Math.cos(h) * n, l = Math.sin(h) * n, t.moveTo(i - s, a - l), t.lineTo(i + s, a + l), t.moveTo(i + l, a - s), t.lineTo(i - l, a + s), h += F, s = Math.cos(h) * n, l = Math.sin(h) * n, t.moveTo(i - s, a - l), t.lineTo(i + s, a + l), t.moveTo(i + l, a - s), t.lineTo(i - l, a + s); break; case ""line"": s = Math.cos(h) * n, l = Math.sin(h) * n, t.moveTo(i - s, a - l), t.lineTo(i + s, a + l); break; case ""dash"": t.moveTo(i, a), t.lineTo(i + Math.cos(h) * n, a + Math.sin(h) * n) }t.fill(), t.stroke() } }, _isPointInArea: function (t, e) { return t.x > e.left - 1e-6 && t.x < e.right + 1e-6 && t.y > e.top - 1e-6 && t.y < e.bottom + 1e-6 }, clipArea: function (t, e) { t.save(), t.beginPath(), t.rect(e.left, e.top, e.right - e.left, e.bottom - e.top), t.clip() }, unclipArea: function (t) { t.restore() }, lineTo: function (t, e, n, i) { var a = n.steppedLine; if (a) { if (""middle"" === a) { var r = (e.x + n.x) / 2; t.lineTo(r, i ? n.y : e.y), t.lineTo(r, i ? e.y : n.y) } else ""after"" === a && !i || ""after"" !== a && i ? t.lineTo(e.x, n.y) : t.lineTo(n.x, e.y); t.lineTo(n.x, n.y) } else n.tension ? t.bezierCurveTo(i ? e.controlPointPreviousX : e.controlPointNextX, i ? e.controlPointPreviousY : e.controlPointNextY, i ? n.controlPointNextX : n.controlPointPreviousX, i ? n.controlPointNextY : n.controlPointPreviousY, n.x, n.y) : t.lineTo(n.x, n.y) } }, R = L; S.clear = L.clear, S.drawRoundedRectangle = function (t) { t.beginPath(), L.roundedRect.apply(L, arguments) }; var N = { _set: function (t, e) { return S.merge(this[t] || (this[t] = {}), e) } }; N._set(""global"", { defaultColor: ""rgba(0,0,0,0.1)"", defaultFontColor: ""#666"", defaultFontFamily: ""'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"", defaultFontSize: 12, defaultFontStyle: ""normal"", defaultLineHeight: 1.2, showLines: !0 }); var W = N, Y = S.valueOrDefault; var z = { toLineHeight: function (t, e) { var n = ("""" + t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)µ/); if (!n || ""normal"" === n[1]) return 1.2 * e; switch (t = +n[2], n[3]) { case ""px"": return t; case ""%"": t /= 100 }return e * t }, toPadding: function (t) { var e, n, i, a; return S.isObject(t) ? (e = +t.top || 0, n = +t.right || 0, i = +t.bottom || 0, a = +t.left || 0) : e = n = i = a = +t || 0, { top: e, right: n, bottom: i, left: a, height: e + i, width: a + n } }, _parseFont: function (t) { var e = W.global, n = Y(t.fontSize, e.defaultFontSize), i = { family: Y(t.fontFamily, e.defaultFontFamily), lineHeight: S.options.toLineHeight(Y(t.lineHeight, e.defaultLineHeight), n), size: n, style: Y(t.fontStyle, e.defaultFontStyle), weight: null, string: """" }; return i.string = function (t) { return !t || S.isNullOrUndef(t.size) || S.isNullOrUndef(t.family) ? null : (t.style ? t.style + "" "" : """") + (t.weight ? t.weight + "" "" : """") + t.size + ""px "" + t.family }(i), i }, resolve: function (t, e, n, i) { var a, r, o, s = !0; for (a = 0, r = t.length; a < r; ++a)if (void 0 !== (o = t[a]) && (void 0 !== e && ""function"" == typeof o && (o = o(e), s = !1), void 0 !== n && S.isArray(o) && (o = o[n], s = !1), void 0 !== o)) return i && !s && (i.cacheable = !1), o } }, E = { _factorize: function (t) { var e, n = [], i = Math.sqrt(t); for (e = 1; e < i; e++)t % e == 0 && (n.push(e), n.push(t / e)); return i === (0 | i) && n.push(i), n.sort((function (t, e) { return t - e })).pop(), n }, log10: Math.log10 || function (t) { var e = Math.log(t) * Math.LOG10E, n = Math.round(e); return t === Math.pow(10, n) ? n : e } }, V = E; S.log10 = E.log10; var H = S, B = C, j = R, U = z, G = V, q = { getRtlAdapter: function (t, e, n) { return t ? function (t, e) { return { x: function (n) { return t + t + e - n }, setWidth: function (t) { e = t }, textAlign: function (t) { return ""center"" === t ? t : ""right"" === t ? ""left"" : ""right"" }, xPlus: function (t, e) { return t - e }, leftForLtr: function (t, e) { return t - e } } }(e, n) : { x: function (t) { return t }, setWidth: function (t) { }, textAlign: function (t) { return t }, xPlus: function (t, e) { return t + e }, leftForLtr: function (t, e) { return t } } }, overrideTextDirection: function (t, e) { var n, i; ""ltr"" !== e && ""rtl"" !== e || (i = [(n = t.canvas.style).getPropertyValue(""direction""), n.getPropertyPriority(""direction"")], n.setProperty(""direction"", e, ""important""), t.prevTextDirection = i) }, restoreTextDirection: function (t) { var e = t.prevTextDirection; void 0 !== e && (delete t.prevTextDirection, t.canvas.style.setProperty(""direction"", e[0], e[1])) } }; H.easing = B, H.canvas = j, H.options = U, H.math = G, H.rtl = q; var Z = function (t) { H.extend(this, t), this.initialize.apply(this, arguments) }; H.extend(Z.prototype, { _type: void 0, initialize: function () { this.hidden = !1 }, pivot: function () { var t = this; return t._view || (t._view = H.extend({}, t._model)), t._start = {}, t }, transition: function (t) { var e = this, n = e._model, i = e._start, a = e._view; return n && 1 !== t ? (a || (a = e._view = {}), i || (i = e._start = {}), function (t, e, n, i) { var a, r, o, s, l, u, d, h, c, f = Object.keys(n); for (a = 0, r = f.length; a < r; ++a)if (u = n[o = f[a]], e.hasOwnProperty(o) || (e[o] = u), (s = e[o]) !== u && ""_"" !== o[0]) { if (t.hasOwnProperty(o) || (t[o] = s), (d = typeof u) === typeof (l = t[o])) if (""string"" === d) { if ((h = k(l)).valid && (c = k(u)).valid) { e[o] = c.mix(h, i).rgbString(); continue } } else if (H.isFinite(l) && H.isFinite(u)) { e[o] = l + (u - l) * i; continue } e[o] = u } }(i, a, n, t), e) : (e._view = H.extend({}, n), e._start = null, e) }, tooltipPosition: function () { return { x: this._model.x, y: this._model.y } }, hasValue: function () { return H.isNumber(this._model.x) && H.isNumber(this._model.y) } }), Z.extend = H.inherits; var µ = Z, X = µ.extend({ chart: null, currentStep: 0, numSteps: 60, easing: """", render: null, onAnimationProgress: null, onAnimationComplete: null }), K = X; Object.defineProperty(X.prototype, ""animationObject"", { get: function () { return this } }), Object.defineProperty(X.prototype, ""chartInstance"", { get: function () { return this.chart }, set: function (t) { this.chart = t } }), W._set(""global"", { animation: { duration: 1e3, easing: ""easeOutQuart"", onProgress: H.noop, onComplete: H.noop } }); var J = { animations: [], request: null, addAnimation: function (t, e, n, i) { var a, r, o = this.animations; for (e.chart = t, e.startTime = Date.now(), e.duration = n, i || (t.animating = !0), a = 0, r = o.length; a < r; ++a)if (o[a].chart === t) return void (o[a] = e); o.push(e), 1 === o.length && this.requestAnimationFrame() }, cancelAnimation: function (t) { var e = H.findIndex(this.animations, (function (e) { return e.chart === t })); -1 !== e && (this.animations.splice(e, 1), t.animating = !1) }, requestAnimationFrame: function () { var t = this; null === t.request && (t.request = H.requestAnimFrame.call(window, (function () { t.request = null, t.startDigest() }))) }, startDigest: function () { this.advance(), this.animations.length > 0 && this.requestAnimationFrame() }, advance: function () { for (var t, e, n, i, a = this.animations, r = 0; r < a.length;)e = (t = a[r]).chart, n = t.numSteps, i = Math.floor((Date.now() - t.startTime) / t.duration * n) + 1, t.currentStep = Math.min(i, n), H.callback(t.render, [e, t], e), H.callback(t.onAnimationProgress, [t], e), t.currentStep >= n ? (H.callback(t.onAnimationComplete, [t], e), e.animating = !1, a.splice(r, 1)) : ++r } }, Q = H.options.resolve, tt = [""push"", ""pop"", ""shift"", ""splice"", ""unshift""]; function et(t, e) { var n = t._chartjs; if (n) { var i = n.listeners, a = i.indexOf(e); -1 !== a && i.splice(a, 1), i.length > 0 || (tt.forEach((function (e) { delete t[e] })), delete t._chartjs) } } var nt = function (t, e) { this.initialize(t, e) }; H.extend(nt.prototype, { datasetElementType: null, dataElementType: null, _datasetElementOptions: [""backgroundColor"", ""borderCapStyle"", ""borderColor"", ""borderDash"", ""borderDashOffset"", ""borderJoinStyle"", ""borderWidth""], _dataElementOptions: [""backgroundColor"", ""borderColor"", ""borderWidth"", ""pointStyle""], initialize: function (t, e) { var n = this; n.chart = t, n.index = e, n.linkScales(), n.addElements(), n._type = n.getMeta().type }, updateIndex: function (t) { this.index = t }, linkScales: function () { var t = this.getMeta(), e = this.chart, n = e.scales, i = this.getDataset(), a = e.options.scales; null !== t.xAxisID && t.xAxisID in n && !i.xAxisID || (t.xAxisID = i.xAxisID || a.xAxes[0].id), null !== t.yAxisID && t.yAxisID in n && !i.yAxisID || (t.yAxisID = i.yAxisID || a.yAxes[0].id) }, getDataset: function () { return this.chart.data.datasets[this.index] }, getMeta: function () { return this.chart.getDatasetMeta(this.index) }, getScaleForId: function (t) { return this.chart.scales[t] }, _getValueScaleId: function () { return this.getMeta().yAxisID }, _getIndexScaleId: function () { return this.getMeta().xAxisID }, _getValueScale: function () { return this.getScaleForId(this._getValueScaleId()) }, _getIndexScale: function () { return this.getScaleForId(this._getIndexScaleId()) }, reset: function () { this._update(!0) }, destroy: function () { this._data && et(this._data, this) }, createMetaDataset: function () { var t = this.datasetElementType; return t && new t({ _chart: this.chart, _datasetIndex: this.index }) }, createMetaData: function (t) { var e = this.dataElementType; return e && new e({ _chart: this.chart, _datasetIndex: this.index, _index: t }) }, addElements: function () { var t, e, n = this.getMeta(), i = this.getDataset().data || [], a = n.data; for (t = 0, e = i.length; t < e; ++t)a[t] = a[t] || this.createMetaData(t); n.dataset = n.dataset || this.createMetaDataset() }, addElementAndReset: function (t) { var e = this.createMetaData(t); this.getMeta().data.splice(t, 0, e), this.updateElement(e, t, !0) }, buildOrUpdateElements: function () { var t, e, n = this, i = n.getDataset(), a = i.data || (i.data = []); n._data !== a && (n._data && et(n._data, n), a && Object.isExtensible(a) && (e = n, (t = a)._chartjs ? t._chartjs.listeners.push(e) : (Object.defineProperty(t, ""_chartjs"", { configurable: !0, enumerable: !1, value: { listeners: [e] } }), tt.forEach((function (e) { var n = ""onData"" + e.charAt(0).toUpperCase() + e.slice(1), i = t[e]; Object.defineProperty(t, e, { configurable: !0, enumerable: !1, value: function () { var e = Array.prototype.slice.call(arguments), a = i.apply(this, e); return H.each(t._chartjs.listeners, (function (t) { ""function"" == typeof t[n] && t[n].apply(t, e) })), a } }) })))), n._data = a), n.resyncElements() }, _configure: function () { this._config = H.merge({}, [this.chart.options.datasets[this._type], this.getDataset()], { merger: function (t, e, n) { ""_meta"" !== t && ""data"" !== t && H._merger(t, e, n) } }) }, _update: function (t) { this._configure(), this._cachedDataOpts = null, this.update(t) }, update: H.noop, transition: function (t) { for (var e = this.getMeta(), n = e.data || [], i = n.length, a = 0; a < i; ++a)n[a].transition(t); e.dataset && e.dataset.transition(t) }, draw: function () { var t = this.getMeta(), e = t.data || [], n = e.length, i = 0; for (t.dataset && t.dataset.draw(); i < n; ++i)e[i].draw() }, getStyle: function (t) { var e, n = this.getMeta(), i = n.dataset; return this._configure(), i && void 0 === t ? e = this._resolveDatasetElementOptions(i || {}) : (t = t || 0, e = this._resolveDataElementOptions(n.data[t] || {}, t)), !1 !== e.fill && null !== e.fill || (e.backgroundColor = e.borderColor), e }, _resolveDatasetElementOptions: function (t, e) { var n, i, a, r, o = this, s = o.chart, l = o._config, u = t.custom || {}, d = s.options.elements[o.datasetElementType.prototype._type] || {}, h = o._datasetElementOptions, c = {}, f = { chart: s, dataset: o.getDataset(), datasetIndex: o.index, hover: e }; for (n = 0, i = h.length; n < i; ++n)a = h[n], r = e ? ""hover"" + a.charAt(0).toUpperCase() + a.slice(1) : a, c[a] = Q([u[r], l[r], d[r]], f); return c }, _resolveDataElementOptions: function (t, e) { var n = this, i = t && t.custom, a = n._cachedDataOpts; if (a && !i) return a; var r, o, s, l, u = n.chart, d = n._config, h = u.options.elements[n.dataElementType.prototype._type] || {}, c = n._dataElementOptions, f = {}, g = { chart: u, dataIndex: e, dataset: n.getDataset(), datasetIndex: n.index }, m = { cacheable: !i }; if (i = i || {}, H.isArray(c)) for (o = 0, s = c.length; o < s; ++o)f[l = c[o]] = Q([i[l], d[l], h[l]], g, e, m); else for (o = 0, s = (r = Object.keys(c)).length; o < s; ++o)f[l = r[o]] = Q([i[l], d[c[l]], d[l], h[l]], g, e, m); return m.cacheable && (n._cachedDataOpts = Object.freeze(f)), f }, removeHoverStyle: function (t) { H.merge(t._model, t.µpreviousStyle || {}), delete t.µpreviousStyle }, setHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], n = t._index, i = t.custom || {}, a = t._model, r = H.getHoverColor; t.µpreviousStyle = { backgroundColor: a.backgroundColor, borderColor: a.borderColor, borderWidth: a.borderWidth }, a.backgroundColor = Q([i.hoverBackgroundColor, e.hoverBackgroundColor, r(a.backgroundColor)], void 0, n), a.borderColor = Q([i.hoverBorderColor, e.hoverBorderColor, r(a.borderColor)], void 0, n), a.borderWidth = Q([i.hoverBorderWidth, e.hoverBorderWidth, a.borderWidth], void 0, n) }, _removeDatasetHoverStyle: function () { var t = this.getMeta().dataset; t && this.removeHoverStyle(t) }, _setDatasetHoverStyle: function () { var t, e, n, i, a, r, o = this.getMeta().dataset, s = {}; if (o) { for (r = o._model, a = this._resolveDatasetElementOptions(o, !0), t = 0, e = (i = Object.keys(a)).length; t < e; ++t)s[n = i[t]] = r[n], r[n] = a[n]; o.µpreviousStyle = s } }, resyncElements: function () { var t = this.getMeta(), e = this.getDataset().data, n = t.data.length, i = e.length; i < n ? t.data.splice(i, n - i) : i > n && this.insertElements(n, i - n) }, insertElements: function (t, e) { for (var n = 0; n < e; ++n)this.addElementAndReset(t + n) }, onDataPush: function () { var t = arguments.length; this.insertElements(this.getDataset().data.length - t, t) }, onDataPop: function () { this.getMeta().data.pop() }, onDataShift: function () { this.getMeta().data.shift() }, onDataSplice: function (t, e) { this.getMeta().data.splice(t, e), this.insertElements(t, arguments.length - 2) }, onDataUnshift: function () { this.insertElements(0, arguments.length) } }), nt.extend = H.inherits; var it = nt, at = 2 * Math.PI; function rt(t, e) { var n = e.startAngle, i = e.endAngle, a = e.pixelMargin, r = a / e.outerRadius, o = e.x, s = e.y; t.beginPath(), t.arc(o, s, e.outerRadius, n - r, i + r), e.innerRadius > a ? (r = a / e.innerRadius, t.arc(o, s, e.innerRadius - a, i + r, n - r, !0)) : t.arc(o, s, a, i + Math.PI / 2, n - Math.PI / 2), t.closePath(), t.clip() } function ot(t, e, n) { var i = ""inner"" === e.borderAlign; i ? (t.lineWidth = 2 * e.borderWidth, t.lineJoin = ""round"") : (t.lineWidth = e.borderWidth, t.lineJoin = ""bevel""), n.fullCircles && function (t, e, n, i) { var a, r = n.endAngle; for (i && (n.endAngle = n.startAngle + at, rt(t, n), n.endAngle = r, n.endAngle === n.startAngle && n.fullCircles && (n.endAngle += at, n.fullCircles--)), t.beginPath(), t.arc(n.x, n.y, n.innerRadius, n.startAngle + at, n.startAngle, !0), a = 0; a < n.fullCircles; ++a)t.stroke(); for (t.beginPath(), t.arc(n.x, n.y, e.outerRadius, n.startAngle, n.startAngle + at), a = 0; a < n.fullCircles; ++a)t.stroke() }(t, e, n, i), i && rt(t, n), t.beginPath(), t.arc(n.x, n.y, e.outerRadius, n.startAngle, n.endAngle), t.arc(n.x, n.y, n.innerRadius, n.endAngle, n.startAngle, !0), t.closePath(), t.stroke() } W._set(""global"", { elements: { arc: { backgroundColor: W.global.defaultColor, borderColor: ""#fff"", borderWidth: 2, borderAlign: ""center"" } } }); var st = µ.extend({ _type: ""arc"", inLabelRange: function (t) { var e = this._view; return !!e && Math.pow(t - e.x, 2) < Math.pow(e.radius + e.hoverRadius, 2) }, inRange: function (t, e) { var n = this._view; if (n) { for (var i = H.getAngleFromPoint(n, { x: t, y: e }), a = i.angle, r = i.distance, o = n.startAngle, s = n.endAngle; s < o;)s += at; for (; a > s;)a -= at; for (; a < o;)a += at; var l = a >= o && a <= s, u = r >= n.innerRadius && r <= n.outerRadius; return l && u } return !1 }, getCenterPoint: function () { var t = this._view, e = (t.startAngle + t.endAngle) / 2, n = (t.innerRadius + t.outerRadius) / 2; return { x: t.x + Math.cos(e) * n, y: t.y + Math.sin(e) * n } }, getArea: function () { var t = this._view; return Math.PI * ((t.endAngle - t.startAngle) / (2 * Math.PI)) * (Math.pow(t.outerRadius, 2) - Math.pow(t.innerRadius, 2)) }, tooltipPosition: function () { var t = this._view, e = t.startAngle + (t.endAngle - t.startAngle) / 2, n = (t.outerRadius - t.innerRadius) / 2 + t.innerRadius; return { x: t.x + Math.cos(e) * n, y: t.y + Math.sin(e) * n } }, draw: function () { var t, e = this._chart.ctx, n = this._view, i = ""inner"" === n.borderAlign ? .33 : 0, a = { x: n.x, y: n.y, innerRadius: n.innerRadius, outerRadius: Math.max(n.outerRadius - i, 0), pixelMargin: i, startAngle: n.startAngle, endAngle: n.endAngle, fullCircles: Math.floor(n.circumference / at) }; if (e.save(), e.fillStyle = n.backgroundColor, e.strokeStyle = n.borderColor, a.fullCircles) { for (a.endAngle = a.startAngle + at, e.beginPath(), e.arc(a.x, a.y, a.outerRadius, a.startAngle, a.endAngle), e.arc(a.x, a.y, a.innerRadius, a.endAngle, a.startAngle, !0), e.closePath(), t = 0; t < a.fullCircles; ++t)e.fill(); a.endAngle = a.startAngle + n.circumference % at } e.beginPath(), e.arc(a.x, a.y, a.outerRadius, a.startAngle, a.endAngle), e.arc(a.x, a.y, a.innerRadius, a.endAngle, a.startAngle, !0), e.closePath(), e.fill(), n.borderWidth && ot(e, n, a), e.restore() } }), lt = H.valueOrDefault, ut = W.global.defaultColor; W._set(""global"", { elements: { line: { tension: .4, backgroundColor: ut, borderWidth: 3, borderColor: ut, borderCapStyle: ""butt"", borderDash: [], borderDashOffset: 0, borderJoinStyle: ""miter"", capBezierPoints: !0, fill: !0 } } }); var dt = µ.extend({ _type: ""line"", draw: function () { var t, e, n, i = this, a = i._view, r = i._chart.ctx, o = a.spanGaps, s = i._children.slice(), l = W.global, u = l.elements.line, d = -1, h = i._loop; if (s.length) { if (i._loop) { for (t = 0; t < s.length; ++t)if (e = H.previousItem(s, t), !s[t]._view.skip && e._view.skip) { s = s.slice(t).concat(s.slice(0, t)), h = o; break } h && s.push(s[0]) } for (r.save(), r.lineCap = a.borderCapStyle || u.borderCapStyle, r.setLineDash && r.setLineDash(a.borderDash || u.borderDash), r.lineDashOffset = lt(a.borderDashOffset, u.borderDashOffset), r.lineJoin = a.borderJoinStyle || u.borderJoinStyle, r.lineWidth = lt(a.borderWidth, u.borderWidth), r.strokeStyle = a.borderColor || l.defaultColor, r.beginPath(), (n = s[0]._view).skip || (r.moveTo(n.x, n.y), d = 0), t = 1; t < s.length; ++t)n = s[t]._view, e = -1 === d ? H.previousItem(s, t) : s[d], n.skip || (d !== t - 1 && !o || -1 === d ? r.moveTo(n.x, n.y) : H.canvas.lineTo(r, e._view, n), d = t); h && r.closePath(), r.stroke(), r.restore() } } }), ht = H.valueOrDefault, ct = W.global.defaultColor; function ft(t) { var e = this._view; return !!e && Math.abs(t - e.x) < e.radius + e.hitRadius } W._set(""global"", { elements: { point: { radius: 3, pointStyle: ""circle"", backgroundColor: ct, borderColor: ct, borderWidth: 1, hitRadius: 1, hoverRadius: 4, hoverBorderWidth: 1 } } }); var gt = µ.extend({ _type: ""point"", inRange: function (t, e) { var n = this._view; return !!n && Math.pow(t - n.x, 2) + Math.pow(e - n.y, 2) < Math.pow(n.hitRadius + n.radius, 2) }, inLabelRange: ft, inXRange: ft, inYRange: function (t) { var e = this._view; return !!e && Math.abs(t - e.y) < e.radius + e.hitRadius }, getCenterPoint: function () { var t = this._view; return { x: t.x, y: t.y } }, getArea: function () { return Math.PI * Math.pow(this._view.radius, 2) }, tooltipPosition: function () { var t = this._view; return { x: t.x, y: t.y, padding: t.radius + t.borderWidth } }, draw: function (t) { var e = this._view, n = this._chart.ctx, i = e.pointStyle, a = e.rotation, r = e.radius, o = e.x, s = e.y, l = W.global, u = l.defaultColor; e.skip || (void 0 === t || H.canvas._isPointInArea(e, t)) && (n.strokeStyle = e.borderColor || u, n.lineWidth = ht(e.borderWidth, l.elements.point.borderWidth), n.fillStyle = e.backgroundColor || u, H.canvas.drawPoint(n, i, r, o, s, a)) } }), mt = W.global.defaultColor; function pt(t) { return t && void 0 !== t.width } function vt(t) { var e, n, i, a, r; return pt(t) ? (r = t.width / 2, e = t.x - r, n = t.x + r, i = Math.min(t.y, t.base), a = Math.max(t.y, t.base)) : (r = t.height / 2, e = Math.min(t.x, t.base), n = Math.max(t.x, t.base), i = t.y - r, a = t.y + r), { left: e, top: i, right: n, bottom: a } } function bt(t, e, n) { return t === e ? n : t === n ? e : t } function yt(t, e, n) { var i, a, r, o, s = t.borderWidth, l = function (t) { var e = t.borderSkipped, n = {}; return e ? (t.horizontal ? t.base > t.x && (e = bt(e, ""left"", ""right"")) : t.base < t.y && (e = bt(e, ""bottom"", ""top"")), n[e] = !0, n) : n }(t); return H.isObject(s) ? (i = +s.top || 0, a = +s.right || 0, r = +s.bottom || 0, o = +s.left || 0) : i = a = r = o = +s || 0, { t: l.top || i < 0 ? 0 : i > n ? n : i, r: l.right || a < 0 ? 0 : a > e ? e : a, b: l.bottom || r < 0 ? 0 : r > n ? n : r, l: l.left || o < 0 ? 0 : o > e ? e : o } } function xt(t, e, n) { var i = null === e, a = null === n, r = !(!t || i && a) && vt(t); return r && (i || e >= r.left && e <= r.right) && (a || n >= r.top && n <= r.bottom) } W._set(""global"", { elements: { rectangle: { backgroundColor: mt, borderColor: mt, borderSkipped: ""bottom"", borderWidth: 0 } } }); var _t = µ.extend({ _type: ""rectangle"", draw: function () { var t = this._chart.ctx, e = this._view, n = function (t) { var e = vt(t), n = e.right - e.left, i = e.bottom - e.top, a = yt(t, n / 2, i / 2); return { outer: { x: e.left, y: e.top, w: n, h: i }, inner: { x: e.left + a.l, y: e.top + a.t, w: n - a.l - a.r, h: i - a.t - a.b } } }(e), i = n.outer, a = n.inner; t.fillStyle = e.backgroundColor, t.fillRect(i.x, i.y, i.w, i.h), i.w === a.w && i.h === a.h || (t.save(), t.beginPath(), t.rect(i.x, i.y, i.w, i.h), t.clip(), t.fillStyle = e.borderColor, t.rect(a.x, a.y, a.w, a.h), t.fill(""evenodd""), t.restore()) }, height: function () { var t = this._view; return t.base - t.y }, inRange: function (t, e) { return xt(this._view, t, e) }, inLabelRange: function (t, e) { var n = this._view; return pt(n) ? xt(n, t, null) : xt(n, null, e) }, inXRange: function (t) { return xt(this._view, t, null) }, inYRange: function (t) { return xt(this._view, null, t) }, getCenterPoint: function () { var t, e, n = this._view; return pt(n) ? (t = n.x, e = (n.y + n.base) / 2) : (t = (n.x + n.base) / 2, e = n.y), { x: t, y: e } }, getArea: function () { var t = this._view; return pt(t) ? t.width * Math.abs(t.y - t.base) : t.height * Math.abs(t.x - t.base) }, tooltipPosition: function () { var t = this._view; return { x: t.x, y: t.y } } }), wt = {}, kt = st, Mt = dt, St = gt, Dt = _t; wt.Arc = kt, wt.Line = Mt, wt.Point = St, wt.Rectangle = Dt; var Ct = H._deprecated, Pt = H.valueOrDefault; function Tt(t, e, n) { var i, a, r = n.barThickness, o = e.stackCount, s = e.pixels[t], l = H.isNullOrUndef(r) ? function (t, e) { var n, i, a, r, o = t._length; for (a = 1, r = e.length; a < r; ++a)o = Math.min(o, Math.abs(e[a] - e[a - 1])); for (a = 0, r = t.getTicks().length; a < r; ++a)i = t.getPixelForTick(a), o = a > 0 ? Math.min(o, Math.abs(i - n)) : o, n = i; return o }(e.scale, e.pixels) : -1; return H.isNullOrUndef(r) ? (i = l * n.categoryPercentage, a = n.barPercentage) : (i = r * o, a = 1), { chunk: i / o, ratio: a, start: s - i / 2 } } W._set(""bar"", { hover: { mode: ""label"" }, scales: { xAxes: [{ type: ""category"", offset: !0, gridLines: { offsetGridLines: !0 } }], yAxes: [{ type: ""linear"" }] } }), W._set(""global"", { datasets: { bar: { categoryPercentage: .8, barPercentage: .9 } } }); var Ot = it.extend({ dataElementType: wt.Rectangle, _dataElementOptions: [""backgroundColor"", ""borderColor"", ""borderSkipped"", ""borderWidth"", ""barPercentage"", ""barThickness"", ""categoryPercentage"", ""maxBarThickness"", ""minBarLength""], initialize: function () { var t, e, n = this; it.prototype.initialize.apply(n, arguments), (t = n.getMeta()).stack = n.getDataset().stack, t.bar = !0, e = n._getIndexScale().options, Ct(""bar chart"", e.barPercentage, ""scales.[x/y]Axes.barPercentage"", ""dataset.barPercentage""), Ct(""bar chart"", e.barThickness, ""scales.[x/y]Axes.barThickness"", ""dataset.barThickness""), Ct(""bar chart"", e.categoryPercentage, ""scales.[x/y]Axes.categoryPercentage"", ""dataset.categoryPercentage""), Ct(""bar chart"", n._getValueScale().options.minBarLength, ""scales.[x/y]Axes.minBarLength"", ""dataset.minBarLength""), Ct(""bar chart"", e.maxBarThickness, ""scales.[x/y]Axes.maxBarThickness"", ""dataset.maxBarThickness"") }, update: function (t) { var e, n, i = this.getMeta().data; for (this._ruler = this.getRuler(), e = 0, n = i.length; e < n; ++e)this.updateElement(i[e], e, t) }, updateElement: function (t, e, n) { var i = this, a = i.getMeta(), r = i.getDataset(), o = i._resolveDataElementOptions(t, e); t._xScale = i.getScaleForId(a.xAxisID), t._yScale = i.getScaleForId(a.yAxisID), t._datasetIndex = i.index, t._index = e, t._model = { backgroundColor: o.backgroundColor, borderColor: o.borderColor, borderSkipped: o.borderSkipped, borderWidth: o.borderWidth, datasetLabel: r.label, label: i.chart.data.labels[e] }, H.isArray(r.data[e]) && (t._model.borderSkipped = null), i._updateElementGeometry(t, e, n, o), t.pivot() }, _updateElementGeometry: function (t, e, n, i) { var a = this, r = t._model, o = a._getValueScale(), s = o.getBasePixel(), l = o.isHorizontal(), u = a._ruler || a.getRuler(), d = a.calculateBarValuePixels(a.index, e, i), h = a.calculateBarIndexPixels(a.index, e, u, i); r.horizontal = l, r.base = n ? s : d.base, r.x = l ? n ? s : d.head : h.center, r.y = l ? h.center : n ? s : d.head, r.height = l ? h.size : void 0, r.width = l ? void 0 : h.size }, _getStacks: function (t) { var e, n, i = this._getIndexScale(), a = i._getMatchingVisibleMetas(this._type), r = i.options.stacked, o = a.length, s = []; for (e = 0; e < o && (n = a[e], (!1 === r || -1 === s.indexOf(n.stack) || void 0 === r && void 0 === n.stack) && s.push(n.stack), n.index !== t); ++e); return s }, getStackCount: function () { return this._getStacks().length }, getStackIndex: function (t, e) { var n = this._getStacks(t), i = void 0 !== e ? n.indexOf(e) : -1; return -1 === i ? n.length - 1 : i }, getRuler: function () { var t, e, n = this._getIndexScale(), i = []; for (t = 0, e = this.getMeta().data.length; t < e; ++t)i.push(n.getPixelForValue(null, t, this.index)); return { pixels: i, start: n._startPixel, end: n._endPixel, stackCount: this.getStackCount(), scale: n } }, calculateBarValuePixels: function (t, e, n) { var i, a, r, o, s, l, u, d = this.chart, h = this._getValueScale(), c = h.isHorizontal(), f = d.data.datasets, g = h._getMatchingVisibleMetas(this._type), m = h._parseValue(f[t].data[e]), p = n.minBarLength, v = h.options.stacked, b = this.getMeta().stack, y = void 0 === m.start ? 0 : m.max >= 0 && m.min >= 0 ? m.min : m.max, x = void 0 === m.start ? m.end : m.max >= 0 && m.min >= 0 ? m.max - m.min : m.min - m.max, _ = g.length; if (v || void 0 === v && void 0 !== b) for (i = 0; i < _ && (a = g[i]).index !== t; ++i)a.stack === b && (r = void 0 === (u = h._parseValue(f[a.index].data[e])).start ? u.end : u.min >= 0 && u.max >= 0 ? u.max : u.min, (m.min < 0 && r < 0 || m.max >= 0 && r > 0) && (y += r)); return o = h.getPixelForValue(y), l = (s = h.getPixelForValue(y + x)) - o, void 0 !== p && Math.abs(l) < p && (l = p, s = x >= 0 && !c || x < 0 && c ? o - p : o + p), { size: l, base: o, head: s, center: s + l / 2 } }, calculateBarIndexPixels: function (t, e, n, i) { var a = ""flex"" === i.barThickness ? function (t, e, n) { var i, a = e.pixels, r = a[t], o = t > 0 ? a[t - 1] : null, s = t < a.length - 1 ? a[t + 1] : null, l = n.categoryPercentage; return null === o && (o = r - (null === s ? e.end - e.start : s - r)), null === s && (s = r + r - o), i = r - (r - Math.min(o, s)) / 2 * l, { chunk: Math.abs(s - o) / 2 * l / e.stackCount, ratio: n.barPercentage, start: i } }(e, n, i) : Tt(e, n, i), r = this.getStackIndex(t, this.getMeta().stack), o = a.start + a.chunk * r + a.chunk / 2, s = Math.min(Pt(i.maxBarThickness, 1 / 0), a.chunk * a.ratio); return { base: o - s / 2, head: o + s / 2, center: o, size: s } }, draw: function () { var t = this.chart, e = this._getValueScale(), n = this.getMeta().data, i = this.getDataset(), a = n.length, r = 0; for (H.canvas.clipArea(t.ctx, t.chartArea); r < a; ++r) { var o = e._parseValue(i.data[r]); isNaN(o.min) || isNaN(o.max) || n[r].draw() } H.canvas.unclipArea(t.ctx) }, _resolveDataElementOptions: function () { var t = this, e = H.extend({}, it.prototype._resolveDataElementOptions.apply(t, arguments)), n = t._getIndexScale().options, i = t._getValueScale().options; return e.barPercentage = Pt(n.barPercentage, e.barPercentage), e.barThickness = Pt(n.barThickness, e.barThickness), e.categoryPercentage = Pt(n.categoryPercentage, e.categoryPercentage), e.maxBarThickness = Pt(n.maxBarThickness, e.maxBarThickness), e.minBarLength = Pt(i.minBarLength, e.minBarLength), e } }), At = H.valueOrDefault, Ft = H.options.resolve; W._set(""bubble"", { hover: { mode: ""single"" }, scales: { xAxes: [{ type: ""linear"", position: ""bottom"", id: ""x-axis-0"" }], yAxes: [{ type: ""linear"", position: ""left"", id: ""y-axis-0"" }] }, tooltips: { callbacks: { title: function () { return """" }, label: function (t, e) { var n = e.datasets[t.datasetIndex].label || """", i = e.datasets[t.datasetIndex].data[t.index]; return n + "": ("" + t.xLabel + "", "" + t.yLabel + "", "" + i.r + "")"" } } } }); var It = it.extend({ dataElementType: wt.Point, _dataElementOptions: [""backgroundColor"", ""borderColor"", ""borderWidth"", ""hoverBackgroundColor"", ""hoverBorderColor"", ""hoverBorderWidth"", ""hoverRadius"", ""hitRadius"", ""pointStyle"", ""rotation""], update: function (t) { var e = this, n = e.getMeta().data; H.each(n, (function (n, i) { e.updateElement(n, i, t) })) }, updateElement: function (t, e, n) { var i = this, a = i.getMeta(), r = t.custom || {}, o = i.getScaleForId(a.xAxisID), s = i.getScaleForId(a.yAxisID), l = i._resolveDataElementOptions(t, e), u = i.getDataset().data[e], d = i.index, h = n ? o.getPixelForDecimal(.5) : o.getPixelForValue(""object"" == typeof u ? u : NaN, e, d), c = n ? s.getBasePixel() : s.getPixelForValue(u, e, d); t._xScale = o, t._yScale = s, t._options = l, t._datasetIndex = d, t._index = e, t._model = { backgroundColor: l.backgroundColor, borderColor: l.borderColor, borderWidth: l.borderWidth, hitRadius: l.hitRadius, pointStyle: l.pointStyle, rotation: l.rotation, radius: n ? 0 : l.radius, skip: r.skip || isNaN(h) || isNaN(c), x: h, y: c }, t.pivot() }, setHoverStyle: function (t) { var e = t._model, n = t._options, i = H.getHoverColor; t.µpreviousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth, radius: e.radius }, e.backgroundColor = At(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = At(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = At(n.hoverBorderWidth, n.borderWidth), e.radius = n.radius + n.hoverRadius }, _resolveDataElementOptions: function (t, e) { var n = this, i = n.chart, a = n.getDataset(), r = t.custom || {}, o = a.data[e] || {}, s = it.prototype._resolveDataElementOptions.apply(n, arguments), l = { chart: i, dataIndex: e, dataset: a, datasetIndex: n.index }; return n._cachedDataOpts === s && (s = H.extend({}, s)), s.radius = Ft([r.radius, o.r, n._config.radius, i.options.elements.point.radius], l, e), s } }), Lt = H.valueOrDefault, Rt = Math.PI, Nt = 2 * Rt, Wt = Rt / 2; W._set(""doughnut"", { animation: { animateRotate: !0, animateScale: !1 }, hover: { mode: ""single"" }, legendCallback: function (t) { var e, n, i, a = document.createElement(""ul""), r = t.data, o = r.datasets, s = r.labels; if (a.setAttribute(""class"", t.id + ""-legend""), o.length) for (e = 0, n = o[0].data.length; e < n; ++e)(i = a.appendChild(document.createElement(""li""))).appendChild(document.createElement(""span"")).style.backgroundColor = o[0].backgroundColor[e], s[e] && i.appendChild(document.createTextNode(s[e])); return a.outerHTML }, legend: { labels: { generateLabels: function (t) { var e = t.data; return e.labels.length && e.datasets.length ? e.labels.map((function (n, i) { var a = t.getDatasetMeta(0), r = a.controller.getStyle(i); return { text: n, fillStyle: r.backgroundColor, strokeStyle: r.borderColor, lineWidth: r.borderWidth, hidden: isNaN(e.datasets[0].data[i]) || a.data[i].hidden, index: i } })) : [] } }, onClick: function (t, e) { var n, i, a, r = e.index, o = this.chart; for (n = 0, i = (o.data.datasets || []).length; n < i; ++n)(a = o.getDatasetMeta(n)).data[r] && (a.data[r].hidden = !a.data[r].hidden); o.update() } }, cutoutPercentage: 50, rotation: -Wt, circumference: Nt, tooltips: { callbacks: { title: function () { return """" }, label: function (t, e) { var n = e.labels[t.index], i = "": "" + e.datasets[t.datasetIndex].data[t.index]; return H.isArray(n) ? (n = n.slice())[0] += i : n += i, n } } } }); var Yt = it.extend({ dataElementType: wt.Arc, linkScales: H.noop, _dataElementOptions: [""backgroundColor"", ""borderColor"", ""borderWidth"", ""borderAlign"", ""hoverBackgroundColor"", ""hoverBorderColor"", ""hoverBorderWidth""], getRingIndex: function (t) { for (var e = 0, n = 0; n < t; ++n)this.chart.isDatasetVisible(n) && ++e; return e }, update: function (t) { var e, n, i, a, r = this, o = r.chart, s = o.chartArea, l = o.options, u = 1, d = 1, h = 0, c = 0, f = r.getMeta(), g = f.data, m = l.cutoutPercentage / 100 || 0, p = l.circumference, v = r._getRingWeight(r.index); if (p < Nt) { var b = l.rotation % Nt, y = (b += b >= Rt ? -Nt : b < -Rt ? Nt : 0) + p, x = Math.cos(b), _ = Math.sin(b), w = Math.cos(y), k = Math.sin(y), M = b <= 0 && y >= 0 || y >= Nt, S = b <= Wt && y >= Wt || y >= Nt + Wt, D = b <= -Wt && y >= -Wt || y >= Rt + Wt, C = b === -Rt || y >= Rt ? -1 : Math.min(x, x * m, w, w * m), P = D ? -1 : Math.min(_, _ * m, k, k * m), T = M ? 1 : Math.max(x, x * m, w, w * m), O = S ? 1 : Math.max(_, _ * m, k, k * m); u = (T - C) / 2, d = (O - P) / 2, h = -(T + C) / 2, c = -(O + P) / 2 } for (i = 0, a = g.length; i < a; ++i)g[i]._options = r._resolveDataElementOptions(g[i], i); for (o.borderWidth = r.getMaxBorderWidth(), e = (s.right - s.left - o.borderWidth) / u, n = (s.bottom - s.top - o.borderWidth) / d, o.outerRadius = Math.max(Math.min(e, n) / 2, 0), o.innerRadius = Math.max(o.outerRadius * m, 0), o.radiusLength = (o.outerRadius - o.innerRadius) / (r._getVisibleDatasetWeightTotal() || 1), o.offsetX = h * o.outerRadius, o.offsetY = c * o.outerRadius, f.total = r.calculateTotal(), r.outerRadius = o.outerRadius - o.radiusLength * r._getRingWeightOffset(r.index), r.innerRadius = Math.max(r.outerRadius - o.radiusLength * v, 0), i = 0, a = g.length; i < a; ++i)r.updateElement(g[i], i, t) }, updateElement: function (t, e, n) { var i = this, a = i.chart, r = a.chartArea, o = a.options, s = o.animation, l = (r.left + r.right) / 2, u = (r.top + r.bottom) / 2, d = o.rotation, h = o.rotation, c = i.getDataset(), f = n && s.animateRotate ? 0 : t.hidden ? 0 : i.calculateCircumference(c.data[e]) * (o.circumference / Nt), g = n && s.animateScale ? 0 : i.innerRadius, m = n && s.animateScale ? 0 : i.outerRadius, p = t._options || {}; H.extend(t, { _datasetIndex: i.index, _index: e, _model: { backgroundColor: p.backgroundColor, borderColor: p.borderColor, borderWidth: p.borderWidth, borderAlign: p.borderAlign, x: l + a.offsetX, y: u + a.offsetY, startAngle: d, endAngle: h, circumference: f, outerRadius: m, innerRadius: g, label: H.valueAtIndexOrDefault(c.label, e, a.data.labels[e]) } }); var v = t._model; n && s.animateRotate || (v.startAngle = 0 === e ? o.rotation : i.getMeta().data[e - 1]._model.endAngle, v.endAngle = v.startAngle + v.circumference), t.pivot() }, calculateTotal: function () { var t, e = this.getDataset(), n = this.getMeta(), i = 0; return H.each(n.data, (function (n, a) { t = e.data[a], isNaN(t) || n.hidden || (i += Math.abs(t)) })), i }, calculateCircumference: function (t) { var e = this.getMeta().total; return e > 0 && !isNaN(t) ? Nt * (Math.abs(t) / e) : 0 }, getMaxBorderWidth: function (t) { var e, n, i, a, r, o, s, l, u = 0, d = this.chart; if (!t) for (e = 0, n = d.data.datasets.length; e < n; ++e)if (d.isDatasetVisible(e)) { t = (i = d.getDatasetMeta(e)).data, e !== this.index && (r = i.controller); break } if (!t) return 0; for (e = 0, n = t.length; e < n; ++e)a = t[e], r ? (r._configure(), o = r._resolveDataElementOptions(a, e)) : o = a._options, ""inner"" !== o.borderAlign && (s = o.borderWidth, u = (l = o.hoverBorderWidth) > (u = s > u ? s : u) ? l : u); return u }, setHoverStyle: function (t) { var e = t._model, n = t._options, i = H.getHoverColor; t.µpreviousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth }, e.backgroundColor = Lt(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = Lt(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = Lt(n.hoverBorderWidth, n.borderWidth) }, _getRingWeightOffset: function (t) { for (var e = 0, n = 0; n < t; ++n)this.chart.isDatasetVisible(n) && (e += this._getRingWeight(n)); return e }, _getRingWeight: function (t) { return Math.max(Lt(this.chart.data.datasets[t].weight, 1), 0) }, _getVisibleDatasetWeightTotal: function () { return this._getRingWeightOffset(this.chart.data.datasets.length) } }); W._set(""horizontalBar"", { hover: { mode: ""index"", axis: ""y"" }, scales: { xAxes: [{ type: ""linear"", position: ""bottom"" }], yAxes: [{ type: ""category"", position: ""left"", offset: !0, gridLines: { offsetGridLines: !0 } }] }, elements: { rectangle: { borderSkipped: ""left"" } }, tooltips: { mode: ""index"", axis: ""y"" } }), W._set(""global"", { datasets: { horizontalBar: { categoryPercentage: .8, barPercentage: .9 } } }); var zt = Ot.extend({ _getValueScaleId: function () { return this.getMeta().xAxisID }, _getIndexScaleId: function () { return this.getMeta().yAxisID } }), Et = H.valueOrDefault, Vt = H.options.resolve, Ht = H.canvas._isPointInArea; function Bt(t, e) { var n = t && t.options.ticks || {}, i = n.reverse, a = void 0 === n.min ? e : 0, r = void 0 === n.max ? e : 0; return { start: i ? r : a, end: i ? a : r } } function jt(t, e, n) { var i = n / 2, a = Bt(t, i), r = Bt(e, i); return { top: r.end, right: a.end, bottom: r.start, left: a.start } } function Ut(t) { var e, n, i, a; return H.isObject(t) ? (e = t.top, n = t.right, i = t.bottom, a = t.left) : e = n = i = a = t, { top: e, right: n, bottom: i, left: a } } W._set(""line"", { showLines: !0, spanGaps: !1, hover: { mode: ""label"" }, scales: { xAxes: [{ type: ""category"", id: ""x-axis-0"" }], yAxes: [{ type: ""linear"", id: ""y-axis-0"" }] } }); var Gt = it.extend({ datasetElementType: wt.Line, dataElementType: wt.Point, _datasetElementOptions: [""backgroundColor"", ""borderCapStyle"", ""borderColor"", ""borderDash"", ""borderDashOffset"", ""borderJoinStyle"", ""borderWidth"", ""cubicInterpolationMode"", ""fill""], _dataElementOptions: { backgroundColor: ""pointBackgroundColor"", borderColor: ""pointBorderColor"", borderWidth: ""pointBorderWidth"", hitRadius: ""pointHitRadius"", hoverBackgroundColor: ""pointHoverBackgroundColor"", hoverBorderColor: ""pointHoverBorderColor"", hoverBorderWidth: ""pointHoverBorderWidth"", hoverRadius: ""pointHoverRadius"", pointStyle: ""pointStyle"", radius: ""pointRadius"", rotation: ""pointRotation"" }, update: function (t) { var e, n, i = this, a = i.getMeta(), r = a.dataset, o = a.data || [], s = i.chart.options, l = i._config, u = i._showLine = Et(l.showLine, s.showLines); for (i._xScale = i.getScaleForId(a.xAxisID), i._yScale = i.getScaleForId(a.yAxisID), u && (void 0 !== l.tension && void 0 === l.lineTension && (l.lineTension = l.tension), r._scale = i._yScale, r._datasetIndex = i.index, r._children = o, r._model = i._resolveDatasetElementOptions(r), r.pivot()), e = 0, n = o.length; e < n; ++e)i.updateElement(o[e], e, t); for (u && 0 !== r._model.tension && i.updateBezierControlPoints(), e = 0, n = o.length; e < n; ++e)o[e].pivot() }, updateElement: function (t, e, n) { var i, a, r = this, o = r.getMeta(), s = t.custom || {}, l = r.getDataset(), u = r.index, d = l.data[e], h = r._xScale, c = r._yScale, f = o.dataset._model, g = r._resolveDataElementOptions(t, e); i = h.getPixelForValue(""object"" == typeof d ? d : NaN, e, u), a = n ? c.getBasePixel() : r.calculatePointY(d, e, u), t._xScale = h, t._yScale = c, t._options = g, t._datasetIndex = u, t._index = e, t._model = { x: i, y: a, skip: s.skip || isNaN(i) || isNaN(a), radius: g.radius, pointStyle: g.pointStyle, rotation: g.rotation, backgroundColor: g.backgroundColor, borderColor: g.borderColor, borderWidth: g.borderWidth, tension: Et(s.tension, f ? f.tension : 0), steppedLine: !!f && f.steppedLine, hitRadius: g.hitRadius } }, _resolveDatasetElementOptions: function (t) { var e = this, n = e._config, i = t.custom || {}, a = e.chart.options, r = a.elements.line, o = it.prototype._resolveDatasetElementOptions.apply(e, arguments); return o.spanGaps = Et(n.spanGaps, a.spanGaps), o.tension = Et(n.lineTension, r.tension), o.steppedLine = Vt([i.steppedLine, n.steppedLine, r.stepped]), o.clip = Ut(Et(n.clip, jt(e._xScale, e._yScale, o.borderWidth))), o }, calculatePointY: function (t, e, n) { var i, a, r, o, s, l, u, d = this.chart, h = this._yScale, c = 0, f = 0; if (h.options.stacked) { for (s = +h.getRightValue(t), u = (l = d._getSortedVisibleDatasetMetas()).length, i = 0; i < u && (r = l[i]).index !== n; ++i)a = d.data.datasets[r.index], ""line"" === r.type && r.yAxisID === h.id && ((o = +h.getRightValue(a.data[e])) < 0 ? f += o || 0 : c += o || 0); return s < 0 ? h.getPixelForValue(f + s) : h.getPixelForValue(c + s) } return h.getPixelForValue(t) }, updateBezierControlPoints: function () { var t, e, n, i, a = this.chart, r = this.getMeta(), o = r.dataset._model, s = a.chartArea, l = r.data || []; function u(t, e, n) { return Math.max(Math.min(t, n), e) } if (o.spanGaps && (l = l.filter((function (t) { return !t._model.skip }))), ""monotone"" === o.cubicInterpolationMode) H.splineCurveMonotone(l); else for (t = 0, e = l.length; t < e; ++t)n = l[t]._model, i = H.splineCurve(H.previousItem(l, t)._model, n, H.nextItem(l, t)._model, o.tension), n.controlPointPreviousX = i.previous.x, n.controlPointPreviousY = i.previous.y, n.controlPointNextX = i.next.x, n.controlPointNextY = i.next.y; if (a.options.elements.line.capBezierPoints) for (t = 0, e = l.length; t < e; ++t)n = l[t]._model, Ht(n, s) && (t > 0 && Ht(l[t - 1]._model, s) && (n.controlPointPreviousX = u(n.controlPointPreviousX, s.left, s.right), n.controlPointPreviousY = u(n.controlPointPreviousY, s.top, s.bottom)), t < l.length - 1 && Ht(l[t + 1]._model, s) && (n.controlPointNextX = u(n.controlPointNextX, s.left, s.right), n.controlPointNextY = u(n.controlPointNextY, s.top, s.bottom))) }, draw: function () { var t, e = this.chart, n = this.getMeta(), i = n.data || [], a = e.chartArea, r = e.canvas, o = 0, s = i.length; for (this._showLine && (t = n.dataset._model.clip, H.canvas.clipArea(e.ctx, { left: !1 === t.left ? 0 : a.left - t.left, right: !1 === t.right ? r.width : a.right + t.right, top: !1 === t.top ? 0 : a.top - t.top, bottom: !1 === t.bottom ? r.height : a.bottom + t.bottom }), n.dataset.draw(), H.canvas.unclipArea(e.ctx)); o < s; ++o)i[o].draw(a) }, setHoverStyle: function (t) { var e = t._model, n = t._options, i = H.getHoverColor; t.µpreviousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth, radius: e.radius }, e.backgroundColor = Et(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = Et(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = Et(n.hoverBorderWidth, n.borderWidth), e.radius = Et(n.hoverRadius, n.radius) } }), qt = H.options.resolve; W._set(""polarArea"", { scale: { type: ""radialLinear"", angleLines: { display: !1 }, gridLines: { circular: !0 }, pointLabels: { display: !1 }, ticks: { beginAtZero: !0 } }, animation: { animateRotate: !0, animateScale: !0 }, startAngle: -.5 * Math.PI, legendCallback: function (t) { var e, n, i, a = document.createElement(""ul""), r = t.data, o = r.datasets, s = r.labels; if (a.setAttribute(""class"", t.id + ""-legend""), o.length) for (e = 0, n = o[0].data.length; e < n; ++e)(i = a.appendChild(document.createElement(""li""))).appendChild(document.createElement(""span"")).style.backgroundColor = o[0].backgroundColor[e], s[e] && i.appendChild(document.createTextNode(s[e])); return a.outerHTML }, legend: { labels: { generateLabels: function (t) { var e = t.data; return e.labels.length && e.datasets.length ? e.labels.map((function (n, i) { var a = t.getDatasetMeta(0), r = a.controller.getStyle(i); return { text: n, fillStyle: r.backgroundColor, strokeStyle: r.borderColor, lineWidth: r.borderWidth, hidden: isNaN(e.datasets[0].data[i]) || a.data[i].hidden, index: i } })) : [] } }, onClick: function (t, e) { var n, i, a, r = e.index, o = this.chart; for (n = 0, i = (o.data.datasets || []).length; n < i; ++n)(a = o.getDatasetMeta(n)).data[r].hidden = !a.data[r].hidden; o.update() } }, tooltips: { callbacks: { title: function () { return """" }, label: function (t, e) { return e.labels[t.index] + "": "" + t.yLabel } } } }); var Zt = it.extend({ dataElementType: wt.Arc, linkScales: H.noop, _dataElementOptions: [""backgroundColor"", ""borderColor"", ""borderWidth"", ""borderAlign"", ""hoverBackgroundColor"", ""hoverBorderColor"", ""hoverBorderWidth""], _getIndexScaleId: function () { return this.chart.scale.id }, _getValueScaleId: function () { return this.chart.scale.id }, update: function (t) { var e, n, i, a = this, r = a.getDataset(), o = a.getMeta(), s = a.chart.options.startAngle || 0, l = a._starts = [], u = a._angles = [], d = o.data; for (a._updateRadius(), o.count = a.countVisibleElements(), e = 0, n = r.data.length; e < n; e++)l[e] = s, i = a._computeAngle(e), u[e] = i, s += i; for (e = 0, n = d.length; e < n; ++e)d[e]._options = a._resolveDataElementOptions(d[e], e), a.updateElement(d[e], e, t) }, _updateRadius: function () { var t = this, e = t.chart, n = e.chartArea, i = e.options, a = Math.min(n.right - n.left, n.bottom - n.top); e.outerRadius = Math.max(a / 2, 0), e.innerRadius = Math.max(i.cutoutPercentage ? e.outerRadius / 100 * i.cutoutPercentage : 1, 0), e.radiusLength = (e.outerRadius - e.innerRadius) / e.getVisibleDatasetCount(), t.outerRadius = e.outerRadius - e.radiusLength * t.index, t.innerRadius = t.outerRadius - e.radiusLength }, updateElement: function (t, e, n) { var i = this, a = i.chart, r = i.getDataset(), o = a.options, s = o.animation, l = a.scale, u = a.data.labels, d = l.xCenter, h = l.yCenter, c = o.startAngle, f = t.hidden ? 0 : l.getDistanceFromCenterForValue(r.data[e]), g = i._starts[e], m = g + (t.hidden ? 0 : i._angles[e]), p = s.animateScale ? 0 : l.getDistanceFromCenterForValue(r.data[e]), v = t._options || {}; H.extend(t, { _datasetIndex: i.index, _index: e, _scale: l, _model: { backgroundColor: v.backgroundColor, borderColor: v.borderColor, borderWidth: v.borderWidth, borderAlign: v.borderAlign, x: d, y: h, innerRadius: 0, outerRadius: n ? p : f, startAngle: n && s.animateRotate ? c : g, endAngle: n && s.animateRotate ? c : m, label: H.valueAtIndexOrDefault(u, e, u[e]) } }), t.pivot() }, countVisibleElements: function () { var t = this.getDataset(), e = this.getMeta(), n = 0; return H.each(e.data, (function (e, i) { isNaN(t.data[i]) || e.hidden || n++ })), n }, setHoverStyle: function (t) { var e = t._model, n = t._options, i = H.getHoverColor, a = H.valueOrDefault; t.µpreviousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth }, e.backgroundColor = a(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = a(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = a(n.hoverBorderWidth, n.borderWidth) }, _computeAngle: function (t) { var e = this, n = this.getMeta().count, i = e.getDataset(), a = e.getMeta(); if (isNaN(i.data[t]) || a.data[t].hidden) return 0; var r = { chart: e.chart, dataIndex: t, dataset: i, datasetIndex: e.index }; return qt([e.chart.options.elements.arc.angle, 2 * Math.PI / n], r, t) } }); W._set(""pie"", H.clone(W.doughnut)), W._set(""pie"", { cutoutPercentage: 0 }); var µt = Yt, Xt = H.valueOrDefault; W._set(""radar"", { spanGaps: !1, scale: { type: ""radialLinear"" }, elements: { line: { fill: ""start"", tension: 0 } } }); var Kt = it.extend({ datasetElementType: wt.Line, dataElementType: wt.Point, linkScales: H.noop, _datasetElementOptions: [""backgroundColor"", ""borderWidth"", ""borderColor"", ""borderCapStyle"", ""borderDash"", ""borderDashOffset"", ""borderJoinStyle"", ""fill""], _dataElementOptions: { backgroundColor: ""pointBackgroundColor"", borderColor: ""pointBorderColor"", borderWidth: ""pointBorderWidth"", hitRadius: ""pointHitRadius"", hoverBackgroundColor: ""pointHoverBackgroundColor"", hoverBorderColor: ""pointHoverBorderColor"", hoverBorderWidth: ""pointHoverBorderWidth"", hoverRadius: ""pointHoverRadius"", pointStyle: ""pointStyle"", radius: ""pointRadius"", rotation: ""pointRotation"" }, _getIndexScaleId: function () { return this.chart.scale.id }, _getValueScaleId: function () { return this.chart.scale.id }, update: function (t) { var e, n, i = this, a = i.getMeta(), r = a.dataset, o = a.data || [], s = i.chart.scale, l = i._config; for (void 0 !== l.tension && void 0 === l.lineTension && (l.lineTension = l.tension), r._scale = s, r._datasetIndex = i.index, r._children = o, r._loop = !0, r._model = i._resolveDatasetElementOptions(r), r.pivot(), e = 0, n = o.length; e < n; ++e)i.updateElement(o[e], e, t); for (i.updateBezierControlPoints(), e = 0, n = o.length; e < n; ++e)o[e].pivot() }, updateElement: function (t, e, n) { var i = this, a = t.custom || {}, r = i.getDataset(), o = i.chart.scale, s = o.getPointPositionForValue(e, r.data[e]), l = i._resolveDataElementOptions(t, e), u = i.getMeta().dataset._model, d = n ? o.xCenter : s.x, h = n ? o.yCenter : s.y; t._scale = o, t._options = l, t._datasetIndex = i.index, t._index = e, t._model = { x: d, y: h, skip: a.skip || isNaN(d) || isNaN(h), radius: l.radius, pointStyle: l.pointStyle, rotation: l.rotation, backgroundColor: l.backgroundColor, borderColor: l.borderColor, borderWidth: l.borderWidth, tension: Xt(a.tension, u ? u.tension : 0), hitRadius: l.hitRadius } }, _resolveDatasetElementOptions: function () { var t = this, e = t._config, n = t.chart.options, i = it.prototype._resolveDatasetElementOptions.apply(t, arguments); return i.spanGaps = Xt(e.spanGaps, n.spanGaps), i.tension = Xt(e.lineTension, n.elements.line.tension), i }, updateBezierControlPoints: function () { var t, e, n, i, a = this.getMeta(), r = this.chart.chartArea, o = a.data || []; function s(t, e, n) { return Math.max(Math.min(t, n), e) } for (a.dataset._model.spanGaps && (o = o.filter((function (t) { return !t._model.skip }))), t = 0, e = o.length; t < e; ++t)n = o[t]._model, i = H.splineCurve(H.previousItem(o, t, !0)._model, n, H.nextItem(o, t, !0)._model, n.tension), n.controlPointPreviousX = s(i.previous.x, r.left, r.right), n.controlPointPreviousY = s(i.previous.y, r.top, r.bottom), n.controlPointNextX = s(i.next.x, r.left, r.right), n.controlPointNextY = s(i.next.y, r.top, r.bottom) }, setHoverStyle: function (t) { var e = t._model, n = t._options, i = H.getHoverColor; t.µpreviousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth, radius: e.radius }, e.backgroundColor = Xt(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = Xt(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = Xt(n.hoverBorderWidth, n.borderWidth), e.radius = Xt(n.hoverRadius, n.radius) } }); W._set(""scatter"", { hover: { mode: ""single"" }, scales: { xAxes: [{ id: ""x-axis-1"", type: ""linear"", position: ""bottom"" }], yAxes: [{ id: ""y-axis-1"", type: ""linear"", position: ""left"" }] }, tooltips: { callbacks: { title: function () { return """" }, label: function (t) { return ""("" + t.xLabel + "", "" + t.yLabel + "")"" } } } }), W._set(""global"", { datasets: { scatter: { showLine: !1 } } }); var Jt = { bar: Ot, bubble: It, doughnut: Yt, horizontalBar: zt, line: Gt, polarArea: Zt, pie: µt, radar: Kt, scatter: Gt }; function Qt(t, e) { return t.native ? { x: t.x, y: t.y } : H.getRelativePosition(t, e) } function te(t, e) { var n, i, a, r, o, s, l = t._getSortedVisibleDatasetMetas(); for (i = 0, r = l.length; i < r; ++i)for (a = 0, o = (n = l[i].data).length; a < o; ++a)(s = n[a])._view.skip || e(s) } function ee(t, e) { var n = []; return te(t, (function (t) { t.inRange(e.x, e.y) && n.push(t) })), n } function ne(t, e, n, i) { var a = Number.POSITIVE_INFINITY, r = []; return te(t, (function (t) { if (!n || t.inRange(e.x, e.y)) { var o = t.getCenterPoint(), s = i(e, o); s < a ? (r = [t], a = s) : s === a && r.push(t) } })), r } function ie(t) { var e = -1 !== t.indexOf(""x""), n = -1 !== t.indexOf(""y""); return function (t, i) { var a = e ? Math.abs(t.x - i.x) : 0, r = n ? Math.abs(t.y - i.y) : 0; return Math.sqrt(Math.pow(a, 2) + Math.pow(r, 2)) } } function ae(t, e, n) { var i = Qt(e, t); n.axis = n.axis || ""x""; var a = ie(n.axis), r = n.intersect ? ee(t, i) : ne(t, i, !1, a), o = []; return r.length ? (t._getSortedVisibleDatasetMetas().forEach((function (t) { var e = t.data[r[0]._index]; e && !e._view.skip && o.push(e) })), o) : [] } var re = { modes: { single: function (t, e) { var n = Qt(e, t), i = []; return te(t, (function (t) { if (t.inRange(n.x, n.y)) return i.push(t), i })), i.slice(0, 1) }, label: ae, index: ae, dataset: function (t, e, n) { var i = Qt(e, t); n.axis = n.axis || ""xy""; var a = ie(n.axis), r = n.intersect ? ee(t, i) : ne(t, i, !1, a); return r.length > 0 && (r = t.getDatasetMeta(r[0]._datasetIndex).data), r }, ""x-axis"": function (t, e) { return ae(t, e, { intersect: !1 }) }, point: function (t, e) { return ee(t, Qt(e, t)) }, nearest: function (t, e, n) { var i = Qt(e, t); n.axis = n.axis || ""xy""; var a = ie(n.axis); return ne(t, i, n.intersect, a) }, x: function (t, e, n) { var i = Qt(e, t), a = [], r = !1; return te(t, (function (t) { t.inXRange(i.x) && a.push(t), t.inRange(i.x, i.y) && (r = !0) })), n.intersect && !r && (a = []), a }, y: function (t, e, n) { var i = Qt(e, t), a = [], r = !1; return te(t, (function (t) { t.inYRange(i.y) && a.push(t), t.inRange(i.x, i.y) && (r = !0) })), n.intersect && !r && (a = []), a } } }, oe = H.extend; function se(t, e) { return H.where(t, (function (t) { return t.pos === e })) } function le(t, e) { return t.sort((function (t, n) { var i = e ? n : t, a = e ? t : n; return i.weight === a.weight ? i.index - a.index : i.weight - a.weight })) } function ue(t, e, n, i) { return Math.max(t[n], e[n]) + Math.max(t[i], e[i]) } function de(t, e, n) { var i, a, r = n.box, o = t.maxPadding; if (n.size && (t[n.pos] -= n.size), n.size = n.horizontal ? r.height : r.width, t[n.pos] += n.size, r.getPadding) { var s = r.getPadding(); o.top = Math.max(o.top, s.top), o.left = Math.max(o.left, s.left), o.bottom = Math.max(o.bottom, s.bottom), o.right = Math.max(o.right, s.right) } if (i = e.outerWidth - ue(o, t, ""left"", ""right""), a = e.outerHeight - ue(o, t, ""top"", ""bottom""), i !== t.w || a !== t.h) return t.w = i, t.h = a, n.horizontal ? i !== t.w : a !== t.h } function he(t, e) { var n = e.maxPadding; function i(t) { var i = { left: 0, top: 0, right: 0, bottom: 0 }; return t.forEach((function (t) { i[t] = Math.max(e[t], n[t]) })), i } return i(t ? [""left"", ""right""] : [""top"", ""bottom""]) } function ce(t, e, n) { var i, a, r, o, s, l, u = []; for (i = 0, a = t.length; i < a; ++i)(o = (r = t[i]).box).update(r.width || e.w, r.height || e.h, he(r.horizontal, e)), de(e, n, r) && (l = !0, u.length && (s = !0)), o.fullWidth || u.push(r); return s && ce(u, e, n) || l } function fe(t, e, n) { var i, a, r, o, s = n.padding, l = e.x, u = e.y; for (i = 0, a = t.length; i < a; ++i)o = (r = t[i]).box, r.horizontal ? (o.left = o.fullWidth ? s.left : e.left, o.right = o.fullWidth ? n.outerWidth - s.right : e.left + e.w, o.top = u, o.bottom = u + o.height, o.width = o.right - o.left, u = o.bottom) : (o.left = l, o.right = l + o.width, o.top = e.top, o.bottom = e.top + e.h, o.height = o.bottom - o.top, l = o.right); e.x = l, e.y = u } W._set(""global"", { layout: { padding: { top: 0, right: 0, bottom: 0, left: 0 } } }); var ge, me = { defaults: {}, addBox: function (t, e) { t.boxes || (t.boxes = []), e.fullWidth = e.fullWidth || !1, e.position = e.position || ""top"", e.weight = e.weight || 0, e._layers = e._layers || function () { return [{ z: 0, draw: function () { e.draw.apply(e, arguments) } }] }, t.boxes.push(e) }, removeBox: function (t, e) { var n = t.boxes ? t.boxes.indexOf(e) : -1; -1 !== n && t.boxes.splice(n, 1) }, configure: function (t, e, n) { for (var i, a = [""fullWidth"", ""position"", ""weight""], r = a.length, o = 0; o < r; ++o)i = a[o], n.hasOwnProperty(i) && (e[i] = n[i]) }, update: function (t, e, n) { if (t) { var i = t.options.layout || {}, a = H.options.toPadding(i.padding), r = e - a.width, o = n - a.height, s = function (t) { var e = function (t) { var e, n, i, a = []; for (e = 0, n = (t || []).length; e < n; ++e)i = t[e], a.push({ index: e, box: i, pos: i.position, horizontal: i.isHorizontal(), weight: i.weight }); return a }(t), n = le(se(e, ""left""), !0), i = le(se(e, ""right"")), a = le(se(e, ""top""), !0), r = le(se(e, ""bottom"")); return { leftAndTop: n.concat(a), rightAndBottom: i.concat(r), chartArea: se(e, ""chartArea""), vertical: n.concat(i), horizontal: a.concat(r) } }(t.boxes), l = s.vertical, u = s.horizontal, d = Object.freeze({ outerWidth: e, outerHeight: n, padding: a, availableWidth: r, vBoxMaxWidth: r / 2 / l.length, hBoxMaxHeight: o / 2 }), h = oe({ maxPadding: oe({}, a), w: r, h: o, x: a.left, y: a.top }, a); !function (t, e) { var n, i, a; for (n = 0, i = t.length; n < i; ++n)(a = t[n]).width = a.horizontal ? a.box.fullWidth && e.availableWidth : e.vBoxMaxWidth, a.height = a.horizontal && e.hBoxMaxHeight }(l.concat(u), d), ce(l, h, d), ce(u, h, d) && ce(l, h, d), function (t) { var e = t.maxPadding; function n(n) { var i = Math.max(e[n] - t[n], 0); return t[n] += i, i } t.y += n(""top""), t.x += n(""left""), n(""right""), n(""bottom"") }(h), fe(s.leftAndTop, h, d), h.x += h.w, h.y += h.h, fe(s.rightAndBottom, h, d), t.chartArea = { left: h.left, top: h.top, right: h.left + h.w, bottom: h.top + h.h }, H.each(s.chartArea, (function (e) { var n = e.box; oe(n, t.chartArea), n.update(h.w, h.h) })) } } }, pe = (ge = Object.freeze({ __proto__: null, default: ""@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"" })) && ge.default || ge, ve = ""µchartjs"", be = ""chartjs-size-monitor"", ye = ""chartjs-render-monitor"", xe = ""chartjs-render-animation"", _e = [""animationstart"", ""webkitAnimationStart""], we = { touchstart: ""mousedown"", touchmove: ""mousemove"", touchend: ""mouseup"", pointerenter: ""mouseenter"", pointerdown: ""mousedown"", pointermove: ""mousemove"", pointerup: ""mouseup"", pointerleave: ""mouseout"", pointerout: ""mouseout"" }; function ke(t, e) { var n = H.getStyle(t, e), i = n && n.match(/^(\d+)(\.\d+)?pxµ/); return i ? Number(i[1]) : void 0 } var Me = !!function () { var t = !1; try { var e = Object.defineProperty({}, ""passive"", { get: function () { t = !0 } }); window.addEventListener(""e"", null, e) } catch (t) { } return t }() && { passive: !0 }; function Se(t, e, n) { t.addEventListener(e, n, Me) } function De(t, e, n) { t.removeEventListener(e, n, Me) } function Ce(t, e, n, i, a) { return { type: t, chart: e, native: a || null, x: void 0 !== n ? n : null, y: void 0 !== i ? i : null } } function Pe(t) { var e = document.createElement(""div""); return e.className = t || """", e } function Te(t, e, n) { var i, a, r, o, s = t[ve] || (t[ve] = {}), l = s.resizer = function (t) { var e = Pe(be), n = Pe(be + ""-expand""), i = Pe(be + ""-shrink""); n.appendChild(Pe()), i.appendChild(Pe()), e.appendChild(n), e.appendChild(i), e._reset = function () { n.scrollLeft = 1e6, n.scrollTop = 1e6, i.scrollLeft = 1e6, i.scrollTop = 1e6 }; var a = function () { e._reset(), t() }; return Se(n, ""scroll"", a.bind(n, ""expand"")), Se(i, ""scroll"", a.bind(i, ""shrink"")), e }((i = function () { if (s.resizer) { var i = n.options.maintainAspectRatio && t.parentNode, a = i ? i.clientWidth : 0; e(Ce(""resize"", n)), i && i.clientWidth < a && n.canvas && e(Ce(""resize"", n)) } }, r = !1, o = [], function () { o = Array.prototype.slice.call(arguments), a = a || this, r || (r = !0, H.requestAnimFrame.call(window, (function () { r = !1, i.apply(a, o) }))) })); !function (t, e) { var n = t[ve] || (t[ve] = {}), i = n.renderProxy = function (t) { t.animationName === xe && e() }; H.each(_e, (function (e) { Se(t, e, i) })), n.reflow = !!t.offsetParent, t.classList.add(ye) }(t, (function () { if (s.resizer) { var e = t.parentNode; e && e !== l.parentNode && e.insertBefore(l, e.firstChild), l._reset() } })) } function Oe(t) { var e = t[ve] || {}, n = e.resizer; delete e.resizer, function (t) { var e = t[ve] || {}, n = e.renderProxy; n && (H.each(_e, (function (e) { De(t, e, n) })), delete e.renderProxy), t.classList.remove(ye) }(t), n && n.parentNode && n.parentNode.removeChild(n) } var Ae = { disableCSSInjection: !1, _enabled: ""undefined"" != typeof window && ""undefined"" != typeof document, _ensureLoaded: function (t) { if (!this.disableCSSInjection) { var e = t.getRootNode ? t.getRootNode() : document; !function (t, e) { var n = t[ve] || (t[ve] = {}); if (!n.containsStyles) { n.containsStyles = !0, e = ""/* Chart.js */\n"" + e; var i = document.createElement(""style""); i.setAttribute(""type"", ""text/css""), i.appendChild(document.createTextNode(e)), t.appendChild(i) } }(e.host ? e : document.head, pe) } }, acquireContext: function (t, e) { ""string"" == typeof t ? t = document.getElementById(t) : t.length && (t = t[0]), t && t.canvas && (t = t.canvas); var n = t && t.getContext && t.getContext(""2d""); return n && n.canvas === t ? (this._ensureLoaded(t), function (t, e) { var n = t.style, i = t.getAttribute(""height""), a = t.getAttribute(""width""); if (t[ve] = { initial: { height: i, width: a, style: { display: n.display, height: n.height, width: n.width } } }, n.display = n.display || ""block"", null === a || """" === a) { var r = ke(t, ""width""); void 0 !== r && (t.width = r) } if (null === i || """" === i) if ("""" === t.style.height) t.height = t.width / (e.options.aspectRatio || 2); else { var o = ke(t, ""height""); void 0 !== r && (t.height = o) } }(t, e), n) : null }, releaseContext: function (t) { var e = t.canvas; if (e[ve]) { var n = e[ve].initial;[""height"", ""width""].forEach((function (t) { var i = n[t]; H.isNullOrUndef(i) ? e.removeAttribute(t) : e.setAttribute(t, i) })), H.each(n.style || {}, (function (t, n) { e.style[n] = t })), e.width = e.width, delete e[ve] } }, addEventListener: function (t, e, n) { var i = t.canvas; if (""resize"" !== e) { var a = n[ve] || (n[ve] = {}); Se(i, e, (a.proxies || (a.proxies = {}))[t.id + ""_"" + e] = function (e) { n(function (t, e) { var n = we[t.type] || t.type, i = H.getRelativePosition(t, e); return Ce(n, e, i.x, i.y, t) }(e, t)) }) } else Te(i, n, t) }, removeEventListener: function (t, e, n) { var i = t.canvas; if (""resize"" !== e) { var a = ((n[ve] || {}).proxies || {})[t.id + ""_"" + e]; a && De(i, e, a) } else Oe(i) } }; H.addEvent = Se, H.removeEvent = De; var Fe = Ae._enabled ? Ae : { acquireContext: function (t) { return t && t.canvas && (t = t.canvas), t && t.getContext(""2d"") || null } }, Ie = H.extend({ initialize: function () { }, acquireContext: function () { }, releaseContext: function () { }, addEventListener: function () { }, removeEventListener: function () { } }, Fe); W._set(""global"", { plugins: {} }); var Le = { _plugins: [], _cacheId: 0, register: function (t) { var e = this._plugins;[].concat(t).forEach((function (t) { -1 === e.indexOf(t) && e.push(t) })), this._cacheId++ }, unregister: function (t) { var e = this._plugins;[].concat(t).forEach((function (t) { var n = e.indexOf(t); -1 !== n && e.splice(n, 1) })), this._cacheId++ }, clear: function () { this._plugins = [], this._cacheId++ }, count: function () { return this._plugins.length }, getAll: function () { return this._plugins }, notify: function (t, e, n) { var i, a, r, o, s, l = this.descriptors(t), u = l.length; for (i = 0; i < u; ++i)if (""function"" == typeof (s = (r = (a = l[i]).plugin)[e]) && ((o = [t].concat(n || [])).push(a.options), !1 === s.apply(r, o))) return !1; return !0 }, descriptors: function (t) { var e = t.µplugins || (t.µplugins = {}); if (e.id === this._cacheId) return e.descriptors; var n = [], i = [], a = t && t.config || {}, r = a.options && a.options.plugins || {}; return this._plugins.concat(a.plugins || []).forEach((function (t) { if (-1 === n.indexOf(t)) { var e = t.id, a = r[e]; !1 !== a && (!0 === a && (a = H.clone(W.global.plugins[e])), n.push(t), i.push({ plugin: t, options: a || {} })) } })), e.descriptors = i, e.id = this._cacheId, i }, _invalidate: function (t) { delete t.µplugins } }, Re = { constructors: {}, defaults: {}, registerScaleType: function (t, e, n) { this.constructors[t] = e, this.defaults[t] = H.clone(n) }, getScaleConstructor: function (t) { return this.constructors.hasOwnProperty(t) ? this.constructors[t] : void 0 }, getScaleDefaults: function (t) { return this.defaults.hasOwnProperty(t) ? H.merge({}, [W.scale, this.defaults[t]]) : {} }, updateScaleDefaults: function (t, e) { this.defaults.hasOwnProperty(t) && (this.defaults[t] = H.extend(this.defaults[t], e)) }, addScalesToLayout: function (t) { H.each(t.scales, (function (e) { e.fullWidth = e.options.fullWidth, e.position = e.options.position, e.weight = e.options.weight, me.addBox(t, e) })) } }, Ne = H.valueOrDefault, We = H.rtl.getRtlAdapter; W._set(""global"", { tooltips: { enabled: !0, custom: null, mode: ""nearest"", position: ""average"", intersect: !0, backgroundColor: ""rgba(0,0,0,0.8)"", titleFontStyle: ""bold"", titleSpacing: 2, titleMarginBottom: 6, titleFontColor: ""#fff"", titleAlign: ""left"", bodySpacing: 2, bodyFontColor: ""#fff"", bodyAlign: ""left"", footerFontStyle: ""bold"", footerSpacing: 2, footerMarginTop: 6, footerFontColor: ""#fff"", footerAlign: ""left"", yPadding: 6, xPadding: 6, caretPadding: 2, caretSize: 5, cornerRadius: 6, multiKeyBackground: ""#fff"", displayColors: !0, borderColor: ""rgba(0,0,0,0)"", borderWidth: 0, callbacks: { beforeTitle: H.noop, title: function (t, e) { var n = """", i = e.labels, a = i ? i.length : 0; if (t.length > 0) { var r = t[0]; r.label ? n = r.label : r.xLabel ? n = r.xLabel : a > 0 && r.index < a && (n = i[r.index]) } return n }, afterTitle: H.noop, beforeBody: H.noop, beforeLabel: H.noop, label: function (t, e) { var n = e.datasets[t.datasetIndex].label || """"; return n && (n += "": ""), H.isNullOrUndef(t.value) ? n += t.yLabel : n += t.value, n }, labelColor: function (t, e) { var n = e.getDatasetMeta(t.datasetIndex).data[t.index]._view; return { borderColor: n.borderColor, backgroundColor: n.backgroundColor } }, labelTextColor: function () { return this._options.bodyFontColor }, afterLabel: H.noop, afterBody: H.noop, beforeFooter: H.noop, footer: H.noop, afterFooter: H.noop } } }); var Ye = { average: function (t) { if (!t.length) return !1; var e, n, i = 0, a = 0, r = 0; for (e = 0, n = t.length; e < n; ++e) { var o = t[e]; if (o && o.hasValue()) { var s = o.tooltipPosition(); i += s.x, a += s.y, ++r } } return { x: i / r, y: a / r } }, nearest: function (t, e) { var n, i, a, r = e.x, o = e.y, s = Number.POSITIVE_INFINITY; for (n = 0, i = t.length; n < i; ++n) { var l = t[n]; if (l && l.hasValue()) { var u = l.getCenterPoint(), d = H.distanceBetweenPoints(e, u); d < s && (s = d, a = l) } } if (a) { var h = a.tooltipPosition(); r = h.x, o = h.y } return { x: r, y: o } } }; function ze(t, e) { return e && (H.isArray(e) ? Array.prototype.push.apply(t, e) : t.push(e)), t } function Ee(t) { return (""string"" == typeof t || t instanceof String) && t.indexOf(""\n"") > -1 ? t.split(""\n"") : t } function Ve(t) { var e = W.global; return { xPadding: t.xPadding, yPadding: t.yPadding, xAlign: t.xAlign, yAlign: t.yAlign, rtl: t.rtl, textDirection: t.textDirection, bodyFontColor: t.bodyFontColor, _bodyFontFamily: Ne(t.bodyFontFamily, e.defaultFontFamily), _bodyFontStyle: Ne(t.bodyFontStyle, e.defaultFontStyle), _bodyAlign: t.bodyAlign, bodyFontSize: Ne(t.bodyFontSize, e.defaultFontSize), bodySpacing: t.bodySpacing, titleFontColor: t.titleFontColor, _titleFontFamily: Ne(t.titleFontFamily, e.defaultFontFamily), _titleFontStyle: Ne(t.titleFontStyle, e.defaultFontStyle), titleFontSize: Ne(t.titleFontSize, e.defaultFontSize), _titleAlign: t.titleAlign, titleSpacing: t.titleSpacing, titleMarginBottom: t.titleMarginBottom, footerFontColor: t.footerFontColor, _footerFontFamily: Ne(t.footerFontFamily, e.defaultFontFamily), _footerFontStyle: Ne(t.footerFontStyle, e.defaultFontStyle), footerFontSize: Ne(t.footerFontSize, e.defaultFontSize), _footerAlign: t.footerAlign, footerSpacing: t.footerSpacing, footerMarginTop: t.footerMarginTop, caretSize: t.caretSize, cornerRadius: t.cornerRadius, backgroundColor: t.backgroundColor, opacity: 0, legendColorBackground: t.multiKeyBackground, displayColors: t.displayColors, borderColor: t.borderColor, borderWidth: t.borderWidth } } function He(t, e) { return ""center"" === e ? t.x + t.width / 2 : ""right"" === e ? t.x + t.width - t.xPadding : t.x + t.xPadding } function Be(t) { return ze([], Ee(t)) } var je = µ.extend({ initialize: function () { this._model = Ve(this._options), this._lastActive = [] }, getTitle: function () { var t = this, e = t._options, n = e.callbacks, i = n.beforeTitle.apply(t, arguments), a = n.title.apply(t, arguments), r = n.afterTitle.apply(t, arguments), o = []; return o = ze(o, Ee(i)), o = ze(o, Ee(a)), o = ze(o, Ee(r)) }, getBeforeBody: function () { return Be(this._options.callbacks.beforeBody.apply(this, arguments)) }, getBody: function (t, e) { var n = this, i = n._options.callbacks, a = []; return H.each(t, (function (t) { var r = { before: [], lines: [], after: [] }; ze(r.before, Ee(i.beforeLabel.call(n, t, e))), ze(r.lines, i.label.call(n, t, e)), ze(r.after, Ee(i.afterLabel.call(n, t, e))), a.push(r) })), a }, getAfterBody: function () { return Be(this._options.callbacks.afterBody.apply(this, arguments)) }, getFooter: function () { var t = this, e = t._options.callbacks, n = e.beforeFooter.apply(t, arguments), i = e.footer.apply(t, arguments), a = e.afterFooter.apply(t, arguments), r = []; return r = ze(r, Ee(n)), r = ze(r, Ee(i)), r = ze(r, Ee(a)) }, update: function (t) { var e, n, i, a, r, o, s, l, u, d, h = this, c = h._options, f = h._model, g = h._model = Ve(c), m = h._active, p = h._data, v = { xAlign: f.xAlign, yAlign: f.yAlign }, b = { x: f.x, y: f.y }, y = { width: f.width, height: f.height }, x = { x: f.caretX, y: f.caretY }; if (m.length) { g.opacity = 1; var _ = [], w = []; x = Ye[c.position].call(h, m, h._eventPosition); var k = []; for (e = 0, n = m.length; e < n; ++e)k.push((i = m[e], a = void 0, r = void 0, o = void 0, s = void 0, l = void 0, u = void 0, d = void 0, a = i._xScale, r = i._yScale || i._scale, o = i._index, s = i._datasetIndex, l = i._chart.getDatasetMeta(s).controller, u = l._getIndexScale(), d = l._getValueScale(), { xLabel: a ? a.getLabelForIndex(o, s) : """", yLabel: r ? r.getLabelForIndex(o, s) : """", label: u ? """" + u.getLabelForIndex(o, s) : """", value: d ? """" + d.getLabelForIndex(o, s) : """", index: o, datasetIndex: s, x: i._model.x, y: i._model.y })); c.filter && (k = k.filter((function (t) { return c.filter(t, p) }))), c.itemSort && (k = k.sort((function (t, e) { return c.itemSort(t, e, p) }))), H.each(k, (function (t) { _.push(c.callbacks.labelColor.call(h, t, h._chart)), w.push(c.callbacks.labelTextColor.call(h, t, h._chart)) })), g.title = h.getTitle(k, p), g.beforeBody = h.getBeforeBody(k, p), g.body = h.getBody(k, p), g.afterBody = h.getAfterBody(k, p), g.footer = h.getFooter(k, p), g.x = x.x, g.y = x.y, g.caretPadding = c.caretPadding, g.labelColors = _, g.labelTextColors = w, g.dataPoints = k, y = function (t, e) { var n = t._chart.ctx, i = 2 * e.yPadding, a = 0, r = e.body, o = r.reduce((function (t, e) { return t + e.before.length + e.lines.length + e.after.length }), 0); o += e.beforeBody.length + e.afterBody.length; var s = e.title.length, l = e.footer.length, u = e.titleFontSize, d = e.bodyFontSize, h = e.footerFontSize; i += s * u, i += s ? (s - 1) * e.titleSpacing : 0, i += s ? e.titleMarginBottom : 0, i += o * d, i += o ? (o - 1) * e.bodySpacing : 0, i += l ? e.footerMarginTop : 0, i += l * h, i += l ? (l - 1) * e.footerSpacing : 0; var c = 0, f = function (t) { a = Math.max(a, n.measureText(t).width + c) }; return n.font = H.fontString(u, e._titleFontStyle, e._titleFontFamily), H.each(e.title, f), n.font = H.fontString(d, e._bodyFontStyle, e._bodyFontFamily), H.each(e.beforeBody.concat(e.afterBody), f), c = e.displayColors ? d + 2 : 0, H.each(r, (function (t) { H.each(t.before, f), H.each(t.lines, f), H.each(t.after, f) })), c = 0, n.font = H.fontString(h, e._footerFontStyle, e._footerFontFamily), H.each(e.footer, f), { width: a += 2 * e.xPadding, height: i } }(this, g), b = function (t, e, n, i) { var a = t.x, r = t.y, o = t.caretSize, s = t.caretPadding, l = t.cornerRadius, u = n.xAlign, d = n.yAlign, h = o + s, c = l + s; return ""right"" === u ? a -= e.width : ""center"" === u && ((a -= e.width / 2) + e.width > i.width && (a = i.width - e.width), a < 0 && (a = 0)), ""top"" === d ? r += h : r -= ""bottom"" === d ? e.height + h : e.height / 2, ""center"" === d ? ""left"" === u ? a += h : ""right"" === u && (a -= h) : ""left"" === u ? a -= c : ""right"" === u && (a += c), { x: a, y: r } }(g, y, v = function (t, e) { var n, i, a, r, o, s = t._model, l = t._chart, u = t._chart.chartArea, d = ""center"", h = ""center""; s.y < e.height ? h = ""top"" : s.y > l.height - e.height && (h = ""bottom""); var c = (u.left + u.right) / 2, f = (u.top + u.bottom) / 2; ""center"" === h ? (n = function (t) { return t <= c }, i = function (t) { return t > c }) : (n = function (t) { return t <= e.width / 2 }, i = function (t) { return t >= l.width - e.width / 2 }), a = function (t) { return t + e.width + s.caretSize + s.caretPadding > l.width }, r = function (t) { return t - e.width - s.caretSize - s.caretPadding < 0 }, o = function (t) { return t <= f ? ""top"" : ""bottom"" }, n(s.x) ? (d = ""left"", a(s.x) && (d = ""center"", h = o(s.y))) : i(s.x) && (d = ""right"", r(s.x) && (d = ""center"", h = o(s.y))); var g = t._options; return { xAlign: g.xAlign ? g.xAlign : d, yAlign: g.yAlign ? g.yAlign : h } }(this, y), h._chart) } else g.opacity = 0; return g.xAlign = v.xAlign, g.yAlign = v.yAlign, g.x = b.x, g.y = b.y, g.width = y.width, g.height = y.height, g.caretX = x.x, g.caretY = x.y, h._model = g, t && c.custom && c.custom.call(h, g), h }, drawCaret: function (t, e) { var n = this._chart.ctx, i = this._view, a = this.getCaretPosition(t, e, i); n.lineTo(a.x1, a.y1), n.lineTo(a.x2, a.y2), n.lineTo(a.x3, a.y3) }, getCaretPosition: function (t, e, n) { var i, a, r, o, s, l, u = n.caretSize, d = n.cornerRadius, h = n.xAlign, c = n.yAlign, f = t.x, g = t.y, m = e.width, p = e.height; if (""center"" === c) s = g + p / 2, ""left"" === h ? (a = (i = f) - u, r = i, o = s + u, l = s - u) : (a = (i = f + m) + u, r = i, o = s - u, l = s + u); else if (""left"" === h ? (i = (a = f + d + u) - u, r = a + u) : ""right"" === h ? (i = (a = f + m - d - u) - u, r = a + u) : (i = (a = n.caretX) - u, r = a + u), ""top"" === c) s = (o = g) - u, l = o; else { s = (o = g + p) + u, l = o; var v = r; r = i, i = v } return { x1: i, x2: a, x3: r, y1: o, y2: s, y3: l } }, drawTitle: function (t, e, n) { var i, a, r, o = e.title, s = o.length; if (s) { var l = We(e.rtl, e.x, e.width); for (t.x = He(e, e._titleAlign), n.textAlign = l.textAlign(e._titleAlign), n.textBaseline = ""middle"", i = e.titleFontSize, a = e.titleSpacing, n.fillStyle = e.titleFontColor, n.font = H.fontString(i, e._titleFontStyle, e._titleFontFamily), r = 0; r < s; ++r)n.fillText(o[r], l.x(t.x), t.y + i / 2), t.y += i + a, r + 1 === s && (t.y += e.titleMarginBottom - a) } }, drawBody: function (t, e, n) { var i, a, r, o, s, l, u, d, h = e.bodyFontSize, c = e.bodySpacing, f = e._bodyAlign, g = e.body, m = e.displayColors, p = 0, v = m ? He(e, ""left"") : 0, b = We(e.rtl, e.x, e.width), y = function (e) { n.fillText(e, b.x(t.x + p), t.y + h / 2), t.y += h + c }, x = b.textAlign(f); for (n.textAlign = f, n.textBaseline = ""middle"", n.font = H.fontString(h, e._bodyFontStyle, e._bodyFontFamily), t.x = He(e, x), n.fillStyle = e.bodyFontColor, H.each(e.beforeBody, y), p = m && ""right"" !== x ? ""center"" === f ? h / 2 + 1 : h + 2 : 0, s = 0, u = g.length; s < u; ++s) { for (i = g[s], a = e.labelTextColors[s], r = e.labelColors[s], n.fillStyle = a, H.each(i.before, y), l = 0, d = (o = i.lines).length; l < d; ++l) { if (m) { var _ = b.x(v); n.fillStyle = e.legendColorBackground, n.fillRect(b.leftForLtr(_, h), t.y, h, h), n.lineWidth = 1, n.strokeStyle = r.borderColor, n.strokeRect(b.leftForLtr(_, h), t.y, h, h), n.fillStyle = r.backgroundColor, n.fillRect(b.leftForLtr(b.xPlus(_, 1), h - 2), t.y + 1, h - 2, h - 2), n.fillStyle = a } y(o[l]) } H.each(i.after, y) } p = 0, H.each(e.afterBody, y), t.y -= c }, drawFooter: function (t, e, n) { var i, a, r = e.footer, o = r.length; if (o) { var s = We(e.rtl, e.x, e.width); for (t.x = He(e, e._footerAlign), t.y += e.footerMarginTop, n.textAlign = s.textAlign(e._footerAlign), n.textBaseline = ""middle"", i = e.footerFontSize, n.fillStyle = e.footerFontColor, n.font = H.fontString(i, e._footerFontStyle, e._footerFontFamily), a = 0; a < o; ++a)n.fillText(r[a], s.x(t.x), t.y + i / 2), t.y += i + e.footerSpacing } }, drawBackground: function (t, e, n, i) { n.fillStyle = e.backgroundColor, n.strokeStyle = e.borderColor, n.lineWidth = e.borderWidth; var a = e.xAlign, r = e.yAlign, o = t.x, s = t.y, l = i.width, u = i.height, d = e.cornerRadius; n.beginPath(), n.moveTo(o + d, s), ""top"" === r && this.drawCaret(t, i), n.lineTo(o + l - d, s), n.quadraticCurveTo(o + l, s, o + l, s + d), ""center"" === r && ""right"" === a && this.drawCaret(t, i), n.lineTo(o + l, s + u - d), n.quadraticCurveTo(o + l, s + u, o + l - d, s + u), ""bottom"" === r && this.drawCaret(t, i), n.lineTo(o + d, s + u), n.quadraticCurveTo(o, s + u, o, s + u - d), ""center"" === r && ""left"" === a && this.drawCaret(t, i), n.lineTo(o, s + d), n.quadraticCurveTo(o, s, o + d, s), n.closePath(), n.fill(), e.borderWidth > 0 && n.stroke() }, draw: function () { var t = this._chart.ctx, e = this._view; if (0 !== e.opacity) { var n = { width: e.width, height: e.height }, i = { x: e.x, y: e.y }, a = Math.abs(e.opacity < .001) ? 0 : e.opacity, r = e.title.length || e.beforeBody.length || e.body.length || e.afterBody.length || e.footer.length; this._options.enabled && r && (t.save(), t.globalAlpha = a, this.drawBackground(i, e, t, n), i.y += e.yPadding, H.rtl.overrideTextDirection(t, e.textDirection), this.drawTitle(i, e, t), this.drawBody(i, e, t), this.drawFooter(i, e, t), H.rtl.restoreTextDirection(t, e.textDirection), t.restore()) } }, handleEvent: function (t) { var e, n = this, i = n._options; return n._lastActive = n._lastActive || [], ""mouseout"" === t.type ? n._active = [] : (n._active = n._chart.getElementsAtEventForMode(t, i.mode, i), i.reverse && n._active.reverse()), (e = !H.arrayEquals(n._active, n._lastActive)) && (n._lastActive = n._active, (i.enabled || i.custom) && (n._eventPosition = { x: t.x, y: t.y }, n.update(!0), n.pivot())), e } }), Ue = Ye, Ge = je; Ge.positioners = Ue; var qe = H.valueOrDefault; function Ze() { return H.merge({}, [].slice.call(arguments), { merger: function (t, e, n, i) { if (""xAxes"" === t || ""yAxes"" === t) { var a, r, o, s = n[t].length; for (e[t] || (e[t] = []), a = 0; a < s; ++a)o = n[t][a], r = qe(o.type, ""xAxes"" === t ? ""category"" : ""linear""), a >= e[t].length && e[t].push({}), !e[t][a].type || o.type && o.type !== e[t][a].type ? H.merge(e[t][a], [Re.getScaleDefaults(r), o]) : H.merge(e[t][a], o) } else H._merger(t, e, n, i) } }) } function µe() { return H.merge({}, [].slice.call(arguments), { merger: function (t, e, n, i) { var a = e[t] || {}, r = n[t]; ""scales"" === t ? e[t] = Ze(a, r) : ""scale"" === t ? e[t] = H.merge(a, [Re.getScaleDefaults(r.type), r]) : H._merger(t, e, n, i) } }) } function Xe(t) { var e = t.options; H.each(t.scales, (function (e) { me.removeBox(t, e) })), e = µe(W.global, W[t.config.type], e), t.options = t.config.options = e, t.ensureScalesHaveIDs(), t.buildOrUpdateScales(), t.tooltip._options = e.tooltips, t.tooltip.initialize() } function Ke(t, e, n) { var i, a = function (t) { return t.id === i }; do { i = e + n++ } while (H.findIndex(t, a) >= 0); return i } function Je(t) { return ""top"" === t || ""bottom"" === t } function Qe(t, e) { return function (n, i) { return n[t] === i[t] ? n[e] - i[e] : n[t] - i[t] } } W._set(""global"", { elements: {}, events: [""mousemove"", ""mouseout"", ""click"", ""touchstart"", ""touchmove""], hover: { onHover: null, mode: ""nearest"", intersect: !0, animationDuration: 400 }, onClick: null, maintainAspectRatio: !0, responsive: !0, responsiveAnimationDuration: 0 }); var tn = function (t, e) { return this.construct(t, e), this }; H.extend(tn.prototype, { construct: function (t, e) { var n = this; e = function (t) { var e = (t = t || {}).data = t.data || {}; return e.datasets = e.datasets || [], e.labels = e.labels || [], t.options = µe(W.global, W[t.type], t.options || {}), t }(e); var i = Ie.acquireContext(t, e), a = i && i.canvas, r = a && a.height, o = a && a.width; n.id = H.uid(), n.ctx = i, n.canvas = a, n.config = e, n.width = o, n.height = r, n.aspectRatio = r ? o / r : null, n.options = e.options, n._bufferedRender = !1, n._layers = [], n.chart = n, n.controller = n, tn.instances[n.id] = n, Object.defineProperty(n, ""data"", { get: function () { return n.config.data }, set: function (t) { n.config.data = t } }), i && a ? (n.initialize(), n.update()) : console.error(""Failed to create chart: can't acquire context from the given item"") }, initialize: function () { var t = this; return Le.notify(t, ""beforeInit""), H.retinaScale(t, t.options.devicePixelRatio), t.bindEvents(), t.options.responsive && t.resize(!0), t.initToolTip(), Le.notify(t, ""afterInit""), t }, clear: function () { return H.canvas.clear(this), this }, stop: function () { return J.cancelAnimation(this), this }, resize: function (t) { var e = this, n = e.options, i = e.canvas, a = n.maintainAspectRatio && e.aspectRatio || null, r = Math.max(0, Math.floor(H.getMaximumWidth(i))), o = Math.max(0, Math.floor(a ? r / a : H.getMaximumHeight(i))); if ((e.width !== r || e.height !== o) && (i.width = e.width = r, i.height = e.height = o, i.style.width = r + ""px"", i.style.height = o + ""px"", H.retinaScale(e, n.devicePixelRatio), !t)) { var s = { width: r, height: o }; Le.notify(e, ""resize"", [s]), n.onResize && n.onResize(e, s), e.stop(), e.update({ duration: n.responsiveAnimationDuration }) } }, ensureScalesHaveIDs: function () { var t = this.options, e = t.scales || {}, n = t.scale; H.each(e.xAxes, (function (t, n) { t.id || (t.id = Ke(e.xAxes, ""x-axis-"", n)) })), H.each(e.yAxes, (function (t, n) { t.id || (t.id = Ke(e.yAxes, ""y-axis-"", n)) })), n && (n.id = n.id || ""scale"") }, buildOrUpdateScales: function () { var t = this, e = t.options, n = t.scales || {}, i = [], a = Object.keys(n).reduce((function (t, e) { return t[e] = !1, t }), {}); e.scales && (i = i.concat((e.scales.xAxes || []).map((function (t) { return { options: t, dtype: ""category"", dposition: ""bottom"" } })), (e.scales.yAxes || []).map((function (t) { return { options: t, dtype: ""linear"", dposition: ""left"" } })))), e.scale && i.push({ options: e.scale, dtype: ""radialLinear"", isDefault: !0, dposition: ""chartArea"" }), H.each(i, (function (e) { var i = e.options, r = i.id, o = qe(i.type, e.dtype); Je(i.position) !== Je(e.dposition) && (i.position = e.dposition), a[r] = !0; var s = null; if (r in n && n[r].type === o) (s = n[r]).options = i, s.ctx = t.ctx, s.chart = t; else { var l = Re.getScaleConstructor(o); if (!l) return; s = new l({ id: r, type: o, options: i, ctx: t.ctx, chart: t }), n[s.id] = s } s.mergeTicksOptions(), e.isDefault && (t.scale = s) })), H.each(a, (function (t, e) { t || delete n[e] })), t.scales = n, Re.addScalesToLayout(this) }, buildOrUpdateControllers: function () { var t, e, n = this, i = [], a = n.data.datasets; for (t = 0, e = a.length; t < e; t++) { var r = a[t], o = n.getDatasetMeta(t), s = r.type || n.config.type; if (o.type && o.type !== s && (n.destroyDatasetMeta(t), o = n.getDatasetMeta(t)), o.type = s, o.order = r.order || 0, o.index = t, o.controller) o.controller.updateIndex(t), o.controller.linkScales(); else { var l = Jt[o.type]; if (void 0 === l) throw new Error('""' + o.type + '"" is not a chart type.'); o.controller = new l(n, t), i.push(o.controller) } } return i }, resetElements: function () { var t = this; H.each(t.data.datasets, (function (e, n) { t.getDatasetMeta(n).controller.reset() }), t) }, reset: function () { this.resetElements(), this.tooltip.initialize() }, update: function (t) { var e, n, i = this; if (t && ""object"" == typeof t || (t = { duration: t, lazy: arguments[1] }), Xe(i), Le._invalidate(i), !1 !== Le.notify(i, ""beforeUpdate"")) { i.tooltip._data = i.data; var a = i.buildOrUpdateControllers(); for (e = 0, n = i.data.datasets.length; e < n; e++)i.getDatasetMeta(e).controller.buildOrUpdateElements(); i.updateLayout(), i.options.animation && i.options.animation.duration && H.each(a, (function (t) { t.reset() })), i.updateDatasets(), i.tooltip.initialize(), i.lastActive = [], Le.notify(i, ""afterUpdate""), i._layers.sort(Qe(""z"", ""_idx"")), i._bufferedRender ? i._bufferedRequest = { duration: t.duration, easing: t.easing, lazy: t.lazy } : i.render(t) } }, updateLayout: function () { var t = this; !1 !== Le.notify(t, ""beforeLayout"") && (me.update(this, this.width, this.height), t._layers = [], H.each(t.boxes, (function (e) { e._configure && e._configure(), t._layers.push.apply(t._layers, e._layers()) }), t), t._layers.forEach((function (t, e) { t._idx = e })), Le.notify(t, ""afterScaleUpdate""), Le.notify(t, ""afterLayout"")) }, updateDatasets: function () { if (!1 !== Le.notify(this, ""beforeDatasetsUpdate"")) { for (var t = 0, e = this.data.datasets.length; t < e; ++t)this.updateDataset(t); Le.notify(this, ""afterDatasetsUpdate"") } }, updateDataset: function (t) { var e = this.getDatasetMeta(t), n = { meta: e, index: t }; !1 !== Le.notify(this, ""beforeDatasetUpdate"", [n]) && (e.controller._update(), Le.notify(this, ""afterDatasetUpdate"", [n])) }, render: function (t) { var e = this; t && ""object"" == typeof t || (t = { duration: t, lazy: arguments[1] }); var n = e.options.animation, i = qe(t.duration, n && n.duration), a = t.lazy; if (!1 !== Le.notify(e, ""beforeRender"")) { var r = function (t) { Le.notify(e, ""afterRender""), H.callback(n && n.onComplete, [t], e) }; if (n && i) { var o = new K({ numSteps: i / 16.66, easing: t.easing || n.easing, render: function (t, e) { var n = H.easing.effects[e.easing], i = e.currentStep, a = i / e.numSteps; t.draw(n(a), a, i) }, onAnimationProgress: n.onProgress, onAnimationComplete: r }); J.addAnimation(e, o, i, a) } else e.draw(), r(new K({ numSteps: 0, chart: e })); return e } }, draw: function (t) { var e, n, i = this; if (i.clear(), H.isNullOrUndef(t) && (t = 1), i.transition(t), !(i.width <= 0 || i.height <= 0) && !1 !== Le.notify(i, ""beforeDraw"", [t])) { for (n = i._layers, e = 0; e < n.length && n[e].z <= 0; ++e)n[e].draw(i.chartArea); for (i.drawDatasets(t); e < n.length; ++e)n[e].draw(i.chartArea); i._drawTooltip(t), Le.notify(i, ""afterDraw"", [t]) } }, transition: function (t) { for (var e = 0, n = (this.data.datasets || []).length; e < n; ++e)this.isDatasetVisible(e) && this.getDatasetMeta(e).controller.transition(t); this.tooltip.transition(t) }, _getSortedDatasetMetas: function (t) { var e, n, i = []; for (e = 0, n = (this.data.datasets || []).length; e < n; ++e)t && !this.isDatasetVisible(e) || i.push(this.getDatasetMeta(e)); return i.sort(Qe(""order"", ""index"")), i }, _getSortedVisibleDatasetMetas: function () { return this._getSortedDatasetMetas(!0) }, drawDatasets: function (t) { var e, n; if (!1 !== Le.notify(this, ""beforeDatasetsDraw"", [t])) { for (n = (e = this._getSortedVisibleDatasetMetas()).length - 1; n >= 0; --n)this.drawDataset(e[n], t); Le.notify(this, ""afterDatasetsDraw"", [t]) } }, drawDataset: function (t, e) { var n = { meta: t, index: t.index, easingValue: e }; !1 !== Le.notify(this, ""beforeDatasetDraw"", [n]) && (t.controller.draw(e), Le.notify(this, ""afterDatasetDraw"", [n])) }, _drawTooltip: function (t) { var e = this.tooltip, n = { tooltip: e, easingValue: t }; !1 !== Le.notify(this, ""beforeTooltipDraw"", [n]) && (e.draw(), Le.notify(this, ""afterTooltipDraw"", [n])) }, getElementAtEvent: function (t) { return re.modes.single(this, t) }, getElementsAtEvent: function (t) { return re.modes.label(this, t, { intersect: !0 }) }, getElementsAtXAxis: function (t) { return re.modes[""x-axis""](this, t, { intersect: !0 }) }, getElementsAtEventForMode: function (t, e, n) { var i = re.modes[e]; return ""function"" == typeof i ? i(this, t, n) : [] }, getDatasetAtEvent: function (t) { return re.modes.dataset(this, t, { intersect: !0 }) }, getDatasetMeta: function (t) { var e = this.data.datasets[t]; e._meta || (e._meta = {}); var n = e._meta[this.id]; return n || (n = e._meta[this.id] = { type: null, data: [], dataset: null, controller: null, hidden: null, xAxisID: null, yAxisID: null, order: e.order || 0, index: t }), n }, getVisibleDatasetCount: function () { for (var t = 0, e = 0, n = this.data.datasets.length; e < n; ++e)this.isDatasetVisible(e) && t++; return t }, isDatasetVisible: function (t) { var e = this.getDatasetMeta(t); return ""boolean"" == typeof e.hidden ? !e.hidden : !this.data.datasets[t].hidden }, generateLegend: function () { return this.options.legendCallback(this) }, destroyDatasetMeta: function (t) { var e = this.id, n = this.data.datasets[t], i = n._meta && n._meta[e]; i && (i.controller.destroy(), delete n._meta[e]) }, destroy: function () { var t, e, n = this, i = n.canvas; for (n.stop(), t = 0, e = n.data.datasets.length; t < e; ++t)n.destroyDatasetMeta(t); i && (n.unbindEvents(), H.canvas.clear(n), Ie.releaseContext(n.ctx), n.canvas = null, n.ctx = null), Le.notify(n, ""destroy""), delete tn.instances[n.id] }, toBase64Image: function () { return this.canvas.toDataURL.apply(this.canvas, arguments) }, initToolTip: function () { var t = this; t.tooltip = new Ge({ _chart: t, _chartInstance: t, _data: t.data, _options: t.options.tooltips }, t) }, bindEvents: function () { var t = this, e = t._listeners = {}, n = function () { t.eventHandler.apply(t, arguments) }; H.each(t.options.events, (function (i) { Ie.addEventListener(t, i, n), e[i] = n })), t.options.responsive && (n = function () { t.resize() }, Ie.addEventListener(t, ""resize"", n), e.resize = n) }, unbindEvents: function () { var t = this, e = t._listeners; e && (delete t._listeners, H.each(e, (function (e, n) { Ie.removeEventListener(t, n, e) }))) }, updateHoverStyle: function (t, e, n) { var i, a, r, o = n ? ""set"" : ""remove""; for (a = 0, r = t.length; a < r; ++a)(i = t[a]) && this.getDatasetMeta(i._datasetIndex).controller[o + ""HoverStyle""](i); ""dataset"" === e && this.getDatasetMeta(t[0]._datasetIndex).controller[""_"" + o + ""DatasetHoverStyle""]() }, eventHandler: function (t) { var e = this, n = e.tooltip; if (!1 !== Le.notify(e, ""beforeEvent"", [t])) { e._bufferedRender = !0, e._bufferedRequest = null; var i = e.handleEvent(t); n && (i = n._start ? n.handleEvent(t) : i | n.handleEvent(t)), Le.notify(e, ""afterEvent"", [t]); var a = e._bufferedRequest; return a ? e.render(a) : i && !e.animating && (e.stop(), e.render({ duration: e.options.hover.animationDuration, lazy: !0 })), e._bufferedRender = !1, e._bufferedRequest = null, e } }, handleEvent: function (t) { var e, n = this, i = n.options || {}, a = i.hover; return n.lastActive = n.lastActive || [], ""mouseout"" === t.type ? n.active = [] : n.active = n.getElementsAtEventForMode(t, a.mode, a), H.callback(i.onHover || i.hover.onHover, [t.native, n.active], n), ""mouseup"" !== t.type && ""click"" !== t.type || i.onClick && i.onClick.call(n, t.native, n.active), n.lastActive.length && n.updateHoverStyle(n.lastActive, a.mode, !1), n.active.length && a.mode && n.updateHoverStyle(n.active, a.mode, !0), e = !H.arrayEquals(n.active, n.lastActive), n.lastActive = n.active, e } }), tn.instances = {}; var en = tn; tn.Controller = tn, tn.types = {}, H.configMerge = µe, H.scaleMerge = Ze; function nn() { throw new Error(""This method is not implemented: either no adapter can be found or an incomplete integration was provided."") } function an(t) { this.options = t || {} } H.extend(an.prototype, { formats: nn, parse: nn, format: nn, add: nn, diff: nn, startOf: nn, endOf: nn, _create: function (t) { return t } }), an.override = function (t) { H.extend(an.prototype, t) }; var rn = { _date: an }, on = { formatters: { values: function (t) { return H.isArray(t) ? t : """" + t }, linear: function (t, e, n) { var i = n.length > 3 ? n[2] - n[1] : n[1] - n[0]; Math.abs(i) > 1 && t !== Math.floor(t) && (i = t - Math.floor(t)); var a = H.log10(Math.abs(i)), r = """"; if (0 !== t) if (Math.max(Math.abs(n[0]), Math.abs(n[n.length - 1])) < 1e-4) { var o = H.log10(Math.abs(t)), s = Math.floor(o) - Math.floor(a); s = Math.max(Math.min(s, 20), 0), r = t.toExponential(s) } else { var l = -1 * Math.floor(a); l = Math.max(Math.min(l, 20), 0), r = t.toFixed(l) } else r = ""0""; return r }, logarithmic: function (t, e, n) { var i = t / Math.pow(10, Math.floor(H.log10(t))); return 0 === t ? ""0"" : 1 === i || 2 === i || 5 === i || 0 === e || e === n.length - 1 ? t.toExponential() : """" } } }, sn = H.isArray, ln = H.isNullOrUndef, un = H.valueOrDefault, dn = H.valueAtIndexOrDefault; function hn(t, e, n) { var i, a = t.getTicks().length, r = Math.min(e, a - 1), o = t.getPixelForTick(r), s = t._startPixel, l = t._endPixel; if (!(n && (i = 1 === a ? Math.max(o - s, l - o) : 0 === e ? (t.getPixelForTick(1) - o) / 2 : (o - t.getPixelForTick(r - 1)) / 2, (o += r < e ? i : -i) < s - 1e-6 || o > l + 1e-6))) return o } function cn(t, e, n, i) { var a, r, o, s, l, u, d, h, c, f, g, m, p, v = n.length, b = [], y = [], x = []; for (a = 0; a < v; ++a) { if (s = n[a].label, l = n[a].major ? e.major : e.minor, t.font = u = l.string, d = i[u] = i[u] || { data: {}, gc: [] }, h = l.lineHeight, c = f = 0, ln(s) || sn(s)) { if (sn(s)) for (r = 0, o = s.length; r < o; ++r)g = s[r], ln(g) || sn(g) || (c = H.measureText(t, d.data, d.gc, c, g), f += h) } else c = H.measureText(t, d.data, d.gc, c, s), f = h; b.push(c), y.push(f), x.push(h / 2) } function _(t) { return { width: b[t] || 0, height: y[t] || 0, offset: x[t] || 0 } } return function (t, e) { H.each(t, (function (t) { var n, i = t.gc, a = i.length / 2; if (a > e) { for (n = 0; n < a; ++n)delete t.data[i[n]]; i.splice(0, a) } })) }(i, v), m = b.indexOf(Math.max.apply(null, b)), p = y.indexOf(Math.max.apply(null, y)), { first: _(0), last: _(v - 1), widest: _(m), highest: _(p) } } function fn(t) { return t.drawTicks ? t.tickMarkLength : 0 } function gn(t) { var e, n; return t.display ? (e = H.options._parseFont(t), n = H.options.toPadding(t.padding), e.lineHeight + n.height) : 0 } function mn(t, e) { return H.extend(H.options._parseFont({ fontFamily: un(e.fontFamily, t.fontFamily), fontSize: un(e.fontSize, t.fontSize), fontStyle: un(e.fontStyle, t.fontStyle), lineHeight: un(e.lineHeight, t.lineHeight) }), { color: H.options.resolve([e.fontColor, t.fontColor, W.global.defaultFontColor]) }) } function pn(t) { var e = mn(t, t.minor); return { minor: e, major: t.major.enabled ? mn(t, t.major) : e } } function vn(t) { var e, n, i, a = []; for (n = 0, i = t.length; n < i; ++n)void 0 !== (e = t[n])._index && a.push(e); return a } function bn(t, e, n, i) { var a, r, o, s, l = un(n, 0), u = Math.min(un(i, t.length), t.length), d = 0; for (e = Math.ceil(e), i && (e = (a = i - n) / Math.floor(a / e)), s = l; s < 0;)d++, s = Math.round(l + d * e); for (r = Math.max(l, 0); r < u; r++)o = t[r], r === s ? (o._index = r, d++, s = Math.round(l + d * e)) : delete o.label } W._set(""scale"", { display: !0, position: ""left"", offset: !1, gridLines: { display: !0, color: ""rgba(0,0,0,0.1)"", lineWidth: 1, drawBorder: !0, drawOnChartArea: !0, drawTicks: !0, tickMarkLength: 10, zeroLineWidth: 1, zeroLineColor: ""rgba(0,0,0,0.25)"", zeroLineBorderDash: [], zeroLineBorderDashOffset: 0, offsetGridLines: !1, borderDash: [], borderDashOffset: 0 }, scaleLabel: { display: !1, labelString: """", padding: { top: 4, bottom: 4 } }, ticks: { beginAtZero: !1, minRotation: 0, maxRotation: 50, mirror: !1, padding: 0, reverse: !1, display: !0, autoSkip: !0, autoSkipPadding: 0, labelOffset: 0, callback: on.formatters.values, minor: {}, major: {} } }); var yn = µ.extend({ zeroLineIndex: 0, getPadding: function () { return { left: this.paddingLeft || 0, top: this.paddingTop || 0, right: this.paddingRight || 0, bottom: this.paddingBottom || 0 } }, getTicks: function () { return this._ticks }, _getLabels: function () { var t = this.chart.data; return this.options.labels || (this.isHorizontal() ? t.xLabels : t.yLabels) || t.labels || [] }, mergeTicksOptions: function () { }, beforeUpdate: function () { H.callback(this.options.beforeUpdate, [this]) }, update: function (t, e, n) { var i, a, r, o, s, l = this, u = l.options.ticks, d = u.sampleSize; if (l.beforeUpdate(), l.maxWidth = t, l.maxHeight = e, l.margins = H.extend({ left: 0, right: 0, top: 0, bottom: 0 }, n), l._ticks = null, l.ticks = null, l._labelSizes = null, l._maxLabelLines = 0, l.longestLabelWidth = 0, l.longestTextCache = l.longestTextCache || {}, l._gridLineItems = null, l._labelItems = null, l.beforeSetDimensions(), l.setDimensions(), l.afterSetDimensions(), l.beforeDataLimits(), l.determineDataLimits(), l.afterDataLimits(), l.beforeBuildTicks(), o = l.buildTicks() || [], (!(o = l.afterBuildTicks(o) || o) || !o.length) && l.ticks) for (o = [], i = 0, a = l.ticks.length; i < a; ++i)o.push({ value: l.ticks[i], major: !1 }); return l._ticks = o, s = d < o.length, r = l._convertTicksToLabels(s ? function (t, e) { for (var n = [], i = t.length / e, a = 0, r = t.length; a < r; a += i)n.push(t[Math.floor(a)]); return n }(o, d) : o), l._configure(), l.beforeCalculateTickRotation(), l.calculateTickRotation(), l.afterCalculateTickRotation(), l.beforeFit(), l.fit(), l.afterFit(), l._ticksToDraw = u.display && (u.autoSkip || ""auto"" === u.source) ? l._autoSkip(o) : o, s && (r = l._convertTicksToLabels(l._ticksToDraw)), l.ticks = r, l.afterUpdate(), l.minSize }, _configure: function () { var t, e, n = this, i = n.options.ticks.reverse; n.isHorizontal() ? (t = n.left, e = n.right) : (t = n.top, e = n.bottom, i = !i), n._startPixel = t, n._endPixel = e, n._reversePixels = i, n._length = e - t }, afterUpdate: function () { H.callback(this.options.afterUpdate, [this]) }, beforeSetDimensions: function () { H.callback(this.options.beforeSetDimensions, [this]) }, setDimensions: function () { var t = this; t.isHorizontal() ? (t.width = t.maxWidth, t.left = 0, t.right = t.width) : (t.height = t.maxHeight, t.top = 0, t.bottom = t.height), t.paddingLeft = 0, t.paddingTop = 0, t.paddingRight = 0, t.paddingBottom = 0 }, afterSetDimensions: function () { H.callback(this.options.afterSetDimensions, [this]) }, beforeDataLimits: function () { H.callback(this.options.beforeDataLimits, [this]) }, determineDataLimits: H.noop, afterDataLimits: function () { H.callback(this.options.afterDataLimits, [this]) }, beforeBuildTicks: function () { H.callback(this.options.beforeBuildTicks, [this]) }, buildTicks: H.noop, afterBuildTicks: function (t) { var e = this; return sn(t) && t.length ? H.callback(e.options.afterBuildTicks, [e, t]) : (e.ticks = H.callback(e.options.afterBuildTicks, [e, e.ticks]) || e.ticks, t) }, beforeTickToLabelConversion: function () { H.callback(this.options.beforeTickToLabelConversion, [this]) }, convertTicksToLabels: function () { var t = this.options.ticks; this.ticks = this.ticks.map(t.userCallback || t.callback, this) }, afterTickToLabelConversion: function () { H.callback(this.options.afterTickToLabelConversion, [this]) }, beforeCalculateTickRotation: function () { H.callback(this.options.beforeCalculateTickRotation, [this]) }, calculateTickRotation: function () { var t, e, n, i, a, r, o, s = this, l = s.options, u = l.ticks, d = s.getTicks().length, h = u.minRotation || 0, c = u.maxRotation, f = h; !s._isVisible() || !u.display || h >= c || d <= 1 || !s.isHorizontal() ? s.labelRotation = h : (e = (t = s._getLabelSizes()).widest.width, n = t.highest.height - t.highest.offset, i = Math.min(s.maxWidth, s.chart.width - e), e + 6 > (a = l.offset ? s.maxWidth / d : i / (d - 1)) && (a = i / (d - (l.offset ? .5 : 1)), r = s.maxHeight - fn(l.gridLines) - u.padding - gn(l.scaleLabel), o = Math.sqrt(e * e + n * n), f = H.toDegrees(Math.min(Math.asin(Math.min((t.highest.height + 6) / a, 1)), Math.asin(Math.min(r / o, 1)) - Math.asin(n / o))), f = Math.max(h, Math.min(c, f))), s.labelRotation = f) }, afterCalculateTickRotation: function () { H.callback(this.options.afterCalculateTickRotation, [this]) }, beforeFit: function () { H.callback(this.options.beforeFit, [this]) }, fit: function () { var t = this, e = t.minSize = { width: 0, height: 0 }, n = t.chart, i = t.options, a = i.ticks, r = i.scaleLabel, o = i.gridLines, s = t._isVisible(), l = ""bottom"" === i.position, u = t.isHorizontal(); if (u ? e.width = t.maxWidth : s && (e.width = fn(o) + gn(r)), u ? s && (e.height = fn(o) + gn(r)) : e.height = t.maxHeight, a.display && s) { var d = pn(a), h = t._getLabelSizes(), c = h.first, f = h.last, g = h.widest, m = h.highest, p = .4 * d.minor.lineHeight, v = a.padding; if (u) { var b = 0 !== t.labelRotation, y = H.toRadians(t.labelRotation), x = Math.cos(y), _ = Math.sin(y), w = _ * g.width + x * (m.height - (b ? m.offset : 0)) + (b ? 0 : p); e.height = Math.min(t.maxHeight, e.height + w + v); var k, M, S = t.getPixelForTick(0) - t.left, D = t.right - t.getPixelForTick(t.getTicks().length - 1); b ? (k = l ? x * c.width + _ * c.offset : _ * (c.height - c.offset), M = l ? _ * (f.height - f.offset) : x * f.width + _ * f.offset) : (k = c.width / 2, M = f.width / 2), t.paddingLeft = Math.max((k - S) * t.width / (t.width - S), 0) + 3, t.paddingRight = Math.max((M - D) * t.width / (t.width - D), 0) + 3 } else { var C = a.mirror ? 0 : g.width + v + p; e.width = Math.min(t.maxWidth, e.width + C), t.paddingTop = c.height / 2, t.paddingBottom = f.height / 2 } } t.handleMargins(), u ? (t.width = t._length = n.width - t.margins.left - t.margins.right, t.height = e.height) : (t.width = e.width, t.height = t._length = n.height - t.margins.top - t.margins.bottom) }, handleMargins: function () { var t = this; t.margins && (t.margins.left = Math.max(t.paddingLeft, t.margins.left), t.margins.top = Math.max(t.paddingTop, t.margins.top), t.margins.right = Math.max(t.paddingRight, t.margins.right), t.margins.bottom = Math.max(t.paddingBottom, t.margins.bottom)) }, afterFit: function () { H.callback(this.options.afterFit, [this]) }, isHorizontal: function () { var t = this.options.position; return ""top"" === t || ""bottom"" === t }, isFullWidth: function () { return this.options.fullWidth }, getRightValue: function (t) { if (ln(t)) return NaN; if ((""number"" == typeof t || t instanceof Number) && !isFinite(t)) return NaN; if (t) if (this.isHorizontal()) { if (void 0 !== t.x) return this.getRightValue(t.x) } else if (void 0 !== t.y) return this.getRightValue(t.y); return t }, _convertTicksToLabels: function (t) { var e, n, i, a = this; for (a.ticks = t.map((function (t) { return t.value })), a.beforeTickToLabelConversion(), e = a.convertTicksToLabels(t) || a.ticks, a.afterTickToLabelConversion(), n = 0, i = t.length; n < i; ++n)t[n].label = e[n]; return e }, _getLabelSizes: function () { var t = this, e = t._labelSizes; return e || (t._labelSizes = e = cn(t.ctx, pn(t.options.ticks), t.getTicks(), t.longestTextCache), t.longestLabelWidth = e.widest.width), e }, _parseValue: function (t) { var e, n, i, a; return sn(t) ? (e = +this.getRightValue(t[0]), n = +this.getRightValue(t[1]), i = Math.min(e, n), a = Math.max(e, n)) : (e = void 0, n = t = +this.getRightValue(t), i = t, a = t), { min: i, max: a, start: e, end: n } }, _getScaleLabel: function (t) { var e = this._parseValue(t); return void 0 !== e.start ? ""["" + e.start + "", "" + e.end + ""]"" : +this.getRightValue(t) }, getLabelForIndex: H.noop, getPixelForValue: H.noop, getValueForPixel: H.noop, getPixelForTick: function (t) { var e = this.options.offset, n = this._ticks.length, i = 1 / Math.max(n - (e ? 0 : 1), 1); return t < 0 || t > n - 1 ? null : this.getPixelForDecimal(t * i + (e ? i / 2 : 0)) }, getPixelForDecimal: function (t) { return this._reversePixels && (t = 1 - t), this._startPixel + t * this._length }, getDecimalForPixel: function (t) { var e = (t - this._startPixel) / this._length; return this._reversePixels ? 1 - e : e }, getBasePixel: function () { return this.getPixelForValue(this.getBaseValue()) }, getBaseValue: function () { var t = this.min, e = this.max; return this.beginAtZero ? 0 : t < 0 && e < 0 ? e : t > 0 && e > 0 ? t : 0 }, _autoSkip: function (t) { var e, n, i, a, r = this.options.ticks, o = this._length, s = r.maxTicksLimit || o / this._tickSize() + 1, l = r.major.enabled ? function (t) { var e, n, i = []; for (e = 0, n = t.length; e < n; e++)t[e].major && i.push(e); return i }(t) : [], u = l.length, d = l[0], h = l[u - 1]; if (u > s) return function (t, e, n) { var i, a, r = 0, o = e[0]; for (n = Math.ceil(n), i = 0; i < t.length; i++)a = t[i], i === o ? (a._index = i, o = e[++r * n]) : delete a.label }(t, l, u / s), vn(t); if (i = function (t, e, n, i) { var a, r, o, s, l = function (t) { var e, n, i = t.length; if (i < 2) return !1; for (n = t[0], e = 1; e < i; ++e)if (t[e] - t[e - 1] !== n) return !1; return n }(t), u = (e.length - 1) / i; if (!l) return Math.max(u, 1); for (o = 0, s = (a = H.math._factorize(l)).length - 1; o < s; o++)if ((r = a[o]) > u) return r; return Math.max(u, 1) }(l, t, 0, s), u > 0) { for (e = 0, n = u - 1; e < n; e++)bn(t, i, l[e], l[e + 1]); return a = u > 1 ? (h - d) / (u - 1) : null, bn(t, i, H.isNullOrUndef(a) ? 0 : d - a, d), bn(t, i, h, H.isNullOrUndef(a) ? t.length : h + a), vn(t) } return bn(t, i), vn(t) }, _tickSize: function () { var t = this.options.ticks, e = H.toRadians(this.labelRotation), n = Math.abs(Math.cos(e)), i = Math.abs(Math.sin(e)), a = this._getLabelSizes(), r = t.autoSkipPadding || 0, o = a ? a.widest.width + r : 0, s = a ? a.highest.height + r : 0; return this.isHorizontal() ? s * n > o * i ? o / n : s / i : s * i < o * n ? s / n : o / i }, _isVisible: function () { var t, e, n, i = this.chart, a = this.options.display; if (""auto"" !== a) return !!a; for (t = 0, e = i.data.datasets.length; t < e; ++t)if (i.isDatasetVisible(t) && ((n = i.getDatasetMeta(t)).xAxisID === this.id || n.yAxisID === this.id)) return !0; return !1 }, _computeGridLineItems: function (t) { var e, n, i, a, r, o, s, l, u, d, h, c, f, g, m, p, v, b = this, y = b.chart, x = b.options, _ = x.gridLines, w = x.position, k = _.offsetGridLines, M = b.isHorizontal(), S = b._ticksToDraw, D = S.length + (k ? 1 : 0), C = fn(_), P = [], T = _.drawBorder ? dn(_.lineWidth, 0, 0) : 0, O = T / 2, A = H._alignPixel, F = function (t) { return A(y, t, T) }; for (""top"" === w ? (e = F(b.bottom), s = b.bottom - C, u = e - O, h = F(t.top) + O, f = t.bottom) : ""bottom"" === w ? (e = F(b.top), h = t.top, f = F(t.bottom) - O, s = e + O, u = b.top + C) : ""left"" === w ? (e = F(b.right), o = b.right - C, l = e - O, d = F(t.left) + O, c = t.right) : (e = F(b.left), d = t.left, c = F(t.right) - O, o = e + O, l = b.left + C), n = 0; n < D; ++n)i = S[n] || {}, ln(i.label) && n < S.length || (n === b.zeroLineIndex && x.offset === k ? (g = _.zeroLineWidth, m = _.zeroLineColor, p = _.zeroLineBorderDash || [], v = _.zeroLineBorderDashOffset || 0) : (g = dn(_.lineWidth, n, 1), m = dn(_.color, n, ""rgba(0,0,0,0.1)""), p = _.borderDash || [], v = _.borderDashOffset || 0), void 0 !== (a = hn(b, i._index || n, k)) && (r = A(y, a, g), M ? o = l = d = c = r : s = u = h = f = r, P.push({ tx1: o, ty1: s, tx2: l, ty2: u, x1: d, y1: h, x2: c, y2: f, width: g, color: m, borderDash: p, borderDashOffset: v }))); return P.ticksLength = D, P.borderValue = e, P }, _computeLabelItems: function () { var t, e, n, i, a, r, o, s, l, u, d, h, c = this, f = c.options, g = f.ticks, m = f.position, p = g.mirror, v = c.isHorizontal(), b = c._ticksToDraw, y = pn(g), x = g.padding, _ = fn(f.gridLines), w = -H.toRadians(c.labelRotation), k = []; for (""top"" === m ? (r = c.bottom - _ - x, o = w ? ""left"" : ""center"") : ""bottom"" === m ? (r = c.top + _ + x, o = w ? ""right"" : ""center"") : ""left"" === m ? (a = c.right - (p ? 0 : _) - x, o = p ? ""left"" : ""right"") : (a = c.left + (p ? 0 : _) + x, o = p ? ""right"" : ""left""), t = 0, e = b.length; t < e; ++t)i = (n = b[t]).label, ln(i) || (s = c.getPixelForTick(n._index || t) + g.labelOffset, u = (l = n.major ? y.major : y.minor).lineHeight, d = sn(i) ? i.length : 1, v ? (a = s, h = ""top"" === m ? ((w ? 1 : .5) - d) * u : (w ? 0 : .5) * u) : (r = s, h = (1 - d) * u / 2), k.push({ x: a, y: r, rotation: w, label: i, font: l, textOffset: h, textAlign: o })); return k }, _drawGrid: function (t) { var e = this, n = e.options.gridLines; if (n.display) { var i, a, r, o, s, l = e.ctx, u = e.chart, d = H._alignPixel, h = n.drawBorder ? dn(n.lineWidth, 0, 0) : 0, c = e._gridLineItems || (e._gridLineItems = e._computeGridLineItems(t)); for (r = 0, o = c.length; r < o; ++r)i = (s = c[r]).width, a = s.color, i && a && (l.save(), l.lineWidth = i, l.strokeStyle = a, l.setLineDash && (l.setLineDash(s.borderDash), l.lineDashOffset = s.borderDashOffset), l.beginPath(), n.drawTicks && (l.moveTo(s.tx1, s.ty1), l.lineTo(s.tx2, s.ty2)), n.drawOnChartArea && (l.moveTo(s.x1, s.y1), l.lineTo(s.x2, s.y2)), l.stroke(), l.restore()); if (h) { var f, g, m, p, v = h, b = dn(n.lineWidth, c.ticksLength - 1, 1), y = c.borderValue; e.isHorizontal() ? (f = d(u, e.left, v) - v / 2, g = d(u, e.right, b) + b / 2, m = p = y) : (m = d(u, e.top, v) - v / 2, p = d(u, e.bottom, b) + b / 2, f = g = y), l.lineWidth = h, l.strokeStyle = dn(n.color, 0), l.beginPath(), l.moveTo(f, m), l.lineTo(g, p), l.stroke() } } }, _drawLabels: function () { var t = this; if (t.options.ticks.display) { var e, n, i, a, r, o, s, l, u = t.ctx, d = t._labelItems || (t._labelItems = t._computeLabelItems()); for (e = 0, i = d.length; e < i; ++e) { if (o = (r = d[e]).font, u.save(), u.translate(r.x, r.y), u.rotate(r.rotation), u.font = o.string, u.fillStyle = o.color, u.textBaseline = ""middle"", u.textAlign = r.textAlign, s = r.label, l = r.textOffset, sn(s)) for (n = 0, a = s.length; n < a; ++n)u.fillText("""" + s[n], 0, l), l += o.lineHeight; else u.fillText(s, 0, l); u.restore() } } }, _drawTitle: function () { var t = this, e = t.ctx, n = t.options, i = n.scaleLabel; if (i.display) { var a, r, o = un(i.fontColor, W.global.defaultFontColor), s = H.options._parseFont(i), l = H.options.toPadding(i.padding), u = s.lineHeight / 2, d = n.position, h = 0; if (t.isHorizontal()) a = t.left + t.width / 2, r = ""bottom"" === d ? t.bottom - u - l.bottom : t.top + u + l.top; else { var c = ""left"" === d; a = c ? t.left + u + l.top : t.right - u - l.top, r = t.top + t.height / 2, h = c ? -.5 * Math.PI : .5 * Math.PI } e.save(), e.translate(a, r), e.rotate(h), e.textAlign = ""center"", e.textBaseline = ""middle"", e.fillStyle = o, e.font = s.string, e.fillText(i.labelString, 0, 0), e.restore() } }, draw: function (t) { this._isVisible() && (this._drawGrid(t), this._drawTitle(), this._drawLabels()) }, _layers: function () { var t = this, e = t.options, n = e.ticks && e.ticks.z || 0, i = e.gridLines && e.gridLines.z || 0; return t._isVisible() && n !== i && t.draw === t._draw ? [{ z: i, draw: function () { t._drawGrid.apply(t, arguments), t._drawTitle.apply(t, arguments) } }, { z: n, draw: function () { t._drawLabels.apply(t, arguments) } }] : [{ z: n, draw: function () { t.draw.apply(t, arguments) } }] }, _getMatchingVisibleMetas: function (t) { var e = this, n = e.isHorizontal(); return e.chart._getSortedVisibleDatasetMetas().filter((function (i) { return (!t || i.type === t) && (n ? i.xAxisID === e.id : i.yAxisID === e.id) })) } }); yn.prototype._draw = yn.prototype.draw; var xn = yn, _n = H.isNullOrUndef, wn = xn.extend({ determineDataLimits: function () { var t, e = this, n = e._getLabels(), i = e.options.ticks, a = i.min, r = i.max, o = 0, s = n.length - 1; void 0 !== a && (t = n.indexOf(a)) >= 0 && (o = t), void 0 !== r && (t = n.indexOf(r)) >= 0 && (s = t), e.minIndex = o, e.maxIndex = s, e.min = n[o], e.max = n[s] }, buildTicks: function () { var t = this._getLabels(), e = this.minIndex, n = this.maxIndex; this.ticks = 0 === e && n === t.length - 1 ? t : t.slice(e, n + 1) }, getLabelForIndex: function (t, e) { var n = this.chart; return n.getDatasetMeta(e).controller._getValueScaleId() === this.id ? this.getRightValue(n.data.datasets[e].data[t]) : this._getLabels()[t] }, _configure: function () { var t = this, e = t.options.offset, n = t.ticks; xn.prototype._configure.call(t), t.isHorizontal() || (t._reversePixels = !t._reversePixels), n && (t._startValue = t.minIndex - (e ? .5 : 0), t._valueRange = Math.max(n.length - (e ? 0 : 1), 1)) }, getPixelForValue: function (t, e, n) { var i, a, r, o = this; return _n(e) || _n(n) || (t = o.chart.data.datasets[n].data[e]), _n(t) || (i = o.isHorizontal() ? t.x : t.y), (void 0 !== i || void 0 !== t && isNaN(e)) && (a = o._getLabels(), t = H.valueOrDefault(i, t), e = -1 !== (r = a.indexOf(t)) ? r : e, isNaN(e) && (e = t)), o.getPixelForDecimal((e - o._startValue) / o._valueRange) }, getPixelForTick: function (t) { var e = this.ticks; return t < 0 || t > e.length - 1 ? null : this.getPixelForValue(e[t], t + this.minIndex) }, getValueForPixel: function (t) { var e = Math.round(this._startValue + this.getDecimalForPixel(t) * this._valueRange); return Math.min(Math.max(e, 0), this.ticks.length - 1) }, getBasePixel: function () { return this.bottom } }), kn = { position: ""bottom"" }; wn._defaults = kn; var Mn = H.noop, Sn = H.isNullOrUndef; var Dn = xn.extend({ getRightValue: function (t) { return ""string"" == typeof t ? +t : xn.prototype.getRightValue.call(this, t) }, handleTickRangeOptions: function () { var t = this, e = t.options.ticks; if (e.beginAtZero) { var n = H.sign(t.min), i = H.sign(t.max); n < 0 && i < 0 ? t.max = 0 : n > 0 && i > 0 && (t.min = 0) } var a = void 0 !== e.min || void 0 !== e.suggestedMin, r = void 0 !== e.max || void 0 !== e.suggestedMax; void 0 !== e.min ? t.min = e.min : void 0 !== e.suggestedMin && (null === t.min ? t.min = e.suggestedMin : t.min = Math.min(t.min, e.suggestedMin)), void 0 !== e.max ? t.max = e.max : void 0 !== e.suggestedMax && (null === t.max ? t.max = e.suggestedMax : t.max = Math.max(t.max, e.suggestedMax)), a !== r && t.min >= t.max && (a ? t.max = t.min + 1 : t.min = t.max - 1), t.min === t.max && (t.max++, e.beginAtZero || t.min--) }, getTickLimit: function () { var t, e = this.options.ticks, n = e.stepSize, i = e.maxTicksLimit; return n ? t = Math.ceil(this.max / n) - Math.floor(this.min / n) + 1 : (t = this._computeTickLimit(), i = i || 11), i && (t = Math.min(i, t)), t }, _computeTickLimit: function () { return Number.POSITIVE_INFINITY }, handleDirectionalChanges: Mn, buildTicks: function () { var t = this, e = t.options.ticks, n = t.getTickLimit(), i = { maxTicks: n = Math.max(2, n), min: e.min, max: e.max, precision: e.precision, stepSize: H.valueOrDefault(e.fixedStepSize, e.stepSize) }, a = t.ticks = function (t, e) { var n, i, a, r, o = [], s = t.stepSize, l = s || 1, u = t.maxTicks - 1, d = t.min, h = t.max, c = t.precision, f = e.min, g = e.max, m = H.niceNum((g - f) / u / l) * l; if (m < 1e-14 && Sn(d) && Sn(h)) return [f, g]; (r = Math.ceil(g / m) - Math.floor(f / m)) > u && (m = H.niceNum(r * m / u / l) * l), s || Sn(c) ? n = Math.pow(10, H._decimalPlaces(m)) : (n = Math.pow(10, c), m = Math.ceil(m * n) / n), i = Math.floor(f / m) * m, a = Math.ceil(g / m) * m, s && (!Sn(d) && H.almostWhole(d / m, m / 1e3) && (i = d), !Sn(h) && H.almostWhole(h / m, m / 1e3) && (a = h)), r = (a - i) / m, r = H.almostEquals(r, Math.round(r), m / 1e3) ? Math.round(r) : Math.ceil(r), i = Math.round(i * n) / n, a = Math.round(a * n) / n, o.push(Sn(d) ? i : d); for (var p = 1; p < r; ++p)o.push(Math.round((i + p * m) * n) / n); return o.push(Sn(h) ? a : h), o }(i, t); t.handleDirectionalChanges(), t.max = H.max(a), t.min = H.min(a), e.reverse ? (a.reverse(), t.start = t.max, t.end = t.min) : (t.start = t.min, t.end = t.max) }, convertTicksToLabels: function () { var t = this; t.ticksAsNumbers = t.ticks.slice(), t.zeroLineIndex = t.ticks.indexOf(0), xn.prototype.convertTicksToLabels.call(t) }, _configure: function () { var t, e = this, n = e.getTicks(), i = e.min, a = e.max; xn.prototype._configure.call(e), e.options.offset && n.length && (i -= t = (a - i) / Math.max(n.length - 1, 1) / 2, a += t), e._startValue = i, e._endValue = a, e._valueRange = a - i } }), Cn = { position: ""left"", ticks: { callback: on.formatters.linear } }; function Pn(t, e, n, i) { var a, r, o = t.options, s = function (t, e, n) { var i = [n.type, void 0 === e && void 0 === n.stack ? n.index : """", n.stack].join("".""); return void 0 === t[i] && (t[i] = { pos: [], neg: [] }), t[i] }(e, o.stacked, n), l = s.pos, u = s.neg, d = i.length; for (a = 0; a < d; ++a)r = t._parseValue(i[a]), isNaN(r.min) || isNaN(r.max) || n.data[a].hidden || (l[a] = l[a] || 0, u[a] = u[a] || 0, o.relativePoints ? l[a] = 100 : r.min < 0 || r.max < 0 ? u[a] += r.min : l[a] += r.max) } function Tn(t, e, n) { var i, a, r = n.length; for (i = 0; i < r; ++i)a = t._parseValue(n[i]), isNaN(a.min) || isNaN(a.max) || e.data[i].hidden || (t.min = Math.min(t.min, a.min), t.max = Math.max(t.max, a.max)) } var On = Dn.extend({ determineDataLimits: function () { var t, e, n, i, a = this, r = a.options, o = a.chart.data.datasets, s = a._getMatchingVisibleMetas(), l = r.stacked, u = {}, d = s.length; if (a.min = Number.POSITIVE_INFINITY, a.max = Number.NEGATIVE_INFINITY, void 0 === l) for (t = 0; !l && t < d; ++t)l = void 0 !== (e = s[t]).stack; for (t = 0; t < d; ++t)n = o[(e = s[t]).index].data, l ? Pn(a, u, e, n) : Tn(a, e, n); H.each(u, (function (t) { i = t.pos.concat(t.neg), a.min = Math.min(a.min, H.min(i)), a.max = Math.max(a.max, H.max(i)) })), a.min = H.isFinite(a.min) && !isNaN(a.min) ? a.min : 0, a.max = H.isFinite(a.max) && !isNaN(a.max) ? a.max : 1, a.handleTickRangeOptions() }, _computeTickLimit: function () { var t; return this.isHorizontal() ? Math.ceil(this.width / 40) : (t = H.options._parseFont(this.options.ticks), Math.ceil(this.height / t.lineHeight)) }, handleDirectionalChanges: function () { this.isHorizontal() || this.ticks.reverse() }, getLabelForIndex: function (t, e) { return this._getScaleLabel(this.chart.data.datasets[e].data[t]) }, getPixelForValue: function (t) { return this.getPixelForDecimal((+this.getRightValue(t) - this._startValue) / this._valueRange) }, getValueForPixel: function (t) { return this._startValue + this.getDecimalForPixel(t) * this._valueRange }, getPixelForTick: function (t) { var e = this.ticksAsNumbers; return t < 0 || t > e.length - 1 ? null : this.getPixelForValue(e[t]) } }), An = Cn; On._defaults = An; var Fn = H.valueOrDefault, In = H.math.log10; var Ln = { position: ""left"", ticks: { callback: on.formatters.logarithmic } }; function Rn(t, e) { return H.isFinite(t) && t >= 0 ? t : e } var Nn = xn.extend({ determineDataLimits: function () { var t, e, n, i, a, r, o = this, s = o.options, l = o.chart, u = l.data.datasets, d = o.isHorizontal(); function h(t) { return d ? t.xAxisID === o.id : t.yAxisID === o.id } o.min = Number.POSITIVE_INFINITY, o.max = Number.NEGATIVE_INFINITY, o.minNotZero = Number.POSITIVE_INFINITY; var c = s.stacked; if (void 0 === c) for (t = 0; t < u.length; t++)if (e = l.getDatasetMeta(t), l.isDatasetVisible(t) && h(e) && void 0 !== e.stack) { c = !0; break } if (s.stacked || c) { var f = {}; for (t = 0; t < u.length; t++) { var g = [(e = l.getDatasetMeta(t)).type, void 0 === s.stacked && void 0 === e.stack ? t : """", e.stack].join("".""); if (l.isDatasetVisible(t) && h(e)) for (void 0 === f[g] && (f[g] = []), a = 0, r = (i = u[t].data).length; a < r; a++) { var m = f[g]; n = o._parseValue(i[a]), isNaN(n.min) || isNaN(n.max) || e.data[a].hidden || n.min < 0 || n.max < 0 || (m[a] = m[a] || 0, m[a] += n.max) } } H.each(f, (function (t) { if (t.length > 0) { var e = H.min(t), n = H.max(t); o.min = Math.min(o.min, e), o.max = Math.max(o.max, n) } })) } else for (t = 0; t < u.length; t++)if (e = l.getDatasetMeta(t), l.isDatasetVisible(t) && h(e)) for (a = 0, r = (i = u[t].data).length; a < r; a++)n = o._parseValue(i[a]), isNaN(n.min) || isNaN(n.max) || e.data[a].hidden || n.min < 0 || n.max < 0 || (o.min = Math.min(n.min, o.min), o.max = Math.max(n.max, o.max), 0 !== n.min && (o.minNotZero = Math.min(n.min, o.minNotZero))); o.min = H.isFinite(o.min) ? o.min : null, o.max = H.isFinite(o.max) ? o.max : null, o.minNotZero = H.isFinite(o.minNotZero) ? o.minNotZero : null, this.handleTickRangeOptions() }, handleTickRangeOptions: function () { var t = this, e = t.options.ticks; t.min = Rn(e.min, t.min), t.max = Rn(e.max, t.max), t.min === t.max && (0 !== t.min && null !== t.min ? (t.min = Math.pow(10, Math.floor(In(t.min)) - 1), t.max = Math.pow(10, Math.floor(In(t.max)) + 1)) : (t.min = 1, t.max = 10)), null === t.min && (t.min = Math.pow(10, Math.floor(In(t.max)) - 1)), null === t.max && (t.max = 0 !== t.min ? Math.pow(10, Math.floor(In(t.min)) + 1) : 10), null === t.minNotZero && (t.min > 0 ? t.minNotZero = t.min : t.max < 1 ? t.minNotZero = Math.pow(10, Math.floor(In(t.max))) : t.minNotZero = 1) }, buildTicks: function () { var t = this, e = t.options.ticks, n = !t.isHorizontal(), i = { min: Rn(e.min), max: Rn(e.max) }, a = t.ticks = function (t, e) { var n, i, a = [], r = Fn(t.min, Math.pow(10, Math.floor(In(e.min)))), o = Math.floor(In(e.max)), s = Math.ceil(e.max / Math.pow(10, o)); 0 === r ? (n = Math.floor(In(e.minNotZero)), i = Math.floor(e.minNotZero / Math.pow(10, n)), a.push(r), r = i * Math.pow(10, n)) : (n = Math.floor(In(r)), i = Math.floor(r / Math.pow(10, n))); var l = n < 0 ? Math.pow(10, Math.abs(n)) : 1; do { a.push(r), 10 === ++i && (i = 1, l = ++n >= 0 ? 1 : l), r = Math.round(i * Math.pow(10, n) * l) / l } while (n < o || n === o && i < s); var u = Fn(t.max, r); return a.push(u), a }(i, t); t.max = H.max(a), t.min = H.min(a), e.reverse ? (n = !n, t.start = t.max, t.end = t.min) : (t.start = t.min, t.end = t.max), n && a.reverse() }, convertTicksToLabels: function () { this.tickValues = this.ticks.slice(), xn.prototype.convertTicksToLabels.call(this) }, getLabelForIndex: function (t, e) { return this._getScaleLabel(this.chart.data.datasets[e].data[t]) }, getPixelForTick: function (t) { var e = this.tickValues; return t < 0 || t > e.length - 1 ? null : this.getPixelForValue(e[t]) }, _getFirstTickValue: function (t) { var e = Math.floor(In(t)); return Math.floor(t / Math.pow(10, e)) * Math.pow(10, e) }, _configure: function () { var t = this, e = t.min, n = 0; xn.prototype._configure.call(t), 0 === e && (e = t._getFirstTickValue(t.minNotZero), n = Fn(t.options.ticks.fontSize, W.global.defaultFontSize) / t._length), t._startValue = In(e), t._valueOffset = n, t._valueRange = (In(t.max) - In(e)) / (1 - n) }, getPixelForValue: function (t) { var e = this, n = 0; return (t = +e.getRightValue(t)) > e.min && t > 0 && (n = (In(t) - e._startValue) / e._valueRange + e._valueOffset), e.getPixelForDecimal(n) }, getValueForPixel: function (t) { var e = this, n = e.getDecimalForPixel(t); return 0 === n && 0 === e.min ? 0 : Math.pow(10, e._startValue + (n - e._valueOffset) * e._valueRange) } }), Wn = Ln; Nn._defaults = Wn; var Yn = H.valueOrDefault, zn = H.valueAtIndexOrDefault, En = H.options.resolve, Vn = { display: !0, animate: !0, position: ""chartArea"", angleLines: { display: !0, color: ""rgba(0,0,0,0.1)"", lineWidth: 1, borderDash: [], borderDashOffset: 0 }, gridLines: { circular: !1 }, ticks: { showLabelBackdrop: !0, backdropColor: ""rgba(255,255,255,0.75)"", backdropPaddingY: 2, backdropPaddingX: 2, callback: on.formatters.linear }, pointLabels: { display: !0, fontSize: 10, callback: function (t) { return t } } }; function Hn(t) { var e = t.ticks; return e.display && t.display ? Yn(e.fontSize, W.global.defaultFontSize) + 2 * e.backdropPaddingY : 0 } function Bn(t, e, n, i, a) { return t === i || t === a ? { start: e - n / 2, end: e + n / 2 } : t < i || t > a ? { start: e - n, end: e } : { start: e, end: e + n } } function jn(t) { return 0 === t || 180 === t ? ""center"" : t < 180 ? ""left"" : ""right"" } function Un(t, e, n, i) { var a, r, o = n.y + i / 2; if (H.isArray(e)) for (a = 0, r = e.length; a < r; ++a)t.fillText(e[a], n.x, o), o += i; else t.fillText(e, n.x, o) } function Gn(t, e, n) { 90 === t || 270 === t ? n.y -= e.h / 2 : (t > 270 || t < 90) && (n.y -= e.h) } function qn(t) { return H.isNumber(t) ? t : 0 } var Zn = Dn.extend({ setDimensions: function () { var t = this; t.width = t.maxWidth, t.height = t.maxHeight, t.paddingTop = Hn(t.options) / 2, t.xCenter = Math.floor(t.width / 2), t.yCenter = Math.floor((t.height - t.paddingTop) / 2), t.drawingArea = Math.min(t.height - t.paddingTop, t.width) / 2 }, determineDataLimits: function () { var t = this, e = t.chart, n = Number.POSITIVE_INFINITY, i = Number.NEGATIVE_INFINITY; H.each(e.data.datasets, (function (a, r) { if (e.isDatasetVisible(r)) { var o = e.getDatasetMeta(r); H.each(a.data, (function (e, a) { var r = +t.getRightValue(e); isNaN(r) || o.data[a].hidden || (n = Math.min(r, n), i = Math.max(r, i)) })) } })), t.min = n === Number.POSITIVE_INFINITY ? 0 : n, t.max = i === Number.NEGATIVE_INFINITY ? 0 : i, t.handleTickRangeOptions() }, _computeTickLimit: function () { return Math.ceil(this.drawingArea / Hn(this.options)) }, convertTicksToLabels: function () { var t = this; Dn.prototype.convertTicksToLabels.call(t), t.pointLabels = t.chart.data.labels.map((function () { var e = H.callback(t.options.pointLabels.callback, arguments, t); return e || 0 === e ? e : """" })) }, getLabelForIndex: function (t, e) { return +this.getRightValue(this.chart.data.datasets[e].data[t]) }, fit: function () { var t = this.options; t.display && t.pointLabels.display ? function (t) { var e, n, i, a = H.options._parseFont(t.options.pointLabels), r = { l: 0, r: t.width, t: 0, b: t.height - t.paddingTop }, o = {}; t.ctx.font = a.string, t._pointLabelSizes = []; var s, l, u, d = t.chart.data.labels.length; for (e = 0; e < d; e++) { i = t.getPointPosition(e, t.drawingArea + 5), s = t.ctx, l = a.lineHeight, u = t.pointLabels[e], n = H.isArray(u) ? { w: H.longestText(s, s.font, u), h: u.length * l } : { w: s.measureText(u).width, h: l }, t._pointLabelSizes[e] = n; var h = t.getIndexAngle(e), c = H.toDegrees(h) % 360, f = Bn(c, i.x, n.w, 0, 180), g = Bn(c, i.y, n.h, 90, 270); f.start < r.l && (r.l = f.start, o.l = h), f.end > r.r && (r.r = f.end, o.r = h), g.start < r.t && (r.t = g.start, o.t = h), g.end > r.b && (r.b = g.end, o.b = h) } t.setReductions(t.drawingArea, r, o) }(this) : this.setCenterPoint(0, 0, 0, 0) }, setReductions: function (t, e, n) { var i = this, a = e.l / Math.sin(n.l), r = Math.max(e.r - i.width, 0) / Math.sin(n.r), o = -e.t / Math.cos(n.t), s = -Math.max(e.b - (i.height - i.paddingTop), 0) / Math.cos(n.b); a = qn(a), r = qn(r), o = qn(o), s = qn(s), i.drawingArea = Math.min(Math.floor(t - (a + r) / 2), Math.floor(t - (o + s) / 2)), i.setCenterPoint(a, r, o, s) }, setCenterPoint: function (t, e, n, i) { var a = this, r = a.width - e - a.drawingArea, o = t + a.drawingArea, s = n + a.drawingArea, l = a.height - a.paddingTop - i - a.drawingArea; a.xCenter = Math.floor((o + r) / 2 + a.left), a.yCenter = Math.floor((s + l) / 2 + a.top + a.paddingTop) }, getIndexAngle: function (t) { var e = this.chart, n = (t * (360 / e.data.labels.length) + ((e.options || {}).startAngle || 0)) % 360; return (n < 0 ? n + 360 : n) * Math.PI * 2 / 360 }, getDistanceFromCenterForValue: function (t) { var e = this; if (H.isNullOrUndef(t)) return NaN; var n = e.drawingArea / (e.max - e.min); return e.options.ticks.reverse ? (e.max - t) * n : (t - e.min) * n }, getPointPosition: function (t, e) { var n = this.getIndexAngle(t) - Math.PI / 2; return { x: Math.cos(n) * e + this.xCenter, y: Math.sin(n) * e + this.yCenter } }, getPointPositionForValue: function (t, e) { return this.getPointPosition(t, this.getDistanceFromCenterForValue(e)) }, getBasePosition: function (t) { var e = this.min, n = this.max; return this.getPointPositionForValue(t || 0, this.beginAtZero ? 0 : e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0) }, _drawGrid: function () { var t, e, n, i = this, a = i.ctx, r = i.options, o = r.gridLines, s = r.angleLines, l = Yn(s.lineWidth, o.lineWidth), u = Yn(s.color, o.color); if (r.pointLabels.display && function (t) { var e = t.ctx, n = t.options, i = n.pointLabels, a = Hn(n), r = t.getDistanceFromCenterForValue(n.ticks.reverse ? t.min : t.max), o = H.options._parseFont(i); e.save(), e.font = o.string, e.textBaseline = ""middle""; for (var s = t.chart.data.labels.length - 1; s >= 0; s--) { var l = 0 === s ? a / 2 : 0, u = t.getPointPosition(s, r + l + 5), d = zn(i.fontColor, s, W.global.defaultFontColor); e.fillStyle = d; var h = t.getIndexAngle(s), c = H.toDegrees(h); e.textAlign = jn(c), Gn(c, t._pointLabelSizes[s], u), Un(e, t.pointLabels[s], u, o.lineHeight) } e.restore() }(i), o.display && H.each(i.ticks, (function (t, n) { 0 !== n && (e = i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]), function (t, e, n, i) { var a, r = t.ctx, o = e.circular, s = t.chart.data.labels.length, l = zn(e.color, i - 1), u = zn(e.lineWidth, i - 1); if ((o || s) && l && u) { if (r.save(), r.strokeStyle = l, r.lineWidth = u, r.setLineDash && (r.setLineDash(e.borderDash || []), r.lineDashOffset = e.borderDashOffset || 0), r.beginPath(), o) r.arc(t.xCenter, t.yCenter, n, 0, 2 * Math.PI); else { a = t.getPointPosition(0, n), r.moveTo(a.x, a.y); for (var d = 1; d < s; d++)a = t.getPointPosition(d, n), r.lineTo(a.x, a.y) } r.closePath(), r.stroke(), r.restore() } }(i, o, e, n)) })), s.display && l && u) { for (a.save(), a.lineWidth = l, a.strokeStyle = u, a.setLineDash && (a.setLineDash(En([s.borderDash, o.borderDash, []])), a.lineDashOffset = En([s.borderDashOffset, o.borderDashOffset, 0])), t = i.chart.data.labels.length - 1; t >= 0; t--)e = i.getDistanceFromCenterForValue(r.ticks.reverse ? i.min : i.max), n = i.getPointPosition(t, e), a.beginPath(), a.moveTo(i.xCenter, i.yCenter), a.lineTo(n.x, n.y), a.stroke(); a.restore() } }, _drawLabels: function () { var t = this, e = t.ctx, n = t.options.ticks; if (n.display) { var i, a, r = t.getIndexAngle(0), o = H.options._parseFont(n), s = Yn(n.fontColor, W.global.defaultFontColor); e.save(), e.font = o.string, e.translate(t.xCenter, t.yCenter), e.rotate(r), e.textAlign = ""center"", e.textBaseline = ""middle"", H.each(t.ticks, (function (r, l) { (0 !== l || n.reverse) && (i = t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]), n.showLabelBackdrop && (a = e.measureText(r).width, e.fillStyle = n.backdropColor, e.fillRect(-a / 2 - n.backdropPaddingX, -i - o.size / 2 - n.backdropPaddingY, a + 2 * n.backdropPaddingX, o.size + 2 * n.backdropPaddingY)), e.fillStyle = s, e.fillText(r, 0, -i)) })), e.restore() } }, _drawTitle: H.noop }), µn = Vn; Zn._defaults = µn; var Xn = H._deprecated, Kn = H.options.resolve, Jn = H.valueOrDefault, Qn = Number.MIN_SAFE_INTEGER || -9007199254740991, ti = Number.MAX_SAFE_INTEGER || 9007199254740991, ei = { millisecond: { common: !0, size: 1, steps: 1e3 }, second: { common: !0, size: 1e3, steps: 60 }, minute: { common: !0, size: 6e4, steps: 60 }, hour: { common: !0, size: 36e5, steps: 24 }, day: { common: !0, size: 864e5, steps: 30 }, week: { common: !1, size: 6048e5, steps: 4 }, month: { common: !0, size: 2628e6, steps: 12 }, quarter: { common: !1, size: 7884e6, steps: 4 }, year: { common: !0, size: 3154e7 } }, ni = Object.keys(ei); function ii(t, e) { return t - e } function ai(t) { return H.valueOrDefault(t.time.min, t.ticks.min) } function ri(t) { return H.valueOrDefault(t.time.max, t.ticks.max) } function oi(t, e, n, i) { var a = function (t, e, n) { for (var i, a, r, o = 0, s = t.length - 1; o >= 0 && o <= s;) { if (a = t[(i = o + s >> 1) - 1] || null, r = t[i], !a) return { lo: null, hi: r }; if (r[e] < n) o = i + 1; else { if (!(a[e] > n)) return { lo: a, hi: r }; s = i - 1 } } return { lo: r, hi: null } }(t, e, n), r = a.lo ? a.hi ? a.lo : t[t.length - 2] : t[0], o = a.lo ? a.hi ? a.hi : t[t.length - 1] : t[1], s = o[e] - r[e], l = s ? (n - r[e]) / s : 0, u = (o[i] - r[i]) * l; return r[i] + u } function si(t, e) { var n = t._adapter, i = t.options.time, a = i.parser, r = a || i.format, o = e; return ""function"" == typeof a && (o = a(o)), H.isFinite(o) || (o = ""string"" == typeof r ? n.parse(o, r) : n.parse(o)), null !== o ? +o : (a || ""function"" != typeof r || (o = r(e), H.isFinite(o) || (o = n.parse(o))), o) } function li(t, e) { if (H.isNullOrUndef(e)) return null; var n = t.options.time, i = si(t, t.getRightValue(e)); return null === i ? i : (n.round && (i = +t._adapter.startOf(i, n.round)), i) } function ui(t, e, n, i) { var a, r, o, s = ni.length; for (a = ni.indexOf(t); a < s - 1; ++a)if (o = (r = ei[ni[a]]).steps ? r.steps : ti, r.common && Math.ceil((n - e) / (o * r.size)) <= i) return ni[a]; return ni[s - 1] } function di(t, e, n) { var i, a, r = [], o = {}, s = e.length; for (i = 0; i < s; ++i)o[a = e[i]] = i, r.push({ value: a, major: !1 }); return 0 !== s && n ? function (t, e, n, i) { var a, r, o = t._adapter, s = +o.startOf(e[0].value, i), l = e[e.length - 1].value; for (a = s; a <= l; a = +o.add(a, 1, i))(r = n[a]) >= 0 && (e[r].major = !0); return e }(t, r, o, n) : r } var hi = xn.extend({ initialize: function () { this.mergeTicksOptions(), xn.prototype.initialize.call(this) }, update: function () { var t = this, e = t.options, n = e.time || (e.time = {}), i = t._adapter = new rn._date(e.adapters.date); return Xn(""time scale"", n.format, ""time.format"", ""time.parser""), Xn(""time scale"", n.min, ""time.min"", ""ticks.min""), Xn(""time scale"", n.max, ""time.max"", ""ticks.max""), H.mergeIf(n.displayFormats, i.formats()), xn.prototype.update.apply(t, arguments) }, getRightValue: function (t) { return t && void 0 !== t.t && (t = t.t), xn.prototype.getRightValue.call(this, t) }, determineDataLimits: function () { var t, e, n, i, a, r, o, s = this, l = s.chart, u = s._adapter, d = s.options, h = d.time.unit || ""day"", c = ti, f = Qn, g = [], m = [], p = [], v = s._getLabels(); for (t = 0, n = v.length; t < n; ++t)p.push(li(s, v[t])); for (t = 0, n = (l.data.datasets || []).length; t < n; ++t)if (l.isDatasetVisible(t)) if (a = l.data.datasets[t].data, H.isObject(a[0])) for (m[t] = [], e = 0, i = a.length; e < i; ++e)r = li(s, a[e]), g.push(r), m[t][e] = r; else m[t] = p.slice(0), o || (g = g.concat(p), o = !0); else m[t] = []; p.length && (c = Math.min(c, p[0]), f = Math.max(f, p[p.length - 1])), g.length && (g = n > 1 ? function (t) { var e, n, i, a = {}, r = []; for (e = 0, n = t.length; e < n; ++e)a[i = t[e]] || (a[i] = !0, r.push(i)); return r }(g).sort(ii) : g.sort(ii), c = Math.min(c, g[0]), f = Math.max(f, g[g.length - 1])), c = li(s, ai(d)) || c, f = li(s, ri(d)) || f, c = c === ti ? +u.startOf(Date.now(), h) : c, f = f === Qn ? +u.endOf(Date.now(), h) + 1 : f, s.min = Math.min(c, f), s.max = Math.max(c + 1, f), s._table = [], s._timestamps = { data: g, datasets: m, labels: p } }, buildTicks: function () { var t, e, n, i = this, a = i.min, r = i.max, o = i.options, s = o.ticks, l = o.time, u = i._timestamps, d = [], h = i.getLabelCapacity(a), c = s.source, f = o.distribution; for (u = ""data"" === c || ""auto"" === c && ""series"" === f ? u.data : ""labels"" === c ? u.labels : function (t, e, n, i) { var a, r = t._adapter, o = t.options, s = o.time, l = s.unit || ui(s.minUnit, e, n, i), u = Kn([s.stepSize, s.unitStepSize, 1]), d = ""week"" === l && s.isoWeekday, h = e, c = []; if (d && (h = +r.startOf(h, ""isoWeek"", d)), h = +r.startOf(h, d ? ""day"" : l), r.diff(n, e, l) > 1e5 * u) throw e + "" and "" + n + "" are too far apart with stepSize of "" + u + "" "" + l; for (a = h; a < n; a = +r.add(a, u, l))c.push(a); return a !== n && ""ticks"" !== o.bounds || c.push(a), c }(i, a, r, h), ""ticks"" === o.bounds && u.length && (a = u[0], r = u[u.length - 1]), a = li(i, ai(o)) || a, r = li(i, ri(o)) || r, t = 0, e = u.length; t < e; ++t)(n = u[t]) >= a && n <= r && d.push(n); return i.min = a, i.max = r, i._unit = l.unit || (s.autoSkip ? ui(l.minUnit, i.min, i.max, h) : function (t, e, n, i, a) { var r, o; for (r = ni.length - 1; r >= ni.indexOf(n); r--)if (o = ni[r], ei[o].common && t._adapter.diff(a, i, o) >= e - 1) return o; return ni[n ? ni.indexOf(n) : 0] }(i, d.length, l.minUnit, i.min, i.max)), i._majorUnit = s.major.enabled && ""year"" !== i._unit ? function (t) { for (var e = ni.indexOf(t) + 1, n = ni.length; e < n; ++e)if (ei[ni[e]].common) return ni[e] }(i._unit) : void 0, i._table = function (t, e, n, i) { if (""linear"" === i || !t.length) return [{ time: e, pos: 0 }, { time: n, pos: 1 }]; var a, r, o, s, l, u = [], d = [e]; for (a = 0, r = t.length; a < r; ++a)(s = t[a]) > e && s < n && d.push(s); for (d.push(n), a = 0, r = d.length; a < r; ++a)l = d[a + 1], o = d[a - 1], s = d[a], void 0 !== o && void 0 !== l && Math.round((l + o) / 2) === s || u.push({ time: s, pos: a / (r - 1) }); return u }(i._timestamps.data, a, r, f), i._offsets = function (t, e, n, i, a) { var r, o, s = 0, l = 0; return a.offset && e.length && (r = oi(t, ""time"", e[0], ""pos""), s = 1 === e.length ? 1 - r : (oi(t, ""time"", e[1], ""pos"") - r) / 2, o = oi(t, ""time"", e[e.length - 1], ""pos""), l = 1 === e.length ? o : (o - oi(t, ""time"", e[e.length - 2], ""pos"")) / 2), { start: s, end: l, factor: 1 / (s + 1 + l) } }(i._table, d, 0, 0, o), s.reverse && d.reverse(), di(i, d, i._majorUnit) }, getLabelForIndex: function (t, e) { var n = this, i = n._adapter, a = n.chart.data, r = n.options.time, o = a.labels && t < a.labels.length ? a.labels[t] : """", s = a.datasets[e].data[t]; return H.isObject(s) && (o = n.getRightValue(s)), r.tooltipFormat ? i.format(si(n, o), r.tooltipFormat) : ""string"" == typeof o ? o : i.format(si(n, o), r.displayFormats.datetime) }, tickFormatFunction: function (t, e, n, i) { var a = this._adapter, r = this.options, o = r.time.displayFormats, s = o[this._unit], l = this._majorUnit, u = o[l], d = n[e], h = r.ticks, c = l && u && d && d.major, f = a.format(t, i || (c ? u : s)), g = c ? h.major : h.minor, m = Kn([g.callback, g.userCallback, h.callback, h.userCallback]); return m ? m(f, e, n) : f }, convertTicksToLabels: function (t) { var e, n, i = []; for (e = 0, n = t.length; e < n; ++e)i.push(this.tickFormatFunction(t[e].value, e, t)); return i }, getPixelForOffset: function (t) { var e = this._offsets, n = oi(this._table, ""time"", t, ""pos""); return this.getPixelForDecimal((e.start + n) * e.factor) }, getPixelForValue: function (t, e, n) { var i = null; if (void 0 !== e && void 0 !== n && (i = this._timestamps.datasets[n][e]), null === i && (i = li(this, t)), null !== i) return this.getPixelForOffset(i) }, getPixelForTick: function (t) { var e = this.getTicks(); return t >= 0 && t < e.length ? this.getPixelForOffset(e[t].value) : null }, getValueForPixel: function (t) { var e = this._offsets, n = this.getDecimalForPixel(t) / e.factor - e.end, i = oi(this._table, ""pos"", n, ""time""); return this._adapter._create(i) }, _getLabelSize: function (t) { var e = this.options.ticks, n = this.ctx.measureText(t).width, i = H.toRadians(this.isHorizontal() ? e.maxRotation : e.minRotation), a = Math.cos(i), r = Math.sin(i), o = Jn(e.fontSize, W.global.defaultFontSize); return { w: n * a + o * r, h: n * r + o * a } }, getLabelWidth: function (t) { return this._getLabelSize(t).w }, getLabelCapacity: function (t) { var e = this, n = e.options.time, i = n.displayFormats, a = i[n.unit] || i.millisecond, r = e.tickFormatFunction(t, 0, di(e, [t], e._majorUnit), a), o = e._getLabelSize(r), s = Math.floor(e.isHorizontal() ? e.width / o.w : e.height / o.h); return e.options.offset && s--, s > 0 ? s : 1 } }), ci = { position: ""bottom"", distribution: ""linear"", bounds: ""data"", adapters: {}, time: { parser: !1, unit: !1, round: !1, displayFormat: !1, isoWeekday: !1, minUnit: ""millisecond"", displayFormats: {} }, ticks: { autoSkip: !1, source: ""auto"", major: { enabled: !1 } } }; hi._defaults = ci; var fi = { category: wn, linear: On, logarithmic: Nn, radialLinear: Zn, time: hi }, gi = e((function (e, n) { e.exports = function () { var n, i; function a() { return n.apply(null, arguments) } function r(t) { return t instanceof Array || ""[object Array]"" === Object.prototype.toString.call(t) } function o(t) { return null != t && ""[object Object]"" === Object.prototype.toString.call(t) } function s(t) { return void 0 === t } function l(t) { return ""number"" == typeof t || ""[object Number]"" === Object.prototype.toString.call(t) } function u(t) { return t instanceof Date || ""[object Date]"" === Object.prototype.toString.call(t) } function d(t, e) { var n, i = []; for (n = 0; n < t.length; ++n)i.push(e(t[n], n)); return i } function h(t, e) { return Object.prototype.hasOwnProperty.call(t, e) } function c(t, e) { for (var n in e) h(e, n) && (t[n] = e[n]); return h(e, ""toString"") && (t.toString = e.toString), h(e, ""valueOf"") && (t.valueOf = e.valueOf), t } function f(t, e, n, i) { return Ie(t, e, n, i, !0).utc() } function g(t) { return null == t._pf && (t._pf = { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], meridiem: null, rfc2822: !1, weekdayMismatch: !1 }), t._pf } function m(t) { if (null == t._isValid) { var e = g(t), n = i.call(e.parsedDateParts, (function (t) { return null != t })), a = !isNaN(t._d.getTime()) && e.overflow < 0 && !e.empty && !e.invalidMonth && !e.invalidWeekday && !e.weekdayMismatch && !e.nullInput && !e.invalidFormat && !e.userInvalidated && (!e.meridiem || e.meridiem && n); if (t._strict && (a = a && 0 === e.charsLeftOver && 0 === e.unusedTokens.length && void 0 === e.bigHour), null != Object.isFrozen && Object.isFrozen(t)) return a; t._isValid = a } return t._isValid } function p(t) { var e = f(NaN); return null != t ? c(g(e), t) : g(e).userInvalidated = !0, e } i = Array.prototype.some ? Array.prototype.some : function (t) { for (var e = Object(this), n = e.length >>> 0, i = 0; i < n; i++)if (i in e && t.call(this, e[i], i, e)) return !0; return !1 }; var v = a.momentProperties = []; function b(t, e) { var n, i, a; if (s(e._isAMomentObject) || (t._isAMomentObject = e._isAMomentObject), s(e._i) || (t._i = e._i), s(e._f) || (t._f = e._f), s(e._l) || (t._l = e._l), s(e._strict) || (t._strict = e._strict), s(e._tzm) || (t._tzm = e._tzm), s(e._isUTC) || (t._isUTC = e._isUTC), s(e._offset) || (t._offset = e._offset), s(e._pf) || (t._pf = g(e)), s(e._locale) || (t._locale = e._locale), v.length > 0) for (n = 0; n < v.length; n++)s(a = e[i = v[n]]) || (t[i] = a); return t } var y = !1; function x(t) { b(this, t), this._d = new Date(null != t._d ? t._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === y && (y = !0, a.updateOffset(this), y = !1) } function _(t) { return t instanceof x || null != t && null != t._isAMomentObject } function w(t) { return t < 0 ? Math.ceil(t) || 0 : Math.floor(t) } function k(t) { var e = +t, n = 0; return 0 !== e && isFinite(e) && (n = w(e)), n } function M(t, e, n) { var i, a = Math.min(t.length, e.length), r = Math.abs(t.length - e.length), o = 0; for (i = 0; i < a; i++)(n && t[i] !== e[i] || !n && k(t[i]) !== k(e[i])) && o++; return o + r } function S(t) { !1 === a.suppressDeprecationWarnings && ""undefined"" != typeof console && console.warn && console.warn(""Deprecation warning: "" + t) } function D(t, e) { var n = !0; return c((function () { if (null != a.deprecationHandler && a.deprecationHandler(null, t), n) { for (var i, r = [], o = 0; o < arguments.length; o++) { if (i = """", ""object"" == typeof arguments[o]) { for (var s in i += ""\n["" + o + ""] "", arguments[0]) i += s + "": "" + arguments[0][s] + "", ""; i = i.slice(0, -2) } else i = arguments[o]; r.push(i) } S(t + ""\nArguments: "" + Array.prototype.slice.call(r).join("""") + ""\n"" + (new Error).stack), n = !1 } return e.apply(this, arguments) }), e) } var C, P = {}; function T(t, e) { null != a.deprecationHandler && a.deprecationHandler(t, e), P[t] || (S(e), P[t] = !0) } function O(t) { return t instanceof Function || ""[object Function]"" === Object.prototype.toString.call(t) } function A(t, e) { var n, i = c({}, t); for (n in e) h(e, n) && (o(t[n]) && o(e[n]) ? (i[n] = {}, c(i[n], t[n]), c(i[n], e[n])) : null != e[n] ? i[n] = e[n] : delete i[n]); for (n in t) h(t, n) && !h(e, n) && o(t[n]) && (i[n] = c({}, i[n])); return i } function F(t) { null != t && this.set(t) } a.suppressDeprecationWarnings = !1, a.deprecationHandler = null, C = Object.keys ? Object.keys : function (t) { var e, n = []; for (e in t) h(t, e) && n.push(e); return n }; var I = {}; function L(t, e) { var n = t.toLowerCase(); I[n] = I[n + ""s""] = I[e] = t } function R(t) { return ""string"" == typeof t ? I[t] || I[t.toLowerCase()] : void 0 } function N(t) { var e, n, i = {}; for (n in t) h(t, n) && (e = R(n)) && (i[e] = t[n]); return i } var W = {}; function Y(t, e) { W[t] = e } function z(t, e, n) { var i = """" + Math.abs(t), a = e - i.length; return (t >= 0 ? n ? ""+"" : """" : ""-"") + Math.pow(10, Math.max(0, a)).toString().substr(1) + i } var E = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, V = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, H = {}, B = {}; function j(t, e, n, i) { var a = i; ""string"" == typeof i && (a = function () { return this[i]() }), t && (B[t] = a), e && (B[e[0]] = function () { return z(a.apply(this, arguments), e[1], e[2]) }), n && (B[n] = function () { return this.localeData().ordinal(a.apply(this, arguments), t) }) } function U(t, e) { return t.isValid() ? (e = G(e, t.localeData()), H[e] = H[e] || function (t) { var e, n, i, a = t.match(E); for (e = 0, n = a.length; e < n; e++)B[a[e]] ? a[e] = B[a[e]] : a[e] = (i = a[e]).match(/\[[\s\S]/) ? i.replace(/^\[|\]µ/g, """") : i.replace(/\\/g, """"); return function (e) { var i, r = """"; for (i = 0; i < n; i++)r += O(a[i]) ? a[i].call(e, t) : a[i]; return r } }(e), H[e](t)) : t.localeData().invalidDate() } function G(t, e) { var n = 5; function i(t) { return e.longDateFormat(t) || t } for (V.lastIndex = 0; n >= 0 && V.test(t);)t = t.replace(V, i), V.lastIndex = 0, n -= 1; return t } var q = /\d/, Z = /\d\d/, µ = /\d{3}/, X = /\d{4}/, K = /[+-]?\d{6}/, J = /\d\d?/, Q = /\d\d\d\d?/, tt = /\d\d\d\d\d\d?/, et = /\d{1,3}/, nt = /\d{1,4}/, it = /[+-]?\d{1,6}/, at = /\d+/, rt = /[+-]?\d+/, ot = /Z|[+-]\d\d:?\d\d/gi, st = /Z|[+-]\d\d(?::?\d\d)?/gi, lt = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, ut = {}; function dt(t, e, n) { ut[t] = O(e) ? e : function (t, i) { return t && n ? n : e } } function ht(t, e) { return h(ut, t) ? ut[t](e._strict, e._locale) : new RegExp(ct(t.replace(""\\"", """").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, (function (t, e, n, i, a) { return e || n || i || a })))) } function ct(t) { return t.replace(/[-\/\\^µ*+?.()|[\]{}]/g, ""\\µ&"") } var ft = {}; function gt(t, e) { var n, i = e; for (""string"" == typeof t && (t = [t]), l(e) && (i = function (t, n) { n[e] = k(t) }), n = 0; n < t.length; n++)ft[t[n]] = i } function mt(t, e) { gt(t, (function (t, n, i, a) { i._w = i._w || {}, e(t, i._w, i, a) })) } function pt(t, e, n) { null != e && h(ft, t) && ft[t](e, n._a, n, t) } var vt = 0, bt = 1, yt = 2, xt = 3, _t = 4, wt = 5, kt = 6, Mt = 7, St = 8; function Dt(t) { return Ct(t) ? 366 : 365 } function Ct(t) { return t % 4 == 0 && t % 100 != 0 || t % 400 == 0 } j(""Y"", 0, 0, (function () { var t = this.year(); return t <= 9999 ? """" + t : ""+"" + t })), j(0, [""YY"", 2], 0, (function () { return this.year() % 100 })), j(0, [""YYYY"", 4], 0, ""year""), j(0, [""YYYYY"", 5], 0, ""year""), j(0, [""YYYYYY"", 6, !0], 0, ""year""), L(""year"", ""y""), Y(""year"", 1), dt(""Y"", rt), dt(""YY"", J, Z), dt(""YYYY"", nt, X), dt(""YYYYY"", it, K), dt(""YYYYYY"", it, K), gt([""YYYYY"", ""YYYYYY""], vt), gt(""YYYY"", (function (t, e) { e[vt] = 2 === t.length ? a.parseTwoDigitYear(t) : k(t) })), gt(""YY"", (function (t, e) { e[vt] = a.parseTwoDigitYear(t) })), gt(""Y"", (function (t, e) { e[vt] = parseInt(t, 10) })), a.parseTwoDigitYear = function (t) { return k(t) + (k(t) > 68 ? 1900 : 2e3) }; var Pt, Tt = Ot(""FullYear"", !0); function Ot(t, e) { return function (n) { return null != n ? (Ft(this, t, n), a.updateOffset(this, e), this) : At(this, t) } } function At(t, e) { return t.isValid() ? t._d[""get"" + (t._isUTC ? ""UTC"" : """") + e]() : NaN } function Ft(t, e, n) { t.isValid() && !isNaN(n) && (""FullYear"" === e && Ct(t.year()) && 1 === t.month() && 29 === t.date() ? t._d[""set"" + (t._isUTC ? ""UTC"" : """") + e](n, t.month(), It(n, t.month())) : t._d[""set"" + (t._isUTC ? ""UTC"" : """") + e](n)) } function It(t, e) { if (isNaN(t) || isNaN(e)) return NaN; var n = function (t, e) { return (t % e + e) % e }(e, 12); return t += (e - n) / 12, 1 === n ? Ct(t) ? 29 : 28 : 31 - n % 7 % 2 } Pt = Array.prototype.indexOf ? Array.prototype.indexOf : function (t) { var e; for (e = 0; e < this.length; ++e)if (this[e] === t) return e; return -1 }, j(""M"", [""MM"", 2], ""Mo"", (function () { return this.month() + 1 })), j(""MMM"", 0, 0, (function (t) { return this.localeData().monthsShort(this, t) })), j(""MMMM"", 0, 0, (function (t) { return this.localeData().months(this, t) })), L(""month"", ""M""), Y(""month"", 8), dt(""M"", J), dt(""MM"", J, Z), dt(""MMM"", (function (t, e) { return e.monthsShortRegex(t) })), dt(""MMMM"", (function (t, e) { return e.monthsRegex(t) })), gt([""M"", ""MM""], (function (t, e) { e[bt] = k(t) - 1 })), gt([""MMM"", ""MMMM""], (function (t, e, n, i) { var a = n._locale.monthsParse(t, i, n._strict); null != a ? e[bt] = a : g(n).invalidMonth = t })); var Lt = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, Rt = ""January_February_March_April_May_June_July_August_September_October_November_December"".split(""_""), Nt = ""Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec"".split(""_""); function Wt(t, e, n) { var i, a, r, o = t.toLocaleLowerCase(); if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], i = 0; i < 12; ++i)r = f([2e3, i]), this._shortMonthsParse[i] = this.monthsShort(r, """").toLocaleLowerCase(), this._longMonthsParse[i] = this.months(r, """").toLocaleLowerCase(); return n ? ""MMM"" === e ? -1 !== (a = Pt.call(this._shortMonthsParse, o)) ? a : null : -1 !== (a = Pt.call(this._longMonthsParse, o)) ? a : null : ""MMM"" === e ? -1 !== (a = Pt.call(this._shortMonthsParse, o)) ? a : -1 !== (a = Pt.call(this._longMonthsParse, o)) ? a : null : -1 !== (a = Pt.call(this._longMonthsParse, o)) ? a : -1 !== (a = Pt.call(this._shortMonthsParse, o)) ? a : null } function Yt(t, e) { var n; if (!t.isValid()) return t; if (""string"" == typeof e) if (/^\d+µ/.test(e)) e = k(e); else if (!l(e = t.localeData().monthsParse(e))) return t; return n = Math.min(t.date(), It(t.year(), e)), t._d[""set"" + (t._isUTC ? ""UTC"" : """") + ""Month""](e, n), t } function zt(t) { return null != t ? (Yt(this, t), a.updateOffset(this, !0), this) : At(this, ""Month"") } var Et = lt, Vt = lt; function Ht() { function t(t, e) { return e.length - t.length } var e, n, i = [], a = [], r = []; for (e = 0; e < 12; e++)n = f([2e3, e]), i.push(this.monthsShort(n, """")), a.push(this.months(n, """")), r.push(this.months(n, """")), r.push(this.monthsShort(n, """")); for (i.sort(t), a.sort(t), r.sort(t), e = 0; e < 12; e++)i[e] = ct(i[e]), a[e] = ct(a[e]); for (e = 0; e < 24; e++)r[e] = ct(r[e]); this._monthsRegex = new RegExp(""^("" + r.join(""|"") + "")"", ""i""), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp(""^("" + a.join(""|"") + "")"", ""i""), this._monthsShortStrictRegex = new RegExp(""^("" + i.join(""|"") + "")"", ""i"") } function Bt(t, e, n, i, a, r, o) { var s; return t < 100 && t >= 0 ? (s = new Date(t + 400, e, n, i, a, r, o), isFinite(s.getFullYear()) && s.setFullYear(t)) : s = new Date(t, e, n, i, a, r, o), s } function jt(t) { var e; if (t < 100 && t >= 0) { var n = Array.prototype.slice.call(arguments); n[0] = t + 400, e = new Date(Date.UTC.apply(null, n)), isFinite(e.getUTCFullYear()) && e.setUTCFullYear(t) } else e = new Date(Date.UTC.apply(null, arguments)); return e } function Ut(t, e, n) { var i = 7 + e - n; return -(7 + jt(t, 0, i).getUTCDay() - e) % 7 + i - 1 } function Gt(t, e, n, i, a) { var r, o, s = 1 + 7 * (e - 1) + (7 + n - i) % 7 + Ut(t, i, a); return s <= 0 ? o = Dt(r = t - 1) + s : s > Dt(t) ? (r = t + 1, o = s - Dt(t)) : (r = t, o = s), { year: r, dayOfYear: o } } function qt(t, e, n) { var i, a, r = Ut(t.year(), e, n), o = Math.floor((t.dayOfYear() - r - 1) / 7) + 1; return o < 1 ? i = o + Zt(a = t.year() - 1, e, n) : o > Zt(t.year(), e, n) ? (i = o - Zt(t.year(), e, n), a = t.year() + 1) : (a = t.year(), i = o), { week: i, year: a } } function Zt(t, e, n) { var i = Ut(t, e, n), a = Ut(t + 1, e, n); return (Dt(t) - i + a) / 7 } function µt(t, e) { return t.slice(e, 7).concat(t.slice(0, e)) } j(""w"", [""ww"", 2], ""wo"", ""week""), j(""W"", [""WW"", 2], ""Wo"", ""isoWeek""), L(""week"", ""w""), L(""isoWeek"", ""W""), Y(""week"", 5), Y(""isoWeek"", 5), dt(""w"", J), dt(""ww"", J, Z), dt(""W"", J), dt(""WW"", J, Z), mt([""w"", ""ww"", ""W"", ""WW""], (function (t, e, n, i) { e[i.substr(0, 1)] = k(t) })), j(""d"", 0, ""do"", ""day""), j(""dd"", 0, 0, (function (t) { return this.localeData().weekdaysMin(this, t) })), j(""ddd"", 0, 0, (function (t) { return this.localeData().weekdaysShort(this, t) })), j(""dddd"", 0, 0, (function (t) { return this.localeData().weekdays(this, t) })), j(""e"", 0, 0, ""weekday""), j(""E"", 0, 0, ""isoWeekday""), L(""day"", ""d""), L(""weekday"", ""e""), L(""isoWeekday"", ""E""), Y(""day"", 11), Y(""weekday"", 11), Y(""isoWeekday"", 11), dt(""d"", J), dt(""e"", J), dt(""E"", J), dt(""dd"", (function (t, e) { return e.weekdaysMinRegex(t) })), dt(""ddd"", (function (t, e) { return e.weekdaysShortRegex(t) })), dt(""dddd"", (function (t, e) { return e.weekdaysRegex(t) })), mt([""dd"", ""ddd"", ""dddd""], (function (t, e, n, i) { var a = n._locale.weekdaysParse(t, i, n._strict); null != a ? e.d = a : g(n).invalidWeekday = t })), mt([""d"", ""e"", ""E""], (function (t, e, n, i) { e[i] = k(t) })); var Xt = ""Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday"".split(""_""), Kt = ""Sun_Mon_Tue_Wed_Thu_Fri_Sat"".split(""_""), Jt = ""Su_Mo_Tu_We_Th_Fr_Sa"".split(""_""); function Qt(t, e, n) { var i, a, r, o = t.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], i = 0; i < 7; ++i)r = f([2e3, 1]).day(i), this._minWeekdaysParse[i] = this.weekdaysMin(r, """").toLocaleLowerCase(), this._shortWeekdaysParse[i] = this.weekdaysShort(r, """").toLocaleLowerCase(), this._weekdaysParse[i] = this.weekdays(r, """").toLocaleLowerCase(); return n ? ""dddd"" === e ? -1 !== (a = Pt.call(this._weekdaysParse, o)) ? a : null : ""ddd"" === e ? -1 !== (a = Pt.call(this._shortWeekdaysParse, o)) ? a : null : -1 !== (a = Pt.call(this._minWeekdaysParse, o)) ? a : null : ""dddd"" === e ? -1 !== (a = Pt.call(this._weekdaysParse, o)) ? a : -1 !== (a = Pt.call(this._shortWeekdaysParse, o)) ? a : -1 !== (a = Pt.call(this._minWeekdaysParse, o)) ? a : null : ""ddd"" === e ? -1 !== (a = Pt.call(this._shortWeekdaysParse, o)) ? a : -1 !== (a = Pt.call(this._weekdaysParse, o)) ? a : -1 !== (a = Pt.call(this._minWeekdaysParse, o)) ? a : null : -1 !== (a = Pt.call(this._minWeekdaysParse, o)) ? a : -1 !== (a = Pt.call(this._weekdaysParse, o)) ? a : -1 !== (a = Pt.call(this._shortWeekdaysParse, o)) ? a : null } var te = lt, ee = lt, ne = lt; function ie() { function t(t, e) { return e.length - t.length } var e, n, i, a, r, o = [], s = [], l = [], u = []; for (e = 0; e < 7; e++)n = f([2e3, 1]).day(e), i = this.weekdaysMin(n, """"), a = this.weekdaysShort(n, """"), r = this.weekdays(n, """"), o.push(i), s.push(a), l.push(r), u.push(i), u.push(a), u.push(r); for (o.sort(t), s.sort(t), l.sort(t), u.sort(t), e = 0; e < 7; e++)s[e] = ct(s[e]), l[e] = ct(l[e]), u[e] = ct(u[e]); this._weekdaysRegex = new RegExp(""^("" + u.join(""|"") + "")"", ""i""), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp(""^("" + l.join(""|"") + "")"", ""i""), this._weekdaysShortStrictRegex = new RegExp(""^("" + s.join(""|"") + "")"", ""i""), this._weekdaysMinStrictRegex = new RegExp(""^("" + o.join(""|"") + "")"", ""i"") } function ae() { return this.hours() % 12 || 12 } function re(t, e) { j(t, 0, 0, (function () { return this.localeData().meridiem(this.hours(), this.minutes(), e) })) } function oe(t, e) { return e._meridiemParse } j(""H"", [""HH"", 2], 0, ""hour""), j(""h"", [""hh"", 2], 0, ae), j(""k"", [""kk"", 2], 0, (function () { return this.hours() || 24 })), j(""hmm"", 0, 0, (function () { return """" + ae.apply(this) + z(this.minutes(), 2) })), j(""hmmss"", 0, 0, (function () { return """" + ae.apply(this) + z(this.minutes(), 2) + z(this.seconds(), 2) })), j(""Hmm"", 0, 0, (function () { return """" + this.hours() + z(this.minutes(), 2) })), j(""Hmmss"", 0, 0, (function () { return """" + this.hours() + z(this.minutes(), 2) + z(this.seconds(), 2) })), re(""a"", !0), re(""A"", !1), L(""hour"", ""h""), Y(""hour"", 13), dt(""a"", oe), dt(""A"", oe), dt(""H"", J), dt(""h"", J), dt(""k"", J), dt(""HH"", J, Z), dt(""hh"", J, Z), dt(""kk"", J, Z), dt(""hmm"", Q), dt(""hmmss"", tt), dt(""Hmm"", Q), dt(""Hmmss"", tt), gt([""H"", ""HH""], xt), gt([""k"", ""kk""], (function (t, e, n) { var i = k(t); e[xt] = 24 === i ? 0 : i })), gt([""a"", ""A""], (function (t, e, n) { n._isPm = n._locale.isPM(t), n._meridiem = t })), gt([""h"", ""hh""], (function (t, e, n) { e[xt] = k(t), g(n).bigHour = !0 })), gt(""hmm"", (function (t, e, n) { var i = t.length - 2; e[xt] = k(t.substr(0, i)), e[_t] = k(t.substr(i)), g(n).bigHour = !0 })), gt(""hmmss"", (function (t, e, n) { var i = t.length - 4, a = t.length - 2; e[xt] = k(t.substr(0, i)), e[_t] = k(t.substr(i, 2)), e[wt] = k(t.substr(a)), g(n).bigHour = !0 })), gt(""Hmm"", (function (t, e, n) { var i = t.length - 2; e[xt] = k(t.substr(0, i)), e[_t] = k(t.substr(i)) })), gt(""Hmmss"", (function (t, e, n) { var i = t.length - 4, a = t.length - 2; e[xt] = k(t.substr(0, i)), e[_t] = k(t.substr(i, 2)), e[wt] = k(t.substr(a)) })); var se, le = Ot(""Hours"", !0), ue = { calendar: { sameDay: ""[Today at] LT"", nextDay: ""[Tomorrow at] LT"", nextWeek: ""dddd [at] LT"", lastDay: ""[Yesterday at] LT"", lastWeek: ""[Last] dddd [at] LT"", sameElse: ""L"" }, longDateFormat: { LTS: ""h:mm:ss A"", LT: ""h:mm A"", L: ""MM/DD/YYYY"", LL: ""MMMM D, YYYY"", LLL: ""MMMM D, YYYY h:mm A"", LLLL: ""dddd, MMMM D, YYYY h:mm A"" }, invalidDate: ""Invalid date"", ordinal: ""%d"", dayOfMonthOrdinalParse: /\d{1,2}/, relativeTime: { future: ""in %s"", past: ""%s ago"", s: ""a few seconds"", ss: ""%d seconds"", m: ""a minute"", mm: ""%d minutes"", h: ""an hour"", hh: ""%d hours"", d: ""a day"", dd: ""%d days"", M: ""a month"", MM: ""%d months"", y: ""a year"", yy: ""%d years"" }, months: Rt, monthsShort: Nt, week: { dow: 0, doy: 6 }, weekdays: Xt, weekdaysMin: Jt, weekdaysShort: Kt, meridiemParse: /[ap]\.?m?\.?/i }, de = {}, he = {}; function ce(t) { return t ? t.toLowerCase().replace(""_"", ""-"") : t } function fe(n) { var i = null; if (!de[n] && e && e.exports) try { i = se._abbr, t(), ge(i) } catch (t) { } return de[n] } function ge(t, e) { var n; return t && ((n = s(e) ? pe(t) : me(t, e)) ? se = n : ""undefined"" != typeof console && console.warn && console.warn(""Locale "" + t + "" not found. Did you forget to load it?"")), se._abbr } function me(t, e) { if (null !== e) { var n, i = ue; if (e.abbr = t, null != de[t]) T(""defineLocaleOverride"", ""use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.""), i = de[t]._config; else if (null != e.parentLocale) if (null != de[e.parentLocale]) i = de[e.parentLocale]._config; else { if (null == (n = fe(e.parentLocale))) return he[e.parentLocale] || (he[e.parentLocale] = []), he[e.parentLocale].push({ name: t, config: e }), null; i = n._config } return de[t] = new F(A(i, e)), he[t] && he[t].forEach((function (t) { me(t.name, t.config) })), ge(t), de[t] } return delete de[t], null } function pe(t) { var e; if (t && t._locale && t._locale._abbr && (t = t._locale._abbr), !t) return se; if (!r(t)) { if (e = fe(t)) return e; t = [t] } return function (t) { for (var e, n, i, a, r = 0; r < t.length;) { for (e = (a = ce(t[r]).split(""-"")).length, n = (n = ce(t[r + 1])) ? n.split(""-"") : null; e > 0;) { if (i = fe(a.slice(0, e).join(""-""))) return i; if (n && n.length >= e && M(a, n, !0) >= e - 1) break; e-- } r++ } return se }(t) } function ve(t) { var e, n = t._a; return n && -2 === g(t).overflow && (e = n[bt] < 0 || n[bt] > 11 ? bt : n[yt] < 1 || n[yt] > It(n[vt], n[bt]) ? yt : n[xt] < 0 || n[xt] > 24 || 24 === n[xt] && (0 !== n[_t] || 0 !== n[wt] || 0 !== n[kt]) ? xt : n[_t] < 0 || n[_t] > 59 ? _t : n[wt] < 0 || n[wt] > 59 ? wt : n[kt] < 0 || n[kt] > 999 ? kt : -1, g(t)._overflowDayOfYear && (e < vt || e > yt) && (e = yt), g(t)._overflowWeeks && -1 === e && (e = Mt), g(t)._overflowWeekday && -1 === e && (e = St), g(t).overflow = e), t } function be(t, e, n) { return null != t ? t : null != e ? e : n } function ye(t) { var e, n, i, r, o, s = []; if (!t._d) { for (i = function (t) { var e = new Date(a.now()); return t._useUTC ? [e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate()] : [e.getFullYear(), e.getMonth(), e.getDate()] }(t), t._w && null == t._a[yt] && null == t._a[bt] && function (t) { var e, n, i, a, r, o, s, l; if (null != (e = t._w).GG || null != e.W || null != e.E) r = 1, o = 4, n = be(e.GG, t._a[vt], qt(Le(), 1, 4).year), i = be(e.W, 1), ((a = be(e.E, 1)) < 1 || a > 7) && (l = !0); else { r = t._locale._week.dow, o = t._locale._week.doy; var u = qt(Le(), r, o); n = be(e.gg, t._a[vt], u.year), i = be(e.w, u.week), null != e.d ? ((a = e.d) < 0 || a > 6) && (l = !0) : null != e.e ? (a = e.e + r, (e.e < 0 || e.e > 6) && (l = !0)) : a = r } i < 1 || i > Zt(n, r, o) ? g(t)._overflowWeeks = !0 : null != l ? g(t)._overflowWeekday = !0 : (s = Gt(n, i, a, r, o), t._a[vt] = s.year, t._dayOfYear = s.dayOfYear) }(t), null != t._dayOfYear && (o = be(t._a[vt], i[vt]), (t._dayOfYear > Dt(o) || 0 === t._dayOfYear) && (g(t)._overflowDayOfYear = !0), n = jt(o, 0, t._dayOfYear), t._a[bt] = n.getUTCMonth(), t._a[yt] = n.getUTCDate()), e = 0; e < 3 && null == t._a[e]; ++e)t._a[e] = s[e] = i[e]; for (; e < 7; e++)t._a[e] = s[e] = null == t._a[e] ? 2 === e ? 1 : 0 : t._a[e]; 24 === t._a[xt] && 0 === t._a[_t] && 0 === t._a[wt] && 0 === t._a[kt] && (t._nextDay = !0, t._a[xt] = 0), t._d = (t._useUTC ? jt : Bt).apply(null, s), r = t._useUTC ? t._d.getUTCDay() : t._d.getDay(), null != t._tzm && t._d.setUTCMinutes(t._d.getUTCMinutes() - t._tzm), t._nextDay && (t._a[xt] = 24), t._w && void 0 !== t._w.d && t._w.d !== r && (g(t).weekdayMismatch = !0) } } var xe = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?µ/, _e = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?µ/, we = /Z|[+-]\d\d(?::?\d\d)?/, ke = [[""YYYYYY-MM-DD"", /[+-]\d{6}-\d\d-\d\d/], [""YYYY-MM-DD"", /\d{4}-\d\d-\d\d/], [""GGGG-[W]WW-E"", /\d{4}-W\d\d-\d/], [""GGGG-[W]WW"", /\d{4}-W\d\d/, !1], [""YYYY-DDD"", /\d{4}-\d{3}/], [""YYYY-MM"", /\d{4}-\d\d/, !1], [""YYYYYYMMDD"", /[+-]\d{10}/], [""YYYYMMDD"", /\d{8}/], [""GGGG[W]WWE"", /\d{4}W\d{3}/], [""GGGG[W]WW"", /\d{4}W\d{2}/, !1], [""YYYYDDD"", /\d{7}/]], Me = [[""HH:mm:ss.SSSS"", /\d\d:\d\d:\d\d\.\d+/], [""HH:mm:ss,SSSS"", /\d\d:\d\d:\d\d,\d+/], [""HH:mm:ss"", /\d\d:\d\d:\d\d/], [""HH:mm"", /\d\d:\d\d/], [""HHmmss.SSSS"", /\d\d\d\d\d\d\.\d+/], [""HHmmss,SSSS"", /\d\d\d\d\d\d,\d+/], [""HHmmss"", /\d\d\d\d\d\d/], [""HHmm"", /\d\d\d\d/], [""HH"", /\d\d/]], Se = /^\/?Date\((\-?\d+)/i; function De(t) { var e, n, i, a, r, o, s = t._i, l = xe.exec(s) || _e.exec(s); if (l) { for (g(t).iso = !0, e = 0, n = ke.length; e < n; e++)if (ke[e][1].exec(l[1])) { a = ke[e][0], i = !1 !== ke[e][2]; break } if (null == a) return void (t._isValid = !1); if (l[3]) { for (e = 0, n = Me.length; e < n; e++)if (Me[e][1].exec(l[3])) { r = (l[2] || "" "") + Me[e][0]; break } if (null == r) return void (t._isValid = !1) } if (!i && null != r) return void (t._isValid = !1); if (l[4]) { if (!we.exec(l[4])) return void (t._isValid = !1); o = ""Z"" } t._f = a + (r || """") + (o || """"), Ae(t) } else t._isValid = !1 } var Ce = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))µ/; function Pe(t) { var e = parseInt(t, 10); return e <= 49 ? 2e3 + e : e <= 999 ? 1900 + e : e } var Te = { UT: 0, GMT: 0, EDT: -240, EST: -300, CDT: -300, CST: -360, MDT: -360, MST: -420, PDT: -420, PST: -480 }; function Oe(t) { var e, n, i, a, r, o, s, l = Ce.exec(t._i.replace(/\([^)]*\)|[\n\t]/g, "" "").replace(/(\s\s+)/g, "" "").replace(/^\s\s*/, """").replace(/\s\s*µ/, """")); if (l) { var u = (e = l[4], n = l[3], i = l[2], a = l[5], r = l[6], o = l[7], s = [Pe(e), Nt.indexOf(n), parseInt(i, 10), parseInt(a, 10), parseInt(r, 10)], o && s.push(parseInt(o, 10)), s); if (!function (t, e, n) { return !t || Kt.indexOf(t) === new Date(e[0], e[1], e[2]).getDay() || (g(n).weekdayMismatch = !0, n._isValid = !1, !1) }(l[1], u, t)) return; t._a = u, t._tzm = function (t, e, n) { if (t) return Te[t]; if (e) return 0; var i = parseInt(n, 10), a = i % 100; return (i - a) / 100 * 60 + a }(l[8], l[9], l[10]), t._d = jt.apply(null, t._a), t._d.setUTCMinutes(t._d.getUTCMinutes() - t._tzm), g(t).rfc2822 = !0 } else t._isValid = !1 } function Ae(t) { if (t._f !== a.ISO_8601) if (t._f !== a.RFC_2822) { t._a = [], g(t).empty = !0; var e, n, i, r, o, s = """" + t._i, l = s.length, u = 0; for (i = G(t._f, t._locale).match(E) || [], e = 0; e < i.length; e++)r = i[e], (n = (s.match(ht(r, t)) || [])[0]) && ((o = s.substr(0, s.indexOf(n))).length > 0 && g(t).unusedInput.push(o), s = s.slice(s.indexOf(n) + n.length), u += n.length), B[r] ? (n ? g(t).empty = !1 : g(t).unusedTokens.push(r), pt(r, n, t)) : t._strict && !n && g(t).unusedTokens.push(r); g(t).charsLeftOver = l - u, s.length > 0 && g(t).unusedInput.push(s), t._a[xt] <= 12 && !0 === g(t).bigHour && t._a[xt] > 0 && (g(t).bigHour = void 0), g(t).parsedDateParts = t._a.slice(0), g(t).meridiem = t._meridiem, t._a[xt] = function (t, e, n) { var i; return null == n ? e : null != t.meridiemHour ? t.meridiemHour(e, n) : null != t.isPM ? ((i = t.isPM(n)) && e < 12 && (e += 12), i || 12 !== e || (e = 0), e) : e }(t._locale, t._a[xt], t._meridiem), ye(t), ve(t) } else Oe(t); else De(t) } function Fe(t) { var e = t._i, n = t._f; return t._locale = t._locale || pe(t._l), null === e || void 0 === n && """" === e ? p({ nullInput: !0 }) : (""string"" == typeof e && (t._i = e = t._locale.preparse(e)), _(e) ? new x(ve(e)) : (u(e) ? t._d = e : r(n) ? function (t) { var e, n, i, a, r; if (0 === t._f.length) return g(t).invalidFormat = !0, void (t._d = new Date(NaN)); for (a = 0; a < t._f.length; a++)r = 0, e = b({}, t), null != t._useUTC && (e._useUTC = t._useUTC), e._f = t._f[a], Ae(e), m(e) && (r += g(e).charsLeftOver, r += 10 * g(e).unusedTokens.length, g(e).score = r, (null == i || r < i) && (i = r, n = e)); c(t, n || e) }(t) : n ? Ae(t) : function (t) { var e = t._i; s(e) ? t._d = new Date(a.now()) : u(e) ? t._d = new Date(e.valueOf()) : ""string"" == typeof e ? function (t) { var e = Se.exec(t._i); null === e ? (De(t), !1 === t._isValid && (delete t._isValid, Oe(t), !1 === t._isValid && (delete t._isValid, a.createFromInputFallback(t)))) : t._d = new Date(+e[1]) }(t) : r(e) ? (t._a = d(e.slice(0), (function (t) { return parseInt(t, 10) })), ye(t)) : o(e) ? function (t) { if (!t._d) { var e = N(t._i); t._a = d([e.year, e.month, e.day || e.date, e.hour, e.minute, e.second, e.millisecond], (function (t) { return t && parseInt(t, 10) })), ye(t) } }(t) : l(e) ? t._d = new Date(e) : a.createFromInputFallback(t) }(t), m(t) || (t._d = null), t)) } function Ie(t, e, n, i, a) { var s, l = {}; return !0 !== n && !1 !== n || (i = n, n = void 0), (o(t) && function (t) { if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(t).length; var e; for (e in t) if (t.hasOwnProperty(e)) return !1; return !0 }(t) || r(t) && 0 === t.length) && (t = void 0), l._isAMomentObject = !0, l._useUTC = l._isUTC = a, l._l = n, l._i = t, l._f = e, l._strict = i, (s = new x(ve(Fe(l))))._nextDay && (s.add(1, ""d""), s._nextDay = void 0), s } function Le(t, e, n, i) { return Ie(t, e, n, i, !1) } a.createFromInputFallback = D(""value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info."", (function (t) { t._d = new Date(t._i + (t._useUTC ? "" UTC"" : """")) })), a.ISO_8601 = function () { }, a.RFC_2822 = function () { }; var Re = D(""moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/"", (function () { var t = Le.apply(null, arguments); return this.isValid() && t.isValid() ? t < this ? this : t : p() })), Ne = D(""moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/"", (function () { var t = Le.apply(null, arguments); return this.isValid() && t.isValid() ? t > this ? this : t : p() })); function We(t, e) { var n, i; if (1 === e.length && r(e[0]) && (e = e[0]), !e.length) return Le(); for (n = e[0], i = 1; i < e.length; ++i)e[i].isValid() && !e[i][t](n) || (n = e[i]); return n } var Ye = [""year"", ""quarter"", ""month"", ""week"", ""day"", ""hour"", ""minute"", ""second"", ""millisecond""]; function ze(t) { var e = N(t), n = e.year || 0, i = e.quarter || 0, a = e.month || 0, r = e.week || e.isoWeek || 0, o = e.day || 0, s = e.hour || 0, l = e.minute || 0, u = e.second || 0, d = e.millisecond || 0; this._isValid = function (t) { for (var e in t) if (-1 === Pt.call(Ye, e) || null != t[e] && isNaN(t[e])) return !1; for (var n = !1, i = 0; i < Ye.length; ++i)if (t[Ye[i]]) { if (n) return !1; parseFloat(t[Ye[i]]) !== k(t[Ye[i]]) && (n = !0) } return !0 }(e), this._milliseconds = +d + 1e3 * u + 6e4 * l + 1e3 * s * 60 * 60, this._days = +o + 7 * r, this._months = +a + 3 * i + 12 * n, this._data = {}, this._locale = pe(), this._bubble() } function Ee(t) { return t instanceof ze } function Ve(t) { return t < 0 ? -1 * Math.round(-1 * t) : Math.round(t) } function He(t, e) { j(t, 0, 0, (function () { var t = this.utcOffset(), n = ""+""; return t < 0 && (t = -t, n = ""-""), n + z(~~(t / 60), 2) + e + z(~~t % 60, 2) })) } He(""Z"", "":""), He(""ZZ"", """"), dt(""Z"", st), dt(""ZZ"", st), gt([""Z"", ""ZZ""], (function (t, e, n) { n._useUTC = !0, n._tzm = je(st, t) })); var Be = /([\+\-]|\d\d)/gi; function je(t, e) { var n = (e || """").match(t); if (null === n) return null; var i = ((n[n.length - 1] || []) + """").match(Be) || [""-"", 0, 0], a = 60 * i[1] + k(i[2]); return 0 === a ? 0 : ""+"" === i[0] ? a : -a } function Ue(t, e) { var n, i; return e._isUTC ? (n = e.clone(), i = (_(t) || u(t) ? t.valueOf() : Le(t).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + i), a.updateOffset(n, !1), n) : Le(t).local() } function Ge(t) { return 15 * -Math.round(t._d.getTimezoneOffset() / 15) } function qe() { return !!this.isValid() && this._isUTC && 0 === this._offset } a.updateOffset = function () { }; var Ze = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?µ/, µe = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?µ/; function Xe(t, e) { var n, i, a, r, o, s, u = t, d = null; return Ee(t) ? u = { ms: t._milliseconds, d: t._days, M: t._months } : l(t) ? (u = {}, e ? u[e] = t : u.milliseconds = t) : (d = Ze.exec(t)) ? (n = ""-"" === d[1] ? -1 : 1, u = { y: 0, d: k(d[yt]) * n, h: k(d[xt]) * n, m: k(d[_t]) * n, s: k(d[wt]) * n, ms: k(Ve(1e3 * d[kt])) * n }) : (d = µe.exec(t)) ? (n = ""-"" === d[1] ? -1 : 1, u = { y: Ke(d[2], n), M: Ke(d[3], n), w: Ke(d[4], n), d: Ke(d[5], n), h: Ke(d[6], n), m: Ke(d[7], n), s: Ke(d[8], n) }) : null == u ? u = {} : ""object"" == typeof u && (""from"" in u || ""to"" in u) && (r = Le(u.from), o = Le(u.to), a = r.isValid() && o.isValid() ? (o = Ue(o, r), r.isBefore(o) ? s = Je(r, o) : ((s = Je(o, r)).milliseconds = -s.milliseconds, s.months = -s.months), s) : { milliseconds: 0, months: 0 }, (u = {}).ms = a.milliseconds, u.M = a.months), i = new ze(u), Ee(t) && h(t, ""_locale"") && (i._locale = t._locale), i } function Ke(t, e) { var n = t && parseFloat(t.replace("","", ""."")); return (isNaN(n) ? 0 : n) * e } function Je(t, e) { var n = {}; return n.months = e.month() - t.month() + 12 * (e.year() - t.year()), t.clone().add(n.months, ""M"").isAfter(e) && --n.months, n.milliseconds = +e - +t.clone().add(n.months, ""M""), n } function Qe(t, e) { return function (n, i) { var a; return null === i || isNaN(+i) || (T(e, ""moment()."" + e + ""(period, number) is deprecated. Please use moment()."" + e + ""(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.""), a = n, n = i, i = a), tn(this, Xe(n = ""string"" == typeof n ? +n : n, i), t), this } } function tn(t, e, n, i) { var r = e._milliseconds, o = Ve(e._days), s = Ve(e._months); t.isValid() && (i = null == i || i, s && Yt(t, At(t, ""Month"") + s * n), o && Ft(t, ""Date"", At(t, ""Date"") + o * n), r && t._d.setTime(t._d.valueOf() + r * n), i && a.updateOffset(t, o || s)) } Xe.fn = ze.prototype, Xe.invalid = function () { return Xe(NaN) }; var en = Qe(1, ""add""), nn = Qe(-1, ""subtract""); function an(t, e) { var n = 12 * (e.year() - t.year()) + (e.month() - t.month()), i = t.clone().add(n, ""months""); return -(n + (e - i < 0 ? (e - i) / (i - t.clone().add(n - 1, ""months"")) : (e - i) / (t.clone().add(n + 1, ""months"") - i))) || 0 } function rn(t) { var e; return void 0 === t ? this._locale._abbr : (null != (e = pe(t)) && (this._locale = e), this) } a.defaultFormat = ""YYYY-MM-DDTHH:mm:ssZ"", a.defaultFormatUtc = ""YYYY-MM-DDTHH:mm:ss[Z]""; var on = D(""moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages."", (function (t) { return void 0 === t ? this.localeData() : this.locale(t) })); function sn() { return this._locale } var ln = 1e3, un = 60 * ln, dn = 60 * un, hn = 3506328 * dn; function cn(t, e) { return (t % e + e) % e } function fn(t, e, n) { return t < 100 && t >= 0 ? new Date(t + 400, e, n) - hn : new Date(t, e, n).valueOf() } function gn(t, e, n) { return t < 100 && t >= 0 ? Date.UTC(t + 400, e, n) - hn : Date.UTC(t, e, n) } function mn(t, e) { j(0, [t, t.length], 0, e) } function pn(t, e, n, i, a) { var r; return null == t ? qt(this, i, a).year : (e > (r = Zt(t, i, a)) && (e = r), vn.call(this, t, e, n, i, a)) } function vn(t, e, n, i, a) { var r = Gt(t, e, n, i, a), o = jt(r.year, 0, r.dayOfYear); return this.year(o.getUTCFullYear()), this.month(o.getUTCMonth()), this.date(o.getUTCDate()), this } j(0, [""gg"", 2], 0, (function () { return this.weekYear() % 100 })), j(0, [""GG"", 2], 0, (function () { return this.isoWeekYear() % 100 })), mn(""gggg"", ""weekYear""), mn(""ggggg"", ""weekYear""), mn(""GGGG"", ""isoWeekYear""), mn(""GGGGG"", ""isoWeekYear""), L(""weekYear"", ""gg""), L(""isoWeekYear"", ""GG""), Y(""weekYear"", 1), Y(""isoWeekYear"", 1), dt(""G"", rt), dt(""g"", rt), dt(""GG"", J, Z), dt(""gg"", J, Z), dt(""GGGG"", nt, X), dt(""gggg"", nt, X), dt(""GGGGG"", it, K), dt(""ggggg"", it, K), mt([""gggg"", ""ggggg"", ""GGGG"", ""GGGGG""], (function (t, e, n, i) { e[i.substr(0, 2)] = k(t) })), mt([""gg"", ""GG""], (function (t, e, n, i) { e[i] = a.parseTwoDigitYear(t) })), j(""Q"", 0, ""Qo"", ""quarter""), L(""quarter"", ""Q""), Y(""quarter"", 7), dt(""Q"", q), gt(""Q"", (function (t, e) { e[bt] = 3 * (k(t) - 1) })), j(""D"", [""DD"", 2], ""Do"", ""date""), L(""date"", ""D""), Y(""date"", 9), dt(""D"", J), dt(""DD"", J, Z), dt(""Do"", (function (t, e) { return t ? e._dayOfMonthOrdinalParse || e._ordinalParse : e._dayOfMonthOrdinalParseLenient })), gt([""D"", ""DD""], yt), gt(""Do"", (function (t, e) { e[yt] = k(t.match(J)[0]) })); var bn = Ot(""Date"", !0); j(""DDD"", [""DDDD"", 3], ""DDDo"", ""dayOfYear""), L(""dayOfYear"", ""DDD""), Y(""dayOfYear"", 4), dt(""DDD"", et), dt(""DDDD"", µ), gt([""DDD"", ""DDDD""], (function (t, e, n) { n._dayOfYear = k(t) })), j(""m"", [""mm"", 2], 0, ""minute""), L(""minute"", ""m""), Y(""minute"", 14), dt(""m"", J), dt(""mm"", J, Z), gt([""m"", ""mm""], _t); var yn = Ot(""Minutes"", !1); j(""s"", [""ss"", 2], 0, ""second""), L(""second"", ""s""), Y(""second"", 15), dt(""s"", J), dt(""ss"", J, Z), gt([""s"", ""ss""], wt); var xn, _n = Ot(""Seconds"", !1); for (j(""S"", 0, 0, (function () { return ~~(this.millisecond() / 100) })), j(0, [""SS"", 2], 0, (function () { return ~~(this.millisecond() / 10) })), j(0, [""SSS"", 3], 0, ""millisecond""), j(0, [""SSSS"", 4], 0, (function () { return 10 * this.millisecond() })), j(0, [""SSSSS"", 5], 0, (function () { return 100 * this.millisecond() })), j(0, [""SSSSSS"", 6], 0, (function () { return 1e3 * this.millisecond() })), j(0, [""SSSSSSS"", 7], 0, (function () { return 1e4 * this.millisecond() })), j(0, [""SSSSSSSS"", 8], 0, (function () { return 1e5 * this.millisecond() })), j(0, [""SSSSSSSSS"", 9], 0, (function () { return 1e6 * this.millisecond() })), L(""millisecond"", ""ms""), Y(""millisecond"", 16), dt(""S"", et, q), dt(""SS"", et, Z), dt(""SSS"", et, µ), xn = ""SSSS""; xn.length <= 9; xn += ""S"")dt(xn, at); function wn(t, e) { e[kt] = k(1e3 * (""0."" + t)) } for (xn = ""S""; xn.length <= 9; xn += ""S"")gt(xn, wn); var kn = Ot(""Milliseconds"", !1); j(""z"", 0, 0, ""zoneAbbr""), j(""zz"", 0, 0, ""zoneName""); var Mn = x.prototype; function Sn(t) { return t } Mn.add = en, Mn.calendar = function (t, e) { var n = t || Le(), i = Ue(n, this).startOf(""day""), r = a.calendarFormat(this, i) || ""sameElse"", o = e && (O(e[r]) ? e[r].call(this, n) : e[r]); return this.format(o || this.localeData().calendar(r, this, Le(n))) }, Mn.clone = function () { return new x(this) }, Mn.diff = function (t, e, n) { var i, a, r; if (!this.isValid()) return NaN; if (!(i = Ue(t, this)).isValid()) return NaN; switch (a = 6e4 * (i.utcOffset() - this.utcOffset()), e = R(e)) { case ""year"": r = an(this, i) / 12; break; case ""month"": r = an(this, i); break; case ""quarter"": r = an(this, i) / 3; break; case ""second"": r = (this - i) / 1e3; break; case ""minute"": r = (this - i) / 6e4; break; case ""hour"": r = (this - i) / 36e5; break; case ""day"": r = (this - i - a) / 864e5; break; case ""week"": r = (this - i - a) / 6048e5; break; default: r = this - i }return n ? r : w(r) }, Mn.endOf = function (t) { var e; if (void 0 === (t = R(t)) || ""millisecond"" === t || !this.isValid()) return this; var n = this._isUTC ? gn : fn; switch (t) { case ""year"": e = n(this.year() + 1, 0, 1) - 1; break; case ""quarter"": e = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; break; case ""month"": e = n(this.year(), this.month() + 1, 1) - 1; break; case ""week"": e = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; break; case ""isoWeek"": e = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; break; case ""day"": case ""date"": e = n(this.year(), this.month(), this.date() + 1) - 1; break; case ""hour"": e = this._d.valueOf(), e += dn - cn(e + (this._isUTC ? 0 : this.utcOffset() * un), dn) - 1; break; case ""minute"": e = this._d.valueOf(), e += un - cn(e, un) - 1; break; case ""second"": e = this._d.valueOf(), e += ln - cn(e, ln) - 1 }return this._d.setTime(e), a.updateOffset(this, !0), this }, Mn.format = function (t) { t || (t = this.isUtc() ? a.defaultFormatUtc : a.defaultFormat); var e = U(this, t); return this.localeData().postformat(e) }, Mn.from = function (t, e) { return this.isValid() && (_(t) && t.isValid() || Le(t).isValid()) ? Xe({ to: this, from: t }).locale(this.locale()).humanize(!e) : this.localeData().invalidDate() }, Mn.fromNow = function (t) { return this.from(Le(), t) }, Mn.to = function (t, e) { return this.isValid() && (_(t) && t.isValid() || Le(t).isValid()) ? Xe({ from: this, to: t }).locale(this.locale()).humanize(!e) : this.localeData().invalidDate() }, Mn.toNow = function (t) { return this.to(Le(), t) }, Mn.get = function (t) { return O(this[t = R(t)]) ? this[t]() : this }, Mn.invalidAt = function () { return g(this).overflow }, Mn.isAfter = function (t, e) { var n = _(t) ? t : Le(t); return !(!this.isValid() || !n.isValid()) && (""millisecond"" === (e = R(e) || ""millisecond"") ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(e).valueOf()) }, Mn.isBefore = function (t, e) { var n = _(t) ? t : Le(t); return !(!this.isValid() || !n.isValid()) && (""millisecond"" === (e = R(e) || ""millisecond"") ? this.valueOf() < n.valueOf() : this.clone().endOf(e).valueOf() < n.valueOf()) }, Mn.isBetween = function (t, e, n, i) { var a = _(t) ? t : Le(t), r = _(e) ? e : Le(e); return !!(this.isValid() && a.isValid() && r.isValid()) && (""("" === (i = i || ""()"")[0] ? this.isAfter(a, n) : !this.isBefore(a, n)) && ("")"" === i[1] ? this.isBefore(r, n) : !this.isAfter(r, n)) }, Mn.isSame = function (t, e) { var n, i = _(t) ? t : Le(t); return !(!this.isValid() || !i.isValid()) && (""millisecond"" === (e = R(e) || ""millisecond"") ? this.valueOf() === i.valueOf() : (n = i.valueOf(), this.clone().startOf(e).valueOf() <= n && n <= this.clone().endOf(e).valueOf())) }, Mn.isSameOrAfter = function (t, e) { return this.isSame(t, e) || this.isAfter(t, e) }, Mn.isSameOrBefore = function (t, e) { return this.isSame(t, e) || this.isBefore(t, e) }, Mn.isValid = function () { return m(this) }, Mn.lang = on, Mn.locale = rn, Mn.localeData = sn, Mn.max = Ne, Mn.min = Re, Mn.parsingFlags = function () { return c({}, g(this)) }, Mn.set = function (t, e) { if (""object"" == typeof t) for (var n = function (t) { var e = []; for (var n in t) e.push({ unit: n, priority: W[n] }); return e.sort((function (t, e) { return t.priority - e.priority })), e }(t = N(t)), i = 0; i < n.length; i++)this[n[i].unit](t[n[i].unit]); else if (O(this[t = R(t)])) return this[t](e); return this }, Mn.startOf = function (t) { var e; if (void 0 === (t = R(t)) || ""millisecond"" === t || !this.isValid()) return this; var n = this._isUTC ? gn : fn; switch (t) { case ""year"": e = n(this.year(), 0, 1); break; case ""quarter"": e = n(this.year(), this.month() - this.month() % 3, 1); break; case ""month"": e = n(this.year(), this.month(), 1); break; case ""week"": e = n(this.year(), this.month(), this.date() - this.weekday()); break; case ""isoWeek"": e = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); break; case ""day"": case ""date"": e = n(this.year(), this.month(), this.date()); break; case ""hour"": e = this._d.valueOf(), e -= cn(e + (this._isUTC ? 0 : this.utcOffset() * un), dn); break; case ""minute"": e = this._d.valueOf(), e -= cn(e, un); break; case ""second"": e = this._d.valueOf(), e -= cn(e, ln) }return this._d.setTime(e), a.updateOffset(this, !0), this }, Mn.subtract = nn, Mn.toArray = function () { var t = this; return [t.year(), t.month(), t.date(), t.hour(), t.minute(), t.second(), t.millisecond()] }, Mn.toObject = function () { var t = this; return { years: t.year(), months: t.month(), date: t.date(), hours: t.hours(), minutes: t.minutes(), seconds: t.seconds(), milliseconds: t.milliseconds() } }, Mn.toDate = function () { return new Date(this.valueOf()) }, Mn.toISOString = function (t) { if (!this.isValid()) return null; var e = !0 !== t, n = e ? this.clone().utc() : this; return n.year() < 0 || n.year() > 9999 ? U(n, e ? ""YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"" : ""YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"") : O(Date.prototype.toISOString) ? e ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace(""Z"", U(n, ""Z"")) : U(n, e ? ""YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"" : ""YYYY-MM-DD[T]HH:mm:ss.SSSZ"") }, Mn.inspect = function () { if (!this.isValid()) return ""moment.invalid(/* "" + this._i + "" */)""; var t = ""moment"", e = """"; this.isLocal() || (t = 0 === this.utcOffset() ? ""moment.utc"" : ""moment.parseZone"", e = ""Z""); var n = ""["" + t + '(""]', i = 0 <= this.year() && this.year() <= 9999 ? ""YYYY"" : ""YYYYYY"", a = e + '["")]'; return this.format(n + i + ""-MM-DD[T]HH:mm:ss.SSS"" + a) }, Mn.toJSON = function () { return this.isValid() ? this.toISOString() : null }, Mn.toString = function () { return this.clone().locale(""en"").format(""ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"") }, Mn.unix = function () { return Math.floor(this.valueOf() / 1e3) }, Mn.valueOf = function () { return this._d.valueOf() - 6e4 * (this._offset || 0) }, Mn.creationData = function () { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } }, Mn.year = Tt, Mn.isLeapYear = function () { return Ct(this.year()) }, Mn.weekYear = function (t) { return pn.call(this, t, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) }, Mn.isoWeekYear = function (t) { return pn.call(this, t, this.isoWeek(), this.isoWeekday(), 1, 4) }, Mn.quarter = Mn.quarters = function (t) { return null == t ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (t - 1) + this.month() % 3) }, Mn.month = zt, Mn.daysInMonth = function () { return It(this.year(), this.month()) }, Mn.week = Mn.weeks = function (t) { var e = this.localeData().week(this); return null == t ? e : this.add(7 * (t - e), ""d"") }, Mn.isoWeek = Mn.isoWeeks = function (t) { var e = qt(this, 1, 4).week; return null == t ? e : this.add(7 * (t - e), ""d"") }, Mn.weeksInYear = function () { var t = this.localeData()._week; return Zt(this.year(), t.dow, t.doy) }, Mn.isoWeeksInYear = function () { return Zt(this.year(), 1, 4) }, Mn.date = bn, Mn.day = Mn.days = function (t) { if (!this.isValid()) return null != t ? this : NaN; var e = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != t ? (t = function (t, e) { return ""string"" != typeof t ? t : isNaN(t) ? ""number"" == typeof (t = e.weekdaysParse(t)) ? t : null : parseInt(t, 10) }(t, this.localeData()), this.add(t - e, ""d"")) : e }, Mn.weekday = function (t) { if (!this.isValid()) return null != t ? this : NaN; var e = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == t ? e : this.add(t - e, ""d"") }, Mn.isoWeekday = function (t) { if (!this.isValid()) return null != t ? this : NaN; if (null != t) { var e = function (t, e) { return ""string"" == typeof t ? e.weekdaysParse(t) % 7 || 7 : isNaN(t) ? null : t }(t, this.localeData()); return this.day(this.day() % 7 ? e : e - 7) } return this.day() || 7 }, Mn.dayOfYear = function (t) { var e = Math.round((this.clone().startOf(""day"") - this.clone().startOf(""year"")) / 864e5) + 1; return null == t ? e : this.add(t - e, ""d"") }, Mn.hour = Mn.hours = le, Mn.minute = Mn.minutes = yn, Mn.second = Mn.seconds = _n, Mn.millisecond = Mn.milliseconds = kn, Mn.utcOffset = function (t, e, n) { var i, r = this._offset || 0; if (!this.isValid()) return null != t ? this : NaN; if (null != t) { if (""string"" == typeof t) { if (null === (t = je(st, t))) return this } else Math.abs(t) < 16 && !n && (t *= 60); return !this._isUTC && e && (i = Ge(this)), this._offset = t, this._isUTC = !0, null != i && this.add(i, ""m""), r !== t && (!e || this._changeInProgress ? tn(this, Xe(t - r, ""m""), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, a.updateOffset(this, !0), this._changeInProgress = null)), this } return this._isUTC ? r : Ge(this) }, Mn.utc = function (t) { return this.utcOffset(0, t) }, Mn.local = function (t) { return this._isUTC && (this.utcOffset(0, t), this._isUTC = !1, t && this.subtract(Ge(this), ""m"")), this }, Mn.parseZone = function () { if (null != this._tzm) this.utcOffset(this._tzm, !1, !0); else if (""string"" == typeof this._i) { var t = je(ot, this._i); null != t ? this.utcOffset(t) : this.utcOffset(0, !0) } return this }, Mn.hasAlignedHourOffset = function (t) { return !!this.isValid() && (t = t ? Le(t).utcOffset() : 0, (this.utcOffset() - t) % 60 == 0) }, Mn.isDST = function () { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() }, Mn.isLocal = function () { return !!this.isValid() && !this._isUTC }, Mn.isUtcOffset = function () { return !!this.isValid() && this._isUTC }, Mn.isUtc = qe, Mn.isUTC = qe, Mn.zoneAbbr = function () { return this._isUTC ? ""UTC"" : """" }, Mn.zoneName = function () { return this._isUTC ? ""Coordinated Universal Time"" : """" }, Mn.dates = D(""dates accessor is deprecated. Use date instead."", bn), Mn.months = D(""months accessor is deprecated. Use month instead"", zt), Mn.years = D(""years accessor is deprecated. Use year instead"", Tt), Mn.zone = D(""moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/"", (function (t, e) { return null != t ? (""string"" != typeof t && (t = -t), this.utcOffset(t, e), this) : -this.utcOffset() })), Mn.isDSTShifted = D(""isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information"", (function () { if (!s(this._isDSTShifted)) return this._isDSTShifted; var t = {}; if (b(t, this), (t = Fe(t))._a) { var e = t._isUTC ? f(t._a) : Le(t._a); this._isDSTShifted = this.isValid() && M(t._a, e.toArray()) > 0 } else this._isDSTShifted = !1; return this._isDSTShifted })); var Dn = F.prototype; function Cn(t, e, n, i) { var a = pe(), r = f().set(i, e); return a[n](r, t) } function Pn(t, e, n) { if (l(t) && (e = t, t = void 0), t = t || """", null != e) return Cn(t, e, n, ""month""); var i, a = []; for (i = 0; i < 12; i++)a[i] = Cn(t, i, n, ""month""); return a } function Tn(t, e, n, i) { ""boolean"" == typeof t ? (l(e) && (n = e, e = void 0), e = e || """") : (n = e = t, t = !1, l(e) && (n = e, e = void 0), e = e || """"); var a, r = pe(), o = t ? r._week.dow : 0; if (null != n) return Cn(e, (n + o) % 7, i, ""day""); var s = []; for (a = 0; a < 7; a++)s[a] = Cn(e, (a + o) % 7, i, ""day""); return s } Dn.calendar = function (t, e, n) { var i = this._calendar[t] || this._calendar.sameElse; return O(i) ? i.call(e, n) : i }, Dn.longDateFormat = function (t) { var e = this._longDateFormat[t], n = this._longDateFormat[t.toUpperCase()]; return e || !n ? e : (this._longDateFormat[t] = n.replace(/MMMM|MM|DD|dddd/g, (function (t) { return t.slice(1) })), this._longDateFormat[t]) }, Dn.invalidDate = function () { return this._invalidDate }, Dn.ordinal = function (t) { return this._ordinal.replace(""%d"", t) }, Dn.preparse = Sn, Dn.postformat = Sn, Dn.relativeTime = function (t, e, n, i) { var a = this._relativeTime[n]; return O(a) ? a(t, e, n, i) : a.replace(/%d/i, t) }, Dn.pastFuture = function (t, e) { var n = this._relativeTime[t > 0 ? ""future"" : ""past""]; return O(n) ? n(e) : n.replace(/%s/i, e) }, Dn.set = function (t) { var e, n; for (n in t) O(e = t[n]) ? this[n] = e : this[""_"" + n] = e; this._config = t, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + ""|"" + /\d{1,2}/.source) }, Dn.months = function (t, e) { return t ? r(this._months) ? this._months[t.month()] : this._months[(this._months.isFormat || Lt).test(e) ? ""format"" : ""standalone""][t.month()] : r(this._months) ? this._months : this._months.standalone }, Dn.monthsShort = function (t, e) { return t ? r(this._monthsShort) ? this._monthsShort[t.month()] : this._monthsShort[Lt.test(e) ? ""format"" : ""standalone""][t.month()] : r(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone }, Dn.monthsParse = function (t, e, n) { var i, a, r; if (this._monthsParseExact) return Wt.call(this, t, e, n); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), i = 0; i < 12; i++) { if (a = f([2e3, i]), n && !this._longMonthsParse[i] && (this._longMonthsParse[i] = new RegExp(""^"" + this.months(a, """").replace(""."", """") + ""µ"", ""i""), this._shortMonthsParse[i] = new RegExp(""^"" + this.monthsShort(a, """").replace(""."", """") + ""µ"", ""i"")), n || this._monthsParse[i] || (r = ""^"" + this.months(a, """") + ""|^"" + this.monthsShort(a, """"), this._monthsParse[i] = new RegExp(r.replace(""."", """"), ""i"")), n && ""MMMM"" === e && this._longMonthsParse[i].test(t)) return i; if (n && ""MMM"" === e && this._shortMonthsParse[i].test(t)) return i; if (!n && this._monthsParse[i].test(t)) return i } }, Dn.monthsRegex = function (t) { return this._monthsParseExact ? (h(this, ""_monthsRegex"") || Ht.call(this), t ? this._monthsStrictRegex : this._monthsRegex) : (h(this, ""_monthsRegex"") || (this._monthsRegex = Vt), this._monthsStrictRegex && t ? this._monthsStrictRegex : this._monthsRegex) }, Dn.monthsShortRegex = function (t) { return this._monthsParseExact ? (h(this, ""_monthsRegex"") || Ht.call(this), t ? this._monthsShortStrictRegex : this._monthsShortRegex) : (h(this, ""_monthsShortRegex"") || (this._monthsShortRegex = Et), this._monthsShortStrictRegex && t ? this._monthsShortStrictRegex : this._monthsShortRegex) }, Dn.week = function (t) { return qt(t, this._week.dow, this._week.doy).week }, Dn.firstDayOfYear = function () { return this._week.doy }, Dn.firstDayOfWeek = function () { return this._week.dow }, Dn.weekdays = function (t, e) { var n = r(this._weekdays) ? this._weekdays : this._weekdays[t && !0 !== t && this._weekdays.isFormat.test(e) ? ""format"" : ""standalone""]; return !0 === t ? µt(n, this._week.dow) : t ? n[t.day()] : n }, Dn.weekdaysMin = function (t) { return !0 === t ? µt(this._weekdaysMin, this._week.dow) : t ? this._weekdaysMin[t.day()] : this._weekdaysMin }, Dn.weekdaysShort = function (t) { return !0 === t ? µt(this._weekdaysShort, this._week.dow) : t ? this._weekdaysShort[t.day()] : this._weekdaysShort }, Dn.weekdaysParse = function (t, e, n) { var i, a, r; if (this._weekdaysParseExact) return Qt.call(this, t, e, n); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), i = 0; i < 7; i++) { if (a = f([2e3, 1]).day(i), n && !this._fullWeekdaysParse[i] && (this._fullWeekdaysParse[i] = new RegExp(""^"" + this.weekdays(a, """").replace(""."", ""\\.?"") + ""µ"", ""i""), this._shortWeekdaysParse[i] = new RegExp(""^"" + this.weekdaysShort(a, """").replace(""."", ""\\.?"") + ""µ"", ""i""), this._minWeekdaysParse[i] = new RegExp(""^"" + this.weekdaysMin(a, """").replace(""."", ""\\.?"") + ""µ"", ""i"")), this._weekdaysParse[i] || (r = ""^"" + this.weekdays(a, """") + ""|^"" + this.weekdaysShort(a, """") + ""|^"" + this.weekdaysMin(a, """"), this._weekdaysParse[i] = new RegExp(r.replace(""."", """"), ""i"")), n && ""dddd"" === e && this._fullWeekdaysParse[i].test(t)) return i; if (n && ""ddd"" === e && this._shortWeekdaysParse[i].test(t)) return i; if (n && ""dd"" === e && this._minWeekdaysParse[i].test(t)) return i; if (!n && this._weekdaysParse[i].test(t)) return i } }, Dn.weekdaysRegex = function (t) { return this._weekdaysParseExact ? (h(this, ""_weekdaysRegex"") || ie.call(this), t ? this._weekdaysStrictRegex : this._weekdaysRegex) : (h(this, ""_weekdaysRegex"") || (this._weekdaysRegex = te), this._weekdaysStrictRegex && t ? this._weekdaysStrictRegex : this._weekdaysRegex) }, Dn.weekdaysShortRegex = function (t) { return this._weekdaysParseExact ? (h(this, ""_weekdaysRegex"") || ie.call(this), t ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (h(this, ""_weekdaysShortRegex"") || (this._weekdaysShortRegex = ee), this._weekdaysShortStrictRegex && t ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) }, Dn.weekdaysMinRegex = function (t) { return this._weekdaysParseExact ? (h(this, ""_weekdaysRegex"") || ie.call(this), t ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (h(this, ""_weekdaysMinRegex"") || (this._weekdaysMinRegex = ne), this._weekdaysMinStrictRegex && t ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) }, Dn.isPM = function (t) { return ""p"" === (t + """").toLowerCase().charAt(0) }, Dn.meridiem = function (t, e, n) { return t > 11 ? n ? ""pm"" : ""PM"" : n ? ""am"" : ""AM"" }, ge(""en"", { dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function (t) { var e = t % 10; return t + (1 === k(t % 100 / 10) ? ""th"" : 1 === e ? ""st"" : 2 === e ? ""nd"" : 3 === e ? ""rd"" : ""th"") } }), a.lang = D(""moment.lang is deprecated. Use moment.locale instead."", ge), a.langData = D(""moment.langData is deprecated. Use moment.localeData instead."", pe); var On = Math.abs; function An(t, e, n, i) { var a = Xe(e, n); return t._milliseconds += i * a._milliseconds, t._days += i * a._days, t._months += i * a._months, t._bubble() } function Fn(t) { return t < 0 ? Math.floor(t) : Math.ceil(t) } function In(t) { return 4800 * t / 146097 } function Ln(t) { return 146097 * t / 4800 } function Rn(t) { return function () { return this.as(t) } } var Nn = Rn(""ms""), Wn = Rn(""s""), Yn = Rn(""m""), zn = Rn(""h""), En = Rn(""d""), Vn = Rn(""w""), Hn = Rn(""M""), Bn = Rn(""Q""), jn = Rn(""y""); function Un(t) { return function () { return this.isValid() ? this._data[t] : NaN } } var Gn = Un(""milliseconds""), qn = Un(""seconds""), Zn = Un(""minutes""), µn = Un(""hours""), Xn = Un(""days""), Kn = Un(""months""), Jn = Un(""years""), Qn = Math.round, ti = { ss: 44, s: 45, m: 45, h: 22, d: 26, M: 11 }; function ei(t, e, n, i, a) { return a.relativeTime(e || 1, !!n, t, i) } var ni = Math.abs; function ii(t) { return (t > 0) - (t < 0) || +t } function ai() { if (!this.isValid()) return this.localeData().invalidDate(); var t, e, n = ni(this._milliseconds) / 1e3, i = ni(this._days), a = ni(this._months); t = w(n / 60), e = w(t / 60), n %= 60, t %= 60; var r = w(a / 12), o = a %= 12, s = i, l = e, u = t, d = n ? n.toFixed(3).replace(/\.?0+µ/, """") : """", h = this.asSeconds(); if (!h) return ""P0D""; var c = h < 0 ? ""-"" : """", f = ii(this._months) !== ii(h) ? ""-"" : """", g = ii(this._days) !== ii(h) ? ""-"" : """", m = ii(this._milliseconds) !== ii(h) ? ""-"" : """"; return c + ""P"" + (r ? f + r + ""Y"" : """") + (o ? f + o + ""M"" : """") + (s ? g + s + ""D"" : """") + (l || u || d ? ""T"" : """") + (l ? m + l + ""H"" : """") + (u ? m + u + ""M"" : """") + (d ? m + d + ""S"" : """") } var ri = ze.prototype; return ri.isValid = function () { return this._isValid }, ri.abs = function () { var t = this._data; return this._milliseconds = On(this._milliseconds), this._days = On(this._days), this._months = On(this._months), t.milliseconds = On(t.milliseconds), t.seconds = On(t.seconds), t.minutes = On(t.minutes), t.hours = On(t.hours), t.months = On(t.months), t.years = On(t.years), this }, ri.add = function (t, e) { return An(this, t, e, 1) }, ri.subtract = function (t, e) { return An(this, t, e, -1) }, ri.as = function (t) { if (!this.isValid()) return NaN; var e, n, i = this._milliseconds; if (""month"" === (t = R(t)) || ""quarter"" === t || ""year"" === t) switch (e = this._days + i / 864e5, n = this._months + In(e), t) { case ""month"": return n; case ""quarter"": return n / 3; case ""year"": return n / 12 } else switch (e = this._days + Math.round(Ln(this._months)), t) { case ""week"": return e / 7 + i / 6048e5; case ""day"": return e + i / 864e5; case ""hour"": return 24 * e + i / 36e5; case ""minute"": return 1440 * e + i / 6e4; case ""second"": return 86400 * e + i / 1e3; case ""millisecond"": return Math.floor(864e5 * e) + i; default: throw new Error(""Unknown unit "" + t) } }, ri.asMilliseconds = Nn, ri.asSeconds = Wn, ri.asMinutes = Yn, ri.asHours = zn, ri.asDays = En, ri.asWeeks = Vn, ri.asMonths = Hn, ri.asQuarters = Bn, ri.asYears = jn, ri.valueOf = function () { return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * k(this._months / 12) : NaN }, ri._bubble = function () { var t, e, n, i, a, r = this._milliseconds, o = this._days, s = this._months, l = this._data; return r >= 0 && o >= 0 && s >= 0 || r <= 0 && o <= 0 && s <= 0 || (r += 864e5 * Fn(Ln(s) + o), o = 0, s = 0), l.milliseconds = r % 1e3, t = w(r / 1e3), l.seconds = t % 60, e = w(t / 60), l.minutes = e % 60, n = w(e / 60), l.hours = n % 24, o += w(n / 24), a = w(In(o)), s += a, o -= Fn(Ln(a)), i = w(s / 12), s %= 12, l.days = o, l.months = s, l.years = i, this }, ri.clone = function () { return Xe(this) }, ri.get = function (t) { return t = R(t), this.isValid() ? this[t + ""s""]() : NaN }, ri.milliseconds = Gn, ri.seconds = qn, ri.minutes = Zn, ri.hours = µn, ri.days = Xn, ri.weeks = function () { return w(this.days() / 7) }, ri.months = Kn, ri.years = Jn, ri.humanize = function (t) { if (!this.isValid()) return this.localeData().invalidDate(); var e = this.localeData(), n = function (t, e, n) { var i = Xe(t).abs(), a = Qn(i.as(""s"")), r = Qn(i.as(""m"")), o = Qn(i.as(""h"")), s = Qn(i.as(""d"")), l = Qn(i.as(""M"")), u = Qn(i.as(""y"")), d = a <= ti.ss && [""s"", a] || a < ti.s && [""ss"", a] || r <= 1 && [""m""] || r < ti.m && [""mm"", r] || o <= 1 && [""h""] || o < ti.h && [""hh"", o] || s <= 1 && [""d""] || s < ti.d && [""dd"", s] || l <= 1 && [""M""] || l < ti.M && [""MM"", l] || u <= 1 && [""y""] || [""yy"", u]; return d[2] = e, d[3] = +t > 0, d[4] = n, ei.apply(null, d) }(this, !t, e); return t && (n = e.pastFuture(+this, n)), e.postformat(n) }, ri.toISOString = ai, ri.toString = ai, ri.toJSON = ai, ri.locale = rn, ri.localeData = sn, ri.toIsoString = D(""toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)"", ai), ri.lang = on, j(""X"", 0, 0, ""unix""), j(""x"", 0, 0, ""valueOf""), dt(""x"", rt), dt(""X"", /[+-]?\d+(\.\d{1,3})?/), gt(""X"", (function (t, e, n) { n._d = new Date(1e3 * parseFloat(t, 10)) })), gt(""x"", (function (t, e, n) { n._d = new Date(k(t)) })), a.version = ""2.24.0"", n = Le, a.fn = Mn, a.min = function () { return We(""isBefore"", [].slice.call(arguments, 0)) }, a.max = function () { return We(""isAfter"", [].slice.call(arguments, 0)) }, a.now = function () { return Date.now ? Date.now() : +new Date }, a.utc = f, a.unix = function (t) { return Le(1e3 * t) }, a.months = function (t, e) { return Pn(t, e, ""months"") }, a.isDate = u, a.locale = ge, a.invalid = p, a.duration = Xe, a.isMoment = _, a.weekdays = function (t, e, n) { return Tn(t, e, n, ""weekdays"") }, a.parseZone = function () { return Le.apply(null, arguments).parseZone() }, a.localeData = pe, a.isDuration = Ee, a.monthsShort = function (t, e) { return Pn(t, e, ""monthsShort"") }, a.weekdaysMin = function (t, e, n) { return Tn(t, e, n, ""weekdaysMin"") }, a.defineLocale = me, a.updateLocale = function (t, e) { if (null != e) { var n, i, a = ue; null != (i = fe(t)) && (a = i._config), e = A(a, e), (n = new F(e)).parentLocale = de[t], de[t] = n, ge(t) } else null != de[t] && (null != de[t].parentLocale ? de[t] = de[t].parentLocale : null != de[t] && delete de[t]); return de[t] }, a.locales = function () { return C(de) }, a.weekdaysShort = function (t, e, n) { return Tn(t, e, n, ""weekdaysShort"") }, a.normalizeUnits = R, a.relativeTimeRounding = function (t) { return void 0 === t ? Qn : ""function"" == typeof t && (Qn = t, !0) }, a.relativeTimeThreshold = function (t, e) { return void 0 !== ti[t] && (void 0 === e ? ti[t] : (ti[t] = e, ""s"" === t && (ti.ss = e - 1), !0)) }, a.calendarFormat = function (t, e) { var n = t.diff(e, ""days"", !0); return n < -6 ? ""sameElse"" : n < -1 ? ""lastWeek"" : n < 0 ? ""lastDay"" : n < 1 ? ""sameDay"" : n < 2 ? ""nextDay"" : n < 7 ? ""nextWeek"" : ""sameElse"" }, a.prototype = Mn, a.HTML5_FMT = { DATETIME_LOCAL: ""YYYY-MM-DDTHH:mm"", DATETIME_LOCAL_SECONDS: ""YYYY-MM-DDTHH:mm:ss"", DATETIME_LOCAL_MS: ""YYYY-MM-DDTHH:mm:ss.SSS"", DATE: ""YYYY-MM-DD"", TIME: ""HH:mm"", TIME_SECONDS: ""HH:mm:ss"", TIME_MS: ""HH:mm:ss.SSS"", WEEK: ""GGGG-[W]WW"", MONTH: ""YYYY-MM"" }, a }() })), mi = { datetime: ""MMM D, YYYY, h:mm:ss a"", millisecond: ""h:mm:ss.SSS a"", second: ""h:mm:ss a"", minute: ""h:mm a"", hour: ""hA"", day: ""MMM D"", week: ""ll"", month: ""MMM YYYY"", quarter: ""[Q]Q - YYYY"", year: ""YYYY"" }; rn._date.override(""function"" == typeof gi ? { _id: ""moment"", formats: function () { return mi }, parse: function (t, e) { return ""string"" == typeof t && ""string"" == typeof e ? t = gi(t, e) : t instanceof gi || (t = gi(t)), t.isValid() ? t.valueOf() : null }, format: function (t, e) { return gi(t).format(e) }, add: function (t, e, n) { return gi(t).add(e, n).valueOf() }, diff: function (t, e, n) { return gi(t).diff(gi(e), n) }, startOf: function (t, e, n) { return t = gi(t), ""isoWeek"" === e ? t.isoWeekday(n).valueOf() : t.startOf(e).valueOf() }, endOf: function (t, e) { return gi(t).endOf(e).valueOf() }, _create: function (t) { return gi(t) } } : {}), W._set(""global"", { plugins: { filler: { propagate: !0 } } }); var pi = { dataset: function (t) { var e = t.fill, n = t.chart, i = n.getDatasetMeta(e), a = i && n.isDatasetVisible(e) && i.dataset._children || [], r = a.length || 0; return r ? function (t, e) { return e < r && a[e]._view || null } : null }, boundary: function (t) { var e = t.boundary, n = e ? e.x : null, i = e ? e.y : null; return H.isArray(e) ? function (t, n) { return e[n] } : function (t) { return { x: null === n ? t.x : n, y: null === i ? t.y : i } } } }; function vi(t, e, n) { var i, a = t._model || {}, r = a.fill; if (void 0 === r && (r = !!a.backgroundColor), !1 === r || null === r) return !1; if (!0 === r) return ""origin""; if (i = parseFloat(r, 10), isFinite(i) && Math.floor(i) === i) return ""-"" !== r[0] && ""+"" !== r[0] || (i = e + i), !(i === e || i < 0 || i >= n) && i; switch (r) { case ""bottom"": return ""start""; case ""top"": return ""end""; case ""zero"": return ""origin""; case ""origin"": case ""start"": case ""end"": return r; default: return !1 } } function bi(t) { return (t.el._scale || {}).getPointPositionForValue ? function (t) { var e, n, i, a, r, o = t.el._scale, s = o.options, l = o.chart.data.labels.length, u = t.fill, d = []; if (!l) return null; for (e = s.ticks.reverse ? o.max : o.min, n = s.ticks.reverse ? o.min : o.max, i = o.getPointPositionForValue(0, e), a = 0; a < l; ++a)r = ""start"" === u || ""end"" === u ? o.getPointPositionForValue(a, ""start"" === u ? e : n) : o.getBasePosition(a), s.gridLines.circular && (r.cx = i.x, r.cy = i.y, r.angle = o.getIndexAngle(a) - Math.PI / 2), d.push(r); return d }(t) : function (t) { var e, n = t.el._model || {}, i = t.el._scale || {}, a = t.fill, r = null; if (isFinite(a)) return null; if (""start"" === a ? r = void 0 === n.scaleBottom ? i.bottom : n.scaleBottom : ""end"" === a ? r = void 0 === n.scaleTop ? i.top : n.scaleTop : void 0 !== n.scaleZero ? r = n.scaleZero : i.getBasePixel && (r = i.getBasePixel()), null != r) { if (void 0 !== r.x && void 0 !== r.y) return r; if (H.isFinite(r)) return { x: (e = i.isHorizontal()) ? r : null, y: e ? null : r } } return null }(t) } function yi(t, e, n) { var i, a = t[e].fill, r = [e]; if (!n) return a; for (; !1 !== a && -1 === r.indexOf(a);) { if (!isFinite(a)) return a; if (!(i = t[a])) return !1; if (i.visible) return a; r.push(a), a = i.fill } return !1 } function xi(t) { var e = t.fill, n = ""dataset""; return !1 === e ? null : (isFinite(e) || (n = ""boundary""), pi[n](t)) } function _i(t) { return t && !t.skip } function wi(t, e, n, i, a) { var r, o, s, l; if (i && a) { for (t.moveTo(e[0].x, e[0].y), r = 1; r < i; ++r)H.canvas.lineTo(t, e[r - 1], e[r]); if (void 0 === n[0].angle) for (t.lineTo(n[a - 1].x, n[a - 1].y), r = a - 1; r > 0; --r)H.canvas.lineTo(t, n[r], n[r - 1], !0); else for (o = n[0].cx, s = n[0].cy, l = Math.sqrt(Math.pow(n[0].x - o, 2) + Math.pow(n[0].y - s, 2)), r = a - 1; r > 0; --r)t.arc(o, s, l, n[r].angle, n[r - 1].angle, !0) } } function ki(t, e, n, i, a, r) { var o, s, l, u, d, h, c, f, g = e.length, m = i.spanGaps, p = [], v = [], b = 0, y = 0; for (t.beginPath(), o = 0, s = g; o < s; ++o)d = n(u = e[l = o % g]._view, l, i), h = _i(u), c = _i(d), r && void 0 === f && h && (s = g + (f = o + 1)), h && c ? (b = p.push(u), y = v.push(d)) : b && y && (m ? (h && p.push(u), c && v.push(d)) : (wi(t, p, v, b, y), b = y = 0, p = [], v = [])); wi(t, p, v, b, y), t.closePath(), t.fillStyle = a, t.fill() } var Mi = { id: ""filler"", afterDatasetsUpdate: function (t, e) { var n, i, a, r, o = (t.data.datasets || []).length, s = e.propagate, l = []; for (i = 0; i < o; ++i)r = null, (a = (n = t.getDatasetMeta(i)).dataset) && a._model && a instanceof wt.Line && (r = { visible: t.isDatasetVisible(i), fill: vi(a, i, o), chart: t, el: a }), n.µfiller = r, l.push(r); for (i = 0; i < o; ++i)(r = l[i]) && (r.fill = yi(l, i, s), r.boundary = bi(r), r.mapper = xi(r)) }, beforeDatasetsDraw: function (t) { var e, n, i, a, r, o, s, l = t._getSortedVisibleDatasetMetas(), u = t.ctx; for (n = l.length - 1; n >= 0; --n)(e = l[n].µfiller) && e.visible && (a = (i = e.el)._view, r = i._children || [], o = e.mapper, s = a.backgroundColor || W.global.defaultColor, o && s && r.length && (H.canvas.clipArea(u, t.chartArea), ki(u, r, o, a, s, i._loop), H.canvas.unclipArea(u))) } }, Si = H.rtl.getRtlAdapter, Di = H.noop, Ci = H.valueOrDefault; function Pi(t, e) { return t.usePointStyle && t.boxWidth > e ? e : t.boxWidth } W._set(""global"", { legend: { display: !0, position: ""top"", align: ""center"", fullWidth: !0, reverse: !1, weight: 1e3, onClick: function (t, e) { var n = e.datasetIndex, i = this.chart, a = i.getDatasetMeta(n); a.hidden = null === a.hidden ? !i.data.datasets[n].hidden : null, i.update() }, onHover: null, onLeave: null, labels: { boxWidth: 40, padding: 10, generateLabels: function (t) { var e = t.data.datasets, n = t.options.legend || {}, i = n.labels && n.labels.usePointStyle; return t._getSortedDatasetMetas().map((function (n) { var a = n.controller.getStyle(i ? 0 : void 0); return { text: e[n.index].label, fillStyle: a.backgroundColor, hidden: !t.isDatasetVisible(n.index), lineCap: a.borderCapStyle, lineDash: a.borderDash, lineDashOffset: a.borderDashOffset, lineJoin: a.borderJoinStyle, lineWidth: a.borderWidth, strokeStyle: a.borderColor, pointStyle: a.pointStyle, rotation: a.rotation, datasetIndex: n.index } }), this) } } }, legendCallback: function (t) { var e, n, i, a = document.createElement(""ul""), r = t.data.datasets; for (a.setAttribute(""class"", t.id + ""-legend""), e = 0, n = r.length; e < n; e++)(i = a.appendChild(document.createElement(""li""))).appendChild(document.createElement(""span"")).style.backgroundColor = r[e].backgroundColor, r[e].label && i.appendChild(document.createTextNode(r[e].label)); return a.outerHTML } }); var Ti = µ.extend({ initialize: function (t) { H.extend(this, t), this.legendHitBoxes = [], this._hoveredItem = null, this.doughnutMode = !1 }, beforeUpdate: Di, update: function (t, e, n) { var i = this; return i.beforeUpdate(), i.maxWidth = t, i.maxHeight = e, i.margins = n, i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize }, afterUpdate: Di, beforeSetDimensions: Di, setDimensions: function () { var t = this; t.isHorizontal() ? (t.width = t.maxWidth, t.left = 0, t.right = t.width) : (t.height = t.maxHeight, t.top = 0, t.bottom = t.height), t.paddingLeft = 0, t.paddingTop = 0, t.paddingRight = 0, t.paddingBottom = 0, t.minSize = { width: 0, height: 0 } }, afterSetDimensions: Di, beforeBuildLabels: Di, buildLabels: function () { var t = this, e = t.options.labels || {}, n = H.callback(e.generateLabels, [t.chart], t) || []; e.filter && (n = n.filter((function (n) { return e.filter(n, t.chart.data) }))), t.options.reverse && n.reverse(), t.legendItems = n }, afterBuildLabels: Di, beforeFit: Di, fit: function () { var t = this, e = t.options, n = e.labels, i = e.display, a = t.ctx, r = H.options._parseFont(n), o = r.size, s = t.legendHitBoxes = [], l = t.minSize, u = t.isHorizontal(); if (u ? (l.width = t.maxWidth, l.height = i ? 10 : 0) : (l.width = i ? 10 : 0, l.height = t.maxHeight), i) { if (a.font = r.string, u) { var d = t.lineWidths = [0], h = 0; a.textAlign = ""left"", a.textBaseline = ""middle"", H.each(t.legendItems, (function (t, e) { var i = Pi(n, o) + o / 2 + a.measureText(t.text).width; (0 === e || d[d.length - 1] + i + 2 * n.padding > l.width) && (h += o + n.padding, d[d.length - (e > 0 ? 0 : 1)] = 0), s[e] = { left: 0, top: 0, width: i, height: o }, d[d.length - 1] += i + n.padding })), l.height += h } else { var c = n.padding, f = t.columnWidths = [], g = t.columnHeights = [], m = n.padding, p = 0, v = 0; H.each(t.legendItems, (function (t, e) { var i = Pi(n, o) + o / 2 + a.measureText(t.text).width; e > 0 && v + o + 2 * c > l.height && (m += p + n.padding, f.push(p), g.push(v), p = 0, v = 0), p = Math.max(p, i), v += o + c, s[e] = { left: 0, top: 0, width: i, height: o } })), m += p, f.push(p), g.push(v), l.width += m } t.width = l.width, t.height = l.height } else t.width = l.width = t.height = l.height = 0 }, afterFit: Di, isHorizontal: function () { return ""top"" === this.options.position || ""bottom"" === this.options.position }, draw: function () { var t = this, e = t.options, n = e.labels, i = W.global, a = i.defaultColor, r = i.elements.line, o = t.height, s = t.columnHeights, l = t.width, u = t.lineWidths; if (e.display) { var d, h = Si(e.rtl, t.left, t.minSize.width), c = t.ctx, f = Ci(n.fontColor, i.defaultFontColor), g = H.options._parseFont(n), m = g.size; c.textAlign = h.textAlign(""left""), c.textBaseline = ""middle"", c.lineWidth = .5, c.strokeStyle = f, c.fillStyle = f, c.font = g.string; var p = Pi(n, m), v = t.legendHitBoxes, b = function (t, i) { switch (e.align) { case ""start"": return n.padding; case ""end"": return t - i; default: return (t - i + n.padding) / 2 } }, y = t.isHorizontal(); d = y ? { x: t.left + b(l, u[0]), y: t.top + n.padding, line: 0 } : { x: t.left + n.padding, y: t.top + b(o, s[0]), line: 0 }, H.rtl.overrideTextDirection(t.ctx, e.textDirection); var x = m + n.padding; H.each(t.legendItems, (function (e, i) { var f = c.measureText(e.text).width, g = p + m / 2 + f, _ = d.x, w = d.y; h.setWidth(t.minSize.width), y ? i > 0 && _ + g + n.padding > t.left + t.minSize.width && (w = d.y += x, d.line++, _ = d.x = t.left + b(l, u[d.line])) : i > 0 && w + x > t.top + t.minSize.height && (_ = d.x = _ + t.columnWidths[d.line] + n.padding, d.line++, w = d.y = t.top + b(o, s[d.line])); var k = h.x(_); !function (t, e, i) { if (!(isNaN(p) || p <= 0)) { c.save(); var o = Ci(i.lineWidth, r.borderWidth); if (c.fillStyle = Ci(i.fillStyle, a), c.lineCap = Ci(i.lineCap, r.borderCapStyle), c.lineDashOffset = Ci(i.lineDashOffset, r.borderDashOffset), c.lineJoin = Ci(i.lineJoin, r.borderJoinStyle), c.lineWidth = o, c.strokeStyle = Ci(i.strokeStyle, a), c.setLineDash && c.setLineDash(Ci(i.lineDash, r.borderDash)), n && n.usePointStyle) { var s = p * Math.SQRT2 / 2, l = h.xPlus(t, p / 2), u = e + m / 2; H.canvas.drawPoint(c, i.pointStyle, s, l, u, i.rotation) } else c.fillRect(h.leftForLtr(t, p), e, p, m), 0 !== o && c.strokeRect(h.leftForLtr(t, p), e, p, m); c.restore() } }(k, w, e), v[i].left = h.leftForLtr(k, v[i].width), v[i].top = w, function (t, e, n, i) { var a = m / 2, r = h.xPlus(t, p + a), o = e + a; c.fillText(n.text, r, o), n.hidden && (c.beginPath(), c.lineWidth = 2, c.moveTo(r, o), c.lineTo(h.xPlus(r, i), o), c.stroke()) }(k, w, e, f), y ? d.x += g + n.padding : d.y += x })), H.rtl.restoreTextDirection(t.ctx, e.textDirection) } }, _getLegendItemAt: function (t, e) { var n, i, a, r = this; if (t >= r.left && t <= r.right && e >= r.top && e <= r.bottom) for (a = r.legendHitBoxes, n = 0; n < a.length; ++n)if (t >= (i = a[n]).left && t <= i.left + i.width && e >= i.top && e <= i.top + i.height) return r.legendItems[n]; return null }, handleEvent: function (t) { var e, n = this, i = n.options, a = ""mouseup"" === t.type ? ""click"" : t.type; if (""mousemove"" === a) { if (!i.onHover && !i.onLeave) return } else { if (""click"" !== a) return; if (!i.onClick) return } e = n._getLegendItemAt(t.x, t.y), ""click"" === a ? e && i.onClick && i.onClick.call(n, t.native, e) : (i.onLeave && e !== n._hoveredItem && (n._hoveredItem && i.onLeave.call(n, t.native, n._hoveredItem), n._hoveredItem = e), i.onHover && e && i.onHover.call(n, t.native, e)) } }); function Oi(t, e) { var n = new Ti({ ctx: t.ctx, options: e, chart: t }); me.configure(t, n, e), me.addBox(t, n), t.legend = n } var Ai = { id: ""legend"", _element: Ti, beforeInit: function (t) { var e = t.options.legend; e && Oi(t, e) }, beforeUpdate: function (t) { var e = t.options.legend, n = t.legend; e ? (H.mergeIf(e, W.global.legend), n ? (me.configure(t, n, e), n.options = e) : Oi(t, e)) : n && (me.removeBox(t, n), delete t.legend) }, afterEvent: function (t, e) { var n = t.legend; n && n.handleEvent(e) } }, Fi = H.noop; W._set(""global"", { title: { display: !1, fontStyle: ""bold"", fullWidth: !0, padding: 10, position: ""top"", text: """", weight: 2e3 } }); var Ii = µ.extend({ initialize: function (t) { H.extend(this, t), this.legendHitBoxes = [] }, beforeUpdate: Fi, update: function (t, e, n) { var i = this; return i.beforeUpdate(), i.maxWidth = t, i.maxHeight = e, i.margins = n, i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize }, afterUpdate: Fi, beforeSetDimensions: Fi, setDimensions: function () { var t = this; t.isHorizontal() ? (t.width = t.maxWidth, t.left = 0, t.right = t.width) : (t.height = t.maxHeight, t.top = 0, t.bottom = t.height), t.paddingLeft = 0, t.paddingTop = 0, t.paddingRight = 0, t.paddingBottom = 0, t.minSize = { width: 0, height: 0 } }, afterSetDimensions: Fi, beforeBuildLabels: Fi, buildLabels: Fi, afterBuildLabels: Fi, beforeFit: Fi, fit: function () { var t, e = this, n = e.options, i = e.minSize = {}, a = e.isHorizontal(); n.display ? (t = (H.isArray(n.text) ? n.text.length : 1) * H.options._parseFont(n).lineHeight + 2 * n.padding, e.width = i.width = a ? e.maxWidth : t, e.height = i.height = a ? t : e.maxHeight) : e.width = i.width = e.height = i.height = 0 }, afterFit: Fi, isHorizontal: function () { var t = this.options.position; return ""top"" === t || ""bottom"" === t }, draw: function () { var t = this, e = t.ctx, n = t.options; if (n.display) { var i, a, r, o = H.options._parseFont(n), s = o.lineHeight, l = s / 2 + n.padding, u = 0, d = t.top, h = t.left, c = t.bottom, f = t.right; e.fillStyle = H.valueOrDefault(n.fontColor, W.global.defaultFontColor), e.font = o.string, t.isHorizontal() ? (a = h + (f - h) / 2, r = d + l, i = f - h) : (a = ""left"" === n.position ? h + l : f - l, r = d + (c - d) / 2, i = c - d, u = Math.PI * (""left"" === n.position ? -.5 : .5)), e.save(), e.translate(a, r), e.rotate(u), e.textAlign = ""center"", e.textBaseline = ""middle""; var g = n.text; if (H.isArray(g)) for (var m = 0, p = 0; p < g.length; ++p)e.fillText(g[p], 0, m, i), m += s; else e.fillText(g, 0, 0, i); e.restore() } } }); function Li(t, e) { var n = new Ii({ ctx: t.ctx, options: e, chart: t }); me.configure(t, n, e), me.addBox(t, n), t.titleBlock = n } var Ri = {}, Ni = Mi, Wi = Ai, Yi = { id: ""title"", _element: Ii, beforeInit: function (t) { var e = t.options.title; e && Li(t, e) }, beforeUpdate: function (t) { var e = t.options.title, n = t.titleBlock; e ? (H.mergeIf(e, W.global.title), n ? (me.configure(t, n, e), n.options = e) : Li(t, e)) : n && (me.removeBox(t, n), delete t.titleBlock) } }; for (var zi in Ri.filler = Ni, Ri.legend = Wi, Ri.title = Yi, en.helpers = H, function () { function t(t, e, n) { var i; return ""string"" == typeof t ? (i = parseInt(t, 10), -1 !== t.indexOf(""%"") && (i = i / 100 * e.parentNode[n])) : i = t, i } function e(t) { return null != t && ""none"" !== t } function n(n, i, a) { var r = document.defaultView, o = H._getParentNode(n), s = r.getComputedStyle(n)[i], l = r.getComputedStyle(o)[i], u = e(s), d = e(l), h = Number.POSITIVE_INFINITY; return u || d ? Math.min(u ? t(s, n, a) : h, d ? t(l, o, a) : h) : ""none"" } H.where = function (t, e) { if (H.isArray(t) && Array.prototype.filter) return t.filter(e); var n = []; return H.each(t, (function (t) { e(t) && n.push(t) })), n }, H.findIndex = Array.prototype.findIndex ? function (t, e, n) { return t.findIndex(e, n) } : function (t, e, n) { n = void 0 === n ? t : n; for (var i = 0, a = t.length; i < a; ++i)if (e.call(n, t[i], i, t)) return i; return -1 }, H.findNextWhere = function (t, e, n) { H.isNullOrUndef(n) && (n = -1); for (var i = n + 1; i < t.length; i++) { var a = t[i]; if (e(a)) return a } }, H.findPreviousWhere = function (t, e, n) { H.isNullOrUndef(n) && (n = t.length); for (var i = n - 1; i >= 0; i--) { var a = t[i]; if (e(a)) return a } }, H.isNumber = function (t) { return !isNaN(parseFloat(t)) && isFinite(t) }, H.almostEquals = function (t, e, n) { return Math.abs(t - e) < n }, H.almostWhole = function (t, e) { var n = Math.round(t); return n - e <= t && n + e >= t }, H.max = function (t) { return t.reduce((function (t, e) { return isNaN(e) ? t : Math.max(t, e) }), Number.NEGATIVE_INFINITY) }, H.min = function (t) { return t.reduce((function (t, e) { return isNaN(e) ? t : Math.min(t, e) }), Number.POSITIVE_INFINITY) }, H.sign = Math.sign ? function (t) { return Math.sign(t) } : function (t) { return 0 === (t = +t) || isNaN(t) ? t : t > 0 ? 1 : -1 }, H.toRadians = function (t) { return t * (Math.PI / 180) }, H.toDegrees = function (t) { return t * (180 / Math.PI) }, H._decimalPlaces = function (t) { if (H.isFinite(t)) { for (var e = 1, n = 0; Math.round(t * e) / e !== t;)e *= 10, n++; return n } }, H.getAngleFromPoint = function (t, e) { var n = e.x - t.x, i = e.y - t.y, a = Math.sqrt(n * n + i * i), r = Math.atan2(i, n); return r < -.5 * Math.PI && (r += 2 * Math.PI), { angle: r, distance: a } }, H.distanceBetweenPoints = function (t, e) { return Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2)) }, H.aliasPixel = function (t) { return t % 2 == 0 ? 0 : .5 }, H._alignPixel = function (t, e, n) { var i = t.currentDevicePixelRatio, a = n / 2; return Math.round((e - a) * i) / i + a }, H.splineCurve = function (t, e, n, i) { var a = t.skip ? e : t, r = e, o = n.skip ? e : n, s = Math.sqrt(Math.pow(r.x - a.x, 2) + Math.pow(r.y - a.y, 2)), l = Math.sqrt(Math.pow(o.x - r.x, 2) + Math.pow(o.y - r.y, 2)), u = s / (s + l), d = l / (s + l), h = i * (u = isNaN(u) ? 0 : u), c = i * (d = isNaN(d) ? 0 : d); return { previous: { x: r.x - h * (o.x - a.x), y: r.y - h * (o.y - a.y) }, next: { x: r.x + c * (o.x - a.x), y: r.y + c * (o.y - a.y) } } }, H.EPSILON = Number.EPSILON || 1e-14, H.splineCurveMonotone = function (t) { var e, n, i, a, r, o, s, l, u, d = (t || []).map((function (t) { return { model: t._model, deltaK: 0, mK: 0 } })), h = d.length; for (e = 0; e < h; ++e)if (!(i = d[e]).model.skip) { if (n = e > 0 ? d[e - 1] : null, (a = e < h - 1 ? d[e + 1] : null) && !a.model.skip) { var c = a.model.x - i.model.x; i.deltaK = 0 !== c ? (a.model.y - i.model.y) / c : 0 } !n || n.model.skip ? i.mK = i.deltaK : !a || a.model.skip ? i.mK = n.deltaK : this.sign(n.deltaK) !== this.sign(i.deltaK) ? i.mK = 0 : i.mK = (n.deltaK + i.deltaK) / 2 } for (e = 0; e < h - 1; ++e)i = d[e], a = d[e + 1], i.model.skip || a.model.skip || (H.almostEquals(i.deltaK, 0, this.EPSILON) ? i.mK = a.mK = 0 : (r = i.mK / i.deltaK, o = a.mK / i.deltaK, (l = Math.pow(r, 2) + Math.pow(o, 2)) <= 9 || (s = 3 / Math.sqrt(l), i.mK = r * s * i.deltaK, a.mK = o * s * i.deltaK))); for (e = 0; e < h; ++e)(i = d[e]).model.skip || (n = e > 0 ? d[e - 1] : null, a = e < h - 1 ? d[e + 1] : null, n && !n.model.skip && (u = (i.model.x - n.model.x) / 3, i.model.controlPointPreviousX = i.model.x - u, i.model.controlPointPreviousY = i.model.y - u * i.mK), a && !a.model.skip && (u = (a.model.x - i.model.x) / 3, i.model.controlPointNextX = i.model.x + u, i.model.controlPointNextY = i.model.y + u * i.mK)) }, H.nextItem = function (t, e, n) { return n ? e >= t.length - 1 ? t[0] : t[e + 1] : e >= t.length - 1 ? t[t.length - 1] : t[e + 1] }, H.previousItem = function (t, e, n) { return n ? e <= 0 ? t[t.length - 1] : t[e - 1] : e <= 0 ? t[0] : t[e - 1] }, H.niceNum = function (t, e) { var n = Math.floor(H.log10(t)), i = t / Math.pow(10, n); return (e ? i < 1.5 ? 1 : i < 3 ? 2 : i < 7 ? 5 : 10 : i <= 1 ? 1 : i <= 2 ? 2 : i <= 5 ? 5 : 10) * Math.pow(10, n) }, H.requestAnimFrame = ""undefined"" == typeof window ? function (t) { t() } : window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t) { return window.setTimeout(t, 1e3 / 60) }, H.getRelativePosition = function (t, e) { var n, i, a = t.originalEvent || t, r = t.target || t.srcElement, o = r.getBoundingClientRect(), s = a.touches; s && s.length > 0 ? (n = s[0].clientX, i = s[0].clientY) : (n = a.clientX, i = a.clientY); var l = parseFloat(H.getStyle(r, ""padding-left"")), u = parseFloat(H.getStyle(r, ""padding-top"")), d = parseFloat(H.getStyle(r, ""padding-right"")), h = parseFloat(H.getStyle(r, ""padding-bottom"")), c = o.right - o.left - l - d, f = o.bottom - o.top - u - h; return { x: n = Math.round((n - o.left - l) / c * r.width / e.currentDevicePixelRatio), y: i = Math.round((i - o.top - u) / f * r.height / e.currentDevicePixelRatio) } }, H.getConstraintWidth = function (t) { return n(t, ""max-width"", ""clientWidth"") }, H.getConstraintHeight = function (t) { return n(t, ""max-height"", ""clientHeight"") }, H._calculatePadding = function (t, e, n) { return (e = H.getStyle(t, e)).indexOf(""%"") > -1 ? n * parseInt(e, 10) / 100 : parseInt(e, 10) }, H._getParentNode = function (t) { var e = t.parentNode; return e && ""[object ShadowRoot]"" === e.toString() && (e = e.host), e }, H.getMaximumWidth = function (t) { var e = H._getParentNode(t); if (!e) return t.clientWidth; var n = e.clientWidth, i = n - H._calculatePadding(e, ""padding-left"", n) - H._calculatePadding(e, ""padding-right"", n), a = H.getConstraintWidth(t); return isNaN(a) ? i : Math.min(i, a) }, H.getMaximumHeight = function (t) { var e = H._getParentNode(t); if (!e) return t.clientHeight; var n = e.clientHeight, i = n - H._calculatePadding(e, ""padding-top"", n) - H._calculatePadding(e, ""padding-bottom"", n), a = H.getConstraintHeight(t); return isNaN(a) ? i : Math.min(i, a) }, H.getStyle = function (t, e) { return t.currentStyle ? t.currentStyle[e] : document.defaultView.getComputedStyle(t, null).getPropertyValue(e) }, H.retinaScale = function (t, e) { var n = t.currentDevicePixelRatio = e || ""undefined"" != typeof window && window.devicePixelRatio || 1; if (1 !== n) { var i = t.canvas, a = t.height, r = t.width; i.height = a * n, i.width = r * n, t.ctx.scale(n, n), i.style.height || i.style.width || (i.style.height = a + ""px"", i.style.width = r + ""px"") } }, H.fontString = function (t, e, n) { return e + "" "" + t + ""px "" + n }, H.longestText = function (t, e, n, i) { var a = (i = i || {}).data = i.data || {}, r = i.garbageCollect = i.garbageCollect || []; i.font !== e && (a = i.data = {}, r = i.garbageCollect = [], i.font = e), t.font = e; var o, s, l, u, d, h = 0, c = n.length; for (o = 0; o < c; o++)if (null != (u = n[o]) && !0 !== H.isArray(u)) h = H.measureText(t, a, r, h, u); else if (H.isArray(u)) for (s = 0, l = u.length; s < l; s++)null == (d = u[s]) || H.isArray(d) || (h = H.measureText(t, a, r, h, d)); var f = r.length / 2; if (f > n.length) { for (o = 0; o < f; o++)delete a[r[o]]; r.splice(0, f) } return h }, H.measureText = function (t, e, n, i, a) { var r = e[a]; return r || (r = e[a] = t.measureText(a).width, n.push(a)), r > i && (i = r), i }, H.numberOfLabelLines = function (t) { var e = 1; return H.each(t, (function (t) { H.isArray(t) && t.length > e && (e = t.length) })), e }, H.color = k ? function (t) { return t instanceof CanvasGradient && (t = W.global.defaultColor), k(t) } : function (t) { return console.error(""Color.js not found!""), t }, H.getHoverColor = function (t) { return t instanceof CanvasPattern || t instanceof CanvasGradient ? t : H.color(t).saturate(.5).darken(.1).rgbString() } }(), en._adapters = rn, en.Animation = K, en.animationService = J, en.controllers = Jt, en.DatasetController = it, en.defaults = W, en.Element = µ, en.elements = wt, en.Interaction = re, en.layouts = me, en.platform = Ie, en.plugins = Le, en.Scale = xn, en.scaleService = Re, en.Ticks = on, en.Tooltip = Ge, en.helpers.each(fi, (function (t, e) { en.scaleService.registerScaleType(e, t, t._defaults) })), Ri) Ri.hasOwnProperty(zi) && en.plugins.register(Ri[zi]); en.platform.initialize(); var Ei = en; return ""undefined"" != typeof window && (window.Chart = en), en.Chart = en, en.Legend = Ri.legend._element, en.Title = Ri.title._element, en.pluginService = en.plugins, en.PluginBase = en.Element.extend({}), en.canvasHelpers = en.helpers.canvas, en.layoutService = en.layouts, en.LinearScaleBase = Dn, en.helpers.each([""Bar"", ""Bubble"", ""Doughnut"", ""Line"", ""PolarArea"", ""Radar"", ""Scatter""], (function (t) { en[t] = function (e, n) { return new en(e, en.helpers.merge(n || {}, { type: t.charAt(0).toLowerCase() + t.slice(1) })) } })), Ei }));"
function Open-REPDocument(){
<#
.SYNOPSIS
Returns the tags at the beginning of the document
These tags must be closed with Close-REPDocument at the end
.DESCRIPTION
.NOTES
This PowerShell script was developed and optimized for ScriptRunner. The use of the scripts requires ScriptRunner.
The customer or user is authorized to copy the script from the repository and use them in ScriptRunner.
The terms of use for ScriptRunner do not apply to this script. In particular, ScriptRunner Software GmbH assumes no liability for the function,
the use and the consequences of the use of this freely available script.
PowerShell is a product of Microsoft Corporation. ScriptRunner is a product of ScriptRunner Software GmbH.
© ScriptRunner Software GmbH
.COMPONENT
.LINK
https://github.com/scriptrunner/ActionPacks/tree/master/Reporting/_LIB_
.Parameter Title
Title text on your document
.Parameter Language
Language attribute in the Html tag to specify the language of the text on your document
.Parameter Charset
Character set for your Html document
#>
param(
[string]$Title = 'ScriptRunner Report',
[ValidateSet('en','de','fr','es','it','hu')]
[string]$Language = 'en',
[ValidateSet('UTF-8','ISO-8859-2','ISO-8859-3','ISO-8859-4','ISO-8859-5')]
[string]$CharSet = 'UTF-8'
)
$Script:BarChartCounter = 0
$Script:BarCharts = New-Object System.Collections.Generic.List[string]
[string]$tags = @"
<!doctype html>
<html lang="$($Language)">
<head>
<meta charset='$($CharSet)'>
<link rel='icon' href='$($FavIcon)' />
<title>$($Title)</title>
<style>
body,
html {
font-family: "Source Sans Pro", Calibri, Arial, serif;
}
.sr-header {
padding-top: 10px;
border-bottom: 1px solid #ccc;
padding-bottom: 20px;
}
.sr-header .sr-info ul {
color: #195DA0;
list-style: none;
}
.sr-header .sr-image {
float: right;
}
.sr-header .sr-image img {
width: 200px;
}
</style>
</head>
<body>
"@
return $tags
}
function Close-REPDocument(){
<#
.SYNOPSIS
Inserts the java script and the script code to build the charts, should be created.
Returns the tags at the end of the document and closes the tags opened by Open-REPDocument
.DESCRIPTION
.NOTES
This PowerShell script was developed and optimized for ScriptRunner. The use of the scripts requires ScriptRunner.
The customer or user is authorized to copy the script from the repository and use them in ScriptRunner.
The terms of use for ScriptRunner do not apply to this script. In particular, ScriptRunner Software GmbH assumes no liability for the function,
the use and the consequences of the use of this freely available script.
PowerShell is a product of Microsoft Corporation. ScriptRunner is a product of ScriptRunner Software GmbH.
© ScriptRunner Software GmbH
.COMPONENT
.LINK
https://github.com/scriptrunner/ActionPacks/tree/master/Reporting/_LIB_
#>
param(
)
function ChartScript(){
if($Script:BarChartCounter -gt 0){
return @"
<script>
/*!
* Chart.js v2.9.3
* https://www.chartjs.org
* (c) 2019 Chart.js Contributors
* Released under the MIT License
*/
$($chartJS.Replace('µ','$'))
</script>
"@
}
else{
return ''
}
}
function BarChartJSCode(){
if($Script:BarChartCounter -gt 0){
return @"
<script>
Chart.Legend.prototype.afterFit = function() {
this.height = this.height + 20;
};
$($Script:BarCharts)
</script>
"@
}
else{
return ''
}
}
[string]$tags = @"
$((ChartScript))
$((BarChartJSCode))
</body>
</html>
"@
return $tags
}
function Get-REPHeader(){
<#
.SYNOPSIS
Returns the Html code for the header
.DESCRIPTION
.NOTES
This PowerShell script was developed and optimized for ScriptRunner. The use of the scripts requires ScriptRunner.
The customer or user is authorized to copy the script from the repository and use them in ScriptRunner.
The terms of use for ScriptRunner do not apply to this script. In particular, ScriptRunner Software GmbH assumes no liability for the function,
the use and the consequences of the use of this freely available script.
PowerShell is a product of Microsoft Corporation. ScriptRunner is a product of ScriptRunner Software GmbH.
© ScriptRunner Software GmbH
.COMPONENT
.LINK
https://github.com/scriptrunner/ActionPacks/tree/master/Reporting/_LIB_
.Parameter OpeningLine
First line in the header
.Parameter ActionName
Name of the action
.Parameter StartedBy
Action started by
.Parameter TimeStamp
Action started on
.Parameter AdditionalLine1
First line below the action information
.Parameter AdditionalLine2
Second line below the action information
.Parameter AdditionalLine3
Third line below the action information
.Parameter ActionLabel
Label of the action name. Is only displayed if parameter ActionName is specified
.Parameter StartedByLabel
Label of the action name. Is only displayed if parameter StartedBy is specified
.Parameter TimeStampLabel
Label of the action name. Is only displayed if parameter TimeStamp is specified
.Parameter ClosingLine
Last line in the header
.Parameter DateTimeCulture
Culture-specific formatting information Date
.Parameter LongDateTime
Detailed date
#>
param(
[string]$OpeningLine,
[string]$ActionName,
[string]$StartedBy,
[Parameter(HelpMessage="ASRDisplay(Date)")]
[datetime]$TimeStamp,
[string]$AdditionalLine1,
[string]$AdditionalLine2,
[string]$AdditionalLine3,
[string]$ClosingLine,
[ValidateSet('Action','Aktion','Acción','Azione','Művelet')]
[string]$ActionLabel = 'Action',
[ValidateSet('Started by','Gestartet von','Lancé par','Iniciado por','Iniziato da','Által elindítva')]
[string]$StartedByLabel = 'Started by',
[ValidateSet('Date','Datum','Fecha','Data','Dátum')]
[string]$TimeStampLabel = 'Date',
[ValidateSet('en','de','fr','es','it','hu')]
[string]$DateTimeCulture = 'en',
[switch]$LongDateTime
)
[string]$result = @"
<div class='sr-header'>
<div class='sr-image'>
<img
src=$($RightHeaderImage) />
</div>
<div class='sr-info'>
<ul>
"@
if($PSBoundParameters.ContainsKey('OpeningLine') -eq $true){ # first line
$result += @"
<li>$($OpeningLine)</li>
"@
}
if($PSBoundParameters.ContainsKey('ActionName') -eq $true){ # action name
$result += @"
<li>$($ActionLabel): $($ActionName)</li>
"@
}
if($PSBoundParameters.ContainsKey('StartedBy') -eq $true){ # started by
$result += @"
<li>$($StartedByLabel): $($StartedBy)</li>
"@
}
if($PSBoundParameters.ContainsKey('TimeStamp') -eq $true){ # time stamp
[System.Globalization.CultureInfo]$cul = [System.Globalization.CultureInfo]::GetCultureInfo($DateTimeCulture)
[string]$dateFormat = "$($cul.DateTimeFormat.ShortDatePattern) $($cul.DateTimeFormat.ShortTimePattern)"
if($LongDateTime.IsPresent -eq $true){
[string]$dateFormat = "$($cul.DateTimeFormat.LongDatePattern) $($cul.DateTimeFormat.LongTimePattern)"
}
$result += @"
<li>$($TimeStampLabel): $($TimeStamp.ToString($dateFormat,$cul))</li>
"@
}
if(($PSBoundParameters.ContainsKey('AdditionalLine1') -eq $true) -or ($PSBoundParameters.ContainsKey('AdditionalLine2') -eq $true) -or ($PSBoundParameters.ContainsKey('AdditionalLine3') -eq $true)){ # additional line 1
$result += @"
<li>$($AdditionalLine1)</li>
"@
}
if(($PSBoundParameters.ContainsKey('AdditionalLine2') -eq $true) -or ($PSBoundParameters.ContainsKey('AdditionalLine3') -eq $true)){ # additional line 2
$result += @"
<li>$($AdditionalLine2)</li>
"@
}
if($PSBoundParameters.ContainsKey('AdditionalLine3') -eq $true){ # additional line 3
$result += @"
<li>$($AdditionalLine3)</li>
"@
}
if($PSBoundParameters.ContainsKey('ClosingLine') -eq $true){ # last line
$result += @"
<li>$($ClosingLine)</li>
"@
}
$result += @"
</ul>
</div>
</div>
"@
Return $result
}
function Get-BarChart(){
<#
.SYNOPSIS
Returns the Html code for the bar chart
.DESCRIPTION
.NOTES
This PowerShell script was developed and optimized for ScriptRunner. The use of the scripts requires ScriptRunner.
The customer or user is authorized to copy the script from the repository and use them in ScriptRunner.
The terms of use for ScriptRunner do not apply to this script. In particular, ScriptRunner Software GmbH assumes no liability for the function,
the use and the consequences of the use of this freely available script.
PowerShell is a product of Microsoft Corporation. ScriptRunner is a product of ScriptRunner Software GmbH.
© ScriptRunner Software GmbH
.COMPONENT
.LINK
https://github.com/scriptrunner/ActionPacks/tree/master/Reporting/_LIB_
.Parameter Bars
Class instances with the chart properties
.Parameter WidthPx
Width of the chart, pixels
.Parameter HeightPx
Height of the chart, pixels
.Parameter BorderWidth
Border width of the bars
.Parameter MultiXValues
Data object for each value
.Parameter AutoBarColors
Automatically assign colors to the bars
.Parameter LabelXAxis
Label of the X Axis
.Parameter LabelYAxis
Label of the Y Axis
.Parameter DisplayLegends
Display chart legends
.Parameter DisplayXTicks
Display ticks of the X Axis
.Parameter DisplayXGridBorder
Display grid border of the X Axis
.Parameter DisplayXGridLines
Display grid lines of the X Axis
.Parameter DisplayYTicks
Display ticks of the Y Axis
.Parameter DisplayYGridBorder
Display grid border of the Y Axis
.Parameter DisplayYGridLines
Display grid lines of the Y Axis
#>
param(
[Parameter(Mandatory=$true)]
[System.Collections.Generic.Queue[BarChartProperties]]$Bars,
[ValidateRange(10,1600)]
[int]$WidthPx = 250,
[ValidateRange(10,1600)]
[int]$HeightPx = 250,
[ValidateRange(0,10)]
[int]$BorderWidth = 1,
[switch]$MultiData,
[switch]$AutoBarColors,
[string]$LabelXAxis = '',
[string]$LabelYAxis = '',
[bool]$DisplayLegends = $true,
[bool]$DisplayXTicks = $true,
[bool]$DisplayYTicks = $true,
[bool]$DisplayYGridBorder = $true,
[bool]$DisplayYGridLines = $true,
[bool]$DisplayXGridBorder = $true,
[bool]$DisplayXGridLines = $true
)
function GetColors(){
<#
.SYNOPSIS
Returns color codes
.Parameter BarColors
Reference parameter for result
.Parameter Count
Count of the color items
.Parameter BarBorderColors
Get colors from the bordercolors parameter
#>
param(
[ref]$BarColors,
[int]$Count,
[switch]$BarBorderColors
)
[int]$item = 0
[string]$ret = ''
for($i = 0;$i -lt $Count;$i++){
if($item -ge $Colors.Length){
$item = 0
}
if($BarBorderColors.IsPresent -eq $true){
$ret += "'$($BorderColors[$item])',"
}
else{
$ret += "'$($Colors[$item])',"
}
$item ++
}
$BarColors.Value = ($ret.Substring(0,$ret.Length - 1)) #return last comma
}
$Script:BarChartCounter ++ # id for the chart elements
[string]$flexTag = ''
if($Script:BarChartRowIsOpen -eq $true){ # show multiple charts in a row
$flexTag = 'flex:1 '
}
# div for the chart
[string]$result = @"
<div style='$($flexTag)height:$($HeightPx)px;width:$($WidthPx)px;padding:30px'>
<canvas id='srChart$($Script:BarChartCounter)' width='100%' height='100%'></canvas>
</div>
"@
$Bars | ForEach-Object{$_.Description = "'$($_.Description)'"}
$Bars | ForEach-Object{$_.BackgroundColor = "'$($_.BackgroundColor)'"}
$Bars | ForEach-Object{$_.BorderColor = "'$($_.BorderColor)'"}
# js code for the charts
[string]$buildChart = @"
var ctx = document.getElementById('srChart$($Script:BarChartCounter)').getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
"@
if($MultiData.IsPresent -eq $true){ # one label for the x axis
$buildChart += @"
labels: ['$($LabelXAxis)'],
datasets: [
"@
}
else{ # x axis label for each bar
$buildChart += @"
labels: [$(($Bars | Select-Object -ExpandProperty Description) -join ',')],
datasets: [
"@
}
if($MultiData.IsPresent -eq $true){ # data, colors and label object for each bar
$Bars | ForEach-Object{
$buildChart += @"
{
label: $($_.Description),
data: [$($_.Value)],
backgroundColor: $($_.BackgroundColor),
borderColor: $($_.BorderColor),
borderWidth: $($BorderWidth)
},
"@
}
}
else{ # one object for all values, colors
[string]$itemColors = (($Bars | Select-Object -ExpandProperty BackgroundColor) -join ',')
[string]$itemBorders = (($Bars | Select-Object -ExpandProperty BorderColor) -join ',')
if($AutoBarColors.IsPresent -eq $true){ # get SR Colors
GetColors -BarColors ([ref]$itemColors) -Count $Bars.Count
GetColors -BarColors ([ref]$itemBorders) -Count $Bars.Count -BarBorderColors
}
$buildChart += @"
{
label: '$($LabelXAxis)',
data: [$(($Bars | Select-Object -ExpandProperty Value) -join ',')],
backgroundColor: [$($itemColors)],
borderColor: [$($itemBorders)],
borderWidth: $($BorderWidth)
},
"@
}
$buildChart = $buildChart.Substring(0,$buildChart.Length-1) # remove last comma
# js display options
# show gridlines, gridborder, legends, labels
$buildChart += @"
]
},
options: {
legend: {
align: 'start',
display: $($DisplayLegends.ToString().ToLower())
},
scales: {
yAxes: [{
gridLines: {
drawBorder: $($DisplayYGridBorder.ToString().ToLower()),
display: $($DisplayYGridLines.ToString().ToLower())
},
ticks: {
beginAtZero: true,
display: $($DisplayYTicks.ToString().ToLower())
},
scaleLabel: {
labelString: '$($LabelYAxis)',
display: $(($LabelYAxis.Length -gt 0).ToString().ToLower())
}
}],
xAxes: [{
ticks: {
display: $($DisplayXTicks.ToString().ToLower())
},
gridLines: {
drawBorder: $($DisplayXGridBorder.ToString().ToLower()),
display: $($DisplayXGridLines.ToString().ToLower())
},
}]
}
}
});
"@
$Script:BarCharts.Add($buildChart)
return $result
}
function Open-BarChartLine(){
<#
.SYNOPSIS
Returns the Html code for displaying the bar charts in a line
.DESCRIPTION
.NOTES
This PowerShell script was developed and optimized for ScriptRunner. The use of the scripts requires ScriptRunner.
The customer or user is authorized to copy the script from the repository and use them in ScriptRunner.
The terms of use for ScriptRunner do not apply to this script. In particular, ScriptRunner Software GmbH assumes no liability for the function,
the use and the consequences of the use of this freely available script.
PowerShell is a product of Microsoft Corporation. ScriptRunner is a product of ScriptRunner Software GmbH.
© ScriptRunner Software GmbH
.COMPONENT
.LINK
https://github.com/scriptrunner/ActionPacks/tree/master/Reporting/_LIB_
#>
param(
)
$Script:BarChartRowIsOpen = $true
return "<div style='display:flex'>"
}
function Close-BarChartLine(){
<#
.SYNOPSIS
Returns the Html code for closing the bar charts line
.DESCRIPTION
.NOTES
This PowerShell script was developed and optimized for ScriptRunner. The use of the scripts requires ScriptRunner.
The customer or user is authorized to copy the script from the repository and use them in ScriptRunner.
The terms of use for ScriptRunner do not apply to this script. In particular, ScriptRunner Software GmbH assumes no liability for the function,
the use and the consequences of the use of this freely available script.
PowerShell is a product of Microsoft Corporation. ScriptRunner is a product of ScriptRunner Software GmbH.
© ScriptRunner Software GmbH
.COMPONENT
.LINK
https://github.com/scriptrunner/ActionPacks/tree/master/Reporting/_LIB_
#>
param(
)
if($Script:BarChartRowIsOpen -eq $true){ # only close when open
$Script:BarChartRowIsOpen = $false
return "</div>"
}
return ''
}