dcdx 1.3.0-next.17 → 1.3.0-next.18
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 +905 -905
- package/lib/commands/build.js +899 -899
- package/lib/commands/database.js +902 -901
- package/lib/commands/debug.js +904 -902
- package/lib/commands/install.js +899 -899
- package/lib/commands/reset.js +904 -902
- package/lib/commands/run.js +904 -902
- package/lib/commands/stop.js +904 -902
- package/lib/commands/update.js +899 -899
- package/lib/index.js +1 -1
- package/package.json +1 -1
package/lib/commands/stop.js
CHANGED
|
@@ -66,555 +66,555 @@ const ActionHandler = async (program, { action, errorHandler }, options) => {
|
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
var jira = [
|
|
69
|
-
"
|
|
69
|
+
"latest",
|
|
70
|
+
"9.15.2",
|
|
71
|
+
"9.15-jdk17",
|
|
72
|
+
"9.15.2-jdk17",
|
|
70
73
|
"10.0.0",
|
|
74
|
+
"10.0.0-ubuntu-jdk17",
|
|
71
75
|
"10.0.0-jdk17",
|
|
72
|
-
"9.15.1-jdk17",
|
|
73
76
|
"9.15.1",
|
|
74
77
|
"9.15.1-ubuntu-jdk17",
|
|
75
|
-
"
|
|
78
|
+
"9.15.1-jdk17",
|
|
76
79
|
"10.0.1",
|
|
77
80
|
"10.0-ubuntu-jdk17",
|
|
78
|
-
"10.0",
|
|
79
|
-
"10.0-jdk17",
|
|
81
|
+
"10.0.1-jdk17",
|
|
80
82
|
"10.0.1-ubuntu-jdk17",
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
+
"10.0-jdk17",
|
|
84
|
+
"10.0",
|
|
85
|
+
"9.15-ubuntu-jdk17",
|
|
83
86
|
"9.15",
|
|
87
|
+
"9.15.2-ubuntu-jdk17",
|
|
84
88
|
"9.12.5-jdk17",
|
|
89
|
+
"9.12.5",
|
|
85
90
|
"9.12.5-ubuntu-jdk17",
|
|
86
|
-
"9.
|
|
87
|
-
"9.15-jdk17",
|
|
88
|
-
"9.15.2",
|
|
89
|
-
"9.15-ubuntu-jdk17",
|
|
91
|
+
"9.12.1-jdk17",
|
|
90
92
|
"9.12.1",
|
|
91
93
|
"9.12.1-ubuntu-jdk17",
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"9.
|
|
94
|
+
"10.1.1-jdk17",
|
|
95
|
+
"10.1.1",
|
|
96
|
+
"10.1.1-ubuntu-jdk17",
|
|
97
|
+
"9.16.0",
|
|
98
|
+
"9.16.0-jdk17",
|
|
99
|
+
"9.16.0-ubuntu-jdk17",
|
|
100
|
+
"9.12.10-jdk17",
|
|
101
|
+
"9.7.1",
|
|
96
102
|
"9.7.1-ubuntu-jdk11",
|
|
103
|
+
"9.12.6-jdk17",
|
|
104
|
+
"9.4.12-ubuntu-jdk11",
|
|
105
|
+
"9.12.10",
|
|
106
|
+
"9.12.6-ubuntu-jdk17",
|
|
97
107
|
"9.12.6",
|
|
98
|
-
"9.7.1-jdk11",
|
|
99
|
-
"10.1",
|
|
100
|
-
"10.1.2",
|
|
101
|
-
"10.1-ubuntu-jdk17",
|
|
102
|
-
"9.7.1",
|
|
103
|
-
"9.14-ubuntu-jdk11",
|
|
104
|
-
"10.1.2-jdk17",
|
|
105
108
|
"9.12.10-ubuntu-jdk17",
|
|
106
|
-
"9.
|
|
107
|
-
"
|
|
108
|
-
"9.12.
|
|
109
|
-
"9.12.10-jdk17",
|
|
109
|
+
"9.12.8-jdk17",
|
|
110
|
+
"9.12.8",
|
|
111
|
+
"9.12.12",
|
|
110
112
|
"9.12.11-ubuntu-jdk17",
|
|
111
|
-
"9.
|
|
112
|
-
"9.
|
|
113
|
-
"10.1-jdk17",
|
|
114
|
-
"9.12.7-jdk17",
|
|
115
|
-
"10.1.1",
|
|
113
|
+
"9.7.1-jdk11",
|
|
114
|
+
"9.12.11",
|
|
116
115
|
"9.12.11-jdk17",
|
|
117
|
-
"
|
|
118
|
-
"9.
|
|
119
|
-
"9.
|
|
120
|
-
"9.
|
|
121
|
-
"9.
|
|
122
|
-
"
|
|
116
|
+
"9.12.12-ubuntu-jdk17",
|
|
117
|
+
"9.12.12-jdk17",
|
|
118
|
+
"9.4.12",
|
|
119
|
+
"9.12.8-ubuntu-jdk17",
|
|
120
|
+
"9.17.0-jdk11",
|
|
121
|
+
"9.12.9-jdk17",
|
|
123
122
|
"9.16.1",
|
|
124
|
-
"
|
|
125
|
-
"9.
|
|
126
|
-
"
|
|
127
|
-
"
|
|
123
|
+
"10.1-jdk17",
|
|
124
|
+
"9.17.0-ubuntu-jdk11",
|
|
125
|
+
"10.1.2-jdk17",
|
|
126
|
+
"10.2",
|
|
127
|
+
"10.1-ubuntu-jdk17",
|
|
128
128
|
"9.16-jdk17",
|
|
129
|
-
"9.7.2-jdk11",
|
|
130
|
-
"9.16.0-ubuntu-jdk17",
|
|
131
|
-
"9.7-ubuntu-jdk11",
|
|
132
|
-
"9.4.26",
|
|
133
|
-
"9.4.26-jdk11",
|
|
134
129
|
"9.16-ubuntu-jdk17",
|
|
135
|
-
"9.16.0",
|
|
136
|
-
"9.15.0-jdk11",
|
|
137
|
-
"9.7.2-ubuntu-jdk11",
|
|
138
|
-
"9.12.12-jdk17",
|
|
139
|
-
"9.12.7-jdk11",
|
|
140
|
-
"9.4.7",
|
|
141
|
-
"9.16.1-jdk17",
|
|
142
|
-
"9.12.7-ubuntu-jdk11",
|
|
143
|
-
"9.16.1-ubuntu-jdk17",
|
|
144
|
-
"9.4.2-jdk11",
|
|
145
|
-
"9.12.12",
|
|
146
|
-
"9.10.0-ubuntu-jdk11",
|
|
147
130
|
"9.16",
|
|
148
|
-
"
|
|
149
|
-
"9.12.
|
|
150
|
-
"9.10.0-jdk11",
|
|
151
|
-
"9.12.12-ubuntu-jdk17",
|
|
152
|
-
"9.12.8-jdk17",
|
|
131
|
+
"10.1.2-ubuntu-jdk17",
|
|
132
|
+
"9.12.7",
|
|
153
133
|
"9.4.12-jdk11",
|
|
154
|
-
"
|
|
155
|
-
"
|
|
134
|
+
"10.1.2",
|
|
135
|
+
"ubuntu-jdk17",
|
|
136
|
+
"10.1",
|
|
137
|
+
"9.7-ubuntu-jdk11",
|
|
138
|
+
"9.14-jdk11",
|
|
139
|
+
"9.15.0-jdk11",
|
|
140
|
+
"9.16.1-ubuntu-jdk17",
|
|
141
|
+
"10.2-ubuntu-jdk17",
|
|
142
|
+
"10.2.0-jdk17",
|
|
156
143
|
"9.4.7-ubuntu-jdk11",
|
|
144
|
+
"10-ubuntu-jdk17",
|
|
145
|
+
"10",
|
|
146
|
+
"9.16.1-jdk17",
|
|
147
|
+
"9.4.7-jdk11",
|
|
148
|
+
"9.12.7-ubuntu-jdk17",
|
|
149
|
+
"9.8.0-jdk11",
|
|
150
|
+
"9.12.7-jdk11",
|
|
151
|
+
"9.10.0-ubuntu-jdk11",
|
|
152
|
+
"9.4.7",
|
|
157
153
|
"9.15.0-ubuntu-jdk11",
|
|
158
|
-
"9.12.
|
|
159
|
-
"9.
|
|
160
|
-
"9.12-jdk11",
|
|
161
|
-
"9.12.15-jdk11",
|
|
162
|
-
"9.4.12",
|
|
163
|
-
"9.12.9-jdk17",
|
|
164
|
-
"9.12-ubuntu-jdk11",
|
|
165
|
-
"9.10.0",
|
|
166
|
-
"9.12.9-ubuntu-jdk17",
|
|
167
|
-
"9.12.15-ubuntu-jdk11",
|
|
168
|
-
"9.8.0",
|
|
169
|
-
"latest",
|
|
170
|
-
"9.4.12-ubuntu-jdk11",
|
|
171
|
-
"9.8.0-ubuntu-jdk11",
|
|
154
|
+
"9.12.13-ubuntu-jdk17",
|
|
155
|
+
"9.7.2-jdk11",
|
|
172
156
|
"9.12.9",
|
|
173
|
-
"9.
|
|
157
|
+
"9.12.7-jdk17",
|
|
158
|
+
"9.8.1-ubuntu-jdk11",
|
|
159
|
+
"9.4.26",
|
|
160
|
+
"9.14-ubuntu-jdk11",
|
|
161
|
+
"9.7.2",
|
|
162
|
+
"9.7.2-ubuntu-jdk11",
|
|
163
|
+
"9.7.2-ubi9-jdk17",
|
|
164
|
+
"9.8.1-jdk11",
|
|
165
|
+
"9.12.13",
|
|
174
166
|
"9.4.8-jdk11",
|
|
175
|
-
"
|
|
176
|
-
"9.
|
|
177
|
-
"9.
|
|
178
|
-
"9.12.
|
|
179
|
-
"
|
|
180
|
-
"9.
|
|
181
|
-
"10.
|
|
182
|
-
"
|
|
183
|
-
"9.12.
|
|
184
|
-
"9.4.20-ubuntu-jdk11",
|
|
185
|
-
"9.4.20-jdk11",
|
|
186
|
-
"9.4.27-ubuntu-jdk11",
|
|
187
|
-
"9.4.20",
|
|
188
|
-
"10",
|
|
189
|
-
"10-ubuntu-jdk17",
|
|
167
|
+
"9.7",
|
|
168
|
+
"9.14.1-ubuntu-jdk11",
|
|
169
|
+
"9.10.0-jdk11",
|
|
170
|
+
"9.12.9-ubuntu-jdk17",
|
|
171
|
+
"9.12-jdk11",
|
|
172
|
+
"9.7-jdk11",
|
|
173
|
+
"9.10.0",
|
|
174
|
+
"10.2.0",
|
|
175
|
+
"9.12.15-jdk11",
|
|
190
176
|
"10.2-jdk17",
|
|
191
|
-
"
|
|
192
|
-
"10
|
|
177
|
+
"9.7.2-ubi9",
|
|
178
|
+
"10-jdk17",
|
|
179
|
+
"9.4.2-jdk11",
|
|
180
|
+
"9.12.13-jdk17",
|
|
193
181
|
"9.4.8",
|
|
194
|
-
"9.
|
|
195
|
-
"9.
|
|
196
|
-
"
|
|
197
|
-
"9.12.8-ubuntu-jdk11",
|
|
182
|
+
"9.4.8-ubuntu-jdk11",
|
|
183
|
+
"9.14.1-jdk11",
|
|
184
|
+
"9.4.2",
|
|
198
185
|
"10.2.0-ubuntu-jdk17",
|
|
199
|
-
"9.17.0-jdk17",
|
|
200
|
-
"9.15.1-jdk11",
|
|
201
186
|
"jdk17",
|
|
202
|
-
"9.
|
|
203
|
-
"9.4.
|
|
204
|
-
"9.
|
|
187
|
+
"9.15.2-ubi9",
|
|
188
|
+
"9.4.2-ubuntu-jdk11",
|
|
189
|
+
"9.15.2-ubi9-jdk17",
|
|
205
190
|
"9.17.0",
|
|
206
|
-
"9.10.1",
|
|
207
|
-
"9.12.1-jdk11",
|
|
208
|
-
"9.4.9-jdk11",
|
|
209
|
-
"9.15.1-ubuntu-jdk11",
|
|
210
191
|
"9.10.1-jdk11",
|
|
211
|
-
"
|
|
212
|
-
"9.
|
|
213
|
-
"9.
|
|
214
|
-
"9.
|
|
215
|
-
"9.4.
|
|
216
|
-
"9.
|
|
217
|
-
"9.
|
|
192
|
+
"9.4.26-ubuntu-jdk11",
|
|
193
|
+
"9.4.27-ubuntu-jdk11",
|
|
194
|
+
"9.4.20",
|
|
195
|
+
"9.4.27-jdk11",
|
|
196
|
+
"9.4.27",
|
|
197
|
+
"9.17.0-ubuntu-jdk17",
|
|
198
|
+
"9.17.0-jdk17",
|
|
218
199
|
"9.17.4-ubi9-jdk17",
|
|
219
|
-
"9.17.
|
|
220
|
-
"9.
|
|
221
|
-
"9.
|
|
222
|
-
"9.8.1-ubuntu-jdk11",
|
|
223
|
-
"9.8.1-jdk11",
|
|
224
|
-
"9.15.2-ubi9-jdk17",
|
|
225
|
-
"9.4.14",
|
|
226
|
-
"9.17.1-ubuntu-jdk11",
|
|
227
|
-
"9.4-ubuntu-jdk11",
|
|
228
|
-
"9.10.1-ubi9-jdk17",
|
|
229
|
-
"9.8.1",
|
|
230
|
-
"10.0.0-ubi9",
|
|
231
|
-
"9.15.2-ubi9",
|
|
232
|
-
"9.8.2-ubuntu-jdk17",
|
|
233
|
-
"9.12.14",
|
|
234
|
-
"9.12.14-ubuntu-jdk17",
|
|
235
|
-
"9.4-jdk11",
|
|
236
|
-
"9.17.1-ubuntu-jdk17",
|
|
237
|
-
"9.8-jdk11",
|
|
238
|
-
"9.12.14-jdk17",
|
|
239
|
-
"9.4.28",
|
|
240
|
-
"9.8.2",
|
|
241
|
-
"9.12.2-jdk11",
|
|
242
|
-
"9.13.0",
|
|
200
|
+
"9.17.1-jdk17",
|
|
201
|
+
"9.12.15-ubuntu-jdk11",
|
|
202
|
+
"9.11.0",
|
|
243
203
|
"9.13.0-jdk17",
|
|
244
|
-
"9.10.2-ubuntu-jdk11",
|
|
245
|
-
"9.10-ubuntu-jdk11",
|
|
246
204
|
"9.13.0-ubuntu-jdk17",
|
|
247
|
-
"9.17.1-jdk17",
|
|
248
|
-
"9.4.28-ubuntu-jdk11",
|
|
249
|
-
"9.4",
|
|
250
|
-
"9.11.0-ubuntu-jdk11",
|
|
251
|
-
"9.4.28-jdk11",
|
|
252
|
-
"9.17.1-jdk11",
|
|
253
|
-
"9.15.2-jdk11",
|
|
254
|
-
"9.8-ubuntu-jdk11",
|
|
255
205
|
"9.17.1",
|
|
256
|
-
"9.
|
|
257
|
-
"9.
|
|
258
|
-
"9.
|
|
259
|
-
"9.
|
|
260
|
-
"9.
|
|
261
|
-
"9.
|
|
262
|
-
"9.
|
|
263
|
-
"9.
|
|
264
|
-
"9.
|
|
265
|
-
"9.
|
|
266
|
-
"9.
|
|
267
|
-
"9.
|
|
268
|
-
"9.
|
|
269
|
-
"9.10.2",
|
|
270
|
-
"9.10.2-jdk11",
|
|
271
|
-
"9.12.1-ubi9-jdk17",
|
|
206
|
+
"9.12.14-jdk17",
|
|
207
|
+
"9.8.1",
|
|
208
|
+
"9.12.7-ubuntu-jdk11",
|
|
209
|
+
"9.8.0-ubuntu-jdk11",
|
|
210
|
+
"9.8.0",
|
|
211
|
+
"9.12.14-ubuntu-jdk17",
|
|
212
|
+
"9.4.26-jdk11",
|
|
213
|
+
"9.13.0",
|
|
214
|
+
"9.10.1",
|
|
215
|
+
"9.17.5-ubi9-jdk17",
|
|
216
|
+
"9.11.0-ubuntu-jdk17",
|
|
217
|
+
"9.12.9-ubi9-jdk17",
|
|
218
|
+
"9.17.1-ubuntu-jdk11",
|
|
272
219
|
"9.10-jdk11",
|
|
273
|
-
"9.11.0",
|
|
274
|
-
"9.
|
|
275
|
-
"9.
|
|
220
|
+
"9.11.0-jdk17",
|
|
221
|
+
"9.4.14",
|
|
222
|
+
"9.12.1-ubi9",
|
|
223
|
+
"9.4.14-ubuntu-jdk11",
|
|
224
|
+
"9.17.1-jdk11",
|
|
225
|
+
"9.10.2",
|
|
226
|
+
"9.12.9-ubi9",
|
|
227
|
+
"9.12.14",
|
|
228
|
+
"9.4.20-jdk11",
|
|
229
|
+
"9.16.0-ubi9-jdk17",
|
|
230
|
+
"9.12.8-ubuntu-jdk11",
|
|
231
|
+
"9.15.1-ubuntu-jdk11",
|
|
232
|
+
"9.15.1-jdk11",
|
|
233
|
+
"9.12.1-jdk11",
|
|
234
|
+
"9.17.5-ubi9",
|
|
235
|
+
"9.4.14-jdk11",
|
|
236
|
+
"9.17.4-ubi9",
|
|
237
|
+
"9.10.2-ubi9-jdk17",
|
|
238
|
+
"9.10.1-ubi9",
|
|
239
|
+
"9.17.1-ubuntu-jdk17",
|
|
276
240
|
"9.12.10-jdk11",
|
|
277
|
-
"9.
|
|
278
|
-
"9.
|
|
241
|
+
"9.10.2-jdk11",
|
|
242
|
+
"9.4.20-ubuntu-jdk11",
|
|
243
|
+
"9.12-ubuntu-jdk11",
|
|
244
|
+
"9.10.2-ubi9",
|
|
245
|
+
"9.10.1-ubi9-jdk17",
|
|
246
|
+
"9.10.1-ubuntu-jdk11",
|
|
247
|
+
"9.17.2",
|
|
248
|
+
"9.4.9",
|
|
249
|
+
"9.10-ubuntu-jdk11",
|
|
250
|
+
"9.10",
|
|
251
|
+
"9.4.9-jdk11",
|
|
252
|
+
"9.11.1-jdk17",
|
|
253
|
+
"9.16.0-ubi9",
|
|
254
|
+
"9.11.1",
|
|
255
|
+
"9.10.2-ubuntu-jdk11",
|
|
256
|
+
"9.12.8-jdk11",
|
|
257
|
+
"9.17.2-ubuntu-jdk17",
|
|
258
|
+
"9.12.1-ubuntu-jdk11",
|
|
259
|
+
"9.17.2-jdk17",
|
|
260
|
+
"9.7.1-jdk17",
|
|
261
|
+
"9.7.1-ubuntu-jdk17",
|
|
262
|
+
"10.0.0-ubi9-jdk17",
|
|
263
|
+
"9.8.0-ubi9-jdk17",
|
|
264
|
+
"9.13-ubuntu-jdk17",
|
|
265
|
+
"9.4.15-ubuntu-jdk11",
|
|
266
|
+
"9.8.0-ubi9",
|
|
267
|
+
"9.12.2-ubi9",
|
|
268
|
+
"9.11.1-ubuntu-jdk17",
|
|
279
269
|
"9.13.1",
|
|
280
|
-
"9.11.0-jdk11",
|
|
281
|
-
"9.12.1-ubi9",
|
|
282
|
-
"9.13.1-jdk17",
|
|
283
|
-
"9.13.1-ubuntu-jdk17",
|
|
284
|
-
"9.4.15",
|
|
285
270
|
"9.12.9-jdk11",
|
|
286
|
-
"9.
|
|
287
|
-
"9.
|
|
288
|
-
"9.
|
|
289
|
-
"9.
|
|
271
|
+
"9.4-jdk11",
|
|
272
|
+
"9.4.28-jdk11",
|
|
273
|
+
"9.12.1-ubi9-jdk17",
|
|
274
|
+
"9.4",
|
|
275
|
+
"9.4.28",
|
|
276
|
+
"9.4-ubuntu-jdk11",
|
|
277
|
+
"9.16.1-ubi9",
|
|
278
|
+
"9.11.0-ubuntu-jdk11",
|
|
279
|
+
"9.5.0-ubuntu-jdk11",
|
|
280
|
+
"10.0.0-ubi9",
|
|
281
|
+
"9.16.1-ubi9-jdk17",
|
|
282
|
+
"9.13.0-ubi9",
|
|
283
|
+
"9.12.10-ubuntu-jdk11",
|
|
284
|
+
"9.4.9-ubuntu-jdk11",
|
|
285
|
+
"9.5.0-jdk11",
|
|
286
|
+
"9.8",
|
|
290
287
|
"9.12",
|
|
291
|
-
"9.
|
|
288
|
+
"9.8-ubuntu-jdk11",
|
|
289
|
+
"9.13.1-ubuntu-jdk17",
|
|
290
|
+
"9.5.0",
|
|
291
|
+
"9.4.28-ubuntu-jdk11",
|
|
292
|
+
"9.8-ubuntu-jdk17",
|
|
293
|
+
"9.10.0-ubuntu-jdk17",
|
|
294
|
+
"9.12.2-ubi9-jdk17",
|
|
295
|
+
"9.7-jdk17",
|
|
296
|
+
"9.8.2-ubuntu-jdk17",
|
|
297
|
+
"9.12.9-ubuntu-jdk11",
|
|
298
|
+
"9.13",
|
|
299
|
+
"9.13.0-jdk11",
|
|
300
|
+
"9.8.2-jdk11",
|
|
292
301
|
"9.5.0-jdk17",
|
|
293
|
-
"9.
|
|
302
|
+
"9.8-jdk11",
|
|
303
|
+
"9.17.2-jdk11",
|
|
304
|
+
"9.8.2-ubuntu-jdk11",
|
|
305
|
+
"9.7.2-jdk17",
|
|
306
|
+
"9.12-ubuntu-jdk17",
|
|
307
|
+
"9.4.15",
|
|
308
|
+
"9.8.2",
|
|
294
309
|
"9.4.15-jdk11",
|
|
295
|
-
"9.
|
|
310
|
+
"9.13.1-ubi9-jdk17",
|
|
296
311
|
"9.12.15",
|
|
297
312
|
"9.12-jdk17",
|
|
298
|
-
"9.
|
|
299
|
-
"9.
|
|
300
|
-
"9.13",
|
|
301
|
-
"9.5.0",
|
|
302
|
-
"9.12.2-ubi9",
|
|
303
|
-
"9.12-ubuntu-jdk17",
|
|
304
|
-
"10.0.1-ubi9",
|
|
305
|
-
"9.13-ubuntu-jdk17",
|
|
306
|
-
"9.17.2-jdk11",
|
|
313
|
+
"9.12.15-jdk17",
|
|
314
|
+
"9.15.2-ubuntu-jdk11",
|
|
307
315
|
"9.13.0-ubi9-jdk17",
|
|
308
|
-
"9.8.0-ubi9-jdk17",
|
|
309
316
|
"9.12.15-ubuntu-jdk17",
|
|
310
|
-
"9.
|
|
311
|
-
"9.
|
|
312
|
-
"9.
|
|
313
|
-
"
|
|
314
|
-
"9.
|
|
315
|
-
"9.8.0-ubi9",
|
|
316
|
-
"9.12.15-jdk17",
|
|
317
|
-
"9.4.22-jdk11",
|
|
318
|
-
"9.4.22-ubuntu-jdk11",
|
|
319
|
-
"9.4.22",
|
|
317
|
+
"9.12.2-jdk11",
|
|
318
|
+
"9.8.2-jdk17",
|
|
319
|
+
"9.5.0-ubuntu-jdk17",
|
|
320
|
+
"9.13.1-jdk17",
|
|
321
|
+
"9.13-jdk17",
|
|
320
322
|
"9.17.2-ubuntu-jdk11",
|
|
321
|
-
"9.12.2-ubi9-jdk17",
|
|
322
|
-
"9.7.1-ubuntu-jdk17",
|
|
323
|
-
"9.17.2",
|
|
324
|
-
"9.17.2-jdk17",
|
|
325
|
-
"9.12.3-ubuntu-jdk11",
|
|
326
|
-
"9.16.0-ubi9",
|
|
327
|
-
"9.12.3-jdk11",
|
|
328
323
|
"9.12.10-ubi9-jdk17",
|
|
329
|
-
"9.
|
|
330
|
-
"9.
|
|
331
|
-
"9.
|
|
324
|
+
"9.11.2-jdk17",
|
|
325
|
+
"9.4.21-ubuntu-jdk11",
|
|
326
|
+
"9.15-ubuntu-jdk11",
|
|
327
|
+
"9.15.2-jdk11",
|
|
328
|
+
"9.11.0-jdk11",
|
|
329
|
+
"9.8-jdk17",
|
|
330
|
+
"9.15-jdk11",
|
|
331
|
+
"9.12.2-ubuntu-jdk11",
|
|
332
|
+
"9.10.0-jdk17",
|
|
333
|
+
"9.11.2-ubuntu-jdk17",
|
|
334
|
+
"9.5-jdk17",
|
|
335
|
+
"9.5.1-jdk17",
|
|
336
|
+
"9.17.3-jdk17",
|
|
337
|
+
"9.4.21-jdk11",
|
|
338
|
+
"9.4.21",
|
|
339
|
+
"9.17.3-ubuntu-jdk17",
|
|
340
|
+
"9.17.3",
|
|
341
|
+
"9.5.1-ubuntu-jdk17",
|
|
342
|
+
"9.7.2-ubuntu-jdk17",
|
|
343
|
+
"9.11.2",
|
|
344
|
+
"9.7-ubuntu-jdk17",
|
|
345
|
+
"9.13.0-ubuntu-jdk11",
|
|
346
|
+
"9.11.0-ubi9",
|
|
347
|
+
"9.13.1-ubi9",
|
|
348
|
+
"9.4.16-jdk11",
|
|
349
|
+
"9.5-ubuntu-jdk11",
|
|
350
|
+
"9.11.0-ubi9-jdk17",
|
|
351
|
+
"9.5.1-ubuntu-jdk11",
|
|
332
352
|
"9.12.10-ubi9",
|
|
333
|
-
"
|
|
334
|
-
"
|
|
335
|
-
"9.
|
|
353
|
+
"10.0.1-ubi9-jdk17",
|
|
354
|
+
"10.0.1-ubi9",
|
|
355
|
+
"9.4.0",
|
|
356
|
+
"9.14.0-jdk17",
|
|
336
357
|
"9.4.16",
|
|
337
|
-
"9.12.3-ubi9-jdk17",
|
|
338
|
-
"9.9.0-ubuntu-jdk17",
|
|
339
|
-
"9.5.0-ubi9-jdk17",
|
|
340
|
-
"9.12.11-jdk11",
|
|
341
|
-
"9.4.16-ubuntu-jdk11",
|
|
342
|
-
"9.5.1-ubuntu-jdk17",
|
|
343
358
|
"9.5-ubuntu-jdk17",
|
|
344
|
-
"9.
|
|
345
|
-
"9.
|
|
346
|
-
"9.16.0-ubi9-jdk17",
|
|
347
|
-
"9.5.0-ubi9",
|
|
348
|
-
"9.11.1-ubuntu-jdk11",
|
|
349
|
-
"9.11.1-jdk11",
|
|
350
|
-
"9.11.1",
|
|
351
|
-
"9.11.1-jdk17",
|
|
352
|
-
"9.5.1-jdk17",
|
|
353
|
-
"9.5-jdk17",
|
|
354
|
-
"9.7-jdk17",
|
|
355
|
-
"9.5",
|
|
356
|
-
"9.4.3",
|
|
357
|
-
"9.8.1-ubi9-jdk17",
|
|
359
|
+
"9.4.16-ubuntu-jdk11",
|
|
360
|
+
"9.5-jdk11",
|
|
358
361
|
"9.8.1-ubi9",
|
|
359
362
|
"9.5.1",
|
|
360
|
-
"9.
|
|
361
|
-
"9.
|
|
362
|
-
"9.
|
|
363
|
-
"9.4.3-jdk11",
|
|
364
|
-
"9.5.1-jdk11",
|
|
365
|
-
"9.7.2-ubuntu-jdk17",
|
|
366
|
-
"9.5.1-ubuntu-jdk11",
|
|
367
|
-
"9.7.2-jdk17",
|
|
368
|
-
"9.13.1-ubi9",
|
|
369
|
-
"9.4.3-ubuntu-jdk11",
|
|
370
|
-
"9.17.3",
|
|
371
|
-
"9.9.0-ubuntu-jdk11",
|
|
363
|
+
"9.14.0",
|
|
364
|
+
"9.4.22",
|
|
365
|
+
"9.17.3-ubuntu-jdk11",
|
|
372
366
|
"9.9.0-jdk11",
|
|
373
|
-
"9.
|
|
374
|
-
"9.
|
|
375
|
-
"9.
|
|
376
|
-
"9.
|
|
367
|
+
"9.5.1-jdk11",
|
|
368
|
+
"9.12.3-jdk11",
|
|
369
|
+
"9.4.3",
|
|
370
|
+
"9.5",
|
|
371
|
+
"9.11.1-jdk11",
|
|
372
|
+
"9.8.1-ubi9-jdk17",
|
|
373
|
+
"9.4.22-ubuntu-jdk11",
|
|
374
|
+
"9.12.11-ubi9-jdk17",
|
|
377
375
|
"9.4.0-jdk11",
|
|
378
|
-
"9.
|
|
379
|
-
"9.
|
|
376
|
+
"9.9.0-ubuntu-jdk11",
|
|
377
|
+
"9.12.11-ubuntu-jdk11",
|
|
378
|
+
"9.4.0-ubuntu-jdk11",
|
|
379
|
+
"9.4.3-ubuntu-jdk11",
|
|
380
|
+
"9.4.22-jdk11",
|
|
381
|
+
"9.11.1-ubuntu-jdk11",
|
|
382
|
+
"9.17.3-jdk11",
|
|
383
|
+
"9.5.0-ubi9-jdk17",
|
|
384
|
+
"9.12.3-ubi9-jdk17",
|
|
385
|
+
"9.12.3-ubi9",
|
|
386
|
+
"9.5.0-ubi9",
|
|
387
|
+
"9.9.0-ubuntu-jdk17",
|
|
388
|
+
"9.12.11-jdk11",
|
|
389
|
+
"9.11.2-jdk11",
|
|
380
390
|
"9.9.0",
|
|
381
|
-
"9.
|
|
382
|
-
"9.
|
|
383
|
-
"9.17.
|
|
384
|
-
"9.
|
|
391
|
+
"9.11.1-ubi9-jdk17",
|
|
392
|
+
"9.4.3-jdk11",
|
|
393
|
+
"9.17.4-ubuntu-jdk17",
|
|
394
|
+
"9.12.3-ubuntu-jdk11",
|
|
395
|
+
"9.11.1-ubi9",
|
|
396
|
+
"9.17.4-jdk17",
|
|
397
|
+
"9.14.0-ubuntu-jdk17",
|
|
398
|
+
"9.9.0-jdk17",
|
|
399
|
+
"9.12.4-ubuntu-jdk11",
|
|
400
|
+
"9.17.4",
|
|
385
401
|
"9.12.2",
|
|
386
|
-
"9.
|
|
387
|
-
"9.
|
|
388
|
-
"9.12.
|
|
402
|
+
"9.16.0-jdk11",
|
|
403
|
+
"9.11.2-ubuntu-jdk11",
|
|
404
|
+
"9.12.2-jdk17",
|
|
405
|
+
"9.4.17-ubuntu-jdk11",
|
|
406
|
+
"9.4.17",
|
|
389
407
|
"9.12.11-ubi9",
|
|
390
|
-
"9.4.
|
|
391
|
-
"9.
|
|
392
|
-
"9.
|
|
393
|
-
"9.
|
|
394
|
-
"9.
|
|
395
|
-
"9.16.1-ubi9-jdk17",
|
|
396
|
-
"9.11.2-ubuntu-jdk17",
|
|
408
|
+
"9.4.17-jdk11",
|
|
409
|
+
"9.13-ubuntu-jdk11",
|
|
410
|
+
"9.8.2-ubi9-jdk17",
|
|
411
|
+
"9.13.1-ubuntu-jdk11",
|
|
412
|
+
"9.11.3-jdk17",
|
|
397
413
|
"9.12.12-ubuntu-jdk11",
|
|
398
|
-
"9.
|
|
399
|
-
"9.12.4-ubi9-jdk17",
|
|
414
|
+
"9.13.1-jdk11",
|
|
400
415
|
"9.12.12-jdk11",
|
|
401
|
-
"9.
|
|
402
|
-
"9.
|
|
403
|
-
"9.12.2-ubuntu-jdk17",
|
|
404
|
-
"9.10.0-jdk17",
|
|
416
|
+
"9.12.4-ubi9-jdk17",
|
|
417
|
+
"9.11",
|
|
405
418
|
"9.12.4-jdk11",
|
|
406
|
-
"9.
|
|
407
|
-
"9.14.0-ubuntu-jdk17",
|
|
408
|
-
"10.1.1-ubi9-jdk17",
|
|
409
|
-
"10.1.1-ubi9",
|
|
419
|
+
"9.4.4-ubuntu-jdk11",
|
|
410
420
|
"9.8.2-ubi9",
|
|
411
|
-
"9.
|
|
412
|
-
"9.
|
|
413
|
-
"9.
|
|
414
|
-
"9.
|
|
421
|
+
"9.13-jdk11",
|
|
422
|
+
"9.12.4-ubi9",
|
|
423
|
+
"9.11.3",
|
|
424
|
+
"9.6-ubuntu-jdk17",
|
|
425
|
+
"9.6.0-jdk17",
|
|
415
426
|
"9.16.0-ubuntu-jdk11",
|
|
416
|
-
"9.12.12-ubi9",
|
|
417
|
-
"9.12.12-ubi9-jdk17",
|
|
418
|
-
"9.5.1-ubi9",
|
|
419
|
-
"9.5.1-ubi9-jdk17",
|
|
420
|
-
"9.11.2-jdk11",
|
|
421
|
-
"9.4.17",
|
|
422
427
|
"9.6.0-ubuntu-jdk17",
|
|
423
|
-
"9.
|
|
424
|
-
"9.
|
|
425
|
-
"9.
|
|
426
|
-
"9.
|
|
428
|
+
"9.12.2-ubuntu-jdk17",
|
|
429
|
+
"9.4.23-jdk11",
|
|
430
|
+
"9.11-ubuntu-jdk17",
|
|
431
|
+
"9.11.3-ubuntu-jdk17",
|
|
432
|
+
"9.4.23",
|
|
427
433
|
"9.6-jdk17",
|
|
428
|
-
"9.6.0-jdk17",
|
|
429
|
-
"9.4.17-ubuntu-jdk11",
|
|
430
|
-
"9.4.4-ubuntu-jdk11",
|
|
431
|
-
"9.9.1-jdk11",
|
|
432
|
-
"9.13-jdk11",
|
|
433
|
-
"9.13-ubuntu-jdk11",
|
|
434
|
-
"9.12.3-jdk17",
|
|
435
|
-
"9.13.1-jdk11",
|
|
436
|
-
"9.11.1-ubi9",
|
|
437
|
-
"9.13.1-ubuntu-jdk11",
|
|
438
|
-
"9.12.3",
|
|
439
|
-
"9.4.4-jdk11",
|
|
440
|
-
"9.9.1",
|
|
441
|
-
"9.4.1",
|
|
442
434
|
"9.4.4",
|
|
435
|
+
"9.11-jdk17",
|
|
436
|
+
"9.4.23-ubuntu-jdk11",
|
|
437
|
+
"9.9.1",
|
|
438
|
+
"9.5.1-ubi9-jdk17",
|
|
439
|
+
"9.4.4-jdk11",
|
|
440
|
+
"9.4.1-ubuntu-jdk11",
|
|
441
|
+
"9.17.4-ubuntu-jdk11",
|
|
442
|
+
"9.5.1-ubi9",
|
|
443
|
+
"9.14-ubuntu-jdk17",
|
|
443
444
|
"9.10.1-ubuntu-jdk17",
|
|
444
|
-
"
|
|
445
|
-
"
|
|
446
|
-
"9.
|
|
447
|
-
"9.
|
|
448
|
-
"9.12.3-ubuntu-jdk17",
|
|
449
|
-
"9.11.1-ubi9-jdk17",
|
|
445
|
+
"10.1.1-ubi9",
|
|
446
|
+
"10.1.1-ubi9-jdk17",
|
|
447
|
+
"9.17.4-jdk11",
|
|
448
|
+
"9.9.1-ubuntu-jdk17",
|
|
450
449
|
"9.4.1-jdk11",
|
|
451
|
-
"9.6.0-ubuntu-jdk11",
|
|
452
|
-
"9.9.1-ubuntu-jdk11",
|
|
453
|
-
"9.4.24",
|
|
454
|
-
"9.4.24-ubuntu-jdk11",
|
|
455
|
-
"9.17.4",
|
|
456
|
-
"9.17.4-jdk17",
|
|
457
450
|
"9.14.1",
|
|
458
|
-
"9.
|
|
459
|
-
"
|
|
460
|
-
"9.
|
|
461
|
-
"9.
|
|
462
|
-
"9.6-ubuntu-jdk11",
|
|
463
|
-
"9.6",
|
|
464
|
-
"9.6-jdk11",
|
|
465
|
-
"9.14-ubuntu-jdk17",
|
|
466
|
-
"9.4.1-ubuntu-jdk11",
|
|
451
|
+
"9.4.1",
|
|
452
|
+
"9.8.0-jdk17",
|
|
453
|
+
"9.8.0-ubuntu-jdk17",
|
|
454
|
+
"9.12.12-ubi9-jdk17",
|
|
467
455
|
"9.6.0-jdk11",
|
|
468
|
-
"9.12.5-ubi9-jdk17",
|
|
469
|
-
"9.12.13-ubi9-jdk17",
|
|
470
|
-
"9.17.5-ubuntu-jdk11",
|
|
471
|
-
"9.11-jdk17",
|
|
472
|
-
"9.11.3",
|
|
473
|
-
"9.14.1-ubuntu-jdk17",
|
|
474
|
-
"9-jdk11",
|
|
475
|
-
"9-ubuntu-jdk11",
|
|
476
|
-
"9.9.0-ubi9-jdk17",
|
|
477
|
-
"10.1.2-ubi9-jdk17",
|
|
478
456
|
"9.14.1-jdk17",
|
|
479
|
-
"9.
|
|
480
|
-
"9.
|
|
481
|
-
"9.8.0-ubuntu-jdk17",
|
|
482
|
-
"9.17-jdk11",
|
|
457
|
+
"9.10.1-jdk17",
|
|
458
|
+
"9.14",
|
|
483
459
|
"9.14-jdk17",
|
|
484
|
-
"9.
|
|
485
|
-
"9.
|
|
486
|
-
"9.
|
|
487
|
-
"9.
|
|
460
|
+
"9.9.1-jdk17",
|
|
461
|
+
"9.14.1-ubuntu-jdk17",
|
|
462
|
+
"9.12.12-ubi9",
|
|
463
|
+
"9.9.1-ubuntu-jdk11",
|
|
464
|
+
"9.9.1-jdk11",
|
|
465
|
+
"9.6.0-ubuntu-jdk11",
|
|
466
|
+
"9.6-jdk11",
|
|
467
|
+
"9.6",
|
|
468
|
+
"9.6-ubuntu-jdk11",
|
|
469
|
+
"9.6.0",
|
|
470
|
+
"9.4.24",
|
|
471
|
+
"9-jdk17",
|
|
472
|
+
"9.14.0-ubi9",
|
|
473
|
+
"9.14.0-ubi9-jdk17",
|
|
488
474
|
"9.11.3-ubuntu-jdk11",
|
|
489
|
-
"9.
|
|
475
|
+
"9.12.5-ubi9",
|
|
476
|
+
"9.17-jdk17",
|
|
490
477
|
"9.11-jdk11",
|
|
491
|
-
"9.
|
|
478
|
+
"9.17.5-jdk17",
|
|
479
|
+
"9.12.5-jdk11",
|
|
480
|
+
"10.1.2-ubi9-jdk17",
|
|
481
|
+
"9.4.24-ubuntu-jdk11",
|
|
482
|
+
"9.12.5-ubuntu-jdk11",
|
|
483
|
+
"9.11-ubuntu-jdk11",
|
|
484
|
+
"9.11.2-ubi9",
|
|
485
|
+
"9.17.5",
|
|
486
|
+
"9-ubuntu-jdk11",
|
|
487
|
+
"9.12.5-ubi9-jdk17",
|
|
488
|
+
"9.17.0-ubi9-jdk17",
|
|
489
|
+
"9.17.0-ubi9",
|
|
490
|
+
"9.4.24-jdk11",
|
|
491
|
+
"9.17-ubuntu-jdk17",
|
|
492
|
+
"9.12.13-ubuntu-jdk11",
|
|
493
|
+
"9.11.2-ubi9-jdk17",
|
|
494
|
+
"9-ubuntu-jdk17",
|
|
495
|
+
"9.12.3-ubuntu-jdk17",
|
|
496
|
+
"9.12.3-jdk17",
|
|
497
|
+
"9.17",
|
|
498
|
+
"9.12.3",
|
|
492
499
|
"9.11.3-jdk11",
|
|
493
|
-
"9
|
|
494
|
-
"9
|
|
495
|
-
"9.9-jdk17",
|
|
496
|
-
"9.11.3-jdk17",
|
|
497
|
-
"9.11-ubuntu-jdk17",
|
|
498
|
-
"9.16.1-jdk11",
|
|
499
|
-
"9.4.10-ubuntu-jdk11",
|
|
500
|
-
"9.11.3-ubuntu-jdk17",
|
|
501
|
-
"9.11",
|
|
502
|
-
"9.4.5-ubuntu-jdk11",
|
|
503
|
-
"9.4.5-jdk11",
|
|
504
|
-
"9.4.5",
|
|
500
|
+
"9-jdk11",
|
|
501
|
+
"9",
|
|
505
502
|
"9.4.18-jdk11",
|
|
503
|
+
"9.17.5-ubuntu-jdk17",
|
|
506
504
|
"9.4.18-ubuntu-jdk11",
|
|
507
|
-
"9.
|
|
505
|
+
"9.4.10-jdk11",
|
|
508
506
|
"9.16-jdk11",
|
|
509
|
-
"9.16.1-ubuntu-jdk11",
|
|
510
|
-
"9.12.5-jdk11",
|
|
511
|
-
"9.14.0-ubi9",
|
|
512
|
-
"9.12.13-ubuntu-jdk11",
|
|
513
|
-
"9.11.2-ubi9-jdk17",
|
|
514
|
-
"9.12.13-jdk11",
|
|
515
|
-
"9.12.5-ubuntu-jdk11",
|
|
516
|
-
"9.17.0-ubi9-jdk17",
|
|
517
507
|
"9.4.18",
|
|
518
|
-
"9.
|
|
519
|
-
"9.
|
|
520
|
-
"9.
|
|
521
|
-
"9.
|
|
508
|
+
"9.4.5-jdk11",
|
|
509
|
+
"9.17.5-jdk11",
|
|
510
|
+
"9.12.13-jdk11",
|
|
511
|
+
"9.17.5-ubuntu-jdk11",
|
|
512
|
+
"9.17-jdk11",
|
|
513
|
+
"9.17-ubuntu-jdk11",
|
|
522
514
|
"9.9.2-ubuntu-jdk11",
|
|
523
|
-
"9.11.2-ubi9",
|
|
524
|
-
"9.6.0-ubi9-jdk17",
|
|
525
|
-
"9.12.14-ubi9-jdk17",
|
|
526
|
-
"9.9.2-jdk11",
|
|
527
|
-
"9.12.4",
|
|
528
|
-
"9.12.14-ubi9",
|
|
529
515
|
"9.9-ubuntu-jdk11",
|
|
530
|
-
"9.17.0-ubi9",
|
|
531
516
|
"9.10.2-ubuntu-jdk17",
|
|
532
|
-
"
|
|
533
|
-
"9.9-
|
|
534
|
-
"9.
|
|
517
|
+
"10.1.2-ubi9",
|
|
518
|
+
"9.9-jdk17",
|
|
519
|
+
"9.4.10",
|
|
520
|
+
"9.9-ubuntu-jdk17",
|
|
521
|
+
"9.6.0-ubi9",
|
|
535
522
|
"9.10-ubuntu-jdk17",
|
|
536
|
-
"9.
|
|
537
|
-
"9.
|
|
538
|
-
"9.
|
|
539
|
-
"9.4.
|
|
540
|
-
"9.
|
|
541
|
-
"9.9",
|
|
542
|
-
"9.17.5-jdk17",
|
|
543
|
-
"9.12.4-jdk17",
|
|
544
|
-
"9-ubuntu-jdk17",
|
|
545
|
-
"9.17",
|
|
546
|
-
"9.17.5-ubuntu-jdk17",
|
|
547
|
-
"9.17-jdk17",
|
|
548
|
-
"9.9.1-ubi9-jdk17",
|
|
523
|
+
"9.16.1-jdk11",
|
|
524
|
+
"9.16.1-ubuntu-jdk11",
|
|
525
|
+
"9.16-ubuntu-jdk11",
|
|
526
|
+
"9.4.10-ubuntu-jdk11",
|
|
527
|
+
"9.9.0-ubi9-jdk17",
|
|
549
528
|
"9.10.2-jdk17",
|
|
550
|
-
"9-jdk17",
|
|
529
|
+
"9.10-jdk17",
|
|
530
|
+
"9.4.5-ubuntu-jdk11",
|
|
531
|
+
"9.4.5",
|
|
532
|
+
"9.6.0-ubi9-jdk17",
|
|
533
|
+
"9.9.2",
|
|
534
|
+
"9.9.2-jdk11",
|
|
551
535
|
"9.14.1-ubi9-jdk17",
|
|
552
|
-
"9.
|
|
553
|
-
"9.9.
|
|
554
|
-
"9.
|
|
555
|
-
"9.
|
|
536
|
+
"9.9-jdk11",
|
|
537
|
+
"9.9.2-jdk17",
|
|
538
|
+
"9.9.0-ubi9",
|
|
539
|
+
"9.8.1-jdk17",
|
|
540
|
+
"9.9",
|
|
541
|
+
"9.9.2-ubuntu-jdk17",
|
|
542
|
+
"9.8.1-ubuntu-jdk17",
|
|
556
543
|
"9.14.1-ubi9",
|
|
544
|
+
"9.12.13-ubi9",
|
|
545
|
+
"9.12.13-ubi9-jdk17",
|
|
546
|
+
"9.17.1-ubi9-jdk17",
|
|
547
|
+
"9.15.0-ubuntu-jdk17",
|
|
548
|
+
"9.17.1-ubi9",
|
|
549
|
+
"9.12.14-ubuntu-jdk11",
|
|
550
|
+
"9.15.0-jdk17",
|
|
551
|
+
"9.14.0-ubuntu-jdk11",
|
|
552
|
+
"9.12.4-ubuntu-jdk17",
|
|
553
|
+
"9.7.0-ubuntu-jdk17",
|
|
554
|
+
"9.4.19-jdk11",
|
|
557
555
|
"9.12.0-ubuntu-jdk17",
|
|
556
|
+
"9.4.19-ubuntu-jdk11",
|
|
558
557
|
"9.12.0",
|
|
559
|
-
"9",
|
|
560
|
-
"9.
|
|
561
|
-
"9.
|
|
558
|
+
"9.12.6-ubi9",
|
|
559
|
+
"9.12.6-jdk11",
|
|
560
|
+
"9.12.0-jdk17",
|
|
561
|
+
"9.4.25-jdk11",
|
|
562
|
+
"9.9.1-ubi9-jdk17",
|
|
563
|
+
"9.9.1-ubi9",
|
|
564
|
+
"9.12.6-ubi9-jdk17",
|
|
565
|
+
"9.12.14-jdk11",
|
|
566
|
+
"9.12.4-jdk17",
|
|
567
|
+
"9.12.4",
|
|
568
|
+
"9.4.6-ubuntu-jdk11",
|
|
562
569
|
"9.4.25-ubuntu-jdk11",
|
|
563
|
-
"9.4.19-ubuntu-jdk11",
|
|
564
570
|
"9.4.19",
|
|
565
|
-
"9.7.0",
|
|
566
|
-
"9.4.19-jdk11",
|
|
567
|
-
"9.7.0-jdk17",
|
|
568
571
|
"9.14.0-jdk11",
|
|
569
|
-
"9.7.0-
|
|
570
|
-
"9.
|
|
571
|
-
"9.
|
|
572
|
-
"9.
|
|
573
|
-
"9.15.0
|
|
572
|
+
"9.7.0-jdk17",
|
|
573
|
+
"9.12.6-ubuntu-jdk11",
|
|
574
|
+
"9.4.25",
|
|
575
|
+
"9.4.6",
|
|
576
|
+
"9.15.0",
|
|
577
|
+
"9.11.3-ubi9",
|
|
574
578
|
"9.7.0-jdk11",
|
|
575
|
-
"9.
|
|
576
|
-
"9.
|
|
577
|
-
"9.
|
|
579
|
+
"9.12.0-jdk11",
|
|
580
|
+
"9.7.0-ubuntu-jdk11",
|
|
581
|
+
"9.12.14-ubi9",
|
|
582
|
+
"9.11.3-ubi9-jdk17",
|
|
583
|
+
"9.7.0",
|
|
584
|
+
"10.2.0-ubi9-jdk17",
|
|
585
|
+
"9.12.14-ubi9-jdk17",
|
|
586
|
+
"10.2.0-ubi9",
|
|
578
587
|
"ubi9-jdk17",
|
|
579
|
-
"9.15.0",
|
|
580
|
-
"9.9.2-ubi9-jdk17",
|
|
581
|
-
"9.12.14-jdk11",
|
|
582
|
-
"9.12.15-ubi9-jdk17",
|
|
583
|
-
"9.12.15-ubi9",
|
|
584
|
-
"9.12.7-ubi9",
|
|
585
|
-
"9.4.11",
|
|
586
|
-
"9.4.11-jdk11",
|
|
587
|
-
"9.12.14-ubuntu-jdk11",
|
|
588
588
|
"ubi9",
|
|
589
|
-
"9.12.7-ubi9-jdk17",
|
|
590
|
-
"9.17.1-ubi9",
|
|
591
589
|
"9.12.0-ubuntu-jdk11",
|
|
592
|
-
"
|
|
593
|
-
"10.2.0-ubi9",
|
|
594
|
-
"9.9.2-ubi9",
|
|
595
|
-
"9.4.6",
|
|
596
|
-
"9.4.6-jdk11",
|
|
597
|
-
"9.12.0-jdk11",
|
|
598
|
-
"9.11.3-ubi9",
|
|
599
|
-
"9.17.1-ubi9-jdk17",
|
|
590
|
+
"9.12.7-ubi9",
|
|
600
591
|
"9.4.11-ubuntu-jdk11",
|
|
601
|
-
"9.11
|
|
602
|
-
"9.
|
|
603
|
-
"9.12.8-ubi9-jdk17",
|
|
604
|
-
"9.7.1-ubi9-jdk17",
|
|
605
|
-
"9.15.0-ubi9-jdk17",
|
|
606
|
-
"9.12.8-ubi9",
|
|
592
|
+
"9.4.11-jdk11",
|
|
593
|
+
"9.4.11",
|
|
607
594
|
"9.17.2-ubi9-jdk17",
|
|
608
|
-
"9.
|
|
595
|
+
"9.4.6-jdk11",
|
|
596
|
+
"9.15.0-ubi9",
|
|
609
597
|
"9.17.2-ubi9",
|
|
598
|
+
"9.12.7-ubi9-jdk17",
|
|
599
|
+
"9.15.0-ubi9-jdk17",
|
|
600
|
+
"9.7.0-ubi9-jdk17",
|
|
601
|
+
"9.7.0-ubi9",
|
|
602
|
+
"9.9.2-ubi9",
|
|
603
|
+
"9.9.2-ubi9-jdk17",
|
|
604
|
+
"9.12.15-ubi9",
|
|
605
|
+
"9.12.15-ubi9-jdk17",
|
|
610
606
|
"9.12.0-ubi9",
|
|
607
|
+
"9.17.3-ubi9",
|
|
608
|
+
"9.12.8-ubi9",
|
|
611
609
|
"9.12.0-ubi9-jdk17",
|
|
610
|
+
"9.12.8-ubi9-jdk17",
|
|
612
611
|
"9.17.3-ubi9-jdk17",
|
|
613
|
-
"9.15.1-ubi9",
|
|
614
612
|
"9.15.1-ubi9-jdk17",
|
|
615
|
-
"9.
|
|
616
|
-
"9.
|
|
613
|
+
"9.15.1-ubi9",
|
|
614
|
+
"9.7.1-ubi9",
|
|
615
|
+
"9.7.1-ubi9-jdk17",
|
|
617
616
|
"9.10.0-ubi9-jdk17",
|
|
617
|
+
"9.10.0-ubi9",
|
|
618
618
|
"10.3.0-EAP01-jdk17",
|
|
619
619
|
"10.3.0-EAP01",
|
|
620
620
|
"10.3.0-EAP01-ubuntu-jdk17",
|
|
@@ -2058,582 +2058,582 @@ var jira = [
|
|
|
2058
2058
|
"8.8.0-RC02"
|
|
2059
2059
|
];
|
|
2060
2060
|
var confluence = [
|
|
2061
|
-
"9.2.0-beta3-ubuntu-jdk17",
|
|
2062
|
-
"9.2.0-beta3-jdk17",
|
|
2063
|
-
"eap-ubuntu-jdk17",
|
|
2064
|
-
"eap",
|
|
2065
|
-
"9.2.0-beta3",
|
|
2066
|
-
"eap-jdk17",
|
|
2067
|
-
"9.2.0-beta3-jdk21",
|
|
2068
|
-
"9.2.0-beta3-ubuntu-jdk21",
|
|
2069
|
-
"9.2.0-beta3-ubi9",
|
|
2070
|
-
"9.2.0-beta3-ubi9-jdk21",
|
|
2071
|
-
"9.2.0-beta3-ubi9-jdk17",
|
|
2072
|
-
"8.9.7-jdk17",
|
|
2073
2061
|
"8.9.7",
|
|
2062
|
+
"8.9.7-jdk17",
|
|
2074
2063
|
"8.9.7-ubuntu-jdk17",
|
|
2075
|
-
"8.
|
|
2076
|
-
"8.
|
|
2064
|
+
"8.9.8-jdk17",
|
|
2065
|
+
"8.9.8",
|
|
2077
2066
|
"8.9-ubuntu-jdk17",
|
|
2078
|
-
"8.9
|
|
2067
|
+
"8.9",
|
|
2068
|
+
"8",
|
|
2079
2069
|
"8.9.8-ubuntu-jdk17",
|
|
2080
|
-
"8.6.2-jdk17",
|
|
2081
|
-
"8.6.2",
|
|
2082
|
-
"8.6.2-ubuntu-jdk17",
|
|
2083
|
-
"8.6-jdk17",
|
|
2084
|
-
"8-jdk17",
|
|
2085
2070
|
"8-ubuntu-jdk17",
|
|
2086
|
-
"8
|
|
2087
|
-
"
|
|
2088
|
-
"8",
|
|
2089
|
-
"8.6",
|
|
2090
|
-
"8.6-ubuntu-jdk17",
|
|
2091
|
-
"8.7-ubuntu-jdk11",
|
|
2092
|
-
"8.9.8",
|
|
2071
|
+
"8-jdk17",
|
|
2072
|
+
"8.9-jdk17",
|
|
2093
2073
|
"8.7.2-ubuntu-jdk11",
|
|
2074
|
+
"8.6-ubuntu-jdk17",
|
|
2075
|
+
"8.9.4-ubuntu-jdk11",
|
|
2076
|
+
"8.1.3-ubuntu-jdk11",
|
|
2077
|
+
"8.6",
|
|
2078
|
+
"7.19.9-ubuntu-jdk11",
|
|
2079
|
+
"9.0.1",
|
|
2080
|
+
"8.6-jdk17",
|
|
2081
|
+
"8.5.14-ubuntu-jdk11",
|
|
2094
2082
|
"7.19.24-ubuntu-jdk11",
|
|
2095
|
-
"
|
|
2096
|
-
"
|
|
2083
|
+
"7.19.26-jdk11",
|
|
2084
|
+
"8.5.2-ubuntu-jdk11",
|
|
2085
|
+
"8.6.2-ubuntu-jdk17",
|
|
2086
|
+
"8.6.2",
|
|
2087
|
+
"8.6.2-jdk17",
|
|
2088
|
+
"8.5.8-jdk11",
|
|
2097
2089
|
"8.9.3-jdk11",
|
|
2090
|
+
"8.7.2-jdk11",
|
|
2091
|
+
"8.5.12-jdk11",
|
|
2098
2092
|
"8.9.3-ubuntu-jdk11",
|
|
2099
|
-
"8.
|
|
2100
|
-
"
|
|
2101
|
-
"8.5.
|
|
2102
|
-
"8.1
|
|
2103
|
-
"
|
|
2104
|
-
"7.19.19-ubuntu-jdk11",
|
|
2093
|
+
"8.7-jdk11",
|
|
2094
|
+
"8.5.10-ubuntu-jdk17",
|
|
2095
|
+
"8.5.12-ubuntu-jdk11",
|
|
2096
|
+
"8.4.1",
|
|
2097
|
+
"8.5.16-jdk17",
|
|
2105
2098
|
"7.19.9",
|
|
2106
|
-
"8.1.
|
|
2099
|
+
"8.1.4-ubuntu-jdk11",
|
|
2100
|
+
"8.5.14-jdk11",
|
|
2101
|
+
"8.5.10",
|
|
2107
2102
|
"8.5.2-jdk11",
|
|
2108
|
-
"8.5.2-ubuntu-jdk11",
|
|
2109
|
-
"7.19.9-ubuntu-jdk11",
|
|
2110
|
-
"8.9.1",
|
|
2111
|
-
"7.19.19-jdk11",
|
|
2112
|
-
"8.5.16-ubuntu-jdk17",
|
|
2113
|
-
"8.4.1-jdk17",
|
|
2114
|
-
"8.9.4-jdk11",
|
|
2115
|
-
"8.1.3",
|
|
2116
|
-
"8.0.1",
|
|
2117
2103
|
"8.5.16",
|
|
2118
|
-
"8.5.16-jdk17",
|
|
2104
|
+
"8.5.16-ubuntu-jdk17",
|
|
2105
|
+
"7.19.25",
|
|
2106
|
+
"8.1.4-jdk11",
|
|
2107
|
+
"7.19.24",
|
|
2108
|
+
"8.1-ubuntu-jdk11",
|
|
2109
|
+
"8.1.4",
|
|
2110
|
+
"8.3.1-jdk17",
|
|
2111
|
+
"8.7-ubuntu-jdk11",
|
|
2112
|
+
"8.1",
|
|
2113
|
+
"7.19.9-jdk11",
|
|
2119
2114
|
"8.4.1-ubuntu-jdk17",
|
|
2120
|
-
"8.
|
|
2121
|
-
"
|
|
2122
|
-
"8.9.1-jdk17",
|
|
2123
|
-
"8.8.0-ubuntu-jdk11",
|
|
2124
|
-
"8.5.1-ubuntu-jdk17",
|
|
2125
|
-
"9.0.1-ubuntu-jdk17",
|
|
2126
|
-
"8.7.1-ubuntu-jdk17",
|
|
2127
|
-
"8.0.1-ubuntu-jdk11",
|
|
2115
|
+
"8.4.3-jdk17",
|
|
2116
|
+
"7.19.24-jdk11",
|
|
2128
2117
|
"8.5.1-jdk17",
|
|
2129
|
-
"
|
|
2130
|
-
"
|
|
2131
|
-
"8.3.0-jdk17",
|
|
2132
|
-
"9.0.1",
|
|
2133
|
-
"8.4.1",
|
|
2134
|
-
"8.0.1-jdk11",
|
|
2135
|
-
"8.3.0",
|
|
2118
|
+
"7.19.4-jdk11",
|
|
2119
|
+
"7.19.19-jdk11",
|
|
2136
2120
|
"7.19.25-ubuntu-jdk11",
|
|
2137
|
-
"
|
|
2121
|
+
"8.1.3-jdk11",
|
|
2122
|
+
"7.20.0-ubuntu-jdk11",
|
|
2123
|
+
"8.1.3",
|
|
2124
|
+
"7.19.26-ubuntu-jdk11",
|
|
2125
|
+
"7.19.19-ubuntu-jdk11",
|
|
2126
|
+
"8.3.1",
|
|
2127
|
+
"7.20.0-jdk11",
|
|
2128
|
+
"8.5.1",
|
|
2129
|
+
"8.9.1-ubuntu-jdk17",
|
|
2130
|
+
"8.4.1-jdk17",
|
|
2131
|
+
"8.5.8-ubuntu-jdk11",
|
|
2138
2132
|
"8.3.0-ubuntu-jdk17",
|
|
2139
|
-
"8.
|
|
2140
|
-
"
|
|
2141
|
-
"
|
|
2142
|
-
"8.5
|
|
2133
|
+
"8.1-jdk11",
|
|
2134
|
+
"8.4.0-jdk11",
|
|
2135
|
+
"8.4.2",
|
|
2136
|
+
"8.9.5-jdk11",
|
|
2143
2137
|
"8.7.1",
|
|
2144
|
-
"8.4
|
|
2145
|
-
"
|
|
2138
|
+
"8.9.4-jdk11",
|
|
2139
|
+
"8.5.10-jdk17",
|
|
2140
|
+
"8.3.0",
|
|
2141
|
+
"8.0.1",
|
|
2146
2142
|
"8.7.1-jdk17",
|
|
2147
|
-
"8.5.
|
|
2143
|
+
"8.5.17-ubuntu-jdk17",
|
|
2144
|
+
"8.5.6",
|
|
2145
|
+
"7.19.25-jdk11",
|
|
2146
|
+
"8.3.1-ubuntu-jdk17",
|
|
2147
|
+
"8.5.6-ubuntu-jdk17",
|
|
2148
|
+
"8.5.1-ubuntu-jdk17",
|
|
2149
|
+
"8.5",
|
|
2150
|
+
"8.9.1-jdk17",
|
|
2148
2151
|
"8.4-ubuntu-jdk11",
|
|
2149
|
-
"
|
|
2152
|
+
"7.19.3",
|
|
2150
2153
|
"8.4.5-jdk11",
|
|
2151
|
-
"8.
|
|
2152
|
-
"7.19.25-jdk11",
|
|
2154
|
+
"8.0.2-ubuntu-jdk11",
|
|
2153
2155
|
"9.0.1-jdk17",
|
|
2154
|
-
"8.
|
|
2155
|
-
"8.
|
|
2156
|
-
"8.1.4-ubuntu-jdk11",
|
|
2157
|
-
"8.5.12-ubuntu-jdk11",
|
|
2158
|
-
"8.1",
|
|
2159
|
-
"8.5.6-jdk17",
|
|
2160
|
-
"8.5.12-jdk11",
|
|
2161
|
-
"8.3.0-jdk11",
|
|
2162
|
-
"8.5.6-ubuntu-jdk17",
|
|
2163
|
-
"8.1.4",
|
|
2164
|
-
"8.9.2-ubuntu-jdk17",
|
|
2165
|
-
"8.1-ubuntu-jdk11",
|
|
2166
|
-
"8.1.4-jdk11",
|
|
2167
|
-
"7.19.14",
|
|
2156
|
+
"8.0.1-jdk11",
|
|
2157
|
+
"8.0.3-ubuntu-jdk11",
|
|
2168
2158
|
"9.0.2-jdk17",
|
|
2169
|
-
"7.19.14-jdk11",
|
|
2170
2159
|
"7.20.0",
|
|
2160
|
+
"7.19.19",
|
|
2161
|
+
"9.0.1-ubuntu-jdk17",
|
|
2162
|
+
"8.4.0-ubuntu-jdk11",
|
|
2163
|
+
"8.5.6-jdk17",
|
|
2164
|
+
"8.5.17-jdk17",
|
|
2165
|
+
"8.5-ubuntu-jdk17",
|
|
2166
|
+
"8.4.2-jdk17",
|
|
2167
|
+
"8.3.0-jdk17",
|
|
2168
|
+
"8.0.1-ubuntu-jdk11",
|
|
2169
|
+
"7.19.4-ubuntu-jdk11",
|
|
2170
|
+
"7.19.3-jdk11",
|
|
2171
|
+
"8.5.7-jdk17",
|
|
2172
|
+
"8.8.0-jdk11",
|
|
2171
2173
|
"8.4.2-ubuntu-jdk17",
|
|
2174
|
+
"8.9.5-ubuntu-jdk11",
|
|
2175
|
+
"8.4.5-ubuntu-jdk11",
|
|
2176
|
+
"7.19.26",
|
|
2177
|
+
"8.9.1",
|
|
2178
|
+
"8.7.1-ubuntu-jdk17",
|
|
2179
|
+
"7.19.14-ubuntu-jdk11",
|
|
2180
|
+
"8.8.0-ubuntu-jdk11",
|
|
2181
|
+
"7.19.14-jdk11",
|
|
2172
2182
|
"8.9.2-jdk17",
|
|
2173
|
-
"
|
|
2174
|
-
"8.5.10-jdk17",
|
|
2175
|
-
"8.0.2",
|
|
2176
|
-
"8.0.2-ubuntu-jdk11",
|
|
2177
|
-
"8.4.2-jdk17",
|
|
2178
|
-
"8.4.2",
|
|
2179
|
-
"7.20.0-ubuntu-jdk11",
|
|
2180
|
-
"8.0.2-jdk11",
|
|
2181
|
-
"9.0.2",
|
|
2182
|
-
"7.20.0-jdk11",
|
|
2183
|
-
"7.19.2",
|
|
2184
|
-
"8.5.3-jdk11",
|
|
2185
|
-
"8.3.1-ubuntu-jdk17",
|
|
2186
|
-
"8.3.1-jdk17",
|
|
2187
|
-
"7.19.2-jdk11",
|
|
2188
|
-
"8.4.0-ubuntu-jdk11",
|
|
2183
|
+
"8.7.2-ubuntu-jdk17",
|
|
2189
2184
|
"7.19.2-ubuntu-jdk11",
|
|
2190
|
-
"8.
|
|
2191
|
-
"8.
|
|
2192
|
-
"7.
|
|
2193
|
-
"8.5",
|
|
2194
|
-
"8.8-ubuntu-jdk11",
|
|
2185
|
+
"8.7",
|
|
2186
|
+
"8.5.9-ubuntu-jdk11",
|
|
2187
|
+
"8.7.2-jdk17",
|
|
2195
2188
|
"8.5.17",
|
|
2196
|
-
"
|
|
2197
|
-
"8.
|
|
2198
|
-
"
|
|
2199
|
-
"
|
|
2200
|
-
"7.19.4",
|
|
2201
|
-
"8.8.1-jdk11",
|
|
2189
|
+
"7.19.0",
|
|
2190
|
+
"8.3.0-ubuntu-jdk11",
|
|
2191
|
+
"7.19.14",
|
|
2192
|
+
"9.0.2",
|
|
2202
2193
|
"7.19.0-jdk11",
|
|
2203
|
-
"8.
|
|
2204
|
-
"8.9.5-jdk11",
|
|
2194
|
+
"8.9.2-ubuntu-jdk17",
|
|
2205
2195
|
"7.19.0-ubuntu-jdk11",
|
|
2206
|
-
"8.5
|
|
2207
|
-
"8.
|
|
2208
|
-
"
|
|
2209
|
-
"
|
|
2210
|
-
"
|
|
2211
|
-
"8.
|
|
2212
|
-
"
|
|
2213
|
-
"8.7-ubuntu-jdk17",
|
|
2214
|
-
"8.6.0-ubuntu-jdk11",
|
|
2215
|
-
"8.8.1-ubuntu-jdk11",
|
|
2196
|
+
"8.5-jdk17",
|
|
2197
|
+
"8.7.2",
|
|
2198
|
+
"7.19.3-ubuntu-jdk11",
|
|
2199
|
+
"7.19.4",
|
|
2200
|
+
"7.19.2",
|
|
2201
|
+
"8.9.2",
|
|
2202
|
+
"8.3.1-jdk11",
|
|
2216
2203
|
"8.5.7",
|
|
2204
|
+
"8.5.7-ubuntu-jdk17",
|
|
2217
2205
|
"8.8-jdk11",
|
|
2218
|
-
"8.
|
|
2219
|
-
"7.19.26-jdk11",
|
|
2220
|
-
"8.7",
|
|
2221
|
-
"8.9.5-ubuntu-jdk11",
|
|
2222
|
-
"7.19.26",
|
|
2223
|
-
"7.19.4-ubuntu-jdk11",
|
|
2224
|
-
"8.4.3-jdk17",
|
|
2225
|
-
"7.19.0",
|
|
2226
|
-
"7.19.26-ubuntu-jdk11",
|
|
2227
|
-
"8.7-jdk17",
|
|
2228
|
-
"8.5.7-jdk17",
|
|
2229
|
-
"8.5.14-jdk11",
|
|
2206
|
+
"8.5.9-jdk11",
|
|
2230
2207
|
"8.3.1-ubuntu-jdk11",
|
|
2231
|
-
"8.9.3-jdk17",
|
|
2232
|
-
"8.0.3",
|
|
2233
|
-
"8.0.3-ubuntu-jdk11",
|
|
2234
|
-
"7.20.1-ubuntu-jdk11",
|
|
2235
|
-
"8.5.0-jdk11",
|
|
2236
|
-
"8.4.3",
|
|
2237
2208
|
"8.4.3-ubuntu-jdk17",
|
|
2238
|
-
"8.
|
|
2239
|
-
"8.
|
|
2240
|
-
"7.
|
|
2241
|
-
"
|
|
2242
|
-
"8.
|
|
2243
|
-
"8.
|
|
2244
|
-
"8.
|
|
2209
|
+
"8.4.3",
|
|
2210
|
+
"8.3.0-jdk11",
|
|
2211
|
+
"7.19.2-jdk11",
|
|
2212
|
+
"8.4-jdk11",
|
|
2213
|
+
"8.0.2",
|
|
2214
|
+
"8.5.11-ubuntu-jdk17",
|
|
2215
|
+
"8.8-ubuntu-jdk11",
|
|
2216
|
+
"8.7-jdk17",
|
|
2217
|
+
"8.7-ubuntu-jdk17",
|
|
2218
|
+
"8.8.1-ubuntu-jdk11",
|
|
2219
|
+
"8.0.3",
|
|
2220
|
+
"8.5.3-jdk11",
|
|
2221
|
+
"8.0.2-jdk11",
|
|
2222
|
+
"8.5.11",
|
|
2223
|
+
"9.0.2-ubuntu-jdk17",
|
|
2224
|
+
"8.0.3-jdk11",
|
|
2225
|
+
"8.8.1-jdk11",
|
|
2226
|
+
"8.6.0-jdk11",
|
|
2227
|
+
"8.6.0-ubuntu-jdk11",
|
|
2228
|
+
"8.5.11-jdk17",
|
|
2245
2229
|
"8.2.0-jdk11",
|
|
2246
|
-
"8.5.4-ubuntu-jdk11",
|
|
2247
|
-
"8.4.1-jdk11",
|
|
2248
2230
|
"8.9.3-ubuntu-jdk17",
|
|
2249
|
-
"
|
|
2250
|
-
"8.
|
|
2251
|
-
"8.
|
|
2252
|
-
"8.
|
|
2253
|
-
"8.5.
|
|
2254
|
-
"8.
|
|
2231
|
+
"8.5.8",
|
|
2232
|
+
"8.4.1-jdk11",
|
|
2233
|
+
"8.5.8-ubuntu-jdk17",
|
|
2234
|
+
"8.2.0",
|
|
2235
|
+
"8.5.3-ubuntu-jdk11",
|
|
2236
|
+
"8.9.6-ubuntu-jdk11",
|
|
2237
|
+
"8.4.1-ubuntu-jdk11",
|
|
2238
|
+
"9.0-jdk17",
|
|
2239
|
+
"7.19.15-ubuntu-jdk11",
|
|
2255
2240
|
"8.5.4-jdk11",
|
|
2256
|
-
"
|
|
2257
|
-
"
|
|
2241
|
+
"9.0.3",
|
|
2242
|
+
"8.3.2-ubuntu-jdk17",
|
|
2243
|
+
"8.2.0-ubuntu-jdk11",
|
|
2258
2244
|
"7.19.15-jdk11",
|
|
2259
2245
|
"9.0.1-jdk21",
|
|
2260
|
-
"
|
|
2261
|
-
"8.5.11-ubuntu-jdk17",
|
|
2262
|
-
"7.19.20-jdk11",
|
|
2263
|
-
"7.19.20",
|
|
2264
|
-
"9.0.3",
|
|
2246
|
+
"8.5.4-ubuntu-jdk11",
|
|
2265
2247
|
"7.19.15",
|
|
2266
|
-
"
|
|
2248
|
+
"8.5.8-jdk17",
|
|
2249
|
+
"9.0.2-ubi9",
|
|
2250
|
+
"8.2.1",
|
|
2251
|
+
"7.19.20",
|
|
2252
|
+
"8.3.3-ubuntu-jdk17",
|
|
2253
|
+
"7.20.1",
|
|
2254
|
+
"8.5.2",
|
|
2255
|
+
"9.0",
|
|
2267
2256
|
"7.19.1-jdk11",
|
|
2268
|
-
"8.5.11-jdk17",
|
|
2269
2257
|
"9.0.3-jdk17",
|
|
2258
|
+
"8.5.2-ubuntu-jdk17",
|
|
2259
|
+
"9.0.1-ubuntu-jdk21",
|
|
2260
|
+
"7.20.1-ubuntu-jdk11",
|
|
2270
2261
|
"7.19.1",
|
|
2271
|
-
"8.3.2-ubuntu-jdk11",
|
|
2272
|
-
"7.19.5",
|
|
2273
|
-
"7.19.27-jdk11",
|
|
2274
|
-
"7.19.27",
|
|
2275
|
-
"9.0-ubuntu-jdk17",
|
|
2276
|
-
"8.5.11",
|
|
2277
|
-
"7.19.5-ubuntu-jdk11",
|
|
2278
|
-
"7.19.27-ubuntu-jdk11",
|
|
2279
|
-
"9.0",
|
|
2280
|
-
"9.0.2-ubi9-jdk17",
|
|
2281
|
-
"9.0.3-ubuntu-jdk17",
|
|
2282
|
-
"8.5.2",
|
|
2283
|
-
"9.0-jdk17",
|
|
2284
2262
|
"8.9.6-jdk11",
|
|
2263
|
+
"9.0.3-ubuntu-jdk17",
|
|
2264
|
+
"8.3.2",
|
|
2285
2265
|
"8.5.2-jdk17",
|
|
2286
|
-
"7.19.
|
|
2266
|
+
"7.19.1-ubuntu-jdk11",
|
|
2267
|
+
"8.5.0-jdk11",
|
|
2268
|
+
"8.3.2-jdk17",
|
|
2269
|
+
"7.19.20-ubuntu-jdk11",
|
|
2270
|
+
"9.0-ubuntu-jdk17",
|
|
2287
2271
|
"8.5.15-ubuntu-jdk11",
|
|
2288
|
-
"8.5.
|
|
2289
|
-
"8.9.
|
|
2290
|
-
"8.
|
|
2291
|
-
"9.
|
|
2292
|
-
"8.5.
|
|
2293
|
-
"8.
|
|
2272
|
+
"8.5.12",
|
|
2273
|
+
"8.9.0-jdk11",
|
|
2274
|
+
"8.5.1-ubuntu-jdk11",
|
|
2275
|
+
"8.9.2-ubi9",
|
|
2276
|
+
"8.5.3-jdk17",
|
|
2277
|
+
"8.9.6-ubi9",
|
|
2278
|
+
"7.20.1-jdk11",
|
|
2294
2279
|
"8.6.1-ubuntu-jdk11",
|
|
2295
|
-
"
|
|
2296
|
-
"8.5.
|
|
2297
|
-
"8.4.4-jdk17",
|
|
2298
|
-
"8.
|
|
2280
|
+
"7.20.2-jdk11",
|
|
2281
|
+
"8.5.0-ubuntu-jdk11",
|
|
2282
|
+
"8.4.4-ubuntu-jdk17",
|
|
2283
|
+
"8.9.2-ubi9-jdk17",
|
|
2284
|
+
"8.9.3",
|
|
2285
|
+
"7.19.5-jdk11",
|
|
2286
|
+
"7.19.5-ubuntu-jdk11",
|
|
2287
|
+
"7.19.27",
|
|
2288
|
+
"7.19.5",
|
|
2289
|
+
"8.5.10-ubi9-jdk17",
|
|
2290
|
+
"7.19.20-jdk11",
|
|
2299
2291
|
"8.8.0-jdk17",
|
|
2292
|
+
"8.5.15-jdk11",
|
|
2300
2293
|
"8.8.0",
|
|
2294
|
+
"8.2.1-jdk11",
|
|
2295
|
+
"7.19.27-ubuntu-jdk11",
|
|
2296
|
+
"8.8.0-ubi9-jdk17",
|
|
2297
|
+
"8.0",
|
|
2301
2298
|
"8.6.1-jdk11",
|
|
2302
|
-
"
|
|
2299
|
+
"7.19.27-jdk11",
|
|
2300
|
+
"7.20.2",
|
|
2301
|
+
"8.9.3-jdk17",
|
|
2302
|
+
"8.3.2-jdk11",
|
|
2303
|
+
"8.8.0-ubi9",
|
|
2304
|
+
"9.0.2-ubi9-jdk17",
|
|
2305
|
+
"8.2.1-ubuntu-jdk11",
|
|
2306
|
+
"8.3.2-ubuntu-jdk11",
|
|
2303
2307
|
"8.8.0-ubuntu-jdk17",
|
|
2304
2308
|
"8.4.4",
|
|
2305
|
-
"8.
|
|
2306
|
-
"8.9.0-jdk11",
|
|
2307
|
-
"8.9.0-ubuntu-jdk11",
|
|
2308
|
-
"8.0-ubuntu-jdk11",
|
|
2309
|
-
"7.20.2",
|
|
2309
|
+
"8.3.3",
|
|
2310
2310
|
"8.0-jdk11",
|
|
2311
|
-
"8.0.4-jdk11",
|
|
2312
2311
|
"8.3.3-jdk17",
|
|
2313
|
-
"8.
|
|
2312
|
+
"8.6.1-ubi9-jdk17",
|
|
2313
|
+
"8.0.4-jdk11",
|
|
2314
|
+
"8.5.9-jdk17",
|
|
2314
2315
|
"8.0.4",
|
|
2315
|
-
"8.
|
|
2316
|
-
"
|
|
2317
|
-
"
|
|
2318
|
-
"
|
|
2319
|
-
"
|
|
2316
|
+
"8.4.4-jdk17",
|
|
2317
|
+
"7.19.6",
|
|
2318
|
+
"7.19.6-jdk11",
|
|
2319
|
+
"7.20.2-ubuntu-jdk11",
|
|
2320
|
+
"9.0.3-ubi9",
|
|
2321
|
+
"8.5.12-jdk17",
|
|
2322
|
+
"8.5.12-ubuntu-jdk17",
|
|
2323
|
+
"8.8.1-ubuntu-jdk17",
|
|
2324
|
+
"8.0-ubuntu-jdk11",
|
|
2325
|
+
"8.8-jdk17",
|
|
2320
2326
|
"8.9.6-ubi9-jdk17",
|
|
2321
|
-
"8.9.
|
|
2322
|
-
"8.
|
|
2323
|
-
"8.4
|
|
2324
|
-
"8.3.3-ubuntu-jdk17",
|
|
2325
|
-
"8.3.3",
|
|
2326
|
-
"7.19.16-ubuntu-jdk11",
|
|
2327
|
-
"8.8.0-ubi9",
|
|
2328
|
-
"7.19.10-ubuntu-jdk11",
|
|
2329
|
-
"8.5.15-ubi9",
|
|
2327
|
+
"8.9.0-ubuntu-jdk11",
|
|
2328
|
+
"8.5.9",
|
|
2329
|
+
"8.0.4-ubuntu-jdk11",
|
|
2330
2330
|
"8.5.1-jdk11",
|
|
2331
|
-
"8.
|
|
2332
|
-
"7.20.2-jdk11",
|
|
2333
|
-
"7.20.2-ubuntu-jdk11",
|
|
2334
|
-
"8.5.5-jdk11",
|
|
2331
|
+
"8.5.15-ubi9",
|
|
2335
2332
|
"8.5.15-ubi9-jdk17",
|
|
2336
|
-
"8.2.
|
|
2337
|
-
"8.2.1-jdk11",
|
|
2333
|
+
"8.2.2-ubuntu-jdk11",
|
|
2338
2334
|
"7.19.21-ubuntu-jdk11",
|
|
2339
|
-
"8.4.2-ubuntu-jdk11",
|
|
2340
|
-
"8.9.2-ubi9-jdk17",
|
|
2341
|
-
"8.5.12-jdk17",
|
|
2342
2335
|
"7.19.10",
|
|
2343
|
-
"8.
|
|
2344
|
-
"7.19.
|
|
2336
|
+
"8.6.1-ubi9",
|
|
2337
|
+
"7.19.16-ubuntu-jdk11",
|
|
2338
|
+
"8.4.2-ubuntu-jdk11",
|
|
2339
|
+
"8.5.10-ubi9",
|
|
2340
|
+
"8.5.3-ubuntu-jdk17",
|
|
2341
|
+
"8.5.5-jdk11",
|
|
2342
|
+
"8.4.2-jdk11",
|
|
2343
|
+
"8.5.9-ubuntu-jdk17",
|
|
2344
|
+
"8.6-ubuntu-jdk11",
|
|
2345
|
+
"9.1.0-jdk17",
|
|
2346
|
+
"8.3.3-jdk11",
|
|
2347
|
+
"7.19.16",
|
|
2345
2348
|
"7.19.16-jdk11",
|
|
2349
|
+
"7.19.10-ubuntu-jdk11",
|
|
2346
2350
|
"8.5.5-ubuntu-jdk11",
|
|
2347
|
-
"
|
|
2348
|
-
"7.19.21-jdk11",
|
|
2349
|
-
"7.19.6-jdk11",
|
|
2351
|
+
"8.2.2-ubuntu-jdk17",
|
|
2350
2352
|
"8.5.3",
|
|
2351
|
-
"
|
|
2352
|
-
"
|
|
2353
|
-
"8.5.12-ubuntu-jdk17",
|
|
2354
|
-
"8.5.9-ubuntu-jdk17",
|
|
2355
|
-
"7.19.16",
|
|
2353
|
+
"7.19.10-jdk11",
|
|
2354
|
+
"8.2.2-jdk17",
|
|
2356
2355
|
"7.19.21",
|
|
2357
|
-
"8.
|
|
2358
|
-
"
|
|
2359
|
-
"8.
|
|
2360
|
-
"8.5.16-jdk11",
|
|
2361
|
-
"8.5.16-ubuntu-jdk11",
|
|
2362
|
-
"8.6-jdk11",
|
|
2363
|
-
"8.3.3-ubuntu-jdk11",
|
|
2364
|
-
"8.5.9",
|
|
2365
|
-
"9.1.0",
|
|
2366
|
-
"8.3.3-jdk11",
|
|
2367
|
-
"8.6.2-jdk11",
|
|
2356
|
+
"8.9.7-jdk11",
|
|
2357
|
+
"7.19.21-jdk11",
|
|
2358
|
+
"8.5.7-ubi9",
|
|
2368
2359
|
"9.1.0-ubuntu-jdk17",
|
|
2369
|
-
"
|
|
2370
|
-
"8.
|
|
2371
|
-
"9.
|
|
2372
|
-
"8.
|
|
2360
|
+
"9.1.0",
|
|
2361
|
+
"8.9.7-ubuntu-jdk11",
|
|
2362
|
+
"9.0.3-ubi9-jdk17",
|
|
2363
|
+
"8.9.4-jdk17",
|
|
2364
|
+
"8.0.3-jdk17",
|
|
2365
|
+
"8.1.3-jdk17",
|
|
2366
|
+
"8.9.4-ubuntu-jdk17",
|
|
2367
|
+
"8.9.4",
|
|
2368
|
+
"8.5.14-jdk17",
|
|
2369
|
+
"7.19.6-ubuntu-jdk11",
|
|
2373
2370
|
"9.0.3-ubi9-jdk21",
|
|
2374
|
-
"8.
|
|
2371
|
+
"8.0.3-ubuntu-jdk17",
|
|
2372
|
+
"8.8.1",
|
|
2375
2373
|
"8.1.3-ubuntu-jdk17",
|
|
2376
|
-
"
|
|
2377
|
-
"7.19.28-jdk11",
|
|
2378
|
-
"8.9.1-jdk11",
|
|
2379
|
-
"8.5.10-ubi9-jdk17",
|
|
2374
|
+
"8.5.16-jdk11",
|
|
2380
2375
|
"9.0.2-jdk21",
|
|
2381
|
-
"7.19.28",
|
|
2382
|
-
"8.5.10-ubi9",
|
|
2383
|
-
"8.9.7-ubuntu-jdk11",
|
|
2384
|
-
"9.0.2-ubuntu-jdk21",
|
|
2385
|
-
"8.2.2-ubuntu-jdk17",
|
|
2386
|
-
"8.2.2-jdk17",
|
|
2387
|
-
"8.6.2-ubi9",
|
|
2388
|
-
"8.9.1-ubuntu-jdk11",
|
|
2389
|
-
"8.5.7-ubi9-jdk17",
|
|
2390
2376
|
"8.8-ubuntu-jdk17",
|
|
2391
|
-
"
|
|
2392
|
-
"8.8.1-ubuntu-jdk17",
|
|
2393
|
-
"8.1.3-jdk17",
|
|
2394
|
-
"8.5.7-ubi9",
|
|
2395
|
-
"8.8.1",
|
|
2396
|
-
"8.3.4-ubuntu-jdk17",
|
|
2397
|
-
"8.4.5-jdk17",
|
|
2398
|
-
"8.3.4",
|
|
2399
|
-
"8.0.3-ubuntu-jdk17",
|
|
2400
|
-
"8.8",
|
|
2401
|
-
"9.0.3-ubi9-jdk17",
|
|
2402
|
-
"8.5.10-ubuntu-jdk11",
|
|
2403
|
-
"8.8-jdk17",
|
|
2404
|
-
"8.9.5-jdk17",
|
|
2377
|
+
"7.19.28-jdk11",
|
|
2405
2378
|
"8.4.3-jdk11",
|
|
2406
|
-
"
|
|
2407
|
-
"
|
|
2408
|
-
"8.
|
|
2409
|
-
"8.
|
|
2379
|
+
"8.3.3-ubuntu-jdk11",
|
|
2380
|
+
"7.19.28-ubuntu-jdk11",
|
|
2381
|
+
"8.8",
|
|
2382
|
+
"8.6.2-ubuntu-jdk11",
|
|
2383
|
+
"8.9.3-ubi9",
|
|
2384
|
+
"8.5.7-ubi9-jdk17",
|
|
2385
|
+
"8.9.3-ubi9-jdk17",
|
|
2410
2386
|
"8.2.2-jdk11",
|
|
2387
|
+
"9.0.2-ubuntu-jdk21",
|
|
2388
|
+
"8.6-jdk11",
|
|
2389
|
+
"8.2.0-jdk17",
|
|
2390
|
+
"8.4.3-ubuntu-jdk11",
|
|
2391
|
+
"8.8.1-jdk17",
|
|
2392
|
+
"8.5.16-ubuntu-jdk11",
|
|
2393
|
+
"8.1.0-jdk17",
|
|
2411
2394
|
"8.4.5",
|
|
2395
|
+
"8.4-ubuntu-jdk17",
|
|
2396
|
+
"8.4",
|
|
2397
|
+
"8.2.2",
|
|
2398
|
+
"7.19.28",
|
|
2412
2399
|
"8.4-jdk17",
|
|
2400
|
+
"8.9.1-jdk11",
|
|
2401
|
+
"8.3.4",
|
|
2402
|
+
"8.9.5-ubuntu-jdk17",
|
|
2403
|
+
"8.8.1-ubi9-jdk17",
|
|
2404
|
+
"8.3.4-jdk17",
|
|
2405
|
+
"8.5.16-ubi9-jdk17",
|
|
2406
|
+
"8.6.2-jdk11",
|
|
2407
|
+
"8.8.1-ubi9",
|
|
2413
2408
|
"8.5.16-ubi9",
|
|
2414
|
-
"7.20",
|
|
2415
|
-
"7-ubuntu-jdk11",
|
|
2416
|
-
"8.3",
|
|
2417
2409
|
"8.3-ubuntu-jdk17",
|
|
2418
|
-
"8.4-ubuntu-jdk17",
|
|
2419
|
-
"8.4",
|
|
2420
|
-
"7.20-jdk11",
|
|
2421
2410
|
"8.4.5-ubuntu-jdk17",
|
|
2411
|
+
"8.3.4-ubuntu-jdk17",
|
|
2412
|
+
"8.6.0",
|
|
2413
|
+
"7.19.11",
|
|
2414
|
+
"7.19.17",
|
|
2415
|
+
"8.4.5-jdk17",
|
|
2416
|
+
"8.6.0-ubuntu-jdk17",
|
|
2417
|
+
"8.6.2-ubi9-jdk17",
|
|
2418
|
+
"7-ubuntu-jdk11",
|
|
2419
|
+
"7.20",
|
|
2420
|
+
"7-jdk11",
|
|
2422
2421
|
"7.20.3-ubuntu-jdk11",
|
|
2423
|
-
"8.5.14-jdk17",
|
|
2424
|
-
"8.0.3-jdk17",
|
|
2425
|
-
"8.5.4",
|
|
2426
|
-
"7.20.3",
|
|
2427
|
-
"7.20-ubuntu-jdk11",
|
|
2428
2422
|
"8.5.10-jdk11",
|
|
2429
|
-
"
|
|
2430
|
-
"8.
|
|
2431
|
-
"7-
|
|
2423
|
+
"7.20-jdk11",
|
|
2424
|
+
"8.3",
|
|
2425
|
+
"8.9.7-ubi9-jdk17",
|
|
2432
2426
|
"8.9.5",
|
|
2433
|
-
"8.
|
|
2434
|
-
"8.
|
|
2435
|
-
"8.5.14",
|
|
2436
|
-
"8.9.5-ubuntu-jdk17",
|
|
2427
|
+
"8.3-jdk17",
|
|
2428
|
+
"8.6.0-jdk17",
|
|
2437
2429
|
"7.20.3-jdk11",
|
|
2438
|
-
"8.5.
|
|
2439
|
-
"8.4.3-ubuntu-jdk11",
|
|
2440
|
-
"8.5.4-jdk17",
|
|
2441
|
-
"8.1.0-jdk17",
|
|
2430
|
+
"8.5.10-ubuntu-jdk11",
|
|
2442
2431
|
"8.2.0-ubuntu-jdk17",
|
|
2443
|
-
"
|
|
2444
|
-
"8.
|
|
2445
|
-
"7.19.
|
|
2446
|
-
"
|
|
2447
|
-
"7.
|
|
2448
|
-
"
|
|
2432
|
+
"8.5.14",
|
|
2433
|
+
"8.6.2-ubi9",
|
|
2434
|
+
"7.19.7-jdk11",
|
|
2435
|
+
"7",
|
|
2436
|
+
"7.20.3",
|
|
2437
|
+
"7.19.17-ubuntu-jdk11",
|
|
2449
2438
|
"7.19.17-jdk11",
|
|
2450
|
-
"8.
|
|
2451
|
-
"8.
|
|
2452
|
-
"8.1.0-ubuntu-jdk11",
|
|
2453
|
-
"8.1.0-ubuntu-jdk17",
|
|
2439
|
+
"8.5.4-jdk17",
|
|
2440
|
+
"8.5.4-ubuntu-jdk17",
|
|
2454
2441
|
"7.19.11-jdk11",
|
|
2455
|
-
"8.
|
|
2456
|
-
"
|
|
2457
|
-
"
|
|
2458
|
-
"
|
|
2459
|
-
"8.
|
|
2460
|
-
"
|
|
2461
|
-
"
|
|
2462
|
-
"8.6.0-jdk17",
|
|
2463
|
-
"7.19.7",
|
|
2464
|
-
"8.6.0-ubuntu-jdk17",
|
|
2442
|
+
"8.1.0-ubuntu-jdk17",
|
|
2443
|
+
"7.20-ubuntu-jdk11",
|
|
2444
|
+
"8.9.1-ubuntu-jdk11",
|
|
2445
|
+
"8.1.0-jdk11",
|
|
2446
|
+
"8.5.14-ubuntu-jdk17",
|
|
2447
|
+
"7.19.22-ubuntu-jdk11",
|
|
2448
|
+
"8.9.7-ubi9",
|
|
2465
2449
|
"7.19.22-jdk11",
|
|
2466
|
-
"
|
|
2467
|
-
"7.19.
|
|
2468
|
-
"8.6.0",
|
|
2469
|
-
"7.19.17-ubuntu-jdk11",
|
|
2470
|
-
"7.19.29",
|
|
2471
|
-
"7.19",
|
|
2472
|
-
"8.3.4-jdk11",
|
|
2473
|
-
"8.3-jdk11",
|
|
2474
|
-
"8.1.4-jdk17",
|
|
2475
|
-
"8.5.17-ubuntu-jdk11",
|
|
2476
|
-
"8.5.17-jdk11",
|
|
2477
|
-
"8.8.1-ubi9",
|
|
2478
|
-
"7.19.29-ubuntu-jdk11",
|
|
2479
|
-
"8.1-ubuntu-jdk17",
|
|
2480
|
-
"7.19-jdk11",
|
|
2481
|
-
"8.9-jdk11",
|
|
2450
|
+
"7.19.22",
|
|
2451
|
+
"7.19.11-ubuntu-jdk11",
|
|
2482
2452
|
"8.5-ubuntu-jdk11",
|
|
2483
|
-
"
|
|
2453
|
+
"7.19.7",
|
|
2454
|
+
"8.5.6-jdk11",
|
|
2455
|
+
"8.5.4",
|
|
2456
|
+
"8.5.6-ubuntu-jdk11",
|
|
2457
|
+
"8.3.4-jdk11",
|
|
2458
|
+
"ubuntu-jdk21",
|
|
2459
|
+
"8.1.0-ubuntu-jdk11",
|
|
2460
|
+
"8.5.11-ubi9",
|
|
2461
|
+
"latest",
|
|
2462
|
+
"8.1.0",
|
|
2484
2463
|
"7.19.7-ubuntu-jdk11",
|
|
2485
|
-
"
|
|
2486
|
-
"
|
|
2487
|
-
"
|
|
2488
|
-
"8.
|
|
2489
|
-
"
|
|
2490
|
-
"9.0-jdk21",
|
|
2491
|
-
"8.9.8-jdk11",
|
|
2492
|
-
"8-jdk11",
|
|
2493
|
-
"9.1.1",
|
|
2494
|
-
"8.3-ubuntu-jdk11",
|
|
2495
|
-
"8.9.2-jdk11",
|
|
2496
|
-
"8.1.4-ubuntu-jdk17",
|
|
2497
|
-
"7.19.7-jdk11",
|
|
2498
|
-
"8.9.2-ubuntu-jdk11",
|
|
2499
|
-
"8.9.8-ubuntu-jdk11",
|
|
2500
|
-
"9.0.3-ubuntu-jdk21",
|
|
2501
|
-
"9-jdk17",
|
|
2464
|
+
"8.3.4-ubuntu-jdk11",
|
|
2465
|
+
"9",
|
|
2466
|
+
"9.0.3-jdk21",
|
|
2467
|
+
"8.9.5-jdk17",
|
|
2468
|
+
"8.2.3",
|
|
2502
2469
|
"8.5.11-ubi9-jdk17",
|
|
2503
|
-
"8.
|
|
2504
|
-
"8.5.11-ubi9",
|
|
2470
|
+
"8.9-jdk11",
|
|
2505
2471
|
"8-ubuntu-jdk11",
|
|
2472
|
+
"8-jdk11",
|
|
2473
|
+
"7.19-jdk11",
|
|
2506
2474
|
"8.9-ubuntu-jdk11",
|
|
2507
|
-
"8.
|
|
2475
|
+
"8.5.8-ubi9-jdk17",
|
|
2476
|
+
"jdk17",
|
|
2508
2477
|
"9.1.1-ubuntu-jdk17",
|
|
2509
|
-
"
|
|
2510
|
-
"8.
|
|
2478
|
+
"8.5.17-jdk11",
|
|
2479
|
+
"8.9.8-ubuntu-jdk11",
|
|
2511
2480
|
"8.2.3-ubuntu-jdk17",
|
|
2512
|
-
"
|
|
2513
|
-
"
|
|
2514
|
-
"
|
|
2515
|
-
"
|
|
2516
|
-
"
|
|
2481
|
+
"8.2.3-ubuntu-jdk11",
|
|
2482
|
+
"8.1.4-ubuntu-jdk17",
|
|
2483
|
+
"8.1.4-jdk17",
|
|
2484
|
+
"8.9.8-jdk11",
|
|
2485
|
+
"8.2.3-jdk17",
|
|
2486
|
+
"7.19.29-jdk11",
|
|
2487
|
+
"9-jdk17",
|
|
2488
|
+
"9.1-ubuntu-jdk21",
|
|
2489
|
+
"8.0-jdk17",
|
|
2517
2490
|
"9.1-ubuntu-jdk17",
|
|
2518
|
-
"
|
|
2519
|
-
"
|
|
2491
|
+
"8.5-jdk11",
|
|
2492
|
+
"8.5.17-ubuntu-jdk11",
|
|
2520
2493
|
"9.1.1-jdk21",
|
|
2521
|
-
"8.
|
|
2494
|
+
"8.3-ubuntu-jdk11",
|
|
2495
|
+
"9-jdk21",
|
|
2496
|
+
"7.19.29",
|
|
2497
|
+
"9-ubuntu-jdk21",
|
|
2522
2498
|
"9.1",
|
|
2499
|
+
"jdk21",
|
|
2500
|
+
"7.19-ubuntu-jdk11",
|
|
2501
|
+
"8.9.0",
|
|
2502
|
+
"9.0-ubuntu-jdk21",
|
|
2503
|
+
"7.19",
|
|
2523
2504
|
"9.1-jdk21",
|
|
2524
|
-
"9",
|
|
2525
|
-
"9.1-ubuntu-jdk21",
|
|
2526
|
-
"8.0.4-jdk17",
|
|
2527
|
-
"8.0-jdk17",
|
|
2528
|
-
"9.1.1-ubuntu-jdk21",
|
|
2529
|
-
"9.0.3-jdk21",
|
|
2530
|
-
"8.2.3-jdk17",
|
|
2531
|
-
"8.7.1-ubi9-jdk17",
|
|
2532
2505
|
"8.2.3-jdk11",
|
|
2533
|
-
"8.
|
|
2506
|
+
"8.2-jdk17",
|
|
2507
|
+
"8.2-jdk11",
|
|
2508
|
+
"9.1.1-ubuntu-jdk21",
|
|
2509
|
+
"9.0-jdk21",
|
|
2534
2510
|
"8.2-ubuntu-jdk11",
|
|
2535
|
-
"
|
|
2536
|
-
"
|
|
2537
|
-
"
|
|
2538
|
-
"7.19.
|
|
2539
|
-
"8.
|
|
2540
|
-
"
|
|
2541
|
-
"
|
|
2511
|
+
"8.3-jdk11",
|
|
2512
|
+
"ubuntu-jdk17",
|
|
2513
|
+
"9-ubuntu-jdk17",
|
|
2514
|
+
"7.19.29-ubuntu-jdk11",
|
|
2515
|
+
"8.2",
|
|
2516
|
+
"9.1-jdk17",
|
|
2517
|
+
"9.1.1-jdk17",
|
|
2542
2518
|
"8.0.4-ubuntu-jdk17",
|
|
2543
|
-
"
|
|
2519
|
+
"9.1.1",
|
|
2520
|
+
"9.0.3-ubuntu-jdk21",
|
|
2521
|
+
"8.5.8-ubi9",
|
|
2544
2522
|
"8.0-ubuntu-jdk17",
|
|
2545
|
-
"8.2
|
|
2546
|
-
"
|
|
2547
|
-
"8.2",
|
|
2548
|
-
"8.5.7-ubuntu-jdk11",
|
|
2523
|
+
"8.9.2-jdk11",
|
|
2524
|
+
"8.2-ubuntu-jdk17",
|
|
2549
2525
|
"8.9.0-jdk17",
|
|
2550
|
-
"
|
|
2551
|
-
"8.
|
|
2552
|
-
"
|
|
2553
|
-
"8.
|
|
2554
|
-
"8.
|
|
2526
|
+
"8.1-jdk17",
|
|
2527
|
+
"8.0.4-jdk17",
|
|
2528
|
+
"8.6.1-jdk17",
|
|
2529
|
+
"8.1-ubuntu-jdk17",
|
|
2530
|
+
"8.6.1",
|
|
2531
|
+
"8.5.11-jdk11",
|
|
2532
|
+
"9.1.0-ubuntu-jdk21",
|
|
2533
|
+
"8.6.1-ubuntu-jdk17",
|
|
2555
2534
|
"8.5.15",
|
|
2556
|
-
"8.9.
|
|
2557
|
-
"8.5.
|
|
2535
|
+
"8.9.4-ubi9",
|
|
2536
|
+
"8.5.17-ubi9-jdk17",
|
|
2537
|
+
"9.1.0-ubi9-jdk17",
|
|
2538
|
+
"9.0.1-ubi9",
|
|
2539
|
+
"7.19.23-ubuntu-jdk11",
|
|
2540
|
+
"8.0.0-jdk11",
|
|
2541
|
+
"8.7.1-jdk11",
|
|
2542
|
+
"8.9.4-ubi9-jdk17",
|
|
2543
|
+
"8.7.1-ubuntu-jdk11",
|
|
2544
|
+
"8.1.1",
|
|
2545
|
+
"7.19.18-ubuntu-jdk11",
|
|
2546
|
+
"7.19.18",
|
|
2558
2547
|
"9.1.0-ubi9-jdk21",
|
|
2559
|
-
"
|
|
2560
|
-
"8.
|
|
2561
|
-
"8.9.6-ubuntu-jdk17",
|
|
2548
|
+
"8.5.17-ubi9",
|
|
2549
|
+
"8.1.1-ubuntu-jdk11",
|
|
2562
2550
|
"7.19.23-jdk11",
|
|
2563
|
-
"
|
|
2564
|
-
"
|
|
2565
|
-
"9.1.0-ubuntu-jdk21",
|
|
2566
|
-
"7.19.8-jdk11",
|
|
2551
|
+
"7.19.12",
|
|
2552
|
+
"8.1.1-jdk11",
|
|
2567
2553
|
"7.19.23",
|
|
2568
|
-
"8.
|
|
2569
|
-
"8.5.0-jdk17",
|
|
2554
|
+
"8.0.1-jdk17",
|
|
2570
2555
|
"8.5.15-ubuntu-jdk17",
|
|
2571
|
-
"9.
|
|
2572
|
-
"8.
|
|
2573
|
-
"
|
|
2574
|
-
"8.5.
|
|
2556
|
+
"8.9.2-ubuntu-jdk11",
|
|
2557
|
+
"8.5.0",
|
|
2558
|
+
"9.1.0-ubi9",
|
|
2559
|
+
"8.5.15-jdk17",
|
|
2560
|
+
"9.1.0-jdk21",
|
|
2561
|
+
"8.9.0-ubuntu-jdk17",
|
|
2562
|
+
"8.4.4-jdk11",
|
|
2563
|
+
"7.19.8",
|
|
2564
|
+
"8.0.1-ubuntu-jdk17",
|
|
2565
|
+
"7.19.12-jdk11",
|
|
2566
|
+
"7.19.12-ubuntu-jdk11",
|
|
2567
|
+
"8.2.1-jdk17",
|
|
2575
2568
|
"8.5.11-ubuntu-jdk11",
|
|
2569
|
+
"8.2.1-ubuntu-jdk17",
|
|
2570
|
+
"8.0.0-ubuntu-jdk11",
|
|
2576
2571
|
"8.9.8-ubi9-jdk17",
|
|
2572
|
+
"9.0.1-ubi9-jdk21",
|
|
2573
|
+
"8.0.0-ubuntu-jdk17",
|
|
2574
|
+
"8.5.7-ubuntu-jdk11",
|
|
2575
|
+
"8.0.0",
|
|
2576
|
+
"8.4.4-ubuntu-jdk11",
|
|
2577
|
+
"8.5.0-ubuntu-jdk17",
|
|
2578
|
+
"8.9.0-ubi9-jdk17",
|
|
2577
2579
|
"7.19.18-jdk11",
|
|
2578
|
-
"8.
|
|
2579
|
-
"8.5.
|
|
2580
|
+
"8.4.0-jdk17",
|
|
2581
|
+
"8.5.5-jdk17",
|
|
2580
2582
|
"8.4.0",
|
|
2581
|
-
"8.
|
|
2582
|
-
"8.5.
|
|
2583
|
-
"8.
|
|
2584
|
-
"8.
|
|
2585
|
-
"8.5.0-ubuntu-jdk17",
|
|
2586
|
-
"8.5.5",
|
|
2587
|
-
"8.1.1-ubuntu-jdk17",
|
|
2588
|
-
"7.19.18-ubuntu-jdk11",
|
|
2589
|
-
"8.6.1-jdk17",
|
|
2590
|
-
"8.1.1-ubuntu-jdk11",
|
|
2591
|
-
"8.5.17-ubi9",
|
|
2583
|
+
"8.5.0-jdk17",
|
|
2584
|
+
"8.5.5-ubuntu-jdk17",
|
|
2585
|
+
"8.7.1-ubi9-jdk17",
|
|
2586
|
+
"8.0.2-ubuntu-jdk17",
|
|
2592
2587
|
"8.0.2-jdk17",
|
|
2593
|
-
"8.
|
|
2594
|
-
"8.2.1-ubuntu-jdk17",
|
|
2595
|
-
"8.0.0",
|
|
2596
|
-
"7.19.8",
|
|
2588
|
+
"8.0.0-jdk17",
|
|
2597
2589
|
"7.19.8-ubuntu-jdk11",
|
|
2590
|
+
"8.5.7-jdk11",
|
|
2591
|
+
"8.1.1-jdk17",
|
|
2598
2592
|
"8.4.0-ubuntu-jdk17",
|
|
2599
|
-
"
|
|
2600
|
-
"8.6.1-ubuntu-jdk17",
|
|
2601
|
-
"8.6.1",
|
|
2602
|
-
"8.2.1-jdk17",
|
|
2603
|
-
"8.0.0-ubuntu-jdk17",
|
|
2604
|
-
"8.9.4-ubi9",
|
|
2605
|
-
"8.0.0-jdk17",
|
|
2606
|
-
"8.0.1-ubuntu-jdk17",
|
|
2607
|
-
"8.0.1-jdk17",
|
|
2608
|
-
"8.9.4-ubi9-jdk17",
|
|
2609
|
-
"8.5.9-ubi9",
|
|
2610
|
-
"9.0.1-ubi9-jdk21",
|
|
2593
|
+
"7.19.8-jdk11",
|
|
2611
2594
|
"8.5.12-ubi9-jdk17",
|
|
2595
|
+
"8.1.1-ubuntu-jdk17",
|
|
2596
|
+
"8.5.5",
|
|
2612
2597
|
"8.5.12-ubi9",
|
|
2613
|
-
"9.
|
|
2614
|
-
"8.
|
|
2615
|
-
"8.9
|
|
2616
|
-
"8.9.0-ubi9",
|
|
2617
|
-
"ubi9-jdk17",
|
|
2598
|
+
"8.9.6-ubuntu-jdk17",
|
|
2599
|
+
"8.9.8-ubi9",
|
|
2600
|
+
"8.5.9-ubi9",
|
|
2618
2601
|
"9.1.1-ubi9-jdk17",
|
|
2602
|
+
"8.9.6",
|
|
2619
2603
|
"9.1.1-ubi9-jdk21",
|
|
2620
|
-
"8.7.2-ubi9",
|
|
2621
2604
|
"9.1.1-ubi9",
|
|
2622
|
-
"ubi9",
|
|
2605
|
+
"8.7.1-ubi9",
|
|
2606
|
+
"8.9.6-jdk17",
|
|
2607
|
+
"8.9.0-ubi9",
|
|
2623
2608
|
"ubi9-jdk21",
|
|
2624
|
-
"8.7.2-ubi9-jdk17",
|
|
2625
|
-
"8.9.5-ubi9-jdk17",
|
|
2626
2609
|
"8.9.5-ubi9",
|
|
2627
|
-
"8.9
|
|
2610
|
+
"8.5.9-ubi9-jdk17",
|
|
2611
|
+
"9.0.2-ubi9-jdk21",
|
|
2612
|
+
"8.7.2-ubi9",
|
|
2613
|
+
"8.9.5-ubi9-jdk17",
|
|
2614
|
+
"ubi9",
|
|
2615
|
+
"ubi9-jdk17",
|
|
2628
2616
|
"8.5.6-ubi9-jdk17",
|
|
2629
|
-
"8.
|
|
2630
|
-
"8.6.0-ubi9-jdk17",
|
|
2631
|
-
"8.5.6-ubi9",
|
|
2617
|
+
"8.7.2-ubi9-jdk17",
|
|
2632
2618
|
"8.5.14-ubi9",
|
|
2619
|
+
"8.5.14-ubi9-jdk17",
|
|
2620
|
+
"8.6.0-ubi9-jdk17",
|
|
2633
2621
|
"9.0.1-ubi9-jdk17",
|
|
2622
|
+
"8.9.1-ubi9-jdk17",
|
|
2623
|
+
"8.9.1-ubi9",
|
|
2624
|
+
"8.5.6-ubi9",
|
|
2634
2625
|
"8.6.0-ubi9",
|
|
2635
|
-
"9.0
|
|
2636
|
-
"
|
|
2626
|
+
"9.2.0-beta3-ubuntu-jdk17",
|
|
2627
|
+
"9.2.0-beta3-jdk17",
|
|
2628
|
+
"eap-ubuntu-jdk17",
|
|
2629
|
+
"eap",
|
|
2630
|
+
"9.2.0-beta3",
|
|
2631
|
+
"eap-jdk17",
|
|
2632
|
+
"9.2.0-beta3-jdk21",
|
|
2633
|
+
"9.2.0-beta3-ubuntu-jdk21",
|
|
2634
|
+
"9.2.0-beta3-ubi9",
|
|
2635
|
+
"9.2.0-beta3-ubi9-jdk21",
|
|
2636
|
+
"9.2.0-beta3-ubi9-jdk17",
|
|
2637
2637
|
"9.2.0-beta2-ubuntu-jdk21",
|
|
2638
2638
|
"9.2.0-beta2-jdk21",
|
|
2639
2639
|
"9.2.0-beta2-jdk17",
|
|
@@ -9380,7 +9380,8 @@ let Base$1 = class Base {
|
|
|
9380
9380
|
log: false
|
|
9381
9381
|
});
|
|
9382
9382
|
return result.data.services.find(item => {
|
|
9383
|
-
const
|
|
9383
|
+
const parts = item.name.split('-');
|
|
9384
|
+
const service = parts[parts.length - 2];
|
|
9384
9385
|
return service === this.options.name;
|
|
9385
9386
|
});
|
|
9386
9387
|
}
|
|
@@ -9669,7 +9670,8 @@ class Base {
|
|
|
9669
9670
|
log: false
|
|
9670
9671
|
});
|
|
9671
9672
|
return result.data.services.find(item => {
|
|
9672
|
-
const
|
|
9673
|
+
const parts = item.name.split('-');
|
|
9674
|
+
const service = parts[parts.length - 2];
|
|
9673
9675
|
return service === this.name;
|
|
9674
9676
|
});
|
|
9675
9677
|
}
|
|
@@ -10154,4 +10156,4 @@ process.on('SIGINT', () => {
|
|
|
10154
10156
|
console.log(`Received term signal, trying to stop gracefully 💪`);
|
|
10155
10157
|
gracefulExit();
|
|
10156
10158
|
});
|
|
10157
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9BY3Rpb25IYW5kbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvRGF0YWJhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9BcHBsaWNhdGlvbi5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvYW1wcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbGljZW5jZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9uZXR3b3JrLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXNzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXlzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvcG9zdGdyZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRab2REZWZhdWx0cy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2JhbWJvby5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iaXRidWNrZXQuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9qaXJhLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRBcHBsaWNhdGlvbi5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2NvbW1hbmRzL3N0b3AuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBuZXR3b3JrID0ge1xuICAgIG5hbWU6ICdzaGFyZWQnLFxuICAgIGRyaXZlcjogJ2JyaWRnZSdcbn07XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7IH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemUuYXV0aGVudGljYXRlKCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgWywgc2VydmljZV0gPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zLCB0YWcpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9zdGdyZXMoUG9zdGdyZVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15U1FMKE15U1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTVNTUUwoTVNTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdCA9IChzY2hlbWEsIGtleSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0Wm9kRGVmYXVsdHMoc2NoZW1hKTtcbiAgICByZXR1cm4gZGVmYXVsdHNba2V5XTtcbn07XG4vLyBDb2RlIHNuaXBwZXQgYnkgSmFjb2IgV2Vpc2VuYnVyZ2VyIChodHRwczovL2dpdGh1Yi5jb20vSmFjb2JXZWlzZW5idXJnZXIpXG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9kaXNjdXNzaW9ucy8xOTUzI2Rpc2N1c3Npb25jb21tZW50LTQ4MTE1ODhcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0cyA9IChzY2hlbWEpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYS5zaGFwZSkuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChba2V5LCB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpXSkpKTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIGxvZ3MsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcmNoLCBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBzaW1wbGVHaXQgZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBnZXREYXRhYmFzZUVuZ2luZSB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUnO1xuaW1wb3J0IHsgZ2V0Wm9kRGVmYXVsdHMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFpvZERlZmF1bHRzJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuaW1wb3J0IHsgRGF0YWJhc2VPcHRpb25zLCBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IGJhc2VkaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5kY2R4Jyk7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBkYXRhYmFzZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLmdldERhdGFiYXNlRW5naW5lKG9wdGlvbnMuZGF0YWJhc2UsIG9wdGlvbnMuZGF0YWJhc2VUYWcpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydGllc1xuICAgIGdldCBiYXNlVXJsKCkge1xuICAgICAgICBsZXQgYmFzZVVybCA9IGBodHRwOi8vbG9jYWxob3N0YDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3J0KSB7XG4gICAgICAgICAgICBiYXNlVXJsICs9IGA6JHt0aGlzLm9wdGlvbnMucG9ydH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyBgJHtiYXNlVXJsfS8ke3RoaXMub3B0aW9ucy5jb250ZXh0UGF0aH1gIDogYmFzZVVybDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYnVpbGQodGhpcy5vcHRpb25zLnRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdGFydCh0aGlzLm9wdGlvbnMuY2xlYW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgfVxuICAgIGFzeW5jIHN0b3AoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0aGlzLm9wdGlvbnMucHJ1bmUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IFtdO1xuICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EdXBtLnBsdWdpbi51cGxvYWQuZW5hYmxlZD10cnVlJyk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURqaXJhLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURhdGxhc3NpYW4uZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURxdWlja3JlbG9hZC5kaXJzPS9vcHQvcXVpY2tyZWxvYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zdGF0dXNgLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRlID09PSAnRklSU1RfUlVOJyB8fCBkYXRhLnN0YXRlID09PSAnUlVOTklORycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGF0YWJhc2VFbmdpbmUobmFtZSwgdGFnKSB7XG4gICAgICAgIHJldHVybiBnZXREYXRhYmFzZUVuZ2luZShEYXRhYmFzZU9wdGlvbnMucGFyc2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0T3B0aW9ucyhuYW1lKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2RcbiAgICAgICAgfSksIHRhZyk7XG4gICAgfVxuICAgIGdldERvY2tlckJhc2VUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgZGNkeC8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnamlyYScpIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuL2ppcmEtc29mdHdhcmU6JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgIFt0aGlzLm5hbWVdOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAoY29uZmlnKTtcbiAgICAgICAgYXdhaXQgdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgaWYgKCFpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0ICR7dGhpcy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsb2dzKE9iamVjdC5rZXlzKGNvbmZpZy5zZXJ2aWNlcyksIHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IGNvbmZpcm0gc3RhdGUgb2YgJHt0aGlzLm5hbWV9LCBidXQgdGhlIGNvbnRhaW5lciBpcyBydW5uaW5nLiBQbGVhc2UgY29uc3VsdCB0aGUgYXBwbGljYXRpb24gbG9ncyDwn5GHYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhcmUgZXhpdGluZyB3aXRoIGFuIGVycm9yIGNvZGVcbiAgICAgICAgLy8gVGhpcyBpcyB0byB0cmlnZ2VyIGEgZ3JhY2VmdWwgc2h1dCBkb3duIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGF3YWl0IGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbLCBzZXJ2aWNlXSA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KGNvdW50ID0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgJHt0aGlzLm5hbWV9IHRvIGJlY29tZSBhdmFpbGFibGUuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVhZHkgPSBpc1J1bm5pbmcgJiYgYXdhaXQgdGhpcy5pc0FwcGxpY2F0aW9uUmVhZHkoKTtcbiAgICAgICAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3VudCA+PSAxMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc0J1aWRSZXF1aXJlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJjaCA9PT0gJ2FybScgfHwgYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMub3B0aW9ucy50YWcuaW5jbHVkZXMoJy0nKVxuICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zLnRhZy5zbGljZSgwLCB0aGlzLm9wdGlvbnMudGFnLmluZGV4T2YoJy0nKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9ucy50YWc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbVZlclZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGlmIChzZW1WZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJyB8fCB0aGlzLm5hbWUgPT09ICdiYW1ib28nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc5LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2NvbmZsdWVuY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2JpdGJ1Y2tldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMi4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IHRoaXMuZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpO1xuICAgICAgICBjb25zdCBjaGVja291dFBhdGggPSBqb2luKGJhc2VkaXIsIHRoaXMubmFtZSwgJ3NvdXJjZScpO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmMoY2hlY2tvdXRQYXRoKSkge1xuICAgICAgICAgICAgbWtkaXJTeW5jKGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoKS5jbG9uZShyZXBvc2l0b3J5VXJsLCBjaGVja291dFBhdGgsIHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KHsgYmFzZURpcjogY2hlY2tvdXRQYXRoIH0pLnB1bGwoeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnYnVpbGQnLCAnLXQnLCBgZGNkeC8ke3RoaXMubmFtZX06JHt2ZXJzaW9ufWAsICctLWJ1aWxkLWFyZycsIGAke3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpfV9WRVJTSU9OPSR7dmVyc2lvbn1gLCAnLiddLCB7IGN3ZDogY2hlY2tvdXRQYXRoLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpIHtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5uYW1lID09PSAnamlyYSdcbiAgICAgICAgICAgID8gJ2F0bGFzc2lhbi1qaXJhJ1xuICAgICAgICAgICAgOiB0aGlzLm5hbWUgPT09ICdiYW1ib28nXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLm5hbWV9LXNlcnZlcmBcbiAgICAgICAgICAgICAgICA6IGBhdGxhc3NpYW4tJHt0aGlzLm5hbWV9LXNlcnZlcmA7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2F0bGFzc2lhbi1kb2NrZXIvZG9ja2VyLSR7c3VmZml4fS5naXRgO1xuICAgIH1cbiAgICBhc3luYyB0YWlsQXBwbGljYXRpb25Mb2dzKCkge1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgaWYgKGlzUnVubmluZykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UubmFtZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydleGVjJywgJy1pJywgc2VydmljZSwgYHRhaWxgLCBgLUZgLCBgLW5gLCBgNTAwMGAsIHRoaXMubG9nRmlsZVBhdGhdLCB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERlZmF1bHRPcHRpb25zKG5hbWUpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoUG9zdGdyZVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNeVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNU1NRTE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQmFtYm9vIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL2xvZ3MvYXRsYXNzaWFuLWJhbWJvby5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vYmFtYm9vL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vc2hhcmVkL3BsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiYW1ib286YmFtYm9vIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBiYW1ib286YmFtYm9vIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwODVgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zZXR1cC9zZXR1cEdlbmVyYWxDb25maWd1cmF0aW9uLmFjdGlvbmAsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfQkFNQk9PX0VOQUJMRV9VTkFUVEVOREVEX1NFVFVQJzogJ3RydWUnLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFJzogdGltZWJvbWIuYmFtYm9vLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJpdGJ1Y2tldCBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9sb2cvYXRsYXNzaWFuLWJpdGJ1Y2tldC5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gbWtkaXIgLXAgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkOyBcXFxuICAgIHRvdWNoIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllczsgXFxcbiAgICBlY2hvIFwic2V0dXAubGljZW5zZT0ke3RpbWVib21iLmJpdGJ1Y2tldH1cIiA+PiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7XG5cblJVTiBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9Ojc5OTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdKREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdKREJDX0RSSVZFUic6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXJ9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBDb25mbHVlbmNlIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvbG9ncy9hdGxhc3NpYW4tY29uZmx1ZW5jZS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9hdGxhc3NpYW4tYnVuZGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2VgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YcnVuamR3cDp0cmFuc3BvcnQ9ZHRfc29ja2V0LGFkZHJlc3M9Kjo1MDA1LHNlcnZlcj15LHN1c3BlbmQ9bicpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucG9ydD05OTk5Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5ybWkucG9ydD05OTk4Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5hdXRoZW50aWNhdGU9ZmFsc2UnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnNzbD1mYWxzZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgSmlyYSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL2xvZy9hdGxhc3NpYW4tamlyYS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9qaXJhL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgamlyYTpqaXJhIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBqaXJhOmppcmEgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnR9OjgwODBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPSo6NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgSmlyYSB1c2VzIGEgZGlmZmVyZW50IHR5cGUgZm9yIHBvc3RncmVzXG4gICAgICAgIGNvbnN0IGRiVHlwZSA9IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lID09PSAncG9zdGdyZXNxbCcgPyAncG9zdGdyZXM3MicgOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9EUklWRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogZGJUeXBlLFxuICAgICAgICAgICAgJ0pJUkFfU0VUVVBfTElDRU5TRSc6IHRpbWVib21iLmppcmFcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgQmFtYm9vIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JhbWJvbyc7XG5pbXBvcnQgeyBCaXRidWNrZXQgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYml0YnVja2V0JztcbmltcG9ydCB7IENvbmZsdWVuY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZSc7XG5pbXBvcnQgeyBKaXJhIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2ppcmEnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25PcHRpb25zLCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhOiByZXR1cm4gbmV3IEppcmEoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U6IHJldHVybiBuZXcgQ29uZmx1ZW5jZShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vOiByZXR1cm4gbmV3IEJhbWJvbyhBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0OiByZXR1cm4gbmV3IEJpdGJ1Y2tldChBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiZXhwb3J0IGNvbnN0IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB2aXNpYmxlT3B0aW9uczogKGNtZCkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGNtZC5vcHRpb25zO1xuICAgICAgICBpZiAoIWNtZC5wYXJlbnQgJiYgb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kTmFtZSA9IGNtZC5fZGVmYXVsdENvbW1hbmROYW1lO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kID0gY21kLmNvbW1hbmRzLmZpbmQoaXRlbSA9PiBpdGVtLl9uYW1lID09PSBkZWZhdWx0Q29tbWFuZE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Q29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdENvbW1hbmQub3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ob3B0aW9ucyk7XG4gICAgfVxufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBBY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vaGVscGVycy9BY3Rpb25IYW5kbGVyJztcbmltcG9ydCB7IEFNUFMgfSBmcm9tICcuLi9oZWxwZXJzL2FtcHMnO1xuaW1wb3J0IHsgZ2V0QXBwbGljYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL2dldEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5pbXBvcnQgeyBzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFtcHMgPSBuZXcgQU1QUyh7XG4gICAgICAgICAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IFwiLS1hY3RpdmF0ZS1wcm9maWxlc1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5jd2QpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWN3ZFwiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhbiBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IPCfpJQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBkb2VzIG5vdCBjb250YWluIGFuIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRldGVjdCBwcm9kdWN0IPCfmLAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy50YWcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gYW1wcy5nZXRBcHBsaWNhdGlvblZlcnNpb24oKTtcbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGV0ZXJtaW5lIHZlcnNpb24gZnJvbSBBTVBTIGFuZCBubyBwcm9kdWN0IHZlcnNpb24gcHJvdmlkZWQgKC0tdGFnKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50YWcgPSB2ZXJzaW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdmVyc2lvbnNbb3B0aW9ucy5uYW1lXS5pbmNsdWRlcyhvcHRpb25zLnRhZykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHtvcHRpb25zLnRhZ30nIGlzIGludmFsaWQuIEFsbG93ZWQgY2hvaWNlcyBhcmUgJHt2ZXJzaW9uc1tvcHRpb25zLm5hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSBnZXRBcHBsaWNhdGlvbihvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9wcGluZyAke29wdGlvbnMubmFtZX0gYW5kICR7b3B0aW9ucy5kYXRhYmFzZX0uLi4g8J+SlGApO1xuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnN0b3AoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBlZCAke29wdGlvbnMubmFtZX0gYW5kICR7b3B0aW9ucy5kYXRhYmFzZX0g8J+SqmApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9wcGluZyAke2luc3RhbmNlLm5hbWV9IGFuZCAke29wdGlvbnMuZGF0YWJhc2V9Li4uIPCfkpRgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBpbnN0YW5jZS5zdG9wKCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwZWQgJHtpbnN0YW5jZS5uYW1lfSBhbmQgJHtvcHRpb25zLmRhdGFiYXNlfSDwn5KqYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnByb2dyYW1cbiAgICAubmFtZSgnZGNkeCBzdG9wJylcbiAgICAuZGVzY3JpcHRpb24oYFN0b3AgdGhlIGhvc3QgYXBwbGljYXRpb24gYmFzZWQgb24gdGhlIEF0bGFzc2lhbiBNYXZlbiBQbHVnaW4gU3VpdGUgKEFNUFMpIGNvbmZpZ3VyYXRpb24uXG5JZiB5b3Ugd2lzaCB0byBzdG9wIGEgc3BlY2lmaWMgaG9zdCBhcHBsaWNhdGlvbiBydW5uaW5nIHN0YW5kYWxvbmUsIGNhbGwgdGhpcyBjb21tYW5kIHdpdGggJ2RjZHggc3RvcCA8bmFtZT4nYClcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyQWxsJywgJ+KAiycpIC8vIHRoZXJlIGlzIGEgbm9uLXplcm8gd2hpdGUgc3BhY2UgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdG8gaGF2ZSB0aGlzIGlzIHRvIGZvcmNlIGEgbGluZSBicmVha1xuICAgIC5jb25maWd1cmVIZWxwKHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKGZhbHNlKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cyhmYWxzZSlcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdmcm9tQU1QUycsIHsgaXNEZWZhdWx0OiB0cnVlLCBoaWRkZW46IHRydWUgfSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHN0b3AnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgb3B0aW9ucykpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdiYW1ib28nKVxuICAgIC5kZXNjcmlwdGlvbignU3RvcCBBdGxhc3NpYW4gQmFtYm9vIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJhbWJvbycpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib29dKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHN0b3AnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnYml0YnVja2V0JylcbiAgICAuZGVzY3JpcHRpb24oJ1N0b3AgQXRsYXNzaWFuIEJpdGJ1Y2tldCAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIEF0bGFzc2lhbiBCaXRidWNrZXQnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0XSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byBzdG9wJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbmZsdWVuY2UnKVxuICAgIC5kZXNjcmlwdGlvbignU3RvcCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIEF0bGFzc2lhbiBDb25mbHVlbmNlJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2VdKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHN0b3AnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvciAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnamlyYScpXG4gICAgLmRlc2NyaXB0aW9uKCdTdG9wIEF0bGFzc2lhbiBKaXJhIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEppcmEnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gc3RvcCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhIH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYyhwcm9jZXNzLmFyZ3YpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFjZWZ1bEV4aXQoKTtcbn0pO1xuIl0sIm5hbWVzIjpbInZlcnNpb25zIiwiQmFzZSIsIkNvbW1hbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVP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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
10159
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9BY3Rpb25IYW5kbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvRGF0YWJhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9BcHBsaWNhdGlvbi5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvYW1wcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbGljZW5jZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9uZXR3b3JrLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXNzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXlzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvcG9zdGdyZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRab2REZWZhdWx0cy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2JhbWJvby5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iaXRidWNrZXQuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9qaXJhLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRBcHBsaWNhdGlvbi5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2NvbW1hbmRzL3N0b3AuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBuZXR3b3JrID0ge1xuICAgIG5hbWU6ICdzaGFyZWQnLFxuICAgIGRyaXZlcjogJ2JyaWRnZSdcbn07XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7IH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemUuYXV0aGVudGljYXRlKCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zLCB0YWcpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9zdGdyZXMoUG9zdGdyZVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15U1FMKE15U1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTVNTUUwoTVNTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdCA9IChzY2hlbWEsIGtleSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0Wm9kRGVmYXVsdHMoc2NoZW1hKTtcbiAgICByZXR1cm4gZGVmYXVsdHNba2V5XTtcbn07XG4vLyBDb2RlIHNuaXBwZXQgYnkgSmFjb2IgV2Vpc2VuYnVyZ2VyIChodHRwczovL2dpdGh1Yi5jb20vSmFjb2JXZWlzZW5idXJnZXIpXG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9kaXNjdXNzaW9ucy8xOTUzI2Rpc2N1c3Npb25jb21tZW50LTQ4MTE1ODhcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0cyA9IChzY2hlbWEpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYS5zaGFwZSkuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChba2V5LCB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpXSkpKTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIGxvZ3MsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcmNoLCBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBzaW1wbGVHaXQgZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBnZXREYXRhYmFzZUVuZ2luZSB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUnO1xuaW1wb3J0IHsgZ2V0Wm9kRGVmYXVsdHMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFpvZERlZmF1bHRzJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuaW1wb3J0IHsgRGF0YWJhc2VPcHRpb25zLCBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IGJhc2VkaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5kY2R4Jyk7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBkYXRhYmFzZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLmdldERhdGFiYXNlRW5naW5lKG9wdGlvbnMuZGF0YWJhc2UsIG9wdGlvbnMuZGF0YWJhc2VUYWcpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydGllc1xuICAgIGdldCBiYXNlVXJsKCkge1xuICAgICAgICBsZXQgYmFzZVVybCA9IGBodHRwOi8vbG9jYWxob3N0YDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3J0KSB7XG4gICAgICAgICAgICBiYXNlVXJsICs9IGA6JHt0aGlzLm9wdGlvbnMucG9ydH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyBgJHtiYXNlVXJsfS8ke3RoaXMub3B0aW9ucy5jb250ZXh0UGF0aH1gIDogYmFzZVVybDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYnVpbGQodGhpcy5vcHRpb25zLnRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdGFydCh0aGlzLm9wdGlvbnMuY2xlYW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgfVxuICAgIGFzeW5jIHN0b3AoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0aGlzLm9wdGlvbnMucHJ1bmUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IFtdO1xuICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EdXBtLnBsdWdpbi51cGxvYWQuZW5hYmxlZD10cnVlJyk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURqaXJhLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURhdGxhc3NpYW4uZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURxdWlja3JlbG9hZC5kaXJzPS9vcHQvcXVpY2tyZWxvYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zdGF0dXNgLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRlID09PSAnRklSU1RfUlVOJyB8fCBkYXRhLnN0YXRlID09PSAnUlVOTklORycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGF0YWJhc2VFbmdpbmUobmFtZSwgdGFnKSB7XG4gICAgICAgIHJldHVybiBnZXREYXRhYmFzZUVuZ2luZShEYXRhYmFzZU9wdGlvbnMucGFyc2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0T3B0aW9ucyhuYW1lKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2RcbiAgICAgICAgfSksIHRhZyk7XG4gICAgfVxuICAgIGdldERvY2tlckJhc2VUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgZGNkeC8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnamlyYScpIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuL2ppcmEtc29mdHdhcmU6JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgIFt0aGlzLm5hbWVdOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAoY29uZmlnKTtcbiAgICAgICAgYXdhaXQgdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgaWYgKCFpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0ICR7dGhpcy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsb2dzKE9iamVjdC5rZXlzKGNvbmZpZy5zZXJ2aWNlcyksIHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IGNvbmZpcm0gc3RhdGUgb2YgJHt0aGlzLm5hbWV9LCBidXQgdGhlIGNvbnRhaW5lciBpcyBydW5uaW5nLiBQbGVhc2UgY29uc3VsdCB0aGUgYXBwbGljYXRpb24gbG9ncyDwn5GHYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhcmUgZXhpdGluZyB3aXRoIGFuIGVycm9yIGNvZGVcbiAgICAgICAgLy8gVGhpcyBpcyB0byB0cmlnZ2VyIGEgZ3JhY2VmdWwgc2h1dCBkb3duIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGF3YWl0IGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KGNvdW50ID0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgJHt0aGlzLm5hbWV9IHRvIGJlY29tZSBhdmFpbGFibGUuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVhZHkgPSBpc1J1bm5pbmcgJiYgYXdhaXQgdGhpcy5pc0FwcGxpY2F0aW9uUmVhZHkoKTtcbiAgICAgICAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3VudCA+PSAxMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc0J1aWRSZXF1aXJlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJjaCA9PT0gJ2FybScgfHwgYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMub3B0aW9ucy50YWcuaW5jbHVkZXMoJy0nKVxuICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zLnRhZy5zbGljZSgwLCB0aGlzLm9wdGlvbnMudGFnLmluZGV4T2YoJy0nKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9ucy50YWc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbVZlclZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGlmIChzZW1WZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJyB8fCB0aGlzLm5hbWUgPT09ICdiYW1ib28nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc5LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2NvbmZsdWVuY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2JpdGJ1Y2tldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMi4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IHRoaXMuZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpO1xuICAgICAgICBjb25zdCBjaGVja291dFBhdGggPSBqb2luKGJhc2VkaXIsIHRoaXMubmFtZSwgJ3NvdXJjZScpO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmMoY2hlY2tvdXRQYXRoKSkge1xuICAgICAgICAgICAgbWtkaXJTeW5jKGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoKS5jbG9uZShyZXBvc2l0b3J5VXJsLCBjaGVja291dFBhdGgsIHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KHsgYmFzZURpcjogY2hlY2tvdXRQYXRoIH0pLnB1bGwoeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnYnVpbGQnLCAnLXQnLCBgZGNkeC8ke3RoaXMubmFtZX06JHt2ZXJzaW9ufWAsICctLWJ1aWxkLWFyZycsIGAke3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpfV9WRVJTSU9OPSR7dmVyc2lvbn1gLCAnLiddLCB7IGN3ZDogY2hlY2tvdXRQYXRoLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpIHtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5uYW1lID09PSAnamlyYSdcbiAgICAgICAgICAgID8gJ2F0bGFzc2lhbi1qaXJhJ1xuICAgICAgICAgICAgOiB0aGlzLm5hbWUgPT09ICdiYW1ib28nXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLm5hbWV9LXNlcnZlcmBcbiAgICAgICAgICAgICAgICA6IGBhdGxhc3NpYW4tJHt0aGlzLm5hbWV9LXNlcnZlcmA7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2F0bGFzc2lhbi1kb2NrZXIvZG9ja2VyLSR7c3VmZml4fS5naXRgO1xuICAgIH1cbiAgICBhc3luYyB0YWlsQXBwbGljYXRpb25Mb2dzKCkge1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgaWYgKGlzUnVubmluZykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UubmFtZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydleGVjJywgJy1pJywgc2VydmljZSwgYHRhaWxgLCBgLUZgLCBgLW5gLCBgNTAwMGAsIHRoaXMubG9nRmlsZVBhdGhdLCB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERlZmF1bHRPcHRpb25zKG5hbWUpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoUG9zdGdyZVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNeVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNU1NRTE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQmFtYm9vIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL2xvZ3MvYXRsYXNzaWFuLWJhbWJvby5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vYmFtYm9vL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vc2hhcmVkL3BsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiYW1ib286YmFtYm9vIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBiYW1ib286YmFtYm9vIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwODVgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zZXR1cC9zZXR1cEdlbmVyYWxDb25maWd1cmF0aW9uLmFjdGlvbmAsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfQkFNQk9PX0VOQUJMRV9VTkFUVEVOREVEX1NFVFVQJzogJ3RydWUnLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFJzogdGltZWJvbWIuYmFtYm9vLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJpdGJ1Y2tldCBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9sb2cvYXRsYXNzaWFuLWJpdGJ1Y2tldC5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gbWtkaXIgLXAgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkOyBcXFxuICAgIHRvdWNoIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllczsgXFxcbiAgICBlY2hvIFwic2V0dXAubGljZW5zZT0ke3RpbWVib21iLmJpdGJ1Y2tldH1cIiA+PiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7XG5cblJVTiBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9Ojc5OTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdKREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdKREJDX0RSSVZFUic6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXJ9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBDb25mbHVlbmNlIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvbG9ncy9hdGxhc3NpYW4tY29uZmx1ZW5jZS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9hdGxhc3NpYW4tYnVuZGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2VgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YcnVuamR3cDp0cmFuc3BvcnQ9ZHRfc29ja2V0LGFkZHJlc3M9Kjo1MDA1LHNlcnZlcj15LHN1c3BlbmQ9bicpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucG9ydD05OTk5Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5ybWkucG9ydD05OTk4Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5hdXRoZW50aWNhdGU9ZmFsc2UnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnNzbD1mYWxzZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgSmlyYSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL2xvZy9hdGxhc3NpYW4tamlyYS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9qaXJhL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgamlyYTpqaXJhIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBqaXJhOmppcmEgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnR9OjgwODBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPSo6NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgSmlyYSB1c2VzIGEgZGlmZmVyZW50IHR5cGUgZm9yIHBvc3RncmVzXG4gICAgICAgIGNvbnN0IGRiVHlwZSA9IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lID09PSAncG9zdGdyZXNxbCcgPyAncG9zdGdyZXM3MicgOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9EUklWRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogZGJUeXBlLFxuICAgICAgICAgICAgJ0pJUkFfU0VUVVBfTElDRU5TRSc6IHRpbWVib21iLmppcmFcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgQmFtYm9vIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JhbWJvbyc7XG5pbXBvcnQgeyBCaXRidWNrZXQgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYml0YnVja2V0JztcbmltcG9ydCB7IENvbmZsdWVuY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZSc7XG5pbXBvcnQgeyBKaXJhIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2ppcmEnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25PcHRpb25zLCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhOiByZXR1cm4gbmV3IEppcmEoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U6IHJldHVybiBuZXcgQ29uZmx1ZW5jZShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vOiByZXR1cm4gbmV3IEJhbWJvbyhBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0OiByZXR1cm4gbmV3IEJpdGJ1Y2tldChBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiZXhwb3J0IGNvbnN0IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB2aXNpYmxlT3B0aW9uczogKGNtZCkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGNtZC5vcHRpb25zO1xuICAgICAgICBpZiAoIWNtZC5wYXJlbnQgJiYgb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kTmFtZSA9IGNtZC5fZGVmYXVsdENvbW1hbmROYW1lO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kID0gY21kLmNvbW1hbmRzLmZpbmQoaXRlbSA9PiBpdGVtLl9uYW1lID09PSBkZWZhdWx0Q29tbWFuZE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Q29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdENvbW1hbmQub3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ob3B0aW9ucyk7XG4gICAgfVxufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBBY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vaGVscGVycy9BY3Rpb25IYW5kbGVyJztcbmltcG9ydCB7IEFNUFMgfSBmcm9tICcuLi9oZWxwZXJzL2FtcHMnO1xuaW1wb3J0IHsgZ2V0QXBwbGljYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL2dldEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5pbXBvcnQgeyBzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFtcHMgPSBuZXcgQU1QUyh7XG4gICAgICAgICAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IFwiLS1hY3RpdmF0ZS1wcm9maWxlc1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5jd2QpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWN3ZFwiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhbiBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IPCfpJQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBkb2VzIG5vdCBjb250YWluIGFuIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRldGVjdCBwcm9kdWN0IPCfmLAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy50YWcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gYW1wcy5nZXRBcHBsaWNhdGlvblZlcnNpb24oKTtcbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGV0ZXJtaW5lIHZlcnNpb24gZnJvbSBBTVBTIGFuZCBubyBwcm9kdWN0IHZlcnNpb24gcHJvdmlkZWQgKC0tdGFnKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50YWcgPSB2ZXJzaW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdmVyc2lvbnNbb3B0aW9ucy5uYW1lXS5pbmNsdWRlcyhvcHRpb25zLnRhZykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHtvcHRpb25zLnRhZ30nIGlzIGludmFsaWQuIEFsbG93ZWQgY2hvaWNlcyBhcmUgJHt2ZXJzaW9uc1tvcHRpb25zLm5hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSBnZXRBcHBsaWNhdGlvbihvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9wcGluZyAke29wdGlvbnMubmFtZX0gYW5kICR7b3B0aW9ucy5kYXRhYmFzZX0uLi4g8J+SlGApO1xuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnN0b3AoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBlZCAke29wdGlvbnMubmFtZX0gYW5kICR7b3B0aW9ucy5kYXRhYmFzZX0g8J+SqmApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9wcGluZyAke2luc3RhbmNlLm5hbWV9IGFuZCAke29wdGlvbnMuZGF0YWJhc2V9Li4uIPCfkpRgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBpbnN0YW5jZS5zdG9wKCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwZWQgJHtpbnN0YW5jZS5uYW1lfSBhbmQgJHtvcHRpb25zLmRhdGFiYXNlfSDwn5KqYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnByb2dyYW1cbiAgICAubmFtZSgnZGNkeCBzdG9wJylcbiAgICAuZGVzY3JpcHRpb24oYFN0b3AgdGhlIGhvc3QgYXBwbGljYXRpb24gYmFzZWQgb24gdGhlIEF0bGFzc2lhbiBNYXZlbiBQbHVnaW4gU3VpdGUgKEFNUFMpIGNvbmZpZ3VyYXRpb24uXG5JZiB5b3Ugd2lzaCB0byBzdG9wIGEgc3BlY2lmaWMgaG9zdCBhcHBsaWNhdGlvbiBydW5uaW5nIHN0YW5kYWxvbmUsIGNhbGwgdGhpcyBjb21tYW5kIHdpdGggJ2RjZHggc3RvcCA8bmFtZT4nYClcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyQWxsJywgJ+KAiycpIC8vIHRoZXJlIGlzIGEgbm9uLXplcm8gd2hpdGUgc3BhY2UgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdG8gaGF2ZSB0aGlzIGlzIHRvIGZvcmNlIGEgbGluZSBicmVha1xuICAgIC5jb25maWd1cmVIZWxwKHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKGZhbHNlKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cyhmYWxzZSlcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdmcm9tQU1QUycsIHsgaXNEZWZhdWx0OiB0cnVlLCBoaWRkZW46IHRydWUgfSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHN0b3AnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgb3B0aW9ucykpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdiYW1ib28nKVxuICAgIC5kZXNjcmlwdGlvbignU3RvcCBBdGxhc3NpYW4gQmFtYm9vIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJhbWJvbycpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib29dKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHN0b3AnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnYml0YnVja2V0JylcbiAgICAuZGVzY3JpcHRpb24oJ1N0b3AgQXRsYXNzaWFuIEJpdGJ1Y2tldCAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIEF0bGFzc2lhbiBCaXRidWNrZXQnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0XSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byBzdG9wJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbmZsdWVuY2UnKVxuICAgIC5kZXNjcmlwdGlvbignU3RvcCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIEF0bGFzc2lhbiBDb25mbHVlbmNlJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2VdKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHN0b3AnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvciAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnamlyYScpXG4gICAgLmRlc2NyaXB0aW9uKCdTdG9wIEF0bGFzc2lhbiBKaXJhIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEppcmEnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gc3RvcCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhIH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYyhwcm9jZXNzLmFyZ3YpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFj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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|