diff --git a/assets/carrier/Carrier.blend b/assets/carrier/Carrier.blend
new file mode 100644
index 0000000..51973fc
Binary files /dev/null and b/assets/carrier/Carrier.blend differ
diff --git a/assets/carrier/Carrier2.blend b/assets/carrier/Carrier2.blend
new file mode 100644
index 0000000..c42b341
Binary files /dev/null and b/assets/carrier/Carrier2.blend differ
diff --git a/assets/submarine/submarine-hatch.obj b/assets/submarine/submarine-hatch.obj
new file mode 100644
index 0000000..c0be3bb
--- /dev/null
+++ b/assets/submarine/submarine-hatch.obj
@@ -0,0 +1,80 @@
+# Blender v2.78 (sub 0) OBJ File: 'submarine.blend'
+# www.blender.org
+o Hatch_Cube.008
+v -0.350000 -0.032448 -0.350001
+v -0.350000 -0.032447 0.349999
+v -0.195090 0.014544 0.350004
+v -0.195089 0.014544 -0.350002
+v -0.349273 -0.037338 -0.350001
+v -0.000000 0.028771 -0.350001
+v -0.349273 -0.037338 0.349999
+v -0.000000 0.028771 0.349999
+v -0.194605 0.009592 0.350004
+v -0.194604 0.009592 -0.350002
+v -0.000000 0.033759 0.349999
+v -0.000000 0.033759 -0.350001
+v 0.350000 -0.032448 0.349999
+v 0.350000 -0.032448 -0.350001
+v 0.195089 0.014544 0.350004
+v 0.195089 0.014544 -0.350002
+v 0.349273 -0.037338 0.349999
+v 0.349273 -0.037338 -0.350001
+v 0.194604 0.009592 0.350004
+v 0.194604 0.009592 -0.350002
+vn -0.1420 0.7139 -0.6857
+vn 0.0000 0.7279 0.6857
+vn 0.0000 0.7279 -0.6857
+vn -0.6850 0.4336 0.5854
+vn -0.1420 0.7139 0.6857
+vn 0.1334 -0.6705 -0.7299
+vn 0.0000 -0.6836 0.7299
+vn 0.1334 -0.6704 0.7299
+vn -0.4394 -0.6942 0.5700
+vn -0.4394 -0.6942 -0.5700
+vn -0.6850 0.4336 -0.5855
+vn 0.0000 -0.6836 -0.7299
+vn 0.1420 0.7139 -0.6857
+vn 0.6850 0.4336 0.5854
+vn 0.6850 0.4336 -0.5855
+vn 0.1420 0.7139 0.6857
+vn -0.1334 -0.6705 -0.7299
+vn 0.4394 -0.6942 0.5700
+vn -0.1334 -0.6704 0.7299
+vn 0.4394 -0.6942 -0.5700
+s 1
+f 4//1 11//2 12//3
+f 4//1 2//4 3//5
+f 10//6 8//7 9//8
+f 10//6 7//9 5//10
+f 3//5 8//7 11//2
+f 2//4 9//8 3//5
+f 1//11 7//9 2//4
+f 4//1 6//12 10//6
+f 1//11 10//6 5//10
+f 16//13 13//14 14//15
+f 16//13 11//2 15//16
+f 20//17 17//18 19//19
+f 20//17 8//7 6//12
+f 15//16 8//7 19//19
+f 13//14 18//20 14//15
+f 16//13 6//12 12//3
+f 13//14 19//19 17//18
+f 14//15 20//17 16//13
+f 4//1 3//5 11//2
+f 4//1 1//11 2//4
+f 10//6 6//12 8//7
+f 10//6 9//8 7//9
+f 3//5 9//8 8//7
+f 2//4 7//9 9//8
+f 1//11 5//10 7//9
+f 4//1 12//3 6//12
+f 1//11 4//1 10//6
+f 16//13 15//16 13//14
+f 16//13 12//3 11//2
+f 20//17 18//20 17//18
+f 20//17 19//19 8//7
+f 15//16 11//2 8//7
+f 13//14 17//18 18//20
+f 16//13 20//17 6//12
+f 13//14 15//16 19//19
+f 14//15 18//20 20//17
diff --git a/assets/submarine/submarine-missile.obj b/assets/submarine/submarine-missile.obj
index eab3ea8..d84da20 100644
--- a/assets/submarine/submarine-missile.obj
+++ b/assets/submarine/submarine-missile.obj
@@ -1,6 +1,22 @@
# Blender v2.78 (sub 0) OBJ File: 'submarine.blend'
# www.blender.org
o Missile_Cylinder.015
+v -0.098995 -0.390000 0.095459
+v -0.079196 -0.190000 0.076368
+v 0.095459 -0.390000 -0.098995
+v 0.076368 -0.190000 -0.079196
+v -0.095459 -0.390000 0.098995
+v -0.076368 -0.190000 0.079196
+v 0.098995 -0.390000 -0.095459
+v 0.079196 -0.190000 -0.076368
+v 0.095459 -0.390000 0.098995
+v 0.076368 -0.190000 0.079196
+v -0.098995 -0.390000 -0.095459
+v -0.079196 -0.190000 -0.076368
+v 0.098995 -0.390000 0.095459
+v 0.079196 -0.190000 0.076368
+v -0.095459 -0.390000 -0.098995
+v -0.076368 -0.190000 -0.079196
v 0.020000 -0.479386 -0.034641
v 0.050000 0.110614 -0.086603
v -0.034641 -0.479386 0.020000
@@ -110,6 +126,16 @@ v 0.000000 0.315099 0.050000
v 0.000000 0.162455 0.096593
v -0.060000 -0.579386 0.000000
v 0.060000 -0.579386 0.000000
+vn -0.7071 0.0025 -0.7071
+vn 0.7005 0.1362 -0.7005
+vn 0.7071 0.0025 0.7071
+vn -0.7005 0.1362 0.7005
+vn 0.0000 -1.0000 -0.0000
+vn 0.0000 1.0000 0.0000
+vn -0.7071 0.0025 0.7071
+vn -0.7005 0.1362 -0.7005
+vn 0.7071 0.0025 -0.7071
+vn 0.7005 0.1362 0.7005
vn 0.2588 0.0000 -0.9659
vn 0.7071 0.0000 -0.7071
vn 0.9659 0.0000 -0.2588
@@ -118,7 +144,6 @@ vn -0.2588 0.0000 0.9659
vn -0.7071 0.0000 0.7071
vn -0.9659 0.0000 0.2588
vn -0.9659 0.0000 -0.2588
-vn 0.0000 1.0000 0.0000
vn -0.7071 0.0000 -0.7071
vn -0.2588 0.0000 -0.9659
vn 0.9484 0.1897 0.2541
@@ -187,7 +212,6 @@ vn 0.8053 -0.5522 0.2158
vn 0.8053 -0.5522 -0.2158
vn 0.5895 -0.5522 -0.5895
vn 0.2158 -0.5522 -0.8053
-vn 0.0000 -1.0000 0.0000
vn -0.2541 0.1897 -0.9484
vn 0.9484 0.1897 -0.2541
vn -0.6943 0.1897 -0.6943
@@ -221,227 +245,251 @@ vn 0.2547 0.1784 0.9504
vn 0.2115 0.5763 0.7894
vn 0.2377 0.3953 0.8873
s off
-f 73//1 12//1 95//1
-f 2//2 28//2 12//2
-f 27//3 86//3 28//3
-f 42//4 30//4 86//4
-f 21//5 45//5 32//5
-f 44//6 33//6 45//6
-f 18//7 53//7 33//7
-f 72//8 9//8 53//8
-f 5//9 21//9 27//9
-f 5//10 8//10 9//10
-f 7//11 95//11 8//11
-f 24//12 109//12 41//12
-f 93//13 35//13 94//13
-f 73//14 35//14 2//14
-f 56//15 34//15 57//15
-f 2//16 97//16 27//16
-f 58//17 34//17 54//17
-f 56//18 79//18 96//18
-f 35//19 55//19 97//19
-f 97//20 52//20 99//20
-f 96//21 50//21 34//21
-f 27//22 99//22 42//22
-f 34//23 51//23 54//23
-f 98//24 79//24 46//24
-f 99//25 49//25 100//25
-f 98//26 47//26 50//26
-f 42//27 100//27 25//27
-f 100//28 104//28 105//28
-f 46//29 102//29 47//29
-f 25//30 105//30 23//30
-f 47//31 103//31 48//31
-f 49//32 103//32 104//32
-f 46//33 79//33 101//33
-f 23//34 107//34 21//34
-f 21//35 78//35 44//35
-f 106//36 77//36 75//36
-f 75//37 70//37 76//37
-f 74//38 79//38 10//38
-f 107//39 70//39 78//39
-f 74//40 11//40 106//40
-f 78//41 69//41 82//41
-f 11//42 29//42 80//42
-f 44//43 82//43 18//43
-f 11//44 81//44 77//44
-f 77//45 69//45 70//45
-f 10//46 79//46 29//46
-f 81//47 68//47 69//47
-f 69//48 85//48 82//48
-f 29//49 67//49 80//49
-f 18//50 85//50 72//50
-f 81//51 67//51 84//51
-f 85//52 5//52 72//52
-f 67//53 65//53 84//53
-f 84//54 87//54 68//54
-f 83//55 79//55 63//55
-f 68//56 66//56 85//56
-f 83//57 64//57 67//57
-f 87//58 62//58 66//58
-f 64//59 88//59 60//59
-f 66//60 7//60 5//60
-f 65//61 60//61 89//61
-f 87//62 89//62 61//62
-f 63//63 79//63 88//63
-f 89//64 93//64 61//64
-f 88//65 91//65 60//65
-f 62//66 73//66 7//66
-f 89//67 91//67 92//67
-f 6//68 95//68 17//68
-f 9//69 6//69 4//69
-f 43//70 9//70 4//70
-f 33//71 43//71 3//71
-f 45//72 3//72 19//72
-f 32//73 19//73 20//73
-f 41//74 30//74 24//74
-f 28//75 41//75 26//75
-f 12//76 26//76 1//76
-f 17//77 12//77 1//77
-f 109//78 71//78 13//78
-f 17//79 16//79 6//79
-f 41//80 40//80 26//80
-f 4//81 16//81 15//81
-f 4//82 108//82 43//82
-f 43//83 14//83 3//83
-f 3//84 71//84 19//84
-f 1//85 36//85 17//85
-f 19//86 37//86 20//86
-f 26//87 13//87 1//87
-f 31//88 21//88 32//88
-f 30//89 23//89 31//89
-f 83//90 29//90 79//90
-f 24//91 31//91 22//91
-f 22//92 32//92 20//92
-f 38//93 24//93 22//93
-f 20//94 38//94 22//94
-f 52//95 48//95 49//95
-f 48//96 50//96 47//96
-f 55//97 51//97 52//97
-f 59//98 54//98 55//98
-f 93//99 58//99 59//99
-f 56//100 90//100 79//100
-f 91//101 56//101 57//101
-f 92//102 57//102 58//102
-f 94//103 61//103 93//103
-f 88//104 79//104 90//104
-f 96//105 79//105 98//105
-f 104//106 75//106 76//106
-f 101//107 79//107 74//107
-f 104//108 107//108 105//108
-f 101//109 106//109 102//109
-f 102//110 75//110 103//110
-f 73//1 2//1 12//1
-f 2//2 27//2 28//2
-f 27//3 42//3 86//3
-f 42//4 25//4 30//4
-f 21//5 44//5 45//5
-f 44//6 18//6 33//6
-f 18//7 72//7 53//7
-f 72//8 5//8 9//8
-f 27//9 2//9 73//9
-f 73//9 7//9 27//9
-f 5//9 72//9 18//9
-f 18//9 44//9 5//9
-f 21//9 23//9 27//9
-f 25//9 42//9 27//9
-f 27//9 7//9 5//9
-f 5//9 44//9 21//9
-f 23//9 25//9 27//9
-f 5//10 7//10 8//10
-f 7//11 73//11 95//11
-f 24//12 39//12 109//12
-f 93//13 59//13 35//13
-f 73//14 94//14 35//14
-f 56//15 96//15 34//15
-f 2//16 35//16 97//16
-f 58//17 57//17 34//17
-f 35//19 59//19 55//19
-f 97//20 55//20 52//20
-f 96//21 98//21 50//21
-f 27//22 97//22 99//22
-f 34//23 50//23 51//23
-f 99//25 52//25 49//25
-f 98//26 46//26 47//26
-f 42//27 99//27 100//27
-f 100//28 49//28 104//28
-f 46//29 101//29 102//29
-f 25//30 100//30 105//30
-f 47//31 102//31 103//31
-f 49//32 48//32 103//32
-f 23//34 105//34 107//34
-f 21//35 107//35 78//35
-f 106//36 11//36 77//36
-f 75//37 77//37 70//37
-f 107//39 76//39 70//39
-f 74//40 10//40 11//40
-f 78//41 70//41 69//41
-f 11//42 10//42 29//42
-f 44//43 78//43 82//43
-f 11//44 80//44 81//44
-f 77//45 81//45 69//45
-f 81//47 84//47 68//47
-f 69//48 68//48 85//48
-f 29//49 83//49 67//49
-f 18//50 82//50 85//50
-f 81//51 80//51 67//51
-f 85//52 66//52 5//52
-f 67//53 64//53 65//53
-f 84//54 65//54 87//54
-f 68//56 87//56 66//56
-f 83//57 63//57 64//57
-f 87//58 61//58 62//58
-f 64//59 63//59 88//59
-f 66//60 62//60 7//60
-f 65//61 64//61 60//61
-f 87//62 65//62 89//62
-f 89//64 92//64 93//64
-f 88//65 90//65 91//65
-f 62//66 94//66 73//66
-f 89//67 60//67 91//67
-f 6//68 8//68 95//68
-f 9//69 8//69 6//69
-f 43//70 53//70 9//70
-f 33//71 53//71 43//71
-f 45//72 33//72 3//72
-f 32//73 45//73 19//73
-f 41//74 86//74 30//74
-f 28//75 86//75 41//75
-f 12//76 28//76 26//76
-f 17//77 95//77 12//77
-f 16//78 36//78 13//78
-f 13//78 40//78 109//78
-f 109//78 39//78 71//78
-f 38//78 37//78 71//78
-f 71//78 14//78 108//78
-f 108//78 15//78 16//78
-f 16//78 13//78 71//78
-f 39//78 38//78 71//78
-f 71//78 108//78 16//78
-f 17//79 36//79 16//79
-f 41//80 109//80 40//80
-f 4//81 6//81 16//81
-f 4//82 15//82 108//82
-f 43//83 108//83 14//83
-f 3//84 14//84 71//84
-f 1//85 13//85 36//85
-f 19//86 71//86 37//86
-f 26//87 40//87 13//87
-f 31//88 23//88 21//88
-f 30//89 25//89 23//89
-f 24//91 30//91 31//91
-f 22//92 31//92 32//92
-f 38//93 39//93 24//93
-f 20//94 37//94 38//94
-f 52//95 51//95 48//95
-f 48//96 51//96 50//96
-f 55//97 54//97 51//97
-f 59//98 58//98 54//98
-f 93//99 92//99 58//99
-f 91//101 90//101 56//101
-f 92//102 91//102 57//102
-f 94//103 62//103 61//103
-f 104//106 103//106 75//106
-f 104//108 76//108 107//108
-f 101//109 74//109 106//109
-f 102//110 106//110 75//110
+f 2//1 3//1 1//1
+f 4//2 7//2 3//2
+f 8//3 5//3 7//3
+f 5//4 2//4 1//4
+f 3//5 5//5 1//5
+f 4//6 6//6 8//6
+f 10//7 11//7 9//7
+f 12//8 15//8 11//8
+f 16//9 13//9 15//9
+f 13//10 10//10 9//10
+f 11//5 13//5 9//5
+f 12//6 14//6 16//6
+f 89//11 28//11 111//11
+f 18//12 44//12 28//12
+f 43//13 102//13 44//13
+f 58//14 46//14 102//14
+f 37//15 61//15 48//15
+f 60//16 49//16 61//16
+f 34//17 69//17 49//17
+f 88//18 25//18 69//18
+f 21//6 37//6 43//6
+f 21//19 24//19 25//19
+f 23//20 111//20 24//20
+f 40//21 125//21 57//21
+f 109//22 51//22 110//22
+f 89//23 51//23 18//23
+f 72//24 50//24 73//24
+f 18//25 113//25 43//25
+f 74//26 50//26 70//26
+f 72//27 95//27 112//27
+f 51//28 71//28 113//28
+f 113//29 68//29 115//29
+f 112//30 66//30 50//30
+f 43//31 115//31 58//31
+f 50//32 67//32 70//32
+f 114//33 95//33 62//33
+f 115//34 65//34 116//34
+f 114//35 63//35 66//35
+f 58//36 116//36 41//36
+f 116//37 120//37 121//37
+f 62//38 118//38 63//38
+f 41//39 121//39 39//39
+f 63//40 119//40 64//40
+f 65//41 119//41 120//41
+f 62//42 95//42 117//42
+f 39//43 123//43 37//43
+f 37//44 94//44 60//44
+f 122//45 93//45 91//45
+f 91//46 86//46 92//46
+f 90//47 95//47 26//47
+f 123//48 86//48 94//48
+f 90//49 27//49 122//49
+f 94//50 85//50 98//50
+f 27//51 45//51 96//51
+f 60//52 98//52 34//52
+f 27//53 97//53 93//53
+f 93//54 85//54 86//54
+f 26//55 95//55 45//55
+f 97//56 84//56 85//56
+f 85//57 101//57 98//57
+f 45//58 83//58 96//58
+f 34//59 101//59 88//59
+f 97//60 83//60 100//60
+f 101//61 21//61 88//61
+f 83//62 81//62 100//62
+f 100//63 103//63 84//63
+f 99//64 95//64 79//64
+f 84//65 82//65 101//65
+f 99//66 80//66 83//66
+f 103//67 78//67 82//67
+f 80//68 104//68 76//68
+f 82//69 23//69 21//69
+f 81//70 76//70 105//70
+f 103//71 105//71 77//71
+f 79//72 95//72 104//72
+f 105//73 109//73 77//73
+f 104//74 107//74 76//74
+f 78//75 89//75 23//75
+f 105//76 107//76 108//76
+f 22//77 111//77 33//77
+f 25//78 22//78 20//78
+f 59//79 25//79 20//79
+f 49//80 59//80 19//80
+f 61//81 19//81 35//81
+f 48//82 35//82 36//82
+f 57//83 46//83 40//83
+f 44//84 57//84 42//84
+f 28//85 42//85 17//85
+f 33//86 28//86 17//86
+f 125//5 87//5 29//5
+f 33//87 32//87 22//87
+f 57//88 56//88 42//88
+f 20//89 32//89 31//89
+f 20//90 124//90 59//90
+f 59//91 30//91 19//91
+f 19//92 87//92 35//92
+f 17//93 52//93 33//93
+f 35//94 53//94 36//94
+f 42//95 29//95 17//95
+f 47//96 37//96 48//96
+f 46//97 39//97 47//97
+f 99//98 45//98 95//98
+f 40//99 47//99 38//99
+f 38//100 48//100 36//100
+f 54//101 40//101 38//101
+f 36//102 54//102 38//102
+f 68//103 64//103 65//103
+f 64//104 66//104 63//104
+f 71//105 67//105 68//105
+f 75//106 70//106 71//106
+f 109//107 74//107 75//107
+f 72//108 106//108 95//108
+f 107//109 72//109 73//109
+f 108//110 73//110 74//110
+f 110//111 77//111 109//111
+f 104//112 95//112 106//112
+f 112//113 95//113 114//113
+f 120//114 91//114 92//114
+f 117//115 95//115 90//115
+f 120//116 123//116 121//116
+f 117//117 122//117 118//117
+f 118//118 91//118 119//118
+f 2//1 4//1 3//1
+f 4//2 8//2 7//2
+f 8//3 6//3 5//3
+f 5//4 6//4 2//4
+f 3//5 7//5 5//5
+f 4//6 2//6 6//6
+f 10//7 12//7 11//7
+f 12//8 16//8 15//8
+f 16//9 14//9 13//9
+f 13//10 14//10 10//10
+f 11//5 15//5 13//5
+f 12//6 10//6 14//6
+f 89//11 18//11 28//11
+f 18//12 43//12 44//12
+f 43//13 58//13 102//13
+f 58//14 41//14 46//14
+f 37//15 60//15 61//15
+f 60//16 34//16 49//16
+f 34//17 88//17 69//17
+f 88//18 21//18 25//18
+f 43//6 18//6 89//6
+f 89//6 23//6 43//6
+f 21//6 88//6 34//6
+f 34//6 60//6 21//6
+f 37//6 39//6 43//6
+f 41//6 58//6 43//6
+f 43//6 23//6 21//6
+f 21//6 60//6 37//6
+f 39//6 41//6 43//6
+f 21//19 23//19 24//19
+f 23//20 89//20 111//20
+f 40//21 55//21 125//21
+f 109//22 75//22 51//22
+f 89//23 110//23 51//23
+f 72//24 112//24 50//24
+f 18//25 51//25 113//25
+f 74//26 73//26 50//26
+f 51//28 75//28 71//28
+f 113//29 71//29 68//29
+f 112//30 114//30 66//30
+f 43//31 113//31 115//31
+f 50//32 66//32 67//32
+f 115//34 68//34 65//34
+f 114//35 62//35 63//35
+f 58//36 115//36 116//36
+f 116//37 65//37 120//37
+f 62//38 117//38 118//38
+f 41//39 116//39 121//39
+f 63//40 118//40 119//40
+f 65//41 64//41 119//41
+f 39//43 121//43 123//43
+f 37//44 123//44 94//44
+f 122//45 27//45 93//45
+f 91//46 93//46 86//46
+f 123//48 92//48 86//48
+f 90//49 26//49 27//49
+f 94//50 86//50 85//50
+f 27//51 26//51 45//51
+f 60//52 94//52 98//52
+f 27//53 96//53 97//53
+f 93//54 97//54 85//54
+f 97//56 100//56 84//56
+f 85//57 84//57 101//57
+f 45//58 99//58 83//58
+f 34//59 98//59 101//59
+f 97//60 96//60 83//60
+f 101//61 82//61 21//61
+f 83//62 80//62 81//62
+f 100//63 81//63 103//63
+f 84//65 103//65 82//65
+f 99//66 79//66 80//66
+f 103//67 77//67 78//67
+f 80//68 79//68 104//68
+f 82//69 78//69 23//69
+f 81//70 80//70 76//70
+f 103//71 81//71 105//71
+f 105//73 108//73 109//73
+f 104//74 106//74 107//74
+f 78//75 110//75 89//75
+f 105//76 76//76 107//76
+f 22//77 24//77 111//77
+f 25//78 24//78 22//78
+f 59//79 69//79 25//79
+f 49//80 69//80 59//80
+f 61//81 49//81 19//81
+f 48//82 61//82 35//82
+f 57//83 102//83 46//83
+f 44//84 102//84 57//84
+f 28//85 44//85 42//85
+f 33//86 111//86 28//86
+f 32//5 52//5 29//5
+f 29//5 56//5 125//5
+f 125//5 55//5 87//5
+f 54//5 53//5 87//5
+f 87//5 30//5 124//5
+f 124//5 31//5 32//5
+f 32//5 29//5 87//5
+f 55//5 54//5 87//5
+f 87//5 124//5 32//5
+f 33//87 52//87 32//87
+f 57//88 125//88 56//88
+f 20//89 22//89 32//89
+f 20//90 31//90 124//90
+f 59//91 124//91 30//91
+f 19//92 30//92 87//92
+f 17//93 29//93 52//93
+f 35//94 87//94 53//94
+f 42//95 56//95 29//95
+f 47//96 39//96 37//96
+f 46//97 41//97 39//97
+f 40//99 46//99 47//99
+f 38//100 47//100 48//100
+f 54//101 55//101 40//101
+f 36//102 53//102 54//102
+f 68//103 67//103 64//103
+f 64//104 67//104 66//104
+f 71//105 70//105 67//105
+f 75//106 74//106 70//106
+f 109//107 108//107 74//107
+f 107//109 106//109 72//109
+f 108//110 107//110 73//110
+f 110//111 78//111 77//111
+f 120//114 119//114 91//114
+f 120//116 92//116 123//116
+f 117//117 90//117 122//117
+f 118//118 122//118 91//118
diff --git a/assets/submarine/submarine.blend b/assets/submarine/submarine.blend
index 01e03e8..55c7c18 100644
Binary files a/assets/submarine/submarine.blend and b/assets/submarine/submarine.blend differ
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..8c7a1cf
Binary files /dev/null and b/favicon.ico differ
diff --git a/index.html b/index.html
index d05e5a7..927ce5b 100644
--- a/index.html
+++ b/index.html
@@ -16,22 +16,21 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -42,17 +41,13 @@
-
+
-
-
-
+
-
-
+
+
@@ -62,6 +57,7 @@
+
@@ -81,19 +77,22 @@
+
-
-
diff --git a/js/main.js b/js/main.js
index e60232f..2bbf186 100644
--- a/js/main.js
+++ b/js/main.js
@@ -1,2 +1,2 @@
-!function e(t,n,a){function r(o,s){if(!n[o]){if(!t[o]){var c="function"==typeof require&&require;if(!s&&c)return c(o,!0);if(i)return i(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[o]={exports:{}};t[o][0].call(d.exports,function(e){var n=t[o][1][e];return r(n||e)},d,d.exports,e,t,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o reference\n\n\t\t\t// re-position camera: camera must be already present when html loads\n\t\t\tvar camera = document.getElementById('camera');\n\t\t\t//camera.setAttribute('position', m_ocean.x + \" \" + m_ocean.y + \" \" + m_ocean.z);\n\t\t\tcamera.setAttribute('position', m_ocean.x + \" \" + m_ocean.y + \" \" + (m_ocean.z + 1.5 * m_ocean.x));\n\t\t\tcamera.setAttribute('camera', 'userHeight: ' + m_Constants.CameraYOffset);\n\t\t\tcamera.setAttribute('rotation', -Math.atan(m_Constants.CameraYOffset / (m_ocean.z + m_ocean.x)));\n\n\t\t\t// Generate Map\n\t\t\t// TODO: Possible edge cases with the map edge not being big enough\n\t\t\tvar map = document.createElement('a-ocean');\n\n\t\t\tmap.setAttribute('position', m_ocean.x + \" \" + m_ocean.y + \" \" + m_ocean.z);\n\t\t\tmap.setAttribute('width', String(m_ocean.width));\n\t\t\tmap.setAttribute('depth', String(m_ocean.depth));\n\t\t\tmap.setAttribute('density', String(m_ocean.density));\n\t\t\tdoc.appendChild(map);\n\n\t\t\t// Spawn Ships\n\t\t\tshipData.forEach(function (entry) {\n\t\t\t\tvar ship = document.createElement('a-entity');\n\n\t\t\t\tship.dataset.id = entry.id;\n\t\t\t\tship.dataset.name = entry.name;\n\t\t\t\tship.dataset.owner = entry.owner;\n\t\t\t\tship.dataset.x = entry.x;\n\t\t\t\tship.dataset.y = entry.y;\n\t\t\t\tship.dataset.z = entry.z;\n\t\t\t\tship.dataset.health = entry.hull;\n\t\t\t\tship.dataset.hull = entry.hull;\n\t\t\t\tship.dataset.firepower = entry.firepower;\n\t\t\t\tship.dataset.speed = entry.speed;\n\t\t\t\tship.dataset.range = entry.range;\n\n\t\t\t\tvar heart = \"\";\n\t\t\t\tfor (var i = 0; i < parseInt(entry.hull); i++) {\n\t\t\t\t\theart += \" •\";\n\t\t\t\t}\n\n\t\t\t\tship.setAttribute('position', entry.x + \" \" + entry.y + \" \" + entry.z);\n\t\t\t\tship.setAttribute('template', 'src: #boat-template');\n\t\t\t\t// ${variable} <- variable name be lower case\n\t\t\t\tship.setAttribute('data-ship_color', 'color: ' + entry.color + '; metalness: 0.4;');\n\t\t\t\tship.setAttribute('data-ship_name', 'value: ' + entry.name + '; font: #play;');\n\t\t\t\tship.setAttribute('data-ship_health', 'value: ' + heart + ';');\n\n\t\t\t\tvar shipInstance = doc.appendChild(ship);\n\t\t\t\tm_entity[entry.id] = shipInstance;\n\t\t\t});\n\t\t},\n\n\t\tsinkShip: function sinkShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar doc = document.getElementById('scene');\n\t\t\t\tvar track = document.getElementById('track');\n\t\t\t\tvar shipDom = m_entity[data[0].id];\n\n\t\t\t\tvar debug = document.createElement('a-draw-curve');\n\t\t\t\tdebug.setAttribute('curveref', '#track');\n\t\t\t\tdebug.setAttribute('material', 'shader: line; color: black;');\n\t\t\t\tdoc.appendChild(debug);\n\n\t\t\t\tvar point1 = document.createElement('a-curve-point');\n\t\t\t\tvar point2 = document.createElement('a-curve-point');\n\t\t\t\tpoint1.setAttribute('position', data[0].x + \" \" + data[0].y + \" \" + data[0].z);\n\t\t\t\tpoint2.setAttribute('position', data[0].x + \" \" + (data[0].y - m_Constants.SinkDistance) + \" \" + data[0].z);\n\t\t\t\ttrack.appendChild(point1);\n\t\t\t\ttrack.appendChild(point2);\n\n\t\t\t\tshipDom.setAttribute('alongpath', 'curve: #track; rotate: true; constraint: 0 1 0; delay: ' + m_Constants.WaitTimeBetweenAction + '; dur: 3000;');\n\n\t\t\t\tvar done = function done(event) {\n\t\t\t\t\tshipDom.removeAttribute('alongpath');\n\t\t\t\t\tif (debug.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(debug);\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (track.hasChildNodes()) {\n\t\t\t\t\t\ttrack.removeChild(track.childNodes[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\t//shipDom.removeEventListener('movingended', done);\n\n\t\t\t\t\tif (shipDom.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(shipDom);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(event);\n\t\t\t\t};\n\n\t\t\t\tshipDom.addEventListener('movingended', done);\n\t\t\t\t// resolve();\n\t\t\t});\n\t\t},\n\n\t\t// Data passed in are one ships action of firing at one and only one coordinate\n\t\tfireShip: function fireShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar doc = document.getElementById('scene');\n\t\t\t\tvar track = document.getElementById('track');\n\n\t\t\t\tvar bullet = document.createElement('a-sphere');\n\t\t\t\tvar source = document.createElement('a-curve-point');\n\t\t\t\tvar arc = document.createElement('a-curve-point');\n\t\t\t\tvar target = document.createElement('a-curve-point');\n\t\t\t\tbullet.setAttribute('color', 'gray');\n\t\t\t\tbullet.setAttribute('radius', '0.1');\n\t\t\t\tbullet.setAttribute('position', data[0].x + \" \" + data[0].y + \" \" + data[0].z);\n\t\t\t\tsource.setAttribute('position', data[0].x + \" \" + data[0].y + \" \" + data[0].z);\n\t\t\t\ttarget.setAttribute('position', data[0].atX + \" \" + data[0].atY + \" \" + data[0].atZ);\n\t\t\t\tarc.setAttribute('position', (data[0].atX + data[0].x) / 2 + \" \" + ((data[0].atY + data[0].y) / 2 + m_Constants.BulletArc) + \" \" + (data[0].atZ + data[0].z) / 2);\n\t\t\t\ttrack.appendChild(source);\n\t\t\t\ttrack.appendChild(arc);\n\t\t\t\ttrack.appendChild(target);\n\n\t\t\t\tvar debug = document.createElement('a-draw-curve');\n\t\t\t\tdebug.setAttribute('curveref', '#track');\n\t\t\t\tdebug.setAttribute('material', 'shader: line; color: red;');\n\t\t\t\tdoc.appendChild(debug);\n\n\t\t\t\tvar tmp = doc.appendChild(bullet);\n\t\t\t\ttmp.setAttribute('alongpath', 'curve: #track; rotate: true; constant: 0 0 1; delay: 200; dur: 500');\n\n\t\t\t\tvar done = function done(event) {\n\t\t\t\t\ttmp.removeAttribute('alongpath');\n\t\t\t\t\tif (debug.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(debug);\n\t\t\t\t\t}\n\t\t\t\t\twhile (track.hasChildNodes()) {\n\t\t\t\t\t\ttrack.removeChild(track.childNodes[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\t//tmp.removeEventListener('movingended', done);\n\t\t\t\t\tif (tmp.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(tmp);\n\t\t\t\t\t}\n\t\t\t\t\tresolve(event);\n\t\t\t\t};\n\n\t\t\t\ttmp.addEventListener('movingended', done);\n\t\t\t\t//resolve();\n\t\t\t});\n\t\t},\n\n\t\taimShip: function aimShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tvar ship = m_entity[data[0].id];\n\t\t\t\t\tconsole.log(\"aim: \", ship);\n\t\t\t\t\tresolve();\n\t\t\t\t}, 3000);\n\t\t\t});\n\t\t},\n\n\t\thitShip: function hitShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar ship = m_entity[data[0].id];\n\t\t\t\tvar heart = \"\";\n\n\t\t\t\tfor (var i = 0; i < data[0].health; i++) {\n\t\t\t\t\theart += \" •\";\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < ship.childNodes.length; i++) {\n\t\t\t\t\tif (ship.childNodes[i].className == \"ship-health\") {\n\t\t\t\t\t\tship.childNodes[i].setAttribute('text-geometry', 'value: ' + heart + ';');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t\t},\n\n\t\t// Data passed in must be for movement of one ship\n\t\tmoveShip: function moveShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\t\tvar shipDom = m_entity[data[0].id]; // html element\n\t\t\t\t// if statement is not working\n\t\t\t\t// if (data.length === 1 && data[0].x === shipDom.dataset.x && data[0].z === shipDom.dataset.z) {\n\t\t\t\t// // if shipDom tries to move against edge or occupied place\n\t\t\t\t// alert(\"Skipped\");\n\t\t\t\t// resolve(\"Skipped\");\n\t\t\t\t// }\n\n\t\t\t\tvar doc = document.getElementById('scene'); // reference\n\t\t\t\tvar track = document.getElementById('track');\n\t\t\t\t//var startCoord = {\"x\": data[0].x};\n\n\t\t\t\tvar debug = document.createElement('a-draw-curve');\n\t\t\t\tdebug.setAttribute('curveref', '#track');\n\t\t\t\tdebug.setAttribute('material', 'shader: line; color: blue;');\n\t\t\t\tdoc.appendChild(debug);\n\n\t\t\t\t// add current location as a starting point of the curve\n\t\t\t\tvar point = document.createElement('a-curve-point');\n\t\t\t\tpoint.setAttribute('position', String(shipDom.dataset.x + \" \" + shipDom.dataset.y + \" \" + shipDom.dataset.z));\n\t\t\t\ttrack.appendChild(point);\n\t\t\t\t// add chain-able goal locations to the curve\n\t\t\t\tvar previous = { 'x': shipDom.dataset.x, 'z': shipDom.dataset.z };\n\t\t\t\tvar xDistance = 0;\n\t\t\t\tvar zDistance = 0;\n\t\t\t\tconsole.log(\"Moving: \", data);\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\tpoint = document.createElement('a-curve-point');\n\t\t\t\t\tpoint.setAttribute('position', data[i].x + \" \" + data[i].y + \" \" + data[i].z);\n\t\t\t\t\txDistance += Math.abs(data[i].x - previous.x);\n\t\t\t\t\tzDistance += Math.abs(data[i].z - previous.z);\n\t\t\t\t\tif (i + 1 < data.length && data[i].x === data[i + 1].x && data[i].z === data[i + 1].z) {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\ttrack.appendChild(point);\n\t\t\t\t\tprevious = { 'x': data[i].x, 'z': data[i].z };\n\t\t\t\t}\n\t\t\t\tvar dur = (xDistance + zDistance) * m_Constants.WaitTimePerTileMoved;\n\t\t\t\tshipDom.setAttribute('alongpath', 'curve: #track; rotate: true; constraint: 0 0 1; delay: ' + m_Constants.WaitTimeBetweenAction + '; dur: ' + dur + ';');\n\n\t\t\t\tvar done = function done(event) {\n\t\t\t\t\t// var list = document.getElementByTagName('a-draw-curve');\n\t\t\t\t\t// for (var i = 0; i < list.length; i++) {\n\t\t\t\t\t// list[0].parentNode.removeChild(list[0]);\n\t\t\t\t\t// }\n\t\t\t\t\tif (debug.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(debug);\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (track.hasChildNodes()) {\n\t\t\t\t\t\ttrack.removeChild(track.childNodes[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\tshipDom.removeAttribute('alongpath');\n\t\t\t\t\tshipDom.dataset.x = data[data.length - 1].x;\n\t\t\t\t\tshipDom.dataset.z = data[data.length - 1].z;\n\t\t\t\t\tshipDom.dataset.y = data[data.length - 1].y;\n\n\t\t\t\t\t//shipDom.removeEventListener('movingended', done);\n\t\t\t\t\tresolve(event);\n\t\t\t\t};\n\n\t\t\t\tshipDom.addEventListener('movingended', done);\n\t\t\t});\n\t\t},\n\n\t\tsimulate: function simulate() {\n\t\t\tconsole.log(\"chain: \", m_chain);\n\t\t\tvar notStop = true;\n\t\t\tif (m_chain.length == 0) {\n\t\t\t\tnotStop = false;\n\t\t\t}\n\t\t\tvar current = m_chain.shift(); // don't shift when length is zero\n\t\t\tif (current && notStop) {\n\t\t\t\tconsole.log(\"current: \", current);\n\t\t\t\tswitch (current.type) {\n\t\t\t\t\tcase \"MOVE\":\n\t\t\t\t\t\tapp.moveShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\t//alert(\"Moved \" + m_chain.length + \" actions left\");\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"FIRE\":\n\t\t\t\t\t\tapp.fireShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.error(\"error: \", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"HIT\":\n\t\t\t\t\t\tapp.hitShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"SINK\":\n\t\t\t\t\t\tapp.sinkShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\t//alert(\"Sunk \"+ m_chain.length + \" actions left\");\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn(\"Unknown Action Type \" + current.type + \" in simulate function, skipping.\");\n\t\t\t\t\t\tapp.simulate();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t//alert(\"Simulation Done\");\n\t\t\t\t\tvex.dialog.alert(\"Simulation Completed.\");\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t},\n\n\t\t/** translates the coordinate in the java game to this scene's coordinate\n \tJava Game: Each ship spans one (x, y) unit\n \tJava Game: Coordinate system has (0, 0) at top left corner (without negatives)\n \tAFrame Scene: Each ship model is a 4x4 box\n \tAFrame Scene: Coordinate system is (0, 0) at the center (with negatives)\n */\n\t\tgetStrCoord: function getStrCoord(coord, offsetY) {\n\t\t\treturn (m_ocean.x - coord.x) * 4 + \" \" + offsetY + \" \" + (m_ocean.y - coord.y) * 4;\n\t\t},\n\n\t\tgetShips: function getShips() {\n\t\t\treturn m_ships;\n\t\t},\n\n\t\tgetOcean: function getOcean() {\n\t\t\treturn m_ocean;\n\t\t}\n\n\t};\n\n\treturn app;\n}\n\nvar app = battleship();\nvar params = getQueryParams(document.location.search);\n\nvar getDataFromCode = function getDataFromCode(code) {\n\tdb.ref('davy-jones-locker/' + code).once('value', function (snapshot) {\n\t\tvar gameData = snapshot.val();\n\t\tif (gameData) {\n\t\t\tinput = gameData;\n\t\t\tapp.init();\n\t\t} else {\n\t\t\tgetCode(\"No data for code \" + code + \". Enter another code:\");\n\t\t\t//app.init();\n\t\t}\n\t}).catch(function (err) {\n\t\tgetCode(\"There was an error. Enter another code:\");\n\t\t//app.init();\n\t});\n};\n\nvar getCode = function getCode(message) {\n\tvex.dialog.prompt({\n\t\tmessage: message,\n\t\tcallback: function callback(value) {\n\t\t\tif (value) {\n\t\t\t\tvar code = value;\n\t\t\t\tgetDataFromCode(code);\n\t\t\t} else {\n\t\t\t\tgetCode(\"No code entered. Enter your code:\");\n\t\t\t}\n\t\t}\n\t});\n};\n\nif (params.code) {\n\tgetDataFromCode(params.code);\n} else {\n\tgetCode(\"Enter Your Code\");\n}\n\n// var BATTLE_SERVER_URL = 'https://battleship-vingkan.c9users.io/1v1?p1=esi17.cs.DestroyerShip&p2=esi17.hli109.Floater';// + Math.ceil(Math.random() * 100);\n\n// $.get(BATTLE_SERVER_URL).then(data => {\n// \tinput = data;\n// \tapp.init();\n// }).done(() => {\n// \tconsole.log(\"Data successfully retrieved from server\");\n// }).fail(() => {\n// \tconsole.log(\"Unable to retrieve data, starting with local data\");\n// \tapp.init();\n// });\n\n},{}]},{},[1])\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvbWFpbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0FDQUE7QUFDQSxJQUFJLFNBQVM7QUFDWixTQUFRLHlDQURJO0FBRVosYUFBWSwwQkFGQTtBQUdaLGNBQWEsaUNBSEQ7QUFJWixZQUFXLFVBSkM7QUFLWixnQkFBZSxzQkFMSDtBQU1aLG9CQUFtQjtBQU5QLENBQWI7QUFRQSxJQUFJLG1CQUFtQixTQUFTLGFBQVQsQ0FBdUIsTUFBdkIsRUFBK0Isb0JBQS9CLENBQXZCOztBQUVBLElBQUksS0FBSyxpQkFBaUIsUUFBakIsRUFBVDs7QUFFQSxTQUFTLGNBQVQsQ0FBd0IsRUFBeEIsRUFBNEI7QUFDM0IsTUFBSyxHQUFHLEtBQUgsQ0FBUyxHQUFULEVBQWMsSUFBZCxDQUFtQixHQUFuQixDQUFMO0FBQ0EsS0FBSSxTQUFTLEVBQWI7QUFBQSxLQUNDLE1BREQ7QUFBQSxLQUVDLEtBQUssdUJBRk47QUFHQSxRQUFPLFNBQVMsR0FBRyxJQUFILENBQVEsRUFBUixDQUFoQixFQUE2QjtBQUM1QixTQUFPLG1CQUFtQixPQUFPLENBQVAsQ0FBbkIsQ0FBUCxJQUF3QyxtQkFBbUIsT0FBTyxDQUFQLENBQW5CLENBQXhDO0FBQ0E7QUFDRCxRQUFPLE1BQVA7QUFDQTs7QUFFRCxTQUFTLFVBQVQsR0FBc0I7O0FBRXJCO0FBQ0EsS0FBSSxjQUFjO0FBQ2pCLGlCQUFlLEVBREU7QUFFakIsZ0JBQWMsQ0FGRztBQUdqQixnQkFBYyxFQUhHO0FBSWpCLGVBQWEsQ0FKSTtBQUtqQixnQkFBYyxDQUxHO0FBTWpCLGFBQVcsQ0FOTTtBQU9qQix3QkFBc0IsR0FQTDtBQVFqQix5QkFBdUIsR0FSTixDQVFVO0FBUlYsRUFBbEI7O0FBV0EsS0FBSSxVQUFVLEVBQWQ7O0FBRUEsS0FBSSxVQUFVLEVBQWQsQ0FoQnFCLENBZ0JIO0FBQ2xCLEtBQUksVUFBVSxFQUFkLENBakJxQixDQWlC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UDtBQUNBOztBQUVELElBQUksTUFBTSxZQUFWO0FBQ0EsSUFBSSxTQUFTLGVBQWUsU0FBUyxRQUFULENBQWtCLE1BQWpDLENBQWI7O0FBRUEsSUFBSSxrQkFBa0IsU0FBbEIsZUFBa0IsQ0FBQyxJQUFELEVBQVU7QUFDL0IsSUFBRyxHQUFILENBQU8sdUJBQXVCLElBQTlCLEVBQW9DLElBQXBDLENBQXlDLE9BQXpDLEVBQWtELFVBQUMsUUFBRCxFQUFjO0FBQy9ELE1BQUksV0FBVyxTQUFTLEdBQVQsRUFBZjtBQUNBLE1BQUksUUFBSixFQUFjO0FBQ2IsV0FBUSxRQUFSO0FBQ0EsT0FBSSxJQUFKO0FBQ0EsR0FIRCxNQUdPO0FBQ04saUNBQTRCLElBQTVCO0FBQ0E7QUFDQTtBQUNELEVBVEQsRUFTRyxLQVRILENBU1MsVUFBQyxHQUFELEVBQVM7QUFDakI7QUFDQTtBQUNBLEVBWkQ7QUFhQSxDQWREOztBQWdCQSxJQUFJLFVBQVUsU0FBVixPQUFVLENBQUMsT0FBRCxFQUFhO0FBQzFCLEtBQUksTUFBSixDQUFXLE1BQVgsQ0FBa0I7QUFDakIsV0FBUyxPQURRO0FBRWpCLFlBQVUsa0JBQUMsS0FBRCxFQUFXO0FBQ3BCLE9BQUksS0FBSixFQUFXO0FBQ1YsUUFBSSxPQUFPLEtBQVg7QUFDQSxvQkFBZ0IsSUFBaEI7QUFDQSxJQUhELE1BR087QUFDTixZQUFRLG1DQUFSO0FBQ0E7QUFDRDtBQVRnQixFQUFsQjtBQVdBLENBWkQ7O0FBY0EsSUFBSSxPQUFPLElBQVgsRUFBaUI7QUFDaEIsaUJBQWdCLE9BQU8sSUFBdkI7QUFDQSxDQUZELE1BRU87QUFDTixTQUFRLGlCQUFSO0FBQ0E7O0FBR0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIEluaXRpYWxpemUgRmlyZWJhc2VcbnZhciBjb25maWcgPSB7XG5cdGFwaUtleTogXCJBSXphU3lBOUVZVVhWTDVXQWg2QWFtMXFYbFd5dmkzYjdITGNaMVVcIixcblx0YXV0aERvbWFpbjogXCJlc2lnYW1tYS5maXJlYmFzZWFwcC5jb21cIixcblx0ZGF0YWJhc2VVUkw6IFwiaHR0cHM6Ly9lc2lnYW1tYS5maXJlYmFzZWlvLmNvbVwiLFxuXHRwcm9qZWN0SWQ6IFwiZXNpZ2FtbWFcIixcblx0c3RvcmFnZUJ1Y2tldDogXCJlc2lnYW1tYS5hcHBzcG90LmNvbVwiLFxuXHRtZXNzYWdpbmdTZW5kZXJJZDogXCI3MzQxNjM2MzYwMzlcIlxufTtcbnZhciBGaXJlYmFzZUluc3RhbmNlID0gZmlyZWJhc2UuaW5pdGlhbGl6ZUFwcChjb25maWcsIFwiRGF2eSBKb25lcycgTG9ja2VyXCIpO1xuXG52YXIgZGIgPSBGaXJlYmFzZUluc3RhbmNlLmRhdGFiYXNlKCk7XG5cbmZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKHFzKSB7XG5cdHFzID0gcXMuc3BsaXQoJysnKS5qb2luKCcgJyk7XG5cdHZhciBwYXJhbXMgPSB7fSxcblx0XHR0b2tlbnMsXG5cdFx0cmUgPSAvWz8mXT8oW149XSspPShbXiZdKikvZztcblx0d2hpbGUgKHRva2VucyA9IHJlLmV4ZWMocXMpKSB7XG5cdFx0cGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudCh0b2tlbnNbMV0pXSA9IGRlY29kZVVSSUNvbXBvbmVudCh0b2tlbnNbMl0pO1xuXHR9XG5cdHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGJhdHRsZXNoaXAoKSB7XG5cdFxuXHQvLyBwcml2YXRlXG5cdHZhciBtX0NvbnN0YW50cyA9IHtcblx0XHRDYW1lcmFZT2Zmc2V0OiAxMCxcblx0XHRPY2VhbllPZmZzZXQ6IDAsXG5cdFx0T2NlYW5QYWRkaW5nOiAxMCxcblx0XHRTaGlwWU9mZnNldDogMCxcblx0XHRTaW5rRGlzdGFuY2U6IDUsXG5cdFx0QnVsbGV0QXJjOiAyLFxuXHRcdFdhaXRUaW1lUGVyVGlsZU1vdmVkOiAzMDAsXG5cdFx0V2FpdFRpbWVCZXR3ZWVuQWN0aW9uOiAxMDAgLy8gaW4gbWlsaXNlY29uZHNcblx0fTtcblxuXHR2YXIgbV9pbnB1dCA9IHt9O1xuXHRcblx0dmFyIG1fc2hpcHMgPSBbXTsgLy8gc3RvcmVzIGZvcm1hdHRlZCBqc29uIG9mIHNoaXAgaW5pdGlhbGl6YXRpb25cblx0dmFyIG1fY2hhaW4gPSBbXTsgLy8gc3RvcmVzIGNoYWluYWJsZSBhY3Rpb25zIGluIGEgdHVyblxuXHR2YXIgbV9lbnRpdHkgPSB7fTsgLy8gb2JqZWN0IHdpdGggaWQgdG8gaHRtbCBkb20gZWxlbWVudCBvZiBzaGlwc1xuXG5cdHZhciBtX3Rlc3QgPSAwO1xuXG5cdHZhciBtX29jZWFuOyBcblxuXHQvLyBwdWJsaWNcblx0dmFyIGFwcCA9IHtcblxuXHRcdGluaXQ6ICgpID0+IHtcblx0XHRcdC8vIGRlZmF1bHQgYWNjZXNzIG9mIGRhdGEgd2hlbiB0aGVyZSBhcmUgbm8gY29ubmVjdGl2aXR5XG5cdFx0XHRtX2lucHV0ID0ge1wic2hpcHNcIjogaW5wdXQuaW5pdC5zaGlwcywgXCJ0dXJuc1wiOiBpbnB1dC50dXJucywgXCJvY2VhblwiOiBpbnB1dC5pbml0Lm1hcH07XG5cdFx0XHRhcHAucHJlcHJvY2VzcyhtX2lucHV0KTtcblxuXHRcdFx0dmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuZScpO1xuXHRcdFx0dmFyIHRyYWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZScpO1xuXHRcdFx0dHJhY2suc2V0QXR0cmlidXRlKCdpZCcsICd0cmFjaycpO1xuXHRcdFx0dHJhY2suc2V0QXR0cmlidXRlKCd0eXBlJywgJ0xpbmUnKTtcblx0XHRcdGRvYy5hcHBlbmRDaGlsZCh0cmFjayk7XG5cblx0XHRcdGFwcC5yZW5kZXIobV9zaGlwcyk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRhcHAuc2ltdWxhdGUoKTtcblx0XHRcdH0sIDEwMDAwKTtcblx0XHRcdC8vIGNhbGwgZnVuY3Rpb24gdG8gd2FpdCBhIGJpdCBiZWZvcmUgc3RhcnRpbmcgc2ltdWxhdGlvblxuXHRcdFx0Ly9hcHAuc2ltdWxhdGUoKTtcblx0XHR9LFxuXG5cdFx0cHJlcHJvY2VzczogKGRhdGEpID0+IHtcblx0XHRcdHZhciB0cmFuc2xhdGUgPSAoZCkgPT4ge1xuXHRcdFx0XHR2YXIgcmVzID0gZDtcblx0XHRcdFx0aWYgKHJlcy5oYXNPd25Qcm9wZXJ0eShcImF0WFwiKSAmJiByZXMuaGFzT3duUHJvcGVydHkoXCJhdFlcIikpIHtcblx0XHRcdFx0XHRyZXNbJ2F0WCddID0gNCpkLmF0WDtcblx0XHRcdFx0XHRyZXNbJ2F0WiddID0gNCpkLmF0WTsgLy8gbWFrZSBzdXJlIHRvIG1vdmUgdGhlIHkgcHJvcGVydHkgYmVmb3JlIG92ZXJyaWRpbmcgaXRcblx0XHRcdFx0XHRyZXNbJ2F0WSddID0gbV9Db25zdGFudHMuU2hpcFlPZmZzZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzLnggPSA0KmQueDtcblx0XHRcdFx0cmVzLnogPSA0KmQueTsgLy8gbWFrZSBzdXJlIHRvIG1vdmUgdGhlIHkgcHJvcGVydHkgYmVmb3JlIG92ZXJyaWRpbmcgaXRcblx0XHRcdFx0cmVzLnkgPSBtX0NvbnN0YW50cy5TaGlwWU9mZnNldDtcblx0XHRcdFx0cmV0dXJuIHJlcztcblx0XHRcdH07XG5cdFx0XHR2YXIgYWN0aW9ucyA9IFtdO1xuXHRcdFx0dmFyIGluZGV4ID0gMDtcblxuXHRcdFx0Ly8gcHJlcHJvY2VzcyBpbml0aWFsIG1hcCBpbmZvcm1hdGlvblxuXHRcdFx0Ly8gbV9vY2VhbiA9IHsgXCJ4XCI6ICgoNCpNYXRoLmZsb29yKGRhdGEub2NlYW4ueC8yKSktMikgKyAobV9Db25zdGFudHMuT2NlYW5QYWRkaW5nLzIpLFxuXHRcdFx0Ly8gICAgICAgICAgICAgXCJ5XCI6IG1fQ29uc3RhbnRzLk9jZWFuWU9mZnNldCwgXG5cdFx0XHQvLyAgICAgICAgICAgICBcInpcIjogKCg0Kk1hdGguZmxvb3IoZGF0YS5vY2Vhbi55LzIpKSkgKyAobV9Db25zdGFudHMuT2NlYW5QYWRkaW5nLzIpLCBcblx0XHRcdC8vICAgICAgICAgICAgIFwid2lkdGhcIjogKDQqZGF0YS5vY2Vhbi54KSttX0NvbnN0YW50cy5PY2VhblBhZGRpbmcsIFxuXHRcdFx0Ly8gICAgICAgICAgICAgXCJkZXB0aFwiOiAoNCpkYXRhLm9jZWFuLnkpK21fQ29uc3RhbnRzLk9jZWFuUGFkZGluZywgXG5cdFx0XHQvLyAgICAgICAgICAgICBcImRlbnNpdHlcIjogTWF0aC5taW4oMypkYXRhLm9jZWFuLngsIDMqZGF0YS5vY2Vhbi55KSttX0NvbnN0YW50cy5PY2VhblBhZGRpbmdcblx0XHRcdC8vICAgICAgICAgfTtcblx0XHRcdG1fb2NlYW4gPSB7IFwieFwiOiAoKDQqTWF0aC5mbG9vcihkYXRhLm9jZWFuLngvMikpLTIpLFxuXHRcdFx0XHRcdFx0XCJ5XCI6IG1fQ29uc3RhbnRzLk9jZWFuWU9mZnNldCwgXG5cdFx0XHRcdFx0XHRcInpcIjogKCg0Kk1hdGguZmxvb3IoZGF0YS5vY2Vhbi55LzIpKSksXG5cdFx0XHRcdFx0XHRcIndpZHRoXCI6IDIwMCwgXG5cdFx0XHRcdFx0XHRcImRlcHRoXCI6IDIwMCxcblx0XHRcdFx0XHRcdFwiZGVuc2l0eVwiOiAxMjAsXG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XG5cdFx0XHQvLyBwcmVwcm9jZXNzIGluaXRpYWwgc2hpcCBpbmZvcm1hdGlvblxuXHRcdFx0ZGF0YS5zaGlwcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuXHRcdFx0XHRtX3NoaXBzLnB1c2godHJhbnNsYXRlKGVudHJ5KSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gcHJlcHJvY2VzcyBhY3Rpb25zIGFuZCB0dXJucyBpbmZvcm1hdGlvblxuXHRcdFx0d2hpbGUoaW5kZXggPCBkYXRhLnR1cm5zLmxlbmd0aCkge1xuXHRcdFx0XHR2YXIgY2hhaW4gPSB0cnVlO1xuXHRcdFx0XHR3aGlsZShjaGFpbikge1xuXHRcdFx0XHRcdGlmIChpbmRleCA9PT0gZGF0YS50dXJucy5sZW5ndGgpXG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0YWN0aW9ucy5wdXNoKHRyYW5zbGF0ZShkYXRhLnR1cm5zW2luZGV4XSkpO1xuXHRcdFx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gU2hpcCBpZCBhbmQgYWN0aW9uIHR5cGUgaGFzIHRvIGJlIHRoZSBzYW1lIHRvIGJlIGNvbnNpZGVyZWQgYSBjaGFpbi1hYmxlIGFjdGlvblxuXHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbnNbMF0uaWQgPT09IGRhdGEudHVybnNbaW5kZXhdLmlkICYmIGFjdGlvbnNbMF0udHlwZSA9PT0gZGF0YS50dXJuc1tpbmRleF0udHlwZSkge1xuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbnNbMF0udHlwZSA9PT0gXCJNT1ZFXCIpIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9ucy5wdXNoKHRyYW5zbGF0ZShkYXRhLnR1cm5zW2luZGV4XSkpO1xuXHRcdFx0XHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gRmlyaW5nIG11c3QgYmUgYXQgdGhlIHNhbWUgY29vcmRpbmF0ZXMgdG8gYmUgY29uc2lkZXJlZCBhIGNoYWluLWFibGUgYWN0aW9uXG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb25zWzBdLnR5cGUgPT09IFwiRklSRVwiICYmIGFjdGlvbnNbMF0uYXRYID09PSA0KihkYXRhLnR1cm5zW2luZGV4XS5hdFgpICYmIGFjdGlvbnNbMF0uYXRZID09PSA0KihkYXRhLnR1cm5zW2luZGV4XS5hdFkpKSB7XG5cdFx0XHRcdFx0XHRcdGFjdGlvbnMucHVzaCh0cmFuc2xhdGUoZGF0YS50dXJuc1tpbmRleF0pKTtcblx0XHRcdFx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2UgaWYoYWN0aW9uc1swXS50eXBlID09PSBcIlNJTktcIikge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb25zLnB1c2godHJhbnNsYXRlKGRhdGEudHVybnNbaW5kZXhdKSk7XG5cdFx0XHRcdFx0XHRcdGluZGV4Kys7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2hhaW4gPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRjaGFpbiA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBhZGQgYWN0aW9uIGNoYWluIHRvIHZhcmlhYmxlXG5cdFx0XHRcdG1fY2hhaW4ucHVzaCh7XCJ0eXBlXCI6IGFjdGlvbnNbMF0udHlwZSwgXCJhY3Rpb25zXCI6IGFjdGlvbnN9KTtcblx0XHRcdFx0Ly8gcmVzZXQgY2hhaW4gYWN0aW9uc1xuXHRcdFx0XHRhY3Rpb25zID0gW107XG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhtX2NoYWluKTtcblx0XHR9LFxuXG5cblxuXHRcdC8vIERpc3BsYXlzIHRoZSBvY2VhbiwgYW5kIHNoaXBzXG5cdFx0Ly8gVE9ETzogY2hlY2sgdGhlIGVkZ2UgY2FzZXMgd2l0aCB0aGUgbWFwIGVkZ2VzL3NpemVzXG5cdFx0cmVuZGVyOiAoc2hpcERhdGEpID0+IHtcblx0XHRcdHZhciBkb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmUnKTsgLy8gPGEtc2NlbmU+IHJlZmVyZW5jZVxuXG5cdFx0XHQvLyByZS1wb3NpdGlvbiBjYW1lcmE6IGNhbWVyYSBtdXN0IGJlIGFscmVhZHkgcHJlc2VudCB3aGVuIGh0bWwgbG9hZHNcblx0XHRcdHZhciBjYW1lcmEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FtZXJhJyk7XG5cdFx0XHQvL2NhbWVyYS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgbV9vY2Vhbi54ICsgXCIgXCIgKyBtX29jZWFuLnkgKyBcIiBcIiArIG1fb2NlYW4ueik7XG5cdFx0XHRjYW1lcmEuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIG1fb2NlYW4ueCArIFwiIFwiICsgbV9vY2Vhbi55ICsgXCIgXCIgKyAobV9vY2Vhbi56KygxLjUqbV9vY2Vhbi54KSkpO1xuXHRcdFx0Y2FtZXJhLnNldEF0dHJpYnV0ZSgnY2FtZXJhJywgJ3VzZXJIZWlnaHQ6ICcgKyBtX0NvbnN0YW50cy5DYW1lcmFZT2Zmc2V0KTtcblx0XHRcdGNhbWVyYS5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywgLU1hdGguYXRhbihtX0NvbnN0YW50cy5DYW1lcmFZT2Zmc2V0LyhtX29jZWFuLnorbV9vY2Vhbi54KSkpO1xuXG5cdFx0XHQvLyBHZW5lcmF0ZSBNYXBcblx0XHRcdC8vIFRPRE86IFBvc3NpYmxlIGVkZ2UgY2FzZXMgd2l0aCB0aGUgbWFwIGVkZ2Ugbm90IGJlaW5nIGJpZyBlbm91Z2hcblx0XHRcdHZhciBtYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLW9jZWFuJyk7XG5cblx0XHRcdG1hcC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgbV9vY2Vhbi54ICsgXCIgXCIgKyBtX29jZWFuLnkgKyBcIiBcIiArIG1fb2NlYW4ueik7XG5cdFx0XHRtYXAuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFN0cmluZyhtX29jZWFuLndpZHRoKSk7XG5cdFx0XHRtYXAuc2V0QXR0cmlidXRlKCdkZXB0aCcsIFN0cmluZyhtX29jZWFuLmRlcHRoKSk7XG5cdFx0XHRtYXAuc2V0QXR0cmlidXRlKCdkZW5zaXR5JywgU3RyaW5nKG1fb2NlYW4uZGVuc2l0eSkpO1xuXHRcdFx0ZG9jLmFwcGVuZENoaWxkKG1hcCk7XG5cblx0XHRcdC8vIFNwYXduIFNoaXBzXG5cdFx0XHRzaGlwRGF0YS5mb3JFYWNoKChlbnRyeSkgPT4ge1xuXHRcdFx0XHR2YXIgc2hpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EtZW50aXR5Jyk7XG5cblx0XHRcdFx0c2hpcC5kYXRhc2V0LmlkID0gZW50cnkuaWQ7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC5uYW1lID0gZW50cnkubmFtZTtcblx0XHRcdFx0c2hpcC5kYXRhc2V0Lm93bmVyID0gZW50cnkub3duZXI7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC54ID0gZW50cnkueDtcblx0XHRcdFx0c2hpcC5kYXRhc2V0LnkgPSBlbnRyeS55O1xuXHRcdFx0XHRzaGlwLmRhdGFzZXQueiA9IGVudHJ5Lno7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC5oZWFsdGggPSBlbnRyeS5odWxsO1xuXHRcdFx0XHRzaGlwLmRhdGFzZXQuaHVsbCA9IGVudHJ5Lmh1bGw7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC5maXJlcG93ZXIgPSBlbnRyeS5maXJlcG93ZXI7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC5zcGVlZCA9IGVudHJ5LnNwZWVkO1xuXHRcdFx0XHRzaGlwLmRhdGFzZXQucmFuZ2UgPSBlbnRyeS5yYW5nZTtcblxuXHRcdFx0XHR2YXIgaGVhcnQgPSBcIlwiO1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHBhcnNlSW50KGVudHJ5Lmh1bGwpOyBpKyspIHtcblx0XHRcdFx0XHRoZWFydCArPSBcIiDigKJcIjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHNoaXAuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIGVudHJ5LnggKyBcIiBcIiArIGVudHJ5LnkgKyBcIiBcIiArIGVudHJ5LnopO1xuXHRcdFx0XHRzaGlwLnNldEF0dHJpYnV0ZSgndGVtcGxhdGUnLCAnc3JjOiAjYm9hdC10ZW1wbGF0ZScpO1xuXHRcdFx0XHQvLyAke3ZhcmlhYmxlfSA8LSB2YXJpYWJsZSBuYW1lIGJlIGxvd2VyIGNhc2Vcblx0XHRcdFx0c2hpcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2hpcF9jb2xvcicsICdjb2xvcjogJytlbnRyeS5jb2xvcisnOyBtZXRhbG5lc3M6IDAuNDsnKTtcblx0XHRcdFx0c2hpcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2hpcF9uYW1lJywgJ3ZhbHVlOiAnK2VudHJ5Lm5hbWUrJzsgZm9udDogI3BsYXk7Jyk7XG5cdFx0XHRcdHNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLXNoaXBfaGVhbHRoJywgJ3ZhbHVlOiAnK2hlYXJ0Kyc7Jyk7XG5cblx0XHRcdFx0dmFyIHNoaXBJbnN0YW5jZSA9IGRvYy5hcHBlbmRDaGlsZChzaGlwKTtcblx0XHRcdFx0bV9lbnRpdHlbZW50cnkuaWRdID0gc2hpcEluc3RhbmNlO1xuXHRcdFx0fSk7XG5cblx0XHR9LFxuXG5cdFx0c2lua1NoaXA6IChkYXRhKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHR2YXIgZG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5lJyk7XG5cdFx0XHRcdHZhciB0cmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFjaycpO1xuXHRcdFx0XHR2YXIgc2hpcERvbSA9IG1fZW50aXR5W2RhdGFbMF0uaWRdO1xuXG5cdFx0XHRcdHZhciBkZWJ1ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EtZHJhdy1jdXJ2ZScpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ2N1cnZlcmVmJywgJyN0cmFjaycpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ21hdGVyaWFsJywgJ3NoYWRlcjogbGluZTsgY29sb3I6IGJsYWNrOycpO1xuXHRcdFx0XHRkb2MuYXBwZW5kQ2hpbGQoZGVidWcpO1xuXG5cdFx0XHRcdHZhciBwb2ludDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLWN1cnZlLXBvaW50Jyk7XG5cdFx0XHRcdHZhciBwb2ludDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLWN1cnZlLXBvaW50Jyk7XG5cdFx0XHRcdHBvaW50MS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YVswXS54ICsgXCIgXCIgKyBkYXRhWzBdLnkgKyBcIiBcIiArIGRhdGFbMF0ueik7XG5cdFx0XHRcdHBvaW50Mi5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YVswXS54ICsgXCIgXCIgKyAoZGF0YVswXS55LW1fQ29uc3RhbnRzLlNpbmtEaXN0YW5jZSkgKyBcIiBcIiArIGRhdGFbMF0ueik7XG5cdFx0XHRcdHRyYWNrLmFwcGVuZENoaWxkKHBvaW50MSk7XG5cdFx0XHRcdHRyYWNrLmFwcGVuZENoaWxkKHBvaW50Mik7XG5cblx0XHRcdFx0c2hpcERvbS5zZXRBdHRyaWJ1dGUoJ2Fsb25ncGF0aCcsICdjdXJ2ZTogI3RyYWNrOyByb3RhdGU6IHRydWU7IGNvbnN0cmFpbnQ6IDAgMSAwOyBkZWxheTogJyttX0NvbnN0YW50cy5XYWl0VGltZUJldHdlZW5BY3Rpb24rJzsgZHVyOiAzMDAwOycpO1xuXG5cdFx0XHRcdHZhciBkb25lID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0c2hpcERvbS5yZW1vdmVBdHRyaWJ1dGUoJ2Fsb25ncGF0aCcpO1xuXHRcdFx0XHRcdGlmIChkZWJ1Zy5wYXJlbnROb2RlKSB7XG5cdFx0XHRcdFx0XHRkb2MucmVtb3ZlQ2hpbGQoZGVidWcpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHdoaWxlKHRyYWNrLmhhc0NoaWxkTm9kZXMoKSkge1xuXHRcdFx0XHRcdFx0dHJhY2sucmVtb3ZlQ2hpbGQodHJhY2suY2hpbGROb2Rlc1swXSk7XG5cdFx0XHRcdFx0fVxuXG5cblx0XHRcdFx0XHQvL3NoaXBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW92aW5nZW5kZWQnLCBkb25lKTtcblxuXHRcdFx0XHRcdGlmIChzaGlwRG9tLnBhcmVudE5vZGUpIHtcblx0XHRcdFx0XHRcdGRvYy5yZW1vdmVDaGlsZChzaGlwRG9tKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXNvbHZlKGV2ZW50KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRzaGlwRG9tLmFkZEV2ZW50TGlzdGVuZXIoJ21vdmluZ2VuZGVkJywgZG9uZSk7XG5cdFx0XHRcdC8vIHJlc29sdmUoKTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvLyBEYXRhIHBhc3NlZCBpbiBhcmUgb25lIHNoaXBzIGFjdGlvbiBvZiBmaXJpbmcgYXQgb25lIGFuZCBvbmx5IG9uZSBjb29yZGluYXRlXG5cdFx0ZmlyZVNoaXA6IChkYXRhKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHR2YXIgZG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5lJyk7XG5cdFx0XHRcdHZhciB0cmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFjaycpO1xuXG5cdFx0XHRcdHZhciBidWxsZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLXNwaGVyZScpO1xuXHRcdFx0XHR2YXIgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXHRcdFx0XHR2YXIgYXJjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXHRcdFx0XHRidWxsZXQuc2V0QXR0cmlidXRlKCdjb2xvcicsICdncmF5Jyk7XG5cdFx0XHRcdGJ1bGxldC5zZXRBdHRyaWJ1dGUoJ3JhZGl1cycsICcwLjEnKTtcblx0XHRcdFx0YnVsbGV0LnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBkYXRhWzBdLnggKyBcIiBcIiArIGRhdGFbMF0ueSArIFwiIFwiICsgZGF0YVswXS56KTtcblx0XHRcdFx0c291cmNlLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBkYXRhWzBdLnggKyBcIiBcIiArIGRhdGFbMF0ueSArIFwiIFwiICsgZGF0YVswXS56KTtcblx0XHRcdFx0dGFyZ2V0LnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBkYXRhWzBdLmF0WCArIFwiIFwiICsgZGF0YVswXS5hdFkgKyBcIiBcIiArIGRhdGFbMF0uYXRaKTtcblx0XHRcdFx0YXJjLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCAoZGF0YVswXS5hdFgrZGF0YVswXS54KS8yICsgXCIgXCIgKyAoKChkYXRhWzBdLmF0WStkYXRhWzBdLnkpLzIpK21fQ29uc3RhbnRzLkJ1bGxldEFyYykgKyBcIiBcIiArIChkYXRhWzBdLmF0WitkYXRhWzBdLnopLzIpO1xuXHRcdFx0XHR0cmFjay5hcHBlbmRDaGlsZChzb3VyY2UpO1xuXHRcdFx0XHR0cmFjay5hcHBlbmRDaGlsZChhcmMpO1xuXHRcdFx0XHR0cmFjay5hcHBlbmRDaGlsZCh0YXJnZXQpO1xuXG5cdFx0XHRcdHZhciBkZWJ1ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EtZHJhdy1jdXJ2ZScpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ2N1cnZlcmVmJywgJyN0cmFjaycpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ21hdGVyaWFsJywgJ3NoYWRlcjogbGluZTsgY29sb3I6IHJlZDsnKTtcblx0XHRcdFx0ZG9jLmFwcGVuZENoaWxkKGRlYnVnKTtcblxuXHRcdFx0XHR2YXIgdG1wID0gZG9jLmFwcGVuZENoaWxkKGJ1bGxldCk7XG5cdFx0XHRcdHRtcC5zZXRBdHRyaWJ1dGUoJ2Fsb25ncGF0aCcsICdjdXJ2ZTogI3RyYWNrOyByb3RhdGU6IHRydWU7IGNvbnN0YW50OiAwIDAgMTsgZGVsYXk6IDIwMDsgZHVyOiA1MDAnKTtcblxuXHRcdFx0XHR2YXIgZG9uZSA9IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdHRtcC5yZW1vdmVBdHRyaWJ1dGUoJ2Fsb25ncGF0aCcpO1xuXHRcdFx0XHRcdGlmIChkZWJ1Zy5wYXJlbnROb2RlKSB7XG5cdFx0XHRcdFx0XHRkb2MucmVtb3ZlQ2hpbGQoZGVidWcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3aGlsZSh0cmFjay5oYXNDaGlsZE5vZGVzKCkpIHtcblx0XHRcdFx0XHRcdHRyYWNrLnJlbW92ZUNoaWxkKHRyYWNrLmNoaWxkTm9kZXNbMF0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vdG1wLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdmluZ2VuZGVkJywgZG9uZSk7XG5cdFx0XHRcdFx0aWYgKHRtcC5wYXJlbnROb2RlKSB7XG5cdFx0XHRcdFx0XHRkb2MucmVtb3ZlQ2hpbGQodG1wKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVzb2x2ZShldmVudCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0bXAuYWRkRXZlbnRMaXN0ZW5lcignbW92aW5nZW5kZWQnLCBkb25lKTtcblx0XHRcdFx0Ly9yZXNvbHZlKCk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0YWltU2hpcDogKGRhdGEpID0+IHtcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0dmFyIHNoaXAgPSBtX2VudGl0eVtkYXRhWzBdLmlkXTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcImFpbTogXCIsIHNoaXApO1xuICAgICAgICAgXHRcdFx0cmVzb2x2ZSgpO1xuICAgICAgXHRcdFx0fSwgMzAwMCk7XG5cdFx0XHRcdFxuXHRcdFx0fSk7XG5cblx0XHR9LFxuXG5cdFx0aGl0U2hpcDogKGRhdGEpID0+IHtcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdHZhciBzaGlwID0gbV9lbnRpdHlbZGF0YVswXS5pZF07XG5cdFx0XHRcdHZhciBoZWFydCA9IFwiXCI7XG5cblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhWzBdLmhlYWx0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aGVhcnQgKz0gXCIg4oCiXCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHNoaXAuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlmIChzaGlwLmNoaWxkTm9kZXNbaV0uY2xhc3NOYW1lID09IFwic2hpcC1oZWFsdGhcIikge1xuXHRcdFx0XHRcdFx0c2hpcC5jaGlsZE5vZGVzW2ldLnNldEF0dHJpYnV0ZSgndGV4dC1nZW9tZXRyeScsICd2YWx1ZTogJytoZWFydCsnOycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdC8vIERhdGEgcGFzc2VkIGluIG11c3QgYmUgZm9yIG1vdmVtZW50IG9mIG9uZSBzaGlwXG5cdFx0bW92ZVNoaXA6IChkYXRhKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG5cdFx0XHRcdHZhciBzaGlwRG9tID0gbV9lbnRpdHlbZGF0YVswXS5pZF07IC8vIGh0bWwgZWxlbWVudFxuXHRcdFx0XHQvLyBpZiBzdGF0ZW1lbnQgaXMgbm90IHdvcmtpbmdcblx0XHRcdFx0Ly8gaWYgKGRhdGEubGVuZ3RoID09PSAxICYmIGRhdGFbMF0ueCA9PT0gc2hpcERvbS5kYXRhc2V0LnggJiYgZGF0YVswXS56ID09PSBzaGlwRG9tLmRhdGFzZXQueikge1xuXHRcdFx0XHQvLyAgICAgLy8gaWYgc2hpcERvbSB0cmllcyB0byBtb3ZlIGFnYWluc3QgZWRnZSBvciBvY2N1cGllZCBwbGFjZVxuXHRcdFx0XHQvLyAgICAgYWxlcnQoXCJTa2lwcGVkXCIpO1xuXHRcdFx0XHQvLyAgICAgcmVzb2x2ZShcIlNraXBwZWRcIik7XG5cdFx0XHRcdC8vIH1cblxuXHRcdFx0XHR2YXIgZG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5lJyk7IC8vIDxhLXNjZW5lPiByZWZlcmVuY2Vcblx0XHRcdFx0dmFyIHRyYWNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYWNrJyk7XG5cdFx0XHRcdC8vdmFyIHN0YXJ0Q29vcmQgPSB7XCJ4XCI6IGRhdGFbMF0ueH07XG5cblx0XHRcdFx0dmFyIGRlYnVnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1kcmF3LWN1cnZlJyk7XG5cdFx0XHRcdGRlYnVnLnNldEF0dHJpYnV0ZSgnY3VydmVyZWYnLCAnI3RyYWNrJyk7XG5cdFx0XHRcdGRlYnVnLnNldEF0dHJpYnV0ZSgnbWF0ZXJpYWwnLCAnc2hhZGVyOiBsaW5lOyBjb2xvcjogYmx1ZTsnKTtcblx0XHRcdFx0ZG9jLmFwcGVuZENoaWxkKGRlYnVnKTtcblxuXHRcdFx0XHQvLyBhZGQgY3VycmVudCBsb2NhdGlvbiBhcyBhIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBjdXJ2ZVxuXHRcdFx0XHR2YXIgcG9pbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLWN1cnZlLXBvaW50Jyk7XG5cdFx0XHRcdHBvaW50LnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBTdHJpbmcoc2hpcERvbS5kYXRhc2V0LnggKyBcIiBcIiArIHNoaXBEb20uZGF0YXNldC55ICsgXCIgXCIgKyBzaGlwRG9tLmRhdGFzZXQueikpO1xuXHRcdFx0XHR0cmFjay5hcHBlbmRDaGlsZChwb2ludCk7XG5cdFx0XHRcdC8vIGFkZCBjaGFpbi1hYmxlIGdvYWwgbG9jYXRpb25zIHRvIHRoZSBjdXJ2ZVxuXHRcdFx0XHR2YXIgcHJldmlvdXMgPSB7J3gnOiBzaGlwRG9tLmRhdGFzZXQueCwgJ3onOiBzaGlwRG9tLmRhdGFzZXQuen07XG5cdFx0XHRcdHZhciB4RGlzdGFuY2UgPSAwO1xuXHRcdFx0XHR2YXIgekRpc3RhbmNlID0gMDtcblx0XHRcdFx0Y29uc29sZS5sb2coXCJNb3Zpbmc6IFwiLCBkYXRhKTtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0cG9pbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLWN1cnZlLXBvaW50Jyk7XG5cdFx0XHRcdFx0cG9pbnQuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIGRhdGFbaV0ueCArIFwiIFwiICsgZGF0YVtpXS55ICsgXCIgXCIgKyBkYXRhW2ldLnopO1xuXHRcdFx0XHRcdHhEaXN0YW5jZSArPSBNYXRoLmFicyhkYXRhW2ldLnggLSBwcmV2aW91cy54KTtcblx0XHRcdFx0XHR6RGlzdGFuY2UgKz0gTWF0aC5hYnMoZGF0YVtpXS56IC0gcHJldmlvdXMueik7XG5cdFx0XHRcdFx0aWYgKGkgKyAxIDwgZGF0YS5sZW5ndGggJiYgZGF0YVtpXS54ID09PSBkYXRhW2krMV0ueCAmJiBkYXRhW2ldLnogPT09IGRhdGFbaSsxXS56KSB7XG5cdFx0XHRcdFx0XHRpKys7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRyYWNrLmFwcGVuZENoaWxkKHBvaW50KTtcblx0XHRcdFx0XHRwcmV2aW91cyA9IHsneCc6IGRhdGFbaV0ueCwgJ3onOiBkYXRhW2ldLnp9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBkdXIgPSAoeERpc3RhbmNlK3pEaXN0YW5jZSkqbV9Db25zdGFudHMuV2FpdFRpbWVQZXJUaWxlTW92ZWQ7XG5cdFx0XHRcdHNoaXBEb20uc2V0QXR0cmlidXRlKCdhbG9uZ3BhdGgnLCAnY3VydmU6ICN0cmFjazsgcm90YXRlOiB0cnVlOyBjb25zdHJhaW50OiAwIDAgMTsgZGVsYXk6ICcrbV9Db25zdGFudHMuV2FpdFRpbWVCZXR3ZWVuQWN0aW9uKyc7IGR1cjogJytkdXIrJzsnKTtcblxuXHRcdFx0XHR2YXIgZG9uZSA9IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdC8vIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5VGFnTmFtZSgnYS1kcmF3LWN1cnZlJyk7XG5cdFx0XHRcdFx0Ly8gZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0Ly8gICAgIGxpc3RbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsaXN0WzBdKTtcblx0XHRcdFx0XHQvLyB9XG5cdFx0XHRcdFx0aWYgKGRlYnVnLnBhcmVudE5vZGUpIHtcblx0XHRcdFx0XHRcdGRvYy5yZW1vdmVDaGlsZChkZWJ1Zyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0d2hpbGUodHJhY2suaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRcdFx0XHR0cmFjay5yZW1vdmVDaGlsZCh0cmFjay5jaGlsZE5vZGVzWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0c2hpcERvbS5yZW1vdmVBdHRyaWJ1dGUoJ2Fsb25ncGF0aCcpO1xuXHRcdFx0XHRcdHNoaXBEb20uZGF0YXNldC54ID0gZGF0YVtkYXRhLmxlbmd0aC0xXS54O1xuXHRcdFx0XHRcdHNoaXBEb20uZGF0YXNldC56ID0gZGF0YVtkYXRhLmxlbmd0aC0xXS56O1xuXHRcdFx0XHRcdHNoaXBEb20uZGF0YXNldC55ID0gZGF0YVtkYXRhLmxlbmd0aC0xXS55O1xuXG5cdFx0XHRcdFx0Ly9zaGlwRG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdmluZ2VuZGVkJywgZG9uZSk7XG5cdFx0XHRcdFx0cmVzb2x2ZShldmVudCk7XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0c2hpcERvbS5hZGRFdmVudExpc3RlbmVyKCdtb3ZpbmdlbmRlZCcsIGRvbmUpO1xuXG5cdFx0XHRcdFxuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdHNpbXVsYXRlOiAoKSA9PiB7XG5cdFx0XHRjb25zb2xlLmxvZyhcImNoYWluOiBcIiwgbV9jaGFpbik7XG5cdFx0XHR2YXIgbm90U3RvcCA9IHRydWU7XG5cdFx0XHRpZiAobV9jaGFpbi5sZW5ndGggPT0gMCkge1xuXHRcdFx0XHRub3RTdG9wID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR2YXIgY3VycmVudCA9IG1fY2hhaW4uc2hpZnQoKTsgLy8gZG9uJ3Qgc2hpZnQgd2hlbiBsZW5ndGggaXMgemVyb1xuXHRcdFx0aWYgKGN1cnJlbnQgJiYgbm90U3RvcCkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhcImN1cnJlbnQ6IFwiLCBjdXJyZW50KTtcblx0XHRcdFx0c3dpdGNoKGN1cnJlbnQudHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgXCJNT1ZFXCI6XG5cdFx0XHRcdFx0XHRhcHAubW92ZVNoaXAoY3VycmVudC5hY3Rpb25zKS50aGVuKChkb25lKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vYWxlcnQoXCJNb3ZlZCBcIiArIG1fY2hhaW4ubGVuZ3RoICsgXCIgYWN0aW9ucyBsZWZ0XCIpO1xuXHRcdFx0XHRcdFx0XHRhcHAuc2ltdWxhdGUoKTtcblx0XHRcdFx0XHRcdH0pLmNhdGNoKChlcnIpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiRklSRVwiOlxuXHRcdFx0XHRcdFx0YXBwLmZpcmVTaGlwKGN1cnJlbnQuYWN0aW9ucykudGhlbigoZG9uZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRhcHAuc2ltdWxhdGUoKTtcblx0XHRcdFx0XHRcdH0pLmNhdGNoKChlcnIpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkhJVFwiOlxuXHRcdFx0XHRcdFx0YXBwLmhpdFNoaXAoY3VycmVudC5hY3Rpb25zKS50aGVuKChkb25lKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGFwcC5zaW11bGF0ZSgpO1xuXHRcdFx0XHRcdFx0fSkuY2F0Y2goKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiU0lOS1wiOlxuXHRcdFx0XHRcdFx0YXBwLnNpbmtTaGlwKGN1cnJlbnQuYWN0aW9ucykudGhlbigoZG9uZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQvL2FsZXJ0KFwiU3VuayBcIisgbV9jaGFpbi5sZW5ndGggKyBcIiBhY3Rpb25zIGxlZnRcIik7XG5cdFx0XHRcdFx0XHRcdGFwcC5zaW11bGF0ZSgpO1xuXHRcdFx0XHRcdFx0fSkuY2F0Y2goKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjb25zb2xlLndhcm4oXCJVbmtub3duIEFjdGlvbiBUeXBlIFwiICsgY3VycmVudC50eXBlICsgXCIgaW4gc2ltdWxhdGUgZnVuY3Rpb24sIHNraXBwaW5nLlwiKTtcblx0XHRcdFx0XHRcdGFwcC5zaW11bGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHQvL2FsZXJ0KFwiU2ltdWxhdGlvbiBEb25lXCIpO1xuXHRcdFx0XHRcdHZleC5kaWFsb2cuYWxlcnQoXCJTaW11bGF0aW9uIENvbXBsZXRlZC5cIik7XG5cdFx0XHRcdH0sIDEwMDAwKTtcblx0XHRcdH1cblxuXHRcdH0sXG5cblx0XHQvKiogdHJhbnNsYXRlcyB0aGUgY29vcmRpbmF0ZSBpbiB0aGUgamF2YSBnYW1lIHRvIHRoaXMgc2NlbmUncyBjb29yZGluYXRlXG5cdFx0XHRKYXZhIEdhbWU6IEVhY2ggc2hpcCBzcGFucyBvbmUgKHgsIHkpIHVuaXRcblx0XHRcdEphdmEgR2FtZTogQ29vcmRpbmF0ZSBzeXN0ZW0gaGFzICgwLCAwKSBhdCB0b3AgbGVmdCBjb3JuZXIgKHdpdGhvdXQgbmVnYXRpdmVzKVxuXHRcdFx0QUZyYW1lIFNjZW5lOiBFYWNoIHNoaXAgbW9kZWwgaXMgYSA0eDQgYm94XG5cdFx0XHRBRnJhbWUgU2NlbmU6IENvb3JkaW5hdGUgc3lzdGVtIGlzICgwLCAwKSBhdCB0aGUgY2VudGVyICh3aXRoIG5lZ2F0aXZlcylcblx0XHQqL1xuXHRcdGdldFN0ckNvb3JkOiAoY29vcmQsIG9mZnNldFkpID0+IHtcblx0XHRcdHJldHVybiAobV9vY2Vhbi54LWNvb3JkLngpKjQgKyBcIiBcIiArIG9mZnNldFkgKyBcIiBcIiArIChtX29jZWFuLnktY29vcmQueSkqNDtcblx0XHR9LFxuXG5cdFx0Z2V0U2hpcHM6ICgpID0+IHtcblx0XHRcdHJldHVybiBtX3NoaXBzO1xuXHRcdH0sXG5cblx0XHRnZXRPY2VhbjogKCkgPT4ge1xuXHRcdFx0cmV0dXJuIG1fb2NlYW47XG5cdFx0fVxuXG5cblx0fVxuXG5cdHJldHVybiBhcHA7XG59XG5cbnZhciBhcHAgPSBiYXR0bGVzaGlwKCk7XG5sZXQgcGFyYW1zID0gZ2V0UXVlcnlQYXJhbXMoZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoKTtcblxubGV0IGdldERhdGFGcm9tQ29kZSA9IChjb2RlKSA9PiB7XG5cdGRiLnJlZignZGF2eS1qb25lcy1sb2NrZXIvJyArIGNvZGUpLm9uY2UoJ3ZhbHVlJywgKHNuYXBzaG90KSA9PiB7XG5cdFx0dmFyIGdhbWVEYXRhID0gc25hcHNob3QudmFsKCk7XG5cdFx0aWYgKGdhbWVEYXRhKSB7XG5cdFx0XHRpbnB1dCA9IGdhbWVEYXRhO1xuXHRcdFx0YXBwLmluaXQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Z2V0Q29kZShgTm8gZGF0YSBmb3IgY29kZSAke2NvZGV9LiBFbnRlciBhbm90aGVyIGNvZGU6YCk7XG5cdFx0XHQvL2FwcC5pbml0KCk7XG5cdFx0fVxuXHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0Z2V0Q29kZShgVGhlcmUgd2FzIGFuIGVycm9yLiBFbnRlciBhbm90aGVyIGNvZGU6YCk7XG5cdFx0Ly9hcHAuaW5pdCgpO1xuXHR9KTtcbn1cblxubGV0IGdldENvZGUgPSAobWVzc2FnZSkgPT4ge1xuXHR2ZXguZGlhbG9nLnByb21wdCh7XG5cdFx0bWVzc2FnZTogbWVzc2FnZSxcblx0XHRjYWxsYmFjazogKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0dmFyIGNvZGUgPSB2YWx1ZTtcblx0XHRcdFx0Z2V0RGF0YUZyb21Db2RlKGNvZGUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Z2V0Q29kZShcIk5vIGNvZGUgZW50ZXJlZC4gRW50ZXIgeW91ciBjb2RlOlwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5pZiAocGFyYW1zLmNvZGUpIHtcblx0Z2V0RGF0YUZyb21Db2RlKHBhcmFtcy5jb2RlKTtcbn0gZWxzZSB7XG5cdGdldENvZGUoXCJFbnRlciBZb3VyIENvZGVcIik7XG59XG5cblxuLy8gdmFyIEJBVFRMRV9TRVJWRVJfVVJMID0gJ2h0dHBzOi8vYmF0dGxlc2hpcC12aW5na2FuLmM5dXNlcnMuaW8vMXYxP3AxPWVzaTE3LmNzLkRlc3Ryb3llclNoaXAmcDI9ZXNpMTcuaGxpMTA5LkZsb2F0ZXInOy8vICsgTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAxMDApO1xuXG4vLyAkLmdldChCQVRUTEVfU0VSVkVSX1VSTCkudGhlbihkYXRhID0+IHtcbi8vIFx0aW5wdXQgPSBkYXRhO1xuLy8gXHRhcHAuaW5pdCgpO1xuLy8gfSkuZG9uZSgoKSA9PiB7XG4vLyBcdGNvbnNvbGUubG9nKFwiRGF0YSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGZyb20gc2VydmVyXCIpO1xuLy8gfSkuZmFpbCgoKSA9PiB7XG4vLyBcdGNvbnNvbGUubG9nKFwiVW5hYmxlIHRvIHJldHJpZXZlIGRhdGEsIHN0YXJ0aW5nIHdpdGggbG9jYWwgZGF0YVwiKTtcbi8vIFx0YXBwLmluaXQoKTtcbi8vIH0pO1xuXG5cblxuIl19\n"]}
\ No newline at end of file
+{"version":3,"sources":["main.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","config","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","db","firebase","initializeApp","database","app","m_ocean","m_Constants","CameraYOffset","OceanYOffset","OceanPadding","ShipYOffset","SinkDistance","BulletArc","WaitTimePerTileMoved","WaitTimeBetweenAction","m_input","m_ships","m_chain","m_entity","init","ships","input","turns","ocean","map","preprocess","doc","document","getElementById","track","createElement","setAttribute","appendChild","render","setTimeout","simulate","data","translate","d","res","hasOwnProperty","atX","atY","x","z","y","actions","index","Math","floor","width","depth","density","forEach","entry","push","chain","id","type","shipData","camera","String","spawnShip","ship","dataset","name","owner","health","hull","firepower","speed","range","heart","parseInt","color","shipInstance","sinkShip","Promise","resolve","reject","shipDom","debug","point1","point2","addEventListener","event","removeAttribute","parentNode","removeChild","hasChildNodes","childNodes","fireShip","bullet","source","arc","target","atZ","tmp","distance","sqrt","aimShip","getAttribute","hitShip","className","moveShip","point","previous","xDistance","zDistance","abs","direction","dur","notStop","current","shift","then","done","catch","err","console","error","log","warn","vex","dialog","alert","getStrCoord","coord","offsetY","getShips","getOcean","battleship","params","qs","split","join","tokens","re","exec","decodeURIComponent","getQueryParams","location","search","getDataFromCode","ref","once","snapshot","gameData","val","getCode","message","prompt","callback","value"],"mappings":"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","file":"../main.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o reference\n\n\t\t\t// re-position camera: camera must be already present when html loads\n\t\t\tvar camera = document.getElementById('camera');\n\t\t\t//camera.setAttribute('position', m_ocean.x + \" \" + m_ocean.y + \" \" + m_ocean.z);\n\t\t\tcamera.setAttribute('position', m_ocean.x + \" \" + m_ocean.y + \" \" + (m_ocean.z + 1.5 * m_ocean.x));\n\t\t\tcamera.setAttribute('camera', 'userHeight: ' + m_Constants.CameraYOffset);\n\t\t\t//camera.setAttribute('rotation', -Math.atan(m_Constants.CameraYOffset/(m_ocean.z+m_ocean.x))); // TODO: check if the string is a vec3\n\t\t\tcamera.setAttribute('rotation', '-50 0 0');\n\n\t\t\t// Generate Map\n\t\t\t// TODO: Possible edge cases with the map edge not being big enough\n\t\t\tvar map = document.createElement('a-ocean');\n\n\t\t\tmap.setAttribute('position', m_ocean.x + \" \" + m_ocean.y + \" \" + m_ocean.z);\n\t\t\tmap.setAttribute('width', String(m_ocean.width));\n\t\t\tmap.setAttribute('depth', String(m_ocean.depth));\n\t\t\tmap.setAttribute('density', String(m_ocean.density));\n\t\t\tdoc.appendChild(map);\n\n\t\t\tvar spawnShip = function spawnShip(entry) {\n\t\t\t\tvar ship = document.createElement('a-entity');\n\n\t\t\t\tship.dataset.id = entry.id;\n\t\t\t\tship.dataset.name = entry.name;\n\t\t\t\tship.dataset.owner = entry.owner;\n\t\t\t\tship.dataset.x = entry.x;\n\t\t\t\tship.dataset.y = entry.y;\n\t\t\t\tship.dataset.z = entry.z;\n\t\t\t\tship.dataset.health = entry.hull;\n\t\t\t\tship.dataset.hull = entry.hull;\n\t\t\t\tship.dataset.firepower = entry.firepower;\n\t\t\t\tship.dataset.speed = entry.speed;\n\t\t\t\tship.dataset.range = entry.range;\n\n\t\t\t\tvar heart = \"\";\n\t\t\t\tfor (var i = 0; i < parseInt(entry.hull); i++) {\n\t\t\t\t\theart += \" •\";\n\t\t\t\t}\n\n\t\t\t\tship.setAttribute('position', entry.x + \" \" + entry.y + \" \" + entry.z);\n\n\t\t\t\tif (entry.color === \"rgb(255, 255, 0)\") {\n\t\t\t\t\tship.setAttribute('template', 'src: #submarine-template');\n\t\t\t\t\tship.setAttribute('class', 'submarine');\n\t\t\t\t} else {\n\t\t\t\t\tship.setAttribute('template', 'src: #boat-template');\n\t\t\t\t\tship.setAttribute('class', 'boat');\n\t\t\t\t}\n\n\t\t\t\t// ${variable} <- variable name be lower case\n\t\t\t\tship.setAttribute('data-ship_color', 'color: ' + entry.color + '; metalness: 0.4;');\n\t\t\t\tship.setAttribute('data-ship_name', 'value: ' + entry.name + '; font: #play;');\n\t\t\t\tship.setAttribute('data-ship_health', 'value: ' + heart + ';');\n\n\t\t\t\tvar shipInstance = doc.appendChild(ship);\n\t\t\t\tm_entity[entry.id] = shipInstance;\n\t\t\t};\n\t\t\t// spawn the ships!\n\t\t\tshipData.forEach(function (entry) {\n\t\t\t\tspawnShip(entry);\n\t\t\t});\n\t\t},\n\n\t\tsinkShip: function sinkShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar doc = document.getElementById('scene');\n\t\t\t\tvar track = document.getElementById('track');\n\t\t\t\tvar shipDom = m_entity[data[0].id];\n\n\t\t\t\tvar debug = document.createElement('a-draw-curve');\n\t\t\t\tdebug.setAttribute('curveref', '#track');\n\t\t\t\tdebug.setAttribute('material', 'shader: line; color: black;');\n\t\t\t\tdoc.appendChild(debug);\n\n\t\t\t\tvar point1 = document.createElement('a-curve-point');\n\t\t\t\tvar point2 = document.createElement('a-curve-point');\n\t\t\t\tpoint1.setAttribute('position', data[0].x + \" \" + data[0].y + \" \" + data[0].z);\n\t\t\t\tpoint2.setAttribute('position', data[0].x + \" \" + (data[0].y - m_Constants.SinkDistance) + \" \" + data[0].z);\n\t\t\t\ttrack.appendChild(point1);\n\t\t\t\ttrack.appendChild(point2);\n\n\t\t\t\tshipDom.setAttribute('alongpath', 'curve: #track; rotate: false; delay: ' + m_Constants.WaitTimeBetweenAction + '; dur: 1000;');\n\n\t\t\t\tvar done = function done(event) {\n\t\t\t\t\tshipDom.removeAttribute('alongpath');\n\t\t\t\t\tif (debug.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(debug);\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (track.hasChildNodes()) {\n\t\t\t\t\t\ttrack.removeChild(track.childNodes[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\t//shipDom.removeEventListener('movingended', done);\n\n\t\t\t\t\tif (shipDom.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(shipDom);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(event);\n\t\t\t\t};\n\n\t\t\t\tshipDom.addEventListener('movingended', done);\n\t\t\t\t// resolve();\n\t\t\t});\n\t\t},\n\n\t\t// Data passed in are one ships action of firing at one and only one coordinate\n\t\tfireShip: function fireShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar doc = document.getElementById('scene');\n\t\t\t\tvar track = document.getElementById('track');\n\t\t\t\tvar ship = m_entity[data[0].id];\n\n\t\t\t\tvar bullet = document.createElement('a-sphere');\n\t\t\t\tvar source = document.createElement('a-curve-point');\n\t\t\t\tvar arc = document.createElement('a-curve-point');\n\t\t\t\tvar target = document.createElement('a-curve-point');\n\n\t\t\t\t// var saves = null;\n\t\t\t\t// if (ship.className === \"submarine\") {\n\t\t\t\t// \tfor (var i = 0; i < ship.childNodes.length; i++) {\n\t\t\t\t// \t\tif (ship.childNodes[i].className === \"submarineMissile\") {\n\t\t\t\t// \t\t\tbullet = ship.childNodes[i]\n\t\t\t\t// \t\t\tsaves = bullet.getAttribute('position');\n\t\t\t\t// \t\t\tbreak;\n\t\t\t\t// \t\t}\n\t\t\t\t// \t}\n\t\t\t\t// \tconsole.log('missile start', saves);\n\t\t\t\t// \tsource.setAttribute('position', (data[0].x+saves.x) + \" \" + (data[0].y+saves.y) + \" \" + (data[0].z+saves.z));\n\t\t\t\t// \tarc.setAttribute('position', (data[0].x+saves.x) + \" \" + (data[0].y+saves.y+5) + \" \" + (data[0].z+saves.z));\n\t\t\t\t// \ttarget.setAttribute('position', data[0].atX + \" \" + data[0].atY + \" \" + data[0].atZ);\n\t\t\t\t// \ttrack.appendChild(source);\n\t\t\t\t// \ttrack.appendChild(arc);\n\t\t\t\t// \ttrack.appendChild(target);\n\t\t\t\t// }\n\t\t\t\t// else {\n\t\t\t\tbullet.setAttribute('color', 'gray');\n\t\t\t\tbullet.setAttribute('radius', '0.2');\n\t\t\t\tbullet.setAttribute('position', data[0].x + \" \" + data[0].y + \" \" + data[0].z);\n\t\t\t\tsource.setAttribute('position', data[0].x + \" \" + data[0].y + \" \" + data[0].z);\n\t\t\t\tarc.setAttribute('position', (data[0].atX + data[0].x) / 2 + \" \" + ((data[0].atY + data[0].y) / 2 + m_Constants.BulletArc) + \" \" + (data[0].atZ + data[0].z) / 2);\n\t\t\t\ttarget.setAttribute('position', data[0].atX + \" \" + data[0].atY + \" \" + data[0].atZ);\n\t\t\t\ttrack.appendChild(source);\n\t\t\t\ttrack.appendChild(arc);\n\t\t\t\ttrack.appendChild(target);\n\t\t\t\t// }\n\n\t\t\t\tvar debug = document.createElement('a-draw-curve');\n\t\t\t\tdebug.setAttribute('curveref', '#track');\n\t\t\t\tdebug.setAttribute('material', 'shader: line; color: red;');\n\t\t\t\tdoc.appendChild(debug);\n\n\t\t\t\tvar tmp = doc.appendChild(bullet);\n\t\t\t\tvar distance = Math.sqrt((data[0].atX - data[0].x) * (data[0].atX - data[0].x) + (data[0].atZ - data[0].z) * (data[0].atZ - data[0].z)) + m_Constants.BulletArc * m_Constants.BulletArc;\n\t\t\t\t//console.log(\"distance: \", distance);\n\t\t\t\ttmp.setAttribute('alongpath', 'curve: #track; rotate: true; constant: 0 -1 0; delay: 100; dur: ' + 25 * distance);\n\n\t\t\t\tvar done = function done(event) {\n\t\t\t\t\ttmp.removeAttribute('alongpath');\n\t\t\t\t\tif (debug.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(debug);\n\t\t\t\t\t}\n\t\t\t\t\twhile (track.hasChildNodes()) {\n\t\t\t\t\t\ttrack.removeChild(track.childNodes[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\t//tmp.removeEventListener('movingended', done);\n\t\t\t\t\tif (tmp.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(tmp);\n\t\t\t\t\t}\n\t\t\t\t\t// if (ship.className === \"submarine\") {\n\t\t\t\t\t// \tvar reload = document.createElement('a-entity');\n\t\t\t\t\t// \treload.setAttribute('class', 'submarineMissile');\n\t\t\t\t\t// \treload.setAttribute('obj-model', 'obj: #submarineMissile');\n\t\t\t\t\t// \treload.setAttribute('position', saves);\n\t\t\t\t\t// \tship.appendChild(reload);\n\t\t\t\t\t// }\n\n\t\t\t\t\tresolve(event);\n\t\t\t\t};\n\n\t\t\t\ttmp.addEventListener('movingended', done);\n\t\t\t\t//resolve();\n\t\t\t});\n\t\t},\n\n\t\taimShip: function aimShip(data) {\n\t\t\tvar rotateVector = function rotateVector(vec2, deg) {\n\t\t\t\tvar rad = -deg * Math.PI / 180;\n\t\t\t\tvar cos = Math.cos(rad);\n\t\t\t\tvar sin = Math.sin(rad);\n\t\t\t\t//console.log(\"vector: \", vec2);\n\t\t\t\t//console.log(\"degree: \", deg);\n\t\t\t\t// round the numbers\n\t\t\t\treturn {\n\t\t\t\t\t\"x\": Math.round(100000 * ((vec2.x - vec2.atX) * cos - (vec2.z - vec2.atZ) * sin)) / 100000,\n\t\t\t\t\t\"y\": vec2.y - vec2.atY,\n\t\t\t\t\t\"z\": Math.round(100000 * ((vec2.x - vec2.atX) * sin + (vec2.z - vec2.atZ) * cos)) / 100000\n\t\t\t\t};\n\t\t\t};\n\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t//console.log('aim info: ', data);\n\t\t\t\tvar doc = document.getElementById('scene');\n\t\t\t\tvar track = document.getElementById('track');\n\t\t\t\tvar ship = m_entity[data[0].id];\n\n\t\t\t\tvar shipRot = ship.getAttribute('rotation');\n\t\t\t\t//console.log(\"rot info: \", shipRot);\n\n\t\t\t\t// var action = null;\n\t\t\t\t// if (ship.className == \"boat\") {\n\t\t\t\t// \tfor(var i = 0; i < ship.childNodes.length; i++) {\n\t\t\t\t// \t\tif (ship.childNodes[i].className === \"aimShip\") {\n\t\t\t\t// \t\t\taction = ship.childNodes[i];\n\t\t\t\t// \t\t\tbreak;\n\t\t\t\t// \t\t}\n\t\t\t\t// \t}\n\t\t\t\t// \tif (action) {\n\t\t\t\t// \t\tvar shipY = ship.getAttribute('rotation').y;\n\t\t\t\t// \t\tvar current = action.getAttribute(\"rotation\").y;\n\t\t\t\t// \t\tvar radian = Math.atan((data[0].atZ-data[0].z)/(data[0].atX-data[0].x));\n\t\t\t\t// \t\tvar degree = -radian * 180 / Math.PI;\n\t\t\t\t// \t\tconsole.log(\"ship r: \", degree, current);\n\t\t\t\t// \t\tconsole.log(\"ship current rotation\", shipY);\n\t\t\t\t// \t\tvar rotated = rotateVector(data[0], shipY);\n\t\t\t\t// \t\tconsole.log(\"aim r: \", rotated);\n\t\t\t\t// \t\t//action.setAttribute('look-at', rotated);\n\t\t\t\t// \t\taction.setAttribute('rotation', '0 ' + (degree-shipY) + ' 0');\n\t\t\t\t// \t\t//action.removeAttribute('look-at');\n\t\t\t\t// \t}\n\t\t\t\t// }\n\n\t\t\t\tresolve();\n\t\t\t});\n\t\t},\n\n\t\thitShip: function hitShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar ship = m_entity[data[0].id];\n\t\t\t\tvar heart = \"\";\n\n\t\t\t\tfor (var i = 0; i < data[0].health; i++) {\n\t\t\t\t\theart += \" •\";\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < ship.childNodes.length; i++) {\n\t\t\t\t\tif (ship.childNodes[i].className == \"ship-health\") {\n\t\t\t\t\t\tship.childNodes[i].setAttribute('text-geometry', 'value: ' + heart + ';');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t\t},\n\n\t\t// Data passed in must be for movement of one ship\n\t\tmoveShip: function moveShip(data) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar shipDom = m_entity[data[0].id]; // html element\n\t\t\t\t// if statement is not working\n\t\t\t\t// if (data.length === 1 && data[0].x === shipDom.dataset.x && data[0].z === shipDom.dataset.z) {\n\t\t\t\t// // if shipDom tries to move against edge or occupied place\n\t\t\t\t// alert(\"Skipped\");\n\t\t\t\t// resolve(\"Skipped\");\n\t\t\t\t// }\n\n\t\t\t\tvar doc = document.getElementById('scene'); // reference\n\t\t\t\tvar track = document.getElementById('track');\n\t\t\t\t//var startCoord = {\"x\": data[0].x};\n\n\t\t\t\tvar debug = document.createElement('a-draw-curve');\n\t\t\t\tdebug.setAttribute('curveref', '#track');\n\t\t\t\tdebug.setAttribute('material', 'shader: line; color: blue;');\n\t\t\t\tdoc.appendChild(debug);\n\n\t\t\t\t// add current location as a starting point of the curve\n\t\t\t\tvar point = document.createElement('a-curve-point');\n\t\t\t\tpoint.setAttribute('position', String(shipDom.dataset.x + \" \" + shipDom.dataset.y + \" \" + shipDom.dataset.z));\n\t\t\t\ttrack.appendChild(point);\n\t\t\t\t// add chain-able goal locations to the curve\n\n\t\t\t\t//previous is used to check for movement against walls, e.g. previous location same as current and next\n\t\t\t\t//previous can also be used to get the last action which determines the final rotation where the ship should point\n\t\t\t\tvar previous = { 'x': shipDom.dataset.x, 'z': shipDom.dataset.z };\n\t\t\t\tvar xDistance = 0;\n\t\t\t\tvar zDistance = 0;\n\t\t\t\t//console.log(\"Moving: \", data);\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\tpoint = document.createElement('a-curve-point');\n\t\t\t\t\tpoint.setAttribute('position', data[i].x + \" \" + data[i].y + \" \" + data[i].z);\n\t\t\t\t\txDistance += Math.abs(data[i].x - previous.x);\n\t\t\t\t\tzDistance += Math.abs(data[i].z - previous.z);\n\t\t\t\t\tif (i + 1 < data.length && data[i].x === data[i + 1].x && data[i].z === data[i + 1].z) {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\ttrack.appendChild(point);\n\t\t\t\t\tprevious = { 'x': data[i].x, 'z': data[i].z, 'direction': data[i].direction };\n\t\t\t\t}\n\n\t\t\t\tvar dur = (xDistance + zDistance) * m_Constants.WaitTimePerTileMoved; // determines the length in time of the movement \n\t\t\t\tshipDom.setAttribute('alongpath', 'curve: #track; rotate: true; constraint: 0 0 -1; delay: ' + m_Constants.WaitTimeBetweenAction + '; dur: ' + dur + ';');\n\n\t\t\t\tvar done = function done(event) {\n\t\t\t\t\t// var list = document.getElementByTagName('a-draw-curve');\n\t\t\t\t\t// for (var i = 0; i < list.length; i++) {\n\t\t\t\t\t// list[0].parentNode.removeChild(list[0]);\n\t\t\t\t\t// }\n\t\t\t\t\tif (debug.parentNode) {\n\t\t\t\t\t\tdoc.removeChild(debug);\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (track.hasChildNodes()) {\n\t\t\t\t\t\ttrack.removeChild(track.childNodes[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\tshipDom.removeAttribute('alongpath');\n\t\t\t\t\tshipDom.dataset.x = data[data.length - 1].x;\n\t\t\t\t\tshipDom.dataset.z = data[data.length - 1].z;\n\t\t\t\t\tshipDom.dataset.y = data[data.length - 1].y;\n\n\t\t\t\t\t//shipDom.removeEventListener('movingended', done);\n\t\t\t\t\tresolve(event);\n\t\t\t\t};\n\n\t\t\t\tshipDom.addEventListener('movingended', done);\n\t\t\t});\n\t\t},\n\n\t\tsimulate: function simulate() {\n\t\t\t//console.log(\"chain: \", m_chain);\n\t\t\tvar notStop = true;\n\t\t\tif (m_chain.length == 0) {\n\t\t\t\tnotStop = false;\n\t\t\t}\n\t\t\tvar current = m_chain.shift(); // don't shift when length is zero\n\t\t\tif (current && notStop) {\n\t\t\t\t//console.log(\"current: \", current);\n\t\t\t\tswitch (current.type) {\n\t\t\t\t\tcase \"MOVE\":\n\t\t\t\t\t\tapp.moveShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\t//alert(\"Moved \" + m_chain.length + \" actions left\");\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"FIRE\":\n\t\t\t\t\t\t/*** Exclusive Or functions ***/\n\n\t\t\t\t\t\t/* Fire without aiming */\n\t\t\t\t\t\tapp.fireShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.error(\"error: \", err);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// /* Aim then fire (currently buggy)*/\n\t\t\t\t\t\t// app.aimShip(current.actions).then((done) => {\n\t\t\t\t\t\t// \tapp.fireShip(current.actions).then((done) => {\n\t\t\t\t\t\t// \t\tapp.simulate();\n\t\t\t\t\t\t// \t}).catch((err) => {\n\t\t\t\t\t\t// \t\tconsole.error(\"error: \", err);\t\n\t\t\t\t\t\t// \t});\n\t\t\t\t\t\t// }).catch((err) => {\n\t\t\t\t\t\t// \tconsole.error(\"error: \", err);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"HIT\":\n\t\t\t\t\t\tapp.hitShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"SINK\":\n\t\t\t\t\t\tapp.sinkShip(current.actions).then(function (done) {\n\t\t\t\t\t\t\t//alert(\"Sunk \"+ m_chain.length + \" actions left\");\n\t\t\t\t\t\t\tapp.simulate();\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn(\"Unknown Action Type \" + current.type + \" in simulate function, skipping.\");\n\t\t\t\t\t\tapp.simulate();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t//alert(\"Simulation Done\");\n\t\t\t\t\tvex.dialog.alert(\"Simulation Completed.\");\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t},\n\n\t\t/** translates the coordinate in the java game to this scene's coordinate\n \tJava Game: Each ship spans one (x, y) unit\n \tJava Game: Coordinate system has (0, 0) at top left corner (without negatives)\n \tAFrame Scene: Each ship model is a 4x4 box\n \tAFrame Scene: Coordinate system is (0, 0) at the center (with negatives)\n */\n\t\tgetStrCoord: function getStrCoord(coord, offsetY) {\n\t\t\treturn (m_ocean.x - coord.x) * 4 + \" \" + offsetY + \" \" + (m_ocean.y - coord.y) * 4;\n\t\t},\n\n\t\tgetShips: function getShips() {\n\t\t\treturn m_ships;\n\t\t},\n\n\t\tgetOcean: function getOcean() {\n\t\t\treturn m_ocean;\n\t\t}\n\n\t};\n\n\treturn app;\n}\n\nvar app = battleship();\nvar params = getQueryParams(document.location.search);\n\nvar getDataFromCode = function getDataFromCode(code) {\n\tdb.ref('davy-jones-locker/' + code).once('value', function (snapshot) {\n\t\tvar gameData = snapshot.val();\n\t\tif (gameData) {\n\t\t\tinput = gameData;\n\t\t\tapp.init();\n\t\t} else {\n\t\t\tgetCode(\"No data for code \" + code + \". Enter another code:\");\n\t\t\t//app.init();\n\t\t}\n\t}).catch(function (err) {\n\t\tgetCode(\"There was an error. Enter another code:\");\n\t\t//app.init();\n\t});\n};\n\nvar getCode = function getCode(message) {\n\tvex.dialog.prompt({\n\t\tmessage: message,\n\t\tcallback: function callback(value) {\n\t\t\tif (value) {\n\t\t\t\tvar code = value;\n\t\t\t\tgetDataFromCode(code);\n\t\t\t} else {\n\t\t\t\tgetCode(\"No code entered. Enter your code:\");\n\t\t\t}\n\t\t}\n\t});\n};\n\nif (params.code) {\n\tgetDataFromCode(params.code);\n} else {\n\tgetCode(\"Enter Your Code\");\n}\n\n// var BATTLE_SERVER_URL = 'https://battleship-vingkan.c9users.io/1v1?p1=esi17.cs.DestroyerShip&p2=esi17.hli109.Floater';// + Math.ceil(Math.random() * 100);\n\n// $.get(BATTLE_SERVER_URL).then(data => {\n// \tinput = data;\n// \tapp.init();\n// }).done(() => {\n// \tconsole.log(\"Data successfully retrieved from server\");\n// }).fail(() => {\n// \tconsole.log(\"Unable to retrieve data, starting with local data\");\n// \tapp.init();\n// });\n\n},{}]},{},[1])\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvbWFpbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0FDQUE7QUFDQSxJQUFJLFNBQVM7QUFDWixTQUFRLHlDQURJO0FBRVosYUFBWSwwQkFGQTtBQUdaLGNBQWEsaUNBSEQ7QUFJWixZQUFXLFVBSkM7QUFLWixnQkFBZSxzQkFMSDtBQU1aLG9CQUFtQjtBQU5QLENBQWI7QUFRQSxJQUFJLG1CQUFtQixTQUFTLGFBQVQsQ0FBdUIsTUFBdkIsRUFBK0Isb0JBQS9CLENBQXZCOztBQUVBLElBQUksS0FBSyxpQkFBaUIsUUFBakIsRUFBVDs7QUFFQSxTQUFTLGNBQVQsQ0FBd0IsRUFBeEIsRUFBNEI7QUFDM0IsTUFBSyxHQUFHLEtBQUgsQ0FBUyxHQUFULEVBQWMsSUFBZCxDQUFtQixHQUFuQixDQUFMO0FBQ0EsS0FBSSxTQUFTLEVBQWI7QUFBQSxLQUNDLE1BREQ7QUFBQSxLQUVDLEtBQUssdUJBRk47QUFHQSxRQUFPLFNBQVMsR0FBRyxJQUFILENBQVEsRUFBUixDQUFoQixFQUE2QjtBQUM1QixTQUFPLG1CQUFtQixPQUFPLENBQVAsQ0FBbkIsQ0FBUCxJQUF3QyxtQkFBbUIsT0FBTyxDQUFQLENBQW5CLENBQXhDO0FBQ0E7QUFDRCxRQUFPLE1BQVA7QUFDQTs7QUFFRCxTQUFTLFVBQVQsR0FBc0I7O0FBRXJCO0FBQ0EsS0FBSSxjQUFjO0FBQ2pCLGlCQUFlLEVBREU7QUFFakIsZ0JBQWMsQ0FGRztBQUdqQixnQkFBYyxFQUhHO0FBSWpCLGVBQWEsQ0FKSTtBQUtqQixnQkFBYyxDQUxHO0FBTWpCLGFBQVcsQ0FOTTtBQU9qQix3QkFBc0IsR0FQTDtBQVFqQix5QkFBdUIsRUFSTixDQVFTO0FBUlQsRUFBbEI7O0FBV0EsS0FBSSxVQUFVLEVBQWQ7O0FBRUEsS0FBSSxVQUFVLEVBQWQsQ0FoQnFCLENBZ0JIO0FBQ2xCLEtBQUksVUFBVSxFQUFkLENBakJxQixDQWlC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QUosQ0FBVyxNQUFYLENBQWtCO0FBQ2pCLFdBQVMsT0FEUTtBQUVqQixZQUFVLGtCQUFDLEtBQUQsRUFBVztBQUNwQixPQUFJLEtBQUosRUFBVztBQUNWLFFBQUksT0FBTyxLQUFYO0FBQ0Esb0JBQWdCLElBQWhCO0FBQ0EsSUFIRCxNQUdPO0FBQ04sWUFBUSxtQ0FBUjtBQUNBO0FBQ0Q7QUFUZ0IsRUFBbEI7QUFXQSxDQVpEOztBQWNBLElBQUksT0FBTyxJQUFYLEVBQWlCO0FBQ2hCLGlCQUFnQixPQUFPLElBQXZCO0FBQ0EsQ0FGRCxNQUVPO0FBQ04sU0FBUSxpQkFBUjtBQUNBOztBQUdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvLyBJbml0aWFsaXplIEZpcmViYXNlXG52YXIgY29uZmlnID0ge1xuXHRhcGlLZXk6IFwiQUl6YVN5QTlFWVVYVkw1V0FoNkFhbTFxWGxXeXZpM2I3SExjWjFVXCIsXG5cdGF1dGhEb21haW46IFwiZXNpZ2FtbWEuZmlyZWJhc2VhcHAuY29tXCIsXG5cdGRhdGFiYXNlVVJMOiBcImh0dHBzOi8vZXNpZ2FtbWEuZmlyZWJhc2Vpby5jb21cIixcblx0cHJvamVjdElkOiBcImVzaWdhbW1hXCIsXG5cdHN0b3JhZ2VCdWNrZXQ6IFwiZXNpZ2FtbWEuYXBwc3BvdC5jb21cIixcblx0bWVzc2FnaW5nU2VuZGVySWQ6IFwiNzM0MTYzNjM2MDM5XCJcbn07XG52YXIgRmlyZWJhc2VJbnN0YW5jZSA9IGZpcmViYXNlLmluaXRpYWxpemVBcHAoY29uZmlnLCBcIkRhdnkgSm9uZXMnIExvY2tlclwiKTtcblxudmFyIGRiID0gRmlyZWJhc2VJbnN0YW5jZS5kYXRhYmFzZSgpO1xuXG5mdW5jdGlvbiBnZXRRdWVyeVBhcmFtcyhxcykge1xuXHRxcyA9IHFzLnNwbGl0KCcrJykuam9pbignICcpO1xuXHR2YXIgcGFyYW1zID0ge30sXG5cdFx0dG9rZW5zLFxuXHRcdHJlID0gL1s/Jl0/KFtePV0rKT0oW14mXSopL2c7XG5cdHdoaWxlICh0b2tlbnMgPSByZS5leGVjKHFzKSkge1xuXHRcdHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQodG9rZW5zWzFdKV0gPSBkZWNvZGVVUklDb21wb25lbnQodG9rZW5zWzJdKTtcblx0fVxuXHRyZXR1cm4gcGFyYW1zO1xufVxuXG5mdW5jdGlvbiBiYXR0bGVzaGlwKCkge1xuXHRcblx0Ly8gcHJpdmF0ZVxuXHR2YXIgbV9Db25zdGFudHMgPSB7XG5cdFx0Q2FtZXJhWU9mZnNldDogMjUsXG5cdFx0T2NlYW5ZT2Zmc2V0OiAwLFxuXHRcdE9jZWFuUGFkZGluZzogMTAsXG5cdFx0U2hpcFlPZmZzZXQ6IDAsXG5cdFx0U2lua0Rpc3RhbmNlOiA1LFxuXHRcdEJ1bGxldEFyYzogMixcblx0XHRXYWl0VGltZVBlclRpbGVNb3ZlZDogMzAwLFxuXHRcdFdhaXRUaW1lQmV0d2VlbkFjdGlvbjogNTAgLy8gaW4gbWlsaXNlY29uZHNcblx0fTtcblxuXHR2YXIgbV9pbnB1dCA9IHt9O1xuXHRcblx0dmFyIG1fc2hpcHMgPSBbXTsgLy8gc3RvcmVzIGZvcm1hdHRlZCBqc29uIG9mIHNoaXAgaW5pdGlhbGl6YXRpb25cblx0dmFyIG1fY2hhaW4gPSBbXTsgLy8gc3RvcmVzIGNoYWluYWJsZSBhY3Rpb25zIGluIGEgdHVyblxuXHR2YXIgbV9lbnRpdHkgPSB7fTsgLy8gb2JqZWN0IHdpdGggaWQgdG8gaHRtbCBkb20gZWxlbWVudCBvZiBzaGlwc1xuXG5cdHZhciBtX3Rlc3QgPSAwO1xuXG5cdHZhciBtX29jZWFuOyBcblxuXHQvLyBwdWJsaWNcblx0dmFyIGFwcCA9IHtcblxuXHRcdGluaXQ6ICgpID0+IHtcblx0XHRcdC8vIGRlZmF1bHQgYWNjZXNzIG9mIGRhdGEgd2hlbiB0aGVyZSBhcmUgbm8gY29ubmVjdGl2aXR5XG5cdFx0XHRtX2lucHV0ID0ge1wic2hpcHNcIjogaW5wdXQuaW5pdC5zaGlwcywgXCJ0dXJuc1wiOiBpbnB1dC50dXJucywgXCJvY2VhblwiOiBpbnB1dC5pbml0Lm1hcH07XG5cdFx0XHRhcHAucHJlcHJvY2VzcyhtX2lucHV0KTtcblxuXHRcdFx0dmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuZScpO1xuXHRcdFx0dmFyIHRyYWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZScpO1xuXHRcdFx0dHJhY2suc2V0QXR0cmlidXRlKCdpZCcsICd0cmFjaycpO1xuXHRcdFx0dHJhY2suc2V0QXR0cmlidXRlKCd0eXBlJywgJ0xpbmUnKTtcblx0XHRcdGRvYy5hcHBlbmRDaGlsZCh0cmFjayk7XG5cblx0XHRcdGFwcC5yZW5kZXIobV9zaGlwcyk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRhcHAuc2ltdWxhdGUoKTtcblx0XHRcdH0sIDEwMDAwKTtcblx0XHRcdC8vIGNhbGwgZnVuY3Rpb24gdG8gd2FpdCBhIGJpdCBiZWZvcmUgc3RhcnRpbmcgc2ltdWxhdGlvblxuXHRcdFx0Ly9hcHAuc2ltdWxhdGUoKTtcblx0XHR9LFxuXG5cdFx0cHJlcHJvY2VzczogKGRhdGEpID0+IHtcblx0XHRcdHZhciB0cmFuc2xhdGUgPSAoZCkgPT4ge1xuXHRcdFx0XHR2YXIgcmVzID0gZDtcblx0XHRcdFx0aWYgKHJlcy5oYXNPd25Qcm9wZXJ0eShcImF0WFwiKSAmJiByZXMuaGFzT3duUHJvcGVydHkoXCJhdFlcIikpIHtcblx0XHRcdFx0XHRyZXNbJ2F0WCddID0gNCpkLmF0WDtcblx0XHRcdFx0XHRyZXNbJ2F0WiddID0gNCpkLmF0WTsgLy8gbWFrZSBzdXJlIHRvIG1vdmUgdGhlIHkgcHJvcGVydHkgYmVmb3JlIG92ZXJyaWRpbmcgaXRcblx0XHRcdFx0XHRyZXNbJ2F0WSddID0gbV9Db25zdGFudHMuU2hpcFlPZmZzZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzLnggPSA0KmQueDtcblx0XHRcdFx0cmVzLnogPSA0KmQueTsgLy8gbWFrZSBzdXJlIHRvIG1vdmUgdGhlIHkgcHJvcGVydHkgYmVmb3JlIG92ZXJyaWRpbmcgaXRcblx0XHRcdFx0cmVzLnkgPSBtX0NvbnN0YW50cy5TaGlwWU9mZnNldDtcblx0XHRcdFx0cmV0dXJuIHJlcztcblx0XHRcdH07XG5cdFx0XHR2YXIgYWN0aW9ucyA9IFtdO1xuXHRcdFx0dmFyIGluZGV4ID0gMDtcblxuXHRcdFx0Ly8gcHJlcHJvY2VzcyBpbml0aWFsIG1hcCBpbmZvcm1hdGlvblxuXHRcdFx0Ly8gbV9vY2VhbiA9IHsgXCJ4XCI6ICgoNCpNYXRoLmZsb29yKGRhdGEub2NlYW4ueC8yKSktMikgKyAobV9Db25zdGFudHMuT2NlYW5QYWRkaW5nLzIpLFxuXHRcdFx0Ly8gICAgICAgICAgICAgXCJ5XCI6IG1fQ29uc3RhbnRzLk9jZWFuWU9mZnNldCwgXG5cdFx0XHQvLyAgICAgICAgICAgICBcInpcIjogKCg0Kk1hdGguZmxvb3IoZGF0YS5vY2Vhbi55LzIpKSkgKyAobV9Db25zdGFudHMuT2NlYW5QYWRkaW5nLzIpLCBcblx0XHRcdC8vICAgICAgICAgICAgIFwid2lkdGhcIjogKDQqZGF0YS5vY2Vhbi54KSttX0NvbnN0YW50cy5PY2VhblBhZGRpbmcsIFxuXHRcdFx0Ly8gICAgICAgICAgICAgXCJkZXB0aFwiOiAoNCpkYXRhLm9jZWFuLnkpK21fQ29uc3RhbnRzLk9jZWFuUGFkZGluZywgXG5cdFx0XHQvLyAgICAgICAgICAgICBcImRlbnNpdHlcIjogTWF0aC5taW4oMypkYXRhLm9jZWFuLngsIDMqZGF0YS5vY2Vhbi55KSttX0NvbnN0YW50cy5PY2VhblBhZGRpbmdcblx0XHRcdC8vICAgICAgICAgfTtcblx0XHRcdG1fb2NlYW4gPSB7IFwieFwiOiAoKDQqTWF0aC5mbG9vcihkYXRhLm9jZWFuLngvMikpLTIpLFxuXHRcdFx0XHRcdFx0XCJ5XCI6IG1fQ29uc3RhbnRzLk9jZWFuWU9mZnNldCwgXG5cdFx0XHRcdFx0XHRcInpcIjogKCg0Kk1hdGguZmxvb3IoZGF0YS5vY2Vhbi55LzIpKSksXG5cdFx0XHRcdFx0XHRcIndpZHRoXCI6IDQwMCwgXG5cdFx0XHRcdFx0XHRcImRlcHRoXCI6IDQwMCxcblx0XHRcdFx0XHRcdFwiZGVuc2l0eVwiOiAyNDAsXG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0Ly8gcHJlcHJvY2VzcyBpbml0aWFsIHNoaXAgaW5mb3JtYXRpb25cblx0XHRcdGRhdGEuc2hpcHMuZm9yRWFjaCgoZW50cnkpID0+IHtcblx0XHRcdFx0bV9zaGlwcy5wdXNoKHRyYW5zbGF0ZShlbnRyeSkpO1xuXHRcdFx0fSk7XG5cblx0XHRcdC8vIHByZXByb2Nlc3MgYWN0aW9ucyBhbmQgdHVybnMgaW5mb3JtYXRpb25cblx0XHRcdHdoaWxlKGluZGV4IDwgZGF0YS50dXJucy5sZW5ndGgpIHtcblx0XHRcdFx0dmFyIGNoYWluID0gdHJ1ZTtcblx0XHRcdFx0d2hpbGUoY2hhaW4pIHtcblx0XHRcdFx0XHRpZiAoaW5kZXggPT09IGRhdGEudHVybnMubGVuZ3RoKVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRpZiAoYWN0aW9ucy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdGFjdGlvbnMucHVzaCh0cmFuc2xhdGUoZGF0YS50dXJuc1tpbmRleF0pKTtcblx0XHRcdFx0XHRcdGluZGV4Kys7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIFNoaXAgaWQgYW5kIGFjdGlvbiB0eXBlIGhhcyB0byBiZSB0aGUgc2FtZSB0byBiZSBjb25zaWRlcmVkIGEgY2hhaW4tYWJsZSBhY3Rpb25cblx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb25zWzBdLmlkID09PSBkYXRhLnR1cm5zW2luZGV4XS5pZCAmJiBhY3Rpb25zWzBdLnR5cGUgPT09IGRhdGEudHVybnNbaW5kZXhdLnR5cGUpIHtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25zWzBdLnR5cGUgPT09IFwiTU9WRVwiKSB7XG5cdFx0XHRcdFx0XHRcdGFjdGlvbnMucHVzaCh0cmFuc2xhdGUoZGF0YS50dXJuc1tpbmRleF0pKTtcblx0XHRcdFx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIEZpcmluZyBtdXN0IGJlIGF0IHRoZSBzYW1lIGNvb3JkaW5hdGVzIHRvIGJlIGNvbnNpZGVyZWQgYSBjaGFpbi1hYmxlIGFjdGlvblxuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uc1swXS50eXBlID09PSBcIkZJUkVcIiAmJiBhY3Rpb25zWzBdLmF0WCA9PT0gNCooZGF0YS50dXJuc1tpbmRleF0uYXRYKSAmJiBhY3Rpb25zWzBdLmF0WSA9PT0gNCooZGF0YS50dXJuc1tpbmRleF0uYXRZKSkge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb25zLnB1c2godHJhbnNsYXRlKGRhdGEudHVybnNbaW5kZXhdKSk7XG5cdFx0XHRcdFx0XHRcdGluZGV4Kys7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIGlmKGFjdGlvbnNbMF0udHlwZSA9PT0gXCJTSU5LXCIpIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9ucy5wdXNoKHRyYW5zbGF0ZShkYXRhLnR1cm5zW2luZGV4XSkpO1xuXHRcdFx0XHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNoYWluID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2hhaW4gPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gYWRkIGFjdGlvbiBjaGFpbiB0byB2YXJpYWJsZVxuXHRcdFx0XHRtX2NoYWluLnB1c2goe1widHlwZVwiOiBhY3Rpb25zWzBdLnR5cGUsIFwiYWN0aW9uc1wiOiBhY3Rpb25zfSk7XG5cdFx0XHRcdC8vIHJlc2V0IGNoYWluIGFjdGlvbnNcblx0XHRcdFx0YWN0aW9ucyA9IFtdO1xuXHRcdFx0fVxuXHRcdH0sXG5cblxuXG5cdFx0Ly8gRGlzcGxheXMgdGhlIG9jZWFuLCBhbmQgc2hpcHNcblx0XHQvLyBUT0RPOiBjaGVjayB0aGUgZWRnZSBjYXNlcyB3aXRoIHRoZSBtYXAgZWRnZXMvc2l6ZXNcblx0XHRyZW5kZXI6IChzaGlwRGF0YSkgPT4ge1xuXHRcdFx0dmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuZScpOyAvLyA8YS1zY2VuZT4gcmVmZXJlbmNlXG5cblx0XHRcdC8vIHJlLXBvc2l0aW9uIGNhbWVyYTogY2FtZXJhIG11c3QgYmUgYWxyZWFkeSBwcmVzZW50IHdoZW4gaHRtbCBsb2Fkc1xuXHRcdFx0dmFyIGNhbWVyYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW1lcmEnKTtcblx0XHRcdC8vY2FtZXJhLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBtX29jZWFuLnggKyBcIiBcIiArIG1fb2NlYW4ueSArIFwiIFwiICsgbV9vY2Vhbi56KTtcblx0XHRcdGNhbWVyYS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgbV9vY2Vhbi54ICsgXCIgXCIgKyBtX29jZWFuLnkgKyBcIiBcIiArIChtX29jZWFuLnorKDEuNSptX29jZWFuLngpKSk7XG5cdFx0XHRjYW1lcmEuc2V0QXR0cmlidXRlKCdjYW1lcmEnLCAndXNlckhlaWdodDogJyArIG1fQ29uc3RhbnRzLkNhbWVyYVlPZmZzZXQpO1xuXHRcdFx0Ly9jYW1lcmEuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsIC1NYXRoLmF0YW4obV9Db25zdGFudHMuQ2FtZXJhWU9mZnNldC8obV9vY2Vhbi56K21fb2NlYW4ueCkpKTsgLy8gVE9ETzogY2hlY2sgaWYgdGhlIHN0cmluZyBpcyBhIHZlYzNcblx0XHRcdGNhbWVyYS5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywgJy01MCAwIDAnKTtcblxuXHRcdFx0Ly8gR2VuZXJhdGUgTWFwXG5cdFx0XHQvLyBUT0RPOiBQb3NzaWJsZSBlZGdlIGNhc2VzIHdpdGggdGhlIG1hcCBlZGdlIG5vdCBiZWluZyBiaWcgZW5vdWdoXG5cdFx0XHR2YXIgbWFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1vY2VhbicpO1xuXG5cdFx0XHRtYXAuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIG1fb2NlYW4ueCArIFwiIFwiICsgbV9vY2Vhbi55ICsgXCIgXCIgKyBtX29jZWFuLnopO1xuXHRcdFx0bWFwLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBTdHJpbmcobV9vY2Vhbi53aWR0aCkpO1xuXHRcdFx0bWFwLnNldEF0dHJpYnV0ZSgnZGVwdGgnLCBTdHJpbmcobV9vY2Vhbi5kZXB0aCkpO1xuXHRcdFx0bWFwLnNldEF0dHJpYnV0ZSgnZGVuc2l0eScsIFN0cmluZyhtX29jZWFuLmRlbnNpdHkpKTtcblx0XHRcdGRvYy5hcHBlbmRDaGlsZChtYXApO1xuXG5cdFx0XHR2YXIgc3Bhd25TaGlwID0gKGVudHJ5KSA9PiB7XG5cdFx0XHRcdHZhciBzaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1lbnRpdHknKTtcblxuXHRcdFx0XHRzaGlwLmRhdGFzZXQuaWQgPSBlbnRyeS5pZDtcblx0XHRcdFx0c2hpcC5kYXRhc2V0Lm5hbWUgPSBlbnRyeS5uYW1lO1xuXHRcdFx0XHRzaGlwLmRhdGFzZXQub3duZXIgPSBlbnRyeS5vd25lcjtcblx0XHRcdFx0c2hpcC5kYXRhc2V0LnggPSBlbnRyeS54O1xuXHRcdFx0XHRzaGlwLmRhdGFzZXQueSA9IGVudHJ5Lnk7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC56ID0gZW50cnkuejtcblx0XHRcdFx0c2hpcC5kYXRhc2V0LmhlYWx0aCA9IGVudHJ5Lmh1bGw7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC5odWxsID0gZW50cnkuaHVsbDtcblx0XHRcdFx0c2hpcC5kYXRhc2V0LmZpcmVwb3dlciA9IGVudHJ5LmZpcmVwb3dlcjtcblx0XHRcdFx0c2hpcC5kYXRhc2V0LnNwZWVkID0gZW50cnkuc3BlZWQ7XG5cdFx0XHRcdHNoaXAuZGF0YXNldC5yYW5nZSA9IGVudHJ5LnJhbmdlO1xuXG5cdFx0XHRcdHZhciBoZWFydCA9IFwiXCI7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcGFyc2VJbnQoZW50cnkuaHVsbCk7IGkrKykge1xuXHRcdFx0XHRcdGhlYXJ0ICs9IFwiIOKAolwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0c2hpcC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZW50cnkueCArIFwiIFwiICsgZW50cnkueSArIFwiIFwiICsgZW50cnkueik7XG5cblx0XHRcdFx0aWYgKGVudHJ5LmNvbG9yID09PSBcInJnYigyNTUsIDI1NSwgMClcIikge1xuXHRcdFx0XHRcdHNoaXAuc2V0QXR0cmlidXRlKCd0ZW1wbGF0ZScsICdzcmM6ICNzdWJtYXJpbmUtdGVtcGxhdGUnKTtcblx0XHRcdFx0XHRzaGlwLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnc3VibWFyaW5lJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0c2hpcC5zZXRBdHRyaWJ1dGUoJ3RlbXBsYXRlJywgJ3NyYzogI2JvYXQtdGVtcGxhdGUnKTtcblx0XHRcdFx0XHRzaGlwLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnYm9hdCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gJHt2YXJpYWJsZX0gPC0gdmFyaWFibGUgbmFtZSBiZSBsb3dlciBjYXNlXG5cdFx0XHRcdHNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLXNoaXBfY29sb3InLCAnY29sb3I6ICcrZW50cnkuY29sb3IrJzsgbWV0YWxuZXNzOiAwLjQ7Jyk7XG5cdFx0XHRcdHNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLXNoaXBfbmFtZScsICd2YWx1ZTogJytlbnRyeS5uYW1lKyc7IGZvbnQ6ICNwbGF5OycpO1xuXHRcdFx0XHRzaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1zaGlwX2hlYWx0aCcsICd2YWx1ZTogJytoZWFydCsnOycpO1xuXG5cdFx0XHRcdHZhciBzaGlwSW5zdGFuY2UgPSBkb2MuYXBwZW5kQ2hpbGQoc2hpcCk7XG5cdFx0XHRcdG1fZW50aXR5W2VudHJ5LmlkXSA9IHNoaXBJbnN0YW5jZTtcblx0XHRcdH07XG5cdFx0XHQvLyBzcGF3biB0aGUgc2hpcHMhXG5cdFx0XHRzaGlwRGF0YS5mb3JFYWNoKChlbnRyeSkgPT4ge1xuXHRcdFx0XHRzcGF3blNoaXAoZW50cnkpO1xuXHRcdFx0fSlcblx0XHR9LFxuXG5cdFx0c2lua1NoaXA6IChkYXRhKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHR2YXIgZG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5lJyk7XG5cdFx0XHRcdHZhciB0cmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFjaycpO1xuXHRcdFx0XHR2YXIgc2hpcERvbSA9IG1fZW50aXR5W2RhdGFbMF0uaWRdO1xuXG5cdFx0XHRcdHZhciBkZWJ1ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EtZHJhdy1jdXJ2ZScpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ2N1cnZlcmVmJywgJyN0cmFjaycpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ21hdGVyaWFsJywgJ3NoYWRlcjogbGluZTsgY29sb3I6IGJsYWNrOycpO1xuXHRcdFx0XHRkb2MuYXBwZW5kQ2hpbGQoZGVidWcpO1xuXG5cdFx0XHRcdHZhciBwb2ludDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLWN1cnZlLXBvaW50Jyk7XG5cdFx0XHRcdHZhciBwb2ludDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLWN1cnZlLXBvaW50Jyk7XG5cdFx0XHRcdHBvaW50MS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YVswXS54ICsgXCIgXCIgKyBkYXRhWzBdLnkgKyBcIiBcIiArIGRhdGFbMF0ueik7XG5cdFx0XHRcdHBvaW50Mi5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YVswXS54ICsgXCIgXCIgKyAoZGF0YVswXS55LW1fQ29uc3RhbnRzLlNpbmtEaXN0YW5jZSkgKyBcIiBcIiArIGRhdGFbMF0ueik7XG5cdFx0XHRcdHRyYWNrLmFwcGVuZENoaWxkKHBvaW50MSk7XG5cdFx0XHRcdHRyYWNrLmFwcGVuZENoaWxkKHBvaW50Mik7XG5cblx0XHRcdFx0c2hpcERvbS5zZXRBdHRyaWJ1dGUoJ2Fsb25ncGF0aCcsICdjdXJ2ZTogI3RyYWNrOyByb3RhdGU6IGZhbHNlOyBkZWxheTogJyttX0NvbnN0YW50cy5XYWl0VGltZUJldHdlZW5BY3Rpb24rJzsgZHVyOiAxMDAwOycpO1xuXG5cdFx0XHRcdHZhciBkb25lID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0c2hpcERvbS5yZW1vdmVBdHRyaWJ1dGUoJ2Fsb25ncGF0aCcpO1xuXHRcdFx0XHRcdGlmIChkZWJ1Zy5wYXJlbnROb2RlKSB7XG5cdFx0XHRcdFx0XHRkb2MucmVtb3ZlQ2hpbGQoZGVidWcpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHdoaWxlKHRyYWNrLmhhc0NoaWxkTm9kZXMoKSkge1xuXHRcdFx0XHRcdFx0dHJhY2sucmVtb3ZlQ2hpbGQodHJhY2suY2hpbGROb2Rlc1swXSk7XG5cdFx0XHRcdFx0fVxuXG5cblx0XHRcdFx0XHQvL3NoaXBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW92aW5nZW5kZWQnLCBkb25lKTtcblxuXHRcdFx0XHRcdGlmIChzaGlwRG9tLnBhcmVudE5vZGUpIHtcblx0XHRcdFx0XHRcdGRvYy5yZW1vdmVDaGlsZChzaGlwRG9tKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXNvbHZlKGV2ZW50KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRzaGlwRG9tLmFkZEV2ZW50TGlzdGVuZXIoJ21vdmluZ2VuZGVkJywgZG9uZSk7XG5cdFx0XHRcdC8vIHJlc29sdmUoKTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvLyBEYXRhIHBhc3NlZCBpbiBhcmUgb25lIHNoaXBzIGFjdGlvbiBvZiBmaXJpbmcgYXQgb25lIGFuZCBvbmx5IG9uZSBjb29yZGluYXRlXG5cdFx0ZmlyZVNoaXA6IChkYXRhKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHR2YXIgZG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5lJyk7XG5cdFx0XHRcdHZhciB0cmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFjaycpO1xuXHRcdFx0XHR2YXIgc2hpcCA9IG1fZW50aXR5W2RhdGFbMF0uaWRdO1xuXG5cdFx0XHRcdHZhciBidWxsZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLXNwaGVyZScpO1xuXHRcdFx0XHR2YXIgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXHRcdFx0XHR2YXIgYXJjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXG5cdFx0XHRcdC8vIHZhciBzYXZlcyA9IG51bGw7XG5cdFx0XHRcdC8vIGlmIChzaGlwLmNsYXNzTmFtZSA9PT0gXCJzdWJtYXJpbmVcIikge1xuXHRcdFx0XHQvLyBcdGZvciAodmFyIGkgPSAwOyBpIDwgc2hpcC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdC8vIFx0XHRpZiAoc2hpcC5jaGlsZE5vZGVzW2ldLmNsYXNzTmFtZSA9PT0gXCJzdWJtYXJpbmVNaXNzaWxlXCIpIHtcblx0XHRcdFx0Ly8gXHRcdFx0YnVsbGV0ID0gc2hpcC5jaGlsZE5vZGVzW2ldXG5cdFx0XHRcdC8vIFx0XHRcdHNhdmVzID0gYnVsbGV0LmdldEF0dHJpYnV0ZSgncG9zaXRpb24nKTtcblx0XHRcdFx0Ly8gXHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIFx0XHR9XG5cdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHQvLyBcdGNvbnNvbGUubG9nKCdtaXNzaWxlIHN0YXJ0Jywgc2F2ZXMpO1xuXHRcdFx0XHQvLyBcdHNvdXJjZS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgKGRhdGFbMF0ueCtzYXZlcy54KSArIFwiIFwiICsgKGRhdGFbMF0ueStzYXZlcy55KSArIFwiIFwiICsgKGRhdGFbMF0ueitzYXZlcy56KSk7XG5cdFx0XHRcdC8vIFx0YXJjLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCAoZGF0YVswXS54K3NhdmVzLngpICsgXCIgXCIgKyAoZGF0YVswXS55K3NhdmVzLnkrNSkgKyBcIiBcIiArIChkYXRhWzBdLnorc2F2ZXMueikpO1xuXHRcdFx0XHQvLyBcdHRhcmdldC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YVswXS5hdFggKyBcIiBcIiArIGRhdGFbMF0uYXRZICsgXCIgXCIgKyBkYXRhWzBdLmF0Wik7XG5cdFx0XHRcdC8vIFx0dHJhY2suYXBwZW5kQ2hpbGQoc291cmNlKTtcblx0XHRcdFx0Ly8gXHR0cmFjay5hcHBlbmRDaGlsZChhcmMpO1xuXHRcdFx0XHQvLyBcdHRyYWNrLmFwcGVuZENoaWxkKHRhcmdldCk7XG5cdFx0XHRcdC8vIH1cblx0XHRcdFx0Ly8gZWxzZSB7XG5cdFx0XHRcdFx0YnVsbGV0LnNldEF0dHJpYnV0ZSgnY29sb3InLCAnZ3JheScpO1xuXHRcdFx0XHRcdGJ1bGxldC5zZXRBdHRyaWJ1dGUoJ3JhZGl1cycsICcwLjInKTtcblx0XHRcdFx0XHRidWxsZXQuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIGRhdGFbMF0ueCArIFwiIFwiICsgZGF0YVswXS55ICsgXCIgXCIgKyBkYXRhWzBdLnopO1xuXHRcdFx0XHRcdHNvdXJjZS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YVswXS54ICsgXCIgXCIgKyBkYXRhWzBdLnkgKyBcIiBcIiArIGRhdGFbMF0ueik7XG5cdFx0XHRcdFx0YXJjLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCAoZGF0YVswXS5hdFgrZGF0YVswXS54KS8yICsgXCIgXCIgKyAoKChkYXRhWzBdLmF0WStkYXRhWzBdLnkpLzIpK21fQ29uc3RhbnRzLkJ1bGxldEFyYykgKyBcIiBcIiArIChkYXRhWzBdLmF0WitkYXRhWzBdLnopLzIpO1xuXHRcdFx0XHRcdHRhcmdldC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YVswXS5hdFggKyBcIiBcIiArIGRhdGFbMF0uYXRZICsgXCIgXCIgKyBkYXRhWzBdLmF0Wik7XG5cdFx0XHRcdFx0dHJhY2suYXBwZW5kQ2hpbGQoc291cmNlKTtcblx0XHRcdFx0XHR0cmFjay5hcHBlbmRDaGlsZChhcmMpO1xuXHRcdFx0XHRcdHRyYWNrLmFwcGVuZENoaWxkKHRhcmdldCk7XG5cdFx0XHRcdC8vIH1cblxuXHRcdFx0XHR2YXIgZGVidWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLWRyYXctY3VydmUnKTtcblx0XHRcdFx0ZGVidWcuc2V0QXR0cmlidXRlKCdjdXJ2ZXJlZicsICcjdHJhY2snKTtcblx0XHRcdFx0ZGVidWcuc2V0QXR0cmlidXRlKCdtYXRlcmlhbCcsICdzaGFkZXI6IGxpbmU7IGNvbG9yOiByZWQ7Jyk7XG5cdFx0XHRcdGRvYy5hcHBlbmRDaGlsZChkZWJ1Zyk7XG5cblx0XHRcdFx0dmFyIHRtcCA9IGRvYy5hcHBlbmRDaGlsZChidWxsZXQpO1xuXHRcdFx0XHR2YXIgZGlzdGFuY2UgPSBNYXRoLnNxcnQoKGRhdGFbMF0uYXRYLWRhdGFbMF0ueCkqKGRhdGFbMF0uYXRYLWRhdGFbMF0ueCkgKyAoZGF0YVswXS5hdFotZGF0YVswXS56KSooZGF0YVswXS5hdFotZGF0YVswXS56KSkrbV9Db25zdGFudHMuQnVsbGV0QXJjKm1fQ29uc3RhbnRzLkJ1bGxldEFyYztcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhcImRpc3RhbmNlOiBcIiwgZGlzdGFuY2UpO1xuXHRcdFx0XHR0bXAuc2V0QXR0cmlidXRlKCdhbG9uZ3BhdGgnLCAnY3VydmU6ICN0cmFjazsgcm90YXRlOiB0cnVlOyBjb25zdGFudDogMCAtMSAwOyBkZWxheTogMTAwOyBkdXI6ICcgKyAyNSpkaXN0YW5jZSk7XG5cblx0XHRcdFx0dmFyIGRvbmUgPSAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHR0bXAucmVtb3ZlQXR0cmlidXRlKCdhbG9uZ3BhdGgnKTtcblx0XHRcdFx0XHRpZiAoZGVidWcucGFyZW50Tm9kZSkge1xuXHRcdFx0XHRcdFx0ZG9jLnJlbW92ZUNoaWxkKGRlYnVnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0d2hpbGUodHJhY2suaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRcdFx0XHR0cmFjay5yZW1vdmVDaGlsZCh0cmFjay5jaGlsZE5vZGVzWzBdKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvL3RtcC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3ZpbmdlbmRlZCcsIGRvbmUpO1xuXHRcdFx0XHRcdGlmICh0bXAucGFyZW50Tm9kZSkge1xuXHRcdFx0XHRcdFx0ZG9jLnJlbW92ZUNoaWxkKHRtcCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGlmIChzaGlwLmNsYXNzTmFtZSA9PT0gXCJzdWJtYXJpbmVcIikge1xuXHRcdFx0XHRcdC8vIFx0dmFyIHJlbG9hZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EtZW50aXR5Jyk7XG5cdFx0XHRcdFx0Ly8gXHRyZWxvYWQuc2V0QXR0cmlidXRlKCdjbGFzcycsICdzdWJtYXJpbmVNaXNzaWxlJyk7XG5cdFx0XHRcdFx0Ly8gXHRyZWxvYWQuc2V0QXR0cmlidXRlKCdvYmotbW9kZWwnLCAnb2JqOiAjc3VibWFyaW5lTWlzc2lsZScpO1xuXHRcdFx0XHRcdC8vIFx0cmVsb2FkLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBzYXZlcyk7XG5cdFx0XHRcdFx0Ly8gXHRzaGlwLmFwcGVuZENoaWxkKHJlbG9hZCk7XG5cdFx0XHRcdFx0Ly8gfVxuXG5cdFx0XHRcdFx0cmVzb2x2ZShldmVudCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0bXAuYWRkRXZlbnRMaXN0ZW5lcignbW92aW5nZW5kZWQnLCBkb25lKTtcblx0XHRcdFx0Ly9yZXNvbHZlKCk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0YWltU2hpcDogKGRhdGEpID0+IHtcblx0XHRcdHZhciByb3RhdGVWZWN0b3IgPSAodmVjMiwgZGVnKSA9PiB7XG5cdFx0XHRcdHZhciByYWQgPSAtZGVnICogTWF0aC5QSSAvIDE4MDtcblx0XHRcdFx0dmFyIGNvcyA9IE1hdGguY29zKHJhZCk7XG5cdFx0XHRcdHZhciBzaW4gPSBNYXRoLnNpbihyYWQpO1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKFwidmVjdG9yOiBcIiwgdmVjMik7XG5cdFx0XHRcdC8vY29uc29sZS5sb2coXCJkZWdyZWU6IFwiLCBkZWcpO1xuXHRcdFx0XHQvLyByb3VuZCB0aGUgbnVtYmVyc1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFwieFwiOiBNYXRoLnJvdW5kKDEwMDAwMCooKHZlYzIueC12ZWMyLmF0WCkgKiBjb3MgLSAodmVjMi56LXZlYzIuYXRaKSAqIHNpbikpLzEwMDAwMCwgXG5cdFx0XHRcdFx0XCJ5XCI6ICh2ZWMyLnktdmVjMi5hdFkpLFxuXHRcdFx0XHRcdFwielwiOiBNYXRoLnJvdW5kKDEwMDAwMCooKHZlYzIueC12ZWMyLmF0WCkgKiBzaW4gKyAodmVjMi56LXZlYzIuYXRaKSAqIGNvcykpLzEwMDAwMFxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0Ly9jb25zb2xlLmxvZygnYWltIGluZm86ICcsIGRhdGEpO1xuXHRcdFx0XHR2YXIgZG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5lJyk7XG5cdFx0XHRcdHZhciB0cmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFjaycpO1xuXHRcdFx0XHR2YXIgc2hpcCA9IG1fZW50aXR5W2RhdGFbMF0uaWRdO1xuXG5cdFx0XHRcdHZhciBzaGlwUm90ID0gc2hpcC5nZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJyk7XG5cdFx0XHRcdC8vY29uc29sZS5sb2coXCJyb3QgaW5mbzogXCIsIHNoaXBSb3QpO1xuXG5cdFx0XHRcdC8vIHZhciBhY3Rpb24gPSBudWxsO1xuXHRcdFx0XHQvLyBpZiAoc2hpcC5jbGFzc05hbWUgPT0gXCJib2F0XCIpIHtcblx0XHRcdFx0Ly8gXHRmb3IodmFyIGkgPSAwOyBpIDwgc2hpcC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdC8vIFx0XHRpZiAoc2hpcC5jaGlsZE5vZGVzW2ldLmNsYXNzTmFtZSA9PT0gXCJhaW1TaGlwXCIpIHtcblx0XHRcdFx0Ly8gXHRcdFx0YWN0aW9uID0gc2hpcC5jaGlsZE5vZGVzW2ldO1xuXHRcdFx0XHQvLyBcdFx0XHRicmVhaztcblx0XHRcdFx0Ly8gXHRcdH1cblx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdC8vIFx0aWYgKGFjdGlvbikge1xuXHRcdFx0XHQvLyBcdFx0dmFyIHNoaXBZID0gc2hpcC5nZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJykueTtcblx0XHRcdFx0Ly8gXHRcdHZhciBjdXJyZW50ID0gYWN0aW9uLmdldEF0dHJpYnV0ZShcInJvdGF0aW9uXCIpLnk7XG5cdFx0XHRcdC8vIFx0XHR2YXIgcmFkaWFuID0gTWF0aC5hdGFuKChkYXRhWzBdLmF0Wi1kYXRhWzBdLnopLyhkYXRhWzBdLmF0WC1kYXRhWzBdLngpKTtcblx0XHRcdFx0Ly8gXHRcdHZhciBkZWdyZWUgPSAtcmFkaWFuICogMTgwIC8gTWF0aC5QSTtcblx0XHRcdFx0Ly8gXHRcdGNvbnNvbGUubG9nKFwic2hpcCByOiBcIiwgZGVncmVlLCBjdXJyZW50KTtcblx0XHRcdFx0Ly8gXHRcdGNvbnNvbGUubG9nKFwic2hpcCBjdXJyZW50IHJvdGF0aW9uXCIsIHNoaXBZKTtcblx0XHRcdFx0Ly8gXHRcdHZhciByb3RhdGVkID0gcm90YXRlVmVjdG9yKGRhdGFbMF0sIHNoaXBZKTtcblx0XHRcdFx0Ly8gXHRcdGNvbnNvbGUubG9nKFwiYWltIHI6IFwiLCByb3RhdGVkKTtcblx0XHRcdFx0Ly8gXHRcdC8vYWN0aW9uLnNldEF0dHJpYnV0ZSgnbG9vay1hdCcsIHJvdGF0ZWQpO1xuXHRcdFx0XHQvLyBcdFx0YWN0aW9uLnNldEF0dHJpYnV0ZSgncm90YXRpb24nLCAnMCAnICsgKGRlZ3JlZS1zaGlwWSkgKyAnIDAnKTtcblx0XHRcdFx0Ly8gXHRcdC8vYWN0aW9uLnJlbW92ZUF0dHJpYnV0ZSgnbG9vay1hdCcpO1xuXHRcdFx0XHQvLyBcdH1cblx0XHRcdFx0Ly8gfVxuXG5cdFx0XHRcdHJlc29sdmUoKTtcdFx0XHRcdFxuXHRcdFx0fSk7XG5cblx0XHR9LFxuXG5cdFx0aGl0U2hpcDogKGRhdGEpID0+IHtcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdHZhciBzaGlwID0gbV9lbnRpdHlbZGF0YVswXS5pZF07XG5cdFx0XHRcdHZhciBoZWFydCA9IFwiXCI7XG5cblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhWzBdLmhlYWx0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aGVhcnQgKz0gXCIg4oCiXCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHNoaXAuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlmIChzaGlwLmNoaWxkTm9kZXNbaV0uY2xhc3NOYW1lID09IFwic2hpcC1oZWFsdGhcIikge1xuXHRcdFx0XHRcdFx0c2hpcC5jaGlsZE5vZGVzW2ldLnNldEF0dHJpYnV0ZSgndGV4dC1nZW9tZXRyeScsICd2YWx1ZTogJytoZWFydCsnOycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdC8vIERhdGEgcGFzc2VkIGluIG11c3QgYmUgZm9yIG1vdmVtZW50IG9mIG9uZSBzaGlwXG5cdFx0bW92ZVNoaXA6IChkYXRhKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHR2YXIgc2hpcERvbSA9IG1fZW50aXR5W2RhdGFbMF0uaWRdOyAvLyBodG1sIGVsZW1lbnRcblx0XHRcdFx0Ly8gaWYgc3RhdGVtZW50IGlzIG5vdCB3b3JraW5nXG5cdFx0XHRcdC8vIGlmIChkYXRhLmxlbmd0aCA9PT0gMSAmJiBkYXRhWzBdLnggPT09IHNoaXBEb20uZGF0YXNldC54ICYmIGRhdGFbMF0ueiA9PT0gc2hpcERvbS5kYXRhc2V0LnopIHtcblx0XHRcdFx0Ly8gICAgIC8vIGlmIHNoaXBEb20gdHJpZXMgdG8gbW92ZSBhZ2FpbnN0IGVkZ2Ugb3Igb2NjdXBpZWQgcGxhY2Vcblx0XHRcdFx0Ly8gICAgIGFsZXJ0KFwiU2tpcHBlZFwiKTtcblx0XHRcdFx0Ly8gICAgIHJlc29sdmUoXCJTa2lwcGVkXCIpO1xuXHRcdFx0XHQvLyB9XG5cblx0XHRcdFx0dmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuZScpOyAvLyA8YS1zY2VuZT4gcmVmZXJlbmNlXG5cdFx0XHRcdHZhciB0cmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFjaycpO1xuXHRcdFx0XHQvL3ZhciBzdGFydENvb3JkID0ge1wieFwiOiBkYXRhWzBdLnh9O1xuXG5cdFx0XHRcdHZhciBkZWJ1ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EtZHJhdy1jdXJ2ZScpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ2N1cnZlcmVmJywgJyN0cmFjaycpO1xuXHRcdFx0XHRkZWJ1Zy5zZXRBdHRyaWJ1dGUoJ21hdGVyaWFsJywgJ3NoYWRlcjogbGluZTsgY29sb3I6IGJsdWU7Jyk7XG5cdFx0XHRcdGRvYy5hcHBlbmRDaGlsZChkZWJ1Zyk7XG5cblx0XHRcdFx0Ly8gYWRkIGN1cnJlbnQgbG9jYXRpb24gYXMgYSBzdGFydGluZyBwb2ludCBvZiB0aGUgY3VydmVcblx0XHRcdFx0dmFyIHBvaW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXHRcdFx0XHRwb2ludC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgU3RyaW5nKHNoaXBEb20uZGF0YXNldC54ICsgXCIgXCIgKyBzaGlwRG9tLmRhdGFzZXQueSArIFwiIFwiICsgc2hpcERvbS5kYXRhc2V0LnopKTtcblx0XHRcdFx0dHJhY2suYXBwZW5kQ2hpbGQocG9pbnQpO1xuXHRcdFx0XHQvLyBhZGQgY2hhaW4tYWJsZSBnb2FsIGxvY2F0aW9ucyB0byB0aGUgY3VydmVcblx0XHRcdFx0XG5cdFx0XHRcdC8vcHJldmlvdXMgaXMgdXNlZCB0byBjaGVjayBmb3IgbW92ZW1lbnQgYWdhaW5zdCB3YWxscywgZS5nLiBwcmV2aW91cyBsb2NhdGlvbiBzYW1lIGFzIGN1cnJlbnQgYW5kIG5leHRcblx0XHRcdFx0Ly9wcmV2aW91cyBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbGFzdCBhY3Rpb24gd2hpY2ggZGV0ZXJtaW5lcyB0aGUgZmluYWwgcm90YXRpb24gd2hlcmUgdGhlIHNoaXAgc2hvdWxkIHBvaW50XG5cdFx0XHRcdHZhciBwcmV2aW91cyA9IHsneCc6IHNoaXBEb20uZGF0YXNldC54LCAneic6IHNoaXBEb20uZGF0YXNldC56fTtcblx0XHRcdFx0dmFyIHhEaXN0YW5jZSA9IDA7XG5cdFx0XHRcdHZhciB6RGlzdGFuY2UgPSAwO1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKFwiTW92aW5nOiBcIiwgZGF0YSk7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHBvaW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYS1jdXJ2ZS1wb2ludCcpO1xuXHRcdFx0XHRcdHBvaW50LnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBkYXRhW2ldLnggKyBcIiBcIiArIGRhdGFbaV0ueSArIFwiIFwiICsgZGF0YVtpXS56KTtcblx0XHRcdFx0XHR4RGlzdGFuY2UgKz0gTWF0aC5hYnMoZGF0YVtpXS54IC0gcHJldmlvdXMueCk7XG5cdFx0XHRcdFx0ekRpc3RhbmNlICs9IE1hdGguYWJzKGRhdGFbaV0ueiAtIHByZXZpb3VzLnopO1xuXHRcdFx0XHRcdGlmIChpICsgMSA8IGRhdGEubGVuZ3RoICYmIGRhdGFbaV0ueCA9PT0gZGF0YVtpKzFdLnggJiYgZGF0YVtpXS56ID09PSBkYXRhW2krMV0ueikge1xuXHRcdFx0XHRcdFx0aSsrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0cmFjay5hcHBlbmRDaGlsZChwb2ludCk7XG5cdFx0XHRcdFx0cHJldmlvdXMgPSB7J3gnOiBkYXRhW2ldLngsICd6JzogZGF0YVtpXS56LCAnZGlyZWN0aW9uJzogZGF0YVtpXS5kaXJlY3Rpb259O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFyIGR1ciA9ICh4RGlzdGFuY2UrekRpc3RhbmNlKSptX0NvbnN0YW50cy5XYWl0VGltZVBlclRpbGVNb3ZlZDsgLy8gZGV0ZXJtaW5lcyB0aGUgbGVuZ3RoIGluIHRpbWUgb2YgdGhlIG1vdmVtZW50IFxuXHRcdFx0XHRzaGlwRG9tLnNldEF0dHJpYnV0ZSgnYWxvbmdwYXRoJywgJ2N1cnZlOiAjdHJhY2s7IHJvdGF0ZTogdHJ1ZTsgY29uc3RyYWludDogMCAwIC0xOyBkZWxheTogJyttX0NvbnN0YW50cy5XYWl0VGltZUJldHdlZW5BY3Rpb24rJzsgZHVyOiAnK2R1cisnOycpO1xuXG5cdFx0XHRcdHZhciBkb25lID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0Ly8gdmFyIGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlUYWdOYW1lKCdhLWRyYXctY3VydmUnKTtcblx0XHRcdFx0XHQvLyBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQvLyAgICAgbGlzdFswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGxpc3RbMF0pO1xuXHRcdFx0XHRcdC8vIH1cblx0XHRcdFx0XHRpZiAoZGVidWcucGFyZW50Tm9kZSkge1xuXHRcdFx0XHRcdFx0ZG9jLnJlbW92ZUNoaWxkKGRlYnVnKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR3aGlsZSh0cmFjay5oYXNDaGlsZE5vZGVzKCkpIHtcblx0XHRcdFx0XHRcdHRyYWNrLnJlbW92ZUNoaWxkKHRyYWNrLmNoaWxkTm9kZXNbMF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRzaGlwRG9tLnJlbW92ZUF0dHJpYnV0ZSgnYWxvbmdwYXRoJyk7XG5cdFx0XHRcdFx0c2hpcERvbS5kYXRhc2V0LnggPSBkYXRhW2RhdGEubGVuZ3RoLTFdLng7XG5cdFx0XHRcdFx0c2hpcERvbS5kYXRhc2V0LnogPSBkYXRhW2RhdGEubGVuZ3RoLTFdLno7XG5cdFx0XHRcdFx0c2hpcERvbS5kYXRhc2V0LnkgPSBkYXRhW2RhdGEubGVuZ3RoLTFdLnk7XG5cblx0XHRcdFx0XHQvL3NoaXBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW92aW5nZW5kZWQnLCBkb25lKTtcblx0XHRcdFx0XHRyZXNvbHZlKGV2ZW50KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRzaGlwRG9tLmFkZEV2ZW50TGlzdGVuZXIoJ21vdmluZ2VuZGVkJywgZG9uZSk7XG5cdFx0XHRcdFxuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdHNpbXVsYXRlOiAoKSA9PiB7XG5cdFx0XHQvL2NvbnNvbGUubG9nKFwiY2hhaW46IFwiLCBtX2NoYWluKTtcblx0XHRcdHZhciBub3RTdG9wID0gdHJ1ZTtcblx0XHRcdGlmIChtX2NoYWluLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdG5vdFN0b3AgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBjdXJyZW50ID0gbV9jaGFpbi5zaGlmdCgpOyAvLyBkb24ndCBzaGlmdCB3aGVuIGxlbmd0aCBpcyB6ZXJvXG5cdFx0XHRpZiAoY3VycmVudCAmJiBub3RTdG9wKSB7XG5cdFx0XHRcdC8vY29uc29sZS5sb2coXCJjdXJyZW50OiBcIiwgY3VycmVudCk7XG5cdFx0XHRcdHN3aXRjaChjdXJyZW50LnR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIFwiTU9WRVwiOlxuXHRcdFx0XHRcdFx0YXBwLm1vdmVTaGlwKGN1cnJlbnQuYWN0aW9ucykudGhlbigoZG9uZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQvL2FsZXJ0KFwiTW92ZWQgXCIgKyBtX2NoYWluLmxlbmd0aCArIFwiIGFjdGlvbnMgbGVmdFwiKTtcblx0XHRcdFx0XHRcdFx0YXBwLnNpbXVsYXRlKCk7XG5cdFx0XHRcdFx0XHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkZJUkVcIjpcblx0XHRcdFx0XHRcdC8qKiogRXhjbHVzaXZlIE9yIGZ1bmN0aW9ucyAqKiovXG5cblx0XHRcdFx0XHRcdC8qIEZpcmUgd2l0aG91dCBhaW1pbmcgKi9cblx0XHRcdFx0XHRcdGFwcC5maXJlU2hpcChjdXJyZW50LmFjdGlvbnMpLnRoZW4oKGRvbmUpID0+IHtcblx0XHRcdFx0XHRcdFx0YXBwLnNpbXVsYXRlKCk7XG5cdFx0XHRcdFx0XHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJlcnJvcjogXCIsIGVycik7XHRcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHQvLyAvKiBBaW0gdGhlbiBmaXJlIChjdXJyZW50bHkgYnVnZ3kpKi9cblx0XHRcdFx0XHRcdC8vIGFwcC5haW1TaGlwKGN1cnJlbnQuYWN0aW9ucykudGhlbigoZG9uZSkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gXHRhcHAuZmlyZVNoaXAoY3VycmVudC5hY3Rpb25zKS50aGVuKChkb25lKSA9PiB7XG5cdFx0XHRcdFx0XHQvLyBcdFx0YXBwLnNpbXVsYXRlKCk7XG5cdFx0XHRcdFx0XHQvLyBcdH0pLmNhdGNoKChlcnIpID0+IHtcblx0XHRcdFx0XHRcdC8vIFx0XHRjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnIpO1x0XG5cdFx0XHRcdFx0XHQvLyBcdH0pO1xuXHRcdFx0XHRcdFx0Ly8gfSkuY2F0Y2goKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gXHRjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnIpO1xuXHRcdFx0XHRcdFx0Ly8gfSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiSElUXCI6XG5cdFx0XHRcdFx0XHRhcHAuaGl0U2hpcChjdXJyZW50LmFjdGlvbnMpLnRoZW4oKGRvbmUpID0+IHtcblx0XHRcdFx0XHRcdFx0YXBwLnNpbXVsYXRlKCk7XG5cdFx0XHRcdFx0XHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJTSU5LXCI6XG5cdFx0XHRcdFx0XHRhcHAuc2lua1NoaXAoY3VycmVudC5hY3Rpb25zKS50aGVuKChkb25lKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vYWxlcnQoXCJTdW5rIFwiKyBtX2NoYWluLmxlbmd0aCArIFwiIGFjdGlvbnMgbGVmdFwiKTtcblx0XHRcdFx0XHRcdFx0YXBwLnNpbXVsYXRlKCk7XG5cdFx0XHRcdFx0XHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGNvbnNvbGUud2FybihcIlVua25vd24gQWN0aW9uIFR5cGUgXCIgKyBjdXJyZW50LnR5cGUgKyBcIiBpbiBzaW11bGF0ZSBmdW5jdGlvbiwgc2tpcHBpbmcuXCIpO1xuXHRcdFx0XHRcdFx0YXBwLnNpbXVsYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdC8vYWxlcnQoXCJTaW11bGF0aW9uIERvbmVcIik7XG5cdFx0XHRcdFx0dmV4LmRpYWxvZy5hbGVydChcIlNpbXVsYXRpb24gQ29tcGxldGVkLlwiKTtcblx0XHRcdFx0fSwgMTAwMDApO1xuXHRcdFx0fVxuXG5cdFx0fSxcblxuXHRcdC8qKiB0cmFuc2xhdGVzIHRoZSBjb29yZGluYXRlIGluIHRoZSBqYXZhIGdhbWUgdG8gdGhpcyBzY2VuZSdzIGNvb3JkaW5hdGVcblx0XHRcdEphdmEgR2FtZTogRWFjaCBzaGlwIHNwYW5zIG9uZSAoeCwgeSkgdW5pdFxuXHRcdFx0SmF2YSBHYW1lOiBDb29yZGluYXRlIHN5c3RlbSBoYXMgKDAsIDApIGF0IHRvcCBsZWZ0IGNvcm5lciAod2l0aG91dCBuZWdhdGl2ZXMpXG5cdFx0XHRBRnJhbWUgU2NlbmU6IEVhY2ggc2hpcCBtb2RlbCBpcyBhIDR4NCBib3hcblx0XHRcdEFGcmFtZSBTY2VuZTogQ29vcmRpbmF0ZSBzeXN0ZW0gaXMgKDAsIDApIGF0IHRoZSBjZW50ZXIgKHdpdGggbmVnYXRpdmVzKVxuXHRcdCovXG5cdFx0Z2V0U3RyQ29vcmQ6IChjb29yZCwgb2Zmc2V0WSkgPT4ge1xuXHRcdFx0cmV0dXJuIChtX29jZWFuLngtY29vcmQueCkqNCArIFwiIFwiICsgb2Zmc2V0WSArIFwiIFwiICsgKG1fb2NlYW4ueS1jb29yZC55KSo0O1xuXHRcdH0sXG5cblx0XHRnZXRTaGlwczogKCkgPT4ge1xuXHRcdFx0cmV0dXJuIG1fc2hpcHM7XG5cdFx0fSxcblxuXHRcdGdldE9jZWFuOiAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gbV9vY2Vhbjtcblx0XHR9XG5cblxuXHR9XG5cblx0cmV0dXJuIGFwcDtcbn1cblxudmFyIGFwcCA9IGJhdHRsZXNoaXAoKTtcbmxldCBwYXJhbXMgPSBnZXRRdWVyeVBhcmFtcyhkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2gpO1xuXG5sZXQgZ2V0RGF0YUZyb21Db2RlID0gKGNvZGUpID0+IHtcblx0ZGIucmVmKCdkYXZ5LWpvbmVzLWxvY2tlci8nICsgY29kZSkub25jZSgndmFsdWUnLCAoc25hcHNob3QpID0+IHtcblx0XHR2YXIgZ2FtZURhdGEgPSBzbmFwc2hvdC52YWwoKTtcblx0XHRpZiAoZ2FtZURhdGEpIHtcblx0XHRcdGlucHV0ID0gZ2FtZURhdGE7XG5cdFx0XHRhcHAuaW5pdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRnZXRDb2RlKGBObyBkYXRhIGZvciBjb2RlICR7Y29kZX0uIEVudGVyIGFub3RoZXIgY29kZTpgKTtcblx0XHRcdC8vYXBwLmluaXQoKTtcblx0XHR9XG5cdH0pLmNhdGNoKChlcnIpID0+IHtcblx0XHRnZXRDb2RlKGBUaGVyZSB3YXMgYW4gZXJyb3IuIEVudGVyIGFub3RoZXIgY29kZTpgKTtcblx0XHQvL2FwcC5pbml0KCk7XG5cdH0pO1xufVxuXG5sZXQgZ2V0Q29kZSA9IChtZXNzYWdlKSA9PiB7XG5cdHZleC5kaWFsb2cucHJvbXB0KHtcblx0XHRtZXNzYWdlOiBtZXNzYWdlLFxuXHRcdGNhbGxiYWNrOiAodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHR2YXIgY29kZSA9IHZhbHVlO1xuXHRcdFx0XHRnZXREYXRhRnJvbUNvZGUoY29kZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRnZXRDb2RlKFwiTm8gY29kZSBlbnRlcmVkLiBFbnRlciB5b3VyIGNvZGU6XCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbmlmIChwYXJhbXMuY29kZSkge1xuXHRnZXREYXRhRnJvbUNvZGUocGFyYW1zLmNvZGUpO1xufSBlbHNlIHtcblx0Z2V0Q29kZShcIkVudGVyIFlvdXIgQ29kZVwiKTtcbn1cblxuXG4vLyB2YXIgQkFUVExFX1NFUlZFUl9VUkwgPSAnaHR0cHM6Ly9iYXR0bGVzaGlwLXZpbmdrYW4uYzl1c2Vycy5pby8xdjE/cDE9ZXNpMTcuY3MuRGVzdHJveWVyU2hpcCZwMj1lc2kxNy5obGkxMDkuRmxvYXRlcic7Ly8gKyBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDEwMCk7XG5cbi8vICQuZ2V0KEJBVFRMRV9TRVJWRVJfVVJMKS50aGVuKGRhdGEgPT4ge1xuLy8gXHRpbnB1dCA9IGRhdGE7XG4vLyBcdGFwcC5pbml0KCk7XG4vLyB9KS5kb25lKCgpID0+IHtcbi8vIFx0Y29uc29sZS5sb2coXCJEYXRhIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgZnJvbSBzZXJ2ZXJcIik7XG4vLyB9KS5mYWlsKCgpID0+IHtcbi8vIFx0Y29uc29sZS5sb2coXCJVbmFibGUgdG8gcmV0cmlldmUgZGF0YSwgc3RhcnRpbmcgd2l0aCBsb2NhbCBkYXRhXCIpO1xuLy8gXHRhcHAuaW5pdCgpO1xuLy8gfSk7XG5cblxuXG4iXX0=\n"]}
\ No newline at end of file
diff --git a/lib/aframe-alongpath-component.js b/lib/aframe-alongpath-component.js
deleted file mode 100644
index 88959f6..0000000
--- a/lib/aframe-alongpath-component.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function t(e,i,r){function a(s,n){if(!i[s]){if(!e[s]){var g="function"==typeof require&&require;if(!n&&g)return g(s,!0);if(o)return o(s,!0);var h=new Error("Cannot find module '"+s+"'");throw h.code="MODULE_NOT_FOUND",h}var c=i[s]={exports:{}};e[s][0].call(c.exports,function(t){var i=e[s][1][t];return a(i||t)},c,c.exports,t,e,i,r)}return i[s].exports}for(var o="function"==typeof require&&require,s=0;s=this.data.dur?1:this.interval-this.data.delay<0?0:(this.interval-this.data.delay)/this.data.dur,!1===this.data.loop&&r>=1)this.el.setAttribute("position",i.points[i.points.length-1]),this.el.removeState("moveonpath"),this.el.addState("endofpath"),this.el.emit("movingended");else if(!0===this.data.loop&&r>=1)this.el.emit("movingended"),this.interval=this.data.delay;else{this.el.is("moveonpath")||(this.el.addState("moveonpath"),this.el.emit("movingstarted"));var a=i.getPoint(r);this.el.setAttribute("position",a)}if(!0===this.data.rotate){var o=new THREE.Vector3,s=new THREE.Vector3(this.data.constraint.x,this.data.constraint.y,this.data.constraint.z),n=i.getTangentAt(r).normalize();o.crossVectors(s,n).normalize();var g=Math.acos(s.dot(n));this.el.object3D.quaternion.setFromAxisAngle(o,g)}this.triggers&&this.triggers.length>0&&this.updateActiveTrigger()}}else console.error("The entity associated with the curve property has no curve component.")},play:function(){this.data.resetonplay&&this.reset()},remove:function(){this.el.object3D.position.copy(this.initialPosition)},updateActiveTrigger:function(){for(var t=0;t= this.data.dur) {\n\t\t\t\t\t\t// Time is up, we should be at the end of the path\n\t\t\t\t\t\ti = 1;\n\t\t\t\t\t} else if (this.interval - this.data.delay < 0) {\n\t\t\t\t\t\t// We are still waiting for the delay-time to finish\n\t\t\t\t\t\t// so keep entity at the beginning of the path\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Update path position based on timing\n\t\t\t\t\t\ti = (this.interval - this.data.delay) / this.data.dur;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.data.loop === false && i >= 1) {\n\t\t\t\t\t\t// Set the end-position\n\t\t\t\t\t\tthis.el.setAttribute('position', curve.points[curve.points.length - 1]);\n\n\t\t\t\t\t\t// We have reached the end of the path and are not going\n\t\t\t\t\t\t// to loop back to the beginning therefore set final state\n\t\t\t\t\t\tthis.el.removeState(\"moveonpath\");\n\t\t\t\t\t\tthis.el.addState(\"endofpath\");\n\t\t\t\t\t\tthis.el.emit(\"movingended\");\n\t\t\t\t\t} else if (this.data.loop === true && i >= 1) {\n\t\t\t\t\t\t// We have reached the end of the path\n\t\t\t\t\t\t// but we are looping through the curve,\n\t\t\t\t\t\t// so restart here.\n\t\t\t\t\t\tthis.el.emit(\"movingended\");\n\t\t\t\t\t\tthis.interval = this.data.delay;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// We are starting to move or somewhere in the middle of the path…\n\t\t\t\t\t\tif (!this.el.is(\"moveonpath\")) {\n\t\t\t\t\t\t\tthis.el.addState(\"moveonpath\");\n\t\t\t\t\t\t\tthis.el.emit(\"movingstarted\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// …updating position\n\t\t\t\t\t\tvar p = curve.getPoint(i);\n\t\t\t\t\t\tthis.el.setAttribute('position', p);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update Rotation of Entity\n\t\t\t\t\t// Based on http://jsfiddle.net/qGPTT/133/\n\t\t\t\t\tif (this.data.rotate === true) {\n\t\t\t\t\t\tvar axis = new THREE.Vector3();\n\t\t\t\t\t\t// forward vector, allows customization of which x,y,z component is up during the path movement\n\t\t\t\t\t\tvar up = new THREE.Vector3(this.data.constraint.x, this.data.constraint.y, this.data.constraint.z);\n\t\t\t\t\t\t//var up = new THREE.Vector3(0, 0, 1); // previous code\n\t\t\t\t\t\tvar tangent = curve.getTangentAt(i).normalize();\n\n\t\t\t\t\t\taxis.crossVectors(up, tangent).normalize();\n\n\t\t\t\t\t\tvar radians = Math.acos(up.dot(tangent));\n\n\t\t\t\t\t\tthis.el.object3D.quaternion.setFromAxisAngle(axis, radians);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check for Active-Triggers\n\t\t\t\t\tif (this.triggers && this.triggers.length > 0) {\n\t\t\t\t\t\tthis.updateActiveTrigger();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.error(\"The entity associated with the curve property has no curve component.\");\n\t\t\t}\n\t\t},\n\n\t\tplay: function play() {\n\t\t\tif (this.data.resetonplay) {\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t},\n\n\t\tremove: function remove() {\n\t\t\tthis.el.object3D.position.copy(this.initialPosition);\n\t\t},\n\n\t\tupdateActiveTrigger: function updateActiveTrigger() {\n\t\t\tfor (var i = 0; i < this.triggers.length; i++) {\n\t\t\t\tif (this.triggers[i].object3D) {\n\t\t\t\t\tif (this.triggers[i].object3D.position.distanceTo(this.el.object3D.position) <= this.data.triggerRadius) {\n\t\t\t\t\t\t// If this element is not the active trigger, activate it - and if necessary deactivate other triggers.\n\t\t\t\t\t\tif (this.activeTrigger && this.activeTrigger != this.triggers[i]) {\n\t\t\t\t\t\t\tthis.activeTrigger.removeState(\"alongpath-active-trigger\");\n\t\t\t\t\t\t\tthis.activeTrigger.emit(\"alongpath-trigger-deactivated\");\n\n\t\t\t\t\t\t\tthis.activeTrigger = this.triggers[i];\n\t\t\t\t\t\t\tthis.activeTrigger.addState(\"alongpath-active-trigger\");\n\t\t\t\t\t\t\tthis.activeTrigger.emit(\"alongpath-trigger-activated\");\n\t\t\t\t\t\t} else if (!this.activeTrigger) {\n\t\t\t\t\t\t\tthis.activeTrigger = this.triggers[i];\n\t\t\t\t\t\t\tthis.activeTrigger.addState(\"alongpath-active-trigger\");\n\t\t\t\t\t\t\tthis.activeTrigger.emit(\"alongpath-trigger-activated\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If this Element was the active trigger, deactivate it\n\t\t\t\t\t\tif (this.activeTrigger && this.activeTrigger == this.triggers[i]) {\n\t\t\t\t\t\t\tthis.activeTrigger.removeState(\"alongpath-active-trigger\");\n\t\t\t\t\t\t\tthis.activeTrigger.emit(\"alongpath-trigger-deactivated\");\n\t\t\t\t\t\t\tthis.activeTrigger = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t});\n\n\t/***/\n}]\n/******/);\n\n},{}]},{},[1])\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvYWZyYW1lLWFsb25ncGF0aC1jb21wb25lbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztBQ0FBLFFBQVMsQ0FBQyxVQUFTLE9BQVQsRUFBa0I7QUFBRTtBQUM5QixTQUQ0QixDQUNsQjtBQUNWLFNBQVUsSUFBSSxtQkFBbUIsRUFBdkI7O0FBRVYsU0FKNEIsQ0FJbEI7QUFDVixTQUFVLFNBQVMsbUJBQVQsQ0FBNkIsUUFBN0IsRUFBdUM7O0FBRWpELFVBRmlELENBRXRDO0FBQ1gsVUFBVyxJQUFHLGlCQUFpQixRQUFqQixDQUFIO0FBQ1gsV0FBWSxPQUFPLGlCQUFpQixRQUFqQixFQUEyQixPQUFsQzs7QUFFWixVQU5pRCxDQU10QztBQUNYLFVBQVcsSUFBSSxTQUFTLGlCQUFpQixRQUFqQixJQUE2QjtBQUNyRCxXQUFZLFNBQVMsRUFEZ0M7QUFFckQsV0FBWSxJQUFJLFFBRnFDO0FBR3JELFdBQVksUUFBUTtBQUNwQixXQUpxRCxFQUExQzs7QUFNWCxVQWJpRCxDQWF0QztBQUNYLFVBQVcsUUFBUSxRQUFSLEVBQWtCLElBQWxCLENBQXVCLE9BQU8sT0FBOUIsRUFBdUMsTUFBdkMsRUFBK0MsT0FBTyxPQUF0RCxFQUErRCxtQkFBL0Q7O0FBRVgsVUFoQmlELENBZ0J0QztBQUNYLFVBQVcsT0FBTyxNQUFQLEdBQWdCLElBQWhCOztBQUVYLFVBbkJpRCxDQW1CdEM7QUFDWCxVQUFXLE9BQU8sT0FBTyxPQUFkO0FBQ1g7QUFBVzs7QUFHWCxTQTdCNEIsQ0E2QmxCO0FBQ1YsU0FBVSxvQkFBb0IsQ0FBcEIsR0FBd0IsT0FBeEI7O0FBRVYsU0FoQzRCLENBZ0NsQjtBQUNWLFNBQVUsb0JBQW9CLENBQXBCLEdBQXdCLGdCQUF4Qjs7QUFFVixTQW5DNEIsQ0FtQ2xCO0FBQ1YsU0FBVSxvQkFBb0IsQ0FBcEIsR0FBd0IsRUFBeEI7O0FBRVYsU0F0QzRCLENBc0NsQjtB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QUFLLEVBQUwsQ0FBUSxRQUFSLENBQWlCLFFBQS9ELEtBQTRFLEtBQUssSUFBTCxDQUFVLGFBQTFGLEVBQXlHO0FBQ3JHO0FBQ0EsVUFBSSxLQUFLLGFBQUwsSUFBdUIsS0FBSyxhQUFMLElBQXNCLEtBQUssUUFBTCxDQUFjLENBQWQsQ0FBakQsRUFBb0U7QUFDaEUsWUFBSyxhQUFMLENBQW1CLFdBQW5CLENBQStCLDBCQUEvQjtBQUNBLFlBQUssYUFBTCxDQUFtQixJQUFuQixDQUF3QiwrQkFBeEI7O0FBRUEsWUFBSyxhQUFMLEdBQXFCLEtBQUssUUFBTCxDQUFjLENBQWQsQ0FBckI7QUFDQSxZQUFLLGFBQUwsQ0FBbUIsUUFBbkIsQ0FBNEIsMEJBQTVCO0FBQ0EsWUFBSyxhQUFMLENBQW1CLElBQW5CLENBQXdCLDZCQUF4QjtBQUNILE9BUEQsTUFPTyxJQUFJLENBQUMsS0FBSyxhQUFWLEVBQXlCO0FBQzVCLFlBQUssYUFBTCxHQUFxQixLQUFLLFFBQUwsQ0FBYyxDQUFkLENBQXJCO0FBQ0EsWUFBSyxhQUFMLENBQW1CLFFBQW5CLENBQTRCLDBCQUE1QjtBQUNBLFlBQUssYUFBTCxDQUFtQixJQUFuQixDQUF3Qiw2QkFBeEI7QUFDSDs7QUFFRDtBQUNILE1BaEJELE1BZ0JPO0FBQ0g7QUFDQSxVQUFJLEtBQUssYUFBTCxJQUF1QixLQUFLLGFBQUwsSUFBc0IsS0FBSyxRQUFMLENBQWMsQ0FBZCxDQUFqRCxFQUFvRTtBQUNoRSxZQUFLLGFBQUwsQ0FBbUIsV0FBbkIsQ0FBK0IsMEJBQS9CO0FBQ0EsWUFBSyxhQUFMLENBQW1CLElBQW5CLENBQXdCLCtCQUF4QjtBQUNBLFlBQUssYUFBTCxHQUFxQixJQUFyQjtBQUNIO0FBQ0o7QUFDSjtBQUNKO0FBQ0o7O0FBcktpQyxFQUF0Qzs7QUF5S0Q7QUFBTyxDQXJMRztBQXNMVixRQWhPUyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdGlmICh0eXBlb2YgQUZSQU1FID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wb25lbnQgYXR0ZW1wdGVkIHRvIHJlZ2lzdGVyIGJlZm9yZSBBRlJBTUUgd2FzIGF2YWlsYWJsZS4nKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBbG9uZ3BhdGggY29tcG9uZW50IGZvciBBLUZyYW1lLlxuXHQgKiBNb3ZlIEVudGl0aWVzIGFsb25nIGEgcHJlZGVmaW5lZCBDdXJ2ZVxuXHQgKi9cblx0QUZSQU1FLnJlZ2lzdGVyQ29tcG9uZW50KCdhbG9uZ3BhdGgnLCB7XG5cblx0ICAgIC8vZGVwZW5kZW5jaWVzOiBbJ2N1cnZlJ10sXG5cblx0ICAgIHNjaGVtYToge1xuXHQgICAgICAgIGN1cnZlOiB7ZGVmYXVsdDogJyd9LFxuXHQgICAgICAgIHRyaWdnZXJzOiB7ZGVmYXVsdDogJ2EtY3VydmUtcG9pbnQnfSxcblx0ICAgICAgICB0cmlnZ2VyUmFkaXVzOiB7dHlwZTogJ251bWJlcicsIGRlZmF1bHQ6IDAuMDF9LFxuXHQgICAgICAgIGR1cjoge2RlZmF1bHQ6IDEwMDB9LFxuXHQgICAgICAgIGRlbGF5OiB7ZGVmYXVsdDogMH0sXG5cdCAgICAgICAgbG9vcDoge2RlZmF1bHQ6IGZhbHNlfSxcblx0ICAgICAgICByb3RhdGU6IHtkZWZhdWx0OiBmYWxzZX0sXG5cdCAgICAgICAgY29uc3RyYWludDoge3R5cGU6ICd2ZWMzJywgZGVmYXVsdDogeyB4OiAwLCB5OiAwLCB6OiAxIH19LFxuXHQgICAgICAgIHJlc2V0b25wbGF5OiB7ZGVmYXVsdDp0cnVlfVxuXHQgICAgfSxcblxuXHQgICAgaW5pdDogZnVuY3Rpb24gKCkge1xuXG5cdCAgICAgICAgLy8gV2UgaGF2ZSB0byBmZXRjaCBjdXJ2ZSBhbmQgdHJpZ2dlcnMgbWFudWFsbHkgYmVjYXVzZSBvZiBhbiBBLUZSQU1FIElTU1VFXG5cdCAgICAgICAgLy8gd2l0aCBQcm9wZXJ0eS1UeXBlIFwiU2VsZWN0b3JcIiAvIFwiU2VsZWN0b3JBbGxcIjogaHR0cHM6Ly9naXRodWIuY29tL2FmcmFtZXZyL2FmcmFtZS9pc3N1ZXMvMjUxN1xuXG5cdCAgICB9LFxuXG5cdCAgICB1cGRhdGU6IGZ1bmN0aW9uIChvbGREYXRhKSB7XG5cblx0ICAgICAgICB0aGlzLmN1cnZlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmRhdGEuY3VydmUpO1xuXHQgICAgICAgIHRoaXMudHJpZ2dlcnMgPSB0aGlzLmN1cnZlLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5kYXRhLnRyaWdnZXJzKTtcblxuXHQgICAgICAgIGlmICghdGhpcy5jdXJ2ZSkge1xuXHQgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJDdXJ2ZSBub3QgZm91bmQuIENhbid0IGZvbGxvdyBhbnl0aGluZy4uLlwiKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IHRoaXMuZWwub2JqZWN0M0QucG9zaXRpb247XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgfSxcblxuXHQgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIC8vIFJlc2V0IHRvIGluaXRpYWwgc3RhdGVcblx0ICAgICAgICB0aGlzLmludGVydmFsID0gMDtcblxuXHQgICAgICAgIHRoaXMuZWwucmVtb3ZlU3RhdGUoXCJlbmRvZnBhdGhcIik7XG5cdCAgICAgICAgdGhpcy5lbC5yZW1vdmVTdGF0ZShcIm1vdmVvbnBhdGhcIik7XG5cblx0ICAgICAgICBpZiAodGhpcy5hY3RpdmVUcmlnZ2VyKSB7XG5cdCAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5yZW1vdmVTdGF0ZShcImFsb25ncGF0aC1hY3RpdmUtdHJpZ2dlclwiKTtcblx0ICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmlnZ2VyID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICB0aWNrOiBmdW5jdGlvbiAodGltZSwgdGltZURlbHRhKSB7XG5cdCAgICAgICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZS5jb21wb25lbnRzWydjdXJ2ZSddID8gdGhpcy5jdXJ2ZS5jb21wb25lbnRzWydjdXJ2ZSddLmN1cnZlIDogbnVsbDtcblxuXHQgICAgICAgIGlmIChjdXJ2ZSkge1xuXHQgICAgICAgICAgICAvLyBPbmx5IHVwZGF0ZSBwb3NpdGlvbiBpZiB3ZSBkaWRuJ3QgcmVhY2hcblx0ICAgICAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgcGF0aFxuXHQgICAgICAgICAgICBpZiAoIXRoaXMuZWwuaXMoXCJlbmRvZnBhdGhcIikpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSB0aGlzLmludGVydmFsICsgdGltZURlbHRhO1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgaSA9IDA7XG5cblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLmludGVydmFsIC0gdGhpcy5kYXRhLmRlbGF5ID49IHRoaXMuZGF0YS5kdXIpIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBUaW1lIGlzIHVwLCB3ZSBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aFxuXHQgICAgICAgICAgICAgICAgICAgIGkgPSAxO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5pbnRlcnZhbCAtIHRoaXMuZGF0YS5kZWxheSA8IDApKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHN0aWxsIHdhaXRpbmcgZm9yIHRoZSBkZWxheS10aW1lIHRvIGZpbmlzaFxuXHQgICAgICAgICAgICAgICAgICAgIC8vIHNvIGtlZXAgZW50aXR5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGhcblx0ICAgICAgICAgICAgICAgICAgICBpID0gMDtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHBhdGggcG9zaXRpb24gYmFzZWQgb24gdGltaW5nXG5cdCAgICAgICAgICAgICAgICAgICAgaSA9ICh0aGlzLmludGVydmFsIC0gdGhpcy5kYXRhLmRlbGF5KSAvIHRoaXMuZGF0YS5kdXI7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIGlmICgodGhpcy5kYXRhLmxvb3AgPT09IGZhbHNlKSAmJiBpID49IDEpIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGVuZC1wb3NpdGlvblxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIGN1cnZlLnBvaW50c1tjdXJ2ZS5wb2ludHMubGVuZ3RoIC0gMV0pO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHBhdGggYW5kIGFyZSBub3QgZ29pbmdcblx0ICAgICAgICAgICAgICAgICAgICAvLyB0byBsb29wIGJhY2sgdG8gdGhlIGJlZ2lubmluZyB0aGVyZWZvcmUgc2V0IGZpbmFsIHN0YXRlXG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5yZW1vdmVTdGF0ZShcIm1vdmVvbnBhdGhcIik7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5hZGRTdGF0ZShcImVuZG9mcGF0aFwiKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmVtaXQoXCJtb3ZpbmdlbmRlZFwiKTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuZGF0YS5sb29wID09PSB0cnVlKSAmJiBpID49IDEpIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcGF0aFxuXHQgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBhcmUgbG9vcGluZyB0aHJvdWdoIHRoZSBjdXJ2ZSxcblx0ICAgICAgICAgICAgICAgICAgICAvLyBzbyByZXN0YXJ0IGhlcmUuXG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5lbWl0KFwibW92aW5nZW5kZWRcIik7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHRoaXMuZGF0YS5kZWxheTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHN0YXJ0aW5nIHRvIG1vdmUgb3Igc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhdGjigKZcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWwuaXMoXCJtb3Zlb25wYXRoXCIpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuYWRkU3RhdGUoXCJtb3Zlb25wYXRoXCIpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmVtaXQoXCJtb3ZpbmdzdGFydGVkXCIpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIOKApnVwZGF0aW5nIHBvc2l0aW9uXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBjdXJ2ZS5nZXRQb2ludChpKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBwKTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gVXBkYXRlIFJvdGF0aW9uIG9mIEVudGl0eVxuXHQgICAgICAgICAgICAgICAgLy8gQmFzZWQgb24gaHR0cDovL2pzZmlkZGxlLm5ldC9xR1BUVC8xMzMvXG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLnJvdGF0ZSA9PT0gdHJ1ZSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBheGlzID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblx0ICAgICAgICAgICAgICAgIFx0Ly8gZm9yd2FyZCB2ZWN0b3IsIGFsbG93cyBjdXN0b21pemF0aW9uIG9mIHdoaWNoIHgseSx6IGNvbXBvbmVudCBpcyB1cCBkdXJpbmcgdGhlIHBhdGggbW92ZW1lbnRcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdXAgPSBuZXcgVEhSRUUuVmVjdG9yMyh0aGlzLmRhdGEuY29uc3RyYWludC54LCB0aGlzLmRhdGEuY29uc3RyYWludC55LCB0aGlzLmRhdGEuY29uc3RyYWludC56KTtcblx0ICAgICAgICAgICAgICAgICAgICAvL3ZhciB1cCA9IG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIDEpOyAvLyBwcmV2aW91cyBjb2RlXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSBjdXJ2ZS5nZXRUYW5nZW50QXQoaSkubm9ybWFsaXplKCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICBheGlzLmNyb3NzVmVjdG9ycyh1cCwgdGFuZ2VudCkubm9ybWFsaXplKCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICB2YXIgcmFkaWFucyA9IE1hdGguYWNvcyh1cC5kb3QodGFuZ2VudCkpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5vYmplY3QzRC5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUoYXhpcywgcmFkaWFucyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBBY3RpdmUtVHJpZ2dlcnNcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyaWdnZXJzICYmICh0aGlzLnRyaWdnZXJzLmxlbmd0aCA+IDApKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVUcmlnZ2VyKCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnZlIHByb3BlcnR5IGhhcyBubyBjdXJ2ZSBjb21wb25lbnQuXCIpO1x0XG5cdCAgICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgcGxheTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmICh0aGlzLmRhdGEucmVzZXRvbnBsYXkpIHtcblx0ICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgICAgIH1cblx0ICAgIH0sXG5cblx0ICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHRoaXMuZWwub2JqZWN0M0QucG9zaXRpb24uY29weSh0aGlzLmluaXRpYWxQb3NpdGlvbik7XG5cdCAgICB9LFxuXG5cdCAgICB1cGRhdGVBY3RpdmVUcmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudHJpZ2dlcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMudHJpZ2dlcnNbaV0ub2JqZWN0M0QpIHtcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyaWdnZXJzW2ldLm9iamVjdDNELnBvc2l0aW9uLmRpc3RhbmNlVG8odGhpcy5lbC5vYmplY3QzRC5wb3NpdGlvbikgPD0gdGhpcy5kYXRhLnRyaWdnZXJSYWRpdXMpIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgbm90IHRoZSBhY3RpdmUgdHJpZ2dlciwgYWN0aXZhdGUgaXQgLSBhbmQgaWYgbmVjZXNzYXJ5IGRlYWN0aXZhdGUgb3RoZXIgdHJpZ2dlcnMuXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJpZ2dlciAmJiAodGhpcy5hY3RpdmVUcmlnZ2VyICE9IHRoaXMudHJpZ2dlcnNbaV0pKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5yZW1vdmVTdGF0ZShcImFsb25ncGF0aC1hY3RpdmUtdHJpZ2dlclwiKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmlnZ2VyLmVtaXQoXCJhbG9uZ3BhdGgtdHJpZ2dlci1kZWFjdGl2YXRlZFwiKTtcblxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXIgPSB0aGlzLnRyaWdnZXJzW2ldO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXIuYWRkU3RhdGUoXCJhbG9uZ3BhdGgtYWN0aXZlLXRyaWdnZXJcIik7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5lbWl0KFwiYWxvbmdwYXRoLXRyaWdnZXItYWN0aXZhdGVkXCIpO1xuXHQgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuYWN0aXZlVHJpZ2dlcikge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXIgPSB0aGlzLnRyaWdnZXJzW2ldO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXIuYWRkU3RhdGUoXCJhbG9uZ3BhdGgtYWN0aXZlLXRyaWdnZXJcIik7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5lbWl0KFwiYWxvbmdwYXRoLXRyaWdnZXItYWN0aXZhdGVkXCIpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIEVsZW1lbnQgd2FzIHRoZSBhY3RpdmUgdHJpZ2dlciwgZGVhY3RpdmF0ZSBpdFxuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyaWdnZXIgJiYgKHRoaXMuYWN0aXZlVHJpZ2dlciA9PSB0aGlzLnRyaWdnZXJzW2ldKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXIucmVtb3ZlU3RhdGUoXCJhbG9uZ3BhdGgtYWN0aXZlLXRyaWdnZXJcIik7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5lbWl0KFwiYWxvbmdwYXRoLXRyaWdnZXItZGVhY3RpdmF0ZWRcIik7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlciA9IG51bGw7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXG5cdH0pO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7Il19\n"]}
\ No newline at end of file
diff --git a/lib/maps/aframe-extras.min.js.map b/lib/maps/aframe-extras.min.js.map
deleted file mode 100644
index a356675..0000000
--- a/lib/maps/aframe-extras.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["aframe-extras.min.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","_typeof","Symbol","iterator","obj","constructor","prototype","h","c","registerAll","./","2","controls","loaders","misc","physics","primitives","this","./src/controls","./src/loaders","./src/misc","./src/primitives","aframe-physics-system","3","skinIndices","skinWeights","matrices","hierarchy","geometries","node","name","id","vertices","indices","normals","uvs","bones","uv","map","ref","index","normal","indexBuffer","version","internalId","times","values","attrFlag","attrData","attr","attrX","attrY","attrZ","containerInternalId","containerBoneId","curveIdx","curves","p","fps","frames","d","textures","m","fileName","parentIds","v","materials","perGeoMap","y","push","g","b","w","x","Math","PI","E","THREE","Euler","Quaternion","setFromEuler","T","split","parseInt","S","parseFloat","C","A","Matrix4","fromArray","FBXLoader","Loader","manager","DefaultLoadingManager","textureLoader","textureBasePath","Object","create","assign","load","XHRLoader","isFbxFormatASCII","isFbxVersionSupported","extractUrlBase","parse","console","warn","setCrossOrigin","crossOrigin","slice","match","log","time","timeEnd","parseHierarchy","weights","animations","texture_cache","material_cache","geometry_cache","parseMeshes","Group","add","getTexture","TextureLoader","getMaterial","type","MeshPhongMaterial","MeshLambertMaterial","MeshBasicMaterial","color","searchConnectionChildren","searchConnectionType","parameters","setValues","getGeometry","BufferGeometry","addAttribute","BufferAttribute","Float32Array","setIndex","Uint32Array","Uint16Array","verticesNeedUpdate","computeBoundingSphere","computeBoundingBox","materialIndices","groups","start","count","materialIndex","Geometry","fromBufferGeometry","Objects","subNodes","Model","attrType","parseMesh","Material","MultiMaterial","skinning","SkinnedMesh","Mesh","addAnimation","R","z","stacks","geometry","replace","parent","keys","layers","pos","rot","rotq","scl","Vector3","AnimationClip","parseAnimation","loadFile","setResponseType","loadFileAsBuffer","loadFileAsText","searchConnectionParent","__cache_search_connection_parent","Connections","properties","connections","concat","__cache_search_connection_children","__cache_search_connection_type","getPrevNode","nodeStack","currentIndent","getCurrentNode","getCurrentProp","currentProp","pushStack","popStack","pop","setCurrentProp","currentPropName","allNodes","RegExp","trim","parseNodeBegin","parseNodeProperty","nodeEnd","parseNodePropertyContinued","parseNodeAttr","isFlattenNode","attrName","isNaN","parseNodeSpecialProperty","Array","isArray","type2","flag","value","parseCluster","Indexes","Weights","Transform","TransformLink","transform","transformlink","linkMode","Mode","Deformer","joint","weight","getBoneIdfromInternalId","Vector4","Lcl_Translation","Lcl_Rotation","Lcl_Scaling","reindexParentId","restoreBindPose","Pose","PoseNode","Matrix","isBoneNode","getInverse","multiply","decompose","searchRealId","getByInternalId","__cache_get_boneid_from_internalid","addBones","getVertices","getPolygonVertexIndices","getPolygonTopologyMax","convertPolyIndicesToTri","getPolygonTopologyArray","res","polyIndices","__cache_vertices","Vertices","__cache_indices","__cache_poly_topology_max","error","PolygonVertexIndex","__cache_poly_topology_arr","getUV","_parseText","getMap","getRef","getIndex","getNode","LayerElementUV","UVIndex","UV","MappingInformationType","ReferenceInformationType","uvNode","parseUV_ByPolygonVertex_Direct","parseUV_ByPolygonVertex_IndexToDirect","parseUV_ByPolygon_Direct","parseUV_ByPolygon_IndexToDirect","parseUV_ByVertex_Direct","getNormal","LayerElementNormal","Normals","parseNormal_ByPolygonVertex_Direct","parseNormal_ByPolygonVertex_IndexToDirect","parseNormal_ByPolygon_Direct","parseNormal_ByPolygon_IndexToDirect","parseNormal_ByVertex_Direct","LayerElementMaterial","Materials","parse_ByPolygon_IndexToDirect","fromNode","KeyTime","KeyValueFloat","KeyAttrFlags","KeyAttrDataFloat","getLength","containerIndices","containerId","setCurve","AnimationCurveNode","AnimationCurve","AnimationLayer","AnimationStack","Number","MAX_VALUE","Texture","getById","parseFileName","FileName","searchParents","ShadingModel","parseParameters","Diffuse","Color","Specular","specular","Shininess","shininess","Emissive","emissive","EmissiveFactor","emissiveIntensity","Reflectivity","reflectivity","Opacity","opacity","transparent","4","FACE_1","FACE_2","FACE_3","FACE_4","L_SHOULDER_1","R_SHOULDER_1","L_SHOULDER_2","R_SHOULDER_2","SELECT","START","DPAD_UP","DPAD_DOWN","DPAD_LEFT","DPAD_RIGHT","VENDOR","5","pressed","6","PLYLoader","propertyNameMapping","setPropertyNameMapping","bin2str","Uint8Array","byteLength","String","fromCharCode","isASCII","parseHeader","format","ArrayBuffer","parseASCII","parseBinary","exec","comments","elements","headerLength","shift","join","countType","itemType","parseASCIINumber","parseASCIIElement","useColor","handleElement","postProcess","faces","vertexColors","colors","elementsNeedUpdate","setRGB","red","green","blue","vertex_indices","vertex_index","Face3","binaryRead","getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","binaryReadElement","DataView","7","size","cellSize","extrudeSettings","amount","bevelEnabled","bevelSegments","steps","bevelSize","bevelThickness","autogenerated","cells","q","walkable","userData","8","Date","now","ceil","random","document","createElement","async","src","getElementById","parentNode","removeChild","getElementsByTagName","insertBefore","timeout","setTimeout","clearTimeout","addEventListener","ok","Promise","9","VERSION","TAU","DEG_TO_RAD","RAD_TO_DEG","SQRT3","sqrt","TILE","ENT","STR","HEX","SQR","ABS","Board","tiles","tileGroup","group","Object3D","grid","overlay","finder","AStarFinder","init","setGrid","setEntityOnTile","cellToPixel","cell","position","copy","heightOffset","tile","entity","addTile","indexOf","snapTileToGrid","mesh","removeTile","remove","splice","dispose","removeAllTiles","children","getTileAtCell","cellToHash","snapToGrid","pixelToCell","getRandomTile","Tools","randomInt","findPath","forEach","generateOverlay","LineBasicMaterial","generateTilemap","reset","generateTiles","Cell","_calcCost","_priority","_visited","_parent","uniqueID","LinkedList","generateID","set","equals","HexGrid","numCells","_createVertex","cellShape","Shape","moveTo","lineTo","autoClose","cellGeo","cellShapeGeo","ShapeGeometry","_cellWidth","_cellLength","_hashDelimeter","_directions","_diagonals","_list","_vec3","_cel","_conversionVec","_geoCache","_matCache","TWO_THIRDS","_cubeRound","getCellAt","getNeighbors","getRandomCell","distance","max","abs","clearPath","traverse","generateTile","ExtrudeGeometry","Tile","scale","material","tileScale","merge","generateTilePoly","rotateOnAxis","generate","createPointsGeometry","Line","rotation","getJSON","url","callback","fromJSON","cache","scope","toJSON","cos","sin","round","SqrGrid","_fullCellSize","randomizeRGB","objectType","selected","highlight","structure","_emissive","getHex","select","setHex","deselect","toggle","next","prev","free","first","last","objToNodeMap","floor","sortArray","toString","addNode","swapObjects","showDebug","dump","has","moveUp","moveDown","sort","clear","_t","_listener","isOnce","context","signal","active","params","execute","apply","detach","isBound","_destroy","_bindings","_prevParams","dispatch","arguments","memorize","_shouldPropagate","validateListener","_registerListener","_indexOfListener","_addBinding","addOnce","removeAll","getNumListeners","halt","forget","Signal","allowDiagonal","heuristicFilter","list","compare","PathUtil","backtrace","reverse","biBacktrace","pathLength","interpolate","expandPath","smoothenPath","isWalkableAt","compressPath","imageLoader","LoadingManager","ImageLoader","loadTexture","image","needsUpdate","sourceFile","MouseCaster","down","rightDown","pickedObject","selectedObject","allHits","ctrl","wheel","screenPosition","Vector2","_camera","_raycaster","Raycaster","_preventDefault","_onDocumentMouseMove","bind","_onDocumentMouseDown","_onDocumentMouseUp","_onMouseWheel","OVER","OUT","DOWN","UP","CLICK","WHEEL","update","setFromCamera","intersectObject","object","point","preventDefault","window","event","shiftKey","ctrlKey","which","clientX","innerWidth","clientY","innerHeight","stopPropagation","wheelDelta","detail","Scene","element","body","alpha","antialias","clearColor","sortObjects","fog","light","DirectionalLight","lightPosition","cameraType","cameraPosition","orthoZoom","minDistance","maxDistance","zoomSpeed","noZoom","renderer","WebGLRenderer","setClearColor","width","height","container","AmbientLight","normalize","camera","OrthographicCamera","PerspectiveCamera","contolled","OrbitControls","domElement","left","right","top","bottom","aspect","updateProjectionMatrix","setSize","attachTo","style","setPixelRatio","devicePixelRatio","appendChild","render","updateOrthoZoom","focusOn","lookAt","SelectionManager","mouse","onSelect","onDeselect","toggleSelection","onMouse","clearSelection","clamp","min","sign","getShortRotation","isPlainObject","nodeType","hasOwnProperty","nwf","system","Performance","elapsedTime","performance","empty","lastChild","radixSort","substring","XMLHttpRequest","onreadystatechange","status","statusText","JSON","responseText","open","setRequestHeader","send","10","keyCode","location","keyLocation","keyIdentifier","key","keyCap","KeyboardEvent","TypeError","DOM_KEY_LOCATION_STANDARD","DOM_KEY_LOCATION_LEFT","DOM_KEY_LOCATION_RIGHT","DOM_KEY_LOCATION_NUMPAD","navigator","platform","userAgent","vendor","12","13","16","17","18","19","20","21","22","23","24","25","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","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","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","144","145","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","186","187","188","189","190","191","192","219","220","221","222","226","229","246","247","248","249","250","251","254","59","61","224","ShiftLeft","ShiftRight","ControlLeft","ControlRight","AltLeft","AltRight","OSLeft","OSRight","NumpadEnter","Space","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","KeyA","KeyB","KeyC","KeyD","KeyE","KeyF","KeyG","KeyH","KeyI","KeyJ","KeyK","KeyL","KeyM","KeyN","KeyO","KeyP","KeyQ","KeyR","KeyS","KeyT","KeyU","KeyV","KeyW","KeyX","KeyY","KeyZ","Numpad0","Numpad1","Numpad2","Numpad3","Numpad4","Numpad5","Numpad6","Numpad7","Numpad8","Numpad9","NumpadMultiply","NumpadAdd","NumpadComma","NumpadSubtract","NumpadDecimal","NumpadDivide","Semicolon","Equal","Comma","Minus","Period","Slash","Backquote","BracketLeft","Backslash","BracketRight","Quote","IntlBackslash","Esc","Nonconvert","Left","Up","Right","Down","Del","Menu","MediaNextTrack","MediaPreviousTrack","SelectMedia","HalfWidth","FullWidth","RomanCharacters","Crsel","Exsel","Zoom","defineProperty","get","getOwnPropertyDescriptor","queryKeyCap","toLowerCase","identifyKey","locale","11","dynamic-body","static-body","constraint","_registered","AFRAME","systems","registerSystem","components","registerComponent","CANNON","./src/components/body/dynamic-body","./src/components/body/static-body","./src/components/constraint","./src/components/math","./src/system/physics","cannon","shape2mesh","shapes","types","SPHERE","SphereGeometry","radius","currentMaterial","PARTICLE","particleGeo","particleMaterial","settings","particleSize","PLANE","PlaneGeometry","castShadow","receiveShadow","BOX","BoxGeometry","halfExtents","CONVEXPOLYHEDRON","computeFaceNormals","HEIGHTFIELD","Vec3","data","getConvexTrianglePillar","pillarConvex","vadd","pillarOffset","TRIMESH","getTriangleVertices","shapeOffsets","shapeOrientations","quaternion","schema","shape","default","oneOf","cylinderAxis","sphereRadius","NaN","el","sceneEl","hasLoaded","initBody","getAttribute","Body","mass","linearDamping","angularDamping","object3D","updateMatrixWorld","utils","extend","Type","toUpperCase","addShape","offset","orientation","debug","createWireframe","degToRad","isLoaded","isPlaying","_play","emit","play","addBehavior","Phase","SIMULATE","addBody","wireframe","syncToPhysics","pause","removeBehavior","removeBody","LineSegments","EdgesGeometry","clone","inverse","syncWireframe","applyQuaternion","updateMatrix","parentEl","velocity","isScene","getWorldQuaternion","getWorldPosition","syncFromPhysics","setAttribute","worldToLocal","../../../lib/CANNON-shape2mesh","three-to-cannon","14","dependencies","step","./body","15","multiple","target","maxForce","collideConnected","wakeUpBodies","pivot","targetPivot","axis","targetAxis","world","removeConstraint","createConstraint","addConstraint","LockConstraint","DistanceConstraint","HingeConstraint","pivotA","pivotB","axisA","axisB","ConeTwistConstraint","PointToPointConstraint","./quaternion","./velocity","hasAttribute","removeAttribute","RENDER","tick","maxInterval","GRAVITY","MAX_INTERVAL","ITERATIONS","CONTACT_MATERIAL","friction","restitution","contactEquationStiffness","contactEquationRelaxation","frictionEquationStiffness","frictionEquationRegularization","gravity","iterations","listeners","World","quatNormalizeSkip","quatNormalizeFast","solver","broadphase","NaiveBroadphase","contactMaterial","ContactMaterial","addContactMaterial","removeEventListener","../constants","_args","raw","escapedName","rawSpec","spec","hosted","ssh","sshUrl","httpsUrl","gitUrl","shortcut","directUrl","_from","_id","_inCache","_location","_phantomChildren","_requested","_requiredBy","_resolved","_shasum","_shrinkwrap","_spec","_where","author","email","bugs","description","devDependencies","browserify","grunt","grunt-browserify","grunt-contrib-concat","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-yuidoc","jshint","nodeunit","uglify-js","engines","gitHead","homepage","keywords","licenses","main","optionalDependencies","readme","readmeFilename","repository","AABB","ArrayCollisionMatrix","Box","Broadphase","Constraint","ContactEquation","Narrowphase","ConvexPolyhedron","Cylinder","Equation","EventTarget","FrictionEquation","GSSolver","GridBroadphase","Heightfield","Mat3","ObjectCollisionMatrix","Pool","Particle","Plane","Ray","RaycastVehicle","RaycastResult","RigidVehicle","RotationalEquation","RotationalMotorEquation","SAPBroadphase","SPHSystem","Solver","Sphere","SplitSolver","Spring","Trimesh","Vec3Pool","../package.json","./collision/AABB","./collision/ArrayCollisionMatrix","./collision/Broadphase","./collision/GridBroadphase","./collision/NaiveBroadphase","./collision/ObjectCollisionMatrix","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/ConeTwistConstraint","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/HingeConstraint","./constraints/LockConstraint","./constraints/PointToPointConstraint","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalEquation","./equations/RotationalMotorEquation","./material/ContactMaterial","./material/Material","./math/Mat3","./math/Quaternion","./math/Transform","./math/Vec3","./objects/Body","./objects/RaycastVehicle","./objects/RigidVehicle","./objects/SPHSystem","./objects/Spring","./shapes/Box","./shapes/ConvexPolyhedron","./shapes/Cylinder","./shapes/Heightfield","./shapes/Particle","./shapes/Plane","./shapes/Shape","./shapes/Sphere","./shapes/Trimesh","./solver/GSSolver","./solver/Solver","./solver/SplitSolver","./utils/EventTarget","./utils/Pool","./utils/Vec3Pool","./world/Narrowphase","./world/World","lowerBound","upperBound","setFromPoints","vmult","overlaps","volume","contains","getCorners","toLocalFrame","pointToLocal","toWorldFrame","pointToWorld","overlapsRay","_direction","from","../math/Vec3","../utils/Utils","matrix","setNumObjects","26","useBoundingBoxes","dirty","collisionPairs","needBroadphaseCollision","collisionFilterGroup","collisionFilterMask","STATIC","sleepState","SLEEPING","intersectionTest","doBoundingBoxBroadphase","doBoundingSphereBroadphase","vsub","pow","boundingRadius","norm2","aabbNeedsUpdate","computeAABB","aabb","makePairsUnique","setWorld","boundingSphereCheck","boundingSphereRadius","aabbQuery","../math/Quaternion","../objects/Body","../shapes/Plane","../shapes/Shape","nx","ny","nz","aabbMin","aabbMax","bins","binLengths","j","B","k","N","numObjects","bodies","M","_","P","COMPOUND","L","I","V","F","O","D","worldNormalNeedsUpdate","computeWorldNormal","H","worldNormal","W","G","U","K","Y","X","Q","Z","J","$","dot","tt","et","it","ot","./Broadphase","./AABB","current","previous","getKey","getDiff","to","precision","checkCollisionResponse","skipBackfaces","mode","ANY","result","hasHit","mult","distanceTo","CLOSEST","ALL","intersectWorld","_updateDirection","getAABB","intersectBodies","pointInTriangle","intersectBody","collisionResponse","intersectShape","_shouldStop","intersectBox","intersectConvex","convexPolyhedronRepresentation","intersectPlane","reportIntersection","faceList","intersectHeightfield","elementSize","pointToLocalFrame","getIndexOfPosition","getAabbAtIndex","pointToWorldFrame","intersectSphere","lerp","faceNormals","intersectTrimesh","vectorToLocalFrame","distanceSquared","tree","rayQuery","getVertex","vectorToWorldFrame","hitFaceIndex","../collision/AABB","../collision/RaycastResult","../math/Transform","../shapes/Box","../shapes/ConvexPolyhedron","rayFromWorld","rayToWorld","hitNormalWorld","hitPointWorld","setZero","abort","axisList","axisIndex","_addBodyHandler","_removeBodyHandler","insertionSortX","insertionSortY","insertionSortZ","sortList","checkBounds","autoDetectAxis","../collision/Broadphase","angle","coneEquation","twistEquation","twistAngle","minForce","equations","bodyA","bodyB","tangents","maxAngle","../equations/ConeEquation","../equations/ContactEquation","../equations/RotationalEquation","./Constraint","./PointToPointConstraint","defaults","idCounter","wakeUp","enable","enabled","disable","distanceEquation","ni","ri","rj","rotationalEquation1","rotationalEquation2","motorEquation","enableMotor","disableMotor","setMotorSpeed","targetVelocity","setMotorMaxForce","../equations/RotationalMotorEquation","xA","UNIT_X","xB","yA","UNIT_Y","yB","zA","UNIT_Z","zB","rotationalEquation3","equationX","equationY","equationZ","computeB","jacobianElementA","jacobianElementB","cross","rotational","computeGW","computeGiMf","../math/Mat3","./Equation","bi","bj","angularVelocity","force","torque","negate","spatial","getImpactVelocityAlongNormal","getVelocityAtWorldPoint","eps","multiplier","setSpookParams","computeGq","multiplyVectors","computeGWlambda","vlambda","wlambda","invMassSolve","invInertiaWorldSolve","computeGiMGt","addToWlambda","addScaledVector","computeC","../math/JacobianElement","frictionEquationRelaxation","multiplyElement","./Vec3","identity","setTrace","getTrace","smult","mmult","solve","setRotationFromQuaternion","transpose","toArray","setFromAxisAngle","toAxisAngle","acos","setFromVectors","isAntiparallelTo","norm","conjugate","normalizeFast","toEuler","atan2","asin","slerp","integrate","./Quaternion","ZERO","crossmat","unit","lengthSquared","vmul","isZero","almostEquals","almostZero","./Mat3","preStep","postStep","previousPosition","interpolatedPosition","initPosition","initVelocity","invMass","DYNAMIC","allowSleep","sleepSpeedLimit","sleepTimeLimit","timeLastSleepy","_wakeUpAfterNarrowphase","initQuaternion","previousQuaternion","interpolatedQuaternion","initAngularVelocity","inertia","invInertia","invInertiaWorld","invInertiaSolve","fixedRotation","linearFactor","angularFactor","updateMassProperties","COLLIDE_EVENT_NAME","KINEMATIC","AWAKE","SLEEPY","wakeupEvent","dispatchEvent","sleep","sleepyEvent","sleepEvent","sleepTick","updateSolveMassProperties","updateBoundingRadius","updateBoundingSphereRadius","calculateWorldAABB","updateInertiaWorld","applyForce","applyLocalForce","applyImpulse","applyLocalImpulse","calculateInertia","../material/Material","../utils/EventTarget","chassisBody","wheelInfos","sliding","indexRightAxis","indexForwardAxis","indexUpAxis","addWheel","setSteeringValue","steering","applyEngineForce","engineForce","setBrake","brake","addToWorld","constraints","preStepCallback","updateVehicle","dt","getVehicleAxisWorld","updateWheelTransform","currentVehicleSpeedKmHour","castRay","updateSuspension","suspensionForce","maxSuspensionForce","raycastResult","updateFriction","chassisConnectionPointWorld","isInContact","deltaRotation","useCustomSlidingRotationalSpeed","customSlidingRotationalSpeed","suspensionRestLength","suspensionLength","suspensionStiffness","clippedInvContactDotSuspension","suspensionRelativeVelocity","dampingCompression","dampingRelaxation","removeFromWorld","updateWheelTransformWorld","directionWorld","rayTest","groundObject","maxSuspensionTravel","chassisConnectionPointLocal","directionLocal","axleLocal","axleWorld","worldTransform","getWheelTransformWorld","sideImpulse","forwardImpulse","slipInfo","skidInfo","frictionSlip","rollInfluence","../collision/Ray","../objects/WheelInfo","./Body","wheelBodies","coordinateSystem","wheelAxes","wheelForces","motorTargetVelocity","setWheelForce","applyWheelForce","_update","getWheelSpeed","../constraints/HingeConstraint","../shapes/Sphere","particles","density","smoothingRadius","speedOfSound","viscosity","pressures","densities","neighbors","gradw","nablaw","../shapes/Particle","restLength","stiffness","damping","localAnchorA","localAnchorB","worldAnchorA","setWorldAnchorA","worldAnchorB","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","58","suspensionMaxLength","isFrontWheel","updateWheel","updateConvexPolyhedronRepresentation","calculateLocalInertia","getSideNormals","forEachWorldCorner","./ConvexPolyhedron","./Shape","60","worldVertices","worldVerticesNeedsUpdate","computeNormals","worldFaceNormalsNeedsUpdate","worldFaceNormals","uniqueEdges","uniqueAxes","computeEdges","getFaceNormal","computeNormal","clipAgainstHull","clipFaceAgainstHull","findSeparatingAxis","testSepAxis","project","computeLocalAABB","getPlaneConstantOfFace","connectedFaces","clipFaceAgainstPlane","depth","computeWorldVertices","computeWorldFaceNormals","getAveragePointLocal","transformAllPoints","pointIsInside","62","maxValue","minValue","updateMinValue","updateMaxValue","cacheEnabled","_cachedPillars","setHeightValueAtIndex","clearCachedConvexTrianglePillar","getRectMinMax","getTriangleAt","getTriangle","getNormalAt","getHeightAt","getCacheConvexTrianglePillarKey","getCachedConvexTrianglePillar","setCachedConvexTrianglePillar","convex","setHeightsFromImage","getContext","drawImage","getImageData","unshift","63","64","CYLINDER","Int16Array","edges","updateEdges","updateNormals","updateAABB","updateTree","_getUnscaledVertex","insert","removeEmptyNodes","getTrianglesInAABB","setScale","_e","getEdgeVertex","getEdgeVector","getWorldVertex","createTorus","../utils/Octree","tolerance","./Solver","addEquation","removeEquation","removeAllEquations","subsolver","nodes","nodePool","createNode","visited","eqs","_listeners","hasEventListener","hasAnyEventListener","root","maxDepth","subdivide","objects","release","constructObject","resize","./Pool","contactPointPool","frictionEquationPool","frictionResult","v3pool","currentContactMaterial","enableFrictionReduction","createContactEquation","si","sj","createFrictionEquationsFromContact","createFrictionFromAverage","getContacts","getContactMaterial","defaultContactMaterial","shapeOverlapKeeper","bodyOverlapKeeper","boxBox","convexConvex","boxConvex","boxParticle","convexParticle","sphereSphere","planeTrimesh","sphereTrimesh","spherePlane","sphereBox","nt","st","rt","at","ht","ct","sphereConvex","planeBox","planeConvex","lt","ut","pt","mt","vt","ft","yt","gt","planeParticle","bt","sphereParticle","wt","xt","Et","Tt","St","boxHeightfield","convexHeightfield","Ct","At","Rt","Bt","Mt","sphereHeightfield","../equations/FrictionEquation","../solver/Solver","../utils/Vec3Pool","contacts","frictionEquations","stepnumber","default_dt","nextId","narrowphase","collisionMatrix","collisionMatrixPrevious","contactmaterials","contactMaterialTable","defaultMaterial","doProfiling","profile","makeContactConstraints","accumulator","subsystems","addBodyEvent","removeBodyEvent","idToBodyMap","collisionMatrixTick","raycastClosest","raycastAll","raycastAny","getBodyById","getShapeById","addMaterial","timing","navigationStart","internalStep","contact","emitContactEvents","clearForces","shapeA","shapeB","../collision/ArrayCollisionMatrix","../collision/NaiveBroadphase","../collision/OverlapKeeper","../material/ContactMaterial","../solver/GSSolver","../utils/TupleDictionary","./Narrowphase","animateSpeed","checkpoint","targetPosition","setCheckpoint","sync","isVelocityActive","getVelocity","setLength","getOffset","sub","GamepadButton","controller","prevTime","buttons","updateButtonState","isConnected","getDpad","getJoystick","getVelocityDelta","isRotationActive","getRotationDelta","getGamepad","getGamepads","getButton","getAxis","axes","connected","getID","../../lib/GamepadButton","../../lib/GamepadButtonEvent","radToDeg","device","isMobile","standing","isPositionCalibrated","dolly","hmdEuler","previousHMDPosition","deltaHMDPosition","vrControls","VRControls","is","setFromQuaternion","getRotation","calculateHMDPosition","getPositionDelta","setFromMatrixPosition","checkpoint-controls","gamepad-controls","hmd-controls","keyboard-controls","mouse-controls","touch-controls","universal-controls","./checkpoint-controls","./gamepad-controls","./hmd-controls","./keyboard-controls","./mouse-controls","./touch-controls","./universal-controls","dVelocity","localKeys","keydown","onKeyDown","keyup","onKeyUp","blur","onBlur","attachEventListeners","getKeys","ArrowUp","ArrowLeft","ArrowDown","ArrowRight","removeEventListeners","shouldCaptureKeyEvent","isPressed","isProxied","getKeyboard","../../lib/keyboard.polyfill","exitPointerLock","mozExitPointerLock","pointerlockEnabled","sensitivity","mouseDown","pointerLocked","lookVector","bindMethods","addEventListeners","onMouseDown","onMouseMove","onMouseUp","onPointerLockChange","canvas","onPointerLockError","multiplyScalar","previousMouseEvent","movementX","mozMovementX","movementY","mozMovementY","screenX","screenY","INSPECTOR","opened","requestPointerLock","mozRequestPointerLock","pointerLockElement","mozPointerLockElement","onTouchStart","onTouchEnd","isMoving","movementEnabled","movementControls","rotationEnabled","rotationControls","movementSpeed","movementEasing","movementEasingY","movementAcceleration","rotationSensitivity","fly","pitch","yaw","heading","injectControls","updateRotation","updateVelocity","applyEuler","once","LoopOnce","repeat","LoopRepeat","pingpong","LoopPingPong","clip","duration","crossFadeDuration","loop","repetitions","model","mixer","activeActions","getObject3D","AnimationMixer","action","loopDelta","direction","stopAllAction","stopAction","playAction","fadeOut","stop","clipAction","setDuration","setLoop","fadeIn","crossorigin","setObject3D","removeObject3D","../../lib/FBXLoader","PropertyBinding","sanitizeNodeName","loader","loaderPromise","then","GLTF2Loader","scene","../../lib/fetch-script","animation-mixer","fbx-model","gltf-model-next","json-model","object-model","ply-model","three-model","System","Component","./animation-mixer","./fbx-model","./gltf-model-next","./json-model","./object-model","./ply-model","./three-model","JSONLoader","FaceColors","NoColors","morphTargets","morphNormals","ObjectLoader","shading","FlatShading","VertexColors","getOrLoadGeometry","skipCache","../../lib/PLYLoader","94","deprecated","enableAnimation","animation","animationDuration","activeAction","playAnimation","isRunning","findByName","targetEl","fire","querySelector","path","extension","enableBackground","texture","CubeTextureLoader","background","applyEnvMap","envMap","GRABBED_STATE","grabbing","hitEl","onHit","onGripOpen","onGripClose","removeState","addState","cube-env-map","grab","jump-ability","kinematic-body","sphere-collider","toggle-velocity","./checkpoint","./cube-env-map","./grab","./jump-ability","./kinematic-body","./sphere-collider","./toggle-velocity","on","playerHeight","maxJumps","soundJump","soundLand","numJumps","beginJump","bindings","collide","onCollide","enableSlopes","projectOnPlane","raycastToGround","state","watch","observer","els","collisions","handleHit","MutationObserver","observe","childList","subtree","disconnect","querySelectorAll","Map","getWorldScale","isEntity","boundingSphere","filter","speed","defaultComponents","primitive","mappings","registerPrimitive","Primitive","hexgrid","fetch","json","addMesh","isMesh","../../lib/default-hex-grid.json","../../lib/hex-grid.min.js","ocean","amplitude","amplitudeVariance","speedVariance","mergeVertices","waves","ang","amp","tube","segments","radialSegments","closed","CatmullRomCurve3","TubeGeometry","a-grid","a-hexgrid","a-ocean","a-tube","./a-grid","./a-hexgrid","./a-ocean","./a-tube","boundingBox","Box3","setFromObject","isFinite","lengthSq","matrixWorld","translate","getCenter","metadata","radiusTop","radiusBottom","_type","numSegments","attributes","applyMatrix","fromGeometry","array","HULL","MESH","mesh2shape","./lib/THREE.quickhull","subVectors","crossVectors","visiblePoints","cEdgeIndex","points","distanceToSquared","normalsNeedUpdate","_installable","dup","136","137","138","139","140","141","142","143","146","147","148","149","150","151","152","153","154","155","156","157","158","159"],"mappings":"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","file":"../aframe-extras.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= 7e3;\n }return !1;\n }, parse: function parse(t) {\n var e = this;console.time(\"FBXLoader\"), console.time(\"FBXLoader: TextParser\");var r = new i().parse(t);console.timeEnd(\"FBXLoader: TextParser\"), console.time(\"FBXLoader: ObjectParser\"), e.hierarchy = new n().parseHierarchy(r), e.weights = new o().parse(r, e.hierarchy), e.animations = new p().parse(r, e.hierarchy), e.textures = new d().parse(r, e.hierarchy), e.materials = new v().parse(r, e.hierarchy), e.geometries = new s().parse(r, e.hierarchy), console.timeEnd(\"FBXLoader: ObjectParser\"), this.texture_cache = {}, this.material_cache = {}, this.geometry_cache = {}, console.time(\"FBXLoader: MeshParser\");var a = this.parseMeshes(r);console.timeEnd(\"FBXLoader: MeshParser\");for (var h = new THREE.Group(), c = 0; c < a.length; ++c) {\n void 0 !== a[c] && h.add(a[c]);\n }return console.timeEnd(\"FBXLoader\"), h;\n }, getTexture: function getTexture(t) {\n return t.id in this.texture_cache || (null === this.textureLoader && (this.textureLoader = new THREE.TextureLoader()), this.texture_cache[t.id] = this.textureLoader.load(this.textureBasePath + \"/\" + t.fileName)), this.texture_cache[t.id];\n }, getMaterial: function getMaterial(t, e) {\n if (!(t.id in this.material_cache)) {\n var i;switch (t.type) {case \"phong\":\n i = new THREE.MeshPhongMaterial();break;case \"lambert\":\n i = new THREE.MeshLambertMaterial();break;default:\n console.warn(\"No implementation given for material type \" + t.type + \" in FBXLoader.js. Defaulting to basic material\"), i = new THREE.MeshBasicMaterial({ color: 3342591 });}for (var o = e.searchConnectionChildren(t.id), n = 0; n < o.length; ++n) {\n var s = e.searchConnectionType(o[n], t.id);switch (s) {case ' \"AmbientColor':\n break;case ' \"DiffuseColor':\n t.parameters.map = this.getTexture(this.textures.textures[o[n]]);break;default:\n console.warn(\"Unknown texture application of type \" + s + \", skipping texture\");}\n }i.setValues(t.parameters), this.material_cache[t.id] = i;\n }return this.material_cache[t.id];\n }, getGeometry: function getGeometry(t) {\n if (!(t.id in this.geometry_cache)) {\n var e = new THREE.BufferGeometry();if (e.name = t.name, e.addAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(t.vertices), 3)), void 0 !== t.normals && t.normals.length > 0 && e.addAttribute(\"normal\", new THREE.BufferAttribute(new Float32Array(t.normals), 3)), void 0 !== t.uvs && t.uvs.length > 0 && e.addAttribute(\"uv\", new THREE.BufferAttribute(new Float32Array(t.uvs), 2)), void 0 !== t.indices && t.indices.length > 0 && (t.indices.length > 65535 ? e.setIndex(new THREE.BufferAttribute(new Uint32Array(t.indices), 1)) : e.setIndex(new THREE.BufferAttribute(new Uint16Array(t.indices), 1))), e.verticesNeedUpdate = !0, e.computeBoundingSphere(), e.computeBoundingBox(), t.materialIndices.length > 1) {\n e.groups = [];for (var i = 0, o = -1; i < t.materialIndices.length; ++i) {\n t.materialIndices[i] !== o && (e.groups.push({ start: 3 * i, count: 0, materialIndex: t.materialIndices[i] }), o = t.materialIndices[i]), e.groups[e.groups.length - 1].count += 3;\n }\n }this.geometry_cache[t.id] = new THREE.Geometry().fromBufferGeometry(e), this.geometry_cache[t.id].bones = t.bones, this.geometry_cache[t.id].skinIndices = this.weights.skinIndices, this.geometry_cache[t.id].skinWeights = this.weights.skinWeights;\n }return this.geometry_cache[t.id];\n }, parseMeshes: function parseMeshes(t) {\n var e = t.Objects.subNodes.Model,\n i = [];for (var o in e) {\n \"Mesh\" === e[o].attrType && i.push(this.parseMesh(e[o], t));\n }return i;\n }, parseMesh: function parseMesh(t, e) {\n for (var i, o, n, s = e.Objects.subNodes.Geometry, r = e.Objects.subNodes.Material, a = e.searchConnectionChildren(t.id), h = [], c = 0; c < a.length; ++c) {\n a[c] in s ? i = this.getGeometry(this.geometries.geometries[a[c]]) : a[c] in r && h.push(this.getMaterial(this.materials.materials[a[c]], e));\n }if (o = h.length > 1 ? new THREE.MultiMaterial(h) : h[0], void 0 !== i.bones && void 0 !== i.skinWeights) {\n if (o instanceof THREE.MultiMaterial) for (var c = 0; c < o.materials.length; ++c) {\n o.materials[c].skinning = !0;\n } else o.skinning = !0;n = new THREE.SkinnedMesh(i, o);\n } else n = new THREE.Mesh(i, o);return void 0 !== this.animations && this.addAnimation(n, this.weights.matrices, this.animations), n;\n }, addAnimation: function addAnimation(t, e, i) {\n function o(t, e) {\n if (void 0 === t) return !1;var i;switch (e) {case \"S\":\n if (!t.S) return !1;i = t.S;break;case \"R\":\n if (!t.R) return !1;i = t.R;break;case \"T\":\n if (!t.T) return !1;i = t.T;}return void 0 !== i.curves.x && void 0 !== i.curves.y && void 0 !== i.curves.z;\n }function n(t, e) {\n var i = s(t.curves.x, e),\n o = s(t.curves.y, e),\n n = s(t.curves.z, e);return i && o && n;\n }function s(t, e) {\n return void 0 !== t.values[e];\n }for (var r in i.stacks) {\n for (var a = { name: i.stacks[r].name, fps: 30, length: i.stacks[r].length, hierarchy: [] }, h = 0; h < t.geometry.bones.length; ++h) {\n var c = t.geometry.bones[h].name;c = c.replace(/.*:/, \"\"), a.hierarchy.push({ parent: t.geometry.bones[h].parent, name: c, keys: [] });\n }for (var l = t.geometry.bones, u = 0; u < i.stacks[r].frames; u++) {\n for (h = 0; h < l.length; h++) {\n for (var p = l[h], d = i.stacks[r].layers[0][h], m = 0; m < a.hierarchy.length; m++) {\n a.hierarchy[m].name === p.name && a.hierarchy[m].keys.push(function (t, e) {\n var s = {};if (s.time = u / i.fps, s.pos = e.pos, s.rot = e.rotq, s.scl = e.scl, void 0 === t) return s;try {\n if (o(t, \"T\") && n(t.T, u)) {\n var r = new THREE.Vector3(t.T.curves.x.values[u], t.T.curves.y.values[u], t.T.curves.z.values[u]);s.pos = [r.x, r.y, r.z];\n }if (o(t, \"R\") && n(t.R, u)) {\n var a = x(t.R.curves.x.values[u]),\n h = x(t.R.curves.y.values[u]),\n c = x(t.R.curves.z.values[u]),\n l = new THREE.Vector3(a, h, c),\n p = E(l.x, l.y, l.z);s.rot = [p.x, p.y, p.z, p.w];\n }if (o(t, \"S\") && n(t.S, u)) {\n var d = new THREE.Vector3(t.S.curves.x.values[u], t.S.curves.y.values[u], t.S.curves.z.values[u]);s.scl = [d.x, d.y, d.z];\n }\n } catch (t) {\n console.log(e), console.log(t);\n }return s;\n }(d, p));\n }\n }\n }void 0 === t.geometry.animations && (t.geometry.animations = []), t.geometry.animations.push(THREE.AnimationClip.parseAnimation(a, t.geometry.bones));\n }\n }, loadFile: function loadFile(t, e, i, o, n) {\n var s = new THREE.XHRLoader(this.manager);return s.setResponseType(n), s.load(t, e, i, o);\n }, loadFileAsBuffer: function loadFileAsBuffer(t, e, i, o) {\n this.loadFile(t, e, i, o, \"arraybuffer\");\n }, loadFileAsText: function loadFileAsText(t, e, i, o) {\n this.loadFile(t, e, i, o, \"text\");\n } }), Object.assign(t.prototype, { add: function add(t, e) {\n this[t] = e;\n }, searchConnectionParent: function searchConnectionParent(t) {\n if (void 0 === this.__cache_search_connection_parent && (this.__cache_search_connection_parent = []), void 0 !== this.__cache_search_connection_parent[t]) return this.__cache_search_connection_parent[t];this.__cache_search_connection_parent[t] = [];for (var e = this.Connections.properties.connections, i = [], o = 0; o < e.length; ++o) {\n if (e[o][0] == t) {\n var n = 0 === e[o][1] ? -1 : e[o][1];i.push(n);\n }\n }return i.length > 0 ? (this.__cache_search_connection_parent[t] = this.__cache_search_connection_parent[t].concat(i), i) : (this.__cache_search_connection_parent[t] = [-1], [-1]);\n }, searchConnectionChildren: function searchConnectionChildren(t) {\n if (void 0 === this.__cache_search_connection_children && (this.__cache_search_connection_children = []), void 0 !== this.__cache_search_connection_children[t]) return this.__cache_search_connection_children[t];this.__cache_search_connection_children[t] = [];for (var e = this.Connections.properties.connections, i = [], o = 0; o < e.length; ++o) {\n e[o][1] == t && i.push(0 === e[o][0] ? -1 : e[o][0]);\n }return i.length > 0 ? (this.__cache_search_connection_children[t] = this.__cache_search_connection_children[t].concat(i), i) : (this.__cache_search_connection_children[t] = [], []);\n }, searchConnectionType: function searchConnectionType(t, e) {\n var i = t + \",\" + e;if (void 0 === this.__cache_search_connection_type && (this.__cache_search_connection_type = {}), void 0 !== this.__cache_search_connection_type[i]) return this.__cache_search_connection_type[i];this.__cache_search_connection_type[i] = \"\";for (var o = this.Connections.properties.connections, n = 0; n < o.length; ++n) {\n if (o[n][0] == t && o[n][1] == e) return this.__cache_search_connection_type[i] = o[n][2], o[n][2];\n }return this.__cache_search_connection_type[t] = null, null;\n } }), Object.assign(i.prototype, { getPrevNode: function getPrevNode() {\n return this.nodeStack[this.currentIndent - 2];\n }, getCurrentNode: function getCurrentNode() {\n return this.nodeStack[this.currentIndent - 1];\n }, getCurrentProp: function getCurrentProp() {\n return this.currentProp;\n }, pushStack: function pushStack(t) {\n this.nodeStack.push(t), this.currentIndent += 1;\n }, popStack: function popStack() {\n this.nodeStack.pop(), this.currentIndent -= 1;\n }, setCurrentProp: function setCurrentProp(t, e) {\n this.currentProp = t, this.currentPropName = e;\n }, parse: function parse(e) {\n this.currentIndent = 0, this.allNodes = new t(), this.nodeStack = [], this.currentProp = [], this.currentPropName = \"\";var i = e.split(\"\\n\");for (var o in i) {\n var n = i[o];if (!n.match(/^[\\s\\t]*;/) && !n.match(/^[\\s\\t]*$/)) {\n var s = new RegExp(\"^\\\\t{\" + this.currentIndent + \"}(\\\\w+):(.*){\", \"\"),\n r = n.match(s);if (r) {\n var a = r[1].trim().replace(/^\"/, \"\").replace(/\"$/, \"\"),\n h = r[2].split(\",\").map(function (t) {\n return t.trim().replace(/^\"/, \"\").replace(/\"$/, \"\");\n });this.parseNodeBegin(n, a, h || null);\n } else {\n var c = new RegExp(\"^\\\\t{\" + this.currentIndent + \"}(\\\\w+):[\\\\s\\\\t\\\\r\\\\n](.*)\"),\n r = n.match(c);if (r) {\n var l = r[1].replace(/^\"/, \"\").replace(/\"$/, \"\").trim(),\n u = r[2].replace(/^\"/, \"\").replace(/\"$/, \"\").trim();this.parseNodeProperty(n, l, u);\n } else {\n var p = new RegExp(\"^\\\\t{\" + (this.currentIndent - 1) + \"}}\");n.match(p) ? this.nodeEnd() : n.match(/^[^\\s\\t}]/) && this.parseNodePropertyContinued(n);\n }\n }\n }\n }return this.allNodes;\n }, parseNodeBegin: function parseNodeBegin(t, e, i) {\n var o = { name: e, properties: {}, subNodes: {} },\n n = this.parseNodeAttr(i),\n s = this.getCurrentNode();if (0 === this.currentIndent) this.allNodes.add(e, o);else if (e in s.subNodes) {\n var r = s.subNodes[e];this.isFlattenNode(s.subNodes[e]) && (\"\" === n.id ? (s.subNodes[e] = [], s.subNodes[e].push(r)) : (s.subNodes[e] = {}, s.subNodes[e][r.id] = r)), \"\" === n.id ? s.subNodes[e].push(o) : s.subNodes[e][n.id] = o;\n } else \"number\" == typeof n.id || n.id.match(/^\\d+$/) ? (s.subNodes[e] = {}, s.subNodes[e][n.id] = o) : s.subNodes[e] = o;i && (o.id = n.id, o.attrName = n.name, o.attrType = n.type), this.pushStack(o);\n }, parseNodeAttr: function parseNodeAttr(t) {\n var e = t[0];\"\" !== t[0] && (e = parseInt(t[0]), isNaN(e) && (e = t[0]));var i, o;return t.length > 1 && (i = t[1].replace(/^(\\w+)::/, \"\"), o = t[2]), { id: e, name: i || \"\", type: o || \"\" };\n }, parseNodeProperty: function parseNodeProperty(t, e, i) {\n var o = this.getCurrentNode(),\n n = o.name;if (void 0 !== n) {\n if (n.match(/Properties(\\d)+/)) return void this.parseNodeSpecialProperty(t, e, i);\n }if (\"C\" == e) {\n var s = i.split(\",\").slice(1),\n r = parseInt(s[0]),\n a = parseInt(s[1]),\n h = i.split(\",\").slice(3);e = \"connections\", i = [r, a], i = i.concat(h), void 0 === o.properties[e] && (o.properties[e] = []);\n }if (\"Node\" == e) {\n var c = parseInt(i);o.properties.id = c, o.id = c;\n }e in o.properties ? Array.isArray(o.properties[e]) ? o.properties[e].push(i) : o.properties[e] += i : Array.isArray(o.properties[e]) ? o.properties[e].push(i) : o.properties[e] = i, this.setCurrentProp(o.properties, e);\n }, parseNodePropertyContinued: function parseNodePropertyContinued(t) {\n this.currentProp[this.currentPropName] += t;\n }, parseNodeSpecialProperty: function parseNodeSpecialProperty(t, e, i) {\n var o = i.split('\",').map(function (t) {\n return t.trim().replace(/^\\\"/, \"\").replace(/\\s/, \"_\");\n }),\n n = o[0],\n s = o[1],\n r = o[2],\n a = o[3],\n h = o[4];switch (s) {case \"int\":\n h = parseInt(h);break;case \"double\":\n h = parseFloat(h);break;case \"ColorRGB\":case \"Vector3D\":\n var c = h.split(\",\");h = new THREE.Vector3(c[0], c[1], c[2]);}this.getPrevNode().properties[n] = { type: s, type2: r, flag: a, value: h }, this.setCurrentProp(this.getPrevNode().properties, n);\n }, nodeEnd: function nodeEnd() {\n this.popStack();\n }, isFlattenNode: function isFlattenNode(t) {\n return \"subNodes\" in t && \"properties\" in t;\n } }), o.prototype.parseCluster = function (t, e, i) {\n var o = t.searchConnectionParent(e),\n n = T(i.subNodes.Indexes.properties.a),\n s = S(i.subNodes.Weights.properties.a),\n r = A(i.subNodes.Transform.properties.a),\n a = A(i.subNodes.TransformLink.properties.a);return { parent: o, id: parseInt(e), indices: n, weights: s, transform: r, transformlink: a, linkMode: i.properties.Mode };\n }, o.prototype.parse = function (t, e) {\n this.skinIndices = [], this.skinWeights = [], this.matrices = [];var i = t.Objects.subNodes.Deformer,\n o = {};for (var n in i) {\n if (\"Cluster\" === i[n].attrType) {\n if (!(\"Indexes\" in i[n].subNodes)) continue;var s = this.parseCluster(t, n, i[n]),\n r = t.searchConnectionChildren(s.id)[0];o[r] = s;\n }\n }for (var a = [], h = e.hierarchy, c = 0; c < h.length; ++c) {\n var l = h[c].internalId;if (void 0 !== o[l]) {\n var u = o[l];this.matrices.push(u.transform);for (var p = 0; p < u.indices.length; ++p) {\n void 0 === a[u.indices[p]] && (a[u.indices[p]] = {}, a[u.indices[p]].joint = [], a[u.indices[p]].weight = []);var d = t.searchConnectionChildren(u.id);d.length > 1 && console.warn(\"FBXLoader: node \" + u.id + \" have many weight kids: \" + d), a[u.indices[p]].joint.push(e.getBoneIdfromInternalId(t, d[0])), a[u.indices[p]].weight.push(u.weights[p]);\n }\n } else this.matrices.push(new THREE.Matrix4());\n }for (var m = 0; m < a.length; m++) {\n if (void 0 !== a[m]) {\n var v = new THREE.Vector4(a[m].joint[0] ? a[m].joint[0] : 0, a[m].joint[1] ? a[m].joint[1] : 0, a[m].joint[2] ? a[m].joint[2] : 0, a[m].joint[3] ? a[m].joint[3] : 0),\n f = new THREE.Vector4(a[m].weight[0] ? a[m].weight[0] : 0, a[m].weight[1] ? a[m].weight[1] : 0, a[m].weight[2] ? a[m].weight[2] : 0, a[m].weight[3] ? a[m].weight[3] : 0);this.skinIndices.push(v), this.skinWeights.push(f);\n } else this.skinIndices.push(new THREE.Vector4(0, 0, 0, 0)), this.skinWeights.push(new THREE.Vector4(0, 0, 0, 0));\n }return this;\n }, n.prototype.parseHierarchy = function (t) {\n var e = t.Objects,\n i = e.subNodes.Model,\n o = [];for (var n in i) {\n void 0 !== i[n].attrType && o.push(i[n]);\n }this.hierarchy = [];for (var s = 0; s < o.length; ++s) {\n var r = o[s],\n a = t.searchConnectionParent(r.id)[0],\n h = [0, 0, 0],\n c = [0, 0, 0, 1],\n l = [1, 1, 1];if (\"Lcl_Translation\" in r.properties && (h = S(r.properties.Lcl_Translation.value)), \"Lcl_Rotation\" in r.properties) {\n c = C(r.properties.Lcl_Rotation.value);var u = new THREE.Quaternion();u.setFromEuler(new THREE.Euler(c[0], c[1], c[2], \"ZYX\")), c = [u.x, u.y, u.z, u.w];\n }\"Lcl_Scaling\" in r.properties && (l = S(r.properties.Lcl_Scaling.value));var p = r.attrName;p = p.replace(/:/, \"\"), p = p.replace(/_/, \"\"), p = p.replace(/-/, \"\"), this.hierarchy.push({ parent: a, name: p, pos: h, rotq: c, scl: l, internalId: r.id });\n }return this.reindexParentId(), this.restoreBindPose(t), this;\n }, n.prototype.reindexParentId = function () {\n for (var t = 0; t < this.hierarchy.length; t++) {\n for (var e = 0; e < this.hierarchy.length; ++e) {\n if (this.hierarchy[t].parent == this.hierarchy[e].internalId) {\n this.hierarchy[t].parent = e;break;\n }\n }\n }\n }, n.prototype.restoreBindPose = function (t) {\n var e = t.Objects.subNodes.Pose;if (void 0 !== e) {\n for (var i in e) {\n if (\"BindPose\" === e[i].attrType) {\n e = e[i];break;\n }\n }for (var o = e.subNodes.PoseNode, n = {}, s = {}, r = 0; r < o.length; ++r) {\n var a = A(o[r].subNodes.Matrix.properties.a),\n h = A(o[r].subNodes.Matrix.properties.a);n[o[r].id] = a, s[o[r].id] = h;\n }for (var c = 0; c < this.hierarchy.length; ++c) {\n var l = this.hierarchy[c],\n u = l.internalId;if (void 0 !== s[u]) {\n for (var p, d = new THREE.Vector3(0, 0, 0), m = new THREE.Quaternion(), v = new THREE.Vector3(1, 1, 1), f = t.searchConnectionParent(u), y = 0; y < f.length; ++y) {\n if (this.isBoneNode(f[y])) {\n p = f[y];break;\n }\n }if (void 0 !== p && void 0 !== n[p]) {\n var g = new THREE.Matrix4();g.getInverse(s[p]), g.multiply(n[u]), n[u] = g;\n }n[u].decompose(d, m, v), l.pos = [d.x, d.y, d.z], l.rotq = [m.x, m.y, m.z, m.w], l.scl = [v.x, v.y, v.z];\n }\n }\n }\n }, n.prototype.searchRealId = function (t) {\n for (var e = 0; e < this.hierarchy.length; e++) {\n if (t == this.hierarchy[e].internalId) return e;\n }return -1;\n }, n.prototype.getByInternalId = function (t) {\n for (var e = 0; e < this.hierarchy.length; e++) {\n if (t == this.hierarchy[e].internalId) return this.hierarchy[e];\n }return null;\n }, n.prototype.isBoneNode = function (t) {\n for (var e = 0; e < this.hierarchy.length; ++e) {\n if (t === this.hierarchy[e].internalId) return !0;\n }return !1;\n }, n.prototype.getBoneIdfromInternalId = function (t, e) {\n if (void 0 === t.__cache_get_boneid_from_internalid && (t.__cache_get_boneid_from_internalid = []), void 0 !== t.__cache_get_boneid_from_internalid[e]) return t.__cache_get_boneid_from_internalid[e];for (var i = 0; i < this.hierarchy.length; ++i) {\n if (this.hierarchy[i].internalId == e) return t.__cache_get_boneid_from_internalid[e] = i, i;\n }return -1;\n }, Object.assign(s.prototype, { parse: function parse(t, e) {\n if (!(\"Geometry\" in t.Objects.subNodes)) return this;for (var i in t.Objects.subNodes.Geometry) {\n \"Mesh\" === t.Objects.subNodes.Geometry[i].attrType && (this.geometries[i] = new r().parse(t.Objects.subNodes.Geometry[i]), this.geometries[i].addBones(e.hierarchy));\n }return this;\n } }), r.prototype.parse = function (t) {\n if (this.node = t, this.name = t.attrName, this.id = t.id, this.vertices = this.getVertices(), void 0 === this.vertices) return void console.log(\"FBXLoader: Geometry.parse(): pass\" + this.node.id);if (this.indices = this.getPolygonVertexIndices(), this.uvs = new a().parse(this.node, this), this.normals = new h().parse(this.node, this), this.materialIndices = new c().parse(this.node), this.getPolygonTopologyMax() > 3) {\n var e = this.convertPolyIndicesToTri(this.indices, this.materialIndices, this.getPolygonTopologyArray());this.indices = e.res, this.materialIndices = e.materialIndices, this.polyIndices = e.polyIndices;\n }return this;\n }, r.prototype.getVertices = function () {\n if (this.node.__cache_vertices) return this.node.__cache_vertices;if (void 0 === this.node.subNodes.Vertices) return console.warn(\"this.node: \" + this.node.attrName + \"(\" + this.node.id + \") does not have Vertices\"), this.node.__cache_vertices = void 0, null;var t = this.node.subNodes.Vertices.properties.a,\n e = t.split(\",\").map(function (t) {\n return parseFloat(t);\n });return this.node.__cache_vertices = e, this.node.__cache_vertices;\n }, r.prototype.getPolygonVertexIndices = function () {\n if (this.node.__cache_indices && this.node.__cache_poly_topology_max) return this.node.__cache_indices;if (void 0 === this.node.subNodes) return console.error(\"this.node.subNodes undefined\"), void console.log(this.node);if (void 0 === this.node.subNodes.PolygonVertexIndex) return console.warn(\"this.node: \" + this.node.attrName + \"(\" + this.node.id + \") does not have PolygonVertexIndex \"), void (this.node.__cache_indices = void 0);for (var t = this.node.subNodes.PolygonVertexIndex.properties.a, e = t.split(\",\"), i = 1, o = null, n = [], s = 0; s < e.length; ++s) {\n var r = parseInt(e[s]);r < 0 ? (i > o && (o = i), e[s] = -1 ^ r, n.push(i), i = 1) : (e[s] = r, i++);\n }return null === o && (console.warn(\"FBXLoader: topology N not found: \" + this.node.attrName), console.warn(this.node), o = 3), this.node.__cache_poly_topology_max = o, this.node.__cache_poly_topology_arr = n, this.node.__cache_indices = e, this.node.__cache_indices;\n }, r.prototype.getPolygonTopologyMax = function () {\n return this.node.__cache_indices && this.node.__cache_poly_topology_max ? this.node.__cache_poly_topology_max : (this.getPolygonVertexIndices(this.node), this.node.__cache_poly_topology_max);\n }, r.prototype.getPolygonTopologyArray = function () {\n return this.node.__cache_indices && this.node.__cache_poly_topology_max ? this.node.__cache_poly_topology_arr : (this.getPolygonVertexIndices(this.node), this.node.__cache_poly_topology_arr);\n }, r.prototype.convertPolyIndicesToTri = function (t, e, i) {\n for (var o = [], n = 0, s = 0, r = 0, a = []; n < t.length;) {\n r = i[s];for (var h = 0; h <= r - 3; h++) {\n o.push(t[n]), o.push(t[n + (r - 2 - h)]), o.push(t[n + (r - 1 - h)]), a.push(s);\n }s++, n += r;\n }var c = [e[0]];if (e.length > 1) for (var n = 0; n < a.length; ++n) {\n c[n] = e[a[n]];\n }return { res: o, materialIndices: c, polyIndices: a };\n }, r.prototype.addBones = function (t) {\n this.bones = t;\n }, a.prototype.getUV = function (t) {\n return this.node && this.uv && this.map && this.ref ? this.uv : this._parseText(t);\n }, a.prototype.getMap = function (t) {\n return this.node && this.uv && this.map && this.ref ? this.map : (this._parseText(t), this.map);\n }, a.prototype.getRef = function (t) {\n return this.node && this.uv && this.map && this.ref ? this.ref : (this._parseText(t), this.ref);\n }, a.prototype.getIndex = function (t) {\n return this.node && this.uv && this.map && this.ref ? this.index : (this._parseText(t), this.index);\n }, a.prototype.getNode = function (t) {\n return null !== this.node ? this.node : (this.node = t.subNodes.LayerElementUV, this.node);\n }, a.prototype._parseText = function (t) {\n var e = this.getNode(t)[0];if (void 0 === e) return [];var i = 0;for (var o in e) {\n o.match(/^\\d+$/) && i++;\n }i > 0 && (console.warn(\"multi uv not supported\"), e = e[o]);var n = e.subNodes.UVIndex.properties.a,\n s = e.subNodes.UV.properties.a,\n r = e.properties.MappingInformationType,\n a = e.properties.ReferenceInformationType;return this.uv = S(s), this.index = T(n), this.map = r, this.ref = a, this.uv;\n }, a.prototype.parse = function (t, e) {\n if (\"LayerElementUV\" in t.subNodes) {\n this.uvNode = this.getNode(t), this.uv = this.getUV(t);var i = this.getMap(t),\n o = this.getRef(t),\n n = this.getIndex(t),\n s = e.getPolygonTopologyArray();switch (i) {case \"ByPolygonVertex\":\n switch (o) {case \"Direct\":\n this.uv = this.parseUV_ByPolygonVertex_Direct(this.uv, n, s, 2);break;case \"IndexToDirect\":\n this.uv = this.parseUV_ByPolygonVertex_IndexToDirect(this.uv, n);}this.uv = b(this.uv, e.getPolygonVertexIndices(t), 2);break;case \"ByPolygon\":\n switch (o) {case \"Direct\":\n this.uv = this.parseUV_ByPolygon_Direct();break;case \"IndexToDirect\":\n this.uv = this.parseUV_ByPolygon_IndexToDirect();}}return this.uv;\n }\n }, a.prototype.parseUV_ByPolygonVertex_Direct = function (t, e, i, o) {\n return g(t, e, i, o);\n }, a.prototype.parseUV_ByPolygonVertex_IndexToDirect = function (t, e) {\n return y(t, e, 2);\n }, a.prototype.parseUV_ByPolygon_Direct = function (t) {\n return console.warn(\"not implemented\"), t;\n }, a.prototype.parseUV_ByPolygon_IndexToDirect = function (t) {\n return console.warn(\"not implemented\"), t;\n }, a.prototype.parseUV_ByVertex_Direct = function (t) {\n return console.warn(\"not implemented\"), t;\n }, h.prototype.getNormal = function (t) {\n return this.node && this.normal && this.map && this.ref ? this.normal : (this._parseText(t), this.normal);\n }, h.prototype.getMap = function (t) {\n return this.node && this.normal && this.map && this.ref ? this.map : (this._parseText(t), this.map);\n }, h.prototype.getRef = function (t) {\n return this.node && this.normal && this.map && this.ref ? this.ref : (this._parseText(t), this.ref);\n }, h.prototype.getNode = function (t) {\n return this.node ? this.node : (this.node = t.subNodes.LayerElementNormal, this.node);\n }, h.prototype._parseText = function (t) {\n var e = this.getNode(t)[0];if (void 0 === e) return void console.warn(\"node: \" + t.attrName + \"(\" + t.id + \") does not have LayerElementNormal\");var i = e.properties.MappingInformationType,\n o = e.properties.ReferenceInformationType,\n n = e.subNodes.Normals.properties.a;this.normal = S(n), this.map = i, this.ref = o;\n }, h.prototype.parse = function (t, e) {\n var i = this.getNormal(t),\n o = this.getMap(t),\n n = this.getRef(t),\n s = e.getPolygonVertexIndices(t),\n r = e.getPolygonTopologyArray(t);switch (o) {case \"ByPolygonVertex\":\n switch (n) {case \"Direct\":\n i = this.parseNormal_ByPolygonVertex_Direct(i, s, r, 3);break;case \"IndexToDirect\":\n i = this.parseNormal_ByPolygonVertex_IndexToDirect();}break;case \"ByPolygon\":\n switch (n) {case \"Direct\":\n i = this.parseNormal_ByPolygon_Direct();break;case \"IndexToDirect\":\n i = this.parseNormal_ByPolygon_IndexToDirect();}}return i;\n }, h.prototype.parseNormal_ByPolygonVertex_Direct = function (t, e, i, o) {\n return g(t, e, i, o);\n }, h.prototype.parseNormal_ByPolygonVertex_IndexToDirect = function (t) {\n return console.warn(\"not implemented\"), t;\n }, h.prototype.parseNormal_ByPolygon_Direct = function (t) {\n return console.warn(\"not implemented\"), t;\n }, h.prototype.parseNormal_ByPolygon_IndexToDirect = function (t) {\n return console.warn(\"not implemented\"), t;\n }, h.prototype.parseNormal_ByVertex_Direct = function (t) {\n return console.warn(\"not implemented\"), t;\n }, Object.assign(c.prototype, { parse: function parse(t) {\n if (\"LayerElementMaterial\" in t.subNodes) {\n var e = t.subNodes.LayerElementMaterial[0],\n i = e.properties.MappingInformationType,\n o = e.properties.ReferenceInformationType,\n n = T(e.subNodes.Materials.properties.a);switch (i) {case \"ByPolygon\":\n switch (o) {case \"IndexToDirect\":\n this.indexBuffer = this.parse_ByPolygon_IndexToDirect(n);break;default:\n this.indexBuffer = [0];}break;default:\n this.indexBuffer = [0];}return this.indexBuffer;\n }\n }, parse_ByPolygon_IndexToDirect: function parse_ByPolygon_IndexToDirect(t) {\n return t;\n } }), l.prototype.fromNode = function (t) {\n return this.id = t.id, this.internalId = t.id, this.times = t.subNodes.KeyTime.properties.a, this.values = t.subNodes.KeyValueFloat.properties.a, this.attrFlag = t.subNodes.KeyAttrFlags.properties.a, this.attrData = t.subNodes.KeyAttrDataFloat.properties.a, this.times = S(this.times), this.values = S(this.values), this.attrData = S(this.attrData), this.attrFlag = T(this.attrFlag), this.times = this.times.map(function (t) {\n return w(t);\n }), this;\n }, l.prototype.getLength = function () {\n return this.times[this.times.length - 1];\n }, u.prototype.fromNode = function (t, e, i) {\n if (this.id = e.id, this.attr = e.attrName, this.internalId = e.id, !this.attr.match(/S|R|T/)) return null;for (var o in e.properties) {\n o.match(/X/) && (this.attrX = !0), o.match(/Y/) && (this.attrY = !0), o.match(/Z/) && (this.attrZ = !0);\n }this.containerIndices = t.searchConnectionParent(this.id), this.curveIdx = t.searchConnectionChildren(this.id);for (var n = this.containerIndices.length - 1; n >= 0; --n) {\n var s = i.searchRealId(this.containerIndices[n]);if (s >= 0 && (this.containerBoneId = s, this.containerId = this.containerIndices[n]), s >= 0) break;\n }return this;\n }, u.prototype.setCurve = function (t) {\n this.curves.push(t);\n }, p.prototype.parse = function (t, e) {\n var i = t.Objects.subNodes.AnimationCurveNode,\n o = t.Objects.subNodes.AnimationCurve,\n n = t.Objects.subNodes.AnimationLayer,\n s = t.Objects.subNodes.AnimationStack,\n r = [];for (var a in i) {\n if (a.match(/\\d+/)) {\n var h = new u().fromNode(t, i[a], e);r.push(h);\n }\n }for (var c = {}, p = 0; p < r.length; ++p) {\n null !== r[p] && (c[r[p].id] = r[p]);\n }var d = [];for (a in o) {\n if (a.match(/\\d+/)) {\n var m = new l().fromNode(o[a]);d.push(m);var v = t.searchConnectionParent(m.id)[0],\n f = t.searchConnectionType(m.id, v);if (f.match(/X/)) f = \"x\";else if (f.match(/Y/)) f = \"y\";else {\n if (!f.match(/Z/)) continue;f = \"z\";\n }c[v].curves[f] = m;\n }\n }for (var y in c) {\n var g = c[y].containerBoneId;void 0 === this.curves[g] && (this.curves[g] = { T: null, R: null, S: null }), this.curves[g][c[y].attr] = c[y];\n }this.layers = {};for (var a in n) {\n for (var b = [], w = t.searchConnectionChildren(a), p = 0; p < w.length; ++p) {\n c[w[p]] && (void 0 === b[c[w[p]].containerBoneId] && (b[c[w[p]].containerBoneId] = { T: null, R: null, S: null }), b[c[w[p]].containerBoneId][c[w[p]].attr] = c[w[p]]);\n }this.layers[a] = b;\n }this.stacks = {};for (var a in s) {\n for (var x = [], w = t.searchConnectionChildren(a), E = 0, T = Number.MAX_VALUE, p = 0; p < w.length; ++p) {\n if (w[p] in this.layers) {\n x.push(this.layers[w[p]]);for (var S = 0; S < this.layers[w[p]].length; ++S) {\n var b = this.layers[w[p]][S];b && function (t) {\n function e(t) {\n t.x && (E = t.x.getLength() > E ? t.x.getLength() : E, T = t.x.times[0] < T ? t.x.times[0] : T), t.y && (E = t.y.getLength() > E ? t.y.getLength() : E, T = t.y.times[0] < T ? t.y.times[0] : T), t.z && (E = t.z.getLength() > E ? t.z.getLength() : E, T = t.z.times[0] < T ? t.z.times[0] : T);\n }t.R && e(t.R.curves), t.S && e(t.S.curves), t.T && e(t.T.curves);\n }(b);\n }\n }\n }E > T && (this.stacks[a] = { name: s[a].attrName, layers: x, length: E - T, frames: 30 * (E - T) });\n }return this;\n }, d.prototype.add = function (t) {\n void 0 === this.textures && (this.textures = []), this.textures.push(t);for (var e = 0; e < t.parentIds.length; ++e) {\n void 0 === this.perGeoMap[t.parentIds[e]] && (this.perGeoMap[t.parentIds[e]] = []), this.perGeoMap[t.parentIds[e]].push(this.textures[this.textures.length - 1]);\n }\n }, d.prototype.parse = function (t) {\n var e = t.Objects.subNodes.Texture;for (var i in e) {\n var o = new m().parse(e[i], t);this.textures[i] = o;\n }return this;\n }, d.prototype.getById = function (t) {\n return this.perGeoMap[t];\n }, m.prototype.parse = function (t, e) {\n return this.id = t.id, this.name = t.attrName, this.fileName = this.parseFileName(t.properties.FileName), this.parentIds = this.searchParents(this.id, e), this;\n }, m.prototype.parseFileName = function (t) {\n if (void 0 === t) return \"\";var e = t.split(/[\\\\\\/]/);return e.length > 0 ? e[e.length - 1] : t;\n }, m.prototype.searchParents = function (t, e) {\n return e.searchConnectionParent(t);\n }, Object.assign(v.prototype, { parse: function parse(t) {\n var e = t.Objects.subNodes.Material;for (var i in e) {\n var o = new f().parse(e[i], t);this.materials[i] = o;\n }return this;\n } }), Object.assign(f.prototype, { parse: function parse(t, e) {\n return this.id = t.id, this.name = t.attrName, this.type = t.properties.ShadingModel, this.parameters = this.parseParameters(t.properties), this.parentIds = this.searchParents(this.id, e), this;\n }, parseParameters: function parseParameters(t) {\n var e = {};return t.Diffuse && (e.color = new THREE.Color().fromArray([parseFloat(t.Diffuse.value.x), parseFloat(t.Diffuse.value.y), parseFloat(t.Diffuse.value.z)])), t.Specular && (e.specular = new THREE.Color().fromArray([parseFloat(t.Specular.value.x), parseFloat(t.Specular.value.y), parseFloat(t.Specular.value.z)])), t.Shininess && (e.shininess = t.Shininess.value), t.Emissive && (e.emissive = new THREE.Color().fromArray([parseFloat(t.Emissive.value.x), parseFloat(t.Emissive.value.y), parseFloat(t.Emissive.value.z)])), t.EmissiveFactor && (e.emissiveIntensity = t.EmissiveFactor.value), t.Reflectivity && (e.reflectivity = t.Reflectivity.value), t.Opacity && (e.opacity = t.Opacity.value), e.opacity < 1 && (e.transparent = !0), e;\n }, searchParents: function searchParents(t, e) {\n return e.searchConnectionParent(t);\n } });\n }();\n }, {}], 4: [function (t, e, i) {\n e.exports = Object.assign(function () {}, { FACE_1: 0, FACE_2: 1, FACE_3: 2, FACE_4: 3, L_SHOULDER_1: 4, R_SHOULDER_1: 5, L_SHOULDER_2: 6, R_SHOULDER_2: 7, SELECT: 8, START: 9, DPAD_UP: 12, DPAD_DOWN: 13, DPAD_LEFT: 14, DPAD_RIGHT: 15, VENDOR: 16 });\n }, {}], 5: [function (t, e, i) {\n function o(t, e, i) {\n this.type = t, this.index = e, this.pressed = i.pressed, this.value = i.value;\n }e.exports = o;\n }, {}], 6: [function (t, e, i) {\n e.exports = THREE.PLYLoader = function (t) {\n this.manager = void 0 !== t ? t : THREE.DefaultLoadingManager, this.propertyNameMapping = {};\n }, THREE.PLYLoader.prototype = { constructor: THREE.PLYLoader, load: function load(t, e, i, o) {\n var n = this,\n s = new THREE.XHRLoader(this.manager);s.setResponseType(\"arraybuffer\"), s.load(t, function (t) {\n e(n.parse(t));\n }, i, o);\n }, setPropertyNameMapping: function setPropertyNameMapping(t) {\n this.propertyNameMapping = t;\n }, bin2str: function bin2str(t) {\n for (var e = new Uint8Array(t), i = \"\", o = 0; o < t.byteLength; o++) {\n i += String.fromCharCode(e[o]);\n }return i;\n }, isASCII: function isASCII(t) {\n return \"ascii\" === this.parseHeader(this.bin2str(t)).format;\n }, parse: function parse(t) {\n return t instanceof ArrayBuffer ? this.isASCII(t) ? this.parseASCII(this.bin2str(t)) : this.parseBinary(t) : this.parseASCII(t);\n }, parseHeader: function parseHeader(t) {\n var e = /ply([\\s\\S]*)end_header\\s/,\n i = \"\",\n o = 0,\n n = e.exec(t);null !== n && (i = n[1], o = n[0].length);for (var s, r, a = { comments: [], elements: [], headerLength: o }, h = i.split(\"\\n\"), c = void 0, l = 0; l < h.length; l++) {\n var u = h[l];if (\"\" !== (u = u.trim())) switch (r = u.split(/\\s+/), s = r.shift(), u = r.join(\" \"), s) {case \"format\":\n a.format = r[0], a.version = r[1];break;case \"comment\":\n a.comments.push(u);break;case \"element\":\n void 0 !== c && a.elements.push(c), c = Object(), c.name = r[0], c.count = parseInt(r[1]), c.properties = [];break;case \"property\":\n c.properties.push(function (t, e) {\n var i = { type: t[0] };return \"list\" === i.type ? (i.name = t[3], i.countType = t[1], i.itemType = t[2]) : i.name = t[1], i.name in e && (i.name = e[i.name]), i;\n }(r, this.propertyNameMapping));break;default:\n console.log(\"unhandled\", s, r);}\n }return void 0 !== c && a.elements.push(c), a;\n }, parseASCIINumber: function parseASCIINumber(t, e) {\n switch (e) {case \"char\":case \"uchar\":case \"short\":case \"ushort\":case \"int\":case \"uint\":case \"int8\":case \"uint8\":case \"int16\":case \"uint16\":case \"int32\":case \"uint32\":\n return parseInt(t);case \"float\":case \"double\":case \"float32\":case \"float64\":\n return parseFloat(t);}\n }, parseASCIIElement: function parseASCIIElement(t, e) {\n for (var i = e.split(/\\s+/), o = Object(), n = 0; n < t.length; n++) {\n if (\"list\" === t[n].type) {\n for (var s = [], r = this.parseASCIINumber(i.shift(), t[n].countType), a = 0; a < r; a++) {\n s.push(this.parseASCIINumber(i.shift(), t[n].itemType));\n }o[t[n].name] = s;\n } else o[t[n].name] = this.parseASCIINumber(i.shift(), t[n].type);\n }return o;\n }, parseASCII: function parseASCII(t) {\n var e,\n i = new THREE.Geometry(),\n o = this.parseHeader(t),\n n = /end_header\\s([\\s\\S]*)$/,\n s = \"\";null !== (e = n.exec(t)) && (s = e[1]);var r = s.split(\"\\n\"),\n a = 0,\n h = 0;i.useColor = !1;for (var c = 0; c < r.length; c++) {\n var l = r[c];if (\"\" !== (l = l.trim())) {\n h >= o.elements[a].count && (a++, h = 0);var u = this.parseASCIIElement(o.elements[a].properties, l);this.handleElement(i, o.elements[a].name, u), h++;\n }\n }return this.postProcess(i);\n }, postProcess: function postProcess(t) {\n if (t.useColor) {\n for (var e = 0; e < t.faces.length; e++) {\n t.faces[e].vertexColors = [t.colors[t.faces[e].a], t.colors[t.faces[e].b], t.colors[t.faces[e].c]];\n }t.elementsNeedUpdate = !0;\n }return t.computeBoundingSphere(), t;\n }, handleElement: function handleElement(t, e, i) {\n if (\"vertex\" === e) {\n if (t.vertices.push(new THREE.Vector3(i.x, i.y, i.z)), \"red\" in i && \"green\" in i && \"blue\" in i) {\n t.useColor = !0;var o = new THREE.Color();o.setRGB(i.red / 255, i.green / 255, i.blue / 255), t.colors.push(o);\n }\n } else if (\"face\" === e) {\n var n = i.vertex_indices || i.vertex_index;3 === n.length ? t.faces.push(new THREE.Face3(n[0], n[1], n[2])) : 4 === n.length && t.faces.push(new THREE.Face3(n[0], n[1], n[3]), new THREE.Face3(n[1], n[2], n[3]));\n }\n }, binaryRead: function binaryRead(t, e, i, o) {\n switch (i) {case \"int8\":case \"char\":\n return [t.getInt8(e), 1];case \"uint8\":case \"uchar\":\n return [t.getUint8(e), 1];case \"int16\":case \"short\":\n return [t.getInt16(e, o), 2];case \"uint16\":case \"ushort\":\n return [t.getUint16(e, o), 2];case \"int32\":case \"int\":\n return [t.getInt32(e, o), 4];case \"uint32\":case \"uint\":\n return [t.getUint32(e, o), 4];case \"float32\":case \"float\":\n return [t.getFloat32(e, o), 4];case \"float64\":case \"double\":\n return [t.getFloat64(e, o), 8];}\n }, binaryReadElement: function binaryReadElement(t, e, i, o) {\n for (var n, s = Object(), r = 0, a = 0; a < i.length; a++) {\n if (\"list\" === i[a].type) {\n var h = [];n = this.binaryRead(t, e + r, i[a].countType, o);var c = n[0];r += n[1];for (var l = 0; l < c; l++) {\n n = this.binaryRead(t, e + r, i[a].itemType, o), h.push(n[0]), r += n[1];\n }s[i[a].name] = h;\n } else n = this.binaryRead(t, e + r, i[a].type, o), s[i[a].name] = n[0], r += n[1];\n }return [s, r];\n }, parseBinary: function parseBinary(t) {\n for (var e, i = new THREE.Geometry(), o = this.parseHeader(this.bin2str(t)), n = \"binary_little_endian\" === o.format, s = new DataView(t, o.headerLength), r = 0, a = 0; a < o.elements.length; a++) {\n for (var h = 0; h < o.elements[a].count; h++) {\n e = this.binaryReadElement(s, r, o.elements[a].properties, n), r += e[1];var c = e[0];this.handleElement(i, o.elements[a].name, c);\n }\n }return this.postProcess(i);\n } };\n }, {}], 7: [function (t, e, i) {\n e.exports = { size: 5, cellSize: 10, extrudeSettings: { amount: 1, bevelEnabled: !0, bevelSegments: 1, steps: 1, bevelSize: .5, bevelThickness: .5 }, autogenerated: !0, cells: [{ q: -1, r: 0, s: 1, h: 1, walkable: !0, userData: {} }, { q: 0, r: -1, s: 1, h: 1, walkable: !0, userData: {} }, { q: 0, r: 0, s: 0, h: 1, walkable: !0, userData: {} }, { q: 1, r: -1, s: 0, h: 1, walkable: !0, userData: {} }, { q: -1, r: 1, s: 0, h: 0, walkable: !0, userData: {} }, { q: 0, r: 1, s: -1, h: 0, walkable: !0, userData: {} }, { q: 1, r: 0, s: -1, h: 0, walkable: !0, userData: {} }] };\n }, {}], 8: [function (t, e, i) {\n function o() {\n return \"script_\" + Date.now() + \"_\" + Math.ceil(1e5 * Math.random());\n }function n(t, e) {\n var i = document.createElement(\"script\");return i.type = \"text/javascript\", i.async = !0, i.id = e, i.src = t, i;\n }function s(t) {\n var e = document.getElementById(t),\n i = e.parentNode;try {\n i && i.removeChild(e);\n } catch (t) {}\n }function r(t) {\n var e = document.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(t, e);\n }function a(t, e, i) {\n return new i(function (i, a) {\n var h = e.timeout || 5e3,\n c = o(),\n l = n(t, c),\n u = setTimeout(function () {\n a(new Error(\"Script request to \" + t + \" timed out\")), s(c);\n }, h),\n p = function p(t) {\n clearTimeout(t);\n };l.addEventListener(\"load\", function (t) {\n i({ ok: !0 }), p(u), s(c);\n }), l.addEventListener(\"error\", function (e) {\n a(new Error(\"Script request to \" + t + \" failed \" + e)), p(u), s(c);\n }), r(l);\n });\n }function h(t) {\n return t = t || {}, function (e, i) {\n return i = i || {}, a(e, i, t.Promise || Promise);\n };\n }e.exports = h;\n }, {}], 9: [function (t, e, i) {\n var o = e.exports = { VERSION: \"0.1.1\", PI: Math.PI, TAU: 2 * Math.PI, DEG_TO_RAD: .0174532925, RAD_TO_DEG: 57.2957795, SQRT3: Math.sqrt(3), TILE: \"tile\", ENT: \"entity\", STR: \"structure\", HEX: \"hex\", SQR: \"square\", ABS: \"abstract\" };o.Board = function (t, e) {\n if (!t) throw new Error(\"You must pass in a grid system for the board to use.\");this.tiles = [], this.tileGroup = null, this.group = new THREE.Object3D(), this.grid = null, this.overlay = null, this.finder = new o.AStarFinder(e), o.Loader.init(), this.setGrid(t);\n }, o.Board.prototype = { setEntityOnTile: function setEntityOnTile(t, e) {\n var i = this.grid.cellToPixel(e.cell);t.position.copy(i), t.position.y += t.heightOffset || 0, t.tile && (t.tile.entity = null), t.tile = e, e.entity = t;\n }, addTile: function addTile(t) {\n -1 === this.tiles.indexOf(t) && (this.tiles.push(t), this.snapTileToGrid(t), t.position.y = 0, this.tileGroup.add(t.mesh), this.grid.add(t.cell), t.cell.tile = t);\n }, removeTile: function removeTile(t) {\n if (t) {\n var e = this.tiles.indexOf(t);this.grid.remove(t.cell), -1 !== e && this.tiles.splice(e, 1), t.dispose();\n }\n }, removeAllTiles: function removeAllTiles() {\n if (this.tileGroup) for (var t = this.tileGroup.children, e = 0; e < t.length; e++) {\n this.tileGroup.remove(t[e]);\n }\n }, getTileAtCell: function getTileAtCell(t) {\n var e = this.grid.cellToHash(t);return t.tile || (void 0 !== this.grid.cells[e] ? this.grid.cells[e].tile : null);\n }, snapToGrid: function snapToGrid(t) {\n var e = this.grid.pixelToCell(t);t.copy(this.grid.cellToPixel(e));\n }, snapTileToGrid: function snapTileToGrid(t) {\n if (t.cell) t.position.copy(this.grid.cellToPixel(t.cell));else {\n var e = this.grid.pixelToCell(t.position);t.position.copy(this.grid.cellToPixel(e));\n }return t;\n }, getRandomTile: function getRandomTile() {\n var t = o.Tools.randomInt(0, this.tiles.length - 1);return this.tiles[t];\n }, findPath: function findPath(t, e, i) {\n return this.finder.findPath(t.cell, e.cell, i, this.grid);\n }, setGrid: function setGrid(t) {\n this.group.remove(this.tileGroup), this.grid && t !== this.grid && (this.removeAllTiles(), this.tiles.forEach(function (t) {\n this.grid.remove(t.cell), t.dispose();\n }), this.grid.dispose()), this.grid = t, this.tiles = [], this.tileGroup = new THREE.Object3D(), this.group.add(this.tileGroup);\n }, generateOverlay: function generateOverlay(t) {\n var e = new THREE.LineBasicMaterial({ color: 0, opacity: .3 });this.overlay && this.group.remove(this.overlay), this.overlay = new THREE.Object3D(), this.grid.generateOverlay(t, this.overlay, e), this.group.add(this.overlay);\n }, generateTilemap: function generateTilemap(t) {\n this.reset();var e = this.grid.generateTiles(t);this.tiles = e, this.tileGroup = new THREE.Object3D();for (var i = 0; i < e.length; i++) {\n this.tileGroup.add(e[i].mesh);\n }this.group.add(this.tileGroup);\n }, reset: function reset() {\n this.removeAllTiles(), this.tileGroup && this.group.remove(this.tileGroup);\n } }, o.Board.prototype.constructor = o.Board, o.Cell = function (t, e, i, n) {\n this.q = t || 0, this.r = e || 0, this.s = i || 0, this.h = n || 1, this.tile = null, this.userData = {}, this.walkable = !0, this._calcCost = 0, this._priority = 0, this._visited = !1, this._parent = null, this.uniqueID = o.LinkedList.generateID();\n }, o.Cell.prototype = { set: function set(t, e, i) {\n return this.q = t, this.r = e, this.s = i, this;\n }, copy: function copy(t) {\n return this.q = t.q, this.r = t.r, this.s = t.s, this.h = t.h, this.tile = t.tile || null, this.userData = t.userData || {}, this.walkable = t.walkable, this;\n }, add: function add(t) {\n return this.q += t.q, this.r += t.r, this.s += t.s, this;\n }, equals: function equals(t) {\n return this.q === t.q && this.r === t.r && this.s === t.s;\n } }, o.Cell.prototype.constructor = o.Cell, o.HexGrid = function (t) {\n t = t || {}, this.type = o.HEX, this.size = 5, this.cellSize = void 0 === t.cellSize ? 10 : t.cellSize, this.cells = {}, this.numCells = 0, this.extrudeSettings = null, this.autogenerated = !1;var e,\n i = [];for (e = 0; 6 > e; e++) {\n i.push(this._createVertex(e));\n }for (this.cellShape = new THREE.Shape(), this.cellShape.moveTo(i[0].x, i[0].y), e = 1; 6 > e; e++) {\n this.cellShape.lineTo(i[e].x, i[e].y);\n }this.cellShape.lineTo(i[0].x, i[0].y), this.cellShape.autoClose = !0, this.cellGeo = new THREE.Geometry(), this.cellGeo.vertices = i, this.cellGeo.verticesNeedUpdate = !0, this.cellShapeGeo = new THREE.ShapeGeometry(this.cellShape), this._cellWidth = 2 * this.cellSize, this._cellLength = .5 * o.SQRT3 * this._cellWidth, this._hashDelimeter = \".\", this._directions = [new o.Cell(1, -1, 0), new o.Cell(1, 0, -1), new o.Cell(0, 1, -1), new o.Cell(-1, 1, 0), new o.Cell(-1, 0, 1), new o.Cell(0, -1, 1)], this._diagonals = [new o.Cell(2, -1, -1), new o.Cell(1, 1, -2), new o.Cell(-1, 2, -1), new o.Cell(-2, 1, 1), new o.Cell(-1, -1, 2), new o.Cell(1, -2, 1)], this._list = [], this._vec3 = new THREE.Vector3(), this._cel = new o.Cell(), this._conversionVec = new THREE.Vector3(), this._geoCache = [], this._matCache = [];\n }, o.HexGrid.TWO_THIRDS = 2 / 3, o.HexGrid.prototype = { cellToPixel: function cellToPixel(t) {\n return this._vec3.x = t.q * this._cellWidth * .75, this._vec3.y = t.h, this._vec3.z = -(t.s - t.r) * this._cellLength * .5, this._vec3;\n }, pixelToCell: function pixelToCell(t) {\n var e = t.x * (o.HexGrid.TWO_THIRDS / this.cellSize),\n i = (-t.x / 3 + o.SQRT3 / 3 * t.z) / this.cellSize;return this._cel.set(e, i, -e - i), this._cubeRound(this._cel);\n }, getCellAt: function getCellAt(t) {\n var e = t.x * (o.HexGrid.TWO_THIRDS / this.cellSize),\n i = (-t.x / 3 + o.SQRT3 / 3 * t.z) / this.cellSize;return this._cel.set(e, i, -e - i), this._cubeRound(this._cel), this.cells[this.cellToHash(this._cel)];\n }, getNeighbors: function getNeighbors(t, e, i) {\n var o,\n n,\n s = this._directions.length;for (this._list.length = 0, o = 0; s > o; o++) {\n this._cel.copy(t), this._cel.add(this._directions[o]), !(n = this.cells[this.cellToHash(this._cel)]) || i && !i(t, n) || this._list.push(n);\n }if (e) for (o = 0; s > o; o++) {\n this._cel.copy(t), this._cel.add(this._diagonals[o]), !(n = this.cells[this.cellToHash(this._cel)]) || i && !i(t, n) || this._list.push(n);\n }return this._list;\n }, getRandomCell: function getRandomCell() {\n var t,\n e = 0,\n i = o.Tools.randomInt(0, this.numCells);for (t in this.cells) {\n if (e === i) return this.cells[t];e++;\n }return this.cells[t];\n }, cellToHash: function cellToHash(t) {\n return t.q + this._hashDelimeter + t.r + this._hashDelimeter + t.s;\n }, distance: function distance(t, e) {\n var i = Math.max(Math.abs(t.q - e.q), Math.abs(t.r - e.r), Math.abs(t.s - e.s));return i += e.h - t.h;\n }, clearPath: function clearPath() {\n var t, e;for (t in this.cells) {\n e = this.cells[t], e._calcCost = 0, e._priority = 0, e._parent = null, e._visited = !1;\n }\n }, traverse: function traverse(t) {\n var e;for (e in this.cells) {\n t(this.cells[e]);\n }\n }, generateTile: function generateTile(t, e, i) {\n var n = Math.abs(t.h);1 > n && (n = 1);var s = this._geoCache[n];s || (this.extrudeSettings.amount = n, s = new THREE.ExtrudeGeometry(this.cellShape, this.extrudeSettings), this._geoCache[n] = s);var r = new o.Tile({ size: this.cellSize, scale: e, cell: t, geometry: s, material: i });return t.tile = r, r;\n }, generateTiles: function generateTiles(t) {\n t = t || {};var e = [],\n i = { tileScale: .95, cellSize: this.cellSize, material: null, extrudeSettings: { amount: 1, bevelEnabled: !0, bevelSegments: 1, steps: 1, bevelSize: .5, bevelThickness: .5 } };i = o.Tools.merge(i, t), this.cellSize = i.cellSize, this._cellWidth = 2 * this.cellSize, this._cellLength = .5 * o.SQRT3 * this._cellWidth, this.autogenerated = !0, this.extrudeSettings = i.extrudeSettings;var n, s, r;for (n in this.cells) {\n r = this.cells[n], s = this.generateTile(r, i.tileScale, i.material), s.position.copy(this.cellToPixel(r)), s.position.y = 0, e.push(s);\n }return e;\n }, generateTilePoly: function generateTilePoly(t) {\n t || (t = new THREE.MeshBasicMaterial({ color: 2405631 }));var e = new THREE.Mesh(this.cellShapeGeo, t);return this._vec3.set(1, 0, 0), e.rotateOnAxis(this._vec3, o.PI / 2), e;\n }, generate: function generate(t) {\n t = t || {}, this.size = void 0 === t.size ? this.size : t.size;var e, i, n, s;for (e = -this.size; e < this.size + 1; e++) {\n for (i = -this.size; i < this.size + 1; i++) {\n n = -e - i, Math.abs(e) <= this.size && Math.abs(i) <= this.size && Math.abs(n) <= this.size && (s = new o.Cell(e, i, n), this.add(s));\n }\n }\n }, generateOverlay: function generateOverlay(t, e, i) {\n var n,\n s,\n r,\n a = this.cellShape.createPointsGeometry();for (n = -t; t + 1 > n; n++) {\n for (s = -t; t + 1 > s; s++) {\n if (r = -n - s, Math.abs(n) <= t && Math.abs(s) <= t && Math.abs(r) <= t) {\n this._cel.set(n, s, r);var h = new THREE.Line(a, i);h.position.copy(this.cellToPixel(this._cel)), h.rotation.x = 90 * o.DEG_TO_RAD, e.add(h);\n }\n }\n }\n }, add: function add(t) {\n var e = this.cellToHash(t);if (!this.cells[e]) return this.cells[e] = t, this.numCells++, t;\n }, remove: function remove(t) {\n var e = this.cellToHash(t);this.cells[e] && (delete this.cells[e], this.numCells--);\n }, dispose: function dispose() {\n this.cells = null, this.numCells = 0, this.cellShape = null, this.cellGeo.dispose(), this.cellGeo = null, this.cellShapeGeo.dispose(), this.cellShapeGeo = null, this._list = null, this._vec3 = null, this._conversionVec = null, this._geoCache = null, this._matCache = null;\n }, load: function load(t, e, i) {\n var n = this;o.Tools.getJSON({ url: t, callback: function callback(t) {\n n.fromJSON(t), e.call(i || null, t);\n }, cache: !1, scope: n });\n }, fromJSON: function fromJSON(t) {\n var e,\n i,\n n = t.cells;for (this.cells = {}, this.numCells = 0, this.size = t.size, this.cellSize = t.cellSize, this._cellWidth = 2 * this.cellSize, this._cellLength = .5 * o.SQRT3 * this._cellWidth, this.extrudeSettings = t.extrudeSettings, this.autogenerated = t.autogenerated, e = 0; e < n.length; e++) {\n i = new o.Cell(), i.copy(n[e]), this.add(i);\n }\n }, toJSON: function toJSON() {\n var t,\n e,\n i = { size: this.size, cellSize: this.cellSize, extrudeSettings: this.extrudeSettings, autogenerated: this.autogenerated },\n o = [];for (e in this.cells) {\n t = this.cells[e], o.push({ q: t.q, r: t.r, s: t.s, h: t.h, walkable: t.walkable, userData: t.userData });\n }return i.cells = o, i;\n }, _createVertex: function _createVertex(t) {\n var e = o.TAU / 6 * t;return new THREE.Vector3(this.cellSize * Math.cos(e), this.cellSize * Math.sin(e), 0);\n }, _cubeRound: function _cubeRound(t) {\n var e = Math.round(t.q),\n i = Math.round(t.r),\n o = Math.round(t.s),\n n = Math.abs(e - t.q),\n s = Math.abs(i - t.r),\n r = Math.abs(o - t.s);return n > s && n > r ? e = -i - o : s > r ? i = -e - o : o = -e - i, this._cel.set(e, i, o);\n } }, o.HexGrid.prototype.constructor = o.HexGrid, o.SqrGrid = function (t) {\n t = t || {}, this.type = o.SQR, this.size = 5, this.cellSize = void 0 === t.cellSize ? 10 : t.cellSize, this.cells = {}, this.numCells = 0, this.extrudeSettings = null, this.autogenerated = !1;var e = [];e.push(new THREE.Vector3()), e.push(new THREE.Vector3(-this.cellSize, this.cellSize)), e.push(new THREE.Vector3(this.cellSize, this.cellSize)), e.push(new THREE.Vector3(this.cellSize, -this.cellSize)), this.cellShape = new THREE.Shape(), this.cellShape.moveTo(-this.cellSize, -this.cellSize), this.cellShape.lineTo(-this.cellSize, this.cellSize), this.cellShape.lineTo(this.cellSize, this.cellSize), this.cellShape.lineTo(this.cellSize, -this.cellSize), this.cellShape.lineTo(-this.cellSize, -this.cellSize), this.cellGeo = new THREE.Geometry(), this.cellGeo.vertices = e, this.cellGeo.verticesNeedUpdate = !0, this.cellShapeGeo = new THREE.ShapeGeometry(this.cellShape), this._fullCellSize = 2 * this.cellSize, this._hashDelimeter = \".\", this._directions = [new o.Cell(1, 0, 0), new o.Cell(0, -1, 0), new o.Cell(-1, 0, 0), new o.Cell(0, 1, 0)], this._diagonals = [new o.Cell(-1, -1, 0), new o.Cell(-1, 1, 0), new o.Cell(1, 1, 0), new o.Cell(1, -1, 0)], this._list = [], this._vec3 = new THREE.Vector3(), this._cel = new o.Cell(), this._conversionVec = new THREE.Vector3(), this._geoCache = [], this._matCache = [];\n }, o.SqrGrid.prototype = { cellToPixel: function cellToPixel(t) {\n return this._vec3.x = t.q * this._fullCellSize, this._vec3.y = t.h, this._vec3.z = t.r * this._fullCellSize, this._vec3;\n }, pixelToCell: function pixelToCell(t) {\n var e = Math.round(t.x / this._fullCellSize),\n i = Math.round(t.z / this._fullCellSize);return this._cel.set(e, i, 0);\n }, getCellAt: function getCellAt(t) {\n var e = Math.round(t.x / this._fullCellSize),\n i = Math.round(t.z / this._fullCellSize);return this._cel.set(e, i), this.cells[this.cellToHash(this._cel)];\n }, getNeighbors: function getNeighbors(t, e, i) {\n var o,\n n,\n s = this._directions.length;for (this._list.length = 0, o = 0; s > o; o++) {\n this._cel.copy(t), this._cel.add(this._directions[o]), !(n = this.cells[this.cellToHash(this._cel)]) || i && !i(t, n) || this._list.push(n);\n }if (e) for (o = 0; s > o; o++) {\n this._cel.copy(t), this._cel.add(this._diagonals[o]), !(n = this.cells[this.cellToHash(this._cel)]) || i && !i(t, n) || this._list.push(n);\n }return this._list;\n }, getRandomCell: function getRandomCell() {\n var t,\n e = 0,\n i = o.Tools.randomInt(0, this.numCells);for (t in this.cells) {\n if (e === i) return this.cells[t];e++;\n }return this.cells[t];\n }, cellToHash: function cellToHash(t) {\n return t.q + this._hashDelimeter + t.r;\n }, distance: function distance(t, e) {\n var i = Math.max(Math.abs(t.q - e.q), Math.abs(t.r - e.r));return i += e.h - t.h;\n }, clearPath: function clearPath() {\n var t, e;for (t in this.cells) {\n e = this.cells[t], e._calcCost = 0, e._priority = 0, e._parent = null, e._visited = !1;\n }\n }, traverse: function traverse(t) {\n var e;for (e in this.cells) {\n t(this.cells[e]);\n }\n }, generateTile: function generateTile(t, e, i) {\n var n = Math.abs(t.h);1 > n && (n = 1);var s = this._geoCache[n];s || (this.extrudeSettings.amount = n, s = new THREE.ExtrudeGeometry(this.cellShape, this.extrudeSettings), this._geoCache[n] = s);var r = new o.Tile({ size: this.cellSize, scale: e, cell: t, geometry: s, material: i });return t.tile = r, r;\n }, generateTiles: function generateTiles(t) {\n t = t || {};var e = [],\n i = { tileScale: .95, cellSize: this.cellSize, material: null, extrudeSettings: { amount: 1, bevelEnabled: !0, bevelSegments: 1, steps: 1, bevelSize: .5, bevelThickness: .5 } };i = o.Tools.merge(i, t), this.cellSize = i.cellSize, this._fullCellSize = 2 * this.cellSize, this.autogenerated = !0, this.extrudeSettings = i.extrudeSettings;var n, s, r;for (n in this.cells) {\n r = this.cells[n], s = this.generateTile(r, i.tileScale, i.material), s.position.copy(this.cellToPixel(r)), s.position.y = 0, e.push(s);\n }return e;\n }, generateTilePoly: function generateTilePoly(t) {\n t || (t = new THREE.MeshBasicMaterial({ color: 2405631 }));var e = new THREE.Mesh(this.cellShapeGeo, t);return this._vec3.set(1, 0, 0), e.rotateOnAxis(this._vec3, o.PI / 2), e;\n }, generate: function generate(t) {\n t = t || {}, this.size = void 0 === t.size ? this.size : t.size;var e,\n i,\n n,\n s = Math.ceil(this.size / 2);for (e = -s; s > e; e++) {\n for (i = -s; s > i; i++) {\n n = new o.Cell(e, i + 1), this.add(n);\n }\n }\n }, generateOverlay: function generateOverlay(t, e, i) {\n var n,\n s,\n r = Math.ceil(t / 2);for (n = -r; r > n; n++) {\n for (s = -r; r > s; s++) {\n this._cel.set(n, s);var a = new THREE.Line(this.cellGeo, i);a.position.copy(this.cellToPixel(this._cel)), a.rotation.x = 90 * o.DEG_TO_RAD, e.add(a);\n }\n }\n }, add: function add(t) {\n var e = this.cellToHash(t);if (!this.cells[e]) return this.cells[e] = t, this.numCells++, t;\n }, remove: function remove(t) {\n var e = this.cellToHash(t);this.cells[e] && (delete this.cells[e], this.numCells--);\n }, dispose: function dispose() {\n this.cells = null, this.numCells = 0, this.cellShape = null, this.cellGeo.dispose(), this.cellGeo = null, this.cellShapeGeo.dispose(), this.cellShapeGeo = null, this._list = null, this._vec3 = null, this._conversionVec = null, this._geoCache = null, this._matCache = null;\n }, load: function load(t, e, i) {\n o.Tools.getJSON({ url: t, callback: function callback(t) {\n this.fromJSON(t), e.call(i || null, t);\n }, cache: !1, scope: this });\n }, fromJSON: function fromJSON(t) {\n var e,\n i,\n n = t.cells;for (this.cells = {}, this.numCells = 0, this.size = t.size, this.cellSize = t.cellSize, this._fullCellSize = 2 * this.cellSize, this.extrudeSettings = t.extrudeSettings, this.autogenerated = t.autogenerated, e = 0; e < n.length; e++) {\n i = new o.Cell(), i.copy(n[e]), this.add(i);\n }\n }, toJSON: function toJSON() {\n var t,\n e,\n i = { size: this.size, cellSize: this.cellSize, extrudeSettings: this.extrudeSettings, autogenerated: this.autogenerated },\n o = [];for (e in this.cells) {\n t = this.cells[e], o.push({ q: t.q, r: t.r, s: t.s, h: t.h, walkable: t.walkable, userData: t.userData });\n }return i.cells = o, i;\n } }, o.SqrGrid.prototype.constructor = o.SqrGrid, o.Tile = function (t) {\n t = t || {};var e = { cell: null, geometry: null, material: null };if (e = o.Tools.merge(e, t), !e.cell || !e.geometry) throw new Error(\"Missing vg.Tile configuration\");this.cell = e.cell, this.cell.tile && this.cell.tile !== this && this.cell.tile.dispose(), this.cell.tile = this, this.uniqueID = o.Tools.generateID(), this.geometry = e.geometry, this.material = e.material, this.material || (this.material = new THREE.MeshPhongMaterial({ color: o.Tools.randomizeRGB(\"30, 30, 30\", 13) })), this.objectType = o.TILE, this.entity = null, this.userData = {}, this.selected = !1, this.highlight = \"0x0084cc\", this.mesh = new THREE.Mesh(this.geometry, this.material), this.mesh.userData.structure = this, this.position = this.mesh.position, this.rotation = this.mesh.rotation, this.rotation.x = -90 * o.DEG_TO_RAD, this.mesh.scale.set(e.scale, e.scale, 1), this.material.emissive ? this._emissive = this.material.emissive.getHex() : this._emissive = null;\n }, o.Tile.prototype = { select: function select() {\n return this.material.emissive && this.material.emissive.setHex(this.highlight), this.selected = !0, this;\n }, deselect: function deselect() {\n return null !== this._emissive && this.material.emissive && this.material.emissive.setHex(this._emissive), this.selected = !1, this;\n }, toggle: function toggle() {\n return this.selected ? this.deselect() : this.select(), this;\n }, dispose: function dispose() {\n this.cell && this.cell.tile && (this.cell.tile = null), this.cell = null, this.position = null, this.rotation = null, this.mesh.parent && this.mesh.parent.remove(this.mesh), this.mesh.userData.structure = null, this.mesh = null, this.material = null, this.userData = null, this.entity = null, this.geometry = null, this._emissive = null;\n } }, o.Tile.prototype.constructor = o.Tile, function () {\n var t = function t() {\n this.obj = null, this.next = null, this.prev = null, this.free = !0;\n },\n e = function e() {\n this.first = null, this.last = null, this.length = 0, this.objToNodeMap = {}, this.uniqueID = Date.now() + \"\" + Math.floor(1e3 * Math.random()), this.sortArray = [];\n };e.generateID = function () {\n return Math.random().toString(36).slice(2) + Date.now();\n }, e.prototype = { getNode: function getNode(t) {\n return this.objToNodeMap[t.uniqueID];\n }, addNode: function addNode(i) {\n var o = new t();if (!i.uniqueID) try {\n i.uniqueID = e.generateID();\n } catch (t) {\n return console.error(\"[LinkedList.addNode] obj passed is immutable: cannot attach necessary identifier\"), null;\n }return o.obj = i, o.free = !1, this.objToNodeMap[i.uniqueID] = o, o;\n }, swapObjects: function swapObjects(t, e) {\n this.objToNodeMap[t.obj.uniqueID] = null, this.objToNodeMap[e.uniqueID] = t, t.obj = e;\n }, add: function add(t) {\n var e = this.objToNodeMap[t.uniqueID];if (e) {\n if (!1 === e.free) return;e.obj = t, e.free = !1, e.next = null, e.prev = null;\n } else e = this.addNode(t);if (this.first) {\n if (!this.last) throw new Error(\"[LinkedList.add] No last in the list -- that shouldn't happen here\");this.last.next = e, e.prev = this.last, this.last = e, e.next = null;\n } else this.first = e, this.last = e, e.next = null, e.prev = null;this.length++, this.showDebug && this.dump(\"after add\");\n }, has: function has(t) {\n return !!this.objToNodeMap[t.uniqueID];\n }, moveUp: function moveUp(t) {\n this.dump(\"before move up\");var e = this.getNode(t);if (!e) throw \"Oops, trying to move an object that isn't in the list\";if (e.prev) {\n var i = e.prev,\n o = i.prev;e == this.last && (this.last = i);var n = e.next;o && (o.next = e), e.next = i, e.prev = i.prev, i.next = n, i.prev = e, this.first == i && (this.first = e);\n }\n }, moveDown: function moveDown(t) {\n var e = this.getNode(t);if (!e) throw \"Oops, trying to move an object that isn't in the list\";if (e.next) {\n var i = e.next;this.moveUp(i.obj), this.last == i && (this.last = e);\n }\n }, sort: function sort(t) {\n var e,\n i,\n o = this.sortArray,\n n = this.first;for (o.length = 0; n;) {\n o.push(n.obj), n = n.next;\n }for (this.clear(), o.sort(t), i = o.length, e = 0; i > e; e++) {\n this.add(o[e]);\n }\n }, remove: function remove(t) {\n var e = this.getNode(t);return !(!e || e.free) && (e.prev && (e.prev.next = e.next), e.next && (e.next.prev = e.prev), e.prev || (this.first = e.next), e.next || (this.last = e.prev), e.free = !0, e.prev = null, e.next = null, this.length--, !0);\n }, shift: function shift() {\n var t = this.first;return 0 === this.length ? null : (t.prev && (t.prev.next = t.next), t.next && (t.next.prev = t.prev), this.first = t.next, t.next || (this.last = null), t.free = !0, t.prev = null, t.next = null, this.length--, t.obj);\n }, pop: function pop() {\n var t = this.last;return 0 === this.length ? null : (t.prev && (t.prev.next = t.next), t.next && (t.next.prev = t.prev), this.last = t.prev, t.prev || (this.first = null), t.free = !0, t.prev = null, t.next = null, this.length--, t.obj);\n }, concat: function concat(t) {\n for (var e = t.first; e;) {\n this.add(e.obj), e = e.next;\n }\n }, clear: function clear() {\n for (var t = this.first; t;) {\n t.free = !0, t = t.next;\n }this.first = null, this.length = 0;\n }, dispose: function dispose() {\n for (var t = this.first; t;) {\n t.obj = null, t = t.next;\n }this.first = null, this.objToNodeMap = null;\n }, dump: function dump(t) {\n console.log(\"====================\" + t + \"=====================\");for (var e = this.first; e;) {\n console.log(\"{\" + e.obj.toString() + \"} previous=\" + (e.prev ? e.prev.obj : \"NULL\")), e = e.next();\n }console.log(\"===================================\"), console.log(\"Last: {\" + (this.last ? this.last.obj : \"NULL\") + \"} First: {\" + (this.first ? this.first.obj : \"NULL\") + \"}\");\n } }, e.prototype.constructor = e, o.LinkedList = e;\n }(), function () {\n var t = function t(_t, e, i, o, n) {\n this._listener = e, this.isOnce = i, this.context = o, this.signal = _t, this._priority = n || 0;\n };t.prototype = { active: !0, params: null, execute: function execute(t) {\n var e, i;return this.active && this._listener && (i = this.params ? this.params.concat(t) : t, e = this._listener.apply(this.context, i), this.isOnce && this.detach()), e;\n }, detach: function detach() {\n return this.isBound() ? this.signal.remove(this._listener, this.context) : null;\n }, isBound: function isBound() {\n return !!this.signal && !!this._listener;\n }, _destroy: function _destroy() {\n delete this.signal, delete this._listener, delete this.context;\n }, toString: function toString() {\n return \"[SignalBinding isOnce:\" + this.isOnce + \", isBound:\" + this.isBound() + \", active:\" + this.active + \"]\";\n } }, t.prototype.constructor = t;var e = function e() {\n this._bindings = [], this._prevParams = null;var t = this;this.dispatch = function () {\n e.prototype.dispatch.apply(t, arguments);\n };\n };e.prototype = { memorize: !1, _shouldPropagate: !0, active: !0, validateListener: function validateListener(t, e) {\n if (\"function\" != typeof t) throw new Error(\"Signal: listener is a required param of {fn}() and should be a Function.\".replace(\"{fn}\", e));\n }, _registerListener: function _registerListener(e, i, o, n) {\n var s,\n r = this._indexOfListener(e, o);if (-1 !== r) {\n if (s = this._bindings[r], s.isOnce !== i) throw new Error(\"You cannot add\" + (i ? \"\" : \"Once\") + \"() then add\" + (i ? \"Once\" : \"\") + \"() the same listener without removing the relationship first.\");\n } else s = new t(this, e, i, o, n), this._addBinding(s);return this.memorize && this._prevParams && s.execute(this._prevParams), s;\n }, _addBinding: function _addBinding(t) {\n var e = this._bindings.length;do {\n e--;\n } while (this._bindings[e] && t._priority <= this._bindings[e]._priority);this._bindings.splice(e + 1, 0, t);\n }, _indexOfListener: function _indexOfListener(t, e) {\n for (var i, o = this._bindings.length; o--;) {\n if (i = this._bindings[o], i._listener === t && i.context === e) return o;\n }return -1;\n }, has: function has(t, e) {\n return -1 !== this._indexOfListener(t, e);\n }, add: function add(t, e, i) {\n return this.validateListener(t, \"add\"), this._registerListener(t, !1, e, i);\n }, addOnce: function addOnce(t, e, i) {\n return this.validateListener(t, \"addOnce\"), this._registerListener(t, !0, e, i);\n }, remove: function remove(t, e) {\n this.validateListener(t, \"remove\");var i = this._indexOfListener(t, e);return -1 !== i && (this._bindings[i]._destroy(), this._bindings.splice(i, 1)), t;\n }, removeAll: function removeAll(t) {\n void 0 === t && (t = null);for (var e = this._bindings.length; e--;) {\n t ? this._bindings[e].context === t && (this._bindings[e]._destroy(), this._bindings.splice(e, 1)) : this._bindings[e]._destroy();\n }t || (this._bindings.length = 0);\n }, getNumListeners: function getNumListeners() {\n return this._bindings.length;\n }, halt: function halt() {\n this._shouldPropagate = !1;\n }, dispatch: function dispatch() {\n if (this.active) {\n var t,\n e = Array.prototype.slice.call(arguments),\n i = this._bindings.length;if (this.memorize && (this._prevParams = e), i) {\n t = this._bindings.slice(), this._shouldPropagate = !0;do {\n i--;\n } while (t[i] && this._shouldPropagate && !1 !== t[i].execute(e));\n }\n }\n }, forget: function forget() {\n this._prevParams = null;\n }, dispose: function dispose() {\n this.removeAll(), delete this._bindings, delete this._prevParams;\n }, toString: function toString() {\n return \"[Signal active:\" + this.active + \" numListeners:\" + this.getNumListeners() + \"]\";\n } }, e.prototype.constructor = e, o.Signal = e;\n }(), o.AStarFinder = function (t) {\n t = t || {};var e = { allowDiagonal: !1, heuristicFilter: null };e = o.Tools.merge(e, t), this.allowDiagonal = e.allowDiagonal, this.heuristicFilter = e.heuristicFilter, this.list = new o.LinkedList();\n }, o.AStarFinder.prototype = { findPath: function findPath(t, e, i, n) {\n var s, r, a, h, c, l;for (i = i || this.heuristicFilter, n.clearPath(), this.list.clear(), this.list.add(t); this.list.length > 0;) {\n if (this.list.sort(this.compare), s = this.list.shift(), s._visited = !0, s === e) return o.PathUtil.backtrace(e);for (a = n.getNeighbors(s, this.allowDiagonal, i), c = 0, l = a.length; l > c; c++) {\n if (h = a[c], h.walkable && (r = s._calcCost + n.distance(s, h), !h._visited || r < h._calcCost)) {\n if (h._visited = !0, h._parent = s, h._calcCost = r, h._priority = r + n.distance(e, h), h === e) return o.PathUtil.backtrace(e);this.list.add(h);\n }\n }\n }return null;\n }, compare: function compare(t, e) {\n return t._priority - e._priority;\n } }, o.AStarFinder.prototype.constructor = o.AStarFinder, o.PathUtil = { backtrace: function backtrace(t) {\n for (var e = [t]; t._parent;) {\n t = t._parent, e.push(t);\n }return e.reverse();\n }, biBacktrace: function biBacktrace(t, e) {\n var i = this.backtrace(t),\n o = this.backtrace(e);return i.concat(o.reverse());\n }, pathLength: function pathLength(t) {\n var e,\n i,\n o,\n n,\n s,\n r = 0;for (e = 1; e < t.length; ++e) {\n i = t[e - 1], o = t[e], n = i[0] - o[0], s = i[1] - o[1], r += Math.sqrt(n * n + s * s);\n }return r;\n }, interpolate: function interpolate(t, e, i, o) {\n var n,\n s,\n r,\n a,\n h,\n c,\n l = Math.abs,\n u = [];for (r = l(i - t), a = l(o - e), n = i > t ? 1 : -1, s = o > e ? 1 : -1, h = r - a; t !== i || e !== o;) {\n u.push([t, e]), c = 2 * h, c > -a && (h -= a, t += n), r > c && (h += r, e += s);\n }return u;\n }, expandPath: function expandPath(t) {\n var e,\n i,\n o,\n n,\n s,\n r,\n a = [],\n h = t.length;if (2 > h) return a;for (s = 0; h - 1 > s; ++s) {\n for (e = t[s], i = t[s + 1], o = this.interpolate(e[0], e[1], i[0], i[1]), n = o.length, r = 0; n - 1 > r; ++r) {\n a.push(o[r]);\n }\n }return a.push(t[h - 1]), a;\n }, smoothenPath: function smoothenPath(t, e) {\n var i,\n o,\n n,\n s,\n r,\n a,\n h,\n c,\n l,\n u,\n p,\n d,\n m = e.length,\n v = e[0][0],\n f = e[0][1],\n y = e[m - 1][0],\n g = e[m - 1][1];for (i = v, o = f, r = [[i, o]], h = 2; m > h; ++h) {\n for (l = e[h], n = l[0], s = l[1], u = this.interpolate(i, o, n, s), d = !1, c = 1; c < u.length; ++c) {\n if (p = u[c], !t.isWalkableAt(p[0], p[1])) {\n d = !0;break;\n }\n }d && (a = e[h - 1], r.push(a), i = a[0], o = a[1]);\n }return r.push([y, g]), r;\n }, compressPath: function compressPath(t) {\n if (t.length < 3) return t;var e,\n i,\n o,\n n,\n s,\n r,\n a = [],\n h = t[0][0],\n c = t[0][1],\n l = t[1][0],\n u = t[1][1],\n p = l - h,\n d = u - c;for (s = Math.sqrt(p * p + d * d), p /= s, d /= s, a.push([h, c]), r = 2; r < t.length; r++) {\n e = l, i = u, o = p, n = d, l = t[r][0], u = t[r][1], p = l - e, d = u - i, s = Math.sqrt(p * p + d * d), p /= s, d /= s, (p !== o || d !== n) && a.push([e, i]);\n }return a.push([l, u]), a;\n } }, o.Loader = { manager: null, imageLoader: null, crossOrigin: !1, init: function init(t) {\n this.crossOrigin = t || !1, this.manager = new THREE.LoadingManager(function () {}, function () {}, function () {\n console.warn(\"Error loading images\");\n }), this.imageLoader = new THREE.ImageLoader(this.manager), this.imageLoader.crossOrigin = t;\n }, loadTexture: function loadTexture(t, e, i, o) {\n var n = new THREE.Texture(null, e);return this.imageLoader.load(t, function (t) {\n n.image = t, n.needsUpdate = !0, i && i(n);\n }, null, function (t) {\n o && o(t);\n }), n.sourceFile = t, n;\n } }, o.MouseCaster = function (t, e, i) {\n this.down = !1, this.rightDown = !1, this.pickedObject = null, this.selectedObject = null, this.allHits = null, this.active = !0, this.shift = !1, this.ctrl = !1, this.wheel = 0, this.position = new THREE.Vector3(), this.screenPosition = new THREE.Vector2(), this.signal = new o.Signal(), this.group = t, this._camera = e, this._raycaster = new THREE.Raycaster(), this._preventDefault = !1, i = i || document, i.addEventListener(\"mousemove\", this._onDocumentMouseMove.bind(this), !1), i.addEventListener(\"mousedown\", this._onDocumentMouseDown.bind(this), !1), i.addEventListener(\"mouseup\", this._onDocumentMouseUp.bind(this), !1), i.addEventListener(\"mousewheel\", this._onMouseWheel.bind(this), !1), i.addEventListener(\"DOMMouseScroll\", this._onMouseWheel.bind(this), !1);\n }, o.MouseCaster.OVER = \"over\", o.MouseCaster.OUT = \"out\", o.MouseCaster.DOWN = \"down\", o.MouseCaster.UP = \"up\", o.MouseCaster.CLICK = \"click\", o.MouseCaster.WHEEL = \"wheel\", o.MouseCaster.prototype = { update: function update() {\n if (this.active) {\n this._raycaster.setFromCamera(this.screenPosition, this._camera);var t,\n e,\n i = this._raycaster.intersectObject(this.group, !0);i.length > 0 ? (t = i[0], e = t.object.userData.structure, this.pickedObject != e && (this.pickedObject && this.signal.dispatch(o.MouseCaster.OUT, this.pickedObject), this.pickedObject = e, this.selectedObject = null, this.signal.dispatch(o.MouseCaster.OVER, this.pickedObject)), this.position.copy(t.point), this.screenPosition.z = t.distance) : (this.pickedObject && this.signal.dispatch(o.MouseCaster.OUT, this.pickedObject), this.pickedObject = null, this.selectedObject = null), this.allHits = i;\n }\n }, preventDefault: function preventDefault() {\n this._preventDefault = !0;\n }, _onDocumentMouseDown: function _onDocumentMouseDown(t) {\n return t = t || window.event, t.preventDefault(), this._preventDefault ? (this._preventDefault = !1, !1) : (this.pickedObject && (this.selectedObject = this.pickedObject), this.shift = t.shiftKey, this.ctrl = t.ctrlKey, this.down = 1 === t.which, this.rightDown = 3 === t.which, void this.signal.dispatch(o.MouseCaster.DOWN, this.pickedObject));\n }, _onDocumentMouseUp: function _onDocumentMouseUp(t) {\n return t.preventDefault(), this._preventDefault ? (this._preventDefault = !1, !1) : (this.shift = t.shiftKey, this.ctrl = t.ctrlKey, this.signal.dispatch(o.MouseCaster.UP, this.pickedObject), this.selectedObject && this.pickedObject && this.selectedObject.uniqueID === this.pickedObject.uniqueID && this.signal.dispatch(o.MouseCaster.CLICK, this.pickedObject), this.down = 1 !== t.which && this.down, void (this.rightDown = 3 !== t.which && this.rightDown));\n }, _onDocumentMouseMove: function _onDocumentMouseMove(t) {\n t.preventDefault(), this.screenPosition.x = t.clientX / window.innerWidth * 2 - 1, this.screenPosition.y = -t.clientY / window.innerHeight * 2 + 1;\n }, _onMouseWheel: function _onMouseWheel(t) {\n if (this.active) {\n t.preventDefault(), t.stopPropagation();var e = 0;void 0 !== t.wheelDelta ? e = t.wheelDelta : void 0 !== t.detail && (e = -t.detail), e > 0 ? this.wheel++ : this.wheel--, this.signal.dispatch(o.MouseCaster.WHEEL, this.wheel);\n }\n } }, o.MouseCaster.prototype.constructor = o.MouseCaster, o.Scene = function (t, e) {\n var i = { element: document.body, alpha: !0, antialias: !0, clearColor: \"#fff\", sortObjects: !1, fog: null, light: new THREE.DirectionalLight(16777215), lightPosition: null, cameraType: \"PerspectiveCamera\", cameraPosition: null, orthoZoom: 4 },\n n = { minDistance: 100, maxDistance: 1e3, zoomSpeed: 2, noZoom: !1 };if (i = o.Tools.merge(i, t), \"boolean\" != typeof e && (n = o.Tools.merge(n, e)), this.renderer = new THREE.WebGLRenderer({ alpha: i.alpha, antialias: i.antialias }), this.renderer.setClearColor(i.clearColor, 0), this.renderer.sortObjects = i.sortObjects, this.width = window.innerWidth, this.height = window.innerHeight, this.orthoZoom = i.orthoZoom, this.container = new THREE.Scene(), this.container.fog = i.fog, this.container.add(new THREE.AmbientLight(14540253)), i.lightPosition || i.light.position.set(-1, 1, -1).normalize(), this.container.add(i.light), \"OrthographicCamera\" === i.cameraType) {\n var s = window.innerWidth / this.orthoZoom,\n r = window.innerHeight / this.orthoZoom;this.camera = new THREE.OrthographicCamera(s / -2, s / 2, r / 2, r / -2, 1, 5e3);\n } else this.camera = new THREE.PerspectiveCamera(50, this.width / this.height, 1, 5e3);this.contolled = !!e, this.contolled && (this.controls = new THREE.OrbitControls(this.camera, this.renderer.domElement), this.controls.minDistance = n.minDistance, this.controls.maxDistance = n.maxDistance, this.controls.zoomSpeed = n.zoomSpeed, this.controls.noZoom = n.noZoom), i.cameraPosition && this.camera.position.copy(i.cameraPosition), window.addEventListener(\"resize\", function () {\n if (this.width = window.innerWidth, this.height = window.innerHeight, \"OrthographicCamera\" === this.camera.type) {\n var t = this.width / this.orthoZoom,\n e = this.height / this.orthoZoom;this.camera.left = t / -2, this.camera.right = t / 2, this.camera.top = e / 2, this.camera.bottom = e / -2;\n } else this.camera.aspect = this.width / this.height;this.camera.updateProjectionMatrix(), this.renderer.setSize(this.width, this.height);\n }.bind(this), !1), this.attachTo(i.element);\n }, o.Scene.prototype = { attachTo: function attachTo(t) {\n t.style.width = this.width + \"px\", t.style.height = this.height + \"px\", this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(this.width, this.height), t.appendChild(this.renderer.domElement);\n }, add: function add(t) {\n this.container.add(t);\n }, remove: function remove(t) {\n this.container.remove(t);\n }, render: function render() {\n this.contolled && this.controls.update(), this.renderer.render(this.container, this.camera);\n }, updateOrthoZoom: function updateOrthoZoom() {\n if (this.orthoZoom <= 0) return void (this.orthoZoom = 0);var t = this.width / this.orthoZoom,\n e = this.height / this.orthoZoom;this.camera.left = t / -2, this.camera.right = t / 2, this.camera.top = e / 2, this.camera.bottom = e / -2, this.camera.updateProjectionMatrix();\n }, focusOn: function focusOn(t) {\n this.camera.lookAt(t.position);\n } }, o.Scene.prototype.constructor = o.Scene, o.SelectionManager = function (t) {\n this.mouse = t, this.onSelect = new o.Signal(), this.onDeselect = new o.Signal(), this.selected = null, this.toggleSelection = !1, this.mouse.signal.add(this.onMouse, this);\n }, o.SelectionManager.prototype = { select: function select(t, e) {\n t && (e = e || !0, this.selected !== t && this.clearSelection(e), t.selected ? this.toggleSelection && (e && this.onDeselect.dispatch(t), t.deselect()) : t.select(), this.selected = t, e && this.onSelect.dispatch(t));\n }, clearSelection: function clearSelection(t) {\n t = t || !0, this.selected && (t && this.onDeselect.dispatch(this.selected), this.selected.deselect()), this.selected = null;\n }, onMouse: function onMouse(t, e) {\n switch (t) {case o.MouseCaster.DOWN:\n e || this.clearSelection();break;case o.MouseCaster.CLICK:\n this.select(e);}\n } }, o.SelectionManager.prototype.constructor = o.SelectionManager, o.Tools = { clamp: function clamp(t, e, i) {\n return Math.max(e, Math.min(i, t));\n }, sign: function sign(t) {\n return t && t / Math.abs(t);\n }, random: function random(t, e) {\n return 1 === arguments.length ? Math.random() * t - .5 * t : Math.random() * (e - t) + t;\n }, randomInt: function randomInt(t, e) {\n return 1 === arguments.length ? Math.random() * t - .5 * t | 0 : Math.random() * (e - t + 1) + t | 0;\n }, normalize: function normalize(t, e, i) {\n return (t - e) / (i - e);\n }, getShortRotation: function getShortRotation(t) {\n return t %= this.TAU, t > this.PI ? t -= this.TAU : t < -this.PI && (t += this.TAU), t;\n }, generateID: function generateID() {\n return Math.random().toString(36).slice(2) + Date.now();\n }, isPlainObject: function isPlainObject(t) {\n if (\"object\" != (typeof t === \"undefined\" ? \"undefined\" : _typeof(t)) || t.nodeType || t === t.window) return !1;try {\n if (t.constructor && !Object.prototype.hasOwnProperty.call(t.constructor.prototype, \"isPrototypeOf\")) return !1;\n } catch (t) {\n return !1;\n }return !0;\n }, merge: function merge(t, e) {\n var i = this,\n o = Array.isArray(e),\n n = o && [] || {};return o ? (t = t || [], n = n.concat(t), e.forEach(function (e, o) {\n void 0 === n[o] ? n[o] = e : i.isPlainObject(e) ? n[o] = i.merge(t[o], e) : -1 === t.indexOf(e) && n.push(e);\n }), n) : (t && i.isPlainObject(t) && Object.keys(t).forEach(function (e) {\n n[e] = t[e];\n }), Object.keys(e).forEach(function (o) {\n e[o] && i.isPlainObject(e[o]) && t[o] ? n[o] = i.merge(t[o], e[o]) : n[o] = e[o];\n }), n);\n }, now: function now() {\n return window.nwf ? window.nwf.system.Performance.elapsedTime : window.performance.now();\n }, empty: function empty(t) {\n for (; t.lastChild;) {\n t.removeChild(t.lastChild);\n }\n }, radixSort: function radixSort(t, e, i, o) {\n if (e = e || 0, i = i || t.length, o = o || 31, !(e >= i - 1 || 0 > o)) {\n for (var n = e, s = i, r = 1 << o; s > n;) {\n if (t[n] & r) {\n --s;var a = t[n];t[n] = t[s], t[s] = a;\n } else ++n;\n }this.radixSort(t, e, s, o - 1), this.radixSort(t, s, i, o - 1);\n }\n }, randomizeRGB: function randomizeRGB(t, e) {\n var i,\n o,\n n = t.split(\",\"),\n s = \"rgb(\";for (e = this.randomInt(e), i = 0; 3 > i; i++) {\n o = parseInt(n[i]) + e, 0 > o ? o = 0 : o > 255 && (o = 255), s += o + \",\";\n }return s = s.substring(0, s.length - 1), s += \")\";\n }, getJSON: function getJSON(t) {\n var e = new XMLHttpRequest(),\n i = void 0 !== t.cache && t.cache,\n o = i ? t.url : t.url + \"?t=\" + Math.floor(1e4 * Math.random()) + Date.now();e.onreadystatechange = function () {\n if (200 === this.status) {\n var e = null;try {\n e = JSON.parse(this.responseText);\n } catch (t) {\n return;\n }return void t.callback.call(t.scope || null, e);\n }0 !== this.status && console.warn(\"[Tools.getJSON] Error: \" + this.status + \" (\" + this.statusText + \") :: \" + t.url);\n }, e.open(\"GET\", o, !0), e.setRequestHeader(\"Accept\", \"application/json\"), e.setRequestHeader(\"Content-Type\", \"application/json\"), e.send(\"\");\n } };\n }, {}], 10: [function (t, e, i) {\n !function (t) {\n function e(t, e) {\n return -1 !== String(t).indexOf(e);\n }function i(t, e, i) {\n p !== e && u !== e && l !== e || Object.keys(i).forEach(function (e) {\n t[e] = i[e];\n });\n }function o(t) {\n var e = \"keyCode\" in t ? t.keyCode : \"which\" in t ? t.which : 0,\n i = function () {\n if (b || \"keyLocation\" in t) {\n var i = b ? t.location : t.keyLocation;if (i && e in v[i]) return v[i][e];\n }return \"keyIdentifier\" in t && t.keyIdentifier in m ? m[t.keyIdentifier] : e in d ? d[e] : null;\n }();if (!i) return null;var o = function () {\n var e = f[i.code];return e ? t.shiftKey && \"shiftKey\" in e ? e.shiftKey : e.key : i.code;\n }();return { code: i.code, key: o, location: i.location, keyCap: i.keyCap };\n }function n(t, e) {\n if (t = String(t), !g.hasOwnProperty(t)) return \"Undefined\";if (e && \"en-us\" !== String(e).toLowerCase()) throw Error(\"Unsupported locale\");var i = g[t];return i.keyCap || i.code || \"Undefined\";\n }var s = \"KeyboardEvent\" in t;s || (t.KeyboardEvent = function () {\n throw TypeError(\"Illegal constructor\");\n }), t.KeyboardEvent.DOM_KEY_LOCATION_STANDARD = 0, t.KeyboardEvent.DOM_KEY_LOCATION_LEFT = 1, t.KeyboardEvent.DOM_KEY_LOCATION_RIGHT = 2, t.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD = 3;var r = window.KeyboardEvent.DOM_KEY_LOCATION_STANDARD,\n a = window.KeyboardEvent.DOM_KEY_LOCATION_LEFT,\n h = window.KeyboardEvent.DOM_KEY_LOCATION_RIGHT,\n c = window.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD,\n l = function () {\n return e(navigator.platform, \"Win\") ? \"win\" : e(navigator.platform, \"Mac\") ? \"mac\" : e(navigator.platform, \"CrOS\") ? \"cros\" : e(navigator.platform, \"Linux\") ? \"linux\" : e(navigator.userAgent, \"iPad\") || e(navigator.platform, \"iPod\") || e(navigator.platform, \"iPhone\") ? \"ios\" : \"\";\n }(),\n u = function () {\n return e(navigator.userAgent, \"Chrome/\") ? \"chrome\" : e(navigator.vendor, \"Apple\") ? \"safari\" : e(navigator.userAgent, \"MSIE\") ? \"ie\" : e(navigator.userAgent, \"Gecko/\") ? \"moz\" : e(navigator.userAgent, \"Opera/\") ? \"opera\" : \"\";\n }(),\n p = u + \"-\" + l,\n d = { 3: { code: \"Cancel\" }, 6: { code: \"Help\" }, 8: { code: \"Backspace\" }, 9: { code: \"Tab\" }, 12: { code: \"Clear\" }, 13: { code: \"Enter\" }, 16: { code: \"Shift\" }, 17: { code: \"Control\" }, 18: { code: \"Alt\" }, 19: { code: \"Pause\" }, 20: { code: \"CapsLock\" }, 21: { code: \"KanaMode\" }, 22: { code: \"HangulMode\" }, 23: { code: \"JunjaMode\" }, 24: { code: \"FinalMode\" }, 25: { code: \"KanjiMode\" }, 27: { code: \"Escape\" }, 28: { code: \"Convert\" }, 29: { code: \"NonConvert\" }, 30: { code: \"Accept\" }, 31: { code: \"ModeChange\" }, 32: { code: \"Space\" }, 33: { code: \"PageUp\" }, 34: { code: \"PageDown\" }, 35: { code: \"End\" }, 36: { code: \"Home\" }, 37: { code: \"ArrowLeft\" }, 38: { code: \"ArrowUp\" }, 39: { code: \"ArrowRight\" }, 40: { code: \"ArrowDown\" }, 41: { code: \"Select\" }, 42: { code: \"Print\" }, 43: { code: \"Execute\" }, 44: { code: \"PrintScreen\" }, 45: { code: \"Insert\" }, 46: { code: \"Delete\" }, 47: { code: \"Help\" }, 48: { code: \"Digit0\", keyCap: \"0\" }, 49: { code: \"Digit1\", keyCap: \"1\" }, 50: { code: \"Digit2\", keyCap: \"2\" }, 51: { code: \"Digit3\", keyCap: \"3\" }, 52: { code: \"Digit4\", keyCap: \"4\" }, 53: { code: \"Digit5\", keyCap: \"5\" }, 54: { code: \"Digit6\", keyCap: \"6\" }, 55: { code: \"Digit7\", keyCap: \"7\" }, 56: { code: \"Digit8\", keyCap: \"8\" }, 57: { code: \"Digit9\", keyCap: \"9\" }, 65: { code: \"KeyA\", keyCap: \"a\" }, 66: { code: \"KeyB\", keyCap: \"b\" }, 67: { code: \"KeyC\", keyCap: \"c\" }, 68: { code: \"KeyD\", keyCap: \"d\" }, 69: { code: \"KeyE\", keyCap: \"e\" }, 70: { code: \"KeyF\", keyCap: \"f\" }, 71: { code: \"KeyG\", keyCap: \"g\" }, 72: { code: \"KeyH\", keyCap: \"h\" }, 73: { code: \"KeyI\", keyCap: \"i\" }, 74: { code: \"KeyJ\", keyCap: \"j\" }, 75: { code: \"KeyK\", keyCap: \"k\" }, 76: { code: \"KeyL\", keyCap: \"l\" }, 77: { code: \"KeyM\", keyCap: \"m\" }, 78: { code: \"KeyN\", keyCap: \"n\" }, 79: { code: \"KeyO\", keyCap: \"o\" }, 80: { code: \"KeyP\", keyCap: \"p\" }, 81: { code: \"KeyQ\", keyCap: \"q\" }, 82: { code: \"KeyR\", keyCap: \"r\" }, 83: { code: \"KeyS\", keyCap: \"s\" }, 84: { code: \"KeyT\", keyCap: \"t\" }, 85: { code: \"KeyU\", keyCap: \"u\" }, 86: { code: \"KeyV\", keyCap: \"v\" }, 87: { code: \"KeyW\", keyCap: \"w\" }, 88: { code: \"KeyX\", keyCap: \"x\" }, 89: { code: \"KeyY\", keyCap: \"y\" }, 90: { code: \"KeyZ\", keyCap: \"z\" }, 91: { code: \"OSLeft\", location: a }, 92: { code: \"OSRight\", location: h }, 93: { code: \"ContextMenu\" }, 95: { code: \"Standby\" }, 96: { code: \"Numpad0\", keyCap: \"0\", location: c }, 97: { code: \"Numpad1\", keyCap: \"1\", location: c }, 98: { code: \"Numpad2\", keyCap: \"2\", location: c }, 99: { code: \"Numpad3\", keyCap: \"3\", location: c }, 100: { code: \"Numpad4\", keyCap: \"4\", location: c }, 101: { code: \"Numpad5\", keyCap: \"5\", location: c }, 102: { code: \"Numpad6\", keyCap: \"6\", location: c }, 103: { code: \"Numpad7\", keyCap: \"7\", location: c }, 104: { code: \"Numpad8\", keyCap: \"8\", location: c }, 105: { code: \"Numpad9\", keyCap: \"9\", location: c }, 106: { code: \"NumpadMultiply\", keyCap: \"*\", location: c }, 107: { code: \"NumpadAdd\", keyCap: \"+\", location: c }, 108: { code: \"NumpadComma\", keyCap: \",\", location: c }, 109: { code: \"NumpadSubtract\", keyCap: \"-\", location: c }, 110: { code: \"NumpadDecimal\", keyCap: \".\", location: c }, 111: { code: \"NumpadDivide\", keyCap: \"/\", location: c }, 112: { code: \"F1\" }, 113: { code: \"F2\" }, 114: { code: \"F3\" }, 115: { code: \"F4\" }, 116: { code: \"F5\" }, 117: { code: \"F6\" }, 118: { code: \"F7\" }, 119: { code: \"F8\" }, 120: { code: \"F9\" }, 121: { code: \"F10\" }, 122: { code: \"F11\" }, 123: { code: \"F12\" }, 124: { code: \"F13\" }, 125: { code: \"F14\" }, 126: { code: \"F15\" }, 127: { code: \"F16\" }, 128: { code: \"F17\" }, 129: { code: \"F18\" }, 130: { code: \"F19\" }, 131: { code: \"F20\" }, 132: { code: \"F21\" }, 133: { code: \"F22\" }, 134: { code: \"F23\" }, 135: { code: \"F24\" }, 144: { code: \"NumLock\", location: c }, 145: { code: \"ScrollLock\" }, 160: { code: \"ShiftLeft\", location: a }, 161: { code: \"ShiftRight\", location: h }, 162: { code: \"ControlLeft\", location: a }, 163: { code: \"ControlRight\", location: h }, 164: { code: \"AltLeft\", location: a }, 165: { code: \"AltRight\", location: h }, 166: { code: \"BrowserBack\" }, 167: { code: \"BrowserForward\" }, 168: { code: \"BrowserRefresh\" }, 169: { code: \"BrowserStop\" }, 170: { code: \"BrowserSearch\" }, 171: { code: \"BrowserFavorites\" }, 172: { code: \"BrowserHome\" }, 173: { code: \"VolumeMute\" }, 174: { code: \"VolumeDown\" }, 175: { code: \"VolumeUp\" }, 176: { code: \"MediaTrackNext\" }, 177: { code: \"MediaTrackPrevious\" }, 178: { code: \"MediaStop\" }, 179: { code: \"MediaPlayPause\" }, 180: { code: \"LaunchMail\" }, 181: { code: \"MediaSelect\" }, 182: { code: \"LaunchApp1\" }, 183: { code: \"LaunchApp2\" }, 186: { code: \"Semicolon\", keyCap: \";\" }, 187: { code: \"Equal\", keyCap: \"=\" }, 188: { code: \"Comma\", keyCap: \",\" }, 189: { code: \"Minus\", keyCap: \"-\" }, 190: { code: \"Period\", keyCap: \".\" }, 191: { code: \"Slash\", keyCap: \"/\" }, 192: { code: \"Backquote\", keyCap: \"`\" }, 219: { code: \"BracketLeft\", keyCap: \"[\" }, 220: { code: \"Backslash\", keyCap: \"\\\\\" }, 221: { code: \"BracketRight\", keyCap: \"]\" }, 222: { code: \"Quote\", keyCap: \"'\" }, 226: { code: \"IntlBackslash\", keyCap: \"\\\\\" }, 229: { code: \"Process\" }, 246: { code: \"Attn\" }, 247: { code: \"CrSel\" }, 248: { code: \"ExSel\" }, 249: { code: \"EraseEof\" }, 250: { code: \"Play\" }, 251: { code: \"ZoomToggle\" }, 254: { code: \"Clear\" } };i(d, \"moz\", { 59: { code: \"Semicolon\", keyCap: \";\" }, 61: { code: \"Equal\", keyCap: \"=\" }, 107: { code: \"Equal\", keyCap: \"=\" }, 109: { code: \"Minus\", keyCap: \"-\" }, 187: { code: \"NumpadAdd\", keyCap: \"+\", location: c }, 189: { code: \"NumpadSubtract\", keyCap: \"-\", location: c } }), i(d, \"moz-mac\", { 12: { code: \"NumLock\", location: c }, 173: { code: \"Minus\", keyCap: \"-\" } }), i(d, \"moz-win\", { 173: { code: \"Minus\", keyCap: \"-\" } }), i(d, \"chrome-mac\", { 93: { code: \"OSRight\", location: h } }), i(d, \"safari\", { 3: { code: \"Enter\" }, 25: { code: \"Tab\" } }), i(d, \"ios\", { 10: { code: \"Enter\", location: r } }), i(d, \"safari-mac\", { 91: { code: \"OSLeft\", location: a }, 93: { code: \"OSRight\", location: h }, 229: { code: \"KeyQ\", keyCap: \"Q\" } });var m = {};\"cros\" === l && (m[\"U+00A0\"] = { code: \"ShiftLeft\", location: a }, m[\"U+00A1\"] = { code: \"ShiftRight\", location: h }, m[\"U+00A2\"] = { code: \"ControlLeft\", location: a }, m[\"U+00A3\"] = { code: \"ControlRight\", location: h }, m[\"U+00A4\"] = { code: \"AltLeft\", location: a }, m[\"U+00A5\"] = { code: \"AltRight\", location: h }), \"chrome-mac\" === p && (m[\"U+0010\"] = { code: \"ContextMenu\" }), \"safari-mac\" === p && (m[\"U+0010\"] = { code: \"ContextMenu\" }), \"ios\" === l && (m[\"U+0010\"] = { code: \"Function\" }, m[\"U+001C\"] = { code: \"ArrowLeft\" }, m[\"U+001D\"] = { code: \"ArrowRight\" }, m[\"U+001E\"] = { code: \"ArrowUp\" }, m[\"U+001F\"] = { code: \"ArrowDown\" }, m[\"U+0001\"] = { code: \"Home\" }, m[\"U+0004\"] = { code: \"End\" }, m[\"U+000B\"] = { code: \"PageUp\" }, m[\"U+000C\"] = { code: \"PageDown\" });var v = [];v[a] = { 16: { code: \"ShiftLeft\", location: a }, 17: { code: \"ControlLeft\", location: a }, 18: { code: \"AltLeft\", location: a } }, v[h] = { 16: { code: \"ShiftRight\", location: h }, 17: { code: \"ControlRight\", location: h }, 18: { code: \"AltRight\", location: h } }, v[c] = { 13: { code: \"NumpadEnter\", location: c } }, i(v[c], \"moz\", { 109: { code: \"NumpadSubtract\", location: c }, 107: { code: \"NumpadAdd\", location: c } }), i(v[a], \"moz-mac\", { 224: { code: \"OSLeft\", location: a } }), i(v[h], \"moz-mac\", { 224: { code: \"OSRight\", location: h } }), i(v[h], \"moz-win\", { 91: { code: \"OSRight\", location: h } }), i(v[h], \"mac\", { 93: { code: \"OSRight\", location: h } }), i(v[c], \"chrome-mac\", { 12: { code: \"NumLock\", location: c } }), i(v[c], \"safari-mac\", { 12: { code: \"NumLock\", location: c }, 187: { code: \"NumpadAdd\", location: c }, 189: { code: \"NumpadSubtract\", location: c }, 190: { code: \"NumpadDecimal\", location: c }, 191: { code: \"NumpadDivide\", location: c } });var f = { ShiftLeft: { key: \"Shift\" }, ShiftRight: { key: \"Shift\" }, ControlLeft: { key: \"Control\" }, ControlRight: { key: \"Control\" }, AltLeft: { key: \"Alt\" }, AltRight: { key: \"Alt\" }, OSLeft: { key: \"OS\" }, OSRight: { key: \"OS\" }, NumpadEnter: { key: \"Enter\" }, Space: { key: \" \" }, Digit0: { key: \"0\", shiftKey: \")\" }, Digit1: { key: \"1\", shiftKey: \"!\" }, Digit2: { key: \"2\", shiftKey: \"@\" }, Digit3: { key: \"3\", shiftKey: \"#\" }, Digit4: { key: \"4\", shiftKey: \"$\" }, Digit5: { key: \"5\", shiftKey: \"%\" }, Digit6: { key: \"6\", shiftKey: \"^\" }, Digit7: { key: \"7\", shiftKey: \"&\" }, Digit8: { key: \"8\", shiftKey: \"*\" }, Digit9: { key: \"9\", shiftKey: \"(\" }, KeyA: { key: \"a\", shiftKey: \"A\" }, KeyB: { key: \"b\", shiftKey: \"B\" }, KeyC: { key: \"c\", shiftKey: \"C\" }, KeyD: { key: \"d\", shiftKey: \"D\" }, KeyE: { key: \"e\", shiftKey: \"E\" }, KeyF: { key: \"f\", shiftKey: \"F\" }, KeyG: { key: \"g\", shiftKey: \"G\" }, KeyH: { key: \"h\", shiftKey: \"H\" }, KeyI: { key: \"i\", shiftKey: \"I\" }, KeyJ: { key: \"j\", shiftKey: \"J\" }, KeyK: { key: \"k\", shiftKey: \"K\" }, KeyL: { key: \"l\", shiftKey: \"L\" }, KeyM: { key: \"m\", shiftKey: \"M\" }, KeyN: { key: \"n\", shiftKey: \"N\" }, KeyO: { key: \"o\", shiftKey: \"O\" }, KeyP: { key: \"p\", shiftKey: \"P\" }, KeyQ: { key: \"q\", shiftKey: \"Q\" }, KeyR: { key: \"r\", shiftKey: \"R\" }, KeyS: { key: \"s\", shiftKey: \"S\" }, KeyT: { key: \"t\", shiftKey: \"T\" }, KeyU: { key: \"u\", shiftKey: \"U\" }, KeyV: { key: \"v\", shiftKey: \"V\" }, KeyW: { key: \"w\", shiftKey: \"W\" }, KeyX: { key: \"x\", shiftKey: \"X\" }, KeyY: { key: \"y\", shiftKey: \"Y\" }, KeyZ: { key: \"z\", shiftKey: \"Z\" }, Numpad0: { key: \"0\" }, Numpad1: { key: \"1\" }, Numpad2: { key: \"2\" }, Numpad3: { key: \"3\" }, Numpad4: { key: \"4\" }, Numpad5: { key: \"5\" }, Numpad6: { key: \"6\" }, Numpad7: { key: \"7\" }, Numpad8: { key: \"8\" }, Numpad9: { key: \"9\" }, NumpadMultiply: { key: \"*\" }, NumpadAdd: { key: \"+\" }, NumpadComma: { key: \",\" }, NumpadSubtract: { key: \"-\" }, NumpadDecimal: { key: \".\" }, NumpadDivide: { key: \"/\" }, Semicolon: { key: \";\", shiftKey: \":\" }, Equal: { key: \"=\", shiftKey: \"+\" }, Comma: { key: \",\", shiftKey: \"<\" }, Minus: { key: \"-\", shiftKey: \"_\" }, Period: { key: \".\", shiftKey: \">\" }, Slash: { key: \"/\", shiftKey: \"?\" }, Backquote: { key: \"`\", shiftKey: \"~\" }, BracketLeft: { key: \"[\", shiftKey: \"{\" }, Backslash: { key: \"\\\\\", shiftKey: \"|\" }, BracketRight: { key: \"]\", shiftKey: \"}\" }, Quote: { key: \"'\", shiftKey: '\"' }, IntlBackslash: { key: \"\\\\\", shiftKey: \"|\" } };i(f, \"mac\", { OSLeft: { key: \"Meta\" }, OSRight: { key: \"Meta\" } });var y = { Esc: \"Escape\", Nonconvert: \"NonConvert\", Left: \"ArrowLeft\", Up: \"ArrowUp\", Right: \"ArrowRight\", Down: \"ArrowDown\", Del: \"Delete\", Menu: \"ContextMenu\", MediaNextTrack: \"MediaTrackNext\", MediaPreviousTrack: \"MediaTrackPrevious\", SelectMedia: \"MediaSelect\", HalfWidth: \"Hankaku\", FullWidth: \"Zenkaku\", RomanCharacters: \"Romaji\", Crsel: \"CrSel\", Exsel: \"ExSel\", Zoom: \"ZoomToggle\" },\n g = function (t, e) {\n var i = {};return Object.keys(t).forEach(function (o) {\n var n = t[o];e in n && (i[n[e]] = n);\n }), i;\n }(d, \"code\");try {\n var b = s && \"location\" in new KeyboardEvent(\"\");\n } catch (t) {}\"KeyboardEvent\" in t && \"defineProperty\" in Object && function () {\n function t(t, e, i) {\n e in t || Object.defineProperty(t, e, i);\n }if (t(KeyboardEvent.prototype, \"code\", { get: function get() {\n var t = o(this);return t ? t.code : \"\";\n } }), \"key\" in KeyboardEvent.prototype) {\n var e = Object.getOwnPropertyDescriptor(KeyboardEvent.prototype, \"key\");Object.defineProperty(KeyboardEvent.prototype, \"key\", { get: function get() {\n var t = e.get.call(this);return y.hasOwnProperty(t) ? y[t] : t;\n } });\n }t(KeyboardEvent.prototype, \"key\", { get: function get() {\n var t = o(this);return t && \"key\" in t ? t.key : \"Unidentified\";\n } }), t(KeyboardEvent.prototype, \"location\", { get: function get() {\n var t = o(this);return t && \"location\" in t ? t.location : r;\n } }), t(KeyboardEvent.prototype, \"locale\", { get: function get() {\n return \"\";\n } });\n }(), \"queryKeyCap\" in t.KeyboardEvent || (t.KeyboardEvent.queryKeyCap = n), t.identifyKey = function (t) {\n if (!(\"code\" in t)) {\n var e = o(t);t.code = e ? e.code : \"\", t.key = e && \"key\" in e ? e.key : \"Unidentified\", t.location = \"location\" in t ? t.location : \"keyLocation\" in t ? t.keyLocation : e && \"location\" in e ? e.location : r, t.locale = \"\";\n }\n };\n }(window);\n }, {}], 11: [function (t, e, i) {\n var o = t(\"cannon\"),\n n = t(\"./src/components/math\");e.exports = { \"dynamic-body\": t(\"./src/components/body/dynamic-body\"), \"static-body\": t(\"./src/components/body/static-body\"), constraint: t(\"./src/components/constraint\"), system: t(\"./src/system/physics\"), registerAll: function registerAll(t) {\n this._registered || (t = t || window.AFRAME, n.registerAll(), t.systems.physics || t.registerSystem(\"physics\", this.system), t.components[\"dynamic-body\"] || t.registerComponent(\"dynamic-body\", this[\"dynamic-body\"]), t.components[\"static-body\"] || t.registerComponent(\"static-body\", this[\"static-body\"]), t.components.constraint || t.registerComponent(\"constraint\", this.constraint), this._registered = !0);\n } }, window.CANNON = window.CANNON || o;\n }, { \"./src/components/body/dynamic-body\": 14, \"./src/components/body/static-body\": 15, \"./src/components/constraint\": 16, \"./src/components/math\": 17, \"./src/system/physics\": 21, cannon: 23 }], 12: [function (t, e, i) {\n var o = t(\"cannon\");o.shape2mesh = function (t) {\n for (var e = new THREE.Object3D(), i = 0; i < t.shapes.length; i++) {\n var n,\n s = t.shapes[i];switch (s.type) {case o.Shape.types.SPHERE:\n var r = new THREE.SphereGeometry(s.radius, 8, 8);n = new THREE.Mesh(r, this.currentMaterial);break;case o.Shape.types.PARTICLE:\n n = new THREE.Mesh(this.particleGeo, this.particleMaterial);var a = this.settings;n.scale.set(a.particleSize, a.particleSize, a.particleSize);break;case o.Shape.types.PLANE:\n var h = new THREE.PlaneGeometry(10, 10, 4, 4);n = new THREE.Object3D();var c = new THREE.Object3D(),\n l = new THREE.Mesh(h, this.currentMaterial);l.scale.set(100, 100, 100), c.add(l), l.castShadow = !0, l.receiveShadow = !0, n.add(c);break;case o.Shape.types.BOX:\n var u = new THREE.BoxGeometry(2 * s.halfExtents.x, 2 * s.halfExtents.y, 2 * s.halfExtents.z);n = new THREE.Mesh(u, this.currentMaterial);break;case o.Shape.types.CONVEXPOLYHEDRON:\n for (var p = new THREE.Geometry(), d = 0; d < s.vertices.length; d++) {\n var m = s.vertices[d];p.vertices.push(new THREE.Vector3(m.x, m.y, m.z));\n }for (var d = 0; d < s.faces.length; d++) {\n for (var v = s.faces[d], f = v[0], y = 1; y < v.length - 1; y++) {\n var g = v[y],\n b = v[y + 1];p.faces.push(new THREE.Face3(f, g, b));\n }\n }p.computeBoundingSphere(), p.computeFaceNormals(), n = new THREE.Mesh(p, this.currentMaterial);break;case o.Shape.types.HEIGHTFIELD:\n for (var h = new THREE.Geometry(), w = new o.Vec3(), x = new o.Vec3(), E = new o.Vec3(), T = 0; T < s.data.length - 1; T++) {\n for (var S = 0; S < s.data[T].length - 1; S++) {\n for (var C = 0; C < 2; C++) {\n s.getConvexTrianglePillar(T, S, 0 === C), w.copy(s.pillarConvex.vertices[0]), x.copy(s.pillarConvex.vertices[1]), E.copy(s.pillarConvex.vertices[2]), w.vadd(s.pillarOffset, w), x.vadd(s.pillarOffset, x), E.vadd(s.pillarOffset, E), h.vertices.push(new THREE.Vector3(w.x, w.y, w.z), new THREE.Vector3(x.x, x.y, x.z), new THREE.Vector3(E.x, E.y, E.z));var d = h.vertices.length - 3;h.faces.push(new THREE.Face3(d, d + 1, d + 2));\n }\n }\n }h.computeBoundingSphere(), h.computeFaceNormals(), n = new THREE.Mesh(h, this.currentMaterial);break;case o.Shape.types.TRIMESH:\n for (var h = new THREE.Geometry(), w = new o.Vec3(), x = new o.Vec3(), E = new o.Vec3(), d = 0; d < s.indices.length / 3; d++) {\n s.getTriangleVertices(d, w, x, E), h.vertices.push(new THREE.Vector3(w.x, w.y, w.z), new THREE.Vector3(x.x, x.y, x.z), new THREE.Vector3(E.x, E.y, E.z));var y = h.vertices.length - 3;h.faces.push(new THREE.Face3(y, y + 1, y + 2));\n }h.computeBoundingSphere(), h.computeFaceNormals(), n = new THREE.Mesh(h, this.currentMaterial);break;default:\n throw \"Visual type not recognized: \" + s.type;}if (n.receiveShadow = !0, n.castShadow = !0, n.children) for (var d = 0; d < n.children.length; d++) {\n if (n.children[d].castShadow = !0, n.children[d].receiveShadow = !0, n.children[d]) for (var y = 0; y < n.children[d].length; y++) {\n n.children[d].children[y].castShadow = !0, n.children[d].children[y].receiveShadow = !0;\n }\n }var A = t.shapeOffsets[i],\n R = t.shapeOrientations[i];n.position.set(A.x, A.y, A.z), n.quaternion.set(R.x, R.y, R.z, R.w), e.add(n);\n }return e;\n }, e.exports = o.shape2mesh;\n }, { cannon: 23 }], 13: [function (t, e, i) {\n var o = t(\"cannon\"),\n n = t(\"three-to-cannon\");t(\"../../../lib/CANNON-shape2mesh\"), e.exports = { schema: { shape: { default: \"auto\", oneOf: [\"auto\", \"box\", \"cylinder\", \"sphere\", \"hull\", \"none\"] }, cylinderAxis: { default: \"y\", oneOf: [\"x\", \"y\", \"z\"] }, sphereRadius: { default: NaN } }, init: function init() {\n this.system = this.el.sceneEl.systems.physics, this.el.sceneEl.hasLoaded ? this.initBody() : this.el.sceneEl.addEventListener(\"loaded\", this.initBody.bind(this));\n }, initBody: function initBody() {\n var t,\n e = this.el,\n i = this.data,\n s = e.getAttribute(\"position\");if (this.body = new o.Body({ mass: i.mass || 0, material: this.system.material, position: new o.Vec3(s.x, s.y, s.z), linearDamping: i.linearDamping, angularDamping: i.angularDamping }), this.el.object3D.updateMatrixWorld(!0), \"none\" !== i.shape) {\n var r = \"auto\" === i.shape ? void 0 : AFRAME.utils.extend({}, this.data, { type: n.Type[i.shape.toUpperCase()] });if (!(t = n(this.el.object3D, r))) return void this.el.addEventListener(\"model-loaded\", this.initBody.bind(this));this.body.addShape(t, t.offset, t.orientation), this.system.debug && this.createWireframe(this.body, t);\n }var a = e.getAttribute(\"rotation\");this.body.quaternion.setFromEuler(THREE.Math.degToRad(a.x), THREE.Math.degToRad(a.y), THREE.Math.degToRad(a.z), \"XYZ\").normalize(), this.el.body = this.body, this.body.el = this.el, this.isLoaded = !0, this.isPlaying && this._play(), this.el.emit(\"body-loaded\", { body: this.el.body });\n }, play: function play() {\n this.isLoaded && this._play();\n }, _play: function _play() {\n this.system.addBehavior(this, this.system.Phase.SIMULATE), this.system.addBody(this.body), this.wireframe && this.el.sceneEl.object3D.add(this.wireframe), this.syncToPhysics();\n }, pause: function pause() {\n this.isLoaded && (this.system.removeBehavior(this, this.system.Phase.SIMULATE), this.system.removeBody(this.body), this.wireframe && this.el.sceneEl.object3D.remove(this.wireframe));\n }, remove: function remove() {\n this.pause(), delete this.body.el, delete this.body, delete this.el.body, delete this.wireframe;\n }, createWireframe: function createWireframe(t, e) {\n var i = e.offset,\n n = e.orientation,\n s = o.shape2mesh(t).children[0];this.wireframe = new THREE.LineSegments(new THREE.EdgesGeometry(s.geometry), new THREE.LineBasicMaterial({ color: 16711680 })), i && (this.wireframe.offset = i.clone()), n && (n.inverse(n), this.wireframe.orientation = new THREE.Quaternion(n.x, n.y, n.z, n.w)), this.syncWireframe();\n }, syncWireframe: function syncWireframe() {\n var t,\n e = this.wireframe;this.wireframe && (e.quaternion.copy(this.body.quaternion), e.orientation && e.quaternion.multiply(e.orientation), e.position.copy(this.body.position), e.offset && (t = e.offset.clone().applyQuaternion(e.quaternion), e.position.add(t)), e.updateMatrix());\n }, syncToPhysics: function () {\n var t = new THREE.Quaternion(),\n e = new THREE.Vector3();return function () {\n var i = this.el,\n o = i.parentEl,\n n = this.body;n && (i.components.velocity && n.velocity.copy(i.getAttribute(\"velocity\")), o.isScene ? (n.quaternion.copy(i.object3D.quaternion), n.position.copy(i.object3D.position)) : (i.object3D.getWorldQuaternion(t), n.quaternion.copy(t), i.object3D.getWorldPosition(e), n.position.copy(e)), this.wireframe && this.syncWireframe());\n };\n }(), syncFromPhysics: function () {\n var t = new THREE.Vector3(),\n e = new THREE.Quaternion(),\n i = new THREE.Quaternion();return function () {\n var o = this.el,\n n = o.parentEl,\n s = this.body;s && (n.isScene ? (o.setAttribute(\"quaternion\", s.quaternion), o.setAttribute(\"position\", s.position)) : (e.copy(s.quaternion), n.object3D.getWorldQuaternion(i), e.multiply(i.inverse()), o.setAttribute(\"quaternion\", { x: e.x, y: e.y, z: e.z, w: e.w }), t.copy(s.position), n.object3D.worldToLocal(t), o.setAttribute(\"position\", { x: t.x, y: t.y, z: t.z })), this.wireframe && this.syncWireframe());\n };\n }() };\n }, { \"../../../lib/CANNON-shape2mesh\": 12, cannon: 23, \"three-to-cannon\": 108 }], 14: [function (t, e, i) {\n var o = t(\"./body\");e.exports = AFRAME.utils.extend({}, o, { dependencies: [\"quaternion\", \"velocity\"], schema: AFRAME.utils.extend({}, o.schema, { mass: { default: 5 }, linearDamping: { default: .01 }, angularDamping: { default: .01 } }), step: function step() {\n this.syncFromPhysics();\n } });\n }, { \"./body\": 13 }], 15: [function (t, e, i) {\n var o = t(\"./body\");e.exports = AFRAME.utils.extend({}, o, { step: function step() {\n this.syncToPhysics();\n } });\n }, { \"./body\": 13 }], 16: [function (t, e, i) {\n var o = t(\"cannon\");e.exports = { dependencies: [\"dynamic-body\"], multiple: !0, schema: { type: { default: \"lock\", oneOf: [\"coneTwist\", \"distance\", \"hinge\", \"lock\", \"pointToPoint\"] }, target: { type: \"selector\" }, maxForce: { default: 1e6, min: 0 }, collideConnected: { default: !0 }, wakeUpBodies: { default: !0 }, distance: { default: 0, min: 0 }, pivot: { type: \"vec3\" }, targetPivot: { type: \"vec3\" }, axis: { type: \"vec3\", default: { x: 0, y: 0, z: 1 } }, targetAxis: { type: \"vec3\", default: { x: 0, y: 0, z: 1 } } }, init: function init() {\n this.system = this.el.sceneEl.systems.physics, this.constraint = null;\n }, remove: function remove() {\n this.constraint && (this.system.world.removeConstraint(this.constraint), this.constraint = null);\n }, update: function update() {\n var t = this.el,\n e = this.data;if (this.remove(), !t.body || !e.target.body) return void (t.body ? e.target : t).addEventListener(\"body-loaded\", this.update.bind(this, {}));this.constraint = this.createConstraint(), this.system.world.addConstraint(this.constraint);\n }, createConstraint: function createConstraint() {\n var t = this.data,\n e = new o.Vec3(t.pivot.x, t.pivot.y, t.pivot.z),\n i = new o.Vec3(t.targetPivot.x, t.targetPivot.y, t.targetPivot.z),\n n = new o.Vec3(t.axis.x, t.axis.y, t.axis.z),\n s = new o.Vec3(t.targetAxis.x, t.targetAxis.y, t.targetAxis.z);switch (t.type) {case \"lock\":\n return new o.LockConstraint(this.el.body, t.target.body, { maxForce: t.maxForce });case \"distance\":\n return new o.DistanceConstraint(this.el.body, t.target.body, t.distance, t.maxForce);case \"hinge\":\n return new o.HingeConstraint(this.el.body, t.target.body, { pivotA: e, pivotB: i, axisA: n, axisB: s, maxForce: t.maxForce });case \"coneTwist\":\n return new o.ConeTwistConstraint(this.el.body, t.target.body, { pivotA: e, pivotB: i, axisA: n, axisB: s, maxForce: t.maxForce });case \"pointToPoint\":\n return new o.PointToPointConstraint(this.el.body, e, t.target.body, i, t.maxForce);default:\n throw new Error(\"[constraint] Unexpected type: \" + t.type);}\n } };\n }, { cannon: 23 }], 17: [function (t, e, i) {\n e.exports = { velocity: t(\"./velocity\"), quaternion: t(\"./quaternion\"), registerAll: function registerAll(t) {\n this._registered || (t = t || window.AFRAME, t.components.velocity || t.registerComponent(\"velocity\", this.velocity), t.components.quaternion || t.registerComponent(\"quaternion\", this.quaternion), this._registered = !0);\n } };\n }, { \"./quaternion\": 18, \"./velocity\": 19 }], 18: [function (t, e, i) {\n e.exports = { schema: { type: \"vec4\" }, play: function play() {\n var t = this.el,\n e = t.object3D.quaternion;t.hasAttribute(\"rotation\") && (t.components.rotation.update(), t.setAttribute(\"quaternion\", { x: e.x, y: e.y, z: e.z, w: e.w }), t.removeAttribute(\"rotation\"), this.update());\n }, update: function update() {\n var t = this.data;this.el.object3D.quaternion.set(t.x, t.y, t.z, t.w);\n } };\n }, {}], 19: [function (t, e, i) {\n e.exports = { schema: { type: \"vec3\" }, init: function init() {\n this.system = this.el.sceneEl.systems.physics, this.system && this.system.addBehavior(this, this.system.Phase.RENDER);\n }, remove: function remove() {\n this.system && this.system.removeBehavior(this, this.system.Phase.RENDER);\n }, tick: function tick(t, e) {\n e && (this.system || this.step(t, e));\n }, step: function step(t, e) {\n if (e) {\n var i = this.el.sceneEl.systems.physics || { data: { maxInterval: 1 / 60 } },\n o = this.el.getAttribute(\"velocity\") || { x: 0, y: 0, z: 0 },\n n = this.el.getAttribute(\"position\") || { x: 0, y: 0, z: 0 };e = Math.min(e, 1e3 * i.data.maxInterval), this.el.setAttribute(\"position\", { x: n.x + o.x * e / 1e3, y: n.y + o.y * e / 1e3, z: n.z + o.z * e / 1e3 });\n }\n } };\n }, {}], 20: [function (t, e, i) {\n e.exports = { GRAVITY: -9.8, MAX_INTERVAL: 4 / 60, ITERATIONS: 10, CONTACT_MATERIAL: { friction: .01, restitution: .3, contactEquationStiffness: 1e8, contactEquationRelaxation: 3, frictionEquationStiffness: 1e8, frictionEquationRegularization: 3 } };\n }, {}], 21: [function (t, e, i) {\n var o = t(\"cannon\"),\n n = t(\"../constants\"),\n s = n.GRAVITY,\n r = n.CONTACT_MATERIAL;e.exports = { schema: { gravity: { default: s }, iterations: { default: n.ITERATIONS }, friction: { default: r.friction }, restitution: { default: r.restitution }, contactEquationStiffness: { default: r.contactEquationStiffness }, contactEquationRelaxation: { default: r.contactEquationRelaxation }, frictionEquationStiffness: { default: r.frictionEquationStiffness }, frictionEquationRegularization: { default: r.frictionEquationRegularization }, maxInterval: { default: 4 / 60 }, debug: { default: !1 } }, Phase: { SIMULATE: \"sim\", RENDER: \"render\" }, init: function init() {\n var t = this.data;this.debug = t.debug, this.children = {}, this.children[this.Phase.SIMULATE] = [], this.children[this.Phase.RENDER] = [], this.listeners = {}, this.world = new o.World(), this.world.quatNormalizeSkip = 0, this.world.quatNormalizeFast = !1, this.world.solver.iterations = t.iterations, this.world.gravity.set(0, t.gravity, 0), this.world.broadphase = new o.NaiveBroadphase(), this.material = new o.Material({ name: \"defaultMaterial\" }), this.contactMaterial = new o.ContactMaterial(this.material, this.material, { friction: t.friction, restitution: t.restitution, contactEquationStiffness: t.contactEquationStiffness, contactEquationRelaxation: t.contactEquationRelaxation, frictionEquationStiffness: t.frictionEquationStiffness, frictionEquationRegularization: t.frictionEquationRegularization }), this.world.addContactMaterial(this.contactMaterial);\n }, tick: function tick(t, e) {\n if (e) {\n this.world.step(Math.min(e / 1e3, this.data.maxInterval));var i;for (i = 0; i < this.children[this.Phase.SIMULATE].length; i++) {\n this.children[this.Phase.SIMULATE][i].step(t, e);\n }for (i = 0; i < this.children[this.Phase.RENDER].length; i++) {\n this.children[this.Phase.RENDER][i].step(t, e);\n }\n }\n }, addBody: function addBody(t) {\n this.listeners[t.id] = function (e) {\n t.el.emit(\"collide\", e);\n }, t.addEventListener(\"collide\", this.listeners[t.id]), this.world.addBody(t);\n }, removeBody: function removeBody(t) {\n t.removeEventListener(\"collide\", this.listeners[t.id]), delete this.listeners[t.id], this.world.removeBody(t);\n }, addBehavior: function addBehavior(t, e) {\n this.children[e].push(t);\n }, removeBehavior: function removeBehavior(t, e) {\n this.children[e].splice(this.children[e].indexOf(t), 1);\n }, update: function update(t) {\n var e = this.data;e.debug !== t.debug && console.warn(\"[physics] `debug` cannot be changed dynamically.\"), e.maxInterval, t.maxInterval, e.gravity !== t.gravity && this.world.gravity.set(0, e.gravity, 0), this.contactMaterial.friction = e.friction, this.contactMaterial.restitution = e.restitution, this.contactMaterial.contactEquationStiffness = e.contactEquationStiffness, this.contactMaterial.contactEquationRelaxation = e.contactEquationRelaxation, this.contactMaterial.frictionEquationStiffness = e.frictionEquationStiffness, this.contactMaterial.frictionEquationRegularization = e.frictionEquationRegularization;\n } };\n }, { \"../constants\": 20, cannon: 23 }], 22: [function (t, e, i) {\n e.exports = { _args: [[{ raw: \"cannon@github:donmccurdy/cannon.js#v0.6.2-dev1\", scope: null, escapedName: \"cannon\", name: \"cannon\",\n rawSpec: \"github:donmccurdy/cannon.js#v0.6.2-dev1\", spec: \"github:donmccurdy/cannon.js#v0.6.2-dev1\", type: \"hosted\", hosted: { type: \"github\", ssh: \"git@github.com:donmccurdy/cannon.js.git#v0.6.2-dev1\", sshUrl: \"git+ssh://git@github.com/donmccurdy/cannon.js.git#v0.6.2-dev1\", httpsUrl: \"git+https://github.com/donmccurdy/cannon.js.git#v0.6.2-dev1\", gitUrl: \"git://github.com/donmccurdy/cannon.js.git#v0.6.2-dev1\", shortcut: \"github:donmccurdy/cannon.js#v0.6.2-dev1\", directUrl: \"https://raw.githubusercontent.com/donmccurdy/cannon.js/v0.6.2-dev1/package.json\" } }, \"/Users/donmccurdy/Documents/Projects/aframe-extras/node_modules/aframe-physics-system\"]], _from: \"donmccurdy/cannon.js#v0.6.2-dev1\", _id: \"cannon@0.6.2\", _inCache: !0, _location: \"/cannon\", _phantomChildren: {}, _requested: { raw: \"cannon@github:donmccurdy/cannon.js#v0.6.2-dev1\", scope: null, escapedName: \"cannon\", name: \"cannon\", rawSpec: \"github:donmccurdy/cannon.js#v0.6.2-dev1\", spec: \"github:donmccurdy/cannon.js#v0.6.2-dev1\", type: \"hosted\", hosted: { type: \"github\", ssh: \"git@github.com:donmccurdy/cannon.js.git#v0.6.2-dev1\", sshUrl: \"git+ssh://git@github.com/donmccurdy/cannon.js.git#v0.6.2-dev1\", httpsUrl: \"git+https://github.com/donmccurdy/cannon.js.git#v0.6.2-dev1\", gitUrl: \"git://github.com/donmccurdy/cannon.js.git#v0.6.2-dev1\", shortcut: \"github:donmccurdy/cannon.js#v0.6.2-dev1\", directUrl: \"https://raw.githubusercontent.com/donmccurdy/cannon.js/v0.6.2-dev1/package.json\" } }, _requiredBy: [\"/aframe-physics-system\"], _resolved: \"git://github.com/donmccurdy/cannon.js.git#022e8ba53fa83abf0ad8a0e4fd08623123838a17\", _shasum: \"01b2607f648bfec4c702aa2ba8409d95ebfe11dd\", _shrinkwrap: null, _spec: \"cannon@github:donmccurdy/cannon.js#v0.6.2-dev1\", _where: \"/Users/donmccurdy/Documents/Projects/aframe-extras/node_modules/aframe-physics-system\", author: { name: \"Stefan Hedman\", email: \"schteppe@gmail.com\", url: \"http://steffe.se\" }, bugs: { url: \"https://github.com/schteppe/cannon.js/issues\" }, dependencies: {}, description: \"A lightweight 3D physics engine written in JavaScript.\", devDependencies: { browserify: \"*\", grunt: \"~0.4.0\", \"grunt-browserify\": \"^2.1.4\", \"grunt-contrib-concat\": \"~0.1.3\", \"grunt-contrib-jshint\": \"~0.1.1\", \"grunt-contrib-nodeunit\": \"^0.4.1\", \"grunt-contrib-uglify\": \"^0.5.1\", \"grunt-contrib-yuidoc\": \"^0.5.2\", jshint: \"latest\", nodeunit: \"^0.9.0\", \"uglify-js\": \"latest\" }, engines: { node: \"*\" }, gitHead: \"022e8ba53fa83abf0ad8a0e4fd08623123838a17\", homepage: \"https://github.com/schteppe/cannon.js\", keywords: [\"cannon.js\", \"cannon\", \"physics\", \"engine\", \"3d\"], licenses: [{ type: \"MIT\" }], main: \"./src/Cannon.js\", name: \"cannon\", optionalDependencies: {}, readme: '# cannon.js\\n\\n### Lightweight 3D physics for the web\\nInspired by [three.js](https://github.com/mrdoob/three.js) and [ammo.js](https://github.com/kripken/ammo.js), and driven by the fact that the web lacks a physics engine, here comes cannon.js.\\nThe rigid body physics engine includes simple collision detection, various body shapes, contacts, friction and constraints.\\n\\n[Demos](http://schteppe.github.com/cannon.js) - [Documentation](http://schteppe.github.com/cannon.js/docs) - [Rendering hints](https://github.com/schteppe/cannon.js/tree/master/examples) - [NPM package](https://npmjs.org/package/cannon) - [CDN](https://cdnjs.com/libraries/cannon.js)\\n\\n### Browser install\\n\\nJust include [cannon.js](https://github.com/schteppe/cannon.js/releases/download/v0.6.2/cannon.js) or [cannon.min.js](https://github.com/schteppe/cannon.js/releases/download/v0.6.2/cannon.min.js) in your html and you\\'re done:\\n\\n```html\\n