igniteui-angular 16.0.17 → 16.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/calendar/calendar.mjs +33 -6
- package/esm2022/lib/calendar/days-view/days-view.component.mjs +2 -2
- package/esm2022/lib/services/exporter-common/base-export-service.mjs +9 -2
- package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +2 -3
- package/esm2022/lib/splitter/splitter.component.mjs +22 -19
- package/fesm2022/igniteui-angular.mjs +63 -27
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/calendar/calendar.d.ts +1 -1
- package/lib/splitter/splitter.component.d.ts +5 -0
- package/package.json +1 -1
|
@@ -305,12 +305,39 @@ export class Calendar {
|
|
|
305
305
|
getPrevYear(date) {
|
|
306
306
|
return this.timedelta(date, TimeDeltaInterval.Year, -1);
|
|
307
307
|
}
|
|
308
|
-
getWeekNumber(date) {
|
|
309
|
-
|
|
310
|
-
const
|
|
308
|
+
getWeekNumber(date, weekStart) {
|
|
309
|
+
// current year
|
|
310
|
+
const yearStart = new Date(date.getFullYear(), 0, 1);
|
|
311
|
+
// first day number of the current year
|
|
312
|
+
let firstDayOfTheYear = yearStart.getDay() - weekStart;
|
|
313
|
+
firstDayOfTheYear = firstDayOfTheYear >= 0 ? firstDayOfTheYear : firstDayOfTheYear + 7;
|
|
311
314
|
const dayInMilSeconds = 86400000;
|
|
312
|
-
|
|
313
|
-
|
|
315
|
+
// day number in the year
|
|
316
|
+
const dayNumber = Math.floor((date.getTime() - yearStart.getTime() -
|
|
317
|
+
(date.getTimezoneOffset() - yearStart.getTimezoneOffset()) * 60000) / dayInMilSeconds) + 1;
|
|
318
|
+
let weekNumber;
|
|
319
|
+
// if 01 Jan is Monday to Thursday, is considered 1st week of the year
|
|
320
|
+
// if 01 Jan starts Friday to Sunday, is considered last week of previous year
|
|
321
|
+
if (firstDayOfTheYear < 4) {
|
|
322
|
+
// when calculating the week number we add 1 for the 1st week
|
|
323
|
+
weekNumber = Math.floor((dayNumber + firstDayOfTheYear - 1) / 7) + 1;
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
// calculating the week number
|
|
327
|
+
weekNumber = Math.floor((dayNumber + firstDayOfTheYear - 1) / 7);
|
|
328
|
+
}
|
|
329
|
+
// if the week number is greater than week 52
|
|
330
|
+
if (weekNumber > 52) {
|
|
331
|
+
// next year
|
|
332
|
+
let nextYear = new Date(date.getFullYear() + 1, 0, 1);
|
|
333
|
+
// first day of the next year
|
|
334
|
+
let nextYearFirstDay = nextYear.getDay() - weekStart;
|
|
335
|
+
nextYearFirstDay = nextYearFirstDay >= 0 ? nextYearFirstDay : nextYearFirstDay + 7;
|
|
336
|
+
// if 01 Jan of the next year is Monday to Thursday, is considered 1st week of the next year
|
|
337
|
+
// if 01 Jan is Friday to Sunday, is considered 53rd week of the current year
|
|
338
|
+
weekNumber = nextYearFirstDay < 4 ? 1 : 53;
|
|
339
|
+
}
|
|
340
|
+
return weekNumber;
|
|
314
341
|
}
|
|
315
342
|
generateICalendarDate(date, year, month) {
|
|
316
343
|
return {
|
|
@@ -333,4 +360,4 @@ export class Calendar {
|
|
|
333
360
|
return date.getFullYear() > year;
|
|
334
361
|
}
|
|
335
362
|
}
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztJQUNwQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUMsQ0FBQztBQUdILE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDbkIsNEJBQWEsQ0FBQTtJQUNiLDRCQUFhLENBQUE7SUFDYiw0QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQU9ELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7SUFDbEMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0NBQ25CLENBQUMsQ0FBQztBQU9IOztHQUVHO0FBQ0gsSUFBSyxpQkFHSjtBQUhELFdBQUssaUJBQWlCO0lBQ2xCLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFISSxpQkFBaUIsS0FBakIsaUJBQWlCLFFBR3JCO0FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sUUFBUSxH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ZVR5cGUgfSBmcm9tICcuLi9jb3JlL2RhdGVzJztcbmltcG9ydCB7IG1rZW51bSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuXG4vKipcbiAqIFNldHMgdGhlIHNlbGVjdGlvbiB0eXBlIC0gc2luZ2xlLCBtdWx0aSBvciByYW5nZS5cbiAqL1xuZXhwb3J0IGNvbnN0IENhbGVuZGFyU2VsZWN0aW9uID0gbWtlbnVtKHtcbiAgICBTSU5HTEU6ICdzaW5nbGUnLFxuICAgIE1VTFRJOiAnbXVsdGknLFxuICAgIFJBTkdFOiAncmFuZ2UnXG59KTtcbmV4cG9ydCB0eXBlIENhbGVuZGFyU2VsZWN0aW9uID0gKHR5cGVvZiBDYWxlbmRhclNlbGVjdGlvbilba2V5b2YgdHlwZW9mIENhbGVuZGFyU2VsZWN0aW9uXTtcblxuZXhwb3J0IGVudW0gU2Nyb2xsTW9udGgge1xuICAgIFBSRVYgPSAncHJldicsXG4gICAgTkVYVCA9ICduZXh0JyxcbiAgICBOT05FID0gJ25vbmUnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZpZXdEYXRlQ2hhbmdlRXZlbnRBcmdzIHtcbiAgICBwcmV2aW91c1ZhbHVlOiBEYXRlO1xuICAgIGN1cnJlbnRWYWx1ZTogRGF0ZTtcbn1cblxuZXhwb3J0IGNvbnN0IElneENhbGVuZGFyVmlldyA9IG1rZW51bSh7XG4gICAgTW9udGg6ICdtb250aCcsXG4gICAgWWVhcjogJ3llYXInLFxuICAgIERlY2FkZTogJ2RlY2FkZSdcbn0pO1xuXG4vKipcbiAqIERldGVybWluZXMgdGhlIENhbGVuZGFyIGFjdGl2ZSB2aWV3IC0gZGF5cywgbW9udGhzIG9yIHllYXJzLlxuICovXG5leHBvcnQgdHlwZSBJZ3hDYWxlbmRhclZpZXcgPSAodHlwZW9mIElneENhbGVuZGFyVmlldylba2V5b2YgdHlwZW9mIElneENhbGVuZGFyVmlld107XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5lbnVtIFRpbWVEZWx0YUludGVydmFsIHtcbiAgICBNb250aCA9ICdtb250aCcsXG4gICAgWWVhciA9ICd5ZWFyJ1xufVxuXG5jb25zdCBNREFZUyA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbmNvbnN0IEZFQlJVQVJZID0gMTtcblxuZXhwb3J0IGNvbnN0IHJhbmdlID0gKHN0YXJ0ID0gMCwgc3RvcCwgc3RlcCA9IDEpID0+IHtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBjb25zdCBjdXIgPSAoc3RvcCA9PT0gdW5kZWZpbmVkKSA/IDAgOiBzdGFydDtcbiAgICBjb25zdCBtYXggPSAoc3RvcCA9PT0gdW5kZWZpbmVkKSA/IHN0YXJ0IDogc3RvcDtcbiAgICBmb3IgKGxldCBpID0gY3VyOyBzdGVwIDwgMCA/IGkgPiBtYXggOiBpIDwgbWF4OyBpICs9IHN0ZXApIHtcbiAgICAgICAgcmVzLnB1c2goaSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBmb3IgbGVhcCB5ZWFycywgZmFsc2UgZm9yIG5vbi1sZWFwIHllYXJzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB5ZWFyXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgaXNMZWFwID0gKHllYXI6IG51bWJlcik6IGJvb2xlYW4gPT4gKHllYXIgJSA0ID09PSAwKSAmJiAoKHllYXIgJSAxMDAgIT09IDApIHx8ICh5ZWFyICUgNDAwID09PSAwKSk7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5ID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIpOiBudW1iZXIgPT4gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSkuZ2V0RGF5KCk7XG5cbi8qKlxuICogUmV0dXJuIHdlZWtkYXkgYW5kIG51bWJlciBvZiBkYXlzIGZvciB5ZWFyLCBtb250aC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0geWVhclxuICogQHBhcmFtIG1vbnRoXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgbW9udGhSYW5nZSA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBudW1iZXJbXSA9PiB7XG4gICAgaWYgKChtb250aCA8IDApIHx8IChtb250aCA+IDExKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9udGggc3BlY2lmaWVkJyk7XG4gICAgfVxuICAgIGNvbnN0IGRheSA9IHdlZWtEYXkoeWVhciwgbW9udGgsIDEpO1xuICAgIGxldCBuRGF5cyA9IE1EQVlTW21vbnRoXTtcbiAgICBpZiAoKG1vbnRoID09PSBGRUJSVUFSWSkgJiYgKGlzTGVhcCh5ZWFyKSkpIHtcbiAgICAgICAgbkRheXMrKztcbiAgICB9XG4gICAgcmV0dXJuIFtkYXksIG5EYXlzXTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlcyA9IChkYXRlOiBEYXRlLCByYW5nZXM6IERhdGVSYW5nZURlc2NyaXB0b3JbXSk6IGJvb2xlYW4gPT4ge1xuICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuICAgIGNvbnN0IGRhdGVJbk1zID0gZGF0ZS5nZXRUaW1lKCk7XG5cbiAgICBpZiAoIXJhbmdlcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIHJhbmdlcykge1xuICAgICAgICBjb25zdCBkUmFuZ2VzID0gZGVzY3JpcHRvci5kYXRlUmFuZ2UgPyBkZXNjcmlwdG9yLmRhdGVSYW5nZS5tYXAoXG4gICAgICAgICAgICByID0+IG5ldyBEYXRlKHIuZ2V0RnVsbFllYXIoKSwgci5nZXRNb250aCgpLCByLmdldERhdGUoKSkpIDogdW5kZWZpbmVkO1xuICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAoRGF0ZVJhbmdlVHlwZS5BZnRlcik6XG4gICAgICAgICAgICAgICAgaWYgKGRhdGVJbk1zID4gZFJhbmdlc1swXS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIChEYXRlUmFuZ2VUeXBlLkJlZm9yZSk6XG4gICAgICAgICAgICAgICAgaWYgKGRhdGVJbk1zIDwgZFJhbmdlc1swXS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIChEYXRlUmFuZ2VUeXBlLkJldHdlZW4pOlxuICAgICAgICAgICAgICAgIGNvbnN0IGRSYW5nZSA9IGRSYW5nZXMubWFwKGQgPT4gZC5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKGRSYW5nZVswXSwgZFJhbmdlWzFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heChkUmFuZ2VbMF0sIGRSYW5nZVsxXSk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGVJbk1zID49IG1pbiAmJiBkYXRlSW5NcyA8PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIChEYXRlUmFuZ2VUeXBlLlNwZWNpZmljKTpcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlc0luTXMgPSBkUmFuZ2VzLm1hcChkID0+IGQuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNwZWNpZmljRGF0ZUluTXMgb2YgZGF0ZXNJbk1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlSW5NcyA9PT0gc3BlY2lmaWNEYXRlSW5Ncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgKERhdGVSYW5nZVR5cGUuV2Vla2RheXMpOlxuICAgICAgICAgICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgaWYgKGRheSAlIDYgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIChEYXRlUmFuZ2VUeXBlLldlZWtlbmRzKTpcbiAgICAgICAgICAgICAgICBjb25zdCB3ZWVrZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSAlIDYgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhbGVuZGFyRGF0ZSB7XG4gICAgZGF0ZTogRGF0ZTtcbiAgICBpc0N1cnJlbnRNb250aDogYm9vbGVhbjtcbiAgICBpc1ByZXZNb250aDogYm9vbGVhbjtcbiAgICBpc05leHRNb250aDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybWF0dGVkUGFydHMge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGl0ZXJhbD86IHN0cmluZztcbiAgICBjb21iaW5lZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtYXR0aW5nT3B0aW9ucyB7XG4gICAgZGF5PzogJ251bWVyaWMnIHwgJzItZGlnaXQnO1xuICAgIG1vbnRoPzogJ251bWVyaWMnIHwgJzItZGlnaXQnIHwgJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnO1xuICAgIHdlZWtkYXk/OiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdyc7XG4gICAgeWVhcj86ICdudW1lcmljJyB8ICcyLWRpZ2l0Jztcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtYXR0aW5nVmlld3Mge1xuICAgIGRheT86IGJvb2xlYW47XG4gICAgbW9udGg/OiBib29sZWFuO1xuICAgIHllYXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBXRUVLREFZUyB7XG4gICAgU1VOREFZID0gMCxcbiAgICBNT05EQVkgPSAxLFxuICAgIFRVRVNEQVkgPSAyLFxuICAgIFdFRE5FU0RBWSA9IDMsXG4gICAgVEhVUlNEQVkgPSA0LFxuICAgIEZSSURBWSA9IDUsXG4gICAgU0FUVVJEQVkgPSA2XG59XG5cbmV4cG9ydCBjbGFzcyBDYWxlbmRhciB7XG5cbiAgICBwcml2YXRlIF9maXJzdFdlZWtEYXk6IFdFRUtEQVlTIHwgbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoZmlyc3RXZWVrRGF5OiBXRUVLREFZUyA9IFdFRUtEQVlTLlNVTkRBWSkge1xuICAgICAgICB0aGlzLl9maXJzdFdlZWtEYXkgPSBmaXJzdFdlZWtEYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaXJzdFdlZWtEYXkoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0V2Vla0RheSAlIDc7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBmaXJzdFdlZWtEYXkodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9maXJzdFdlZWtEYXkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHdlZWtkYXlzIGZvciBvbmUgd2VlayBzdGFydGluZ1xuICAgICAqIHdpdGggdGhlIGN1cnJlbnRseSBzZXQgYGZpcnN0V2Vla0RheWBcbiAgICAgKlxuICAgICAqIHRoaXMuZmlyc3RXZWVrRGF5ID0gMCAoU3VuZGF5KSAtLT4gWzAsIDEsIDIsIDMsIDQsIDUsIDZdXG4gICAgICogdGhpcy5maXJzdFdlZWtEYXkgPSAxIChNb25kYXkpIC0tPiBbMSwgMiwgMywgNCwgNSwgNiwgMF1cbiAgICAgKlxuICAgICAqIEByZXR1cm5zXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgQ2FsZW5kYXJcbiAgICAgKi9cbiAgICBwdWJsaWMgd2Vla2RheXMoKTogbnVtYmVyW10ge1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHJhbmdlKHRoaXMuZmlyc3RXZWVrRGF5LCB0aGlzLmZpcnN0V2Vla0RheSArIDcpKSB7XG4gICAgICAgICAgICByZXMucHVzaChpICUgNyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkYXRlIHZhbHVlcyBmb3Igb25lIG1vbnRoLiBJdCB3aWxsIGFsd2F5cyBpdGVyYXRlIHRocm91Z2h0XG4gICAgICogY29tcGxldGUgd2Vla3MsIHNvIGl0IHdpbGwgY29udGFpbiBkYXRlcyBvdXRzaWRlIHRoZSBzcGVjaWZpZWQgbW9udGguXG4gICAgICpcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aFxuICAgICAqIEBwYXJhbSBib29sZWFuXG4gICAgICogQHJldHVybnNcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBDYWxlbmRhclxuICAgICAqL1xuICAgIHB1YmxpYyBtb250aGRhdGVzKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZXh0cmFXZWVrID0gZmFsc2UpOiBJQ2FsZW5kYXJEYXRlW10ge1xuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcbiAgICAgICAgbGV0IGRheXMgPSAoZGF0ZS5nZXREYXkoKSAtIHRoaXMuZmlyc3RXZWVrRGF5KSAlIDc7XG4gICAgICAgIGlmIChkYXlzIDwgMCkge1xuICAgICAgICAgICAgZGF5cyA9IDcgLSBNYXRoLmFicyhkYXlzKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRlID0gdGhpcy50aW1lZGVsdGEoZGF0ZSwgJ2RheScsIC1kYXlzKTtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIGxldCB2YWx1ZTogSUNhbGVuZGFyRGF0ZTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG5cbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZW5lcmF0ZUlDYWxlbmRhckRhdGUoZGF0ZSwgeWVhciwgbW9udGgpO1xuICAgICAgICAgICAgcmVzLnB1c2godmFsdWUpO1xuXG4gICAgICAgICAgICBkYXRlID0gdGhpcy50aW1lZGVsdGEoZGF0ZSwgJ2RheScsIDEpO1xuXG4gICAgICAgICAgICBpZiAoKGRhdGUuZ2V0TW9udGgoKSAhPT0gbW9udGgpICYmIChkYXRlLmdldERheSgpID09PSB0aGlzLmZpcnN0V2Vla0RheSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFXZWVrICYmIHJlcy5sZW5ndGggPD0gMzUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIDcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZ2VuZXJhdGVJQ2FsZW5kYXJEYXRlKGRhdGUsIHllYXIsIG1vbnRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgPSB0aGlzLnRpbWVkZWx0YShkYXRlLCAnZGF5JywgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbWF0cml4IChhcnJheSBvZiBhcnJheXMpIHJlcHJlc2VudGluZyBhIG1vbnRoJ3MgY2FsZW5kYXIuXG4gICAgICogRWFjaCByb3cgcmVwcmVzZW50cyBhIGZ1bGwgd2Vlazsgd2VlayBlbnRyaWVzIGFyZSBJQ2FsZW5kYXJEYXRlIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aFxuICAgICAqIEByZXR1cm5zXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgQ2FsZW5kYXJcbiAgICAgKi9cbiAgICBwdWJsaWMgbW9udGhkYXRlc2NhbGVuZGFyKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZXh0cmFXZWVrID0gZmFsc2UpOiBJQ2FsZW5kYXJEYXRlW11bXSB7XG4gICAgICAgIGNvbnN0IGRhdGVzID0gdGhpcy5tb250aGRhdGVzKHllYXIsIG1vbnRoLCBleHRyYVdlZWspO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHJhbmdlKDAsIGRhdGVzLmxlbmd0aCwgNykpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGRhdGVzLnNsaWNlKGksIGkgKyA3KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdGltZWRlbHRhKGRhdGU6IERhdGUsIGludGVydmFsOiBzdHJpbmcsIHVuaXRzOiBudW1iZXIpOiBEYXRlIHtcbiAgICAgICAgY29uc3QgcmV0ID0gbmV3IERhdGUoZGF0ZSk7XG5cbiAgICAgICAgY29uc3QgY2hlY2tSb2xsb3ZlciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXQuZ2V0RGF0ZSgpICE9PSBkYXRlLmdldERhdGUoKSkge1xuICAgICAgICAgICAgICAgIHJldC5zZXREYXRlKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHN3aXRjaCAoaW50ZXJ2YWwudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgcmV0LnNldEZ1bGxZZWFyKHJldC5nZXRGdWxsWWVhcigpICsgdW5pdHMpO1xuICAgICAgICAgICAgICAgIGNoZWNrUm9sbG92ZXIoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHJldC5zZXRNb250aChyZXQuZ2V0TW9udGgoKSArIDMgKiB1bml0cyk7XG4gICAgICAgICAgICAgICAgY2hlY2tSb2xsb3ZlcigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHJldC5zZXRNb250aChyZXQuZ2V0TW9udGgoKSArIHVuaXRzKTtcbiAgICAgICAgICAgICAgICBjaGVja1JvbGxvdmVyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICByZXQuc2V0RGF0ZShyZXQuZ2V0RGF0ZSgpICsgNyAqIHVuaXRzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICAgICAgcmV0LnNldERhdGUocmV0LmdldERhdGUoKSArIHVuaXRzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHJldC5zZXRUaW1lKHJldC5nZXRUaW1lKCkgKyB1bml0cyAqIDM2MDAwMDApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICByZXQuc2V0VGltZShyZXQuZ2V0VGltZSgpICsgdW5pdHMgKiA2MDAwMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHJldC5zZXRUaW1lKHJldC5nZXRUaW1lKCkgKyB1bml0cyAqIDEwMDApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwgc3BlY2lmaWVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0VG9QYXJ0cyhkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9uczogYW55LCBwYXJ0czogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGZ1bGw6IGZvcm1hdHRlci5mb3JtYXQoZGF0ZSlcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoKGZvcm1hdHRlciBhcyBhbnkpLmZvcm1hdFRvUGFydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFBhcnRzID0gKGZvcm1hdHRlciBhcyBhbnkpLmZvcm1hdFRvUGFydHMoZGF0ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRvVHlwZSA9IChwYXJ0VHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBmb3JtYXR0ZWRQYXJ0cy5maW5kSW5kZXgoKHsgdHlwZSB9KSA9PiB0eXBlID09PSBwYXJ0VHlwZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbzogSUZvcm1hdHRlZFBhcnRzID0geyB2YWx1ZTogJycsIGxpdGVyYWw6ICcnLCBjb21iaW5lZDogJycgfTtcblxuICAgICAgICAgICAgICAgIGlmIChwYXJ0VHlwZSA9PT0gJ2VyYScgJiYgaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBvLnZhbHVlID0gZm9ybWF0dGVkUGFydHNbaW5kZXhdLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnRUeXBlID09PSAnZXJhJyAmJiBpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgby52YWx1ZSA9IGZvcm1hdHRlZFBhcnRzW2luZGV4XS52YWx1ZTtcbiAgICAgICAgICAgICAgICBvLmxpdGVyYWwgPSBmb3JtYXR0ZWRQYXJ0c1tpbmRleCArIDFdID8gZm9ybWF0dGVkUGFydHNbaW5kZXggKyAxXS52YWx1ZSA6ICcnO1xuICAgICAgICAgICAgICAgIG8uY29tYmluZWQgPSBbby52YWx1ZSwgby5saXRlcmFsXS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZWFjaCBvZiBwYXJ0cykge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtlYWNoXSA9IHRvVHlwZShlYWNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWFjaCBvZiBwYXJ0cykge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtlYWNoXSA9IHsgdmFsdWU6ICcnLCBsaXRlcmFsOiAnJywgY29tYmluZWQ6ICcnIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rmlyc3RWaWV3RGF0ZShkYXRlOiBEYXRlLCBpbnRlcnZhbDogc3RyaW5nLCBhY3RpdmVWaWV3SWR4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZWRlbHRhKGRhdGUsIGludGVydmFsLCAtYWN0aXZlVmlld0lkeCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERhdGVCeVZpZXcoZGF0ZTogRGF0ZSwgaW50ZXJ2YWw6IHN0cmluZywgYWN0aXZlVmlld0lkeDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVkZWx0YShkYXRlLCBpbnRlcnZhbCwgYWN0aXZlVmlld0lkeCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5leHRNb250aChkYXRlOiBEYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVkZWx0YShkYXRlLCBUaW1lRGVsdGFJbnRlcnZhbC5Nb250aCwgMSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByZXZNb250aChkYXRlOiBEYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVkZWx0YShkYXRlLCBUaW1lRGVsdGFJbnRlcnZhbC5Nb250aCwgLTEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROZXh0WWVhcihkYXRlOiBEYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVkZWx0YShkYXRlLCBUaW1lRGVsdGFJbnRlcnZhbC5ZZWFyLCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJldlllYXIoZGF0ZTogRGF0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lZGVsdGEoZGF0ZSwgVGltZURlbHRhSW50ZXJ2YWwuWWVhciwgLTEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXZWVrTnVtYmVyKGRhdGU6IERhdGUpIHtcbiAgICAgICAgY29uc3QgZmlyc3RKYW4gPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgZGF5SW5NaWxTZWNvbmRzID0gODY0MDAwMDA7XG4gICAgICAgIGNvbnN0IGRheU9mWWVhciA9ICgodG9kYXkgLSBmaXJzdEphbiArIDEpIC8gZGF5SW5NaWxTZWNvbmRzKTtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChkYXlPZlllYXIgLyA3KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlSUNhbGVuZGFyRGF0ZShkYXRlOiBEYXRlLCB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBJQ2FsZW5kYXJEYXRlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICBpc0N1cnJlbnRNb250aDogZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGgsXG4gICAgICAgICAgICBpc05leHRNb250aDogdGhpcy5pc05leHRNb250aChkYXRlLCB5ZWFyLCBtb250aCksXG4gICAgICAgICAgICBpc1ByZXZNb250aDogdGhpcy5pc1ByZXZpb3VzTW9udGgoZGF0ZSwgeWVhciwgbW9udGgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ByZXZpb3VzTW9udGgoZGF0ZTogRGF0ZSwgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgPCBtb250aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpIDwgeWVhcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTmV4dE1vbnRoKGRhdGU6IERhdGUsIHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRNb250aCgpID4gbW9udGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID4geWVhcjtcbiAgICB9XG59XG4iXX0=
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztJQUNwQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUMsQ0FBQztBQUdILE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDbkIsNEJBQWEsQ0FBQTtJQUNiLDRCQUFhLENBQUE7SUFDYiw0QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQU9ELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7SUFDbEMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0NBQ25CLENBQUMsQ0FBQztBQU9IOztHQUVHO0FBQ0gsSUFBSyxpQkFHSjtBQUhELFdBQUssaUJBQWlCO0lBQ2xCLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFISSxpQkFBaUIsS0FBakIsaUJBQWlCLFFBR3JCO0FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sUUFBUSxH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NkY7WUFDN0YsNkVBQTZFO1lBQzdFLFVBQVUsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVUsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUNqRSxPQUFPO1lBQ0gsSUFBSTtZQUNKLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLO1lBQ3hFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQ2hELFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO1NBQ3ZELENBQUM7SUFDTixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVUsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUMzRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBVSxFQUFFLElBQVksRUFBRSxLQUFhO1FBQ3ZELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7U0FDbEM7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVJhbmdlRGVzY3JpcHRvciwgRGF0ZVJhbmdlVHlwZSB9IGZyb20gJy4uL2NvcmUvZGF0ZXMnO1xuaW1wb3J0IHsgbWtlbnVtIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbi8qKlxuICogU2V0cyB0aGUgc2VsZWN0aW9uIHR5cGUgLSBzaW5nbGUsIG11bHRpIG9yIHJhbmdlLlxuICovXG5leHBvcnQgY29uc3QgQ2FsZW5kYXJTZWxlY3Rpb24gPSBta2VudW0oe1xuICAgIFNJTkdMRTogJ3NpbmdsZScsXG4gICAgTVVMVEk6ICdtdWx0aScsXG4gICAgUkFOR0U6ICdyYW5nZSdcbn0pO1xuZXhwb3J0IHR5cGUgQ2FsZW5kYXJTZWxlY3Rpb24gPSAodHlwZW9mIENhbGVuZGFyU2VsZWN0aW9uKVtrZXlvZiB0eXBlb2YgQ2FsZW5kYXJTZWxlY3Rpb25dO1xuXG5leHBvcnQgZW51bSBTY3JvbGxNb250aCB7XG4gICAgUFJFViA9ICdwcmV2JyxcbiAgICBORVhUID0gJ25leHQnLFxuICAgIE5PTkUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVmlld0RhdGVDaGFuZ2VFdmVudEFyZ3Mge1xuICAgIHByZXZpb3VzVmFsdWU6IERhdGU7XG4gICAgY3VycmVudFZhbHVlOiBEYXRlO1xufVxuXG5leHBvcnQgY29uc3QgSWd4Q2FsZW5kYXJWaWV3ID0gbWtlbnVtKHtcbiAgICBNb250aDogJ21vbnRoJyxcbiAgICBZZWFyOiAneWVhcicsXG4gICAgRGVjYWRlOiAnZGVjYWRlJ1xufSk7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgQ2FsZW5kYXIgYWN0aXZlIHZpZXcgLSBkYXlzLCBtb250aHMgb3IgeWVhcnMuXG4gKi9cbmV4cG9ydCB0eXBlIElneENhbGVuZGFyVmlldyA9ICh0eXBlb2YgSWd4Q2FsZW5kYXJWaWV3KVtrZXlvZiB0eXBlb2YgSWd4Q2FsZW5kYXJWaWV3XTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmVudW0gVGltZURlbHRhSW50ZXJ2YWwge1xuICAgIE1vbnRoID0gJ21vbnRoJyxcbiAgICBZZWFyID0gJ3llYXInXG59XG5cbmNvbnN0IE1EQVlTID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuY29uc3QgRkVCUlVBUlkgPSAxO1xuXG5leHBvcnQgY29uc3QgcmFuZ2UgPSAoc3RhcnQgPSAwLCBzdG9wLCBzdGVwID0gMSkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIGNvbnN0IGN1ciA9IChzdG9wID09PSB1bmRlZmluZWQpID8gMCA6IHN0YXJ0O1xuICAgIGNvbnN0IG1heCA9IChzdG9wID09PSB1bmRlZmluZWQpID8gc3RhcnQgOiBzdG9wO1xuICAgIGZvciAobGV0IGkgPSBjdXI7IHN0ZXAgPCAwID8gaSA+IG1heCA6IGkgPCBtYXg7IGkgKz0gc3RlcCkge1xuICAgICAgICByZXMucHVzaChpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGZvciBsZWFwIHllYXJzLCBmYWxzZSBmb3Igbm9uLWxlYXAgeWVhcnMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHllYXJcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBpc0xlYXAgPSAoeWVhcjogbnVtYmVyKTogYm9vbGVhbiA9PiAoeWVhciAlIDQgPT09IDApICYmICgoeWVhciAlIDEwMCAhPT0gMCkgfHwgKHllYXIgJSA0MDAgPT09IDApKTtcblxuZXhwb3J0IGNvbnN0IHdlZWtEYXkgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IG51bWJlciA9PiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KS5nZXREYXkoKTtcblxuLyoqXG4gKiBSZXR1cm4gd2Vla2RheSBhbmQgbnVtYmVyIG9mIGRheXMgZm9yIHllYXIsIG1vbnRoLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB5ZWFyXG4gKiBAcGFyYW0gbW9udGhcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aFJhbmdlID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlcltdID0+IHtcbiAgICBpZiAoKG1vbnRoIDwgMCkgfHwgKG1vbnRoID4gMTEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtb250aCBzcGVjaWZpZWQnKTtcbiAgICB9XG4gICAgY29uc3QgZGF5ID0gd2Vla0RheSh5ZWFyLCBtb250aCwgMSk7XG4gICAgbGV0IG5EYXlzID0gTURBWVNbbW9udGhdO1xuICAgIGlmICgobW9udGggPT09IEZFQlJVQVJZKSAmJiAoaXNMZWFwKHllYXIpKSkge1xuICAgICAgICBuRGF5cysrO1xuICAgIH1cbiAgICByZXR1cm4gW2RheSwgbkRheXNdO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGF0ZUluUmFuZ2VzID0gKGRhdGU6IERhdGUsIHJhbmdlczogRGF0ZVJhbmdlRGVzY3JpcHRvcltdKTogYm9vbGVhbiA9PiB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG4gICAgY29uc3QgZGF0ZUluTXMgPSBkYXRlLmdldFRpbWUoKTtcblxuICAgIGlmICghcmFuZ2VzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlc2NyaXB0b3Igb2YgcmFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGRSYW5nZXMgPSBkZXNjcmlwdG9yLmRhdGVSYW5nZSA/IGRlc2NyaXB0b3IuZGF0ZVJhbmdlLm1hcChcbiAgICAgICAgICAgIHIgPT4gbmV3IERhdGUoci5nZXRGdWxsWWVhcigpLCByLmdldE1vbnRoKCksIHIuZ2V0RGF0ZSgpKSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIChEYXRlUmFuZ2VUeXBlLkFmdGVyKTpcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZUluTXMgPiBkUmFuZ2VzWzBdLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgKERhdGVSYW5nZVR5cGUuQmVmb3JlKTpcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZUluTXMgPCBkUmFuZ2VzWzBdLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgKERhdGVSYW5nZVR5cGUuQmV0d2Vlbik6XG4gICAgICAgICAgICAgICAgY29uc3QgZFJhbmdlID0gZFJhbmdlcy5tYXAoZCA9PiBkLmdldFRpbWUoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluID0gTWF0aC5taW4oZFJhbmdlWzBdLCBkUmFuZ2VbMV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KGRSYW5nZVswXSwgZFJhbmdlWzFdKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZUluTXMgPj0gbWluICYmIGRhdGVJbk1zIDw9IG1heCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgKERhdGVSYW5nZVR5cGUuU3BlY2lmaWMpOlxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVzSW5NcyA9IGRSYW5nZXMubWFwKGQgPT4gZC5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3BlY2lmaWNEYXRlSW5NcyBvZiBkYXRlc0luTXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGVJbk1zID09PSBzcGVjaWZpY0RhdGVJbk1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAoRGF0ZVJhbmdlVHlwZS5XZWVrZGF5cyk6XG4gICAgICAgICAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF5ICUgNiAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgKERhdGVSYW5nZVR5cGUuV2Vla2VuZHMpOlxuICAgICAgICAgICAgICAgIGNvbnN0IHdlZWtkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgIGlmICh3ZWVrZGF5ICUgNiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQ2FsZW5kYXJEYXRlIHtcbiAgICBkYXRlOiBEYXRlO1xuICAgIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICAgIGlzUHJldk1vbnRoOiBib29sZWFuO1xuICAgIGlzTmV4dE1vbnRoOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtYXR0ZWRQYXJ0cyB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsaXRlcmFsPzogc3RyaW5nO1xuICAgIGNvbWJpbmVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1hdHRpbmdPcHRpb25zIHtcbiAgICBkYXk/OiAnbnVtZXJpYycgfCAnMi1kaWdpdCc7XG4gICAgbW9udGg/OiAnbnVtZXJpYycgfCAnMi1kaWdpdCcgfCAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdyc7XG4gICAgd2Vla2RheT86ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93JztcbiAgICB5ZWFyPzogJ251bWVyaWMnIHwgJzItZGlnaXQnO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1hdHRpbmdWaWV3cyB7XG4gICAgZGF5PzogYm9vbGVhbjtcbiAgICBtb250aD86IGJvb2xlYW47XG4gICAgeWVhcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIFdFRUtEQVlTIHtcbiAgICBTVU5EQVkgPSAwLFxuICAgIE1PTkRBWSA9IDEsXG4gICAgVFVFU0RBWSA9IDIsXG4gICAgV0VETkVTREFZID0gMyxcbiAgICBUSFVSU0RBWSA9IDQsXG4gICAgRlJJREFZID0gNSxcbiAgICBTQVRVUkRBWSA9IDZcbn1cblxuZXhwb3J0IGNsYXNzIENhbGVuZGFyIHtcblxuICAgIHByaXZhdGUgX2ZpcnN0V2Vla0RheTogV0VFS0RBWVMgfCBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihmaXJzdFdlZWtEYXk6IFdFRUtEQVlTID0gV0VFS0RBWVMuU1VOREFZKSB7XG4gICAgICAgIHRoaXMuX2ZpcnN0V2Vla0RheSA9IGZpcnN0V2Vla0RheTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpcnN0V2Vla0RheSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RXZWVrRGF5ICUgNztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGZpcnN0V2Vla0RheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2ZpcnN0V2Vla0RheSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2Ygd2Vla2RheXMgZm9yIG9uZSB3ZWVrIHN0YXJ0aW5nXG4gICAgICogd2l0aCB0aGUgY3VycmVudGx5IHNldCBgZmlyc3RXZWVrRGF5YFxuICAgICAqXG4gICAgICogdGhpcy5maXJzdFdlZWtEYXkgPSAwIChTdW5kYXkpIC0tPiBbMCwgMSwgMiwgMywgNCwgNSwgNl1cbiAgICAgKiB0aGlzLmZpcnN0V2Vla0RheSA9IDEgKE1vbmRheSkgLS0+IFsxLCAyLCAzLCA0LCA1LCA2LCAwXVxuICAgICAqXG4gICAgICogQHJldHVybnNcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBDYWxlbmRhclxuICAgICAqL1xuICAgIHB1YmxpYyB3ZWVrZGF5cygpOiBudW1iZXJbXSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgcmFuZ2UodGhpcy5maXJzdFdlZWtEYXksIHRoaXMuZmlyc3RXZWVrRGF5ICsgNykpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGkgJSA3KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRhdGUgdmFsdWVzIGZvciBvbmUgbW9udGguIEl0IHdpbGwgYWx3YXlzIGl0ZXJhdGUgdGhyb3VnaHRcbiAgICAgKiBjb21wbGV0ZSB3ZWVrcywgc28gaXQgd2lsbCBjb250YWluIGRhdGVzIG91dHNpZGUgdGhlIHNwZWNpZmllZCBtb250aC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB5ZWFyXG4gICAgICogQHBhcmFtIG1vbnRoXG4gICAgICogQHBhcmFtIGJvb2xlYW5cbiAgICAgKiBAcmV0dXJuc1xuICAgICAqXG4gICAgICogQG1lbWJlcm9mIENhbGVuZGFyXG4gICAgICovXG4gICAgcHVibGljIG1vbnRoZGF0ZXMoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBleHRyYVdlZWsgPSBmYWxzZSk6IElDYWxlbmRhckRhdGVbXSB7XG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgICAgICBsZXQgZGF5cyA9IChkYXRlLmdldERheSgpIC0gdGhpcy5maXJzdFdlZWtEYXkpICUgNztcbiAgICAgICAgaWYgKGRheXMgPCAwKSB7XG4gICAgICAgICAgICBkYXlzID0gNyAtIE1hdGguYWJzKGRheXMpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGUgPSB0aGlzLnRpbWVkZWx0YShkYXRlLCAnZGF5JywgLWRheXMpO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgbGV0IHZhbHVlOiBJQ2FsZW5kYXJEYXRlO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcblxuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdlbmVyYXRlSUNhbGVuZGFyRGF0ZShkYXRlLCB5ZWFyLCBtb250aCk7XG4gICAgICAgICAgICByZXMucHVzaCh2YWx1ZSk7XG5cbiAgICAgICAgICAgIGRhdGUgPSB0aGlzLnRpbWVkZWx0YShkYXRlLCAnZGF5JywgMSk7XG5cbiAgICAgICAgICAgIGlmICgoZGF0ZS5nZXRNb250aCgpICE9PSBtb250aCkgJiYgKGRhdGUuZ2V0RGF5KCkgPT09IHRoaXMuZmlyc3RXZWVrRGF5KSkge1xuICAgICAgICAgICAgICAgIGlmIChleHRyYVdlZWsgJiYgcmVzLmxlbmd0aCA8PSAzNSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgNykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZW5lcmF0ZUlDYWxlbmRhckRhdGUoZGF0ZSwgeWVhciwgbW9udGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IHRoaXMudGltZWRlbHRhKGRhdGUsICdkYXknLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBtYXRyaXggKGFycmF5IG9mIGFycmF5cykgcmVwcmVzZW50aW5nIGEgbW9udGgncyBjYWxlbmRhci5cbiAgICAgKiBFYWNoIHJvdyByZXByZXNlbnRzIGEgZnVsbCB3ZWVrOyB3ZWVrIGVudHJpZXMgYXJlIElDYWxlbmRhckRhdGUgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB5ZWFyXG4gICAgICogQHBhcmFtIG1vbnRoXG4gICAgICogQHJldHVybnNcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBDYWxlbmRhclxuICAgICAqL1xuICAgIHB1YmxpYyBtb250aGRhdGVzY2FsZW5kYXIoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBleHRyYVdlZWsgPSBmYWxzZSk6IElDYWxlbmRhckRhdGVbXVtdIHtcbiAgICAgICAgY29uc3QgZGF0ZXMgPSB0aGlzLm1vbnRoZGF0ZXMoeWVhciwgbW9udGgsIGV4dHJhV2Vlayk7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgcmFuZ2UoMCwgZGF0ZXMubGVuZ3RoLCA3KSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZGF0ZXMuc2xpY2UoaSwgaSArIDcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHB1YmxpYyB0aW1lZGVsdGEoZGF0ZTogRGF0ZSwgaW50ZXJ2YWw6IHN0cmluZywgdW5pdHM6IG51bWJlcik6IERhdGUge1xuICAgICAgICBjb25zdCByZXQgPSBuZXcgRGF0ZShkYXRlKTtcblxuICAgICAgICBjb25zdCBjaGVja1JvbGxvdmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJldC5nZXREYXRlKCkgIT09IGRhdGUuZ2V0RGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0LnNldERhdGUoMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgc3dpdGNoIChpbnRlcnZhbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICByZXQuc2V0RnVsbFllYXIocmV0LmdldEZ1bGxZZWFyKCkgKyB1bml0cyk7XG4gICAgICAgICAgICAgICAgY2hlY2tSb2xsb3ZlcigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgcmV0LnNldE1vbnRoKHJldC5nZXRNb250aCgpICsgMyAqIHVuaXRzKTtcbiAgICAgICAgICAgICAgICBjaGVja1JvbGxvdmVyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgcmV0LnNldE1vbnRoKHJldC5nZXRNb250aCgpICsgdW5pdHMpO1xuICAgICAgICAgICAgICAgIGNoZWNrUm9sbG92ZXIoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHJldC5zZXREYXRlKHJldC5nZXREYXRlKCkgKyA3ICogdW5pdHMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgICAgICByZXQuc2V0RGF0ZShyZXQuZ2V0RGF0ZSgpICsgdW5pdHMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgcmV0LnNldFRpbWUocmV0LmdldFRpbWUoKSArIHVuaXRzICogMzYwMDAwMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHJldC5zZXRUaW1lKHJldC5nZXRUaW1lKCkgKyB1bml0cyAqIDYwMDAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgcmV0LnNldFRpbWUocmV0LmdldFRpbWUoKSArIHVuaXRzICogMTAwMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnRlcnZhbCBzcGVjaWZpZXInKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRUb1BhcnRzKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nLCBvcHRpb25zOiBhbnksIHBhcnRzOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgZnVsbDogZm9ybWF0dGVyLmZvcm1hdChkYXRlKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICgoZm9ybWF0dGVyIGFzIGFueSkuZm9ybWF0VG9QYXJ0cykge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkUGFydHMgPSAoZm9ybWF0dGVyIGFzIGFueSkuZm9ybWF0VG9QYXJ0cyhkYXRlKTtcblxuICAgICAgICAgICAgY29uc3QgdG9UeXBlID0gKHBhcnRUeXBlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGZvcm1hdHRlZFBhcnRzLmZpbmRJbmRleCgoeyB0eXBlIH0pID0+IHR5cGUgPT09IHBhcnRUeXBlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvOiBJRm9ybWF0dGVkUGFydHMgPSB7IHZhbHVlOiAnJywgbGl0ZXJhbDogJycsIGNvbWJpbmVkOiAnJyB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHBhcnRUeXBlID09PSAnZXJhJyAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIG8udmFsdWUgPSBmb3JtYXR0ZWRQYXJ0c1tpbmRleF0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFydFR5cGUgPT09ICdlcmEnICYmIGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvLnZhbHVlID0gZm9ybWF0dGVkUGFydHNbaW5kZXhdLnZhbHVlO1xuICAgICAgICAgICAgICAgIG8ubGl0ZXJhbCA9IGZvcm1hdHRlZFBhcnRzW2luZGV4ICsgMV0gPyBmb3JtYXR0ZWRQYXJ0c1tpbmRleCArIDFdLnZhbHVlIDogJyc7XG4gICAgICAgICAgICAgICAgby5jb21iaW5lZCA9IFtvLnZhbHVlLCBvLmxpdGVyYWxdLmpvaW4oJycpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBlYWNoIG9mIHBhcnRzKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2VhY2hdID0gdG9UeXBlKGVhY2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlYWNoIG9mIHBhcnRzKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2VhY2hdID0geyB2YWx1ZTogJycsIGxpdGVyYWw6ICcnLCBjb21iaW5lZDogJycgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaXJzdFZpZXdEYXRlKGRhdGU6IERhdGUsIGludGVydmFsOiBzdHJpbmcsIGFjdGl2ZVZpZXdJZHg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lZGVsdGEoZGF0ZSwgaW50ZXJ2YWwsIC1hY3RpdmVWaWV3SWR4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGF0ZUJ5VmlldyhkYXRlOiBEYXRlLCBpbnRlcnZhbDogc3RyaW5nLCBhY3RpdmVWaWV3SWR4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZWRlbHRhKGRhdGUsIGludGVydmFsLCBhY3RpdmVWaWV3SWR4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmV4dE1vbnRoKGRhdGU6IERhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZWRlbHRhKGRhdGUsIFRpbWVEZWx0YUludGVydmFsLk1vbnRoLCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJldk1vbnRoKGRhdGU6IERhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZWRlbHRhKGRhdGUsIFRpbWVEZWx0YUludGVydmFsLk1vbnRoLCAtMSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5leHRZZWFyKGRhdGU6IERhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZWRlbHRhKGRhdGUsIFRpbWVEZWx0YUludGVydmFsLlllYXIsIDEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmV2WWVhcihkYXRlOiBEYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVkZWx0YShkYXRlLCBUaW1lRGVsdGFJbnRlcnZhbC5ZZWFyLCAtMSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdlZWtOdW1iZXIoZGF0ZTogRGF0ZSwgd2Vla1N0YXJ0OiBXRUVLREFZUyB8IG51bWJlcikge1xuICAgICAgICAvLyBjdXJyZW50IHllYXJcbiAgICAgICAgY29uc3QgeWVhclN0YXJ0ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgICAgICAgLy8gZmlyc3QgZGF5IG51bWJlciBvZiB0aGUgY3VycmVudCB5ZWFyXG4gICAgICAgIGxldCBmaXJzdERheU9mVGhlWWVhciA9IHllYXJTdGFydC5nZXREYXkoKSAtIHdlZWtTdGFydDtcbiAgICAgICAgZmlyc3REYXlPZlRoZVllYXIgPSBmaXJzdERheU9mVGhlWWVhciA+PSAwID8gZmlyc3REYXlPZlRoZVllYXIgOiBmaXJzdERheU9mVGhlWWVhciArIDc7XG4gICAgICAgIGNvbnN0IGRheUluTWlsU2Vjb25kcyA9IDg2NDAwMDAwO1xuICAgICAgICAvLyBkYXkgbnVtYmVyIGluIHRoZSB5ZWFyXG4gICAgICAgIGNvbnN0IGRheU51bWJlciA9IE1hdGguZmxvb3IoKGRhdGUuZ2V0VGltZSgpIC0geWVhclN0YXJ0LmdldFRpbWUoKSAtIFxuICAgICAgICAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0geWVhclN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkpICogNjAwMDApIC8gZGF5SW5NaWxTZWNvbmRzKSArIDE7XG4gICAgICAgIGxldCB3ZWVrTnVtYmVyO1xuICAgICAgICAvLyBpZiAwMSBKYW4gaXMgTW9uZGF5IHRvIFRodXJzZGF5LCBpcyBjb25zaWRlcmVkIDFzdCB3ZWVrIG9mIHRoZSB5ZWFyIFxuICAgICAgICAvLyBpZiAwMSBKYW4gc3RhcnRzIEZyaWRheSB0byBTdW5kYXksIGlzIGNvbnNpZGVyZWQgbGFzdCB3ZWVrIG9mIHByZXZpb3VzIHllYXJcbiAgICAgICAgaWYgKGZpcnN0RGF5T2ZUaGVZZWFyIDwgNCkge1xuICAgICAgICAgICAgLy8gd2hlbiBjYWxjdWxhdGluZyB0aGUgd2VlayBudW1iZXIgd2UgYWRkIDEgZm9yIHRoZSAxc3Qgd2Vla1xuICAgICAgICAgICAgd2Vla051bWJlciA9IE1hdGguZmxvb3IoKGRheU51bWJlciArIGZpcnN0RGF5T2ZUaGVZZWFyIC0gMSkgLyA3KSArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjYWxjdWxhdGluZyB0aGUgd2VlayBudW1iZXJcbiAgICAgICAgICAgIHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChkYXlOdW1iZXIgKyBmaXJzdERheU9mVGhlWWVhciAtIDEpIC8gNyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGhlIHdlZWsgbnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiB3ZWVrIDUyXG4gICAgICAgIGlmICh3ZWVrTnVtYmVyID4gNTIpIHtcbiAgICAgICAgICAgIC8vIG5leHQgeWVhclxuICAgICAgICAgICAgbGV0IG5leHRZZWFyID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpICsgMSwgMCwgMSk7XG4gICAgICAgICAgICAvLyBmaXJzdCBkYXkgb2YgdGhlIG5leHQgeWVhclxuICAgICAgICAgICAgbGV0IG5leHRZZWFyRmlyc3REYXkgPSBuZXh0WWVhci5nZXREYXkoKSAtIHdlZWtTdGFydDtcbiAgICAgICAgICAgIG5leHRZZWFyRmlyc3REYXkgPSBuZXh0WWVhckZpcnN0RGF5ID49IDAgPyBuZXh0WWVhckZpcnN0RGF5IDogbmV4dFllYXJGaXJzdERheSArIDc7XG4gICAgICAgICAgICAvLyBpZiAwMSBKYW4gb2YgdGhlIG5leHQgeWVhciBpcyBNb25kYXkgdG8gVGh1cnNkYXksIGlzIGNvbnNpZGVyZWQgMXN0IHdlZWsgb2YgdGhlIG5leHQgeWVhciBcbiAgICAgICAgICAgIC8vIGlmIDAxIEphbiBpcyBGcmlkYXkgdG8gU3VuZGF5LCBpcyBjb25zaWRlcmVkIDUzcmQgd2VlayBvZiB0aGUgY3VycmVudCB5ZWFyXG4gICAgICAgICAgICB3ZWVrTnVtYmVyID0gbmV4dFllYXJGaXJzdERheSA8IDQgPyAxIDogNTM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdlZWtOdW1iZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUlDYWxlbmRhckRhdGUoZGF0ZTogRGF0ZSwgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogSUNhbGVuZGFyRGF0ZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgaXNDdXJyZW50TW9udGg6IGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhciAmJiBkYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoLFxuICAgICAgICAgICAgaXNOZXh0TW9udGg6IHRoaXMuaXNOZXh0TW9udGgoZGF0ZSwgeWVhciwgbW9udGgpLFxuICAgICAgICAgICAgaXNQcmV2TW9udGg6IHRoaXMuaXNQcmV2aW91c01vbnRoKGRhdGUsIHllYXIsIG1vbnRoKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcmV2aW91c01vbnRoKGRhdGU6IERhdGUsIHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRNb250aCgpIDwgbW9udGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA8IHllYXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc05leHRNb250aChkYXRlOiBEYXRlLCB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhcikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKSA+IG1vbnRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA+IHllYXI7XG4gICAgfVxufVxuIl19
|
|
@@ -152,7 +152,7 @@ export class IgxDaysViewComponent extends IgxCalendarBaseDirective {
|
|
|
152
152
|
* @hidden
|
|
153
153
|
*/
|
|
154
154
|
getWeekNumber(date) {
|
|
155
|
-
return this.calendarModel.getWeekNumber(date);
|
|
155
|
+
return this.calendarModel.getWeekNumber(date, this.weekStart);
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Returns the locale representation of the date in the days view.
|
|
@@ -414,4 +414,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
414
414
|
type: HostListener,
|
|
415
415
|
args: ['keydown.end', ['$event']]
|
|
416
416
|
}] } });
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFFWixXQUFXLEVBR1gsTUFBTSxFQUFFLFNBQVMsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQXVCLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFFN0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBZ0JoQixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsd0JBQXdCO0lBZ0M5RDs7O09BR0c7SUFDSCxJQUNXLFVBQVUsQ0FB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QixNQUFNO2dCQU9BLGNBQWM7c0JBRHBCLE1BQU07Z0JBT0EsS0FBSztzQkFEWCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFO2dCQVN6RCxVQUFVO3NCQURoQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFrQzFCLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyxVQUFVO2dCQXVCakIsV0FBVztzQkFMakIsWUFBWTt1QkFBQyxrQkFBa0I7O3NCQUMvQixZQUFZO3VCQUFDLGdCQUFnQjs7c0JBQzdCLFlBQVk7dUJBQUMsd0JBQXdCOztzQkFDckMsWUFBWTt1QkFBQyxzQkFBc0I7O3NCQUNuQyxZQUFZO3VCQUFDLGFBQWE7Z0JBWXBCLGNBQWM7c0JBSnBCLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM1QyxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDN0MsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzFDLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWXRDLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVlqQyxZQUFZO3NCQURsQixZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgRG9DaGVjayxcbiAgICBPbkluaXQsXG4gICAgSW5qZWN0LCBMT0NBTEVfSURcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhclNlbGVjdGlvbiwgSUNhbGVuZGFyRGF0ZSwgaXNEYXRlSW5SYW5nZXMgfSBmcm9tICcuLi8uLi9jYWxlbmRhci9jYWxlbmRhcic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElneERheUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2RheS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VEZXNjcmlwdG9yLCBEYXRlUmFuZ2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRlcyc7XG5pbXBvcnQgeyBJZ3hDYWxlbmRhckJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9jYWxlbmRhci1iYXNlJztcbmltcG9ydCB7IGlzRXF1YWwsIFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSVZpZXdDaGFuZ2luZ0V2ZW50QXJncyB9IGZyb20gJy4vZGF5cy12aWV3LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hEYXlzVmlld05hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZGF5cy12aWV3L2RheXN2aWV3LW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmxldCBORVhUX0lEID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4RGF5c1ZpZXdDb21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBJZ3hEYXlzVmlld05hdmlnYXRpb25TZXJ2aWNlLCB1c2VDbGFzczogSWd4RGF5c1ZpZXdOYXZpZ2F0aW9uU2VydmljZSB9XG4gICAgXSxcbiAgICBzZWxlY3RvcjogJ2lneC1kYXlzLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnZGF5cy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ0ZvciwgSWd4RGF5SXRlbUNvbXBvbmVudCwgVGl0bGVDYXNlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4RGF5c1ZpZXdDb21wb25lbnQgZXh0ZW5kcyBJZ3hDYWxlbmRhckJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgZGF5cyB2aWV3LlxuICAgICAqIElmIG5vdCBzZXQsIHRoZSBgaWRgIHdpbGwgaGF2ZSB2YWx1ZSBgXCJpZ3gtZGF5cy12aWV3LTBcImAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGF5cy12aWV3IGlkPVwibXktZGF5cy12aWV3XCI+PC9pZ3gtZGF5cy12aWV3PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgZGF5c1ZpZXdJZCA9ICB0aGlzLmRheXNWaWV3LmlkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LWRheXMtdmlldy0ke05FWFRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNoYW5nZURheXNWaWV3ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTaG93L2hpZGUgd2VlayBudW1iZXJzXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRheXMtdmlldyBbc2hvd1dlZWtOdW1iZXJzXT1cInRydWVcIj48L2lneC1kYXlzLXZpZXc+XG4gICAgICogYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93V2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFjdGl2ZURhdGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZUNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZURhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlRGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZURhdGUgPyB0aGlzLl9hY3RpdmVEYXRlIDogdGhpcy52aWV3RGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRhdGVTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElDYWxlbmRhckRhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZpZXdDaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVZpZXdDaGFuZ2luZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWN0aXZlRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBtb250aHNWaWV3Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oSWd4RGF5SXRlbUNvbXBvbmVudCwgeyByZWFkOiBJZ3hEYXlJdGVtQ29tcG9uZW50IH0pXG4gICAgcHVibGljIGRhdGVzOiBRdWVyeUxpc3Q8SWd4RGF5SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGVmYXVsdCBjc3MgY2xhc3MgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyJylcbiAgICBwdWJsaWMgc3R5bGVDbGFzcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG91dE9mUmFuZ2VEYXRlczogRGF0ZVJhbmdlRGVzY3JpcHRvcltdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZXh0TW9udGhWaWV3OiBJZ3hEYXlzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIHByZXZNb250aFZpZXc6IElneERheXNWaWV3Q29tcG9uZW50O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIHNob3VsZFJlc2V0RGF0ZSA9IHRydWU7XG4gICAgcHJpdmF0ZSBfYWN0aXZlRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRheXNOYXZTZXJ2aWNlOiBJZ3hEYXlzVmlld05hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLCBASW5qZWN0KExPQ0FMRV9JRCkgX2xvY2FsZUlkOiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIocGxhdGZvcm0sIF9sb2NhbGVJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgICBwdWJsaWMgcmVzZXRBY3RpdmVNb250aCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkUmVzZXREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlcy5maW5kKGRheSA9PiBkYXkuc2VsZWN0ZWQgJiYgZGF5LmlzQ3VycmVudE1vbnRoKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXMuZmluZChkYXkgPT4gZGF5LmlzVG9kYXkgJiYgZGF5LmlzQ3VycmVudE1vbnRoKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXMuZmluZChkID0+IGQuaXNGb2N1c2FibGUpO1xuICAgICAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSBkYXRlLmRhdGUuZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9udGhzVmlld0JsdXIuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzZXREYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5wYWdlZG93bicpXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5wYWdldXAnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc2hpZnQucGFnZWRvd24nKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc2hpZnQucGFnZXVwJylcbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVyZG93bicpXG4gICAgcHVibGljIHBvaW50ZXJEb3duKCkge1xuICAgICAgICB0aGlzLnNob3VsZFJlc2V0RGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93bGVmdCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duQXJyb3coZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzZXREYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF5c05hdlNlcnZpY2UuZm9jdXNOZXh0RGF0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIGV2ZW50LmtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uaG9tZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzZXREYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ2V0Rmlyc3RNb250aFZpZXcoKS5kYXlzTmF2U2VydmljZS5mb2N1c0hvbWVEYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW5kJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duRW5kKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNob3VsZFJlc2V0RGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmdldExhc3RNb250aFZpZXcoKS5kYXlzTmF2U2VydmljZS5mb2N1c0VuZERhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBnZXRDYWxlbmRhck1vbnRoKCk6IElDYWxlbmRhckRhdGVbXVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJNb2RlbC5tb250aGRhdGVzY2FsZW5kYXIodGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLnZpZXdEYXRlLmdldE1vbnRoKCksIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGF5c05hdlNlcnZpY2UubW9udGhWaWV3ID0gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoYW5nZURheXNWaWV3ICYmIHRoaXMuZGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZU91dE9mUmFuZ2VEYXRlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB0YWJJbmRleChkYXk6IElDYWxlbmRhckRhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVEYXRlICYmIHRoaXMuYWN0aXZlRGF0ZSA9PT0gZGF5LmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgJiYgZGF5LmlzQ3VycmVudE1vbnRoID8gMCA6IC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHdlZWsgbnVtYmVyIGJ5IGRhdGVcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2Vla051bWJlcihkYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJNb2RlbC5nZXRXZWVrTnVtYmVyKGRhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGxvY2FsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0ZSBpbiB0aGUgZGF5cyB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZWREYXRlKHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0Vmlld3MuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXJEYXkuZm9ybWF0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7dmFsdWUuZ2V0RGF0ZSgpfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZW5lcmF0ZVdlZWtIZWFkZXIoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBkYXlOYW1lcyA9IFtdO1xuICAgICAgICBjb25zdCBydiA9IHRoaXMuY2FsZW5kYXJNb2RlbC5tb250aGRhdGVzY2FsZW5kYXIodGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLnZpZXdEYXRlLmdldE1vbnRoKCkpWzBdO1xuICAgICAgICBmb3IgKGNvbnN0IGRheSBvZiBydikge1xuICAgICAgICAgICAgZGF5TmFtZXMucHVzaCh0aGlzLmZvcm1hdHRlcldlZWtkYXkuZm9ybWF0KGRheS5kYXRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF5TmFtZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyByb3dUcmFja2VyKGluZGV4LCBpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2l0ZW1baW5kZXhdLmRhdGUuZ2V0TW9udGgoKX0ke2l0ZW1baW5kZXhdLmRhdGUuZ2V0RGF0ZSgpfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRlVHJhY2tlcihpbmRleCwgaXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtpdGVtLmRhdGUuZ2V0TW9udGgoKX0tLSR7aXRlbS5kYXRlLmdldERhdGUoKX1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNDdXJyZW50TW9udGgodmFsdWU6IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKSA9PT0gdmFsdWUuZ2V0TW9udGgoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGlzQ3VycmVudFllYXIodmFsdWU6IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGlzU2VsZWN0ZWQoZGF0ZTogSUNhbGVuZGFyRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlczogRGF0ZSB8IERhdGVbXTtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZS5kYXRlKSB8fCAhdGhpcy52YWx1ZSB8fFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uID09PSBDYWxlbmRhclNlbGVjdGlvbi5TSU5HTEUpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZXMgPSAodGhpcy52YWx1ZSBhcyBEYXRlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGVPbmx5KHNlbGVjdGVkRGF0ZXMpLmdldFRpbWUoKSA9PT0gZGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdGVkRGF0ZXMgPSAodGhpcy52YWx1ZSBhcyBEYXRlW10pO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPT09IENhbGVuZGFyU2VsZWN0aW9uLlJBTkdFICYmIHNlbGVjdGVkRGF0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlT25seShzZWxlY3RlZERhdGVzWzBdKS5nZXRUaW1lKCkgPT09IGRhdGUuZGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPT09IENhbGVuZGFyU2VsZWN0aW9uLk1VTFRJKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZ2V0RGF0ZU9ubHkoc2VsZWN0ZWREYXRlc1swXSk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSB0aGlzLmdldERhdGVPbmx5KHNlbGVjdGVkRGF0ZXNbc2VsZWN0ZWREYXRlcy5sZW5ndGggLSAxXSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzV2l0aGluUmFuZ2UoZGF0ZS5kYXRlLCBmYWxzZSwgc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHNlbGVjdGVkRGF0ZXMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuZ2V0VGltZSgpID09PSBkYXRlLmRhdGUuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFjdXJyZW50RGF0ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1dpdGhpblJhbmdlKGRhdGUuZGF0ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGlzTGFzdEluUmFuZ2UoZGF0ZTogSUNhbGVuZGFyRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbiB8fCAhdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0ZXMgPSB0aGlzLnZhbHVlIGFzIERhdGVbXTtcbiAgICAgICAgY29uc3QgbGFzdERhdGUgPSBkYXRlc1tkYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWwobGFzdERhdGUsIGRhdGUuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBpc0ZpcnN0SW5SYW5nZShkYXRlOiBJQ2FsZW5kYXJEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uIHx8ICF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNFcXVhbCgodGhpcy52YWx1ZSBhcyBEYXRlW10pWzBdLCBkYXRlLmRhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNXaXRoaW5SYW5nZShkYXRlOiBEYXRlLCBjaGVja0ZvclJhbmdlOiBib29sZWFuLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChjaGVja0ZvclJhbmdlICYmICEoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBtaW4gPSBtaW4gPyBtaW4gOiB0aGlzLnZhbHVlWzBdO1xuICAgICAgICBtYXggPSBtYXggPyBtYXggOiB0aGlzLnZhbHVlWyh0aGlzLnZhbHVlIGFzIERhdGVbXSkubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgcmV0dXJuIGlzRGF0ZUluUmFuZ2VzKGRhdGUsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBEYXRlUmFuZ2VUeXBlLkJldHdlZW4sXG4gICAgICAgICAgICAgICAgICAgIGRhdGVSYW5nZTogW21pbiwgbWF4XVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGZvY3VzQWN0aXZlRGF0ZSgpIHtcbiAgICAgICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVzLmZpbmQoKGQpID0+IGQuc2VsZWN0ZWQpO1xuXG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuZGF0ZXMuZmluZCgoZCkgPT4gZC5pc1RvZGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRlLmlzRm9jdXNhYmxlKSB7XG4gICAgICAgICAgICBkYXRlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0RGF5KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RGF0ZUZyb21DbGllbnQoZXZlbnQuZGF0ZSk7XG4gICAgICAgIHRoaXMuZGF0ZVNlbGVjdGlvbi5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaXJzdE1vbnRoVmlldygpOiBJZ3hEYXlzVmlld0NvbXBvbmVudCB7XG4gICAgICAgIGxldCBtb250aFZpZXcgPSB0aGlzIGFzIElneERheXNWaWV3Q29tcG9uZW50O1xuICAgICAgICB3aGlsZSAobW9udGhWaWV3LnByZXZNb250aFZpZXcpIHtcbiAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5wcmV2TW9udGhWaWV3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb250aFZpZXc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzYWJsZU91dE9mUmFuZ2VEYXRlcygpIHtcbiAgICAgICAgY29uc3QgZGF0ZVJhbmdlID0gW107XG4gICAgICAgIHRoaXMuZGF0ZXMudG9BcnJheSgpLmZvckVhY2goKGRhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZGF0ZS5pc0N1cnJlbnRNb250aCkge1xuICAgICAgICAgICAgICAgIGRhdGVSYW5nZS5wdXNoKGRhdGUuZGF0ZS5kYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vdXRPZlJhbmdlRGF0ZXMgPSBbe1xuICAgICAgICAgICAgdHlwZTogRGF0ZVJhbmdlVHlwZS5TcGVjaWZpYyxcbiAgICAgICAgICAgIGRhdGVSYW5nZVxuICAgICAgICB9XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRMYXN0TW9udGhWaWV3KCk6IElneERheXNWaWV3Q29tcG9uZW50IHtcbiAgICAgICAgbGV0IG1vbnRoVmlldyA9IHRoaXMgYXMgSWd4RGF5c1ZpZXdDb21wb25lbnQ7XG4gICAgICAgIHdoaWxlIChtb250aFZpZXcubmV4dE1vbnRoVmlldykge1xuICAgICAgICAgICAgbW9udGhWaWV3ID0gbW9udGhWaWV3Lm5leHRNb250aFZpZXc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vbnRoVmlldztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXQgaXNTaW5nbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAhPT0gQ2FsZW5kYXJTZWxlY3Rpb24uUkFOR0U7XG4gICAgfVxufVxuIiwiPGRpdiByb2xlPVwicm93XCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2JvZHktcm93XCI+XG4gICAgPGRpdiByb2xlPVwiY29sdW1uaGVhZGVyXCIgKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9fbGFiZWwgaWd4LWNhbGVuZGFyX19sYWJlbC0td2Vlay1udW1iZXJcIj5cbiAgICAgICAgPHNwYW4+V2s8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gcm9sZT1cImNvbHVtbmhlYWRlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF5TmFtZVwiICpuZ0Zvcj1cImxldCBkYXlOYW1lIG9mIGdlbmVyYXRlV2Vla0hlYWRlcigpXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2xhYmVsXCI+XG4gICAgICAgIHt7IGRheU5hbWUgfCB0aXRsZWNhc2UgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdGb3I9XCJsZXQgd2VlayBvZiBnZXRDYWxlbmRhck1vbnRoOyBsYXN0IGFzIGlzTGFzdDsgaW5kZXggYXMgaTsgdHJhY2tCeTogcm93VHJhY2tlclwiXG4gICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19ib2R5LXJvd1wiIHJvbGU9XCJyb3dcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9fZGF0ZSBpZ3gtY2FsZW5kYXJfX2RhdGUtLXdlZWstbnVtYmVyXCI+XG5cbiAgICAgICAgPHNwYW4gcm9sZT1cInJvd2hlYWRlclwiIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19kYXRlLWNvbnRlbnQgaWd4LWNhbGVuZGFyX19kYXRlLWNvbnRlbnQtLXdlZWstbnVtYmVyXCI+XG4gICAgICAgICAgICB7e2dldFdlZWtOdW1iZXIod2Vla1swXS5kYXRlKX19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA8aWd4LXdlZWstbnVtYmVyLWl0ZW0gKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIj57e2dldFdlZWtOdW1iZXIod2Vla1swXS5kYXRlKX19PC9pZ3gtd2Vlay1udW1iZXItaXRlbT4gLS0+XG4gICAgPGlneC1kYXktaXRlbVxuICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhcl9fZGF0ZVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2VlazsgdHJhY2tCeTogZGF0ZVRyYWNrZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEYXRlRGlzYWJsZWQoZGF5LmRhdGUpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc0ZpcnN0SW5SYW5nZShkYXkpID8gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkgKyAnLCAnICsgcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9yYW5nZV9zdGFydCA6IGlzTGFzdEluUmFuZ2UoZGF5KSA/IGRheS5kYXRlLnRvRGF0ZVN0cmluZygpICsgJywgJyArICByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3JhbmdlX2VuZCAgOiBkYXkuZGF0ZS50b0RhdGVTdHJpbmcoKVwiXG4gICAgICAgIFtkYXRlXT1cImRheVwiXG4gICAgICAgIFtzZWxlY3Rpb25dPVwic2VsZWN0aW9uXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgIFtpc0xhc3RJblJhbmdlXT1cImlzTGFzdEluUmFuZ2UoZGF5KVwiXG4gICAgICAgIFtpc0ZpcnN0SW5SYW5nZV09XCJpc0ZpcnN0SW5SYW5nZShkYXkpXCJcbiAgICAgICAgW2lzV2l0aGluUmFuZ2VdPVwiaXNXaXRoaW5SYW5nZShkYXkuZGF0ZSwgdHJ1ZSlcIlxuICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzXCJcbiAgICAgICAgW3NwZWNpYWxEYXRlc109XCJzcGVjaWFsRGF0ZXNcIlxuICAgICAgICBbb3V0T2ZSYW5nZURhdGVzXT1cIm91dE9mUmFuZ2VEYXRlc1wiXG4gICAgICAgIFtoaWRlT3V0c2lkZURheXNdPVwiaGlkZU91dHNpZGVEYXlzXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoZGF5KVwiXG4gICAgICAgIChmb2N1cyk9XCJhY3RpdmVEYXRlID0gZGF5LmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKClcIlxuICAgICAgICAoZGF0ZVNlbGVjdGlvbik9XCJzZWxlY3REYXkoJGV2ZW50KVwiPlxuICAgICAgICB7eyBmb3JtYXR0ZWREYXRlKGRheS5kYXRlKSB9fVxuICAgIDwvaWd4LWRheS1pdGVtPlxuPC9kaXY+XG5cbiJdfQ==
|
|
417
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFFWixXQUFXLEVBR1gsTUFBTSxFQUFFLFNBQVMsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQXVCLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFFN0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBZ0JoQixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsd0JBQXdCO0lBZ0M5RDs7O09BR0c7SUFDSCxJQUNXLFVBQVUsQ0FB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TTtnQkFPQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0EsY0FBYztzQkFEcEIsTUFBTTtnQkFPQSxLQUFLO3NCQURYLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7Z0JBU3pELFVBQVU7c0JBRGhCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQWtDMUIsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLFVBQVU7Z0JBdUJqQixXQUFXO3NCQUxqQixZQUFZO3VCQUFDLGtCQUFrQjs7c0JBQy9CLFlBQVk7dUJBQUMsZ0JBQWdCOztzQkFDN0IsWUFBWTt1QkFBQyx3QkFBd0I7O3NCQUNyQyxZQUFZO3VCQUFDLHNCQUFzQjs7c0JBQ25DLFlBQVk7dUJBQUMsYUFBYTtnQkFZcEIsY0FBYztzQkFKcEIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzVDLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM3QyxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDMUMsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZdEMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWWpDLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBEb0NoZWNrLFxuICAgIE9uSW5pdCxcbiAgICBJbmplY3QsIExPQ0FMRV9JRFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyU2VsZWN0aW9uLCBJQ2FsZW5kYXJEYXRlLCBpc0RhdGVJblJhbmdlcyB9IGZyb20gJy4uLy4uL2NhbGVuZGFyL2NhbGVuZGFyJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSWd4RGF5SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZGF5LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVSYW5nZURlc2NyaXB0b3IsIERhdGVSYW5nZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGVzJztcbmltcG9ydCB7IElneENhbGVuZGFyQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2NhbGVuZGFyLWJhc2UnO1xuaW1wb3J0IHsgaXNFcXVhbCwgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJVmlld0NoYW5naW5nRXZlbnRBcmdzIH0gZnJvbSAnLi9kYXlzLXZpZXcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneERheXNWaWV3TmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9kYXlzLXZpZXcvZGF5c3ZpZXctbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBJZ3hEYXlzVmlld0NvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICB7IHByb3ZpZGU6IElneERheXNWaWV3TmF2aWdhdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBJZ3hEYXlzVmlld05hdmlnYXRpb25TZXJ2aWNlIH1cbiAgICBdLFxuICAgIHNlbGVjdG9yOiAnaWd4LWRheXMtdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICdkYXlzLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nRm9yLCBJZ3hEYXlJdGVtQ29tcG9uZW50LCBUaXRsZUNhc2VQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEYXlzVmlld0NvbXBvbmVudCBleHRlbmRzIElneENhbGVuZGFyQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBkYXlzIHZpZXcuXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBpZGAgd2lsbCBoYXZlIHZhbHVlIGBcImlneC1kYXlzLXZpZXctMFwiYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kYXlzLXZpZXcgaWQ9XCJteS1kYXlzLXZpZXdcIj48L2lneC1kYXlzLXZpZXc+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBkYXlzVmlld0lkID0gIHRoaXMuZGF5c1ZpZXcuaWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtZGF5cy12aWV3LSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2hhbmdlRGF5c1ZpZXcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNob3cvaGlkZSB3ZWVrIG51bWJlcnNcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGF5cy12aWV3IFtzaG93V2Vla051bWJlcnNdPVwidHJ1ZVwiPjwvaWd4LWRheXMtdmlldz5cbiAgICAgKiBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dXZWVrTnVtYmVyczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWN0aXZlRGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlQ2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlRGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3RpdmVEYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRGF0ZSA/IHRoaXMuX2FjdGl2ZURhdGUgOiB0aGlzLnZpZXdEYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZGF0ZVNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SUNhbGVuZGFyRGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmlld0NoYW5naW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJVmlld0NoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhY3RpdmVEYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vbnRoc1ZpZXdCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZHJlbihJZ3hEYXlJdGVtQ29tcG9uZW50LCB7IHJlYWQ6IElneERheUl0ZW1Db21wb25lbnQgfSlcbiAgICBwdWJsaWMgZGF0ZXM6IFF1ZXJ5TGlzdDxJZ3hEYXlJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGNzcyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXInKVxuICAgIHB1YmxpYyBzdHlsZUNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3V0T2ZSYW5nZURhdGVzOiBEYXRlUmFuZ2VEZXNjcmlwdG9yW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5leHRNb250aFZpZXc6IElneERheXNWaWV3Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgcHJldk1vbnRoVmlldzogSWd4RGF5c1ZpZXdDb21wb25lbnQ7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgc2hvdWxkUmVzZXREYXRlID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9hY3RpdmVEYXRlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGF5c05hdlNlcnZpY2U6IElneERheXNWaWV3TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHBsYXRmb3JtOiBQbGF0Zm9ybVV0aWwsIEBJbmplY3QoTE9DQUxFX0lEKSBfbG9jYWxlSWQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihwbGF0Zm9ybSwgX2xvY2FsZUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICAgIHB1YmxpYyByZXNldEFjdGl2ZU1vbnRoKCkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRSZXNldERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGVzLmZpbmQoZGF5ID0+IGRheS5zZWxlY3RlZCAmJiBkYXkuaXNDdXJyZW50TW9udGgpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlcy5maW5kKGRheSA9PiBkYXkuaXNUb2RheSAmJiBkYXkuaXNDdXJyZW50TW9udGgpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlcy5maW5kKGQgPT4gZC5pc0ZvY3VzYWJsZSk7XG4gICAgICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IGRhdGUuZGF0ZS5kYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tb250aHNWaWV3Qmx1ci5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG91bGRSZXNldERhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnBhZ2Vkb3duJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnBhZ2V1cCcpXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zaGlmdC5wYWdlZG93bicpXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zaGlmdC5wYWdldXAnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJkb3duJylcbiAgICBwdWJsaWMgcG9pbnRlckRvd24oKSB7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzZXREYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3d1cCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd2Rvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd25BcnJvdyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zaG91bGRSZXNldERhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kYXlzTmF2U2VydmljZS5mb2N1c05leHREYXRlKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgZXZlbnQua2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5ob21lJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duSG9tZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zaG91bGRSZXNldERhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5nZXRGaXJzdE1vbnRoVmlldygpLmRheXNOYXZTZXJ2aWNlLmZvY3VzSG9tZURhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbmQnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd25FbmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzZXREYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ2V0TGFzdE1vbnRoVmlldygpLmRheXNOYXZTZXJ2aWNlLmZvY3VzRW5kRGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdldENhbGVuZGFyTW9udGgoKTogSUNhbGVuZGFyRGF0ZVtdW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxlbmRhck1vZGVsLm1vbnRoZGF0ZXNjYWxlbmRhcih0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCksIHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kYXlzTmF2U2VydmljZS5tb250aFZpZXcgPSB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2hhbmdlRGF5c1ZpZXcgJiYgdGhpcy5kYXRlcykge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlT3V0T2ZSYW5nZURhdGVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHRhYkluZGV4KGRheTogSUNhbGVuZGFyRGF0ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGUgJiYgdGhpcy5hY3RpdmVEYXRlID09PSBkYXkuZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKSAmJiBkYXkuaXNDdXJyZW50TW9udGggPyAwIDogLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgd2VlayBudW1iZXIgYnkgZGF0ZVxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXZWVrTnVtYmVyKGRhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxlbmRhck1vZGVsLmdldFdlZWtOdW1iZXIoZGF0ZSwgdGhpcy53ZWVrU3RhcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGxvY2FsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0ZSBpbiB0aGUgZGF5cyB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZWREYXRlKHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0Vmlld3MuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXJEYXkuZm9ybWF0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7dmFsdWUuZ2V0RGF0ZSgpfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZW5lcmF0ZVdlZWtIZWFkZXIoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBkYXlOYW1lcyA9IFtdO1xuICAgICAgICBjb25zdCBydiA9IHRoaXMuY2FsZW5kYXJNb2RlbC5tb250aGRhdGVzY2FsZW5kYXIodGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLnZpZXdEYXRlLmdldE1vbnRoKCkpWzBdO1xuICAgICAgICBmb3IgKGNvbnN0IGRheSBvZiBydikge1xuICAgICAgICAgICAgZGF5TmFtZXMucHVzaCh0aGlzLmZvcm1hdHRlcldlZWtkYXkuZm9ybWF0KGRheS5kYXRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF5TmFtZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyByb3dUcmFja2VyKGluZGV4LCBpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2l0ZW1baW5kZXhdLmRhdGUuZ2V0TW9udGgoKX0ke2l0ZW1baW5kZXhdLmRhdGUuZ2V0RGF0ZSgpfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRlVHJhY2tlcihpbmRleCwgaXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtpdGVtLmRhdGUuZ2V0TW9udGgoKX0tLSR7aXRlbS5kYXRlLmdldERhdGUoKX1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNDdXJyZW50TW9udGgodmFsdWU6IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKSA9PT0gdmFsdWUuZ2V0TW9udGgoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGlzQ3VycmVudFllYXIodmFsdWU6IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGlzU2VsZWN0ZWQoZGF0ZTogSUNhbGVuZGFyRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlczogRGF0ZSB8IERhdGVbXTtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZS5kYXRlKSB8fCAhdGhpcy52YWx1ZSB8fFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uID09PSBDYWxlbmRhclNlbGVjdGlvbi5TSU5HTEUpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZXMgPSAodGhpcy52YWx1ZSBhcyBEYXRlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGVPbmx5KHNlbGVjdGVkRGF0ZXMpLmdldFRpbWUoKSA9PT0gZGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdGVkRGF0ZXMgPSAodGhpcy52YWx1ZSBhcyBEYXRlW10pO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPT09IENhbGVuZGFyU2VsZWN0aW9uLlJBTkdFICYmIHNlbGVjdGVkRGF0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlT25seShzZWxlY3RlZERhdGVzWzBdKS5nZXRUaW1lKCkgPT09IGRhdGUuZGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPT09IENhbGVuZGFyU2VsZWN0aW9uLk1VTFRJKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZ2V0RGF0ZU9ubHkoc2VsZWN0ZWREYXRlc1swXSk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSB0aGlzLmdldERhdGVPbmx5KHNlbGVjdGVkRGF0ZXNbc2VsZWN0ZWREYXRlcy5sZW5ndGggLSAxXSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzV2l0aGluUmFuZ2UoZGF0ZS5kYXRlLCBmYWxzZSwgc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHNlbGVjdGVkRGF0ZXMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuZ2V0VGltZSgpID09PSBkYXRlLmRhdGUuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFjdXJyZW50RGF0ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1dpdGhpblJhbmdlKGRhdGUuZGF0ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGlzTGFzdEluUmFuZ2UoZGF0ZTogSUNhbGVuZGFyRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbiB8fCAhdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0ZXMgPSB0aGlzLnZhbHVlIGFzIERhdGVbXTtcbiAgICAgICAgY29uc3QgbGFzdERhdGUgPSBkYXRlc1tkYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWwobGFzdERhdGUsIGRhdGUuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBpc0ZpcnN0SW5SYW5nZShkYXRlOiBJQ2FsZW5kYXJEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uIHx8ICF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNFcXVhbCgodGhpcy52YWx1ZSBhcyBEYXRlW10pWzBdLCBkYXRlLmRhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNXaXRoaW5SYW5nZShkYXRlOiBEYXRlLCBjaGVja0ZvclJhbmdlOiBib29sZWFuLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChjaGVja0ZvclJhbmdlICYmICEoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBtaW4gPSBtaW4gPyBtaW4gOiB0aGlzLnZhbHVlWzBdO1xuICAgICAgICBtYXggPSBtYXggPyBtYXggOiB0aGlzLnZhbHVlWyh0aGlzLnZhbHVlIGFzIERhdGVbXSkubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgcmV0dXJuIGlzRGF0ZUluUmFuZ2VzKGRhdGUsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBEYXRlUmFuZ2VUeXBlLkJldHdlZW4sXG4gICAgICAgICAgICAgICAgICAgIGRhdGVSYW5nZTogW21pbiwgbWF4XVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGZvY3VzQWN0aXZlRGF0ZSgpIHtcbiAgICAgICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVzLmZpbmQoKGQpID0+IGQuc2VsZWN0ZWQpO1xuXG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuZGF0ZXMuZmluZCgoZCkgPT4gZC5pc1RvZGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRlLmlzRm9jdXNhYmxlKSB7XG4gICAgICAgICAgICBkYXRlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0RGF5KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RGF0ZUZyb21DbGllbnQoZXZlbnQuZGF0ZSk7XG4gICAgICAgIHRoaXMuZGF0ZVNlbGVjdGlvbi5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaXJzdE1vbnRoVmlldygpOiBJZ3hEYXlzVmlld0NvbXBvbmVudCB7XG4gICAgICAgIGxldCBtb250aFZpZXcgPSB0aGlzIGFzIElneERheXNWaWV3Q29tcG9uZW50O1xuICAgICAgICB3aGlsZSAobW9udGhWaWV3LnByZXZNb250aFZpZXcpIHtcbiAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5wcmV2TW9udGhWaWV3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb250aFZpZXc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzYWJsZU91dE9mUmFuZ2VEYXRlcygpIHtcbiAgICAgICAgY29uc3QgZGF0ZVJhbmdlID0gW107XG4gICAgICAgIHRoaXMuZGF0ZXMudG9BcnJheSgpLmZvckVhY2goKGRhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZGF0ZS5pc0N1cnJlbnRNb250aCkge1xuICAgICAgICAgICAgICAgIGRhdGVSYW5nZS5wdXNoKGRhdGUuZGF0ZS5kYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vdXRPZlJhbmdlRGF0ZXMgPSBbe1xuICAgICAgICAgICAgdHlwZTogRGF0ZVJhbmdlVHlwZS5TcGVjaWZpYyxcbiAgICAgICAgICAgIGRhdGVSYW5nZVxuICAgICAgICB9XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRMYXN0TW9udGhWaWV3KCk6IElneERheXNWaWV3Q29tcG9uZW50IHtcbiAgICAgICAgbGV0IG1vbnRoVmlldyA9IHRoaXMgYXMgSWd4RGF5c1ZpZXdDb21wb25lbnQ7XG4gICAgICAgIHdoaWxlIChtb250aFZpZXcubmV4dE1vbnRoVmlldykge1xuICAgICAgICAgICAgbW9udGhWaWV3ID0gbW9udGhWaWV3Lm5leHRNb250aFZpZXc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vbnRoVmlldztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXQgaXNTaW5nbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAhPT0gQ2FsZW5kYXJTZWxlY3Rpb24uUkFOR0U7XG4gICAgfVxufVxuIiwiPGRpdiByb2xlPVwicm93XCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2JvZHktcm93XCI+XG4gICAgPGRpdiByb2xlPVwiY29sdW1uaGVhZGVyXCIgKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9fbGFiZWwgaWd4LWNhbGVuZGFyX19sYWJlbC0td2Vlay1udW1iZXJcIj5cbiAgICAgICAgPHNwYW4+V2s8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gcm9sZT1cImNvbHVtbmhlYWRlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF5TmFtZVwiICpuZ0Zvcj1cImxldCBkYXlOYW1lIG9mIGdlbmVyYXRlV2Vla0hlYWRlcigpXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2xhYmVsXCI+XG4gICAgICAgIHt7IGRheU5hbWUgfCB0aXRsZWNhc2UgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdGb3I9XCJsZXQgd2VlayBvZiBnZXRDYWxlbmRhck1vbnRoOyBsYXN0IGFzIGlzTGFzdDsgaW5kZXggYXMgaTsgdHJhY2tCeTogcm93VHJhY2tlclwiXG4gICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19ib2R5LXJvd1wiIHJvbGU9XCJyb3dcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9fZGF0ZSBpZ3gtY2FsZW5kYXJfX2RhdGUtLXdlZWstbnVtYmVyXCI+XG5cbiAgICAgICAgPHNwYW4gcm9sZT1cInJvd2hlYWRlclwiIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19kYXRlLWNvbnRlbnQgaWd4LWNhbGVuZGFyX19kYXRlLWNvbnRlbnQtLXdlZWstbnVtYmVyXCI+XG4gICAgICAgICAgICB7e2dldFdlZWtOdW1iZXIod2Vla1swXS5kYXRlKX19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA8aWd4LXdlZWstbnVtYmVyLWl0ZW0gKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIj57e2dldFdlZWtOdW1iZXIod2Vla1swXS5kYXRlKX19PC9pZ3gtd2Vlay1udW1iZXItaXRlbT4gLS0+XG4gICAgPGlneC1kYXktaXRlbVxuICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhcl9fZGF0ZVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2VlazsgdHJhY2tCeTogZGF0ZVRyYWNrZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEYXRlRGlzYWJsZWQoZGF5LmRhdGUpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc0ZpcnN0SW5SYW5nZShkYXkpID8gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkgKyAnLCAnICsgcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9yYW5nZV9zdGFydCA6IGlzTGFzdEluUmFuZ2UoZGF5KSA/IGRheS5kYXRlLnRvRGF0ZVN0cmluZygpICsgJywgJyArICByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3JhbmdlX2VuZCAgOiBkYXkuZGF0ZS50b0RhdGVTdHJpbmcoKVwiXG4gICAgICAgIFtkYXRlXT1cImRheVwiXG4gICAgICAgIFtzZWxlY3Rpb25dPVwic2VsZWN0aW9uXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgIFtpc0xhc3RJblJhbmdlXT1cImlzTGFzdEluUmFuZ2UoZGF5KVwiXG4gICAgICAgIFtpc0ZpcnN0SW5SYW5nZV09XCJpc0ZpcnN0SW5SYW5nZShkYXkpXCJcbiAgICAgICAgW2lzV2l0aGluUmFuZ2VdPVwiaXNXaXRoaW5SYW5nZShkYXkuZGF0ZSwgdHJ1ZSlcIlxuICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzXCJcbiAgICAgICAgW3NwZWNpYWxEYXRlc109XCJzcGVjaWFsRGF0ZXNcIlxuICAgICAgICBbb3V0T2ZSYW5nZURhdGVzXT1cIm91dE9mUmFuZ2VEYXRlc1wiXG4gICAgICAgIFtoaWRlT3V0c2lkZURheXNdPVwiaGlkZU91dHNpZGVEYXlzXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoZGF5KVwiXG4gICAgICAgIChmb2N1cyk9XCJhY3RpdmVEYXRlID0gZGF5LmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKClcIlxuICAgICAgICAoZGF0ZVNlbGVjdGlvbik9XCJzZWxlY3REYXkoJGV2ZW50KVwiPlxuICAgICAgICB7eyBmb3JtYXR0ZWREYXRlKGRheS5kYXRlKSB9fVxuICAgIDwvaWd4LWRheS1pdGVtPlxuPC9kaXY+XG5cbiJdfQ==
|