util-helpers 4.3.0 → 4.4.0
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/README.md +2 -2
- package/dist/util-helpers.js +36 -1
- package/dist/util-helpers.min.js +1 -1
- package/dist/util-helpers.min.js.map +1 -1
- package/esm/index.js +1 -0
- package/esm/normalizeString.js +1 -0
- package/esm/safeDate.js +40 -0
- package/lib/index.js +8 -0
- package/lib/normalizeString.js +1 -0
- package/lib/safeDate.js +56 -0
- package/package.json +1 -1
- package/types/index.d.ts +1 -0
- package/types/normalizeString.d.ts +1 -0
- package/types/safeDate.d.ts +21 -0
package/dist/util-helpers.js
CHANGED
|
@@ -1487,6 +1487,7 @@
|
|
|
1487
1487
|
*
|
|
1488
1488
|
* @static
|
|
1489
1489
|
* @alias module:Processor.normalizeString
|
|
1490
|
+
* @see 参考 {@link tttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#string_instances|String}
|
|
1490
1491
|
* @since 4.3.0
|
|
1491
1492
|
* @param {*} value 待处理的值
|
|
1492
1493
|
* @returns {string} 规整化的值
|
|
@@ -2156,6 +2157,39 @@
|
|
|
2156
2157
|
return `data:${mimetype}${base64 ? ';base64' : ''},${data}`;
|
|
2157
2158
|
}
|
|
2158
2159
|
|
|
2160
|
+
// TODO: 函数重载,类型参照 Date
|
|
2161
|
+
|
|
2162
|
+
/**
|
|
2163
|
+
* 创建一个 Date 实例,同 new Date() 。<br/><br/>主要是规避了 iphone 设备浏览器不支持部分格式(YYYY-MM-DD HH-mm 或 YYYY.MM.DD)。
|
|
2164
|
+
*
|
|
2165
|
+
* @static
|
|
2166
|
+
* @alias module:Processor.safeDate
|
|
2167
|
+
* @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date|Date}
|
|
2168
|
+
* @since 4.4.0
|
|
2169
|
+
* @param {string|number|Date} [value] 日期时间字符串、毫秒数、日期对象
|
|
2170
|
+
* @param {...number} args 月/日/时/分/秒/毫秒
|
|
2171
|
+
* @returns {Date} Date 实例
|
|
2172
|
+
* @example
|
|
2173
|
+
* safeDate('2022-1-1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
|
|
2174
|
+
* safeDate('2022/1/1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
|
|
2175
|
+
* safeDate('2022.1.1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
|
|
2176
|
+
* safeDate('2022.1.1 11:11'); // Sat Jan 01 2022 11:11:00 GMT+0800 (中国标准时间)
|
|
2177
|
+
* safeDate(99, 1); // Mon Feb 01 1999 00:00:00 GMT+0800 (中国标准时间)
|
|
2178
|
+
* safeDate(1646711233171); // Tue Mar 08 2022 11:47:13 GMT+0800 (中国标准时间)
|
|
2179
|
+
*
|
|
2180
|
+
*/
|
|
2181
|
+
function safeDate(value, ...args) {
|
|
2182
|
+
const safeValue = typeof value === 'string' ? value.replace(/[\\.-]/g, '/') : value;
|
|
2183
|
+
|
|
2184
|
+
if (args && args.length > 0) {
|
|
2185
|
+
// @ts-ignore
|
|
2186
|
+
return new Date(safeValue, ...args);
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
// @ts-ignore
|
|
2190
|
+
return isNil(safeValue) ? new Date() : new Date(safeValue);
|
|
2191
|
+
}
|
|
2192
|
+
|
|
2159
2193
|
/**
|
|
2160
2194
|
* 检查值是否为Number
|
|
2161
2195
|
*
|
|
@@ -2420,6 +2454,7 @@
|
|
|
2420
2454
|
exports.plus = plus;
|
|
2421
2455
|
exports.replaceChar = replaceChar;
|
|
2422
2456
|
exports.round = round;
|
|
2457
|
+
exports.safeDate = safeDate;
|
|
2423
2458
|
exports.setDataURLPrefix = setDataURLPrefix;
|
|
2424
2459
|
exports.setDisableWarning = setDisableWarning;
|
|
2425
2460
|
exports.times = times;
|
|
@@ -2429,4 +2464,4 @@
|
|
|
2429
2464
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2430
2465
|
|
|
2431
2466
|
})));
|
|
2432
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXJzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvdHlwZS9pc1R5cGUuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc1N0cmluZy5qcyIsIi4uL3NyYy91dGlscy9jb252ZXJ0VG9TdHJpbmcuanMiLCIuLi9zcmMvaXNNb2JpbGUuanMiLCIuLi9zcmMvaXNUZWxlcGhvbmUuanMiLCIuLi9zcmMvaXNQb3N0Y29kZS5qcyIsIi4uL3NyYy9pc0lkQ2FyZC5qcyIsIi4uL3NyYy9pc0VtYWlsLmpzIiwiLi4vc3JjL2lzUVEuanMiLCIuLi9zcmMvaXNXWC5qcyIsIi4uL3NyYy9pc1ZlaGljbGUuanMiLCIuLi9zcmMvaXNCYW5rQ2FyZC5qcyIsIi4uL3NyYy9pc1NvY2lhbENyZWRpdENvZGUuanMiLCIuLi9zcmMvdXRpbHMvY29uZmlnLmpzIiwiLi4vc3JjL3ZhbGlkYXRlUGFzc3dvcmQuanMiLCIuLi9zcmMvaXNQYXNzd29yZC5qcyIsIi4uL3NyYy9pc1Bhc3Nwb3J0LmpzIiwiLi4vc3JjL2lzQ2hpbmVzZS5qcyIsIi4uL3NyYy9pc0lQdjQuanMiLCIuLi9zcmMvaXNJUHY2LmpzIiwiLi4vc3JjL2lzVXJsLmpzIiwiLi4vc3JjL2lzQnVzaW5lc3NMaWNlbnNlLmpzIiwiLi4vc3JjL2lzUHJvbWlzZUxpa2UuanMiLCIuLi9zcmMvaXNITUNhcmQuanMiLCIuLi9zcmMvaXNUV0NhcmQuanMiLCIuLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwiLi4vc3JjL3V0aWxzL21hdGgudXRpbC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTmFOLmpzIiwiLi4vc3JjL2Zvcm1hdE1vbmV5LmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNVbmRlZmluZWQuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc051bGwuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc05pbC5qcyIsIi4uL3NyYy9ub3JtYWxpemVTdHJpbmcuanMiLCIuLi9zcmMvZm9ybWF0QmFua0NhcmQuanMiLCIuLi9zcmMvcmVwbGFjZUNoYXIuanMiLCIuLi9zcmMvbnVtYmVyVG9DaGluZXNlLmpzIiwiLi4vc3JjL2J5dGVzVG9TaXplLmpzIiwiLi4vc3JjL3BhcnNlSWRDYXJkLmpzIiwiLi4vc3JjL2Jsb2JUb0RhdGFVUkwuanMiLCIuLi9zcmMvZGF0YVVSTFRvQmxvYi5qcyIsIi4uL3NyYy9zZXREYXRhVVJMUHJlZml4LmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNOdW1iZXIuanMiLCIuLi9zcmMvdGltZXMuanMiLCIuLi9zcmMvcGx1cy5qcyIsIi4uL3NyYy9taW51cy5qcyIsIi4uL3NyYy9kaXZpZGUuanMiLCIuLi9zcmMvcm91bmQuanMiLCIuLi9zcmMvd2FpdFRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIOajgOa1i+WAvOeahCBgdG9TdHJpbmdgIOexu+Wei1xuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5qOA5p+l5YC8XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZW5hbWUg57G75Z6L5ZCN56ewXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g6L+U5Zue5YC855qEIGB0b1N0cmluZ2Ag57G75Z6L5piv5ZCm5Yy56YWNXG4gKi9cbmZ1bmN0aW9uIGlzVHlwZSh2YWx1ZSwgdHlwZW5hbWUpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBgW29iamVjdCAke3R5cGVuYW1lfV1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1R5cGU7XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpTdHJpbmdcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNTdHJpbmdcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpTdHJpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogaXNTdHJpbmcoJ2FiYycpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNTdHJpbmcoMSlcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdTdHJpbmcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTdHJpbmc7XG4iLCJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi90eXBlL2lzU3RyaW5nJztcblxuLyoqXG4gKiDovazmjaLkuLrlrZfnrKbkuLJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIOWAvFxuICogQHJldHVybnMge3N0cmluZ30g5a2X56ym5LiyXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb252ZXJ0VG9TdHJpbmc7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5omL5py65Y+356CBIDEx5L2N5pWw5a2X77yM5LulMeW8gOWktO+8jOesrOS6jOS9jeaYrzM0NTY3ODnlhbbkuK3kuIDkuKrvvIzlkI7pnaLlho3liqA55Liq5pWw5a2XXG5jb25zdCByZWcgPSAvXjFbMzQ1Njc4OV1cXGR7OX0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmiYvmnLrlj7fnoIFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc01vYmlsZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuaJi+acuuWPt+eggVxuICogQGV4YW1wbGVcbiAqXG4gKiBpc01vYmlsZSgnMTMwMDAwMDAwMDAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc01vYmlsZSgnMTMwMDAnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc01vYmlsZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTW9iaWxlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWbuuWumueUteivnSDmlK/mjIHljLrlj7flkozliIbmnLrlj7cgM++9njTkvY3ljLrlj7fvvIzku6Uw5byA5aS077ybN++9njjkvY3nm7Tmkq3lj7fvvIzku6Uy772eOeW8gOWktO+8mzHvvZ425L2N5YiG5py65Y+3XG5jb25zdCByZWcgPSAvXigwXFxkezIsM31cXC0pPyhbMi05XVxcZHs2LDd9KShcXC1cXGR7MSw2fSk/JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65Zu65a6a55S16K+dXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNUZWxlcGhvbmVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrlm7rlrprnlLXor51cbiAqIEBleGFtcGxlXG4gKlxuICogaXNUZWxlcGhvbmUoJzIyMDMzMjEyJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNUZWxlcGhvbmUoJzAyMS0yMjAzMzIxMicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVGVsZXBob25lKCcwMjEtMjIwMzMyMTItMTIzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNUZWxlcGhvbmUoJzEzMDAwMDAwMDAwJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNUZWxlcGhvbmUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RlbGVwaG9uZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDpgq7mlL/nvJbnoIFcbmNvbnN0IHJlZyA9IC9eXFxkezZ9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66YKu5pS/57yW56CB77yMNuS9jeaVsOWtl1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUG9zdGNvZGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrpgq7mlL/nvJbnoIFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQb3N0Y29kZSgnMTAxMTExJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQb3N0Y29kZSgnMTIzJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNQb3N0Y29kZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUG9zdGNvZGU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6Lqr5Lu96K+B5Y+35q2j5YiZXG5jb25zdCByZWdJZENhcmQgPSAvXlsxLTldXFxkezV9KDE5fDIwKT9cXGR7Mn0oKDBbMS05XSl8KDFbMDEyXSkpKChbMC0yXVsxLTldKXwxMHwyMHwzMHwzMSlcXGR7M30oXFxkfFgpPyQvaTtcblxuLyoqXG4gKiDmoKHpqoznoIHorqHnrpdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+S4reWNjuS6uuawkeWFseWSjOWbveWFrOawkei6q+S7veWPt+eggXzkuK3ljY7kurrmsJHlhbHlkozlm73lhazmsJHouqvku73lj7fnoIF9XG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+eggVxuICogQHJldHVybnMg5qCh6aqM56CB5piv5ZCm5q2j56GuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrKGlkKSB7XG4gIGxldCBpbmRleCwgc3VtLCBudW07XG4gIGZvciAoc3VtID0gaW5kZXggPSAwOyBpbmRleCA8IDE3OyBpbmRleCsrKSB7XG4gICAgc3VtICs9IChNYXRoLnBvdygyLCAxNyAtIGluZGV4KSAlIDExKSAqIE51bWJlcihpZFtpbmRleF0pO1xuICB9XG4gIG51bSA9ICgxMiAtIChzdW0gJSAxMSkpICUgMTE7XG4gIGlmIChudW0gPCAxMCkge1xuICAgIHJldHVybiBudW0gPT09IE51bWJlcihpZFsxN10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpZFsxN10gPT0gJ1gnO1xuICB9XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6MTjkvY3ouqvku73or4Hlj7fnoIHjgII8YnIvPuWuveadvuaooeW8j+S4i++8jOaUr+aMgTE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNJZENhcmRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/vvIzmlK/mjIExNeS9jei6q+S7veivgeWPt+eggVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jaGVja0NvZGU9dHJ1ZV0g5piv5ZCm5qCh6aqM5pyA5ZCO5LiA5L2N5qCh6aqM56CB77yM5LuF5pSv5oyBMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrouqvku73or4Hlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSWRDYXJkKCcxMzA3MDExOTkzMTAzMDIyOFgnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4WCcsIHsgY2hlY2tDb2RlOiBmYWxzZSB9KTsgLy8g5LiN5qCh6aqM5qCh6aqM56CBXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJZENhcmQoJzMyMDMxMTc3MDcwNjAwMScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lkQ2FyZCgnMzIwMzExNzcwNzA2MDAxJywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzSWRDYXJkKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UsIGNoZWNrQ29kZSA9IHRydWUgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgaWYgKHZhbHVlU3RyLmxlbmd0aCA9PT0gMTUgJiYgbG9vc2UpIHtcbiAgICByZXR1cm4gcmVnSWRDYXJkLnRlc3QodmFsdWVTdHIpO1xuICB9XG5cbiAgaWYgKHZhbHVlU3RyLmxlbmd0aCA9PT0gMTggJiYgcmVnSWRDYXJkLnRlc3QodmFsdWVTdHIpKSB7XG4gICAgaWYgKGNoZWNrQ29kZSkge1xuICAgICAgcmV0dXJuIGNoZWNrKHZhbHVlU3RyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSWRDYXJkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOmCrueusVxuY29uc3QgcmVnID0gL15bXFxkYS16XSsoW1xcLVxcLlxcX10/W1xcZGEtel0rKSpAW1xcZGEtel0rKFtcXC1cXC5dP1tcXGRhLXpdKykqKFxcLlthLXpdezIsfSkrJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4ukVtYWlsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNFbWFpbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4ukVtYWlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzRW1haWwoJzEyMzJAcXEuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNFbWFpbCgnMTIzQCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzRW1haWwodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0VtYWlsO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIFFR5Y+35q2j5YiZXG5jb25zdCByZWcgPSAvXlsxLTldXFxkezQsMTB9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6UVHlj7fvvIzpnZ4w5byA5aS077yMNeiHszEx5L2N5pWw5a2XXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNRUVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4ulFR5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUVEoJzEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNRUSgnMTIzJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNRUSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUVE7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5b6u5L+h5Y+3IDboh7MyMOS9je+8jOS7peWtl+avjeW8gOWktO+8jOWtl+avje+8jOaVsOWtl++8jOWHj+WPt++8iOi/nuaOpeespu+8ie+8jOS4i+WIkue6v1xuY29uc3QgcmVnID0gL15bYS16XShbLV9hLXowLTldezUsMTl9KSskL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65b6u5L+h5Y+3XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNXWFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuW+ruS/oeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1dYKCdhMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1dYKCcxMjMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1dYKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNXWDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDovabniYzlj7fmraPliJlcbmNvbnN0IHJlZyA9IC9eW+S6rOa0peayqua4neWGgOixq+S6kei+vem7kea5mOealumygeaWsOiLj+a1mei1o+mEguahgueUmOaZi+iSmemZleWQiemXvei0teeypOmdkuiXj+W3neWugeeQvOS9v+mihkEtWl17MX1bQS1aXXsxfSgoW0EtWjAtOV17NH1bQS1aMC055oyC5a2m6K2m5riv5r6zXXsxfSl8KFtBLVowLTldezV9W0RGXSl8KFtERl1bQS1aMC05XXs1fSkpJC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66L2m54mM5Y+377yM5pSv5oyB5paw6IO95rqQ5ZKM6Z2e5paw6IO95rqQ6L2m54mMXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNWZWhpY2xlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/ovabniYzlj7d86L2m54mM5Y+3fVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uui9pueJjOWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1ZlaGljbGUoJ+S6rEwxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQkQxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQkYxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQjEyMzQ1RCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQjEyMzQ1RicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNWZWhpY2xlKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNWZWhpY2xlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOmdnjDlvIDlpLTvvIwxMH4yMeS9jeaVsOWtl1xuY29uc3QgcmVnID0gL15bMS05XVxcZHs5LDIwfSQvO1xuXG4vLyA4fjMw5L2N5pWw5a2XXG5jb25zdCByZWdMb29zZSA9IC9eXFxkezgsMzB9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66ZO26KGM5Y2h5Y+344CC5q2j5bi45qih5byP77yI6Z2eMOW8gOWktO+8jDEwfjIx5L2N5pWw5a2X77yJ5a695p2+5qih5byP77yIOH4zMOS9jeaVsOWtl++8iVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQmFua0NhcmRcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2tmLnFxLmNvbS9mYXEvMTcwMTEyQUJubTZiMTcwMTEyRnZxdUFuLmh0bWx85bi455So6ZO26KGM6LSm5Y+35L2N5pWw5Y+C6ICDfVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j++8jDh+MzDkvY3mlbDlrZdcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrpk7booYzljaHlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MDAxOCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0JhbmtDYXJkKCcxMjM0NTY3ODknKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCYW5rQ2FyZCgnMTIzNDU2Nzg5JywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzQmFua0NhcmQodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuXG4gIGlmIChsb29zZSkge1xuICAgIHJldHVybiByZWdMb29zZS50ZXN0KHZhbHVlU3RyKTtcbiAgfVxuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0JhbmtDYXJkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWfuuehgOinhOWIme+8jOeUsTE45L2N5pWw5a2X5ZKM5aSn5YaZ5a2X5q+N57uE5oiQ77yM5LiN5L2/55SoSeOAgU/jgIFa44CBU+OAgVbjgIJcbmNvbnN0IGJhc2VSZWcgPSAvXltcXGRBLUhKLU5QUVJUVVdYWV17Mn1cXGR7Nn1bXFxkQS1ISi1OUFFSVFVXWFldezEwfSQvO1xuXG4vLyDln7rnoYDlrZfnrKbnu4TmiJBcbmNvbnN0IGJhc2VDb2RlQXJyID0gJzAxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSVFVXWFknLnNwbGl0KCcnKTtcblxuLy/liqDmnYPlm6DlrZBcbmNvbnN0IHdlaWdodEZhY3RvciA9IFsxLCAzLCA5LCAyNywgMTksIDI2LCAxNiwgMTcsIDIwLCAyOSwgMjUsIDEzLCA4LCAyNCwgMTAsIDMwLCAyOF07XG5cbi8qKlxuICog6I635Y+W5a2X56ym5L2N572uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIOWtl+esplxuICogQHJldHVybnMge251bWJlcn0g5a2X56ym5omA5Zyo5Z+656GA5a2X56ym55qE5L2N572uXG4gKi9cbmZ1bmN0aW9uIGdldEJhc2VDb2RlSW5kZXgoY29kZSkge1xuICBsZXQgcmV0O1xuXG4gIGJhc2VDb2RlQXJyLnNvbWUoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0gPT09IGNvZGUpIHtcbiAgICAgIHJldCA9IGluZGV4O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOiuoeeul+agoemqjOeggVxuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVDb2RlIOe7n+S4gOS7o+eggeWJjTE35L2NXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDmoKHpqoznoIFcbiAqL1xuZnVuY3Rpb24gc3VtQ2hlY2tDb2RlKHByZUNvZGUpIHtcbiAgLy8gY29uc3QgcHJlQ29kZUFyciA9IHByZUNvZGUuc3BsaXQoJycpO1xuXG4gIGxldCB0b3RhbCA9IDA7XG5cbiAgLy8g6K6h566X5a2X56ym5L2N572u5a+55bqU5bqP5Y+35ZKM5Yqg5p2D5Zug5a2Q55qE5LmY56ev77yM5oC75ZKMXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTc7IGkrKykge1xuICAgIC8vIOWtl+espuS9jee9ruWvueW6lOeahOWfuuehgOe8lueggeW6j+WPt1xuICAgIGNvbnN0IGluZGV4ID0gZ2V0QmFzZUNvZGVJbmRleChwcmVDb2RlW2ldKTtcbiAgICAvLyDliqDmnYPlm6DlrZBcbiAgICBjb25zdCB3ZiA9IHdlaWdodEZhY3RvcltpXTtcbiAgICAvLyDorqHnrpfluo/lj7flkozliqDmnYPlm6DlrZDnmoTkuZjnp6/vvIzlubborqHnrpfnuqfmlbDkuYvlkoxcbiAgICB0b3RhbCArPSBpbmRleCAqIHdmO1xuICB9XG5cbiAgLy8g6K6h566X5pW05pWw5rGC5L2Z5Ye95pWwTU9EXG4gIGNvbnN0IHJlbWFpbmRlciA9IHRvdGFsICUgMzE7XG4gIC8vIOagoemqjOeggeWtl+espuWAvOW6j+WPt1xuICBjb25zdCBjaGVja0NvZGVJbmRleCA9IDMxIC0gcmVtYWluZGVyO1xuXG4gIHJldHVybiBiYXNlQ29kZUFycltjaGVja0NvZGVJbmRleF07XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li657uf5LiA56S+5Lya5L+h55So5Luj56CB77yM5Lmf5Y+r5LiJ6K+B5ZCI5LiA57uE57uH5Luj56CB44CC55SxMTjkvY3mlbDlrZflkozlpKflhpnlrZfmr43nu4TmiJDvvIzkuI3kvb/nlKhJ44CBT+OAgVrjgIFT44CBVuOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzU29jaWFsQ3JlZGl0Q29kZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXNvdXJjZS5vcmcvemgtaGFucy9HQl8zMjEwMC0yMDE1X+azleS6uuWSjOWFtuS7lue7hOe7h+e7n+S4gOekvuS8muS/oeeUqOS7o+eggee8lueggeinhOWImXxHQiAzMjEwMC0yMDE1IOazleS6uuWSjOWFtuS7lue7hOe7h+e7n+S4gOekvuS8muS/oeeUqOS7o+eggee8lueggeinhOWImX1cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/jgILlpoLmnpzkuLp0cnVl77yM5LiN5qCh6aqM5qCh6aqM5L2N44CCXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li657uf5LiA56S+5Lya5L+h55So5Luj56CBXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzU29jaWFsQ3JlZGl0Q29kZSgnOTEzNTAxMDBNMDAwMTAwWTQzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNTb2NpYWxDcmVkaXRDb2RlKCc5MTM1MDEwME0wMDAxMDBZNEEnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogLy8g5a695p2+5qih5byP77yM5LiN5qCh6aqM5qCh6aqM5L2N44CC5omA5Lul5Lmf5Y+v5Lul6YCa6L+HXG4gKiBpc1NvY2lhbENyZWRpdENvZGUoJzkxMzUwMTAwTTAwMDEwMFk0QScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNTb2NpYWxDcmVkaXRDb2RlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBwYXNzQmFzZVJ1bGUgPSBiYXNlUmVnLnRlc3QodmFsdWVTdHIpO1xuXG4gIC8vIOWuveadvuaooeW8jyDmiJYg5Z+656GA6KeE5YiZ5LiN6YCa6L+H55u05o6l6L+U5ZueXG4gIGlmIChsb29zZSB8fCAhcGFzc0Jhc2VSdWxlKSB7XG4gICAgcmV0dXJuIHBhc3NCYXNlUnVsZTtcbiAgfVxuXG4gIC8vIOWJjTE35L2NXG4gIGNvbnN0IHByZUNvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcoMCwgMTcpO1xuICAvLyDmoKHpqoznoIFcbiAgY29uc3QgbGFzdENvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcodmFsdWVTdHIubGVuZ3RoIC0gMSk7XG4gIC8vIOiuoeeul+agoemqjOeggVxuICBjb25zdCBjaGVja0NvZGUgPSBzdW1DaGVja0NvZGUocHJlQ29kZSk7XG5cbiAgcmV0dXJuIGxhc3RDb2RlID09PSBjaGVja0NvZGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU29jaWFsQ3JlZGl0Q29kZTtcbiIsImNvbnN0IGNvbmZpZyA9IHtcbiAgLy8g56aB55Sod2FybmluZ+aPkOekulxuICBkaXNhYmxlV2FybmluZzogdHJ1ZVxufTtcblxuLyoqXG4gKiDorr7nva7npoHmraJ3YXJuaW5n5o+Q56S6XG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOkRlYnVnLmZvcm1hdEJhbmtDYXJkXG4gKiBAc2luY2UgMy42LjFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9vbCDmmK/lkKbnpoHmraJ3YXJuaW5n5o+Q56S6XG4gKi9cbmZ1bmN0aW9uIHNldERpc2FibGVXYXJuaW5nKGJvb2wpIHtcbiAgY29uZmlnLmRpc2FibGVXYXJuaW5nID0gISFib29sO1xufVxuXG5leHBvcnQgeyBjb25maWcsIHNldERpc2FibGVXYXJuaW5nIH07XG4iLCJpbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5cbmNvbnN0IHJlZ051bWJlciA9IC9bXFxkXS87XG5jb25zdCByZWdMb3dlckNhc2VMZXR0ZXIgPSAvW2Etel0vO1xuY29uc3QgcmVnVXBwZXJDYXNlTGV0dGVyID0gL1tBLVpdLztcbmNvbnN0IHJlZ0FsbE51bWJlckFuZExldHRlciA9IC9bXFxkfGEtel0vZ2k7XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5pWw5a2XXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5p+l55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIGhhc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ051bWJlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gKi9cbmZ1bmN0aW9uIGhhc0xvd2VyQ2FzZUxldHRlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ0xvd2VyQ2FzZUxldHRlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKi9cbmZ1bmN0aW9uIGhhc1VwcGVyQ2FzZUxldHRlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ1VwcGVyQ2FzZUxldHRlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5Li65Y2B5YWt6L+b5Yi2XG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li65Y2B5YWt6L+b5Yi2XG4gKi9cbmZ1bmN0aW9uIGhhc0hleCh2YWwpIHtcbiAgcmV0dXJuIHZhbC5pbmRleE9mKCdcXFxceCcpID4gLTEgfHwgdmFsLmluZGV4T2YoJ1xcXFx1JykgPiAtMTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvnibnmrorlrZfnrKZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnNdIOeJueauiuWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+eJueauiuWtl+esplxuICovXG5mdW5jdGlvbiBoYXNTcGVjaWFsQ2hhcmFjdGVyKHZhbCwgY2hhcnMgPSAnJykge1xuICBpZiAoIWNoYXJzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3BlY2lhbENoYXJzID0gdmFsLnJlcGxhY2UocmVnQWxsTnVtYmVyQW5kTGV0dGVyLCAnJyk7XG4gIGNvbnN0IHJlZ0NoYXJzID0gaGFzSGV4KGNoYXJzKSA/IG5ldyBSZWdFeHAoYFske2NoYXJzfV1gKSA6IG51bGw7XG5cbiAgaWYgKHJlZ0NoYXJzKSB7XG4gICAgcmV0dXJuIHJlZ0NoYXJzLnRlc3Qoc3BlY2lhbENoYXJzKTtcbiAgfVxuXG4gIGxldCByZXQgPSBmYWxzZTtcbiAgc3BlY2lhbENoYXJzLnNwbGl0KCcnKS5zb21lKChjaGFySXRlbSkgPT4ge1xuICAgIGlmIChjaGFycy5pbmRleE9mKGNoYXJJdGVtKSA+IC0xKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvpnZ7ms5XlrZfnrKZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFycyDpnZ7ms5XlrZfnrKZcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvpnZ7ms5XlrZfnrKZcbiAqL1xuZnVuY3Rpb24gaGFzVW5hbGxvd2FibGVDaGFyYWN0ZXIodmFsLCBjaGFycyA9ICcnKSB7XG4gIGNvbnN0IHNwZWNpYWxDaGFycyA9IHZhbC5yZXBsYWNlKHJlZ0FsbE51bWJlckFuZExldHRlciwgJycpO1xuXG4gIGlmICghY2hhcnMgJiYgc3BlY2lhbENoYXJzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCByZWdDaGFycyA9IGhhc0hleChjaGFycykgPyBuZXcgUmVnRXhwKGBbXiR7Y2hhcnN9XWApIDogbnVsbDtcbiAgaWYgKHJlZ0NoYXJzKSB7XG4gICAgcmV0dXJuIHJlZ0NoYXJzLnRlc3Qoc3BlY2lhbENoYXJzKTtcbiAgfVxuICBsZXQgcmV0ID0gZmFsc2U7XG4gIHNwZWNpYWxDaGFycy5zcGxpdCgnJykuc29tZSgoY2hhckl0ZW0pID0+IHtcbiAgICBpZiAoY2hhcnMuaW5kZXhPZihjaGFySXRlbSkgPT09IC0xKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDpqozor4Hlr4bnoIHvvIjmlbDlrZfjgIHlpKflsI/lhpnlrZfmr43jgIHnibnmrorlrZfnrKbjgIHpnZ7ms5XlrZfnrKbvvIlcbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IudmFsaWRhdGVQYXNzd29yZFxuICogQHNpbmNlIDMuNy4wXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmxldmVsPTJdIOWvhueggeW8uuW6piAxLeWMheWQq+S4gOenjeWtl+espiAyLeWMheWQq+S4pOenjeWtl+espiAzLeWMheWQq+S4ieenjeWtl+espuOAgu+8iOWkp+WGmeWtl+avjeOAgeWwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuWtl+espu+8iVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pZ25vcmVDYXNlPWZhbHNlXSDmmK/lkKblv73nlaXlpKflsI/lhpnvvIzkuLogdHVyZSDml7bvvIzlpKflsI/lhpnlrZfmr43op4bkuLrkuIDnp43lrZfnrKZcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zcGVjaWFsPVwiIUAjJCVeJiooKS09XytbXVxcfHt9LC4vPzw+flwiXSDmlK/mjIHnmoTnibnmrorlrZfnrKZcbiAqIEByZXR1cm5zIOmqjOivgee7k+aenFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdhMTIzNDU2NzgnKTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogdHJ1ZSwgLy8g6aqM6K+B57uT5p6c77yM5qC55o2u5a+G56CB5by65bqm44CB5piv5ZCm5YyF5ZCr6Z2e5rOV5a2X56ym5b6X5Ye6XG4gKiAgIGxldmVsOiAyLCAvLyDlvLrluqbnuqfliKtcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLCAvLyDljIXlkKvmlbDlrZdcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsIC8vIOWMheWQq+Wwj+WGmeWtl+avjVxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogZmFsc2UsIC8vIOWMheWQq+Wkp+WGmeWtl+avjVxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IGZhbHNlLCAvLyDljIXlkKvnibnmrorlrZfnrKZcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogZmFsc2UgLy8g5YyF5ZCr6Z2e5rOV5a2X56ymXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdhMTIzNDU2NzgnLCB7bGV2ZWw6IDN9KTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogZmFsc2UsXG4gKiAgIGxldmVsOiAyLFxuICogICBjb250YWluZXM6IHtcbiAqICAgICBudW1iZXI6IHRydWUsXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogZmFsc2UsXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogZmFsc2UsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGZhbHNlXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdfQWHkuIDkuozkuIk0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiBmYWxzZSxcbiAqICAgbGV2ZWw6IDMsXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSxcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgdXBwZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IHRydWVcbiAqICAgfVxuICogfVxuICpcbiAqIC8vIOiHquWumuS5ieeJueauiuWtl+esplxuICogdmFsaWRhdGVQYXNzd29yZCgnX0Fh5LiA5LqM5LiJNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWUsIHNwZWNpYWw6ICdf5LiA5LqM5LiJJ30pO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiB0cnVlLFxuICogICBsZXZlbDogMyxcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLFxuICogICAgIGxvd2VyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogdHJ1ZSxcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogZmFsc2VcbiAqICAgfVxuICogfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVBhc3N3b3JkKHZhbHVlLCB7IGxldmVsID0gMiwgaWdub3JlQ2FzZSA9IGZhbHNlLCBzcGVjaWFsID0gJ1xcXFx4MjEtXFxcXHgyRlxcXFx4M0EtXFxcXHg0MFxcXFx4NUItXFxcXHg2MFxcXFx4N0ItXFxcXHg3RScgfSA9IHt9KSB7XG4gIGxldCB2YWxTdHIgPSB2YWx1ZTtcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIGlmICghY29uZmlnLmRpc2FibGVXYXJuaW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFt2YWxpZGF0ZVBhc3N3b3JkXSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLmApO1xuICAgIH1cbiAgICB2YWxTdHIgPSAnJztcbiAgfVxuXG4gIGxldCBjdXJyZW50TGV2ZWwgPSAwO1xuXG4gIC8vIOWMheWQq+aVsOWtl1xuICBjb25zdCBjb250YWluZXNOdW1iZXIgPSBoYXNOdW1iZXIodmFsU3RyKTtcbiAgLy8g5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gIGNvbnN0IGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlciA9IGhhc0xvd2VyQ2FzZUxldHRlcih2YWxTdHIpO1xuICAvLyDljIXlkKvlpKflhpnlrZfmr41cbiAgY29uc3QgY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyID0gaGFzVXBwZXJDYXNlTGV0dGVyKHZhbFN0cik7XG4gIC8vIOWMheWQq+eJueauiuWtl+esplxuICBjb25zdCBjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyID0gaGFzU3BlY2lhbENoYXJhY3Rlcih2YWxTdHIsIHNwZWNpYWwpO1xuICAvLyDljIXlkKvpnZ7ms5XlrZfnrKZcbiAgY29uc3QgY29udGFpbmVzVW5hbGxvd2FibGVDaGFyYWN0ZXIgPSBoYXNVbmFsbG93YWJsZUNoYXJhY3Rlcih2YWxTdHIsIHNwZWNpYWwpO1xuXG4gIGlmIChjb250YWluZXNOdW1iZXIpIHtcbiAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgfVxuXG4gIGlmIChpZ25vcmVDYXNlKSB7XG4gICAgLy8g5LiN5Yy65YiG5aSn5bCP5YaZXG4gICAgaWYgKGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlciB8fCBjb250YWluZXNVcHBlckNhc2VMZXR0ZXIpIHtcbiAgICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyDljLrliIblpKflsI/lhplcbiAgICBpZiAoY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyKSB7XG4gICAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgICB9XG4gICAgaWYgKGNvbnRhaW5lc1VwcGVyQ2FzZUxldHRlcikge1xuICAgICAgY3VycmVudExldmVsICs9IDE7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbnRhaW5lc1NwZWNpYWxDaGFyYWN0ZXIpIHtcbiAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgfVxuXG4gIC8vIOmqjOivgee7k+aenFxuICBjb25zdCB2YWxpZGF0ZWQgPSBjdXJyZW50TGV2ZWwgPj0gbGV2ZWwgJiYgIWNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyO1xuXG4gIHJldHVybiB7XG4gICAgdmFsaWRhdGVkLFxuICAgIGxldmVsOiBjdXJyZW50TGV2ZWwsXG4gICAgY29udGFpbmVzOiB7XG4gICAgICBudW1iZXI6IGNvbnRhaW5lc051bWJlcixcbiAgICAgIGxvd2VyQ2FzZUxldHRlcjogY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyLFxuICAgICAgdXBwZXJDYXNlTGV0dGVyOiBjb250YWluZXNVcHBlckNhc2VMZXR0ZXIsXG4gICAgICBzcGVjaWFsQ2hhcmFjdGVyOiBjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyLFxuICAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB2YWxpZGF0ZVBhc3N3b3JkO1xuIiwiaW1wb3J0IHZhbGlkYXRlUGFzc3dvcmQgZnJvbSAnLi92YWxpZGF0ZVBhc3N3b3JkJztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbnrKblkIjlr4bnoIHlvLrluqZcbiAqIDxwPjxzdHJvbmc+5rOo5oSP77ya6K+l5qCh6aqM5Y+q5qCh6aqM5piv5ZCm5a2Y5Zyo5LiN5ZCM5a2X56ymKOWkp+Wwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuespuWPtynvvIzkuI3liKTmlq3plb/luqbjgII8L3N0cm9uZz48L3A+XG4gKiA8cD48aT7lpoLmnpzpnIDopoHmm7Tnu4boh7TnmoTpqozor4HvvIzor7fkvb/nlKggPGEgaHJlZj1cIiMudmFsaWRhdGVQYXNzd29yZFwiPnZhbGlkYXRlUGFzc3dvcmQ8L2E+PC9pPjwvcD5cbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQYXNzd29yZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcmVxdWlyZXMgbW9kdWxlOlZhbGlkYXRvci52YWxpZGF0ZVBhc3N3b3JkXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZXZlbD0yXSDlr4bnoIHlvLrluqYgMS3ljIXlkKvkuIDnp43lrZfnrKYgMi3ljIXlkKvkuKTnp43lrZfnrKYgMy3ljIXlkKvkuInnp43lrZfnrKbjgILvvIjlpKflhpnlrZfmr43jgIHlsI/lhpnlrZfmr43jgIHmlbDlrZfjgIHnibnmrorlrZfnrKbvvIlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWdub3JlQ2FzZT1mYWxzZV0g5piv5ZCm5b+955Wl5aSn5bCP5YaZ77yM5Li6IHR1cmUg5pe277yM5aSn5bCP5YaZ5a2X5q+N6KeG5Li65LiA56eN5a2X56ymXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3BlY2lhbD1cIiFAIyQlXiYqKCktPV8rW11cXHx7fSwuLz88Pn5cIl0g5pSv5oyB55qE54m55q6K5a2X56ymXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm56ym5ZCI5a+G56CB5by65bqmXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUGFzc3dvcmQoJ2ExMjM0NTY3OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUGFzc3dvcmQoJ2ExMjM0NTY3OCcsIHtsZXZlbDogM30pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCdBYTEyMzQ1Njc4Jywge2xldmVsOiAzfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQYXNzd29yZCgnQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCdfQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIOS7heaUr+aMgSDmlbDlrZfjgIHlrZfmr43jgIHnibnmrorlrZfnrKbvvIzlhbbku5blrZfnrKblpoLkuK3mloflrZfnrKbmmK/moKHpqozkuI3pgJrov4fnmoRcbiAqIGlzUGFzc3dvcmQoJ19BYeS4gOS6jOS4iTQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzUGFzc3dvcmQoJyBfQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCA9IDIsIGlnbm9yZUNhc2UgPSBmYWxzZSwgc3BlY2lhbCA9ICdcXFxceDIxLVxcXFx4MkZcXFxceDNBLVxcXFx4NDBcXFxceDVCLVxcXFx4NjBcXFxceDdCLVxcXFx4N0UnIH0gPSB7fSkge1xuICByZXR1cm4gdmFsaWRhdGVQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCwgaWdub3JlQ2FzZSwgc3BlY2lhbCB9KS52YWxpZGF0ZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGFzc3dvcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5oqk54Wn5Y+3IDnkvY3vvIzljIXmi6zpppblrZfmr43lkozmlbDlrZfvvJvmlK/mjIEg5pmu6YCa5oqk54WnKEUqKeOAgeWkluS6pOaKpOeFpyhERSnjgIHlhazliqHmiqTnhacoU0Up44CB5YWs5Yqh5pmu6YCa5oqk54WnKFBFKeOAgemmmea4r+eJueWMuuaKpOeFpyhLL0tKKeOAgea+s+mXqOeJueWMuuaKpOeFpyhNQSlcbmNvbnN0IHJlZyA9IC9eKChlW1xcZGEtel0pfChkZSl8KHNlKXwocGUpfChrW1xcZGEtel0pfChrail8KG1hKSlbXFxkYS16XXs3fSQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmiqTnhaflj7dcbiAqIOaUr+aMgeaZrumAmuaKpOeFpyhFKinjgIHlpJbkuqTmiqTnhacoREUp44CB5YWs5Yqh5oqk54WnKFNFKeOAgeWFrOWKoeaZrumAmuaKpOeFpyhQRSnjgIHpppnmuK/nibnljLrmiqTnhacoSy9LSinjgIHmvrPpl6jnibnljLrmiqTnhacoTUEpXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQYXNzcG9ydFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+S4reWNjuS6uuawkeWFseWSjOWbveaKpOeFpyPkuKrkurrotYTmlpnpobV85Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95oqk54WnI+S4quS6uui1hOaWmemhtX1cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrmiqTnhaflj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQYXNzcG9ydCgnRTEyMzQ1Njc4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQYXNzcG9ydCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNQYXNzcG9ydCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGFzc3BvcnQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuY29uc3QgY2hpbmVzZURpY3Rpb25hcnkgPSB7XG4gIC8vIOWfuuacrOaxieWtl1xuICBjaGluZXNlQmFzaWM6ICdbXFx1NGUwMC1cXHU5ZmE1XScsXG5cbiAgLy8g5Z+65pys5rGJ5a2X6KGl5YWFXG4gIGNoaW5lc2VFeHRlbmQ6ICdbXFx1OWVhNi1cXHU5ZmVmXScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVQVxuICBjaGluZXNlRXh0ZW5kQTogJ1tcXHUzNDAwLVxcdTREQjVdJyxcblxuICAvLyDmsYnlrZfmianlsZVCXG4gIGNoaW5lc2VFeHRlbmRCOiAnW1xcdXsyMDAwMH0tXFx1ezJBNkQ2fV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUNcbiAgY2hpbmVzZUV4dGVuZEM6ICdbXFx1ezJBNzAwfS1cXHV7MkI3MzR9XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVRFxuICBjaGluZXNlRXh0ZW5kRDogJ1tcXHV7MkI3NDB9LVxcdXsyQjgxRH1dJyxcblxuICAvLyDmsYnlrZfmianlsZVFXG4gIGNoaW5lc2VFeHRlbmRFOiAnW1xcdXsyQjgyMH0tXFx1ezJDRUExfV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUZcbiAgY2hpbmVzZUV4dGVuZEY6ICdbXFx1ezJDRUIwfS1cXHV7MkVCRTB9XSdcbn07XG5cbmxldCBsb29zZUNoaW5lc2VSZWdFeHAgPSBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlQmFzaWMgKyAnKyc7XG5cbmxldCBjaGluZXNlUmVnRXhwID0gJ14nICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJyskJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuY29uc3Qgc3VwcG9ydFJlZ0V4cFVuaWNvZGUgPSBSZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCd1bmljb2RlJyk7XG5cbmlmIChzdXBwb3J0UmVnRXhwVW5pY29kZSkge1xuICBsb29zZUNoaW5lc2VSZWdFeHAgPSAnKD86JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRCICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRFICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEYgKyAnKSsnO1xuICBjaGluZXNlUmVnRXhwID0gJ14oPzonICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRBICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEIgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmREICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEUgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRiArICcpKyQnO1xufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuS4reaWh1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQ2hpbmVzZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzgvI0Jsb2NrTGlzdGluZ3w0LjQgTGlzdGluZyBvZiBDaGFyYWN0ZXJzIENvdmVyZWQgYnkgdGhlIFVuaWhhbiBEYXRhYmFzZX1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP44CC5aaC5p6c5Li6dHJ1Ze+8jOWPquimgeWMheWQq+S4reaWh+WNs+S4unRydWVcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrkuK3mlodcbiAqIEBleGFtcGxlXG4gKlxuICogaXNDaGluZXNlKCfmnpfmn5Dmn5AnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0NoaW5lc2UoJ+ael0EnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogLy8g5a695p2+5qih5byP77yM5Y+q6KaB5YyF5ZCr5Lit5paH5Y2z5Li6dHJ1ZVxuICogaXNDaGluZXNlKCfmnpdBJywge2xvb3NlOiB0cnVlfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNDaGluZXNlKCdB5p6XQScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNDaGluZXNlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChsb29zZSA/IGxvb3NlQ2hpbmVzZVJlZ0V4cCA6IGNoaW5lc2VSZWdFeHAsIHN1cHBvcnRSZWdFeHBVbmljb2RlID8gJ3UnIDogdW5kZWZpbmVkKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNDaGluZXNlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIGlwdjTmraPliJlcbmNvbnN0IHJlZyA9IC9eKChcXGR7MSwyfXwxXFxkXFxkfDJbMC00XVxcZHwyNVswLTVdKVxcLil7M30oXFxkezEsMn18MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC01XSkkLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLppcHY0XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNJUHY0XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6aXB2NFxuICogQGV4YW1wbGVcbiAqXG4gKiBpc0lQdjQoJzE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY0KCcyNTUuMjU1LjI1NS4yNTUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjQoJzI1Ni4yNTYuMjU2LjI1NicpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lQdjQoJzAuMCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzSVB2NCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSVB2NDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyBpcHY25q2j5YiZXG5jb25zdCByZWcgPSAvXigoKFswLTlBLUZdezEsNH06KXs3fShbMC05QS1GXXsxLDR9fDopKXwoKFswLTlBLUZdezEsNH06KXs2fSg6WzAtOUEtRl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pfDopKXwoKFswLTlBLUZdezEsNH06KXs1fSgoKDpbMC05QS1GXXsxLDR9KXsxLDJ9KXw6KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KXw6KSl8KChbMC05QS1GXXsxLDR9Oil7NH0oKCg6WzAtOUEtRl17MSw0fSl7MSwzfSl8KCg6WzAtOUEtRl17MSw0fSk/OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXszfSgoKDpbMC05QS1GXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXsyfSgoKDpbMC05QS1GXXsxLDR9KXsxLDV9KXwoKDpbMC05QS1GXXsxLDR9KXswLDN9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXsxfSgoKDpbMC05QS1GXXsxLDR9KXsxLDZ9KXwoKDpbMC05QS1GXXsxLDR9KXswLDR9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoOigoKDpbMC05QS1GXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKSkoJS4rKT8kL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6aXB2NlxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSVB2NlxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4umlwdjZcbiAqIEBleGFtcGxlXG4gKlxuICogLy8g5YaS5YiG5Y2B5YWt6L+b5Yi26KGo56S65rOVXG4gKiBpc0lQdjYoJzIwMDE6MERCODowMDAwOjAwMjM6MDAwODowODAwOjIwMEM6NDE3QScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIOWJjeWvvDDnnIHnlaVcbiAqIGlzSVB2NignMjAwMTpEQjg6MDoyMzo4OjgwMDoyMDBDOjQxN0EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJ0ZGMDE6MDowOjA6MDowOjA6MTEwMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIDDkvY3ljovnvKnooajnpLrms5VcbiAqIGlzSVB2NignRkYwMTo6MTEwMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignOjoxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCc6OicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMDowOjA6MDowOjA6MDoxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCcwOjA6MDowOjA6MDowOjAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyDlhoXltYxJUHY05Zyw5Z2A6KGo56S65rOVXG4gKiBpc0lQdjYoJzo6MTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzo6RkZGRjoxOTIuMTY4LjEuMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc0lQdjYodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0lQdjY7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gdXJs5q2j5YiZXG5jb25zdCByZWcgPSAvKCgoXmh0dHBzPzooPzpcXC9cXC8pPykoPzpbLTs6Jj1cXCtcXCQsXFx3XStAKT9bQS1aYS16MC05Li1dKyg/OjpcXGQrKT98KD86d3d3LnxbLTs6Jj1cXCtcXCQsXFx3XStAKVtBLVphLXowLTkuLV0rKSgoPzpcXC9bXFwrfiVcXC8uXFx3LV9dKik/XFw/Pyg/OlstXFwrPSY7JUAuXFx3X10qKSM/KD86W1xcd10qKSk/KSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4unVybFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVXJsXG4gKiBAc2luY2UgMy40LjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/nu5/kuIDotYTmupDlrprkvY3nrKZ857uf5LiA6LWE5rqQ5a6a5L2N56ymfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLp1cmxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVcmwoJycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1VybCgnOC44LjguOCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1VybCgnZXhhbXBsZS5jb20nKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VybCgnaHR0cDovL2V4YW1wbGUuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHBzOi8vZXhhbXBsZS5jb206ODA4MCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rlc3QvMTIzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vdGVzdC8xMjM/Zm9vPWJhcicpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1VybCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVXJsO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWfuuehgOinhOWIme+8jOeUsTE05L2N5pWw5a2X5pys5L2T56CB5ZKMMeS9jeaVsOWtl+agoemqjOeggee7hOaIkO+8jOWFtuS4reacrOS9k+eggeS7juW3puiHs+WPs+S+neasoeS4uu+8mjbkvY3pppbmrKHnmbvorrDmnLrlhbPnoIHjgIE45L2N6aG65bqP56CB44CCXG5jb25zdCBiYXNlUmVnID0gL15cXGR7MTV9JC87XG5cbi8qKlxuICog6K6h566X5qCh6aqM56CBXG4gKlxuICogQHByaXZhdGVcbiAqIEBzaW5jZSAzLjUuMFxuICogQHBhcmFtIHtzdHJpbmd9IHByZUNvZGUg6JCl5Lia5omn54Wn5YmNMTTkvY1cbiAqIEByZXR1cm5zIHtudW1iZXJ9IOagoemqjOeggVxuICovXG5mdW5jdGlvbiBzdW1DaGVja0NvZGUocHJlQ29kZSkge1xuICBsZXQgcmV0TnVtOyAvLyDmoKHpqozkvY3mlbDlrZdcblxuICBsZXQgcGogPSAxMDsgLy8gUGorMSAxMe+8jOWIneWni+S4ujEwXG5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCAxNDsgaisrKSB7XG4gICAgY29uc3Qgc2ogPSBwaiArIE51bWJlcihwcmVDb2RlW2pdKTtcbiAgICBsZXQgc2oxMCA9IHNqICUgMTA7XG4gICAgc2oxMCA9IHNqMTAgPT09IDAgPyAxMCA6IHNqMTA7XG4gICAgY29uc3QgcGoxID0gc2oxMCAqIDI7XG4gICAgcGogPSBwajEgJSAxMTtcbiAgfVxuXG4gIC8vIOWPjeaooTEw6K6h566XXG4gIGlmIChwaiA9PT0gMTAgfHwgcGogPT09IDEpIHtcbiAgICByZXROdW0gPSAxO1xuICB9IGVsc2Uge1xuICAgIHJldE51bSA9IDExIC0gcGo7XG4gIH1cblxuICByZXR1cm4gcmV0TnVtO1xufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuiQpeS4muaJp+eFp+WPt++8jOS5n+WPq+W3peWVhuazqOWGjOWPt+OAgueUsTE05L2N5pWw5a2X5pys5L2T56CB5ZKMMeS9jeaVsOWtl+agoemqjOeggee7hOaIkO+8jOWFtuS4reacrOS9k+eggeS7juW3puiHs+WPs+S+neasoeS4uu+8mjbkvY3pppbmrKHnmbvorrDmnLrlhbPnoIHjgIE45L2N6aG65bqP56CB44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNCdXNpbmVzc0xpY2Vuc2VcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3dlbmt1LmJhaWR1LmNvbS92aWV3LzE5ODczNzA0Y2MxNzU1MjcwNzIyMDg3Yy5odG1sfEdTMTXigJQyMDA2IOW3peWVhuihjOaUv+euoeeQhuW4guWcuuS4u+S9k+azqOWGjOWPt+e8luWItuinhOWImX1cbiAqIEBzaW5jZSAzLjUuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/jgILlpoLmnpzkuLp0cnVl77yM5LiN5qCh6aqM5qCh6aqM5L2N44CCXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66JCl5Lia5omn54Wn5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzUnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDk4NTUzNScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzQnVzaW5lc3NMaWNlbnNlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBwYXNzQmFzZVJ1bGUgPSBiYXNlUmVnLnRlc3QodmFsdWVTdHIpO1xuXG4gIC8vIOWuveadvuaooeW8jyDmiJYg5Z+656GA6KeE5YiZ5LiN6YCa6L+H55u05o6l6L+U5ZueXG4gIGlmIChsb29zZSB8fCAhcGFzc0Jhc2VSdWxlKSB7XG4gICAgcmV0dXJuIHBhc3NCYXNlUnVsZTtcbiAgfVxuXG4gIC8vIOWJjTE05L2NXG4gIGNvbnN0IHByZUNvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcoMCwgMTQpO1xuICAvLyDmoKHpqoznoIFcbiAgY29uc3QgbGFzdENvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcodmFsdWVTdHIubGVuZ3RoIC0gMSk7XG4gIC8vIOiuoeeul+agoemqjOeggVxuICBjb25zdCBjaGVja0NvZGUgPSBzdW1DaGVja0NvZGUocHJlQ29kZSk7XG5cbiAgcmV0dXJuIGxhc3RDb2RlID09PSBTdHJpbmcoY2hlY2tDb2RlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNCdXNpbmVzc0xpY2Vuc2U7XG4iLCIvKipcbiAqIOajgOa1i+WAvOaYr+WQpuexu+S8vFByb21pc2Xlr7nosaFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1Byb21pc2VMaWtlXG4gKiBAc2luY2UgMy44LjBcbiAqIEBwYXJhbSB7Kn0gb2JqIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuexu+S8vFByb21pc2Xlr7nosaFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQcm9taXNlTGlrZShbXSk7XG4gKiA9PiBmYWxzZVxuICpcbiAqIGlzUHJvbWlzZUxpa2Uoe3RoZW46KCk9Pnt9fSk7XG4gKiA9PiB0cnVlXG4gKlxuICogaXNQcm9taXNlTGlrZShQcm9taXNlLnJlc29sdmUoKSk7XG4gKiA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUHJvbWlzZUxpa2Uob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQcm9taXNlTGlrZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4HmraPliJlcbmNvbnN0IHJlZ0hNQ2FyZCA9IC9eW2htXXsxfShbMC05XXsxMH18WzAtOV17OH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uua4r+a+s+WxheawkeadpeW+gOWGheWcsOmAmuihjOivge+8jOS/l+ensOWbnuS5oeivgeaIluWbnuS5oeWNoeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSE1DYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/muK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4F85riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4FcbiAqL1xuZnVuY3Rpb24gaXNITUNhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnSE1DYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0hNQ2FyZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4HmraPliJnvvIzmlK/mjIHkuIDmrKHmgKfnn63mnJ/lj7Dog57or4FcbmNvbnN0IHJlZ1RXQ2FyZCA9IC9eKFxcZHs4fXxbXFxkYS16XXsxMH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuWPsOa5vuWxheawkeadpeW+gOWkp+mZhumAmuihjOivge+8jOS/l+ensOWPsOiDnuivgeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVFdDYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/lj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4F85Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4FcbiAqL1xuZnVuY3Rpb24gaXNUV0NhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnVFdDYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RXQ2FyZDtcbiIsIi8vIOacgOWkp+WuieWFqOaVsOWtl1xuZXhwb3J0IGNvbnN0IE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCA5MDA3MTk5MjU0NzQwOTkxO1xuLy8g5pyA5bCP5a6J5YWo5pWw5a2XXG5leHBvcnQgY29uc3QgTUlOX1NBRkVfSU5URUdFUiA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIHx8IC05MDA3MTk5MjU0NzQwOTkxO1xuIiwiLyoqXG4gKiDlj4LogIM6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZWZlL251bWJlci1wcmVjaXNpb24vYmxvYi9tYXN0ZXIvc3JjL2luZGV4LnRzXG4gKlxuICog6Kej5Yaz5rWu5Yqo6L+Q566X6Zeu6aKY77yM6YG/5YWN5bCP5pWw54K55ZCO5Lqn55Sf5aSa5L2N5pWw5ZKM6K6h566X57K+5bqm5o2f5aSx44CCXG4gKiDpl67popjnpLrkvovvvJoyLjMgKyAyLjQgPSA0LjY5OTk5OTk5OTk5OTk5Oe+8jDEuMCAtIDAuOSA9IDAuMDk5OTk5OTk5OTk5OTk5OThcbiAqL1xuXG5pbXBvcnQgeyBNQVhfU0FGRV9JTlRFR0VSLCBNSU5fU0FGRV9JTlRFR0VSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIOaYr+WQpuS4uuenkeWtpuiuoeaVsOazleaVsOWtl1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBudW0g5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NpZW50aWZpY051bWJlcihudW0pIHtcbiAgcmV0dXJuIC9cXGQrXFwuP1xcZCplW1xcK1xcLV0qXFxkKy9pLnRlc3QobnVtKTtcbn1cblxuLyoqXG4gKiDmiorplJnor6/nmoTmlbDmja7ovazmraNcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOi+k+WFpeaVsFxuICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MTJdIOWwj+aVsOeCueeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBleGFtcGxlXG4gKlxuICogIHN0cmlwKDAuMDk5OTk5OTk5OTk5OTk5OTgpPTAuMVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXAobnVtLCBwcmVjaXNpb24gPSAxMikge1xuICByZXR1cm4gK3BhcnNlRmxvYXQobnVtLnRvUHJlY2lzaW9uKHByZWNpc2lvbikpO1xufVxuXG4vKipcbiAqIOiuoeeul+aVsOWtl+eahOWwj+aVsOeCuemVv+W6pu+8jOaUr+aMgeenkeWtpuiusOaVsOazlVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOi+k+WFpeaVsFxuICogQHJldHVybnMge251bWJlcn0g5bCP5pWw54K56ZW/5bqmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWdpdExlbmd0aChudW0pIHtcbiAgLy8gR2V0IGRpZ2l0IGxlbmd0aCBvZiBlXG4gIGNvbnN0IGVTcGxpdCA9IG51bS50b1N0cmluZygpLnNwbGl0KC9lL2kpO1xuICBjb25zdCBsZW4gPSAoZVNwbGl0WzBdLnNwbGl0KCcuJylbMV0gfHwgJycpLmxlbmd0aCAtICsoZVNwbGl0WzFdIHx8IDApO1xuICByZXR1cm4gbGVuID4gMCA/IGxlbiA6IDA7XG59XG5cbi8qKlxuICog5oqK5bCP5pWw6L2s5oiQ5pW05pWw77yM5pSv5oyB56eR5a2m6K6h5pWw5rOV44CC5aaC5p6c5piv5bCP5pWw5YiZ5pS+5aSn5oiQ5pW05pWwXG4gKlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxvYXQyRml4ZWQobnVtKSB7XG4gIGlmICghaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIHJldHVybiBOdW1iZXIobnVtLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICcnKSk7XG4gIH1cbiAgY29uc3QgZExlbiA9IGRpZ2l0TGVuZ3RoKG51bSk7XG4gIHJldHVybiBkTGVuID4gMCA/IHN0cmlwKCtudW0gKiBNYXRoLnBvdygxMCwgZExlbikpIDogK251bTtcbn1cblxuLyoqXG4gKiDmo4DmtYvmlbDlrZfmmK/lkKbotornlYzvvIzlpoLmnpzotornlYznu5nlh7rmj5DnpLpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tCb3VuZGFyeShudW0pIHtcbiAgaWYgKCtudW0gPiBNQVhfU0FGRV9JTlRFR0VSIHx8ICtudW0gPCBNSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGlzIGJleW9uZCBib3VuZGFyeSB3aGVuIHRyYW5zZmVyIHRvIGludGVnZXIsIHRoZSByZXN1bHRzIG1heSBub3QgYmUgYWNjdXJhdGVgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiDljrvmjonlt6bovrnmlbDlrZcwXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG51bSDmlbDlrZflrZfnrKbkuLJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGVmdFplcm8obnVtKSB7XG4gIGNvbnN0IHJlZyA9IC9eKFsrLV0pPygwKykoWzAtOVxcLl0rKSQvO1xuICBjb25zdCByZXN1bHQgPSByZWcuZXhlYyhudW0pO1xuXG4gIGxldCBzaWduO1xuXG4gIGlmIChyZXN1bHQpIHtcbiAgICBzaWduID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHJldHVybiBzaWduICsgKHJlc3VsdFszXVswXSA9PT0gJy4nID8gJzAnICsgcmVzdWx0WzNdIDogcmVzdWx0WzNdKTtcbiAgfVxuXG4gIHJldHVybiBudW07XG59XG5cbi8qKlxuICog56eR5a2m6K6h5pWw5rOV6L2s5o2i5oiQ5pmu6YCa5pWw5a2XXG4gKlxuICogSmF2YVNjcmlwdOWcqOS7peS4i+aDheaZr+S8muiHquWKqOWwhuaVsOWAvOi9rOaNouS4uuenkeWtpuiuoeaVsOazle+8mlxuICogIDEu5bCP5pWw54K55YmN55qE5pWw5a2X5Liq5pWw5aSn5LqO562J5LqOMjLkvY1cbiAqICAyLuWwj+aVsOeCueWJjei+ueaYrzDvvIzlsI/mlbDngrnlkI7ljYHliIbkvY3vvIjljIXlkKvljYHliIbkvY3vvInkuYvlkI7ov57nu63pm7bnmoTkuKrmlbDlpKfkuo7nrYnkuo425LiqXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG51bSDnp5HlraborqHmlbDms5XmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOaNouWQjueahOaVsOWtl+Wtl+espuS4slxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkge1xuICBpZiAoaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIGNvbnN0IHplcm8gPSAnMCc7XG4gICAgY29uc3QgcGFydHMgPSBTdHJpbmcobnVtKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCdlJyk7XG4gICAgY29uc3QgZSA9IHBhcnRzLnBvcCgpOyAvLyDlrZjlgqjmjIfmlbBcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbCA9IE1hdGguYWJzKGUpOyAvLyDlj5bnu53lr7nlgLzvvIxsLTHlsLHmmK8w55qE5Liq5pWwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNpZ24gPSBlIC8gbDsgLy/liKTmlq3mraPotJ9cbiAgICBjb25zdCBjb2VmZl9hcnJheSA9IHBhcnRzWzBdLnNwbGl0KCcuJyk7IC8vIOWwhuezu+aVsOaMieeFp+Wwj+aVsOeCueaLhuWIhlxuXG4gICAgLy/lpoLmnpzmmK/lsI/mlbBcbiAgICBpZiAoc2lnbiA9PT0gLTEpIHtcbiAgICAgIC8v5ou85o6l5a2X56ym5Liy77yM5aaC5p6c5piv5bCP5pWw77yM5ou85o6lMOWSjOWwj+aVsOeCuVxuICAgICAgbnVtID0gemVybyArICcuJyArIG5ldyBBcnJheShsKS5qb2luKHplcm8pICsgY29lZmZfYXJyYXkuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlYyA9IGNvZWZmX2FycmF5WzFdO1xuXG4gICAgICAvL+WmguaenOaYr+aVtOaVsO+8jOWwhuaVtOaVsOmZpOesrOS4gOS9jeS5i+WklueahOmdnumbtuaVsOWtl+iuoeWFpeS9jeaVsO+8jOebuOW6lOeahOWHj+WwkTDnmoTkuKrmlbBcbiAgICAgIGlmIChsIC0gZGVjLmxlbmd0aCA8IDApIHtcbiAgICAgICAgbnVtID0gdHJpbUxlZnRaZXJvKGNvZWZmX2FycmF5WzBdICsgZGVjLnN1YnN0cmluZygwLCBsKSkgKyAnLicgKyBkZWMuc3Vic3RyaW5nKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy/mi7zmjqXlrZfnrKbkuLLvvIzlpoLmnpzmmK/mlbTmlbDvvIzkuI3pnIDopoHmi7zmjqXlsI/mlbDngrlcbiAgICAgICAgbnVtID0gY29lZmZfYXJyYXkuam9pbignJykgKyBuZXcgQXJyYXkobCAtIGRlYy5sZW5ndGggKyAxKS5qb2luKHplcm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBudW07XG59XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOYU5cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOYU5cbiAqIEBleGFtcGxlXG4gKlxuICogaXNOYU4oTmFOKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTmFOKDEpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBfaXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ051bWJlcicpICYmIGlzTmFOKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgX2lzTmFOO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSwgc2NpZW50aWZpY1RvTnVtYmVyLCBpc1NjaWVudGlmaWNOdW1iZXIgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgaXNOYU4gZnJvbSAnLi91dGlscy90eXBlL2lzTmFOJztcbmltcG9ydCB7IHRyaW1MZWZ0WmVybyB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnID0gL15bKy1dP1xcZCpcXC4/XFxkKiQvO1xuXG4vKipcbiAqIOajgOafpeaVsOWtl+aIluaVsOWtl+Wtl+espuS4slxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbnVtXG4gKiBAcmV0dXJucyDmmK/lkKbkuLrmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY2hlY2tOdW1iZXIobnVtKSB7XG4gIGlmICghKHJlZy50ZXN0KG51bSkgfHwgaXNTY2llbnRpZmljTnVtYmVyKG51bSkpIHx8IGlzTmFOKG51bSkgfHwgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmIHR5cGVvZiBudW0gIT09ICdzdHJpbmcnKSB8fCBudW0gPT09ICcnKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGludmFsaWQgcGFyYW1ldGVyLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIOaVsOWtl+i2hemZkOWmguaenOS4jeaYr+aYr+Wtl+espuS4su+8jOWPr+iDveacieW8guW4uFxuICAvLyDlpoIgMTExMTExMTExMTExMTExMTExMTExMSAvLyA9PiAxLjExMTExMTExMTExMTExMTFlKzIxXG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIGNoZWNrQm91bmRhcnkobnVtKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIOagvOW8j+WMluaVtOaVsOmDqOWIhlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gaW50U3RyIOaVsOWtl+Wtl+espuS4slxuICogQHBhcmFtIHtzdHJpbmd9IHRob3VzYW5kIOWNg+WIhuS9jeespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEludChpbnRTdHIsIHRob3VzYW5kKSB7XG4gIGxldCB0eHQgPSAnJztcbiAgaW50U3RyID0gdHJpbUxlZnRaZXJvKGludFN0cik7XG4gIGludFN0ciA9IGludFN0clswXSA9PT0gJysnID8gaW50U3RyLnN1YnN0cmluZygxKSA6IGludFN0cjsgLy8g5Y675o6JK+espuWPt1xuICBjb25zdCBuZWdhdGl2ZVN5bWJvbCA9IE51bWJlcihpbnRTdHIpIDwgMCA/ICctJyA6ICcnO1xuICBjb25zdCByZUFyciA9IG5lZ2F0aXZlU3ltYm9sID8gaW50U3RyLnN1YnN0cmluZygxKS5zcGxpdCgnJykucmV2ZXJzZSgpIDogaW50U3RyLnNwbGl0KCcnKS5yZXZlcnNlKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZUFyci5sZW5ndGg7IGkrKykge1xuICAgIHR4dCArPSByZUFycltpXSArICgoaSArIDEpICUgMyA9PT0gMCAmJiBpICsgMSAhPT0gcmVBcnIubGVuZ3RoID8gdGhvdXNhbmQgOiAnJyk7XG4gIH1cblxuICByZXR1cm4gbmVnYXRpdmVTeW1ib2wgKyB0eHQuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiDmoLzlvI/ljJblsI/mlbDpg6jliIbvvIzlpoLmnpzkvb/nlKggdG9GaXhlZO+8jOi2heWkp+mineaVsOWtl+S8muiHquWKqOiiq+aIquaWrVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVjU3RyIOWwj+aVsOeCuemDqOWIhueahOWtl+espuS4slxuICogQHBhcmFtIHtudW1iZXJ9IHByZWNpc2lvbiDkv53nlZnkvY3mlbBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNpbWFsIOWwj+aVsOeCueespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdERlYyhkZWNTdHIsIHByZWNpc2lvbiwgZGVjaW1hbCkge1xuICBpZiAocHJlY2lzaW9uID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgemVybyA9IDA7XG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoZGVjU3RyICYmIE51bWJlcihkZWNTdHIpID4gMCkge1xuICAgIGxldCB0bXBOdW0gPSBwYXJzZUZsb2F0KCcwLicgKyBkZWNTdHIpO1xuICAgIHJldCA9IHRtcE51bS50b0ZpeGVkKHByZWNpc2lvbikuc3Vic3RyaW5nKDIpO1xuICB9IGVsc2Uge1xuICAgIHJldCA9IHplcm8udG9GaXhlZChwcmVjaXNpb24pLnN1YnN0cmluZygyKTtcbiAgfVxuXG4gIHJldHVybiBkZWNpbWFsICsgcmV0O1xufVxuXG4vKipcbiAqIOagvOW8j+WMlumHkeminVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdE1vbmV5XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBudW0g6ZyA6L2s5o2i6YeR6aKdICjmnIDlpKfvvJo5MDA3MTk5MjU0NzQwOTkxIOacgOWwj++8miAtOTAwNzE5OTI1NDc0MDk5MSlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSDph5Hpop3moLzlvI/ljJbphY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbb3B0aW9ucy5wcmVjaXNpb249Ml0gLSDkv53nlZnkvY3mlbAg77yI5pyA6auY77yaMTDkvY3vvIlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zeW1ib2xdIC0g6LSn5biB56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudGhvdXNhbmQ9XCIsXCJdIC0g5Y2D5YiG5L2N56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIi5cIl0gLSDlsI/mlbDkvY3nrKblj7dcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMlueahOmHkeminVxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmlbTmlbBcbiAqIGZvcm1hdE1vbmV5KCcxMDAwJyk7XG4gKiAvLyA9PiAxLDAwMC4wMFxuICpcbiAqIC8vIOWwj+aVsO+8iOm7mOiupOS/neeVmTLkvY3lsI/mlbDvvIlcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzJyk7XG4gKiAvLyA9PiAzLDAwMC4wM1xuICpcbiAqIC8vIOS/neeVmTTkvY3lsI/mlbBcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzMDAnLCB7IHByZWNpc2lvbjogNCB9KTtcbiAqIC8vID0+IDMsMDAwLjAzMDBcbiAqXG4gKiAvLyDkv53nlZkxMOS9jeWwj+aVsFxuICogZm9ybWF0TW9uZXkoJzE1MDAuMicsIHsgcHJlY2lzaW9uOiAxMCB9KTtcbiAqIC8vID0+IDEsNTAwLjIwMDAwMDAwMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljZXkvY3nrKblj7dcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgc3ltYm9sOiAnJCcgfSk7XG4gKiAvLyA9PiAkMSwwMDAuMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljYPkvY3liIblibLnrKbvvIjpu5jorqQnLCfvvIlcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgdGhvdXNhbmQ6ICd8JyB9KTtcbiAqIC8vID0+IDF8MDAwLjAwXG4gKlxuICogLy8g6Ieq5a6a5LmJ5bCP5pWw5L2N5YiG5Ymy56ymKOm7mOiupCcuJylcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgZGVjaW1hbDogJyYnIH0pO1xuICogLy8gPT4gMSwwMDAmMDBcbiAqL1xuY29uc3QgZm9ybWF0TW9uZXkgPSAobnVtLCB7IHByZWNpc2lvbiA9IDIsIHN5bWJvbCwgdGhvdXNhbmQgPSAnLCcsIGRlY2ltYWwgPSAnLicgfSA9IHt9KSA9PiB7XG4gIC8vIOaVsOWtl+WPguaVsOS4jeato+ehru+8jOi/lOWbnuepuuWtl+espuS4slxuICAvLyBAdHMtaWdub3JlXG4gIGlmICghY2hlY2tOdW1iZXIobnVtKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOWPguaVsOinhOaVtOWMllxuICBpZiAodHlwZW9mIHByZWNpc2lvbiAhPT0gJ251bWJlcicgfHwgaXNOYU4ocHJlY2lzaW9uKSB8fCBwcmVjaXNpb24gPCAwKSB7XG4gICAgcHJlY2lzaW9uID0gMjtcbiAgfSBlbHNlIGlmIChwcmVjaXNpb24gPiAxMCkge1xuICAgIHByZWNpc2lvbiA9IDEwO1xuICB9XG4gIHN5bWJvbCA9IHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnID8gc3ltYm9sIDogJyc7XG4gIHRob3VzYW5kID0gdHlwZW9mIHRob3VzYW5kID09PSAnc3RyaW5nJyA/IHRob3VzYW5kIDogJywnO1xuICBkZWNpbWFsID0gdHlwZW9mIGRlY2ltYWwgPT09ICdzdHJpbmcnID8gZGVjaW1hbCA6ICcuJztcblxuICAvLyDovazmjaLmlbDlrZflrZfnrKbkuLLvvIzmlK/mjIHnp5HlraborrDmlbDms5VcbiAgY29uc3QgbnVtU3RyID0gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkgKyAnJztcbiAgLy8g5pW05pWw5ZKM5bCP5pWw6YOo5YiGXG4gIGNvbnN0IFtpbnRTdHIsIGRlY1N0cl0gPSBudW1TdHIuc3BsaXQoJy4nKTtcblxuICByZXR1cm4gc3ltYm9sICsgZm9ybWF0SW50KGludFN0ciwgdGhvdXNhbmQpICsgZm9ybWF0RGVjKGRlY1N0ciwgcHJlY2lzaW9uLCBkZWNpbWFsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdE1vbmV5O1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpVbmRlZmluZWRcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNVbmRlZmluZWRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpVbmRlZmluZWRcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVbmRlZmluZWQodW5kZWZpbmVkKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVW5kZWZpbmVkKHZvaWQgMClcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VuZGVmaW5lZChudWxsKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdWxsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzTnVsbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uk51bGxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdWxsKG51bGwpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdWxsKHZvaWQgMClcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVsbDtcbiIsImltcG9ydCBpc1VuZGVmaW5lZCBmcm9tICcuL2lzVW5kZWZpbmVkJztcbmltcG9ydCBpc051bGwgZnJvbSAnLi9pc051bGwnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4uiB1bmRlZmluZWQg5oiWIG51bGxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSA0LjMuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLogdW5kZWZpbmVkIOaIliBudWxsXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiBpc1VuZGVmaW5lZCh2YWx1ZSkgfHwgaXNOdWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOaWw7XG4iLCJpbXBvcnQgaXNOaWwgZnJvbSAnLi91dGlscy90eXBlL2lzTmlsJztcbmltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vKipcbiAqIOinhOaVtOWMluWtl+espuS4suOAguWmguaenOWAvOS4uiB1bmRlZmluZWQg5oiWIG51bGwg5bCG6L2s5Li656m65a2X56ym5Liy77yM5aaC5p6c5YC85LiN5piv5a2X56ym5Liy57G75Z6L5bCG6L2s5Li65a2X56ym5Liy44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iubm9ybWFsaXplU3RyaW5nXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5b6F5aSE55CG55qE5YC8XG4gKiBAcmV0dXJucyB7c3RyaW5nfSDop4TmlbTljJbnmoTlgLxcbiAqIEBleGFtcGxlXG4gKiBub3JtYWxpemVTdHJpbmcoKTsgLy8gJydcbiAqIG5vcm1hbGl6ZVN0cmluZyh1bmRlZmluZWQpOyAvLyAnJ1xuICogbm9ybWFsaXplU3RyaW5nKHZvaWQgMCk7IC8vICcnXG4gKiBub3JtYWxpemVTdHJpbmcobnVsbCk7IC8vICcnXG4gKlxuICogbm9ybWFsaXplU3RyaW5nKHRydWUpOyAvLyAndHJ1ZSdcbiAqIG5vcm1hbGl6ZVN0cmluZyhOYU4pOyAvLyAnTmFOJ1xuICogbm9ybWFsaXplU3RyaW5nKDEpOyAvLyAnMSdcbiAqIG5vcm1hbGl6ZVN0cmluZygnYScpOyAvLyAnYSdcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5nKHZhbHVlKSB7XG4gIGlmIChpc05pbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZVN0cmluZztcbiIsImltcG9ydCBub3JtYWxpemVTdHJpbmcgZnJvbSAnLi9ub3JtYWxpemVTdHJpbmcnO1xuXG4vKipcbiAqIOagvOW8j+WMlumTtuihjOWNoeWPt1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdEJhbmtDYXJkXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYW5rQ2FyZE5vIOimgeWkhOeQhueahOWtl+espuS4slxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jaGFyPVwiIFwiXSDpl7TpmpTlrZfnrKZcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9NF0g6Ze06ZqU6ZW/5bqmXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDmoLzlvI/ljJbnmoTpk7booYzljaHlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gMTnkvY3pk7booYzljaFcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwMDE4Jyk7XG4gKiAvLyA9PiA2MjI4IDQ4MDQgMDI1NiA0ODkwIDAxOFxuICpcbiAqIC8vIDE25L2N6ZO26KGM5Y2hXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MCcpO1xuICogLy8gPT4gNjIyOCA0ODA0IDAyNTYgNDg5MFxuICpcbiAqIC8vIOiEseaVj+mTtuihjOWNoVxuICogZm9ybWF0QmFua0NhcmQoJzYyMjgqKioqKioqKjg5MCcpO1xuICogLy8gPT4gNjIyOCAqKioqICoqKiogODkwXG4gKlxuICogLy8gMTbkvY3pk7booYzljaHvvIxcIi1cIumXtOmalFxuICogZm9ybWF0QmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnLCB7Y2hhcjogJy0nfSk7XG4gKiAvLyA9PiA2MjI4LTQ4MDQtMDI1Ni00ODkwXG4gKlxuICovXG5mdW5jdGlvbiBmb3JtYXRCYW5rQ2FyZChiYW5rQ2FyZE5vID0gJycsIHsgY2hhciA9ICcgJywgbGVuZ3RoID0gNCB9ID0ge30pIHtcbiAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgKC57JHtsZW5ndGh9fSlgLCAnZycpO1xuICBjb25zdCByZWdDaGFyID0gbmV3IFJlZ0V4cChgJHtjaGFyfWAsICdnJyk7XG5cbiAgY29uc3QgcmVhbFZhbHVlID0gbm9ybWFsaXplU3RyaW5nKGJhbmtDYXJkTm8pLnJlcGxhY2UocmVnQ2hhciwgJycpO1xuXG4gIGNvbnN0IG5lZWRSZW1vdmVMYXN0Q2hhciA9IHJlYWxWYWx1ZS5sZW5ndGggJSBsZW5ndGggPT09IDA7XG5cbiAgY29uc3Qgc3RyID0gcmVhbFZhbHVlLnJlcGxhY2UocmVnLCBgJDEke2NoYXJ9YCk7XG5cbiAgcmV0dXJuIG5lZWRSZW1vdmVMYXN0Q2hhciA/IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDEpIDogc3RyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRCYW5rQ2FyZDtcbiIsIi8qKlxuICog5pu/5o2i5a2X56ym77yM5bqU55So5Zy65pmv5aaC77ya6ISx5pWPXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IucmVwbGFjZUNoYXJcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciDopoHlpITnkIbnmoTlrZfnrKbkuLJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuc3RhcnQ9M10g5byA5aeL5L2N572uXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZW5kPS00XSDnu5PmnZ/kvY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jaGFyPVwiKlwiXSDmm7/mjaLlrZfnrKZcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5yZXBlYXRdIOabv+aNouWtl+espueahOmHjeWkjeasoeaVsO+8jOm7mOiupOS4uuabv+aNouWGheWuuemVv+W6pu+8jOWPr+iuvue9ruS4uuWbuuWumuWAvFxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmV4Y2x1ZGVdIOaOkumZpOWtl+espu+8jOWmguaenOaMh+WumuaOkumZpOmhue+8jHJlcGVhdOiuvue9ruaXoOaViFxuICogQHJldHVybnMge3N0cmluZ30g5aSE55CG5ZCO55qE5a2X56ymXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIOaJi+acuuWPt1xuICogcmVwbGFjZUNoYXIoJzEzMDAwMDAwMDAwJyk7XG4gKiAvLyA9PiAxMzAqKioqMDAwMFxuICpcbiAqIC8vIOi6q+S7veivgVxuICogcmVwbGFjZUNoYXIoJzEzMDcwMTE5OTMxMDMwMjI4OCcpO1xuICogLy8gPT4gMTMwKioqKioqKioqKioyMjg4XG4gKlxuICogLy8g6YKu566xXG4gKiBjb25zdCBlbWFpbCA9ICcxMjM0NUBxcS5jb20nXG4gKiByZXBsYWNlQ2hhcihlbWFpbCwge3N0YXJ0OiAyLCBlbmQ6IGVtYWlsLmluZGV4T2YoJ0AnKSwgcmVwZWF0OiA0fSk7XG4gKiAvLyA9PiAxMioqKipAcXEuY29tXG4gKlxuICogLy8g6ZO26KGM5Y2h5Y+3XG4gKiByZXBsYWNlQ2hhcignNjIyODQ4MDQwMjU2NDg5MDAxOCcsIHtzdGFydDogMCwgZW5kOiAtNCwgcmVwZWF0OiA0fSk7XG4gKiAvLyA9PiAqKioqMDAxOFxuICpcbiAqIC8vIOW4puagvOW8j+eahOmTtuihjOWNoeWPt1xuICogcmVwbGFjZUNoYXIoJzYyMjggNDgwNCAwMjU2IDQ4OTAgMDE4Jywge3N0YXJ0OiA0LCBlbmQ6IC00LCBleGNsdWRlOiAnICd9KTtcbiAqIC8vID0+IDYyMjggKioqKiAqKioqICoqKiogMDE4XG4gKlxuICogLy8g55So5oi35ZCNXG4gKiByZXBsYWNlQ2hhcign5p6X5p+Q5p+QJywge3N0YXJ0OiAxLCBlbmQ6IEluZmluaXR5LCByZXBlYXQ6IDJ9KTtcbiAqIC8vID0+IOaelyoqXG4gKiByZXBsYWNlQ2hhcign5p6X5p+QJywge3N0YXJ0OiAxLCBlbmQ6IEluZmluaXR5LCByZXBlYXQ6IDJ9KTtcbiAqIC8vID0+IOaelyoqXG4gKiByZXBsYWNlQ2hhcign5p6X5p+Q5p+Q5p+QJywge3N0YXJ0OiAxLCBlbmQ6IEluZmluaXR5LCByZXBlYXQ6IDJ9KTtcbiAqIC8vID0+IOaelyoqXG4gKlxuICovXG5mdW5jdGlvbiByZXBsYWNlQ2hhcihzdHIgPSAnJywgeyBzdGFydCA9IDMsIGVuZCA9IC00LCBjaGFyID0gJyonLCByZXBlYXQsIGV4Y2x1ZGUgfSA9IHt9KSB7XG4gIGNvbnN0IHN0ckxlbiA9IHN0ci5sZW5ndGg7XG5cbiAgLy8g5byA5aeL5L2N572u6LaF6L+Hc3Ry6ZW/5bqmXG4gIGlmIChNYXRoLmFicyhzdGFydCkgPj0gc3RyTGVuKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj0gMCA/IHN0YXJ0IDogc3RyTGVuICsgc3RhcnQ7XG4gIGVuZCA9IGVuZCA+PSAwID8gZW5kIDogc3RyTGVuICsgZW5kO1xuXG4gIC8vIOW8gOWni+S9jee9ruWkp+S6jue7k+adn+S9jee9rlxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIGxldCBtaWRkbGVTdHIgPSBzdHIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xuXG4gIGlmIChleGNsdWRlKSB7XG4gICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgW14ke2V4Y2x1ZGV9XWAsICdnJyk7XG4gICAgbWlkZGxlU3RyID0gbWlkZGxlU3RyLnJlcGxhY2UocmVnLCBjaGFyKTtcbiAgfSBlbHNlIHtcbiAgICByZXBlYXQgPSB0eXBlb2YgcmVwZWF0ID09PSAnbnVtYmVyJyAmJiByZXBlYXQgPj0gMCA/IHJlcGVhdCA6IG1pZGRsZVN0ci5sZW5ndGg7XG4gICAgbWlkZGxlU3RyID0gY2hhci5yZXBlYXQocmVwZWF0KTtcbiAgfVxuXG4gIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIHN0YXJ0KSArIG1pZGRsZVN0ciArIHN0ci5zdWJzdHJpbmcoZW5kKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVwbGFjZUNoYXI7XG4iLCJpbXBvcnQgeyBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi91dGlscy9jb25maWcnO1xuXG4vLyDnroDkvZNcbmNvbnN0IGNobk51bWJlckNoYXIgPSBbJ+mbticsICfkuIAnLCAn5LqMJywgJ+S4iScsICflm5snLCAn5LqUJywgJ+WFrScsICfkuIMnLCAn5YWrJywgJ+S5nSddO1xuY29uc3QgY2huVW5pdENoYXIgPSBbJycsICfljYEnLCAn55m+JywgJ+WNgyddO1xuXG4vLyDnuYHkvZNcbmNvbnN0IGJpZzVOdW1iZXJDaGFyID0gWyfpm7YnLCAn5aO5JywgJ+i0sCcsICflj4EnLCAn6IKGJywgJ+S8jScsICfpmYYnLCAn5p+SJywgJ+aNjCcsICfnjpYnXTtcbmNvbnN0IGJpZzVVbml0Q2hhciA9IFsnJywgJ+aLvicsICfkvbAnLCAn5LufJ107XG5cbi8vIOaVsOWtl+Wtl+espuOAgeiuoeaVsOWNleS9jVxuXG4vKipcbiAqIEB0eXBlIHtzdHJpbmdbXX1cbiAqIEBwcml2YXRlXG4gKi9cbmxldCBudW1iZXJDaGFyO1xuXG4vKipcbiAqIEB0eXBlIHtzdHJpbmdbXX1cbiAqIEBwcml2YXRlXG4gKi9cbmxldCB1bml0Q2hhcjtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgdW5pdFNlY3Rpb247XG5cbi8qKlxuICog5q+P5Liq5bCP6IqC55qE5YaF6YOo6L+b6KGM6L2s5YyWXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWN0aW9uIOaVsOWtl1xuICogQHJldHVybnMge3N0cmluZ30g6L2s5YyW55qE5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIHNlY3Rpb25Ub0NoaW5lc2Uoc2VjdGlvbikge1xuICBsZXQgc3RyID0gJycsXG4gICAgY2huc3RyID0gJycsXG4gICAgemVybyA9IGZhbHNlLCAvL3plcm/kuLrmmK/lkKbov5vooYzooaXpm7bvvIwg56ys5LiA5qyh6L+b6KGM5Y+W5L2Z55Sx5LqO5Li65Liq5L2N5pWw77yM6buY6K6k5LiN6KGl6Zu2XG4gICAgdW5pdFBvcyA9IDA7XG5cbiAgd2hpbGUgKHNlY3Rpb24gPiAwKSB7XG4gICAgLy8g5a+55pWw5a2X5Y+W5L2ZMTDvvIzlvpfliLDnmoTmlbDljbPkuLrkuKrkvY3mlbBcbiAgICBsZXQgdiA9IHNlY3Rpb24gJSAxMDtcblxuICAgIC8v5aaC5p6c5pWw5a2X5Li66Zu277yM5YiZ5a+55a2X56ym5Liy6L+b6KGM6KGl6Zu2XG4gICAgaWYgKHYgPT0gMCkge1xuICAgICAgaWYgKHplcm8pIHtcbiAgICAgICAgLy/lpoLmnpzpgYfliLDov57nu63lpJrmrKHlj5bkvZnpg73mmK8w77yM6YKj5LmI5Y+q6ZyA6KGl5LiA5Liq6Zu25Y2z5Y+vXG4gICAgICAgIHplcm8gPSBmYWxzZTtcbiAgICAgICAgY2huc3RyID0gbnVtYmVyQ2hhclt2XSArIGNobnN0cjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy/nrKzkuIDmrKHlj5bkvZnkuYvlkI7vvIzlpoLmnpzlho3mrKHlj5bkvZnkuLrpm7bvvIzliJnpnIDopoHooaXpm7ZcbiAgICAgIHplcm8gPSB0cnVlO1xuICAgICAgc3RyID0gbnVtYmVyQ2hhclt2XTtcbiAgICAgIHN0ciArPSB1bml0Q2hhclt1bml0UG9zXTtcbiAgICAgIGNobnN0ciA9IHN0ciArIGNobnN0cjtcbiAgICB9XG4gICAgdW5pdFBvcysrO1xuICAgIHNlY3Rpb24gPSBNYXRoLmZsb29yKHNlY3Rpb24gLyAxMCk7XG4gIH1cbiAgcmV0dXJuIGNobnN0cjtcbn1cblxuLyoqXG4gKiDovazmjaLmlbTmlbBcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDopoHovazmjaLnmoTmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOS4reaWh+aVsOWtl1xuICovXG5mdW5jdGlvbiBjb252ZXJ0SW50ZWdlcihudW0pIHtcbiAgbnVtID0gTWF0aC5mbG9vcihudW0pO1xuXG4gIGxldCB1bml0UG9zID0gMDtcbiAgbGV0IHN0cklucyA9ICcnLFxuICAgIGNoblN0ciA9ICcnO1xuICBsZXQgbmVlZFplcm8gPSBmYWxzZTtcblxuICBpZiAobnVtID09PSAwKSB7XG4gICAgcmV0dXJuIG51bWJlckNoYXJbMF07XG4gIH1cbiAgd2hpbGUgKG51bSA+IDApIHtcbiAgICB2YXIgc2VjdGlvbiA9IG51bSAlIDEwMDAwO1xuICAgIGlmIChuZWVkWmVybykge1xuICAgICAgY2huU3RyID0gbnVtYmVyQ2hhclswXSArIGNoblN0cjtcbiAgICB9XG4gICAgc3RySW5zID0gc2VjdGlvblRvQ2hpbmVzZShzZWN0aW9uKTtcbiAgICBzdHJJbnMgKz0gc2VjdGlvbiAhPT0gMCA/IHVuaXRTZWN0aW9uW3VuaXRQb3NdIDogdW5pdFNlY3Rpb25bMF07XG4gICAgY2huU3RyID0gc3RySW5zICsgY2huU3RyO1xuICAgIG5lZWRaZXJvID0gc2VjdGlvbiA8IDEwMDAgJiYgc2VjdGlvbiA+IDA7XG4gICAgbnVtID0gTWF0aC5mbG9vcihudW0gLyAxMDAwMCk7XG4gICAgdW5pdFBvcysrO1xuICB9XG4gIHJldHVybiBjaG5TdHI7XG59XG5cbi8qKlxuICog6L2s5o2i5bCP5pWwXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6KaB6L2s5o2i55qE5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnREZWNpbWFsKG51bSkge1xuICBjb25zdCBudW1TdHIgPSBudW0gKyAnJztcbiAgY29uc3QgaW5kZXggPSBudW1TdHIuaW5kZXhPZignLicpO1xuXG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoaW5kZXggPiAtMSkge1xuICAgIGxldCBkZWNpbWFsU3RyID0gbnVtU3RyLnNsaWNlKGluZGV4ICsgMSk7XG4gICAgcmV0ID0gbWFwTnVtYmVyQ2hhcihwYXJzZUludChkZWNpbWFsU3RyKSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOaYoOWwhOS4uuS4reaWh+aVsOWtl1xuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOimgeWkhOeQhueahOaVsOWtl1xuICogQHJldHVybnMge3N0cmluZ30g6L+U5Zue5Lit5paH5pWw5a2X55qE5pig5bCEXG4gKi9cbmZ1bmN0aW9uIG1hcE51bWJlckNoYXIobnVtKSB7XG4gIGNvbnN0IG51bVN0ciA9IG51bSArICcnO1xuICBsZXQgcmV0ID0gJyc7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG51bVN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHJldCArPSBudW1iZXJDaGFyW3BhcnNlSW50KG51bVN0cltpXSldO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmlbDlrZfovazkuK3mlofmlbDlrZdcbiAqIOS4jeWcqOWuieWFqOaVsOWtlyAtOTAwNzE5OTI1NDc0MDk5Me+9njkwMDcxOTkyNTQ3NDA5OTEg5YaF77yM5aSE55CG5Lya5pyJ5byC5bi4XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IubnVtYmVyVG9DaGluZXNlXG4gKiBAc2luY2UgMS4yLjBcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g5pWw5a2XXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5iaWc1PWZhbHNlXSDnuYHkvZNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudW5pdD10cnVlXSDorqHmlbDljZXkvY1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kZWNpbWFsPVwi54K5XCJdIOS4reaWh+Wwj+aVsOeCuVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnplcm89XCLpm7ZcIl0g6K6+572uMOOAguW4uOeUqOmFjee9riDjgIdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5uZWdhdGl2ZT1cIui0n1wiXSDotJ/mlbDliY3pnaLnmoTlrZdcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy51bml0Q29uZmlnXSDoioLngrnljZXkvY3phY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy51bml0Q29uZmlnLnc9XCLkuIdcIl0g6K6+572u6K6h5pWw5Y2V5L2N5LiH44CC5bi455So6YWN572uIOiQrFxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnVuaXRDb25maWcueT1cIuS6v1wiXSDorr7nva7orqHmlbDljZXkvY3kur/jgILluLjnlKjphY3nva4g5YSEXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDkuK3mlofmlbDlrZdcbiAqIEBleGFtcGxlXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMCk7XG4gKiAvLyA9PiDkuIDnmb5cbiAqXG4gKiBudW1iZXJUb0NoaW5lc2UoMTAwLjMpO1xuICogLy8gPT4g5LiA55m+54K55LiJXG4gKlxuICogLy8g57mB5L2TXG4gKiBudW1iZXJUb0NoaW5lc2UoMTAwLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55L2wXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMC4zLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55L2w54K55Y+BXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEyMzQ1Njc4OTAsIHtiaWc1OiB0cnVlfSk7XG4gKiAvLyA9PiDlo7nmi77otLDkur/lj4Hku5/ogobkvbDkvI3mi77pmYbkuIfmn5Lku5/mjYzkvbDnjpbmi75cbiAqXG4gKiAvLyDkuI3luKborqHmlbDljZXkvY1cbiAqIG51bWJlclRvQ2hpbmVzZSgxOTkwLCB7dW5pdDogZmFsc2V9KTtcbiAqIC8vID0+IOS4gOS5neS5nembtlxuICpcbiAqIC8vIOS4jeW4puiuoeaVsOWNleS9je+8jOS/ruaUuTBcbiAqIG51bWJlclRvQ2hpbmVzZSgxOTkwLCB7dW5pdDogZmFsc2UsIHplcm86J+OAhyd9KTtcbiAqIC8vID0+IOS4gOS5neS5neOAh1xuICpcbiAqL1xuZnVuY3Rpb24gbnVtYmVyVG9DaGluZXNlKFxuICBudW0sXG4gIHtcbiAgICBiaWc1ID0gZmFsc2UsXG4gICAgdW5pdCA9IHRydWUsXG4gICAgZGVjaW1hbCA9ICfngrknLFxuICAgIHplcm8gPSAnJyxcbiAgICBuZWdhdGl2ZSA9ICfotJ8nLFxuICAgIHVuaXRDb25maWcgPSB7XG4gICAgICB3OiAn5LiHJywgLy8gJ+iQrCdcbiAgICAgIHk6ICfkur8nIC8vICflhIQnXG4gICAgfVxuICB9ID0ge31cbikge1xuICAvLyDpnZ7mlbDlrZcg5oiWIE5hTiDkuI3lpITnkIZcbiAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInIHx8IGlzTmFOKG51bSkpIHtcbiAgICBpZiAoIWNvbmZpZy5kaXNhYmxlV2FybmluZykge1xuICAgICAgY29uc29sZS53YXJuKGDlj4LmlbDplJnor68gJHtudW1977yM6K+35Lyg5YWl5pWw5a2XYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8g6LaF6L+H5a6J5YWo5pWw5a2X5o+Q56S6XG4gIGNoZWNrQm91bmRhcnkobnVtKTtcblxuICAvLyDorr7nva7mlbDlrZflrZfnrKblkozorqHmlbDljZXkvY1cbiAgaWYgKGJpZzUpIHtcbiAgICBudW1iZXJDaGFyID0gYmlnNU51bWJlckNoYXIuc2xpY2UoKTtcbiAgICB1bml0Q2hhciA9IGJpZzVVbml0Q2hhci5zbGljZSgpO1xuICB9IGVsc2Uge1xuICAgIG51bWJlckNoYXIgPSBjaG5OdW1iZXJDaGFyLnNsaWNlKCk7XG4gICAgdW5pdENoYXIgPSBjaG5Vbml0Q2hhci5zbGljZSgpO1xuICB9XG5cbiAgLy8g6K6+572u6IqC54K56K6h5pWw5Y2V5L2N77yM5LiH44CB5Lq/44CB5LiH5Lq/XG4gIGNvbnN0IGRlZmF1bHRVbml0V2FuID0gJ+S4hyc7XG4gIGNvbnN0IGRlZmF1bHRVbml0WWkgPSAn5Lq/JztcbiAgdW5pdFNlY3Rpb24gPSBbJycsIHVuaXRDb25maWcudyB8fCBkZWZhdWx0VW5pdFdhbiwgdW5pdENvbmZpZy55IHx8IGRlZmF1bHRVbml0WWksIHVuaXRDb25maWcudyAmJiB1bml0Q29uZmlnLnkgPyB1bml0Q29uZmlnLncgKyB1bml0Q29uZmlnLnkgOiBkZWZhdWx0VW5pdFdhbiArIGRlZmF1bHRVbml0WWldO1xuXG4gIC8vIOiuvue9rjBcbiAgaWYgKHplcm8pIHtcbiAgICBudW1iZXJDaGFyWzBdID0gemVybztcbiAgfVxuXG4gIC8vIOWJjee9ruWtl+espu+8jOi0n+aVsOWkhOeQhlxuICBjb25zdCBwcmVTdHIgPSBudW0gPCAwID8gbmVnYXRpdmUgOiAnJztcblxuICAvLyDmlbTmlbDlkozlsI/mlbBcbiAgbGV0IGNobkludGVnZXIsIGNobkRlY2ltYWw7XG5cbiAgLy8g5aSE55CG5pW05pWwXG4gIGlmICh1bml0KSB7XG4gICAgY2huSW50ZWdlciA9IGNvbnZlcnRJbnRlZ2VyKG51bSk7XG4gIH0gZWxzZSB7XG4gICAgY2huSW50ZWdlciA9IG1hcE51bWJlckNoYXIoTWF0aC5mbG9vcihudW0pKTtcbiAgfVxuXG4gIC8vIOWkhOeQhuWwj+aVsFxuICBjaG5EZWNpbWFsID0gY29udmVydERlY2ltYWwobnVtKTtcblxuICByZXR1cm4gY2huRGVjaW1hbCA/IGAke3ByZVN0cn0ke2NobkludGVnZXJ9JHtkZWNpbWFsfSR7Y2huRGVjaW1hbH1gIDogYCR7cHJlU3RyfSR7Y2huSW50ZWdlcn1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBudW1iZXJUb0NoaW5lc2U7XG4iLCIvKipcbiAqIOWtl+iKgui9rOaNouWtmOWCqOWNleS9je+8jOS/neeVmTLkvY3lsI/mlbDngrlcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5ieXRlc1RvU2l6ZVxuICogQHNpbmNlIDMuOC4wXG4gKiBAcGFyYW0ge251bWJlcn0gYnl0ZXMg5a2X6IqC5aSn5bCPXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDlrZjlgqjljZXkvY3lgLxcbiAqIEBleGFtcGxlXG4gKlxuICogYnl0ZXNUb1NpemUoMCk7XG4gKiAvLyA9PiAwIEJcbiAqXG4gKiBieXRlc1RvU2l6ZSgxMDI0KTtcbiAqIC8vID0+IDEgS0JcbiAqXG4gKiBieXRlc1RvU2l6ZSgzLjIxMzI0MyoxMDI0KjEwMjQpO1xuICogLy8gPT4gMy4yMSBNQlxuICpcbiAqIGJ5dGVzVG9TaXplKDEwMjQqMTAyNCoxMDI0KTtcbiAqIC8vID0+IDEgR0JcbiAqL1xuZnVuY3Rpb24gYnl0ZXNUb1NpemUoYnl0ZXMpIHtcbiAgaWYgKGJ5dGVzID09PSAwKSByZXR1cm4gJzAgQic7XG4gIGNvbnN0IGsgPSAxMDI0O1xuICAvLyDlrZjlgqjljZXkvY1cbiAgY29uc3Qgc2l6ZXMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcbiAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuXG4gIHJldHVybiBzaXplc1tpXSA/IGAke051bWJlcigoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSl9ICR7c2l6ZXNbaV19YCA6IGJ5dGVzICsgJyc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ5dGVzVG9TaXplO1xuIiwiaW1wb3J0IGlzSWRDYXJkIGZyb20gJy4vaXNJZENhcmQnO1xuXG5jb25zdCByZWdJZENhcmQgPSAvXig/PHByb3ZpbmNlPlxcZHsyfSkoPzxjaXR5PlxcZHsyfSkoPzxhcmVhPlxcZHsyfSkoPzx5ZWFyPig/OlxcZHsyfSk/XFxkezJ9KSg/PG1vbnRoPlxcZHsyfSkoPzxkYXk+XFxkezJ9KVxcZHsyfSg/PGdlbmRlcj5cXGQpKD86XFxkfFgpPyQvaTtcblxuY29uc3QgUHJvdmluY2VzID0gW1xuICAvLyDljY7ljJflnLDljLrvvJrljJfkuqzluIJ8MTEwMDAw77yM5aSp5rSl5biCfDEyMDAwMO+8jOays+WMl+ecgXwxMzAwMDDvvIzlsbHopb/nnIF8MTQwMDAw77yM5YaF6JKZ5Y+k6Ieq5rK75Yy6fDE1MDAwMFxuICBbJzExJywgJ+WMl+S6rOW4giddLFxuICBbJzEyJywgJ+Wkqea0peW4giddLFxuICBbJzEzJywgJ+ays+WMl+ecgSddLFxuICBbJzE0JywgJ+Wxseilv+ecgSddLFxuICBbJzE1JywgJ+WGheiSmeWPpOiHquayu+WMuiddLFxuXG4gIC8vIOS4nOWMl+WcsOWMuu+8miDovr3lroHnnIF8MjEwMDAw77yM5ZCJ5p6X55yBfDIyMDAwMO+8jOm7kem+meaxn+ecgXwyMzAwMDBcbiAgWycyMScsICfovr3lroHnnIEnXSxcbiAgWycyMicsICflkInmnpfnnIEnXSxcbiAgWycyMycsICfpu5HpvpnmsZ/nnIEnXSxcblxuICAvLyDljY7kuJzlnLDljLrvvJog5LiK5rW35biCfDMxMDAwMO+8jOaxn+iLj+ecgXwzMjAwMDDvvIzmtZnmsZ/nnIF8MzMwMDAw77yM5a6J5b6955yBfDM0MDAwMO+8jOemj+W7uuecgXwzNTAwMDDvvIzmsZ/opb/nnIF8MzYwMDAw77yM5bGx5Lic55yBfDM3MDAwMFxuICBbJzMxJywgJ+S4iua1t+W4giddLFxuICBbJzMyJywgJ+axn+iLj+ecgSddLFxuICBbJzMzJywgJ+a1meaxn+ecgSddLFxuICBbJzM0JywgJ+WuieW+veecgSddLFxuICBbJzM1JywgJ+emj+W7uuecgSddLFxuICBbJzM2JywgJ+axn+ilv+ecgSddLFxuICBbJzM3JywgJ+WxseS4nOecgSddLFxuXG4gIC8vIOWNjuS4reWcsOWMuu+8miDmsrPljZfnnIF8NDEwMDAw77yM5rmW5YyX55yBfDQyMDAwMO+8jOa5luWNl+ecgXw0MzAwMDBcbiAgWyc0MScsICfmsrPljZfnnIEnXSxcbiAgWyc0MicsICfmuZbljJfnnIEnXSxcbiAgWyc0MycsICfmuZbljZfnnIEnXSxcblxuICAvLyDljY7ljZflnLDljLrvvJrlub/kuJznnIF8NDQwMDAw77yM5bm/6KW/5aOu5peP6Ieq5rK75Yy6fDQ1MDAwMO+8jOa1t+WNl+ecgXw0NjAwMDBcbiAgWyc0NCcsICflub/kuJznnIEnXSxcbiAgWyc0NScsICflub/opb/lo67ml4/oh6rmsrvljLonXSxcbiAgWyc0NicsICfmtbfljZfnnIEnXSxcblxuICAvLyDopb/ljZflnLDljLrvvJrph43luobluIJ8NTAwMDAw77yM5Zub5bed55yBfDUxMDAwMO+8jOi0teW3nuecgXw1MjAwMDDvvIzkupHljZfnnIF8NTMwMDAw77yM6KW/6JeP6Ieq5rK75Yy6fDU0MDAwMFxuICBbJzUwJywgJ+mHjeW6huW4giddLFxuICBbJzUxJywgJ+Wbm+W3neecgSddLFxuICBbJzUyJywgJ+i0teW3nuecgSddLFxuICBbJzUzJywgJ+S6keWNl+ecgSddLFxuICBbJzU0JywgJ+ilv+iXj+iHquayu+WMuiddLFxuXG4gIC8vIOilv+WMl+WcsOWMuu+8miDpmZXopb/nnIF8NjEwMDAw77yM55SY6IKD55yBfDYyMDAwMO+8jOmdkua1t+ecgXw2MzAwMDDvvIzlroHlpI/lm57ml4/oh6rmsrvljLp8NjQwMDAw77yM5paw55aG57u05ZC+5bCU6Ieq5rK75Yy6fDY1MDAwMFxuICBbJzYxJywgJ+mZleilv+ecgSddLFxuICBbJzYyJywgJ+eUmOiCg+ecgSddLFxuICBbJzYzJywgJ+mdkua1t+ecgSddLFxuICBbJzY0JywgJ+WugeWkj+WbnuaXj+iHquayu+WMuiddLFxuICBbJzY1JywgJ+aWsOeWhue7tOWQvuWwlOiHquayu+WMuiddLFxuXG4gIC8vIOWPsOa5vuWcsOWMuu+8muWPsOa5vuecgXw3MTAwMDBcbiAgLy8g5Y+w5rm+5bGF5rCR5YWs5rCR6Lqr5Lu95Y+356CB5Zyw5Z2A56CB5Li6ODMwMDAw77yM5Y+C6ICDIGh0dHA6Ly93d3cud2Fud2VpYmFpa2UuY29tL3dpa2kt5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu96KGM5pS/5Yy65YiS5Luj56CBXyg35Yy6KeOAgWh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+a4r+a+s+WPsOWxheawkeWxheS9j+ivgVxuICBbJzcxJywgJ+WPsOa5vuecgSddLFxuICBbJzgzJywgJ+WPsOa5vuecgSddLFxuXG4gIC8vIOa4r+a+s+WcsOWMuu+8mummmea4r+eJueWIq+ihjOaUv+WMunw4MTAwMDDvvIzmvrPpl6jnibnliKvooYzmlL/ljLp8ODIwMDAwXG4gIFsnODEnLCAn6aaZ5riv54m55Yir6KGM5pS/5Yy6J10sXG4gIFsnODInLCAn5r6z6Zeo54m55Yir6KGM5pS/5Yy6J11cbl07XG5cbi8vIOesrOS4gOS9jeaVsOWtl+aYr+S7peWJjeeahOWkp+WMuuWItuS7o+eggeOAguesrOS6jOS9jeaYr+Wkp+WMuuaJgOWcqOecgeW4gue8lueggeOAguWFqOWbveWFseWIhuS4ujjkuKrlpKfljLrvvJrljY7ljJfvvIgx77yJ44CB5Lic5YyX77yIMu+8ieOAgeWNjuS4nO+8iDPvvInjgIHkuK3ljZfvvIg077yJ44CB6KW/5Y2X77yINe+8ieOAgeilv+WMl++8iDbvvInjgIHlj7Dmub7vvIg377yJ5ZKM5riv5r6z77yIOO+8ieOAglxuLy8gY29uc3QgUmVnaW9ucyA9IFtcbi8vICAgWycxJywgJ+WNjuWMl+WcsOWMuiddLFxuLy8gICBbJzInLCAn5Lic5YyX5Zyw5Yy6J10sXG4vLyAgIFsnMycsICfljY7kuJzlnLDljLonXSxcbi8vICAgWyc0JywgJ+S4reWNl+WcsOWMuiddLFxuLy8gICBbJzUnLCAn6KW/5Y2X5Zyw5Yy6J10sXG4vLyAgIFsnNicsICfopb/ljJflnLDljLonXSxcbi8vICAgWyc3JywgJ+WPsOa5vuWcsOWMuiddLFxuLy8gICBbJzgnLCAn5riv5r6z5Zyw5Yy6J11cbi8vIF07XG5cbi8qKlxuICog6Kej5p6Q6Lqr5Lu96K+B5Y+356CB77yM5pSv5oyBMTXjgIExOOS9jei6q+S7veivgeWPt+eggVxuICogXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5wYXJzZUlkQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE15L2NXG4gKiBAcmV0dXJucyBudWxsIOaIliDnnIHku73jgIHnlJ/ml6XjgIHmgKfliKvvvIznnIEv5biCL+WMui/lubQv5pyIL+aXpS/mgKfliKvnvJbnoIFcbiAqIEBleGFtcGxlXG4gKiBwYXJzZUlkQ2FyZCgnMTIzNDU2Nzg5MTIzNDU2Jyk7XG4gKiAvLyA9PiBudWxsXG4gKiBcbiAqIC8vIDE45L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBwYXJzZUlkQ2FyZCgnMTMwNzAxMTk5MzEwMzAyMjg4JylcbiAqIC8vID0+XG4gKiB7XG4gIGJpcnRoZGF5OiBcIjE5OTMtMTAtMzBcIixcbiAgZ2VuZGVyOiBcIuWls1wiLFxuICBvcmlnaW46IHsgcHJvdmluY2U6IFwiMTNcIiwgY2l0eTogXCIwN1wiLCBhcmVhOiBcIjAxXCIsIHllYXI6IFwiMTk5M1wiLCBtb250aDogXCIxMFwiLCBkYXk6IFwiMzBcIiwgZ2VuZGVyOiBcIjhcIiB9LFxuICBwcm92aW5jZTogXCLmsrPljJfnnIFcIlxufVxuICogLy8gMTXkvY3ouqvku73or4Hlj7fnoIFcbiAqIHBhcnNlSWRDYXJkKCcxMzA3MDE5MzEwMzAyMjgnKTtcbiAqIC8vID0+XG4gKiB7XG4gIGJpcnRoZGF5OiBcIjkzLTEwLTMwXCIsXG4gIGdlbmRlcjogXCLlpbNcIixcbiAgb3JpZ2luOiB7IHByb3ZpbmNlOiBcIjEzXCIsIGNpdHk6IFwiMDdcIiwgYXJlYTogXCIwMVwiLCB5ZWFyOiBcIjkzXCIsIG1vbnRoOiBcIjEwXCIsIGRheTogXCIzMFwiLCBnZW5kZXI6IFwiOFwiIH0sXG4gIHByb3ZpbmNlOiBcIuays+WMl+ecgVwiXG59XG4gKiBcbiAqL1xuZnVuY3Rpb24gcGFyc2VJZENhcmQoaWQpIHtcbiAgaWYgKCFpc0lkQ2FyZChpZCwgeyBsb29zZTogdHJ1ZSB9KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaW5mbyA9IHJlZ0lkQ2FyZC5leGVjKGlkKTtcblxuICBpZiAoIWluZm8pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7eyBwcm92aW5jZTogc3RyaW5nLCBjaXR5OiBzdHJpbmcsIGFyZWE6IHN0cmluZywgeWVhcjogc3RyaW5nLCBtb250aDogc3RyaW5nLCBkYXk6IHN0cmluZywgZ2VuZGVyOiBzdHJpbmcgfX1cbiAgICpcbiAgICovXG4gIGxldCBvcmlnaW4gPSB7XG4gICAgcHJvdmluY2U6ICcnLFxuICAgIGNpdHk6ICcnLFxuICAgIGFyZWE6ICcnLFxuICAgIHllYXI6ICcnLFxuICAgIG1vbnRoOiAnJyxcbiAgICBkYXk6ICcnLFxuICAgIGdlbmRlcjogJydcbiAgfTtcblxuICBpZiAoaW5mby5ncm91cHMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luID0gaW5mby5ncm91cHM7XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luID0ge1xuICAgICAgcHJvdmluY2U6IGluZm9bMV0sXG4gICAgICBjaXR5OiBpbmZvWzJdLFxuICAgICAgYXJlYTogaW5mb1szXSxcbiAgICAgIHllYXI6IGluZm9bNF0sXG4gICAgICBtb250aDogaW5mb1s1XSxcbiAgICAgIGRheTogaW5mb1s2XSxcbiAgICAgIGdlbmRlcjogaW5mb1s3XVxuICAgIH07XG4gIH1cblxuICBjb25zdCBwcm92aW5jZSA9IFByb3ZpbmNlcy5maW5kKChpdGVtKSA9PiBpdGVtWzBdID09PSBvcmlnaW4ucHJvdmluY2UpO1xuXG4gIGlmICghcHJvdmluY2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGJpcnRoZGF5ID0gYCR7b3JpZ2luLnllYXJ9LSR7b3JpZ2luLm1vbnRofS0ke29yaWdpbi5kYXl9YDtcbiAgY29uc3QgZ2VuZGVyID0gTnVtYmVyKG9yaWdpbi5nZW5kZXIpICUgMiA9PT0gMCA/ICflpbMnIDogJ+eUtyc7XG4gIC8vIGNvbnN0IHJlZ2lvbiA9IFJlZ2lvbnMuZmluZChpdGVtID0+IGl0ZW1bMF0gPT09IG9yaWdpbi5wcm92aW5jZT8uc3Vic3RyaW5nKDAsIDEpKTtcblxuICByZXR1cm4ge1xuICAgIC8vIHJlZ2lvbixcbiAgICBwcm92aW5jZTogcHJvdmluY2VbMV0sXG4gICAgYmlydGhkYXksXG4gICAgZ2VuZGVyLFxuICAgIG9yaWdpblxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBwYXJzZUlkQ2FyZDtcbiIsIi8vICBmaWxl44CBYmxvYuaWh+S7tuWmguS9lemihOiniOWbvueJh++8n1xuLy8gIOaWueazlTHvvJrlsIZmaWxl5oiW6ICFYmxvYuexu+Wei+aWh+S7tui9rOaIkGJhc2U2NOaVsOaNru+8jOWGjeS9nOS4unNyY+i1i+WAvOe7mWltZ+agh+etvlxuLy8gIOaWueazlTLvvJrkvb/nlKggd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikg5Li6YmxvYuOAgWZpbGUg5Yib5bu65LiA5Liq5oyH5ZCR6K+l5Y+C5pWw5a+56LGh55qEVVJMXG5cbi8qKlxuICog5bCGIEJsb2Ig5oiWIEZpbGUg5a+56LGh6L2s5oiQIGRhdGE6VVJMIOagvOW8j+eahCBCYXNlNjQg5a2X56ym5Liy44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuYmxvYlRvRGF0YVVSTFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0FQSS9GaWxlUmVhZGVyL3JlYWRBc0RhdGFVUkx8RmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMKCl9XG4gKiBAc2luY2UgNC4xLjBcbiAqIEBwYXJhbSB7QmxvYn0gYmxvYiBCbG9iIOaIliBGaWxlIOWvueixoVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gZGF0YTpVUkwg5qC85byP55qEIEJhc2U2NCDlrZfnrKbkuLLjgIJcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBhRmlsZVBhcnRzID0gWyc8YSBpZD1cImFcIj48YiBpZD1cImJcIj5oZXkhPC9iPjwvYT4nXTsgLy8g5LiA5Liq5YyF5ZCrRE9NU3RyaW5n55qE5pWw57uEXG4gKiBjb25zdCBodG1sQmxvYiA9IG5ldyBCbG9iKGFGaWxlUGFydHMsIHsgdHlwZTogJ3RleHQvaHRtbCcgfSk7IC8vIOW+l+WIsCBibG9iXG4gKlxuICogYmxvYlRvRGF0YVVSTChodG1sQmxvYikudGhlbihkYXRhPT57XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpOyAvLyBkYXRhOnRleHQvaHRtbDtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIH0pO1xuICpcbiAqIGNvbnN0IHRleHRCbG9iID0gbmV3IEJsb2IoYUZpbGVQYXJ0cywgeyB0eXBlOiAndGV4dC9wbGFpbicgfSk7XG4gKlxuICogYmxvYlRvRGF0YVVSTCh0ZXh0QmxvYikudGhlbihkYXRhPT57XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpOyAvLyBkYXRhOnRleHQvcGxhaW47YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gYmxvYlRvRGF0YVVSTChibG9iKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XG4gICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHJlamVjdChlcnJvcik7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBibG9iVG9EYXRhVVJMO1xuIiwiLyoqXG4gKiDlsIYgRGF0YVVSTCDovazkuLogQmxvYiDlr7nosaFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5kYXRhVVJMVG9CbG9iXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9HbG9zc2FyeS9CYXNlNjR8QmFzZTY0fVxuICogQHNpbmNlIDQuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YXVybCBkYXRhOiDljY/orq7nmoRVUkxcbiAqIEByZXR1cm5zIHtCbG9ifSBCbG9iIOWvueixoVxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGRhdGF1cmwgPSAnZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9JztcbiAqIGRhdGFVUkxUb0Jsb2IoZGF0YXVybCk7XG4gKi9cbmZ1bmN0aW9uIGRhdGFVUkxUb0Jsb2IoZGF0YXVybCkge1xuICBjb25zdCBhcnIgPSBkYXRhdXJsLnNwbGl0KCcsJyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbWltZSA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pWzFdO1xuICBjb25zdCBic3RyID0gYXRvYihhcnJbMV0pO1xuICBsZXQgbiA9IGJzdHIubGVuZ3RoO1xuICBjb25zdCB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuXG4gIHdoaWxlIChuLS0pIHtcbiAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcbiAgfVxuICByZXR1cm4gbmV3IEJsb2IoW3U4YXJyXSwgeyB0eXBlOiBtaW1lIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRhVVJMVG9CbG9iO1xuIiwiLyoqXG4gKiDorr7nva4gRGF0YVVSTCDliY3nvIDjgIFNSU1FIOexu+Wei+OAgWJhc2U2NCDmoIfor4bjgII8YnIvPjxici8+XG4gKlxuICog5aaC5p6c5L2g6ZyA6KaB6I635Y+WRGF0YVVSTCDnmoQgTUlNRSDnsbvlnovlkozmlbDmja7mnKzouqvvvIzmjqjojZDkvb/nlKggPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2RhdGEtdXJsc1wiPmRhdGEtdXJsczwvYT7jgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5zZXREYXRhVVJMUHJlZml4XG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9EYXRhX1VSSXN8RGF0YSBVUkxzfVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdnLm9yZy8jdW5kZXJzdGFuZGluZy1taW1lLXR5cGVzfE1JTUUgdHlwZXN9XG4gKiBAc2luY2UgNC4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIOaVsOaNruacrOi6q1xuICogQHBhcmFtIHtzdHJpbmd9IFttaW1ldHlwZT1cImltYWdlL3BuZ1wiXSBNSU1FIOexu+Wei1xuICogQHBhcmFtIHtib29sZWFufSBbYmFzZTY0PXRydWVdIOa3u+WKoCBiYXNlNjQg5qCH6K+GXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBEYXRhVVJMIOagvOW8j+eahOWtl+espuS4slxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGRhdGEgPSAnUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND0nO1xuICogc2V0RGF0YVVSTFByZWZpeChkYXRhKTsgLy8gZGF0YTppbWFnZS9wbmc7YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiBzZXREYXRhVVJMUHJlZml4KGRhdGEsICdpbWFnZS9wbmcnLCBmYWxzZSk7IC8vIGRhdGE6aW1hZ2UvcG5nLFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiBzZXREYXRhVVJMUHJlZml4KGRhdGEsICdpbWFnZS9qcGcnKTsgLy8gZGF0YTppbWFnZS9qcGc7YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiBzZXREYXRhVVJMUHJlZml4KGRhdGEsICd0ZXh0L2h0bWwnKTsgLy8gZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiBzZXREYXRhVVJMUHJlZml4KGRhdGEsICcnKTsgLy8gZGF0YTo7YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiBzZXREYXRhVVJMUHJlZml4KGRhdGEsICcnLCBmYWxzZSk7IC8vIGRhdGE6LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKi9cbmZ1bmN0aW9uIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgbWltZXR5cGUgPSAnaW1hZ2UvcG5nJywgYmFzZTY0ID0gdHJ1ZSkge1xuICByZXR1cm4gYGRhdGE6JHttaW1ldHlwZX0ke2Jhc2U2NCA/ICc7YmFzZTY0JyA6ICcnfSwke2RhdGF9YDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0RGF0YVVSTFByZWZpeDtcbiIsImltcG9ydCBpc1R5cGUgZnJvbSAnLi9pc1R5cGUnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4uk51bWJlclxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VHlwZS5pc051bWJlclxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uk51bWJlclxuICogQGV4YW1wbGVcbiAqXG4gKiBpc051bWJlcigxKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdW1iZXIoSW5maW5pdHkpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdW1iZXIoTmFOKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKCcxJylcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdOdW1iZXInKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOdW1iZXI7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCwgZmxvYXQyRml4ZWQsIGNoZWNrQm91bmRhcnkgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgeyBpc051bWJlciwgaXNOYU4sIGlzU3RyaW5nIH0gZnJvbSAnLi91dGlscy90eXBlJztcblxuLyoqXG4gKiDnsr7noa7kuZjms5XvvIzmlK/mjIHlpJrkuKrmlbDnm7jkuZhcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk1hdGgudGltZXNcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOebuOS5mOeahOaVsFxuICogQHJldHVybnMge251bWJlcn0g5LmY56evXG4gKiBAZXhhbXBsZVxuICpcbiAqIHRpbWVzKDMsIDAuNik7XG4gKiAvLyA9PiAxLjhcbiAqXG4gKiB0aW1lcygzLCAwLjYsIDIpO1xuICogLy8gPT4gMy42XG4gKlxuICogdGltZXMoMywgMC42LCAyLCAxMCk7XG4gKiAvLyA9PiAzNlxuICovXG5mdW5jdGlvbiB0aW1lcyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gdGltZXModGltZXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgbnVtMUNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0xKTtcbiAgY29uc3QgbnVtMkNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0yKTtcbiAgY29uc3QgYmFzZU51bSA9IGRpZ2l0TGVuZ3RoKG51bTEpICsgZGlnaXRMZW5ndGgobnVtMik7XG4gIGNvbnN0IGxlZnRWYWx1ZSA9IG51bTFDaGFuZ2VkICogbnVtMkNoYW5nZWQ7XG5cbiAgY2hlY2tCb3VuZGFyeShsZWZ0VmFsdWUpO1xuXG4gIHJldHVybiBsZWZ0VmFsdWUgLyBNYXRoLnBvdygxMCwgYmFzZU51bSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRpbWVzO1xuIiwiaW1wb3J0IHsgZGlnaXRMZW5ndGggfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgdGltZXMgZnJvbSAnLi90aW1lcyc7XG5pbXBvcnQgeyBpc051bWJlciwgaXNOYU4sIGlzU3RyaW5nIH0gZnJvbSAnLi91dGlscy90eXBlJztcblxuLyoqXG4gKiDnsr7noa7liqDms5XvvIzmlK/mjIHlpJrkuKrmlbDnm7jliqBcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk1hdGgucGx1c1xuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg55u45Yqg55qE5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDmgLvlkoxcbiAqIEBleGFtcGxlXG4gKlxuICogcGx1cygwLjEsIDAuMik7XG4gKiAvLyA9PiAwLjNcbiAqXG4gKiBwbHVzKDAuMSwgMC4yLCAwLjMpO1xuICogLy8gPT4gMC42XG4gKlxuICogcGx1cygwLjEsIDAuMiwgMC4zLCAwLjQpO1xuICogLy8gPT4gMVxuICovXG5mdW5jdGlvbiBwbHVzKC4uLm51bXMpIHtcbiAgY29uc3QgW251bTEsIG51bTIsIC4uLnJlc3RdID0gbnVtcztcblxuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHBsdXMocGx1cyhudW0xLCBudW0yKSwgLi4ucmVzdCk7XG4gIH1cblxuICAvLyDlhbzlrrnlpITnkIbvvIzlpoLmnpznrKwy5Liq5Y+C5pWw5Li66Z2e5pWw5a2X5oiW5a2X56ym5Liy5pe277yM6L+U5Zue56ys5LiA5Liq5Y+C5pWwXG4gIGlmICgoIWlzTnVtYmVyKG51bTIpIHx8IGlzTmFOKG51bTIpKSAmJiAhaXNTdHJpbmcobnVtMikpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG51bTE7XG4gIH1cblxuICBjb25zdCBiYXNlTnVtID0gTWF0aC5wb3coMTAsIE1hdGgubWF4KGRpZ2l0TGVuZ3RoKG51bTEpLCBkaWdpdExlbmd0aChudW0yKSkpO1xuICByZXR1cm4gKHRpbWVzKG51bTEsIGJhc2VOdW0pICsgdGltZXMobnVtMiwgYmFzZU51bSkpIC8gYmFzZU51bTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGx1cztcbiIsImltcG9ydCB7IGRpZ2l0TGVuZ3RoIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5YeP5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45YePXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLm1pbnVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gbnVtcyDnm7jlh4/nmoTmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOW3rlxuICogQGV4YW1wbGVcbiAqXG4gKiBtaW51cygxLCAwLjkpO1xuICogLy8gPT4gMC4xXG4gKlxuICogbWludXMoMSwgMC45LCAwLjAyKTtcbiAqIC8vID0+IDAuMDhcbiAqXG4gKiBtaW51cygxLCAwLjksIDAuMDIsIDAuMDgpO1xuICogLy8gPT4gMFxuICovXG5mdW5jdGlvbiBtaW51cyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG5cbiAgaWYgKHJlc3QubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBtaW51cyhtaW51cyhudW0xLCBudW0yKSwgLi4ucmVzdCk7XG4gIH1cblxuICAvLyDlhbzlrrnlpITnkIbvvIzlpoLmnpznrKwy5Liq5Y+C5pWw5Li66Z2e5pWw5a2X5oiW5a2X56ym5Liy5pe277yM6L+U5Zue56ys5LiA5Liq5Y+C5pWwXG4gIGlmICgoIWlzTnVtYmVyKG51bTIpIHx8IGlzTmFOKG51bTIpKSAmJiAhaXNTdHJpbmcobnVtMikpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG51bTE7XG4gIH1cblxuICBjb25zdCBiYXNlTnVtID0gTWF0aC5wb3coMTAsIE1hdGgubWF4KGRpZ2l0TGVuZ3RoKG51bTEpLCBkaWdpdExlbmd0aChudW0yKSkpO1xuICByZXR1cm4gKHRpbWVzKG51bTEsIGJhc2VOdW0pIC0gdGltZXMobnVtMiwgYmFzZU51bSkpIC8gYmFzZU51bTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWludXM7XG4iLCJpbXBvcnQgeyBzdHJpcCwgZGlnaXRMZW5ndGgsIGZsb2F0MkZpeGVkLCBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu6Zmk5rOV77yM5pSv5oyB5aSa5Liq5pWw55u46ZmkXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLmRpdmlkZVxuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg6Zmk5pWw5ZKM6KKr6Zmk5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDllYbmlbBcbiAqIEBleGFtcGxlXG4gKlxuICogZGl2aWRlKDEuMjEsIDEuMSk7XG4gKiAvLyA9PiAxLjFcbiAqXG4gKiBkaXZpZGUoMTAwMCwgMTAsIDEwKTtcbiAqIC8vID0+IDEwXG4gKlxuICogZGl2aWRlKDEwMDAsIDEwLCAxMCwgMTApO1xuICogLy8gPT4gMVxuICovXG5mdW5jdGlvbiBkaXZpZGUoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuXG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZGl2aWRlKGRpdmlkZShudW0xLCBudW0yKSwgLi4ucmVzdCk7XG4gIH1cblxuICAvLyDlhbzlrrnlpITnkIbvvIzlpoLmnpznrKwy5Liq5Y+C5pWw5Li66Z2e5pWw5a2X5oiW5a2X56ym5Liy5pe277yM6L+U5Zue56ys5LiA5Liq5Y+C5pWwXG4gIGlmICgoIWlzTnVtYmVyKG51bTIpIHx8IGlzTmFOKG51bTIpKSAmJiAhaXNTdHJpbmcobnVtMikpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG51bTE7XG4gIH1cblxuICBjb25zdCBudW0xQ2hhbmdlZCA9IGZsb2F0MkZpeGVkKG51bTEpO1xuICBjb25zdCBudW0yQ2hhbmdlZCA9IGZsb2F0MkZpeGVkKG51bTIpO1xuICBjaGVja0JvdW5kYXJ5KG51bTFDaGFuZ2VkKTtcbiAgY2hlY2tCb3VuZGFyeShudW0yQ2hhbmdlZCk7XG4gIC8vIGZpeDog57G75Ly8IDEwICoqIC00IOS4uiAwLjAwMDA5OTk5OTk5OTk5OTk5OTk577yMc3RyaXAg5L+u5q2jXG4gIHJldHVybiB0aW1lcyhudW0xQ2hhbmdlZCAvIG51bTJDaGFuZ2VkLCBzdHJpcChNYXRoLnBvdygxMCwgZGlnaXRMZW5ndGgobnVtMikgLSBkaWdpdExlbmd0aChudW0xKSkpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGl2aWRlO1xuIiwiaW1wb3J0IGRpdmlkZSBmcm9tICcuL2RpdmlkZSc7XG5pbXBvcnQgdGltZXMgZnJvbSAnLi90aW1lcyc7XG5cbi8qKlxuICog5Zub6IiN5LqU5YWl77yM5pSv5oyB6K6+572u57K+5bqmXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnJvdW5kXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOimgeWbm+iIjeS6lOWFpeeahOaVsOWtl1xuICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0g5Zub6IiN5LqU5YWl55qE57K+5bqmXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlm5voiI3kupTlhaXnmoTmlbDlrZdcbiAqIEBleGFtcGxlXG4gKlxuICogcm91bmQoNC4wMDYpO1xuICogLy8gPT4gNFxuICpcbiAqIHJvdW5kKDQuMDA2LCAyKTtcbiAqIC8vID0+IDQuMDFcbiAqXG4gKiByb3VuZCg0MDYwLCAtMik7XG4gKiAvLyA9PiA0MTAwXG4gKi9cbmZ1bmN0aW9uIHJvdW5kKG51bSwgcHJlY2lzaW9uID0gMCkge1xuICBjb25zdCBiYXNlID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gIHJldHVybiBkaXZpZGUoTWF0aC5yb3VuZCh0aW1lcyhudW0sIGJhc2UpKSwgYmFzZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJvdW5kO1xuIiwiLyoqXG4gKiDnrYnlvoXml7bpl7Tov5Tlm54gUHJvbWlzZSDjgILluLjnlKjkuo7lvILmraXmlrnms5XkuK3lu7bml7bjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk90aGVyLndhaXRUaW1lXG4gKiBAc2luY2UgNC4yLjBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZT0xMDAwXSDlu7bml7bml7bpl7TvvIzljZXkvY3mr6vnp5JcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHRlc3QgPSBhc3luYyAoKT0+e1xuICogICBhd2FpdCB3YWl0VGltZSgpO1xuICogICAvLyBkbyBzb21ldGhpbmdcbiAqIH1cbiAqXG4gKiB3YWl0VGltZSg1MDApLnRoZW4oKCk9PntcbiAqICAgLy8gZG8gc29tZXRoaW5nXG4gKiB9KVxuICovXG5mdW5jdGlvbiB3YWl0VGltZSh0aW1lID0gMTAwMCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2FpdFRpbWU7XG4iXSwibmFtZXMiOlsicmVnIiwicmVnSWRDYXJkIiwiYmFzZVJlZyIsInN1bUNoZWNrQ29kZSIsImlz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O0VBQzVCOztFQ3REQTtFQUNBLE1BQU1BLEtBQUcsR0FBRyx1S0FBdUssQ0FBQztBQUNwTDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUU7RUFDdEIsRUFBRSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDMUMsRUFBRSxPQUFPQSxLQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQzVCOztFQ3RDQTtFQUNBLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUMzQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7RUFDL0IsRUFBRSxJQUFJLE1BQU0sQ0FBQztBQUNiO0VBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZDtFQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtFQUMvQixJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdkMsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0VBQ3ZCLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztFQUNsQyxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7RUFDekIsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztFQUNsQixHQUFHO0FBQ0g7RUFDQTtFQUNBLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUU7RUFDN0IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQ2YsR0FBRyxNQUFNO0VBQ1QsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztFQUNyQixHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sTUFBTSxDQUFDO0VBQ2hCLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQzFELEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0VBQ0EsRUFBRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlDO0VBQ0E7RUFDQSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO0VBQzlCLElBQUksT0FBTyxZQUFZLENBQUM7RUFDeEIsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQzVDO0VBQ0EsRUFBRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDM0Q7RUFDQSxFQUFFLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQztFQUNBLEVBQUUsT0FBTyxRQUFRLEtBQUssTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0VBQ3hDOztFQ2xGQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsYUFBYSxDQUFDLEdBQUcsRUFBRTtFQUM1QixFQUFFLE9BQU8sR0FBRyxLQUFLLElBQUksS0FBSyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztFQUNsSDs7RUNuQkE7RUFDQSxNQUFNLFNBQVMsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNuRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0VBQ3pCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ2xDOztFQ2hCQTtFQUNBLE1BQU0sU0FBUyxHQUFHLHdCQUF3QixDQUFDO0FBQzNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7RUFDekIsRUFBRSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDMUMsRUFBRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEM7O0VDbEJBO0VBQ08sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUM7RUFDNUU7RUFDTyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGdCQUFnQjs7RUNINUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDTyxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtFQUN4QyxFQUFFLE9BQU8sdUJBQXVCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUU7RUFDM0MsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztFQUNqRCxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDTyxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7RUFDakM7RUFDQSxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDNUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztFQUN6RSxFQUFFLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0VBQzNCLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtFQUNqQyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtFQUMzQyxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDbkQsR0FBRztFQUNILEVBQUUsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ2hDLEVBQUUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0VBQzVELENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDTyxTQUFTLGFBQWEsQ0FBQyxHQUFHLEVBQUU7RUFDbkMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLGdCQUFnQixJQUFJLENBQUMsR0FBRyxHQUFHLGdCQUFnQixFQUFFO0VBQzFELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUU7RUFDaEMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsNkVBQTZFLENBQUMsQ0FBQyxDQUFDO0VBQzFHLEtBQUs7RUFDTCxHQUFHO0VBQ0gsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxZQUFZLENBQUMsR0FBRyxFQUFFO0VBQ2xDLEVBQUUsTUFBTSxHQUFHLEdBQUcseUJBQXlCLENBQUM7RUFDeEMsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CO0VBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQztBQUNYO0VBQ0EsRUFBRSxJQUFJLE1BQU0sRUFBRTtFQUNkLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7RUFDM0IsSUFBSSxPQUFPLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdkUsR0FBRztBQUNIO0VBQ0EsRUFBRSxPQUFPLEdBQUcsQ0FBQztFQUNiLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7RUFDeEMsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO0VBQzFDLElBQUksTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDO0VBQ3JCLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN2RCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztFQUMxQjtFQUNBLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMxQjtFQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN2QixJQUFJLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUM7RUFDQTtFQUNBLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUU7RUFDckI7RUFDQSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ3hFLEtBQUssTUFBTTtFQUNYLE1BQU0sTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDO0VBQ0E7RUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0VBQzlCLFFBQVEsR0FBRyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMxRixPQUFPLE1BQU07RUFDYjtFQUNBLFFBQVEsR0FBRyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzlFLE9BQU87RUFDUCxLQUFLO0VBQ0wsR0FBRztFQUNIO0VBQ0EsRUFBRSxPQUFPLEdBQUcsQ0FBQztFQUNiOztFQ25JQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtFQUN2QixFQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDakQ7O0VDZkEsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLENBQUM7QUFDL0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtFQUMxQixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUlJLE1BQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTtFQUN2SSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO0VBQ2hDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztFQUNoRCxLQUFLO0FBQ0w7RUFDQSxJQUFJLE9BQU8sS0FBSyxDQUFDO0VBQ2pCLEdBQUc7QUFDSDtFQUNBO0VBQ0E7RUFDQSxFQUFFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO0VBQy9CLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ3ZCLEdBQUc7QUFDSDtFQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7RUFDZCxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtFQUNyQyxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztFQUNmLEVBQUUsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNoQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0VBQzVELEVBQUUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO0VBQ3ZELEVBQUUsTUFBTSxLQUFLLEdBQUcsY0FBYyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdEc7RUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0VBQ3pDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0VBQ3BGLEdBQUc7QUFDSDtFQUNBLEVBQUUsT0FBTyxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDM0QsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUU7RUFDL0MsRUFBRSxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7RUFDdkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztFQUNkLEdBQUc7QUFDSDtFQUNBLEVBQUUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0VBQ2pCLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2Y7RUFDQSxFQUFFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7RUFDcEMsSUFBSSxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0VBQzNDLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2pELEdBQUcsTUFBTTtFQUNULElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQy9DLEdBQUc7QUFDSDtFQUNBLEVBQUUsT0FBTyxPQUFPLEdBQUcsR0FBRyxDQUFDO0VBQ3ZCLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VB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RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsY0FBYyxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDMUUsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7RUFDaEQsRUFBRSxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QztFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckU7RUFDQSxFQUFFLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzdEO0VBQ0EsRUFBRSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7RUFDQSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7RUFDckU7O0VDM0NBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VB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RSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0FBQ2hCO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUNuQixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQ2pCO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMs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
|
|
2467
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXJzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvdHlwZS9pc1R5cGUuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc1N0cmluZy5qcyIsIi4uL3NyYy91dGlscy9jb252ZXJ0VG9TdHJpbmcuanMiLCIuLi9zcmMvaXNNb2JpbGUuanMiLCIuLi9zcmMvaXNUZWxlcGhvbmUuanMiLCIuLi9zcmMvaXNQb3N0Y29kZS5qcyIsIi4uL3NyYy9pc0lkQ2FyZC5qcyIsIi4uL3NyYy9pc0VtYWlsLmpzIiwiLi4vc3JjL2lzUVEuanMiLCIuLi9zcmMvaXNXWC5qcyIsIi4uL3NyYy9pc1ZlaGljbGUuanMiLCIuLi9zcmMvaXNCYW5rQ2FyZC5qcyIsIi4uL3NyYy9pc1NvY2lhbENyZWRpdENvZGUuanMiLCIuLi9zcmMvdXRpbHMvY29uZmlnLmpzIiwiLi4vc3JjL3ZhbGlkYXRlUGFzc3dvcmQuanMiLCIuLi9zcmMvaXNQYXNzd29yZC5qcyIsIi4uL3NyYy9pc1Bhc3Nwb3J0LmpzIiwiLi4vc3JjL2lzQ2hpbmVzZS5qcyIsIi4uL3NyYy9pc0lQdjQuanMiLCIuLi9zcmMvaXNJUHY2LmpzIiwiLi4vc3JjL2lzVXJsLmpzIiwiLi4vc3JjL2lzQnVzaW5lc3NMaWNlbnNlLmpzIiwiLi4vc3JjL2lzUHJvbWlzZUxpa2UuanMiLCIuLi9zcmMvaXNITUNhcmQuanMiLCIuLi9zcmMvaXNUV0NhcmQuanMiLCIuLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwiLi4vc3JjL3V0aWxzL21hdGgudXRpbC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTmFOLmpzIiwiLi4vc3JjL2Zvcm1hdE1vbmV5LmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNVbmRlZmluZWQuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc051bGwuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc05pbC5qcyIsIi4uL3NyYy9ub3JtYWxpemVTdHJpbmcuanMiLCIuLi9zcmMvZm9ybWF0QmFua0NhcmQuanMiLCIuLi9zcmMvcmVwbGFjZUNoYXIuanMiLCIuLi9zcmMvbnVtYmVyVG9DaGluZXNlLmpzIiwiLi4vc3JjL2J5dGVzVG9TaXplLmpzIiwiLi4vc3JjL3BhcnNlSWRDYXJkLmpzIiwiLi4vc3JjL2Jsb2JUb0RhdGFVUkwuanMiLCIuLi9zcmMvZGF0YVVSTFRvQmxvYi5qcyIsIi4uL3NyYy9zZXREYXRhVVJMUHJlZml4LmpzIiwiLi4vc3JjL3NhZmVEYXRlLmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNOdW1iZXIuanMiLCIuLi9zcmMvdGltZXMuanMiLCIuLi9zcmMvcGx1cy5qcyIsIi4uL3NyYy9taW51cy5qcyIsIi4uL3NyYy9kaXZpZGUuanMiLCIuLi9zcmMvcm91bmQuanMiLCIuLi9zcmMvd2FpdFRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIOajgOa1i+WAvOeahCBgdG9TdHJpbmdgIOexu+Wei1xuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5qOA5p+l5YC8XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZW5hbWUg57G75Z6L5ZCN56ewXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g6L+U5Zue5YC855qEIGB0b1N0cmluZ2Ag57G75Z6L5piv5ZCm5Yy56YWNXG4gKi9cbmZ1bmN0aW9uIGlzVHlwZSh2YWx1ZSwgdHlwZW5hbWUpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBgW29iamVjdCAke3R5cGVuYW1lfV1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1R5cGU7XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpTdHJpbmdcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNTdHJpbmdcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpTdHJpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogaXNTdHJpbmcoJ2FiYycpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNTdHJpbmcoMSlcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdTdHJpbmcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTdHJpbmc7XG4iLCJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi90eXBlL2lzU3RyaW5nJztcblxuLyoqXG4gKiDovazmjaLkuLrlrZfnrKbkuLJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIOWAvFxuICogQHJldHVybnMge3N0cmluZ30g5a2X56ym5LiyXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb252ZXJ0VG9TdHJpbmc7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5omL5py65Y+356CBIDEx5L2N5pWw5a2X77yM5LulMeW8gOWktO+8jOesrOS6jOS9jeaYrzM0NTY3ODnlhbbkuK3kuIDkuKrvvIzlkI7pnaLlho3liqA55Liq5pWw5a2XXG5jb25zdCByZWcgPSAvXjFbMzQ1Njc4OV1cXGR7OX0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmiYvmnLrlj7fnoIFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc01vYmlsZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuaJi+acuuWPt+eggVxuICogQGV4YW1wbGVcbiAqXG4gKiBpc01vYmlsZSgnMTMwMDAwMDAwMDAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc01vYmlsZSgnMTMwMDAnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc01vYmlsZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTW9iaWxlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWbuuWumueUteivnSDmlK/mjIHljLrlj7flkozliIbmnLrlj7cgM++9njTkvY3ljLrlj7fvvIzku6Uw5byA5aS077ybN++9njjkvY3nm7Tmkq3lj7fvvIzku6Uy772eOeW8gOWktO+8mzHvvZ425L2N5YiG5py65Y+3XG5jb25zdCByZWcgPSAvXigwXFxkezIsM31cXC0pPyhbMi05XVxcZHs2LDd9KShcXC1cXGR7MSw2fSk/JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65Zu65a6a55S16K+dXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNUZWxlcGhvbmVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrlm7rlrprnlLXor51cbiAqIEBleGFtcGxlXG4gKlxuICogaXNUZWxlcGhvbmUoJzIyMDMzMjEyJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNUZWxlcGhvbmUoJzAyMS0yMjAzMzIxMicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVGVsZXBob25lKCcwMjEtMjIwMzMyMTItMTIzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNUZWxlcGhvbmUoJzEzMDAwMDAwMDAwJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNUZWxlcGhvbmUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RlbGVwaG9uZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDpgq7mlL/nvJbnoIFcbmNvbnN0IHJlZyA9IC9eXFxkezZ9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66YKu5pS/57yW56CB77yMNuS9jeaVsOWtl1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUG9zdGNvZGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrpgq7mlL/nvJbnoIFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQb3N0Y29kZSgnMTAxMTExJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQb3N0Y29kZSgnMTIzJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNQb3N0Y29kZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUG9zdGNvZGU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6Lqr5Lu96K+B5Y+35q2j5YiZXG5jb25zdCByZWdJZENhcmQgPSAvXlsxLTldXFxkezV9KDE5fDIwKT9cXGR7Mn0oKDBbMS05XSl8KDFbMDEyXSkpKChbMC0yXVsxLTldKXwxMHwyMHwzMHwzMSlcXGR7M30oXFxkfFgpPyQvaTtcblxuLyoqXG4gKiDmoKHpqoznoIHorqHnrpdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+S4reWNjuS6uuawkeWFseWSjOWbveWFrOawkei6q+S7veWPt+eggXzkuK3ljY7kurrmsJHlhbHlkozlm73lhazmsJHouqvku73lj7fnoIF9XG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+eggVxuICogQHJldHVybnMg5qCh6aqM56CB5piv5ZCm5q2j56GuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrKGlkKSB7XG4gIGxldCBpbmRleCwgc3VtLCBudW07XG4gIGZvciAoc3VtID0gaW5kZXggPSAwOyBpbmRleCA8IDE3OyBpbmRleCsrKSB7XG4gICAgc3VtICs9IChNYXRoLnBvdygyLCAxNyAtIGluZGV4KSAlIDExKSAqIE51bWJlcihpZFtpbmRleF0pO1xuICB9XG4gIG51bSA9ICgxMiAtIChzdW0gJSAxMSkpICUgMTE7XG4gIGlmIChudW0gPCAxMCkge1xuICAgIHJldHVybiBudW0gPT09IE51bWJlcihpZFsxN10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpZFsxN10gPT0gJ1gnO1xuICB9XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6MTjkvY3ouqvku73or4Hlj7fnoIHjgII8YnIvPuWuveadvuaooeW8j+S4i++8jOaUr+aMgTE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNJZENhcmRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/vvIzmlK/mjIExNeS9jei6q+S7veivgeWPt+eggVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jaGVja0NvZGU9dHJ1ZV0g5piv5ZCm5qCh6aqM5pyA5ZCO5LiA5L2N5qCh6aqM56CB77yM5LuF5pSv5oyBMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrouqvku73or4Hlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSWRDYXJkKCcxMzA3MDExOTkzMTAzMDIyOFgnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4WCcsIHsgY2hlY2tDb2RlOiBmYWxzZSB9KTsgLy8g5LiN5qCh6aqM5qCh6aqM56CBXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJZENhcmQoJzMyMDMxMTc3MDcwNjAwMScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lkQ2FyZCgnMzIwMzExNzcwNzA2MDAxJywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzSWRDYXJkKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UsIGNoZWNrQ29kZSA9IHRydWUgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgaWYgKHZhbHVlU3RyLmxlbmd0aCA9PT0gMTUgJiYgbG9vc2UpIHtcbiAgICByZXR1cm4gcmVnSWRDYXJkLnRlc3QodmFsdWVTdHIpO1xuICB9XG5cbiAgaWYgKHZhbHVlU3RyLmxlbmd0aCA9PT0gMTggJiYgcmVnSWRDYXJkLnRlc3QodmFsdWVTdHIpKSB7XG4gICAgaWYgKGNoZWNrQ29kZSkge1xuICAgICAgcmV0dXJuIGNoZWNrKHZhbHVlU3RyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSWRDYXJkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOmCrueusVxuY29uc3QgcmVnID0gL15bXFxkYS16XSsoW1xcLVxcLlxcX10/W1xcZGEtel0rKSpAW1xcZGEtel0rKFtcXC1cXC5dP1tcXGRhLXpdKykqKFxcLlthLXpdezIsfSkrJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4ukVtYWlsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNFbWFpbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4ukVtYWlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzRW1haWwoJzEyMzJAcXEuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNFbWFpbCgnMTIzQCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzRW1haWwodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0VtYWlsO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIFFR5Y+35q2j5YiZXG5jb25zdCByZWcgPSAvXlsxLTldXFxkezQsMTB9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6UVHlj7fvvIzpnZ4w5byA5aS077yMNeiHszEx5L2N5pWw5a2XXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNRUVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4ulFR5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUVEoJzEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNRUSgnMTIzJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNRUSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUVE7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5b6u5L+h5Y+3IDboh7MyMOS9je+8jOS7peWtl+avjeW8gOWktO+8jOWtl+avje+8jOaVsOWtl++8jOWHj+WPt++8iOi/nuaOpeespu+8ie+8jOS4i+WIkue6v1xuY29uc3QgcmVnID0gL15bYS16XShbLV9hLXowLTldezUsMTl9KSskL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65b6u5L+h5Y+3XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNXWFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuW+ruS/oeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1dYKCdhMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1dYKCcxMjMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1dYKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNXWDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDovabniYzlj7fmraPliJlcbmNvbnN0IHJlZyA9IC9eW+S6rOa0peayqua4neWGgOixq+S6kei+vem7kea5mOealumygeaWsOiLj+a1mei1o+mEguahgueUmOaZi+iSmemZleWQiemXvei0teeypOmdkuiXj+W3neWugeeQvOS9v+mihkEtWl17MX1bQS1aXXsxfSgoW0EtWjAtOV17NH1bQS1aMC055oyC5a2m6K2m5riv5r6zXXsxfSl8KFtBLVowLTldezV9W0RGXSl8KFtERl1bQS1aMC05XXs1fSkpJC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66L2m54mM5Y+377yM5pSv5oyB5paw6IO95rqQ5ZKM6Z2e5paw6IO95rqQ6L2m54mMXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNWZWhpY2xlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/ovabniYzlj7d86L2m54mM5Y+3fVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uui9pueJjOWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1ZlaGljbGUoJ+S6rEwxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQkQxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQkYxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQjEyMzQ1RCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQjEyMzQ1RicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNWZWhpY2xlKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNWZWhpY2xlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOmdnjDlvIDlpLTvvIwxMH4yMeS9jeaVsOWtl1xuY29uc3QgcmVnID0gL15bMS05XVxcZHs5LDIwfSQvO1xuXG4vLyA4fjMw5L2N5pWw5a2XXG5jb25zdCByZWdMb29zZSA9IC9eXFxkezgsMzB9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66ZO26KGM5Y2h5Y+344CC5q2j5bi45qih5byP77yI6Z2eMOW8gOWktO+8jDEwfjIx5L2N5pWw5a2X77yJ5a695p2+5qih5byP77yIOH4zMOS9jeaVsOWtl++8iVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQmFua0NhcmRcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2tmLnFxLmNvbS9mYXEvMTcwMTEyQUJubTZiMTcwMTEyRnZxdUFuLmh0bWx85bi455So6ZO26KGM6LSm5Y+35L2N5pWw5Y+C6ICDfVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j++8jDh+MzDkvY3mlbDlrZdcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrpk7booYzljaHlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MDAxOCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0JhbmtDYXJkKCcxMjM0NTY3ODknKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCYW5rQ2FyZCgnMTIzNDU2Nzg5JywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzQmFua0NhcmQodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuXG4gIGlmIChsb29zZSkge1xuICAgIHJldHVybiByZWdMb29zZS50ZXN0KHZhbHVlU3RyKTtcbiAgfVxuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0JhbmtDYXJkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWfuuehgOinhOWIme+8jOeUsTE45L2N5pWw5a2X5ZKM5aSn5YaZ5a2X5q+N57uE5oiQ77yM5LiN5L2/55SoSeOAgU/jgIFa44CBU+OAgVbjgIJcbmNvbnN0IGJhc2VSZWcgPSAvXltcXGRBLUhKLU5QUVJUVVdYWV17Mn1cXGR7Nn1bXFxkQS1ISi1OUFFSVFVXWFldezEwfSQvO1xuXG4vLyDln7rnoYDlrZfnrKbnu4TmiJBcbmNvbnN0IGJhc2VDb2RlQXJyID0gJzAxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSVFVXWFknLnNwbGl0KCcnKTtcblxuLy/liqDmnYPlm6DlrZBcbmNvbnN0IHdlaWdodEZhY3RvciA9IFsxLCAzLCA5LCAyNywgMTksIDI2LCAxNiwgMTcsIDIwLCAyOSwgMjUsIDEzLCA4LCAyNCwgMTAsIDMwLCAyOF07XG5cbi8qKlxuICog6I635Y+W5a2X56ym5L2N572uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIOWtl+esplxuICogQHJldHVybnMge251bWJlcn0g5a2X56ym5omA5Zyo5Z+656GA5a2X56ym55qE5L2N572uXG4gKi9cbmZ1bmN0aW9uIGdldEJhc2VDb2RlSW5kZXgoY29kZSkge1xuICBsZXQgcmV0O1xuXG4gIGJhc2VDb2RlQXJyLnNvbWUoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0gPT09IGNvZGUpIHtcbiAgICAgIHJldCA9IGluZGV4O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOiuoeeul+agoemqjOeggVxuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVDb2RlIOe7n+S4gOS7o+eggeWJjTE35L2NXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDmoKHpqoznoIFcbiAqL1xuZnVuY3Rpb24gc3VtQ2hlY2tDb2RlKHByZUNvZGUpIHtcbiAgLy8gY29uc3QgcHJlQ29kZUFyciA9IHByZUNvZGUuc3BsaXQoJycpO1xuXG4gIGxldCB0b3RhbCA9IDA7XG5cbiAgLy8g6K6h566X5a2X56ym5L2N572u5a+55bqU5bqP5Y+35ZKM5Yqg5p2D5Zug5a2Q55qE5LmY56ev77yM5oC75ZKMXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTc7IGkrKykge1xuICAgIC8vIOWtl+espuS9jee9ruWvueW6lOeahOWfuuehgOe8lueggeW6j+WPt1xuICAgIGNvbnN0IGluZGV4ID0gZ2V0QmFzZUNvZGVJbmRleChwcmVDb2RlW2ldKTtcbiAgICAvLyDliqDmnYPlm6DlrZBcbiAgICBjb25zdCB3ZiA9IHdlaWdodEZhY3RvcltpXTtcbiAgICAvLyDorqHnrpfluo/lj7flkozliqDmnYPlm6DlrZDnmoTkuZjnp6/vvIzlubborqHnrpfnuqfmlbDkuYvlkoxcbiAgICB0b3RhbCArPSBpbmRleCAqIHdmO1xuICB9XG5cbiAgLy8g6K6h566X5pW05pWw5rGC5L2Z5Ye95pWwTU9EXG4gIGNvbnN0IHJlbWFpbmRlciA9IHRvdGFsICUgMzE7XG4gIC8vIOagoemqjOeggeWtl+espuWAvOW6j+WPt1xuICBjb25zdCBjaGVja0NvZGVJbmRleCA9IDMxIC0gcmVtYWluZGVyO1xuXG4gIHJldHVybiBiYXNlQ29kZUFycltjaGVja0NvZGVJbmRleF07XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li657uf5LiA56S+5Lya5L+h55So5Luj56CB77yM5Lmf5Y+r5LiJ6K+B5ZCI5LiA57uE57uH5Luj56CB44CC55SxMTjkvY3mlbDlrZflkozlpKflhpnlrZfmr43nu4TmiJDvvIzkuI3kvb/nlKhJ44CBT+OAgVrjgIFT44CBVuOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzU29jaWFsQ3JlZGl0Q29kZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXNvdXJjZS5vcmcvemgtaGFucy9HQl8zMjEwMC0yMDE1X+azleS6uuWSjOWFtuS7lue7hOe7h+e7n+S4gOekvuS8muS/oeeUqOS7o+eggee8lueggeinhOWImXxHQiAzMjEwMC0yMDE1IOazleS6uuWSjOWFtuS7lue7hOe7h+e7n+S4gOekvuS8muS/oeeUqOS7o+eggee8lueggeinhOWImX1cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/jgILlpoLmnpzkuLp0cnVl77yM5LiN5qCh6aqM5qCh6aqM5L2N44CCXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li657uf5LiA56S+5Lya5L+h55So5Luj56CBXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzU29jaWFsQ3JlZGl0Q29kZSgnOTEzNTAxMDBNMDAwMTAwWTQzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNTb2NpYWxDcmVkaXRDb2RlKCc5MTM1MDEwME0wMDAxMDBZNEEnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogLy8g5a695p2+5qih5byP77yM5LiN5qCh6aqM5qCh6aqM5L2N44CC5omA5Lul5Lmf5Y+v5Lul6YCa6L+HXG4gKiBpc1NvY2lhbENyZWRpdENvZGUoJzkxMzUwMTAwTTAwMDEwMFk0QScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNTb2NpYWxDcmVkaXRDb2RlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBwYXNzQmFzZVJ1bGUgPSBiYXNlUmVnLnRlc3QodmFsdWVTdHIpO1xuXG4gIC8vIOWuveadvuaooeW8jyDmiJYg5Z+656GA6KeE5YiZ5LiN6YCa6L+H55u05o6l6L+U5ZueXG4gIGlmIChsb29zZSB8fCAhcGFzc0Jhc2VSdWxlKSB7XG4gICAgcmV0dXJuIHBhc3NCYXNlUnVsZTtcbiAgfVxuXG4gIC8vIOWJjTE35L2NXG4gIGNvbnN0IHByZUNvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcoMCwgMTcpO1xuICAvLyDmoKHpqoznoIFcbiAgY29uc3QgbGFzdENvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcodmFsdWVTdHIubGVuZ3RoIC0gMSk7XG4gIC8vIOiuoeeul+agoemqjOeggVxuICBjb25zdCBjaGVja0NvZGUgPSBzdW1DaGVja0NvZGUocHJlQ29kZSk7XG5cbiAgcmV0dXJuIGxhc3RDb2RlID09PSBjaGVja0NvZGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU29jaWFsQ3JlZGl0Q29kZTtcbiIsImNvbnN0IGNvbmZpZyA9IHtcbiAgLy8g56aB55Sod2FybmluZ+aPkOekulxuICBkaXNhYmxlV2FybmluZzogdHJ1ZVxufTtcblxuLyoqXG4gKiDorr7nva7npoHmraJ3YXJuaW5n5o+Q56S6XG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOkRlYnVnLmZvcm1hdEJhbmtDYXJkXG4gKiBAc2luY2UgMy42LjFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9vbCDmmK/lkKbnpoHmraJ3YXJuaW5n5o+Q56S6XG4gKi9cbmZ1bmN0aW9uIHNldERpc2FibGVXYXJuaW5nKGJvb2wpIHtcbiAgY29uZmlnLmRpc2FibGVXYXJuaW5nID0gISFib29sO1xufVxuXG5leHBvcnQgeyBjb25maWcsIHNldERpc2FibGVXYXJuaW5nIH07XG4iLCJpbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5cbmNvbnN0IHJlZ051bWJlciA9IC9bXFxkXS87XG5jb25zdCByZWdMb3dlckNhc2VMZXR0ZXIgPSAvW2Etel0vO1xuY29uc3QgcmVnVXBwZXJDYXNlTGV0dGVyID0gL1tBLVpdLztcbmNvbnN0IHJlZ0FsbE51bWJlckFuZExldHRlciA9IC9bXFxkfGEtel0vZ2k7XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5pWw5a2XXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5p+l55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIGhhc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ051bWJlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gKi9cbmZ1bmN0aW9uIGhhc0xvd2VyQ2FzZUxldHRlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ0xvd2VyQ2FzZUxldHRlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKi9cbmZ1bmN0aW9uIGhhc1VwcGVyQ2FzZUxldHRlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ1VwcGVyQ2FzZUxldHRlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5Li65Y2B5YWt6L+b5Yi2XG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li65Y2B5YWt6L+b5Yi2XG4gKi9cbmZ1bmN0aW9uIGhhc0hleCh2YWwpIHtcbiAgcmV0dXJuIHZhbC5pbmRleE9mKCdcXFxceCcpID4gLTEgfHwgdmFsLmluZGV4T2YoJ1xcXFx1JykgPiAtMTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvnibnmrorlrZfnrKZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnNdIOeJueauiuWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+eJueauiuWtl+esplxuICovXG5mdW5jdGlvbiBoYXNTcGVjaWFsQ2hhcmFjdGVyKHZhbCwgY2hhcnMgPSAnJykge1xuICBpZiAoIWNoYXJzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3BlY2lhbENoYXJzID0gdmFsLnJlcGxhY2UocmVnQWxsTnVtYmVyQW5kTGV0dGVyLCAnJyk7XG4gIGNvbnN0IHJlZ0NoYXJzID0gaGFzSGV4KGNoYXJzKSA/IG5ldyBSZWdFeHAoYFske2NoYXJzfV1gKSA6IG51bGw7XG5cbiAgaWYgKHJlZ0NoYXJzKSB7XG4gICAgcmV0dXJuIHJlZ0NoYXJzLnRlc3Qoc3BlY2lhbENoYXJzKTtcbiAgfVxuXG4gIGxldCByZXQgPSBmYWxzZTtcbiAgc3BlY2lhbENoYXJzLnNwbGl0KCcnKS5zb21lKChjaGFySXRlbSkgPT4ge1xuICAgIGlmIChjaGFycy5pbmRleE9mKGNoYXJJdGVtKSA+IC0xKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvpnZ7ms5XlrZfnrKZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFycyDpnZ7ms5XlrZfnrKZcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvpnZ7ms5XlrZfnrKZcbiAqL1xuZnVuY3Rpb24gaGFzVW5hbGxvd2FibGVDaGFyYWN0ZXIodmFsLCBjaGFycyA9ICcnKSB7XG4gIGNvbnN0IHNwZWNpYWxDaGFycyA9IHZhbC5yZXBsYWNlKHJlZ0FsbE51bWJlckFuZExldHRlciwgJycpO1xuXG4gIGlmICghY2hhcnMgJiYgc3BlY2lhbENoYXJzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCByZWdDaGFycyA9IGhhc0hleChjaGFycykgPyBuZXcgUmVnRXhwKGBbXiR7Y2hhcnN9XWApIDogbnVsbDtcbiAgaWYgKHJlZ0NoYXJzKSB7XG4gICAgcmV0dXJuIHJlZ0NoYXJzLnRlc3Qoc3BlY2lhbENoYXJzKTtcbiAgfVxuICBsZXQgcmV0ID0gZmFsc2U7XG4gIHNwZWNpYWxDaGFycy5zcGxpdCgnJykuc29tZSgoY2hhckl0ZW0pID0+IHtcbiAgICBpZiAoY2hhcnMuaW5kZXhPZihjaGFySXRlbSkgPT09IC0xKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDpqozor4Hlr4bnoIHvvIjmlbDlrZfjgIHlpKflsI/lhpnlrZfmr43jgIHnibnmrorlrZfnrKbjgIHpnZ7ms5XlrZfnrKbvvIlcbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IudmFsaWRhdGVQYXNzd29yZFxuICogQHNpbmNlIDMuNy4wXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmxldmVsPTJdIOWvhueggeW8uuW6piAxLeWMheWQq+S4gOenjeWtl+espiAyLeWMheWQq+S4pOenjeWtl+espiAzLeWMheWQq+S4ieenjeWtl+espuOAgu+8iOWkp+WGmeWtl+avjeOAgeWwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuWtl+espu+8iVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pZ25vcmVDYXNlPWZhbHNlXSDmmK/lkKblv73nlaXlpKflsI/lhpnvvIzkuLogdHVyZSDml7bvvIzlpKflsI/lhpnlrZfmr43op4bkuLrkuIDnp43lrZfnrKZcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zcGVjaWFsPVwiIUAjJCVeJiooKS09XytbXVxcfHt9LC4vPzw+flwiXSDmlK/mjIHnmoTnibnmrorlrZfnrKZcbiAqIEByZXR1cm5zIOmqjOivgee7k+aenFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdhMTIzNDU2NzgnKTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogdHJ1ZSwgLy8g6aqM6K+B57uT5p6c77yM5qC55o2u5a+G56CB5by65bqm44CB5piv5ZCm5YyF5ZCr6Z2e5rOV5a2X56ym5b6X5Ye6XG4gKiAgIGxldmVsOiAyLCAvLyDlvLrluqbnuqfliKtcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLCAvLyDljIXlkKvmlbDlrZdcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsIC8vIOWMheWQq+Wwj+WGmeWtl+avjVxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogZmFsc2UsIC8vIOWMheWQq+Wkp+WGmeWtl+avjVxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IGZhbHNlLCAvLyDljIXlkKvnibnmrorlrZfnrKZcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogZmFsc2UgLy8g5YyF5ZCr6Z2e5rOV5a2X56ymXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdhMTIzNDU2NzgnLCB7bGV2ZWw6IDN9KTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogZmFsc2UsXG4gKiAgIGxldmVsOiAyLFxuICogICBjb250YWluZXM6IHtcbiAqICAgICBudW1iZXI6IHRydWUsXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogZmFsc2UsXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogZmFsc2UsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGZhbHNlXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdfQWHkuIDkuozkuIk0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiBmYWxzZSxcbiAqICAgbGV2ZWw6IDMsXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSxcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgdXBwZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IHRydWVcbiAqICAgfVxuICogfVxuICpcbiAqIC8vIOiHquWumuS5ieeJueauiuWtl+esplxuICogdmFsaWRhdGVQYXNzd29yZCgnX0Fh5LiA5LqM5LiJNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWUsIHNwZWNpYWw6ICdf5LiA5LqM5LiJJ30pO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiB0cnVlLFxuICogICBsZXZlbDogMyxcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLFxuICogICAgIGxvd2VyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogdHJ1ZSxcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogZmFsc2VcbiAqICAgfVxuICogfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVBhc3N3b3JkKHZhbHVlLCB7IGxldmVsID0gMiwgaWdub3JlQ2FzZSA9IGZhbHNlLCBzcGVjaWFsID0gJ1xcXFx4MjEtXFxcXHgyRlxcXFx4M0EtXFxcXHg0MFxcXFx4NUItXFxcXHg2MFxcXFx4N0ItXFxcXHg3RScgfSA9IHt9KSB7XG4gIGxldCB2YWxTdHIgPSB2YWx1ZTtcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIGlmICghY29uZmlnLmRpc2FibGVXYXJuaW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFt2YWxpZGF0ZVBhc3N3b3JkXSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLmApO1xuICAgIH1cbiAgICB2YWxTdHIgPSAnJztcbiAgfVxuXG4gIGxldCBjdXJyZW50TGV2ZWwgPSAwO1xuXG4gIC8vIOWMheWQq+aVsOWtl1xuICBjb25zdCBjb250YWluZXNOdW1iZXIgPSBoYXNOdW1iZXIodmFsU3RyKTtcbiAgLy8g5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gIGNvbnN0IGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlciA9IGhhc0xvd2VyQ2FzZUxldHRlcih2YWxTdHIpO1xuICAvLyDljIXlkKvlpKflhpnlrZfmr41cbiAgY29uc3QgY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyID0gaGFzVXBwZXJDYXNlTGV0dGVyKHZhbFN0cik7XG4gIC8vIOWMheWQq+eJueauiuWtl+esplxuICBjb25zdCBjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyID0gaGFzU3BlY2lhbENoYXJhY3Rlcih2YWxTdHIsIHNwZWNpYWwpO1xuICAvLyDljIXlkKvpnZ7ms5XlrZfnrKZcbiAgY29uc3QgY29udGFpbmVzVW5hbGxvd2FibGVDaGFyYWN0ZXIgPSBoYXNVbmFsbG93YWJsZUNoYXJhY3Rlcih2YWxTdHIsIHNwZWNpYWwpO1xuXG4gIGlmIChjb250YWluZXNOdW1iZXIpIHtcbiAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgfVxuXG4gIGlmIChpZ25vcmVDYXNlKSB7XG4gICAgLy8g5LiN5Yy65YiG5aSn5bCP5YaZXG4gICAgaWYgKGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlciB8fCBjb250YWluZXNVcHBlckNhc2VMZXR0ZXIpIHtcbiAgICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyDljLrliIblpKflsI/lhplcbiAgICBpZiAoY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyKSB7XG4gICAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgICB9XG4gICAgaWYgKGNvbnRhaW5lc1VwcGVyQ2FzZUxldHRlcikge1xuICAgICAgY3VycmVudExldmVsICs9IDE7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbnRhaW5lc1NwZWNpYWxDaGFyYWN0ZXIpIHtcbiAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgfVxuXG4gIC8vIOmqjOivgee7k+aenFxuICBjb25zdCB2YWxpZGF0ZWQgPSBjdXJyZW50TGV2ZWwgPj0gbGV2ZWwgJiYgIWNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyO1xuXG4gIHJldHVybiB7XG4gICAgdmFsaWRhdGVkLFxuICAgIGxldmVsOiBjdXJyZW50TGV2ZWwsXG4gICAgY29udGFpbmVzOiB7XG4gICAgICBudW1iZXI6IGNvbnRhaW5lc051bWJlcixcbiAgICAgIGxvd2VyQ2FzZUxldHRlcjogY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyLFxuICAgICAgdXBwZXJDYXNlTGV0dGVyOiBjb250YWluZXNVcHBlckNhc2VMZXR0ZXIsXG4gICAgICBzcGVjaWFsQ2hhcmFjdGVyOiBjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyLFxuICAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB2YWxpZGF0ZVBhc3N3b3JkO1xuIiwiaW1wb3J0IHZhbGlkYXRlUGFzc3dvcmQgZnJvbSAnLi92YWxpZGF0ZVBhc3N3b3JkJztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbnrKblkIjlr4bnoIHlvLrluqZcbiAqIDxwPjxzdHJvbmc+5rOo5oSP77ya6K+l5qCh6aqM5Y+q5qCh6aqM5piv5ZCm5a2Y5Zyo5LiN5ZCM5a2X56ymKOWkp+Wwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuespuWPtynvvIzkuI3liKTmlq3plb/luqbjgII8L3N0cm9uZz48L3A+XG4gKiA8cD48aT7lpoLmnpzpnIDopoHmm7Tnu4boh7TnmoTpqozor4HvvIzor7fkvb/nlKggPGEgaHJlZj1cIiMudmFsaWRhdGVQYXNzd29yZFwiPnZhbGlkYXRlUGFzc3dvcmQ8L2E+PC9pPjwvcD5cbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQYXNzd29yZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcmVxdWlyZXMgbW9kdWxlOlZhbGlkYXRvci52YWxpZGF0ZVBhc3N3b3JkXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZXZlbD0yXSDlr4bnoIHlvLrluqYgMS3ljIXlkKvkuIDnp43lrZfnrKYgMi3ljIXlkKvkuKTnp43lrZfnrKYgMy3ljIXlkKvkuInnp43lrZfnrKbjgILvvIjlpKflhpnlrZfmr43jgIHlsI/lhpnlrZfmr43jgIHmlbDlrZfjgIHnibnmrorlrZfnrKbvvIlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWdub3JlQ2FzZT1mYWxzZV0g5piv5ZCm5b+955Wl5aSn5bCP5YaZ77yM5Li6IHR1cmUg5pe277yM5aSn5bCP5YaZ5a2X5q+N6KeG5Li65LiA56eN5a2X56ymXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3BlY2lhbD1cIiFAIyQlXiYqKCktPV8rW11cXHx7fSwuLz88Pn5cIl0g5pSv5oyB55qE54m55q6K5a2X56ymXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm56ym5ZCI5a+G56CB5by65bqmXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUGFzc3dvcmQoJ2ExMjM0NTY3OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUGFzc3dvcmQoJ2ExMjM0NTY3OCcsIHtsZXZlbDogM30pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCdBYTEyMzQ1Njc4Jywge2xldmVsOiAzfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQYXNzd29yZCgnQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCdfQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIOS7heaUr+aMgSDmlbDlrZfjgIHlrZfmr43jgIHnibnmrorlrZfnrKbvvIzlhbbku5blrZfnrKblpoLkuK3mloflrZfnrKbmmK/moKHpqozkuI3pgJrov4fnmoRcbiAqIGlzUGFzc3dvcmQoJ19BYeS4gOS6jOS4iTQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzUGFzc3dvcmQoJyBfQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCA9IDIsIGlnbm9yZUNhc2UgPSBmYWxzZSwgc3BlY2lhbCA9ICdcXFxceDIxLVxcXFx4MkZcXFxceDNBLVxcXFx4NDBcXFxceDVCLVxcXFx4NjBcXFxceDdCLVxcXFx4N0UnIH0gPSB7fSkge1xuICByZXR1cm4gdmFsaWRhdGVQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCwgaWdub3JlQ2FzZSwgc3BlY2lhbCB9KS52YWxpZGF0ZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGFzc3dvcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5oqk54Wn5Y+3IDnkvY3vvIzljIXmi6zpppblrZfmr43lkozmlbDlrZfvvJvmlK/mjIEg5pmu6YCa5oqk54WnKEUqKeOAgeWkluS6pOaKpOeFpyhERSnjgIHlhazliqHmiqTnhacoU0Up44CB5YWs5Yqh5pmu6YCa5oqk54WnKFBFKeOAgemmmea4r+eJueWMuuaKpOeFpyhLL0tKKeOAgea+s+mXqOeJueWMuuaKpOeFpyhNQSlcbmNvbnN0IHJlZyA9IC9eKChlW1xcZGEtel0pfChkZSl8KHNlKXwocGUpfChrW1xcZGEtel0pfChrail8KG1hKSlbXFxkYS16XXs3fSQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmiqTnhaflj7dcbiAqIOaUr+aMgeaZrumAmuaKpOeFpyhFKinjgIHlpJbkuqTmiqTnhacoREUp44CB5YWs5Yqh5oqk54WnKFNFKeOAgeWFrOWKoeaZrumAmuaKpOeFpyhQRSnjgIHpppnmuK/nibnljLrmiqTnhacoSy9LSinjgIHmvrPpl6jnibnljLrmiqTnhacoTUEpXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQYXNzcG9ydFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+S4reWNjuS6uuawkeWFseWSjOWbveaKpOeFpyPkuKrkurrotYTmlpnpobV85Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95oqk54WnI+S4quS6uui1hOaWmemhtX1cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrmiqTnhaflj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQYXNzcG9ydCgnRTEyMzQ1Njc4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQYXNzcG9ydCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNQYXNzcG9ydCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGFzc3BvcnQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuY29uc3QgY2hpbmVzZURpY3Rpb25hcnkgPSB7XG4gIC8vIOWfuuacrOaxieWtl1xuICBjaGluZXNlQmFzaWM6ICdbXFx1NGUwMC1cXHU5ZmE1XScsXG5cbiAgLy8g5Z+65pys5rGJ5a2X6KGl5YWFXG4gIGNoaW5lc2VFeHRlbmQ6ICdbXFx1OWVhNi1cXHU5ZmVmXScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVQVxuICBjaGluZXNlRXh0ZW5kQTogJ1tcXHUzNDAwLVxcdTREQjVdJyxcblxuICAvLyDmsYnlrZfmianlsZVCXG4gIGNoaW5lc2VFeHRlbmRCOiAnW1xcdXsyMDAwMH0tXFx1ezJBNkQ2fV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUNcbiAgY2hpbmVzZUV4dGVuZEM6ICdbXFx1ezJBNzAwfS1cXHV7MkI3MzR9XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVRFxuICBjaGluZXNlRXh0ZW5kRDogJ1tcXHV7MkI3NDB9LVxcdXsyQjgxRH1dJyxcblxuICAvLyDmsYnlrZfmianlsZVFXG4gIGNoaW5lc2VFeHRlbmRFOiAnW1xcdXsyQjgyMH0tXFx1ezJDRUExfV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUZcbiAgY2hpbmVzZUV4dGVuZEY6ICdbXFx1ezJDRUIwfS1cXHV7MkVCRTB9XSdcbn07XG5cbmxldCBsb29zZUNoaW5lc2VSZWdFeHAgPSBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlQmFzaWMgKyAnKyc7XG5cbmxldCBjaGluZXNlUmVnRXhwID0gJ14nICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJyskJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuY29uc3Qgc3VwcG9ydFJlZ0V4cFVuaWNvZGUgPSBSZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCd1bmljb2RlJyk7XG5cbmlmIChzdXBwb3J0UmVnRXhwVW5pY29kZSkge1xuICBsb29zZUNoaW5lc2VSZWdFeHAgPSAnKD86JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRCICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRFICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEYgKyAnKSsnO1xuICBjaGluZXNlUmVnRXhwID0gJ14oPzonICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRBICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEIgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmREICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEUgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRiArICcpKyQnO1xufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuS4reaWh1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQ2hpbmVzZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzgvI0Jsb2NrTGlzdGluZ3w0LjQgTGlzdGluZyBvZiBDaGFyYWN0ZXJzIENvdmVyZWQgYnkgdGhlIFVuaWhhbiBEYXRhYmFzZX1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP44CC5aaC5p6c5Li6dHJ1Ze+8jOWPquimgeWMheWQq+S4reaWh+WNs+S4unRydWVcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrkuK3mlodcbiAqIEBleGFtcGxlXG4gKlxuICogaXNDaGluZXNlKCfmnpfmn5Dmn5AnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0NoaW5lc2UoJ+ael0EnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogLy8g5a695p2+5qih5byP77yM5Y+q6KaB5YyF5ZCr5Lit5paH5Y2z5Li6dHJ1ZVxuICogaXNDaGluZXNlKCfmnpdBJywge2xvb3NlOiB0cnVlfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNDaGluZXNlKCdB5p6XQScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNDaGluZXNlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChsb29zZSA/IGxvb3NlQ2hpbmVzZVJlZ0V4cCA6IGNoaW5lc2VSZWdFeHAsIHN1cHBvcnRSZWdFeHBVbmljb2RlID8gJ3UnIDogdW5kZWZpbmVkKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNDaGluZXNlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIGlwdjTmraPliJlcbmNvbnN0IHJlZyA9IC9eKChcXGR7MSwyfXwxXFxkXFxkfDJbMC00XVxcZHwyNVswLTVdKVxcLil7M30oXFxkezEsMn18MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC01XSkkLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLppcHY0XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNJUHY0XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6aXB2NFxuICogQGV4YW1wbGVcbiAqXG4gKiBpc0lQdjQoJzE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY0KCcyNTUuMjU1LjI1NS4yNTUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjQoJzI1Ni4yNTYuMjU2LjI1NicpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lQdjQoJzAuMCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzSVB2NCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSVB2NDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyBpcHY25q2j5YiZXG5jb25zdCByZWcgPSAvXigoKFswLTlBLUZdezEsNH06KXs3fShbMC05QS1GXXsxLDR9fDopKXwoKFswLTlBLUZdezEsNH06KXs2fSg6WzAtOUEtRl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pfDopKXwoKFswLTlBLUZdezEsNH06KXs1fSgoKDpbMC05QS1GXXsxLDR9KXsxLDJ9KXw6KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KXw6KSl8KChbMC05QS1GXXsxLDR9Oil7NH0oKCg6WzAtOUEtRl17MSw0fSl7MSwzfSl8KCg6WzAtOUEtRl17MSw0fSk/OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXszfSgoKDpbMC05QS1GXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXsyfSgoKDpbMC05QS1GXXsxLDR9KXsxLDV9KXwoKDpbMC05QS1GXXsxLDR9KXswLDN9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXsxfSgoKDpbMC05QS1GXXsxLDR9KXsxLDZ9KXwoKDpbMC05QS1GXXsxLDR9KXswLDR9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoOigoKDpbMC05QS1GXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKSkoJS4rKT8kL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6aXB2NlxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSVB2NlxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4umlwdjZcbiAqIEBleGFtcGxlXG4gKlxuICogLy8g5YaS5YiG5Y2B5YWt6L+b5Yi26KGo56S65rOVXG4gKiBpc0lQdjYoJzIwMDE6MERCODowMDAwOjAwMjM6MDAwODowODAwOjIwMEM6NDE3QScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIOWJjeWvvDDnnIHnlaVcbiAqIGlzSVB2NignMjAwMTpEQjg6MDoyMzo4OjgwMDoyMDBDOjQxN0EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJ0ZGMDE6MDowOjA6MDowOjA6MTEwMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIDDkvY3ljovnvKnooajnpLrms5VcbiAqIGlzSVB2NignRkYwMTo6MTEwMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignOjoxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCc6OicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMDowOjA6MDowOjA6MDoxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCcwOjA6MDowOjA6MDowOjAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyDlhoXltYxJUHY05Zyw5Z2A6KGo56S65rOVXG4gKiBpc0lQdjYoJzo6MTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzo6RkZGRjoxOTIuMTY4LjEuMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc0lQdjYodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0lQdjY7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gdXJs5q2j5YiZXG5jb25zdCByZWcgPSAvKCgoXmh0dHBzPzooPzpcXC9cXC8pPykoPzpbLTs6Jj1cXCtcXCQsXFx3XStAKT9bQS1aYS16MC05Li1dKyg/OjpcXGQrKT98KD86d3d3LnxbLTs6Jj1cXCtcXCQsXFx3XStAKVtBLVphLXowLTkuLV0rKSgoPzpcXC9bXFwrfiVcXC8uXFx3LV9dKik/XFw/Pyg/OlstXFwrPSY7JUAuXFx3X10qKSM/KD86W1xcd10qKSk/KSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4unVybFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVXJsXG4gKiBAc2luY2UgMy40LjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/nu5/kuIDotYTmupDlrprkvY3nrKZ857uf5LiA6LWE5rqQ5a6a5L2N56ymfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLp1cmxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVcmwoJycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1VybCgnOC44LjguOCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1VybCgnZXhhbXBsZS5jb20nKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VybCgnaHR0cDovL2V4YW1wbGUuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHBzOi8vZXhhbXBsZS5jb206ODA4MCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rlc3QvMTIzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vdGVzdC8xMjM/Zm9vPWJhcicpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1VybCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVXJsO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWfuuehgOinhOWIme+8jOeUsTE05L2N5pWw5a2X5pys5L2T56CB5ZKMMeS9jeaVsOWtl+agoemqjOeggee7hOaIkO+8jOWFtuS4reacrOS9k+eggeS7juW3puiHs+WPs+S+neasoeS4uu+8mjbkvY3pppbmrKHnmbvorrDmnLrlhbPnoIHjgIE45L2N6aG65bqP56CB44CCXG5jb25zdCBiYXNlUmVnID0gL15cXGR7MTV9JC87XG5cbi8qKlxuICog6K6h566X5qCh6aqM56CBXG4gKlxuICogQHByaXZhdGVcbiAqIEBzaW5jZSAzLjUuMFxuICogQHBhcmFtIHtzdHJpbmd9IHByZUNvZGUg6JCl5Lia5omn54Wn5YmNMTTkvY1cbiAqIEByZXR1cm5zIHtudW1iZXJ9IOagoemqjOeggVxuICovXG5mdW5jdGlvbiBzdW1DaGVja0NvZGUocHJlQ29kZSkge1xuICBsZXQgcmV0TnVtOyAvLyDmoKHpqozkvY3mlbDlrZdcblxuICBsZXQgcGogPSAxMDsgLy8gUGorMSAxMe+8jOWIneWni+S4ujEwXG5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCAxNDsgaisrKSB7XG4gICAgY29uc3Qgc2ogPSBwaiArIE51bWJlcihwcmVDb2RlW2pdKTtcbiAgICBsZXQgc2oxMCA9IHNqICUgMTA7XG4gICAgc2oxMCA9IHNqMTAgPT09IDAgPyAxMCA6IHNqMTA7XG4gICAgY29uc3QgcGoxID0gc2oxMCAqIDI7XG4gICAgcGogPSBwajEgJSAxMTtcbiAgfVxuXG4gIC8vIOWPjeaooTEw6K6h566XXG4gIGlmIChwaiA9PT0gMTAgfHwgcGogPT09IDEpIHtcbiAgICByZXROdW0gPSAxO1xuICB9IGVsc2Uge1xuICAgIHJldE51bSA9IDExIC0gcGo7XG4gIH1cblxuICByZXR1cm4gcmV0TnVtO1xufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuiQpeS4muaJp+eFp+WPt++8jOS5n+WPq+W3peWVhuazqOWGjOWPt+OAgueUsTE05L2N5pWw5a2X5pys5L2T56CB5ZKMMeS9jeaVsOWtl+agoemqjOeggee7hOaIkO+8jOWFtuS4reacrOS9k+eggeS7juW3puiHs+WPs+S+neasoeS4uu+8mjbkvY3pppbmrKHnmbvorrDmnLrlhbPnoIHjgIE45L2N6aG65bqP56CB44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNCdXNpbmVzc0xpY2Vuc2VcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3dlbmt1LmJhaWR1LmNvbS92aWV3LzE5ODczNzA0Y2MxNzU1MjcwNzIyMDg3Yy5odG1sfEdTMTXigJQyMDA2IOW3peWVhuihjOaUv+euoeeQhuW4guWcuuS4u+S9k+azqOWGjOWPt+e8luWItuinhOWImX1cbiAqIEBzaW5jZSAzLjUuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/jgILlpoLmnpzkuLp0cnVl77yM5LiN5qCh6aqM5qCh6aqM5L2N44CCXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66JCl5Lia5omn54Wn5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzUnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDk4NTUzNScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzQnVzaW5lc3NMaWNlbnNlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBwYXNzQmFzZVJ1bGUgPSBiYXNlUmVnLnRlc3QodmFsdWVTdHIpO1xuXG4gIC8vIOWuveadvuaooeW8jyDmiJYg5Z+656GA6KeE5YiZ5LiN6YCa6L+H55u05o6l6L+U5ZueXG4gIGlmIChsb29zZSB8fCAhcGFzc0Jhc2VSdWxlKSB7XG4gICAgcmV0dXJuIHBhc3NCYXNlUnVsZTtcbiAgfVxuXG4gIC8vIOWJjTE05L2NXG4gIGNvbnN0IHByZUNvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcoMCwgMTQpO1xuICAvLyDmoKHpqoznoIFcbiAgY29uc3QgbGFzdENvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcodmFsdWVTdHIubGVuZ3RoIC0gMSk7XG4gIC8vIOiuoeeul+agoemqjOeggVxuICBjb25zdCBjaGVja0NvZGUgPSBzdW1DaGVja0NvZGUocHJlQ29kZSk7XG5cbiAgcmV0dXJuIGxhc3RDb2RlID09PSBTdHJpbmcoY2hlY2tDb2RlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNCdXNpbmVzc0xpY2Vuc2U7XG4iLCIvKipcbiAqIOajgOa1i+WAvOaYr+WQpuexu+S8vFByb21pc2Xlr7nosaFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1Byb21pc2VMaWtlXG4gKiBAc2luY2UgMy44LjBcbiAqIEBwYXJhbSB7Kn0gb2JqIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuexu+S8vFByb21pc2Xlr7nosaFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQcm9taXNlTGlrZShbXSk7XG4gKiA9PiBmYWxzZVxuICpcbiAqIGlzUHJvbWlzZUxpa2Uoe3RoZW46KCk9Pnt9fSk7XG4gKiA9PiB0cnVlXG4gKlxuICogaXNQcm9taXNlTGlrZShQcm9taXNlLnJlc29sdmUoKSk7XG4gKiA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUHJvbWlzZUxpa2Uob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQcm9taXNlTGlrZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4HmraPliJlcbmNvbnN0IHJlZ0hNQ2FyZCA9IC9eW2htXXsxfShbMC05XXsxMH18WzAtOV17OH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uua4r+a+s+WxheawkeadpeW+gOWGheWcsOmAmuihjOivge+8jOS/l+ensOWbnuS5oeivgeaIluWbnuS5oeWNoeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSE1DYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/muK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4F85riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4FcbiAqL1xuZnVuY3Rpb24gaXNITUNhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnSE1DYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0hNQ2FyZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4HmraPliJnvvIzmlK/mjIHkuIDmrKHmgKfnn63mnJ/lj7Dog57or4FcbmNvbnN0IHJlZ1RXQ2FyZCA9IC9eKFxcZHs4fXxbXFxkYS16XXsxMH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuWPsOa5vuWxheawkeadpeW+gOWkp+mZhumAmuihjOivge+8jOS/l+ensOWPsOiDnuivgeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVFdDYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/lj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4F85Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4FcbiAqL1xuZnVuY3Rpb24gaXNUV0NhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnVFdDYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RXQ2FyZDtcbiIsIi8vIOacgOWkp+WuieWFqOaVsOWtl1xuZXhwb3J0IGNvbnN0IE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCA5MDA3MTk5MjU0NzQwOTkxO1xuLy8g5pyA5bCP5a6J5YWo5pWw5a2XXG5leHBvcnQgY29uc3QgTUlOX1NBRkVfSU5URUdFUiA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIHx8IC05MDA3MTk5MjU0NzQwOTkxO1xuIiwiLyoqXG4gKiDlj4LogIM6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZWZlL251bWJlci1wcmVjaXNpb24vYmxvYi9tYXN0ZXIvc3JjL2luZGV4LnRzXG4gKlxuICog6Kej5Yaz5rWu5Yqo6L+Q566X6Zeu6aKY77yM6YG/5YWN5bCP5pWw54K55ZCO5Lqn55Sf5aSa5L2N5pWw5ZKM6K6h566X57K+5bqm5o2f5aSx44CCXG4gKiDpl67popjnpLrkvovvvJoyLjMgKyAyLjQgPSA0LjY5OTk5OTk5OTk5OTk5Oe+8jDEuMCAtIDAuOSA9IDAuMDk5OTk5OTk5OTk5OTk5OThcbiAqL1xuXG5pbXBvcnQgeyBNQVhfU0FGRV9JTlRFR0VSLCBNSU5fU0FGRV9JTlRFR0VSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIOaYr+WQpuS4uuenkeWtpuiuoeaVsOazleaVsOWtl1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBudW0g5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NpZW50aWZpY051bWJlcihudW0pIHtcbiAgcmV0dXJuIC9cXGQrXFwuP1xcZCplW1xcK1xcLV0qXFxkKy9pLnRlc3QobnVtKTtcbn1cblxuLyoqXG4gKiDmiorplJnor6/nmoTmlbDmja7ovazmraNcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOi+k+WFpeaVsFxuICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MTJdIOWwj+aVsOeCueeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBleGFtcGxlXG4gKlxuICogIHN0cmlwKDAuMDk5OTk5OTk5OTk5OTk5OTgpPTAuMVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXAobnVtLCBwcmVjaXNpb24gPSAxMikge1xuICByZXR1cm4gK3BhcnNlRmxvYXQobnVtLnRvUHJlY2lzaW9uKHByZWNpc2lvbikpO1xufVxuXG4vKipcbiAqIOiuoeeul+aVsOWtl+eahOWwj+aVsOeCuemVv+W6pu+8jOaUr+aMgeenkeWtpuiusOaVsOazlVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOi+k+WFpeaVsFxuICogQHJldHVybnMge251bWJlcn0g5bCP5pWw54K56ZW/5bqmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWdpdExlbmd0aChudW0pIHtcbiAgLy8gR2V0IGRpZ2l0IGxlbmd0aCBvZiBlXG4gIGNvbnN0IGVTcGxpdCA9IG51bS50b1N0cmluZygpLnNwbGl0KC9lL2kpO1xuICBjb25zdCBsZW4gPSAoZVNwbGl0WzBdLnNwbGl0KCcuJylbMV0gfHwgJycpLmxlbmd0aCAtICsoZVNwbGl0WzFdIHx8IDApO1xuICByZXR1cm4gbGVuID4gMCA/IGxlbiA6IDA7XG59XG5cbi8qKlxuICog5oqK5bCP5pWw6L2s5oiQ5pW05pWw77yM5pSv5oyB56eR5a2m6K6h5pWw5rOV44CC5aaC5p6c5piv5bCP5pWw5YiZ5pS+5aSn5oiQ5pW05pWwXG4gKlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxvYXQyRml4ZWQobnVtKSB7XG4gIGlmICghaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIHJldHVybiBOdW1iZXIobnVtLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICcnKSk7XG4gIH1cbiAgY29uc3QgZExlbiA9IGRpZ2l0TGVuZ3RoKG51bSk7XG4gIHJldHVybiBkTGVuID4gMCA/IHN0cmlwKCtudW0gKiBNYXRoLnBvdygxMCwgZExlbikpIDogK251bTtcbn1cblxuLyoqXG4gKiDmo4DmtYvmlbDlrZfmmK/lkKbotornlYzvvIzlpoLmnpzotornlYznu5nlh7rmj5DnpLpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tCb3VuZGFyeShudW0pIHtcbiAgaWYgKCtudW0gPiBNQVhfU0FGRV9JTlRFR0VSIHx8ICtudW0gPCBNSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGlzIGJleW9uZCBib3VuZGFyeSB3aGVuIHRyYW5zZmVyIHRvIGludGVnZXIsIHRoZSByZXN1bHRzIG1heSBub3QgYmUgYWNjdXJhdGVgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiDljrvmjonlt6bovrnmlbDlrZcwXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG51bSDmlbDlrZflrZfnrKbkuLJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGVmdFplcm8obnVtKSB7XG4gIGNvbnN0IHJlZyA9IC9eKFsrLV0pPygwKykoWzAtOVxcLl0rKSQvO1xuICBjb25zdCByZXN1bHQgPSByZWcuZXhlYyhudW0pO1xuXG4gIGxldCBzaWduO1xuXG4gIGlmIChyZXN1bHQpIHtcbiAgICBzaWduID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHJldHVybiBzaWduICsgKHJlc3VsdFszXVswXSA9PT0gJy4nID8gJzAnICsgcmVzdWx0WzNdIDogcmVzdWx0WzNdKTtcbiAgfVxuXG4gIHJldHVybiBudW07XG59XG5cbi8qKlxuICog56eR5a2m6K6h5pWw5rOV6L2s5o2i5oiQ5pmu6YCa5pWw5a2XXG4gKlxuICogSmF2YVNjcmlwdOWcqOS7peS4i+aDheaZr+S8muiHquWKqOWwhuaVsOWAvOi9rOaNouS4uuenkeWtpuiuoeaVsOazle+8mlxuICogIDEu5bCP5pWw54K55YmN55qE5pWw5a2X5Liq5pWw5aSn5LqO562J5LqOMjLkvY1cbiAqICAyLuWwj+aVsOeCueWJjei+ueaYrzDvvIzlsI/mlbDngrnlkI7ljYHliIbkvY3vvIjljIXlkKvljYHliIbkvY3vvInkuYvlkI7ov57nu63pm7bnmoTkuKrmlbDlpKfkuo7nrYnkuo425LiqXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG51bSDnp5HlraborqHmlbDms5XmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOaNouWQjueahOaVsOWtl+Wtl+espuS4slxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkge1xuICBpZiAoaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIGNvbnN0IHplcm8gPSAnMCc7XG4gICAgY29uc3QgcGFydHMgPSBTdHJpbmcobnVtKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCdlJyk7XG4gICAgY29uc3QgZSA9IHBhcnRzLnBvcCgpOyAvLyDlrZjlgqjmjIfmlbBcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbCA9IE1hdGguYWJzKGUpOyAvLyDlj5bnu53lr7nlgLzvvIxsLTHlsLHmmK8w55qE5Liq5pWwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNpZ24gPSBlIC8gbDsgLy/liKTmlq3mraPotJ9cbiAgICBjb25zdCBjb2VmZl9hcnJheSA9IHBhcnRzWzBdLnNwbGl0KCcuJyk7IC8vIOWwhuezu+aVsOaMieeFp+Wwj+aVsOeCueaLhuWIhlxuXG4gICAgLy/lpoLmnpzmmK/lsI/mlbBcbiAgICBpZiAoc2lnbiA9PT0gLTEpIHtcbiAgICAgIC8v5ou85o6l5a2X56ym5Liy77yM5aaC5p6c5piv5bCP5pWw77yM5ou85o6lMOWSjOWwj+aVsOeCuVxuICAgICAgbnVtID0gemVybyArICcuJyArIG5ldyBBcnJheShsKS5qb2luKHplcm8pICsgY29lZmZfYXJyYXkuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlYyA9IGNvZWZmX2FycmF5WzFdO1xuXG4gICAgICAvL+WmguaenOaYr+aVtOaVsO+8jOWwhuaVtOaVsOmZpOesrOS4gOS9jeS5i+WklueahOmdnumbtuaVsOWtl+iuoeWFpeS9jeaVsO+8jOebuOW6lOeahOWHj+WwkTDnmoTkuKrmlbBcbiAgICAgIGlmIChsIC0gZGVjLmxlbmd0aCA8IDApIHtcbiAgICAgICAgbnVtID0gdHJpbUxlZnRaZXJvKGNvZWZmX2FycmF5WzBdICsgZGVjLnN1YnN0cmluZygwLCBsKSkgKyAnLicgKyBkZWMuc3Vic3RyaW5nKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy/mi7zmjqXlrZfnrKbkuLLvvIzlpoLmnpzmmK/mlbTmlbDvvIzkuI3pnIDopoHmi7zmjqXlsI/mlbDngrlcbiAgICAgICAgbnVtID0gY29lZmZfYXJyYXkuam9pbignJykgKyBuZXcgQXJyYXkobCAtIGRlYy5sZW5ndGggKyAxKS5qb2luKHplcm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBudW07XG59XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOYU5cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOYU5cbiAqIEBleGFtcGxlXG4gKlxuICogaXNOYU4oTmFOKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTmFOKDEpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBfaXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ051bWJlcicpICYmIGlzTmFOKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgX2lzTmFOO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSwgc2NpZW50aWZpY1RvTnVtYmVyLCBpc1NjaWVudGlmaWNOdW1iZXIgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgaXNOYU4gZnJvbSAnLi91dGlscy90eXBlL2lzTmFOJztcbmltcG9ydCB7IHRyaW1MZWZ0WmVybyB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnID0gL15bKy1dP1xcZCpcXC4/XFxkKiQvO1xuXG4vKipcbiAqIOajgOafpeaVsOWtl+aIluaVsOWtl+Wtl+espuS4slxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbnVtXG4gKiBAcmV0dXJucyDmmK/lkKbkuLrmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY2hlY2tOdW1iZXIobnVtKSB7XG4gIGlmICghKHJlZy50ZXN0KG51bSkgfHwgaXNTY2llbnRpZmljTnVtYmVyKG51bSkpIHx8IGlzTmFOKG51bSkgfHwgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmIHR5cGVvZiBudW0gIT09ICdzdHJpbmcnKSB8fCBudW0gPT09ICcnKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGludmFsaWQgcGFyYW1ldGVyLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIOaVsOWtl+i2hemZkOWmguaenOS4jeaYr+aYr+Wtl+espuS4su+8jOWPr+iDveacieW8guW4uFxuICAvLyDlpoIgMTExMTExMTExMTExMTExMTExMTExMSAvLyA9PiAxLjExMTExMTExMTExMTExMTFlKzIxXG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIGNoZWNrQm91bmRhcnkobnVtKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIOagvOW8j+WMluaVtOaVsOmDqOWIhlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gaW50U3RyIOaVsOWtl+Wtl+espuS4slxuICogQHBhcmFtIHtzdHJpbmd9IHRob3VzYW5kIOWNg+WIhuS9jeespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEludChpbnRTdHIsIHRob3VzYW5kKSB7XG4gIGxldCB0eHQgPSAnJztcbiAgaW50U3RyID0gdHJpbUxlZnRaZXJvKGludFN0cik7XG4gIGludFN0ciA9IGludFN0clswXSA9PT0gJysnID8gaW50U3RyLnN1YnN0cmluZygxKSA6IGludFN0cjsgLy8g5Y675o6JK+espuWPt1xuICBjb25zdCBuZWdhdGl2ZVN5bWJvbCA9IE51bWJlcihpbnRTdHIpIDwgMCA/ICctJyA6ICcnO1xuICBjb25zdCByZUFyciA9IG5lZ2F0aXZlU3ltYm9sID8gaW50U3RyLnN1YnN0cmluZygxKS5zcGxpdCgnJykucmV2ZXJzZSgpIDogaW50U3RyLnNwbGl0KCcnKS5yZXZlcnNlKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZUFyci5sZW5ndGg7IGkrKykge1xuICAgIHR4dCArPSByZUFycltpXSArICgoaSArIDEpICUgMyA9PT0gMCAmJiBpICsgMSAhPT0gcmVBcnIubGVuZ3RoID8gdGhvdXNhbmQgOiAnJyk7XG4gIH1cblxuICByZXR1cm4gbmVnYXRpdmVTeW1ib2wgKyB0eHQuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiDmoLzlvI/ljJblsI/mlbDpg6jliIbvvIzlpoLmnpzkvb/nlKggdG9GaXhlZO+8jOi2heWkp+mineaVsOWtl+S8muiHquWKqOiiq+aIquaWrVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVjU3RyIOWwj+aVsOeCuemDqOWIhueahOWtl+espuS4slxuICogQHBhcmFtIHtudW1iZXJ9IHByZWNpc2lvbiDkv53nlZnkvY3mlbBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNpbWFsIOWwj+aVsOeCueespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdERlYyhkZWNTdHIsIHByZWNpc2lvbiwgZGVjaW1hbCkge1xuICBpZiAocHJlY2lzaW9uID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgemVybyA9IDA7XG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoZGVjU3RyICYmIE51bWJlcihkZWNTdHIpID4gMCkge1xuICAgIGxldCB0bXBOdW0gPSBwYXJzZUZsb2F0KCcwLicgKyBkZWNTdHIpO1xuICAgIHJldCA9IHRtcE51bS50b0ZpeGVkKHByZWNpc2lvbikuc3Vic3RyaW5nKDIpO1xuICB9IGVsc2Uge1xuICAgIHJldCA9IHplcm8udG9GaXhlZChwcmVjaXNpb24pLnN1YnN0cmluZygyKTtcbiAgfVxuXG4gIHJldHVybiBkZWNpbWFsICsgcmV0O1xufVxuXG4vKipcbiAqIOagvOW8j+WMlumHkeminVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdE1vbmV5XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBudW0g6ZyA6L2s5o2i6YeR6aKdICjmnIDlpKfvvJo5MDA3MTk5MjU0NzQwOTkxIOacgOWwj++8miAtOTAwNzE5OTI1NDc0MDk5MSlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSDph5Hpop3moLzlvI/ljJbphY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbb3B0aW9ucy5wcmVjaXNpb249Ml0gLSDkv53nlZnkvY3mlbAg77yI5pyA6auY77yaMTDkvY3vvIlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zeW1ib2xdIC0g6LSn5biB56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudGhvdXNhbmQ9XCIsXCJdIC0g5Y2D5YiG5L2N56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIi5cIl0gLSDlsI/mlbDkvY3nrKblj7dcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMlueahOmHkeminVxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmlbTmlbBcbiAqIGZvcm1hdE1vbmV5KCcxMDAwJyk7XG4gKiAvLyA9PiAxLDAwMC4wMFxuICpcbiAqIC8vIOWwj+aVsO+8iOm7mOiupOS/neeVmTLkvY3lsI/mlbDvvIlcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzJyk7XG4gKiAvLyA9PiAzLDAwMC4wM1xuICpcbiAqIC8vIOS/neeVmTTkvY3lsI/mlbBcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzMDAnLCB7IHByZWNpc2lvbjogNCB9KTtcbiAqIC8vID0+IDMsMDAwLjAzMDBcbiAqXG4gKiAvLyDkv53nlZkxMOS9jeWwj+aVsFxuICogZm9ybWF0TW9uZXkoJzE1MDAuMicsIHsgcHJlY2lzaW9uOiAxMCB9KTtcbiAqIC8vID0+IDEsNTAwLjIwMDAwMDAwMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljZXkvY3nrKblj7dcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgc3ltYm9sOiAnJCcgfSk7XG4gKiAvLyA9PiAkMSwwMDAuMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljYPkvY3liIblibLnrKbvvIjpu5jorqQnLCfvvIlcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgdGhvdXNhbmQ6ICd8JyB9KTtcbiAqIC8vID0+IDF8MDAwLjAwXG4gKlxuICogLy8g6Ieq5a6a5LmJ5bCP5pWw5L2N5YiG5Ymy56ymKOm7mOiupCcuJylcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgZGVjaW1hbDogJyYnIH0pO1xuICogLy8gPT4gMSwwMDAmMDBcbiAqL1xuY29uc3QgZm9ybWF0TW9uZXkgPSAobnVtLCB7IHByZWNpc2lvbiA9IDIsIHN5bWJvbCwgdGhvdXNhbmQgPSAnLCcsIGRlY2ltYWwgPSAnLicgfSA9IHt9KSA9PiB7XG4gIC8vIOaVsOWtl+WPguaVsOS4jeato+ehru+8jOi/lOWbnuepuuWtl+espuS4slxuICAvLyBAdHMtaWdub3JlXG4gIGlmICghY2hlY2tOdW1iZXIobnVtKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOWPguaVsOinhOaVtOWMllxuICBpZiAodHlwZW9mIHByZWNpc2lvbiAhPT0gJ251bWJlcicgfHwgaXNOYU4ocHJlY2lzaW9uKSB8fCBwcmVjaXNpb24gPCAwKSB7XG4gICAgcHJlY2lzaW9uID0gMjtcbiAgfSBlbHNlIGlmIChwcmVjaXNpb24gPiAxMCkge1xuICAgIHByZWNpc2lvbiA9IDEwO1xuICB9XG4gIHN5bWJvbCA9IHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnID8gc3ltYm9sIDogJyc7XG4gIHRob3VzYW5kID0gdHlwZW9mIHRob3VzYW5kID09PSAnc3RyaW5nJyA/IHRob3VzYW5kIDogJywnO1xuICBkZWNpbWFsID0gdHlwZW9mIGRlY2ltYWwgPT09ICdzdHJpbmcnID8gZGVjaW1hbCA6ICcuJztcblxuICAvLyDovazmjaLmlbDlrZflrZfnrKbkuLLvvIzmlK/mjIHnp5HlraborrDmlbDms5VcbiAgY29uc3QgbnVtU3RyID0gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkgKyAnJztcbiAgLy8g5pW05pWw5ZKM5bCP5pWw6YOo5YiGXG4gIGNvbnN0IFtpbnRTdHIsIGRlY1N0cl0gPSBudW1TdHIuc3BsaXQoJy4nKTtcblxuICByZXR1cm4gc3ltYm9sICsgZm9ybWF0SW50KGludFN0ciwgdGhvdXNhbmQpICsgZm9ybWF0RGVjKGRlY1N0ciwgcHJlY2lzaW9uLCBkZWNpbWFsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdE1vbmV5O1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpVbmRlZmluZWRcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNVbmRlZmluZWRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpVbmRlZmluZWRcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVbmRlZmluZWQodW5kZWZpbmVkKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVW5kZWZpbmVkKHZvaWQgMClcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VuZGVmaW5lZChudWxsKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdWxsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzTnVsbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uk51bGxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdWxsKG51bGwpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdWxsKHZvaWQgMClcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVsbDtcbiIsImltcG9ydCBpc1VuZGVmaW5lZCBmcm9tICcuL2lzVW5kZWZpbmVkJztcbmltcG9ydCBpc051bGwgZnJvbSAnLi9pc051bGwnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4uiB1bmRlZmluZWQg5oiWIG51bGxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSA0LjMuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLogdW5kZWZpbmVkIOaIliBudWxsXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiBpc1VuZGVmaW5lZCh2YWx1ZSkgfHwgaXNOdWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOaWw7XG4iLCJpbXBvcnQgaXNOaWwgZnJvbSAnLi91dGlscy90eXBlL2lzTmlsJztcbmltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vKipcbiAqIOinhOaVtOWMluWtl+espuS4suOAguWmguaenOWAvOS4uiB1bmRlZmluZWQg5oiWIG51bGwg5bCG6L2s5Li656m65a2X56ym5Liy77yM5aaC5p6c5YC85LiN5piv5a2X56ym5Liy57G75Z6L5bCG6L2s5Li65a2X56ym5Liy44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iubm9ybWFsaXplU3RyaW5nXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgdHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nI3N0cmluZ19pbnN0YW5jZXN8U3RyaW5nfVxuICogQHNpbmNlIDQuMy4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOW+heWkhOeQhueahOWAvFxuICogQHJldHVybnMge3N0cmluZ30g6KeE5pW05YyW55qE5YC8XG4gKiBAZXhhbXBsZVxuICogbm9ybWFsaXplU3RyaW5nKCk7IC8vICcnXG4gKiBub3JtYWxpemVTdHJpbmcodW5kZWZpbmVkKTsgLy8gJydcbiAqIG5vcm1hbGl6ZVN0cmluZyh2b2lkIDApOyAvLyAnJ1xuICogbm9ybWFsaXplU3RyaW5nKG51bGwpOyAvLyAnJ1xuICpcbiAqIG5vcm1hbGl6ZVN0cmluZyh0cnVlKTsgLy8gJ3RydWUnXG4gKiBub3JtYWxpemVTdHJpbmcoTmFOKTsgLy8gJ05hTidcbiAqIG5vcm1hbGl6ZVN0cmluZygxKTsgLy8gJzEnXG4gKiBub3JtYWxpemVTdHJpbmcoJ2EnKTsgLy8gJ2EnXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyh2YWx1ZSkge1xuICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemVTdHJpbmc7XG4iLCJpbXBvcnQgbm9ybWFsaXplU3RyaW5nIGZyb20gJy4vbm9ybWFsaXplU3RyaW5nJztcblxuLyoqXG4gKiDmoLzlvI/ljJbpk7booYzljaHlj7dcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5mb3JtYXRCYW5rQ2FyZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFua0NhcmRObyDopoHlpITnkIbnmoTlrZfnrKbkuLJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIiBcIl0g6Ze06ZqU5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTRdIOmXtOmalOmVv+W6plxuICogQHJldHVybnMge3N0cmluZ30g5qC85byP5YyW55qE6ZO26KGM5Y2h5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIDE55L2N6ZO26KGM5Y2hXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MDAxOCcpO1xuICogLy8gPT4gNjIyOCA0ODA0IDAyNTYgNDg5MCAwMThcbiAqXG4gKiAvLyAxNuS9jemTtuihjOWNoVxuICogZm9ybWF0QmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnKTtcbiAqIC8vID0+IDYyMjggNDgwNCAwMjU2IDQ4OTBcbiAqXG4gKiAvLyDohLHmlY/pk7booYzljaFcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4KioqKioqKio4OTAnKTtcbiAqIC8vID0+IDYyMjggKioqKiAqKioqIDg5MFxuICpcbiAqIC8vIDE25L2N6ZO26KGM5Y2h77yMXCItXCLpl7TpmpRcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwJywge2NoYXI6ICctJ30pO1xuICogLy8gPT4gNjIyOC00ODA0LTAyNTYtNDg5MFxuICpcbiAqL1xuZnVuY3Rpb24gZm9ybWF0QmFua0NhcmQoYmFua0NhcmRObyA9ICcnLCB7IGNoYXIgPSAnICcsIGxlbmd0aCA9IDQgfSA9IHt9KSB7XG4gIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYCgueyR7bGVuZ3RofX0pYCwgJ2cnKTtcbiAgY29uc3QgcmVnQ2hhciA9IG5ldyBSZWdFeHAoYCR7Y2hhcn1gLCAnZycpO1xuXG4gIGNvbnN0IHJlYWxWYWx1ZSA9IG5vcm1hbGl6ZVN0cmluZyhiYW5rQ2FyZE5vKS5yZXBsYWNlKHJlZ0NoYXIsICcnKTtcblxuICBjb25zdCBuZWVkUmVtb3ZlTGFzdENoYXIgPSByZWFsVmFsdWUubGVuZ3RoICUgbGVuZ3RoID09PSAwO1xuXG4gIGNvbnN0IHN0ciA9IHJlYWxWYWx1ZS5yZXBsYWNlKHJlZywgYCQxJHtjaGFyfWApO1xuXG4gIHJldHVybiBuZWVkUmVtb3ZlTGFzdENoYXIgPyBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0QmFua0NhcmQ7XG4iLCIvKipcbiAqIOabv+aNouWtl+espu+8jOW6lOeUqOWcuuaZr+Wmgu+8muiEseaVj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLnJlcGxhY2VDaGFyXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIg6KaB5aSE55CG55qE5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnN0YXJ0PTNdIOW8gOWni+S9jee9rlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmVuZD0tNF0g57uT5p2f5L2N572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIipcIl0g5pu/5o2i5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucmVwZWF0XSDmm7/mjaLlrZfnrKbnmoTph43lpI3mrKHmlbDvvIzpu5jorqTkuLrmm7/mjaLlhoXlrrnplb/luqbvvIzlj6/orr7nva7kuLrlm7rlrprlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5leGNsdWRlXSDmjpLpmaTlrZfnrKbvvIzlpoLmnpzmjIflrprmjpLpmaTpobnvvIxyZXBlYXTorr7nva7ml6DmlYhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOWkhOeQhuWQjueahOWtl+esplxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmiYvmnLrlj7dcbiAqIHJlcGxhY2VDaGFyKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gMTMwKioqKjAwMDBcbiAqXG4gKiAvLyDouqvku73or4FcbiAqIHJlcGxhY2VDaGFyKCcxMzA3MDExOTkzMTAzMDIyODgnKTtcbiAqIC8vID0+IDEzMCoqKioqKioqKioqMjI4OFxuICpcbiAqIC8vIOmCrueusVxuICogY29uc3QgZW1haWwgPSAnMTIzNDVAcXEuY29tJ1xuICogcmVwbGFjZUNoYXIoZW1haWwsIHtzdGFydDogMiwgZW5kOiBlbWFpbC5pbmRleE9mKCdAJyksIHJlcGVhdDogNH0pO1xuICogLy8gPT4gMTIqKioqQHFxLmNvbVxuICpcbiAqIC8vIOmTtuihjOWNoeWPt1xuICogcmVwbGFjZUNoYXIoJzYyMjg0ODA0MDI1NjQ4OTAwMTgnLCB7c3RhcnQ6IDAsIGVuZDogLTQsIHJlcGVhdDogNH0pO1xuICogLy8gPT4gKioqKjAwMThcbiAqXG4gKiAvLyDluKbmoLzlvI/nmoTpk7booYzljaHlj7dcbiAqIHJlcGxhY2VDaGFyKCc2MjI4IDQ4MDQgMDI1NiA0ODkwIDAxOCcsIHtzdGFydDogNCwgZW5kOiAtNCwgZXhjbHVkZTogJyAnfSk7XG4gKiAvLyA9PiA2MjI4ICoqKiogKioqKiAqKioqIDAxOFxuICpcbiAqIC8vIOeUqOaIt+WQjVxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUNoYXIoc3RyID0gJycsIHsgc3RhcnQgPSAzLCBlbmQgPSAtNCwgY2hhciA9ICcqJywgcmVwZWF0LCBleGNsdWRlIH0gPSB7fSkge1xuICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuXG4gIC8vIOW8gOWni+S9jee9rui2hei/h3N0cumVv+W6plxuICBpZiAoTWF0aC5hYnMoc3RhcnQpID49IHN0ckxlbikge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID49IDAgPyBzdGFydCA6IHN0ckxlbiArIHN0YXJ0O1xuICBlbmQgPSBlbmQgPj0gMCA/IGVuZCA6IHN0ckxlbiArIGVuZDtcblxuICAvLyDlvIDlp4vkvY3nva7lpKfkuo7nu5PmnZ/kvY3nva5cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBsZXQgbWlkZGxlU3RyID0gc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcblxuICBpZiAoZXhjbHVkZSkge1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFteJHtleGNsdWRlfV1gLCAnZycpO1xuICAgIG1pZGRsZVN0ciA9IG1pZGRsZVN0ci5yZXBsYWNlKHJlZywgY2hhcik7XG4gIH0gZWxzZSB7XG4gICAgcmVwZWF0ID0gdHlwZW9mIHJlcGVhdCA9PT0gJ251bWJlcicgJiYgcmVwZWF0ID49IDAgPyByZXBlYXQgOiBtaWRkbGVTdHIubGVuZ3RoO1xuICAgIG1pZGRsZVN0ciA9IGNoYXIucmVwZWF0KHJlcGVhdCk7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBzdGFydCkgKyBtaWRkbGVTdHIgKyBzdHIuc3Vic3RyaW5nKGVuZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlcGxhY2VDaGFyO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuLy8g566A5L2TXG5jb25zdCBjaG5OdW1iZXJDaGFyID0gWyfpm7YnLCAn5LiAJywgJ+S6jCcsICfkuIknLCAn5ZubJywgJ+S6lCcsICflha0nLCAn5LiDJywgJ+WFqycsICfkuZ0nXTtcbmNvbnN0IGNoblVuaXRDaGFyID0gWycnLCAn5Y2BJywgJ+eZvicsICfljYMnXTtcblxuLy8g57mB5L2TXG5jb25zdCBiaWc1TnVtYmVyQ2hhciA9IFsn6Zu2JywgJ+WjuScsICfotLAnLCAn5Y+BJywgJ+iChicsICfkvI0nLCAn6ZmGJywgJ+afkicsICfmjYwnLCAn546WJ107XG5jb25zdCBiaWc1VW5pdENoYXIgPSBbJycsICfmi74nLCAn5L2wJywgJ+S7nyddO1xuXG4vLyDmlbDlrZflrZfnrKbjgIHorqHmlbDljZXkvY1cblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgbnVtYmVyQ2hhcjtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgdW5pdENoYXI7XG5cbi8qKlxuICogQHR5cGUge3N0cmluZ1tdfVxuICogQHByaXZhdGVcbiAqL1xubGV0IHVuaXRTZWN0aW9uO1xuXG4vKipcbiAqIOavj+S4quWwj+iKgueahOWGhemDqOi/m+ihjOi9rOWMllxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc2VjdGlvbiDmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOWMlueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBzZWN0aW9uVG9DaGluZXNlKHNlY3Rpb24pIHtcbiAgbGV0IHN0ciA9ICcnLFxuICAgIGNobnN0ciA9ICcnLFxuICAgIHplcm8gPSBmYWxzZSwgLy96ZXJv5Li65piv5ZCm6L+b6KGM6KGl6Zu277yMIOesrOS4gOasoei/m+ihjOWPluS9meeUseS6juS4uuS4quS9jeaVsO+8jOm7mOiupOS4jeihpembtlxuICAgIHVuaXRQb3MgPSAwO1xuXG4gIHdoaWxlIChzZWN0aW9uID4gMCkge1xuICAgIC8vIOWvueaVsOWtl+WPluS9mTEw77yM5b6X5Yiw55qE5pWw5Y2z5Li65Liq5L2N5pWwXG4gICAgbGV0IHYgPSBzZWN0aW9uICUgMTA7XG5cbiAgICAvL+WmguaenOaVsOWtl+S4uumbtu+8jOWImeWvueWtl+espuS4sui/m+ihjOihpembtlxuICAgIGlmICh2ID09IDApIHtcbiAgICAgIGlmICh6ZXJvKSB7XG4gICAgICAgIC8v5aaC5p6c6YGH5Yiw6L+e57ut5aSa5qyh5Y+W5L2Z6YO95pivMO+8jOmCo+S5iOWPqumcgOihpeS4gOS4qumbtuWNs+WPr1xuICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICAgIGNobnN0ciA9IG51bWJlckNoYXJbdl0gKyBjaG5zdHI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8v56ys5LiA5qyh5Y+W5L2Z5LmL5ZCO77yM5aaC5p6c5YaN5qyh5Y+W5L2Z5Li66Zu277yM5YiZ6ZyA6KaB6KGl6Zu2XG4gICAgICB6ZXJvID0gdHJ1ZTtcbiAgICAgIHN0ciA9IG51bWJlckNoYXJbdl07XG4gICAgICBzdHIgKz0gdW5pdENoYXJbdW5pdFBvc107XG4gICAgICBjaG5zdHIgPSBzdHIgKyBjaG5zdHI7XG4gICAgfVxuICAgIHVuaXRQb3MrKztcbiAgICBzZWN0aW9uID0gTWF0aC5mbG9vcihzZWN0aW9uIC8gMTApO1xuICB9XG4gIHJldHVybiBjaG5zdHI7XG59XG5cbi8qKlxuICog6L2s5o2i5pW05pWwXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6KaB6L2s5o2i55qE5pWw5a2XXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDkuK3mlofmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY29udmVydEludGVnZXIobnVtKSB7XG4gIG51bSA9IE1hdGguZmxvb3IobnVtKTtcblxuICBsZXQgdW5pdFBvcyA9IDA7XG4gIGxldCBzdHJJbnMgPSAnJyxcbiAgICBjaG5TdHIgPSAnJztcbiAgbGV0IG5lZWRaZXJvID0gZmFsc2U7XG5cbiAgaWYgKG51bSA9PT0gMCkge1xuICAgIHJldHVybiBudW1iZXJDaGFyWzBdO1xuICB9XG4gIHdoaWxlIChudW0gPiAwKSB7XG4gICAgdmFyIHNlY3Rpb24gPSBudW0gJSAxMDAwMDtcbiAgICBpZiAobmVlZFplcm8pIHtcbiAgICAgIGNoblN0ciA9IG51bWJlckNoYXJbMF0gKyBjaG5TdHI7XG4gICAgfVxuICAgIHN0cklucyA9IHNlY3Rpb25Ub0NoaW5lc2Uoc2VjdGlvbik7XG4gICAgc3RySW5zICs9IHNlY3Rpb24gIT09IDAgPyB1bml0U2VjdGlvblt1bml0UG9zXSA6IHVuaXRTZWN0aW9uWzBdO1xuICAgIGNoblN0ciA9IHN0cklucyArIGNoblN0cjtcbiAgICBuZWVkWmVybyA9IHNlY3Rpb24gPCAxMDAwICYmIHNlY3Rpb24gPiAwO1xuICAgIG51bSA9IE1hdGguZmxvb3IobnVtIC8gMTAwMDApO1xuICAgIHVuaXRQb3MrKztcbiAgfVxuICByZXR1cm4gY2huU3RyO1xufVxuXG4vKipcbiAqIOi9rOaNouWwj+aVsFxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOimgei9rOaNoueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBjb252ZXJ0RGVjaW1hbChudW0pIHtcbiAgY29uc3QgbnVtU3RyID0gbnVtICsgJyc7XG4gIGNvbnN0IGluZGV4ID0gbnVtU3RyLmluZGV4T2YoJy4nKTtcblxuICBsZXQgcmV0ID0gJyc7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBsZXQgZGVjaW1hbFN0ciA9IG51bVN0ci5zbGljZShpbmRleCArIDEpO1xuICAgIHJldCA9IG1hcE51bWJlckNoYXIocGFyc2VJbnQoZGVjaW1hbFN0cikpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmmKDlsITkuLrkuK3mlofmlbDlrZdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDopoHlpITnkIbnmoTmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi/lOWbnuS4reaWh+aVsOWtl+eahOaYoOWwhFxuICovXG5mdW5jdGlvbiBtYXBOdW1iZXJDaGFyKG51bSkge1xuICBjb25zdCBudW1TdHIgPSBudW0gKyAnJztcbiAgbGV0IHJldCA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBudW1TdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXQgKz0gbnVtYmVyQ2hhcltwYXJzZUludChudW1TdHJbaV0pXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog5pWw5a2X6L2s5Lit5paH5pWw5a2XXG4gKiDkuI3lnKjlronlhajmlbDlrZcgLTkwMDcxOTkyNTQ3NDA5OTHvvZ45MDA3MTk5MjU0NzQwOTkxIOWGhe+8jOWkhOeQhuS8muacieW8guW4uFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLm51bWJlclRvQ2hpbmVzZVxuICogQHNpbmNlIDEuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOaVsOWtl1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuYmlnNT1mYWxzZV0g57mB5L2TXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnVuaXQ9dHJ1ZV0g6K6h5pWw5Y2V5L2NXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIueCuVwiXSDkuK3mloflsI/mlbDngrlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy56ZXJvPVwi6Zu2XCJdIOiuvue9rjDjgILluLjnlKjphY3nva4g44CHXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubmVnYXRpdmU9XCLotJ9cIl0g6LSf5pWw5YmN6Z2i55qE5a2XXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMudW5pdENvbmZpZ10g6IqC54K55Y2V5L2N6YWN572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdENvbmZpZy53PVwi5LiHXCJdIOiuvue9ruiuoeaVsOWNleS9jeS4h+OAguW4uOeUqOmFjee9riDokKxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy51bml0Q29uZmlnLnk9XCLkur9cIl0g6K6+572u6K6h5pWw5Y2V5L2N5Lq/44CC5bi455So6YWN572uIOWEhFxuICogQHJldHVybnMge3N0cmluZ30g5Lit5paH5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDApO1xuICogLy8gPT4g5LiA55m+XG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMC4zKTtcbiAqIC8vID0+IOS4gOeZvueCueS4iVxuICpcbiAqIC8vIOe5geS9k1xuICogbnVtYmVyVG9DaGluZXNlKDEwMCwge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sFxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDAuMywge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sOeCueWPgVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMjM0NTY3ODkwLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55ou+6LSw5Lq/5Y+B5Luf6IKG5L2w5LyN5ou+6ZmG5LiH5p+S5Luf5o2M5L2w546W5ou+XG4gKlxuICogLy8g5LiN5bim6K6h5pWw5Y2V5L2NXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3pm7ZcbiAqXG4gKiAvLyDkuI3luKborqHmlbDljZXkvY3vvIzkv67mlLkwXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlLCB6ZXJvOifjgIcnfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3jgIdcbiAqXG4gKi9cbmZ1bmN0aW9uIG51bWJlclRvQ2hpbmVzZShcbiAgbnVtLFxuICB7XG4gICAgYmlnNSA9IGZhbHNlLFxuICAgIHVuaXQgPSB0cnVlLFxuICAgIGRlY2ltYWwgPSAn54K5JyxcbiAgICB6ZXJvID0gJycsXG4gICAgbmVnYXRpdmUgPSAn6LSfJyxcbiAgICB1bml0Q29uZmlnID0ge1xuICAgICAgdzogJ+S4hycsIC8vICfokKwnXG4gICAgICB5OiAn5Lq/JyAvLyAn5YSEJ1xuICAgIH1cbiAgfSA9IHt9XG4pIHtcbiAgLy8g6Z2e5pWw5a2XIOaIliBOYU4g5LiN5aSE55CGXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyB8fCBpc05hTihudW0pKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2Fybihg5Y+C5pWw6ZSZ6K+vICR7bnVtfe+8jOivt+S8oOWFpeaVsOWtl2ApO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOi2hei/h+WuieWFqOaVsOWtl+aPkOekulxuICBjaGVja0JvdW5kYXJ5KG51bSk7XG5cbiAgLy8g6K6+572u5pWw5a2X5a2X56ym5ZKM6K6h5pWw5Y2V5L2NXG4gIGlmIChiaWc1KSB7XG4gICAgbnVtYmVyQ2hhciA9IGJpZzVOdW1iZXJDaGFyLnNsaWNlKCk7XG4gICAgdW5pdENoYXIgPSBiaWc1VW5pdENoYXIuc2xpY2UoKTtcbiAgfSBlbHNlIHtcbiAgICBudW1iZXJDaGFyID0gY2huTnVtYmVyQ2hhci5zbGljZSgpO1xuICAgIHVuaXRDaGFyID0gY2huVW5pdENoYXIuc2xpY2UoKTtcbiAgfVxuXG4gIC8vIOiuvue9ruiKgueCueiuoeaVsOWNleS9je+8jOS4h+OAgeS6v+OAgeS4h+S6v1xuICBjb25zdCBkZWZhdWx0VW5pdFdhbiA9ICfkuIcnO1xuICBjb25zdCBkZWZhdWx0VW5pdFlpID0gJ+S6vyc7XG4gIHVuaXRTZWN0aW9uID0gWycnLCB1bml0Q29uZmlnLncgfHwgZGVmYXVsdFVuaXRXYW4sIHVuaXRDb25maWcueSB8fCBkZWZhdWx0VW5pdFlpLCB1bml0Q29uZmlnLncgJiYgdW5pdENvbmZpZy55ID8gdW5pdENvbmZpZy53ICsgdW5pdENvbmZpZy55IDogZGVmYXVsdFVuaXRXYW4gKyBkZWZhdWx0VW5pdFlpXTtcblxuICAvLyDorr7nva4wXG4gIGlmICh6ZXJvKSB7XG4gICAgbnVtYmVyQ2hhclswXSA9IHplcm87XG4gIH1cblxuICAvLyDliY3nva7lrZfnrKbvvIzotJ/mlbDlpITnkIZcbiAgY29uc3QgcHJlU3RyID0gbnVtIDwgMCA/IG5lZ2F0aXZlIDogJyc7XG5cbiAgLy8g5pW05pWw5ZKM5bCP5pWwXG4gIGxldCBjaG5JbnRlZ2VyLCBjaG5EZWNpbWFsO1xuXG4gIC8vIOWkhOeQhuaVtOaVsFxuICBpZiAodW5pdCkge1xuICAgIGNobkludGVnZXIgPSBjb252ZXJ0SW50ZWdlcihudW0pO1xuICB9IGVsc2Uge1xuICAgIGNobkludGVnZXIgPSBtYXBOdW1iZXJDaGFyKE1hdGguZmxvb3IobnVtKSk7XG4gIH1cblxuICAvLyDlpITnkIblsI/mlbBcbiAgY2huRGVjaW1hbCA9IGNvbnZlcnREZWNpbWFsKG51bSk7XG5cbiAgcmV0dXJuIGNobkRlY2ltYWwgPyBgJHtwcmVTdHJ9JHtjaG5JbnRlZ2VyfSR7ZGVjaW1hbH0ke2NobkRlY2ltYWx9YCA6IGAke3ByZVN0cn0ke2NobkludGVnZXJ9YDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbnVtYmVyVG9DaGluZXNlO1xuIiwiLyoqXG4gKiDlrZfoioLovazmjaLlrZjlgqjljZXkvY3vvIzkv53nlZky5L2N5bCP5pWw54K5XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuYnl0ZXNUb1NpemVcbiAqIEBzaW5jZSAzLjguMFxuICogQHBhcmFtIHtudW1iZXJ9IGJ5dGVzIOWtl+iKguWkp+Wwj1xuICogQHJldHVybnMge3N0cmluZ30g5a2Y5YKo5Y2V5L2N5YC8XG4gKiBAZXhhbXBsZVxuICpcbiAqIGJ5dGVzVG9TaXplKDApO1xuICogLy8gPT4gMCBCXG4gKlxuICogYnl0ZXNUb1NpemUoMTAyNCk7XG4gKiAvLyA9PiAxIEtCXG4gKlxuICogYnl0ZXNUb1NpemUoMy4yMTMyNDMqMTAyNCoxMDI0KTtcbiAqIC8vID0+IDMuMjEgTUJcbiAqXG4gKiBieXRlc1RvU2l6ZSgxMDI0KjEwMjQqMTAyNCk7XG4gKiAvLyA9PiAxIEdCXG4gKi9cbmZ1bmN0aW9uIGJ5dGVzVG9TaXplKGJ5dGVzKSB7XG4gIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEInO1xuICBjb25zdCBrID0gMTAyNDtcbiAgLy8g5a2Y5YKo5Y2V5L2NXG4gIGNvbnN0IHNpemVzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcblxuICByZXR1cm4gc2l6ZXNbaV0gPyBgJHtOdW1iZXIoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoMikpfSAke3NpemVzW2ldfWAgOiBieXRlcyArICcnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBieXRlc1RvU2l6ZTtcbiIsImltcG9ydCBpc0lkQ2FyZCBmcm9tICcuL2lzSWRDYXJkJztcblxuY29uc3QgcmVnSWRDYXJkID0gL14oPzxwcm92aW5jZT5cXGR7Mn0pKD88Y2l0eT5cXGR7Mn0pKD88YXJlYT5cXGR7Mn0pKD88eWVhcj4oPzpcXGR7Mn0pP1xcZHsyfSkoPzxtb250aD5cXGR7Mn0pKD88ZGF5PlxcZHsyfSlcXGR7Mn0oPzxnZW5kZXI+XFxkKSg/OlxcZHxYKT8kL2k7XG5cbmNvbnN0IFByb3ZpbmNlcyA9IFtcbiAgLy8g5Y2O5YyX5Zyw5Yy677ya5YyX5Lqs5biCfDExMDAwMO+8jOWkqea0peW4gnwxMjAwMDDvvIzmsrPljJfnnIF8MTMwMDAw77yM5bGx6KW/55yBfDE0MDAwMO+8jOWGheiSmeWPpOiHquayu+WMunwxNTAwMDBcbiAgWycxMScsICfljJfkuqzluIInXSxcbiAgWycxMicsICflpKnmtKXluIInXSxcbiAgWycxMycsICfmsrPljJfnnIEnXSxcbiAgWycxNCcsICflsbHopb/nnIEnXSxcbiAgWycxNScsICflhoXokpnlj6Toh6rmsrvljLonXSxcblxuICAvLyDkuJzljJflnLDljLrvvJog6L695a6B55yBfDIxMDAwMO+8jOWQieael+ecgXwyMjAwMDDvvIzpu5HpvpnmsZ/nnIF8MjMwMDAwXG4gIFsnMjEnLCAn6L695a6B55yBJ10sXG4gIFsnMjInLCAn5ZCJ5p6X55yBJ10sXG4gIFsnMjMnLCAn6buR6b6Z5rGf55yBJ10sXG5cbiAgLy8g5Y2O5Lic5Zyw5Yy677yaIOS4iua1t+W4gnwzMTAwMDDvvIzmsZ/oi4/nnIF8MzIwMDAw77yM5rWZ5rGf55yBfDMzMDAwMO+8jOWuieW+veecgXwzNDAwMDDvvIznpo/lu7rnnIF8MzUwMDAw77yM5rGf6KW/55yBfDM2MDAwMO+8jOWxseS4nOecgXwzNzAwMDBcbiAgWyczMScsICfkuIrmtbfluIInXSxcbiAgWyczMicsICfmsZ/oi4/nnIEnXSxcbiAgWyczMycsICfmtZnmsZ/nnIEnXSxcbiAgWyczNCcsICflronlvr3nnIEnXSxcbiAgWyczNScsICfnpo/lu7rnnIEnXSxcbiAgWyczNicsICfmsZ/opb/nnIEnXSxcbiAgWyczNycsICflsbHkuJznnIEnXSxcblxuICAvLyDljY7kuK3lnLDljLrvvJog5rKz5Y2X55yBfDQxMDAwMO+8jOa5luWMl+ecgXw0MjAwMDDvvIzmuZbljZfnnIF8NDMwMDAwXG4gIFsnNDEnLCAn5rKz5Y2X55yBJ10sXG4gIFsnNDInLCAn5rmW5YyX55yBJ10sXG4gIFsnNDMnLCAn5rmW5Y2X55yBJ10sXG5cbiAgLy8g5Y2O5Y2X5Zyw5Yy677ya5bm/5Lic55yBfDQ0MDAwMO+8jOW5v+ilv+WjruaXj+iHquayu+WMunw0NTAwMDDvvIzmtbfljZfnnIF8NDYwMDAwXG4gIFsnNDQnLCAn5bm/5Lic55yBJ10sXG4gIFsnNDUnLCAn5bm/6KW/5aOu5peP6Ieq5rK75Yy6J10sXG4gIFsnNDYnLCAn5rW35Y2X55yBJ10sXG5cbiAgLy8g6KW/5Y2X5Zyw5Yy677ya6YeN5bqG5biCfDUwMDAwMO+8jOWbm+W3neecgXw1MTAwMDDvvIzotLXlt57nnIF8NTIwMDAw77yM5LqR5Y2X55yBfDUzMDAwMO+8jOilv+iXj+iHquayu+WMunw1NDAwMDBcbiAgWyc1MCcsICfph43luobluIInXSxcbiAgWyc1MScsICflm5vlt53nnIEnXSxcbiAgWyc1MicsICfotLXlt57nnIEnXSxcbiAgWyc1MycsICfkupHljZfnnIEnXSxcbiAgWyc1NCcsICfopb/ol4/oh6rmsrvljLonXSxcblxuICAvLyDopb/ljJflnLDljLrvvJog6ZmV6KW/55yBfDYxMDAwMO+8jOeUmOiCg+ecgXw2MjAwMDDvvIzpnZLmtbfnnIF8NjMwMDAw77yM5a6B5aSP5Zue5peP6Ieq5rK75Yy6fDY0MDAwMO+8jOaWsOeWhue7tOWQvuWwlOiHquayu+WMunw2NTAwMDBcbiAgWyc2MScsICfpmZXopb/nnIEnXSxcbiAgWyc2MicsICfnlJjogoPnnIEnXSxcbiAgWyc2MycsICfpnZLmtbfnnIEnXSxcbiAgWyc2NCcsICflroHlpI/lm57ml4/oh6rmsrvljLonXSxcbiAgWyc2NScsICfmlrDnlobnu7TlkL7lsJToh6rmsrvljLonXSxcblxuICAvLyDlj7Dmub7lnLDljLrvvJrlj7Dmub7nnIF8NzEwMDAwXG4gIC8vIOWPsOa5vuWxheawkeWFrOawkei6q+S7veWPt+eggeWcsOWdgOeggeS4ujgzMDAwMO+8jOWPguiAgyBodHRwOi8vd3d3LndhbndlaWJhaWtlLmNvbS93aWtpLeS4reWNjuS6uuawkeWFseWSjOWbveihjOaUv+WMuuWIkuS7o+eggV8oN+WMuinjgIFodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/muK/mvrPlj7DlsYXmsJHlsYXkvY/or4FcbiAgWyc3MScsICflj7Dmub7nnIEnXSxcbiAgWyc4MycsICflj7Dmub7nnIEnXSxcblxuICAvLyDmuK/mvrPlnLDljLrvvJrpppnmuK/nibnliKvooYzmlL/ljLp8ODEwMDAw77yM5r6z6Zeo54m55Yir6KGM5pS/5Yy6fDgyMDAwMFxuICBbJzgxJywgJ+mmmea4r+eJueWIq+ihjOaUv+WMuiddLFxuICBbJzgyJywgJ+a+s+mXqOeJueWIq+ihjOaUv+WMuiddXG5dO1xuXG4vLyDnrKzkuIDkvY3mlbDlrZfmmK/ku6XliY3nmoTlpKfljLrliLbku6PnoIHjgILnrKzkuozkvY3mmK/lpKfljLrmiYDlnKjnnIHluILnvJbnoIHjgILlhajlm73lhbHliIbkuLo45Liq5aSn5Yy677ya5Y2O5YyX77yIMe+8ieOAgeS4nOWMl++8iDLvvInjgIHljY7kuJzvvIgz77yJ44CB5Lit5Y2X77yINO+8ieOAgeilv+WNl++8iDXvvInjgIHopb/ljJfvvIg277yJ44CB5Y+w5rm+77yIN++8ieWSjOa4r+a+s++8iDjvvInjgIJcbi8vIGNvbnN0IFJlZ2lvbnMgPSBbXG4vLyAgIFsnMScsICfljY7ljJflnLDljLonXSxcbi8vICAgWycyJywgJ+S4nOWMl+WcsOWMuiddLFxuLy8gICBbJzMnLCAn5Y2O5Lic5Zyw5Yy6J10sXG4vLyAgIFsnNCcsICfkuK3ljZflnLDljLonXSxcbi8vICAgWyc1JywgJ+ilv+WNl+WcsOWMuiddLFxuLy8gICBbJzYnLCAn6KW/5YyX5Zyw5Yy6J10sXG4vLyAgIFsnNycsICflj7Dmub7lnLDljLonXSxcbi8vICAgWyc4JywgJ+a4r+a+s+WcsOWMuiddXG4vLyBdO1xuXG4vKipcbiAqIOino+aekOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE144CBMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqIFxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IucGFyc2VJZENhcmRcbiAqIEBzaW5jZSA0LjAuMFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0v5bGF5rCR6Lqr5Lu96K+B5Y+356CBfOWxheawkei6q+S7veivgeWPt+eggX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCDouqvku73or4Hlj7fnoIHvvIzmlK/mjIExNeS9jVxuICogQHJldHVybnMgbnVsbCDmiJYg55yB5Lu944CB55Sf5pel44CB5oCn5Yir77yM55yBL+W4gi/ljLov5bm0L+aciC/ml6Uv5oCn5Yir57yW56CBXG4gKiBAZXhhbXBsZVxuICogcGFyc2VJZENhcmQoJzEyMzQ1Njc4OTEyMzQ1NicpO1xuICogLy8gPT4gbnVsbFxuICogXG4gKiAvLyAxOOS9jei6q+S7veivgeWPt+eggVxuICogcGFyc2VJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4OCcpXG4gKiAvLyA9PlxuICoge1xuICBiaXJ0aGRheTogXCIxOTkzLTEwLTMwXCIsXG4gIGdlbmRlcjogXCLlpbNcIixcbiAgb3JpZ2luOiB7IHByb3ZpbmNlOiBcIjEzXCIsIGNpdHk6IFwiMDdcIiwgYXJlYTogXCIwMVwiLCB5ZWFyOiBcIjE5OTNcIiwgbW9udGg6IFwiMTBcIiwgZGF5OiBcIjMwXCIsIGdlbmRlcjogXCI4XCIgfSxcbiAgcHJvdmluY2U6IFwi5rKz5YyX55yBXCJcbn1cbiAqIC8vIDE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBwYXJzZUlkQ2FyZCgnMTMwNzAxOTMxMDMwMjI4Jyk7XG4gKiAvLyA9PlxuICoge1xuICBiaXJ0aGRheTogXCI5My0xMC0zMFwiLFxuICBnZW5kZXI6IFwi5aWzXCIsXG4gIG9yaWdpbjogeyBwcm92aW5jZTogXCIxM1wiLCBjaXR5OiBcIjA3XCIsIGFyZWE6IFwiMDFcIiwgeWVhcjogXCI5M1wiLCBtb250aDogXCIxMFwiLCBkYXk6IFwiMzBcIiwgZ2VuZGVyOiBcIjhcIiB9LFxuICBwcm92aW5jZTogXCLmsrPljJfnnIFcIlxufVxuICogXG4gKi9cbmZ1bmN0aW9uIHBhcnNlSWRDYXJkKGlkKSB7XG4gIGlmICghaXNJZENhcmQoaWQsIHsgbG9vc2U6IHRydWUgfSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGluZm8gPSByZWdJZENhcmQuZXhlYyhpZCk7XG5cbiAgaWYgKCFpbmZvKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHR5cGUge3sgcHJvdmluY2U6IHN0cmluZywgY2l0eTogc3RyaW5nLCBhcmVhOiBzdHJpbmcsIHllYXI6IHN0cmluZywgbW9udGg6IHN0cmluZywgZGF5OiBzdHJpbmcsIGdlbmRlcjogc3RyaW5nIH19XG4gICAqXG4gICAqL1xuICBsZXQgb3JpZ2luID0ge1xuICAgIHByb3ZpbmNlOiAnJyxcbiAgICBjaXR5OiAnJyxcbiAgICBhcmVhOiAnJyxcbiAgICB5ZWFyOiAnJyxcbiAgICBtb250aDogJycsXG4gICAgZGF5OiAnJyxcbiAgICBnZW5kZXI6ICcnXG4gIH07XG5cbiAgaWYgKGluZm8uZ3JvdXBzKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbiA9IGluZm8uZ3JvdXBzO1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbiA9IHtcbiAgICAgIHByb3ZpbmNlOiBpbmZvWzFdLFxuICAgICAgY2l0eTogaW5mb1syXSxcbiAgICAgIGFyZWE6IGluZm9bM10sXG4gICAgICB5ZWFyOiBpbmZvWzRdLFxuICAgICAgbW9udGg6IGluZm9bNV0sXG4gICAgICBkYXk6IGluZm9bNl0sXG4gICAgICBnZW5kZXI6IGluZm9bN11cbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHJvdmluY2UgPSBQcm92aW5jZXMuZmluZCgoaXRlbSkgPT4gaXRlbVswXSA9PT0gb3JpZ2luLnByb3ZpbmNlKTtcblxuICBpZiAoIXByb3ZpbmNlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBiaXJ0aGRheSA9IGAke29yaWdpbi55ZWFyfS0ke29yaWdpbi5tb250aH0tJHtvcmlnaW4uZGF5fWA7XG4gIGNvbnN0IGdlbmRlciA9IE51bWJlcihvcmlnaW4uZ2VuZGVyKSAlIDIgPT09IDAgPyAn5aWzJyA6ICfnlLcnO1xuICAvLyBjb25zdCByZWdpb24gPSBSZWdpb25zLmZpbmQoaXRlbSA9PiBpdGVtWzBdID09PSBvcmlnaW4ucHJvdmluY2U/LnN1YnN0cmluZygwLCAxKSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyByZWdpb24sXG4gICAgcHJvdmluY2U6IHByb3ZpbmNlWzFdLFxuICAgIGJpcnRoZGF5LFxuICAgIGdlbmRlcixcbiAgICBvcmlnaW5cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VJZENhcmQ7XG4iLCIvLyAgZmlsZeOAgWJsb2Lmlofku7blpoLkvZXpooTop4jlm77niYfvvJ9cbi8vICDmlrnms5Ux77ya5bCGZmlsZeaIluiAhWJsb2Lnsbvlnovmlofku7bovazmiJBiYXNlNjTmlbDmja7vvIzlho3kvZzkuLpzcmPotYvlgLznu5lpbWfmoIfnrb5cbi8vICDmlrnms5Uy77ya5L2/55SoIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpIOS4umJsb2LjgIFmaWxlIOWIm+W7uuS4gOS4quaMh+WQkeivpeWPguaVsOWvueixoeeahFVSTFxuXG4vKipcbiAqIOWwhiBCbG9iIOaIliBGaWxlIOWvueixoei9rOaIkCBkYXRhOlVSTCDmoLzlvI/nmoQgQmFzZTY0IOWtl+espuS4suOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmJsb2JUb0RhdGFVUkxcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9BUEkvRmlsZVJlYWRlci9yZWFkQXNEYXRhVVJMfEZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTCgpfVxuICogQHNpbmNlIDQuMS4wXG4gKiBAcGFyYW0ge0Jsb2J9IGJsb2IgQmxvYiDmiJYgRmlsZSDlr7nosaFcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IGRhdGE6VVJMIOagvOW8j+eahCBCYXNlNjQg5a2X56ym5Liy44CCXG4gKiBAZXhhbXBsZVxuICogY29uc3QgYUZpbGVQYXJ0cyA9IFsnPGEgaWQ9XCJhXCI+PGIgaWQ9XCJiXCI+aGV5ITwvYj48L2E+J107IC8vIOS4gOS4quWMheWQq0RPTVN0cmluZ+eahOaVsOe7hFxuICogY29uc3QgaHRtbEJsb2IgPSBuZXcgQmxvYihhRmlsZVBhcnRzLCB7IHR5cGU6ICd0ZXh0L2h0bWwnIH0pOyAvLyDlvpfliLAgYmxvYlxuICpcbiAqIGJsb2JUb0RhdGFVUkwoaHRtbEJsb2IpLnRoZW4oZGF0YT0+e1xuICogICBjb25zb2xlLmxvZyhkYXRhKTsgLy8gZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiB9KTtcbiAqXG4gKiBjb25zdCB0ZXh0QmxvYiA9IG5ldyBCbG9iKGFGaWxlUGFydHMsIHsgdHlwZTogJ3RleHQvcGxhaW4nIH0pO1xuICpcbiAqIGJsb2JUb0RhdGFVUkwodGV4dEJsb2IpLnRoZW4oZGF0YT0+e1xuICogICBjb25zb2xlLmxvZyhkYXRhKTsgLy8gZGF0YTp0ZXh0L3BsYWluO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIGJsb2JUb0RhdGFVUkwoYmxvYikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiByZWplY3QoZXJyb3IpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmxvYlRvRGF0YVVSTDtcbiIsIi8qKlxuICog5bCGIERhdGFVUkwg6L2s5Li6IEJsb2Ig5a+56LGhXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuZGF0YVVSTFRvQmxvYlxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvR2xvc3NhcnkvQmFzZTY0fEJhc2U2NH1cbiAqIEBzaW5jZSA0LjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGF1cmwgZGF0YTog5Y2P6K6u55qEVVJMXG4gKiBAcmV0dXJucyB7QmxvYn0gQmxvYiDlr7nosaFcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhdXJsID0gJ2RhdGE6dGV4dC9odG1sO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PSc7XG4gKiBkYXRhVVJMVG9CbG9iKGRhdGF1cmwpO1xuICovXG5mdW5jdGlvbiBkYXRhVVJMVG9CbG9iKGRhdGF1cmwpIHtcbiAgY29uc3QgYXJyID0gZGF0YXVybC5zcGxpdCgnLCcpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXTtcbiAgY29uc3QgYnN0ciA9IGF0b2IoYXJyWzFdKTtcbiAgbGV0IG4gPSBic3RyLmxlbmd0aDtcbiAgY29uc3QgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcblxuICB3aGlsZSAobi0tKSB7XG4gICAgdThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XG4gIH1cbiAgcmV0dXJuIG5ldyBCbG9iKFt1OGFycl0sIHsgdHlwZTogbWltZSB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGF0YVVSTFRvQmxvYjtcbiIsIi8qKlxuICog6K6+572uIERhdGFVUkwg5YmN57yA44CBTUlNRSDnsbvlnovjgIFiYXNlNjQg5qCH6K+G44CCPGJyLz48YnIvPlxuICpcbiAqIOWmguaenOS9oOmcgOimgeiOt+WPlkRhdGFVUkwg55qEIE1JTUUg57G75Z6L5ZKM5pWw5o2u5pys6Lqr77yM5o6o6I2Q5L2/55SoIDxhIGhyZWY9XCJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kYXRhLXVybHNcIj5kYXRhLXVybHM8L2E+44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iuc2V0RGF0YVVSTFByZWZpeFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvRGF0YV9VUklzfERhdGEgVVJMc31cbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI3VuZGVyc3RhbmRpbmctbWltZS10eXBlc3xNSU1FIHR5cGVzfVxuICogQHNpbmNlIDQuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YSDmlbDmja7mnKzouqtcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWltZXR5cGU9XCJpbWFnZS9wbmdcIl0gTUlNRSDnsbvlnotcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Jhc2U2ND10cnVlXSDmt7vliqAgYmFzZTY0IOagh+ivhlxuICogQHJldHVybnMge3N0cmluZ30gRGF0YVVSTCDmoLzlvI/nmoTlrZfnrKbkuLJcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhID0gJ1BHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9JztcbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSk7IC8vIGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnaW1hZ2UvcG5nJywgZmFsc2UpOyAvLyBkYXRhOmltYWdlL3BuZyxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnaW1hZ2UvanBnJyk7IC8vIGRhdGE6aW1hZ2UvanBnO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAndGV4dC9odG1sJyk7IC8vIGRhdGE6dGV4dC9odG1sO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnJyk7IC8vIGRhdGE6O2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnJywgZmFsc2UpOyAvLyBkYXRhOixQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICovXG5mdW5jdGlvbiBzZXREYXRhVVJMUHJlZml4KGRhdGEsIG1pbWV0eXBlID0gJ2ltYWdlL3BuZycsIGJhc2U2NCA9IHRydWUpIHtcbiAgcmV0dXJuIGBkYXRhOiR7bWltZXR5cGV9JHtiYXNlNjQgPyAnO2Jhc2U2NCcgOiAnJ30sJHtkYXRhfWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldERhdGFVUkxQcmVmaXg7XG4iLCJpbXBvcnQgaXNOaWwgZnJvbSAnLi91dGlscy90eXBlL2lzTmlsJztcblxuLy8gVE9ETzog5Ye95pWw6YeN6L2977yM57G75Z6L5Y+C54WnIERhdGVcblxuLyoqXG4gKiDliJvlu7rkuIDkuKogRGF0ZSDlrp7kvovvvIzlkIwgbmV3IERhdGUoKSDjgII8YnIvPjxici8+5Li76KaB5piv6KeE6YG/5LqGIGlwaG9uZSDorr7lpIfmtY/op4jlmajkuI3mlK/mjIHpg6jliIbmoLzlvI/vvIhZWVlZLU1NLUREIEhILW1tIOaIliBZWVlZLk1NLkRE77yJ44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iuc2FmZURhdGVcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlfERhdGV9XG4gKiBAc2luY2UgNC40LjBcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxEYXRlfSBbdmFsdWVdIOaXpeacn+aXtumXtOWtl+espuS4suOAgeavq+enkuaVsOOAgeaXpeacn+WvueixoVxuICogQHBhcmFtIHsuLi5udW1iZXJ9IGFyZ3Mg5pyIL+aXpS/ml7Yv5YiGL+enki/mr6vnp5JcbiAqIEByZXR1cm5zIHtEYXRlfSBEYXRlIOWunuS+i1xuICogQGV4YW1wbGVcbiAqIHNhZmVEYXRlKCcyMDIyLTEtMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKCcyMDIyLzEvMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKCcyMDIyLjEuMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKCcyMDIyLjEuMSAxMToxMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMTE6MTE6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKDk5LCAxKTsgLy8gTW9uIEZlYiAwMSAxOTk5IDAwOjAwOjAwIEdNVCswODAwICjkuK3lm73moIflh4bml7bpl7QpXG4gKiBzYWZlRGF0ZSgxNjQ2NzExMjMzMTcxKTsgLy8gVHVlIE1hciAwOCAyMDIyIDExOjQ3OjEzIEdNVCswODAwICjkuK3lm73moIflh4bml7bpl7QpXG4gKlxuICovXG5mdW5jdGlvbiBzYWZlRGF0ZSh2YWx1ZSwgLi4uYXJncykge1xuICBjb25zdCBzYWZlVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUucmVwbGFjZSgvW1xcXFwuLV0vZywgJy8nKSA6IHZhbHVlO1xuXG4gIGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoID4gMCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbmV3IERhdGUoc2FmZVZhbHVlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGlzTmlsKHNhZmVWYWx1ZSkgPyBuZXcgRGF0ZSgpIDogbmV3IERhdGUoc2FmZVZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2FmZURhdGU7XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdW1iZXJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOdW1iZXJcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOdW1iZXJcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdW1iZXIoMSlcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKEluZmluaXR5KVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKE5hTilcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcignMScpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnTnVtYmVyJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVtYmVyO1xuIiwiaW1wb3J0IHsgZGlnaXRMZW5ndGgsIGZsb2F0MkZpeGVkLCBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5LmY5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45LmYXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnRpbWVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gbnVtcyDnm7jkuZjnmoTmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOS5mOenr1xuICogQGV4YW1wbGVcbiAqXG4gKiB0aW1lcygzLCAwLjYpO1xuICogLy8gPT4gMS44XG4gKlxuICogdGltZXMoMywgMC42LCAyKTtcbiAqIC8vID0+IDMuNlxuICpcbiAqIHRpbWVzKDMsIDAuNiwgMiwgMTApO1xuICogLy8gPT4gMzZcbiAqL1xuZnVuY3Rpb24gdGltZXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHRpbWVzKHRpbWVzKG51bTEsIG51bTIpLCAuLi5yZXN0KTtcbiAgfVxuXG4gIC8vIOWFvOWuueWkhOeQhu+8jOWmguaenOesrDLkuKrlj4LmlbDkuLrpnZ7mlbDlrZfmiJblrZfnrKbkuLLml7bvvIzov5Tlm57nrKzkuIDkuKrlj4LmlbBcbiAgaWYgKCghaXNOdW1iZXIobnVtMikgfHwgaXNOYU4obnVtMikpICYmICFpc1N0cmluZyhudW0yKSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbnVtMTtcbiAgfVxuXG4gIGNvbnN0IG51bTFDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMSk7XG4gIGNvbnN0IG51bTJDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMik7XG4gIGNvbnN0IGJhc2VOdW0gPSBkaWdpdExlbmd0aChudW0xKSArIGRpZ2l0TGVuZ3RoKG51bTIpO1xuICBjb25zdCBsZWZ0VmFsdWUgPSBudW0xQ2hhbmdlZCAqIG51bTJDaGFuZ2VkO1xuXG4gIGNoZWNrQm91bmRhcnkobGVmdFZhbHVlKTtcblxuICByZXR1cm4gbGVmdFZhbHVlIC8gTWF0aC5wb3coMTAsIGJhc2VOdW0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aW1lcztcbiIsImltcG9ydCB7IGRpZ2l0TGVuZ3RoIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5Yqg5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45YqgXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnBsdXNcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOebuOWKoOeahOaVsFxuICogQHJldHVybnMge251bWJlcn0g5oC75ZKMXG4gKiBAZXhhbXBsZVxuICpcbiAqIHBsdXMoMC4xLCAwLjIpO1xuICogLy8gPT4gMC4zXG4gKlxuICogcGx1cygwLjEsIDAuMiwgMC4zKTtcbiAqIC8vID0+IDAuNlxuICpcbiAqIHBsdXMoMC4xLCAwLjIsIDAuMywgMC40KTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gcGx1cyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG5cbiAgaWYgKHJlc3QubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwbHVzKHBsdXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSArIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBsdXM7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehruWHj+azle+8jOaUr+aMgeWkmuS4quaVsOebuOWHj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5taW51c1xuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg55u45YeP55qE5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlt65cbiAqIEBleGFtcGxlXG4gKlxuICogbWludXMoMSwgMC45KTtcbiAqIC8vID0+IDAuMVxuICpcbiAqIG1pbnVzKDEsIDAuOSwgMC4wMik7XG4gKiAvLyA9PiAwLjA4XG4gKlxuICogbWludXMoMSwgMC45LCAwLjAyLCAwLjA4KTtcbiAqIC8vID0+IDBcbiAqL1xuZnVuY3Rpb24gbWludXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuXG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gbWludXMobWludXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSAtIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1pbnVzO1xuIiwiaW1wb3J0IHsgc3RyaXAsIGRpZ2l0TGVuZ3RoLCBmbG9hdDJGaXhlZCwgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehrumZpOazle+8jOaUr+aMgeWkmuS4quaVsOebuOmZpFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5kaXZpZGVcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOmZpOaVsOWSjOiiq+mZpOaVsFxuICogQHJldHVybnMge251bWJlcn0g5ZWG5pWwXG4gKiBAZXhhbXBsZVxuICpcbiAqIGRpdmlkZSgxLjIxLCAxLjEpO1xuICogLy8gPT4gMS4xXG4gKlxuICogZGl2aWRlKDEwMDAsIDEwLCAxMCk7XG4gKiAvLyA9PiAxMFxuICpcbiAqIGRpdmlkZSgxMDAwLCAxMCwgMTAsIDEwKTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gZGl2aWRlKC4uLm51bXMpIHtcbiAgY29uc3QgW251bTEsIG51bTIsIC4uLnJlc3RdID0gbnVtcztcblxuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRpdmlkZShkaXZpZGUobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgbnVtMUNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0xKTtcbiAgY29uc3QgbnVtMkNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0yKTtcbiAgY2hlY2tCb3VuZGFyeShudW0xQ2hhbmdlZCk7XG4gIGNoZWNrQm91bmRhcnkobnVtMkNoYW5nZWQpO1xuICAvLyBmaXg6IOexu+S8vCAxMCAqKiAtNCDkuLogMC4wMDAwOTk5OTk5OTk5OTk5OTk5Oe+8jHN0cmlwIOS/ruato1xuICByZXR1cm4gdGltZXMobnVtMUNoYW5nZWQgLyBudW0yQ2hhbmdlZCwgc3RyaXAoTWF0aC5wb3coMTAsIGRpZ2l0TGVuZ3RoKG51bTIpIC0gZGlnaXRMZW5ndGgobnVtMSkpKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpdmlkZTtcbiIsImltcG9ydCBkaXZpZGUgZnJvbSAnLi9kaXZpZGUnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuXG4vKipcbiAqIOWbm+iIjeS6lOWFpe+8jOaUr+aMgeiuvue9rueyvuW6plxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5yb3VuZFxuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bSDopoHlm5voiI3kupTlhaXnmoTmlbDlrZdcbiAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIOWbm+iIjeS6lOWFpeeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn0g5Zub6IiN5LqU5YWl55qE5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIHJvdW5kKDQuMDA2KTtcbiAqIC8vID0+IDRcbiAqXG4gKiByb3VuZCg0LjAwNiwgMik7XG4gKiAvLyA9PiA0LjAxXG4gKlxuICogcm91bmQoNDA2MCwgLTIpO1xuICogLy8gPT4gNDEwMFxuICovXG5mdW5jdGlvbiByb3VuZChudW0sIHByZWNpc2lvbiA9IDApIHtcbiAgY29uc3QgYmFzZSA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuICByZXR1cm4gZGl2aWRlKE1hdGgucm91bmQodGltZXMobnVtLCBiYXNlKSksIGJhc2UpO1xufVxuXG5leHBvcnQgZGVmYXVsdCByb3VuZDtcbiIsIi8qKlxuICog562J5b6F5pe26Ze06L+U5ZueIFByb21pc2Ug44CC5bi455So5LqO5byC5q2l5pa55rOV5Lit5bu25pe244CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpPdGhlci53YWl0VGltZVxuICogQHNpbmNlIDQuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gW3RpbWU9MTAwMF0g5bu25pe25pe26Ze077yM5Y2V5L2N5q+r56eSXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCB0ZXN0ID0gYXN5bmMgKCk9PntcbiAqICAgYXdhaXQgd2FpdFRpbWUoKTtcbiAqICAgLy8gZG8gc29tZXRoaW5nXG4gKiB9XG4gKlxuICogd2FpdFRpbWUoNTAwKS50aGVuKCgpPT57XG4gKiAgIC8vIGRvIHNvbWV0aGluZ1xuICogfSlcbiAqL1xuZnVuY3Rpb24gd2FpdFRpbWUodGltZSA9IDEwMDApIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdhaXRUaW1lO1xuIl0sIm5hbWVzIjpbInJlZyIsInJlZ0lkQ2FyZCIsImJhc2VSZWciLCJzdW1DaGVja0NvZGUiLCJpc05hTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0VBQUEsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDM0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVB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QUFDLEtBQUssRUFBRTtFQUN4QixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLGlCQUFpQixDQUFDO0FBQzlCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRTtFQUNyQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLDZCQUE2QixDQUFDO0FBQzFDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRTtFQUNyQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLHdIQUF3SCxDQUFDO0FBQ3JJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0VBQzFCLEVBQUUsTUFBTSxRQUFRLEdBQUcs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QyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQzNELENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0VBQy9DLEVBQUUsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO0VBQ3ZCLElBQUksT0FBTyxFQUFFLENBQUM7RUFDZCxHQUFHO0FBQ0g7RUFDQSxFQUFFLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztFQUNqQixFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNmO0VBQ0EsRUFBRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0VBQ3BDLElBQUksSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQztFQUMzQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNqRCxHQUFHLE1BQU07RUFDVCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMvQyxHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sT0FBTyxHQUFHLEdBQUcsQ0FBQztFQUN2QixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNB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QVMsY0FBYyxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDMUUsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7RUFDaEQsRUFBRSxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QztFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckU7RUFDQSxFQUFFLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzdEO0VBQ0EsRUFBRSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7RUFDQSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7RUFDckU7O0VDM0NBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxXQUFX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LEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUNuQixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQ2pCO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUNuQixFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztBQUNwQjtFQUNBO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ2Y7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QU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDO0VBQ0EsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO0VBQ2QsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNsQyxHQUFHO0VBQ0gsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUMzQzs7RUN6QkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxXQUFXLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRTtFQUN2RSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDOUQ7O0VDdkJBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRTtFQUNsQyxFQUFFLE1BQU0sU0FBUyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdEY7RUFDQSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0VBQy9CO0VBQ0EsSUFBSSxPQUFPLElBQUksSUFB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O0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRTtFQUNuQyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0VBQ3ZDLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDcEQ7O0VDMUJBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUU7RUFDL0IsRUFBRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLO0VBQ2xDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztFQUM5QixHQUFHLENBQUMsQ0FBQztFQUNMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
|