occam-languages 3.0.30 → 3.0.32
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/lib/context/release.js +2 -3
- package/lib/utilities/continuation.js +125 -131
- package/lib/utilities/verification.js +2 -2
- package/lib/utilities/verify.js +3 -3
- package/package.json +1 -1
- package/src/context/release.js +1 -3
- package/src/utilities/continuation.js +188 -203
- package/src/utilities/verification.js +1 -1
- package/src/utilities/verify.js +2 -2
|
@@ -70,35 +70,31 @@ _export(exports, {
|
|
|
70
70
|
return some;
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
|
-
const _necessary = require("necessary");
|
|
74
|
-
const { filter: arrayFilter } = _necessary.arrayUtilities;
|
|
75
73
|
function one(array, callback, ...initialArguments) {
|
|
76
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
77
|
-
function next(index, ...nextArguments) {
|
|
74
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
75
|
+
function next(index, count, ...nextArguments) {
|
|
78
76
|
if (index === length) {
|
|
79
|
-
if (count
|
|
77
|
+
if (count === 0) {
|
|
80
78
|
return back();
|
|
81
79
|
}
|
|
82
80
|
return forward(...nextArguments, back);
|
|
83
81
|
}
|
|
84
82
|
const element = array[index];
|
|
85
83
|
return callback(element, ...initialArguments, (...forwardArguments)=>{
|
|
86
|
-
|
|
87
|
-
count++;
|
|
88
|
-
if (count === 2) {
|
|
84
|
+
if (count === 1) {
|
|
89
85
|
return back();
|
|
90
86
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
forwardArguments.pop(); ///
|
|
88
|
+
return next(index + 1, count + 1, ...forwardArguments);
|
|
89
|
+
}, (exception)=>{
|
|
94
90
|
if (exception) {
|
|
95
91
|
return back(exception);
|
|
96
92
|
}
|
|
97
|
-
return next(index + 1, ...nextArguments);
|
|
93
|
+
return next(index + 1, count, ...nextArguments);
|
|
98
94
|
}, index);
|
|
99
95
|
}
|
|
100
|
-
|
|
101
|
-
return next(index,
|
|
96
|
+
const index = 0, count = 0;
|
|
97
|
+
return next(index, count);
|
|
102
98
|
}
|
|
103
99
|
function some(array, callback, ...initialArguments) {
|
|
104
100
|
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
@@ -107,8 +103,7 @@ function some(array, callback, ...initialArguments) {
|
|
|
107
103
|
return back();
|
|
108
104
|
}
|
|
109
105
|
const element = array[index];
|
|
110
|
-
return callback(element, ...initialArguments, forward, (
|
|
111
|
-
const exception = backArguments.pop();
|
|
106
|
+
return callback(element, ...initialArguments, forward, (exception)=>{
|
|
112
107
|
if (exception) {
|
|
113
108
|
return back(exception);
|
|
114
109
|
}
|
|
@@ -119,8 +114,9 @@ function some(array, callback, ...initialArguments) {
|
|
|
119
114
|
return next(index);
|
|
120
115
|
}
|
|
121
116
|
function each(array, callback, ...initialArguments) {
|
|
122
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
123
|
-
function next(index, ...nextArguments) {
|
|
117
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
118
|
+
function next(index, count, ...nextArguments) {
|
|
119
|
+
const back = nextArguments.pop();
|
|
124
120
|
if (index === length) {
|
|
125
121
|
if (count === 0) {
|
|
126
122
|
return back();
|
|
@@ -129,104 +125,84 @@ function each(array, callback, ...initialArguments) {
|
|
|
129
125
|
}
|
|
130
126
|
const element = array[index];
|
|
131
127
|
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
132
|
-
forwardArguments
|
|
133
|
-
count++;
|
|
134
|
-
return next(index + 1, ...forwardArguments);
|
|
128
|
+
return next(index + 1, count + 1, ...forwardArguments);
|
|
135
129
|
}, back, index);
|
|
136
130
|
}
|
|
137
|
-
|
|
138
|
-
return next(index, ...initialArguments);
|
|
131
|
+
const index = 0, count = 0;
|
|
132
|
+
return next(index, count, ...initialArguments, back);
|
|
139
133
|
}
|
|
140
134
|
function every(array, callback, ...initialArguments) {
|
|
141
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
135
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
142
136
|
function next(index, ...nextArguments) {
|
|
137
|
+
const back = nextArguments.pop();
|
|
143
138
|
if (index === length) {
|
|
144
139
|
return forward(...nextArguments, back);
|
|
145
140
|
}
|
|
146
141
|
const element = array[index];
|
|
147
142
|
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
148
|
-
forwardArguments.pop(); ///
|
|
149
143
|
return next(index + 1, ...forwardArguments);
|
|
150
144
|
}, back, index);
|
|
151
145
|
}
|
|
152
|
-
|
|
146
|
+
const index = 0;
|
|
147
|
+
return next(index, ...initialArguments, back);
|
|
153
148
|
}
|
|
154
149
|
function map(array, callback, ...initialArguments) {
|
|
155
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(),
|
|
150
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), arrayA = array, arrayB = [], length = array.length;
|
|
156
151
|
function next(index, arrayB, ...nextArguments) {
|
|
152
|
+
const back = nextArguments.pop();
|
|
157
153
|
if (index === length) {
|
|
158
154
|
return forward(arrayB, ...nextArguments, back);
|
|
159
155
|
}
|
|
160
156
|
const elementA = arrayA[index];
|
|
161
157
|
return callback(elementA, ...nextArguments, (elementB, ...forwardArguments)=>{
|
|
162
|
-
|
|
163
|
-
arrayB = [
|
|
158
|
+
return next(index + 1, [
|
|
164
159
|
...arrayB,
|
|
165
160
|
elementB
|
|
166
|
-
];
|
|
167
|
-
return next(index + 1, arrayB, ...forwardArguments);
|
|
161
|
+
], ...forwardArguments);
|
|
168
162
|
}, back, index);
|
|
169
163
|
}
|
|
170
|
-
const
|
|
171
|
-
return next(index, arrayB, ...initialArguments);
|
|
172
|
-
}
|
|
173
|
-
function find(array, callback, ...initialArguments) {
|
|
174
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length, index = 0;
|
|
175
|
-
function next(index, ...nextArguments) {
|
|
176
|
-
if (index === length) {
|
|
177
|
-
return back();
|
|
178
|
-
}
|
|
179
|
-
const element = array[index];
|
|
180
|
-
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
181
|
-
forwardArguments.pop(); ///
|
|
182
|
-
return forward(element, ...forwardArguments, back);
|
|
183
|
-
}, (...backArguments)=>{
|
|
184
|
-
const exception = backArguments.pop();
|
|
185
|
-
if (exception) {
|
|
186
|
-
return back(exception);
|
|
187
|
-
}
|
|
188
|
-
return next(index + 1, ...nextArguments);
|
|
189
|
-
}, index);
|
|
190
|
-
}
|
|
191
|
-
return next(index, ...initialArguments);
|
|
164
|
+
const index = 0;
|
|
165
|
+
return next(index, arrayB, ...initialArguments, back);
|
|
192
166
|
}
|
|
193
167
|
function reduce(array, initialValue, callback, ...initialArguments) {
|
|
194
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
168
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
195
169
|
function next(index, value, ...nextArguments) {
|
|
170
|
+
const back = nextArguments.pop();
|
|
196
171
|
if (index === length) {
|
|
197
172
|
return forward(value, ...nextArguments, back);
|
|
198
173
|
}
|
|
199
174
|
const element = array[index];
|
|
200
175
|
return callback(element, value, ...nextArguments, (value, ...forwardArguments)=>{
|
|
201
|
-
forwardArguments.pop(); ///
|
|
202
176
|
return next(index + 1, value, ...forwardArguments);
|
|
203
177
|
}, back, index);
|
|
204
178
|
}
|
|
205
|
-
|
|
179
|
+
const index = 0;
|
|
180
|
+
return next(index, initialValue, ...initialArguments, back);
|
|
206
181
|
}
|
|
207
182
|
function forEach(array, callback, ...initialArguments) {
|
|
208
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
183
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
209
184
|
function next(index, ...nextArguments) {
|
|
185
|
+
const back = nextArguments.pop();
|
|
210
186
|
if (index === length) {
|
|
211
187
|
return forward(...nextArguments, back);
|
|
212
188
|
}
|
|
213
189
|
const element = array[index];
|
|
214
190
|
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
215
|
-
forwardArguments.pop(); ///
|
|
216
191
|
return next(index + 1, ...forwardArguments);
|
|
217
192
|
}, back, index);
|
|
218
193
|
}
|
|
219
|
-
|
|
194
|
+
const index = 0;
|
|
195
|
+
return next(index, ...initialArguments, back);
|
|
220
196
|
}
|
|
221
197
|
function filter(array, callback, ...initialArguments) {
|
|
222
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(),
|
|
198
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), deletedElements = [], length = array.length;
|
|
223
199
|
function next(index, ...nextArguments) {
|
|
200
|
+
const back = nextArguments.pop();
|
|
224
201
|
if (index === -1) {
|
|
225
202
|
return forward(deletedElements, ...nextArguments, back);
|
|
226
203
|
}
|
|
227
204
|
const element = array[index];
|
|
228
205
|
return callback(element, ...nextArguments, (passed, ...forwardArguments)=>{
|
|
229
|
-
forwardArguments.pop(); ///
|
|
230
206
|
if (!passed) {
|
|
231
207
|
const startIndex = index, deleteCount = 1, deletedElement = element; ///
|
|
232
208
|
array.splice(startIndex, deleteCount);
|
|
@@ -235,163 +211,181 @@ function filter(array, callback, ...initialArguments) {
|
|
|
235
211
|
return next(index - 1, ...forwardArguments);
|
|
236
212
|
}, back, index);
|
|
237
213
|
}
|
|
238
|
-
|
|
214
|
+
const index = length - 1;
|
|
215
|
+
return next(index, ...initialArguments, back);
|
|
239
216
|
}
|
|
240
217
|
function prune(array, callback, ...initialArguments) {
|
|
241
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
218
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
242
219
|
function next(index, ...nextArguments) {
|
|
220
|
+
const back = nextArguments.pop();
|
|
243
221
|
if (index === length) {
|
|
244
222
|
const deletedElement = undefined;
|
|
245
223
|
return forward(deletedElement, ...nextArguments, back);
|
|
246
224
|
}
|
|
247
225
|
const element = array[index];
|
|
248
226
|
return callback(element, ...nextArguments, (passed, ...forwardArguments)=>{
|
|
249
|
-
forwardArguments.pop(); ///
|
|
250
227
|
if (!passed) {
|
|
251
228
|
const startIndex = index, deleteCount = 1, deletedElement = element; ///
|
|
252
229
|
array.splice(startIndex, deleteCount);
|
|
253
|
-
return forward(deletedElement, ...forwardArguments
|
|
230
|
+
return forward(deletedElement, ...forwardArguments);
|
|
254
231
|
}
|
|
255
232
|
return next(index + 1, ...forwardArguments);
|
|
256
233
|
}, back, index);
|
|
257
234
|
}
|
|
258
|
-
|
|
235
|
+
const index = 0;
|
|
236
|
+
return next(index, ...initialArguments, back);
|
|
259
237
|
}
|
|
260
238
|
function extract(array, callback, ...initialArguments) {
|
|
261
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
239
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
262
240
|
function next(index, ...nextArguments) {
|
|
241
|
+
const back = nextArguments.pop();
|
|
263
242
|
if (index === length) {
|
|
264
243
|
const deletedElement = undefined;
|
|
265
244
|
return forward(deletedElement, ...nextArguments, back);
|
|
266
245
|
}
|
|
267
246
|
const element = array[index];
|
|
268
247
|
return callback(element, ...nextArguments, (passed, ...forwardArguments)=>{
|
|
269
|
-
forwardArguments.pop(); ///
|
|
270
248
|
if (passed) {
|
|
271
249
|
const startIndex = index, deleteCount = 1, deletedElement = element; ///
|
|
272
250
|
array.splice(startIndex, deleteCount);
|
|
273
|
-
return forward(deletedElement, ...forwardArguments
|
|
251
|
+
return forward(deletedElement, ...forwardArguments);
|
|
274
252
|
}
|
|
275
253
|
return next(index + 1, ...forwardArguments);
|
|
276
254
|
}, back, index);
|
|
277
255
|
}
|
|
278
|
-
|
|
256
|
+
const index = 0;
|
|
257
|
+
return next(index, ...initialArguments, back);
|
|
279
258
|
}
|
|
280
|
-
function
|
|
281
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(),
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
285
|
-
const length = arrayALength, index = 0;
|
|
286
|
-
function next(index, ...nextArguments) {
|
|
259
|
+
function find(array, callback, ...initialArguments) {
|
|
260
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), elements = [], length = array.length;
|
|
261
|
+
function next(index, elements, ...nextArguments) {
|
|
262
|
+
const back = nextArguments.pop();
|
|
287
263
|
if (index === length) {
|
|
288
|
-
return forward(...nextArguments, back);
|
|
264
|
+
return forward(elements, ...nextArguments, back);
|
|
289
265
|
}
|
|
290
|
-
const
|
|
291
|
-
return callback(
|
|
292
|
-
|
|
293
|
-
|
|
266
|
+
const element = array[index];
|
|
267
|
+
return callback(element, ...nextArguments, (passed, ...forwardArguments)=>{
|
|
268
|
+
if (passed) {
|
|
269
|
+
return next(index + 1, [
|
|
270
|
+
...elements,
|
|
271
|
+
element
|
|
272
|
+
], ...forwardArguments);
|
|
273
|
+
}
|
|
274
|
+
return next(index + 1, elements, ...forwardArguments);
|
|
294
275
|
}, back, index);
|
|
295
276
|
}
|
|
296
|
-
|
|
277
|
+
const index = 0;
|
|
278
|
+
return next(index, elements, ...initialArguments, back);
|
|
297
279
|
}
|
|
298
|
-
function resolve(
|
|
299
|
-
arrayA = [
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
const back = initialArguments.pop(), forward = initialArguments.pop();
|
|
303
|
-
function nextPass(...nextPassArguments) {
|
|
304
|
-
const length = arrayA.length; ///
|
|
280
|
+
function resolve(array, callback, ...initialArguments) {
|
|
281
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), arrayA = array, arrayB = [];
|
|
282
|
+
function next(arrayA, arrayB, ...nextArguments) {
|
|
283
|
+
const back = nextArguments.pop(), length = arrayA.length;
|
|
305
284
|
if (length === 0) {
|
|
306
|
-
return forward(...
|
|
285
|
+
return forward(arrayB, ...nextArguments, back);
|
|
307
286
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
const arrayBIncludesElementA = arrayB.includes(elementA);
|
|
315
|
-
if (!arrayBIncludesElementA) {
|
|
316
|
-
return true;
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
return nextPass(...nextElementArguments);
|
|
320
|
-
}
|
|
321
|
-
const elementA = arrayA[index];
|
|
322
|
-
return callback(elementA, ...nextElementArguments, (...forwardArguments)=>{
|
|
323
|
-
forwardArguments.pop(); ///
|
|
324
|
-
const elementB = elementA; ///
|
|
325
|
-
arrayB.push(elementB);
|
|
326
|
-
return nextElement(index + 1, true, ...forwardArguments);
|
|
327
|
-
}, (...backArguments)=>{
|
|
328
|
-
const exception = backArguments.pop();
|
|
287
|
+
return find(arrayA, (element, ...callbackArguments)=>{
|
|
288
|
+
const index = callbackArguments.pop(), back = callbackArguments.pop(), forward = callbackArguments.pop();
|
|
289
|
+
return callback(element, ...callbackArguments, (...forwardArguments)=>{
|
|
290
|
+
const success = true;
|
|
291
|
+
return forward(success, ...forwardArguments);
|
|
292
|
+
}, (exception)=>{
|
|
329
293
|
if (exception) {
|
|
330
294
|
return back(exception);
|
|
331
295
|
}
|
|
332
|
-
|
|
296
|
+
const success = false;
|
|
297
|
+
return forward(success, ...callbackArguments, back);
|
|
333
298
|
}, index);
|
|
299
|
+
}, ...nextArguments, (elements, ...forwardArguments)=>{
|
|
300
|
+
const elementsLength = elements.length;
|
|
301
|
+
if (elementsLength === 0) {
|
|
302
|
+
return back();
|
|
303
|
+
}
|
|
304
|
+
return next(arrayA.filter((element)=>!elements.includes(element)), [
|
|
305
|
+
...arrayB,
|
|
306
|
+
...elements
|
|
307
|
+
], ...forwardArguments);
|
|
308
|
+
}, back);
|
|
309
|
+
}
|
|
310
|
+
return next(arrayA, arrayB, ...initialArguments, back);
|
|
311
|
+
}
|
|
312
|
+
function match(arrayA, arrayB, callback, ...initialArguments) {
|
|
313
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), arrayALength = arrayA.length, arrayBLength = arrayB.length, length = arrayALength; ///
|
|
314
|
+
if (arrayALength !== arrayBLength) {
|
|
315
|
+
return back();
|
|
316
|
+
}
|
|
317
|
+
function next(index, ...nextArguments) {
|
|
318
|
+
const back = nextArguments.pop();
|
|
319
|
+
if (index === length) {
|
|
320
|
+
return forward(...nextArguments, back);
|
|
334
321
|
}
|
|
335
|
-
const
|
|
336
|
-
return
|
|
322
|
+
const elementA = arrayA[index], elementB = arrayB[index];
|
|
323
|
+
return callback(elementA, elementB, ...nextArguments, (...forwardArguments)=>{
|
|
324
|
+
return next(index + 1, ...forwardArguments);
|
|
325
|
+
}, back, index);
|
|
337
326
|
}
|
|
338
|
-
|
|
327
|
+
const index = 0;
|
|
328
|
+
return next(index, ...initialArguments, back);
|
|
339
329
|
}
|
|
340
330
|
function forwardsEvery(array, callback, ...initialArguments) {
|
|
341
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
331
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
342
332
|
function next(index, ...nextArguments) {
|
|
333
|
+
const back = nextArguments.pop();
|
|
343
334
|
if (index === length) {
|
|
344
335
|
return forward(...nextArguments, back);
|
|
345
336
|
}
|
|
346
337
|
const element = array[index];
|
|
347
338
|
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
348
|
-
forwardArguments.pop(); ///
|
|
349
339
|
return next(index + 1, ...forwardArguments);
|
|
350
340
|
}, back, index);
|
|
351
341
|
}
|
|
352
|
-
|
|
342
|
+
const index = 0;
|
|
343
|
+
return next(index, ...initialArguments, back);
|
|
353
344
|
}
|
|
354
345
|
function backwardsEvery(array, callback, ...initialArguments) {
|
|
355
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
346
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
356
347
|
function next(index, ...nextArguments) {
|
|
348
|
+
const back = nextArguments.pop();
|
|
357
349
|
if (index === -1) {
|
|
358
350
|
return forward(...nextArguments, back);
|
|
359
351
|
}
|
|
360
352
|
const element = array[index];
|
|
361
353
|
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
362
|
-
forwardArguments.pop(); ///
|
|
363
354
|
return next(index - 1, ...forwardArguments);
|
|
364
355
|
}, back, index);
|
|
365
356
|
}
|
|
366
|
-
|
|
357
|
+
const index = length - 1;
|
|
358
|
+
return next(index, ...initialArguments, back);
|
|
367
359
|
}
|
|
368
360
|
function forwardsForEach(array, callback, ...initialArguments) {
|
|
369
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
361
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
370
362
|
function next(index, ...nextArguments) {
|
|
363
|
+
const back = nextArguments.pop();
|
|
371
364
|
if (index === length) {
|
|
372
365
|
return forward(...nextArguments, back);
|
|
373
366
|
}
|
|
374
367
|
const element = array[index];
|
|
375
368
|
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
376
|
-
forwardArguments.pop(); ///
|
|
377
369
|
return next(index + 1, ...forwardArguments);
|
|
378
370
|
}, back, index);
|
|
379
371
|
}
|
|
380
|
-
|
|
372
|
+
const index = 0;
|
|
373
|
+
return next(index, ...initialArguments, back);
|
|
381
374
|
}
|
|
382
375
|
function backwardsForEach(array, callback, ...initialArguments) {
|
|
383
|
-
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length
|
|
376
|
+
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
384
377
|
function next(index, ...nextArguments) {
|
|
378
|
+
const back = nextArguments.pop();
|
|
385
379
|
if (index === -1) {
|
|
386
380
|
return forward(...nextArguments, back);
|
|
387
381
|
}
|
|
388
382
|
const element = array[index];
|
|
389
383
|
return callback(element, ...nextArguments, (...forwardArguments)=>{
|
|
390
|
-
forwardArguments.pop(); ///
|
|
391
384
|
return next(index - 1, ...forwardArguments);
|
|
392
385
|
}, back, index);
|
|
393
386
|
}
|
|
394
|
-
|
|
387
|
+
const index = length - 1;
|
|
388
|
+
return next(index, ...initialArguments, back);
|
|
395
389
|
}
|
|
396
390
|
function all(callbacks, ...initialArguments) {
|
|
397
391
|
return every(callbacks, (callback, ...callbackArguments)=>{
|
|
@@ -409,14 +403,14 @@ const _default = {
|
|
|
409
403
|
each,
|
|
410
404
|
every,
|
|
411
405
|
map,
|
|
412
|
-
find,
|
|
413
406
|
reduce,
|
|
414
407
|
forEach,
|
|
415
408
|
filter,
|
|
416
409
|
prune,
|
|
417
410
|
extract,
|
|
418
|
-
|
|
411
|
+
find,
|
|
419
412
|
resolve,
|
|
413
|
+
match,
|
|
420
414
|
forwardsEvery,
|
|
421
415
|
backwardsEvery,
|
|
422
416
|
forwardsForEach,
|
|
@@ -425,4 +419,4 @@ const _default = {
|
|
|
425
419
|
exists
|
|
426
420
|
};
|
|
427
421
|
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaWx0ZXI6IGFycmF5RmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIG9uZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGlmIChjb3VudCAhPT0gMSkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLmluaXRpYWxBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBmb3J3YXJkQXJndW1lbnRzLnBvcCgpOyAgLy8vXG5cbiAgICAgICAgY291bnQrKztcblxuICAgICAgICBpZiAoY291bnQgPT09IDIpIHtcbiAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICAoLi4uYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgICBjb25zdCBleGNlcHRpb24gPSBiYWNrQXJndW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5uZXh0QXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBsZXQgY291bnQgPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLmluaXRpYWxBcmd1bWVudHMsXG4gICAgICBmb3J3YXJkLFxuICAgICAgKC4uLmJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgZXhjZXB0aW9uID0gYmFja0FyZ3VtZW50cy5wb3AoKTtcblxuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IDA7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgZm9yd2FyZEFyZ3VtZW50cy5wb3AoKTsgIC8vL1xuXG4gICAgICAgIGNvdW50Kys7XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgbGV0IGNvdW50ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7ICAvLy9cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXAoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IDA7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudEEgPSBhcnJheUFbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKGVsZW1lbnRCLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7ICAvLy9cblxuICAgICAgICBhcnJheUIgPSBbICAvLy9cbiAgICAgICAgICAuLi5hcnJheUIsXG4gICAgICAgICAgZWxlbWVudEJcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIGFycmF5QiwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGFycmF5QSA9IGFycmF5LCAvLy9cbiAgICAgICAgYXJyYXlCID0gW107XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGFycmF5QiwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBmb3J3YXJkQXJndW1lbnRzLnBvcCgpOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZWxlbWVudCwgLi4uZm9yd2FyZEFyZ3VtZW50cywgYmFjayk7XG4gICAgICB9LFxuICAgICAgKC4uLmJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgZXhjZXB0aW9uID0gYmFja0FyZ3VtZW50cy5wb3AoKTtcblxuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4ubmV4dEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlKGFycmF5LCBpbml0aWFsVmFsdWUsIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IDA7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgdmFsdWUsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQodmFsdWUsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKHZhbHVlLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7ICAvLy9cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIHZhbHVlLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGluaXRpYWxWYWx1ZSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgZm9yd2FyZEFyZ3VtZW50cy5wb3AoKTsgIC8vL1xuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IFtdLFxuICAgICAgICBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50cywgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKHBhc3NlZCwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBmb3J3YXJkQXJndW1lbnRzLnBvcCgpOyAgLy8vXG5cbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cy51bnNoaWZ0KGRlbGV0ZWRFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4IC0gMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBydW5lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgY29uc3QgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50LCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAocGFzc2VkLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7ICAvLy9cblxuICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMsIGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChkZWxldGVkRWxlbWVudCwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKHBhc3NlZCwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBmb3J3YXJkQXJndW1lbnRzLnBvcCgpOyAgLy8vXG5cbiAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMsIGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aCxcbiAgICAgICAgYXJyYXlCTGVuZ3RoID0gYXJyYXlCLmxlbmd0aDtcblxuICBpZiAoYXJyYXlBTGVuZ3RoICE9PSBhcnJheUJMZW5ndGgpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgY29uc3QgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoLCAgLy8vXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRBID0gYXJyYXlBW2luZGV4XSxcbiAgICAgICAgICBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50QSxcbiAgICAgIGVsZW1lbnRCLFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7ICAvLy9cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBhcnJheUEgPSBbICAvLy9cbiAgICAuLi5hcnJheUFcbiAgXTtcblxuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCk7XG5cbiAgZnVuY3Rpb24gbmV4dFBhc3MoLi4ubmV4dFBhc3NBcmd1bWVudHMpIHtcbiAgICBjb25zdCBsZW5ndGggPSBhcnJheUEubGVuZ3RoOyAvLy9cblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRQYXNzQXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBuZXh0RWxlbWVudChpbmRleCwgc3VjY2VzcywgLi4ubmV4dEVsZW1lbnRBcmd1bWVudHMpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBhcnJheUZpbHRlcihhcnJheUEsIChlbGVtZW50QSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFycmF5QkluY2x1ZGVzRWxlbWVudEEgPSBhcnJheUIuaW5jbHVkZXMoZWxlbWVudEEpO1xuXG4gICAgICAgICAgaWYgKCFhcnJheUJJbmNsdWRlc0VsZW1lbnRBKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0UGFzcyguLi5uZXh0RWxlbWVudEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVsZW1lbnRBID0gYXJyYXlBW2luZGV4XTtcblxuICAgICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgICBlbGVtZW50QSxcbiAgICAgICAgLi4ubmV4dEVsZW1lbnRBcmd1bWVudHMsXG4gICAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgZm9yd2FyZEFyZ3VtZW50cy5wb3AoKTsgIC8vL1xuXG4gICAgICAgICAgY29uc3QgZWxlbWVudEIgPSBlbGVtZW50QTsgIC8vL1xuXG4gICAgICAgICAgYXJyYXlCLnB1c2goZWxlbWVudEIpO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHRFbGVtZW50KGluZGV4ICsgMSwgdHJ1ZSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgICguLi5iYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhjZXB0aW9uID0gYmFja0FyZ3VtZW50cy5wb3AoKTtcblxuICAgICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5leHRFbGVtZW50KGluZGV4ICsgMSwgc3VjY2VzcywgLi4ubmV4dEVsZW1lbnRBcmd1bWVudHMpO1xuICAgICAgICB9LFxuICAgICAgICBpbmRleFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IDAsXG4gICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5leHRFbGVtZW50KGluZGV4LCBzdWNjZXNzLCAuLi5uZXh0UGFzc0FyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gbmV4dFBhc3MoLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgZm9yd2FyZEFyZ3VtZW50cy5wb3AoKTsgIC8vL1xuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSBsZW5ndGggLSAxO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBmb3J3YXJkQXJndW1lbnRzLnBvcCgpOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggLSAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgZm9yd2FyZEFyZ3VtZW50cy5wb3AoKTsgIC8vL1xuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7ICAvLy9cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGwoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBldmVyeShjYWxsYmFja3MsIChjYWxsYmFjaywgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgcmV0dXJuIHNvbWUoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25lLFxuICBzb21lLFxuICBlYWNoLFxuICBldmVyeSxcbiAgbWFwLFxuICBmaW5kLFxuICByZWR1Y2UsXG4gIGZvckVhY2gsXG4gIGZpbHRlcixcbiAgcHJ1bmUsXG4gIGV4dHJhY3QsXG4gIG1hdGNoLFxuICByZXNvbHZlLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoLFxuICBhbGwsXG4gIGV4aXN0c1xufTtcbiJdLCJuYW1lcyI6WyJhbGwiLCJiYWNrd2FyZHNFdmVyeSIsImJhY2t3YXJkc0ZvckVhY2giLCJlYWNoIiwiZXZlcnkiLCJleGlzdHMiLCJleHRyYWN0IiwiZmlsdGVyIiwiZmluZCIsImZvckVhY2giLCJmb3J3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNGb3JFYWNoIiwibWFwIiwibWF0Y2giLCJvbmUiLCJwcnVuZSIsInJlZHVjZSIsInJlc29sdmUiLCJzb21lIiwiYXJyYXlGaWx0ZXIiLCJhcnJheVV0aWxpdGllcyIsImFycmF5IiwiY2FsbGJhY2siLCJpbml0aWFsQXJndW1lbnRzIiwiYmFjayIsInBvcCIsImZvcndhcmQiLCJsZW5ndGgiLCJpbmRleCIsIm5leHQiLCJuZXh0QXJndW1lbnRzIiwiY291bnQiLCJlbGVtZW50IiwiZm9yd2FyZEFyZ3VtZW50cyIsImJhY2tBcmd1bWVudHMiLCJleGNlcHRpb24iLCJhcnJheUIiLCJlbGVtZW50QSIsImFycmF5QSIsImVsZW1lbnRCIiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiLCJkZWxldGVkRWxlbWVudHMiLCJwYXNzZWQiLCJzdGFydEluZGV4IiwiZGVsZXRlQ291bnQiLCJkZWxldGVkRWxlbWVudCIsInNwbGljZSIsInVuc2hpZnQiLCJ1bmRlZmluZWQiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJuZXh0UGFzcyIsIm5leHRQYXNzQXJndW1lbnRzIiwibmV4dEVsZW1lbnQiLCJzdWNjZXNzIiwibmV4dEVsZW1lbnRBcmd1bWVudHMiLCJhcnJheUJJbmNsdWRlc0VsZW1lbnRBIiwiaW5jbHVkZXMiLCJwdXNoIiwiY2FsbGJhY2tzIiwiY2FsbGJhY2tBcmd1bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXduQmdCQTtlQUFBQTs7UUF2RkFDO2VBQUFBOztRQTBEQUM7ZUFBQUE7O1FBeUNoQjtlQUFBOztRQTNpQmdCQztlQUFBQTs7UUFxQ0FDO2VBQUFBOztRQWdnQkFDO2VBQUFBOztRQTdRQUM7ZUFBQUE7O1FBakZBQztlQUFBQTs7UUFoR0FDO2VBQUFBOztRQW1FQUM7ZUFBQUE7O1FBaVFBQztlQUFBQTs7UUEwREFDO2VBQUFBOztRQW5hQUM7ZUFBQUE7O1FBK1BBQztlQUFBQTs7UUFwWkFDO2VBQUFBOztRQWtVQUM7ZUFBQUE7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
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5pbml0aWFsQXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7IC8vL1xuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQgKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICBjb3VudCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGNvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLmluaXRpYWxBcmd1bWVudHMsXG4gICAgICBmb3J3YXJkLFxuICAgICAgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGNvdW50LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQgKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICBjb3VudCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGNvdW50LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBhcnJheUEgPSBhcnJheSwgLy8vXG4gICAgICAgIGFycmF5QiA9IFtdLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50QSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudEIsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCBbIC4uLmFycmF5QiwgZWxlbWVudEIgXSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgYXJyYXlCLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZShhcnJheSwgaW5pdGlhbFZhbHVlLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCB2YWx1ZSwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHZhbHVlLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICh2YWx1ZSwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIHZhbHVlLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBpbml0aWFsVmFsdWUsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gW10sXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChkZWxldGVkRWxlbWVudHMsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cy51bnNoaWZ0KGRlbGV0ZWRFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4IC0gMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gbGVuZ3RoIC0gMTtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChkZWxldGVkRWxlbWVudCwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKHBhc3NlZCwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZWxlbWVudHMgPSBbXSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGVsZW1lbnRzLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoZWxlbWVudHMsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgWyAuLi5lbGVtZW50cywgZWxlbWVudCBdLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGVsZW1lbnRzLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBID0gYXJyYXksIC8vL1xuICAgICAgICBhcnJheUIgPSBbXTtcblxuICBmdW5jdGlvbiBuZXh0KGFycmF5QSwgYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXlBLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmQoXG4gICAgICBhcnJheUEsXG4gICAgICAoZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICAgICAgYmFjayA9IGNhbGxiYWNrQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICAgICAgICBmb3J3YXJkID0gY2FsbGJhY2tBcmd1bWVudHMucG9wKCk7XG5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgLi4uY2FsbGJhY2tBcmd1bWVudHMsXG4gICAgICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChzdWNjZXNzLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChzdWNjZXNzLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgYmFjayk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmRleFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHNMZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGVsZW1lbnRzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgIGFycmF5QS5maWx0ZXIoKGVsZW1lbnQpID0+ICFlbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSksXG4gICAgICAgICAgWyAuLi5hcnJheUIsIC4uLmVsZW1lbnRzIF0sXG4gICAgICAgICAgLi4uZm9yd2FyZEFyZ3VtZW50c1xuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGJhY2tcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoYXJyYXlBLCBhcnJheUIsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aCxcbiAgICAgICAgYXJyYXlCTGVuZ3RoID0gYXJyYXlCLmxlbmd0aCxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoOyAgLy8vXG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgZWxlbWVudEIgPSBhcnJheUJbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICBlbGVtZW50QixcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggLSAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSBsZW5ndGggLSAxO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsKGNhbGxiYWNrcywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICByZXR1cm4gZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBzb21lKGNhbGxiYWNrcywgKGNhbGxiYWNrLCAuLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gIH0sIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG9uZSxcbiAgc29tZSxcbiAgZWFjaCxcbiAgZXZlcnksXG4gIG1hcCxcbiAgcmVkdWNlLFxuICBmb3JFYWNoLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICBmaW5kLFxuICByZXNvbHZlLFxuICBtYXRjaCxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaCxcbiAgYWxsLFxuICBleGlzdHNcbn07XG4iXSwibmFtZXMiOlsiYWxsIiwiYmFja3dhcmRzRXZlcnkiLCJiYWNrd2FyZHNGb3JFYWNoIiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwiZXh0cmFjdCIsImZpbHRlciIsImZpbmQiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRm9yRWFjaCIsIm1hcCIsIm1hdGNoIiwib25lIiwicHJ1bmUiLCJyZWR1Y2UiLCJyZXNvbHZlIiwic29tZSIsImFycmF5IiwiY2FsbGJhY2siLCJpbml0aWFsQXJndW1lbnRzIiwiYmFjayIsInBvcCIsImZvcndhcmQiLCJsZW5ndGgiLCJuZXh0IiwiaW5kZXgiLCJjb3VudCIsIm5leHRBcmd1bWVudHMiLCJlbGVtZW50IiwiZm9yd2FyZEFyZ3VtZW50cyIsImV4Y2VwdGlvbiIsImFycmF5QSIsImFycmF5QiIsImVsZW1lbnRBIiwiZWxlbWVudEIiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSIsImRlbGV0ZWRFbGVtZW50cyIsInBhc3NlZCIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsImRlbGV0ZWRFbGVtZW50Iiwic3BsaWNlIiwidW5zaGlmdCIsInVuZGVmaW5lZCIsImVsZW1lbnRzIiwiY2FsbGJhY2tBcmd1bWVudHMiLCJzdWNjZXNzIiwiZWxlbWVudHNMZW5ndGgiLCJpbmNsdWRlcyIsImFycmF5QUxlbmd0aCIsImFycmF5Qkxlbmd0aCIsImNhbGxiYWNrcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBeW1CZ0JBO2VBQUFBOztRQTFGQUM7ZUFBQUE7O1FBNERBQztlQUFBQTs7UUEwQ2hCO2VBQUE7O1FBdGlCZ0JDO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBNmZBQztlQUFBQTs7UUEvU0FDO2VBQUFBOztRQW5GQUM7ZUFBQUE7O1FBNkhBQztlQUFBQTs7UUEzSkFDO2VBQUFBOztRQWtTQUM7ZUFBQUE7O1FBNERBQztlQUFBQTs7UUE3WkFDO2VBQUFBOztRQTJUQUM7ZUFBQUE7O1FBemNBQztlQUFBQTs7UUFvUkFDO2VBQUFBOztRQXRHQUM7ZUFBQUE7O1FBNk5BQztlQUFBQTs7UUE5VkFDO2VBQUFBOzs7QUE3Q1QsU0FBU0osSUFBSUssS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0MsZ0JBQWdCO0lBQ3RELE1BQU1DLE9BQU9ELGlCQUFpQkUsR0FBRyxJQUMzQkMsVUFBVUgsaUJBQWlCRSxHQUFHLElBQzlCRSxTQUFTTixNQUFNTSxNQUFNO0lBRTNCLFNBQVNDLEtBQUtDLEtBQUssRUFBRUMsS0FBSyxFQUFFLEdBQUdDLGFBQWE7UUFDMUMsSUFBSUYsVUFBVUYsUUFBUTtZQUNwQixJQUFJRyxVQUFVLEdBQUc7Z0JBQ2YsT0FBT047WUFDVDtZQUVBLE9BQU9F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
|