dcdx 1.3.0-next.26 → 1.3.0-next.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/versions.json +1 -1
- package/lib/commands/apt.js +1031 -986
- package/lib/commands/build.js +997 -978
- package/lib/commands/database.js +994 -971
- package/lib/commands/debug.js +997 -978
- package/lib/commands/install.js +1249 -1036
- package/lib/commands/reset.js +994 -971
- package/lib/commands/run.js +994 -971
- package/lib/commands/stop.js +994 -971
- package/lib/commands/update.js +994 -971
- package/lib/index.js +1 -1
- package/lib/types/src/helpers/FileWatcher.d.ts +2 -2
- package/lib/types/src/helpers/Installer.d.ts +2 -2
- package/lib/types/src/types/DCAPT.d.ts +41 -15
- package/lib/types/src/types/FileWatcher.d.ts +36 -0
- package/lib/types/src/types/Install.d.ts +36 -0
- package/lib/types/src/types/Installer.d.ts +21 -0
- package/package.json +3 -1
package/lib/commands/run.js
CHANGED
|
@@ -18,560 +18,565 @@ import simpleGit from 'simple-git';
|
|
|
18
18
|
import { Sequelize, ConnectionError, TimeoutError, ConnectionTimedOutError, ConnectionRefusedError, ConnectionAcquireTimeoutError } from 'sequelize';
|
|
19
19
|
|
|
20
20
|
var jira = [
|
|
21
|
-
"
|
|
22
|
-
"10-
|
|
23
|
-
"10.
|
|
24
|
-
"10-jdk17",
|
|
25
|
-
"10.
|
|
26
|
-
"
|
|
27
|
-
"ubuntu-jdk17",
|
|
28
|
-
"jdk17",
|
|
29
|
-
"10.2-ubuntu-jdk17",
|
|
30
|
-
"10",
|
|
31
|
-
"10.2",
|
|
32
|
-
"10.2.1-ubuntu-jdk17",
|
|
33
|
-
"ubi9",
|
|
34
|
-
"ubi9-jdk17",
|
|
35
|
-
"10.2.1-ubi9",
|
|
36
|
-
"10.2.1-ubi9-jdk17",
|
|
37
|
-
"9.15.2",
|
|
38
|
-
"9.15-jdk17",
|
|
39
|
-
"9.15.2-jdk17",
|
|
40
|
-
"10.0.0",
|
|
41
|
-
"10.0.0-ubuntu-jdk17",
|
|
42
|
-
"10.0.0-jdk17",
|
|
43
|
-
"9.15.1",
|
|
21
|
+
"10.3.0-RC-ubuntu-jdk17",
|
|
22
|
+
"10.3.0-RC-jdk17",
|
|
23
|
+
"10.3.0-RC",
|
|
24
|
+
"10.3.0-RC-ubi9-jdk17",
|
|
25
|
+
"10.3.0-RC-ubi9",
|
|
26
|
+
"9.15.0",
|
|
27
|
+
"9.15.0-ubuntu-jdk17",
|
|
28
|
+
"9.15.0-jdk17",
|
|
44
29
|
"9.15.1-ubuntu-jdk17",
|
|
45
30
|
"9.15.1-jdk17",
|
|
46
|
-
"
|
|
31
|
+
"9.15.1",
|
|
32
|
+
"10.0.0-jdk17",
|
|
33
|
+
"10.0.0",
|
|
34
|
+
"10.0.0-ubuntu-jdk17",
|
|
35
|
+
"9.15-ubuntu-jdk17",
|
|
36
|
+
"9.15-jdk17",
|
|
37
|
+
"9.15.2-ubuntu-jdk17",
|
|
38
|
+
"9.15.2",
|
|
39
|
+
"9.15",
|
|
40
|
+
"9.15.2-jdk17",
|
|
41
|
+
"9.7.1-jdk11",
|
|
42
|
+
"9.7.1",
|
|
43
|
+
"9.7.1-ubuntu-jdk11",
|
|
44
|
+
"9.12.4-jdk17",
|
|
45
|
+
"9.12.4-ubuntu-jdk17",
|
|
46
|
+
"9.12.4",
|
|
47
47
|
"10.0-ubuntu-jdk17",
|
|
48
|
-
"10.0.1-jdk17",
|
|
49
|
-
"10.0.1-ubuntu-jdk17",
|
|
50
48
|
"10.0-jdk17",
|
|
49
|
+
"10.0.1-ubuntu-jdk17",
|
|
50
|
+
"10.0.1-jdk17",
|
|
51
51
|
"10.0",
|
|
52
|
-
"
|
|
53
|
-
"9.
|
|
54
|
-
"9.
|
|
55
|
-
"9.
|
|
52
|
+
"10.0.1",
|
|
53
|
+
"9.7",
|
|
54
|
+
"9.7.2-jdk11",
|
|
55
|
+
"9.7.2-ubuntu-jdk11",
|
|
56
|
+
"9.7.2",
|
|
57
|
+
"9.7-ubuntu-jdk11",
|
|
58
|
+
"9.7-jdk11",
|
|
56
59
|
"9.12.5",
|
|
60
|
+
"9.12.5-jdk17",
|
|
57
61
|
"9.12.5-ubuntu-jdk17",
|
|
58
|
-
"9.
|
|
59
|
-
"9.12.1",
|
|
60
|
-
"9.12.1-ubuntu-jdk17",
|
|
61
|
-
"10.1.1-jdk17",
|
|
62
|
-
"10.1.1",
|
|
63
|
-
"10.1.1-ubuntu-jdk17",
|
|
62
|
+
"9.16.0-ubuntu-jdk17",
|
|
64
63
|
"9.16.0",
|
|
65
64
|
"9.16.0-jdk17",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"9.
|
|
70
|
-
"9.12.
|
|
71
|
-
"9.
|
|
72
|
-
"9.12.10",
|
|
65
|
+
"10.1.1-ubuntu-jdk17",
|
|
66
|
+
"10.1.1-jdk17",
|
|
67
|
+
"10.1.1",
|
|
68
|
+
"9.12.0-ubuntu-jdk17",
|
|
69
|
+
"9.12.0",
|
|
70
|
+
"9.12.0-jdk17",
|
|
73
71
|
"9.12.6-ubuntu-jdk17",
|
|
72
|
+
"9.12.6-jdk17",
|
|
74
73
|
"9.12.6",
|
|
75
|
-
"9.
|
|
76
|
-
"9.
|
|
77
|
-
"9.
|
|
78
|
-
"9.12.12",
|
|
79
|
-
"9.12.11-ubuntu-jdk17",
|
|
80
|
-
"9.7.1-jdk11",
|
|
81
|
-
"9.12.11",
|
|
82
|
-
"9.12.11-jdk17",
|
|
83
|
-
"9.12.12-ubuntu-jdk17",
|
|
84
|
-
"9.12.12-jdk17",
|
|
85
|
-
"9.4.12",
|
|
86
|
-
"9.12.8-ubuntu-jdk17",
|
|
87
|
-
"9.17.0-jdk11",
|
|
88
|
-
"9.12.9-jdk17",
|
|
74
|
+
"9.16",
|
|
75
|
+
"9.16-ubuntu-jdk17",
|
|
76
|
+
"9.16-jdk17",
|
|
89
77
|
"9.16.1",
|
|
90
|
-
"
|
|
91
|
-
"9.
|
|
78
|
+
"9.16.1-ubuntu-jdk17",
|
|
79
|
+
"9.16.1-jdk17",
|
|
80
|
+
"9.14-jdk11",
|
|
81
|
+
"9.14-ubuntu-jdk11",
|
|
82
|
+
"9.14.1-jdk11",
|
|
83
|
+
"9.14.1-ubuntu-jdk11",
|
|
84
|
+
"9.12.1-jdk17",
|
|
85
|
+
"9.8.0-ubuntu-jdk11",
|
|
86
|
+
"9.12.1-ubuntu-jdk17",
|
|
87
|
+
"9.12.1",
|
|
88
|
+
"9.8.0-jdk11",
|
|
89
|
+
"9.8.0",
|
|
92
90
|
"10.1.2-jdk17",
|
|
91
|
+
"10.1",
|
|
92
|
+
"10.1-jdk17",
|
|
93
|
+
"10.1.2",
|
|
93
94
|
"10.1-ubuntu-jdk17",
|
|
94
|
-
"9.16-jdk17",
|
|
95
|
-
"9.16-ubuntu-jdk17",
|
|
96
|
-
"9.16",
|
|
97
95
|
"10.1.2-ubuntu-jdk17",
|
|
96
|
+
"9.12.7-jdk17",
|
|
98
97
|
"9.12.7",
|
|
99
|
-
"9.4.12-jdk11",
|
|
100
|
-
"10.1.2",
|
|
101
|
-
"10.1",
|
|
102
|
-
"9.7-ubuntu-jdk11",
|
|
103
|
-
"9.14-jdk11",
|
|
104
|
-
"9.15.0-jdk11",
|
|
105
|
-
"9.16.1-ubuntu-jdk17",
|
|
106
|
-
"10.2.0-jdk17",
|
|
107
|
-
"9.4.7-ubuntu-jdk11",
|
|
108
|
-
"9.16.1-jdk17",
|
|
109
|
-
"9.4.7-jdk11",
|
|
110
98
|
"9.12.7-ubuntu-jdk17",
|
|
111
|
-
"9.8.0-jdk11",
|
|
112
|
-
"9.12.7-jdk11",
|
|
113
|
-
"9.10.0-ubuntu-jdk11",
|
|
114
|
-
"9.4.7",
|
|
115
|
-
"9.15.0-ubuntu-jdk11",
|
|
116
|
-
"9.12.13-ubuntu-jdk17",
|
|
117
|
-
"9.7.2-jdk11",
|
|
118
|
-
"9.12.9",
|
|
119
|
-
"9.12.7-jdk17",
|
|
120
|
-
"9.8.1-ubuntu-jdk11",
|
|
121
99
|
"9.4.26",
|
|
122
|
-
"9.
|
|
123
|
-
"9.
|
|
124
|
-
"9.
|
|
125
|
-
"9.
|
|
100
|
+
"9.4.26-ubuntu-jdk11",
|
|
101
|
+
"9.4.26-jdk11",
|
|
102
|
+
"9.12.10-ubuntu-jdk17",
|
|
103
|
+
"9.12.10-jdk17",
|
|
104
|
+
"9.12.10",
|
|
105
|
+
"9.17.0",
|
|
106
|
+
"9.8.1",
|
|
126
107
|
"9.8.1-jdk11",
|
|
127
|
-
"9.
|
|
128
|
-
"9.
|
|
129
|
-
"9.
|
|
130
|
-
"9.
|
|
108
|
+
"9.8.1-ubuntu-jdk11",
|
|
109
|
+
"9.15.0-jdk11",
|
|
110
|
+
"9.17.0-jdk17",
|
|
111
|
+
"9.12.8-ubuntu-jdk17",
|
|
112
|
+
"9.15.0-ubuntu-jdk11",
|
|
113
|
+
"9.17.0-ubuntu-jdk17",
|
|
114
|
+
"9.17.0-jdk11",
|
|
115
|
+
"9.12.8",
|
|
116
|
+
"9.12.8-jdk17",
|
|
117
|
+
"9.17.0-ubuntu-jdk11",
|
|
118
|
+
"9.4.27",
|
|
119
|
+
"9.4.27-ubuntu-jdk11",
|
|
120
|
+
"9.4.27-jdk11",
|
|
121
|
+
"latest",
|
|
122
|
+
"9.4.7-jdk11",
|
|
123
|
+
"9.4.7-ubuntu-jdk11",
|
|
124
|
+
"9.4.7",
|
|
125
|
+
"10.2.0-jdk17",
|
|
126
|
+
"10.2.0-ubuntu-jdk17",
|
|
127
|
+
"10.2.0",
|
|
128
|
+
"9.12.11",
|
|
129
|
+
"9.12.11-jdk17",
|
|
130
|
+
"9.12.11-ubuntu-jdk17",
|
|
131
|
+
"10.0.0-ubi9",
|
|
132
|
+
"9.17.1-ubuntu-jdk17",
|
|
133
|
+
"9.12.1-ubi9",
|
|
134
|
+
"9.10.0-ubuntu-jdk11",
|
|
131
135
|
"9.10.0-jdk11",
|
|
136
|
+
"9.8.2-ubuntu-jdk11",
|
|
132
137
|
"9.12.9-ubuntu-jdk17",
|
|
133
|
-
"9.12-jdk11",
|
|
134
|
-
"9.
|
|
138
|
+
"9.12.7-ubuntu-jdk11",
|
|
139
|
+
"9.4.28",
|
|
140
|
+
"9.4.28-jdk11",
|
|
141
|
+
"9.4",
|
|
142
|
+
"10.0.0-ubi9-jdk17",
|
|
143
|
+
"9.15.1-jdk11",
|
|
144
|
+
"9.12.1-ubi9-jdk17",
|
|
145
|
+
"9.15.1-ubuntu-jdk11",
|
|
135
146
|
"9.10.0",
|
|
136
|
-
"
|
|
137
|
-
"9.
|
|
138
|
-
"9.
|
|
139
|
-
"9.
|
|
140
|
-
"9.
|
|
147
|
+
"9.17.1-ubuntu-jdk11",
|
|
148
|
+
"9.17.1-jdk17",
|
|
149
|
+
"9.17.1",
|
|
150
|
+
"9.8.2-jdk11",
|
|
151
|
+
"9.8-jdk11",
|
|
152
|
+
"9.8",
|
|
153
|
+
"9.8.2",
|
|
141
154
|
"9.4.8",
|
|
155
|
+
"9.8-ubuntu-jdk11",
|
|
156
|
+
"9.4.8-jdk11",
|
|
142
157
|
"9.4.8-ubuntu-jdk11",
|
|
143
|
-
"9.
|
|
158
|
+
"9.12.9",
|
|
159
|
+
"9.12.9-jdk17",
|
|
160
|
+
"9.12.7-jdk11",
|
|
161
|
+
"9.4-ubuntu-jdk11",
|
|
162
|
+
"9.4.28-ubuntu-jdk11",
|
|
163
|
+
"9.4-jdk11",
|
|
164
|
+
"9.12-jdk11",
|
|
165
|
+
"9.12.15-ubuntu-jdk11",
|
|
166
|
+
"9.12-ubuntu-jdk11",
|
|
167
|
+
"9.17.1-jdk11",
|
|
168
|
+
"9.12.15-jdk11",
|
|
169
|
+
"10.2.1",
|
|
170
|
+
"ubuntu-jdk17",
|
|
171
|
+
"10-ubuntu-jdk17",
|
|
172
|
+
"jdk17",
|
|
173
|
+
"10-jdk17",
|
|
174
|
+
"10.2.1-ubuntu-jdk17",
|
|
175
|
+
"9.12.12-ubuntu-jdk17",
|
|
176
|
+
"9.12.12",
|
|
177
|
+
"10.2-jdk17",
|
|
178
|
+
"9.5.0-jdk17",
|
|
179
|
+
"10",
|
|
180
|
+
"10.2-ubuntu-jdk17",
|
|
181
|
+
"10.2.1-jdk17",
|
|
182
|
+
"10.2",
|
|
183
|
+
"9.12.12-jdk17",
|
|
184
|
+
"9.5.0-ubuntu-jdk17",
|
|
144
185
|
"9.4.2",
|
|
145
|
-
"10.2.0-ubuntu-jdk17",
|
|
146
|
-
"9.15.2-ubi9",
|
|
147
186
|
"9.4.2-ubuntu-jdk11",
|
|
148
|
-
"9.
|
|
149
|
-
"9.
|
|
187
|
+
"9.4.2-jdk11",
|
|
188
|
+
"9.12.9-ubi9-jdk17",
|
|
189
|
+
"9.12.9-ubi9",
|
|
190
|
+
"9.4.12-jdk11",
|
|
191
|
+
"9.4.12",
|
|
192
|
+
"9.11.0-ubuntu-jdk11",
|
|
193
|
+
"9.11.0-jdk11",
|
|
194
|
+
"9.4.12-ubuntu-jdk11",
|
|
195
|
+
"9.10.1",
|
|
196
|
+
"9.10.1-ubuntu-jdk11",
|
|
150
197
|
"9.10.1-jdk11",
|
|
151
|
-
"
|
|
152
|
-
"
|
|
153
|
-
"9.
|
|
154
|
-
"9.
|
|
155
|
-
"9.
|
|
156
|
-
"9.17.
|
|
157
|
-
"9.
|
|
158
|
-
"9.17.4-ubi9-jdk17",
|
|
159
|
-
"9.17.1-jdk17",
|
|
160
|
-
"9.12.15-ubuntu-jdk11",
|
|
161
|
-
"9.11.0",
|
|
162
|
-
"9.13.0-jdk17",
|
|
198
|
+
"10.0.1-ubi9-jdk17",
|
|
199
|
+
"10.0.1-ubi9",
|
|
200
|
+
"9.12.8-ubuntu-jdk11",
|
|
201
|
+
"9.7.2-ubi9-jdk17",
|
|
202
|
+
"9.17.2-jdk17",
|
|
203
|
+
"9.17.2-ubuntu-jdk17",
|
|
204
|
+
"9.4.9-jdk11",
|
|
163
205
|
"9.13.0-ubuntu-jdk17",
|
|
164
|
-
"9.17.1",
|
|
165
|
-
"9.12.14-jdk17",
|
|
166
|
-
"9.8.1",
|
|
167
|
-
"9.12.7-ubuntu-jdk11",
|
|
168
|
-
"9.8.0-ubuntu-jdk11",
|
|
169
|
-
"9.8.0",
|
|
170
|
-
"9.12.14-ubuntu-jdk17",
|
|
171
|
-
"9.4.26-jdk11",
|
|
172
206
|
"9.13.0",
|
|
173
|
-
"9.10
|
|
174
|
-
"9.
|
|
175
|
-
"9.
|
|
176
|
-
"9.12.9-ubi9-jdk17",
|
|
177
|
-
"9.17.1-ubuntu-jdk11",
|
|
178
|
-
"9.10-jdk11",
|
|
179
|
-
"9.11.0-jdk17",
|
|
180
|
-
"9.4.14",
|
|
181
|
-
"9.12.1-ubi9",
|
|
182
|
-
"9.4.14-ubuntu-jdk11",
|
|
183
|
-
"9.17.1-jdk11",
|
|
184
|
-
"9.10.2",
|
|
185
|
-
"9.12.9-ubi9",
|
|
186
|
-
"9.12.14",
|
|
187
|
-
"9.4.20-jdk11",
|
|
188
|
-
"9.16.0-ubi9-jdk17",
|
|
189
|
-
"9.12.8-ubuntu-jdk11",
|
|
190
|
-
"9.15.1-ubuntu-jdk11",
|
|
191
|
-
"9.15.1-jdk11",
|
|
192
|
-
"9.12.1-jdk11",
|
|
193
|
-
"9.17.5-ubi9",
|
|
194
|
-
"9.4.14-jdk11",
|
|
207
|
+
"9.12.10-ubi9",
|
|
208
|
+
"9.7.2-ubi9",
|
|
209
|
+
"9.12.8-jdk11",
|
|
195
210
|
"9.17.4-ubi9",
|
|
196
|
-
"9.10
|
|
197
|
-
"9.
|
|
198
|
-
"9.
|
|
199
|
-
"9.
|
|
200
|
-
"9.
|
|
211
|
+
"9.12.10-ubi9-jdk17",
|
|
212
|
+
"9.4.9",
|
|
213
|
+
"9.4.9-ubuntu-jdk11",
|
|
214
|
+
"9.17.2",
|
|
215
|
+
"9.17.4-ubi9-jdk17",
|
|
216
|
+
"9.13.0-jdk17",
|
|
217
|
+
"9.15.2-ubi9-jdk17",
|
|
218
|
+
"9.15.2-ubi9",
|
|
219
|
+
"9.15.2-ubuntu-jdk11",
|
|
220
|
+
"9.15.2-jdk11",
|
|
221
|
+
"9.15-ubuntu-jdk11",
|
|
222
|
+
"9.15-jdk11",
|
|
223
|
+
"9.12.1-jdk11",
|
|
224
|
+
"9.12.1-ubuntu-jdk11",
|
|
225
|
+
"9.17.2-ubuntu-jdk11",
|
|
226
|
+
"9.17.2-jdk11",
|
|
227
|
+
"9.12.13-ubuntu-jdk17",
|
|
228
|
+
"9.12.13",
|
|
229
|
+
"9.4.20",
|
|
230
|
+
"9.4.20-jdk11",
|
|
201
231
|
"9.4.20-ubuntu-jdk11",
|
|
202
|
-
"9.12-
|
|
203
|
-
"9.10.2-ubi9",
|
|
232
|
+
"9.12.13-jdk17",
|
|
204
233
|
"9.10.1-ubi9-jdk17",
|
|
205
|
-
"9.
|
|
206
|
-
"9.
|
|
207
|
-
"9.
|
|
208
|
-
"9.
|
|
234
|
+
"9.12.2-ubi9",
|
|
235
|
+
"9.12.2-ubi9-jdk17",
|
|
236
|
+
"9.10.1-ubi9",
|
|
237
|
+
"9.4.14",
|
|
238
|
+
"9.5.1-ubuntu-jdk17",
|
|
239
|
+
"9.5-jdk17",
|
|
240
|
+
"9.5.1-jdk17",
|
|
209
241
|
"9.10",
|
|
210
|
-
"9.4.9-jdk11",
|
|
211
|
-
"9.11.1-jdk17",
|
|
212
|
-
"9.16.0-ubi9",
|
|
213
|
-
"9.11.1",
|
|
214
242
|
"9.10.2-ubuntu-jdk11",
|
|
215
|
-
"9.
|
|
216
|
-
"9.
|
|
217
|
-
"9.
|
|
218
|
-
"9.
|
|
219
|
-
"9.7.1-jdk17",
|
|
220
|
-
"9.7.1-ubuntu-jdk17",
|
|
221
|
-
"10.0.0-ubi9-jdk17",
|
|
222
|
-
"9.8.0-ubi9-jdk17",
|
|
223
|
-
"9.13-ubuntu-jdk17",
|
|
224
|
-
"9.4.15-ubuntu-jdk11",
|
|
225
|
-
"9.8.0-ubi9",
|
|
226
|
-
"9.12.2-ubi9",
|
|
227
|
-
"9.11.1-ubuntu-jdk17",
|
|
228
|
-
"9.13.1",
|
|
229
|
-
"9.12.9-jdk11",
|
|
230
|
-
"9.4-jdk11",
|
|
231
|
-
"9.4.28-jdk11",
|
|
232
|
-
"9.12.1-ubi9-jdk17",
|
|
233
|
-
"9.4",
|
|
234
|
-
"9.4.28",
|
|
235
|
-
"9.4-ubuntu-jdk11",
|
|
236
|
-
"9.16.1-ubi9",
|
|
237
|
-
"9.11.0-ubuntu-jdk11",
|
|
238
|
-
"9.5.0-ubuntu-jdk11",
|
|
239
|
-
"10.0.0-ubi9",
|
|
240
|
-
"9.16.1-ubi9-jdk17",
|
|
243
|
+
"9.11.1-jdk11",
|
|
244
|
+
"9.13.0-ubi9-jdk17",
|
|
245
|
+
"9.4.14-jdk11",
|
|
246
|
+
"9.4.14-ubuntu-jdk11",
|
|
241
247
|
"9.13.0-ubi9",
|
|
242
|
-
"9.
|
|
243
|
-
"9.4.9-ubuntu-jdk11",
|
|
244
|
-
"9.5.0-jdk11",
|
|
245
|
-
"9.8",
|
|
246
|
-
"9.12",
|
|
247
|
-
"9.8-ubuntu-jdk11",
|
|
248
|
-
"9.13.1-ubuntu-jdk17",
|
|
249
|
-
"9.5.0",
|
|
250
|
-
"9.4.28-ubuntu-jdk11",
|
|
248
|
+
"9.5-ubuntu-jdk17",
|
|
251
249
|
"9.8-ubuntu-jdk17",
|
|
252
|
-
"9.10.0-ubuntu-jdk17",
|
|
253
|
-
"9.12.2-ubi9-jdk17",
|
|
254
|
-
"9.7-jdk17",
|
|
255
|
-
"9.8.2-ubuntu-jdk17",
|
|
256
250
|
"9.12.9-ubuntu-jdk11",
|
|
257
|
-
"9.13",
|
|
258
|
-
"9.13.0-jdk11",
|
|
259
|
-
"9.8.2-jdk11",
|
|
260
|
-
"9.5.0-jdk17",
|
|
261
|
-
"9.8-jdk11",
|
|
262
|
-
"9.17.2-jdk11",
|
|
263
|
-
"9.8.2-ubuntu-jdk11",
|
|
264
|
-
"9.7.2-jdk17",
|
|
265
|
-
"9.12-ubuntu-jdk17",
|
|
266
|
-
"9.4.15",
|
|
267
|
-
"9.8.2",
|
|
268
|
-
"9.4.15-jdk11",
|
|
269
|
-
"9.13.1-ubi9-jdk17",
|
|
270
|
-
"9.12.15",
|
|
271
|
-
"9.12-jdk17",
|
|
272
|
-
"9.12.15-jdk17",
|
|
273
|
-
"9.15.2-ubuntu-jdk11",
|
|
274
|
-
"9.13.0-ubi9-jdk17",
|
|
275
|
-
"9.12.15-ubuntu-jdk17",
|
|
276
|
-
"9.12.2-jdk11",
|
|
277
|
-
"9.8.2-jdk17",
|
|
278
|
-
"9.5.0-ubuntu-jdk17",
|
|
279
|
-
"9.13.1-jdk17",
|
|
280
|
-
"9.13-jdk17",
|
|
281
|
-
"9.17.2-ubuntu-jdk11",
|
|
282
|
-
"9.12.10-ubi9-jdk17",
|
|
283
|
-
"9.11.2-jdk17",
|
|
284
|
-
"9.4.21-ubuntu-jdk11",
|
|
285
|
-
"9.15-ubuntu-jdk11",
|
|
286
|
-
"9.15.2-jdk11",
|
|
287
|
-
"9.11.0-jdk11",
|
|
288
251
|
"9.8-jdk17",
|
|
289
|
-
"9.
|
|
252
|
+
"9.10.2",
|
|
253
|
+
"9.9.0-jdk11",
|
|
254
|
+
"9.10.2-jdk11",
|
|
255
|
+
"9.17.5-ubi9-jdk17",
|
|
256
|
+
"9.11.1-ubuntu-jdk11",
|
|
257
|
+
"9.10-ubuntu-jdk11",
|
|
258
|
+
"9.10-jdk11",
|
|
259
|
+
"9.5.0-ubuntu-jdk11",
|
|
260
|
+
"9.8.2-jdk17",
|
|
261
|
+
"9.5.0",
|
|
262
|
+
"9.5.0-jdk11",
|
|
263
|
+
"9.12.9-jdk11",
|
|
264
|
+
"9.8.2-ubuntu-jdk17",
|
|
265
|
+
"9.9.0-ubuntu-jdk11",
|
|
266
|
+
"9.17.5-ubi9",
|
|
290
267
|
"9.12.2-ubuntu-jdk11",
|
|
291
|
-
"9.
|
|
292
|
-
"9.
|
|
293
|
-
"9.
|
|
294
|
-
"9.
|
|
295
|
-
"9.
|
|
296
|
-
"9.
|
|
297
|
-
"9.
|
|
268
|
+
"9.9.0",
|
|
269
|
+
"9.12.2-jdk11",
|
|
270
|
+
"9.12.10-ubuntu-jdk11",
|
|
271
|
+
"9.12.10-jdk11",
|
|
272
|
+
"9.13",
|
|
273
|
+
"9.13-jdk17",
|
|
274
|
+
"9.13.1",
|
|
275
|
+
"9.13-ubuntu-jdk17",
|
|
276
|
+
"9.13.1-jdk17",
|
|
277
|
+
"9.13.1-ubuntu-jdk17",
|
|
298
278
|
"9.17.3-ubuntu-jdk17",
|
|
279
|
+
"9.11.0",
|
|
280
|
+
"9.17.3-jdk17",
|
|
299
281
|
"9.17.3",
|
|
300
|
-
"9.
|
|
301
|
-
"9.
|
|
302
|
-
"9.
|
|
303
|
-
"9.
|
|
304
|
-
"9.
|
|
305
|
-
"9.
|
|
282
|
+
"9.12.11-ubi9-jdk17",
|
|
283
|
+
"9.12.11-ubi9",
|
|
284
|
+
"9.4.21",
|
|
285
|
+
"9.11.0-jdk17",
|
|
286
|
+
"9.10.2-ubi9-jdk17",
|
|
287
|
+
"9.10.2-ubi9",
|
|
288
|
+
"9.11.0-ubuntu-jdk17",
|
|
289
|
+
"9.4.3",
|
|
290
|
+
"9.4.21-ubuntu-jdk11",
|
|
291
|
+
"9.12.14-ubuntu-jdk17",
|
|
292
|
+
"9.4.3-jdk11",
|
|
293
|
+
"9.4.21-jdk11",
|
|
294
|
+
"9.8.0-ubi9-jdk17",
|
|
295
|
+
"9.12.14",
|
|
296
|
+
"9.4.3-ubuntu-jdk11",
|
|
297
|
+
"9.12.14-jdk17",
|
|
298
|
+
"9.4.15",
|
|
299
|
+
"9.17.3-jdk11",
|
|
300
|
+
"9.16.0-ubi9-jdk17",
|
|
301
|
+
"9.8.0-ubi9",
|
|
306
302
|
"9.13.1-ubi9",
|
|
307
|
-
"9.
|
|
303
|
+
"9.7.1-jdk17",
|
|
304
|
+
"9.7.1-ubuntu-jdk17",
|
|
305
|
+
"9.4.15-jdk11",
|
|
306
|
+
"9.4.15-ubuntu-jdk11",
|
|
307
|
+
"9.17.3-ubuntu-jdk11",
|
|
308
|
+
"9.16.0-ubi9",
|
|
309
|
+
"9.12.3-ubi9-jdk17",
|
|
310
|
+
"9.12.3-ubi9",
|
|
308
311
|
"9.5-ubuntu-jdk11",
|
|
309
|
-
"9.11.0-ubi9-jdk17",
|
|
310
312
|
"9.5.1-ubuntu-jdk11",
|
|
311
|
-
"9.
|
|
312
|
-
"10.
|
|
313
|
-
"
|
|
314
|
-
"
|
|
315
|
-
"9.14.0-jdk17",
|
|
316
|
-
"9.4.16",
|
|
317
|
-
"9.5-ubuntu-jdk17",
|
|
318
|
-
"9.4.16-ubuntu-jdk11",
|
|
313
|
+
"9.5.1-jdk11",
|
|
314
|
+
"10.1.1-ubi9",
|
|
315
|
+
"9.13.1-ubi9-jdk17",
|
|
316
|
+
"10.1.1-ubi9-jdk17",
|
|
319
317
|
"9.5-jdk11",
|
|
320
|
-
"9.
|
|
318
|
+
"9.13.0-jdk11",
|
|
319
|
+
"9.12.11-jdk11",
|
|
320
|
+
"9.11.2-jdk11",
|
|
321
|
+
"9.11.2-ubuntu-jdk11",
|
|
322
|
+
"9.5",
|
|
321
323
|
"9.5.1",
|
|
322
|
-
"9.
|
|
323
|
-
"9.
|
|
324
|
-
"9.
|
|
325
|
-
"9.
|
|
326
|
-
"9.
|
|
324
|
+
"9.11.1",
|
|
325
|
+
"9.12-jdk17",
|
|
326
|
+
"9.12.15-ubuntu-jdk17",
|
|
327
|
+
"9.12-ubuntu-jdk17",
|
|
328
|
+
"9.13.0-ubuntu-jdk11",
|
|
329
|
+
"9.9.1-ubuntu-jdk11",
|
|
330
|
+
"9.12.3-ubuntu-jdk11",
|
|
327
331
|
"9.12.3-jdk11",
|
|
328
|
-
"9.4.
|
|
329
|
-
"9.
|
|
330
|
-
"9.11.1-jdk11",
|
|
331
|
-
"9.8.1-ubi9-jdk17",
|
|
332
|
-
"9.4.22-ubuntu-jdk11",
|
|
333
|
-
"9.12.11-ubi9-jdk17",
|
|
334
|
-
"9.4.0-jdk11",
|
|
335
|
-
"9.9.0-ubuntu-jdk11",
|
|
332
|
+
"9.4.16",
|
|
333
|
+
"9.10.0-ubuntu-jdk17",
|
|
336
334
|
"9.12.11-ubuntu-jdk11",
|
|
337
|
-
"9.
|
|
338
|
-
"9.
|
|
335
|
+
"9.10.0-jdk17",
|
|
336
|
+
"9.16.0-ubuntu-jdk11",
|
|
337
|
+
"9.11.1-ubuntu-jdk17",
|
|
338
|
+
"9.11.1-jdk17",
|
|
339
|
+
"9.16.0-jdk11",
|
|
340
|
+
"9.4.4-ubuntu-jdk11",
|
|
341
|
+
"9.12.15-jdk17",
|
|
342
|
+
"9.12",
|
|
343
|
+
"9.12.15",
|
|
344
|
+
"9.9.1",
|
|
345
|
+
"9.4.22-ubuntu-jdk11",
|
|
346
|
+
"9.4.22",
|
|
347
|
+
"9.16.1-ubi9-jdk17",
|
|
348
|
+
"9.9.1-jdk11",
|
|
339
349
|
"9.4.22-jdk11",
|
|
340
|
-
"9.
|
|
341
|
-
"9.
|
|
342
|
-
"9.5.0-ubi9-jdk17",
|
|
343
|
-
"9.12.3-ubi9-jdk17",
|
|
344
|
-
"9.12.3-ubi9",
|
|
345
|
-
"9.5.0-ubi9",
|
|
346
|
-
"9.9.0-ubuntu-jdk17",
|
|
347
|
-
"9.12.11-jdk11",
|
|
348
|
-
"9.11.2-jdk11",
|
|
349
|
-
"9.9.0",
|
|
350
|
-
"9.11.1-ubi9-jdk17",
|
|
351
|
-
"9.4.3-jdk11",
|
|
350
|
+
"9.17.4",
|
|
351
|
+
"9.8.1-ubi9-jdk17",
|
|
352
352
|
"9.17.4-ubuntu-jdk17",
|
|
353
|
-
"9.
|
|
354
|
-
"9.
|
|
355
|
-
"9.
|
|
353
|
+
"9.8.1-ubi9",
|
|
354
|
+
"9.6.0-jdk17",
|
|
355
|
+
"9.7-ubuntu-jdk17",
|
|
356
|
+
"9.9.0-ubuntu-jdk17",
|
|
357
|
+
"9.5.0-ubi9-jdk17",
|
|
358
|
+
"9.4.16-jdk11",
|
|
359
|
+
"9.4.16-ubuntu-jdk11",
|
|
360
|
+
"9.17.4-jdk11",
|
|
361
|
+
"9.17.4-ubuntu-jdk11",
|
|
362
|
+
"10.1.2-ubi9",
|
|
363
|
+
"10.1.2-ubi9-jdk17",
|
|
364
|
+
"9.12.4-ubi9-jdk17",
|
|
356
365
|
"9.14.0-ubuntu-jdk17",
|
|
366
|
+
"9.13.1-ubuntu-jdk11",
|
|
367
|
+
"9.14.0-jdk17",
|
|
368
|
+
"9.11.3-jdk11",
|
|
369
|
+
"9.16.1-ubi9",
|
|
370
|
+
"9.17.4-jdk17",
|
|
357
371
|
"9.9.0-jdk17",
|
|
358
|
-
"9.
|
|
359
|
-
"9.
|
|
360
|
-
"9.12.2",
|
|
361
|
-
"9.16.0-jdk11",
|
|
362
|
-
"9.11.2-ubuntu-jdk11",
|
|
363
|
-
"9.12.2-jdk17",
|
|
364
|
-
"9.4.17-ubuntu-jdk11",
|
|
365
|
-
"9.4.17",
|
|
366
|
-
"9.12.11-ubi9",
|
|
367
|
-
"9.4.17-jdk11",
|
|
372
|
+
"9.4.4",
|
|
373
|
+
"9.4.4-jdk11",
|
|
368
374
|
"9.13-ubuntu-jdk11",
|
|
369
|
-
"9.8.2-ubi9-jdk17",
|
|
370
|
-
"9.13.1-ubuntu-jdk11",
|
|
371
|
-
"9.11.3-jdk17",
|
|
372
|
-
"9.12.12-ubuntu-jdk11",
|
|
373
|
-
"9.13.1-jdk11",
|
|
374
|
-
"9.12.12-jdk11",
|
|
375
|
-
"9.12.4-ubi9-jdk17",
|
|
376
|
-
"9.11",
|
|
377
|
-
"9.12.4-jdk11",
|
|
378
|
-
"9.4.4-ubuntu-jdk11",
|
|
379
|
-
"9.8.2-ubi9",
|
|
380
375
|
"9.13-jdk11",
|
|
381
|
-
"9.
|
|
382
|
-
"9.11.
|
|
383
|
-
"9.
|
|
384
|
-
"9.6.0-jdk17",
|
|
385
|
-
"9.16.0-ubuntu-jdk11",
|
|
376
|
+
"9.8.2-ubi9-jdk17",
|
|
377
|
+
"9.11.0-ubi9-jdk17",
|
|
378
|
+
"9.12.12-ubi9",
|
|
386
379
|
"9.6.0-ubuntu-jdk17",
|
|
387
|
-
"9.
|
|
388
|
-
"9.
|
|
389
|
-
"9.
|
|
390
|
-
"9.
|
|
391
|
-
"9.
|
|
392
|
-
"9.
|
|
393
|
-
"9.4.
|
|
394
|
-
"9.11-jdk17",
|
|
395
|
-
"9.4.23-ubuntu-jdk11",
|
|
396
|
-
"9.9.1",
|
|
397
|
-
"9.5.1-ubi9-jdk17",
|
|
398
|
-
"9.4.4-jdk11",
|
|
399
|
-
"9.4.1-ubuntu-jdk11",
|
|
400
|
-
"9.17.4-ubuntu-jdk11",
|
|
401
|
-
"9.5.1-ubi9",
|
|
402
|
-
"9.14-ubuntu-jdk17",
|
|
403
|
-
"9.10.1-ubuntu-jdk17",
|
|
404
|
-
"10.1.1-ubi9",
|
|
405
|
-
"10.1.1-ubi9-jdk17",
|
|
406
|
-
"9.17.4-jdk11",
|
|
407
|
-
"9.9.1-ubuntu-jdk17",
|
|
408
|
-
"9.4.1-jdk11",
|
|
409
|
-
"9.14.1",
|
|
410
|
-
"9.4.1",
|
|
411
|
-
"9.8.0-jdk17",
|
|
412
|
-
"9.8.0-ubuntu-jdk17",
|
|
380
|
+
"9.11.2-jdk17",
|
|
381
|
+
"9.5.0-ubi9",
|
|
382
|
+
"9.7.2-ubuntu-jdk17",
|
|
383
|
+
"9.7.2-jdk17",
|
|
384
|
+
"9.7-jdk17",
|
|
385
|
+
"9.4.0",
|
|
386
|
+
"9.4.0-ubuntu-jdk11",
|
|
413
387
|
"9.12.12-ubi9-jdk17",
|
|
414
|
-
"9.
|
|
415
|
-
"9.
|
|
416
|
-
"9.
|
|
417
|
-
"9.
|
|
418
|
-
"9.
|
|
388
|
+
"9.4.0-jdk11",
|
|
389
|
+
"9.6-jdk17",
|
|
390
|
+
"9.8.2-ubi9",
|
|
391
|
+
"9.6-ubuntu-jdk17",
|
|
392
|
+
"9.11.0-ubi9",
|
|
393
|
+
"9.12.12-jdk11",
|
|
394
|
+
"9.11-jdk11",
|
|
395
|
+
"9.11.3-ubuntu-jdk11",
|
|
396
|
+
"9.12.4-ubi9",
|
|
397
|
+
"9.14.0",
|
|
398
|
+
"9.11-ubuntu-jdk11",
|
|
399
|
+
"9.14.0-ubi9",
|
|
400
|
+
"9.13.1-jdk11",
|
|
401
|
+
"9.12.4-jdk11",
|
|
402
|
+
"9.12.4-ubuntu-jdk11",
|
|
403
|
+
"9.14.0-ubi9-jdk17",
|
|
419
404
|
"9.9.1-jdk17",
|
|
420
|
-
"9.
|
|
421
|
-
"9.
|
|
422
|
-
"9.
|
|
423
|
-
"9.9.1-jdk11",
|
|
405
|
+
"9.9.1-ubuntu-jdk17",
|
|
406
|
+
"9.11.2",
|
|
407
|
+
"9.4.17-ubuntu-jdk11",
|
|
424
408
|
"9.6.0-ubuntu-jdk11",
|
|
409
|
+
"9.4.17-jdk11",
|
|
410
|
+
"9.6.0-jdk11",
|
|
411
|
+
"9.4.23-ubuntu-jdk11",
|
|
412
|
+
"9.6.0",
|
|
413
|
+
"9.11.2-ubuntu-jdk17",
|
|
425
414
|
"9.6-jdk11",
|
|
415
|
+
"9.12.12-ubuntu-jdk11",
|
|
426
416
|
"9.6",
|
|
417
|
+
"9.10.1-jdk17",
|
|
418
|
+
"9.9.2-ubuntu-jdk11",
|
|
419
|
+
"9.4.23",
|
|
420
|
+
"9.4.23-jdk11",
|
|
421
|
+
"9.4.17",
|
|
422
|
+
"9.17-ubuntu-jdk17",
|
|
423
|
+
"9.10.1-ubuntu-jdk17",
|
|
424
|
+
"9.17.5-jdk17",
|
|
425
|
+
"9.16.1-jdk11",
|
|
427
426
|
"9.6-ubuntu-jdk11",
|
|
428
|
-
"9.
|
|
429
|
-
"9.
|
|
430
|
-
"9-
|
|
431
|
-
"9.
|
|
432
|
-
"9.
|
|
433
|
-
"9.
|
|
434
|
-
"9.
|
|
427
|
+
"9.17",
|
|
428
|
+
"9.9.2-jdk11",
|
|
429
|
+
"9.16-ubuntu-jdk11",
|
|
430
|
+
"9.12.13-ubi9",
|
|
431
|
+
"9.9",
|
|
432
|
+
"9.17.5",
|
|
433
|
+
"9.5.1-ubi9-jdk17",
|
|
434
|
+
"9.9-ubuntu-jdk11",
|
|
435
|
+
"9.9-jdk11",
|
|
436
|
+
"9.16.1-ubuntu-jdk11",
|
|
437
|
+
"9.16-jdk11",
|
|
435
438
|
"9.17-jdk17",
|
|
436
|
-
"9.
|
|
437
|
-
"9.
|
|
439
|
+
"9.4.5-jdk11",
|
|
440
|
+
"9.11.1-ubi9-jdk17",
|
|
441
|
+
"9.4.5-ubuntu-jdk11",
|
|
442
|
+
"9.4.5",
|
|
443
|
+
"9.4.1-jdk11",
|
|
444
|
+
"9.4.1",
|
|
445
|
+
"9.4.1-ubuntu-jdk11",
|
|
446
|
+
"9.14",
|
|
447
|
+
"9.5.1-ubi9",
|
|
448
|
+
"9.9.2",
|
|
438
449
|
"9.12.5-jdk11",
|
|
439
|
-
"10.1.2-ubi9-jdk17",
|
|
440
|
-
"9.4.24-ubuntu-jdk11",
|
|
441
450
|
"9.12.5-ubuntu-jdk11",
|
|
442
|
-
"9.
|
|
443
|
-
"9.11.2-ubi9",
|
|
444
|
-
"9.17.5",
|
|
445
|
-
"9-ubuntu-jdk11",
|
|
446
|
-
"9.12.5-ubi9-jdk17",
|
|
447
|
-
"9.17.0-ubi9-jdk17",
|
|
448
|
-
"9.17.0-ubi9",
|
|
449
|
-
"9.4.24-jdk11",
|
|
450
|
-
"9.17-ubuntu-jdk17",
|
|
451
|
-
"9.12.13-ubuntu-jdk11",
|
|
452
|
-
"9.11.2-ubi9-jdk17",
|
|
453
|
-
"9-ubuntu-jdk17",
|
|
454
|
-
"9.12.3-ubuntu-jdk17",
|
|
455
|
-
"9.12.3-jdk17",
|
|
456
|
-
"9.17",
|
|
457
|
-
"9.12.3",
|
|
458
|
-
"9.11.3-jdk11",
|
|
459
|
-
"9-jdk11",
|
|
451
|
+
"9.12.13-ubi9-jdk17",
|
|
460
452
|
"9",
|
|
461
|
-
"9
|
|
453
|
+
"9-ubuntu-jdk17",
|
|
454
|
+
"9.12.2",
|
|
455
|
+
"9.12.5-ubi9",
|
|
456
|
+
"9.11.1-ubi9",
|
|
457
|
+
"9.12.5-ubi9-jdk17",
|
|
458
|
+
"9-jdk17",
|
|
462
459
|
"9.17.5-ubuntu-jdk17",
|
|
463
|
-
"9.4.18-ubuntu-jdk11",
|
|
464
|
-
"9.4.10-jdk11",
|
|
465
|
-
"9.16-jdk11",
|
|
466
|
-
"9.4.18",
|
|
467
|
-
"9.4.5-jdk11",
|
|
468
460
|
"9.17.5-jdk11",
|
|
469
|
-
"9.12.13-jdk11",
|
|
470
461
|
"9.17.5-ubuntu-jdk11",
|
|
471
|
-
"9.
|
|
462
|
+
"9.12.13-jdk11",
|
|
463
|
+
"9.14.1",
|
|
472
464
|
"9.17-ubuntu-jdk11",
|
|
473
|
-
"9.
|
|
474
|
-
"9.
|
|
475
|
-
"9.
|
|
476
|
-
"
|
|
477
|
-
"9.
|
|
465
|
+
"9.14.1-jdk17",
|
|
466
|
+
"9.11.3",
|
|
467
|
+
"9.11-jdk17",
|
|
468
|
+
"9.11.3-ubuntu-jdk17",
|
|
469
|
+
"9.11.3-jdk17",
|
|
470
|
+
"9.12.2-ubuntu-jdk17",
|
|
471
|
+
"9.17.0-ubi9-jdk17",
|
|
472
|
+
"9.17-jdk11",
|
|
473
|
+
"9-ubuntu-jdk11",
|
|
474
|
+
"9-jdk11",
|
|
475
|
+
"9.12.13-ubuntu-jdk11",
|
|
476
|
+
"9.14-ubuntu-jdk17",
|
|
477
|
+
"9.14.1-ubuntu-jdk17",
|
|
478
|
+
"9.11",
|
|
479
|
+
"9.14-jdk17",
|
|
480
|
+
"9.11-ubuntu-jdk17",
|
|
481
|
+
"9.12.2-jdk17",
|
|
482
|
+
"9.14.1-ubi9",
|
|
483
|
+
"9.14.1-ubi9-jdk17",
|
|
484
|
+
"9.4.24",
|
|
485
|
+
"9.4.24-ubuntu-jdk11",
|
|
486
|
+
"9.4.24-jdk11",
|
|
487
|
+
"9.17.0-ubi9",
|
|
478
488
|
"9.4.10",
|
|
479
|
-
"9.
|
|
480
|
-
"
|
|
481
|
-
"
|
|
482
|
-
"9.16.1-jdk11",
|
|
483
|
-
"9.16.1-ubuntu-jdk11",
|
|
484
|
-
"9.16-ubuntu-jdk11",
|
|
489
|
+
"9.4.18-jdk11",
|
|
490
|
+
"10.2.0-ubi9-jdk17",
|
|
491
|
+
"10.2.0-ubi9",
|
|
485
492
|
"9.4.10-ubuntu-jdk11",
|
|
486
|
-
"9.9.
|
|
487
|
-
"9.
|
|
493
|
+
"9.9.2-ubuntu-jdk17",
|
|
494
|
+
"9.9-jdk17",
|
|
488
495
|
"9.10-jdk17",
|
|
489
|
-
"9.
|
|
490
|
-
"9.
|
|
491
|
-
"9.
|
|
492
|
-
"9.
|
|
493
|
-
"9.
|
|
494
|
-
"9.
|
|
495
|
-
"9.
|
|
496
|
-
"9.
|
|
496
|
+
"9.10-ubuntu-jdk17",
|
|
497
|
+
"9.8.0-ubuntu-jdk17",
|
|
498
|
+
"9.8.0-jdk17",
|
|
499
|
+
"9.4.18-ubuntu-jdk11",
|
|
500
|
+
"9.4.18",
|
|
501
|
+
"9.11.2-ubi9-jdk17",
|
|
502
|
+
"9.11.2-ubi9",
|
|
503
|
+
"9.7.0-ubuntu-jdk17",
|
|
497
504
|
"9.9.0-ubi9",
|
|
498
|
-
"9.
|
|
499
|
-
"9.
|
|
500
|
-
"9.9.
|
|
501
|
-
"9.
|
|
502
|
-
"9.
|
|
503
|
-
"9.
|
|
504
|
-
"9.
|
|
505
|
-
"9.
|
|
506
|
-
"9.
|
|
507
|
-
"9.
|
|
508
|
-
"9.
|
|
509
|
-
"9.
|
|
505
|
+
"9.7.0-jdk17",
|
|
506
|
+
"9.4.10-jdk11",
|
|
507
|
+
"9.9.0-ubi9-jdk17",
|
|
508
|
+
"9.4.6-ubuntu-jdk11",
|
|
509
|
+
"9.4.6-jdk11",
|
|
510
|
+
"9.9-ubuntu-jdk17",
|
|
511
|
+
"9.10.2-ubuntu-jdk17",
|
|
512
|
+
"9.9.2-jdk17",
|
|
513
|
+
"9.10.2-jdk17",
|
|
514
|
+
"9.4.6",
|
|
515
|
+
"9.14.0-jdk11",
|
|
516
|
+
"9.6.0-ubi9",
|
|
517
|
+
"9.12.6-ubi9-jdk17",
|
|
510
518
|
"9.14.0-ubuntu-jdk11",
|
|
511
|
-
"9.
|
|
512
|
-
"9.
|
|
513
|
-
"9.
|
|
514
|
-
"9.12.
|
|
515
|
-
"9.
|
|
516
|
-
"9.12.
|
|
517
|
-
"9.12.
|
|
519
|
+
"9.6.0-ubi9-jdk17",
|
|
520
|
+
"9.12.0-jdk11",
|
|
521
|
+
"9.12.0-ubuntu-jdk11",
|
|
522
|
+
"9.12.3-jdk17",
|
|
523
|
+
"9.12.3",
|
|
524
|
+
"9.12.14-ubi9",
|
|
525
|
+
"9.12.14-ubi9-jdk17",
|
|
518
526
|
"9.12.6-jdk11",
|
|
519
|
-
"9.12.0-jdk17",
|
|
520
527
|
"9.4.25-jdk11",
|
|
521
|
-
"9.9.1-ubi9-jdk17",
|
|
522
|
-
"9.9.1-ubi9",
|
|
523
|
-
"9.12.6-ubi9-jdk17",
|
|
524
|
-
"9.12.14-jdk11",
|
|
525
|
-
"9.12.4-jdk17",
|
|
526
|
-
"9.12.4",
|
|
527
|
-
"9.4.6-ubuntu-jdk11",
|
|
528
|
-
"9.4.25-ubuntu-jdk11",
|
|
529
|
-
"9.4.19",
|
|
530
|
-
"9.14.0-jdk11",
|
|
531
|
-
"9.7.0-jdk17",
|
|
532
528
|
"9.12.6-ubuntu-jdk11",
|
|
533
529
|
"9.4.25",
|
|
534
|
-
"9.4.
|
|
535
|
-
"9.
|
|
536
|
-
"9.11.3-ubi9",
|
|
537
|
-
"9.7.0-jdk11",
|
|
538
|
-
"9.12.0-jdk11",
|
|
530
|
+
"9.4.25-ubuntu-jdk11",
|
|
531
|
+
"9.12.6-ubi9",
|
|
539
532
|
"9.7.0-ubuntu-jdk11",
|
|
540
|
-
"9.12.14-
|
|
541
|
-
"9.11.3-ubi9-jdk17",
|
|
533
|
+
"9.12.14-ubuntu-jdk11",
|
|
542
534
|
"9.7.0",
|
|
543
|
-
"
|
|
544
|
-
"9.
|
|
545
|
-
"
|
|
546
|
-
"9.
|
|
547
|
-
"9.
|
|
548
|
-
"9.4.11-ubuntu-jdk11",
|
|
535
|
+
"9.12.3-ubuntu-jdk17",
|
|
536
|
+
"9.17.1-ubi9",
|
|
537
|
+
"9.8.1-ubuntu-jdk17",
|
|
538
|
+
"9.4.19-ubuntu-jdk11",
|
|
539
|
+
"9.8.1-jdk17",
|
|
549
540
|
"9.4.11-jdk11",
|
|
541
|
+
"9.12.14-jdk11",
|
|
542
|
+
"9.7.0-jdk11",
|
|
543
|
+
"9.4.19",
|
|
544
|
+
"9.4.19-jdk11",
|
|
550
545
|
"9.4.11",
|
|
551
|
-
"9.
|
|
552
|
-
"9.
|
|
553
|
-
"
|
|
554
|
-
"9.
|
|
546
|
+
"9.4.11-ubuntu-jdk11",
|
|
547
|
+
"9.17.1-ubi9-jdk17",
|
|
548
|
+
"ubi9",
|
|
549
|
+
"9.9.1-ubi9",
|
|
550
|
+
"9.9.1-ubi9-jdk17",
|
|
551
|
+
"10.2.1-ubi9-jdk17",
|
|
552
|
+
"10.2.1-ubi9",
|
|
553
|
+
"ubi9-jdk17",
|
|
554
|
+
"9.11.3-ubi9-jdk17",
|
|
555
|
+
"9.11.3-ubi9",
|
|
556
|
+
"9.12.15-ubi9-jdk17",
|
|
557
|
+
"9.12.15-ubi9",
|
|
555
558
|
"9.12.7-ubi9-jdk17",
|
|
559
|
+
"9.12.7-ubi9",
|
|
560
|
+
"9.15.0-ubi9",
|
|
556
561
|
"9.15.0-ubi9-jdk17",
|
|
557
|
-
"9.
|
|
558
|
-
"9.
|
|
562
|
+
"9.17.2-ubi9-jdk17",
|
|
563
|
+
"9.17.2-ubi9",
|
|
559
564
|
"9.9.2-ubi9",
|
|
560
565
|
"9.9.2-ubi9-jdk17",
|
|
561
|
-
"9.
|
|
562
|
-
"9.
|
|
563
|
-
"9.12.0-ubi9",
|
|
564
|
-
"9.17.3-ubi9",
|
|
566
|
+
"9.7.0-ubi9-jdk17",
|
|
567
|
+
"9.7.0-ubi9",
|
|
565
568
|
"9.12.8-ubi9",
|
|
569
|
+
"9.15.1-ubi9-jdk17",
|
|
570
|
+
"9.12.8-ubi9-jdk17",
|
|
571
|
+
"9.15.1-ubi9",
|
|
572
|
+
"9.17.3-ubi9",
|
|
573
|
+
"9.12.0-ubi9",
|
|
566
574
|
"9.12.0-ubi9-jdk17",
|
|
567
|
-
"9.12.8-ubi9-jdk17",
|
|
568
575
|
"9.17.3-ubi9-jdk17",
|
|
569
|
-
"9.15.1-ubi9-jdk17",
|
|
570
|
-
"9.15.1-ubi9",
|
|
571
|
-
"9.7.1-ubi9",
|
|
572
|
-
"9.7.1-ubi9-jdk17",
|
|
573
|
-
"9.10.0-ubi9-jdk17",
|
|
574
576
|
"9.10.0-ubi9",
|
|
577
|
+
"9.10.0-ubi9-jdk17",
|
|
578
|
+
"9.7.1-ubi9-jdk17",
|
|
579
|
+
"9.7.1-ubi9",
|
|
575
580
|
"10.3.0-EAP01-jdk17",
|
|
576
581
|
"10.3.0-EAP01",
|
|
577
582
|
"10.3.0-EAP01-ubuntu-jdk17",
|
|
@@ -2015,577 +2020,595 @@ var jira = [
|
|
|
2015
2020
|
"8.8.0-RC02"
|
|
2016
2021
|
];
|
|
2017
2022
|
var confluence = [
|
|
2018
|
-
"8.
|
|
2019
|
-
"8.
|
|
2023
|
+
"8.5.18-jdk17",
|
|
2024
|
+
"8.5-ubuntu-jdk17",
|
|
2025
|
+
"8.5.18-ubuntu-jdk17",
|
|
2026
|
+
"8.5",
|
|
2027
|
+
"8.5-jdk17",
|
|
2028
|
+
"8.5.18",
|
|
2029
|
+
"8.5-jdk11",
|
|
2030
|
+
"8.5.18-ubuntu-jdk11",
|
|
2031
|
+
"8.5.18-jdk11",
|
|
2032
|
+
"8.5-ubuntu-jdk11",
|
|
2033
|
+
"7.19",
|
|
2034
|
+
"7.19.30-ubuntu-jdk11",
|
|
2035
|
+
"7.19-jdk11",
|
|
2036
|
+
"7.19-ubuntu-jdk11",
|
|
2037
|
+
"7.19.30-jdk11",
|
|
2038
|
+
"7.19.30",
|
|
2039
|
+
"8.5.18-ubi9-jdk17",
|
|
2040
|
+
"8.5.18-ubi9",
|
|
2041
|
+
"9.2.0-rc1-jdk21",
|
|
2042
|
+
"9.2.0-rc1-ubuntu-jdk21",
|
|
2043
|
+
"9.2.0-rc1",
|
|
2044
|
+
"eap",
|
|
2045
|
+
"9.2.0-rc1-jdk17",
|
|
2046
|
+
"eap-jdk17",
|
|
2047
|
+
"eap-ubuntu-jdk17",
|
|
2048
|
+
"9.2.0-rc1-ubuntu-jdk17",
|
|
2049
|
+
"9.2.0-rc1-ubi9-jdk17",
|
|
2050
|
+
"9.2.0-rc1-ubi9",
|
|
2051
|
+
"9.2.0-rc1-ubi9-jdk21",
|
|
2020
2052
|
"8.9.7-ubuntu-jdk17",
|
|
2021
|
-
"8.9.
|
|
2022
|
-
"8.9.
|
|
2023
|
-
"8.
|
|
2024
|
-
"8.
|
|
2053
|
+
"8.9.7-jdk17",
|
|
2054
|
+
"8.9.7",
|
|
2055
|
+
"8.6.2-ubuntu-jdk17",
|
|
2056
|
+
"8.6-ubuntu-jdk17",
|
|
2057
|
+
"8.6.2-jdk17",
|
|
2058
|
+
"8.6.2",
|
|
2059
|
+
"8.6-jdk17",
|
|
2060
|
+
"8.6",
|
|
2025
2061
|
"8",
|
|
2026
|
-
"8.9
|
|
2062
|
+
"8.9-ubuntu-jdk17",
|
|
2027
2063
|
"8-ubuntu-jdk17",
|
|
2028
|
-
"8-jdk17",
|
|
2029
2064
|
"8.9-jdk17",
|
|
2030
|
-
"8
|
|
2031
|
-
"8.
|
|
2032
|
-
"8.9.
|
|
2033
|
-
"8.
|
|
2034
|
-
"8.
|
|
2035
|
-
"7.
|
|
2036
|
-
"
|
|
2037
|
-
"8.6-jdk17",
|
|
2038
|
-
"8.5.14-ubuntu-jdk11",
|
|
2039
|
-
"7.19.24-ubuntu-jdk11",
|
|
2040
|
-
"7.19.26-jdk11",
|
|
2041
|
-
"8.5.2-ubuntu-jdk11",
|
|
2042
|
-
"8.6.2-ubuntu-jdk17",
|
|
2043
|
-
"8.6.2",
|
|
2044
|
-
"8.6.2-jdk17",
|
|
2045
|
-
"8.5.8-jdk11",
|
|
2065
|
+
"8-jdk17",
|
|
2066
|
+
"8.9.8",
|
|
2067
|
+
"8.9.8-jdk17",
|
|
2068
|
+
"8.9.8-ubuntu-jdk17",
|
|
2069
|
+
"8.9",
|
|
2070
|
+
"8.7.1",
|
|
2071
|
+
"8.7.1-ubuntu-jdk17",
|
|
2046
2072
|
"8.9.3-jdk11",
|
|
2047
|
-
"8.7.
|
|
2048
|
-
"8.5.12-jdk11",
|
|
2073
|
+
"8.7.1-jdk17",
|
|
2049
2074
|
"8.9.3-ubuntu-jdk11",
|
|
2050
2075
|
"8.7-jdk11",
|
|
2051
|
-
"8.
|
|
2052
|
-
"8.
|
|
2053
|
-
"8.
|
|
2076
|
+
"8.7.2-jdk11",
|
|
2077
|
+
"8.7.2-ubuntu-jdk11",
|
|
2078
|
+
"8.7-ubuntu-jdk11",
|
|
2079
|
+
"7.19.24-ubuntu-jdk11",
|
|
2080
|
+
"7.19.24",
|
|
2081
|
+
"7.19.24-jdk11",
|
|
2082
|
+
"8.5.16-ubuntu-jdk17",
|
|
2083
|
+
"8.1.3",
|
|
2054
2084
|
"8.5.16-jdk17",
|
|
2085
|
+
"8.5.8-jdk11",
|
|
2086
|
+
"8.1.3-ubuntu-jdk11",
|
|
2055
2087
|
"7.19.9",
|
|
2056
|
-
"8.1
|
|
2057
|
-
"8.
|
|
2058
|
-
"8.5.10",
|
|
2059
|
-
"8.5.2-jdk11",
|
|
2088
|
+
"8.9.1",
|
|
2089
|
+
"8.9.1-ubuntu-jdk17",
|
|
2060
2090
|
"8.5.16",
|
|
2061
|
-
"8.5.16-ubuntu-jdk17",
|
|
2062
|
-
"7.19.25",
|
|
2063
|
-
"8.1.4-jdk11",
|
|
2064
|
-
"7.19.24",
|
|
2065
|
-
"8.1-ubuntu-jdk11",
|
|
2066
|
-
"8.1.4",
|
|
2067
|
-
"8.3.1-jdk17",
|
|
2068
|
-
"8.7-ubuntu-jdk11",
|
|
2069
|
-
"8.1",
|
|
2070
|
-
"7.19.9-jdk11",
|
|
2071
2091
|
"8.4.1-ubuntu-jdk17",
|
|
2072
|
-
"8.4.
|
|
2073
|
-
"7.19.24-jdk11",
|
|
2074
|
-
"8.5.1-jdk17",
|
|
2075
|
-
"7.19.4-jdk11",
|
|
2076
|
-
"7.19.19-jdk11",
|
|
2077
|
-
"7.19.25-ubuntu-jdk11",
|
|
2092
|
+
"8.4.1",
|
|
2078
2093
|
"8.1.3-jdk11",
|
|
2079
|
-
"7.
|
|
2080
|
-
"
|
|
2081
|
-
"7.19.26-ubuntu-jdk11",
|
|
2082
|
-
"7.19.19-ubuntu-jdk11",
|
|
2083
|
-
"8.3.1",
|
|
2084
|
-
"7.20.0-jdk11",
|
|
2085
|
-
"8.5.1",
|
|
2086
|
-
"8.9.1-ubuntu-jdk17",
|
|
2087
|
-
"8.4.1-jdk17",
|
|
2094
|
+
"7.19.9-ubuntu-jdk11",
|
|
2095
|
+
"9.0.1",
|
|
2088
2096
|
"8.5.8-ubuntu-jdk11",
|
|
2089
|
-
"8.
|
|
2090
|
-
"
|
|
2091
|
-
"8.4.0-jdk11",
|
|
2092
|
-
"8.4.2",
|
|
2093
|
-
"8.9.5-jdk11",
|
|
2094
|
-
"8.7.1",
|
|
2095
|
-
"8.9.4-jdk11",
|
|
2096
|
-
"8.5.10-jdk17",
|
|
2097
|
-
"8.3.0",
|
|
2098
|
-
"8.0.1",
|
|
2099
|
-
"8.7.1-jdk17",
|
|
2100
|
-
"8.5.17-ubuntu-jdk17",
|
|
2101
|
-
"8.5.6",
|
|
2102
|
-
"7.19.25-jdk11",
|
|
2103
|
-
"8.3.1-ubuntu-jdk17",
|
|
2104
|
-
"8.5.6-ubuntu-jdk17",
|
|
2105
|
-
"8.5.1-ubuntu-jdk17",
|
|
2106
|
-
"8.5",
|
|
2097
|
+
"8.4.1-jdk17",
|
|
2098
|
+
"7.19.9-jdk11",
|
|
2107
2099
|
"8.9.1-jdk17",
|
|
2108
|
-
"
|
|
2109
|
-
"7.19.3",
|
|
2110
|
-
"8.4.5-jdk11",
|
|
2111
|
-
"8.0.2-ubuntu-jdk11",
|
|
2100
|
+
"9.0.1-ubuntu-jdk17",
|
|
2112
2101
|
"9.0.1-jdk17",
|
|
2113
|
-
"8.
|
|
2114
|
-
"8.
|
|
2115
|
-
"
|
|
2116
|
-
"
|
|
2102
|
+
"8.5.1",
|
|
2103
|
+
"8.7.2-ubuntu-jdk17",
|
|
2104
|
+
"8.3.0",
|
|
2105
|
+
"8.5.1-ubuntu-jdk17",
|
|
2106
|
+
"8.7-ubuntu-jdk17",
|
|
2107
|
+
"8.7",
|
|
2108
|
+
"7.19.19-jdk11",
|
|
2109
|
+
"7.19.19-ubuntu-jdk11",
|
|
2117
2110
|
"7.19.19",
|
|
2118
|
-
"
|
|
2119
|
-
"8.4.0-ubuntu-jdk11",
|
|
2120
|
-
"8.5.6-jdk17",
|
|
2121
|
-
"8.5.17-jdk17",
|
|
2122
|
-
"8.5-ubuntu-jdk17",
|
|
2123
|
-
"8.4.2-jdk17",
|
|
2111
|
+
"8.3.0-ubuntu-jdk17",
|
|
2124
2112
|
"8.3.0-jdk17",
|
|
2113
|
+
"8.5.1-jdk17",
|
|
2114
|
+
"8.7.2-jdk17",
|
|
2115
|
+
"8.7-jdk17",
|
|
2116
|
+
"8.7.2",
|
|
2117
|
+
"8.0.1",
|
|
2125
2118
|
"8.0.1-ubuntu-jdk11",
|
|
2126
|
-
"
|
|
2119
|
+
"8.9.4-jdk11",
|
|
2120
|
+
"8.5.2-jdk11",
|
|
2121
|
+
"8.9.4-ubuntu-jdk11",
|
|
2122
|
+
"8.5.6-jdk17",
|
|
2123
|
+
"8.5.6-ubuntu-jdk17",
|
|
2124
|
+
"8.0.1-jdk11",
|
|
2125
|
+
"8.5.6",
|
|
2126
|
+
"8.5.2-ubuntu-jdk11",
|
|
2127
2127
|
"7.19.3-jdk11",
|
|
2128
|
-
"
|
|
2129
|
-
"
|
|
2130
|
-
"8.4
|
|
2131
|
-
"
|
|
2128
|
+
"7.19.3-ubuntu-jdk11",
|
|
2129
|
+
"7.19.3",
|
|
2130
|
+
"8.4-ubuntu-jdk11",
|
|
2131
|
+
"7.19.25-jdk11",
|
|
2132
2132
|
"8.4.5-ubuntu-jdk11",
|
|
2133
|
-
"7.19.
|
|
2134
|
-
"
|
|
2135
|
-
"8.
|
|
2136
|
-
"
|
|
2133
|
+
"7.19.25-ubuntu-jdk11",
|
|
2134
|
+
"7.19.25",
|
|
2135
|
+
"8.4-jdk11",
|
|
2136
|
+
"8.1-ubuntu-jdk11",
|
|
2137
|
+
"8.1",
|
|
2138
|
+
"8.1.4-jdk11",
|
|
2139
|
+
"8.8.0-jdk11",
|
|
2140
|
+
"8.1.4-ubuntu-jdk11",
|
|
2141
|
+
"8.1.4",
|
|
2142
|
+
"8.4.5-jdk11",
|
|
2143
|
+
"8.1-jdk11",
|
|
2144
|
+
"8.5.17",
|
|
2137
2145
|
"8.8.0-ubuntu-jdk11",
|
|
2138
|
-
"
|
|
2146
|
+
"8.5.17-ubuntu-jdk17",
|
|
2147
|
+
"8.5.17-jdk17",
|
|
2148
|
+
"8.5.9-ubuntu-jdk11",
|
|
2149
|
+
"7.20.0-jdk11",
|
|
2150
|
+
"7.20.0",
|
|
2151
|
+
"8.5.9-jdk11",
|
|
2152
|
+
"7.20.0-ubuntu-jdk11",
|
|
2153
|
+
"8.5.12-ubuntu-jdk11",
|
|
2154
|
+
"8.9.2",
|
|
2139
2155
|
"8.9.2-jdk17",
|
|
2140
|
-
"8.
|
|
2156
|
+
"8.4.2-ubuntu-jdk17",
|
|
2157
|
+
"8.9.2-ubuntu-jdk17",
|
|
2158
|
+
"8.4.2-jdk17",
|
|
2159
|
+
"8.4.2",
|
|
2160
|
+
"8.5.12-jdk11",
|
|
2161
|
+
"9.0.2",
|
|
2162
|
+
"9.0.2-ubuntu-jdk17",
|
|
2163
|
+
"8.6.1-ubi9-jdk17",
|
|
2164
|
+
"9.0.2-jdk17",
|
|
2165
|
+
"8.3.1-ubuntu-jdk17",
|
|
2166
|
+
"8.4.0-ubuntu-jdk11",
|
|
2167
|
+
"8.3.1-jdk17",
|
|
2168
|
+
"8.3.1",
|
|
2169
|
+
"8.3.0-jdk11",
|
|
2170
|
+
"8.4.0-jdk11",
|
|
2171
|
+
"8.6.1-ubi9",
|
|
2172
|
+
"8.5.10-ubuntu-jdk17",
|
|
2173
|
+
"8.3.0-ubuntu-jdk11",
|
|
2174
|
+
"8.5.10",
|
|
2175
|
+
"9.0.2-ubi9-jdk17",
|
|
2176
|
+
"9.0.2-ubi9",
|
|
2177
|
+
"8.0.2",
|
|
2178
|
+
"8.9.6-ubi9",
|
|
2179
|
+
"8.0.2-jdk11",
|
|
2180
|
+
"8.5.10-jdk17",
|
|
2181
|
+
"8.8.0-ubi9",
|
|
2182
|
+
"8.8.0-ubi9-jdk17",
|
|
2183
|
+
"7.19.14-jdk11",
|
|
2184
|
+
"8.9.6-ubi9-jdk17",
|
|
2185
|
+
"8.0.2-ubuntu-jdk11",
|
|
2186
|
+
"7.19.14",
|
|
2187
|
+
"7.19.2-jdk11",
|
|
2188
|
+
"7.19.2",
|
|
2189
|
+
"7.19.14-ubuntu-jdk11",
|
|
2141
2190
|
"7.19.2-ubuntu-jdk11",
|
|
2142
|
-
"8.
|
|
2143
|
-
"8.5.
|
|
2144
|
-
"8.
|
|
2145
|
-
"8.5
|
|
2191
|
+
"8.5.3-ubuntu-jdk11",
|
|
2192
|
+
"8.5.7-ubuntu-jdk17",
|
|
2193
|
+
"8.5.3-jdk11",
|
|
2194
|
+
"8.9.5-jdk11",
|
|
2195
|
+
"8.5.7",
|
|
2196
|
+
"8.5.7-jdk17",
|
|
2197
|
+
"8.9.5-ubuntu-jdk11",
|
|
2198
|
+
"8.8.0-ubuntu-jdk17",
|
|
2199
|
+
"8.8.0-jdk17",
|
|
2200
|
+
"7.19.4-jdk11",
|
|
2201
|
+
"7.19.4",
|
|
2202
|
+
"9.0.1-ubuntu-jdk21",
|
|
2203
|
+
"7.19.4-ubuntu-jdk11",
|
|
2204
|
+
"9.0.1-jdk21",
|
|
2146
2205
|
"7.19.0",
|
|
2147
|
-
"8.
|
|
2148
|
-
"7.19.14",
|
|
2149
|
-
"9.0.2",
|
|
2206
|
+
"8.8.0",
|
|
2150
2207
|
"7.19.0-jdk11",
|
|
2151
|
-
"8.9.2-ubuntu-jdk17",
|
|
2152
2208
|
"7.19.0-ubuntu-jdk11",
|
|
2153
|
-
"
|
|
2154
|
-
"
|
|
2155
|
-
"7.19.
|
|
2156
|
-
"7.19.4",
|
|
2157
|
-
"7.19.2",
|
|
2158
|
-
"8.9.2",
|
|
2159
|
-
"8.3.1-jdk11",
|
|
2160
|
-
"8.5.7",
|
|
2161
|
-
"8.5.7-ubuntu-jdk17",
|
|
2162
|
-
"8.8-jdk11",
|
|
2163
|
-
"8.5.9-jdk11",
|
|
2164
|
-
"8.3.1-ubuntu-jdk11",
|
|
2165
|
-
"8.4.3-ubuntu-jdk17",
|
|
2166
|
-
"8.4.3",
|
|
2167
|
-
"8.3.0-jdk11",
|
|
2168
|
-
"7.19.2-jdk11",
|
|
2169
|
-
"8.4-jdk11",
|
|
2170
|
-
"8.0.2",
|
|
2171
|
-
"8.5.11-ubuntu-jdk17",
|
|
2209
|
+
"7.19.26-jdk11",
|
|
2210
|
+
"7.19.26-ubuntu-jdk11",
|
|
2211
|
+
"7.19.26",
|
|
2172
2212
|
"8.8-ubuntu-jdk11",
|
|
2173
|
-
"8.7-jdk17",
|
|
2174
|
-
"8.7-ubuntu-jdk17",
|
|
2175
|
-
"8.8.1-ubuntu-jdk11",
|
|
2176
|
-
"8.0.3",
|
|
2177
|
-
"8.5.3-jdk11",
|
|
2178
|
-
"8.0.2-jdk11",
|
|
2179
|
-
"8.5.11",
|
|
2180
|
-
"9.0.2-ubuntu-jdk17",
|
|
2181
|
-
"8.0.3-jdk11",
|
|
2182
2213
|
"8.8.1-jdk11",
|
|
2214
|
+
"8.8.1-ubuntu-jdk11",
|
|
2215
|
+
"8.8-jdk11",
|
|
2183
2216
|
"8.6.0-jdk11",
|
|
2217
|
+
"8.4.3-ubuntu-jdk17",
|
|
2184
2218
|
"8.6.0-ubuntu-jdk11",
|
|
2185
|
-
"8.
|
|
2219
|
+
"8.4.3-jdk17",
|
|
2220
|
+
"8.4.3",
|
|
2221
|
+
"8.5.14-ubuntu-jdk11",
|
|
2222
|
+
"8.5.14-jdk11",
|
|
2223
|
+
"7.20.1-ubuntu-jdk11",
|
|
2224
|
+
"7.20.1-jdk11",
|
|
2225
|
+
"8.3.2-jdk17",
|
|
2226
|
+
"8.9.3",
|
|
2227
|
+
"7.20.1",
|
|
2186
2228
|
"8.2.0-jdk11",
|
|
2187
|
-
"8.
|
|
2188
|
-
"8.5.8",
|
|
2189
|
-
"8.4.1-jdk11",
|
|
2190
|
-
"8.5.8-ubuntu-jdk17",
|
|
2191
|
-
"8.2.0",
|
|
2192
|
-
"8.5.3-ubuntu-jdk11",
|
|
2193
|
-
"8.9.6-ubuntu-jdk11",
|
|
2194
|
-
"8.4.1-ubuntu-jdk11",
|
|
2195
|
-
"9.0-jdk17",
|
|
2196
|
-
"7.19.15-ubuntu-jdk11",
|
|
2197
|
-
"8.5.4-jdk11",
|
|
2229
|
+
"8.3.2",
|
|
2198
2230
|
"9.0.3",
|
|
2231
|
+
"9.0.3-ubuntu-jdk17",
|
|
2199
2232
|
"8.3.2-ubuntu-jdk17",
|
|
2233
|
+
"9.0-jdk17",
|
|
2234
|
+
"9.0-ubuntu-jdk17",
|
|
2235
|
+
"8.3.1-jdk11",
|
|
2236
|
+
"8.2.0",
|
|
2237
|
+
"8.4.1-ubuntu-jdk11",
|
|
2238
|
+
"8.9.3-jdk17",
|
|
2239
|
+
"8.9.3-ubuntu-jdk17",
|
|
2240
|
+
"8.9.2-ubi9-jdk17",
|
|
2241
|
+
"8.3.1-ubuntu-jdk11",
|
|
2200
2242
|
"8.2.0-ubuntu-jdk11",
|
|
2201
|
-
"
|
|
2202
|
-
"
|
|
2203
|
-
"8.
|
|
2204
|
-
"
|
|
2205
|
-
"8.5.8-jdk17",
|
|
2206
|
-
"9.0.2-ubi9",
|
|
2207
|
-
"8.2.1",
|
|
2208
|
-
"7.19.20",
|
|
2209
|
-
"8.3.3-ubuntu-jdk17",
|
|
2210
|
-
"7.20.1",
|
|
2211
|
-
"8.5.2",
|
|
2243
|
+
"8.4.1-jdk11",
|
|
2244
|
+
"8.0.3",
|
|
2245
|
+
"8.0.3-jdk11",
|
|
2246
|
+
"8.0.3-ubuntu-jdk11",
|
|
2212
2247
|
"9.0",
|
|
2213
|
-
"7.19.1-jdk11",
|
|
2214
2248
|
"9.0.3-jdk17",
|
|
2215
|
-
"8.5.
|
|
2216
|
-
"
|
|
2217
|
-
"7.20.1-ubuntu-jdk11",
|
|
2218
|
-
"7.19.1",
|
|
2219
|
-
"8.9.6-jdk11",
|
|
2220
|
-
"9.0.3-ubuntu-jdk17",
|
|
2221
|
-
"8.3.2",
|
|
2249
|
+
"8.5.11-jdk17",
|
|
2250
|
+
"8.5.4-jdk11",
|
|
2222
2251
|
"8.5.2-jdk17",
|
|
2223
|
-
"
|
|
2224
|
-
"8.5.
|
|
2225
|
-
"
|
|
2252
|
+
"8.5.4-ubuntu-jdk11",
|
|
2253
|
+
"8.5.11",
|
|
2254
|
+
"7.19.15",
|
|
2255
|
+
"8.5.15-ubi9-jdk17",
|
|
2256
|
+
"7.19.15-ubuntu-jdk11",
|
|
2257
|
+
"8.5.15-ubi9",
|
|
2258
|
+
"7.19.20",
|
|
2226
2259
|
"7.19.20-ubuntu-jdk11",
|
|
2227
|
-
"
|
|
2228
|
-
"8.5.15-ubuntu-jdk11",
|
|
2229
|
-
"8.5.12",
|
|
2230
|
-
"8.9.0-jdk11",
|
|
2231
|
-
"8.5.1-ubuntu-jdk11",
|
|
2232
|
-
"8.9.2-ubi9",
|
|
2233
|
-
"8.5.3-jdk17",
|
|
2234
|
-
"8.9.6-ubi9",
|
|
2235
|
-
"7.20.1-jdk11",
|
|
2236
|
-
"8.6.1-ubuntu-jdk11",
|
|
2237
|
-
"7.20.2-jdk11",
|
|
2260
|
+
"8.5.0-jdk11",
|
|
2238
2261
|
"8.5.0-ubuntu-jdk11",
|
|
2239
|
-
"8.
|
|
2240
|
-
"
|
|
2241
|
-
"8.
|
|
2242
|
-
"
|
|
2262
|
+
"8.9.2-ubi9",
|
|
2263
|
+
"7.19.20-jdk11",
|
|
2264
|
+
"8.5.2",
|
|
2265
|
+
"8.5.8",
|
|
2266
|
+
"8.5.11-ubuntu-jdk17",
|
|
2267
|
+
"8.5.8-ubuntu-jdk17",
|
|
2268
|
+
"8.5.10-ubi9",
|
|
2269
|
+
"7.19.15-jdk11",
|
|
2270
|
+
"8.5.7-ubi9",
|
|
2271
|
+
"8.5.2-ubuntu-jdk17",
|
|
2272
|
+
"8.5.7-ubi9-jdk17",
|
|
2243
2273
|
"7.19.5-ubuntu-jdk11",
|
|
2244
|
-
"7.19.27",
|
|
2245
2274
|
"7.19.5",
|
|
2275
|
+
"7.19.1",
|
|
2276
|
+
"8.5.8-jdk17",
|
|
2246
2277
|
"8.5.10-ubi9-jdk17",
|
|
2247
|
-
"
|
|
2248
|
-
"8.
|
|
2249
|
-
"
|
|
2250
|
-
"
|
|
2278
|
+
"8.9.7-ubi9-jdk17",
|
|
2279
|
+
"8.9.6-ubuntu-jdk11",
|
|
2280
|
+
"9.0.3-ubi9",
|
|
2281
|
+
"7.19.1-ubuntu-jdk11",
|
|
2282
|
+
"8.9.7-ubi9",
|
|
2283
|
+
"9.0.2-ubuntu-jdk21",
|
|
2284
|
+
"9.0.2-jdk21",
|
|
2285
|
+
"8.8",
|
|
2286
|
+
"8.8-ubuntu-jdk17",
|
|
2287
|
+
"7.19.27",
|
|
2288
|
+
"8.9.6-jdk11",
|
|
2289
|
+
"7.19.1-jdk11",
|
|
2290
|
+
"9.0.3-ubi9-jdk17",
|
|
2291
|
+
"8.4.4",
|
|
2292
|
+
"7.19.5-jdk11",
|
|
2251
2293
|
"8.2.1-jdk11",
|
|
2294
|
+
"8.3.3",
|
|
2295
|
+
"8.0-ubuntu-jdk11",
|
|
2296
|
+
"8.6.2-ubi9-jdk17",
|
|
2297
|
+
"8.6.2-ubi9",
|
|
2298
|
+
"8.8.1-jdk17",
|
|
2299
|
+
"8.5.15-ubuntu-jdk11",
|
|
2300
|
+
"8.8.1-ubuntu-jdk17",
|
|
2301
|
+
"8.3.2-jdk11",
|
|
2302
|
+
"8.8.1-ubi9",
|
|
2303
|
+
"8.8.1-ubi9-jdk17",
|
|
2304
|
+
"9.0.3-ubi9-jdk21",
|
|
2305
|
+
"8.8-jdk17",
|
|
2252
2306
|
"7.19.27-ubuntu-jdk11",
|
|
2253
|
-
"8.
|
|
2254
|
-
"8.
|
|
2307
|
+
"8.5.12-jdk17",
|
|
2308
|
+
"8.5.1-jdk11",
|
|
2309
|
+
"8.3.3-jdk17",
|
|
2310
|
+
"8.4.4-ubuntu-jdk17",
|
|
2311
|
+
"7.20.2-jdk11",
|
|
2312
|
+
"8.5.15-jdk11",
|
|
2255
2313
|
"8.6.1-jdk11",
|
|
2256
|
-
"
|
|
2314
|
+
"8.8.1",
|
|
2257
2315
|
"7.20.2",
|
|
2258
|
-
"
|
|
2259
|
-
"8.
|
|
2260
|
-
"8.8.0-ubi9",
|
|
2261
|
-
"9.0.2-ubi9-jdk17",
|
|
2262
|
-
"8.2.1-ubuntu-jdk11",
|
|
2316
|
+
"7.20.2-ubuntu-jdk11",
|
|
2317
|
+
"8.5.5-jdk11",
|
|
2263
2318
|
"8.3.2-ubuntu-jdk11",
|
|
2264
|
-
"8.8.0-ubuntu-jdk17",
|
|
2265
|
-
"8.4.4",
|
|
2266
|
-
"8.3.3",
|
|
2267
|
-
"8.0-jdk11",
|
|
2268
|
-
"8.3.3-jdk17",
|
|
2269
|
-
"8.6.1-ubi9-jdk17",
|
|
2270
|
-
"8.0.4-jdk11",
|
|
2271
|
-
"8.5.9-jdk17",
|
|
2272
|
-
"8.0.4",
|
|
2273
2319
|
"8.4.4-jdk17",
|
|
2274
|
-
"7.19.
|
|
2275
|
-
"
|
|
2276
|
-
"
|
|
2277
|
-
"
|
|
2278
|
-
"8.5.12
|
|
2279
|
-
"8.
|
|
2280
|
-
"8.8.1-ubuntu-jdk17",
|
|
2281
|
-
"8.0-ubuntu-jdk11",
|
|
2282
|
-
"8.8-jdk17",
|
|
2283
|
-
"8.9.6-ubi9-jdk17",
|
|
2284
|
-
"8.9.0-ubuntu-jdk11",
|
|
2285
|
-
"8.5.9",
|
|
2320
|
+
"7.19.27-jdk11",
|
|
2321
|
+
"8.3.3-ubuntu-jdk17",
|
|
2322
|
+
"8.6.1-ubuntu-jdk11",
|
|
2323
|
+
"latest",
|
|
2324
|
+
"8.5.12",
|
|
2325
|
+
"8.9.4",
|
|
2286
2326
|
"8.0.4-ubuntu-jdk11",
|
|
2287
|
-
"8.
|
|
2288
|
-
"8.
|
|
2289
|
-
"8.
|
|
2290
|
-
"8.
|
|
2327
|
+
"8.2.1-ubuntu-jdk11",
|
|
2328
|
+
"8.0.4",
|
|
2329
|
+
"8.0",
|
|
2330
|
+
"8.5.12-ubuntu-jdk17",
|
|
2331
|
+
"8.2.1",
|
|
2291
2332
|
"7.19.21-ubuntu-jdk11",
|
|
2292
|
-
"
|
|
2293
|
-
"8.
|
|
2294
|
-
"7.19.
|
|
2333
|
+
"8.0.4-jdk11",
|
|
2334
|
+
"8.0-jdk11",
|
|
2335
|
+
"7.19.21",
|
|
2295
2336
|
"8.4.2-ubuntu-jdk11",
|
|
2296
|
-
"8.5.10-ubi9",
|
|
2297
|
-
"8.5.3-ubuntu-jdk17",
|
|
2298
|
-
"8.5.5-jdk11",
|
|
2299
|
-
"8.4.2-jdk11",
|
|
2300
2337
|
"8.5.9-ubuntu-jdk17",
|
|
2301
|
-
"8.6-ubuntu-jdk11",
|
|
2302
|
-
"9.1.0-jdk17",
|
|
2303
|
-
"8.3.3-jdk11",
|
|
2304
|
-
"7.19.16",
|
|
2305
|
-
"7.19.16-jdk11",
|
|
2306
|
-
"7.19.10-ubuntu-jdk11",
|
|
2307
2338
|
"8.5.5-ubuntu-jdk11",
|
|
2308
|
-
"8.
|
|
2309
|
-
"8.5.
|
|
2339
|
+
"8.4.2-jdk11",
|
|
2340
|
+
"8.5.1-ubuntu-jdk11",
|
|
2341
|
+
"8.9.4-jdk17",
|
|
2342
|
+
"8.9.4-ubuntu-jdk17",
|
|
2343
|
+
"7.19.21-jdk11",
|
|
2344
|
+
"7.19.6",
|
|
2345
|
+
"7.19.10",
|
|
2346
|
+
"8.5.9",
|
|
2347
|
+
"8.5.16-ubi9",
|
|
2310
2348
|
"7.19.10-jdk11",
|
|
2311
|
-
"8.
|
|
2312
|
-
"
|
|
2349
|
+
"8.9.0-jdk11",
|
|
2350
|
+
"8.9.0-ubuntu-jdk11",
|
|
2351
|
+
"8.9.3-ubi9-jdk17",
|
|
2352
|
+
"8.5.3",
|
|
2353
|
+
"8.9.3-ubi9",
|
|
2354
|
+
"7.19.10-ubuntu-jdk11",
|
|
2313
2355
|
"8.9.7-jdk11",
|
|
2314
|
-
"
|
|
2315
|
-
"8.5.
|
|
2316
|
-
"
|
|
2317
|
-
"
|
|
2318
|
-
"
|
|
2319
|
-
"9.0.3-
|
|
2320
|
-
"8.
|
|
2321
|
-
"8.0.3-jdk17",
|
|
2322
|
-
"8.1.3-jdk17",
|
|
2323
|
-
"8.9.4-ubuntu-jdk17",
|
|
2324
|
-
"8.9.4",
|
|
2325
|
-
"8.5.14-jdk17",
|
|
2356
|
+
"8.5.16-ubi9-jdk17",
|
|
2357
|
+
"8.5.9-jdk17",
|
|
2358
|
+
"8.5.3-jdk17",
|
|
2359
|
+
"7.19.16-ubuntu-jdk11",
|
|
2360
|
+
"7.19.16",
|
|
2361
|
+
"9.0.3-jdk21",
|
|
2362
|
+
"8.5.3-ubuntu-jdk17",
|
|
2326
2363
|
"7.19.6-ubuntu-jdk11",
|
|
2327
|
-
"
|
|
2328
|
-
"
|
|
2329
|
-
"
|
|
2330
|
-
"8.
|
|
2331
|
-
"8.5.
|
|
2332
|
-
"9.0.2-jdk21",
|
|
2333
|
-
"8.8-ubuntu-jdk17",
|
|
2364
|
+
"8.5.8-ubi9",
|
|
2365
|
+
"7.19.16-jdk11",
|
|
2366
|
+
"9-jdk21",
|
|
2367
|
+
"8.9.7-ubuntu-jdk11",
|
|
2368
|
+
"8.5.8-ubi9-jdk17",
|
|
2334
2369
|
"7.19.28-jdk11",
|
|
2335
|
-
"8.4.
|
|
2336
|
-
"
|
|
2370
|
+
"8.4.5-ubuntu-jdk17",
|
|
2371
|
+
"7.19.6-jdk11",
|
|
2372
|
+
"8.4.5-jdk17",
|
|
2373
|
+
"8.4",
|
|
2374
|
+
"9.1.0-jdk17",
|
|
2375
|
+
"8.5.11-ubi9-jdk17",
|
|
2376
|
+
"7.20-ubuntu-jdk11",
|
|
2377
|
+
"7-ubuntu-jdk11",
|
|
2337
2378
|
"7.19.28-ubuntu-jdk11",
|
|
2338
|
-
"8.
|
|
2339
|
-
"
|
|
2340
|
-
"8.9.3-ubi9",
|
|
2341
|
-
"8.5.7-ubi9-jdk17",
|
|
2342
|
-
"8.9.3-ubi9-jdk17",
|
|
2343
|
-
"8.2.2-jdk11",
|
|
2344
|
-
"9.0.2-ubuntu-jdk21",
|
|
2345
|
-
"8.6-jdk11",
|
|
2346
|
-
"8.2.0-jdk17",
|
|
2347
|
-
"8.4.3-ubuntu-jdk11",
|
|
2348
|
-
"8.8.1-jdk17",
|
|
2349
|
-
"8.5.16-ubuntu-jdk11",
|
|
2350
|
-
"8.1.0-jdk17",
|
|
2351
|
-
"8.4.5",
|
|
2379
|
+
"8.5.11-ubi9",
|
|
2380
|
+
"7.20.3-jdk11",
|
|
2352
2381
|
"8.4-ubuntu-jdk17",
|
|
2353
|
-
"8.4",
|
|
2354
|
-
"8.2.2",
|
|
2355
2382
|
"7.19.28",
|
|
2383
|
+
"8.4.5",
|
|
2384
|
+
"8.6.2-ubuntu-jdk11",
|
|
2385
|
+
"9.0-jdk21",
|
|
2386
|
+
"9.0-ubuntu-jdk21",
|
|
2387
|
+
"9.1.1",
|
|
2388
|
+
"8.5.16-ubuntu-jdk11",
|
|
2389
|
+
"jdk21",
|
|
2390
|
+
"9",
|
|
2391
|
+
"9.1",
|
|
2392
|
+
"8.1.3-ubuntu-jdk17",
|
|
2393
|
+
"8.9.8-ubi9-jdk17",
|
|
2394
|
+
"8.2.2-ubuntu-jdk17",
|
|
2395
|
+
"8.2.2-jdk11",
|
|
2396
|
+
"8.5.16-jdk11",
|
|
2356
2397
|
"8.4-jdk17",
|
|
2357
|
-
"
|
|
2358
|
-
"
|
|
2359
|
-
"
|
|
2360
|
-
"
|
|
2361
|
-
"
|
|
2362
|
-
"
|
|
2398
|
+
"9.0.3-ubuntu-jdk21",
|
|
2399
|
+
"9.1.0-ubuntu-jdk17",
|
|
2400
|
+
"9.1.0",
|
|
2401
|
+
"9.1-jdk21",
|
|
2402
|
+
"9.1.1-jdk21",
|
|
2403
|
+
"9.1-ubuntu-jdk21",
|
|
2404
|
+
"9-ubuntu-jdk21",
|
|
2405
|
+
"ubuntu-jdk21",
|
|
2406
|
+
"9.1.1-ubuntu-jdk21",
|
|
2407
|
+
"8.1.3-jdk17",
|
|
2363
2408
|
"8.6.2-jdk11",
|
|
2364
|
-
"8.8.1-ubi9",
|
|
2365
|
-
"8.5.16-ubi9",
|
|
2366
|
-
"8.3-ubuntu-jdk17",
|
|
2367
|
-
"8.4.5-ubuntu-jdk17",
|
|
2368
|
-
"8.3.4-ubuntu-jdk17",
|
|
2369
|
-
"8.6.0",
|
|
2370
|
-
"7.19.11",
|
|
2371
|
-
"7.19.17",
|
|
2372
|
-
"8.4.5-jdk17",
|
|
2373
|
-
"8.6.0-ubuntu-jdk17",
|
|
2374
|
-
"8.6.2-ubi9-jdk17",
|
|
2375
|
-
"7-ubuntu-jdk11",
|
|
2376
|
-
"7.20",
|
|
2377
2409
|
"7-jdk11",
|
|
2378
|
-
"
|
|
2410
|
+
"8.6-jdk11",
|
|
2411
|
+
"8.7.1-ubi9-jdk17",
|
|
2379
2412
|
"8.5.10-jdk11",
|
|
2380
2413
|
"7.20-jdk11",
|
|
2381
|
-
"8.3",
|
|
2382
|
-
"8.
|
|
2383
|
-
"8.9.
|
|
2384
|
-
"8.
|
|
2385
|
-
"8.
|
|
2386
|
-
"7.20.3-jdk11",
|
|
2414
|
+
"8.4.3-ubuntu-jdk11",
|
|
2415
|
+
"8.4.3-jdk11",
|
|
2416
|
+
"8.9.8-ubi9",
|
|
2417
|
+
"8.7.1-ubi9",
|
|
2418
|
+
"8.9.1-jdk11",
|
|
2387
2419
|
"8.5.10-ubuntu-jdk11",
|
|
2388
|
-
"8.2.
|
|
2389
|
-
"8.
|
|
2390
|
-
"8.
|
|
2391
|
-
"
|
|
2420
|
+
"8.2.2-ubuntu-jdk11",
|
|
2421
|
+
"8.2.2",
|
|
2422
|
+
"8.3.4-jdk17",
|
|
2423
|
+
"8.9.1-ubuntu-jdk11",
|
|
2424
|
+
"8.3",
|
|
2425
|
+
"8.3.4",
|
|
2392
2426
|
"7",
|
|
2427
|
+
"8.9.0",
|
|
2428
|
+
"8.9.0-ubuntu-jdk17",
|
|
2429
|
+
"7.20.3-ubuntu-jdk11",
|
|
2430
|
+
"8.9.0-jdk17",
|
|
2431
|
+
"8.6-ubuntu-jdk11",
|
|
2393
2432
|
"7.20.3",
|
|
2394
|
-
"
|
|
2395
|
-
"7.
|
|
2396
|
-
"8.
|
|
2397
|
-
"8.
|
|
2398
|
-
"
|
|
2399
|
-
"8.
|
|
2400
|
-
"
|
|
2401
|
-
"8.
|
|
2402
|
-
"
|
|
2433
|
+
"9.1.0-ubi9-jdk17",
|
|
2434
|
+
"7.20",
|
|
2435
|
+
"8.1.0",
|
|
2436
|
+
"8.3.3-ubuntu-jdk11",
|
|
2437
|
+
"9.1.0-ubuntu-jdk21",
|
|
2438
|
+
"8.0.3-ubuntu-jdk17",
|
|
2439
|
+
"8.9.5-jdk17",
|
|
2440
|
+
"8.5.14",
|
|
2441
|
+
"9.1.0-jdk21",
|
|
2403
2442
|
"8.5.14-ubuntu-jdk17",
|
|
2404
|
-
"7.19.22-ubuntu-jdk11",
|
|
2405
|
-
"8.9.7-ubi9",
|
|
2406
2443
|
"7.19.22-jdk11",
|
|
2407
|
-
"
|
|
2408
|
-
"
|
|
2409
|
-
"8.5-ubuntu-
|
|
2410
|
-
"
|
|
2444
|
+
"8.1.0-ubuntu-jdk11",
|
|
2445
|
+
"9.1.0-ubi9-jdk21",
|
|
2446
|
+
"8.5.4-ubuntu-jdk17",
|
|
2447
|
+
"8.3-ubuntu-jdk17",
|
|
2448
|
+
"8.1.0-jdk11",
|
|
2411
2449
|
"8.5.6-jdk11",
|
|
2450
|
+
"8.2.2-jdk17",
|
|
2451
|
+
"8.3-jdk17",
|
|
2452
|
+
"8.3.4-ubuntu-jdk17",
|
|
2453
|
+
"9.1.0-ubi9",
|
|
2454
|
+
"8.9.5",
|
|
2455
|
+
"8.9.5-ubuntu-jdk17",
|
|
2456
|
+
"7.19.17",
|
|
2457
|
+
"7.19.17-ubuntu-jdk11",
|
|
2412
2458
|
"8.5.4",
|
|
2413
2459
|
"8.5.6-ubuntu-jdk11",
|
|
2414
|
-
"8.
|
|
2415
|
-
"ubuntu-
|
|
2416
|
-
"8.
|
|
2417
|
-
"8.
|
|
2418
|
-
"
|
|
2419
|
-
"8.
|
|
2460
|
+
"8.5.12-ubi9-jdk17",
|
|
2461
|
+
"8.6.0-ubuntu-jdk17",
|
|
2462
|
+
"8.9.0-ubi9-jdk17",
|
|
2463
|
+
"8.3.3-jdk11",
|
|
2464
|
+
"8.9.4-ubi9",
|
|
2465
|
+
"8.9.0-ubi9",
|
|
2466
|
+
"8.9.4-ubi9-jdk17",
|
|
2467
|
+
"7.19.22-ubuntu-jdk11",
|
|
2468
|
+
"8.0.3-jdk17",
|
|
2469
|
+
"8.5.17-ubi9",
|
|
2470
|
+
"7.19.22",
|
|
2471
|
+
"8.1.0-jdk17",
|
|
2472
|
+
"8.6.0-jdk17",
|
|
2473
|
+
"8.5.17-ubi9-jdk17",
|
|
2474
|
+
"7.19.17-jdk11",
|
|
2475
|
+
"8.5.4-jdk17",
|
|
2476
|
+
"8.5.9-ubi9",
|
|
2477
|
+
"7.19.11-jdk11",
|
|
2478
|
+
"8.5.14-jdk17",
|
|
2479
|
+
"8.5.12-ubi9",
|
|
2480
|
+
"8.2.0-ubuntu-jdk17",
|
|
2481
|
+
"9.0.1-ubi9-jdk21",
|
|
2482
|
+
"7.19.7",
|
|
2483
|
+
"7.19.11-ubuntu-jdk11",
|
|
2484
|
+
"7.19.7-jdk11",
|
|
2485
|
+
"8.5.9-ubi9-jdk17",
|
|
2486
|
+
"8.6.0",
|
|
2420
2487
|
"7.19.7-ubuntu-jdk11",
|
|
2421
|
-
"8.
|
|
2422
|
-
"
|
|
2423
|
-
"9.0.
|
|
2424
|
-
"8.
|
|
2425
|
-
"
|
|
2426
|
-
"8.5.11-ubi9-jdk17",
|
|
2427
|
-
"8.9-jdk11",
|
|
2428
|
-
"8-ubuntu-jdk11",
|
|
2429
|
-
"8-jdk11",
|
|
2430
|
-
"7.19-jdk11",
|
|
2431
|
-
"8.9-ubuntu-jdk11",
|
|
2432
|
-
"8.5.8-ubi9-jdk17",
|
|
2433
|
-
"jdk17",
|
|
2488
|
+
"8.1.0-ubuntu-jdk17",
|
|
2489
|
+
"7.19.11",
|
|
2490
|
+
"9.0.1-ubi9",
|
|
2491
|
+
"8.2.0-jdk17",
|
|
2492
|
+
"9-jdk17",
|
|
2434
2493
|
"9.1.1-ubuntu-jdk17",
|
|
2435
|
-
"8.5.17-jdk11",
|
|
2436
2494
|
"8.9.8-ubuntu-jdk11",
|
|
2437
|
-
"8
|
|
2438
|
-
"
|
|
2439
|
-
"8.1.4-ubuntu-jdk17",
|
|
2440
|
-
"8.1.4-jdk17",
|
|
2495
|
+
"8-ubuntu-jdk11",
|
|
2496
|
+
"ubuntu-jdk17",
|
|
2441
2497
|
"8.9.8-jdk11",
|
|
2442
|
-
"8.2.3-jdk17",
|
|
2443
|
-
"7.19.29-jdk11",
|
|
2444
|
-
"9-jdk17",
|
|
2445
|
-
"9.1-ubuntu-jdk21",
|
|
2446
|
-
"8.0-jdk17",
|
|
2447
2498
|
"9.1-ubuntu-jdk17",
|
|
2448
|
-
"8.
|
|
2449
|
-
"
|
|
2450
|
-
"9.1.1-jdk21",
|
|
2451
|
-
"8.3-ubuntu-jdk11",
|
|
2452
|
-
"9-jdk21",
|
|
2453
|
-
"7.19.29",
|
|
2454
|
-
"9-ubuntu-jdk21",
|
|
2455
|
-
"9.1",
|
|
2456
|
-
"jdk21",
|
|
2457
|
-
"7.19-ubuntu-jdk11",
|
|
2458
|
-
"8.9.0",
|
|
2459
|
-
"9.0-ubuntu-jdk21",
|
|
2460
|
-
"7.19",
|
|
2461
|
-
"9.1-jdk21",
|
|
2462
|
-
"8.2.3-jdk11",
|
|
2463
|
-
"8.2-jdk17",
|
|
2464
|
-
"8.2-jdk11",
|
|
2465
|
-
"9.1.1-ubuntu-jdk21",
|
|
2466
|
-
"9.0-jdk21",
|
|
2467
|
-
"8.2-ubuntu-jdk11",
|
|
2468
|
-
"8.3-jdk11",
|
|
2469
|
-
"ubuntu-jdk17",
|
|
2499
|
+
"8.9-ubuntu-jdk11",
|
|
2500
|
+
"9.1.1-jdk17",
|
|
2470
2501
|
"9-ubuntu-jdk17",
|
|
2471
|
-
"7.19.29-ubuntu-jdk11",
|
|
2472
|
-
"8.2",
|
|
2473
2502
|
"9.1-jdk17",
|
|
2474
|
-
"9
|
|
2475
|
-
"8.
|
|
2476
|
-
"9.1.1",
|
|
2477
|
-
"9.0.3-ubuntu-jdk21",
|
|
2478
|
-
"8.5.8-ubi9",
|
|
2479
|
-
"8.0-ubuntu-jdk17",
|
|
2480
|
-
"8.9.2-jdk11",
|
|
2481
|
-
"8.2-ubuntu-jdk17",
|
|
2482
|
-
"8.9.0-jdk17",
|
|
2503
|
+
"8.9-jdk11",
|
|
2504
|
+
"8.1.4-ubuntu-jdk17",
|
|
2483
2505
|
"8.1-jdk17",
|
|
2484
|
-
"8.
|
|
2485
|
-
"
|
|
2506
|
+
"8.2-jdk17",
|
|
2507
|
+
"7.19.29-jdk11",
|
|
2508
|
+
"8.2.3-jdk11",
|
|
2509
|
+
"8-jdk11",
|
|
2510
|
+
"jdk17",
|
|
2511
|
+
"8.2.3-ubuntu-jdk17",
|
|
2512
|
+
"7.19.29-ubuntu-jdk11",
|
|
2513
|
+
"8.2-ubuntu-jdk17",
|
|
2514
|
+
"7.19.29",
|
|
2486
2515
|
"8.1-ubuntu-jdk17",
|
|
2487
|
-
"8.
|
|
2488
|
-
"8.
|
|
2489
|
-
"
|
|
2490
|
-
"8.6.1-ubuntu-jdk17",
|
|
2491
|
-
"8.5.15",
|
|
2492
|
-
"8.9.4-ubi9",
|
|
2493
|
-
"8.5.17-ubi9-jdk17",
|
|
2494
|
-
"9.1.0-ubi9-jdk17",
|
|
2495
|
-
"9.0.1-ubi9",
|
|
2516
|
+
"8.1.4-jdk17",
|
|
2517
|
+
"8.2-ubuntu-jdk11",
|
|
2518
|
+
"8.5.17-ubuntu-jdk11",
|
|
2496
2519
|
"7.19.23-ubuntu-jdk11",
|
|
2497
|
-
"8.
|
|
2498
|
-
"8.
|
|
2499
|
-
"8.
|
|
2500
|
-
"8.7.1-ubuntu-jdk11",
|
|
2501
|
-
"8.1.1",
|
|
2502
|
-
"7.19.18-ubuntu-jdk11",
|
|
2503
|
-
"7.19.18",
|
|
2504
|
-
"9.1.0-ubi9-jdk21",
|
|
2505
|
-
"8.5.17-ubi9",
|
|
2506
|
-
"8.1.1-ubuntu-jdk11",
|
|
2507
|
-
"7.19.23-jdk11",
|
|
2508
|
-
"7.19.12",
|
|
2509
|
-
"8.1.1-jdk11",
|
|
2510
|
-
"7.19.23",
|
|
2511
|
-
"8.0.1-jdk17",
|
|
2512
|
-
"8.5.15-ubuntu-jdk17",
|
|
2513
|
-
"8.9.2-ubuntu-jdk11",
|
|
2514
|
-
"8.5.0",
|
|
2515
|
-
"9.1.0-ubi9",
|
|
2516
|
-
"8.5.15-jdk17",
|
|
2517
|
-
"9.1.0-jdk21",
|
|
2518
|
-
"8.9.0-ubuntu-jdk17",
|
|
2519
|
-
"8.4.4-jdk11",
|
|
2520
|
-
"7.19.8",
|
|
2520
|
+
"8.9.6",
|
|
2521
|
+
"8.2.3-jdk17",
|
|
2522
|
+
"8.2.3",
|
|
2521
2523
|
"8.0.1-ubuntu-jdk17",
|
|
2522
|
-
"
|
|
2523
|
-
"
|
|
2524
|
-
"8.
|
|
2525
|
-
"8.5.
|
|
2526
|
-
"8.2
|
|
2527
|
-
"8.
|
|
2528
|
-
"8.
|
|
2529
|
-
"
|
|
2530
|
-
"8.
|
|
2531
|
-
"8.
|
|
2532
|
-
"8.
|
|
2524
|
+
"8.2.3-ubuntu-jdk11",
|
|
2525
|
+
"8.0-jdk17",
|
|
2526
|
+
"8.0.4-jdk17",
|
|
2527
|
+
"8.5.17-jdk11",
|
|
2528
|
+
"8.2",
|
|
2529
|
+
"8.2-jdk11",
|
|
2530
|
+
"8.3.4-ubuntu-jdk11",
|
|
2531
|
+
"8.7.2-ubi9",
|
|
2532
|
+
"8.7.2-ubi9-jdk17",
|
|
2533
|
+
"8.9.6-jdk17",
|
|
2534
|
+
"8.3-ubuntu-jdk11",
|
|
2535
|
+
"8.3-jdk11",
|
|
2536
|
+
"8.4.4-jdk11",
|
|
2537
|
+
"8.0-ubuntu-jdk17",
|
|
2538
|
+
"8.0.4-ubuntu-jdk17",
|
|
2539
|
+
"9.1.1-ubi9",
|
|
2540
|
+
"9.1.1-ubi9-jdk21",
|
|
2541
|
+
"8.3.4-jdk11",
|
|
2542
|
+
"ubi9-jdk21",
|
|
2543
|
+
"8.5.15-jdk17",
|
|
2544
|
+
"8.5.15-ubuntu-jdk17",
|
|
2545
|
+
"8.5.15",
|
|
2533
2546
|
"8.4.4-ubuntu-jdk11",
|
|
2547
|
+
"8.9.6-ubuntu-jdk17",
|
|
2534
2548
|
"8.5.0-ubuntu-jdk17",
|
|
2535
|
-
"8.
|
|
2536
|
-
"7.19.
|
|
2537
|
-
"8.
|
|
2549
|
+
"8.5.0",
|
|
2550
|
+
"7.19.23-jdk11",
|
|
2551
|
+
"8.5.7-ubuntu-jdk11",
|
|
2552
|
+
"ubi9",
|
|
2553
|
+
"8.1.1",
|
|
2554
|
+
"8.9.2-jdk11",
|
|
2555
|
+
"8.5.11-ubuntu-jdk11",
|
|
2538
2556
|
"8.5.5-jdk17",
|
|
2539
|
-
"8.4.0",
|
|
2540
|
-
"8.5.0-jdk17",
|
|
2541
2557
|
"8.5.5-ubuntu-jdk17",
|
|
2542
|
-
"8.
|
|
2543
|
-
"8.
|
|
2544
|
-
"8.
|
|
2558
|
+
"8.1.1-jdk11",
|
|
2559
|
+
"8.5.5",
|
|
2560
|
+
"8.1.1-ubuntu-jdk11",
|
|
2561
|
+
"8.0.1-jdk17",
|
|
2562
|
+
"8.5.0-jdk17",
|
|
2563
|
+
"7.19.23",
|
|
2564
|
+
"8.5.7-jdk11",
|
|
2565
|
+
"8.4.0",
|
|
2566
|
+
"8.9.2-ubuntu-jdk11",
|
|
2567
|
+
"8.0.0-ubuntu-jdk17",
|
|
2545
2568
|
"8.0.0-jdk17",
|
|
2569
|
+
"ubi9-jdk17",
|
|
2570
|
+
"8.2.1-jdk17",
|
|
2571
|
+
"9.1.1-ubi9-jdk17",
|
|
2572
|
+
"8.7.1-jdk11",
|
|
2573
|
+
"8.7.1-ubuntu-jdk11",
|
|
2574
|
+
"8.5.11-jdk11",
|
|
2575
|
+
"8.4.0-jdk17",
|
|
2546
2576
|
"7.19.8-ubuntu-jdk11",
|
|
2547
|
-
"8.
|
|
2548
|
-
"8.
|
|
2577
|
+
"8.0.0",
|
|
2578
|
+
"8.6.1-ubuntu-jdk17",
|
|
2579
|
+
"8.0.0-jdk11",
|
|
2580
|
+
"8.6.1-jdk17",
|
|
2581
|
+
"8.0.0-ubuntu-jdk11",
|
|
2549
2582
|
"8.4.0-ubuntu-jdk17",
|
|
2583
|
+
"8.1.1-jdk17",
|
|
2584
|
+
"7.19.12-ubuntu-jdk11",
|
|
2585
|
+
"8.2.1-ubuntu-jdk17",
|
|
2550
2586
|
"7.19.8-jdk11",
|
|
2551
|
-
"
|
|
2587
|
+
"7.19.12-jdk11",
|
|
2588
|
+
"8.0.2-jdk17",
|
|
2589
|
+
"8.6.0-ubi9",
|
|
2590
|
+
"7.19.18",
|
|
2552
2591
|
"8.1.1-ubuntu-jdk17",
|
|
2553
|
-
"
|
|
2554
|
-
"8.5.12-ubi9",
|
|
2555
|
-
"8.9.6-ubuntu-jdk17",
|
|
2556
|
-
"8.9.8-ubi9",
|
|
2557
|
-
"8.5.9-ubi9",
|
|
2558
|
-
"9.1.1-ubi9-jdk17",
|
|
2559
|
-
"8.9.6",
|
|
2560
|
-
"9.1.1-ubi9-jdk21",
|
|
2561
|
-
"9.1.1-ubi9",
|
|
2562
|
-
"8.7.1-ubi9",
|
|
2563
|
-
"8.9.6-jdk17",
|
|
2564
|
-
"8.9.0-ubi9",
|
|
2565
|
-
"ubi9-jdk21",
|
|
2592
|
+
"7.19.18-ubuntu-jdk11",
|
|
2566
2593
|
"8.9.5-ubi9",
|
|
2567
|
-
"8.
|
|
2568
|
-
"9.0.2-ubi9-jdk21",
|
|
2569
|
-
"8.7.2-ubi9",
|
|
2594
|
+
"8.6.1",
|
|
2570
2595
|
"8.9.5-ubi9-jdk17",
|
|
2571
|
-
"ubi9",
|
|
2572
|
-
"
|
|
2573
|
-
"
|
|
2574
|
-
"
|
|
2596
|
+
"8.6.0-ubi9-jdk17",
|
|
2597
|
+
"7.19.8",
|
|
2598
|
+
"7.19.18-jdk11",
|
|
2599
|
+
"7.19.12",
|
|
2600
|
+
"9.0.2-ubi9-jdk21",
|
|
2601
|
+
"8.0.2-ubuntu-jdk17",
|
|
2575
2602
|
"8.5.14-ubi9",
|
|
2576
2603
|
"8.5.14-ubi9-jdk17",
|
|
2577
|
-
"8.6
|
|
2578
|
-
"9.0.1-ubi9-jdk17",
|
|
2579
|
-
"8.9.1-ubi9-jdk17",
|
|
2580
|
-
"8.9.1-ubi9",
|
|
2604
|
+
"8.5.6-ubi9-jdk17",
|
|
2581
2605
|
"8.5.6-ubi9",
|
|
2582
|
-
"8.
|
|
2606
|
+
"8.9.1-ubi9",
|
|
2607
|
+
"8.9.1-ubi9-jdk17",
|
|
2608
|
+
"9.0.1-ubi9-jdk17",
|
|
2583
2609
|
"9.2.0-beta3-ubuntu-jdk17",
|
|
2584
2610
|
"9.2.0-beta3-jdk17",
|
|
2585
|
-
"eap-ubuntu-jdk17",
|
|
2586
|
-
"eap",
|
|
2587
2611
|
"9.2.0-beta3",
|
|
2588
|
-
"eap-jdk17",
|
|
2589
2612
|
"9.2.0-beta3-jdk21",
|
|
2590
2613
|
"9.2.0-beta3-ubuntu-jdk21",
|
|
2591
2614
|
"9.2.0-beta3-ubi9",
|
|
@@ -7395,6 +7418,10 @@ var bitbucket = [
|
|
|
7395
7418
|
];
|
|
7396
7419
|
var mysql = [
|
|
7397
7420
|
"latest",
|
|
7421
|
+
"8.0.40-debian",
|
|
7422
|
+
"8.0.40-bookworm",
|
|
7423
|
+
"8.0-debian",
|
|
7424
|
+
"8.0-bookworm",
|
|
7398
7425
|
"oraclelinux9",
|
|
7399
7426
|
"oracle",
|
|
7400
7427
|
"lts-oraclelinux9",
|
|
@@ -7427,10 +7454,6 @@ var mysql = [
|
|
|
7427
7454
|
"8-oraclelinux9",
|
|
7428
7455
|
"8-oracle",
|
|
7429
7456
|
"8",
|
|
7430
|
-
"8.0.40-debian",
|
|
7431
|
-
"8.0.40-bookworm",
|
|
7432
|
-
"8.0-debian",
|
|
7433
|
-
"8.0-bookworm",
|
|
7434
7457
|
"8.0.39-debian",
|
|
7435
7458
|
"8.0.39-bookworm",
|
|
7436
7459
|
"9.0.1-oraclelinux9",
|
|
@@ -7676,82 +7699,82 @@ var mysql = [
|
|
|
7676
7699
|
];
|
|
7677
7700
|
var postgresql = [
|
|
7678
7701
|
"latest",
|
|
7679
|
-
"
|
|
7680
|
-
"
|
|
7681
|
-
"
|
|
7682
|
-
"
|
|
7702
|
+
"bullseye",
|
|
7703
|
+
"bookworm",
|
|
7704
|
+
"17.2-bullseye",
|
|
7705
|
+
"17.2-bookworm",
|
|
7706
|
+
"17.2",
|
|
7707
|
+
"17-bullseye",
|
|
7708
|
+
"17-bookworm",
|
|
7709
|
+
"17",
|
|
7710
|
+
"16.6-bullseye",
|
|
7711
|
+
"16.6-bookworm",
|
|
7712
|
+
"16.6",
|
|
7713
|
+
"16-bullseye",
|
|
7714
|
+
"16-bookworm",
|
|
7715
|
+
"16",
|
|
7716
|
+
"15.10-bullseye",
|
|
7683
7717
|
"15.10-bookworm",
|
|
7684
7718
|
"15.10",
|
|
7719
|
+
"15-bullseye",
|
|
7685
7720
|
"15-bookworm",
|
|
7686
7721
|
"15",
|
|
7722
|
+
"14.15-bullseye",
|
|
7687
7723
|
"14.15-bookworm",
|
|
7688
|
-
"14.15-alpine3.20",
|
|
7689
|
-
"14.15-alpine",
|
|
7690
7724
|
"14.15",
|
|
7725
|
+
"14-bullseye",
|
|
7691
7726
|
"14-bookworm",
|
|
7692
|
-
"14-alpine3.20",
|
|
7693
|
-
"14-alpine",
|
|
7694
7727
|
"14",
|
|
7695
7728
|
"13.18-bullseye",
|
|
7696
7729
|
"13.18-bookworm",
|
|
7697
|
-
"13.18-alpine3.20",
|
|
7698
|
-
"13.18-alpine3.19",
|
|
7699
|
-
"13.18-alpine",
|
|
7700
7730
|
"13.18",
|
|
7701
7731
|
"13-bullseye",
|
|
7702
7732
|
"13-bookworm",
|
|
7733
|
+
"13",
|
|
7734
|
+
"12.22-bullseye",
|
|
7735
|
+
"12.22-bookworm",
|
|
7736
|
+
"12.22",
|
|
7737
|
+
"12-bullseye",
|
|
7738
|
+
"12-bookworm",
|
|
7739
|
+
"12",
|
|
7740
|
+
"14.15-alpine3.20",
|
|
7741
|
+
"14.15-alpine",
|
|
7742
|
+
"14-alpine3.20",
|
|
7743
|
+
"14-alpine",
|
|
7744
|
+
"13.18-alpine3.20",
|
|
7745
|
+
"13.18-alpine3.19",
|
|
7746
|
+
"13.18-alpine",
|
|
7703
7747
|
"13-alpine3.20",
|
|
7704
7748
|
"13-alpine3.19",
|
|
7705
7749
|
"13-alpine",
|
|
7706
|
-
"13",
|
|
7707
|
-
"12.22-bullseye",
|
|
7708
7750
|
"12.22-alpine3.20",
|
|
7709
7751
|
"12.22-alpine3.19",
|
|
7710
7752
|
"12.22-alpine",
|
|
7711
|
-
"12-bullseye",
|
|
7712
7753
|
"12-alpine3.20",
|
|
7713
7754
|
"12-alpine3.19",
|
|
7714
7755
|
"12-alpine",
|
|
7715
|
-
"bullseye",
|
|
7716
|
-
"bookworm",
|
|
7717
7756
|
"alpine3.20",
|
|
7718
7757
|
"alpine3.19",
|
|
7719
7758
|
"alpine",
|
|
7720
|
-
"17.2-bullseye",
|
|
7721
|
-
"17.2-bookworm",
|
|
7722
7759
|
"17.2-alpine3.20",
|
|
7723
7760
|
"17.2-alpine3.19",
|
|
7724
7761
|
"17.2-alpine",
|
|
7725
|
-
"17.2",
|
|
7726
|
-
"17-bullseye",
|
|
7727
|
-
"17-bookworm",
|
|
7728
7762
|
"17-alpine3.20",
|
|
7729
7763
|
"17-alpine3.19",
|
|
7730
7764
|
"17-alpine",
|
|
7731
|
-
"17",
|
|
7732
|
-
"16.6-bullseye",
|
|
7733
|
-
"16.6-bookworm",
|
|
7734
7765
|
"16.6-alpine3.20",
|
|
7735
7766
|
"16.6-alpine3.19",
|
|
7736
7767
|
"16.6-alpine",
|
|
7737
|
-
"16.6",
|
|
7738
|
-
"16-bullseye",
|
|
7739
|
-
"16-bookworm",
|
|
7740
7768
|
"16-alpine3.20",
|
|
7741
7769
|
"16-alpine3.19",
|
|
7742
7770
|
"16-alpine",
|
|
7743
|
-
"16",
|
|
7744
|
-
"15.10-bullseye",
|
|
7745
7771
|
"15.10-alpine3.20",
|
|
7746
7772
|
"15.10-alpine3.19",
|
|
7747
7773
|
"15.10-alpine",
|
|
7748
|
-
"15-bullseye",
|
|
7749
7774
|
"15-alpine3.20",
|
|
7750
7775
|
"15-alpine3.19",
|
|
7751
7776
|
"15-alpine",
|
|
7752
|
-
"14.15-bullseye",
|
|
7753
7777
|
"14.15-alpine3.19",
|
|
7754
|
-
"14-bullseye",
|
|
7755
7778
|
"14-alpine3.19",
|
|
7756
7779
|
"12.21-bookworm",
|
|
7757
7780
|
"12.21",
|
|
@@ -10192,4 +10215,4 @@ process.on('SIGINT', () => {
|
|
|
10192
10215
|
console.log(`Received term signal, trying to stop gracefully 💪`);
|
|
10193
10216
|
gracefulExit();
|
|
10194
10217
|
});
|
|
10195
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlcyI6WyIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0FjdGlvbkhhbmRsZXIuanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9EYXRhYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0FwcGxpY2F0aW9uLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9hbXBzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9saWNlbmNlcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGguanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL25ldHdvcmsuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9tc3NxbC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9teXNxbC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9wb3N0Z3Jlcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFpvZERlZmF1bHRzLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYmFtYm9vLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2JpdGJ1Y2tldC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9jb25mbHVlbmNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2ppcmEuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldEFwcGxpY2F0aW9uLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9ydW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDApO1xuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlcnIuaXNzdWVzLmZvckVhY2goaXNzdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgKz0gYFVuYWJsZSB0byBwYXJzZSBvcHRpb24gJHtpc3N1ZS5wYXRoLmpvaW4oJywnKX06ICR7aXNzdWUubWVzc2FnZX1cXG5gO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgfHwgdHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2gobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwcm9ncmFtLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZSxcbiAgICAgICAgICAgIC8vIHdlIGNhbiBhc3N1bWUgYSBjbGVhbiBleGl0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB2ZXJzaW9ucyBmcm9tICcuLi8uLi9hc3NldHMvdmVyc2lvbnMuanNvbic7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzID0gei5lbnVtKFtcbiAgICAncG9zdGdyZXNxbCcsXG4gICAgJ215c3FsJyxcbiAgICAnbXNzcWwnXG5dKTtcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zID0gei5lbnVtKFtcbiAgICAnRGV2ZWxvcGVyJyxcbiAgICAnRXhwcmVzcycsXG4gICAgJ1N0YW5kYXJkJyxcbiAgICAnRW50ZXJwcmlzZScsXG4gICAgJ0VudGVycHJpc2VDb3JlJ1xuXSk7XG5leHBvcnQgY29uc3QgRGF0YWJhc2VPcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSksXG4gICAgZGF0YWJhc2U6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICB2ZXJib3NlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKClcbn0pO1xuZXhwb3J0IGNvbnN0IFBvc3RncmVTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCg1NDMyKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpLmRlZmF1bHQoJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNeVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDMzMDYpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm15c3FsLmpkYmMuRHJpdmVyJykuZGVmYXVsdCgnY29tLm15c3FsLmpkYmMuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE1TU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZWRpdGlvbjogU3VwcG9ydGVkTVNTUUxFZGl0aW9ucy5kZWZhdWx0KCdEZXZlbG9wZXInKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgxNDMzKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnc2EnKS5kZWZhdWx0KCdzYScpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ0RhdGFDZW50ZXJEWCEnKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJykuZGVmYXVsdCgnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKVxufSk7XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4vRGF0YWJhc2UnO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyA9IHouZW51bShbXG4gICAgJ2ppcmEnLFxuICAgICdjb25mbHVlbmNlJyxcbiAgICAnYml0YnVja2V0JyxcbiAgICAnYmFtYm9vJ1xuXSk7XG5leHBvcnQgY29uc3QgQXBwbGljYXRpb25PcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyxcbiAgICB0YWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZGF0YWJhc2U6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5kZWZhdWx0KCdwb3N0Z3Jlc3FsJyksXG4gICAgZGF0YWJhc2VUYWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpLmRlZmF1bHQoJzgwJyksXG4gICAgY29udGV4dFBhdGg6IHouc3RyaW5nKCksXG4gICAgeG1zOiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgeG14OiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgd2F0Y2g6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGV4dDogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICBpbnN0YWxsOiB6LmJvb2xlYW4oKSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHouc3RyaW5nKCksXG4gICAgYWN0aXZhdGVQcm9maWxlczogei5zdHJpbmcoKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRlYnVnOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIGN3ZDogei5zdHJpbmcoKVxufSkucGFydGlhbCh7XG4gICAgY29udGV4dFBhdGg6IHRydWUsXG4gICAgZXh0OiB0cnVlLFxuICAgIGluc3RhbGw6IHRydWUsXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB0cnVlLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHRydWUsXG4gICAgY3dkOiB0cnVlXG59KTtcbiIsImltcG9ydCB7IERPTVBhcnNlciwgWE1MU2VyaWFsaXplciB9IGZyb20gJ0B4bWxkb20veG1sZG9tJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBYTUxQYXJzZXIgfSBmcm9tICdmYXN0LXhtbC1wYXJzZXInO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeHBhdGggZnJvbSAneHBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuZXhwb3J0IGNsYXNzIEFNUFMge1xuICAgIG9wdGlvbnM7XG4gICAgbWF2ZW4gPSBudWxsO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7XG4gICAgICAgIHByb2ZpbGVzOiBbXVxuICAgIH0pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMubWF2ZW4ua2lsbCgwKTtcbiAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIE1hdmVuIHByb2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBidWlsZChhcmdzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMubWF2ZW4ua2lsbCgwKTtcbiAgICAgICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIE1hdmVuIHByb2Nlc3MnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tYXZlbiA9IHNwYXduKCdtdm4nLCBbJ3BhY2thZ2UnLCAuLi5hcmdzXSwgeyBjd2Q6IHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgdGhpcy5tYXZlbi5vbignZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXZlbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDAgfHwgY29kZSA9PT0gMTMwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYE1hdmVuIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlzQXRsYXNzaWFuUGx1Z2luID0gKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3BhY2thZ2luZ1xcJ10nKTtcbiAgICAgICAgICAgIHJldHVybiBub2Rlcy5zb21lKGl0ZW0gPT4gaXRlbS50ZXh0Q29udGVudCA9PT0gJ2F0bGFzc2lhbi1wbHVnaW4nKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGdldEFwcGxpY2F0aW9uVmVyc2lvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbLCB2ZXJzaW9uXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0QXBwbGljYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgW25hbWVdID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0QXBwbGljYXRpb25zKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdncm91cElkXFwnIGFuZCB0ZXh0KCk9XFwnY29tLmF0bGFzc2lhbi5tYXZlbi5wbHVnaW5zXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoJ2FtcHMtbWF2ZW4tcGx1Z2luJyA9PT0gcGx1Z2luPy5hcnRpZmFjdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pZCkgfHwgdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0Lmluc3RhbmNlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcm9kdWN0IH0gPSBjb25maWd1cmF0aW9uPy5wcm9kdWN0cyB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pZCkgfHwgdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0Lmluc3RhbmNlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHBsdWdpbj8uYXJ0aWZhY3RJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24obm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24odmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmEpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbykpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldFZlcnNpb24obm9kZSkge1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0VmVyc2lvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwbHVnaW4uY29uZmlndXJhdGlvbi5wcm9kdWN0VmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSA/IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzWzBdIDogY29uZmlndXJhdGlvbi5wcm9kdWN0cy5wcm9kdWN0O1xuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0ICYmIHByb2R1Y3QudmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHZhbHVlKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwcm9maWxlLCByZXBsYWNlIHByb2ZpbGUgcHJvcGVydGllcyBmaXJzdCBhcyB0aGV5IHRha2UgcHJlY2VkZW5jZVxuICAgICAgICBjb25zdCBwcm9maWxlUHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9maWxlUHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VBbGwoYCRcXHske3Byb3BlcnR5S2V5fX1gLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VBbGwoYCRcXHske3Byb3BlcnR5S2V5fX1gLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGdldFByb3BlcnRpZXMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncHJvcGVydGllc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSB0aGlzLnRvT2JqZWN0KG5vZGUpO1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiByZXN1bHRba2V5XSA9IHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGdldE5vZGVzKGV4cHJlc3Npb24sIHNpbmdsZSkge1xuICAgICAgICBjb25zdCBwb21GaWxlUGF0aCA9IGpvaW4odGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksICcuL3BvbS54bWwnKTtcbiAgICAgICAgY29uc3QgaGFzUG9tRmlsZSA9IGV4aXN0c1N5bmMocG9tRmlsZVBhdGgpO1xuICAgICAgICBpZiAoaGFzUG9tRmlsZSkge1xuICAgICAgICAgICAgY29uc3QgeG1sID0gcmVhZEZpbGVTeW5jKHBvbUZpbGVQYXRoLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh4bWwsICd0ZXh0L3htbCcpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBzaW5nbGUgPyB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCB0cnVlKSA6IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHRvT2JqZWN0KG5vZGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBYTUxQYXJzZXIoKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2UobmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhub2RlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgbm9kZSkge1xuICAgICAgICBjb25zdCB7IHBhcmVudE5vZGUgfSA9IG5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIHBhcmVudE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkge1xuICAgICAgICBjb25zdCBwcm9maWxlUGFyZW50Tm9kZSA9IHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUoJ3Byb2ZpbGUnLCBub2RlKTtcbiAgICAgICAgY29uc3QgcHJvZmlsZU5vZGUgPSBwcm9maWxlUGFyZW50Tm9kZSA/IHRoaXMudG9PYmplY3QocHJvZmlsZVBhcmVudE5vZGUpIDogbnVsbDtcbiAgICAgICAgaWYgKCFwcm9maWxlTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvZmlsZU5vZGUgJiYgKHByb2ZpbGVOb2RlLmFjdGl2ZUJ5RGVmYXVsdCA9PT0gJ3RydWUnIHx8IHRoaXMub3B0aW9ucy5wcm9maWxlcy5pbmNsdWRlcyhwcm9maWxlTm9kZS5wcm9maWxlLmlkKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IHRpbWVib21iID0ge1xuICAgICdqaXJhJzogJ0FBQUNCQTBPREFvUGVOcDlrbDF2MmpBVWh1L3pLNDYwT3lRSFNMdVZJa1VhVGJ3TlZCS1VoRW5idWdzVER1QTJzU1BiZ2JGZlB4T0MxaSs0eUVYTzUrdm5QUit5R2lHU1cvQ3VvWGM3dkJvTXZUNEVOQU92NS9XY3RVSVVHMWxWcU54N25xUFFTSmZjY0NsOEdtVTBtU1hqbERwUlhTNVF4YXU1UnFWOTBuY0NLUXpMVGNSSzlFdTk0NElwL2NRL00xTXdyVGtUYmk1TFoxYXJmTU0waHN5ZzcvWDZBOUx2RTg5ejJqM1p2c0ptUUJCUHB6UUp4cVA3VTRyK3FiamFOMzJ6RysvYmFSMmRNbDZjMzVlaTJxSWFoLzRkdmFIa092enBrVS94NUlaOHZib2RPSTljTWJkU2Nsbm54ajM4RUMxWFpzY1V1bll5MzZKdlZJM094R1ptYlpYZHp3SVU1bFZKV2k5MHJualZRR29pNzBCODczR05oUE9RTzUxT0ZHZmtTNXlRV1JLSDh5QWJ4eEdacDlRbS9FQ2hwYkdFeFI3TUJxR2RBbFRrY29rSzdNTWVNVGZ3YTJOTTlURHNkdGZTZlFHbld4dzdDQjQ3ZnJzUVNoRFN3Skpyby9paU5tZ25jdzFHUWw1ckkwdHJ0ZXRZNHNLZ1lDSi9ZNHFWRlNSMGxOR1EzUDA0YUR4clRLdldPak1YVDBMdXhDVTMzdHhhU2lQZmZ1UmpyM2ZzTy9tQzZvZy9WbXNtdUdZTjBJajkzVEZZY1ZYdW5RYWFEYjQrd0piRmQ3dmcwT0k1SWY1M05FTnRvSzJBbFZRd0dTY2pTRnQ1bHJqZFd5bXU4V0VJZ1N3dHBweXpBc0xneFJrOFA1aEc5UE1BM2JLaVBzcGRzVUxqSlJ3WDd1a2Y1L05YN1RBdEFoVUFoUVNIejlEZ3ljT1g3d2N3RVJNSmIzVExHYjRDRkdrQi94VVdTUkszQlpMclBGOVJuNlptclVxSlgwMm9jJyxcbiAgICAnY29uZmx1ZW5jZSc6ICdBQUFDemcwT0RBb1BlTnA5Vk85djJqQVEvWjYvd3RLK0lZV0dzRUtIRkdtUW1KYXUvR2dJbTlpWUpoTU9ZcHJZa2UxQTRhK2ZTY2hHS3RxUFB2dmV2WHYzenAvNmdxTEhMRWIySGJLc1R2TnpwOWxDOThNQTJaYmROS1lnZGlBR250UERRMno2ODhIY2RIL2FNN1A1bzJrWlR6UUVKaUU0cERBaUNUZ0JuZ2FEMGIwUkNyNWYxUzl1SGZjVVdYU1FCenVJZVFyQ0NEbGIxMG1vNkE0Y0pUTFFTVmxJbHpGVWdncEk4aWNrTWJBVkViSSt5cElsaVBHNlI1SWw1ejRrWEVGM0EweEpwMUd5d2E4cEZRZVBLSEFtRGR0NitBOWNKVlFFSzV5V21oTVY4SEdaTFJXa3dyRjhQWk1ncEdQZkdoN0lVTkJVVWM2Y0FLUkNjVkVZcmJsQWFaeHRLRU9yc3FqOFYvVVM4NXp4WGQrZlVHd0Q3MGlja1J3eWY3QVJBQ3ppcVVZbys4SXJtdC9qVVlEOWlUK1lZbU5JS0ZQQUNBdXZ5SElhUUVVU0hZZ3owRzhyb3JnQzhycDVxdmFFWlZwM3B0MHU4c3ZlM1RpVENzU0lyMEE2bGxHcjFWd2Zkd1BzbWIyNVBqamJWd3EyRWNaY202blM2REtYK0kzaVQxeVAvQ3k0MlRCZTRGQUswV2haVnR1NmF6WWJaZVpsQjBVMndycG5rUW9xcTQwVXlzdDY3UnFCOXpVOGs2NG9sWWVxS25HbU5Deldpc2VPVW9Ld2hMTG9LMUV4a1pJU1ZnOTVjcjNaTi9ZcWR1ZVNZVzY0OS9tZHJmSkFaT1FNM2IzYjk2RFJ1aFZrMzI2MWtrRnZleHdlNDFVUXRKTjEydTVHejZHY1BUN1BuNzFINzB0NjlDUGNieC9hOXJjajNyRHV3bGs0eHByS0NBNVZOK29KanNhQjJSLzc1c1FmZXpNM0dJeEg1bXlLVDZQTi9RRXJ0RHdnRlFFNkU5VkRDTFVadE44RjMwS28wSzlJcVhUUnViblo4SHBGbFp0ekF5WVVHYi9yeU9PSWNZVldWQ3BCbDVrQ2pVd2xVaHlGMm1ZODBXYW9YeGR6RWhPV2UyWXNOb1JSV1d4TXQ2eFgvaEg2UDV1eEY4YjNyTEpJbHoxTHBRVzk1cFFQdnFmTHEwa213b2hJZUxzMmw5UE16ZlE0OEx2dldUYmZNWTFBWERnOUtKRExDVjJDOUhVTUgrQ2FKZk9mdWRpL3Ywa0lHVnN3TEFJVUVNUTlYNzdncUdCZGZIMEhJekJhVjhOYWRQVUNGQm4rUmlVQTREK0lxVlFwVFRvdUxWWTY2YUNHWDAyMTIxJyxcbiAgICAnYml0YnVja2V0JzogJ0FBQUJtZzBPREFvUGVOcDlVbDF2MHpBVWZjK3ZzTVJiSmFkSnRqR3BVaVMySkpST05PbGFCNFNBQjllOVcweFR1N0p2Q3YzM2VJbURPb1I0dmVmZTQvUGhONTloUjViY2tQaVdSTmV6S0o1RkNaa3ZHVW1pSkE0eXJaQUxMUGtCVXJIWG90RW51NWVCUlc2YjhLTVVvQ3l3OHhINkJWWnMyS0tjZTNUSnBVSlFYQWtvZmgybE9lY2NJVjFkZlJoSkM3ZlJYckp1d0p6QUxQTDAvcUYrcEk5WEdhUHordUdHc3B2YmtkUng4QXdjcjBuUmRPQ25sWG5tU2xxT1VxdjBEbHR1cmVUS2c2dk9pSVpiNko5UG92aWFSbTlwSEhzME05Q2YvUnYxRHYvU1A1bE15b3JSOTlXYXJ0WlZYbWRzVVpXMDNoUU9TSHRDRituMlRMQUI0aGxJb1lUZWdTRkhvMytBUVBLMVFUeCttMDJuenpya28rSlE2TU8wSFM0b0RCZmZRNUpyb2pTU25iUm81TFpEY016U0V0UkVkQmIxQVl3TlJ6c1hmZjBKZ2pDd0xqRy80bUI1Z2lFK0p6aGJGM2VzeU9uOWx4ZjFGMjE0NWE2T1d1MlYvcW1DLzJkVmRvY3RtT3FwdGs1UEdpZCtYSng0MnczTlBQSFdRdUQ5ZlhKYkw4UGt0ZkxoVTJBditOMnJZTVk2dVVFRnBuY1kvQVlDZ2ZGQU1Dd0NGSHprQmxrR0gvdlJkVGVlQlNmVU16VURiNFcyQWhReU04OTNXUGcyUThvUUFZUmRCU3lLZVZVZG9nPT1YMDJqcicsXG4gICAgJ2JhbWJvbyc6ICdBQUFCM3cwT0RBb1BlTnA5VWx0cjJ6QVlmZmV2RU93dG9NUjEwcVlMR0piWVdzbm83R0E3ZzkwZVpQbHJvdFdXakNTbnpYNzlGRjhJWVdrZkRQSjNPZWR3enZjaDJ6ZG9XU3ZrenBGN3Y1amRMcndwQ2tpYUljLzFQT2VSTXhBYXNtTU5FYTNBejJ4bkhUMDRnUUpxdUJRaE5lQjc3dlFHdXpQczNqazVyWElweDVRWmZnRGZxQWFHVXRSVU9hajRhZFgrUGtwR3krVU9oTkUrdm5HRzVsYURhZ3M5TDNtdHVUb09KRjVQa2phNVpvclhKd0VYSEcrcEpRZGFOdlMvY1l0TEF5c0JWRmZ1MTllaHZ4WFBRcjRJSndWMUFHVUxLekluZUJiKzhQQmQvR1dPSDZZZjc1MU5vOWllYXVqbGVZTUhLWWw4KytGYjEzVkdvMUVVWi9oem5PQk5Fb2ZiSUZ2SEVkNm14RGI4MWtRb1VINUVaZytvcDBkRU1GbUFRcldTZjRBWjlITnZUUDFyTVpuc3JMR21wRnB6S3NaTVZwT3kyOERRYmZ3ZW8xQWlJUTBxdURhSzU0MEJpOHcxTWhLeFJodFpXWHZIVGdobit6TFFCdlU0NkVsYTFyTFpjWUVLT0VBcGF6dnZmS1hjZWlTb1lHL2tjVFhoVFVsRkcrWFZiZ0tWTkhBK2dGN0JOOHQzVXVVNXNkcFJ3WFVYR25tbFZWMENDbVJWVTNHOEV2ZjVNS1V3OXZxSUZWMzZ0WDdtb05qZm83Q1BUeGZlblpJSkVyTE1TSWhYMzA5cHZEZDhTVWdLM3NtS01wSnNrblZLQnRyMjZ0NEQrZ2QzQUM1cU1Dd0NGSE9hVFdmRnZMQ0xKUGZ0M3FrdFZvM0ZhZm1aQWhSb2piOUlBeGo4S0VxUERReTBzdG9zMzk0U1FRPT1YMDJtcSdcbn07XG5leHBvcnQgY29uc3QgYXBwM2hvdXIgPSAnQUFBQkNBME9EQW9QZU5wZGowMVB3a0FVUmZmekt5WnhaMUl5VXpBUmtsbFEyNGdSYVFNdEduYVA4VkVtdGpQTmZGVDU5eUpWRnl6ZnVia243OTZVeDBCejZTbWJVTTVuYkR6ajk3UklTeG96SHBNVW5iU3E4OHBvVWFMenRGRVN0VU42TUpaMlRhaVZwdS9ZWTJNNnRJNnNRcnRIbXg4cWQ3NEVaK1RCSXZ5VVUvQW9ZczdqaUUwanprbldReE11aWZBMklCbFViblE3QXVsVmp3TjlBYVU5YXRBU3M2OU8yZE5GVTR3WEpMYzFhT1VHdzl3MzRKd0NUVFpvZTdSUHFVZ2VwMlgwVm0wbjBmTnV0NGdTeGwvSmNuajluRmI2UTV0UC9VZXUzTCswUEhXNGdoWkZtbTJ6WlY1azYvOTVDYlI3WTliWUdvL3pHclYzSXI0alJiRHlDQTZ2dDM0RE84cDNTREFzQWhRbkpqTEQ1azlGcjN1YUl6a1hLZjgzbzV2RGRRSVVlNFhlcXVOQ0MzRCs5aHQ5WlloTlpGS21uaGM9WDAyZGgnO1xuIiwiaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ3BhdGgnO1xuZXhwb3J0IGNvbnN0IHRvQWJzb2x1dGVQYXRoID0gKHJlbGF0aXZlUGF0aCkgPT4ge1xuICAgIGNvbnN0IFssIGZpbGVQYXRoXSA9IHByb2Nlc3MuYXJndjtcbiAgICBjb25zdCBleGVjdXRhYmxlRmlsZURpciA9IGRpcm5hbWUocmVhbHBhdGhTeW5jKGZpbGVQYXRoKSk7XG4gICAgY29uc3QgYmFzZWRpciA9IGV4ZWN1dGFibGVGaWxlRGlyLnN1YnN0cmluZygwLCBleGVjdXRhYmxlRmlsZURpci5pbmRleE9mKCdkY2R4JykgKyA0KTtcbiAgICByZXR1cm4gam9pbihiYXNlZGlyLCByZWxhdGl2ZVBhdGgucmVwbGFjZUFsbCgnLi4vJywgJycpKTtcbn07XG4iLCJleHBvcnQgY29uc3QgbmV0d29yayA9IHtcbiAgICBuYW1lOiAnc2hhcmVkJyxcbiAgICBkcml2ZXI6ICdicmlkZ2UnXG59O1xuIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkFjcXVpcmVUaW1lb3V0RXJyb3IsIENvbm5lY3Rpb25FcnJvciwgQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIFNlcXVlbGl6ZSwgVGltZW91dEVycm9yIH0gZnJvbSAnc2VxdWVsaXplJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuZXhwb3J0IGNsYXNzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgc2VxdWVsaXplO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgLy8gV2UgbmVlZCB0byB1c2UgJ21hc3RlcicgZm9yIG1zc3FsIGJlY2F1c2UgaXQgZG9lcyBub3QgaW5pdGlhbGl6ZSB0aGUgZGF0YWJhc2Ugb24gc3RhcnRcbiAgICAgICAgY29uc3QgZGF0YWJhc2UgPSB0aGlzLm9wdGlvbnMubmFtZSA9PT0gJ21zc3FsJyA/ICdtYXN0ZXInIDogdGhpcy5vcHRpb25zLmRhdGFiYXNlO1xuICAgICAgICB0aGlzLnNlcXVlbGl6ZSA9IG5ldyBTZXF1ZWxpemUoZGF0YWJhc2UsIHRoaXMub3B0aW9ucy51c2VybmFtZSwgdGhpcy5vcHRpb25zLnBhc3N3b3JkLCB7XG4gICAgICAgICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgICAgICAgIHBvcnQ6IHRoaXMub3B0aW9ucy5wb3J0LFxuICAgICAgICAgICAgZGlhbGVjdDogdGhpcy5vcHRpb25zLm5hbWUucmVwbGFjZSgncG9zdGdyZXNxbCcsICdwb3N0Z3JlcycpLFxuICAgICAgICAgICAgcmV0cnk6IHtcbiAgICAgICAgICAgICAgICBtYXg6IDMwLFxuICAgICAgICAgICAgICAgIG1hdGNoOiBbQ29ubmVjdGlvbkVycm9yLCBUaW1lb3V0RXJyb3IsIENvbm5lY3Rpb25UaW1lZE91dEVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvcl0sXG4gICAgICAgICAgICAgICAgYmFja29mZkJhc2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgYmFja29mZkV4cG9uZW50OiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nZ2luZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIGFzeW5jIHJ1bihzcWwsIGxvZ2dpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VxdWVsaXplLnF1ZXJ5KHNxbCwgeyBsb2dnaW5nIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBydW4gdGhlIGZvbGxvd2luZyBTUUwgcXVlcnk6Jywgc3FsLCBlcnIpO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN0YXJ0KGNsZWFuID0gdGhpcy5vcHRpb25zLmNsZWFuKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTdGFydGluZyBpbnN0YW5jZSBvZiAke3RoaXMub3B0aW9ucy5uYW1lfS4uLiDwn5KDYCk7XG4gICAgICAgIGlmIChjbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy51cCgpO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byB2ZXJpZnkgc3RhdHVzIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9IOKblGApO1xuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYERhdGFiYXNlIGlzIHJlYWR5IGFuZCBhY2NlcHRpbmcgY29ubmVjdGlvbnMgb24gbG9jYWxob3N0OiR7dGhpcy5vcHRpb25zLnBvcnR9IPCfl4TvuI9gKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5vbkRhdGFiYXNlUmVhZHkoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNob3dEb2NrZXJMb2dzKHNlcnZpY2UubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN0b3AocHJ1bmUgPSB0aGlzLm9wdGlvbnMucHJ1bmUpIHtcbiAgICAgICAgaWYgKHBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkgeyB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgICdkYic6IHRoaXMuZ2V0U2VydmljZSgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzogbmV0d29ya1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyB1cCgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgcmV0dXJuIHVwQWxsKHtcbiAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZG93bigpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgcmV0dXJuIGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLXYnLCAnLS1yZW1vdmUtb3JwaGFucycsICctLXJtaScsICdsb2NhbCddLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyB3YWl0VW50aWxSZWFkeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VxdWVsaXplLmF1dGhlbnRpY2F0ZSgpLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIH1cbiAgICBhc3luYyBnZXRTZXJ2aWNlU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBzKHtcbiAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy0tYWxsJ10sXG4gICAgICAgICAgICBsb2c6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEuc2VydmljZXMuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gaXRlbS5uYW1lLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICByZXR1cm4gc2VydmljZSA9PT0gdGhpcy5vcHRpb25zLm5hbWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzaG93RG9ja2VyTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydsb2dzJywgJy1mJywgJy1uJywgJzUwMDAnLCBzZXJ2aWNlXSwgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBNU1NRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNU1NRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOnNxbHNlcnZlcjovL2RiOiR7dGhpcy5vcHRpb25zLnBvcnR9O2RhdGFiYXNlTmFtZT0ke3RoaXMub3B0aW9ucy5kYXRhYmFzZX07dHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZT10cnVlYDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IE1TU1FMT3B0aW9ucy5wYXJzZSh7fSkpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGFzeW5jIG9uRGF0YWJhc2VSZWFkeSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYENSRUFURSBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX1gKTtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYEFMVEVSIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfSBDT0xMQVRFIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDFfQ1NfQVNgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYEFMVEVSIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfSBTRVQgUkVBRF9DT01NSVRURURfU05BUFNIT1QgT04gV0lUSCBST0xMQkFDSyBJTU1FRElBVEU7YCk7XG4gICAgfVxuICAgIGdldFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogYG1jci5taWNyb3NvZnQuY29tL21zc3FsL3NlcnZlcjoke3RoaXMub3B0aW9ucy50YWd9YCxcbiAgICAgICAgICAgIHBvcnRzOiBbYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgMTQzM306MTQzM2BdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBBQ0NFUFRfRVVMQTogJ3knLFxuICAgICAgICAgICAgICAgIE1TU1FMX1NBX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1TU1FMX1BJRDogdGhpcy5vcHRpb25zLmVkaXRpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnZGInLCAnZGF0YWJhc2UnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTXlTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgTXlTUUwgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpteXNxbDovL2RiOiR7dGhpcy5vcHRpb25zLnBvcnR9LyR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfT9zZXNzaW9uVmFyaWFibGVzPXRyYW5zYWN0aW9uX2lzb2xhdGlvbj0nUkVBRC1DT01NSVRURUQnYDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IE15U1FMT3B0aW9ucy5wYXJzZSh7fSkpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGFzeW5jIG9uRGF0YWJhc2VSZWFkeSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYEFMVEVSIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfSBDSEFSQUNURVIgU0VUICd1dGY4bWI0JyBDT0xMQVRFIHV0ZjhtYjRfYmluYCk7XG4gICAgfVxuICAgIGdldFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogYG15c3FsOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAzMzA2fTozMzA2YF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIE1ZU1FMX1JPT1RfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVlTUUxfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9EQVRBQkFTRTogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IFsnLS1sb2dfYmluX3RydXN0X2Z1bmN0aW9uX2NyZWF0b3JzPTEnXSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBQb3N0Z3JlU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIFBvc3RncmVzIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6cG9zdGdyZXNxbDovL2RiOiR7dGhpcy5vcHRpb25zLnBvcnR9LyR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWA7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBQb3N0Z3JlU1FMT3B0aW9ucy5wYXJzZSh7fSkpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogYHBvc3RncmVzOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA1NDMyfTo1NDMyYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIFBPU1RHUkVTX1VTRVI6IHRoaXMub3B0aW9ucy51c2VybmFtZSB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfREI6IHRoaXMub3B0aW9ucy5kYXRhYmFzZSB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfSE9TVF9BVVRIX01FVEhPRDogJ21kNScsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfSU5JVERCX0FSR1M6ICctLWVuY29kaW5nPVVURi04IC0tbGMtY29sbGF0ZT1DIC0tbGMtY3R5cGU9QydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnZGInLCAnZGF0YWJhc2UnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTVNTUUwgfSBmcm9tICcuLi9kYXRhYmFzZXMvbXNzcWwnO1xuaW1wb3J0IHsgTXlTUUwgfSBmcm9tICcuLi9kYXRhYmFzZXMvbXlzcWwnO1xuaW1wb3J0IHsgUG9zdGdyZXMgfSBmcm9tICcuLi9kYXRhYmFzZXMvcG9zdGdyZXMnO1xuaW1wb3J0IHsgTVNTUUxPcHRpb25zLCBNeVNRTE9wdGlvbnMsIFBvc3RncmVTUUxPcHRpb25zLCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgZ2V0RGF0YWJhc2VFbmdpbmUgPSAob3B0aW9ucywgdGFnKSA9PiB7XG4gICAgc3dpdGNoIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IFBvc3RncmVzKFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBNeVNRTChNeVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1TU1FMKE1TU1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgfVxufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IGdldFpvZERlZmF1bHQgPSAoc2NoZW1hLCBrZXkpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGdldFpvZERlZmF1bHRzKHNjaGVtYSk7XG4gICAgcmV0dXJuIGRlZmF1bHRzW2tleV07XG59O1xuLy8gQ29kZSBzbmlwcGV0IGJ5IEphY29iIFdlaXNlbmJ1cmdlciAoaHR0cHM6Ly9naXRodWIuY29tL0phY29iV2Vpc2VuYnVyZ2VyKVxuLy8gVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QvZGlzY3Vzc2lvbnMvMTk1MyNkaXNjdXNzaW9uY29tbWVudC00ODExNTg4XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdHMgPSAoc2NoZW1hKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzY2hlbWEuc2hhcGUpLmZpbHRlcigoWywgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdmFsdWUuX2RlZi5kZWZhdWx0VmFsdWUoKTtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIGRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoW2tleSwgdmFsdWUuX2RlZi5kZWZhdWx0VmFsdWUoKV0pKSk7XG59O1xuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBkb3duQWxsLCBsb2dzLCBwcywgc3RvcCwgdXBBbGwgfSBmcm9tICdkb2NrZXItY29tcG9zZS9kaXN0L3YyLmpzJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkdW1wIH0gZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgYXJjaCwgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgc2ltcGxlR2l0IGZyb20gJ3NpbXBsZS1naXQnO1xuaW1wb3J0IHsgZ2V0RGF0YWJhc2VFbmdpbmUgfSBmcm9tICcuLi9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lJztcbmltcG9ydCB7IGdldFpvZERlZmF1bHRzIH0gZnJvbSAnLi4vaGVscGVycy9nZXRab2REZWZhdWx0cyc7XG5pbXBvcnQgeyBuZXR3b3JrIH0gZnJvbSAnLi4vaGVscGVycy9uZXR3b3JrJztcbmltcG9ydCB7IERhdGFiYXNlT3B0aW9ucywgTVNTUUxPcHRpb25zLCBNeVNRTE9wdGlvbnMsIFBvc3RncmVTUUxPcHRpb25zLCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBiYXNlZGlyID0gam9pbihob21lZGlyKCksICcuZGNkeCcpO1xuZXhwb3J0IGNsYXNzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZGF0YWJhc2U7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmRhdGFiYXNlID0gdGhpcy5nZXREYXRhYmFzZUVuZ2luZShvcHRpb25zLmRhdGFiYXNlLCBvcHRpb25zLmRhdGFiYXNlVGFnKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3BlcnRpZXNcbiAgICBnZXQgYmFzZVVybCgpIHtcbiAgICAgICAgbGV0IGJhc2VVcmwgPSBgaHR0cDovL2xvY2FsaG9zdGA7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9ydCkge1xuICAgICAgICAgICAgYmFzZVVybCArPSBgOiR7dGhpcy5vcHRpb25zLnBvcnR9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8gYCR7YmFzZVVybH0vJHt0aGlzLm9wdGlvbnMuY29udGV4dFBhdGh9YCA6IGJhc2VVcmw7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIGFzeW5jIHN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0J1aWRSZXF1aXJlZCgpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmJ1aWxkKHRoaXMub3B0aW9ucy50YWcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RhcnQodGhpcy5vcHRpb25zLmNsZWFuKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cCgpO1xuICAgIH1cbiAgICBhc3luYyBzdG9wKCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlLnN0b3AodGhpcy5vcHRpb25zLnBydW5lKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICAgICAgYXdhaXQgc3RvcCh7XG4gICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgcmVzZXQoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0cnVlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBbXTtcbiAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRHVwbS5wbHVnaW4udXBsb2FkLmVuYWJsZWQ9dHJ1ZScpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EamlyYS5kZXYubW9kZT10cnVlJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EYXRsYXNzaWFuLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndhdGNoKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EcXVpY2tyZWxvYWQuZGlycz0vb3B0L3F1aWNrcmVsb2FkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIGFzeW5jIGlzQXBwbGljYXRpb25SZWFkeSgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGAke3RoaXMuYmFzZVVybH0vc3RhdHVzYCwgeyB2YWxpZGF0ZVN0YXR1czogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0ZSA9PT0gJ0ZJUlNUX1JVTicgfHwgZGF0YS5zdGF0ZSA9PT0gJ1JVTk5JTkcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgVGhlIGFwcGxpY2F0aW9uICR7dGhpcy5uYW1lfSBpcyByZWFkeSBvbiAke3RoaXMuYmFzZVVybH0g8J+OiWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldERhdGFiYXNlRW5naW5lKG5hbWUsIHRhZykge1xuICAgICAgICByZXR1cm4gZ2V0RGF0YWJhc2VFbmdpbmUoRGF0YWJhc2VPcHRpb25zLnBhcnNlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdE9wdGlvbnMobmFtZSksXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkXG4gICAgICAgIH0pLCB0YWcpO1xuICAgIH1cbiAgICBnZXREb2NrZXJCYXNlVGFnKCkge1xuICAgICAgICBpZiAodGhpcy5pc0J1aWRSZXF1aXJlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gYGRjZHgvJHt0aGlzLm5hbWV9OiR7dGhpcy5vcHRpb25zLnRhZ31gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2ppcmEnKSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi9qaXJhLXNvZnR3YXJlOiR7dGhpcy5vcHRpb25zLnRhZ31gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBhdGxhc3NpYW4vJHt0aGlzLm5hbWV9OiR7dGhpcy5vcHRpb25zLnRhZ31gO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXREb2NrZXJDb21wb3NlQ29uZmlnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VydmljZXM6IHtcbiAgICAgICAgICAgICAgICBbdGhpcy5uYW1lXTogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKTtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKGNvbmZpZyk7XG4gICAgICAgIGF3YWl0IHVwQWxsKHtcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGUgPSBhd2FpdCB0aGlzLndhaXRVbnRpbFJlYWR5KCk7XG4gICAgICAgIGlmICghaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGlmICghaXNSdW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBzdGFydCAke3RoaXMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgbG9ncyhPYmplY3Qua2V5cyhjb25maWcuc2VydmljZXMpLCB7XG4gICAgICAgICAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvdWxkIG5vdCBjb25maXJtIHN0YXRlIG9mICR7dGhpcy5uYW1lfSwgYnV0IHRoZSBjb250YWluZXIgaXMgcnVubmluZy4gUGxlYXNlIGNvbnN1bHQgdGhlIGFwcGxpY2F0aW9uIGxvZ3Mg8J+Rh2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudGFpbEFwcGxpY2F0aW9uTG9ncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgYXJlIGV4aXRpbmcgd2l0aCBhbiBlcnJvciBjb2RlXG4gICAgICAgIC8vIFRoaXMgaXMgdG8gdHJpZ2dlciBhIGdyYWNlZnVsIHNodXQgZG93biBvZiB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICBhd2FpdCBkb3duQWxsKHtcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLXYnLCAnLS1yZW1vdmUtb3JwaGFucycsICctLXJtaScsICdsb2NhbCddLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBnZXRTZXJ2aWNlU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBzKHtcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm5hbWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyB3YWl0VW50aWxSZWFkeShjb3VudCA9IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYFdhaXRpbmcgZm9yICR7dGhpcy5uYW1lfSB0byBiZWNvbWUgYXZhaWxhYmxlLi4uICR7Y291bnR9c2ApO1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzUnVubmluZyA9IHNlcnZpY2UgJiYgc2VydmljZS5zdGF0ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3VwJyk7XG4gICAgICAgICAgICBjb25zdCBpc1JlYWR5ID0gaXNSdW5uaW5nICYmIGF3YWl0IHRoaXMuaXNBcHBsaWNhdGlvblJlYWR5KCk7XG4gICAgICAgICAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPj0gMTIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhaXRVbnRpbFJlYWR5KGNvdW50ICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY291bnQgPCAxMCkge1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhaXRVbnRpbFJlYWR5KGNvdW50ICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXNCdWlkUmVxdWlyZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGFnLnRvTG93ZXJDYXNlKCkgPT09ICdsYXRlc3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyY2ggPT09ICdhcm0nIHx8IGFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLm9wdGlvbnMudGFnLmluY2x1ZGVzKCctJylcbiAgICAgICAgICAgICAgICA/IHRoaXMub3B0aW9ucy50YWcuc2xpY2UoMCwgdGhpcy5vcHRpb25zLnRhZy5pbmRleE9mKCctJykpXG4gICAgICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMudGFnO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZW1WZXJWZXJzaW9uID0gc2VtdmVyLmNvZXJjZSh2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VtVmVyVmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09PSAnamlyYScgfHwgdGhpcy5uYW1lID09PSAnYmFtYm9vJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbXZlci5sdChzZW1WZXJWZXJzaW9uLCAnOS4wLjAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT09ICdjb25mbHVlbmNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbXZlci5sdChzZW1WZXJWZXJzaW9uLCAnOC4wLjAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT09ICdiaXRidWNrZXQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjIuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhc3luYyBidWlsZCh2ZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSB0aGlzLmdldERvY2tlclJlcG9zaXRvcnlVcmwoKTtcbiAgICAgICAgY29uc3QgY2hlY2tvdXRQYXRoID0gam9pbihiYXNlZGlyLCB0aGlzLm5hbWUsICdzb3VyY2UnKTtcbiAgICAgICAgaWYgKCFleGlzdHNTeW5jKGNoZWNrb3V0UGF0aCkpIHtcbiAgICAgICAgICAgIG1rZGlyU3luYyhqb2luKGJhc2VkaXIsIHRoaXMubmFtZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KCkuY2xvbmUocmVwb3NpdG9yeVVybCwgY2hlY2tvdXRQYXRoLCB7ICctLXJlY3Vyc2Utc3VibW9kdWxlJzogbnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHNpbXBsZUdpdCh7IGJhc2VEaXI6IGNoZWNrb3V0UGF0aCB9KS5wdWxsKHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2J1aWxkJywgJy10JywgYGRjZHgvJHt0aGlzLm5hbWV9OiR7dmVyc2lvbn1gLCAnLS1idWlsZC1hcmcnLCBgJHt0aGlzLm5hbWUudG9VcHBlckNhc2UoKX1fVkVSU0lPTj0ke3ZlcnNpb259YCwgJy4nXSwgeyBjd2Q6IGNoZWNrb3V0UGF0aCwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERvY2tlclJlcG9zaXRvcnlVcmwoKSB7XG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMubmFtZSA9PT0gJ2ppcmEnXG4gICAgICAgICAgICA/ICdhdGxhc3NpYW4tamlyYSdcbiAgICAgICAgICAgIDogdGhpcy5uYW1lID09PSAnYmFtYm9vJ1xuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5uYW1lfS1zZXJ2ZXJgXG4gICAgICAgICAgICAgICAgOiBgYXRsYXNzaWFuLSR7dGhpcy5uYW1lfS1zZXJ2ZXJgO1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vYml0YnVja2V0Lm9yZy9hdGxhc3NpYW4tZG9ja2VyL2RvY2tlci0ke3N1ZmZpeH0uZ2l0YDtcbiAgICB9XG4gICAgYXN5bmMgdGFpbEFwcGxpY2F0aW9uTG9ncygpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGlzUnVubmluZyA9IHNlcnZpY2UgJiYgc2VydmljZS5zdGF0ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3VwJyk7XG4gICAgICAgIGlmIChpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlLm5hbWUpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHNob3dBcHBsaWNhdGlvbkxvZ3Moc2VydmljZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnZXhlYycsICctaScsIHNlcnZpY2UsIGB0YWlsYCwgYC1GYCwgYC1uYCwgYDUwMDBgLCB0aGlzLmxvZ0ZpbGVQYXRoXSwgeyBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXREZWZhdWx0T3B0aW9ucyhuYW1lKSB7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFpvZERlZmF1bHRzKFBvc3RncmVTUUxPcHRpb25zKTtcbiAgICAgICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoTXlTUUxPcHRpb25zKTtcbiAgICAgICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoTVNTUUxPcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJhbWJvbyBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbztcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvby9sb2dzL2F0bGFzc2lhbi1iYW1ib28ubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC9vcHQvYXRsYXNzaWFuL2JhbWJvby9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3NoYXJlZC9wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvby9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYmFtYm9vOmJhbWJvbyAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgYmFtYm9vOmJhbWJvbyAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvb2BcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0IHx8IDgwfTo4MDg1YCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLWFnZW50bGliOmpkd3A9dHJhbnNwb3J0PWR0X3NvY2tldCxzZXJ2ZXI9eSxzdXNwZW5kPW4sYWRkcmVzcz01MDA1Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIGFzeW5jIGlzQXBwbGljYXRpb25SZWFkeSgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGAke3RoaXMuYmFzZVVybH0vc2V0dXAvc2V0dXBHZW5lcmFsQ29uZmlndXJhdGlvbi5hY3Rpb25gLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0JBTUJPT19FTkFCTEVfVU5BVFRFTkRFRF9TRVRVUCc6ICd0cnVlJyxcbiAgICAgICAgICAgICdBVExfTElDRU5TRSc6IHRpbWVib21iLmJhbWJvbyxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogYCR7dGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWV9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBCaXRidWNrZXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbG9nL2F0bGFzc2lhbi1iaXRidWNrZXQubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGJpdGJ1Y2tldDpiaXRidWNrZXQgL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIG1rZGlyIC1wIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZDsgXFxcbiAgICB0b3VjaCAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7IFxcXG4gICAgZWNobyBcInNldHVwLmxpY2Vuc2U9JHt0aW1lYm9tYi5iaXRidWNrZXR9XCIgPj4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkL2JpdGJ1Y2tldC5wcm9wZXJ0aWVzO1xuXG5SVU4gY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldGBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0IHx8IDgwfTo3OTkwYCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLWFnZW50bGliOmpkd3A9dHJhbnNwb3J0PWR0X3NvY2tldCxzZXJ2ZXI9eSxzdXNwZW5kPW4sYWRkcmVzcz01MDA1Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnSkRCQ19EUklWRVInOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQ29uZmx1ZW5jZSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9jb25mbHVlbmNlL2xvZ3MvYXRsYXNzaWFuLWNvbmZsdWVuY2UubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2UvY29uZmx1ZW5jZS9XRUItSU5GL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvYXRsYXNzaWFuLWJ1bmRsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9jb25mbHVlbmNlL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBjb25mbHVlbmNlOmNvbmZsdWVuY2UgL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwOTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWHJ1bmpkd3A6dHJhbnNwb3J0PWR0X3NvY2tldCxhZGRyZXNzPSo6NTAwNSxzZXJ2ZXI9eSxzdXNwZW5kPW4nKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnBvcnQ9OTk5OScpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucm1pLnBvcnQ9OTk5OCcpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUuYXV0aGVudGljYXRlPWZhbHNlJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5zc2w9ZmFsc2UnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfTElDRU5TRV9LRVknOiB0aW1lYm9tYi5jb25mbHVlbmNlLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEppcmEgZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9sb2cvYXRsYXNzaWFuLWppcmEubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vamlyYS1kYXRhLWdlbmVyYXRvci01LjAuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvamlyYS1kYXRhLWdlbmVyYXRvci01LjAuMC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vamlyYS9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9wbHVnaW5zL2luc3RhbGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGppcmE6amlyYSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgamlyYTpqaXJhIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0fTo4MDgwYCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLWFnZW50bGliOmpkd3A9dHJhbnNwb3J0PWR0X3NvY2tldCxzZXJ2ZXI9eSxzdXNwZW5kPW4sYWRkcmVzcz0qOjUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICAvLyBGb3Igc29tZSByZWFzb24sIEppcmEgdXNlcyBhIGRpZmZlcmVudCB0eXBlIGZvciBwb3N0Z3Jlc1xuICAgICAgICBjb25zdCBkYlR5cGUgPSB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZSA9PT0gJ3Bvc3RncmVzcWwnID8gJ3Bvc3RncmVzNzInIDogdGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfRFJJVkVSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLmRyaXZlcixcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGRiVHlwZSxcbiAgICAgICAgICAgICdKSVJBX1NFVFVQX0xJQ0VOU0UnOiB0aW1lYm9tYi5qaXJhXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IEJhbWJvbyB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9iYW1ib28nO1xuaW1wb3J0IHsgQml0YnVja2V0IH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JpdGJ1Y2tldCc7XG5pbXBvcnQgeyBDb25mbHVlbmNlIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2NvbmZsdWVuY2UnO1xuaW1wb3J0IHsgSmlyYSB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9qaXJhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uT3B0aW9ucywgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuZXhwb3J0IGNvbnN0IGdldEFwcGxpY2F0aW9uID0gKG9wdGlvbnMpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTogcmV0dXJuIG5ldyBKaXJhKEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlOiByZXR1cm4gbmV3IENvbmZsdWVuY2UoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbzogcmV0dXJuIG5ldyBCYW1ib28oQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDogcmV0dXJuIG5ldyBCaXRidWNrZXQoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB2aXNpYmxlT3B0aW9uczogKGNtZCkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGNtZC5vcHRpb25zO1xuICAgICAgICBpZiAoIWNtZC5wYXJlbnQgJiYgb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kTmFtZSA9IGNtZC5fZGVmYXVsdENvbW1hbmROYW1lO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kID0gY21kLmNvbW1hbmRzLmZpbmQoaXRlbSA9PiBpdGVtLl9uYW1lID09PSBkZWZhdWx0Q29tbWFuZE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Q29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdENvbW1hbmQub3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ob3B0aW9ucyk7XG4gICAgfVxufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2hlbHBlcnMvQWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi4vaGVscGVycy9hbXBzJztcbmltcG9ydCB7IGdldEFwcGxpY2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9nZXRBcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXM6IG9wdGlvbnMuYWN0aXZhdGVQcm9maWxlcz8uc3BsaXQoJywnKSB8fCBbXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignSW52YWxpZCBhcmd1bWVudCBcIi0tYWN0aXZhdGUtcHJvZmlsZXNcIicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5jd2QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IFwiLS1jd2RcIicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgYW4gQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSDwn6SUJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGV0ZWN0IHByb2R1Y3Qg8J+YsCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMudGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRldGVybWluZSB2ZXJzaW9uIGZyb20gQU1QUyBhbmQgbm8gcHJvZHVjdCB2ZXJzaW9uIHByb3ZpZGVkICgtLXRhZyknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudGFnID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb25zW29wdGlvbnMubmFtZV0uaW5jbHVkZXMob3B0aW9ucy50YWcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvZHVjdCB2ZXJzaW9uICcke29wdGlvbnMudGFnfScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW29wdGlvbnMubmFtZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluc3RhbmNlID0gZ2V0QXBwbGljYXRpb24ob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nICR7aW5zdGFuY2UubmFtZX0uLi4g8J+Sg2ApO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnN0YXJ0KCkudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwaW5nICR7aW5zdGFuY2UubmFtZX0uLi4g8J+SlGApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGluc3RhbmNlLnN0b3AoKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBlZCAke2luc3RhbmNlLm5hbWV9IPCfkqpgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IHJ1bicpXG4gICAgLmRlc2NyaXB0aW9uKGBSdW4gdGhlIGhvc3QgYXBwbGljYXRpb24gYmFzZWQgb24gdGhlIEF0bGFzc2lhbiBNYXZlbiBQbHVnaW4gU3VpdGUgKEFNUFMpIGNvbmZpZ3VyYXRpb24uXG5JZiB5b3Ugd2lzaCB0byBydW4gYSBzcGVjaWZpYyBob3N0IGFwcGxpY2F0aW9uLCBjYWxsIHRoaXMgY29tbWFuZCB3aXRoICdkY2R4IHJ1biA8bmFtZT4nYClcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyQWxsJywgJ+KAiycpIC8vIHRoZXJlIGlzIGEgbm9uLXplcm8gd2hpdGUgc3BhY2UgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdG8gaGF2ZSB0aGlzIGlzIHRvIGZvcmNlIGEgbGluZSBicmVha1xuICAgIC5jb25maWd1cmVIZWxwKHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKGZhbHNlKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cyhmYWxzZSlcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdmcm9tQU1QUycsIHsgaXNEZWZhdWx0OiB0cnVlLCBoaWRkZW46IHRydWUgfSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgSFRUUCBwb3J0IG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgYmUgYWNjZXNzaWJsZScpLmRlZmF1bHQoJzgwJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb250ZXh0UGF0aCA8Y29udGV4dFBhdGg+JywgJ1RoZSBjb250ZXh0IHBhdGggb24gd2hpY2ggdGhlIGhvc3QgYXBwbGljYXRpb24gd2lsbCBiZSBhY2Nlc3NpYmxlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXMgPHZhbHVlPicsICdKVk0gbWluaW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXggPHZhbHVlPicsICdKVk0gbWF4aW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCB0aGUgQU1QUyBjb25maWd1cmF0aW9uJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWNsZWFuJywgJ1JlbW92ZSBkYXRhIGZpbGVzIGJlZm9yZSBzdGFydGluZyB0aGUgaG9zdCBhcHBsaWNhdGlvbicpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wcnVuZScsICdSZW1vdmUgZGF0YSBmaWxlcyB3aGVuIHN0b3BwaW5nIHRoZSBob3N0IGFwcGxpY2F0aW9uJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRlYnVnJywgJ0FkZCBzdXBwb3J0IGZvciBKVk0gZGVidWdnZXIgb24gcG9ydCA1MDA1JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCBvcHRpb25zKSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhKVxuICAgIC5kZXNjcmlwdGlvbignU3RhcnQgQXRsYXNzaWFuIEppcmEgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEppcmEnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgb24gd2hpY2ggdGhlIEF0bGFzc2lhbiBKaXJhIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgSFRUUCBwb3J0IG9uIHdoaWNoIEF0bGFzc2lhbiBKaXJhIHdpbGwgYmUgYWNjZXNzaWJsZScpLmRlZmF1bHQoJzgwJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb250ZXh0UGF0aCA8Y29udGV4dFBhdGg+JywgJ1RoZSBjb250ZXh0IHBhdGggb24gd2hpY2ggQXRsYXNzaWFuIEppcmEgd2lsbCBiZSBhY2Nlc3NpYmxlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhtcyA8dmFsdWU+JywgJ0pWTSBtaW5pbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhteCA8dmFsdWU+JywgJ0pWTSBtYXhpbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY2xlYW4nLCAnUmVtb3ZlIGRhdGEgZmlsZXMgYmVmb3JlIHN0YXJ0aW5nIEF0bGFzc2lhbiBKaXJhJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBydW5lJywgJ1JlbW92ZSBkYXRhIGZpbGVzIHdoZW4gc3RvcHBpbmcgQXRsYXNzaWFuIEppcmEnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZGVidWcnLCAnQWRkIHN1cHBvcnQgZm9yIEpWTSBkZWJ1Z2dlciBvbiBwb3J0IDUwMDUnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZChTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UpXG4gICAgLmRlc2NyaXB0aW9uKCdTdGFydCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDxuYW1lPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQ29uZmx1ZW5jZScpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSBvbiB3aGljaCB0aGUgQXRsYXNzaWFuIENvbmZsdWVuY2Ugd2lsbCBydW4nKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1RoZSBIVFRQIHBvcnQgb24gd2hpY2ggQXRsYXNzaWFuIENvbmZsdWVuY2Ugd2lsbCBiZSBhY2Nlc3NpYmxlJykuZGVmYXVsdCgnODAnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1jLCAtLWNvbnRleHRQYXRoIDxjb250ZXh0UGF0aD4nLCAnVGhlIGNvbnRleHQgcGF0aCBvbiB3aGljaCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSB3aWxsIGJlIGFjY2Vzc2libGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0teG1zIDx2YWx1ZT4nLCAnSlZNIG1pbmltdW0gaGVhcCBzaXplJykuZGVmYXVsdCgnMTAyNG0nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0teG14IDx2YWx1ZT4nLCAnSlZNIG1heGltdW0gaGVhcCBzaXplJykuZGVmYXVsdCgnMTAyNG0nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jbGVhbicsICdSZW1vdmUgZGF0YSBmaWxlcyBiZWZvcmUgc3RhcnRpbmcgQXRsYXNzaWFuIENvbmZsdWVuY2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJ1bmUnLCAnUmVtb3ZlIGRhdGEgZmlsZXMgd2hlbiBzdG9wcGluZyBBdGxhc3NpYW4gQ29uZmx1ZW5jZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kZWJ1ZycsICdBZGQgc3VwcG9ydCBmb3IgSlZNIGRlYnVnZ2VyIG9uIHBvcnQgNTAwNScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UgfSkpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KVxuICAgIC5kZXNjcmlwdGlvbignU3RhcnQgQXRsYXNzaWFuIEJpdGJ1Y2tldCAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDxuYW1lPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQml0YnVja2V0JykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldF0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgb24gd2hpY2ggdGhlIEF0bGFzc2lhbiBCaXRidWNrZXQgd2lsbCBydW4nKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1RoZSBIVFRQIHBvcnQgb24gd2hpY2ggQXRsYXNzaWFuIEJpdGJ1Y2tldCB3aWxsIGJlIGFjY2Vzc2libGUnKS5kZWZhdWx0KCc4MCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWMsIC0tY29udGV4dFBhdGggPGNvbnRleHRQYXRoPicsICdUaGUgY29udGV4dCBwYXRoIG9uIHdoaWNoIEF0bGFzc2lhbiBCaXRidWNrZXQgd2lsbCBiZSBhY2Nlc3NpYmxlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhtcyA8dmFsdWU+JywgJ0pWTSBtaW5pbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhteCA8dmFsdWU+JywgJ0pWTSBtYXhpbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY2xlYW4nLCAnUmVtb3ZlIGRhdGEgZmlsZXMgYmVmb3JlIHN0YXJ0aW5nIEF0bGFzc2lhbiBCaXRidWNrZXQnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJ1bmUnLCAnUmVtb3ZlIGRhdGEgZmlsZXMgd2hlbiBzdG9wcGluZyBBdGxhc3NpYW4gQml0YnVja2V0JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRlYnVnJywgJ0FkZCBzdXBwb3J0IGZvciBKVk0gZGVidWdnZXIgb24gcG9ydCA1MDA1JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0IH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZChTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbylcbiAgICAuZGVzY3JpcHRpb24oJ1N0YXJ0IEF0bGFzc2lhbiBCYW1ib28gKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJhbWJvbycpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib29dKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIG9uIHdoaWNoIHRoZSBBdGxhc3NpYW4gQmFtYm9vIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgSFRUUCBwb3J0IG9uIHdoaWNoIEF0bGFzc2lhbiBCYW1ib28gd2lsbCBiZSBhY2Nlc3NpYmxlJykuZGVmYXVsdCgnODAnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1jLCAtLWNvbnRleHRQYXRoIDxjb250ZXh0UGF0aD4nLCAnVGhlIGNvbnRleHQgcGF0aCBvbiB3aGljaCBBdGxhc3NpYW4gQmFtYm9vIHdpbGwgYmUgYWNjZXNzaWJsZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXMgPHZhbHVlPicsICdKVk0gbWluaW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXggPHZhbHVlPicsICdKVk0gbWF4aW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWNsZWFuJywgJ1JlbW92ZSBkYXRhIGZpbGVzIGJlZm9yZSBzdGFydGluZyBBdGxhc3NpYW4gQmFtYm9vJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBydW5lJywgJ1JlbW92ZSBkYXRhIGZpbGVzIHdoZW4gc3RvcHBpbmcgQXRsYXNzaWFuIEJhbWJvbycpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kZWJ1ZycsICdBZGQgc3VwcG9ydCBmb3IgSlZNIGRlYnVnZ2VyIG9uIHBvcnQgNTAwNScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbyB9KSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMoKS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KCk7XG59KTtcbiJdLCJuYW1lcyI6WyJCYXNlIiwiQ29tbWFuZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sTUFBTSxhQUFhLEdBQUcsT0FBTyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxF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
|
|
10218
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlcyI6WyIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0FjdGlvbkhhbmRsZXIuanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9EYXRhYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0FwcGxpY2F0aW9uLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9hbXBzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9saWNlbmNlcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGguanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL25ldHdvcmsuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9tc3NxbC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9teXNxbC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9wb3N0Z3Jlcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFpvZERlZmF1bHRzLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYmFtYm9vLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2JpdGJ1Y2tldC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9jb25mbHVlbmNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2ppcmEuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldEFwcGxpY2F0aW9uLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9ydW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDApO1xuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlcnIuaXNzdWVzLmZvckVhY2goaXNzdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgKz0gYFVuYWJsZSB0byBwYXJzZSBvcHRpb24gJHtpc3N1ZS5wYXRoLmpvaW4oJywnKX06ICR7aXNzdWUubWVzc2FnZX1cXG5gO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgfHwgdHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2gobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwcm9ncmFtLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZSxcbiAgICAgICAgICAgIC8vIHdlIGNhbiBhc3N1bWUgYSBjbGVhbiBleGl0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB2ZXJzaW9ucyBmcm9tICcuLi8uLi9hc3NldHMvdmVyc2lvbnMuanNvbic7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzID0gei5lbnVtKFtcbiAgICAncG9zdGdyZXNxbCcsXG4gICAgJ215c3FsJyxcbiAgICAnbXNzcWwnXG5dKTtcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zID0gei5lbnVtKFtcbiAgICAnRGV2ZWxvcGVyJyxcbiAgICAnRXhwcmVzcycsXG4gICAgJ1N0YW5kYXJkJyxcbiAgICAnRW50ZXJwcmlzZScsXG4gICAgJ0VudGVycHJpc2VDb3JlJ1xuXSk7XG5leHBvcnQgY29uc3QgRGF0YWJhc2VPcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSksXG4gICAgZGF0YWJhc2U6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICB2ZXJib3NlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKClcbn0pO1xuZXhwb3J0IGNvbnN0IFBvc3RncmVTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCg1NDMyKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpLmRlZmF1bHQoJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNeVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDMzMDYpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm15c3FsLmpkYmMuRHJpdmVyJykuZGVmYXVsdCgnY29tLm15c3FsLmpkYmMuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE1TU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZWRpdGlvbjogU3VwcG9ydGVkTVNTUUxFZGl0aW9ucy5kZWZhdWx0KCdEZXZlbG9wZXInKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgxNDMzKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnc2EnKS5kZWZhdWx0KCdzYScpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ0RhdGFDZW50ZXJEWCEnKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJykuZGVmYXVsdCgnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKVxufSk7XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4vRGF0YWJhc2UnO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyA9IHouZW51bShbXG4gICAgJ2ppcmEnLFxuICAgICdjb25mbHVlbmNlJyxcbiAgICAnYml0YnVja2V0JyxcbiAgICAnYmFtYm9vJ1xuXSk7XG5leHBvcnQgY29uc3QgQXBwbGljYXRpb25PcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyxcbiAgICB0YWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZGF0YWJhc2U6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5kZWZhdWx0KCdwb3N0Z3Jlc3FsJyksXG4gICAgZGF0YWJhc2VUYWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpLmRlZmF1bHQoJzgwJyksXG4gICAgY29udGV4dFBhdGg6IHouc3RyaW5nKCksXG4gICAgeG1zOiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgeG14OiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgd2F0Y2g6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGV4dDogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICBpbnN0YWxsOiB6LmJvb2xlYW4oKSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHouc3RyaW5nKCksXG4gICAgYWN0aXZhdGVQcm9maWxlczogei5zdHJpbmcoKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRlYnVnOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIGN3ZDogei5zdHJpbmcoKVxufSkucGFydGlhbCh7XG4gICAgY29udGV4dFBhdGg6IHRydWUsXG4gICAgZXh0OiB0cnVlLFxuICAgIGluc3RhbGw6IHRydWUsXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB0cnVlLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHRydWUsXG4gICAgY3dkOiB0cnVlXG59KTtcbiIsImltcG9ydCB7IERPTVBhcnNlciwgWE1MU2VyaWFsaXplciB9IGZyb20gJ0B4bWxkb20veG1sZG9tJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBYTUxQYXJzZXIgfSBmcm9tICdmYXN0LXhtbC1wYXJzZXInO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeHBhdGggZnJvbSAneHBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuZXhwb3J0IGNsYXNzIEFNUFMge1xuICAgIG9wdGlvbnM7XG4gICAgbWF2ZW4gPSBudWxsO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7XG4gICAgICAgIHByb2ZpbGVzOiBbXVxuICAgIH0pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMubWF2ZW4ua2lsbCgwKTtcbiAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIE1hdmVuIHByb2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBidWlsZChhcmdzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMubWF2ZW4ua2lsbCgwKTtcbiAgICAgICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIE1hdmVuIHByb2Nlc3MnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tYXZlbiA9IHNwYXduKCdtdm4nLCBbJ3BhY2thZ2UnLCAuLi5hcmdzXSwgeyBjd2Q6IHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgdGhpcy5tYXZlbi5vbignZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXZlbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDAgfHwgY29kZSA9PT0gMTMwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYE1hdmVuIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlzQXRsYXNzaWFuUGx1Z2luID0gKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3BhY2thZ2luZ1xcJ10nKTtcbiAgICAgICAgICAgIHJldHVybiBub2Rlcy5zb21lKGl0ZW0gPT4gaXRlbS50ZXh0Q29udGVudCA9PT0gJ2F0bGFzc2lhbi1wbHVnaW4nKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGdldEFwcGxpY2F0aW9uVmVyc2lvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbLCB2ZXJzaW9uXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0QXBwbGljYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgW25hbWVdID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0QXBwbGljYXRpb25zKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdncm91cElkXFwnIGFuZCB0ZXh0KCk9XFwnY29tLmF0bGFzc2lhbi5tYXZlbi5wbHVnaW5zXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoJ2FtcHMtbWF2ZW4tcGx1Z2luJyA9PT0gcGx1Z2luPy5hcnRpZmFjdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pZCkgfHwgdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0Lmluc3RhbmNlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcm9kdWN0IH0gPSBjb25maWd1cmF0aW9uPy5wcm9kdWN0cyB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pZCkgfHwgdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0Lmluc3RhbmNlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHBsdWdpbj8uYXJ0aWZhY3RJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24obm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24odmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmEpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbykpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldFZlcnNpb24obm9kZSkge1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0VmVyc2lvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwbHVnaW4uY29uZmlndXJhdGlvbi5wcm9kdWN0VmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSA/IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzWzBdIDogY29uZmlndXJhdGlvbi5wcm9kdWN0cy5wcm9kdWN0O1xuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0ICYmIHByb2R1Y3QudmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHZhbHVlKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwcm9maWxlLCByZXBsYWNlIHByb2ZpbGUgcHJvcGVydGllcyBmaXJzdCBhcyB0aGV5IHRha2UgcHJlY2VkZW5jZVxuICAgICAgICBjb25zdCBwcm9maWxlUHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9maWxlUHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VBbGwoYCRcXHske3Byb3BlcnR5S2V5fX1gLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VBbGwoYCRcXHske3Byb3BlcnR5S2V5fX1gLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGdldFByb3BlcnRpZXMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncHJvcGVydGllc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSB0aGlzLnRvT2JqZWN0KG5vZGUpO1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiByZXN1bHRba2V5XSA9IHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGdldE5vZGVzKGV4cHJlc3Npb24sIHNpbmdsZSkge1xuICAgICAgICBjb25zdCBwb21GaWxlUGF0aCA9IGpvaW4odGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksICcuL3BvbS54bWwnKTtcbiAgICAgICAgY29uc3QgaGFzUG9tRmlsZSA9IGV4aXN0c1N5bmMocG9tRmlsZVBhdGgpO1xuICAgICAgICBpZiAoaGFzUG9tRmlsZSkge1xuICAgICAgICAgICAgY29uc3QgeG1sID0gcmVhZEZpbGVTeW5jKHBvbUZpbGVQYXRoLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh4bWwsICd0ZXh0L3htbCcpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBzaW5nbGUgPyB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCB0cnVlKSA6IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHRvT2JqZWN0KG5vZGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBYTUxQYXJzZXIoKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2UobmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhub2RlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgbm9kZSkge1xuICAgICAgICBjb25zdCB7IHBhcmVudE5vZGUgfSA9IG5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIHBhcmVudE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkge1xuICAgICAgICBjb25zdCBwcm9maWxlUGFyZW50Tm9kZSA9IHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUoJ3Byb2ZpbGUnLCBub2RlKTtcbiAgICAgICAgY29uc3QgcHJvZmlsZU5vZGUgPSBwcm9maWxlUGFyZW50Tm9kZSA/IHRoaXMudG9PYmplY3QocHJvZmlsZVBhcmVudE5vZGUpIDogbnVsbDtcbiAgICAgICAgaWYgKCFwcm9maWxlTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvZmlsZU5vZGUgJiYgKHByb2ZpbGVOb2RlLmFjdGl2ZUJ5RGVmYXVsdCA9PT0gJ3RydWUnIHx8IHRoaXMub3B0aW9ucy5wcm9maWxlcy5pbmNsdWRlcyhwcm9maWxlTm9kZS5wcm9maWxlLmlkKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IHRpbWVib21iID0ge1xuICAgICdqaXJhJzogJ0FBQUNCQTBPREFvUGVOcDlrbDF2MmpBVWh1L3pLNDYwT3lRSFNMdVZJa1VhVGJ3TlZCS1VoRW5idWdzVER1QTJzU1BiZ2JGZlB4T0MxaSs0eUVYTzUrdm5QUit5R2lHU1cvQ3VvWGM3dkJvTXZUNEVOQU92NS9XY3RVSVVHMWxWcU54N25xUFFTSmZjY0NsOEdtVTBtU1hqbERwUlhTNVF4YXU1UnFWOTBuY0NLUXpMVGNSSzlFdTk0NElwL2NRL00xTXdyVGtUYmk1TFoxYXJmTU0waHN5ZzcvWDZBOUx2RTg5ejJqM1p2c0ptUUJCUHB6UUp4cVA3VTRyK3FiamFOMzJ6RysvYmFSMmRNbDZjMzVlaTJxSWFoLzRkdmFIa092enBrVS94NUlaOHZib2RPSTljTWJkU2Nsbm54ajM4RUMxWFpzY1V1bll5MzZKdlZJM094R1ptYlpYZHp3SVU1bFZKV2k5MHJualZRR29pNzBCODczR05oUE9RTzUxT0ZHZmtTNXlRV1JLSDh5QWJ4eEdacDlRbS9FQ2hwYkdFeFI3TUJxR2RBbFRrY29rSzdNTWVNVGZ3YTJOTTlURHNkdGZTZlFHbld4dzdDQjQ3ZnJzUVNoRFN3Skpyby9paU5tZ25jdzFHUWw1ckkwdHJ0ZXRZNHNLZ1lDSi9ZNHFWRlNSMGxOR1EzUDA0YUR4clRLdldPak1YVDBMdXhDVTMzdHhhU2lQZmZ1UmpyM2ZzTy9tQzZvZy9WbXNtdUdZTjBJajkzVEZZY1ZYdW5RYWFEYjQrd0piRmQ3dmcwT0k1SWY1M05FTnRvSzJBbFZRd0dTY2pTRnQ1bHJqZFd5bXU4V0VJZ1N3dHBweXpBc0xneFJrOFA1aEc5UE1BM2JLaVBzcGRzVUxqSlJ3WDd1a2Y1L05YN1RBdEFoVUFoUVNIejlEZ3ljT1g3d2N3RVJNSmIzVExHYjRDRkdrQi94VVdTUkszQlpMclBGOVJuNlptclVxSlgwMm9jJyxcbiAgICAnY29uZmx1ZW5jZSc6ICdBQUFDemcwT0RBb1BlTnA5Vk85djJqQVEvWjYvd3RLK0lZV0dzRUtIRkdtUW1KYXUvR2dJbTlpWUpoTU9ZcHJZa2UxQTRhK2ZTY2hHS3RxUFB2dmV2WHYzenAvNmdxTEhMRWIySGJLc1R2TnpwOWxDOThNQTJaYmROS1lnZGlBR250UERRMno2ODhIY2RIL2FNN1A1bzJrWlR6UUVKaUU0cERBaUNUZ0JuZ2FEMGIwUkNyNWYxUzl1SGZjVVdYU1FCenVJZVFyQ0NEbGIxMG1vNkE0Y0pUTFFTVmxJbHpGVWdncEk4aWNrTWJBVkViSSt5cElsaVBHNlI1SWw1ejRrWEVGM0EweEpwMUd5d2E4cEZRZVBLSEFtRGR0NitBOWNKVlFFSzV5V21oTVY4SEdaTFJXa3dyRjhQWk1ncEdQZkdoN0lVTkJVVWM2Y0FLUkNjVkVZcmJsQWFaeHRLRU9yc3FqOFYvVVM4NXp4WGQrZlVHd0Q3MGlja1J3eWY3QVJBQ3ppcVVZbys4SXJtdC9qVVlEOWlUK1lZbU5JS0ZQQUNBdXZ5SElhUUVVU0hZZ3owRzhyb3JnQzhycDVxdmFFWlZwM3B0MHU4c3ZlM1RpVENzU0lyMEE2bGxHcjFWd2Zkd1BzbWIyNVBqamJWd3EyRWNaY202blM2REtYK0kzaVQxeVAvQ3k0MlRCZTRGQUswV2haVnR1NmF6WWJaZVpsQjBVMndycG5rUW9xcTQwVXlzdDY3UnFCOXpVOGs2NG9sWWVxS25HbU5Deldpc2VPVW9Ld2hMTG9LMUV4a1pJU1ZnOTVjcjNaTi9ZcWR1ZVNZVzY0OS9tZHJmSkFaT1FNM2IzYjk2RFJ1aFZrMzI2MWtrRnZleHdlNDFVUXRKTjEydTVHejZHY1BUN1BuNzFINzB0NjlDUGNieC9hOXJjajNyRHV3bGs0eHByS0NBNVZOK29KanNhQjJSLzc1c1FmZXpNM0dJeEg1bXlLVDZQTi9RRXJ0RHdnRlFFNkU5VkRDTFVadE44RjMwS28wSzlJcVhUUnViblo4SHBGbFp0ekF5WVVHYi9yeU9PSWNZVldWQ3BCbDVrQ2pVd2xVaHlGMm1ZODBXYW9YeGR6RWhPV2UyWXNOb1JSV1d4TXQ2eFgvaEg2UDV1eEY4YjNyTEpJbHoxTHBRVzk1cFFQdnFmTHEwa213b2hJZUxzMmw5UE16ZlE0OEx2dldUYmZNWTFBWERnOUtKRExDVjJDOUhVTUgrQ2FKZk9mdWRpL3Ywa0lHVnN3TEFJVUVNUTlYNzdncUdCZGZIMEhJekJhVjhOYWRQVUNGQm4rUmlVQTREK0lxVlFwVFRvdUxWWTY2YUNHWDAyMTIxJyxcbiAgICAnYml0YnVja2V0JzogJ0FBQUJtZzBPREFvUGVOcDlVbDF2MHpBVWZjK3ZzTVJiSmFkSnRqR3BVaVMySkpST05PbGFCNFNBQjllOVcweFR1N0p2Q3YzM2VJbURPb1I0dmVmZTQvUGhONTloUjViY2tQaVdSTmV6S0o1RkNaa3ZHVW1pSkE0eXJaQUxMUGtCVXJIWG90RW51NWVCUlc2YjhLTVVvQ3l3OHhINkJWWnMyS0tjZTNUSnBVSlFYQWtvZmgybE9lY2NJVjFkZlJoSkM3ZlJYckp1d0p6QUxQTDAvcUYrcEk5WEdhUHordUdHc3B2YmtkUng4QXdjcjBuUmRPQ25sWG5tU2xxT1VxdjBEbHR1cmVUS2c2dk9pSVpiNko5UG92aWFSbTlwSEhzME05Q2YvUnYxRHYvU1A1bE15b3JSOTlXYXJ0WlZYbWRzVVpXMDNoUU9TSHRDRituMlRMQUI0aGxJb1lUZWdTRkhvMytBUVBLMVFUeCttMDJuenpya28rSlE2TU8wSFM0b0RCZmZRNUpyb2pTU25iUm81TFpEY016U0V0UkVkQmIxQVl3TlJ6c1hmZjBKZ2pDd0xqRy80bUI1Z2lFK0p6aGJGM2VzeU9uOWx4ZjFGMjE0NWE2T1d1MlYvcW1DLzJkVmRvY3RtT3FwdGs1UEdpZCtYSng0MnczTlBQSFdRdUQ5ZlhKYkw4UGt0ZkxoVTJBditOMnJZTVk2dVVFRnBuY1kvQVlDZ2ZGQU1Dd0NGSHprQmxrR0gvdlJkVGVlQlNmVU16VURiNFcyQWhReU04OTNXUGcyUThvUUFZUmRCU3lLZVZVZG9nPT1YMDJqcicsXG4gICAgJ2JhbWJvbyc6ICdBQUFCM3cwT0RBb1BlTnA5VWx0cjJ6QVlmZmV2RU93dG9NUjEwcVlMR0piWVdzbm83R0E3ZzkwZVpQbHJvdFdXakNTbnpYNzlGRjhJWVdrZkRQSjNPZWR3enZjaDJ6ZG9XU3ZrenBGN3Y1amRMcndwQ2tpYUljLzFQT2VSTXhBYXNtTU5FYTNBejJ4bkhUMDRnUUpxdUJRaE5lQjc3dlFHdXpQczNqazVyWElweDVRWmZnRGZxQWFHVXRSVU9hajRhZFgrUGtwR3krVU9oTkUrdm5HRzVsYURhZ3M5TDNtdHVUb09KRjVQa2phNVpvclhKd0VYSEcrcEpRZGFOdlMvY1l0TEF5c0JWRmZ1MTllaHZ4WFBRcjRJSndWMUFHVUxLekluZUJiKzhQQmQvR1dPSDZZZjc1MU5vOWllYXVqbGVZTUhLWWw4KytGYjEzVkdvMUVVWi9oem5PQk5Fb2ZiSUZ2SEVkNm14RGI4MWtRb1VINUVaZytvcDBkRU1GbUFRcldTZjRBWjlITnZUUDFyTVpuc3JMR21wRnB6S3NaTVZwT3kyOERRYmZ3ZW8xQWlJUTBxdURhSzU0MEJpOHcxTWhLeFJodFpXWHZIVGdobit6TFFCdlU0NkVsYTFyTFpjWUVLT0VBcGF6dnZmS1hjZWlTb1lHL2tjVFhoVFVsRkcrWFZiZ0tWTkhBK2dGN0JOOHQzVXVVNXNkcFJ3WFVYR25tbFZWMENDbVJWVTNHOEV2ZjVNS1V3OXZxSUZWMzZ0WDdtb05qZm83Q1BUeGZlblpJSkVyTE1TSWhYMzA5cHZEZDhTVWdLM3NtS01wSnNrblZLQnRyMjZ0NEQrZ2QzQUM1cU1Dd0NGSE9hVFdmRnZMQ0xKUGZ0M3FrdFZvM0ZhZm1aQWhSb2piOUlBeGo4S0VxUERReTBzdG9zMzk0U1FRPT1YMDJtcSdcbn07XG5leHBvcnQgY29uc3QgYXBwM2hvdXIgPSAnQUFBQkNBME9EQW9QZU5wZGowMVB3a0FVUmZmekt5WnhaMUl5VXpBUmtsbFEyNGdSYVFNdEduYVA4VkVtdGpQTmZGVDU5eUpWRnl6ZnVia243OTZVeDBCejZTbWJVTTVuYkR6ajk3UklTeG96SHBNVW5iU3E4OHBvVWFMenRGRVN0VU42TUpaMlRhaVZwdS9ZWTJNNnRJNnNRcnRIbXg4cWQ3NEVaK1RCSXZ5VVUvQW9ZczdqaUUwanprbldReE11aWZBMklCbFViblE3QXVsVmp3TjlBYVU5YXRBU3M2OU8yZE5GVTR3WEpMYzFhT1VHdzl3MzRKd0NUVFpvZTdSUHFVZ2VwMlgwVm0wbjBmTnV0NGdTeGwvSmNuajluRmI2UTV0UC9VZXUzTCswUEhXNGdoWkZtbTJ6WlY1azYvOTVDYlI3WTliWUdvL3pHclYzSXI0alJiRHlDQTZ2dDM0RE84cDNTREFzQWhRbkpqTEQ1azlGcjN1YUl6a1hLZjgzbzV2RGRRSVVlNFhlcXVOQ0MzRCs5aHQ5WlloTlpGS21uaGM9WDAyZGgnO1xuIiwiaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ3BhdGgnO1xuZXhwb3J0IGNvbnN0IHRvQWJzb2x1dGVQYXRoID0gKHJlbGF0aXZlUGF0aCkgPT4ge1xuICAgIGNvbnN0IFssIGZpbGVQYXRoXSA9IHByb2Nlc3MuYXJndjtcbiAgICBjb25zdCBleGVjdXRhYmxlRmlsZURpciA9IGRpcm5hbWUocmVhbHBhdGhTeW5jKGZpbGVQYXRoKSk7XG4gICAgY29uc3QgYmFzZWRpciA9IGV4ZWN1dGFibGVGaWxlRGlyLnN1YnN0cmluZygwLCBleGVjdXRhYmxlRmlsZURpci5pbmRleE9mKCdkY2R4JykgKyA0KTtcbiAgICByZXR1cm4gam9pbihiYXNlZGlyLCByZWxhdGl2ZVBhdGgucmVwbGFjZUFsbCgnLi4vJywgJycpKTtcbn07XG4iLCJleHBvcnQgY29uc3QgbmV0d29yayA9IHtcbiAgICBuYW1lOiAnc2hhcmVkJyxcbiAgICBkcml2ZXI6ICdicmlkZ2UnXG59O1xuIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkFjcXVpcmVUaW1lb3V0RXJyb3IsIENvbm5lY3Rpb25FcnJvciwgQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIFNlcXVlbGl6ZSwgVGltZW91dEVycm9yIH0gZnJvbSAnc2VxdWVsaXplJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuZXhwb3J0IGNsYXNzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgc2VxdWVsaXplO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgLy8gV2UgbmVlZCB0byB1c2UgJ21hc3RlcicgZm9yIG1zc3FsIGJlY2F1c2UgaXQgZG9lcyBub3QgaW5pdGlhbGl6ZSB0aGUgZGF0YWJhc2Ugb24gc3RhcnRcbiAgICAgICAgY29uc3QgZGF0YWJhc2UgPSB0aGlzLm9wdGlvbnMubmFtZSA9PT0gJ21zc3FsJyA/ICdtYXN0ZXInIDogdGhpcy5vcHRpb25zLmRhdGFiYXNlO1xuICAgICAgICB0aGlzLnNlcXVlbGl6ZSA9IG5ldyBTZXF1ZWxpemUoZGF0YWJhc2UsIHRoaXMub3B0aW9ucy51c2VybmFtZSwgdGhpcy5vcHRpb25zLnBhc3N3b3JkLCB7XG4gICAgICAgICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgICAgICAgIHBvcnQ6IHRoaXMub3B0aW9ucy5wb3J0LFxuICAgICAgICAgICAgZGlhbGVjdDogdGhpcy5vcHRpb25zLm5hbWUucmVwbGFjZSgncG9zdGdyZXNxbCcsICdwb3N0Z3JlcycpLFxuICAgICAgICAgICAgcmV0cnk6IHtcbiAgICAgICAgICAgICAgICBtYXg6IDMwLFxuICAgICAgICAgICAgICAgIG1hdGNoOiBbQ29ubmVjdGlvbkVycm9yLCBUaW1lb3V0RXJyb3IsIENvbm5lY3Rpb25UaW1lZE91dEVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvcl0sXG4gICAgICAgICAgICAgICAgYmFja29mZkJhc2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgYmFja29mZkV4cG9uZW50OiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nZ2luZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIGFzeW5jIHJ1bihzcWwsIGxvZ2dpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VxdWVsaXplLnF1ZXJ5KHNxbCwgeyBsb2dnaW5nIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBydW4gdGhlIGZvbGxvd2luZyBTUUwgcXVlcnk6Jywgc3FsLCBlcnIpO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN0YXJ0KGNsZWFuID0gdGhpcy5vcHRpb25zLmNsZWFuKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTdGFydGluZyBpbnN0YW5jZSBvZiAke3RoaXMub3B0aW9ucy5uYW1lfS4uLiDwn5KDYCk7XG4gICAgICAgIGlmIChjbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy51cCgpO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byB2ZXJpZnkgc3RhdHVzIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9IOKblGApO1xuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYERhdGFiYXNlIGlzIHJlYWR5IGFuZCBhY2NlcHRpbmcgY29ubmVjdGlvbnMgb24gbG9jYWxob3N0OiR7dGhpcy5vcHRpb25zLnBvcnR9IPCfl4TvuI9gKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5vbkRhdGFiYXNlUmVhZHkoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNob3dEb2NrZXJMb2dzKHNlcnZpY2UubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN0b3AocHJ1bmUgPSB0aGlzLm9wdGlvbnMucHJ1bmUpIHtcbiAgICAgICAgaWYgKHBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkgeyB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgICdkYic6IHRoaXMuZ2V0U2VydmljZSgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzogbmV0d29ya1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyB1cCgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgcmV0dXJuIHVwQWxsKHtcbiAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZG93bigpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgcmV0dXJuIGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLXYnLCAnLS1yZW1vdmUtb3JwaGFucycsICctLXJtaScsICdsb2NhbCddLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyB3YWl0VW50aWxSZWFkeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VxdWVsaXplLmF1dGhlbnRpY2F0ZSgpLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIH1cbiAgICBhc3luYyBnZXRTZXJ2aWNlU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBzKHtcbiAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy0tYWxsJ10sXG4gICAgICAgICAgICBsb2c6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEuc2VydmljZXMuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gaXRlbS5uYW1lLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICByZXR1cm4gc2VydmljZSA9PT0gdGhpcy5vcHRpb25zLm5hbWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzaG93RG9ja2VyTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydsb2dzJywgJy1mJywgJy1uJywgJzUwMDAnLCBzZXJ2aWNlXSwgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBNU1NRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNU1NRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOnNxbHNlcnZlcjovL2RiOiR7dGhpcy5vcHRpb25zLnBvcnR9O2RhdGFiYXNlTmFtZT0ke3RoaXMub3B0aW9ucy5kYXRhYmFzZX07dHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZT10cnVlYDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IE1TU1FMT3B0aW9ucy5wYXJzZSh7fSkpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGFzeW5jIG9uRGF0YWJhc2VSZWFkeSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYENSRUFURSBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX1gKTtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYEFMVEVSIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfSBDT0xMQVRFIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDFfQ1NfQVNgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYEFMVEVSIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfSBTRVQgUkVBRF9DT01NSVRURURfU05BUFNIT1QgT04gV0lUSCBST0xMQkFDSyBJTU1FRElBVEU7YCk7XG4gICAgfVxuICAgIGdldFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogYG1jci5taWNyb3NvZnQuY29tL21zc3FsL3NlcnZlcjoke3RoaXMub3B0aW9ucy50YWd9YCxcbiAgICAgICAgICAgIHBvcnRzOiBbYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgMTQzM306MTQzM2BdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBBQ0NFUFRfRVVMQTogJ3knLFxuICAgICAgICAgICAgICAgIE1TU1FMX1NBX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1TU1FMX1BJRDogdGhpcy5vcHRpb25zLmVkaXRpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnZGInLCAnZGF0YWJhc2UnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTXlTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgTXlTUUwgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpteXNxbDovL2RiOiR7dGhpcy5vcHRpb25zLnBvcnR9LyR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfT9zZXNzaW9uVmFyaWFibGVzPXRyYW5zYWN0aW9uX2lzb2xhdGlvbj0nUkVBRC1DT01NSVRURUQnYDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IE15U1FMT3B0aW9ucy5wYXJzZSh7fSkpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGFzeW5jIG9uRGF0YWJhc2VSZWFkeSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oYEFMVEVSIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfSBDSEFSQUNURVIgU0VUICd1dGY4bWI0JyBDT0xMQVRFIHV0ZjhtYjRfYmluYCk7XG4gICAgfVxuICAgIGdldFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogYG15c3FsOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAzMzA2fTozMzA2YF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIE1ZU1FMX1JPT1RfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVlTUUxfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9EQVRBQkFTRTogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IFsnLS1sb2dfYmluX3RydXN0X2Z1bmN0aW9uX2NyZWF0b3JzPTEnXSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBQb3N0Z3JlU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIFBvc3RncmVzIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6cG9zdGdyZXNxbDovL2RiOiR7dGhpcy5vcHRpb25zLnBvcnR9LyR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWA7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBQb3N0Z3JlU1FMT3B0aW9ucy5wYXJzZSh7fSkpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogYHBvc3RncmVzOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA1NDMyfTo1NDMyYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIFBPU1RHUkVTX1VTRVI6IHRoaXMub3B0aW9ucy51c2VybmFtZSB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfREI6IHRoaXMub3B0aW9ucy5kYXRhYmFzZSB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfSE9TVF9BVVRIX01FVEhPRDogJ21kNScsXG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfSU5JVERCX0FSR1M6ICctLWVuY29kaW5nPVVURi04IC0tbGMtY29sbGF0ZT1DIC0tbGMtY3R5cGU9QydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnZGInLCAnZGF0YWJhc2UnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTVNTUUwgfSBmcm9tICcuLi9kYXRhYmFzZXMvbXNzcWwnO1xuaW1wb3J0IHsgTXlTUUwgfSBmcm9tICcuLi9kYXRhYmFzZXMvbXlzcWwnO1xuaW1wb3J0IHsgUG9zdGdyZXMgfSBmcm9tICcuLi9kYXRhYmFzZXMvcG9zdGdyZXMnO1xuaW1wb3J0IHsgTVNTUUxPcHRpb25zLCBNeVNRTE9wdGlvbnMsIFBvc3RncmVTUUxPcHRpb25zLCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgZ2V0RGF0YWJhc2VFbmdpbmUgPSAob3B0aW9ucywgdGFnKSA9PiB7XG4gICAgc3dpdGNoIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IFBvc3RncmVzKFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBNeVNRTChNeVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1TU1FMKE1TU1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgfVxufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IGdldFpvZERlZmF1bHQgPSAoc2NoZW1hLCBrZXkpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGdldFpvZERlZmF1bHRzKHNjaGVtYSk7XG4gICAgcmV0dXJuIGRlZmF1bHRzW2tleV07XG59O1xuLy8gQ29kZSBzbmlwcGV0IGJ5IEphY29iIFdlaXNlbmJ1cmdlciAoaHR0cHM6Ly9naXRodWIuY29tL0phY29iV2Vpc2VuYnVyZ2VyKVxuLy8gVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QvZGlzY3Vzc2lvbnMvMTk1MyNkaXNjdXNzaW9uY29tbWVudC00ODExNTg4XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdHMgPSAoc2NoZW1hKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzY2hlbWEuc2hhcGUpLmZpbHRlcigoWywgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdmFsdWUuX2RlZi5kZWZhdWx0VmFsdWUoKTtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIGRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoW2tleSwgdmFsdWUuX2RlZi5kZWZhdWx0VmFsdWUoKV0pKSk7XG59O1xuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBkb3duQWxsLCBsb2dzLCBwcywgc3RvcCwgdXBBbGwgfSBmcm9tICdkb2NrZXItY29tcG9zZS9kaXN0L3YyLmpzJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkdW1wIH0gZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgYXJjaCwgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgc2ltcGxlR2l0IGZyb20gJ3NpbXBsZS1naXQnO1xuaW1wb3J0IHsgZ2V0RGF0YWJhc2VFbmdpbmUgfSBmcm9tICcuLi9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lJztcbmltcG9ydCB7IGdldFpvZERlZmF1bHRzIH0gZnJvbSAnLi4vaGVscGVycy9nZXRab2REZWZhdWx0cyc7XG5pbXBvcnQgeyBuZXR3b3JrIH0gZnJvbSAnLi4vaGVscGVycy9uZXR3b3JrJztcbmltcG9ydCB7IERhdGFiYXNlT3B0aW9ucywgTVNTUUxPcHRpb25zLCBNeVNRTE9wdGlvbnMsIFBvc3RncmVTUUxPcHRpb25zLCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBiYXNlZGlyID0gam9pbihob21lZGlyKCksICcuZGNkeCcpO1xuZXhwb3J0IGNsYXNzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZGF0YWJhc2U7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmRhdGFiYXNlID0gdGhpcy5nZXREYXRhYmFzZUVuZ2luZShvcHRpb25zLmRhdGFiYXNlLCBvcHRpb25zLmRhdGFiYXNlVGFnKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3BlcnRpZXNcbiAgICBnZXQgYmFzZVVybCgpIHtcbiAgICAgICAgbGV0IGJhc2VVcmwgPSBgaHR0cDovL2xvY2FsaG9zdGA7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9ydCkge1xuICAgICAgICAgICAgYmFzZVVybCArPSBgOiR7dGhpcy5vcHRpb25zLnBvcnR9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8gYCR7YmFzZVVybH0vJHt0aGlzLm9wdGlvbnMuY29udGV4dFBhdGh9YCA6IGJhc2VVcmw7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIGFzeW5jIHN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0J1aWRSZXF1aXJlZCgpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmJ1aWxkKHRoaXMub3B0aW9ucy50YWcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RhcnQodGhpcy5vcHRpb25zLmNsZWFuKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cCgpO1xuICAgIH1cbiAgICBhc3luYyBzdG9wKCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlLnN0b3AodGhpcy5vcHRpb25zLnBydW5lKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICAgICAgYXdhaXQgc3RvcCh7XG4gICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgcmVzZXQoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0cnVlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBbXTtcbiAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRHVwbS5wbHVnaW4udXBsb2FkLmVuYWJsZWQ9dHJ1ZScpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EamlyYS5kZXYubW9kZT10cnVlJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EYXRsYXNzaWFuLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndhdGNoKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EcXVpY2tyZWxvYWQuZGlycz0vb3B0L3F1aWNrcmVsb2FkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIGFzeW5jIGlzQXBwbGljYXRpb25SZWFkeSgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGAke3RoaXMuYmFzZVVybH0vc3RhdHVzYCwgeyB2YWxpZGF0ZVN0YXR1czogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0ZSA9PT0gJ0ZJUlNUX1JVTicgfHwgZGF0YS5zdGF0ZSA9PT0gJ1JVTk5JTkcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgVGhlIGFwcGxpY2F0aW9uICR7dGhpcy5uYW1lfSBpcyByZWFkeSBvbiAke3RoaXMuYmFzZVVybH0g8J+OiWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldERhdGFiYXNlRW5naW5lKG5hbWUsIHRhZykge1xuICAgICAgICByZXR1cm4gZ2V0RGF0YWJhc2VFbmdpbmUoRGF0YWJhc2VPcHRpb25zLnBhcnNlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdE9wdGlvbnMobmFtZSksXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkXG4gICAgICAgIH0pLCB0YWcpO1xuICAgIH1cbiAgICBnZXREb2NrZXJCYXNlVGFnKCkge1xuICAgICAgICBpZiAodGhpcy5pc0J1aWRSZXF1aXJlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gYGRjZHgvJHt0aGlzLm5hbWV9OiR7dGhpcy5vcHRpb25zLnRhZ31gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2ppcmEnKSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi9qaXJhLXNvZnR3YXJlOiR7dGhpcy5vcHRpb25zLnRhZ31gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBhdGxhc3NpYW4vJHt0aGlzLm5hbWV9OiR7dGhpcy5vcHRpb25zLnRhZ31gO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXREb2NrZXJDb21wb3NlQ29uZmlnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VydmljZXM6IHtcbiAgICAgICAgICAgICAgICBbdGhpcy5uYW1lXTogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKTtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKGNvbmZpZyk7XG4gICAgICAgIGF3YWl0IHVwQWxsKHtcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGUgPSBhd2FpdCB0aGlzLndhaXRVbnRpbFJlYWR5KCk7XG4gICAgICAgIGlmICghaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGlmICghaXNSdW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBzdGFydCAke3RoaXMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgbG9ncyhPYmplY3Qua2V5cyhjb25maWcuc2VydmljZXMpLCB7XG4gICAgICAgICAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvdWxkIG5vdCBjb25maXJtIHN0YXRlIG9mICR7dGhpcy5uYW1lfSwgYnV0IHRoZSBjb250YWluZXIgaXMgcnVubmluZy4gUGxlYXNlIGNvbnN1bHQgdGhlIGFwcGxpY2F0aW9uIGxvZ3Mg8J+Rh2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudGFpbEFwcGxpY2F0aW9uTG9ncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgYXJlIGV4aXRpbmcgd2l0aCBhbiBlcnJvciBjb2RlXG4gICAgICAgIC8vIFRoaXMgaXMgdG8gdHJpZ2dlciBhIGdyYWNlZnVsIHNodXQgZG93biBvZiB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICBhd2FpdCBkb3duQWxsKHtcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLXYnLCAnLS1yZW1vdmUtb3JwaGFucycsICctLXJtaScsICdsb2NhbCddLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBnZXRTZXJ2aWNlU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBzKHtcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm5hbWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyB3YWl0VW50aWxSZWFkeShjb3VudCA9IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYFdhaXRpbmcgZm9yICR7dGhpcy5uYW1lfSB0byBiZWNvbWUgYXZhaWxhYmxlLi4uICR7Y291bnR9c2ApO1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzUnVubmluZyA9IHNlcnZpY2UgJiYgc2VydmljZS5zdGF0ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3VwJyk7XG4gICAgICAgICAgICBjb25zdCBpc1JlYWR5ID0gaXNSdW5uaW5nICYmIGF3YWl0IHRoaXMuaXNBcHBsaWNhdGlvblJlYWR5KCk7XG4gICAgICAgICAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPj0gMTIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhaXRVbnRpbFJlYWR5KGNvdW50ICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY291bnQgPCAxMCkge1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhaXRVbnRpbFJlYWR5KGNvdW50ICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXNCdWlkUmVxdWlyZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGFnLnRvTG93ZXJDYXNlKCkgPT09ICdsYXRlc3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyY2ggPT09ICdhcm0nIHx8IGFyY2ggPT09ICdhcm02NCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLm9wdGlvbnMudGFnLmluY2x1ZGVzKCctJylcbiAgICAgICAgICAgICAgICA/IHRoaXMub3B0aW9ucy50YWcuc2xpY2UoMCwgdGhpcy5vcHRpb25zLnRhZy5pbmRleE9mKCctJykpXG4gICAgICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMudGFnO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZW1WZXJWZXJzaW9uID0gc2VtdmVyLmNvZXJjZSh2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VtVmVyVmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09PSAnamlyYScgfHwgdGhpcy5uYW1lID09PSAnYmFtYm9vJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbXZlci5sdChzZW1WZXJWZXJzaW9uLCAnOS4wLjAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT09ICdjb25mbHVlbmNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbXZlci5sdChzZW1WZXJWZXJzaW9uLCAnOC4wLjAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT09ICdiaXRidWNrZXQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjIuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhc3luYyBidWlsZCh2ZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSB0aGlzLmdldERvY2tlclJlcG9zaXRvcnlVcmwoKTtcbiAgICAgICAgY29uc3QgY2hlY2tvdXRQYXRoID0gam9pbihiYXNlZGlyLCB0aGlzLm5hbWUsICdzb3VyY2UnKTtcbiAgICAgICAgaWYgKCFleGlzdHNTeW5jKGNoZWNrb3V0UGF0aCkpIHtcbiAgICAgICAgICAgIG1rZGlyU3luYyhqb2luKGJhc2VkaXIsIHRoaXMubmFtZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KCkuY2xvbmUocmVwb3NpdG9yeVVybCwgY2hlY2tvdXRQYXRoLCB7ICctLXJlY3Vyc2Utc3VibW9kdWxlJzogbnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHNpbXBsZUdpdCh7IGJhc2VEaXI6IGNoZWNrb3V0UGF0aCB9KS5wdWxsKHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2J1aWxkJywgJy10JywgYGRjZHgvJHt0aGlzLm5hbWV9OiR7dmVyc2lvbn1gLCAnLS1idWlsZC1hcmcnLCBgJHt0aGlzLm5hbWUudG9VcHBlckNhc2UoKX1fVkVSU0lPTj0ke3ZlcnNpb259YCwgJy4nXSwgeyBjd2Q6IGNoZWNrb3V0UGF0aCwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERvY2tlclJlcG9zaXRvcnlVcmwoKSB7XG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMubmFtZSA9PT0gJ2ppcmEnXG4gICAgICAgICAgICA/ICdhdGxhc3NpYW4tamlyYSdcbiAgICAgICAgICAgIDogdGhpcy5uYW1lID09PSAnYmFtYm9vJ1xuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5uYW1lfS1zZXJ2ZXJgXG4gICAgICAgICAgICAgICAgOiBgYXRsYXNzaWFuLSR7dGhpcy5uYW1lfS1zZXJ2ZXJgO1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vYml0YnVja2V0Lm9yZy9hdGxhc3NpYW4tZG9ja2VyL2RvY2tlci0ke3N1ZmZpeH0uZ2l0YDtcbiAgICB9XG4gICAgYXN5bmMgdGFpbEFwcGxpY2F0aW9uTG9ncygpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGlzUnVubmluZyA9IHNlcnZpY2UgJiYgc2VydmljZS5zdGF0ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3VwJyk7XG4gICAgICAgIGlmIChpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlLm5hbWUpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHNob3dBcHBsaWNhdGlvbkxvZ3Moc2VydmljZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnZXhlYycsICctaScsIHNlcnZpY2UsIGB0YWlsYCwgYC1GYCwgYC1uYCwgYDUwMDBgLCB0aGlzLmxvZ0ZpbGVQYXRoXSwgeyBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXREZWZhdWx0T3B0aW9ucyhuYW1lKSB7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFpvZERlZmF1bHRzKFBvc3RncmVTUUxPcHRpb25zKTtcbiAgICAgICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoTXlTUUxPcHRpb25zKTtcbiAgICAgICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoTVNTUUxPcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJhbWJvbyBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbztcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvby9sb2dzL2F0bGFzc2lhbi1iYW1ib28ubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC9vcHQvYXRsYXNzaWFuL2JhbWJvby9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3NoYXJlZC9wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvby9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYmFtYm9vOmJhbWJvbyAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgYmFtYm9vOmJhbWJvbyAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvb2BcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0IHx8IDgwfTo4MDg1YCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLWFnZW50bGliOmpkd3A9dHJhbnNwb3J0PWR0X3NvY2tldCxzZXJ2ZXI9eSxzdXNwZW5kPW4sYWRkcmVzcz01MDA1Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIGFzeW5jIGlzQXBwbGljYXRpb25SZWFkeSgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGAke3RoaXMuYmFzZVVybH0vc2V0dXAvc2V0dXBHZW5lcmFsQ29uZmlndXJhdGlvbi5hY3Rpb25gLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0JBTUJPT19FTkFCTEVfVU5BVFRFTkRFRF9TRVRVUCc6ICd0cnVlJyxcbiAgICAgICAgICAgICdBVExfTElDRU5TRSc6IHRpbWVib21iLmJhbWJvbyxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogYCR7dGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWV9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBCaXRidWNrZXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbG9nL2F0bGFzc2lhbi1iaXRidWNrZXQubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGJpdGJ1Y2tldDpiaXRidWNrZXQgL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIG1rZGlyIC1wIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZDsgXFxcbiAgICB0b3VjaCAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7IFxcXG4gICAgZWNobyBcInNldHVwLmxpY2Vuc2U9JHt0aW1lYm9tYi5iaXRidWNrZXR9XCIgPj4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkL2JpdGJ1Y2tldC5wcm9wZXJ0aWVzO1xuXG5SVU4gY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldGBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0IHx8IDgwfTo3OTkwYCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLWFnZW50bGliOmpkd3A9dHJhbnNwb3J0PWR0X3NvY2tldCxzZXJ2ZXI9eSxzdXNwZW5kPW4sYWRkcmVzcz01MDA1Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnSkRCQ19EUklWRVInOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQ29uZmx1ZW5jZSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9jb25mbHVlbmNlL2xvZ3MvYXRsYXNzaWFuLWNvbmZsdWVuY2UubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2UvY29uZmx1ZW5jZS9XRUItSU5GL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvYXRsYXNzaWFuLWJ1bmRsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9jb25mbHVlbmNlL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBjb25mbHVlbmNlOmNvbmZsdWVuY2UgL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwOTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWHJ1bmpkd3A6dHJhbnNwb3J0PWR0X3NvY2tldCxhZGRyZXNzPSo6NTAwNSxzZXJ2ZXI9eSxzdXNwZW5kPW4nKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnBvcnQ9OTk5OScpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucm1pLnBvcnQ9OTk5OCcpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUuYXV0aGVudGljYXRlPWZhbHNlJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5zc2w9ZmFsc2UnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfTElDRU5TRV9LRVknOiB0aW1lYm9tYi5jb25mbHVlbmNlLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEppcmEgZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9sb2cvYXRsYXNzaWFuLWppcmEubG9nJztcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogdG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cycpLFxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVfaW5saW5lOiBgXG5GUk9NICR7dGhpcy5nZXREb2NrZXJCYXNlVGFnKCl9XG5DT1BZIC4vamlyYS1kYXRhLWdlbmVyYXRvci01LjAuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvamlyYS1kYXRhLWdlbmVyYXRvci01LjAuMC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vamlyYS9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9wbHVnaW5zL2luc3RhbGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGppcmE6amlyYSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgamlyYTpqaXJhIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0fTo4MDgwYCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLWFnZW50bGliOmpkd3A9dHJhbnNwb3J0PWR0X3NvY2tldCxzZXJ2ZXI9eSxzdXNwZW5kPW4sYWRkcmVzcz0qOjUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICAvLyBGb3Igc29tZSByZWFzb24sIEppcmEgdXNlcyBhIGRpZmZlcmVudCB0eXBlIGZvciBwb3N0Z3Jlc1xuICAgICAgICBjb25zdCBkYlR5cGUgPSB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZSA9PT0gJ3Bvc3RncmVzcWwnID8gJ3Bvc3RncmVzNzInIDogdGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfRFJJVkVSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLmRyaXZlcixcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGRiVHlwZSxcbiAgICAgICAgICAgICdKSVJBX1NFVFVQX0xJQ0VOU0UnOiB0aW1lYm9tYi5qaXJhXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IEJhbWJvbyB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9iYW1ib28nO1xuaW1wb3J0IHsgQml0YnVja2V0IH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JpdGJ1Y2tldCc7XG5pbXBvcnQgeyBDb25mbHVlbmNlIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2NvbmZsdWVuY2UnO1xuaW1wb3J0IHsgSmlyYSB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9qaXJhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uT3B0aW9ucywgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuZXhwb3J0IGNvbnN0IGdldEFwcGxpY2F0aW9uID0gKG9wdGlvbnMpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTogcmV0dXJuIG5ldyBKaXJhKEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlOiByZXR1cm4gbmV3IENvbmZsdWVuY2UoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbzogcmV0dXJuIG5ldyBCYW1ib28oQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDogcmV0dXJuIG5ldyBCaXRidWNrZXQoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB2aXNpYmxlT3B0aW9uczogKGNtZCkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGNtZC5vcHRpb25zO1xuICAgICAgICBpZiAoIWNtZC5wYXJlbnQgJiYgb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kTmFtZSA9IGNtZC5fZGVmYXVsdENvbW1hbmROYW1lO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kID0gY21kLmNvbW1hbmRzLmZpbmQoaXRlbSA9PiBpdGVtLl9uYW1lID09PSBkZWZhdWx0Q29tbWFuZE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Q29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdENvbW1hbmQub3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ob3B0aW9ucyk7XG4gICAgfVxufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2hlbHBlcnMvQWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi4vaGVscGVycy9hbXBzJztcbmltcG9ydCB7IGdldEFwcGxpY2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9nZXRBcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXM6IG9wdGlvbnMuYWN0aXZhdGVQcm9maWxlcz8uc3BsaXQoJywnKSB8fCBbXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignSW52YWxpZCBhcmd1bWVudCBcIi0tYWN0aXZhdGUtcHJvZmlsZXNcIicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5jd2QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IFwiLS1jd2RcIicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgYW4gQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSDwn6SUJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGV0ZWN0IHByb2R1Y3Qg8J+YsCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMudGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRldGVybWluZSB2ZXJzaW9uIGZyb20gQU1QUyBhbmQgbm8gcHJvZHVjdCB2ZXJzaW9uIHByb3ZpZGVkICgtLXRhZyknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudGFnID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb25zW29wdGlvbnMubmFtZV0uaW5jbHVkZXMob3B0aW9ucy50YWcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvZHVjdCB2ZXJzaW9uICcke29wdGlvbnMudGFnfScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW29wdGlvbnMubmFtZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluc3RhbmNlID0gZ2V0QXBwbGljYXRpb24ob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nICR7aW5zdGFuY2UubmFtZX0uLi4g8J+Sg2ApO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnN0YXJ0KCkudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwaW5nICR7aW5zdGFuY2UubmFtZX0uLi4g8J+SlGApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGluc3RhbmNlLnN0b3AoKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBlZCAke2luc3RhbmNlLm5hbWV9IPCfkqpgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IHJ1bicpXG4gICAgLmRlc2NyaXB0aW9uKGBSdW4gdGhlIGhvc3QgYXBwbGljYXRpb24gYmFzZWQgb24gdGhlIEF0bGFzc2lhbiBNYXZlbiBQbHVnaW4gU3VpdGUgKEFNUFMpIGNvbmZpZ3VyYXRpb24uXG5JZiB5b3Ugd2lzaCB0byBydW4gYSBzcGVjaWZpYyBob3N0IGFwcGxpY2F0aW9uLCBjYWxsIHRoaXMgY29tbWFuZCB3aXRoICdkY2R4IHJ1biA8bmFtZT4nYClcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyQWxsJywgJ+KAiycpIC8vIHRoZXJlIGlzIGEgbm9uLXplcm8gd2hpdGUgc3BhY2UgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdG8gaGF2ZSB0aGlzIGlzIHRvIGZvcmNlIGEgbGluZSBicmVha1xuICAgIC5jb25maWd1cmVIZWxwKHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKGZhbHNlKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cyhmYWxzZSlcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdmcm9tQU1QUycsIHsgaXNEZWZhdWx0OiB0cnVlLCBoaWRkZW46IHRydWUgfSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgSFRUUCBwb3J0IG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgYmUgYWNjZXNzaWJsZScpLmRlZmF1bHQoJzgwJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb250ZXh0UGF0aCA8Y29udGV4dFBhdGg+JywgJ1RoZSBjb250ZXh0IHBhdGggb24gd2hpY2ggdGhlIGhvc3QgYXBwbGljYXRpb24gd2lsbCBiZSBhY2Nlc3NpYmxlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXMgPHZhbHVlPicsICdKVk0gbWluaW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXggPHZhbHVlPicsICdKVk0gbWF4aW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCB0aGUgQU1QUyBjb25maWd1cmF0aW9uJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWNsZWFuJywgJ1JlbW92ZSBkYXRhIGZpbGVzIGJlZm9yZSBzdGFydGluZyB0aGUgaG9zdCBhcHBsaWNhdGlvbicpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wcnVuZScsICdSZW1vdmUgZGF0YSBmaWxlcyB3aGVuIHN0b3BwaW5nIHRoZSBob3N0IGFwcGxpY2F0aW9uJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRlYnVnJywgJ0FkZCBzdXBwb3J0IGZvciBKVk0gZGVidWdnZXIgb24gcG9ydCA1MDA1JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCBvcHRpb25zKSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhKVxuICAgIC5kZXNjcmlwdGlvbignU3RhcnQgQXRsYXNzaWFuIEppcmEgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEppcmEnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgb24gd2hpY2ggdGhlIEF0bGFzc2lhbiBKaXJhIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgSFRUUCBwb3J0IG9uIHdoaWNoIEF0bGFzc2lhbiBKaXJhIHdpbGwgYmUgYWNjZXNzaWJsZScpLmRlZmF1bHQoJzgwJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb250ZXh0UGF0aCA8Y29udGV4dFBhdGg+JywgJ1RoZSBjb250ZXh0IHBhdGggb24gd2hpY2ggQXRsYXNzaWFuIEppcmEgd2lsbCBiZSBhY2Nlc3NpYmxlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhtcyA8dmFsdWU+JywgJ0pWTSBtaW5pbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhteCA8dmFsdWU+JywgJ0pWTSBtYXhpbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY2xlYW4nLCAnUmVtb3ZlIGRhdGEgZmlsZXMgYmVmb3JlIHN0YXJ0aW5nIEF0bGFzc2lhbiBKaXJhJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBydW5lJywgJ1JlbW92ZSBkYXRhIGZpbGVzIHdoZW4gc3RvcHBpbmcgQXRsYXNzaWFuIEppcmEnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZGVidWcnLCAnQWRkIHN1cHBvcnQgZm9yIEpWTSBkZWJ1Z2dlciBvbiBwb3J0IDUwMDUnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZChTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UpXG4gICAgLmRlc2NyaXB0aW9uKCdTdGFydCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDxuYW1lPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQ29uZmx1ZW5jZScpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSBvbiB3aGljaCB0aGUgQXRsYXNzaWFuIENvbmZsdWVuY2Ugd2lsbCBydW4nKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1RoZSBIVFRQIHBvcnQgb24gd2hpY2ggQXRsYXNzaWFuIENvbmZsdWVuY2Ugd2lsbCBiZSBhY2Nlc3NpYmxlJykuZGVmYXVsdCgnODAnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1jLCAtLWNvbnRleHRQYXRoIDxjb250ZXh0UGF0aD4nLCAnVGhlIGNvbnRleHQgcGF0aCBvbiB3aGljaCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSB3aWxsIGJlIGFjY2Vzc2libGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0teG1zIDx2YWx1ZT4nLCAnSlZNIG1pbmltdW0gaGVhcCBzaXplJykuZGVmYXVsdCgnMTAyNG0nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0teG14IDx2YWx1ZT4nLCAnSlZNIG1heGltdW0gaGVhcCBzaXplJykuZGVmYXVsdCgnMTAyNG0nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jbGVhbicsICdSZW1vdmUgZGF0YSBmaWxlcyBiZWZvcmUgc3RhcnRpbmcgQXRsYXNzaWFuIENvbmZsdWVuY2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJ1bmUnLCAnUmVtb3ZlIGRhdGEgZmlsZXMgd2hlbiBzdG9wcGluZyBBdGxhc3NpYW4gQ29uZmx1ZW5jZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kZWJ1ZycsICdBZGQgc3VwcG9ydCBmb3IgSlZNIGRlYnVnZ2VyIG9uIHBvcnQgNTAwNScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UgfSkpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KVxuICAgIC5kZXNjcmlwdGlvbignU3RhcnQgQXRsYXNzaWFuIEJpdGJ1Y2tldCAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDxuYW1lPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQml0YnVja2V0JykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldF0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgb24gd2hpY2ggdGhlIEF0bGFzc2lhbiBCaXRidWNrZXQgd2lsbCBydW4nKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1RoZSBIVFRQIHBvcnQgb24gd2hpY2ggQXRsYXNzaWFuIEJpdGJ1Y2tldCB3aWxsIGJlIGFjY2Vzc2libGUnKS5kZWZhdWx0KCc4MCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWMsIC0tY29udGV4dFBhdGggPGNvbnRleHRQYXRoPicsICdUaGUgY29udGV4dCBwYXRoIG9uIHdoaWNoIEF0bGFzc2lhbiBCaXRidWNrZXQgd2lsbCBiZSBhY2Nlc3NpYmxlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhtcyA8dmFsdWU+JywgJ0pWTSBtaW5pbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXhteCA8dmFsdWU+JywgJ0pWTSBtYXhpbXVtIGhlYXAgc2l6ZScpLmRlZmF1bHQoJzEwMjRtJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY2xlYW4nLCAnUmVtb3ZlIGRhdGEgZmlsZXMgYmVmb3JlIHN0YXJ0aW5nIEF0bGFzc2lhbiBCaXRidWNrZXQnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJ1bmUnLCAnUmVtb3ZlIGRhdGEgZmlsZXMgd2hlbiBzdG9wcGluZyBBdGxhc3NpYW4gQml0YnVja2V0JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRlYnVnJywgJ0FkZCBzdXBwb3J0IGZvciBKVk0gZGVidWdnZXIgb24gcG9ydCA1MDA1JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0IH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZChTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbylcbiAgICAuZGVzY3JpcHRpb24oJ1N0YXJ0IEF0bGFzc2lhbiBCYW1ib28gKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJhbWJvbycpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib29dKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIG9uIHdoaWNoIHRoZSBBdGxhc3NpYW4gQmFtYm9vIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgSFRUUCBwb3J0IG9uIHdoaWNoIEF0bGFzc2lhbiBCYW1ib28gd2lsbCBiZSBhY2Nlc3NpYmxlJykuZGVmYXVsdCgnODAnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1jLCAtLWNvbnRleHRQYXRoIDxjb250ZXh0UGF0aD4nLCAnVGhlIGNvbnRleHQgcGF0aCBvbiB3aGljaCBBdGxhc3NpYW4gQmFtYm9vIHdpbGwgYmUgYWNjZXNzaWJsZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXMgPHZhbHVlPicsICdKVk0gbWluaW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXggPHZhbHVlPicsICdKVk0gbWF4aW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWNsZWFuJywgJ1JlbW92ZSBkYXRhIGZpbGVzIGJlZm9yZSBzdGFydGluZyBBdGxhc3NpYW4gQmFtYm9vJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBydW5lJywgJ1JlbW92ZSBkYXRhIGZpbGVzIHdoZW4gc3RvcHBpbmcgQXRsYXNzaWFuIEJhbWJvbycpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kZWJ1ZycsICdBZGQgc3VwcG9ydCBmb3IgSlZNIGRlYnVnZ2VyIG9uIHBvcnQgNTAwNScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbyB9KSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMoKS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KCk7XG59KTtcbiJdLCJuYW1lcyI6WyJCYXNlIiwiQ29tbWFuZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxNQUFNLGFBQWEsR0FBRyxPQUFPLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEtBQUs7QUFDbkYsSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFDLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUs7QUFDckMsUUFBUSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBUSxhQUFhLENBQUMsT0FBTyxJQUFJLEtBQUs7QUFDdEMsWUFBWSxJQUFJO0FBQ2hCLGdCQUFnQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDaEMsb0JBQW9CLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQzlELGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxZQUFZLEVBQUU7QUFDbEMsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekQsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0Esb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLEVBQUU7QUFDeEIsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDekUsZ0JBQWdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUyxFQUFFO0FBQ1gsWUFBWSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQy9CLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07QUFDL0IsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSTtBQUN4QixZQUFZLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDM0MsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTtBQUM1QyxvQkFBb0IsWUFBWSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekcsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2IsaUJBQWlCLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7QUFDdEUsZ0JBQWdCLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDOUMsYUFBYTtBQUNiLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSTtBQUN4QixRQUFRLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtBQUM5QixZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7O0FDaERNLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvQyxJQUFJLFlBQVk7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsSUFBSSxPQUFPO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSSxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsSUFBSSxXQUFXO0FBQ2YsSUFBSSxTQUFTO0FBQ2IsSUFBSSxVQUFVO0FBQ2QsSUFBSSxZQUFZO0FBQ2hCLElBQUksZ0JBQWdCO0FBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLElBQUksRUFBRSx3QkFBd0I7QUFDbEMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNsRixJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNyQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNyQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQ3hELElBQUksSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUMxSixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDekgsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDaEcsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ3hHLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztBQUNuRCxJQUFJLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDaEosSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3BILElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2hHLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQUN4RyxDQUFDLENBQUMsQ0FBQztBQUNJLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7QUFDbkQsSUFBSSxJQUFJLEVBQUUsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2hKLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNwSCxJQUFJLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3hELElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2hHLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3BFLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQ2pELElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyw4Q0FBOEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQztBQUN0SixDQUFDLENBQUM7O0FDM0NLLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1QyxJQUFJLE1BQU07QUFDVixJQUFJLFlBQVk7QUFDaEIsSUFBSSxXQUFXO0FBQ2YsSUFBSSxRQUFRO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSSxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDM0MsSUFBSSxJQUFJLEVBQUUscUJBQXFCO0FBQy9CLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3JDLElBQUksUUFBUSxFQUFFLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDNUQsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDN0MsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNqRixJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQzNCLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQ3BDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQ3BDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3JDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7QUFDeEIsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUMvQixJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDaEMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDckMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDckMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDcEMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUNuQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDWCxJQUFJLFdBQVcsRUFBRSxJQUFJO0FBQ3JCLElBQUksR0FBRyxFQUFFLElBQUk7QUFDYixJQUFJLE9BQU8sRUFBRSxJQUFJO0FBQ2pCLElBQUksZUFBZSxFQUFFLElBQUk7QUFDekIsSUFBSSxnQkFBZ0IsRUFBRSxJQUFJO0FBQzFCLElBQUksR0FBRyxFQUFFLElBQUk7QUFDYixDQUFDLENBQUM7O0FDekJLLE1BQU0sSUFBSSxDQUFDO0FBQ2xCLElBQUksT0FBTyxDQUFDO0FBQ1osSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pCO0FBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxHQUFHO0FBQzFCLFFBQVEsUUFBUSxFQUFFLEVBQUU7QUFDcEIsS0FBSyxFQUFFO0FBQ1AsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMvQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksR0FBRztBQUNYLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFlBQVksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3pCLGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFDOUUsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUU7QUFDdEIsUUFBUSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sS0FBSztBQUNoRCxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtBQUM1QixnQkFBZ0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDN0Isb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDLENBQUM7QUFDcEYsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ25ILFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLO0FBQzVDLGdCQUFnQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNsQyxnQkFBZ0IsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUU7QUFDaEQsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBQzlCLGlCQUFpQjtBQUNqQixxQkFBcUI7QUFDckIsb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLGlCQUFpQjtBQUNqQixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksaUJBQWlCLEdBQUcsTUFBTTtBQUM5QixRQUFRLElBQUk7QUFDWixZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUMzRSxZQUFZLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDO0FBQy9FLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxFQUFFO0FBQ3BCLFlBQVksT0FBTyxLQUFLLENBQUM7QUFDekIsU0FBUztBQUNULEtBQUssQ0FBQztBQUNOLElBQUkscUJBQXFCLEdBQUc7QUFDNUIsUUFBUSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDcEQsUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQ3JDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsWUFBWSxPQUFPLE9BQU8sQ0FBQztBQUMzQixTQUFTO0FBQ1QsYUFBYSxJQUFJLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO0FBQ3hDLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw2R0FBNkcsQ0FBQyxDQUFDO0FBQzNJLFNBQVM7QUFDVCxRQUFRLE9BQU8sU0FBUyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxJQUFJLGNBQWMsR0FBRztBQUNyQixRQUFRLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNwRCxRQUFRLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDckMsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxhQUFhLElBQUksWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7QUFDeEMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDZHQUE2RyxDQUFDLENBQUM7QUFDM0ksU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksZUFBZSxHQUFHO0FBQ3RCLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNqQyxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsMEVBQTBFLENBQUMsQ0FBQztBQUNoSCxRQUFRLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0YsUUFBUSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO0FBQy9DLFlBQVksTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUMvQyxZQUFZLElBQUksVUFBVSxFQUFFO0FBQzVCLGdCQUFnQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3RCxnQkFBZ0IsSUFBSSxtQkFBbUIsS0FBSyxNQUFNLEVBQUUsVUFBVSxFQUFFO0FBQ2hFLG9CQUFvQixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUMzRCxvQkFBb0IsSUFBSSxhQUFhLEVBQUUsUUFBUSxFQUFFO0FBQ2pELHdCQUF3QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFO0FBQ3BFLDRCQUE0QixhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSztBQUN4RSxnQ0FBZ0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDMUosZ0NBQWdDLElBQUksb0JBQW9CLEVBQUU7QUFDMUQsb0NBQW9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEcsb0NBQW9DLElBQUksT0FBTyxFQUFFO0FBQ2pELHdDQUF3QyxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xGLHFDQUFxQztBQUNyQyxpQ0FBaUM7QUFDakMsNkJBQTZCLENBQUMsQ0FBQztBQUMvQix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDRCQUE0QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDOUUsNEJBQTRCLElBQUksT0FBTyxFQUFFO0FBQ3pDLGdDQUFnQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxSixnQ0FBZ0MsSUFBSSxvQkFBb0IsRUFBRTtBQUMxRCxvQ0FBb0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRyxvQ0FBb0MsSUFBSSxPQUFPLEVBQUU7QUFDakQsd0NBQXdDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEYscUNBQXFDO0FBQ3JDLGlDQUFpQztBQUNqQyw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCLG9CQUFvQixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEcsb0JBQW9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQsb0JBQW9CLElBQUksb0JBQW9CLEVBQUU7QUFDOUMsd0JBQXdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEUscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLEtBQUs7QUFDTDtBQUNBLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRSxZQUFZLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNyRCxTQUFTO0FBQ1QsYUFBYSxJQUFJLEtBQUssRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzNFLFlBQVksT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQzNELFNBQVM7QUFDVCxhQUFhLElBQUksS0FBSyxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDdkUsWUFBWSxPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDdkQsU0FBUztBQUNULGFBQWEsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtBQUMxRSxZQUFZLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQUMxRCxTQUFTO0FBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLO0FBQ0wsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQ3JCLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUMzQyxRQUFRLElBQUksVUFBVSxFQUFFO0FBQ3hCLFlBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDekQsWUFBWSxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUNuRCxZQUFZLElBQUksYUFBYSxFQUFFLGNBQWMsRUFBRTtBQUMvQyxnQkFBZ0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN2RixhQUFhO0FBQ2IsaUJBQWlCLElBQUksYUFBYSxFQUFFLFFBQVEsRUFBRTtBQUM5QyxnQkFBZ0IsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEdBQUcsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUNySSxnQkFBZ0IsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUNoRCxvQkFBb0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsT0FBTyxTQUFTLENBQUM7QUFDekIsS0FBSztBQUNMLElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFO0FBQ2pDLFFBQVEsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNCO0FBQ0EsUUFBUSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUN2RCxRQUFRLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsS0FBSztBQUNwRixZQUFZLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM1RSxTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ2hELFFBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsS0FBSztBQUM3RSxZQUFZLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM1RSxTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDdEIsS0FBSztBQUNMLElBQUksYUFBYSxHQUFHO0FBQ3BCLFFBQVEsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQzFCLFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBQ3hFLFFBQVEsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzRixRQUFRLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7QUFDL0MsWUFBWSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RCxZQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3RGLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxPQUFPLE1BQU0sQ0FBQztBQUN0QixLQUFLO0FBQ0wsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRTtBQUNqQyxRQUFRLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMxRSxRQUFRLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuRCxRQUFRLElBQUksVUFBVSxFQUFFO0FBQ3hCLFlBQVksTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN6RSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlHLFlBQVksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3RDLGdCQUFnQixPQUFPLEtBQUssQ0FBQztBQUM3QixhQUFhO0FBQ2IsaUJBQWlCLElBQUksTUFBTSxFQUFFO0FBQzdCLGdCQUFnQixPQUFPLEtBQUssQ0FBQztBQUM3QixhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCLGdCQUFnQixPQUFPLEVBQUUsQ0FBQztBQUMxQixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsT0FBTyxFQUFFLENBQUM7QUFDbEIsS0FBSztBQUNMLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtBQUNuQixRQUFRLElBQUk7QUFDWixZQUFZLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7QUFDM0MsWUFBWSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdFLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxFQUFFO0FBQ3BCLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsUUFBUSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLFFBQVEsSUFBSSxVQUFVLEVBQUU7QUFDeEIsWUFBWSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFO0FBQzdFLGdCQUFnQixPQUFPLFVBQVUsQ0FBQztBQUNsQyxhQUFhO0FBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDckUsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFO0FBQzdCLFFBQVEsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hGLFFBQVEsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN4RixRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDMUIsWUFBWSxPQUFPLElBQUksQ0FBQztBQUN4QixTQUFTO0FBQ1QsYUFBYSxJQUFJLFdBQVcsS0FBSyxXQUFXLENBQUMsZUFBZSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ3BJLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxLQUFLO0FBQ0w7O0FDdk9PLE1BQU0sUUFBUSxHQUFHO0FBQ3hCLElBQUksTUFBTSxFQUFFLDJ2QkFBMnZCO0FBQ3Z3QixJQUFJLFlBQVksRUFBRSx3Z0NBQXdnQztBQUMxaEMsSUFBSSxXQUFXLEVBQUUsK21CQUErbUI7QUFDaG9CLElBQUksUUFBUSxFQUFFLDJzQkFBMnNCO0FBQ3p0QixDQUFDOztBQ0hNLE1BQU0sY0FBYyxHQUFHLENBQUMsWUFBWSxLQUFLO0FBQ2hELElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDdEMsSUFBSSxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM5RCxJQUFJLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFGLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQzs7QUNQTSxNQUFNLE9BQU8sR0FBRztBQUN2QixJQUFJLElBQUksRUFBRSxRQUFRO0FBQ2xCLElBQUksTUFBTSxFQUFFLFFBQVE7QUFDcEIsQ0FBQzs7YUNJTSxNQUFNLElBQUksQ0FBQztBQUNsQixJQUFJLE9BQU8sQ0FBQztBQUNaLElBQUksU0FBUyxDQUFDO0FBQ2Q7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDekIsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMvQjtBQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUMxRixRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO0FBQy9GLFlBQVksSUFBSSxFQUFFLFdBQVc7QUFDN0IsWUFBWSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO0FBQ25DLFlBQVksT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO0FBQ3hFLFlBQVksS0FBSyxFQUFFO0FBQ25CLGdCQUFnQixHQUFHLEVBQUUsRUFBRTtBQUN2QixnQkFBZ0IsS0FBSyxFQUFFLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQztBQUN0SSxnQkFBZ0IsV0FBVyxFQUFFLElBQUk7QUFDakMsZ0JBQWdCLGVBQWUsRUFBRSxDQUFDO0FBQ2xDLGFBQWE7QUFDYixZQUFZLE9BQU8sRUFBRSxLQUFLO0FBQzFCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFO0FBQzVCLFFBQVEsSUFBSTtBQUNaLFlBQVksTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxFQUFFO0FBQ3BCLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEcsWUFBWSxNQUFNLEdBQUcsQ0FBQztBQUN0QixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVDLFFBQVEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkUsUUFBUSxJQUFJLEtBQUssRUFBRTtBQUNuQixZQUFZLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLFNBQVM7QUFDVCxRQUFRLE1BQU0sSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3hCLFFBQVEsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDeEQsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQzFCLFlBQVksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0UsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyx5REFBeUQsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdHLFlBQVksSUFBSTtBQUNoQixnQkFBZ0IsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDN0MsZ0JBQWdCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7QUFDMUMsb0JBQW9CLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ2pFLG9CQUFvQixJQUFJLE9BQU8sRUFBRTtBQUNqQyx3QkFBd0IsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sR0FBRyxFQUFFO0FBQ3hCLGdCQUFnQixZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDM0MsUUFBUSxJQUFJLEtBQUssRUFBRTtBQUNuQixZQUFZLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUN2RSxZQUFZLE1BQU0sSUFBSSxDQUFDO0FBQ3ZCLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzFCLGdCQUFnQixjQUFjO0FBQzlCLGdCQUFnQixHQUFHLEVBQUUsSUFBSTtBQUN6QixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxNQUFNLGVBQWUsR0FBRyxHQUFHO0FBQy9CO0FBQ0EsSUFBSSxzQkFBc0IsR0FBRztBQUM3QixRQUFRLE9BQU87QUFDZixZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7QUFDdkMsYUFBYTtBQUNiLFlBQVksUUFBUSxFQUFFO0FBQ3RCLGdCQUFnQixRQUFRLEVBQUUsT0FBTztBQUNqQyxhQUFhO0FBQ2IsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksTUFBTSxFQUFFLEdBQUc7QUFDZixRQUFRLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsWUFBWSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ3RCLFlBQVksY0FBYztBQUMxQixZQUFZLEdBQUcsRUFBRSxJQUFJO0FBQ3JCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLEdBQUc7QUFDakIsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUNuRSxRQUFRLE9BQU8sT0FBTyxDQUFDO0FBQ3ZCLFlBQVksR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUN0QixZQUFZLGNBQWM7QUFDMUIsWUFBWSxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztBQUN4RSxZQUFZLEdBQUcsRUFBRSxJQUFJO0FBQ3JCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksTUFBTSxjQUFjLEdBQUc7QUFDM0IsUUFBUSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDakYsS0FBSztBQUNMLElBQUksTUFBTSxlQUFlLEdBQUc7QUFDNUIsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUNuRSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hDLFlBQVksR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUN0QixZQUFZLGNBQWM7QUFDMUIsWUFBWSxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUM7QUFDckMsWUFBWSxHQUFHLEVBQUUsS0FBSztBQUN0QixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJO0FBQ2pELFlBQVksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsWUFBWSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRCxZQUFZLE9BQU8sT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2pELFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFO0FBQ2xDLFFBQVEsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUs7QUFDaEQsWUFBWSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDeEcsWUFBWSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SCxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDs7QUNoSU8sTUFBTSxLQUFLLFNBQVNBLE1BQUksQ0FBQztBQUNoQyxJQUFJLE9BQU8sQ0FBQztBQUNaLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxRQUFRLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUM1SCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsRCxRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLEtBQUs7QUFDTDtBQUNBLElBQUksTUFBTSxlQUFlLEdBQUc7QUFDNUIsUUFBUSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxRQUFRLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUM7QUFDdkcsUUFBUSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0RBQXdELENBQUMsQ0FBQyxDQUFDO0FBQzFILEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRyxNQUFNO0FBQ3ZCLFFBQVEsT0FBTztBQUNmLFlBQVksS0FBSyxFQUFFLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RSxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEQsWUFBWSxXQUFXLEVBQUU7QUFDekIsZ0JBQWdCLFdBQVcsRUFBRSxHQUFHO0FBQ2hDLGdCQUFnQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQ2xFLGdCQUFnQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO0FBQy9DLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFO0FBQzFCLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0FBQy9DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDO0FBQ047O0FDaENPLE1BQU0sS0FBSyxTQUFTQSxNQUFJLENBQUM7QUFDaEMsSUFBSSxPQUFPLENBQUM7QUFDWixJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsUUFBUSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7QUFDdkksS0FBSztBQUNMO0FBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbEQsUUFBUSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMvQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sZUFBZSxHQUFHO0FBQzVCLFFBQVEsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLENBQUMsQ0FBQztBQUM5RyxLQUFLO0FBQ0wsSUFBSSxVQUFVLEdBQUcsTUFBTTtBQUN2QixRQUFRLE9BQU87QUFDZixZQUFZLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLFdBQVcsRUFBRTtBQUN6QixnQkFBZ0IsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTTtBQUNwRSxnQkFBZ0IsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU07QUFDM0QsZ0JBQWdCLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQy9ELGdCQUFnQixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTTtBQUMvRCxhQUFhO0FBQ2IsWUFBWSxPQUFPLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztBQUM1RCxZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFO0FBQzFCLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0FBQy9DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDO0FBQ047O0FDaENPLE1BQU0sUUFBUSxTQUFTQSxNQUFJLENBQUM7QUFDbkMsSUFBSSxPQUFPLENBQUM7QUFDWixJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsUUFBUSxPQUFPLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwRixLQUFLO0FBQ0w7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZELFFBQVEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDL0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxVQUFVLEdBQUcsTUFBTTtBQUN2QixRQUFRLE9BQU87QUFDZixZQUFZLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLFdBQVcsRUFBRTtBQUN6QixnQkFBZ0IsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU07QUFDOUQsZ0JBQWdCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU07QUFDbEUsZ0JBQWdCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQzVELGdCQUFnQix5QkFBeUIsRUFBRSxLQUFLO0FBQ2hELGdCQUFnQixvQkFBb0IsRUFBRSw4Q0FBOEM7QUFDcEYsYUFBYTtBQUNiLFlBQVksUUFBUSxFQUFFO0FBQ3RCLGdCQUFnQixRQUFRLEVBQUU7QUFDMUIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7QUFDL0MsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTLENBQUM7QUFDVixLQUFLLENBQUM7QUFDTjs7QUMzQk8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUs7QUFDbkQsSUFBSSxRQUFRLE9BQU8sQ0FBQyxJQUFJO0FBQ3hCLFFBQVEsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVTtBQUN2RCxZQUFZLE9BQU8sSUFBSSxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlFLFFBQVEsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUNsRCxZQUFZLE9BQU8sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RSxRQUFRLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUs7QUFDbEQsWUFBWSxPQUFPLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEUsS0FBSztBQUNMLENBQUM7O0FDUkQ7QUFDQTtBQUNPLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxLQUFLO0FBQzFDLElBQUksT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUs7QUFDakYsUUFBUSxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsVUFBVSxFQUFFO0FBQzNDLFlBQVksTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUMzRCxZQUFZLE9BQU8sWUFBWSxLQUFLLElBQUksSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLENBQUM7QUFDaEYsU0FBUztBQUNULFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7O0FDQUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sSUFBSSxDQUFDO0FBQ2xCLElBQUksT0FBTyxDQUFDO0FBQ1osSUFBSSxRQUFRLENBQUM7QUFDYjtBQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdEYsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRztBQUNsQixRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN6QyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDL0IsWUFBWSxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQy9DLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM3RixLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHO0FBQ2xCLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUNoQyxZQUFZLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLFNBQVM7QUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO0FBQ25DLFlBQVksTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsU0FBUztBQUNULFFBQVEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELFFBQVEsTUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDeEIsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLEdBQUc7QUFDakIsUUFBUSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckQsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLFlBQVksTUFBTSxJQUFJLENBQUM7QUFDdkIsZ0JBQWdCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDOUMsZ0JBQWdCLGNBQWM7QUFDOUIsZ0JBQWdCLEdBQUcsRUFBRSxJQUFJO0FBQ3pCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE1BQU0sS0FBSyxHQUFHO0FBQ2xCLFFBQVEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxRQUFRLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFCLEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxDQUFDO0FBQ2hELFFBQVEsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFDOUUsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDdEUsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUMzRSxTQUFTO0FBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFDckYsU0FBUztBQUNULFFBQVEsT0FBTyw0QkFBNEIsQ0FBQztBQUM1QyxLQUFLO0FBQ0wsSUFBSSxNQUFNLGtCQUFrQixHQUFHO0FBQy9CLFFBQVEsSUFBSTtBQUNaLFlBQVksTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN2RyxZQUFZLElBQUksUUFBUSxFQUFFO0FBQzFCLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO0FBQzdDLG9CQUFvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO0FBQzlDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ2hGLHdCQUF3QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25HLHdCQUF3QixPQUFPLElBQUksQ0FBQztBQUNwQyxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxFQUFFO0FBQ3BCLFlBQVksT0FBTyxLQUFLLENBQUM7QUFDekIsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDakMsUUFBUSxPQUFPLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7QUFDdkQsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7QUFDM0MsWUFBWSxJQUFJO0FBQ2hCLFlBQVksR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRztBQUNqQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqQixLQUFLO0FBQ0wsSUFBSSxnQkFBZ0IsR0FBRztBQUN2QixRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO0FBQ25DLFlBQVksT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0QsU0FBUztBQUNULGFBQWEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUN2QyxZQUFZLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakUsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLHNCQUFzQixHQUFHO0FBQzdCLFFBQVEsT0FBTztBQUNmLFlBQVksUUFBUSxFQUFFO0FBQ3RCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUM5QyxhQUFhO0FBQ2IsWUFBWSxRQUFRLEVBQUU7QUFDdEIsZ0JBQWdCLFFBQVEsRUFBRSxPQUFPO0FBQ2pDLGFBQWE7QUFDYixTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxNQUFNLEVBQUUsR0FBRztBQUNmLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7QUFDckQsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUMsUUFBUSxNQUFNLEtBQUssQ0FBQztBQUNwQixZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUMsWUFBWSxjQUFjO0FBQzFCLFlBQVksR0FBRyxFQUFFLElBQUk7QUFDckIsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUMxQixZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3pELFlBQVksTUFBTSxTQUFTLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RGLFlBQVksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUM1QixnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RCxnQkFBZ0IsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDekQsb0JBQW9CLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDbEQsb0JBQW9CLGNBQWM7QUFDbEMsb0JBQW9CLEdBQUcsRUFBRSxJQUFJO0FBQzdCLGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsc0VBQXNFLENBQUMsQ0FBQyxDQUFDO0FBQzdJLGdCQUFnQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQ2pELGFBQWE7QUFDYixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztBQUM3QyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLEtBQUs7QUFDTCxJQUFJLE1BQU0sSUFBSSxHQUFHO0FBQ2pCLFFBQVEsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDbkUsUUFBUSxNQUFNLE9BQU8sQ0FBQztBQUN0QixZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUMsWUFBWSxjQUFjO0FBQzFCLFlBQVksY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7QUFDeEUsWUFBWSxHQUFHLEVBQUUsSUFBSTtBQUNyQixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLE1BQU0sZUFBZSxHQUFHO0FBQzVCLFFBQVEsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDbkUsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNoQyxZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUMsWUFBWSxjQUFjO0FBQzFCLFlBQVksY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDO0FBQ3JDLFlBQVksR0FBRyxFQUFFLEtBQUs7QUFDdEIsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSTtBQUNqRCxZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLFlBQVksTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsWUFBWSxPQUFPLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3pDLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksTUFBTSxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtBQUNwQyxRQUFRLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRixRQUFRLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3JELFFBQVEsSUFBSSxPQUFPLEVBQUU7QUFDckIsWUFBWSxNQUFNLFNBQVMsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEYsWUFBWSxNQUFNLE9BQU8sR0FBRyxTQUFTLElBQUksTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUN6RSxZQUFZLElBQUksT0FBTyxFQUFFO0FBQ3pCLGdCQUFnQixPQUFPLElBQUksQ0FBQztBQUM1QixhQUFhO0FBQ2IsaUJBQWlCLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtBQUNuQyxnQkFBZ0IsT0FBTyxLQUFLLENBQUM7QUFDN0IsYUFBYTtBQUNiLFlBQVksTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLFlBQVksT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCxTQUFTO0FBQ1QsYUFBYSxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7QUFDN0IsWUFBWSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEUsWUFBWSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xELFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksY0FBYyxHQUFHO0FBQ3JCLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUU7QUFDekQsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1QsUUFBUSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUNoRCxZQUFZLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7QUFDMUQsa0JBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFFLGtCQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUNuQyxZQUFZLElBQUk7QUFDaEIsZ0JBQWdCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0QsZ0JBQWdCLElBQUksYUFBYSxFQUFFO0FBQ25DLG9CQUFvQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO0FBQ3hFLHdCQUF3QixPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pFLHFCQUFxQjtBQUNyQix5QkFBeUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTtBQUN6RCx3QkFBd0IsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRSxxQkFBcUI7QUFDckIseUJBQXlCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7QUFDeEQsd0JBQXdCLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakUscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0FBQzVELFFBQVEsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2hFLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtBQUN2QyxZQUFZLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLFlBQVksTUFBTSxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEcsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE1BQU0sU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM3RixTQUFTO0FBQ1QsUUFBUSxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sS0FBSztBQUMvQyxZQUFZLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUMxTSxZQUFZLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pILFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksc0JBQXNCLEdBQUc7QUFDN0IsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07QUFDM0MsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVE7QUFDcEMsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsRCxRQUFRLE9BQU8sQ0FBQyw4Q0FBOEMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0UsS0FBSztBQUNMLElBQUksTUFBTSxtQkFBbUIsR0FBRztBQUNoQyxRQUFRLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3JELFFBQVEsTUFBTSxTQUFTLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xGLFFBQVEsSUFBSSxTQUFTLEVBQUU7QUFDdkIsWUFBWSxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDM0UsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxFQUFFO0FBQ3ZDLFFBQVEsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUs7QUFDaEQsWUFBWSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDeEssWUFBWSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SCxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRTtBQUM1QixRQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFZLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVU7QUFDM0QsZ0JBQWdCLE9BQU8sY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDekQsWUFBWSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ3RELGdCQUFnQixPQUFPLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwRCxZQUFZLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUs7QUFDdEQsZ0JBQWdCLE9BQU8sY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BELFNBQVM7QUFDVCxLQUFLO0FBQ0w7O0FDM1FPLE1BQU0sTUFBTSxTQUFTLElBQUksQ0FBQztBQUNqQyxJQUFJLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQy9DLElBQUksV0FBVyxHQUFHLGtFQUFrRSxDQUFDO0FBQ3JGO0FBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQ3pCLFFBQVEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBLElBQUksVUFBVSxHQUFHO0FBQ2pCLFFBQVEsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7QUFDM0QsUUFBUSxPQUFPO0FBQ2YsWUFBWSxLQUFLLEVBQUU7QUFDbkIsZ0JBQWdCLE9BQU8sRUFBRSxjQUFjLENBQUMsY0FBYyxDQUFDO0FBQ3ZELGdCQUFnQixpQkFBaUIsRUFBRSxDQUFDO0FBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsQ0FBQztBQUNsRSxhQUFhO0FBQ2IsWUFBWSxLQUFLLEVBQUU7QUFDbkIsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ2pELGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMxRCxhQUFhO0FBQ2IsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ2hDLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sNEJBQTRCLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2hFLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUNoQyxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RCxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO0FBQ3BILFNBQVM7QUFDVCxRQUFRLE9BQU8sNEJBQTRCLENBQUM7QUFDNUMsS0FBSztBQUNMLElBQUksTUFBTSxrQkFBa0IsR0FBRztBQUMvQixRQUFRLElBQUk7QUFDWixZQUFZLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN2SSxZQUFZLElBQUksUUFBUSxFQUFFLE1BQU0sS0FBSyxHQUFHLEVBQUU7QUFDMUMsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0YsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0FBQzVCLGFBQWE7QUFDYixZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxFQUFFO0FBQ3BCLFlBQVksT0FBTyxLQUFLLENBQUM7QUFDekIsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksdUJBQXVCLEdBQUc7QUFDOUIsUUFBUSxPQUFPO0FBQ2YsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0FBQ3JHLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNqRixZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDakYsWUFBWSw4QkFBOEIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN2RSxZQUFZLG9DQUFvQyxFQUFFLE1BQU07QUFDeEQsWUFBWSxhQUFhLEVBQUUsUUFBUSxDQUFDLE1BQU07QUFDMUMsWUFBWSxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHO0FBQzdDLFlBQVksZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7QUFDM0QsWUFBWSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRO0FBQy9ELFlBQVksYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRCxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0w7QUFDQTs7QUNyRU8sTUFBTSxTQUFTLFNBQVMsSUFBSSxDQUFDO0FBQ3BDLElBQUksSUFBSSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDbEQsSUFBSSxXQUFXLEdBQUcsdUVBQXVFLENBQUM7QUFDMUY7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDekIsUUFBUSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxVQUFVLEdBQUc7QUFDakIsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztBQUMzRCxRQUFRLE9BQU87QUFDZixZQUFZLEtBQUssRUFBRTtBQUNuQixnQkFBZ0IsT0FBTyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUM7QUFDdkQsZ0JBQWdCLGlCQUFpQixFQUFFLENBQUM7QUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQzdDO0FBQ0EsMEVBQTBFLENBQUM7QUFDM0UsYUFBYTtBQUNiLFlBQVksS0FBSyxFQUFFO0FBQ25CLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztBQUNqRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7QUFDMUQsYUFBYTtBQUNiLFlBQVksV0FBVztBQUN2QixZQUFZLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUNoQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxVQUFVLEdBQUc7QUFDakIsUUFBUSxNQUFNLDRCQUE0QixHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNoRSxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDaEMsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsb0VBQW9FLENBQUMsQ0FBQztBQUNwSCxTQUFTO0FBQ1QsUUFBUSxPQUFPLDRCQUE0QixDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBLElBQUksdUJBQXVCLEdBQUc7QUFDOUIsUUFBUSxPQUFPO0FBQ2YsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pGLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNqRixZQUFZLDhCQUE4QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3ZFLFlBQVksVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRztBQUN6QyxZQUFZLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRO0FBQ3ZELFlBQVksZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7QUFDM0QsWUFBWSxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVELFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTDtBQUNBOztBQ3hETyxNQUFNLFVBQVUsU0FBUyxJQUFJLENBQUM7QUFDckMsSUFBSSxJQUFJLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNuRCxJQUFJLFdBQVcsR0FBRywwRUFBMEUsQ0FBQztBQUM3RjtBQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0w7QUFDQSxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0FBQzNELFFBQVEsT0FBTztBQUNmLFlBQVksS0FBSyxFQUFFO0FBQ25CLGdCQUFnQixPQUFPLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQztBQUN2RCxnQkFBZ0IsaUJBQWlCLEVBQUUsQ0FBQztBQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELENBQUM7QUFDN0QsYUFBYTtBQUNiLFlBQVksS0FBSyxFQUFFO0FBQ25CLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztBQUNqRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7QUFDMUQsYUFBYTtBQUNiLFlBQVksV0FBVztBQUN2QixZQUFZLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUNoQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxVQUFVLEdBQUc7QUFDakIsUUFBUSxNQUFNLDRCQUE0QixHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNoRSxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDaEMsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsaUVBQWlFLENBQUMsQ0FBQztBQUNqSCxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBQzFGLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7QUFDOUYsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQztBQUNuRyxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBQzFGLFNBQVM7QUFDVCxRQUFRLE9BQU8sNEJBQTRCLENBQUM7QUFDNUMsS0FBSztBQUNMO0FBQ0EsSUFBSSx1QkFBdUIsR0FBRztBQUM5QixRQUFRLE9BQU87QUFDZixZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7QUFDckcsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pGLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNqRixZQUFZLDhCQUE4QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3ZFLFlBQVksaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFVBQVU7QUFDbEQsWUFBWSxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHO0FBQzdDLFlBQVksZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7QUFDM0QsWUFBWSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRO0FBQy9ELFlBQVksYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRCxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0w7QUFDQTs7QUMxRE8sTUFBTSxJQUFJLFNBQVMsSUFBSSxDQUFDO0FBQy9CLElBQUksSUFBSSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDN0MsSUFBSSxXQUFXLEdBQUcsNkRBQTZELENBQUM7QUFDaEY7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDekIsUUFBUSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxVQUFVLEdBQUc7QUFDakIsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztBQUMzRCxRQUFRLE9BQU87QUFDZixZQUFZLEtBQUssRUFBRTtBQUNuQixnQkFBZ0IsT0FBTyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUM7QUFDdkQsZ0JBQWdCLGlCQUFpQixFQUFFLENBQUM7QUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELENBQUM7QUFDNUQsYUFBYTtBQUNiLFlBQVksS0FBSyxFQUFFO0FBQ25CLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzNDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMxRCxhQUFhO0FBQ2IsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ2hDLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sNEJBQTRCLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2hFLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUNoQyxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RCxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO0FBQ3RILFNBQVM7QUFDVCxRQUFRLE9BQU8sNEJBQTRCLENBQUM7QUFDNUMsS0FBSztBQUNMO0FBQ0EsSUFBSSx1QkFBdUIsR0FBRztBQUM5QjtBQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQy9HLFFBQVEsT0FBTztBQUNmLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxFQUFFLHdCQUF3QixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtBQUNyRyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDakYsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pGLFlBQVksOEJBQThCLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDdkUsWUFBWSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsVUFBVTtBQUNsRCxZQUFZLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7QUFDN0MsWUFBWSxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtBQUMzRCxZQUFZLG1CQUFtQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7QUFDL0QsWUFBWSxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTTtBQUN6RCxZQUFZLGFBQWEsRUFBRSxNQUFNO0FBQ2pDLFlBQVksb0JBQW9CLEVBQUUsUUFBUSxDQUFDLElBQUk7QUFDL0MsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMO0FBQ0E7O0FDMURPLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBTyxLQUFLO0FBQzNDLElBQUksUUFBUSxPQUFPLENBQUMsSUFBSTtBQUN4QixRQUFRLEtBQUsscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ25HLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxVQUFVLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDL0csUUFBUSxLQUFLLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RyxRQUFRLEtBQUsscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdHLEtBQUs7QUFDTCxDQUFDOztBQ1pNLE1BQU0saUNBQWlDLEdBQUc7QUFDakQsSUFBSSxjQUFjLEVBQUUsQ0FBQyxHQUFHLEtBQUs7QUFDN0IsUUFBUSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDakQsWUFBWSxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztBQUMvRCxZQUFZLElBQUksa0JBQWtCLEVBQUU7QUFDcEMsZ0JBQWdCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGtCQUFrQixDQUFDLENBQUM7QUFDcEcsZ0JBQWdCLElBQUksY0FBYyxFQUFFO0FBQ3BDLG9CQUFvQixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztBQUNyRCxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQyxLQUFLO0FBQ0wsQ0FBQzs7QUNKRCxNQUFNLE9BQU8sR0FBRyxJQUFJQyxTQUFTLEVBQUUsQ0FBQztBQUNoQyxNQUFNLE9BQU8sR0FBRyxNQUFNO0FBQ3RCLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksT0FBTztBQUNYLFFBQVEsTUFBTSxFQUFFLE9BQU8sT0FBTyxLQUFLO0FBQ25DLFlBQVksT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUs7QUFDcEQsZ0JBQWdCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDO0FBQ3RDLG9CQUFvQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7QUFDcEMsb0JBQW9CLFFBQVEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7QUFDeEUsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixnQkFBZ0IsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO0FBQzdFLG9CQUFvQixNQUFNLElBQUksMEJBQTBCLENBQUMsd0NBQXdDLENBQUMsQ0FBQztBQUNuRyxpQkFBaUI7QUFDakIscUJBQXFCLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDckUsb0JBQW9CLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQ3JGLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtBQUNoRSxvQkFBb0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO0FBQzlHLGlCQUFpQjtBQUNqQixnQkFBZ0IsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyRSxnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDbkMsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsa0dBQWtHLENBQUMsQ0FBQztBQUN4SSxpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQ2xDLG9CQUFvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUNqRSxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNsQyx3QkFBd0IsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0FBQ3pILHFCQUFxQjtBQUNyQix5QkFBeUI7QUFDekIsd0JBQXdCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQzlDLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDbkUsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUksaUJBQWlCO0FBQ2pCLGdCQUFnQixRQUFRLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELGdCQUFnQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvRCxnQkFBZ0IsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0QsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTO0FBQ1QsUUFBUSxZQUFZLEVBQUUsWUFBWTtBQUNsQyxZQUFZLElBQUksUUFBUSxFQUFFO0FBQzFCLGdCQUFnQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvRCxnQkFBZ0IsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDeEQsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNELGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBQ0YsT0FBTztBQUNQLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNyQixLQUFLLFdBQVcsQ0FBQyxDQUFDO0FBQ2xCLHdGQUF3RixDQUFDLENBQUM7QUFDMUYsS0FBSyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQztBQUNqQyxLQUFLLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQztBQUNyRCxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQztBQUM5QixLQUFLLG9CQUFvQixDQUFDLEtBQUssQ0FBQztBQUNoQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLE9BQU87QUFDUCxLQUFLLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMzRCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDO0FBQ3hGLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDREQUE0RCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdOLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLGdFQUFnRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9ILEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlDQUFpQyxFQUFFLG1FQUFtRSxDQUFDLENBQUM7QUFDbEksS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsK0JBQStCLEVBQUUsOENBQThDLENBQUMsQ0FBQztBQUMzRyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckYsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLG9FQUFvRSxDQUFDLENBQUM7QUFDckgsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLHdEQUF3RCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakcsS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuRSxPQUFPO0FBQ1AsS0FBSyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUMvQyxLQUFLLFdBQVcsQ0FBQyxtQ0FBbUMsQ0FBQztBQUNyRCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pKLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDBEQUEwRCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNOLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLDBEQUEwRCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pILEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlDQUFpQyxFQUFFLDZEQUE2RCxDQUFDLENBQUM7QUFDNUgsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQzNHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLCtCQUErQixDQUFDLENBQUM7QUFDaEYsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLGtEQUFrRCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakcsS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuSCxPQUFPO0FBQ1AsS0FBSyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNyRCxLQUFLLFdBQVcsQ0FBQyx5Q0FBeUMsQ0FBQztBQUMzRCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JLLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLGdFQUFnRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2pPLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLGdFQUFnRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9ILEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlDQUFpQyxFQUFFLG1FQUFtRSxDQUFDLENBQUM7QUFDbEksS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQzNHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLCtCQUErQixDQUFDLENBQUM7QUFDaEYsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLHdEQUF3RCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakcsS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6SCxPQUFPO0FBQ1AsS0FBSyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQUNwRCxLQUFLLFdBQVcsQ0FBQyx3Q0FBd0MsQ0FBQztBQUMxRCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25LLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLCtEQUErRCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hPLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLCtEQUErRCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlILEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlDQUFpQyxFQUFFLGtFQUFrRSxDQUFDLENBQUM7QUFDakksS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQzNHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLCtCQUErQixDQUFDLENBQUM7QUFDaEYsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLHVEQUF1RCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxxREFBcUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakcsS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4SCxPQUFPO0FBQ1AsS0FBSyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNqRCxLQUFLLFdBQVcsQ0FBQyxxQ0FBcUMsQ0FBQztBQUN2RCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdKLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDREQUE0RCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdOLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLDREQUE0RCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNILEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlDQUFpQyxFQUFFLCtEQUErRCxDQUFDLENBQUM7QUFDOUgsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQzNHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLCtCQUErQixDQUFDLENBQUM7QUFDaEYsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLG9EQUFvRCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxrREFBa0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakcsS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNySCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTTtBQUMzQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7QUFDdEUsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixDQUFDLENBQUMifQ==
|